Page MenuHomeHEPForge

No OneTemporary

This file is larger than 256 KB, so syntax highlighting was skipped.
This document is not UTF8. It was detected as ISO-8859-1 (Latin 1) and converted to UTF8 for display.
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..a021fcb
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,99 @@
+Original package authors:
+David Lange
+Anders Ryd
+
+Current authors / maintainers:
+John Back
+Michal Kreps
+Thomas Latham
+
+Contributors:
+Abi Soffer
+Adlene Hicheur
+Ajit Kurup
+Akimasa Ishikawa
+Aleksandr Berezhnoi
+Aleksei Luchinsky
+Alexander Popov
+Alexei Dvoretskii
+Alexei Volk
+Anatoli Likhoded
+Andrei Gritsan
+Andrew Crocombe
+Andrii Verbytskyi
+Anna Danilina
+Aurelien Martens
+Bob Cahn
+Brian Hamilton
+Christoph Langenbruch
+Clara Remon
+Daniel Craik
+David Cote
+David Grellscheid
+David Kirkby
+David Loh
+Denis Dujmic
+Diego Martinez Santos
+Edward Chen
+Elisabeth Niel
+Eric Conte
+Fernando Martinez-Vidal
+Florence Ranjard
+Francesca Di Lodovico
+Francesco Sandrelli
+Frank Wuerthwein
+Frederic Dreyer
+Gerhard Raven
+Gloria Corti
+Greig Cowan
+Jack Wimberley
+Jan Strube
+Jane Tinslay
+Jeff Berryhill
+Jeremy Dalseno
+Jim Hunt
+Jim Libby
+Jochen Dingfelder
+Joe Izen
+Jordi Garra Tico
+Josh Thompson
+Karen Gibson
+Konstantin Toms
+Liaoyuan Dong
+Luis Miguel Garcia Martin
+Marcello Rotondo
+Marcin Chrzaszcz
+Marco Bomben
+Marco Gersabeck
+Marcos Romero Lamas
+Mark Smith
+Mark Whitehead
+Mark Ian Williams
+Martin Simard
+Matt Graham
+Maurizio Pierini
+Max Baak
+Michael Sigamani
+Natalia Kuznetsova
+Nick Brook
+Nikolai Nikitin
+Patrick Robbe
+Pavel Reznicek
+Peter Richardson
+Phil Strother
+Ricardo Faccini
+Richard Tesarek
+Romulus Godang
+Ryan Newcombe
+Sheila McLachlin
+Simon Patton
+Sophie Versille
+Stephane Willocq
+Steve Sekula
+Sven Menke
+Thomas Blake
+Tomas Pilar
+Veronika Chobanova
+Wells Wulsin
+Will Reece
+William Sutcliffe
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..f288702
--- /dev/null
+++ b/COPYING
@@ -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/EvtGen/EvtGen.hh b/EvtGen/EvtGen.hh
index 8c95777..2677fc6 100644
--- a/EvtGen/EvtGen.hh
+++ b/EvtGen/EvtGen.hh
@@ -1,68 +1,39 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtGen.hh
-//
-// Description:Main class to provide user interface to EvtGen.
-//
-// Modification history:
-//
-// RYD March 24, 1998 Module created
-//
-// DJL August 10, 1998 Additional Event member function added
-//
-// RYD December 25, 1999 Any application using EvtGen will need
-// to instantiate an instance of this class
-// and hold on to it untill done generating
-// events. This class will now hold data used
-// for the lifetime of the generator.
-// JBack June 2011 Added HepMC event interface.
-//
-//------------------------------------------------------------------------
-
#ifndef EVTGEN_HH
#define EVTGEN_HH
#include "EvtGenBase/EvtPDL.hh"
#include <list>
class EvtParticle;
class EvtRandomEngine;
class EvtVector4R;
class EvtStdHep;
class EvtSpinDensity;
class EvtAbsRadCorr;
class EvtDecayBase;
class EvtHepMCEvent;
class EvtGen {
public:
EvtGen( const char* const decayName, const char* const pdtTableName,
EvtRandomEngine* randomEngine = 0, EvtAbsRadCorr* isrEngine = 0,
const std::list<EvtDecayBase*>* extraModels = 0, int mixingType = 1,
bool useXml = false );
~EvtGen();
void readUDecay( const char* const udecay_name, bool useXml = false );
EvtHepMCEvent* generateDecay( int PDGid, EvtVector4R refFrameP4,
EvtVector4R translation,
EvtSpinDensity* spinDensity = 0 );
void generateDecay( EvtParticle* p );
private:
EvtPDL _pdl;
int _mixingType;
};
#endif
diff --git a/EvtGenBase/Evt3Rank3C.hh b/EvtGenBase/Evt3Rank3C.hh
index 82e4e99..49bb077 100644
--- a/EvtGenBase/Evt3Rank3C.hh
+++ b/EvtGenBase/Evt3Rank3C.hh
@@ -1,120 +1,100 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/Evt3Rank3C.hh
-//
-// Description:Class to handle complex 3rd rank 3D tensors
-//
-// Modification history:
-//
-// RYD September 14, 1997 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVT3RANK3C_HH
#define EVT3RANK3C_HH
#include "EvtGenBase/EvtComplex.hh"
#include <iostream>
class EvtTensor3C;
class EvtVector3C;
class EvtVector3R;
class Evt3Rank3C;
inline Evt3Rank3C operator*( const EvtComplex& c, const Evt3Rank3C& t2 );
inline Evt3Rank3C operator*( const double d, const Evt3Rank3C& t2 );
inline Evt3Rank3C operator*( const Evt3Rank3C& t2, const EvtComplex& c );
inline Evt3Rank3C operator*( const Evt3Rank3C& t2, const double d );
inline Evt3Rank3C operator+( const Evt3Rank3C& t1, const Evt3Rank3C& t2 );
inline Evt3Rank3C operator-( const Evt3Rank3C& t1, const Evt3Rank3C& t2 );
Evt3Rank3C directProd( const EvtVector3C& c1, const EvtVector3C& c2,
const EvtVector3C& c3 );
Evt3Rank3C conj( const Evt3Rank3C& t2 );
class Evt3Rank3C final {
friend Evt3Rank3C operator*( const EvtComplex& c, const Evt3Rank3C& t2 );
friend Evt3Rank3C operator*( const double d, const Evt3Rank3C& t2 );
friend Evt3Rank3C operator*( const Evt3Rank3C& t2, const EvtComplex& c );
friend Evt3Rank3C operator*( const Evt3Rank3C& t2, const double d );
friend Evt3Rank3C operator+( const Evt3Rank3C& t1, const Evt3Rank3C& t2 );
friend Evt3Rank3C operator-( const Evt3Rank3C& t1, const Evt3Rank3C& t2 );
friend Evt3Rank3C directProd( const EvtVector3C& c1, const EvtVector3C& c2,
const EvtVector3C& c3 );
friend Evt3Rank3C conj( const Evt3Rank3C& t2 );
friend std::ostream& operator<<( std::ostream& s, const Evt3Rank3C& t2 );
public:
Evt3Rank3C();
Evt3Rank3C( const Evt3Rank3C& t1 );
Evt3Rank3C& operator=( const Evt3Rank3C& t1 );
inline void set( int i, int j, int k, const EvtComplex& c );
inline const EvtComplex& get( int i, int j, int k ) const;
void zero();
Evt3Rank3C& operator+=( const Evt3Rank3C& t2 );
Evt3Rank3C& operator-=( const Evt3Rank3C& t2 );
Evt3Rank3C& operator*=( const double d );
Evt3Rank3C& operator*=( const EvtComplex& c );
Evt3Rank3C conj() const;
EvtTensor3C cont1( const EvtVector3C& v ) const;
EvtTensor3C cont2( const EvtVector3C& v ) const;
EvtTensor3C cont3( const EvtVector3C& v ) const;
EvtTensor3C cont1( const EvtVector3R& v ) const;
EvtTensor3C cont2( const EvtVector3R& v ) const;
EvtTensor3C cont3( const EvtVector3R& v ) const;
private:
EvtComplex t[3][3][3];
};
inline Evt3Rank3C operator*( const EvtComplex& c, const Evt3Rank3C& t2 )
{
return Evt3Rank3C( t2 ) *= c;
}
inline Evt3Rank3C operator*( const double d, const Evt3Rank3C& t2 )
{
return Evt3Rank3C( t2 ) *= d;
}
inline Evt3Rank3C operator*( const Evt3Rank3C& t2, const EvtComplex& c )
{
return Evt3Rank3C( t2 ) *= c;
}
inline Evt3Rank3C operator*( const Evt3Rank3C& t2, const double d )
{
return Evt3Rank3C( t2 ) *= d;
}
inline Evt3Rank3C operator+( const Evt3Rank3C& t1, const Evt3Rank3C& t2 )
{
return Evt3Rank3C( t1 ) += t2;
}
inline Evt3Rank3C operator-( const Evt3Rank3C& t1, const Evt3Rank3C& t2 )
{
return Evt3Rank3C( t1 ) -= t2;
}
inline void Evt3Rank3C::set( int i, int j, int k, const EvtComplex& c )
{
t[i][j][k] = c;
}
inline const EvtComplex& Evt3Rank3C::get( int i, int j, int k ) const
{
return t[i][j][k];
}
#endif
diff --git a/EvtGenBase/EvtAbsBinning.hh b/EvtGenBase/EvtAbsBinning.hh
index db79aff..e7fc668 100644
--- a/EvtGenBase/EvtAbsBinning.hh
+++ b/EvtGenBase/EvtAbsBinning.hh
@@ -1,42 +1,33 @@
-/*****************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtAbsBinning.hh,v 1.2 2009-03-16 16:43:39 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *****************************************************************************/
-
-/*
- * Data point to bin value mapping
- */
-
#ifndef EVT_ABS_BINNING_HH
#define EVT_ABS_BINNING_HH
#define BIN_OUTSIDE -1
#include <stdio.h>
+/*
+ * Data point to bin value mapping
+ */
+
template <class T>
class EvtAbsBinning {
public:
EvtAbsBinning() {}
EvtAbsBinning( const EvtAbsBinning<T>& other ) {}
virtual ~EvtAbsBinning() {}
virtual EvtAbsBinning<T>* clone() const = 0;
virtual int getBin( const T& point ) const = 0;
virtual T getBinPoint( int bin ) const = 0;
virtual double size( int bin ) const = 0;
virtual int nTypes() const = 0;
virtual char* typeLabel( int i ) const
{
char* a = new char[128];
sprintf( a, "%d", i );
return a;
}
};
#endif
diff --git a/EvtGenBase/EvtAbsLineShape.hh b/EvtGenBase/EvtAbsLineShape.hh
index 41018fd..7b9d2d7 100644
--- a/EvtGenBase/EvtAbsLineShape.hh
+++ b/EvtGenBase/EvtAbsLineShape.hh
@@ -1,100 +1,79 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtAbsLineShape.hh
-//
-// Description: Class to keep the particle properties for
-// one particle
-//
-// Modification history:
-//
-// Lange March 10, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTABSLINESHAPE_HH
#define EVTABSLINESHAPE_HH
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include <vector>
class EvtId;
class EvtAbsLineShape {
public:
EvtAbsLineShape() = default;
EvtAbsLineShape( double mass, double width, double maxRange,
EvtSpinType::spintype sp );
virtual ~EvtAbsLineShape() = default;
EvtAbsLineShape& operator=( const EvtAbsLineShape& x );
EvtAbsLineShape( const EvtAbsLineShape& x );
double getMass() { return _mass; }
double getMassMin() { return _massMin; }
double getMassMax() { return _massMax; }
double getMaxRange() { return _maxRange; }
double getWidth() { return _width; }
EvtSpinType::spintype getSpinType() { return _spin; }
virtual double rollMass();
virtual EvtAbsLineShape* clone();
void reSetMass( double mass ) { _mass = mass; }
void reSetWidth( double width ) { _width = width; }
void reSetMassMin( double mass ) { _massMin = mass; }
void reSetMassMax( double mass ) { _massMax = mass; }
virtual void reSetBlatt( double /*blatt*/ ){};
virtual void reSetBlattBirth( double /*blatt*/ ){};
void includeBirthFactor( bool yesno ) { _includeBirthFact = yesno; }
void includeDecayFactor( bool yesno ) { _includeDecayFact = yesno; }
void setPWForDecay( int spin, EvtId d1, EvtId d2 )
{
_userSetPW.push_back( spin );
_userSetPWD1.push_back( d1 );
_userSetPWD2.push_back( d2 );
}
void setPWForBirthL( int spin, EvtId par, EvtId othD )
{
_userSetBirthPW.push_back( spin );
_userSetBirthOthD.push_back( othD );
_userSetBirthPar.push_back( par );
}
virtual double getRandMass( EvtId* parId, int nDaug, EvtId* dauId,
EvtId* othDaugId, double maxMass,
double* dauMasses );
virtual double getMassProb( double mass, double massPar, int nDaug,
double* massDau );
protected:
bool _includeDecayFact;
bool _includeBirthFact;
double _mass;
double _massMin;
double _massMax;
double _width;
double _maxRange;
// allow for special cases where the default method of picking the
//lowest allowed partial wave for a decay is not the right answer.
// string is "<spin> <daughter1> <daughter2>"
//new 9/12/2003 Lange
std::vector<EvtId> _userSetPWD1, _userSetPWD2;
std::vector<int> _userSetPW;
// also do it for birth factors
std::vector<EvtId> _userSetBirthPar, _userSetBirthOthD;
std::vector<int> _userSetBirthPW;
EvtSpinType::spintype _spin;
};
#endif
diff --git a/EvtGenBase/EvtAbsRadCorr.hh b/EvtGenBase/EvtAbsRadCorr.hh
index 41ccbf7..4554cfa 100644
--- a/EvtGenBase/EvtAbsRadCorr.hh
+++ b/EvtGenBase/EvtAbsRadCorr.hh
@@ -1,37 +1,17 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGenBase/EvtAbsRadCorr.hh
-//
-// Description:
-//
-// Modification history:
-//
-// Lange April 25, 2002 - Created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTABSRADCORR_HH
#define EVTABSRADCORR_HH
#include <assert.h>
#include <iostream>
class EvtParticle;
class EvtAbsRadCorr {
public:
EvtAbsRadCorr(){};
virtual ~EvtAbsRadCorr(){};
virtual void doRadCorr( EvtParticle* p ) = 0;
private:
};
#endif
diff --git a/EvtGenBase/EvtAmp.hh b/EvtGenBase/EvtAmp.hh
index 4dddf26..bcbd9ac 100644
--- a/EvtGenBase/EvtAmp.hh
+++ b/EvtGenBase/EvtAmp.hh
@@ -1,110 +1,90 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtAmp.hh
-//
-// Description:This is the (new) amplitude class.
-//
-// Modification history:
-//
-// DJL/RYD May 29, 1997 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTAMP_HH
#define EVTAMP_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPatches.hh"
class EvtSpinDensity;
class EvtId;
class EvtAmp {
public:
EvtAmp();
EvtAmp( const EvtAmp& amp );
void init( EvtId p, int ndaug, EvtId* daug );
void setAmp( int* ind, const EvtComplex& amp );
const EvtComplex& getAmp( int* ind ) const;
EvtSpinDensity getSpinDensity();
EvtSpinDensity contract( int i, const EvtAmp& a );
EvtAmp contract( int i, const EvtSpinDensity& rho );
//sum over the i:th daugther of a1 and contract with parent of a2
EvtAmp contract( int i, const EvtAmp& a1, const EvtAmp& a2 );
EvtSpinDensity getForwardSpinDensity( EvtSpinDensity* rho_list, int k );
EvtSpinDensity getBackwardSpinDensity( EvtSpinDensity* rho_list );
EvtAmp& operator=( const EvtAmp& amp );
/**
* sets the amplitudes calculated in the decay objects
*/
void vertex( const EvtComplex& amp );
/**
* sets the amplitudes calculated in the decay objects
*/
void vertex( int i1, const EvtComplex& amp );
/**
* sets the amplitudes calculated in the decay objects
*/
void vertex( int i1, int i2, const EvtComplex& amp );
/**
* sets the amplitudes calculated in the decay objects
*/
void vertex( int i1, int i2, int i3, const EvtComplex& amp );
/**
* sets the amplitudes calculated in the decay objects
*/
void vertex( int* i1, const EvtComplex& amp );
void dump();
private:
friend class EvtDecayAmp;
friend class EvtKstarstargamma;
void setNDaug( int n );
void setNState( int parent_states, int* daug_states );
// the amplitudes
EvtComplex _amp[125];
// the number of daughters
int _ndaug;
// the number of states of the parent
int _pstates;
// number of states of the daughter
int dstates[10];
// the nontrivial index of the daughter
int _dnontrivial[10];
// number of nontrivial daugts+parent
int _nontrivial;
// compact nstates
int _nstate[5];
};
#endif
diff --git a/EvtGenBase/EvtAmpAmpPdf.hh b/EvtGenBase/EvtAmpAmpPdf.hh
index 34ced7b..3a5a8c7 100644
--- a/EvtGenBase/EvtAmpAmpPdf.hh
+++ b/EvtGenBase/EvtAmpAmpPdf.hh
@@ -1,78 +1,69 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtAmpAmpPdf.hh,v 1.2 2009-03-16 16:43:40 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
#ifndef EVT_AMP_AMP_PDF_HH
#define EVT_AMP_AMP_PDF_HH
// From the product A1A2* four PDF terms can be constructed, by taking the positive
// and the negative parts or the real and imaginary part of the product.
#include "EvtGenBase/EvtAmplitude.hh"
#include "EvtGenBase/EvtMacros.hh"
#include "EvtGenBase/EvtPdf.hh"
#include <assert.h>
enum
{
POSRE = 0,
NEGRE,
POSIM,
NEGIM
};
template <class T>
class EvtAmpAmpPdf : public EvtPdf<T> {
public:
EvtAmpAmpPdf() {}
EvtAmpAmpPdf( int type, const EvtAmplitude<T>& amp1,
const EvtAmplitude<T>& amp2 ) :
EvtPdf<T>(), _type( type ), _amp1( amp1.clone() ), _amp2( amp2.clone() )
{
}
EvtAmpAmpPdf( const EvtAmpAmpPdf<T>& other ) :
EvtPdf<T>( other ),
_type( other._type ),
COPY_PTR( _amp1 ),
COPY_PTR( _amp2 )
{
}
virtual ~EvtAmpAmpPdf()
{
delete _amp1;
delete _amp2;
}
virtual EvtAmpAmpPdf<T>* clone() const { return new EvtAmpAmpPdf( *this ); }
virtual double pdf( const T& p ) const
{
EvtComplex amp1 = _amp1->evaluate( p );
EvtComplex amp2 = _amp2->evaluate( p );
EvtComplex pr = amp1 * conj( amp2 );
if ( _type == POSRE )
return real( pr ) > 0 ? real( pr ) : 0.;
if ( _type == NEGRE )
return real( pr ) < 0 ? -real( pr ) : 0.;
if ( _type == POSIM )
return imag( pr ) > 0 ? imag( pr ) : 0.;
if ( _type == NEGIM )
return imag( pr ) < 0 ? -imag( pr ) : 0.;
assert( 0 );
}
private:
int _type;
EvtAmplitude<T>* _amp1;
EvtAmplitude<T>* _amp2;
};
#endif
diff --git a/EvtGenBase/EvtAmpFactory.hh b/EvtGenBase/EvtAmpFactory.hh
index d2eab1c..7d31578 100644
--- a/EvtGenBase/EvtAmpFactory.hh
+++ b/EvtGenBase/EvtAmpFactory.hh
@@ -1,137 +1,124 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Alexei Dvoretskii 2001-2002
-//------------------------------------------------------------------------
-
-// Abstract amplitude factory parameterized by a vector of
-// strings. Derived classes construct the amplitude, and PDFs for sampling
-// points.
-
#ifndef EVT_AMP_FACTORY_HH
#define EVT_AMP_FACTORY_HH
#include "EvtGenBase/EvtAmpPdf.hh"
#include "EvtGenBase/EvtAmplitudeSum.hh"
#include "EvtGenBase/EvtMacros.hh"
#include "EvtGenBase/EvtMultiChannelParser.hh"
#include "EvtGenBase/EvtPdfMax.hh"
#include "EvtGenBase/EvtPdfSum.hh"
#include <stdio.h>
#include <string>
#include <vector>
+// Abstract amplitude factory parameterized by a vector of
+// strings. Derived classes construct the amplitude, and PDFs for sampling
+// points.
+
template <class T>
class EvtAmpFactory {
public:
EvtAmpFactory() = default;
protected:
EvtAmpFactory( EvtAmpFactory<T>&& ) = default;
EvtAmpFactory( const EvtAmpFactory<T>& other ) :
_amp( other._amp ? other._amp->clone() : nullptr ),
_ampConj( other._ampConj ? other._ampConj->clone() : nullptr ),
_pc( other._pc ? other._pc->clone() : nullptr ),
_names( other._names ),
_dm( other._dm ),
_mixPhase( other._mixPhase ),
_verbose( other._verbose )
{
}
public:
virtual ~EvtAmpFactory() = default;
virtual EvtAmpFactory<T>* clone() const = 0;
virtual void build( const EvtMultiChannelParser& parser, int nItg )
{
_amp = std::make_unique<EvtAmplitudeSum<T>>();
_ampConj = std::make_unique<EvtAmplitudeSum<T>>();
_pc = std::make_unique<EvtPdfSum<T>>();
_dm = parser.dm();
_mixAmpli = parser.mixAmpli();
_mixPhase = parser.mixPhase();
printf( "Amplitude with %d terms\n", parser.getNAmp() );
int i;
for ( i = 0; i < parser.getNAmp(); i++ ) {
std::vector<std::string> v = parser.amp( i );
EvtComplex c = parser.ampCoef( i );
processAmp( c, v );
}
printf( "Conj. amplitude with %d terms\n", parser.getNAmpConj() );
for ( i = 0; i < parser.getNAmpConj(); i++ ) {
std::vector<std::string> v = parser.ampConj( i );
EvtComplex c = parser.ampConjCoef( i );
processAmp( c, v, true );
}
printf( "Calculating pole compensator integrals %d steps\n", nItg );
if ( nItg > 0 )
_pc->getItg( nItg );
printf( "End build\n" );
}
virtual void processAmp( EvtComplex c, std::vector<std::string> v,
bool conj = false ) = 0;
inline bool isCPModel() const
{
return ( _ampConj->nTerms() > 0 ? true : false );
}
inline double dm() const { return _dm; }
inline double mixAmpli() const { return _mixAmpli; }
inline double mixPhase() const { return _mixPhase; }
void setVerbose() { _verbose = true; }
EvtAmplitudeSum<T>* getAmp() const { return _amp.get(); }
EvtAmplitudeSum<T>* getAmpConj() const { return _ampConj.get(); }
EvtPdfSum<T>* getPC() const { return _pc.get(); }
EvtAmplitude<T>* getAmp( int i ) const { return _amp->getTerm( i ); }
EvtPdf<T>* getPC( int i ) const { return _pc->getPdf( i ); }
const char* compName( int i ) const { return _names[i].c_str(); }
EvtComplex getCoeff( int i ) const { return _amp->c( i ); }
double getTermCoeff( int i ) const { return abs2( _amp->c( i ) ); }
double getTermCoeff( int type, int i, int j ) const
{
switch ( type ) {
case 0:
return 2 * real( _amp->c( i ) * conj( _amp->c( j ) ) ); //posre
case 1:
return -2 * real( _amp->c( i ) * conj( _amp->c( j ) ) ); //negre
case 2:
return -2 * imag( _amp->c( i ) * conj( _amp->c( j ) ) ); //posim
case 3:
return 2 * imag( _amp->c( i ) * conj( _amp->c( j ) ) ); //negim
default:
assert( 0 );
}
}
protected:
std::unique_ptr<EvtAmplitudeSum<T>> _amp; // _owned_ amplitude
std::unique_ptr<EvtAmplitudeSum<T>> _ampConj; // _owned_ conjugate amplitude
std::unique_ptr<EvtPdfSum<T>> _pc; // _owned_ pole compensator
std::vector<std::string> _names; // names of partial amplitudes
double _dm = 0; // Mass difference for conjugate amplitude
double _mixPhase; // mixing phase
double _mixAmpli; // cpv in mixing
bool _verbose = false;
};
#endif
diff --git a/EvtGenBase/EvtAmpIndex.hh b/EvtGenBase/EvtAmpIndex.hh
index 79874b1..dc03d85 100644
--- a/EvtGenBase/EvtAmpIndex.hh
+++ b/EvtGenBase/EvtAmpIndex.hh
@@ -1,45 +1,25 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2002 Caltech, UCSB
-//
-// Module: EvtGen/EvtAmpIndex.hh
-//
-// Description:This class keeps track of indices on amplitude objects.
-//
-// Modification history:
-//
-// Ryd Nov 22, 2002 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTAMPINDEX_HH
#define EVTAMPINDEX_HH
#include <vector>
class EvtAmpIndex {
friend class EvtAmpSubIndex;
public:
EvtAmpIndex( std::vector<int> ind );
virtual ~EvtAmpIndex() {}
void reset();
bool next();
int index();
private:
std::vector<int> _ind;
int _size;
std::vector<int> _state;
std::vector<int> _nstate;
};
#endif
diff --git a/EvtGenBase/EvtAmpPdf.hh b/EvtGenBase/EvtAmpPdf.hh
index 543bf2a..ae158c7 100644
--- a/EvtGenBase/EvtAmpPdf.hh
+++ b/EvtGenBase/EvtAmpPdf.hh
@@ -1,43 +1,34 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtAmpPdf.hh,v 1.2 2009-03-16 16:43:40 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
#ifndef EVT_AMP_PDF_HH
#define EVT_AMP_PDF_HH
#include "EvtGenBase/EvtAmplitude.hh"
#include "EvtGenBase/EvtMacros.hh"
#include "EvtGenBase/EvtPdf.hh"
template <class T>
class EvtAmpPdf : public EvtPdf<T> {
public:
EvtAmpPdf() {}
EvtAmpPdf( const EvtAmplitude<T>& amp ) : EvtPdf<T>(), _amp( amp.clone() )
{
}
EvtAmpPdf( const EvtAmpPdf<T>& other ) :
EvtPdf<T>( other ), COPY_PTR( _amp )
{
}
virtual ~EvtAmpPdf() { delete _amp; }
EvtAmpPdf<T>* clone() const override { return new EvtAmpPdf( *this ); }
double pdf( const T& p ) const override
{
EvtComplex amp = _amp->evaluate( p );
return real( amp ) * real( amp ) + imag( amp ) * imag( amp );
}
private:
EvtAmplitude<T>* _amp;
};
#endif
diff --git a/EvtGenBase/EvtAmpSubIndex.hh b/EvtGenBase/EvtAmpSubIndex.hh
index e056c03..d811492 100644
--- a/EvtGenBase/EvtAmpSubIndex.hh
+++ b/EvtGenBase/EvtAmpSubIndex.hh
@@ -1,42 +1,21 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2002 Caltech
-//
-// Module: EvtAmpSubIndex.hh
-//
-// Description:This class keeps track of indices on amplitude objects.
-// Used for a subset of indices in an EvtAmpIndex object.
-//
-// Modification history:
-//
-// Ryd Nov 22, 2002 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTAMPSUBINDEX_HH
#define EVTAMPSUBINDEX_HH
#include <vector>
class EvtAmpIndex;
class EvtAmpSubIndex {
public:
EvtAmpSubIndex( EvtAmpIndex* ind, std::vector<int> sub );
virtual ~EvtAmpSubIndex() {}
int index();
private:
EvtAmpIndex* _ind;
std::vector<int> _sub;
int _size;
std::vector<int> _nstate;
};
#endif
diff --git a/EvtGenBase/EvtAmplitude.hh b/EvtGenBase/EvtAmplitude.hh
index ced179e..8a3bab2 100644
--- a/EvtGenBase/EvtAmplitude.hh
+++ b/EvtGenBase/EvtAmplitude.hh
@@ -1,44 +1,35 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtAmplitude.hh,v 1.2 2009-03-16 16:43:40 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Complex-valued amplitude
-
#ifndef EVT_AMPLITUDE_HH
#define EVT_AMPLITUDE_HH
#include "EvtGenBase/EvtComplex.hh"
+// Complex-valued amplitude
+
template <class T>
class EvtAmplitude {
public:
EvtAmplitude() = default;
EvtAmplitude( const EvtAmplitude& ) = default;
EvtAmplitude( EvtAmplitude&& ) = default;
EvtAmplitude& operator=( const EvtAmplitude& ) = default;
EvtAmplitude& operator=( EvtAmplitude&& ) = default;
virtual ~EvtAmplitude() = default;
virtual EvtAmplitude<T>* clone() const = 0;
EvtComplex evaluate( const T& p ) const
{
EvtComplex ret( 0., 0. );
if ( p.isValid() )
ret = amplitude( p );
return ret;
}
protected:
// Derive in subclasses to define amplitude computation
// for a fully constructed amplitude object.
virtual EvtComplex amplitude( const T& ) const = 0;
};
#endif
diff --git a/EvtGenBase/EvtAmplitudeSum.hh b/EvtGenBase/EvtAmplitudeSum.hh
index 0a706b8..e16c589 100644
--- a/EvtGenBase/EvtAmplitudeSum.hh
+++ b/EvtGenBase/EvtAmplitudeSum.hh
@@ -1,98 +1,89 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtAmplitudeSum.hh,v 1.2 2009-03-16 16:42:46 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
#ifndef EVT_AMPLITUDE_SUM_HH
#define EVT_AMPLITUDE_SUM_HH
#include "EvtGenBase/EvtAmplitude.hh"
#include <assert.h>
#include <memory>
#include <vector>
template <class T>
class EvtAmplitudeSum : public EvtAmplitude<T> {
public:
EvtAmplitudeSum() {}
EvtAmplitudeSum( const EvtAmplitudeSum<T>& other ) :
EvtAmplitude<T>( other )
{
int i;
for ( i = 0; i < other.nTerms(); i++ ) {
EvtComplex c = other.c( i );
_c.push_back( c );
EvtAmplitude<T>* amp = other.getTerm( i );
assert( amp );
EvtAmplitude<T>* amp1 = amp->clone();
assert( amp1 );
_term.push_back( amp1 );
}
}
virtual ~EvtAmplitudeSum()
{
for ( size_t i = 0; i < _term.size(); i++ ) {
delete _term[i];
}
}
EvtAmplitudeSum<T>* clone() const override
{
return new EvtAmplitudeSum<T>( *this );
}
void addTerm( EvtComplex c, const EvtAmplitude<T>& amp )
{
_c.push_back( c );
_term.push_back( amp.clone() );
}
void addOwnedTerm( EvtComplex c, std::unique_ptr<EvtAmplitude<T>> amp )
{
assert( amp );
_c.push_back( c );
_term.push_back( amp.release() );
}
int nTerms() const { return _term.size(); } // number of terms
void print() const
{
int N = nTerms();
printf( "Amplitude has %d terms\n", N );
int i;
for ( i = 0; i < N; i++ ) {
printf( "c%d = (%f,%f)\n", i, real( _c[i] ), imag( _c[i] ) );
assert( _term[i] );
}
}
inline EvtComplex c( int i ) const { return _c[i]; }
inline EvtAmplitude<T>* getTerm( int i ) const { return _term[i]; }
protected:
EvtComplex amplitude( const T& p ) const override
{
if ( _term.size() == 0 )
printf( "Warning: amplitude sum has zero terms\n" );
EvtComplex value = 0.;
for ( size_t i = 0; i < _term.size(); i++ ) {
value += _c[i] * _term[i]->evaluate( p );
}
return value;
}
private:
std::vector<EvtComplex> _c; // coefficients
std::vector<EvtAmplitude<T>*> _term; // pointers to amplitudes
};
#endif
diff --git a/EvtGenBase/EvtBlattWeisskopf.hh b/EvtGenBase/EvtBlattWeisskopf.hh
index b489011..1fb202f 100644
--- a/EvtGenBase/EvtBlattWeisskopf.hh
+++ b/EvtGenBase/EvtBlattWeisskopf.hh
@@ -1,32 +1,23 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtBlattWeisskopf.hh,v 1.2 2009-03-16 16:43:40 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
+#ifndef EVT_BLATT_WEISSKOPF_HH
+#define EVT_BLATT_WEISSKOPF_HH
// Blatt-Weisskopf penetration form factor for a resonance R->AB.
// Taken from CLEO preprint 00-23 (hep-ex/0011065)
-#ifndef EVT_BLATT_WEISSKOPF_HH
-#define EVT_BLATT_WEISSKOPF_HH
-
class EvtBlattWeisskopf {
public:
EvtBlattWeisskopf( int LL, double R, double p0 );
EvtBlattWeisskopf( const EvtBlattWeisskopf& );
double operator()( double p ) const;
private:
int _LL; // angular momentum of daughters
double _radial; // resonance radial parameter
double _p0;
double _F0; // formula evaluated at _p0
double compute( double p ) const;
};
#endif
diff --git a/EvtGenBase/EvtBreitWignerPdf.hh b/EvtGenBase/EvtBreitWignerPdf.hh
index aa506e3..e73ea1e 100644
--- a/EvtGenBase/EvtBreitWignerPdf.hh
+++ b/EvtGenBase/EvtBreitWignerPdf.hh
@@ -1,41 +1,32 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtBreitWignerPdf.hh,v 1.2 2009-03-16 16:43:40 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Breit-Wigner PDF
-
#ifndef EVT_BREIT_WIGNER_PDF_HH
#define EVT_BREIT_WIGNER_PDF_HH
#include "EvtGenBase/EvtIntegPdf1D.hh"
+// Breit-Wigner PDF
+
class EvtBreitWignerPdf : public EvtIntegPdf1D {
public:
EvtBreitWignerPdf( double min, double max, double m0, double g0 );
EvtBreitWignerPdf( const EvtBreitWignerPdf& other );
double pdf( const EvtPoint1D& x ) const override;
EvtPdf<EvtPoint1D>* clone() const override
{
return new EvtBreitWignerPdf( *this );
}
double pdfIntegral( double m ) const override;
double pdfIntegralInverse( double x ) const override;
// accessors
inline double m0() const { return _m0; }
inline double g0() const { return _g0; }
private:
double _m0;
double _g0;
};
#endif
diff --git a/EvtGenBase/EvtCGCoefSingle.hh b/EvtGenBase/EvtCGCoefSingle.hh
index b89ae79..f668ada 100644
--- a/EvtGenBase/EvtCGCoefSingle.hh
+++ b/EvtGenBase/EvtCGCoefSingle.hh
@@ -1,45 +1,25 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtGen/EvtCGCoefSingle.hh
-//
-// Description:Evaluation of Clebsch-Gordon coef for a fixed j1 and j2.
-//
-// Modification history:
-//
-// RYD August 12, 2000 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTCGCOEFSINGLE_HH
#define EVTCGCOEFSINGLE_HH
#include <vector>
class EvtCGCoefSingle final {
public:
EvtCGCoefSingle( int j1, int j2 ) { init( j1, j2 ); }
double coef( int J, int M, int j1, int j2, int m1, int m2 );
private:
void init( int j1, int j2 );
double& cg( int J, int M, int m1, int m2 );
int _j1;
int _j2;
int _Jmax;
int _Jmin;
std::vector<std::vector<std::vector<double>>> _table;
};
#endif
diff --git a/EvtGenBase/EvtCPUtil.hh b/EvtGenBase/EvtCPUtil.hh
index b33c0bb..7a0407e 100644
--- a/EvtGenBase/EvtCPUtil.hh
+++ b/EvtGenBase/EvtCPUtil.hh
@@ -1,84 +1,64 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtCPUtil.hh
-//
-// Description:Class to hold CP physics utilities.
-//
-// Modification history:
-//
-// RYD March 24, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTCPUTIL_HH
#define EVTCPUTIL_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPatches.hh"
class EvtParticle;
class EvtId;
class EvtCPUtil {
public:
EvtCPUtil( int mixingType );
~EvtCPUtil();
enum MixingType
{
Coherent = 0,
Incoherent = 1
};
static EvtCPUtil* getInstance();
void setMixingType( int mixingType ) { _mixingType = mixingType; }
int getMixingType() { return _mixingType; }
void fractB0CP( EvtComplex Af, EvtComplex Abarf, double deltam, double beta,
double& fract );
void fractB0nonCP( EvtComplex Af, EvtComplex Abarf, EvtComplex Afbar,
EvtComplex Abarfbar, double deltam, double beta,
int flip, double& fract );
// Mark Whitehead 7/12/2009
// Add required lines from EvtIncoherentMixing.hh to fix CPV
// Functions to check if a B has mixed (comes from a B)
bool isB0Mixed( EvtParticle* );
bool isBsMixed( EvtParticle* );
bool flipIsEnabled();
void enableFlip();
void disableFlip();
void OtherB( EvtParticle* p, double& t, EvtId& otherb );
void OtherCoherentB( EvtParticle* p, double& t, EvtId& otherb, double probB0 );
void OtherIncoherentB( EvtParticle* p, double& t, EvtId& otherb,
double probB0 );
void OtherB( EvtParticle* p, double& t, EvtId& otherb, double probB0 );
//id is the produced particle
//t returns the lifetime of the particle
//and mix will be 1 if it mixed otherwise 0
void incoherentMix( const EvtId id, double& t, int& mix );
double getDeltaGamma( const EvtId id );
double getDeltaM( const EvtId id );
private:
bool _enableFlip;
int _mixingType;
};
#endif
diff --git a/EvtGenBase/EvtComplex.hh b/EvtGenBase/EvtComplex.hh
index b76f485..d83e4b5 100644
--- a/EvtGenBase/EvtComplex.hh
+++ b/EvtGenBase/EvtComplex.hh
@@ -1,245 +1,225 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVector4R.hh
-//
-// Description: Class to describe complex numbers
-//
-// Modification history:
-//
-// RYD December 5, 1998 Created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTCOMPLEX_HH
#define EVTCOMPLEX_HH
#include "EvtGenBase/EvtConst.hh"
#include <iostream>
#include <math.h>
class EvtComplex {
inline friend EvtComplex operator*( double d, const EvtComplex& c );
inline friend EvtComplex operator*( const EvtComplex& c, double d );
inline friend EvtComplex operator/( const EvtComplex& c, double d );
inline friend EvtComplex operator/( double d, const EvtComplex& c );
inline friend EvtComplex operator*( const EvtComplex& c1,
const EvtComplex& c2 );
inline friend EvtComplex operator/( const EvtComplex& c1,
const EvtComplex& c2 );
inline friend EvtComplex operator+( const EvtComplex& c1,
const EvtComplex& c2 );
inline friend EvtComplex operator-( const EvtComplex& c1,
const EvtComplex& c2 );
inline friend EvtComplex operator-( const EvtComplex& c );
inline friend EvtComplex conj( const EvtComplex& c );
inline friend double abs( const EvtComplex& c );
inline friend double abs2( const EvtComplex& c );
inline friend double arg( const EvtComplex& c );
inline friend double real( const EvtComplex& c );
inline friend double imag( const EvtComplex& c );
inline friend EvtComplex exp( const EvtComplex& c );
friend std::ostream& operator<<( std::ostream& s, const EvtComplex& c );
public:
EvtComplex() : _rpart( 0.0 ), _ipart( 0.0 ) {}
EvtComplex( double rpart, double ipart = 0.0 ) :
_rpart( rpart ), _ipart( ipart )
{
}
EvtComplex( const EvtComplex& c ) : _rpart( c._rpart ), _ipart( c._ipart )
{
}
inline EvtComplex& operator*=( double d );
inline EvtComplex& operator/=( double d );
EvtComplex& operator*=( EvtComplex c );
EvtComplex& operator/=( EvtComplex c );
inline EvtComplex& operator=( const EvtComplex& c );
inline EvtComplex& operator+=( const EvtComplex& c );
inline EvtComplex& operator-=( const EvtComplex& c );
inline EvtComplex& operator+=( double d );
inline EvtComplex& operator-=( double d );
inline int operator==( const EvtComplex c );
inline int operator!=( const EvtComplex c );
private:
double _rpart, _ipart;
};
typedef EvtComplex* EvtComplexPtr;
typedef EvtComplexPtr* EvtComplexPtrPtr;
typedef EvtComplexPtrPtr* EvtComplexPtrPtrPtr;
EvtComplex& EvtComplex::operator=( const EvtComplex& c )
{
_rpart = c._rpart;
_ipart = c._ipart;
return *this;
}
EvtComplex& EvtComplex::operator+=( const EvtComplex& c )
{
_rpart += c._rpart;
_ipart += c._ipart;
return *this;
}
EvtComplex& EvtComplex::operator-=( const EvtComplex& c )
{
_rpart -= c._rpart;
_ipart -= c._ipart;
return *this;
}
EvtComplex& EvtComplex::operator+=( double d )
{
_rpart += d;
return *this;
}
EvtComplex& EvtComplex::operator-=( double d )
{
_rpart -= d;
return *this;
}
EvtComplex operator*( double d, const EvtComplex& c )
{
return EvtComplex( c._rpart * d, c._ipart * d );
}
EvtComplex operator*( const EvtComplex& c, double d )
{
return EvtComplex( c._rpart * d, c._ipart * d );
}
EvtComplex operator/( const EvtComplex& c, double d )
{
return EvtComplex( c._rpart / d, c._ipart / d );
}
EvtComplex& EvtComplex::operator*=( double d )
{
_rpart *= d;
_ipart *= d;
return *this;
}
EvtComplex& EvtComplex::operator/=( double d )
{
_rpart /= d;
_ipart /= d;
return *this;
}
EvtComplex operator/( double d, const EvtComplex& c )
{
double Num = d / ( c._rpart * c._rpart + c._ipart * c._ipart );
return EvtComplex( Num * c._rpart, -Num * c._ipart );
}
EvtComplex operator/( const EvtComplex& c1, const EvtComplex& c2 )
{
double inv = 1.0 / ( c2._rpart * c2._rpart + c2._ipart * c2._ipart );
return EvtComplex( inv * ( c1._rpart * c2._rpart + c1._ipart * c2._ipart ),
inv * ( c1._ipart * c2._rpart - c1._rpart * c2._ipart ) );
}
EvtComplex operator*( const EvtComplex& c1, const EvtComplex& c2 )
{
return EvtComplex( c1._rpart * c2._rpart - c1._ipart * c2._ipart,
c1._rpart * c2._ipart + c1._ipart * c2._rpart );
}
EvtComplex operator-( const EvtComplex& c1, const EvtComplex& c2 )
{
return EvtComplex( c1._rpart - c2._rpart, c1._ipart - c2._ipart );
}
EvtComplex operator+( const EvtComplex& c1, const EvtComplex& c2 )
{
return EvtComplex( c1._rpart + c2._rpart, c1._ipart + c2._ipart );
}
int EvtComplex::operator==( const EvtComplex c )
{
return _rpart == c._rpart && _ipart == c._ipart;
}
int EvtComplex::operator!=( const EvtComplex c )
{
return _rpart != c._rpart || _ipart != c._ipart;
}
EvtComplex operator-( const EvtComplex& c )
{
return EvtComplex( -c._rpart, -c._ipart );
}
EvtComplex conj( const EvtComplex& c )
{
return EvtComplex( c._rpart, -c._ipart );
}
double abs( const EvtComplex& c )
{
double c2 = c._rpart * c._rpart + c._ipart * c._ipart;
if ( c2 <= 0.0 )
return 0.0;
return sqrt( c2 );
}
double abs2( const EvtComplex& c )
{
return c._rpart * c._rpart + c._ipart * c._ipart;
}
double arg( const EvtComplex& c )
{
if ( ( c._rpart == 0 ) && ( c._ipart == 0 ) ) {
return 0.0;
}
if ( c._rpart == 0 ) {
if ( c._ipart > 0 ) {
return EvtConst::pi / 2;
} else {
return -EvtConst::pi / 2;
}
} else {
return atan2( c._ipart, c._rpart );
}
}
double real( const EvtComplex& c )
{
return c._rpart;
}
double imag( const EvtComplex& c )
{
return c._ipart;
}
EvtComplex exp( const EvtComplex& c )
{
return exp( c._rpart ) * EvtComplex( cos( c._ipart ), sin( c._ipart ) );
}
#endif
diff --git a/EvtGenBase/EvtConst.hh b/EvtGenBase/EvtConst.hh
index 97c409a..e1efe9c 100644
--- a/EvtGenBase/EvtConst.hh
+++ b/EvtGenBase/EvtConst.hh
@@ -1,34 +1,14 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtConst.hh
-//
-// Description:Numerical constants used in EvtGen
-//
-// Modification history:
-//
-// DJL/RYD August 8, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTCONST_HH
#define EVTCONST_HH
class EvtConst {
public:
static const double pi;
static const double twoPi;
static const double radToDegrees;
static const double c;
static const double Fermi;
};
#endif
diff --git a/EvtGenBase/EvtCyclic3.hh b/EvtGenBase/EvtCyclic3.hh
index ee5f817..f5af6e1 100644
--- a/EvtGenBase/EvtCyclic3.hh
+++ b/EvtGenBase/EvtCyclic3.hh
@@ -1,99 +1,90 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtCyclic3.hh,v 1.2 2009-03-16 16:42:46 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Cyclic permutations of three indices A,B,C and their parings
-
#ifndef EVT_CYCLIC3_HH
#define EVT_CYCLIC3_HH
#include <iosfwd>
+// Cyclic permutations of three indices A,B,C and their parings
+
namespace EvtCyclic3 {
enum Index
{
A = 0,
B = 1,
C = 2
};
enum Pair
{
BC = 0,
CB = BC,
CA = 1,
AC = CA,
AB = 2,
BA = AB
};
enum Perm
{
ABC = 0,
BCA = 1,
CAB = 2,
CBA = 3,
BAC = 4,
ACB = 5
};
// Permutations (multiplication is not transitive)
Index permute( Index i, Perm p );
Perm permutation( Index i1, Index i2, Index i3 );
Perm permute( Perm i, Perm p );
Pair permute( Pair i, Perm p );
Pair i2pair( int i );
// Index-to-index
Index prev( Index i );
Index next( Index i );
Index other( Index i, Index j );
// Index-to-pair
Pair other( Index i );
Pair combine( Index i, Index j );
// Pair-to-pair conversions
Pair prev( Pair i );
Pair next( Pair i );
Pair other( Pair i, Pair j );
// Pair-to-index conversions
Index first( Pair i );
Index second( Pair i );
Index other( Pair i );
Index common( Pair i, Pair j );
// String to Index, Pair
Index strToIndex( const char* str );
Pair strToPair( const char* str );
// To string conversions
const char* c_str( Index i );
const char* c_str( Pair i );
const char* c_str( Perm i );
// Useful name strings
char* append( const char* str, EvtCyclic3::Index i );
char* append( const char* str, EvtCyclic3::Pair i );
} // namespace EvtCyclic3
//where should these go?
//ostream& operator<<(ostream&, EvtCyclic3::Index);
//ostream& operator<<(ostream&, EvtCyclic3::Pair);
#endif
diff --git a/EvtGenBase/EvtDalitzCoord.hh b/EvtGenBase/EvtDalitzCoord.hh
index 677adb9..627c026 100644
--- a/EvtGenBase/EvtDalitzCoord.hh
+++ b/EvtGenBase/EvtDalitzCoord.hh
@@ -1,52 +1,43 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtDalitzCoord.hh,v 1.2 2009-03-16 16:43:40 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Two dimensional coordinate of a point in a Dalitz plot
-
#ifndef EVT_DALITZ_COORD_HH
#define EVT_DALITZ_COORD_HH
#include "EvtGenBase/EvtCyclic3.hh"
#include <iostream>
+// Two dimensional coordinate of a point in a Dalitz plot
+
class EvtDalitzCoord final {
public:
// ctor, dtor
EvtDalitzCoord();
EvtDalitzCoord( EvtCyclic3::Pair i1, double q1, EvtCyclic3::Pair i2,
double q2 );
EvtDalitzCoord( const EvtDalitzCoord& other );
inline EvtCyclic3::Pair pair1() const { return _i1; }
inline EvtCyclic3::Pair pair2() const { return _i2; }
inline double q1() const { return _q1; }
inline double q2() const { return _q2; }
// It's nice to have an equality operator for
// a coordinate. However, beware effects of numerical precision
bool operator==( const EvtDalitzCoord& ) const;
void print( std::ostream& ) const;
private:
// Two coordinates define the point
EvtCyclic3::Pair _i1;
EvtCyclic3::Pair _i2;
double _q1;
double _q2;
};
std::ostream& operator<<( std::ostream&, const EvtDalitzCoord& );
#endif
diff --git a/EvtGenBase/EvtDalitzFlatPdf.hh b/EvtGenBase/EvtDalitzFlatPdf.hh
index ea3268f..dd77e5a 100644
--- a/EvtGenBase/EvtDalitzFlatPdf.hh
+++ b/EvtGenBase/EvtDalitzFlatPdf.hh
@@ -1,39 +1,30 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtDalitzFlatPdf.hh,v 1.2 2009-03-16 16:43:40 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-/*
- * Uniform PDF defined on a Dalitz plot.
- */
-
#ifndef EVT_DALITZ_FLAT_PDF_HH
#define EVT_DALITZ_FLAT_PDF_HH
#include "EvtGenBase/EvtDalitzPlot.hh"
#include "EvtGenBase/EvtDalitzPoint.hh"
#include "EvtGenBase/EvtPdf.hh"
#include <assert.h>
+/*
+ * Uniform PDF defined on a Dalitz plot.
+ */
+
class EvtDalitzFlatPdf : public EvtPdf<EvtDalitzPoint> {
public:
EvtDalitzFlatPdf( const EvtDalitzPlot& dp );
EvtDalitzFlatPdf( const EvtDalitzFlatPdf& other );
EvtPdf<EvtDalitzPoint>* clone() const override;
using EvtPdf<EvtDalitzPoint>::compute_integral;
EvtValError compute_integral( int N ) const override;
EvtDalitzPoint randomPoint() override;
protected:
double pdf( const EvtDalitzPoint& ) const override;
EvtDalitzPlot _dp;
};
#endif
diff --git a/EvtGenBase/EvtDalitzPlot.hh b/EvtGenBase/EvtDalitzPlot.hh
index 9513194..f88e2f3 100644
--- a/EvtGenBase/EvtDalitzPlot.hh
+++ b/EvtGenBase/EvtDalitzPlot.hh
@@ -1,115 +1,99 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtDalitzPlot.hh,v 1.2 2009-03-16 16:44:53 robbep Exp $
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module creator:
-// Alexei Dvoretskii, Caltech, 2001-2002.
-//-----------------------------------------------------------------------
-
#ifndef EVT_DALITZ_PLOT_HH
#define EVT_DALITZ_PLOT_HH
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDecayMode.hh"
#include "EvtGenBase/EvtTwoBodyVertex.hh"
#include <assert.h>
class EvtDalitzPlot {
public:
EvtDalitzPlot();
EvtDalitzPlot( double mA, double mB, double mC, double bigM,
double ldel = 0., double rdel = 0. );
EvtDalitzPlot( const EvtDecayMode& mode, double ldel = 0., double rdel = 0. );
bool operator==( const EvtDalitzPlot& other ) const;
const EvtDalitzPlot* clone() const;
// Absolute limits for masses squared in the Dalitz plot
// e.g. qAbsMin(0) is the lowest possible value
// for m2 of particles {12}
double qAbsMin( EvtCyclic3::Pair i ) const;
double qAbsMax( EvtCyclic3::Pair i ) const;
double mAbsMin( EvtCyclic3::Pair i ) const;
double mAbsMax( EvtCyclic3::Pair i ) const;
// Absolute limits for Zemach coordinate qres and qhel (approximate)
// qHelAbsMin(BC,CA) means absolute minimum for (qCA-qAB)/2.
double qResAbsMin( EvtCyclic3::Pair i ) const;
double qResAbsMax( EvtCyclic3::Pair i ) const;
double qHelAbsMin( EvtCyclic3::Pair i ) const;
double qHelAbsMax( EvtCyclic3::Pair i ) const;
inline double qSumMin() const { return sum() + _ldel; }
inline double qSumMax() const { return sum() + _rdel; }
inline bool fuzzy() const { return ( _rdel - _ldel != 0. ); }
// Find the area of the Dalitz plot by numeric integration. (N bins for variable q(i) are used).
// Very large numbers of N can result in a very long calculation. It should not
// matter which two pairs f variables are used. The integral should eventually
// converge to the same number
double getArea( int N = 1000, EvtCyclic3::Pair i = EvtCyclic3::AB,
EvtCyclic3::Pair j = EvtCyclic3::BC ) const;
// Limits for masses squared when one mass squared is known
double qMin( EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q ) const;
double qMax( EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q ) const;
// Coordinate transformations
double cosTh( EvtCyclic3::Pair i1, double q1, EvtCyclic3::Pair i2,
double q2 ) const;
double e( EvtCyclic3::Index i, EvtCyclic3::Pair j, double q ) const;
double p( EvtCyclic3::Index i, EvtCyclic3::Pair j, double q ) const;
double q( EvtCyclic3::Pair i1, double cosTh, EvtCyclic3::Pair i2,
double q2 ) const;
// |J| of transformation of qi to cosTh in the rest-frame of j
double jacobian( EvtCyclic3::Pair i, double q ) const;
// Given resonance index and mass returns decay
// and birth vertices
EvtTwoBodyVertex vD( EvtCyclic3::Pair iRes, double m0, int L ) const;
EvtTwoBodyVertex vB( EvtCyclic3::Pair iRes, double m0, int L ) const;
// Accessors
double sum() const;
inline double bigM() const { return _bigM; }
inline double mA() const { return _mA; }
inline double mB() const { return _mB; }
inline double mC() const { return _mC; }
double m( EvtCyclic3::Index i ) const;
void print() const;
void sanityCheck() const;
protected:
// Defines two dimensional dalitz plot
double _mA;
double _mB;
double _mC;
double _bigM;
// Defines third dimension, or fuzziness. M^2 + ldel < M^2 < M^2 + rdel
double _ldel;
double _rdel;
};
#endif
diff --git a/EvtGenBase/EvtDalitzPoint.hh b/EvtGenBase/EvtDalitzPoint.hh
index fce92f4..77a06b8 100644
--- a/EvtGenBase/EvtDalitzPoint.hh
+++ b/EvtGenBase/EvtDalitzPoint.hh
@@ -1,70 +1,61 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtDalitzPoint.hh,v 1.2 2009-03-16 16:44:53 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
+#ifndef EVT_DALITZ_POINT_HH
+#define EVT_DALITZ_POINT_HH
+
+#include "EvtGenBase/EvtCyclic3.hh"
+#include "EvtGenBase/EvtDalitzCoord.hh"
+#include "EvtGenBase/EvtDalitzPlot.hh"
// This class describes the complete kinematics of the Dalitz decay.
// It holds all the six invariant momentum products, three daughter
// particle masses and three invariant masses of pairs of particles.
// This description is completely symmetric with respect to particle
// permutations.
//
// Another way to slice the six coordinate is to make a transformation
// to the mass of the decaying particle. The four masses make up a
// Dalitz plot. The other two are coordinates of a point in the plot.
-#ifndef EVT_DALITZ_POINT_HH
-#define EVT_DALITZ_POINT_HH
-
-#include "EvtGenBase/EvtCyclic3.hh"
-#include "EvtGenBase/EvtDalitzCoord.hh"
-#include "EvtGenBase/EvtDalitzPlot.hh"
-
class EvtDalitzPoint final {
public:
EvtDalitzPoint();
EvtDalitzPoint( double mA, double mB, double mC, double qAB, double qBC,
double qCA );
EvtDalitzPoint( double mA, double mB, double mC, EvtCyclic3::Pair i,
double qres, double qhel, double qsum );
EvtDalitzPoint( const EvtDalitzPlot&, const EvtDalitzCoord& );
EvtDalitzCoord getDalitzPoint( EvtCyclic3::Pair i, EvtCyclic3::Pair j ) const;
EvtDalitzPlot getDalitzPlot() const;
double q( EvtCyclic3::Pair ) const;
double bigM() const;
double m( EvtCyclic3::Index ) const;
// Zemach variables
double qres( EvtCyclic3::Pair i ) const;
double qhel( EvtCyclic3::Pair i ) const;
double qsum() const;
// Kinematic quantities
//
// pp - 4 momentum product
// e,p,cosTh - energy/moementum in rest-frame of j
double qMin( EvtCyclic3::Pair i, EvtCyclic3::Pair j ) const;
double qMax( EvtCyclic3::Pair i, EvtCyclic3::Pair j ) const;
double pp( EvtCyclic3::Index i, EvtCyclic3::Index j ) const;
double e( EvtCyclic3::Index i, EvtCyclic3::Pair j ) const;
double p( EvtCyclic3::Index i, EvtCyclic3::Pair j ) const;
double cosTh( EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes ) const;
bool isValid() const;
void print() const;
private:
double _mA, _mB, _mC; // masses
double _qAB, _qBC, _qCA; // masses squared
};
#endif
diff --git a/EvtGenBase/EvtDalitzResPdf.hh b/EvtGenBase/EvtDalitzResPdf.hh
index 5e052e1..23d331f 100644
--- a/EvtGenBase/EvtDalitzResPdf.hh
+++ b/EvtGenBase/EvtDalitzResPdf.hh
@@ -1,56 +1,47 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtDalitzResPdf.hh,v 1.2 2009-03-16 16:42:46 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
+#ifndef EVT_DALITZ_RES_PDF_HH
+#define EVT_DALITZ_RES_PDF_HH
+
+#include "EvtGenBase/EvtCyclic3.hh"
+#include "EvtGenBase/EvtDalitzPoint.hh"
+#include "EvtGenBase/EvtPdf.hh"
/*
* Pole compensating function for terms that exibit a resonant structure
* in one dimension only.
*
* f = 1 g*m0
* -- ------------------
* pi (q-q0)^2 + g^2m0^2
*
* m is the mass of the resonance, g is its width. The approximation works well for a narrow
* resonance. It is also readily integrable over the Dalitz plot coordinate to produce
*
* Int = 1/pi atan((q-q0)/(g*m0))
*/
-#ifndef EVT_DALITZ_RES_PDF_HH
-#define EVT_DALITZ_RES_PDF_HH
-
-#include "EvtGenBase/EvtCyclic3.hh"
-#include "EvtGenBase/EvtDalitzPoint.hh"
-#include "EvtGenBase/EvtPdf.hh"
-
class EvtDalitzResPdf : public EvtPdf<EvtDalitzPoint> {
public:
EvtDalitzResPdf( const EvtDalitzPlot& dp, double m0, double g0,
EvtCyclic3::Pair pairRes );
EvtPdf<EvtDalitzPoint>* clone() const override
{
return new EvtDalitzResPdf( *this );
}
using EvtPdf<EvtDalitzPoint>::compute_integral;
EvtValError compute_integral( int N ) const override;
EvtDalitzPoint randomPoint() override;
double pdfMaxValue() const;
protected:
double pdf( const EvtDalitzPoint& ) const override;
private:
EvtDalitzPlot _dp;
double _m0; // mass
double _g0; // width
EvtCyclic3::Pair _pair; // resonant pair
};
#endif
diff --git a/EvtGenBase/EvtDalitzReso.hh b/EvtGenBase/EvtDalitzReso.hh
index 046a7cd..6427adf 100644
--- a/EvtGenBase/EvtDalitzReso.hh
+++ b/EvtGenBase/EvtDalitzReso.hh
@@ -1,224 +1,211 @@
-/*****************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtDalitzReso.hh,v 1.1 2009-03-16 16:50:49 robbep Exp $
- *
- * Description:
- * Class to compute Dalitz amplitudes based on many models that cannot be
- * handled with EvtResonance.
- *
- * Modification history:
- * Jordi Garra Ticó 2008/07/03 File created
- *****************************************************************************/
-
#ifndef __EVTDALITZRESO_HH__
#define __EVTDALITZRESO_HH__
#include "EvtGenBase/EvtBlattWeisskopf.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDalitzPoint.hh"
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtFlatte.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtTwoBodyVertex.hh"
#include <map>
#include <string>
#include <vector>
using std::map;
using std::vector;
class EvtBlattWeisskopf;
class EvtDalitzReso final {
public:
// Numerator type
enum NumType
{
NBW = 0,
RBW_ZEMACH = 1,
RBW_KUEHN = 2,
RBW_CLEO = 3,
RBW_ZEMACH2 = 4,
GS_CLEO = 5,
K_MATRIX = 6,
RBW_CLEO_ZEMACH = 7,
GS_CLEO_ZEMACH = 8,
LASS = 9,
K_MATRIX_I = 10,
K_MATRIX_II = 11,
GAUSS_CLEO = 12,
GAUSS_CLEO_ZEMACH = 13,
FLATTE = 14,
NON_RES = 15,
NON_RES_LIN = 16,
NON_RES_EXP = 17
};
// Coupling type
// ChgPion : pi+ pi-
// NeuPion : pi0 pi0
// Pion : 0.5*[(pi+ pi-) + (pi0 pi0)]
// ChgKaon : K+ K-
// NeuKaon : K0 K0
// Kaon : 0.5*[(K+ K-) + (K0 K0)]
// EtaPion : eta pi0
enum CouplingType
{
Undefined = 0,
PicPic = 1,
PizPiz,
PiPi,
KcKc,
KzKz,
KK,
EtaPic,
EtaPiz,
PicPicKK,
WA76
};
EvtDalitzReso() : _typeN( NON_RES ){};
EvtDalitzReso( const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes,
NumType typeN, double alpha = 0.0 ) :
_dp( dp ), _pairRes( pairRes ), _typeN( typeN ), _alpha( alpha ){};
EvtDalitzReso( const EvtDalitzPlot& dp, EvtCyclic3::Pair pairAng,
EvtCyclic3::Pair pairRes, EvtSpinType::spintype spin,
double m0, double g0, NumType typeN, double f_b = 0.0,
double f_d = 1.5 );
EvtDalitzReso( const EvtDalitzPlot& dp, EvtCyclic3::Pair pairAng,
EvtCyclic3::Pair pairRes, EvtSpinType::spintype spin,
double m0, double g0, NumType typeN, double m0_mix,
double g0_mix, double delta_mix, EvtComplex amp_mix );
EvtDalitzReso( const EvtDalitzPlot& dp, EvtCyclic3::Pair pairAng,
EvtCyclic3::Pair pairRes, EvtSpinType::spintype spin,
double m0, NumType typeN, double g1, double g2,
CouplingType coupling2 );
// K-matrix
EvtDalitzReso( const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes,
std::string nameIndex, NumType typeN, EvtComplex fr12prod,
EvtComplex fr13prod, EvtComplex fr14prod,
EvtComplex fr15prod, double s0prod );
// LASS
EvtDalitzReso( const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, double m0,
double g0, double a, double r, double B, double phiB, double R,
double phiR, double cutoff = -1, bool scaleByMOverQ = false );
//Flatte
EvtDalitzReso( const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, double m0 );
EvtDalitzReso( const EvtDalitzReso& other );
EvtDalitzReso* clone() const { return new EvtDalitzReso( *this ); }
EvtComplex evaluate( const EvtDalitzPoint& p );
void set_fd( double R ) { _vd.set_f( R ); }
void set_fb( double R ) { _vb.set_f( R ); }
void addFlatteParam( const EvtFlatteParam& param )
{
_flatteParams.push_back( param );
}
private:
EvtComplex psFactor( double& ma, double& mb, double& m );
EvtComplex psFactor( double& ma1, double& mb1, double& ma2, double& mb2,
double& m );
EvtComplex propGauss( const double& m0, const double& s0, const double& m );
EvtComplex propBreitWigner( const double& m0, const double& g0,
const double& m );
EvtComplex propBreitWignerRel( const double& m0, const double& g0,
const double& m );
EvtComplex propBreitWignerRel( const double& m0, const EvtComplex& g0,
const double& m );
EvtComplex propBreitWignerRelCoupled( const double& m0, const EvtComplex& g1,
const EvtComplex& g2, const double& m );
EvtComplex propGounarisSakurai( const double& m0, const double& g0,
const double& k0, const double& m,
const double& g, const double& k );
inline double GS_f( const double& m0, const double& g0, const double& k0,
const double& m, const double& k );
inline double GS_h( const double& m, const double& k );
inline double GS_dhods( const double& m0, const double& k0 );
inline double GS_d( const double& m0, const double& k0 );
EvtComplex numerator( const EvtDalitzPoint& p, const EvtTwoBodyKine& vb,
const EvtTwoBodyKine& vd );
double angDep( const EvtDalitzPoint& p );
EvtComplex mixFactor( EvtComplex prop, EvtComplex prop_mix );
EvtComplex Fvector( double s, int index );
EvtComplex lass( double s );
EvtComplex flatte( const double& m );
inline EvtComplex sqrtCplx( double in )
{
return ( in > 0 ) ? EvtComplex( sqrt( in ), 0 )
: EvtComplex( 0, sqrt( -in ) );
}
// Dalitz plot
EvtDalitzPlot _dp;
// Pairing indices:
EvtCyclic3::Pair _pairAng; // angular
EvtCyclic3::Pair _pairRes; // resonance
// Spin
EvtSpinType::spintype _spin;
// Numerator type
NumType _typeN;
// Nominal mass and width
double _m0, _g0;
// Vertices
EvtTwoBodyVertex _vb;
EvtTwoBodyVertex _vd;
// Daughter masses
double _massFirst, _massSecond;
// variables for electromagnetic mass mixing
double _m0_mix, _g0_mix, _delta_mix;
EvtComplex _amp_mix;
// variables for coupled Breit-Wigner
double _g1, _g2;
CouplingType _coupling2;
// variables for Blatt-Weisskopf form factors
double _f_b, _f_d;
// K-matrix
int _kmatrix_index;
EvtComplex _fr12prod, _fr13prod, _fr14prod, _fr15prod;
double _s0prod;
// LASS
double _a;
double _r;
double _Blass;
double _phiB;
double _R;
double _phiR;
double _cutoff;
bool _scaleByMOverQ;
//Nonresonant
double _alpha;
// Flatte
std::vector<EvtFlatteParam> _flatteParams;
};
#endif
diff --git a/EvtGenBase/EvtDecayAmp.hh b/EvtGenBase/EvtDecayAmp.hh
index ac5839f..27fe646 100644
--- a/EvtGenBase/EvtDecayAmp.hh
+++ b/EvtGenBase/EvtDecayAmp.hh
@@ -1,77 +1,59 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtDecayAmp.hh
-//
-// Description: Baseclass for models that calculates amplitudes
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTDECAYAMP_HH
#define EVTDECAYAMP_HH
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtDecayBase.hh"
+// Description: Baseclass for models that calculates amplitudes
+
class EvtDecayAmp : public EvtDecayBase {
public:
void makeDecay( EvtParticle* p, bool recursive = true ) override;
inline void setWeight( double weight ) { _weight = weight; }
/**
* sets the amplitudes calculated in the decay objects
*/
void vertex( const EvtComplex& amp ) { _amp2.vertex( amp ); }
/**
* sets the amplitudes calculated in the decay objects
*/
void vertex( int i1, const EvtComplex& amp ) { _amp2.vertex( i1, amp ); }
/**
* sets the amplitudes calculated in the decay objects
*/
void vertex( int i1, int i2, const EvtComplex& amp )
{
_amp2.vertex( i1, i2, amp );
}
/**
* sets the amplitudes calculated in the decay objects
*/
void vertex( int i1, int i2, int i3, const EvtComplex& amp )
{
_amp2.vertex( i1, i2, i3, amp );
}
/**
* sets the amplitudes calculated in the decay objects
*/
void vertex( int* i1, const EvtComplex& amp ) { _amp2.vertex( i1, amp ); }
/**
* Provide access to the amplitude
*/
const EvtAmp& amplitude() const { return _amp2; }
virtual ~EvtDecayAmp() {}
protected:
EvtAmp _amp2;
private:
double _weight;
};
#endif
diff --git a/EvtGenBase/EvtDecayBase.hh b/EvtGenBase/EvtDecayBase.hh
index 036bdf7..e26816e 100644
--- a/EvtGenBase/EvtDecayBase.hh
+++ b/EvtGenBase/EvtDecayBase.hh
@@ -1,142 +1,122 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtDecayBase.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTDECAYBASE_HH
#define EVTDECAYBASE_HH
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include <stdlib.h>
#include <string>
#include <vector>
class EvtParticle;
class EvtSpinType;
class EvtDecayBase {
public:
//These pure virtual methods has to be implemented
//by any derived class
virtual std::string getName() = 0;
virtual void decay( EvtParticle* p ) = 0;
virtual void makeDecay( EvtParticle* p, bool recursive = true ) = 0;
virtual EvtDecayBase* clone() = 0;
//These virtual methods can be implemented by the
//derived class to implement nontrivial functionality.
virtual void init();
virtual void initProbMax();
virtual std::string commandName();
virtual void command( std::string cmd );
virtual std::string getParamName( int i );
virtual std::string getParamDefault( int i );
double getProbMax( double prob );
double resetProbMax( double prob );
EvtDecayBase();
virtual ~EvtDecayBase() = default;
virtual bool matchingDecay( const EvtDecayBase& other ) const;
EvtId getParentId() const { return _parent; }
double getBranchingFraction() const { return _brfr; }
void disableCheckQ() { _chkCharge = 0; };
void checkQ();
int getNDaug() const { return _ndaug; }
EvtId* getDaugs() { return _daug.data(); }
EvtId getDaug( int i ) const { return _daug[i]; }
int getNArg() const { return _narg; }
int getPHOTOS() const { return _photos; }
void setPHOTOS() { _photos = 1; }
void setVerbose() { _verbose = 1; }
void setSummary() { _summary = 1; }
double* getArgs();
std::string* getArgsStr() { return _args.data(); }
double getArg( unsigned int j );
double getStoredArg( int j ) const { return _storedArgs.at( j ); }
double getNStoredArg() const { return _storedArgs.size(); }
std::string getArgStr( int j ) const { return _args[j]; }
std::string getModelName() const { return _modelname; }
int getDSum() const { return _dsum; }
int summary() const { return _summary; }
int verbose() const { return _verbose; }
void saveDecayInfo( EvtId ipar, int ndaug, EvtId* daug, int narg,
std::vector<std::string>& args, std::string name,
double brfr );
void printSummary() const;
void printInfo() const;
//Does not really belong here but I don't have a better place.
static void findMasses( EvtParticle* p, int ndaugs, EvtId daugs[10],
double masses[10] );
static void findMass( EvtParticle* p );
static double findMaxMass( EvtParticle* p );
//Methods to set the maximum probability.
void setProbMax( double prbmx );
void noProbMax();
void checkNArg( int a1, int a2 = -1, int a3 = -1, int a4 = -1 );
void checkNDaug( int d1, int d2 = -1 );
void checkSpinParent( EvtSpinType::spintype sp );
void checkSpinDaughter( int d1, EvtSpinType::spintype sp );
// lange - some models can take more daughters
// than they really have to fool aliases (VSSBMIX for example)
virtual int nRealDaughters() { return _ndaug; }
protected:
bool _daugsDecayedByParentModel;
bool daugsDecayedByParentModel() { return _daugsDecayedByParentModel; }
private:
int _photos;
int _ndaug;
EvtId _parent;
int _narg;
std::vector<double> _storedArgs;
std::vector<EvtId> _daug;
std::vector<double> _argsD;
std::vector<std::string> _args;
std::string _modelname;
double _brfr;
int _dsum;
int _summary;
int _verbose;
int defaultprobmax;
double probmax;
int ntimes_prob;
//Should charge conservation be checked when model is
//created? 1=yes 0 no.
int _chkCharge;
//These are used for gathering statistics.
double sum_prob;
double max_prob;
};
#endif
diff --git a/EvtGenBase/EvtDecayIncoherent.hh b/EvtGenBase/EvtDecayIncoherent.hh
index 58524f1..57de510 100644
--- a/EvtGenBase/EvtDecayIncoherent.hh
+++ b/EvtGenBase/EvtDecayIncoherent.hh
@@ -1,50 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtDecayIncoherent.hh
-//
-// Description: Base class for models that calculate
-// decay kinematics and do not do any accept/reject.
-// Useful e.g. for interface to other generators
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EvtDecayIncoherent_HH
#define EvtDecayIncoherent_HH
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenBase/EvtParticle.hh"
+// Description: Base class for models that calculate
+// decay kinematics and do not do any accept/reject.
+// Useful e.g. for interface to other generators
+
class EvtDecayIncoherent : public EvtDecayBase {
public:
void makeDecay( EvtParticle* p, bool recursive = true ) override;
virtual ~EvtDecayIncoherent() {}
void setDaughterSpinDensity( int daughter )
{
spinDensitySet[daughter] = 1;
return;
}
int isDaughterSpinDensitySet( int daughter )
{
return spinDensitySet[daughter];
}
private:
int spinDensitySet[MAX_DAUG];
};
#endif
diff --git a/EvtGenBase/EvtDecayMode.hh b/EvtGenBase/EvtDecayMode.hh
index 17a0068..607ea76 100644
--- a/EvtGenBase/EvtDecayMode.hh
+++ b/EvtGenBase/EvtDecayMode.hh
@@ -1,52 +1,36 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtDecayMode.hh,v 1.2 2009-03-16 16:44:33 robbep Exp $
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module creator:
-// Alexei Dvoretskii, Caltech, 2001-2002.
-//-----------------------------------------------------------------------
-
#ifndef EVT_DECAY_MODE_HH
#define EVT_DECAY_MODE_HH
#include "EvtGenBase/EvtCyclic3.hh"
#include <iosfwd>
#include <string>
#include <vector>
class EvtDecayMode final {
public:
EvtDecayMode( const char* decay );
EvtDecayMode( const EvtDecayMode& other );
EvtDecayMode( std::string mother, std::vector<std::string> dau );
const char* mother() const;
int nD() const;
const char* dau( int i ) const;
std::ostream& print( std::ostream& ) const;
// Frequent name combinations
std::string m( EvtCyclic3::Pair i ) const;
std::string q( EvtCyclic3::Pair i ) const;
std::string dal( EvtCyclic3::Pair i, EvtCyclic3::Pair j ) const;
std::string mode() const;
private:
std::string _mother;
std::vector<std::string> _dau;
};
std::ostream& operator<<( std::ostream&, const EvtDecayMode& );
#endif
diff --git a/EvtGenBase/EvtDecayParm.hh b/EvtGenBase/EvtDecayParm.hh
index 8bf34e6..68ec5b0 100644
--- a/EvtGenBase/EvtDecayParm.hh
+++ b/EvtGenBase/EvtDecayParm.hh
@@ -1,54 +1,36 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtDecayParm.hh
-//
-// Description: Class to keep the arguments and daughters of a decay
-//
-// Modification history:
-//
-// RYD April 5, 1997 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTDECAYPARM_HH
#define EVTDECAYPARM_HH
#include <string>
+// Description: Class to keep the arguments and daughters of a decay
+
class EvtParticle;
typedef void ( *fcnPtr )( EvtParticle*, int, int*, double* );
class EvtDecayParm {
public:
EvtDecayParm();
~EvtDecayParm();
void init( fcnPtr pfcn, int ndaug, int* daugs, int narg, double* args,
std::string name );
int getNDaug() { return itsndaug; }
int getNArg() { return itsnarg; }
int* getDaugs() { return itsdaugs; }
double* getArgs() { return itsargs; }
fcnPtr getfcnPtr() { return itsfcn; }
std::string getModelName() { return modelname; }
private:
fcnPtr itsfcn;
int itsndaug;
int* itsdaugs;
int itsnarg;
double* itsargs;
std::string modelname;
};
#endif
diff --git a/EvtGenBase/EvtDecayProb.hh b/EvtGenBase/EvtDecayProb.hh
index ab2d4a9..18429ed 100644
--- a/EvtGenBase/EvtDecayProb.hh
+++ b/EvtGenBase/EvtDecayProb.hh
@@ -1,43 +1,23 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtDecayProb.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EvtDecayProb_HH
#define EvtDecayProb_HH
#include "EvtGenBase/EvtDecayBase.hh"
class EvtParticle;
class EvtDecayProb : public EvtDecayBase {
public:
void makeDecay( EvtParticle* p, bool recursive = true ) override;
void setProb( double prob ) { _prob = prob; }
double getProb() { return _prob; }
inline void setWeight( double weight ) { _weight = weight; }
virtual ~EvtDecayProb() {}
private:
double _prob;
double _weight;
};
#endif
diff --git a/EvtGenBase/EvtDecayTable.hh b/EvtGenBase/EvtDecayTable.hh
index b5cfb61..46aa2ba 100644
--- a/EvtGenBase/EvtDecayTable.hh
+++ b/EvtGenBase/EvtDecayTable.hh
@@ -1,83 +1,65 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtDecayTable.hh
-//
-// Description: Class to read in and handle the decays available
-// to EvtGen for each particle, and the model to be
-// used for each one.
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTDECAYTABLE_HH
#define EVTDECAYTABLE_HH
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenBase/EvtParticleDecayList.hh"
#include <vector>
class EvtId;
+// Description: Class to read in and handle the decays available
+// to EvtGen for each particle, and the model to be
+// used for each one.
+
class EvtDecayTable {
public:
static EvtDecayTable* getInstance();
int getNMode( int ipar );
EvtDecayBase* getDecay( int ipar, int imode );
void readDecayFile( const std::string dec_name, bool verbose = true );
void readXMLDecayFile( const std::string dec_name, bool verbose = true );
bool stringToBoolean( std::string valStr );
void checkParticle( std::string particle );
int findChannel( EvtId parent, std::string model, int ndaug, EvtId* daugs,
int narg, std::string* args );
int inChannelList( EvtId parent, int ndaug, EvtId* daugs );
EvtDecayBase* getDecayFunc( EvtParticle* p );
void printSummary();
void checkConj();
std::vector<EvtParticleDecayList> getDecayTable() { return _decaytable; };
EvtDecayBase* findDecayModel( int aliasInt, int modeInt );
EvtDecayBase* findDecayModel( EvtId id, int modeInt );
bool hasPythia( int aliasInt );
bool hasPythia( EvtId id );
int getNModes( int aliasInt );
int getNModes( EvtId id );
std::vector<std::string> splitString( std::string& theString,
std::string& splitter );
protected:
EvtDecayTable();
~EvtDecayTable();
private:
std::vector<EvtParticleDecayList> _decaytable;
EvtDecayTable( const EvtDecayTable& ){};
//EvtDecayTable& operator=(const EvtDecayTable&) {};
};
#endif
diff --git a/EvtGenBase/EvtDiLog.hh b/EvtGenBase/EvtDiLog.hh
index f1444d1..d0a13ea 100644
--- a/EvtGenBase/EvtDiLog.hh
+++ b/EvtGenBase/EvtDiLog.hh
@@ -1,32 +1,31 @@
-// $Id: EvtDiLog.hh,v 1.3 2009-03-16 16:44:33 robbep Exp $
#ifndef EVTGENBASE_EVTDILOG_HH
#define EVTGENBASE_EVTDILOG_HH 1
// Include files
/** @namespace EvtDiLog EvtDiLog.hh EvtGenBase/EvtDiLog.hh
* Dilogarithm function (replaces CERNLIB DDILOG)
*
* @author Patrick Robbe
* @date 2007-01-23
*/
namespace EvtDiLog {
double DiLog( double x );
// constants for computation
static const double Z1 = 1.;
static const double HF = Z1 / 2.;
static const double PI = 3.14159265358979324;
static const double PI3 = PI * PI / 3.;
static const double PI6 = PI * PI / 6.;
static const double PI12 = PI * PI / 12.;
static const double C[20] = {
0.42996693560813697, 0.40975987533077105, -0.01858843665014592,
0.00145751084062268, -0.00014304184442340, 0.00001588415541880,
-0.00000190784959387, 0.00000024195180854, -0.00000003193341274,
0.00000000434545063, -0.00000000060578480, 0.00000000008612098,
-0.00000000001244332, 0.00000000000182256, -0.00000000000027007,
0.00000000000004042, -0.00000000000000610, 0.00000000000000093,
-0.00000000000000014, 0.00000000000000002};
} // namespace EvtDiLog
#endif // EVTGENBASE_EVTDILOG_HH
diff --git a/EvtGenBase/EvtDiracParticle.hh b/EvtGenBase/EvtDiracParticle.hh
index 045d1fa..16de734 100644
--- a/EvtGenBase/EvtDiracParticle.hh
+++ b/EvtGenBase/EvtDiracParticle.hh
@@ -1,49 +1,29 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtDiracParticle.hh
-//
-// Description:EvtDiracParticle particles i.e. spin 1/2 particles.
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTDIRACPARTICLE_HH
#define EVTDIRACPARTICLE_HH
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtParticle.hh"
class EvtId;
class EvtVector4R;
class EvtDiracParticle : public EvtParticle {
public:
EvtDiracParticle() = default;
void init( EvtId part_n, const EvtVector4R& p4 ) override;
void init( EvtId part_n, const EvtVector4R& p4, const EvtDiracSpinor&,
const EvtDiracSpinor&, const EvtDiracSpinor&,
const EvtDiracSpinor& );
EvtDiracSpinor spParent( int i ) const override { return _spinorParent[i]; }
EvtDiracSpinor sp( int i ) const override { return _spinorRest[i]; }
EvtSpinDensity rotateToHelicityBasis() const override;
EvtSpinDensity rotateToHelicityBasis( double alpha, double beta,
double gamma ) const override;
private:
EvtDiracSpinor _spinorRest[2];
EvtDiracSpinor _spinorParent[2];
EvtDiracParticle( const EvtDiracParticle& d );
EvtDiracParticle& operator=( const EvtDiracParticle& d );
};
#endif
diff --git a/EvtGenBase/EvtDiracSpinor.hh b/EvtGenBase/EvtDiracSpinor.hh
index cda71f5..cab01b5 100644
--- a/EvtGenBase/EvtDiracSpinor.hh
+++ b/EvtGenBase/EvtDiracSpinor.hh
@@ -1,145 +1,125 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtDiracSpinor.hh
-//
-// Description:Class to manipulate dirac spinors
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTDIRACSPINOR_HH
#define EVTDIRACSPINOR_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtVector3R.hh"
#include "EvtGenBase/EvtVector4R.hh"
class EvtTensor4C;
class EvtVector4C;
class EvtDiracSpinor;
class EvtDiracSpinor final {
friend EvtDiracSpinor rotateEuler( const EvtDiracSpinor& sp, double alpha,
double beta, double gamma );
friend EvtDiracSpinor boostTo( const EvtDiracSpinor& sp,
const EvtVector4R p4 );
friend EvtDiracSpinor boostTo( const EvtDiracSpinor& sp,
const EvtVector3R boost );
friend EvtVector4C EvtLeptonVACurrent( const EvtDiracSpinor& d,
const EvtDiracSpinor& dp );
friend EvtVector4C EvtLeptonVCurrent( const EvtDiracSpinor& d,
const EvtDiracSpinor& dp );
friend EvtVector4C EvtLeptonACurrent( const EvtDiracSpinor& d,
const EvtDiracSpinor& dp );
friend EvtComplex EvtLeptonSCurrent( const EvtDiracSpinor& d,
const EvtDiracSpinor& dp );
friend EvtComplex EvtLeptonPCurrent( const EvtDiracSpinor& d,
const EvtDiracSpinor& dp );
friend EvtTensor4C EvtLeptonTCurrent( const EvtDiracSpinor& d,
const EvtDiracSpinor& dp );
friend EvtDiracSpinor operator+( const EvtDiracSpinor& u1,
const EvtDiracSpinor& u2 );
friend EvtDiracSpinor operator-( const EvtDiracSpinor& u1,
const EvtDiracSpinor& u2 );
friend EvtDiracSpinor operator*( const EvtComplex& c,
const EvtDiracSpinor& d );
friend EvtComplex operator*( const EvtDiracSpinor& d,
const EvtDiracSpinor& dp );
friend std::ostream& operator<<( std::ostream& s, const EvtDiracSpinor& c );
public:
inline EvtDiracSpinor();
EvtDiracSpinor( const EvtComplex& sp0, const EvtComplex& sp1,
const EvtComplex& sp2, const EvtComplex& sp3 );
inline EvtDiracSpinor( const EvtDiracSpinor& dspinor );
inline EvtDiracSpinor& operator=( const EvtDiracSpinor& dspinor );
inline EvtDiracSpinor& operator+=( const EvtDiracSpinor& u2 );
inline EvtDiracSpinor& operator-=( const EvtDiracSpinor& u2 );
void set( const EvtComplex& sp0, const EvtComplex& sp1,
const EvtComplex& sp2, const EvtComplex& sp3 );
void set_spinor( int i, const EvtComplex& sp );
const EvtComplex& get_spinor( int i ) const;
EvtDiracSpinor conj() const;
void applyRotateEuler( double alpha, double beta, double gamma );
void applyBoostTo( const EvtVector4R& p4 );
void applyBoostTo( const EvtVector3R& boost );
EvtDiracSpinor adjoint() const;
private:
EvtComplex spinor[4];
};
EvtDiracSpinor::EvtDiracSpinor()
{
spinor[0] = EvtComplex();
spinor[1] = EvtComplex();
spinor[2] = EvtComplex();
spinor[3] = EvtComplex();
}
EvtDiracSpinor::EvtDiracSpinor( const EvtDiracSpinor& dspinor )
{
spinor[0] = dspinor.spinor[0];
spinor[1] = dspinor.spinor[1];
spinor[2] = dspinor.spinor[2];
spinor[3] = dspinor.spinor[3];
}
EvtDiracSpinor& EvtDiracSpinor::operator=( const EvtDiracSpinor& dspinor )
{
spinor[0] = dspinor.spinor[0];
spinor[1] = dspinor.spinor[1];
spinor[2] = dspinor.spinor[2];
spinor[3] = dspinor.spinor[3];
return *this;
}
inline EvtDiracSpinor& EvtDiracSpinor::operator+=( const EvtDiracSpinor& u2 )
{
spinor[0] += u2.spinor[0];
spinor[1] += u2.spinor[1];
spinor[2] += u2.spinor[2];
spinor[3] += u2.spinor[3];
return *this;
}
inline EvtDiracSpinor operator+( const EvtDiracSpinor& u1,
const EvtDiracSpinor& u2 )
{
return EvtDiracSpinor( u1 ) += u2;
}
inline EvtDiracSpinor& EvtDiracSpinor::operator-=( const EvtDiracSpinor& u2 )
{
spinor[0] -= u2.spinor[0];
spinor[1] -= u2.spinor[1];
spinor[2] -= u2.spinor[2];
spinor[3] -= u2.spinor[3];
return *this;
}
inline EvtDiracSpinor operator-( const EvtDiracSpinor& u1,
const EvtDiracSpinor& u2 )
{
return EvtDiracSpinor( u1 ) -= u2;
}
#endif
diff --git a/EvtGenBase/EvtEvalHelAmp.hh b/EvtGenBase/EvtEvalHelAmp.hh
index 54022a7..48fb753 100644
--- a/EvtGenBase/EvtEvalHelAmp.hh
+++ b/EvtGenBase/EvtEvalHelAmp.hh
@@ -1,67 +1,45 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2002 Caltech
-//
-// Module: EvtGen/EvtEvalHelAmp.hh
-//
-// Description: Class for evaluation of amplitudes in the
-// helicity formalism.
-//
-//
-// Modification history:
-//
-// RYD October 24, 2002 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTEVALHELAMP_HH
#define EVTEVALHELAMP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtSpinType.hh"
class EvtParticle;
class EvtAmp;
class EvtEvalHelAmp {
public:
EvtEvalHelAmp( EvtId idA, EvtId idB, EvtId idC, EvtComplexPtrPtr HBC );
virtual ~EvtEvalHelAmp();
double probMax();
void evalAmp( EvtParticle* p, EvtAmp& amp );
private:
void fillHelicity( int* lambda2, int n, int J2, EvtId id );
void setUpRotationMatrices( EvtParticle* p, double theta, double phi );
void applyRotationMatrices();
//spins states available for particle A, B, and C.
int _nA, _nB, _nC;
//helicity amplitudes
EvtComplexPtrPtr _HBC;
//2 times spin for each of the particles
int _JA2, _JB2, _JC2;
//2 times the helicity for the states
int *_lambdaA2, *_lambdaB2, *_lambdaC2;
//Rotation matrices
EvtComplexPtrPtr _RA, _RB, _RC;
//temporary array for amplitudes
EvtComplexPtrPtrPtr _amp, _amp1, _amp3;
};
#endif
diff --git a/EvtGenBase/EvtExtGeneratorCommandsTable.hh b/EvtGenBase/EvtExtGeneratorCommandsTable.hh
index cf55d08..7c1c0eb 100644
--- a/EvtGenBase/EvtExtGeneratorCommandsTable.hh
+++ b/EvtGenBase/EvtExtGeneratorCommandsTable.hh
@@ -1,54 +1,35 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2012 University of Warwick, UK
-//
-// Module: EvtExtGeneratorCommandsTable
-//
-// Description: Table of commands to pass to external generators
-//
-// Modification history:
-//
-// Daniel Craik March 2012 Module created
-//
-//------------------------------------------------------------------------
-
#include <map>
#include <string>
#include <vector>
#ifndef EVTEXTGENERATORCOMMANDSTABLE_HH
#define EVTEXTGENERATORCOMMANDSTABLE_HH
typedef std::map<std::string, std::string> Command;
typedef std::vector<Command> GeneratorCommands;
typedef std::map<std::string, GeneratorCommands> GlobalCommandMap;
class EvtExtGeneratorCommandsTable {
public:
static EvtExtGeneratorCommandsTable* getInstance();
void addCommand( std::string extGenerator, Command command )
{
_commandMap[extGenerator].push_back( command );
}
const GeneratorCommands& getCommands( std::string extGenerator )
{
return _commandMap[extGenerator];
}
protected:
EvtExtGeneratorCommandsTable();
~EvtExtGeneratorCommandsTable();
private:
GlobalCommandMap _commandMap;
EvtExtGeneratorCommandsTable( const EvtExtGeneratorCommandsTable& ){};
};
#endif
diff --git a/EvtGenBase/EvtFlatAmp.hh b/EvtGenBase/EvtFlatAmp.hh
index e693bcc..15a56f2 100644
--- a/EvtGenBase/EvtFlatAmp.hh
+++ b/EvtGenBase/EvtFlatAmp.hh
@@ -1,34 +1,25 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtFlatAmp.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Flat amplitude
-
#ifndef EVT_FLAT_AMP_HH
#define EVT_FLAT_AMP_HH
#include "EvtGenBase/EvtAmplitude.hh"
+// Flat amplitude
+
template <class T>
class EvtFlatAmp : public EvtAmplitude<T> {
public:
EvtFlatAmp() {}
EvtFlatAmp( const EvtFlatAmp<T>& other ) : EvtAmplitude<T>( other ) {}
virtual ~EvtFlatAmp() {}
EvtAmplitude<T>* clone() const override
{
return new EvtFlatAmp<T>( *this );
}
EvtComplex amplitude( const T& ) const override
{
return EvtComplex( 1., 0. );
}
};
#endif
diff --git a/EvtGenBase/EvtFlatLineShape.hh b/EvtGenBase/EvtFlatLineShape.hh
index 8c9c9d7..2e0b989 100644
--- a/EvtGenBase/EvtFlatLineShape.hh
+++ b/EvtGenBase/EvtFlatLineShape.hh
@@ -1,47 +1,26 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtAbsLineShape.hh
-//
-// Description: Class to keep the particle properties for
-// one particle
-//
-// Modification history:
-//
-// Lange March 10, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTFLATLINESHAPE_HH
#define EVTFLATLINESHAPE_HH
#include "EvtGenBase/EvtAbsLineShape.hh"
class EvtFlatLineShape : public EvtAbsLineShape {
public:
EvtFlatLineShape() = default;
EvtFlatLineShape( double mass, double width, double maxRange,
EvtSpinType::spintype sp );
//figure the m1 and l on the fly
// double mDaug1, double mDaug2, int l);
EvtFlatLineShape& operator=( const EvtFlatLineShape& x );
EvtFlatLineShape( const EvtFlatLineShape& x );
EvtAbsLineShape* clone() override;
double getMassProb( double mass, double massPar, int nDaug,
double* massDau ) override;
// othDaugId is the other daughter of the parent in the case of a two body decay (only!)
// ie B->rho K rho->pipi, othDaugId = K
double getRandMass( EvtId* parId, int nDaug, EvtId* dauId, EvtId* othDaugId,
double maxMass, double* dauMasses ) override;
};
#endif
diff --git a/EvtGenBase/EvtFlatte.hh b/EvtGenBase/EvtFlatte.hh
index d91f600..f9b7124 100644
--- a/EvtGenBase/EvtFlatte.hh
+++ b/EvtGenBase/EvtFlatte.hh
@@ -1,97 +1,77 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtFlatte.hh
-//
-// Description:resonance-defining class
-//
-// Modification history:
-//
-// ponyisi 18 Feb 2008 created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTFLATTE_HH
#define EVTFLATTE_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <vector>
using std::vector;
// Helper class
class EvtFlatteParam {
public:
EvtFlatteParam( double m1, double m2, double g ) :
_m1( m1 ), _m2( m2 ), _g( g )
{
}
inline double m1() const { return _m1; }
inline double m2() const { return _m2; }
inline double g() const { return _g; }
private:
double _m1, _m2, _g;
};
//class declaration
class EvtFlatte final {
public:
//operator
EvtFlatte& operator=( const EvtFlatte& );
//constructor with all information about the resonance
EvtFlatte( const EvtVector4R& p4_p, const EvtVector4R& p4_d1,
const EvtVector4R& p4_d2, double ampl, double theta, double mass,
vector<EvtFlatteParam>& params
// double m1a = 0.0, double m1b = 0.0, double g1 = 0.0,
// double m2a = 0.0, double m2b = 0.0, double g2 = 0.0
);
//accessors
//return 4-momenta of the particles involved
inline const EvtVector4R& p4_p() { return _p4_p; }
inline const EvtVector4R& p4_d1() { return _p4_d1; }
inline const EvtVector4R& p4_d2() { return _p4_d2; }
//return amplitude
inline double amplitude() { return _ampl; }
//return theta
inline double theta() { return _theta; }
//return bwm
inline double mass() { return _mass; }
//functions
//calculate amplitude for this resonance
EvtComplex resAmpl();
private:
inline EvtComplex sqrtCplx( double in )
{
return ( in > 0 ) ? EvtComplex( sqrt( in ), 0 )
: EvtComplex( 0, sqrt( -in ) );
}
EvtVector4R _p4_p, _p4_d1, _p4_d2;
double _ampl, _theta, _mass;
vector<EvtFlatteParam> _params;
// double _m1a, _m1b, _g1;
// double _m2a, _m2b, _g2;
};
#endif
diff --git a/EvtGenBase/EvtGammaMatrix.hh b/EvtGenBase/EvtGammaMatrix.hh
index 09c1989..a3797cc 100644
--- a/EvtGenBase/EvtGammaMatrix.hh
+++ b/EvtGenBase/EvtGammaMatrix.hh
@@ -1,111 +1,93 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtGammaMatrix.hh
-//
-// Description: Class to manipulate gamma matrices. The reperesentation
-// used is the "standard" Dirac representation.
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTGAMMAMATRIX_HH
#define EVTGAMMAMATRIX_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracSpinor.hh" // needed for adjoint
//#include <iostream.h>
#include <iosfwd>
class EvtGammaMatrix;
class EvtVector4C;
namespace EvtGenFunctions {
// slash or Feynman slash a 4-vector
EvtGammaMatrix slash( const EvtVector4C& p );
EvtGammaMatrix slash( const EvtVector4R& p );
} // namespace EvtGenFunctions
+// Description: Class to manipulate gamma matrices. The reperesentation
+// used is the "standard" Dirac representation.
+
class EvtGammaMatrix final {
friend EvtGammaMatrix operator*( const EvtComplex& c,
const EvtGammaMatrix& g );
friend EvtGammaMatrix operator*( const EvtGammaMatrix& g,
const EvtComplex& c );
friend EvtGammaMatrix operator/( const EvtGammaMatrix& g, const double d );
friend EvtDiracSpinor operator*( const EvtGammaMatrix& g,
const EvtDiracSpinor& d );
friend EvtGammaMatrix operator+( const EvtGammaMatrix& g1,
const EvtGammaMatrix& g2 );
friend EvtGammaMatrix operator-( const EvtGammaMatrix& g1,
const EvtGammaMatrix& g2 );
friend EvtGammaMatrix operator*( const EvtGammaMatrix& g1,
const EvtGammaMatrix& g2 );
friend std::ostream& operator<<( std::ostream& s, const EvtGammaMatrix& v );
friend EvtDiracSpinor EvtDiracSpinor::adjoint() const;
public:
EvtGammaMatrix();
EvtGammaMatrix( const EvtGammaMatrix& gm );
EvtGammaMatrix& operator=( const EvtGammaMatrix& gm );
void init();
static const EvtGammaMatrix& g( int );
static const EvtGammaMatrix& g0();
static const EvtGammaMatrix& g1();
static const EvtGammaMatrix& g2();
static const EvtGammaMatrix& g3();
static const EvtGammaMatrix& g5();
static const EvtGammaMatrix& id();
static const EvtGammaMatrix& va0();
static const EvtGammaMatrix& va1();
static const EvtGammaMatrix& va2();
static const EvtGammaMatrix& va3();
static const EvtGammaMatrix& v0();
static const EvtGammaMatrix& v1();
static const EvtGammaMatrix& v2();
static const EvtGammaMatrix& v3();
// Dirac sigma matrix with upper or lower indices (only one element)
static const EvtGammaMatrix& sigmaUpper( unsigned int mu, unsigned int nu );
static const EvtGammaMatrix& sigmaLower( unsigned int mu, unsigned int nu );
EvtGammaMatrix& operator+=( const EvtGammaMatrix& g );
EvtGammaMatrix& operator-=( const EvtGammaMatrix& g );
EvtGammaMatrix& operator*=( const EvtGammaMatrix& g );
private:
EvtComplex _gamma[4][4];
};
inline EvtGammaMatrix operator+( const EvtGammaMatrix& g1,
const EvtGammaMatrix& g2 )
{
return EvtGammaMatrix( g1 ) += g2;
}
inline EvtGammaMatrix operator-( const EvtGammaMatrix& g1,
const EvtGammaMatrix& g2 )
{
return EvtGammaMatrix( g1 ) -= g2;
}
inline EvtGammaMatrix operator*( const EvtGammaMatrix& g1,
const EvtGammaMatrix& g2 )
{
return EvtGammaMatrix( g1 ) *= g2;
}
inline EvtGammaMatrix operator/( const EvtGammaMatrix& g, const double d )
{
return g * EvtComplex( 1 / d, 0 );
}
#endif
diff --git a/EvtGenBase/EvtGenKine.hh b/EvtGenBase/EvtGenKine.hh
index 03089a7..4e99b01 100644
--- a/EvtGenBase/EvtGenKine.hh
+++ b/EvtGenBase/EvtGenKine.hh
@@ -1,34 +1,15 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtGenKine.hh
-//
-// Description:Tools for generating phase space.
-//
-// Modification history:
-//
-// RYD March 24, 1998 Module created
-//
-//------------------------------------------------------------------------
#ifndef EVTGENKINE_HH
#define EVTGENKINE_HH
class EvtVector4R;
class EvtGenKine {
public:
static double PhaseSpace( int ndaug, double mass[30], EvtVector4R p4[30],
double mp );
static double PhaseSpacePole( double M, double m1, double m2, double m3,
double a, EvtVector4R p4[10] );
};
#endif
diff --git a/EvtGenBase/EvtHepMCEvent.hh b/EvtGenBase/EvtHepMCEvent.hh
index 967bc4e..ea12cd2 100644
--- a/EvtGenBase/EvtHepMCEvent.hh
+++ b/EvtGenBase/EvtHepMCEvent.hh
@@ -1,124 +1,104 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2011 University of Warwick, UK
-//
-// Module: EvtHepMCEvent
-//
-// Description: Create an HepMC::GenEvent for the complete EvtParticle
-// decay tree.
-//
-// Modification history:
-//
-// John Back June 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTHEPMCEVENT_HH
#define EVTHEPMCEVENT_HH
#include "EvtGenBase/EvtVector4R.hh"
#ifdef EVTGEN_HEPMC3
#include "HepMC3/GenEvent.h"
#include "HepMC3/GenParticle.h"
#include "HepMC3/GenVertex.h"
#include "HepMC3/Print.h"
#include "HepMC3/Units.h"
typedef HepMC3::GenParticlePtr GenParticlePtr;
typedef HepMC3::GenVertexPtr GenVertexPtr;
typedef HepMC3::GenEvent GenEvent;
typedef HepMC3::FourVector FourVector;
typedef HepMC3::Units Units;
inline GenParticlePtr newGenParticlePtr(
const FourVector& mom = FourVector::ZERO_VECTOR(), int pid = 0,
int status = 0 )
{
return std::make_shared<HepMC3::GenParticle>( mom, pid, status );
}
inline GenVertexPtr newGenVertexPtr(
const FourVector& pos = FourVector::ZERO_VECTOR() )
{
return std::make_shared<HepMC3::GenVertex>( pos );
}
#else
#include "HepMC/GenEvent.h"
#include "HepMC/GenParticle.h"
#include "HepMC/GenVertex.h"
#include "HepMC/SimpleVector.h"
#include "HepMC/Units.h"
typedef HepMC::GenParticle* GenParticlePtr;
typedef HepMC::GenVertex* GenVertexPtr;
typedef HepMC::GenEvent GenEvent;
typedef HepMC::FourVector FourVector;
#define Units HepMC::Units
inline GenParticlePtr newGenParticlePtr(
const FourVector& mom = FourVector( 0.0, 0.0, 0.0, 0.0 ), int pid = 0,
int status = 0 )
{
return new HepMC::GenParticle( mom, pid, status );
}
inline GenVertexPtr newGenVertexPtr(
const FourVector& pos = FourVector( 0.0, 0.0, 0.0, 0.0 ) )
{
return new HepMC::GenVertex( pos );
}
#endif
class EvtParticle;
class EvtHepMCEvent {
public:
EvtHepMCEvent();
virtual ~EvtHepMCEvent();
// Select what frame a given GenParticle is in:
// its own restframe, the lab frame (first mother), or its mother's frame
enum HepMCFrame
{
RESTFRAME = 1,
LAB = 2,
MOTHER = 3
};
// Select the GenParticle status
enum HepMCStatus
{
STABLE = 1,
DECAYED = 2,
HISTORY = 3
};
void constructEvent( EvtParticle* baseParticle );
void constructEvent( EvtParticle* baseParticle, EvtVector4R& translation );
GenEvent* getEvent() { return _theEvent; }
// Methods used to create GenParticles and FourVectors of vertices.
// Make these public so that other classes may call them if they use EvtHepMCEvent.
// Create a GenParticle using info from the EvtParticle, specifying what frame
// the 4-momentum is from.
GenParticlePtr createGenParticle( EvtParticle* theParticle, int frameType );
// Find out the decay vertex position for the given EvtParticle.
FourVector getVertexCoord( EvtParticle* theParticle );
protected:
private:
// Delete the event structure (called by destructor)
void deleteEvent();
// Add a vertex to the event. This is called by the constructEvent function
// and is recursive, i.e. it loops through all possible daughter particles and
// their descendents.
void addVertex( EvtParticle* inEvtParticle, GenParticlePtr inGenParticle );
GenEvent* _theEvent;
EvtVector4R _translation;
};
#endif
diff --git a/EvtGenBase/EvtHighSpinParticle.hh b/EvtGenBase/EvtHighSpinParticle.hh
index 242afca..e524901 100644
--- a/EvtGenBase/EvtHighSpinParticle.hh
+++ b/EvtGenBase/EvtHighSpinParticle.hh
@@ -1,39 +1,19 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtGen/EvtHighSpinParticle.hh
-//
-// Description:Class to describe particle with spin>2.
-//
-// Modification history:
-//
-// RYD August 8, 2000 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTHIGHSPINPARTICLE_HH
#define EVTHIGHSPINPARTICLE_HH
#include "EvtGenBase/EvtParticle.hh"
class EvtId;
class EvtHighSpinParticle : public EvtParticle {
public:
EvtHighSpinParticle() = default;
void init( EvtId id, const EvtVector4R& p ) override;
EvtSpinDensity rotateToHelicityBasis() const override;
EvtSpinDensity rotateToHelicityBasis( double alpha, double beta,
double gamma ) const override;
};
#endif
diff --git a/EvtGenBase/EvtId.hh b/EvtGenBase/EvtId.hh
index ea249b6..b69edef 100644
--- a/EvtGenBase/EvtId.hh
+++ b/EvtGenBase/EvtId.hh
@@ -1,60 +1,40 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtId.hh
-//
-// Description:Class for particle Id used in EvtGen.
-//
-// Modification history:
-//
-// DJL/RYD May 26, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTID_HH
#define EVTID_HH
#include <iostream>
#include <string>
class EvtId {
public:
//need a default constructor
EvtId() : _id( -1 ), _alias( -1 ) {}
EvtId( int id, int alias ) : _id( id ), _alias( alias ) {}
friend std::ostream& operator<<( std::ostream& s, const EvtId& v );
int operator==( const EvtId& id ) const { return _id == id._id; }
int operator!=( const EvtId& id ) const { return _id != id._id; }
int operator<( const EvtId& id ) const { return _id < id._id; }
int isConjugate( const EvtId& id ) const;
int getId() const { return _id; }
int getAlias() const { return _alias; }
int isAlias() const { return _id != _alias; }
std::string getName() const;
private:
//particle number 0..n. The order of particles are determined
//by the order in pdt.table
int _id;
//if the particle is an alias to another particle alias!=id
//The only place where the alias should be used is for looking
//up decays in the decay table.
int _alias;
};
#endif
diff --git a/EvtGenBase/EvtIdSet.hh b/EvtGenBase/EvtIdSet.hh
index ff909c5..d3588a4 100644
--- a/EvtGenBase/EvtIdSet.hh
+++ b/EvtGenBase/EvtIdSet.hh
@@ -1,146 +1,126 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtId.hh
-//
-// Description:Class for particle Id used in EvtGen.
-//
-// Modification history:
-//
-// DJL/RYD Jan 5,2000 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTIDSET_HH
#define EVTIDSET_HH
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <string>
class EvtId;
class EvtIdSet {
public:
//need a default constructor
EvtIdSet( const EvtId name1 );
EvtIdSet( const std::string name1 );
EvtIdSet( const EvtId name1, const EvtId name2 );
EvtIdSet( const std::string name1, const std::string name2 );
EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3 );
EvtIdSet( const std::string name1, const std::string name2,
const std::string name3 );
EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4 );
EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4 );
EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5 );
EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5 );
EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5, const EvtId name6 );
EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5, const std::string name6 );
EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5, const EvtId name6,
const EvtId name7 );
EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5, const std::string name6,
const std::string name7 );
EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5, const EvtId name6,
const EvtId name7, const EvtId name8 );
EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5, const std::string name6,
const std::string name7, const std::string name8 );
EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5, const EvtId name6,
const EvtId name7, const EvtId name8, const EvtId name9 );
EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5, const std::string name6,
const std::string name7, const std::string name8,
const std::string name9 );
EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5, const EvtId name6,
const EvtId name7, const EvtId name8, const EvtId name9,
const EvtId name10 );
EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5, const std::string name6,
const std::string name7, const std::string name8,
const std::string name9, const std::string name10 );
EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5, const EvtId name6,
const EvtId name7, const EvtId name8, const EvtId name9,
const EvtId name10, const EvtId name11 );
EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5, const std::string name6,
const std::string name7, const std::string name8,
const std::string name9, const std::string name10,
const std::string name11 );
EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5, const EvtId name6,
const EvtId name7, const EvtId name8, const EvtId name9,
const EvtId name10, const EvtId name11, const EvtId name12 );
EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5, const std::string name6,
const std::string name7, const std::string name8,
const std::string name9, const std::string name10,
const std::string name11, const std::string name12 );
~EvtIdSet() { delete[] _list; }
EvtIdSet( const EvtIdSet& set1 );
EvtIdSet( const EvtIdSet& set1, const EvtIdSet& set2 );
int contains( const EvtId id );
int contains( const std::string id );
void append( const EvtIdSet set1 );
int sizeOfSet() const;
EvtId getElem( const int i ) const;
private:
int _numInList;
EvtId* _list;
};
#endif
diff --git a/EvtGenBase/EvtIncoherentMixing.hh b/EvtGenBase/EvtIncoherentMixing.hh
index 36a94df..4a0447e 100644
--- a/EvtGenBase/EvtIncoherentMixing.hh
+++ b/EvtGenBase/EvtIncoherentMixing.hh
@@ -1,75 +1,74 @@
-// $Id: EvtIncoherentMixing.hh,v 1.6 2009-11-25 13:41:59 mwhitehe Exp $
#ifndef EVTINCOHERENTMIXING_HH
#define EVTINCOHERENTMIXING_HH 1
// Include files
#include "EvtGenBase/EvtParticle.hh"
/** @class EvtIncoherentMixing EvtIncoherentMixing.hh EvtGenBase/EvtIncoherentMixing.hh
* Class to contain the parameters of the incoherent B0 and B0S mixing
*
* @author Patrick Robbe
* @date 2003-10-09
*/
class EvtIncoherentMixing {
public:
/// Standard constructor
EvtIncoherentMixing();
~EvtIncoherentMixing(); ///< Destructor
// activate or desactivate the Bs mixing
static void setB0Mixing();
static void unsetB0Mixing();
// activate or desactivate the B0 mixing
static void setBsMixing();
static void unsetBsMixing();
// is mixing activated ?
static bool doB0Mixing();
static bool doBsMixing();
// set values for the mixing
static void setdGammad( double value );
static void setdeltamd( double value );
static void setdGammas( double value );
static void setdeltams( double value );
// get parameters for mixing
static double getdGammad();
static double getdeltamd();
static double getdGammas();
static double getdeltams();
// Functions to obtain time and type of the mixing ( 1 mix, 0 unmix )
static void incoherentB0Mix( const EvtId id, double& t, int& mix );
static void incoherentBsMix( const EvtId id, double& t, int& mix );
// Functions to check if a B has mixed (comes from a B)
static bool isB0Mixed( EvtParticle* );
static bool isBsMixed( EvtParticle* );
// Functions for CP models
// returns for particle p the decay time t , the flavour of the tag
// side (B0, anti-B0, B_s0, anti-B_s0). The flavour of p can flip
// with probability probB
static void OtherB( EvtParticle* p, double& t, EvtId& otherb, double probB );
static void OtherB( EvtParticle* p, double& t, EvtId& otherb );
static bool flipIsEnabled();
static void enableFlip();
static void disableFlip();
protected:
private:
static bool _doB0Mixing;
static bool _doBsMixing;
static double _dGammad;
static double _deltamd;
static double _dGammas;
static double _deltams;
static bool _enableFlip;
};
#endif // EVTGENBASE_EVTINCOHERENTMIXING_HH
diff --git a/EvtGenBase/EvtIntegPdf1D.hh b/EvtGenBase/EvtIntegPdf1D.hh
index d070652..1a82112 100644
--- a/EvtGenBase/EvtIntegPdf1D.hh
+++ b/EvtGenBase/EvtIntegPdf1D.hh
@@ -1,37 +1,28 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtIntegPdf1D.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Analytically integrable one dimensional PDF.
-
#ifndef EVT_INTEG_PDF_1D_HH
#define EVT_INTEG_PDF_1D_HH
#include "EvtGenBase/EvtPdf.hh"
#include "EvtGenBase/EvtPoint1D.hh"
+// Analytically integrable one dimensional PDF.
+
class EvtIntegPdf1D : public EvtPdf<EvtPoint1D> {
public:
EvtIntegPdf1D( double min, double max );
EvtIntegPdf1D( const EvtIntegPdf1D& );
// Pdf integral function and its inverse to be defined in subclasses
virtual double pdfIntegral( double x ) const = 0;
virtual double pdfIntegralInverse( double x ) const = 0;
using EvtPdf<EvtPoint1D>::compute_integral;
EvtValError compute_integral() const override;
EvtPoint1D randomPoint() override;
protected:
double _min;
double _max;
};
#endif
diff --git a/EvtGenBase/EvtIntervalFlatPdf.hh b/EvtGenBase/EvtIntervalFlatPdf.hh
index fd341a9..cd1e6fe 100644
--- a/EvtGenBase/EvtIntervalFlatPdf.hh
+++ b/EvtGenBase/EvtIntervalFlatPdf.hh
@@ -1,39 +1,30 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtIntervalFlatPdf.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-/*
- * Uniform PDF defined on a 1D interval.
- */
-
#ifndef EVT_INTERVAL_FLAT_PDF_HH
#define EVT_INTERVAL_FLAT_PDF_HH
#include "EvtGenBase/EvtPdf.hh"
#include "EvtGenBase/EvtPoint1D.hh"
#include <assert.h>
+/*
+ * Uniform PDF defined on a 1D interval.
+ */
+
class EvtIntervalFlatPdf : public EvtPdf<EvtPoint1D> {
public:
EvtIntervalFlatPdf( double min, double max );
EvtIntervalFlatPdf( const EvtIntervalFlatPdf& other );
EvtPdf<EvtPoint1D>* clone() const override;
using EvtPdf<EvtPoint1D>::compute_integral;
EvtValError compute_integral() const override;
EvtPoint1D randomPoint() override;
protected:
double pdf( const EvtPoint1D& ) const override;
double _min;
double _max;
};
#endif
diff --git a/EvtGenBase/EvtKine.hh b/EvtGenBase/EvtKine.hh
index b83e0ad..3c995f7 100644
--- a/EvtGenBase/EvtKine.hh
+++ b/EvtGenBase/EvtKine.hh
@@ -1,65 +1,45 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtKine.hh
-//
-// Description:routines to calc. decay angles.
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTKINE_HH
#define EVTKINE_HH
class EvtVector4R;
class EvtComplex;
double EvtDecayAngle( const EvtVector4R&, const EvtVector4R&, const EvtVector4R& );
double EvtDecayAngleChi( const EvtVector4R&, const EvtVector4R&,
const EvtVector4R&, const EvtVector4R&,
const EvtVector4R& );
//
// This routine calculates the cosine of the angle between
// the normal of the decay plane and the flight direction of particle q
// in the parent frame.
//
double EvtDecayPlaneNormalAngle( const EvtVector4R& p, const EvtVector4R& q,
const EvtVector4R& d1, const EvtVector4R& d2 );
// Added by AJB
//
// Calculate phi (between 0 and 2 pi) of the daughter given the 4-momentum of
// the grandparent, parent, resonance and the daughter. g, p, q and d need to
// be in the same rest frame. Note that for the first level of the tree there
// is no grandparent and thus <0,0,0,1> should be passed in for g. When there
// is no parent the angles need to be calculated by simply by calculating polar
// and azymuthal angles in the rest frame of the resonance (since this will
// generally be the root particle and is generally at rest the polar and
// azymuthal angels can simply be calculated.
//
double EvtDecayAnglePhi( const EvtVector4R& g, const EvtVector4R& p,
const EvtVector4R& q, const EvtVector4R& d );
// Wigner big-D function in Jackson convention
//
// XXX NOTE XXX
// - EvtDecayAngle returns the cos \theta and EvtdFunction requires theta
// - In EvtdFunction j m1 and m2 are really 2 * j, 2 * m1, 2*m2 to deal with
// spin 1/2 particles
//
EvtComplex wignerD( int j, int m1, int m2, double phi, double theta,
double gamma );
#endif
diff --git a/EvtGenBase/EvtLASSAmp.hh b/EvtGenBase/EvtLASSAmp.hh
index d796282..4aa3c62 100644
--- a/EvtGenBase/EvtLASSAmp.hh
+++ b/EvtGenBase/EvtLASSAmp.hh
@@ -1,48 +1,39 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * Authors: Denis Dujmic, ddujmic@slac.stanford.edu
- * Andrew Wagner, apwagner@slac.stanford.edu
- *
- * Copyright (C) 2005 SLAC
- *******************************************************************************/
-
#ifndef EVT_LASS_AMP_HH
#define EVT_LASS_AMP_HH
#include "EvtGenBase/EvtAmplitude.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDalitzPlot.hh"
#include "EvtGenBase/EvtDalitzPoint.hh"
#include <string>
class EvtComplex;
class EvtLASSAmp : public EvtAmplitude<EvtDalitzPoint> {
public:
EvtLASSAmp( EvtDalitzPlot* dp, EvtCyclic3::Pair pair, double m0, double g0,
double a, double r, double cutoff, std::string subtype = "LASS" );
EvtComplex amplitude( const EvtDalitzPoint& p ) const override;
EvtAmplitude<EvtDalitzPoint>* clone() const override
{
return new EvtLASSAmp( *this );
}
private:
EvtDalitzPlot* _dalitzSpace;
EvtCyclic3::Pair _pair;
double _m0;
double _g0;
double _q0;
double _r;
double _a;
double _cutoff;
std::string _subtype;
};
#endif
diff --git a/EvtGenBase/EvtMTRandomEngine.hh b/EvtGenBase/EvtMTRandomEngine.hh
index 4e9092d..56f20ba 100644
--- a/EvtGenBase/EvtMTRandomEngine.hh
+++ b/EvtGenBase/EvtMTRandomEngine.hh
@@ -1,41 +1,21 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2015 University of Warwick, UK
-//
-// Module: EvtGenBase/EvtMTRandomEngine.hh
-//
-// Generate random numbers using the Mersenne-Twister MT19937.
-// Member function random returns a random number in the range ]0..1[.
-//
-// Modification history:
-//
-// John Back Aug 2015 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTMTRANDOMENGINE_HH
#define EVTMTRANDOMENGINE_HH
#include "EvtGenBase/EvtRandomEngine.hh"
#include <random>
class EvtMTRandomEngine : public EvtRandomEngine {
public:
EvtMTRandomEngine( unsigned int seed = 1430957218 );
virtual double random();
private:
std::mt19937 engine_;
typedef std::uniform_real_distribution<double> URDist;
URDist distribution_;
};
#endif
diff --git a/EvtGenBase/EvtMacros.hh b/EvtGenBase/EvtMacros.hh
index f0a5a3b..8137752 100644
--- a/EvtGenBase/EvtMacros.hh
+++ b/EvtGenBase/EvtMacros.hh
@@ -1,16 +1,7 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtMacros.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
// Useful macros.
// In copy constructors, deep copy pointers via CLONE
// and date members via COPY. 'other' is the name of the copied object
#define COPY_PTR( X ) X( other.X ? other.X->clone() : 0 )
#define COPY_MEM( X ) X( other.X )
diff --git a/EvtGenBase/EvtManyDeltaFuncLineShape.hh b/EvtGenBase/EvtManyDeltaFuncLineShape.hh
index ead0e23..b7d21c5 100644
--- a/EvtGenBase/EvtManyDeltaFuncLineShape.hh
+++ b/EvtGenBase/EvtManyDeltaFuncLineShape.hh
@@ -1,47 +1,26 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtAbsLineShape.hh
-//
-// Description: Class to keep the particle properties for
-// one particle
-//
-// Modification history:
-//
-// Lange March 10, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTMANYDELTAFUNCLINESHAPE_HH
#define EVTMANYDELTAFUNCLINESHAPE_HH
#include "EvtGenBase/EvtAbsLineShape.hh"
class EvtManyDeltaFuncLineShape : public EvtAbsLineShape {
public:
EvtManyDeltaFuncLineShape();
EvtManyDeltaFuncLineShape( double mass, double width, double maxRange,
EvtSpinType::spintype sp );
//figure the m1 and l on the fly
// double mDaug1, double mDaug2, int l);
EvtManyDeltaFuncLineShape& operator=( const EvtManyDeltaFuncLineShape& x );
EvtManyDeltaFuncLineShape( const EvtManyDeltaFuncLineShape& x );
EvtAbsLineShape* clone() override;
double getMassProb( double mass, double massPar, int nDaug,
double* massDau ) override;
// othDaugId is the other daughter of the parent in the case of a two body decay (only!)
// ie B->rho K rho->pipi, othDaugId = K
double getRandMass( EvtId* parId, int nDaug, EvtId* dauId, EvtId* othDaugId,
double maxMass, double* dauMasses ) override;
};
#endif
diff --git a/EvtGenBase/EvtMassAmp.hh b/EvtGenBase/EvtMassAmp.hh
index 4567af4..c577e4f 100644
--- a/EvtGenBase/EvtMassAmp.hh
+++ b/EvtGenBase/EvtMassAmp.hh
@@ -1,63 +1,47 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtMassAmp.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module creator:
-// Alexei Dvoretskii, Caltech, 2001-2002.
-//-----------------------------------------------------------------------
-
-// Relativistic lineshape for a two-body decay of a resonance to two
-// pseudoscalars. The mass dependence of the width and the vertex factors
-// are included in the calculation.
-
#ifndef EVT_MASSAMP_HH
#define EVT_MASSAMP_HH
#include "EvtGenBase/EvtAmplitude.hh"
#include "EvtGenBase/EvtPoint1D.hh"
#include "EvtGenBase/EvtPropBreitWignerRel.hh"
#include "EvtGenBase/EvtTwoBodyVertex.hh"
+// Relativistic lineshape for a two-body decay of a resonance to two
+// pseudoscalars. The mass dependence of the width and the vertex factors
+// are included in the calculation.
+
class EvtMassAmp : public EvtAmplitude<EvtPoint1D> {
public:
EvtMassAmp( const EvtPropBreitWignerRel& prop, const EvtTwoBodyVertex& vd );
EvtMassAmp( const EvtMassAmp& other );
EvtMassAmp& operator=( const EvtMassAmp& other );
EvtComplex amplitude( const EvtPoint1D& p ) const override;
EvtAmplitude<EvtPoint1D>* clone() const override
{
return new EvtMassAmp( *this );
}
void setBirthVtx( const EvtTwoBodyVertex& vb )
{
_vb = std::make_unique<EvtTwoBodyVertex>( vb );
}
void addBirthFact() { _useBirthFact = true; }
void addDeathFact() { _useDeathFact = true; }
void addBirthFactFF() { _useBirthFactFF = true; }
void addDeathFactFF() { _useDeathFactFF = true; }
private:
EvtPropBreitWignerRel _prop;
EvtTwoBodyVertex _vd;
std::unique_ptr<EvtTwoBodyVertex> _vb;
bool _useBirthFact;
bool _useDeathFact;
bool _useBirthFactFF;
bool _useDeathFactFF;
};
#endif
diff --git a/EvtGenBase/EvtMatrix.hh b/EvtGenBase/EvtMatrix.hh
index 1855785..74e7d9f 100644
--- a/EvtGenBase/EvtMatrix.hh
+++ b/EvtGenBase/EvtMatrix.hh
@@ -1,188 +1,175 @@
-/*****************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtMatrix.hh,v 1.1 2009-03-16 16:50:49 robbep Exp $
- *
- * Description:
- * Class to make simple computations with matrices: assignment, product,
- * determinant, inverse... Still many functions could be implemented.
- *
- * Modification history:
- * Jordi Garra Ticó 2008/07/03 File created
- *****************************************************************************/
-
#ifndef __EVT_MATRIX_HH__
#define __EVT_MATRIX_HH__
#include <sstream>
#include <vector>
template <class T>
class EvtMatrix {
private:
T** _mat;
int _range;
public:
EvtMatrix() : _range( 0 ){};
~EvtMatrix();
inline void setRange( int range );
T& operator()( int row, int col ) { return _mat[row][col]; }
T* operator[]( int row ) { return _mat[row]; }
T det();
EvtMatrix* min( int row, int col );
EvtMatrix* inverse();
std::string dump();
template <class M>
friend EvtMatrix<M>* operator*( const EvtMatrix<M>& left,
const EvtMatrix<M>& right );
};
template <class T>
inline void EvtMatrix<T>::setRange( int range )
{
// If the range is changed, delete any previous matrix stored
// and allocate elements with the newly specified range.
if ( _range != range ) {
if ( _range ) {
for ( int row = 0; row < _range; row++ )
delete[] _mat[row];
delete[] _mat;
}
_mat = new T*[range];
for ( int row = 0; row < range; row++ )
_mat[row] = new T[range];
// Set the new range.
_range = range;
}
// Since user is willing to change the range, reset the matrix elements.
for ( int row = 0; row < _range; row++ )
for ( int col = 0; col < _range; col++ )
_mat[row][col] = 0.;
}
template <class T>
EvtMatrix<T>::~EvtMatrix()
{
for ( int row = 0; row < _range; row++ )
delete[] _mat[row];
delete[] _mat;
}
template <class T>
std::string EvtMatrix<T>::dump()
{
std::ostringstream str;
for ( int row = 0; row < _range; row++ ) {
str << "|";
for ( int col = 0; col < _range; col++ )
str << "\t" << _mat[row][col];
str << "\t|" << std::endl;
}
return str.str();
}
template <class T>
T EvtMatrix<T>::det()
{
if ( _range == 1 )
return _mat[0][0];
// There's no need to define the range 2 determinant manually, but it may
// speed up the calculation.
if ( _range == 2 )
return _mat[0][0] * _mat[1][1] - _mat[0][1] * _mat[1][0];
T sum = 0.;
for ( int col = 0; col < _range; col++ ) {
EvtMatrix<T>* minor = min( 0, col );
sum += std::pow( -1., col ) * _mat[0][col] * minor->det();
delete minor;
}
return sum;
}
// Returns the minor at (i, j).
template <class T>
EvtMatrix<T>* EvtMatrix<T>::min( int row, int col )
{
EvtMatrix<T>* minor = new EvtMatrix<T>();
minor->setRange( _range - 1 );
int minIndex = 0;
for ( int r = 0; r < _range; r++ )
for ( int c = 0; c < _range; c++ )
if ( ( r != row ) && ( c != col ) ) {
( *minor )( minIndex / ( _range - 1 ),
minIndex % ( _range - 1 ) ) = _mat[r][c];
minIndex++;
}
return minor;
}
template <class T>
EvtMatrix<T>* EvtMatrix<T>::inverse()
{
EvtMatrix<T>* inv = new EvtMatrix<T>();
inv->setRange( _range );
if ( det() == 0 ) {
std::cerr << "This matrix has a null determinant and cannot be inverted. Returning zero matrix."
<< std::endl;
for ( int row = 0; row < _range; row++ )
for ( int col = 0; col < _range; col++ )
( *inv )( row, col ) = 0.;
return inv;
}
T determinant = det();
for ( int row = 0; row < _range; row++ )
for ( int col = 0; col < _range; col++ ) {
EvtMatrix<T>* minor = min( row, col );
inv->_mat[col][row] = std::pow( -1., row + col ) * minor->det() /
determinant;
delete minor;
}
return inv;
}
template <class T>
EvtMatrix<T>* operator*( const EvtMatrix<T>& left, const EvtMatrix<T>& right )
{
// Chech that the matrices have the correct range.
if ( left._range != right._range ) {
std::cerr << "These matrices cannot be multiplied." << std::endl;
return new EvtMatrix<T>();
}
EvtMatrix<T>* mat = new EvtMatrix<T>();
mat->setRange( left._range );
// Initialize the elements of the matrix.
for ( int row = 0; row < left._range; row++ )
for ( int col = 0; col < right._range; col++ )
( *mat )[row][col] = 0;
for ( int row = 0; row < left._range; row++ )
for ( int col = 0; col < right._range; col++ )
for ( int line = 0; line < right._range; line++ )
( *mat )[row][col] += left._mat[row][line] *
right._mat[line][col];
return mat;
}
#endif
diff --git a/EvtGenBase/EvtModel.hh b/EvtGenBase/EvtModel.hh
index 2c0a484..0b55b52 100644
--- a/EvtGenBase/EvtModel.hh
+++ b/EvtGenBase/EvtModel.hh
@@ -1,63 +1,43 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtModel.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 8, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTMODEL_HH
#define EVTMODEL_HH
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenBase/EvtStringHash.hh"
#include <map>
//#include <fstream.h>
//Class to read in and handle the decays available
//to EvtGen for each particle, and the model to be
//used for each one.
class EvtModel {
public:
static EvtModel& instance();
void registerModel( EvtDecayBase* prototype );
int isModel( std::string name );
EvtDecayBase* getFcn( std::string model_name );
int isCommand( std::string cmd );
void storeCommand( std::string cmd, std::string cnfgstr );
private:
EvtModel();
static EvtModel* _instance;
std::map<std::string, EvtDecayBase*> _modelNameHash;
std::map<std::string, EvtDecayBase*> _commandNameHash;
};
inline EvtModel& EvtModel::instance()
{
if ( _instance == 0 )
_instance = new EvtModel;
return *_instance;
}
#endif
diff --git a/EvtGenBase/EvtModelAlias.hh b/EvtGenBase/EvtModelAlias.hh
index 8644392..5215cfe 100644
--- a/EvtGenBase/EvtModelAlias.hh
+++ b/EvtGenBase/EvtModelAlias.hh
@@ -1,50 +1,29 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2002 Caltech, LLNL
-//
-// Module: EvtGen/EvtModelAlias.hh
-//
-// Description:Class to keep track of model aliases
-// read in from the decay table
-//
-// Modification history:
-//
-// Lange January 19, 2002 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTMODELALIAS_HH
#define EVTMODELALIAS_HH
#include <string>
#include <vector>
class EvtModelAlias {
public:
EvtModelAlias(){};
EvtModelAlias( std::string alias, std::string model,
std::vector<std::string> args );
~EvtModelAlias(){};
EvtModelAlias( const EvtModelAlias& copyMe );
EvtModelAlias operator=( const EvtModelAlias& copyMe );
bool matchAlias( const std::string& cand )
{
if ( cand == _aliasName )
return true;
return false;
}
std::string getName() { return _model; }
std::vector<std::string> getArgList();
private:
std::string _aliasName;
std::string _model;
std::vector<std::string> _modelArgs;
};
#endif
diff --git a/EvtGenBase/EvtMultiChannelParser.hh b/EvtGenBase/EvtMultiChannelParser.hh
index b797dc9..39cabfe 100644
--- a/EvtGenBase/EvtMultiChannelParser.hh
+++ b/EvtGenBase/EvtMultiChannelParser.hh
@@ -1,86 +1,70 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtMultiChannelParser.hh,v 1.2 2009-03-16 16:41:09 robbep Exp $
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module creator:
-// Alexei Dvoretskii, Caltech, 2001-2002.
-//-----------------------------------------------------------------------
-
-// Parse decay file tokens from a file or a vector
-
#ifndef EVT_MULTI_CHANNEL_PARSER
#define EVT_MULTI_CHANNEL_PARSER
#include "EvtGenBase/EvtComplex.hh"
#include <string>
#include <vector>
+// Parse decay file tokens from a file or a vector
+
class EvtDecayMode;
enum
{
POLAR_RAD,
POLAR_DEG,
CARTESIAN
};
class EvtMultiChannelParser {
public:
EvtMultiChannelParser() : _pdfMax( -1. ), _nScan( 0 ), _dm( 0. ) {}
~EvtMultiChannelParser() {}
static EvtDecayMode getDecayMode( const char* file );
void parse( const char* file, const char* model );
void parse( const std::vector<std::string>& v );
static void parseComplexCoef( size_t& i, const std::vector<std::string>& v,
EvtComplex& c, int& format );
static double parseRealCoef( int& i, const std::vector<std::string>& v );
static bool isKeyword( const std::string& s );
inline double pdfMax() const { return _pdfMax; }
inline int nScan() const { return _nScan; }
inline double dm() const { return _dm; }
inline double mixPhase() const { return _mixPhase; }
inline double mixAmpli() const { return _mixAmpli; }
inline std::vector<std::string> amp( int i ) const { return _amp[i]; }
inline std::vector<std::string> ampConj( int i ) const
{
return _ampConj[i];
}
inline EvtComplex ampCoef( int i ) const { return _ampCoef[i]; }
inline EvtComplex ampConjCoef( int i ) const { return _ampConjCoef[i]; }
inline int coefFormat( int i ) const { return _coefFormat[i]; }
inline int coefConjFormat( int i ) const { return _coefConjFormat[i]; }
inline int getNAmp() const { return _amp.size(); }
inline int getNAmpConj() const { return _ampConj.size(); }
private:
double _pdfMax;
int _nScan;
double _dm;
double _mixPhase;
double _mixAmpli;
std::vector<std::vector<std::string>> _amp;
std::vector<std::vector<std::string>> _ampConj;
std::vector<EvtComplex> _ampCoef;
std::vector<int> _coefFormat;
std::vector<EvtComplex> _ampConjCoef;
std::vector<int> _coefConjFormat;
};
#endif
diff --git a/EvtGenBase/EvtNeutrinoParticle.hh b/EvtGenBase/EvtNeutrinoParticle.hh
index 5e82b04..cd3c8e3 100644
--- a/EvtGenBase/EvtNeutrinoParticle.hh
+++ b/EvtGenBase/EvtNeutrinoParticle.hh
@@ -1,46 +1,26 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtNeutrinoParticle.hh
-//
-// Description:Class to describe neutrinos
-//
-// Modification history:
-//
-// RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTNEUTRINOPARTICLE_HH
#define EVTNEUTRINOPARTICLE_HH
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtParticle.hh"
class EvtId;
class EvtVector4R;
class EvtNeutrinoParticle : public EvtParticle {
public:
EvtNeutrinoParticle() = default;
void init( EvtId part_n, const EvtVector4R& p4 ) override;
EvtDiracSpinor spParentNeutrino() const override;
EvtDiracSpinor spNeutrino() const override;
EvtSpinDensity rotateToHelicityBasis() const override;
EvtSpinDensity rotateToHelicityBasis( double alpha, double beta,
double gamma ) const override;
private:
EvtDiracSpinor spinor_rest;
EvtDiracSpinor spinor_parent;
EvtNeutrinoParticle( const EvtNeutrinoParticle& n );
EvtNeutrinoParticle& operator=( const EvtNeutrinoParticle& n );
};
#endif
diff --git a/EvtGenBase/EvtNonresonantAmp.hh b/EvtGenBase/EvtNonresonantAmp.hh
index 21901cc..4334677 100644
--- a/EvtGenBase/EvtNonresonantAmp.hh
+++ b/EvtGenBase/EvtNonresonantAmp.hh
@@ -1,47 +1,39 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * Author: Denis Dujmic, ddujmic@slac.stanford.edu
- *
- * Copyright (C) 2005 SLAC
- *******************************************************************************/
-
#ifndef EVT_NONRESONANT_AMP_HH
#define EVT_NONRESONANT_AMP_HH
#include "EvtGenBase/EvtAmplitude.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDalitzPlot.hh"
#include "EvtGenBase/EvtDalitzPoint.hh"
#include "EvtGenBase/EvtPto3PAmp.hh"
#include "EvtGenBase/EvtSpinType.hh"
class EvtComplex;
class EvtNonresonantAmp : public EvtAmplitude<EvtDalitzPoint> {
public:
EvtNonresonantAmp( EvtDalitzPlot* dp, EvtPto3PAmp::NumType type,
EvtCyclic3::Pair pair1, double par1 = 0,
EvtCyclic3::Pair pair2 = EvtCyclic3::AB, double par2 = 0,
EvtSpinType::spintype spin = EvtSpinType::SCALAR );
EvtComplex amplitude( const EvtDalitzPoint& p ) const override;
EvtAmplitude<EvtDalitzPoint>* clone() const override
{
return new EvtNonresonantAmp( *this );
}
private:
EvtDalitzPlot* _dalitzSpace;
EvtPto3PAmp::NumType _type;
EvtCyclic3::Pair _pair1, _pair2;
double _par1, _par2;
EvtSpinType::spintype _spin;
};
#endif
diff --git a/EvtGenBase/EvtOrthogVector.hh b/EvtGenBase/EvtOrthogVector.hh
index 6056c22..0020445 100644
--- a/EvtGenBase/EvtOrthogVector.hh
+++ b/EvtGenBase/EvtOrthogVector.hh
@@ -1,43 +1,23 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, LLNL
-//
-// Module: EvtGen/EvtOrthogVector.hh
-//
-// Description:
-//
-// Modification history:
-//
-// Lange August 11, 2000 Created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTORTHOGVECTOR_HH
#define EVTORTHOGVECTOR_HH
#include <vector>
class EvtOrthogVector final {
public:
EvtOrthogVector( int n, std::vector<double>* vectors );
std::vector<double> getOrthogVector() { return _orthogVector; }
private:
int _dimen;
std::vector<int> _holder;
void findOrthog( int dim, std::vector<int> invect,
std::vector<double>* vectors );
std::vector<double> _orthogVector;
int findEvenOddSwaps();
};
#endif
diff --git a/EvtGenBase/EvtPDL.hh b/EvtGenBase/EvtPDL.hh
index 2085567..044afd6 100644
--- a/EvtGenBase/EvtPDL.hh
+++ b/EvtGenBase/EvtPDL.hh
@@ -1,98 +1,78 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtPDL.hh
-//
-// Description:Class to keep track of particle properties.
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPDL_HH
#define EVTPDL_HH
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPartProp.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtStringHash.hh"
#include <map>
#include <vector>
const int SPIN_NAME_LENGTH = 100;
class EvtPDL final {
public:
EvtPDL();
void read( const char* fname );
void readPDT( const std::string fname );
static double getMeanMass( EvtId i );
static double getMass( EvtId i );
static double getRandMass( EvtId i, EvtId* parId, int nDaug, EvtId* dauId,
EvtId* othDaugId, double maxMass,
double* dauMasses );
static double getMassProb( EvtId i, double mass, double massPar, int nDaug,
double* massDau );
static double getMaxMass( EvtId i );
static double getMinMass( EvtId i );
//the number we got from PDT
static double getMaxRange( EvtId i );
static double getWidth( EvtId i );
static double getctau( EvtId i );
static int getStdHep( EvtId id );
static int getLundKC( EvtId id );
// Function to retrieve EvtId from PythiaID
static EvtId evtIdFromLundKC( int pythiaId );
static EvtId evtIdFromStdHep( int stdhep );
static EvtId chargeConj( EvtId id );
static int chg3( EvtId i );
static EvtSpinType::spintype getSpinType( EvtId i );
static EvtId getId( const std::string& name );
static std::string name( EvtId i );
static void alias( EvtId num, const std::string& newname );
static void aliasChgConj( EvtId a, EvtId abar );
static size_t entries();
static EvtId getEntry( int i );
static void reSetMass( EvtId i, double mass );
static void reSetWidth( EvtId i, double width );
static void reSetMassMin( EvtId i, double mass );
static void reSetMassMax( EvtId i, double mass );
static void reSetBlatt( EvtId i, double blatt );
static void reSetBlattBirth( EvtId i, double blatt );
static void includeBirthFactor( EvtId i, bool yesno );
static void includeDecayFactor( EvtId i, bool yesno );
static void changeLS( EvtId i, std::string& newLS );
static void setPWForDecay( EvtId i, int spin, EvtId d1, EvtId d2 );
static void setPWForBirthL( EvtId i, int spin, EvtId par, EvtId othD );
private:
void setUpConstsPdt();
static unsigned int _firstAlias;
static int _nentries;
static std::vector<EvtPartProp>& partlist()
{
static std::vector<EvtPartProp> s_partlist;
return s_partlist;
}
static std::map<std::string, int> _particleNameLookup;
}; // EvtPDL.h
#endif
diff --git a/EvtGenBase/EvtParser.hh b/EvtGenBase/EvtParser.hh
index 1b5e41a..ba57dd9 100644
--- a/EvtGenBase/EvtParser.hh
+++ b/EvtGenBase/EvtParser.hh
@@ -1,45 +1,25 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtParser.hh
-//
-// Description:
-//
-// Modification history:
-//
-// RYD Febuary 11, 1997 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPARSER_HH
#define EVTPARSER_HH
#include <string>
class EvtParser {
public:
EvtParser();
~EvtParser();
int read( const std::string filename );
int getNToken();
const std::string& getToken( int i );
int getLineofToken( int i );
private:
int _ntoken;
std::string* _tokenlist;
int* _linelist;
int _lengthoftokenlist;
void addToken( int line, const std::string& string );
};
#endif
diff --git a/EvtGenBase/EvtParserXml.hh b/EvtGenBase/EvtParserXml.hh
index c7805c6..4052f0b 100644
--- a/EvtGenBase/EvtParserXml.hh
+++ b/EvtGenBase/EvtParserXml.hh
@@ -1,62 +1,42 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtParserXml.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DCC 24 October, 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPARSERXML_HH
#define EVTPARSERXML_HH
#include <fstream>
#include <string>
#include <vector>
class EvtParserXml final {
public:
bool open( std::string filename );
bool close();
bool readNextTag();
std::string getTagTitle() { return _tagTitle; }
std::string getParentTagTitle();
int getLineNumber() { return _lineNo; }
bool isTagInline() { return _inLineTag; }
std::string readAttribute( std::string attribute,
std::string defaultValue = "" );
bool readAttributeBool( std::string attribute, bool defaultValue = false );
int readAttributeInt( std::string attribute, int defaultValue = -1 );
double readAttributeDouble( std::string attribute, double defaultValue = -1. );
private:
std::ifstream _fin;
std::string _line;
int _lineNo = 0;
std::string _tag;
std::string _tagTitle;
bool _inLineTag;
std::vector<std::string> _tagTree;
bool processTagTree();
bool expandEnvVars( std::string& str );
bool isAlphaNum( char c );
};
#endif
diff --git a/EvtGenBase/EvtPartProp.hh b/EvtGenBase/EvtPartProp.hh
index e764cab..63e5e6d 100644
--- a/EvtGenBase/EvtPartProp.hh
+++ b/EvtGenBase/EvtPartProp.hh
@@ -1,114 +1,93 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtPartProp.hh
-//
-// Description: Class to keep the particle properties for
-// one particle
-//
-// Modification history:
-//
-// RYD April 4, 1997 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPARTPROP_HH
#define EVTPARTPROP_HH
#include "EvtGenBase/EvtAbsLineShape.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include <memory>
#include <string>
class EvtPartProp {
public:
EvtPartProp();
EvtPartProp( const EvtPartProp& x );
double getMass() { return _lineShape->getMass(); }
double getMassMin() { return _lineShape->getMassMin(); }
double getMassMax() { return _lineShape->getMassMax(); }
double getMaxRange() { return _lineShape->getMaxRange(); }
double getWidth() { return _lineShape->getWidth(); }
double getRandMass( EvtId* parId, int nDaug, EvtId* dauId, EvtId* othDauId,
double maxMass, double* dauMasses )
{
return _lineShape->getRandMass( parId, nDaug, dauId, othDauId, maxMass,
dauMasses );
}
double getMassProb( double mass, double massPar, int nDaug, double* massDau )
{
return _lineShape->getMassProb( mass, massPar, nDaug, massDau );
}
double getctau() { return _ctau; }
void setctau( double tau ) { _ctau = tau; }
int getChg3() { return _chg3; }
void setChg3( int c3 ) { _chg3 = c3; }
EvtSpinType::spintype getSpinType() { return _spintype; }
void setSpinType( EvtSpinType::spintype stype ) { _spintype = stype; }
const std::string& getName() { return _name; }
void setName( std::string pname );
EvtId getId() { return _id; }
void setId( EvtId id ) { _id = id; }
EvtId getIdChgConj() { return _idchgconj; }
void setIdChgConj( EvtId idchgconj ) { _idchgconj = idchgconj; }
int getStdHep() { return _stdhep; }
void setStdHep( int stdhep ) { _stdhep = stdhep; }
int getLundKC() { return _lundkc; }
void setLundKC( int lundkc ) { _lundkc = lundkc; }
EvtAbsLineShape* getLineShape() { return _lineShape.get(); }
void initLineShape( double mass, double width, double maxRange );
// void initLineShape(double mass, double width, double maxRange, double mDaug1, double mDaug2, int l);
// setLineShape takes ownership of l
void setLineShape( EvtAbsLineShape* l ) { _lineShape.reset( l ); }
double rollMass() { return _lineShape->rollMass(); }
EvtPartProp& operator=( const EvtPartProp& x );
void reSetMass( double mass );
void reSetWidth( double width );
void reSetMassMin( double mass );
void reSetMassMax( double mass );
void reSetBlatt( double blatt );
void reSetBlattBirth( double blatt );
void includeBirthFactor( bool yesno );
void includeDecayFactor( bool yesno );
void newLineShape( std::string type );
void setPWForDecay( int spin, EvtId d1, EvtId d2 );
void setPWForBirthL( int spin, EvtId par, EvtId othD );
private:
std::unique_ptr<EvtAbsLineShape> _lineShape;
double _ctau;
EvtId _id;
EvtId _idchgconj;
EvtSpinType::spintype _spintype;
int _chg3;
int _stdhep;
int _lundkc;
std::string _name;
};
#endif
diff --git a/EvtGenBase/EvtParticle.hh b/EvtGenBase/EvtParticle.hh
index e1784aa..7ee31e2 100644
--- a/EvtGenBase/EvtParticle.hh
+++ b/EvtGenBase/EvtParticle.hh
@@ -1,498 +1,478 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtParticle.hh
-//
-// Description:Class to describe all particles
-//
-// Modification history:
-//
-// DJL/RYD Sept. 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPARTICLE_HH
#define EVTPARTICLE_HH
//#include <iostream.h>
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtSpinDensity.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <assert.h>
#include <map>
#include <string>
#include <vector>
class EvtDiracSpinor;
class EvtVector4C;
class EvtTensor4C;
class EvtStdHep;
class EvtSecondary;
class EvtRaritaSchwinger;
const int MAX_DAUG = 100;
const int MAX_LEVEL = 10;
const int MAX_TRIES = 10000;
class EvtParticle {
public:
/**
* Default constructor.
*/
EvtParticle();
/**
* Destructor.
*/
virtual ~EvtParticle();
/**
* Returns polarization vector in the parents restframe.
*/
virtual EvtVector4C epsParent( int i ) const;
/**
* Returns polarization vector in the particles own restframe.
*/
virtual EvtVector4C eps( int i ) const;
/**
* Returns polarization vector in the parents restframe for a photon.
*/
virtual EvtVector4C epsParentPhoton( int i );
/**
* Returns polarization vector in the particles own restframe for a photon.
*/
virtual EvtVector4C epsPhoton( int i );
/**
* Returns Dirac spinor in the parents restframe for a Dirac particle.
*/
virtual EvtDiracSpinor spParent( int ) const;
/**
* Returns Dirac spinor in the particles own restframe for a Dirac particle.
*/
virtual EvtDiracSpinor sp( int ) const;
/**
* Returns Dirac spinor in the parents restframe for a Neutrino particle.
*/
virtual EvtDiracSpinor spParentNeutrino() const;
/**
* Returns Dirac spinor in the particles own restframe for a
* Neutrino particle.
*/
virtual EvtDiracSpinor spNeutrino() const;
/**
* Returns tensor in the parents restframe for a spin 2 particle.
*/
virtual EvtTensor4C epsTensorParent( int i ) const;
/**
* Returns tensor in the particles own restframe for a spin 2 particle.
*/
virtual EvtTensor4C epsTensor( int i ) const;
/**
* Returns Rarita-Schwinger spinor in the parents restframe for a
* Rarita-Schwinger particle.
*/
virtual EvtRaritaSchwinger spRSParent( int ) const;
/**
* Returns Rarita-Schwinger spinor in the particles own restframe for a
* Rarita-Schwinger particle.
*/
virtual EvtRaritaSchwinger spRS( int ) const;
/**
* Initialiaze particle with id and 4momentum.
*/
virtual void init( EvtId part_n, const EvtVector4R& p4 ) = 0;
/**
* Add another daughter to the particle
*/
void addDaug( EvtParticle* node );
/**
* Decay particle
*/
void decay();
/**
* Delete a decay chain
*/
void deleteTree();
void deleteDaughters( bool keepChannel = false );
/**
* Should only be used internally.
*/
void setChannel( int i );
/**
* Creates the daughters in the list of ids and
* adds them to the parent. Note that momentum
* is left uninitialized, this is _only_ creation.
*/
void makeDaughters( unsigned int ndaug, EvtId* id );
/**
* Creates the daughters in the list of ids and
* adds them to the parent. Note that momentum
* is left uninitialized, this is _only_ creation.
*/
void makeDaughters( unsigned int ndaug, std::vector<EvtId> idVector );
/**
* Similar to the routine above except that here
* momentum is generated according to phase space
* daughters are filled with this momentum.
*/
double initializePhaseSpace( unsigned int numdaughter, EvtId* daughters,
bool forceResetMasses = false,
double poleSize = -1., int whichTwo1 = 0,
int whichTwo2 = 1 );
/**
* Get pointer the the i:th daugther.
*/
EvtParticle* getDaug( int i );
/**
* Iterates over the particles in a decay chain.
*/
EvtParticle* nextIter( EvtParticle* rootOfTree = 0 );
/**
* Makes stdhep list
*/
void makeStdHep( EvtStdHep& stdhep, EvtSecondary& secondary,
EvtId* stable_parent_ihep );
void makeStdHep( EvtStdHep& stdhep );
/**
* Gets 4vector in the labframe, i.e., the frame in which the root
* particles momentum is measured.
*/
EvtVector4R getP4Lab() const;
/**
* Gets 4vector in the labframe for the 4-momentum before FSR was
* generated in the parents decay. The lab frame is where the root
* particles momentum is measured.
*/
EvtVector4R getP4LabBeforeFSR();
/**
* Gets 4vector in the particles restframe, i.e. this functiont will
* return (m,0,0,0)
*/
EvtVector4R getP4Restframe() const;
/**
* Returns the 4position of the particle in the lab frame.
*/
EvtVector4R get4Pos() const;
/**
* Returns pointer to parent particle.
*/
EvtParticle* getParent() const;
/**
* Makes partptr the idaug:th daugther.
*/
void insertDaugPtr( int idaug, EvtParticle* partptr )
{
_daug[idaug] = partptr;
partptr->_parent = this;
}
/**
* Returns mass of particle.
*/
double mass() const;
/**
* Used internally to decide if first time particle is decayed.
*/
int firstornot() const;
void setFirstOrNot();
void resetFirstOrNot();
/**
* Returns Id of particle.
*/
EvtId getId() const;
/**
* Returns the PDG id of the particle
*/
int getPDGId() const;
/**
* Returns particle type.
*/
EvtSpinType::spintype getSpinType() const;
/**
* Returns number of spin states of the particle.
*/
int getSpinStates() const;
/**
* Returns 4momentum in parents restframe.
*/
const EvtVector4R& getP4() const;
/**
* Sets the 4momentum in the parents restframe.
*/
void setP4( const EvtVector4R& p4 )
{
_p = p4;
_pBeforeFSR = p4;
}
void setP4WithFSR( const EvtVector4R& p4 ) { _p = p4; }
void setFSRP4toZero() { _pBeforeFSR.set( 0.0, 0.0, 0.0, 0.0 ); }
/**
* Retunrs the decay channel.
*/
int getChannel() const;
/**
* Returns number of daugthers.
*/
size_t getNDaug() const;
void resetNDaug()
{
_ndaug = 0;
return;
}
/**
* Prints out the particle "tree" of a given particle. The
* tree consists of all daughters (and their daughters, etc)
* and their properties.
*/
void printTree() const;
void printTreeRec( unsigned int level ) const;
std::string treeStr() const;
std::string treeStrRec( unsigned int level ) const;
/**
* Prints information for the particle.
*/
void printParticle() const;
/**
* Set lifetime of the particle in parents restframe.
*/
void setLifetime( double tau );
/**
* Generate lifetime according to pure exponential.
*/
void setLifetime();
/**
* Returns the lifetime.
*/
double getLifetime();
/**
* Set diagonal spindensity matrix.
*/
void setDiagonalSpinDensity();
/**
* Set spindensity matrix for e+e- -> V
*/
void setVectorSpinDensity();
/**
* Set forward spin density matrix.
*/
void setSpinDensityForward( const EvtSpinDensity& rho )
{
_rhoForward = rho;
}
/**
* Set forward spin density matrix according to the density matrix
* rho in the helicity amplitude basis.
*/
void setSpinDensityForwardHelicityBasis( const EvtSpinDensity& rho );
void setSpinDensityForwardHelicityBasis( const EvtSpinDensity& rho,
double alpha, double beta,
double gamma );
/**
* Returns a rotation matrix need to rotate the basis state
* to the helicity basis. The EvtSpinDensity matrix is just use
* as a matrix here. This function is to be implemented in each
* derived class.
*/
virtual EvtSpinDensity rotateToHelicityBasis() const = 0;
virtual EvtSpinDensity rotateToHelicityBasis( double alpha, double beta,
double gamma ) const = 0;
/**
* Get forward spin density matrix.
*/
EvtSpinDensity getSpinDensityForward() { return _rhoForward; }
/**
* Set backward spin density matrix.
*/
void setSpinDensityBackward( const EvtSpinDensity& rho )
{
_rhoBackward = rho;
}
/**
* Get backward spin density matrix.
*/
EvtSpinDensity getSpinDensityBackward() { return _rhoBackward; }
//Hacks will be removed when better solutions are thought of!
//This is used to suppress use of random numbers when doing initialization
//of some models.
void noLifeTime() { _genlifetime = 0; }
//lange - April 29, 2002
void setId( EvtId id ) { _id = id; }
void initDecay( bool useMinMass = false );
bool generateMassTree();
double compMassProb();
//setMass will blow away any existing 4vector
void setMass( double m ) { _p = EvtVector4R( m, 0.0, 0.0, 0.0 ); }
//void setMixed() {_mix=true;}
//void setUnMixed() {_mix=false;}
//bool getMixed() {return _mix;}
//void takeCConj() {EvtGenReport(EVTGEN_INFO,"EvtGen") << "should take conj\n";}
//this means that the particle has gone through initDecay
// and thus has a mass
bool isInitialized() { return _isInit; }
bool hasValidP4() { return _validP4; }
bool isDecayed() { return _isDecayed; }
// decay prob - only relevent if already decayed
// and is a scalar particle
// returned is a double* that should be prob/probMax
double* decayProb() { return _decayProb; }
void setDecayProb( double p );
// Return the name of the particle (from the EvtId number)
std::string getName();
// Specify whether the particle has a special named attribute with
// a set value. By default, nothing is set, but derived classes
// can set this to mean something specific, e.g. if a photon is FSR
void setAttribute( std::string attName, int attValue )
{
_intAttributes[attName] = attValue;
}
// Retrieve the integer value for the given attribute name
int getAttribute( std::string attName );
// Specify if the particle has a double attribute value, e.g. amplitude weight.
// By default, nothing is set, but derived classes can set this to mean something specific
void setAttributeDouble( std::string attName, double attValue )
{
_dblAttributes[attName] = attValue;
}
// Retrieve the double value for the given attribute name
double getAttributeDouble( std::string attName );
protected:
void setp( double e, double px, double py, double pz )
{
_p.set( e, px, py, pz );
_pBeforeFSR = _p;
}
void setp( const EvtVector4R& p4 )
{
_p = p4;
_pBeforeFSR = _p;
}
void setpart_num( EvtId particle_number )
{
assert( _channel == -10 || _id.getId() == particle_number.getId() ||
_id.getId() == -1 );
_id = particle_number;
}
bool _validP4;
// A typedef to define the attribute (name, integer) map
typedef std::map<std::string, int> EvtAttIntMap;
EvtAttIntMap _intAttributes;
// A typedef to define the attribute (name, double) map
typedef std::map<std::string, double> EvtAttDblMap;
EvtAttDblMap _dblAttributes;
private:
EvtParticle* _daug[MAX_DAUG];
size_t _ndaug;
EvtParticle* _parent;
int _channel;
int _first;
EvtId _id;
EvtVector4R _p;
EvtVector4R _pBeforeFSR;
double _t;
bool _isInit;
bool _isDecayed;
//bool _mix;
EvtSpinDensity _rhoForward;
EvtSpinDensity _rhoBackward;
void makeStdHepRec( int firstparent, int lastparent, EvtStdHep& stdhep,
EvtSecondary& secondary, EvtId* stable_parent_ihep );
void makeStdHepRec( int firstparent, int lastparent, EvtStdHep& stdhep );
//This is a hack until things gets straightened out. (Ryd)
int _genlifetime;
//should never be used, therefor is private.
//these does _not_ have an implementation
EvtParticle& operator=( const EvtParticle& p );
EvtParticle( const EvtParticle& p );
double* _decayProb;
};
#endif
diff --git a/EvtGenBase/EvtParticleDecay.hh b/EvtGenBase/EvtParticleDecay.hh
index 0e23907..9537296 100644
--- a/EvtGenBase/EvtParticleDecay.hh
+++ b/EvtGenBase/EvtParticleDecay.hh
@@ -1,59 +1,39 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtParticleDecay.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPARTICLEDECAY_HH
#define EVTPARTICLEDECAY_HH
#include "EvtGenBase/EvtDecayBase.hh"
class EvtParticleDecay {
public:
EvtParticleDecay()
{
_decay = 0;
_brfrsum = 0.0;
_massmin = 0.0;
}
~EvtParticleDecay()
{
if ( _decay != 0 )
delete _decay;
}
void chargeConj( EvtParticleDecay* decay );
void setDecayModel( EvtDecayBase* decay ) { _decay = decay; }
EvtDecayBase* getDecayModel() { return _decay; }
double getBrfrSum() { return _brfrsum; }
void setBrfrSum( double brfrsum ) { _brfrsum = brfrsum; }
double getMassMin() { return _massmin; }
void setMassMin( double massmin ) { _massmin = massmin; }
void printSummary();
private:
EvtDecayBase* _decay;
double _brfrsum;
double _massmin;
};
#endif
diff --git a/EvtGenBase/EvtParticleDecayList.hh b/EvtGenBase/EvtParticleDecayList.hh
index 7e8c61c..1c2bdb9 100644
--- a/EvtGenBase/EvtParticleDecayList.hh
+++ b/EvtGenBase/EvtParticleDecayList.hh
@@ -1,80 +1,60 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtParticleDecayList.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPARTICLEDECAYLIST_HH
#define EVTPARTICLEDECAYLIST_HH
#include "EvtGenBase/EvtParticleDecay.hh"
typedef EvtParticleDecay* EvtParticleDecayPtr;
class EvtParticleDecayList {
public:
EvtParticleDecayList()
{
_decaylist = 0;
_nmode = 0;
_rawbrfrsum = 0;
}
EvtParticleDecayList( const EvtParticleDecayList& o );
~EvtParticleDecayList();
EvtParticleDecayList& operator=( const EvtParticleDecayList& o );
int getNMode() const { return _nmode; }
void setNMode( int nmode );
EvtDecayBase* getDecayModel( EvtParticle* p );
EvtDecayBase* getDecayModel( int imode );
EvtParticleDecay& getDecay( int nchannel ) const;
double getRawBrfrSum() { return _rawbrfrsum; }
void setRawBrfrSum( double rawbrfrsum ) { _rawbrfrsum = rawbrfrsum; }
void makeChargeConj( EvtParticleDecayList* conjDecayList );
void removeDecay();
void alocateDecay( int nmode )
{
_decaylist = new EvtParticleDecayPtr[nmode];
}
void removeMode( EvtDecayBase* decay );
void addMode( EvtDecayBase* decay, double brfr, double massmin );
void finalize();
void printSummary();
bool isJetSet() const;
private:
EvtParticleDecayPtr* _decaylist;
double _rawbrfrsum;
int _nmode;
};
#endif
diff --git a/EvtGenBase/EvtParticleFactory.hh b/EvtGenBase/EvtParticleFactory.hh
index 81d603e..ad2bbac 100644
--- a/EvtGenBase/EvtParticleFactory.hh
+++ b/EvtGenBase/EvtParticleFactory.hh
@@ -1,41 +1,21 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtParticleFactory.hh
-//
-// Description:Factory for creating particles
-//
-// Modification history:
-//
-// DJL December 27, 1999 Module created.
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPARTICLEFACTORY_HH
#define EVTPARTICLEFACTORY_HH
#include "EvtGenBase/EvtSpinType.hh"
class EvtParticle;
class EvtId;
class EvtVector4R;
class EvtSpinDensity;
class EvtParticleFactory {
public:
static EvtParticle* particleFactory( EvtSpinType::spintype spinType );
static EvtParticle* particleFactory( EvtId id, EvtVector4R p4 );
static EvtParticle* particleFactory( EvtId id, EvtVector4R p4,
EvtSpinDensity rho );
};
#endif
diff --git a/EvtGenBase/EvtPdf.hh b/EvtGenBase/EvtPdf.hh
index 2294bf7..9b9672b 100644
--- a/EvtGenBase/EvtPdf.hh
+++ b/EvtGenBase/EvtPdf.hh
@@ -1,329 +1,320 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPdf.hh,v 1.2 2009-03-16 16:40:15 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
+#ifndef EVT_PDF_HH
+#define EVT_PDF_HH
+
+#include "EvtGenBase/EvtMacros.hh"
+#include "EvtGenBase/EvtPdfMax.hh"
+#include "EvtGenBase/EvtPredGen.hh"
+#include "EvtGenBase/EvtRandom.hh"
+#include "EvtGenBase/EvtStreamInputIterator.hh"
+#include "EvtGenBase/EvtValError.hh"
+
+#include <assert.h>
+#include <stdio.h>
/*
* All classes are templated on the point type T
*
* EvtPdf:
*
* Probability density function defined on an interval of phase-space.
* Integral over the interval can be calculated by Monte Carlo integration.
* Some (but not all) PDFs are analytic in the sense that they can be integrated
* by numeric quadrature and distributions can be generated according to them.
*
* EvtPdfGen:
*
* Generator adaptor. Can be used to generate random points
* distributed according to the PDF for analytic PDFs.
*
* EvtPdfPred:
*
* Predicate adaptor for PDFs. Can be used for generating random points distributed
* according to the PDF for any PDF using rejection method. (See "Numerical Recipes").
*
* EvtPdfUnary:
*
* Adapter for generic algorithms. Evaluates the PDF and returns the value
*
* EvtPdfDiv:
*
* PDF obtained by division of one PDF by another. Because the two PDFs are
* arbitrary this PDF is not analytic. When importance sampling is used the
* original PDF is divided by the analytic comparison function. EvtPdfDiv is
* used to represent the modified PDF.
*/
-#ifndef EVT_PDF_HH
-#define EVT_PDF_HH
-
-#include "EvtGenBase/EvtMacros.hh"
-#include "EvtGenBase/EvtPdfMax.hh"
-#include "EvtGenBase/EvtPredGen.hh"
-#include "EvtGenBase/EvtRandom.hh"
-#include "EvtGenBase/EvtStreamInputIterator.hh"
-#include "EvtGenBase/EvtValError.hh"
-
-#include <assert.h>
-#include <stdio.h>
-
template <class T>
class EvtPdfPred;
template <class T>
class EvtPdfGen;
template <class T>
class EvtPdf {
public:
EvtPdf() {}
EvtPdf( const EvtPdf& other ) : _itg( other._itg ) {}
virtual ~EvtPdf() {}
virtual EvtPdf<T>* clone() const = 0;
double evaluate( const T& p ) const
{
if ( p.isValid() )
return pdf( p );
else
return 0.;
}
// Find PDF maximum. Points are sampled according to pc
EvtPdfMax<T> findMax( const EvtPdf<T>& pc, int N );
// Find generation efficiency.
EvtValError findGenEff( const EvtPdf<T>& pc, int N, int nFindMax );
// Analytic integration. Calls cascade down until an overridden
// method is called.
void setItg( EvtValError itg ) { _itg = itg; }
EvtValError getItg() const
{
if ( !_itg.valueKnown() )
_itg = compute_integral();
return _itg;
}
EvtValError getItg( int N ) const
{
if ( !_itg.valueKnown() )
_itg = compute_integral( N );
return _itg;
}
virtual EvtValError compute_integral() const
{
printf( "Analytic integration of PDF is not defined\n" );
assert( 0 );
return EvtValError{};
}
virtual EvtValError compute_integral( int ) const
{
return compute_integral();
}
// Monte Carlo integration.
EvtValError compute_mc_integral( const EvtPdf<T>& pc, int N );
// Generation. Create predicate accept-reject generators.
// nMax iterations will be used to find the maximum of the accept-reject predicate
EvtPredGen<EvtPdfGen<T>, EvtPdfPred<T>> accRejGen( const EvtPdf<T>& pc,
int nMax,
double factor = 1. );
virtual T randomPoint();
protected:
virtual double pdf( const T& ) const = 0;
mutable EvtValError _itg;
};
template <class T>
class EvtPdfGen {
public:
typedef T result_type;
EvtPdfGen() : _pdf( 0 ) {}
EvtPdfGen( const EvtPdfGen<T>& other ) :
_pdf( other._pdf ? other._pdf->clone() : 0 )
{
}
EvtPdfGen( const EvtPdf<T>& pdf ) : _pdf( pdf.clone() ) {}
~EvtPdfGen() { delete _pdf; }
result_type operator()() { return _pdf->randomPoint(); }
private:
EvtPdf<T>* _pdf;
};
template <class T>
class EvtPdfPred {
public:
typedef T argument_type;
typedef bool result_type;
EvtPdfPred() {}
EvtPdfPred( const EvtPdf<T>& thePdf ) : itsPdf( thePdf.clone() ) {}
EvtPdfPred( const EvtPdfPred& other ) :
COPY_PTR( itsPdf ), COPY_MEM( itsPdfMax )
{
}
~EvtPdfPred() { delete itsPdf; }
result_type operator()( argument_type p )
{
assert( itsPdf );
assert( itsPdfMax.valueKnown() );
double random = EvtRandom::Flat( 0., itsPdfMax.value() );
return ( random <= itsPdf->evaluate( p ) );
}
EvtPdfMax<T> getMax() const { return itsPdfMax; }
void setMax( const EvtPdfMax<T>& max ) { itsPdfMax = max; }
template <class InputIterator>
void compute_max( InputIterator it, InputIterator end, double factor = 1. )
{
T p = *it++;
itsPdfMax = EvtPdfMax<T>( p, itsPdf->evaluate( p ) * factor );
while ( !( it == end ) ) {
T p = *it++;
double val = itsPdf->evaluate( p ) * factor;
if ( val > itsPdfMax.value() )
itsPdfMax = EvtPdfMax<T>( p, val );
}
}
private:
EvtPdf<T>* itsPdf;
EvtPdfMax<T> itsPdfMax;
};
template <class T>
class EvtPdfUnary {
public:
typedef double result_type;
typedef T argument_type;
EvtPdfUnary() {}
EvtPdfUnary( const EvtPdf<T>& thePdf ) : itsPdf( thePdf.clone() ) {}
EvtPdfUnary( const EvtPdfUnary& other ) : COPY_PTR( itsPdf ) {}
~EvtPdfUnary() { delete itsPdf; }
result_type operator()( argument_type p )
{
assert( itsPdf );
double ret = itsPdf->evaluate( p );
return ret;
}
private:
EvtPdf<T>* itsPdf;
};
template <class T>
class EvtPdfDiv : public EvtPdf<T> {
public:
EvtPdfDiv() : itsNum( 0 ), itsDen( 0 ) {}
EvtPdfDiv( const EvtPdf<T>& theNum, const EvtPdf<T>& theDen ) :
EvtPdf<T>(), itsNum( theNum.clone() ), itsDen( theDen.clone() )
{
}
EvtPdfDiv( const EvtPdfDiv<T>& other ) :
EvtPdf<T>( other ), COPY_PTR( itsNum ), COPY_PTR( itsDen )
{
}
virtual ~EvtPdfDiv()
{
delete itsNum;
delete itsDen;
}
EvtPdf<T>* clone() const override { return new EvtPdfDiv( *this ); }
double pdf( const T& p ) const override
{
double num = itsNum->evaluate( p );
double den = itsDen->evaluate( p );
assert( den != 0 );
return num / den;
}
private:
EvtPdf<T>* itsNum; // numerator
EvtPdf<T>* itsDen; // denominator
};
template <class T>
EvtPdfMax<T> EvtPdf<T>::findMax( const EvtPdf<T>& pc, int N )
{
EvtPdfPred<T> pred( *this );
EvtPdfGen<T> gen( pc );
pred.compute_max( iter( gen, N ), iter( gen ) );
EvtPdfMax<T> p = pred.getMax();
return p;
}
template <class T>
EvtValError EvtPdf<T>::findGenEff( const EvtPdf<T>& pc, int N, int nFindMax )
{
assert( N > 0 || nFindMax > 0 );
EvtPredGen<EvtPdfGen<T>, EvtPdfPred<T>> gen = accRejGen( pc, nFindMax );
int i;
for ( i = 0; i < N; i++ )
gen();
double eff = double( gen.getPassed() ) / double( gen.getTried() );
double err = sqrt( double( gen.getPassed() ) ) / double( gen.getTried() );
return EvtValError( eff, err );
}
template <class T>
EvtValError EvtPdf<T>::compute_mc_integral( const EvtPdf<T>& pc, int N )
{
assert( N > 0 );
EvtPdfDiv<T> pdfdiv( *this, pc );
EvtPdfUnary<T> unary( pdfdiv );
EvtPdfGen<T> gen( pc );
EvtStreamInputIterator<T> begin = iter( gen, N );
EvtStreamInputIterator<T> end;
double sum = 0.;
double sum2 = 0.;
while ( !( begin == end ) ) {
double value = pdfdiv.evaluate( *begin++ );
sum += value;
sum2 += value * value;
}
EvtValError x;
if ( N > 0 ) {
double av = sum / ( (double)N );
if ( N > 1 ) {
double dev2 = ( sum2 - av * av * N ) / ( (double)( N - 1 ) );
// Due to numerical precision dev2 may sometimes be negative
if ( dev2 < 0. )
dev2 = 0.;
double error = sqrt( dev2 / ( (double)N ) );
x = EvtValError( av, error );
} else
x = EvtValError( av );
}
_itg = x * pc.getItg();
return _itg;
}
template <class T>
T EvtPdf<T>::randomPoint()
{
printf( "Function defined for analytic PDFs only\n" );
assert( 0 );
T temp;
return temp;
}
template <class T>
EvtPredGen<EvtPdfGen<T>, EvtPdfPred<T>> EvtPdf<T>::accRejGen( const EvtPdf<T>& pc,
int nMax,
double factor )
{
EvtPdfGen<T> gen( pc );
EvtPdfDiv<T> pdfdiv( *this, pc );
EvtPdfPred<T> pred( pdfdiv );
pred.compute_max( iter( gen, nMax ), iter( gen ), factor );
return EvtPredGen<EvtPdfGen<T>, EvtPdfPred<T>>( gen, pred );
}
#endif
diff --git a/EvtGenBase/EvtPdfMax.hh b/EvtGenBase/EvtPdfMax.hh
index fe8003c..e9f2d69 100644
--- a/EvtGenBase/EvtPdfMax.hh
+++ b/EvtGenBase/EvtPdfMax.hh
@@ -1,54 +1,43 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPdfMax.hh,v 1.2 2009-03-16 16:40:15 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Pdf maximum and its location
-
#ifndef EVT_PDF_MAX_HH
#define EVT_PDF_MAX_HH
#include "EvtGenBase/EvtMacros.hh"
#include <cassert>
-// PDF maximum - helper class
+// Pdf maximum and its location
template <class Point>
class EvtPdfMax {
public:
EvtPdfMax() : _value( -1 ), _valueKnown( false ), _locKnown( false ) {}
EvtPdfMax( double value ) :
_value( value ), _valueKnown( true ), _locKnown( false )
{
}
EvtPdfMax( Point p, double value ) :
_value( value ), _valueKnown( true ), _locKnown( true ), _loc( p )
{
}
bool valueKnown() const { return _valueKnown; }
double value() const
{
assert( _valueKnown );
return _value;
}
bool locKnown() const { return _locKnown; }
Point loc() const
{
assert( _locKnown );
return _loc;
}
private:
double _value;
bool _valueKnown;
bool _locKnown;
Point _loc;
};
#endif
diff --git a/EvtGenBase/EvtPdfSum.hh b/EvtGenBase/EvtPdfSum.hh
index f4b3b43..47c81b7 100644
--- a/EvtGenBase/EvtPdfSum.hh
+++ b/EvtGenBase/EvtPdfSum.hh
@@ -1,138 +1,129 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPdfSum.hh,v 1.3 2009-03-16 16:40:16 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Sum of PDF functions.
-
#ifndef EVT_PDF_SUM_HH
#define EVT_PDF_SUM_HH
#include <stdio.h>
#include <vector>
using std::vector;
#include "EvtGenBase/EvtPdf.hh"
+// Sum of PDF functions.
+
template <class T>
class EvtPdfSum : public EvtPdf<T> {
public:
EvtPdfSum() {}
EvtPdfSum( const EvtPdfSum<T>& other );
virtual ~EvtPdfSum();
EvtPdfSum* clone() const override { return new EvtPdfSum( *this ); }
// Manipulate terms and coefficients
void addTerm( double c, const EvtPdf<T>& pdf )
{
assert( c >= 0. );
_c.push_back( c );
_term.push_back( pdf.clone() );
}
void addOwnedTerm( double c, std::unique_ptr<EvtPdf<T>> pdf )
{
_c.push_back( c );
_term.push_back( pdf.release() );
}
size_t nTerms() const { return _term.size(); } // number of terms
inline double c( int i ) const { return _c[i]; }
inline EvtPdf<T>* getPdf( int i ) const { return _term[i]; }
// Integrals
EvtValError compute_integral() const override;
EvtValError compute_integral( int N ) const override;
T randomPoint() override;
protected:
double pdf( const T& p ) const override;
vector<double> _c; // coefficients
vector<EvtPdf<T>*> _term; // pointers to pdfs
};
template <class T>
EvtPdfSum<T>::EvtPdfSum( const EvtPdfSum<T>& other ) : EvtPdf<T>( other )
{
for ( size_t i = 0; i < other.nTerms(); i++ ) {
_c.push_back( other._c[i] );
_term.push_back( other._term[i]->clone() );
}
}
template <class T>
EvtPdfSum<T>::~EvtPdfSum()
{
for ( size_t i = 0; i < _c.size(); i++ ) {
delete _term[i];
}
}
template <class T>
double EvtPdfSum<T>::pdf( const T& p ) const
{
double ret = 0.;
for ( size_t i = 0; i < _c.size(); i++ ) {
ret += _c[i] * _term[i]->evaluate( p );
}
return ret;
}
/*
* Compute the sum integral by summing all term integrals.
*/
template <class T>
EvtValError EvtPdfSum<T>::compute_integral() const
{
EvtValError itg( 0.0, 0.0 );
for ( size_t i = 0; i < nTerms(); i++ ) {
itg += _c[i] * _term[i]->getItg();
}
return itg;
}
template <class T>
EvtValError EvtPdfSum<T>::compute_integral( int N ) const
{
EvtValError itg( 0.0, 0.0 );
for ( size_t i = 0; i < nTerms(); i++ )
itg += _c[i] * _term[i]->getItg( N );
return itg;
}
/*
* Sample points randomly according to the sum of PDFs. First throw a random number uniformly
* between zero and the value of the sum integral. Using this random number select one
* of the PDFs. The generate a random point according to that PDF.
*/
template <class T>
T EvtPdfSum<T>::randomPoint()
{
if ( !this->_itg.valueKnown() )
this->_itg = compute_integral();
double max = this->_itg.value();
double rnd = EvtRandom::Flat( 0, max );
double sum = 0.;
size_t i;
for ( i = 0; i < nTerms(); i++ ) {
double itg = _term[i]->getItg().value();
sum += _c[i] * itg;
if ( sum > rnd )
break;
}
return _term[i]->randomPoint();
}
#endif
diff --git a/EvtGenBase/EvtPhotonParticle.hh b/EvtGenBase/EvtPhotonParticle.hh
index 609b23a..109e657 100644
--- a/EvtGenBase/EvtPhotonParticle.hh
+++ b/EvtGenBase/EvtPhotonParticle.hh
@@ -1,53 +1,33 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtPhotonParticle.hh
-//
-// Description:Class to describe photons
-//
-// Modification history:
-//
-// DJL/RYD Sept. 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPHOTONPARTICLE_HH
#define EVTPHOTONPARTICLE_HH
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtVector4C.hh"
class EvtId;
//Class to handle massless spin 1 particles.
class EvtPhotonParticle : public EvtParticle {
public:
EvtPhotonParticle() = default;
void init( EvtId part_n, double e, double px, double py, double pz );
void init( EvtId part_n, const EvtVector4R& p4 ) override;
//Return polarization vectors
EvtVector4C epsParentPhoton( int i ) override;
EvtVector4C epsPhoton( int i ) override;
EvtSpinDensity rotateToHelicityBasis() const override;
EvtSpinDensity rotateToHelicityBasis( double alpha, double beta,
double gamma ) const override;
private:
EvtVector4C eps1, eps2;
int _evalBasis;
EvtPhotonParticle( const EvtPhotonParticle& photon );
EvtPhotonParticle& operator=( const EvtPhotonParticle& photon );
};
#endif
diff --git a/EvtGenBase/EvtPoint1D.hh b/EvtGenBase/EvtPoint1D.hh
index 49b85ca..ef24966 100644
--- a/EvtGenBase/EvtPoint1D.hh
+++ b/EvtGenBase/EvtPoint1D.hh
@@ -1,35 +1,26 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPoint1D.hh,v 1.2 2009-03-16 16:40:16 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
+#ifndef EVT_POINT_1D_HH
+#define EVT_POINT_1D_HH
// Point on a finite 1-D interval. isValid shows whether for a given specification,
// the coordinate _value is inside the interval defined by _min, _max.
-#ifndef EVT_POINT_1D_HH
-#define EVT_POINT_1D_HH
-
class EvtPoint1D final {
public:
EvtPoint1D();
EvtPoint1D( double value );
EvtPoint1D( double min, double max, double value );
bool isValid() const { return _valid; }
double value() const { return _value; }
void print() const;
private:
double _min; // interval minimum
double _max; // interval maximum
double _value;
bool _valid; // valid point inside the interval?
};
#endif
diff --git a/EvtGenBase/EvtPointPred.hh b/EvtGenBase/EvtPointPred.hh
index fd0debb..00c1f8e 100644
--- a/EvtGenBase/EvtPointPred.hh
+++ b/EvtGenBase/EvtPointPred.hh
@@ -1,27 +1,18 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPointPred.hh,v 1.2 2009-03-16 16:40:16 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
+#ifndef EVT_POINT_PRED_HH
+#define EVT_POINT_PRED_HH
// Predicate testing validity of a point. The point class must provide
// bool isValid() method
-#ifndef EVT_POINT_PRED_HH
-#define EVT_POINT_PRED_HH
-
template <class Point>
class EvtPointPred {
public:
typedef Point argument_type;
typedef bool result_type;
EvtPointPred() {}
EvtPointPred( const EvtPointPred& ) {}
~EvtPointPred() {}
result_type operator()( argument_type x ) { return x.isValid(); }
};
diff --git a/EvtGenBase/EvtPredGen.hh b/EvtGenBase/EvtPredGen.hh
index 633a5d9..5651c64 100644
--- a/EvtGenBase/EvtPredGen.hh
+++ b/EvtGenBase/EvtPredGen.hh
@@ -1,72 +1,63 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPredGen.hh,v 1.2 2009-03-16 16:40:16 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
+#ifndef EVT_PRED_GEN_HH
+#define EVT_PRED_GEN_HH
+
+#include <stdio.h>
// A predicate is applied to a generator to get another generator.
// Accept-reject can be implemented in this way.
//
// Predicate
// Generator -> Generator
-#ifndef EVT_PRED_GEN_HH
-#define EVT_PRED_GEN_HH
-
-#include <stdio.h>
-
template <class Generator, class Predicate>
class EvtPredGen {
public:
typedef typename Generator::result_type result_type;
EvtPredGen() : itsTried( 0 ), itsPassed( 0 ) {}
EvtPredGen( Generator gen, Predicate pred ) :
itsGen( gen ), itsPred( pred ), itsTried( 0 ), itsPassed( 0 )
{
}
EvtPredGen( const EvtPredGen& other ) :
itsGen( other.itsGen ),
itsPred( other.itsPred ),
itsTried( other.itsTried ),
itsPassed( other.itsPassed )
{
}
~EvtPredGen() {}
result_type operator()()
{
int i = 0;
int MAX = 10000;
while ( i++ < MAX ) {
itsTried++;
result_type point = itsGen();
if ( itsPred( point ) ) {
itsPassed++;
return point;
}
}
printf( "No random point generated after %d attempts\n", MAX );
printf( "Sharp peak? Consider using pole compensation.\n" );
printf( "I will now pick a point at random to return.\n" );
return itsGen();
}
inline int getTried() const { return itsTried; }
inline int getPassed() const { return itsPassed; }
protected:
Generator itsGen;
Predicate itsPred;
int itsTried;
int itsPassed;
};
#endif
diff --git a/EvtGenBase/EvtPropBreitWigner.hh b/EvtGenBase/EvtPropBreitWigner.hh
index 4f3b7df..fc3bcbd 100644
--- a/EvtGenBase/EvtPropBreitWigner.hh
+++ b/EvtGenBase/EvtPropBreitWigner.hh
@@ -1,28 +1,19 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPropBreitWigner.hh,v 1.2 2009-03-16 16:40:16 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Non-relativistic Breit-Wigner propagator
-
#ifndef EVT_PROP_BREIT_WIGNER_HH
#define EVT_PROP_BREIT_WIGNER_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPropagator.hh"
+// Non-relativistic Breit-Wigner propagator
+
class EvtPropBreitWigner : public EvtPropagator {
public:
EvtPropBreitWigner( double m0, double g0 );
EvtAmplitude<EvtPoint1D>* clone() const override;
protected:
EvtComplex amplitude( const EvtPoint1D& m ) const override;
};
#endif
diff --git a/EvtGenBase/EvtPropBreitWignerRel.hh b/EvtGenBase/EvtPropBreitWignerRel.hh
index 1be8c30..f9af3cf 100644
--- a/EvtGenBase/EvtPropBreitWignerRel.hh
+++ b/EvtGenBase/EvtPropBreitWignerRel.hh
@@ -1,28 +1,19 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPropBreitWignerRel.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Relativistic Breit-Wigner Propagator
-
#ifndef EVT_PROP_BREIT_WIGNER_REL_HH
#define EVT_PROP_BREIT_WIGNER_REL_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPropagator.hh"
+// Relativistic Breit-Wigner Propagator
+
class EvtPropBreitWignerRel : public EvtPropagator {
public:
EvtPropBreitWignerRel( double m0, double g0 );
EvtAmplitude<EvtPoint1D>* clone() const override;
protected:
EvtComplex amplitude( const EvtPoint1D& x ) const override;
};
#endif
diff --git a/EvtGenBase/EvtPropFlatte.hh b/EvtGenBase/EvtPropFlatte.hh
index 22a2ad4..4779971 100644
--- a/EvtGenBase/EvtPropFlatte.hh
+++ b/EvtGenBase/EvtPropFlatte.hh
@@ -1,35 +1,27 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * Author: Denis Dujmic, SLAC
- *
- * Copyright (C) 2005 SLAC
- *******************************************************************************/
-
-// Flatte propagator: S.M.Flatte, Phys. Lett. B63, 224 (1976)
-
#ifndef EVT_PROP_FLATTE_HH
#define EVT_PROP_FLATTE_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPropagator.hh"
+// Flatte propagator: S.M.Flatte, Phys. Lett. B63, 224 (1976)
+
class EvtPropFlatte : public EvtPropagator {
public:
EvtPropFlatte( double m0, double g0, double m0a, double m0b, double g1,
double m1a, double m1b );
EvtAmplitude<EvtPoint1D>* clone() const override;
protected:
EvtComplex amplitude( const EvtPoint1D& x ) const override;
double _m0a;
double _m0b;
double _g1;
double _m1a;
double _m1b;
};
#endif
diff --git a/EvtGenBase/EvtPropGounarisSakurai.hh b/EvtGenBase/EvtPropGounarisSakurai.hh
index da5bdc8..615b5e0 100644
--- a/EvtGenBase/EvtPropGounarisSakurai.hh
+++ b/EvtGenBase/EvtPropGounarisSakurai.hh
@@ -1,45 +1,35 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPropGounarisSakurai.hh,v 1.1 2009-03-16 16:50:50 robbep Exp $
- * Author: Matt Graham
- * modified from EvtPropBreitWignerRel...this should be used for rho's
- *******************************************************************************/
-
-// Relativistic Breit-Wigner Propagator
-
#ifndef EVT_PROP_GOUNARIS_SAKURAI_HH
#define EVT_PROP_GOUNARIS_SAKURAI_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDalitzPlot.hh"
#include "EvtGenBase/EvtDalitzPoint.hh"
#include "EvtGenBase/EvtPropagator.hh"
class EvtPropGounarisSakurai : public EvtPropagator {
public:
EvtPropGounarisSakurai( EvtDalitzPlot* dp, EvtCyclic3::Pair pair, double m0,
double g0 );
EvtAmplitude<EvtPoint1D>* clone() const override;
protected:
EvtComplex amplitude( const EvtPoint1D& x ) const override;
private:
EvtDalitzPlot* _dalitzSpace;
EvtCyclic3::Pair _pair;
double _gbase;
double _m1;
double _m2;
double _dfun;
double dFun( double s ) const;
double dh_dsFun( double s ) const;
double hFun( double s ) const;
double kFun( double s ) const;
double fsFun( double s ) const;
};
#endif
diff --git a/EvtGenBase/EvtPropagator.hh b/EvtGenBase/EvtPropagator.hh
index df8c641..7502ea9 100644
--- a/EvtGenBase/EvtPropagator.hh
+++ b/EvtGenBase/EvtPropagator.hh
@@ -1,52 +1,43 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPropagator.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Defines propagator as a function of mass and width
-
#ifndef EVT_PROPAGATOR_HH
#define EVT_PROPAGATOR_HH
#include "EvtGenBase/EvtAmplitude.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPoint1D.hh"
#include <assert.h>
+// Defines propagator as a function of mass and width
+
class EvtPropagator : public EvtAmplitude<EvtPoint1D> {
public:
EvtPropagator( double m0, double g0 ) : _m0( m0 ), _g0( g0 )
{
assert( m0 > 0 );
assert( g0 >= 0 );
}
// Accessors
inline double m0() const { return _m0; }
inline double g0() const { return _g0; }
// Modifiers (can be useful e.g. for fitting!)
inline void set_m0( double m0 )
{
assert( m0 > 0 );
_m0 = m0;
}
inline void set_g0( double g0 )
{
assert( g0 >= 0 );
_g0 = g0;
}
protected:
double _m0;
double _g0;
};
#endif
diff --git a/EvtGenBase/EvtPto3PAmp.hh b/EvtGenBase/EvtPto3PAmp.hh
index f8b12a7..15bed62 100644
--- a/EvtGenBase/EvtPto3PAmp.hh
+++ b/EvtGenBase/EvtPto3PAmp.hh
@@ -1,105 +1,96 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPto3PAmp.hh,v 1.2 2009-03-16 16:41:09 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
#ifndef EVT_PTO3P_AMP_HH
#define EVT_PTO3P_AMP_HH
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include <vector>
using std::vector;
#include "EvtGenBase/EvtAmplitude.hh"
#include "EvtGenBase/EvtDalitzPoint.hh"
#include "EvtGenBase/EvtPropagator.hh"
#include "EvtGenBase/EvtTwoBodyVertex.hh"
class EvtComplex;
class EvtBlattWeisskopf;
class EvtPto3PAmp : public EvtAmplitude<EvtDalitzPoint> {
public:
// Numerator type
enum NumType
{
NBW = 0,
RBW_ZEMACH = 1,
RBW_KUEHN = 2,
RBW_CLEO = 3,
FLATTE,
GAUSS,
DOUBLE_GAUSS,
NONRES,
NONRES_LIN,
NONRES_EXP,
NONRES_EXP_ADD,
NONRES_CCS,
NONRES_LAURA,
LASS,
LASS_ELASTIC,
LASS_RESONANT,
GS
};
EvtPto3PAmp( EvtDalitzPlot dp, EvtCyclic3::Pair pairAng,
EvtCyclic3::Pair pairRes, EvtSpinType::spintype spin,
const EvtPropagator& prop, NumType typeN );
EvtPto3PAmp( const EvtPto3PAmp& other );
~EvtPto3PAmp();
EvtAmplitude<EvtDalitzPoint>* clone() const override
{
return new EvtPto3PAmp( *this );
}
EvtComplex amplitude( const EvtDalitzPoint& p ) const override;
EvtComplex numerator( const EvtDalitzPoint& p ) const;
double angDep( const EvtDalitzPoint& p ) const;
void set_fd( double R );
void set_fb( double R );
void setmin( double min ) { _min = min; }
void setmax( double max ) { _max = max; }
virtual EvtComplex evalPropagator( double m ) const
{
return _prop->evaluate( m );
}
private:
// Pairing indices:
EvtCyclic3::Pair _pairAng; // angular
EvtCyclic3::Pair _pairRes; // resonance
// Spin
EvtSpinType::spintype _spin;
// Numerator type
NumType _typeN;
// _Owned_ pointer to propagator factor
EvtPropagator* _prop;
double _g0; // nominal width
double _min; //min and max values on which
double _max; //the resonance is defined
// Vertices
EvtTwoBodyVertex _vb;
EvtTwoBodyVertex _vd;
};
#endif
diff --git a/EvtGenBase/EvtPto3PAmpFactory.hh b/EvtGenBase/EvtPto3PAmpFactory.hh
index 6c46ebe..0e21ca6 100644
--- a/EvtGenBase/EvtPto3PAmpFactory.hh
+++ b/EvtGenBase/EvtPto3PAmpFactory.hh
@@ -1,53 +1,37 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtPto3PAmpFactory.hh,v 1.2 2009-03-16 16:42:03 robbep Exp $
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module creator:
-// Alexei Dvoretskii, Caltech, 2001-2002.
-//-----------------------------------------------------------------------
-
#ifndef EVT_PTO3P_AMP_FACTORY_HH
#define EVT_PTO3P_AMP_FACTORY_HH
#include "EvtGenBase/EvtAmpFactory.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDalitzPlot.hh"
#include "EvtGenBase/EvtDalitzPoint.hh"
#include <string>
#include <vector>
class EvtPto3PAmpFactory final : public EvtAmpFactory<EvtDalitzPoint> {
public:
EvtPto3PAmpFactory( const EvtDalitzPlot& dp ) :
EvtAmpFactory<EvtDalitzPoint>(), _dp( dp )
{
}
EvtPto3PAmpFactory( EvtPto3PAmpFactory&& ) = default;
EvtPto3PAmpFactory( const EvtPto3PAmpFactory& ) = default;
EvtAmpFactory<EvtDalitzPoint>* clone() const override
{
return new EvtPto3PAmpFactory( *this );
}
void processAmp( EvtComplex c, std::vector<std::string> vv,
bool conj ) override;
private:
double matchIsobarCoef( EvtAmplitude<EvtDalitzPoint>& amp,
EvtPdf<EvtDalitzPoint>& pdf, EvtCyclic3::Pair i );
EvtDalitzPlot _dp;
};
#endif
diff --git a/EvtGenBase/EvtPto3PAmpSmpResolution.hh b/EvtGenBase/EvtPto3PAmpSmpResolution.hh
index 5768cd1..fcab0df 100644
--- a/EvtGenBase/EvtPto3PAmpSmpResolution.hh
+++ b/EvtGenBase/EvtPto3PAmpSmpResolution.hh
@@ -1,42 +1,34 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * Author: D. Dujmic, ddujmic@slac.stanford.edu
- *
- * Copyright (C) 2005 SLAC
- *******************************************************************************/
-
#ifndef EVT_PTO3P_AMP_SMPRSL_HH
#define EVT_PTO3P_AMP_SMPRSL_HH
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtPto3PAmp.hh"
class EvtComplex;
class EvtPto3PAmpSmpResolution : public EvtPto3PAmp {
public:
EvtPto3PAmpSmpResolution( EvtDalitzPlot dp, EvtCyclic3::Pair pairAng,
EvtCyclic3::Pair pairRes,
EvtSpinType::spintype spin,
const EvtPropagator& prop, NumType typeN );
EvtAmplitude<EvtDalitzPoint>* clone() const override
{
return new EvtPto3PAmpSmpResolution( *this );
}
EvtComplex evalPropagator( double m ) const override;
void setResolution( double bias, double sigma )
{
_bias = bias;
_sigma = sigma;
}
private:
double _bias;
double _sigma;
};
#endif
diff --git a/EvtGenBase/EvtRadCorr.hh b/EvtGenBase/EvtRadCorr.hh
index ba15219..aeecbf1 100644
--- a/EvtGenBase/EvtRadCorr.hh
+++ b/EvtGenBase/EvtRadCorr.hh
@@ -1,50 +1,30 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtRadCorr.hh
-//
-// Description:FSR interface
-//
-// Modification history:
-//
-// Lange April 27, 2002 Created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTRADCORR_HH
#define EVTRADCORR_HH
class EvtAbsRadCorr;
class EvtParticle;
class EvtRadCorr {
public:
EvtRadCorr();
~EvtRadCorr();
static void doRadCorr( EvtParticle* p );
//This class does not take ownership of the fsr engine;
//the caller needs to make sure that the engine is not
//destroyed.
static void setRadCorrEngine( EvtAbsRadCorr* fsrEngine );
static bool alwaysRadCorr();
static bool neverRadCorr();
static void setAlwaysRadCorr();
static void setNeverRadCorr();
static void setNormalRadCorr();
private:
static EvtAbsRadCorr* _fsrEngine;
static bool _alwaysRadCorr;
static bool _neverRadCorr;
};
#endif
diff --git a/EvtGenBase/EvtRandom.hh b/EvtGenBase/EvtRandom.hh
index f94f646..be13598 100644
--- a/EvtGenBase/EvtRandom.hh
+++ b/EvtGenBase/EvtRandom.hh
@@ -1,46 +1,26 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtRandom.hh
-//
-// Description:Source of random numbers for EvtGen code
-//
-// Modification history:
-//
-// RYD March 24, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTRANDOM_HH
#define EVTRANDOM_HH
class EvtRandomEngine;
class EvtRandom {
public:
static double Flat();
static double Flat( double max );
static double Flat( double min, double max );
//generate unit Gaussian
static double Gaussian();
static double random();
//This class does not take ownership of the random engine;
//the caller needs to make sure that the engine is not
//destroyed.
static void setRandomEngine( EvtRandomEngine* randomEngine );
private:
static EvtRandomEngine* _randomEngine;
};
#endif
diff --git a/EvtGenBase/EvtRandomEngine.hh b/EvtGenBase/EvtRandomEngine.hh
index fd2b4b4..c9cba58 100644
--- a/EvtGenBase/EvtRandomEngine.hh
+++ b/EvtGenBase/EvtRandomEngine.hh
@@ -1,36 +1,17 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtRandom.hh
-//
+#ifndef EVTRANDOMENGINE_HH
+#define EVTRANDOMENGINE_HH
+
// Description:Class to generate random numbers. Single member
// function random is expected to return a random
// number in the range ]0..1[.
-//
-// Modification history:
-//
-// RYD December 25, 1999 Module created
-// RYD October 2, 2006 Converted to a pure interface class
-//
-//------------------------------------------------------------------------
-
-#ifndef EVTRANDOMENGINE_HH
-#define EVTRANDOMENGINE_HH
class EvtRandomEngine {
public:
virtual ~EvtRandomEngine(){};
virtual double random() = 0;
private:
};
#endif
diff --git a/EvtGenBase/EvtRaritaSchwinger.hh b/EvtGenBase/EvtRaritaSchwinger.hh
index 4c78ccb..9e88c5a 100644
--- a/EvtGenBase/EvtRaritaSchwinger.hh
+++ b/EvtGenBase/EvtRaritaSchwinger.hh
@@ -1,124 +1,104 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtGen/EvtRaritaSchwing.hh
-//
-// Description:Class to handle spin 3/2
-//
-// Modification history:
-//
-// RYD April 23, 2000 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTRARITASCHWINGER_HH
#define EVTRARITASCHWINGER_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
class EvtRaritaSchwinger;
EvtRaritaSchwinger rotateEuler( const EvtRaritaSchwinger& rs, double alpha,
double beta, double gamma );
EvtRaritaSchwinger boostTo( const EvtRaritaSchwinger& rs, const EvtVector4R p4 );
EvtRaritaSchwinger boostTo( const EvtRaritaSchwinger& rs,
const EvtVector3R boost );
EvtRaritaSchwinger dirProd( EvtVector4R v, EvtDiracSpinor u );
EvtRaritaSchwinger dirProd( EvtVector4C v, EvtDiracSpinor u );
EvtRaritaSchwinger operator+( const EvtRaritaSchwinger& u1,
const EvtRaritaSchwinger& u2 );
EvtRaritaSchwinger operator-( const EvtRaritaSchwinger& u1,
const EvtRaritaSchwinger& u2 );
EvtComplex operator*( const EvtRaritaSchwinger& u1, const EvtRaritaSchwinger& u2 );
class EvtRaritaSchwinger final {
friend EvtRaritaSchwinger rotateEuler( const EvtRaritaSchwinger& rs,
double alpha, double beta,
double gamma );
friend EvtRaritaSchwinger boostTo( const EvtRaritaSchwinger& rs,
const EvtVector4R p4 );
friend EvtRaritaSchwinger boostTo( const EvtRaritaSchwinger& rs,
const EvtVector3R boost );
friend EvtRaritaSchwinger dirProd( EvtVector4R v, EvtDiracSpinor u );
friend EvtRaritaSchwinger dirProd( EvtVector4C v, EvtDiracSpinor u );
friend EvtRaritaSchwinger operator+( const EvtRaritaSchwinger& u1,
const EvtRaritaSchwinger& u2 );
friend EvtRaritaSchwinger operator-( const EvtRaritaSchwinger& u1,
const EvtRaritaSchwinger& u2 );
friend EvtComplex operator*( const EvtRaritaSchwinger& u1,
const EvtRaritaSchwinger& u2 );
public:
inline EvtRaritaSchwinger();
inline EvtRaritaSchwinger( const EvtRaritaSchwinger& rs );
inline EvtRaritaSchwinger& operator=( const EvtRaritaSchwinger& rs );
void set( int i, int j, const EvtComplex& sp );
void applyRotateEuler( double alpha, double beta, double gamma );
void applyBoostTo( const EvtVector4R p4 );
void applyBoostTo( const EvtVector3R boost );
EvtRaritaSchwinger& operator+=( const EvtRaritaSchwinger& u2 );
EvtRaritaSchwinger& operator-=( const EvtRaritaSchwinger& u2 );
EvtComplex get( int i, int j ) const;
friend std::ostream& operator<<( std::ostream& s,
const EvtRaritaSchwinger& rs );
EvtVector4C getVector( int i ) const;
EvtDiracSpinor getSpinor( int i ) const;
void setVector( int i, const EvtVector4C& v );
void setSpinor( int i, const EvtDiracSpinor& sp );
private:
//First index in spinor index, second is Lorentz index.
EvtComplex _rs[4][4];
};
EvtRaritaSchwinger::EvtRaritaSchwinger()
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
_rs[i][j] = 0.0;
}
}
}
EvtRaritaSchwinger::EvtRaritaSchwinger( const EvtRaritaSchwinger& rs )
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
_rs[i][j] = rs._rs[i][j];
}
}
}
EvtRaritaSchwinger& EvtRaritaSchwinger::operator=( const EvtRaritaSchwinger& rs )
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
_rs[i][j] = rs._rs[i][j];
}
}
return *this;
}
#endif
diff --git a/EvtGenBase/EvtRaritaSchwingerParticle.hh b/EvtGenBase/EvtRaritaSchwingerParticle.hh
index 76579d3..600a383 100644
--- a/EvtGenBase/EvtRaritaSchwingerParticle.hh
+++ b/EvtGenBase/EvtRaritaSchwingerParticle.hh
@@ -1,51 +1,31 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtRaritaSchwingerParticle.hh
-//
-// Description:Represents particles i.e. spin 3/2 particles.
-//
-// Modification history:
-//
-// RYD August 9, 2000 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTRARITASCHWINGERPARTICLE_HH
#define EVTRARITASCHWINGERPARTICLE_HH
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtRaritaSchwinger.hh"
class EvtVector4R;
class EvtRaritaSchwingerParticle : public EvtParticle {
public:
EvtRaritaSchwingerParticle() = default;
void init( EvtId id, const EvtVector4R& p4 ) override;
void init( EvtId id, const EvtVector4R& p4, const EvtRaritaSchwinger&,
const EvtRaritaSchwinger&, const EvtRaritaSchwinger&,
const EvtRaritaSchwinger&, const EvtRaritaSchwinger&,
const EvtRaritaSchwinger&, const EvtRaritaSchwinger&,
const EvtRaritaSchwinger& );
EvtRaritaSchwinger spRSParent( int ) const override;
EvtRaritaSchwinger spRS( int ) const override;
EvtSpinDensity rotateToHelicityBasis() const override;
EvtSpinDensity rotateToHelicityBasis( double alpha, double beta,
double gamma ) const override;
private:
EvtRaritaSchwinger _spinorRest[4];
EvtRaritaSchwinger _spinor[4];
EvtRaritaSchwingerParticle( const EvtRaritaSchwingerParticle& d );
EvtRaritaSchwingerParticle& operator=( const EvtRaritaSchwingerParticle& d );
};
#endif
diff --git a/EvtGenBase/EvtRelBreitWignerBarrierFact.hh b/EvtGenBase/EvtRelBreitWignerBarrierFact.hh
index 7e17f2a..4a1fdbe 100644
--- a/EvtGenBase/EvtRelBreitWignerBarrierFact.hh
+++ b/EvtGenBase/EvtRelBreitWignerBarrierFact.hh
@@ -1,55 +1,34 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtAbsLineShape.hh
-//
-// Description: Class to keep the particle properties for
-// one particle
-//
-// Modification history:
-//
-// Lange March 10, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTRELBREITWIGNERBARRIERFACT_HH
#define EVTRELBREITWIGNERBARRIERFACT_HH
#include "EvtGenBase/EvtAbsLineShape.hh"
class EvtRelBreitWignerBarrierFact : public EvtAbsLineShape {
public:
EvtRelBreitWignerBarrierFact() = default;
EvtRelBreitWignerBarrierFact( double mass, double width, double maxRange,
EvtSpinType::spintype sp );
//figure the m1 and l on the fly
// double mDaug1, double mDaug2, int l);
EvtRelBreitWignerBarrierFact& operator=( const EvtRelBreitWignerBarrierFact& x );
EvtRelBreitWignerBarrierFact( const EvtRelBreitWignerBarrierFact& x );
EvtAbsLineShape* clone() override;
double getMassProb( double mass, double massPar, int nDaug,
double* massDau ) override;
// othDaugId is the other daughter of the parent in the case of a two body decay (only!)
// ie B->rho K rho->pipi, othDaugId = K
double getRandMass( EvtId* parId, int nDaug, EvtId* dauId, EvtId* othDaugId,
double maxMass, double* dauMasses ) override;
void reSetBlatt( double blatt ) override { _blattDecay = blatt; }
void reSetBlattBirth( double blatt ) override { _blattBirth = blatt; }
protected:
double _blattDecay;
double _blattBirth;
bool _errorCond;
};
#endif
diff --git a/EvtGenBase/EvtReport.hh b/EvtGenBase/EvtReport.hh
index ac02043..a395d38 100644
--- a/EvtGenBase/EvtReport.hh
+++ b/EvtGenBase/EvtReport.hh
@@ -1,62 +1,41 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtReport.hh
-//
-// Description:
-//
-// Modification history:
-//
-// Author: Simon Patton
-// Created: Mon Jun 3 12:45:03 EDT 1996
-//
-//------------------------------------------------------------------------
-
#if !defined( TOOLBOX_FUNCTIONS_HH )
#define TOOLBOX_FUNCTIONS_HH
#if !defined( FILENAME_ONLY ) /* relative path includes */
// system include files
#include <iostream>
// user include files
#else /* filename-only includes */
#include <iostream>
#include <types.h>
#endif /* filename-only includes */
// system include files
// user include files
// forward declarations
//
// constants, enums and typedefs
//
enum EvtGenSeverity
{
EVTGEN_EMERGENCY, // fatal
EVTGEN_ALERT, // requires immediate action
EVTGEN_CRITICAL, // serious
EVTGEN_ERROR,
EVTGEN_WARNING,
EVTGEN_NOTICE, // "normal but significant"
EVTGEN_INFO, // informational
EVTGEN_DEBUG // debug
};
// function declaration
std::ostream& EvtGenReport( EvtGenSeverity severity, const char* facility = 0 );
// inline function definitions
#endif /* TOOLBOX_FUNCTIONS_HH */
diff --git a/EvtGenBase/EvtResonance.hh b/EvtGenBase/EvtResonance.hh
index 025622d..2f5d56c 100644
--- a/EvtGenBase/EvtResonance.hh
+++ b/EvtGenBase/EvtResonance.hh
@@ -1,70 +1,50 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtResonance.hh
-//
-// Description:resonance-defining class
-//
-// Modification history:
-//
-// NK September 4, 1997 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTRESONANCE_HH
#define EVTRESONANCE_HH
#include "EvtGenBase/EvtVector4R.hh"
class EvtComplex;
class EvtResonance final {
public:
EvtResonance& operator=( const EvtResonance& );
//constructor with all information about the resonance
EvtResonance( const EvtVector4R& p4_p, const EvtVector4R& p4_d1,
const EvtVector4R& p4_d2, double ampl = 0.0, double theta = 0.0,
double gamma = 0.0, double bwm = 0.0, int spin = 0 );
//accessors
//return 4-momenta of the particles involved
inline const EvtVector4R& p4_p() { return _p4_p; }
inline const EvtVector4R& p4_d1() { return _p4_d1; }
inline const EvtVector4R& p4_d2() { return _p4_d2; }
//return amplitude
inline double amplitude() { return _ampl; }
//return theta
inline double theta() { return _theta; }
//return gamma
inline double gamma() { return _gamma; }
//return bwm
inline double bwm() { return _bwm; }
//return spin
inline int spin() { return _spin; }
//calculate amplitude for this resonance
EvtComplex resAmpl();
//calculate relativistic Breit-Wigner amplitude for P-decays of scalars
EvtComplex relBrWig( int i );
private:
EvtVector4R _p4_p, _p4_d1, _p4_d2;
double _ampl, _theta, _gamma, _bwm;
int _spin;
};
#endif
diff --git a/EvtGenBase/EvtResonance2.hh b/EvtGenBase/EvtResonance2.hh
index 99f330b..8c96fdb 100644
--- a/EvtGenBase/EvtResonance2.hh
+++ b/EvtGenBase/EvtResonance2.hh
@@ -1,71 +1,51 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtResonance2.hh
-//
-// Description:resonance-defining class
-//
-// Modification history:
-//
-// lange Nov 21, 2000 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTRESONANCE2_HH
#define EVTRESONANCE2_HH
#include "EvtGenBase/EvtVector4R.hh"
class EvtComplex;
class EvtResonance2 {
public:
//operator
EvtResonance2& operator=( const EvtResonance2& );
// Constructor
EvtResonance2( const EvtVector4R& p4_p, const EvtVector4R& p4_d1,
const EvtVector4R& p4_d2, double ampl = 1.0,
double theta = 0.0, double gamma = 0.0, double bwm = 0.0,
int spin = 0, bool invmass_angdenom = false,
double barrier1 = 1.5, double barrier2 = 5.0 );
//accessors
//return 4-momenta of the particles involved
inline const EvtVector4R& p4_p() const { return _p4_p; }
inline const EvtVector4R& p4_d1() const { return _p4_d1; }
inline const EvtVector4R& p4_d2() const { return _p4_d2; }
//return amplitude
inline double amplitude() const { return _ampl; }
//return theta
inline double theta() const { return _theta; }
//return gamma
inline double gamma() const { return _gamma; }
//return bwm
inline double bwm() const { return _bwm; }
//return spin
inline int spin() const { return _spin; }
//calculate amplitude for this resonance
EvtComplex resAmpl() const;
private:
EvtVector4R _p4_p, _p4_d1, _p4_d2;
double _ampl, _theta, _gamma, _bwm, _barrier1, _barrier2;
int _spin;
bool _invmass_angdenom;
};
#endif
diff --git a/EvtGenBase/EvtScalarParticle.hh b/EvtGenBase/EvtScalarParticle.hh
index 29eb54a..8418d8c 100644
--- a/EvtGenBase/EvtScalarParticle.hh
+++ b/EvtGenBase/EvtScalarParticle.hh
@@ -1,43 +1,23 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtScalarParticle.hh
-//
-// Description:Class to describe all spin 0 particles.
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSCALARPARTICLE_HH
#define EVTSCALARPARTICLE_HH
#include "EvtGenBase/EvtParticle.hh"
class EvtId;
class EvtScalarParticle : public EvtParticle {
public:
EvtScalarParticle() {}
void init( EvtId part_n, double e, double px, double py, double pz );
void init( EvtId part_n, const EvtVector4R& p ) override;
EvtSpinDensity rotateToHelicityBasis() const override;
EvtSpinDensity rotateToHelicityBasis( double alpha, double beta,
double gamma ) const override;
private:
EvtScalarParticle( const EvtScalarParticle& scalar );
EvtScalarParticle& operator=( const EvtScalarParticle& scalar );
};
#endif
diff --git a/EvtGenBase/EvtSecondary.hh b/EvtGenBase/EvtSecondary.hh
index 6acdcf7..d35bcab 100644
--- a/EvtGenBase/EvtSecondary.hh
+++ b/EvtGenBase/EvtSecondary.hh
@@ -1,55 +1,35 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSecondary.hh
-//
-// Description:Class store decays of secondary particles
-//
-// Modification history:
-//
-// RYD March. 12, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSECONDARY_HH
#define EVTSECONDARY_HH
const int EVTSECONDARYLENGTH = 100;
class EvtParticle;
#include <iosfwd>
class EvtSecondary {
public:
EvtSecondary() {}
~EvtSecondary() {}
void init();
int getStdHepIndex( int i ) { return _stdhepindex[i]; }
int getD1( int i ) { return _id1[i]; }
int getD2( int i ) { return _id2[i]; }
int getD3( int i ) { return _id3[i]; }
int getNPart();
void createSecondary( int stdhepindex, EvtParticle* prnt );
friend std::ostream& operator<<( std::ostream& s,
const EvtSecondary& secondary );
private:
int _npart;
int _stdhepindex[EVTSECONDARYLENGTH];
int _id1[EVTSECONDARYLENGTH];
int _id2[EVTSECONDARYLENGTH];
int _id3[EVTSECONDARYLENGTH];
};
#endif
diff --git a/EvtGenBase/EvtSemiLeptonicAmp.hh b/EvtGenBase/EvtSemiLeptonicAmp.hh
index c305168..6a0a96e 100644
--- a/EvtGenBase/EvtSemiLeptonicAmp.hh
+++ b/EvtGenBase/EvtSemiLeptonicAmp.hh
@@ -1,43 +1,23 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSemiLeptonicAmp.hh
-//
-// Description:Store decay parameters for one decay.
-//
-// Modification history:
-//
-// RYD September 30 1997 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSEMILEPTONICAMP_HH
#define EVTSEMILEPTONICAMP_HH
class EvtAmp;
class EvtParticle;
class EvtSemiLeptonicFF;
class EvtId;
class EvtSemiLeptonicAmp {
public:
virtual ~EvtSemiLeptonicAmp(){};
//Daughters are initialized and have been added to the parent.
//No need to carry around the daughters seperately!
virtual void CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtSemiLeptonicFF* FormFactors ) = 0;
double CalcMaxProb( EvtId parent, EvtId meson, EvtId lepton, EvtId nudaug,
EvtSemiLeptonicFF* FormFactors, int nQ2Bins = 25 );
};
#endif
diff --git a/EvtGenBase/EvtSemiLeptonicBaryonAmp.hh b/EvtGenBase/EvtSemiLeptonicBaryonAmp.hh
index 2e5c668..e7c0d31 100644
--- a/EvtGenBase/EvtSemiLeptonicBaryonAmp.hh
+++ b/EvtGenBase/EvtSemiLeptonicBaryonAmp.hh
@@ -1,62 +1,42 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSemiLeptonicBaryonAmp.hh
-//
-// Description:
-//
-// Modification history:
-//
-// Lange Oct 20, 2004 Created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSEMILEPTONICBARYONAMP_HH
#define EVTSEMILEPTONICBARYONAMP_HH
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
class EvtAmp;
class EvtComplex;
class EvtDiracSpinor;
class EvtParticle;
class EvtRaritaSchwinger;
class EvtSemiLeptonicFF;
class EvtVector4C;
class EvtVector4R;
class EvtSemiLeptonicBaryonAmp : public EvtSemiLeptonicAmp {
public:
//Daughters are initialized and have been added to the parent.
//No need to carry around the daughters seperately!
void CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtSemiLeptonicFF* FormFactors ) override;
void CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtSemiLeptonicFF* FormFactors, EvtComplex r00,
EvtComplex r01, EvtComplex r10, EvtComplex r11 );
double CalcMaxProb( EvtId parent, EvtId meson, EvtId lepton, EvtId nudaug,
EvtSemiLeptonicFF* FormFactors, EvtComplex r00,
EvtComplex r01, EvtComplex r10, EvtComplex r11 );
private:
EvtVector4C EvtBaryonVACurrent( const EvtDiracSpinor& Bf,
const EvtDiracSpinor& Bi,
EvtVector4R parent, EvtVector4R daught,
const double* ff, int pflag );
EvtVector4C EvtBaryonVARaritaCurrent( const EvtRaritaSchwinger& Bf_vect,
const EvtDiracSpinor& Bi,
EvtVector4R parent, EvtVector4R daught,
const double* ff, int pflag );
};
#endif
diff --git a/EvtGenBase/EvtSemiLeptonicFF.hh b/EvtGenBase/EvtSemiLeptonicFF.hh
index 673f6b4..113cbca 100644
--- a/EvtGenBase/EvtSemiLeptonicFF.hh
+++ b/EvtGenBase/EvtSemiLeptonicFF.hh
@@ -1,54 +1,33 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSemiLeptonicFF.hh
-// This is the base class for semileptonic form factor calculations.
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD September 30, 1997 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSEMILEPTONICFF_HH
#define EVTSEMILEPTONICFF_HH
#include "EvtGenBase/EvtId.hh"
class EvtSemiLeptonicFF {
public:
virtual ~EvtSemiLeptonicFF(){};
virtual void getscalarff( EvtId parent, EvtId daught, double t, double mass,
double* fpf, double* fmf ) = 0;
virtual void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) = 0;
virtual void gettensorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) = 0;
virtual void getbaryonff( EvtId parent, EvtId daught, double t,
double m_meson, double* f1v, double* f1a,
double* f2v, double* f2a ) = 0;
virtual void getdiracff( EvtId parent, EvtId daught, double q2, double mass,
double* f1, double* f2, double* f3, double* g1,
double* g2, double* g3 ) = 0;
virtual void getraritaff( EvtId parent, EvtId daught, double q2,
double mass, double* f1, double* f2, double* f3,
double* f4, double* g1, double* g2, double* g3,
double* g4 ) = 0;
};
#endif
diff --git a/EvtGenBase/EvtSemiLeptonicScalarAmp.hh b/EvtGenBase/EvtSemiLeptonicScalarAmp.hh
index c550874..ec390ff 100644
--- a/EvtGenBase/EvtSemiLeptonicScalarAmp.hh
+++ b/EvtGenBase/EvtSemiLeptonicScalarAmp.hh
@@ -1,37 +1,17 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSemiLeptonicScalarAmp.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSEMILEPTONICSCALARAMP_HH
#define EVTSEMILEPTONICSCALARAMP_HH
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
class EvtAmp;
class EvtParticle;
class EvtSemiLeptonicFF;
class EvtSemiLeptonicScalarAmp : public EvtSemiLeptonicAmp {
//Daughters are initialized and have been added to the parent.
//No need to carry around the daughters seperately!
void CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtSemiLeptonicFF* FormFactors ) override;
};
#endif
diff --git a/EvtGenBase/EvtSemiLeptonicTensorAmp.hh b/EvtGenBase/EvtSemiLeptonicTensorAmp.hh
index 0398f45..d1423cb 100644
--- a/EvtGenBase/EvtSemiLeptonicTensorAmp.hh
+++ b/EvtGenBase/EvtSemiLeptonicTensorAmp.hh
@@ -1,39 +1,18 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSemiLeptonicTensorAmp.hh
-//
-// Description: Class for calcultaion of amplitude for semileptonic
-// decay to tensor.
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSEMILEPTONICTENSORAMP_HH
#define EVTSEMILEPTONICTENSORAMP_HH
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
class EvtParticle;
class EvtSemiLeptonicFF;
class EvtAmp;
class EvtSemiLeptonicTensorAmp : public EvtSemiLeptonicAmp {
public:
//Daughters are initialized and have been added to the parent.
//No need to carry around the daughters seperately!
void CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtSemiLeptonicFF* FormFactors ) override;
};
#endif
diff --git a/EvtGenBase/EvtSemiLeptonicVectorAmp.hh b/EvtGenBase/EvtSemiLeptonicVectorAmp.hh
index 57fe2e2..54bb58a 100644
--- a/EvtGenBase/EvtSemiLeptonicVectorAmp.hh
+++ b/EvtGenBase/EvtSemiLeptonicVectorAmp.hh
@@ -1,39 +1,18 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSemiLeptonicVectorAmp.hh
-//
-// Description: Class for calcultaion of amplitude for semileptonic
-// decay to a vector particle.
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSEMILEPTONICVECTORAMP_HH
#define EVTSEMILEPTONICVECTORAMP_HH
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
class EvtParticle;
class EvtAmp;
class EvtSemiLeptonicFF;
class EvtSemiLeptonicVectorAmp : public EvtSemiLeptonicAmp {
public:
//Daughters are initialized and have been added to the parent.
//No need to carry around the daughters seperately!
void CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtSemiLeptonicFF* FormFactors ) override;
};
#endif
diff --git a/EvtGenBase/EvtSimpleRandomEngine.hh b/EvtGenBase/EvtSimpleRandomEngine.hh
index d814010..3779e75 100644
--- a/EvtGenBase/EvtSimpleRandomEngine.hh
+++ b/EvtGenBase/EvtSimpleRandomEngine.hh
@@ -1,40 +1,18 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtRandom.hh
-//
-// Description:Class to generate random numbers. Single member
-// function random is expected to return a random
-// number in the range ]0..1[.
-//
-// Modification history:
-//
-// RYD December 25, 1999 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSIMPLERANDOMENGINE_HH
#define EVTSIMPLERANDOMENGINE_HH
#include "EvtGenBase/EvtRandomEngine.hh"
class EvtSimpleRandomEngine : public EvtRandomEngine {
public:
EvtSimpleRandomEngine() { _next = 1; }
void reset() { _next = 1; }
double random() override;
private:
unsigned long int _next;
};
#endif
diff --git a/EvtGenBase/EvtSpinDensity.hh b/EvtGenBase/EvtSpinDensity.hh
index 95fd5d5..1cb2e91 100644
--- a/EvtGenBase/EvtSpinDensity.hh
+++ b/EvtGenBase/EvtSpinDensity.hh
@@ -1,48 +1,30 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSpinDensity.hh
-//
-// Description: This class holds a spin density matrix, it is
-// a complex nxn matrix.
-//
-// Modification history:
-//
-// RYD May 29, 1997 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSPINDENSITY_HH
#define EVTSPINDENSITY_HH
#include "EvtGenBase/EvtComplex.hh"
+// Description: This class holds a spin density matrix, it is
+// a complex nxn matrix.
+
class EvtSpinDensity {
public:
EvtSpinDensity( const EvtSpinDensity& density );
EvtSpinDensity& operator=( const EvtSpinDensity& density );
virtual ~EvtSpinDensity();
EvtSpinDensity();
void setDim( int n );
int getDim() const;
void set( int i, int j, const EvtComplex& rhoij );
const EvtComplex& get( int i, int j ) const;
double normalizedProb( const EvtSpinDensity& d );
friend std::ostream& operator<<( std::ostream& s, const EvtSpinDensity& d );
void setDiag( int n );
int check();
private:
EvtComplexPtrPtr rho;
int dim;
};
#endif
diff --git a/EvtGenBase/EvtSpinType.hh b/EvtGenBase/EvtSpinType.hh
index 22f21df..99757e8 100644
--- a/EvtGenBase/EvtSpinType.hh
+++ b/EvtGenBase/EvtSpinType.hh
@@ -1,52 +1,31 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSpinType.hh
-//
-// Description: Class for enumarating the different types of
-// particles and the number of states they have.
-//
-// Modification history:
-//
-// RYD August 12, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSPINTYPE_HH
#define EVTSPINTYPE_HH
#include "EvtGenBase/EvtReport.hh"
class EvtSpinType {
public:
enum spintype
{
SCALAR,
VECTOR,
TENSOR,
DIRAC,
PHOTON,
NEUTRINO,
STRING,
RARITASCHWINGER,
SPIN3,
SPIN4,
SPIN5HALF,
SPIN7HALF
};
static int getSpin2( spintype stype );
static int getSpinStates( spintype stype );
private:
};
#endif
diff --git a/EvtGenBase/EvtStatus.hh b/EvtGenBase/EvtStatus.hh
index bddf906..4d7c7c9 100644
--- a/EvtGenBase/EvtStatus.hh
+++ b/EvtGenBase/EvtStatus.hh
@@ -1,59 +1,30 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtGen.hh
-//
-// Description:Main class to provide user interface to EvtGen.
-//
-// Modification history:
-//
-// RYD March 24, 1998 Module created
-//
-// DJL August 10, 1998 Additional Event member function added
-//
-// RYD December 25, 1999 Any application using EvtGen will need
-// to instantiate an instance of this class
-// and hold on to it untill done generating
-// events. This class will now hold data used
-// for the lifetime of the generator.
-// Lange April 18, 2002 - split "status" info into own class
-
-//------------------------------------------------------------------------
-
#ifndef EVTSTATUS_HH
#define EVTSTATUS_HH
class EvtStatus {
public:
static void setRejectFlag()
{
int* temp = rejectFlag();
*temp = 1;
return;
}
static void initRejectFlag()
{
int* temp = rejectFlag();
*temp = 0;
return;
}
static int* rejectFlag()
{
static int rejectEvent = 0;
return &rejectEvent;
}
static int getRejectFlag()
{
int* temp = rejectFlag();
return *temp;
}
};
#endif
diff --git a/EvtGenBase/EvtStdHep.hh b/EvtGenBase/EvtStdHep.hh
index e02f841..a7224b7 100644
--- a/EvtGenBase/EvtStdHep.hh
+++ b/EvtGenBase/EvtStdHep.hh
@@ -1,68 +1,48 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtStdHep.hh
-//
-// Description: Class produce the StdHep representation of the decay.
-//
-// Modification history:
-//
-// RYD March. 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSTDHEP_HH
#define EVTSTDHEP_HH
#include "EvtGenBase/EvtVector4R.hh"
#include <iosfwd>
const int EVTSTDHEPLENGTH = 1000;
class EvtStdHep {
public:
EvtStdHep() {}
~EvtStdHep() {}
void init();
int getFirstMother( int i ) { return _prntfirst[i]; }
int getLastMother( int i ) { return _prntlast[i]; }
int getFirstDaughter( int i ) { return _daugfirst[i]; }
int getLastDaughter( int i ) { return _dauglast[i]; }
int getStdHepID( int i ) { return _id[i]; }
int getIStat( int i ) { return _istat[i]; }
EvtVector4R getP4( int i ) { return _p4[i]; }
EvtVector4R getX4( int i ) { return _x[i]; }
void translate( EvtVector4R d );
int getNPart();
void createParticle( EvtVector4R p4, EvtVector4R x, int prntfirst,
int prntlast, int id );
friend std::ostream& operator<<( std::ostream& s, const EvtStdHep& stdhep );
private:
int _npart;
EvtVector4R _p4[EVTSTDHEPLENGTH];
EvtVector4R _x[EVTSTDHEPLENGTH];
int _prntfirst[EVTSTDHEPLENGTH];
int _prntlast[EVTSTDHEPLENGTH];
int _daugfirst[EVTSTDHEPLENGTH];
int _dauglast[EVTSTDHEPLENGTH];
int _id[EVTSTDHEPLENGTH];
int _istat[EVTSTDHEPLENGTH];
};
#endif
diff --git a/EvtGenBase/EvtStreamAdapter.hh b/EvtGenBase/EvtStreamAdapter.hh
index facd7b0..1d6a175 100644
--- a/EvtGenBase/EvtStreamAdapter.hh
+++ b/EvtGenBase/EvtStreamAdapter.hh
@@ -1,90 +1,81 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtStreamAdapter.hh,v 1.2 2009-03-16 16:40:16 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
+#ifndef EVT_STREAM_ADAPTER_HH
+#define EVT_STREAM_ADAPTER_HH
// Stream adapters are used to convert a stream-like input (for example,
// a file containing N entries) to an STL like iterator interface. There
// must be a way to get point from the stream, and also an indicator of the
// end of the stream.
-#ifndef EVT_STREAM_ADAPTER_HH
-#define EVT_STREAM_ADAPTER_HH
-
template <class Point>
class EvtStreamAdapter {
public:
EvtStreamAdapter() {}
virtual ~EvtStreamAdapter() {}
virtual EvtStreamAdapter* clone() const = 0;
virtual Point currentValue() = 0;
virtual void advance() = 0;
virtual bool pastEnd() = 0;
};
// N points are read from a generated stream.
template <class Point, class Generator>
class EvtGenStreamAdapter : public EvtStreamAdapter<Point> {
public:
EvtGenStreamAdapter( Generator gen, int count ) :
_gen( gen ), _count( count )
{
}
virtual ~EvtGenStreamAdapter() {}
EvtStreamAdapter<Point>* clone() const override
{
return new EvtGenStreamAdapter( *this );
}
Point currentValue() override { return _gen(); }
bool pastEnd() override { return ( _count <= 0 ); }
void advance() override { _count--; }
private:
Generator _gen;
int _count; // also serves as past the end indicator
};
// Only points satisfying a predicate are read from the stream.
template <class Point, class Iterator, class Predicate>
class EvtPredStreamAdapter : public EvtStreamAdapter<Point> {
public:
EvtPredStreamAdapter( Predicate pred, Iterator it, Iterator end ) :
_pred( pred ), _it( it ), _end( end )
{
}
virtual ~EvtPredStreamAdapter() {}
virtual EvtStreamAdapter<Point>* clone() const
{
return new EvtPredStreamAdapter( *this );
}
virtual Point currentValue()
{
Point value;
while ( !pastEnd() ) {
value = *_it;
if ( _pred( value ) )
break;
_it++;
}
return value;
}
virtual bool pastEnd() { return _it == _end; }
virtual void advance() { _it++; }
private:
Predicate _pred;
Iterator _it;
Iterator _end;
};
#endif
diff --git a/EvtGenBase/EvtStreamInputIterator.hh b/EvtGenBase/EvtStreamInputIterator.hh
index 91b93b9..75fcacc 100644
--- a/EvtGenBase/EvtStreamInputIterator.hh
+++ b/EvtGenBase/EvtStreamInputIterator.hh
@@ -1,106 +1,97 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtStreamInputIterator.hh,v 1.2 2009-03-16 16:41:09 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Adapters are used to convert various types of input streams
-// into an iteratable interface.
-
#ifndef EVT_STREAM_INPUT_ITERATOR_HH
#define EVT_STREAM_INPUT_ITERATOR_HH
#include "EvtGenBase/EvtStreamAdapter.hh"
#include <cstddef>
#include <iterator>
using std::input_iterator_tag;
+// Adapters are used to convert various types of input streams
+// into an iteratable interface.
+
template <class Point>
class EvtStreamInputIterator {
public:
typedef input_iterator_tag iterator_category;
typedef Point value_type;
typedef ptrdiff_t difference_type;
typedef const Point* pointer;
typedef const Point& reference;
EvtStreamInputIterator() : _counter( 0 ) {}
EvtStreamInputIterator( const EvtStreamInputIterator& other ) :
_counter( other._counter ? other._counter->clone() : 0 ),
_currentValue( other._currentValue )
{
}
EvtStreamInputIterator( EvtStreamAdapter<Point>& counter ) :
_counter( counter.clone() )
{
_currentValue = _counter->currentValue();
}
~EvtStreamInputIterator()
{
if ( _counter )
delete _counter;
}
reference operator*() const { return _currentValue; }
EvtStreamInputIterator& operator++()
{
_read();
return *this;
}
EvtStreamInputIterator operator++( int )
{
EvtStreamInputIterator tmp = *this;
_read();
return tmp;
}
bool operator==( const EvtStreamInputIterator& other ) const
{
// Equality is only defined for two past the end iterators
return ( pastEnd() && other.pastEnd() );
}
protected:
EvtStreamAdapter<Point>* _counter;
value_type _currentValue;
bool pastEnd() const
{
bool ret = true;
if ( _counter )
ret = _counter->pastEnd();
return ret;
}
// Advances the iterator
void _read()
{
_counter->advance();
_currentValue = _counter->currentValue();
}
};
// For adaptable generators these shorthand functions can be used
// to construct iterators.
template <class Generator>
EvtStreamInputIterator<typename Generator::result_type> iter( Generator gen,
int N = 0 )
{
typedef typename Generator::result_type Point;
EvtGenStreamAdapter<Point, Generator> counter( gen, N );
return EvtStreamInputIterator<Point>( counter );
}
#endif
diff --git a/EvtGenBase/EvtStringHash.hh b/EvtGenBase/EvtStringHash.hh
index 35841b4..f4f1750 100644
--- a/EvtGenBase/EvtStringHash.hh
+++ b/EvtGenBase/EvtStringHash.hh
@@ -1,147 +1,127 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSpinDensity.hh
-//
-// Description: Templated class to implement a hash table on string
-//
-// Modification history:
-//
-// RYD Aug 2, 2006 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSTRINGHASH_HH
#define EVTSTRINGHASH_HH
#include <string>
template <class T>
class EvtStringHash {
public:
inline EvtStringHash( int size );
inline void add( const std::string& str, T* data );
inline T* get( const std::string& str );
inline ~EvtStringHash();
private:
EvtStringHash();
int _size;
inline int hash( const std::string& str );
std::string*** _strings;
T*** _data;
int* _entries;
};
template <class T>
EvtStringHash<T>::EvtStringHash( int size )
{
_size = size;
typedef std::string** EvtStringPtrPtr;
typedef T** TPtrPtr;
_strings = new EvtStringPtrPtr[_size];
_data = new TPtrPtr[_size];
_entries = new int[_size];
int i;
for ( i = 0; i < _size; i++ ) {
_entries[i] = 0;
}
}
template <class T>
EvtStringHash<T>::~EvtStringHash()
{
int i;
for ( i = 0; i < _size; i++ ) {
int j;
for ( j = 0; j < _entries[i]; j++ ) {
delete _strings[i][j];
}
if ( _entries[i] > 0 ) {
delete[] _strings[i];
delete[] _data[i];
}
}
delete[] _strings;
delete[] _data;
delete[] _entries;
}
template <class T>
void EvtStringHash<T>::add( const std::string& str, T* data )
{
int ihash = hash( str );
typedef std::string* EvtStringPtr;
typedef T* TPtr;
std::string** newstrings = new EvtStringPtr[_entries[ihash] + 1];
T** newdata = new TPtr[_entries[ihash] + 1];
int i;
for ( i = 0; i < _entries[ihash]; i++ ) {
newstrings[i] = _strings[ihash][i];
newdata[i] = _data[ihash][i];
}
newstrings[_entries[ihash]] = new std::string;
*( newstrings[_entries[ihash]] ) = str;
newdata[_entries[ihash]] = data;
if ( _entries[ihash] != 0 ) {
delete[] _strings[ihash];
delete[] _data[ihash];
}
_entries[ihash]++;
_strings[ihash] = newstrings;
_data[ihash] = newdata;
}
template <class T>
T* EvtStringHash<T>::get( const std::string& str )
{
int ihash = hash( str );
int i;
for ( i = 0; i < _entries[ihash]; i++ ) {
if ( *( _strings[ihash][i] ) == str )
return _data[ihash][i];
}
return 0;
}
template <class T>
int EvtStringHash<T>::hash( const std::string& str )
{
const char* cstr = str.c_str();
int i = 0;
int value = 0;
while ( cstr[i] != 0 ) {
value += (int)cstr[i];
i++;
}
return value % _size;
}
#endif
diff --git a/EvtGenBase/EvtStringParticle.hh b/EvtGenBase/EvtStringParticle.hh
index 508f427..af1fc6d 100644
--- a/EvtGenBase/EvtStringParticle.hh
+++ b/EvtGenBase/EvtStringParticle.hh
@@ -1,46 +1,28 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtStringParticle.hh
-//
-// Description: EvtStringParticle particle is a class to keep the
-// collection of partons that are generated by jetset.
-// This is supposedly the _only_ use of this particle.
-//
-// Modification history:
-//
-// RYD Febuary 27, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSTRINGPARTICLE_HH
#define EVTSTRINGPARTICLE_HH
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtParticle.hh"
+// Description: EvtStringParticle particle is a class to keep the
+// collection of partons that are generated by jetset.
+// This is supposedly the _only_ use of this particle.
+
class EvtStringParticle : public EvtParticle {
public:
void init( EvtId id, const EvtVector4R& p4 ) override;
void initPartons( int npartons, EvtVector4R* p4partons, EvtId* idpartons );
int getNPartons();
EvtId getIdParton( int i );
EvtVector4R getP4Parton( int i );
EvtSpinDensity rotateToHelicityBasis() const override;
EvtSpinDensity rotateToHelicityBasis( double alpha, double beta,
double gamma ) const override;
private:
std::vector<EvtVector4R> _p4partons;
std::vector<EvtId> _idpartons;
EvtStringParticle& operator=( const EvtStringParticle& d );
};
#endif
diff --git a/EvtGenBase/EvtSymTable.hh b/EvtGenBase/EvtSymTable.hh
index df35ef7..4950996 100644
--- a/EvtGenBase/EvtSymTable.hh
+++ b/EvtGenBase/EvtSymTable.hh
@@ -1,41 +1,23 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSymTable.hh
-//
-// Description: Class to hold the symbols that are defined
-// in the DECAY files.
-//
-// Modification history:
-//
-// RYD May 8, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSYMTABLE_HH
#define EVTSYMTABLE_HH
#include <map>
#include <string>
+// Description: Class to hold the symbols that are defined
+// in the DECAY files.
+
class EvtSymTable {
public:
EvtSymTable();
~EvtSymTable();
static void define( const std::string& name, std::string d );
static std::string get( const std::string& name, int& ierr );
private:
static std::map<std::string, std::string> _symMap;
};
#endif
diff --git a/EvtGenBase/EvtTensor3C.hh b/EvtGenBase/EvtTensor3C.hh
index 35127f3..e708f66 100644
--- a/EvtGenBase/EvtTensor3C.hh
+++ b/EvtGenBase/EvtTensor3C.hh
@@ -1,135 +1,115 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtTensor3C.hh
-//
-// Description: Class to handle complex 3 tensors
-//
-// Modification history:
-//
-// RYD September 14, 1997 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTTENSOR3C_HH
#define EVTTENSOR3C_HH
#include "EvtGenBase/EvtComplex.hh"
#include <iostream>
class EvtVector3C;
class EvtVector3R;
class EvtTensor3C;
namespace EvtGenFunctions {
EvtTensor3C eps( const EvtVector3R& v );
EvtTensor3C rotateEuler( const EvtTensor3C& v, double phi, double theta,
double ksi );
EvtTensor3C directProd( const EvtVector3C& c1, const EvtVector3C& c2 );
EvtTensor3C directProd( const EvtVector3C& c1, const EvtVector3R& c2 );
EvtTensor3C directProd( const EvtVector3R& c1, const EvtVector3R& c2 );
} // namespace EvtGenFunctions
class EvtTensor3C final {
friend EvtTensor3C operator*( const EvtComplex& c, const EvtTensor3C& t2 );
friend EvtTensor3C operator*( const double d, const EvtTensor3C& t2 );
friend EvtTensor3C operator*( const EvtTensor3C& t2, const EvtComplex& c );
friend EvtTensor3C operator*( const EvtTensor3C& t2, const double d );
friend EvtTensor3C operator+( const EvtTensor3C& t1, const EvtTensor3C& t2 );
friend EvtTensor3C operator-( const EvtTensor3C& t1, const EvtTensor3C& t2 );
friend EvtTensor3C EvtGenFunctions::directProd( const EvtVector3C& c1,
const EvtVector3C& c2 );
friend EvtTensor3C EvtGenFunctions::directProd( const EvtVector3C& c1,
const EvtVector3R& c2 );
friend EvtTensor3C EvtGenFunctions::directProd( const EvtVector3R& c1,
const EvtVector3R& c2 );
friend EvtTensor3C conj( const EvtTensor3C& t2 );
//Contract the second index of two tensors result(i,j) = t1(i,k)t2(j,k)
friend EvtTensor3C cont22( const EvtTensor3C& t1, const EvtTensor3C& t2 );
//Contract the first index of two tensors result(i,j) = t1(k,i)t2(k,j)
friend EvtTensor3C cont11( const EvtTensor3C& t1, const EvtTensor3C& t2 );
//Contract the last index of eps_{ijk} with w
friend EvtTensor3C EvtGenFunctions::eps( const EvtVector3R& v );
friend std::ostream& operator<<( std::ostream& c, const EvtTensor3C& v );
public:
EvtTensor3C();
EvtTensor3C( const EvtTensor3C& t1 );
EvtTensor3C( double d11, double d22, double d33 );
EvtTensor3C& operator=( const EvtTensor3C& t1 );
inline void set( int i, int j, const EvtComplex& c );
inline const EvtComplex& get( int i, int j ) const;
inline EvtComplex trace() const;
static const EvtTensor3C& id();
void zero();
void applyRotateEuler( double phi, double theta, double ksi );
EvtTensor3C operator+=( const EvtTensor3C& t2 );
EvtTensor3C operator-=( const EvtTensor3C& t2 );
EvtTensor3C operator*=( const double d );
EvtTensor3C operator*=( const EvtComplex& c );
EvtTensor3C conj() const;
EvtVector3C cont1( const EvtVector3C& v ) const;
EvtVector3C cont2( const EvtVector3C& v ) const;
EvtVector3C cont1( const EvtVector3R& v ) const;
EvtVector3C cont2( const EvtVector3R& v ) const;
private:
EvtComplex t[3][3];
};
inline EvtTensor3C operator*( const EvtComplex& c, const EvtTensor3C& t2 )
{
return EvtTensor3C( t2 ) *= c;
}
inline EvtTensor3C operator*( const double d, const EvtTensor3C& t2 )
{
return EvtTensor3C( t2 ) *= d;
}
inline EvtTensor3C operator*( const EvtTensor3C& t2, const EvtComplex& c )
{
return EvtTensor3C( t2 ) *= c;
}
inline EvtTensor3C operator*( const EvtTensor3C& t2, const double d )
{
return EvtTensor3C( t2 ) *= d;
}
inline EvtTensor3C operator+( const EvtTensor3C& t1, const EvtTensor3C& t2 )
{
return EvtTensor3C( t1 ) += t2;
}
inline EvtTensor3C operator-( const EvtTensor3C& t1, const EvtTensor3C& t2 )
{
return EvtTensor3C( t1 ) -= t2;
}
inline void EvtTensor3C::set( int i, int j, const EvtComplex& c )
{
t[i][j] = c;
}
inline const EvtComplex& EvtTensor3C::get( int i, int j ) const
{
return t[i][j];
}
inline EvtComplex EvtTensor3C::trace() const
{
return t[0][0] + t[1][1] + t[2][2];
}
#endif
diff --git a/EvtGenBase/EvtTensor4C.hh b/EvtGenBase/EvtTensor4C.hh
index d94caee..ded469d 100644
--- a/EvtGenBase/EvtTensor4C.hh
+++ b/EvtGenBase/EvtTensor4C.hh
@@ -1,122 +1,102 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtTensor4C.hh
-//
-// Description: Class to handle complex tensor manipulation
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EvtTensor4C_HH
#define EvtTensor4C_HH
#include "EvtGenBase/EvtComplex.hh"
//Class to handle 4D complex valued tensors.
class EvtTensor4C;
class EvtVector4C;
class EvtVector4R;
class EvtVector3R;
namespace EvtGenFunctions {
EvtTensor4C directProd( const EvtVector4R& c1, const EvtVector4R& c2 );
EvtTensor4C directProd( const EvtVector4C& c1, const EvtVector4C& c2 );
EvtTensor4C directProd( const EvtVector4C& c1, const EvtVector4R& c2 );
} // namespace EvtGenFunctions
class EvtTensor4C final {
friend EvtTensor4C EvtGenFunctions::directProd( const EvtVector4R& c1,
const EvtVector4R& c2 );
friend EvtTensor4C EvtGenFunctions::directProd( const EvtVector4C& c1,
const EvtVector4C& c2 );
friend EvtTensor4C EvtGenFunctions::directProd( const EvtVector4C& c1,
const EvtVector4R& c2 );
friend EvtTensor4C rotateEuler( const EvtTensor4C& e, double alpha,
double beta, double gamma );
friend EvtTensor4C boostTo( const EvtTensor4C& e, const EvtVector4R p4 );
friend EvtTensor4C boostTo( const EvtTensor4C& e, const EvtVector3R boost );
friend EvtTensor4C dual( const EvtTensor4C& t2 );
friend EvtTensor4C conj( const EvtTensor4C& t2 );
friend EvtTensor4C cont22( const EvtTensor4C& t1, const EvtTensor4C& t2 );
friend EvtTensor4C cont11( const EvtTensor4C& t1, const EvtTensor4C& t2 );
friend EvtTensor4C operator*( const EvtTensor4C& t1, const EvtComplex& c );
friend EvtTensor4C operator*( const EvtComplex& c, const EvtTensor4C& t1 );
friend EvtTensor4C operator*( const EvtTensor4C& t1, double d );
friend EvtTensor4C operator*( double d, const EvtTensor4C& t1 );
friend EvtComplex cont( const EvtTensor4C& t1, const EvtTensor4C& t2 );
friend EvtTensor4C operator+( const EvtTensor4C& t1, const EvtTensor4C& t2 );
friend EvtTensor4C operator-( const EvtTensor4C& t1, const EvtTensor4C& t2 );
public:
EvtTensor4C() { ; }
EvtTensor4C( double t00, double t11, double t22, double t33 )
{
setdiag( t00, t11, t22, t33 );
}
EvtTensor4C( const EvtTensor4C& t1 );
EvtTensor4C& operator=( const EvtTensor4C& t1 );
EvtTensor4C& operator*=( const EvtComplex& c );
EvtTensor4C& operator*=( double d );
EvtTensor4C& addDirProd( const EvtVector4R& p1, const EvtVector4R& p2 );
static const EvtTensor4C& g();
inline void set( int i, int j, const EvtComplex& c );
void setdiag( double t00, double t11, double t22, double t33 );
inline const EvtComplex& get( int i, int j ) const;
inline EvtComplex trace() const;
void zero();
void applyRotateEuler( double alpha, double beta, double gamma );
void applyBoostTo( const EvtVector4R& p4 );
void applyBoostTo( const EvtVector3R& boost );
friend std::ostream& operator<<( std::ostream& s, const EvtTensor4C& t );
EvtTensor4C& operator+=( const EvtTensor4C& t2 );
EvtTensor4C& operator-=( const EvtTensor4C& t2 );
EvtTensor4C conj() const;
EvtVector4C cont1( const EvtVector4C& v4 ) const;
EvtVector4C cont2( const EvtVector4C& v4 ) const;
EvtVector4C cont1( const EvtVector4R& v4 ) const;
EvtVector4C cont2( const EvtVector4R& v4 ) const;
private:
EvtComplex t[4][4];
};
inline EvtTensor4C operator+( const EvtTensor4C& t1, const EvtTensor4C& t2 )
{
return EvtTensor4C( t1 ) += t2;
}
inline EvtTensor4C operator-( const EvtTensor4C& t1, const EvtTensor4C& t2 )
{
return EvtTensor4C( t1 ) -= t2;
}
inline void EvtTensor4C::set( int i, int j, const EvtComplex& c )
{
t[i][j] = c;
}
inline const EvtComplex& EvtTensor4C::get( int i, int j ) const
{
return t[i][j];
}
inline EvtComplex EvtTensor4C::trace() const
{
return t[0][0] - t[1][1] - t[2][2] - t[3][3];
}
#endif
diff --git a/EvtGenBase/EvtTensorParticle.hh b/EvtGenBase/EvtTensorParticle.hh
index 77ac643..dc91e36 100644
--- a/EvtGenBase/EvtTensorParticle.hh
+++ b/EvtGenBase/EvtTensorParticle.hh
@@ -1,51 +1,31 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtTensorParticle.hh
-//
-// Description: Class to describe tensor ( spin 2 ) particles.
-//
-// Modification history:
-//
-// DJL/RYD Sept. 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTTENSORPARTICLE_HH
#define EVTTENSORPARTICLE_HH
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtTensor4C.hh"
class EvtTensorParticle : public EvtParticle {
public:
EvtTensorParticle() = default;
void init( EvtId part_n, double e, double px, double py, double pz );
void init( EvtId part_n, const EvtVector4R& p4 ) override;
void init( EvtId part_n, const EvtVector4R& p4, const EvtTensor4C&,
const EvtTensor4C&, const EvtTensor4C&, const EvtTensor4C&,
const EvtTensor4C& );
//Returns polarization tensors.
EvtTensor4C epsTensorParent( int i ) const override;
EvtTensor4C epsTensor( int i ) const override;
EvtSpinDensity rotateToHelicityBasis() const override;
EvtSpinDensity rotateToHelicityBasis( double alpha, double beta,
double gamma ) const override;
private:
EvtTensor4C eps[5]; //eps1,eps2,eps3,eps4,eps5;
EvtTensorParticle( const EvtTensorParticle& tensor );
EvtTensorParticle& operator=( const EvtTensorParticle& tensor );
};
#endif
diff --git a/EvtGenBase/EvtTwoBodyKine.hh b/EvtGenBase/EvtTwoBodyKine.hh
index d250864..6f174ad 100644
--- a/EvtGenBase/EvtTwoBodyKine.hh
+++ b/EvtGenBase/EvtTwoBodyKine.hh
@@ -1,55 +1,46 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtTwoBodyKine.hh,v 1.2 2009-03-16 16:34:38 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Descriptions of the kinematics of a two-body decay.
-
#ifndef EVT_TWO_BODY_KINE_HH
#define EVT_TWO_BODY_KINE_HH
#include <iostream>
+// Descriptions of the kinematics of a two-body decay.
+
class EvtTwoBodyKine {
public:
enum Index
{
A,
B,
AB
};
EvtTwoBodyKine();
EvtTwoBodyKine( double mA, double mB, double mAB );
// Accessors
inline double mA() const { return _mA; }
inline double mB() const { return _mB; }
inline double mAB() const { return _mAB; }
double m( Index i ) const;
// Momentum of the other two particles in the
// rest-frame of particle i.
double p( Index i = AB ) const;
// Energy of particle i in the rest frame of particle j
double e( Index i, Index j ) const;
void print( std::ostream& os ) const;
private:
double _mA;
double _mB;
double _mAB;
};
std::ostream& operator<<( std::ostream& os, const EvtTwoBodyKine& p );
#endif
diff --git a/EvtGenBase/EvtTwoBodyVertex.hh b/EvtGenBase/EvtTwoBodyVertex.hh
index daa411c..df5e8c0 100644
--- a/EvtGenBase/EvtTwoBodyVertex.hh
+++ b/EvtGenBase/EvtTwoBodyVertex.hh
@@ -1,50 +1,41 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtTwoBodyVertex.hh,v 1.2 2009-03-16 16:34:38 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Two-body propagator vertex AB->A,B with an attached Blatt-Weisskopf form factor.
-
#ifndef EVT_TWO_BODY_VERTEX_HH
#define EVT_TWO_BODY_VERTEX_HH
#include "EvtGenBase/EvtBlattWeisskopf.hh"
#include "EvtGenBase/EvtTwoBodyKine.hh"
#include <iostream>
#include <memory>
+// Two-body propagator vertex AB->A,B with an attached Blatt-Weisskopf form factor.
+
class EvtTwoBodyVertex {
public:
EvtTwoBodyVertex();
EvtTwoBodyVertex( double mA, double mB, double mAB, int L );
EvtTwoBodyVertex( const EvtTwoBodyVertex& other );
EvtTwoBodyVertex& operator=( const EvtTwoBodyVertex& other );
double widthFactor( EvtTwoBodyKine x ) const;
double formFactor( EvtTwoBodyKine x ) const;
double phaseSpaceFactor( EvtTwoBodyKine x, EvtTwoBodyKine::Index ) const;
inline int L() const { return _LL; }
inline double mA() const { return _kine.mA(); }
inline double mB() const { return _kine.mB(); }
inline double mAB() const { return _kine.mAB(); }
inline double pD() const { return _p0; }
void print( std::ostream& os ) const;
void set_f( double R );
private:
EvtTwoBodyKine _kine;
int _LL;
double _p0;
std::unique_ptr<EvtBlattWeisskopf> _f; // optional Blatt-Weisskopf form factor
};
std::ostream& operator<<( std::ostream& os, const EvtTwoBodyVertex& v );
#endif
diff --git a/EvtGenBase/EvtValError.hh b/EvtGenBase/EvtValError.hh
index 26b0a23..2145ce2 100644
--- a/EvtGenBase/EvtValError.hh
+++ b/EvtGenBase/EvtValError.hh
@@ -1,81 +1,72 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtValError.hh,v 1.2 2009-03-16 16:34:38 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Value and its associated error. E.g. this could be interval size and
-// the error associated with numerical integration.
-
#ifndef EVT_VAL_ERROR_HH
#define EVT_VAL_ERROR_HH
#include <assert.h>
#include <iostream>
#include <math.h>
+// Value and its associated error. E.g. this could be interval size and
+// the error associated with numerical integration.
+
class EvtValError final {
public:
EvtValError();
EvtValError( double val );
EvtValError( double val, double err );
EvtValError( const EvtValError& other );
inline int valueKnown() const { return _valKnown; }
inline double value() const
{
assert( _valKnown );
return _val;
}
inline int errorKnown() const { return _errKnown; }
inline double error() const
{
assert( _errKnown );
return _err;
}
double prec() const;
void operator=( const EvtValError& other );
void operator*=( const EvtValError& other );
void operator/=( const EvtValError& other );
void operator+=( const EvtValError& other );
void operator*=( double c );
void print( std::ostream& ) const;
private:
int _valKnown;
double _val;
int _errKnown;
double _err;
};
EvtValError operator*( const EvtValError& x1, const EvtValError& x2 );
EvtValError operator/( const EvtValError& x1, const EvtValError& x2 );
EvtValError operator+( const EvtValError& x1, const EvtValError& x2 );
EvtValError operator*( const EvtValError& x, double c );
EvtValError operator*( double c, const EvtValError& x );
std::ostream& operator<<( std::ostream&, const EvtValError& );
// Perform an accept/reject fraction count
template <class InputIterator, class Predicate>
EvtValError accept_reject( InputIterator it, InputIterator end, Predicate pred )
{
int itsTried = 0;
int itsPassed = 0;
while ( it != end ) {
itsTried++;
if ( pred( *it++ ) )
itsPassed++;
}
return EvtValError( ( (double)itsPassed ) / ( (double)itsTried ),
sqrt( itsPassed ) / ( (double)itsTried ) );
}
#endif
diff --git a/EvtGenBase/EvtVector3C.hh b/EvtGenBase/EvtVector3C.hh
index 8db4d4c..9203b6c 100644
--- a/EvtGenBase/EvtVector3C.hh
+++ b/EvtGenBase/EvtVector3C.hh
@@ -1,181 +1,161 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVector3C.hh
-//
-// Description: Class for complex 3 vectors
-//
-// Modification history:
-//
-// RYD September 6, 1997 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVECTOR3C_N
#define EVTVECTOR3C_N
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtVector3R.hh"
#include <iosfwd>
class EvtVector3C final {
friend EvtVector3C rotateEuler( const EvtVector3C& v, double phi,
double theta, double ksi );
inline friend EvtVector3C operator*( const EvtComplex& c,
const EvtVector3C& v2 );
inline friend EvtVector3C operator*( const EvtComplex& c,
const EvtVector3R& v2 );
inline friend EvtComplex operator*( const EvtVector3R& v1,
const EvtVector3C& v2 );
inline friend EvtComplex operator*( const EvtVector3C& v1,
const EvtVector3R& v2 );
inline friend EvtComplex operator*( const EvtVector3C& v1,
const EvtVector3C& v2 );
inline friend EvtVector3C operator+( const EvtVector3C& v1,
const EvtVector3C& v2 );
inline friend EvtVector3C operator-( const EvtVector3C& v1,
const EvtVector3C& v2 );
inline friend EvtVector3C operator*( const EvtVector3C& v1,
const EvtComplex& c );
public:
EvtVector3C();
EvtVector3C( const EvtComplex&, const EvtComplex&, const EvtComplex& );
inline void set( const int, const EvtComplex& );
inline void set( const EvtComplex&, const EvtComplex&, const EvtComplex& );
inline void set( double, double, double );
inline EvtVector3C& operator*=( const EvtComplex& c );
inline EvtVector3C& operator/=( const EvtComplex& c );
inline EvtVector3C& operator+=( const EvtVector3C& v2 );
inline EvtVector3C& operator-=( const EvtVector3C& v2 );
inline EvtVector3C( const EvtVector3R& v1 );
void applyRotateEuler( double phi, double theta, double ksi );
inline const EvtComplex& get( int ) const;
inline EvtVector3C conj() const;
EvtVector3C cross( const EvtVector3C& v2 );
friend std::ostream& operator<<( std::ostream& c, const EvtVector3C& v );
double dot( const EvtVector3C& p2 );
private:
EvtComplex v[3];
};
inline EvtVector3C::EvtVector3C( const EvtVector3R& v1 )
{
v[0] = EvtComplex( v1.get( 0 ), 0.0 );
v[1] = EvtComplex( v1.get( 1 ), 0.0 );
v[2] = EvtComplex( v1.get( 2 ), 0.0 );
}
inline void EvtVector3C::set( const int i, const EvtComplex& c )
{
v[i] = c;
}
inline void EvtVector3C::set( const EvtComplex& x, const EvtComplex& y,
const EvtComplex& z )
{
v[0] = x;
v[1] = y;
v[2] = z;
}
inline void EvtVector3C::set( double x, double y, double z )
{
v[0] = EvtComplex( x );
v[1] = EvtComplex( y );
v[2] = EvtComplex( z );
}
inline const EvtComplex& EvtVector3C::get( int i ) const
{
return v[i];
}
inline EvtVector3C& EvtVector3C::operator*=( const EvtComplex& c )
{
v[0] *= c;
v[1] *= c;
v[2] *= c;
return *this;
}
inline EvtVector3C& EvtVector3C::operator/=( const EvtComplex& c )
{
v[0] /= c;
v[1] /= c;
v[2] /= c;
return *this;
}
inline EvtVector3C& EvtVector3C::operator+=( const EvtVector3C& v2 )
{
v[0] += v2.v[0];
v[1] += v2.v[1];
v[2] += v2.v[2];
return *this;
}
inline EvtVector3C& EvtVector3C::operator-=( const EvtVector3C& v2 )
{
v[0] -= v2.v[0];
v[1] -= v2.v[1];
v[2] -= v2.v[2];
return *this;
}
inline EvtVector3C operator+( const EvtVector3C& v1, const EvtVector3C& v2 )
{
return EvtVector3C( v1 ) += v2;
}
inline EvtVector3C operator-( const EvtVector3C& v1, const EvtVector3C& v2 )
{
return EvtVector3C( v1 ) -= v2;
}
inline EvtVector3C operator*( const EvtVector3C& v1, const EvtComplex& c )
{
return EvtVector3C( v1 ) *= c;
}
inline EvtVector3C operator*( const EvtComplex& c, const EvtVector3C& v2 )
{
return EvtVector3C( v2 ) *= c;
}
inline EvtVector3C operator*( const EvtComplex& c, const EvtVector3R& v2 )
{
return EvtVector3C( v2 ) *= c;
}
inline EvtComplex operator*( const EvtVector3R& v1, const EvtVector3C& v2 )
{
return v1.get( 0 ) * v2.v[0] + v1.get( 1 ) * v2.v[1] + v1.get( 2 ) * v2.v[2];
}
inline EvtComplex operator*( const EvtVector3C& v1, const EvtVector3R& v2 )
{
return v1.v[0] * v2.get( 0 ) + v1.v[1] * v2.get( 1 ) + v1.v[2] * v2.get( 2 );
}
inline EvtComplex operator*( const EvtVector3C& v1, const EvtVector3C& v2 )
{
return v1.v[0] * v2.v[0] + v1.v[1] * v2.v[1] + v1.v[2] * v2.v[2];
}
inline EvtVector3C EvtVector3C::conj() const
{
return EvtVector3C( ::conj( v[0] ), ::conj( v[1] ), ::conj( v[2] ) );
}
#endif
diff --git a/EvtGenBase/EvtVector3R.hh b/EvtGenBase/EvtVector3R.hh
index abd3a86..a37481e 100644
--- a/EvtGenBase/EvtVector3R.hh
+++ b/EvtGenBase/EvtVector3R.hh
@@ -1,138 +1,118 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVector3R.hh
-//
-// Description: Class to describe real 3 vectors
-//
-// Modification history:
-//
-// RYD Sept. 5, 1997 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVECTOR3R_HH
#define EVTVECTOR3R_HH
#include <iosfwd>
class EvtVector3R final {
friend EvtVector3R rotateEuler( const EvtVector3R& v, double phi,
double theta, double ksi );
inline friend EvtVector3R operator*( double c, const EvtVector3R& v2 );
inline friend double operator*( const EvtVector3R& v1, const EvtVector3R& v2 );
inline friend EvtVector3R operator+( const EvtVector3R& v1,
const EvtVector3R& v2 );
inline friend EvtVector3R operator-( const EvtVector3R& v1,
const EvtVector3R& v2 );
inline friend EvtVector3R operator*( const EvtVector3R& v1, double c );
inline friend EvtVector3R operator/( const EvtVector3R& v1, double c );
friend EvtVector3R cross( const EvtVector3R& v1, const EvtVector3R& v2 );
public:
EvtVector3R();
EvtVector3R( double x, double y, double z );
inline EvtVector3R& operator*=( const double c );
inline EvtVector3R& operator/=( const double c );
inline EvtVector3R& operator+=( const EvtVector3R& v2 );
inline EvtVector3R& operator-=( const EvtVector3R& v2 );
inline void set( int i, double d );
inline void set( double x, double y, double z );
void applyRotateEuler( double phi, double theta, double ksi );
inline double get( int i ) const;
friend std::ostream& operator<<( std::ostream& s, const EvtVector3R& v );
double dot( const EvtVector3R& v2 );
double d3mag() const;
private:
double v[3];
};
inline EvtVector3R& EvtVector3R::operator*=( const double c )
{
v[0] *= c;
v[1] *= c;
v[2] *= c;
return *this;
}
inline EvtVector3R& EvtVector3R::operator/=( const double c )
{
v[0] /= c;
v[1] /= c;
v[2] /= c;
return *this;
}
inline EvtVector3R& EvtVector3R::operator+=( const EvtVector3R& v2 )
{
v[0] += v2.v[0];
v[1] += v2.v[1];
v[2] += v2.v[2];
return *this;
}
inline EvtVector3R& EvtVector3R::operator-=( const EvtVector3R& v2 )
{
v[0] -= v2.v[0];
v[1] -= v2.v[1];
v[2] -= v2.v[2];
return *this;
}
inline EvtVector3R operator*( double c, const EvtVector3R& v2 )
{
return EvtVector3R( v2 ) *= c;
}
inline EvtVector3R operator*( const EvtVector3R& v1, double c )
{
return EvtVector3R( v1 ) *= c;
}
inline EvtVector3R operator/( const EvtVector3R& v1, double c )
{
return EvtVector3R( v1 ) /= c;
}
inline double operator*( const EvtVector3R& v1, const EvtVector3R& v2 )
{
return v1.v[0] * v2.v[0] + v1.v[1] * v2.v[1] + v1.v[2] * v2.v[2];
}
inline EvtVector3R operator+( const EvtVector3R& v1, const EvtVector3R& v2 )
{
return EvtVector3R( v1 ) += v2;
}
inline EvtVector3R operator-( const EvtVector3R& v1, const EvtVector3R& v2 )
{
return EvtVector3R( v1 ) -= v2;
}
inline double EvtVector3R::get( int i ) const
{
return v[i];
}
inline void EvtVector3R::set( int i, double d )
{
v[i] = d;
}
inline void EvtVector3R::set( double x, double y, double z )
{
v[0] = x;
v[1] = y;
v[2] = z;
}
#endif
diff --git a/EvtGenBase/EvtVector4C.hh b/EvtGenBase/EvtVector4C.hh
index 76dac61..cada105 100644
--- a/EvtGenBase/EvtVector4C.hh
+++ b/EvtGenBase/EvtVector4C.hh
@@ -1,208 +1,188 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVector4C.hh
-//
-// Description: Class for complex 4 vectors
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVECTOR4C_HH
#define EVTVECTOR4C_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtVector3C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <iosfwd>
class EvtVector4C final {
inline friend EvtVector4C operator*( double d, const EvtVector4C& v2 );
inline friend EvtVector4C operator*( const EvtComplex& c,
const EvtVector4C& v2 );
inline friend EvtVector4C operator*( const EvtVector4C& v2,
const EvtComplex& c );
inline friend EvtVector4C operator*( const EvtComplex& c,
const EvtVector4R& v2 );
inline friend EvtComplex operator*( const EvtVector4R& v1,
const EvtVector4C& v2 );
inline friend EvtComplex operator*( const EvtVector4C& v1,
const EvtVector4R& v2 );
inline friend EvtComplex operator*( const EvtVector4C& v1,
const EvtVector4C& v2 );
friend EvtVector4C operator+( const EvtVector4C& v1, const EvtVector4C& v2 );
friend EvtVector4C operator-( const EvtVector4C& v1, const EvtVector4C& v2 );
public:
EvtVector4C();
EvtVector4C( const EvtComplex&, const EvtComplex&, const EvtComplex&,
const EvtComplex& );
inline void set( int, const EvtComplex& );
inline void set( const EvtComplex&, const EvtComplex&, const EvtComplex&,
const EvtComplex& );
inline void set( double, double, double, double );
inline EvtVector4C( const EvtVector4R& v1 );
inline const EvtComplex& get( int ) const;
inline EvtComplex cont( const EvtVector4C& v4 ) const;
inline EvtVector4C conj() const;
EvtVector3C vec() const;
inline EvtVector4C& operator-=( const EvtVector4C& v2 );
inline EvtVector4C& operator+=( const EvtVector4C& v2 );
inline EvtVector4C& operator*=( const EvtComplex& c );
void applyRotateEuler( double alpha, double beta, double gamma );
void applyBoostTo( const EvtVector4R& p4 );
void applyBoostTo( const EvtVector3R& boost );
friend std::ostream& operator<<( std::ostream& s, const EvtVector4C& v );
double dot( const EvtVector4C& p2 );
private:
EvtComplex v[4];
};
EvtVector4C rotateEuler( const EvtVector4C& e, double alpha, double beta,
double gamma );
EvtVector4C boostTo( const EvtVector4C& e, const EvtVector4R p4 );
EvtVector4C boostTo( const EvtVector4C& e, const EvtVector3R boost );
inline EvtVector4C& EvtVector4C::operator+=( const EvtVector4C& v2 )
{
v[0] += v2.v[0];
v[1] += v2.v[1];
v[2] += v2.v[2];
v[3] += v2.v[3];
return *this;
}
inline EvtVector4C& EvtVector4C::operator-=( const EvtVector4C& v2 )
{
v[0] -= v2.v[0];
v[1] -= v2.v[1];
v[2] -= v2.v[2];
v[3] -= v2.v[3];
return *this;
}
inline void EvtVector4C::set( int i, const EvtComplex& c )
{
v[i] = c;
}
inline EvtVector3C EvtVector4C::vec() const
{
return EvtVector3C( v[1], v[2], v[3] );
}
inline void EvtVector4C::set( const EvtComplex& e, const EvtComplex& p1,
const EvtComplex& p2, const EvtComplex& p3 )
{
v[0] = e;
v[1] = p1;
v[2] = p2;
v[3] = p3;
}
inline void EvtVector4C::set( double e, double p1, double p2, double p3 )
{
v[0] = EvtComplex( e );
v[1] = EvtComplex( p1 );
v[2] = EvtComplex( p2 );
v[3] = EvtComplex( p3 );
}
inline const EvtComplex& EvtVector4C::get( int i ) const
{
return v[i];
}
inline EvtVector4C operator+( const EvtVector4C& v1, const EvtVector4C& v2 )
{
return EvtVector4C( v1 ) += v2;
}
inline EvtVector4C operator-( const EvtVector4C& v1, const EvtVector4C& v2 )
{
return EvtVector4C( v1 ) -= v2;
}
inline EvtComplex EvtVector4C::cont( const EvtVector4C& v4 ) const
{
return v[0] * v4.v[0] - v[1] * v4.v[1] - v[2] * v4.v[2] - v[3] * v4.v[3];
}
inline EvtVector4C& EvtVector4C::operator*=( const EvtComplex& c )
{
v[0] *= c;
v[1] *= c;
v[2] *= c;
v[3] *= c;
return *this;
}
inline EvtVector4C operator*( double d, const EvtVector4C& v2 )
{
return EvtVector4C( v2.v[0] * d, v2.v[1] * d, v2.v[2] * d, v2.v[3] * d );
}
inline EvtVector4C operator*( const EvtComplex& c, const EvtVector4C& v2 )
{
return EvtVector4C( v2 ) *= c;
}
inline EvtVector4C operator*( const EvtVector4C& v2, const EvtComplex& c )
{
return EvtVector4C( v2 ) *= c;
}
inline EvtVector4C operator*( const EvtComplex& c, const EvtVector4R& v2 )
{
return EvtVector4C( c * v2.get( 0 ), c * v2.get( 1 ), c * v2.get( 2 ),
c * v2.get( 3 ) );
}
inline EvtVector4C::EvtVector4C( const EvtVector4R& v1 )
{
v[0] = EvtComplex( v1.get( 0 ) );
v[1] = EvtComplex( v1.get( 1 ) );
v[2] = EvtComplex( v1.get( 2 ) );
v[3] = EvtComplex( v1.get( 3 ) );
}
inline EvtComplex operator*( const EvtVector4R& v1, const EvtVector4C& v2 )
{
return v1.get( 0 ) * v2.v[0] - v1.get( 1 ) * v2.v[1] -
v1.get( 2 ) * v2.v[2] - v1.get( 3 ) * v2.v[3];
}
inline EvtComplex operator*( const EvtVector4C& v1, const EvtVector4R& v2 )
{
return v1.v[0] * v2.get( 0 ) - v1.v[1] * v2.get( 1 ) -
v1.v[2] * v2.get( 2 ) - v1.v[3] * v2.get( 3 );
}
inline EvtComplex operator*( const EvtVector4C& v1, const EvtVector4C& v2 )
{
return v1.v[0] * v2.v[0] - v1.v[1] * v2.v[1] - v1.v[2] * v2.v[2] -
v1.v[3] * v2.v[3];
}
inline EvtVector4C EvtVector4C::conj() const
{
return EvtVector4C( ::conj( v[0] ), ::conj( v[1] ), ::conj( v[2] ),
::conj( v[3] ) );
}
#endif
diff --git a/EvtGenBase/EvtVector4R.hh b/EvtGenBase/EvtVector4R.hh
index 468aa59..fcd238b 100644
--- a/EvtGenBase/EvtVector4R.hh
+++ b/EvtGenBase/EvtVector4R.hh
@@ -1,180 +1,160 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVector4R.hh
-//
-// Description: Class to describe real 4 vectors
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVECTOR4R_HH
#define EVTVECTOR4R_HH
#include <iostream>
#include <math.h>
class EvtVector3R;
class EvtVector4R {
inline friend EvtVector4R operator*( double d, const EvtVector4R& v2 );
inline friend EvtVector4R operator*( const EvtVector4R& v2, double d );
inline friend EvtVector4R operator/( const EvtVector4R& v2, double d );
inline friend double operator*( const EvtVector4R& v1, const EvtVector4R& v2 );
inline friend EvtVector4R operator+( const EvtVector4R& v1,
const EvtVector4R& v2 );
inline friend EvtVector4R operator-( const EvtVector4R& v1,
const EvtVector4R& v2 );
public:
EvtVector4R();
EvtVector4R( double e, double px, double py, double pz );
inline void set( int i, double d );
inline void set( double e, double px, double py, double pz );
inline EvtVector4R& operator*=( double c );
inline EvtVector4R& operator/=( double c );
inline EvtVector4R& operator+=( const EvtVector4R& v2 );
inline EvtVector4R& operator-=( const EvtVector4R& v2 );
inline double get( int i ) const;
inline double cont( const EvtVector4R& v4 ) const;
friend std::ostream& operator<<( std::ostream& s, const EvtVector4R& v );
double mass2() const;
double mass() const;
void applyRotateEuler( double alpha, double beta, double gamma );
void applyBoostTo( const EvtVector4R& p4, bool inverse = false );
void applyBoostTo( const EvtVector3R& boost, bool inverse = false );
EvtVector4R cross( const EvtVector4R& v2 );
double dot( const EvtVector4R& v2 ) const;
double d3mag() const;
// Added by AJB - calculate scalars in the rest frame of the current object
double scalartripler3( const EvtVector4R& p1, const EvtVector4R& p2,
const EvtVector4R& p3 ) const;
double dotr3( const EvtVector4R& p1, const EvtVector4R& p2 ) const;
double mag2r3( const EvtVector4R& p1 ) const;
double magr3( const EvtVector4R& p1 ) const;
private:
double v[4];
inline double Square( double x ) const { return x * x; }
};
EvtVector4R rotateEuler( const EvtVector4R& rs, double alpha, double beta,
double gamma );
EvtVector4R boostTo( const EvtVector4R& rs, const EvtVector4R& p4,
bool inverse = false );
EvtVector4R boostTo( const EvtVector4R& rs, const EvtVector3R& boost,
bool inverse = false );
inline EvtVector4R& EvtVector4R::operator+=( const EvtVector4R& v2 )
{
v[0] += v2.v[0];
v[1] += v2.v[1];
v[2] += v2.v[2];
v[3] += v2.v[3];
return *this;
}
inline EvtVector4R& EvtVector4R::operator-=( const EvtVector4R& v2 )
{
v[0] -= v2.v[0];
v[1] -= v2.v[1];
v[2] -= v2.v[2];
v[3] -= v2.v[3];
return *this;
}
inline double EvtVector4R::mass2() const
{
return v[0] * v[0] - v[1] * v[1] - v[2] * v[2] - v[3] * v[3];
}
inline EvtVector4R operator*( double c, const EvtVector4R& v2 )
{
return EvtVector4R( v2 ) *= c;
}
inline EvtVector4R operator*( const EvtVector4R& v2, double c )
{
return EvtVector4R( v2 ) *= c;
}
inline EvtVector4R operator/( const EvtVector4R& v2, double c )
{
return EvtVector4R( v2 ) /= c;
}
inline EvtVector4R& EvtVector4R::operator*=( double c )
{
v[0] *= c;
v[1] *= c;
v[2] *= c;
v[3] *= c;
return *this;
}
inline EvtVector4R& EvtVector4R::operator/=( double c )
{
double cinv = 1.0 / c;
v[0] *= cinv;
v[1] *= cinv;
v[2] *= cinv;
v[3] *= cinv;
return *this;
}
inline double operator*( const EvtVector4R& v1, const EvtVector4R& v2 )
{
return v1.v[0] * v2.v[0] - v1.v[1] * v2.v[1] - v1.v[2] * v2.v[2] -
v1.v[3] * v2.v[3];
}
inline double EvtVector4R::cont( const EvtVector4R& v4 ) const
{
return v[0] * v4.v[0] - v[1] * v4.v[1] - v[2] * v4.v[2] - v[3] * v4.v[3];
}
inline EvtVector4R operator-( const EvtVector4R& v1, const EvtVector4R& v2 )
{
return EvtVector4R( v1 ) -= v2;
}
inline EvtVector4R operator+( const EvtVector4R& v1, const EvtVector4R& v2 )
{
return EvtVector4R( v1 ) += v2;
}
inline double EvtVector4R::get( int i ) const
{
return v[i];
}
inline void EvtVector4R::set( int i, double d )
{
v[i] = d;
}
inline void EvtVector4R::set( double e, double p1, double p2, double p3 )
{
v[0] = e;
v[1] = p1;
v[2] = p2;
v[3] = p3;
}
#endif
diff --git a/EvtGenBase/EvtVectorParticle.hh b/EvtGenBase/EvtVectorParticle.hh
index eca21c7..ba7c8ba 100644
--- a/EvtGenBase/EvtVectorParticle.hh
+++ b/EvtGenBase/EvtVectorParticle.hh
@@ -1,54 +1,34 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVectorParticle.hh
-//
-// Description: Class to describe vector particles.
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVECTORPARTICLE_HH
#define EVTVECTORPARTICLE_HH
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
class EvtId;
class EvtVectorParticle : public EvtParticle {
public:
EvtVectorParticle() = default;
void init( EvtId part_n, double e, double px, double py, double pz );
void init( EvtId part_n, const EvtVector4R& p ) override;
void init( EvtId part_n, const EvtVector4R& p, const EvtVector4C&,
const EvtVector4C&, const EvtVector4C& );
EvtVector4C epsParent( int i ) const override
{
return boostTo( _eps[i], this->getP4() );
}
EvtVector4C eps( int i ) const override { return _eps[i]; }
EvtSpinDensity rotateToHelicityBasis() const override;
EvtSpinDensity rotateToHelicityBasis( double alpha, double beta,
double gamma ) const override;
private:
EvtVector4C _eps[3];
EvtVectorParticle( const EvtVectorParticle& vector );
EvtVectorParticle& operator=( const EvtVectorParticle& vector );
};
#endif
diff --git a/EvtGenBase/EvtdFunction.hh b/EvtGenBase/EvtdFunction.hh
index b1f6719..1714c5a 100644
--- a/EvtGenBase/EvtdFunction.hh
+++ b/EvtGenBase/EvtdFunction.hh
@@ -1,29 +1,11 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtdFunction.hh
-//
-// Description:Evaluation of Wigner d-Functions
-//
-// Modification history:
-//
-// RYD March 14, 1999 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTDFUNCTION_HH
#define EVTDFUNCTION_HH
+// Description:Evaluation of Wigner d-Functions
+
class EvtdFunction {
public:
static double d( int j, int m1, int m2, double theta );
};
#endif
diff --git a/EvtGenBase/EvtdFunctionSingle.hh b/EvtGenBase/EvtdFunctionSingle.hh
index 7c84f9a..e6a833d 100644
--- a/EvtGenBase/EvtdFunctionSingle.hh
+++ b/EvtGenBase/EvtdFunctionSingle.hh
@@ -1,46 +1,28 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtGen/EvtdFunction.hh
-//
-// Description:Evaluation of one Wigner d-Functions
-//
-// Modification history:
-//
-// RYD August 10, 2000 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTDFUNCTIONSINGLE_HH
#define EVTDFUNCTIONSINGLE_HH
+// Description:Evaluation of one Wigner d-Functions
+
class EvtdFunctionSingle {
public:
EvtdFunctionSingle();
~EvtdFunctionSingle();
void init( int j, int m1, int m2 );
double d( int j, int m1, int m2, double theta );
private:
int fact( int n );
int _j;
int _m1;
int _m2;
double* _coef;
int _kmin;
int _kmax;
};
#endif
diff --git a/EvtGenExternal/EvtExternalGenFactory.hh b/EvtGenExternal/EvtExternalGenFactory.hh
index 0d56747..352903f 100644
--- a/EvtGenExternal/EvtExternalGenFactory.hh
+++ b/EvtGenExternal/EvtExternalGenFactory.hh
@@ -1,68 +1,50 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2011 University of Warwick, UK
-//
-// Module: EvtExternalGenFactory
-//
-// Description: A factory type method to create engines for external physics
-// generators like Pythia.
-//
-// Modification history:
-//
-// John Back April 2011 Module created
-//
-//------------------------------------------------------------------------------
-//
-
#ifndef EVTEXTERNALGENFACTORY_HH
#define EVTEXTERNALGENFACTORY_HH
#include "EvtGenModels/EvtAbsExternalGen.hh"
#include <map>
+// Description: A factory type method to create engines for external physics
+// generators like Pythia.
+
class EvtExternalGenFactory {
public:
enum genId
{
PythiaGenId = 0,
PhotosGenId,
TauolaGenId
};
static EvtExternalGenFactory* getInstance();
EvtAbsExternalGen* getGenerator( int genId = 0 );
void initialiseAllGenerators();
void definePythiaGenerator( std::string xmlDir, bool convertPhysCodes,
bool useEvtGenRandom = true );
void definePhotosGenerator( std::string photonType = "gamma",
bool useEvtGenRandom = true );
void defineTauolaGenerator( bool useEvtGenRandom = true );
//methods to add configuration commands to the pythia generators
//void addPythiaCommand( std::string generator, std::string module, std::string param, std::string value);
//void addPythia6Command(std::string generator, std::string module, std::string param, std::string value);
protected:
EvtExternalGenFactory();
~EvtExternalGenFactory();
typedef std::map<int, EvtAbsExternalGen*> ExtGenMap;
typedef std::map<int, std::map<std::string, std::vector<std::string>>> ExtGenCommandMap;
private:
EvtExternalGenFactory( const EvtExternalGenFactory& ){};
ExtGenMap _extGenMap;
ExtGenCommandMap _extGenCommandMap;
};
#endif
diff --git a/EvtGenExternal/EvtExternalGenList.hh b/EvtGenExternal/EvtExternalGenList.hh
index 888beeb..1430c45 100644
--- a/EvtGenExternal/EvtExternalGenList.hh
+++ b/EvtGenExternal/EvtExternalGenList.hh
@@ -1,47 +1,29 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2012 University of Warwick, UK
-//
-// Module: EvtExternalGenFactory
-//
-// Description: A factory type method to create engines for external physics
-// generators like Pythia.
-//
-// Modification history:
-//
-// John Back Sept 2012 Module created
-//
-//------------------------------------------------------------------------------
-//
-
#ifndef EVTEXTERNALGENLIST_HH
#define EVTEXTERNALGENLIST_HH
#include "EvtGenBase/EvtAbsRadCorr.hh"
#include "EvtGenBase/EvtDecayBase.hh"
#include <list>
+// Description: A factory type method to create engines for external physics
+// generators like Pythia.
+
class EvtExternalGenList {
public:
EvtExternalGenList( bool convertPythiaCodes = false,
std::string pythiaXmlDir = "",
std::string photonType = "gamma",
bool useEvtGenRandom = true );
virtual ~EvtExternalGenList();
std::list<EvtDecayBase*> getListOfModels();
EvtAbsRadCorr* getPhotosModel();
protected:
private:
};
#endif
diff --git a/EvtGenExternal/EvtPHOTOS.hh b/EvtGenExternal/EvtPHOTOS.hh
index aa914d0..fc0eb7d 100644
--- a/EvtGenExternal/EvtPHOTOS.hh
+++ b/EvtGenExternal/EvtPHOTOS.hh
@@ -1,41 +1,22 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtPHOTOS.hh
-//
-// Description: EvtGen's interface to PHOTOS for generation of
-// QED final state radiation.
-//
-// Modification history:
-//
-// RYD March 24, 1998 Module created
-// Lange April 25, 2002 - changed to derive from EvtAbsRadCorr
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPHOTOS_HH
#define EVTPHOTOS_HH
#include "EvtGenBase/EvtAbsRadCorr.hh"
#include <string>
class EvtParticle;
class EvtAbsExternalGen;
+// Description: EvtGen's interface to PHOTOS for generation of
+// QED final state radiation.
+
class EvtPHOTOS : public EvtAbsRadCorr {
public:
void doRadCorr( EvtParticle* p ) override;
private:
EvtAbsExternalGen* _photosEngine = nullptr;
};
#endif
diff --git a/EvtGenExternal/EvtPhotosEngine.hh b/EvtGenExternal/EvtPhotosEngine.hh
index d5d64e2..eb775a5 100644
--- a/EvtGenExternal/EvtPhotosEngine.hh
+++ b/EvtGenExternal/EvtPhotosEngine.hh
@@ -1,66 +1,48 @@
#ifdef EVTGEN_PHOTOS
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2011 University of Warwick, UK
-//
-// Module: EvtPhotosEngine
-//
-// Description: Interface to the PHOTOS external generator
-//
-// Modification history:
-//
-// John Back May 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPHOTOSENGINE_HH
#define EVTPHOTOSENGINE_HH
+#include "EvtGenBase/EvtHepMCEvent.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtAbsExternalGen.hh"
-
#ifdef EVTGEN_HEPMC3
#include "HepMC3/Units.h"
#include "Photos/PhotosHepMC3Event.h"
#include "Photos/PhotosHepMC3Particle.h"
#else
#include "Photos/PhotosHepMCEvent.h"
#include "Photos/PhotosHepMCParticle.h"
#include "Photos/PhotosParticle.h"
#endif
-#include "EvtGenBase/EvtHepMCEvent.hh"
#include <string>
+// Description: Interface to the PHOTOS external generator
+
class EvtPhotosEngine : public EvtAbsExternalGen {
public:
EvtPhotosEngine( std::string photonType = "gamma",
bool useEvtGenRandom = true );
bool doDecay( EvtParticle* theMother ) override;
void initialise() override;
private:
std::string _photonType;
EvtId _gammaId;
int _gammaPDG;
double _mPhoton;
bool _initialised;
GenParticlePtr createGenParticle( EvtParticle* theParticle, bool incoming );
int getNumberOfPhotons( const GenVertexPtr theVertex ) const;
};
#endif
#endif
diff --git a/EvtGenExternal/EvtPythia.hh b/EvtGenExternal/EvtPythia.hh
index 845d6c1..0f7412b 100644
--- a/EvtGenExternal/EvtPythia.hh
+++ b/EvtGenExternal/EvtPythia.hh
@@ -1,63 +1,43 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-// 2011 University of Warwick, UK
-//
-// Module: EvtGen/EvtPythia.hh
-//
-// Description:
-// Class to handle generic phase space decays not done
-// in other decay models.
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-// JJB April 2011 Modified to use new Pythia8 interface
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPYTHIA_HH
#define EVTPYTHIA_HH
#include "EvtGenBase/EvtDecayIncoherent.hh"
#include <string>
#include <vector>
class EvtParticle;
class EvtAbsExternalGen;
class EvtDecayBase;
+// Description:
+// Class to handle generic phase space decays not done
+// in other decay models.
+
class EvtPythia : public EvtDecayIncoherent {
public:
EvtPythia();
~EvtPythia();
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
std::string commandName() override;
void command( std::string ) override;
protected:
EvtAbsExternalGen* _pythiaEngine;
private:
void fixPolarisations( EvtParticle* p );
std::vector<std::string> _commandList;
};
#endif
diff --git a/EvtGenExternal/EvtPythia6CommandConverter.hh b/EvtGenExternal/EvtPythia6CommandConverter.hh
index 76ef4ae..80679fd 100644
--- a/EvtGenExternal/EvtPythia6CommandConverter.hh
+++ b/EvtGenExternal/EvtPythia6CommandConverter.hh
@@ -1,31 +1,14 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2012 University of Warwick, UK
-//
-// Module: EvtPythia6CommandConverter
-//
-// Description: Function to replace Pythia 6 commands with the
-// corresponding Pythia 8 commands.
-//
-// Modification history:
-//
-// Daniel Craik March 2012 Module created
-//
-//------------------------------------------------------------------------
+#ifndef EVTPYTHIA6COMMANDCONVERTER_HH
+#define EVTPYTHIA6COMMANDCONVERTER_HH
#include "EvtGenBase/EvtExtGeneratorCommandsTable.hh"
#include <string>
#include <vector>
-#ifndef EVTPYTHIA6COMMANDCONVERTER_HH
-#define EVTPYTHIA6COMMANDCONVERTER_HH
+// Description: Function to replace Pythia 6 commands with the
+// corresponding Pythia 8 commands.
std::vector<std::string> convertPythia6Command( Command command );
#endif
diff --git a/EvtGenExternal/EvtPythiaEngine.hh b/EvtGenExternal/EvtPythiaEngine.hh
index 45e0b3f..b8e9c5f 100644
--- a/EvtGenExternal/EvtPythiaEngine.hh
+++ b/EvtGenExternal/EvtPythiaEngine.hh
@@ -1,88 +1,72 @@
#ifdef EVTGEN_PYTHIA
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2011 University of Warwick, UK
-//
-// Module: EvtPythiaEngine
-//
-// Description: Interface to the Pytha 8 external generator
-//
-// Modification history:
-//
-// John Back April 2011 Module created
-//
-//------------------------------------------------------------------------
#ifndef EVTPYTHIAENGINE_HH
#define EVTPYTHIAENGINE_HH
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtAbsExternalGen.hh"
#include "EvtGenExternal/EvtPythiaRandom.hh"
#include "Pythia8/ParticleData.h"
#include "Pythia8/Pythia.h"
#include <map>
#include <memory>
#include <string>
#include <vector>
+// Description: Interface to the Pytha 8 external generator
+
class EvtPythiaEngine : public EvtAbsExternalGen {
public:
EvtPythiaEngine( std::string xmlDir = "./xmldoc",
bool convertPhysCodes = false, bool useEvtGenRandom = true );
virtual ~EvtPythiaEngine();
bool doDecay( EvtParticle* theMother ) override;
void initialise() override;
protected:
private:
void updateParticleLists();
void updatePhysicsParameters();
void createPythiaParticle( EvtId& particleId, int PDGCode );
bool validPDGCode( int PDGCode );
void updatePythiaDecayTable( EvtId& particleId, int aliasInt, int PDGCode );
void storeDaughterInfo( EvtParticle* theParticle, int startInt );
void clearDaughterVectors();
void clearPythiaModeMap();
void createDaughterEvtParticles( EvtParticle* theParent );
int getModeInt( EvtDecayBase* decayModel );
std::unique_ptr<Pythia8::Pythia> _genericPythiaGen;
std::unique_ptr<Pythia8::Pythia> _aliasPythiaGen;
Pythia8::Pythia* _thePythiaGenerator;
std::vector<int> _daugPDGVector;
std::vector<EvtVector4R> _daugP4Vector;
typedef std::map<int, std::vector<int>> PythiaModeMap;
PythiaModeMap _pythiaModeMap;
bool _convertPhysCodes, _initialised, _useEvtGenRandom;
std::unique_ptr<EvtPythiaRandom> _evtgenRandom;
std::map<int, int> _addedPDGCodes;
};
#endif
#endif
diff --git a/EvtGenExternal/EvtPythiaRandom.hh b/EvtGenExternal/EvtPythiaRandom.hh
index 2b874cc..ebbe507 100644
--- a/EvtGenExternal/EvtPythiaRandom.hh
+++ b/EvtGenExternal/EvtPythiaRandom.hh
@@ -1,42 +1,26 @@
#ifdef EVTGEN_PYTHIA
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2013 University of Warwick, UK
-//
-// Module: EvtGenExternal/EvtPythiaRandom.hh
-//
-// Description: Class to specify the chosen EvtGen random number (engine)
-// to also be used for Pythia 8.
-//
-// Modification history:
-//
-// JJB January 2013 Module created
-//
-//------------------------------------------------------------------------
#ifndef EVTPYTHIARANDOM_HH
#define EVTPYTHIARANDOM_HH
#include "EvtGenBase/EvtRandom.hh"
#include "Pythia8/Basics.h"
+// Description: Class to specify the chosen EvtGen random number (engine)
+// to also be used for Pythia 8.
+
class EvtPythiaRandom : public Pythia8::RndmEngine {
public:
EvtPythiaRandom(){};
virtual ~EvtPythiaRandom(){};
double flat() override { return EvtRandom::Flat(); }
private:
};
#endif
#endif
diff --git a/EvtGenExternal/EvtTauola.hh b/EvtGenExternal/EvtTauola.hh
index 38ff6cf..b0dc65e 100644
--- a/EvtGenExternal/EvtTauola.hh
+++ b/EvtGenExternal/EvtTauola.hh
@@ -1,45 +1,29 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2011 University of Warwick, UK
-//
-// Description: Use the Tauola external generator for tau decays
-//
-// Modification history:
-//
-// John Back May 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTTAUOLA_HH
#define EVTTAUOLA_HH
#include "EvtGenBase/EvtDecayIncoherent.hh"
class EvtParticle;
class EvtAbsExternalGen;
class EvtDecayBase;
+// Description: Use the Tauola external generator for tau decays
+
class EvtTauola : public EvtDecayIncoherent {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
protected:
EvtAbsExternalGen* _tauolaEngine = nullptr;
private:
};
#endif
diff --git a/EvtGenExternal/EvtTauolaEngine.hh b/EvtGenExternal/EvtTauolaEngine.hh
index 74a176f..c425790 100644
--- a/EvtGenExternal/EvtTauolaEngine.hh
+++ b/EvtGenExternal/EvtTauolaEngine.hh
@@ -1,73 +1,57 @@
#ifdef EVTGEN_TAUOLA
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2011 University of Warwick, UK
-//
-// Module: EvtTauolaEngine
-//
-// Description: Interface to the TAUOLA external generator
-//
-// Modification history:
-//
-// John Back May 2011 Module created
-//
-//------------------------------------------------------------------------
#ifndef EVTTAUOLAENGINE_HH
#define EVTTAUOLAENGINE_HH
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtAbsExternalGen.hh"
#ifdef EVTGEN_HEPMC3
#include "HepMC3/Relatives.h"
#include "HepMC3/Units.h"
#include "Tauola/TauolaHepMC3Event.h"
#include "Tauola/TauolaHepMC3Particle.h"
#else
#include "Tauola/TauolaHepMCEvent.h"
#include "Tauola/TauolaHepMCParticle.h"
#include "Tauola/TauolaParticle.h"
#endif
#include "EvtGenBase/EvtHepMCEvent.hh"
#include <map>
#include <vector>
+// Description: Interface to the TAUOLA external generator
+
class EvtTauolaEngine : public EvtAbsExternalGen {
public:
EvtTauolaEngine( bool useEvtGenRandom = true );
bool doDecay( EvtParticle* theMother ) override;
void initialise() override;
protected:
private:
bool _initialised;
int _tauPDG, _nTauolaModes;
int _neutPropType, _posPropType, _negPropType;
GenParticlePtr createGenParticle( EvtParticle* theParticle );
void setUpPossibleTauModes();
void setOtherParameters();
int getModeInt( EvtDecayBase* decayModel );
void decayTauEvent( EvtParticle* tauParticle );
};
#endif
#endif
diff --git a/EvtGenModels/EvtAbsExternalGen.hh b/EvtGenModels/EvtAbsExternalGen.hh
index 3cafa8d..e76b56a 100644
--- a/EvtGenModels/EvtAbsExternalGen.hh
+++ b/EvtGenModels/EvtAbsExternalGen.hh
@@ -1,33 +1,16 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2011 University of Warwick, UK
-//
-// Module: EvtAbsExternalGen
-//
-// Description: Pure abstract interface for external physics generators
-//
-// Modification history:
-//
-// John Back April 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTABS_EXTERNALGEN_HH
#define EVTABS_EXTERNALGEN_HH
#include "EvtGenBase/EvtParticle.hh"
+// Description: Pure abstract interface for external physics generators
+
class EvtAbsExternalGen {
public:
virtual ~EvtAbsExternalGen() = default;
virtual bool doDecay( EvtParticle* theMother ) = 0;
virtual double getDecayProb( EvtParticle* ) { return 1.0; }
virtual void initialise() = 0;
};
#endif
diff --git a/EvtGenModels/EvtBBScalar.hh b/EvtGenModels/EvtBBScalar.hh
index 84c0d9f..66644d4 100644
--- a/EvtGenModels/EvtBBScalar.hh
+++ b/EvtGenModels/EvtBBScalar.hh
@@ -1,149 +1,131 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech
-//
-// Module: EvtGen/EvtBBScalar
-//
-// Description:Implementation of the decay B- -> lambda p_bar pi according to
-// hep-ph/0204185, hep-ph/0211240
-// This model is intended to be applicable to all decays of the type B-> baryon baryon scalar
-//
-// Modification history:
-//
-// Jan Strube March 24th, 2006 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBBSCALAR_HH
#define EVTBBSCALAR_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtDiracParticle.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <bitset>
#include <map>
#include <string>
#include <vector>
+// Implementation of the decay B- -> lambda p_bar pi according to
+// hep-ph/0204185, hep-ph/0211240
+// This model is intended to be applicable to all decays of the type B-> baryon baryon scalar
+
struct FormFactor {
double value;
double sigma1;
double sigma2;
double mV;
};
enum Baryons
{
Lambda,
Proton,
Neutron,
Sigma0,
Sigma_minus,
Xi0,
Xi_minus,
nBaryons
};
class EvtBBScalar : public EvtDecayAmp {
public:
EvtBBScalar();
std::string getName() override;
EvtBBScalar* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
private:
// used values of constants
static const EvtComplex I;
static const EvtComplex V_ub;
static const EvtComplex V_us_star;
static const EvtComplex a1;
static const EvtComplex V_tb;
static const EvtComplex V_ts_star;
static const EvtComplex a4;
static const EvtComplex a6;
// used parameters in the calculation of the magnetic form factors
static const double x[];
static const double y[];
// quark masses as used in the model
static const double m_s;
static const double m_u;
static const double m_b;
// used to choose the right value for the form factor depending on the type of scalar
std::string _scalarType;
mutable std::map<std::string, FormFactor> _f0Map;
mutable std::map<std::string, FormFactor> _f1Map;
// only consider F1+F2 here
std::bitset<nBaryons> _baryonCombination;
void setKnownBaryonTypes( const EvtId& baryon );
double B_pi_f1( double t ) const;
double B_pi_f0( double t ) const;
double baryonF1F2( double t ) const;
double G_p( double t ) const;
double G_n( double t ) const;
double baryon_gA( double t ) const;
double baryon_hA( double t ) const;
double baryon_gP( double t ) const;
double baryon_fS( double t ) const;
double D_A( double t ) const;
double F_A( double t ) const;
double D_P( double t ) const;
double F_P( double t ) const;
double D_S( double t ) const;
double F_S( double t ) const;
// (mB1 - mB2)/(mq1 - mq1)
double _massRatio;
double _baryonMassSum;
double formFactorFit( double t, const std::vector<double>& params ) const;
static const EvtComplex const_B;
static const EvtComplex const_C;
const EvtVector4C amp_A( const EvtVector4R& p4B, const EvtVector4R& p4Scalar );
const EvtComplex amp_B( const EvtDiracParticle* baryon1,
const EvtDiracSpinor& b1Pol,
const EvtDiracParticle* baryon2,
const EvtDiracSpinor& b2Pol, int index );
const EvtComplex amp_B_vectorPart( const EvtDiracParticle* baryon1,
const EvtDiracSpinor& b1Pol,
const EvtDiracParticle* baryon2,
const EvtDiracSpinor& b2Pol, int index );
const EvtComplex amp_B_axialPart( const EvtDiracParticle* baryon1,
const EvtDiracSpinor& b1Pol,
const EvtDiracParticle* baryon2,
const EvtDiracSpinor& b2Pol, int index );
const EvtComplex amp_C( const EvtDiracParticle* baryon1,
const EvtDiracSpinor& b1Pol,
const EvtDiracParticle* baryon2,
const EvtDiracSpinor& b2Pol, int index );
const EvtComplex amp_C_scalarPart( const EvtDiracSpinor& b1Pol,
const EvtDiracSpinor& b2Pol, double t );
const EvtComplex amp_C_pseudoscalarPart( const EvtDiracSpinor& b1Pol,
const EvtDiracSpinor& b2Pol,
double t );
// initialize phasespace and calculate the amplitude for one (i=0,1) state of the photon
EvtComplex calcAmpliude( const EvtParticle* p, const unsigned int polState );
};
#endif
diff --git a/EvtGenModels/EvtBCSFF.hh b/EvtGenModels/EvtBCSFF.hh
index 2cd5e49..384ac0e 100644
--- a/EvtGenModels/EvtBCSFF.hh
+++ b/EvtGenModels/EvtBCSFF.hh
@@ -1,54 +1,36 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBCSFF.hh
-//
-// Description: Form factors for EvtBCSFF model
-//
-// Modification history:
-//
-// AVL Jul 6, 2012 Module created
-// AVL Feb 5, 2018 D0, D*0 modes added
-//------------------------------------------------------------------------
-
#ifndef EVTBCSFF_HH
#define EVTBCSFF_HH
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
class EvtId;
+// Description: Form factors for EvtBCSFF model
+
class EvtBCSFF : public EvtSemiLeptonicFF {
public:
EvtBCSFF( int idV, int fit );
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void getscalarff( EvtId, EvtId, double, double, double*, double* ) override;
void gettensorff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double* ) override;
void getraritaff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double*, double*, double* ) override;
private:
int idScalar, whichfit;
double MBc, MD0;
};
#endif
diff --git a/EvtGenModels/EvtBCTFF.hh b/EvtGenModels/EvtBCTFF.hh
index 9168074..b168473 100644
--- a/EvtGenModels/EvtBCTFF.hh
+++ b/EvtGenModels/EvtBCTFF.hh
@@ -1,54 +1,36 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBCTFF.hh
-//
-// Description: Form factors for EvtBCTFF model
-//
-// Modification history:
-//
-// DJL April 20, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBCTFF_HH
#define EVTBCTFF_HH
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
class EvtId;
+// Description: Form factors for EvtBCTFF model
+
class EvtBCTFF : public EvtSemiLeptonicFF {
public:
EvtBCTFF( int idV, int fit );
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void getscalarff( EvtId, EvtId, double, double, double*, double* ) override;
void gettensorff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double* ) override;
void getraritaff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double*, double*, double* ) override;
private:
int idTensor, whichfit;
double MBc;
};
#endif
diff --git a/EvtGenModels/EvtBCVFF.hh b/EvtGenModels/EvtBCVFF.hh
index 61d5f85..0b451d5 100644
--- a/EvtGenModels/EvtBCVFF.hh
+++ b/EvtGenModels/EvtBCVFF.hh
@@ -1,55 +1,36 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBCVFF.hh
-//
-// Description: Form factors for EvtBCVFF model
-//
-// Modification history:
-//
-// AVL Jul 6, 2012 Module created
-// AVL Feb 5, 2018 D0, D*0 modes added
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBCVFF_HH
#define EVTBCVFF_HH
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
class EvtId;
+// Description: Form factors for EvtBCVFF model
+
class EvtBCVFF : public EvtSemiLeptonicFF {
public:
EvtBCVFF( int idV, int fit );
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void getscalarff( EvtId, EvtId, double, double, double*, double* ) override;
void gettensorff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double* ) override;
void getraritaff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double*, double*, double* ) override;
private:
int idVector, whichfit;
double MBc, MD0, Mpsi, Mpsi2S, kappa, Mchi;
};
#endif
diff --git a/EvtGenModels/EvtBCVFF2.hh b/EvtGenModels/EvtBCVFF2.hh
index 7d75583..a4170c5 100644
--- a/EvtGenModels/EvtBCVFF2.hh
+++ b/EvtGenModels/EvtBCVFF2.hh
@@ -1,62 +1,44 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBCVFF.hh
-//
-// Description: form factors for B->Vlnu
-//
-// Modification history:
-//
-// AVL Jan 29, 2013, Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBCVFF2_HH
#define EVTBCVFF2_HH
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <string>
class EvtId;
+// Description: form factors for B->Vlnu
+
class EvtBCVFF2 : public EvtSemiLeptonicFF {
public:
EvtBCVFF2( int idV, int fit );
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void getscalarff( EvtId, EvtId, double, double, double*, double* ) override;
void gettensorff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double* ) override;
void getraritaff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double*, double*, double* ) override;
private:
int idVector, whichfit;
};
#endif
diff --git a/EvtGenModels/EvtBHadronic.hh b/EvtGenModels/EvtBHadronic.hh
index 3f65c6a..230e1ee 100644
--- a/EvtGenModels/EvtBHadronic.hh
+++ b/EvtGenModels/EvtBHadronic.hh
@@ -1,36 +1,17 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBHadronic.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
#ifndef EVTBHADRONIC_HH
#define EVTBHADRONIC_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtBHadronic : public EvtDecayAmp {
public:
std::string getName() override;
EvtBHadronic* clone() override;
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtBLLNuL.hh b/EvtGenModels/EvtBLLNuL.hh
index bc16757..d532d30 100644
--- a/EvtGenModels/EvtBLLNuL.hh
+++ b/EvtGenModels/EvtBLLNuL.hh
@@ -1,45 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtBLLNuL.hh
-//
-// Description: The header file for the model "BLLNUL" which simulates
-// the rare four-leptonic B-decays
-// B^-(p) -> ell^+(k_1) ell^-(k_2) neu (k_3) ell^-(k_4)
-//
-// Modification history:
-//
-// Anna Danilina (anna.danilina@cern.ch) and
-// Nikolai Nikitin (Nikolai.Nikitine@cern.ch) Nov 2018 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBLLNUL_HH
#define EVTBLLNUL_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenModels/EvtBLLNuLAmp.hh"
#include <string>
class EvtParticle;
class EvtbTosllMSFF; // Form factor class
+// Description: The header file for the model "BLLNUL" which simulates
+// the rare four-leptonic B-decays
+// B^-(p) -> ell^+(k_1) ell^-(k_2) neu (k_3) ell^-(k_4)
+
class EvtBLLNuL : public EvtDecayAmp {
public:
EvtBLLNuL();
virtual std::string getName() override;
virtual EvtDecayBase* clone() override;
virtual void init() override;
virtual void initProbMax() override;
virtual void decay( EvtParticle* p ) override;
private:
EvtBLLNuLAmp calcAmp_;
};
#endif
diff --git a/EvtGenModels/EvtBLLNuLAmp.hh b/EvtGenModels/EvtBLLNuLAmp.hh
index ffa5fde..5f6b621 100644
--- a/EvtGenModels/EvtBLLNuLAmp.hh
+++ b/EvtGenModels/EvtBLLNuLAmp.hh
@@ -1,111 +1,98 @@
-//--------------------------------------------------------------------------
-//
-//
-// Module: EvtB2MuMuENuAmp.hh
-//
-// Description: Header file for the amplitude calculation for the "BLLNUL"
-// model which generates rare four-leptonic B-decays
-// B^-(p) -> ell^+(k_1) ell^-(k_2) neu (k_3) ell^-(k_4)
-//
-// Modification history:
-//
-// Anna Danilina (anna.danilina@cern.ch) and
-// Nikolai Nikitin (Nikolai.Nikitine@cern.ch) Nov 2018 Module created
-// John B Code optimisations
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBLLNUL_AMP_HH
#define EVTBLLNUL_AMP_HH
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <vector>
class EvtParticle;
+// Description: Header file for the amplitude calculation for the "BLLNUL"
+// model which generates rare four-leptonic B-decays
+// B^-(p) -> ell^+(k_1) ell^-(k_2) neu (k_3) ell^-(k_4)
+
class EvtBLLNuLAmp {
public:
EvtBLLNuLAmp( double Vub = 4.09e-3 );
EvtBLLNuLAmp( double qSqMin, double kSqMin, bool symmetry,
double Vub = 4.09e-3 );
void CalcAmp( EvtParticle* parent, EvtAmp& amp ) const;
void setParameters( double qSqMin, double kSqMin, bool symmetry );
// Resonance poles
class ResPole final {
public:
ResPole( double mass, double width, double coupling );
EvtComplex propagator( double qSq, int numForm = 0 ) const;
double getMass() const { return m0_; }
double getMassSq() const { return m0Sq_; }
double getWidth() const { return w0_; }
double getCoupling() const { return c_; }
private:
double m0_; // pole mass
double m0Sq_;
double w0_; // width
double c_; // coupling constant
EvtComplex I_;
EvtComplex Imw_;
};
protected:
EvtTensor4C getHadronTensor( const EvtVector4R& q, const EvtVector4R& k,
const double qSq, const double kSq,
const double MB, const int sign ) const;
std::vector<EvtComplex> getVMDTerms( double qSq, double kSq, double MB ) const;
EvtComplex getBStarTerm( double qSq, double kSq, double MB ) const;
double FF_B2Bstar( double qSq ) const;
double FF_V( double kSq ) const;
double FF_A1( double kSq ) const;
double FF_A2( double kSq ) const;
private:
// Kinematic cut-offs
double qSqMin_;
double kSqMin_;
// If we have identical charged lepton flavours
bool symmetry_;
// B+, B- Ids
EvtId BpId_, BnId_;
// Form factor constants
double coupling_, sqrt2_;
double fBu_;
// Resonance poles
EvtBLLNuLAmp::ResPole Bstar_, Upsilon_;
std::vector<EvtBLLNuLAmp::ResPole> resPoles_;
int nPoles_;
// Complex number constants
EvtComplex zero_, unitI_;
};
inline void EvtBLLNuLAmp::setParameters( double qSqMin, double kSqMin,
bool symmetry )
{
qSqMin_ = qSqMin;
kSqMin_ = kSqMin;
symmetry_ = symmetry;
}
#endif
diff --git a/EvtGenModels/EvtBTo3hCP.hh b/EvtGenModels/EvtBTo3hCP.hh
index 012933d..15d3565 100644
--- a/EvtGenModels/EvtBTo3hCP.hh
+++ b/EvtGenModels/EvtBTo3hCP.hh
@@ -1,114 +1,94 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBTo3hCP.hh
-//
-// Description:
-//
-// Modification history:
-//
-// MK August 26, 2016 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTO3HCP_HH
#define EVTBTO3HCP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtVector4R.hh"
class EvtParticle;
/*
struct fcomplex {
double re;
double im;
};
*/
class EvtBTo3hCP {
public:
EvtBTo3hCP();
~EvtBTo3hCP(){};
void EvtKpipi( double alpha, double beta, int iset, EvtVector4R& p_K_plus,
EvtVector4R& p_pi_minus, EvtVector4R& p_gamma_1,
EvtVector4R& p_gamma_2, double& Real_B0, double& Imag_B0,
double& Real_B0bar, double& Imag_B0bar );
void Evt3pi( double alpha, int iset, EvtVector4R& p_K_plus,
EvtVector4R& p_pi_minus, EvtVector4R& p_gamma_1,
EvtVector4R& p_gamma_2, double& Real_B0, double& Imag_B0,
double& Real_B0bar, double& Imag_B0bar );
void Evt3piMPP( double alpha, int iset, EvtVector4R& p_p1,
EvtVector4R& p_p2, EvtVector4R& p_p3, double& Real_B0,
double& Imag_B0, double& Real_B0bar, double& Imag_B0bar );
void Evt3piP00( double alpha, int iset, EvtVector4R& p_p1,
EvtVector4R& p_p1_gamma1, EvtVector4R& p_p1_gamma2,
EvtVector4R& p_p2_gamma1, EvtVector4R& p_p2_gamma2,
double& Real_B0, double& Imag_B0, double& Real_B0bar,
double& Imag_B0bar );
private:
void setConstants( double balpha, double bbeta );
int computeKpipi( EvtVector4R& p1, EvtVector4R& p2, EvtVector4R& p3,
double& real_B0, double& imag_B0, double& real_B0bar,
double& imag_B0bar, int set );
int compute3pi( EvtVector4R& p1, EvtVector4R& p2, EvtVector4R& p3,
double& real_B0, double& imag_B0, double& real_B0bar,
double& imag_B0bar, int set );
int compute3piMPP( EvtVector4R& p1, EvtVector4R& p2, EvtVector4R& p3,
double& real_B0, double& imag_B0, double& real_B0bar,
double& imag_B0bar, int set );
int compute3piP00( EvtVector4R& p1, EvtVector4R& p2, EvtVector4R& p3,
double& real_B0, double& imag_B0, double& real_B0bar,
double& imag_B0bar, int set );
// Modes are : 0 = Kpipi, 1 = 3pi, 2 = MPP, 3 = P00
void firstStep( EvtVector4R& p1, EvtVector4R& p2, EvtVector4R& p3, int mode );
void generateSqMasses_Kpipi( double& m12, double& m13, double& m23,
double MB2, double m1sq, double m2sq,
double m3sq );
void generateSqMasses_3pi( double& m12, double& m13, double& m23, double MB2,
double m1sq, double m2sq, double m3sq );
void generateSqMasses_3piMPP( double& m12, double& m13, double& m23,
double MB2, double m1sq, double m2sq,
double m3sq );
void generateSqMasses_3piP00( double& m12, double& m13, double& m23,
double MB2, double m1sq, double m2sq,
double m3sq );
void rotation( EvtVector4R& p, int newRot );
void gammaGamma( EvtVector4R& p, EvtVector4R& pgamma1, EvtVector4R& pgamma2 );
EvtComplex BreitWigner( EvtVector4R& p1, EvtVector4R& p2, EvtVector4R& p3,
int& ierr, double Mass = 0, double Width = 0 );
EvtComplex EvtRBW( double s, double Am2, double Gam, double Am2Min );
EvtComplex EvtCRhoF_W( double s );
EvtComplex EvtcBW_KS( double s, double Am2, double Gam );
EvtComplex EvtcBW_GS( double s, double Am2, double Gam );
double d( double AmRho2 );
double k( double s );
double Evtfs( double s, double AmRho2, double GamRho );
double h( double s );
double dh_ds( double s );
EvtComplex Mat_S1, Mat_S2, Mat_S3, Mat_S4, Mat_S5, Nat_S1, Nat_S2, Nat_S3,
Nat_S4, Nat_S5, MatKstarp, MatKstar0, MatKrho, NatKstarp, NatKstar0,
NatKrho;
double alphaCP, betaCP, pi, MA2, MB2, MC2, Mass_rho, Gam_rho, M_B, M_pip,
M_pim, M_pi0, M_Kp, Mass_Kstarp, Mass_Kstar0, Gam_Kstarp, Gam_Kstar0;
double rotMatrix[3][3];
double factor_max;
};
#endif
diff --git a/EvtGenModels/EvtBTo3piCP.hh b/EvtGenModels/EvtBTo3piCP.hh
index c273e65..e05139a 100644
--- a/EvtGenModels/EvtBTo3piCP.hh
+++ b/EvtGenModels/EvtBTo3piCP.hh
@@ -1,47 +1,27 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBTo3piCP.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTO3PICP_HH
#define EVTBTO3PICP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtBTo3hCP.hh"
class EvtParticle;
class EvtBTo3piCP : public EvtDecayAmp {
public:
EvtBTo3piCP() {}
std::string getName() override;
EvtBTo3piCP* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
private:
EvtBTo3hCP generator;
};
#endif
diff --git a/EvtGenModels/EvtBTo4piCP.hh b/EvtGenModels/EvtBTo4piCP.hh
index 651b3af..495a307 100644
--- a/EvtGenModels/EvtBTo4piCP.hh
+++ b/EvtGenModels/EvtBTo4piCP.hh
@@ -1,37 +1,17 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBTo4piCP.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTO4PICP_HH
#define EVTBTO4PICP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtBTo4piCP : public EvtDecayAmp {
public:
std::string getName() override;
EvtBTo4piCP* clone() override;
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtBToDiBaryonlnupQCD.hh b/EvtGenModels/EvtBToDiBaryonlnupQCD.hh
index 0d64337..20d65ec 100644
--- a/EvtGenModels/EvtBToDiBaryonlnupQCD.hh
+++ b/EvtGenModels/EvtBToDiBaryonlnupQCD.hh
@@ -1,52 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBToDiBaryonlnupQCD.hh
-//
-// Description: Class to handle semileptonic B -> Baryon Anti-baryon l nu decays
-// using the using form factor predictions from pQCD counting rules. Taken
-// from arXiv:1107.0801
-//
-//
-// Modification history:
-//
-// Mark Smith July 17, 2017 Module created
-// John B Oct 2018 Code simplification
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTODIBARYONLNUPQCD_HH
#define EVTBTODIBARYONLNUPQCD_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenModels/EvtBToDiBaryonlnupQCDFF.hh"
#include "EvtGenModels/EvtSLDiBaryonAmp.hh"
#include <memory>
#include <string>
class EvtParticle;
+// Description: Class to handle semileptonic B -> Baryon Anti-baryon l nu decays
+// using the using form factor predictions from pQCD counting rules. Taken
+// from arXiv:1107.0801
+
class EvtBToDiBaryonlnupQCD : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
void init() override;
private:
std::unique_ptr<EvtBToDiBaryonlnupQCDFF> ffModel_;
std::unique_ptr<EvtSLDiBaryonAmp> calcAmp_;
};
#endif
diff --git a/EvtGenModels/EvtBToDiBaryonlnupQCDFF.hh b/EvtGenModels/EvtBToDiBaryonlnupQCDFF.hh
index 2fcedc6..51dbb8c 100644
--- a/EvtGenModels/EvtBToDiBaryonlnupQCDFF.hh
+++ b/EvtGenModels/EvtBToDiBaryonlnupQCDFF.hh
@@ -1,55 +1,36 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBToDiBaryonlnupQCDFF.hh.hh
-//
-// Description: Module for computation of B->ppbar form factors according
-// to pQCD counting rules, see arXiv:1107.0801.
-//
-// Modification history:
-//
-// Mark Smith July 17, 2017 Module created
-// John B Oct 2018 Added FormFactors class
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTODIBARYONLNUPQCDFF_HH
#define EVTBTODIBARYONLNUPQCDFF_HH
class EvtParticle;
#include <vector>
+// Description: Module for computation of B->ppbar form factors according
+// to pQCD counting rules, see arXiv:1107.0801.
+
class EvtBToDiBaryonlnupQCDFF {
public:
class FormFactors final {
public:
double F1, F2, F3, F4, F5;
double G1, G2, G3, G4, G5;
};
EvtBToDiBaryonlnupQCDFF();
EvtBToDiBaryonlnupQCDFF( std::vector<double>& DParameters );
void getDiracFF( EvtParticle* parent, double dibaryonMass,
EvtBToDiBaryonlnupQCDFF::FormFactors& FF ) const;
void getRaritaFF( EvtParticle* parent, double dibaryonMass,
EvtBToDiBaryonlnupQCDFF::FormFactors& FF ) const;
void getFF( EvtParticle* parent, double dibaryonMass,
EvtBToDiBaryonlnupQCDFF::FormFactors& FF ) const;
private:
std::vector<double> DPars;
int nDPars;
};
#endif
diff --git a/EvtGenModels/EvtBToKpipiCP.hh b/EvtGenModels/EvtBToKpipiCP.hh
index d03a8e5..70161d6 100644
--- a/EvtGenModels/EvtBToKpipiCP.hh
+++ b/EvtGenModels/EvtBToKpipiCP.hh
@@ -1,45 +1,36 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBToKpipiCP.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOKPIPICP_HH
#define EVTBTOKPIPICP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtBTo3hCP.hh"
class EvtParticle;
+// Description: Routine to decay B->K pi pi
+// and has CP violation.
+// --- This is the routine to be called by the Main generator
+// to get the decay of B0 -->-- K+ pi- pi0
+// The decay proceeeds through three channels:
+// a) B0 -->-- K*+ pi- ; K*+ -->-- K+ pi0
+// b) K*0 pi0 ; K*0bar -->-- K+ pi-
+// c) K- rho+ ; rho+ -->-- pi+ pi0
+// It provides at the same time the CP conjugate decay
+// B0bar -->-- K- pi+ pi0
+
class EvtBToKpipiCP : public EvtDecayAmp {
public:
EvtBToKpipiCP() {}
std::string getName() override;
EvtBToKpipiCP* clone() override;
void init() override;
void decay( EvtParticle* p ) override;
private:
EvtBTo3hCP generator;
};
#endif
diff --git a/EvtGenModels/EvtBToPlnuBK.hh b/EvtGenModels/EvtBToPlnuBK.hh
index 17cc720..cc88819 100644
--- a/EvtGenModels/EvtBToPlnuBK.hh
+++ b/EvtGenModels/EvtBToPlnuBK.hh
@@ -1,48 +1,30 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGenModels/EvtBToPlnuBK.hh
-//
-// Description: B->Xu l nu with BK (Becirevic-Kaidalov) parametrization
-// Xu is a pseudoscalar (pi_plus,pi0,eta or eta_prime)
-//
-// Modification history:
-//
-// Martin Simard, U. de Montreal, 08/01/2007 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOPLNUBK_HH
#define EVTBTOPLNUBK_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include <memory>
class EvtParticle;
+// Description: B->Xu l nu with BK (Becirevic-Kaidalov) parametrization
+// Xu is a pseudoscalar (pi_plus,pi0,eta or eta_prime)
+
class EvtBToPlnuBK : public EvtDecayAmp {
public:
std::string getName() override;
EvtBToPlnuBK* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
private:
std::unique_ptr<EvtSemiLeptonicFF> BKmodel;
std::unique_ptr<EvtSemiLeptonicAmp> calcamp;
};
#endif
diff --git a/EvtGenModels/EvtBToPlnuBKFF.hh b/EvtGenModels/EvtBToPlnuBKFF.hh
index 7635a8c..1e62887 100644
--- a/EvtGenModels/EvtBToPlnuBKFF.hh
+++ b/EvtGenModels/EvtBToPlnuBKFF.hh
@@ -1,55 +1,38 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGenModels/EvtBToPlnuBK.hh
-//
-// Description: B->Xu l nu with BK (Becirevic-Kaidalov) parametrization
-// Xu is a pseudoscalar (pi_plus,pi0,eta or eta_prime)
-//
-// Modification history:
-//
-// Martin Simard, U. de Montreal, 08/01/2007 Module created
-//
-//------------------------------------------------------------------------
#ifndef EVTBTOPLNUBKFF_HH
#define EVTBTOPLNUBKFF_HH
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
class EvtId;
+// Description: B->Xu l nu with BK (Becirevic-Kaidalov) parametrization
+// Xu is a pseudoscalar (pi_plus,pi0,eta or eta_prime)
+
class EvtBToPlnuBKFF : public EvtSemiLeptonicFF {
public:
EvtBToPlnuBKFF( double alpha, double beta );
void getscalarff( EvtId parent, EvtId daught, double t, double mass,
double* fp, double* f0 ) override;
void getvectorff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void gettensorff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double* ) override;
void getraritaff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double*, double*, double* ) override;
private:
double _alpha;
double _beta;
};
#endif
diff --git a/EvtGenModels/EvtBToVlnuBall.hh b/EvtGenModels/EvtBToVlnuBall.hh
index f46c86b..b4d52a2 100644
--- a/EvtGenModels/EvtBToVlnuBall.hh
+++ b/EvtGenModels/EvtBToVlnuBall.hh
@@ -1,46 +1,28 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGenModels/EvtBToVlnuBall.hh
-//
-// Description: B->Xu l nu with the Ball/Zwicky decay model
-// Xu is a vector (rho, rho0, omega)
-//
-// Modification history:
-//
-// Wells Wulsin 2008 Aug 14 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOVLNUBALL_HH
#define EVTBTOVLNUBALL_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include <memory>
class EvtParticle;
+// Description: B->Xu l nu with the Ball/Zwicky decay model
+// Xu is a vector (rho, rho0, omega)
+
class EvtBToVlnuBall : public EvtDecayAmp {
public:
std::string getName() override;
EvtBToVlnuBall* clone() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
void init() override;
private:
std::unique_ptr<EvtSemiLeptonicFF> _Ballmodel;
std::unique_ptr<EvtSemiLeptonicAmp> _calcamp;
};
#endif
diff --git a/EvtGenModels/EvtBToVlnuBallFF.hh b/EvtGenModels/EvtBToVlnuBallFF.hh
index 9442eaf..4583b73 100644
--- a/EvtGenModels/EvtBToVlnuBallFF.hh
+++ b/EvtGenModels/EvtBToVlnuBallFF.hh
@@ -1,63 +1,45 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtHQETFF.hh
-//
-// Description: B->Xu l nu with the Ball/Zwicky decay model
-// Xu is a vector (rho, rho0, omega)
-//
-// Modification history:
-//
-// Wells Wulsin 2008 Aug 14 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOVLNUBALLFF_HH
#define EVTBTOVLNUBALLFF_HH
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
class EvtId;
+// Description: B->Xu l nu with the Ball/Zwicky decay model
+// Xu is a vector (rho, rho0, omega)
+
class EvtBToVlnuBallFF : public EvtSemiLeptonicFF {
public:
EvtBToVlnuBallFF( double r2_A1, double mfit2_A1, double r1_A2, double r2_A2,
double mfit2_A2, double r1_V, double r2_V, double mfit2_V );
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void getscalarff( EvtId, EvtId, double, double, double*, double* ) override;
void gettensorff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double* ) override;
void getraritaff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double*, double*, double* ) override;
private:
double _r2_A1;
double _mfit2_A1;
double _r1_A2;
double _r2_A2;
double _mfit2_A2;
double _r1_V;
double _r2_V;
double _mfit2_V;
};
#endif
diff --git a/EvtGenModels/EvtBaryonPCR.hh b/EvtGenModels/EvtBaryonPCR.hh
index f11aa46..765882b 100644
--- a/EvtGenModels/EvtBaryonPCR.hh
+++ b/EvtGenModels/EvtBaryonPCR.hh
@@ -1,50 +1,30 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBaryonPCR.hh
-//
-// Description:Implementation of the BaryonPCR model
-// Class to handle semileptonic decays using the BaryonVminusA
-// model.
-//
-// Modification history:
-//
-// R.J. Tesarek May 28, 2004 Module created
-// Karen Gibson 1/20/2006 Module updated for 1/2+->1/2+,
-// 1/2+->1/2-, 1/2+->3/2- Lambda decays
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBARYONPCR_HH
#define EVTBARYONPCR_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicBaryonAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include <memory>
class EvtParticle;
+// Description:Implementation of the BaryonPCR model
+// Class to handle semileptonic decays using the BaryonVminusA
+// model.
+
class EvtBaryonPCR : public EvtDecayAmp {
public:
std::string getName() override;
EvtBaryonPCR* clone() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
void init() override;
private:
std::unique_ptr<EvtSemiLeptonicFF> baryonpcrffmodel;
std::unique_ptr<EvtSemiLeptonicBaryonAmp> calcamp;
};
#endif
diff --git a/EvtGenModels/EvtBaryonPCRFF.hh b/EvtGenModels/EvtBaryonPCRFF.hh
index ea4a139..92196c6 100644
--- a/EvtGenModels/EvtBaryonPCRFF.hh
+++ b/EvtGenModels/EvtBaryonPCRFF.hh
@@ -1,52 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBaryonVminusAFF.hh
-//
-// Description:Form factor routines specific to EvtBaryonVminusA
-//
-// Modification history:
-//
-// R.J. Tesarek May 28, 2004 Module created
-// Karen Gibson 1/20/2006 Module updated for 1/2+->1/2+,
-// 1/2+->1/2-, 1/2+->3/2- Lambda decays
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBARYONPCRFF_HH
#define EVTBARYONPCRFF_HH
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
class EvtId;
+// Description:Form factor routines specific to EvtBaryonVminusA
+
class EvtBaryonPCRFF : public EvtSemiLeptonicFF {
public:
void getscalarff( EvtId parent, EvtId daught, double t, double mass,
double* fpf, double* f0f ) override;
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void gettensorff( EvtId parent, EvtId daught, double t, double mass,
double* hf, double* kf, double* bpf, double* bmf ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId parent, EvtId daught, double q2, double mass,
double* f1, double* f2, double* f3, double* g1, double* g2,
double* g3 ) override;
void getraritaff( EvtId parent, EvtId daught, double q2, double mass,
double* f1, double* f2, double* f3, double* f4,
double* g1, double* g2, double* g3, double* g4 ) override;
};
#endif
diff --git a/EvtGenModels/EvtBcBsNPi.hh b/EvtGenModels/EvtBcBsNPi.hh
index 2e9a558..eb300ab 100644
--- a/EvtGenModels/EvtBcBsNPi.hh
+++ b/EvtGenModels/EvtBcBsNPi.hh
@@ -1,39 +1,23 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtGenModels/EvtBcBsNPi.hh
-//
-// Description: Decay model for Bc -> Bs + npi
-//
-// Modification history:
-//
-// A.Berezhnoy, A.Likhoded, A.Luchinsky July 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EvtBcBsNpi_HH
#define EvtBcBsNpi_HH
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenModels/EvtBcToNPi.hh"
#include <string>
+// Description: Decay model for Bc -> Bs + npi
+
class EvtBcBsNPi : public EvtBcToNPi {
public:
EvtBcBsNPi();
void init() override;
void initProbMax() override;
std::string getName() override;
EvtBcBsNPi* clone() override;
};
#endif
diff --git a/EvtGenModels/EvtBcBsStarNPi.hh b/EvtGenModels/EvtBcBsStarNPi.hh
index 7b2e6c6..5c69385 100644
--- a/EvtGenModels/EvtBcBsStarNPi.hh
+++ b/EvtGenModels/EvtBcBsStarNPi.hh
@@ -1,39 +1,23 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtGenModels/EvtBcBsStarNPi.hh
-//
-// Description: Decay model for Bc -> Bs* + npi
-//
-// Modification history:
-//
-// A.Berezhnoy, A.Likhoded, A.Luchinsky April 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EvtBcBsStarNpi_HH
#define EvtBcBsStarNpi_HH
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenModels/EvtBcToNPi.hh"
#include <string>
+// Description: Decay model for Bc -> Bs* + npi
+
class EvtBcBsStarNPi : public EvtBcToNPi {
public:
EvtBcBsStarNPi();
void init() override;
void initProbMax() override;
std::string getName() override;
EvtBcBsStarNPi* clone() override;
};
#endif
diff --git a/EvtGenModels/EvtBcPsiNPi.hh b/EvtGenModels/EvtBcPsiNPi.hh
index bde0eba..f47f477 100644
--- a/EvtGenModels/EvtBcPsiNPi.hh
+++ b/EvtGenModels/EvtBcPsiNPi.hh
@@ -1,39 +1,23 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtGenModels/EvtBcBsNPi.hh
-//
-// Description: Decay model for Bc -> J/psi + npi
-//
-// Modification history:
-//
-// A.Berezhnoy, A.Likhoded, A.Luchinsky April 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EvtBcPsiNpi_HH
#define EvtBcPsiNpi_HH
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenModels/EvtBcToNPi.hh"
#include <string>
+// Description: Decay model for Bc -> J/psi + npi
+
class EvtBcPsiNPi : public EvtBcToNPi {
public:
EvtBcPsiNPi();
void init() override;
void initProbMax() override;
std::string getName() override;
EvtBcPsiNPi* clone() override;
};
#endif
diff --git a/EvtGenModels/EvtBcSMuNu.hh b/EvtGenModels/EvtBcSMuNu.hh
index 30ae0bc..dc2ff52 100644
--- a/EvtGenModels/EvtBcSMuNu.hh
+++ b/EvtGenModels/EvtBcSMuNu.hh
@@ -1,52 +1,33 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBcSMuNu.hh
-//
-// Description:Implementation of the model for semileptonic Bc decays
-//
-// Modification history:
-//
-// AVL Jul 6, 2012 Module created
-// AVL Feb 5, 2018 D0, D*0 modes added
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBcSMuNu_HH
#define EVTBcSMuNu_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include <fstream>
#include <memory>
#include <stdio.h>
class EvtParticle;
+// Description:Implementation of the model for semileptonic Bc decays
+
class EvtBcSMuNu : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
private:
std::unique_ptr<EvtSemiLeptonicFF> ffmodel;
std::unique_ptr<EvtSemiLeptonicAmp> calcamp;
int whichfit;
int idScalar;
};
#endif
diff --git a/EvtGenModels/EvtBcTMuNu.hh b/EvtGenModels/EvtBcTMuNu.hh
index bd48076..95fde65 100644
--- a/EvtGenModels/EvtBcTMuNu.hh
+++ b/EvtGenModels/EvtBcTMuNu.hh
@@ -1,49 +1,31 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBcTMuNu.hh
-//
-// Description:Implementation of the model for semileptonic Bc decays
-//
-// Modification history:
-//
-// DJL April 20, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBcTMuNu_HH
#define EVTBcTMuNu_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include <memory>
class EvtParticle;
+// Description:Implementation of the model for semileptonic Bc decays
+
class EvtBcTMuNu : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
private:
std::unique_ptr<EvtSemiLeptonicFF> ffmodel;
std::unique_ptr<EvtSemiLeptonicAmp> calcamp;
int whichfit;
int idTensor;
};
#endif
diff --git a/EvtGenModels/EvtBcToNPi.hh b/EvtGenModels/EvtBcToNPi.hh
index eb89439..574394b 100644
--- a/EvtGenModels/EvtBcToNPi.hh
+++ b/EvtGenModels/EvtBcToNPi.hh
@@ -1,76 +1,60 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtGenModels/EvtBcToNPi.hh
-//
-// Description: General decay model for Bc -> V + npi and Bc -> P + npi
-//
-// Modification history:
-//
-// A.Berezhnoy, A.Likhoded, A.Luchinsky April 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EvtBcToNPi_HH
#define EvtBcToNPi_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <string>
+// Description: General decay model for Bc -> V + npi and Bc -> P + npi
+
class EvtBcToNPi : public EvtDecayAmp {
public:
EvtBcToNPi( bool printAuthorInfo = false );
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
protected:
int nCall;
double maxAmp2;
// Bc form factors
double _maxProb;
double FA0_N, FA0_c1, FA0_c2;
double FAm_N, FAm_c1, FAm_c2;
double FAp_N, FAp_c1, FAp_c2;
double FV_N, FV_c1, FV_c2;
double Fp_N, Fp_c1, Fp_c2;
double Fm_N, Fm_c1, Fm_c2;
// W -> pi... form factors
double _beta;
double _mRho;
double _gammaRho;
double _mRhopr;
double _gammaRhopr;
double _mA1;
double _gammaA1;
double _ee( double M, double m1, double m2 );
double _pp( double M, double m1, double m2 );
EvtComplex Fpi( EvtVector4R q1, EvtVector4R q2 );
double pi3G( double m2, int dupD );
private:
void printAuthorInfo();
};
#endif
diff --git a/EvtGenModels/EvtBcVHad.hh b/EvtGenModels/EvtBcVHad.hh
index 74bb124..86502de 100644
--- a/EvtGenModels/EvtBcVHad.hh
+++ b/EvtGenModels/EvtBcVHad.hh
@@ -1,70 +1,53 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtBcVHad.hh
-//
-// Description: Module to implement Bc -> psi + (n pi) + (m K) decays
-//
-// Modification history:
-//
-// A V Luchinsky Jan 29, 2013 Module created
-// A V Luchinsky Apr 30, 2019 psi K_S K node added
-//
-//------------------------------------------------------------------------
-
#ifndef EvtBcVHad_HH
#define EvtBcVHad_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenModels/EvtBCVFF2.hh"
#include "EvtGenModels/EvtWHad.hh"
#include <memory>
#include <string>
class EvtParticle;
+// Description: Module to implement Bc -> psi + (n pi) + (m K) decays
+
class EvtBcVHad : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
protected:
// Hadronic current function
EvtVector4C hardCurr( EvtParticle* root_particle ) const;
private:
// whichfit --- code of the Bc -> VW formfactor set:
// 1 - SR
// 2 - PM
int whichfit;
// idVector --- final vector particle code
int idVector;
// out_code: code of the hadronic final state
// 1 - pi+
// 2 - pi+ pi0
// 3 - pi+ pi+ pi-
// 4 - 4pi
// 5 - pi+ pi+ pi- pi- pi+
// 6 - K+ K- pi+
// 7 - K+ pi+ pi-
// 8 - K_S0 K+
int out_code;
std::unique_ptr<EvtBCVFF2> ffmodel;
std::unique_ptr<EvtWHad> wcurr;
};
#endif
diff --git a/EvtGenModels/EvtBcVMuNu.hh b/EvtGenModels/EvtBcVMuNu.hh
index 221baaa..676cada 100644
--- a/EvtGenModels/EvtBcVMuNu.hh
+++ b/EvtGenModels/EvtBcVMuNu.hh
@@ -1,50 +1,31 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBcVMuNu.hh
-//
-// Description:Implementation of the model for semileptonic Bc decays
-//
-// Modification history:
-//
-// AVL Jul 6, 2012 Module created
-// AVL Feb 5, 2018 D0, D*0 modes added
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBcVMuNu_HH
#define EVTBcVMuNu_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include <memory>
class EvtParticle;
+// Description:Implementation of the model for semileptonic Bc decays
+
class EvtBcVMuNu : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
private:
std::unique_ptr<EvtSemiLeptonicFF> ffmodel;
std::unique_ptr<EvtSemiLeptonicAmp> calcamp;
int whichfit;
int idVector;
};
#endif
diff --git a/EvtGenModels/EvtBsMuMuKK.hh b/EvtGenModels/EvtBsMuMuKK.hh
index 245ba12..51f2c49 100644
--- a/EvtGenModels/EvtBsMuMuKK.hh
+++ b/EvtGenModels/EvtBsMuMuKK.hh
@@ -1,85 +1,68 @@
-////////////////////////////////////////////////////////////////////////////////
-// //
-// Environment: //
-// This software is part of the EvtGen package. //
-// //
-// Copyright Information: See EvtGen/COPYRIGHT //
-// //
-// Module: EvtBsMUMUKK.hh //
-// //
-// Description: Routine to implement Bs -> J/psi KK //
-// //
-// Modification history: //
-// Veronika Chobanova, Jeremy Dalseno, Diego Martinez Santos //
-// April 21, 2016 Module created LHCb collaboration //
-// Marcos Romero Lamas //
-// February 8, 2019 Module updated LHCb collaboration //
-// //
-////////////////////////////////////////////////////////////////////////////////
-
#ifndef EvtBsMuMuKK_HH
#define EvtBsMuMuKK_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDecayAmp.hh"
#include <string>
class EvtParticle;
+// Description: Routine to implement Bs -> J/psi KK
+
class EvtBsMuMuKK : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
protected:
EvtComplex Flatte( const double m0, const double m ) const;
EvtComplex GetRho( const double m0, const double m ) const;
EvtComplex Breit_Wigner( const double Gamma0, const double m0,
const double m, const int J, const double q0,
const double q ) const;
double Integral( const double Gamma0, const double m0, const int JR,
const int JB, const double q0, const double M_KK_ll,
const double M_KK_ul, const int fcntype ) const;
double X_J( const int J, const double q, const int isB ) const;
double Wignerd( int J, int l, int alpha, double theta ) const;
EvtComplex AngularDist( int J, int l, int alpha, double cK, double cL,
double chi ) const;
EvtComplex AmpTime( const int q, const EvtComplex& gplus,
const EvtComplex& gminus, const double delta,
const double lambda_abs, const double Amp,
const double phis, const int eta ) const;
private:
double MBs, MJpsi, Mf0, Mphi, Mf2p, MKp, MKm, MK0, Mpip, Mpi0, Mmu;
double Gamma0phi, Gamma0f2p;
double kin_lower_limit, kin_upper_limit, kin_middle;
double p30Kp_mid_CMS, p30Kp_ll_CMS, p30Kp_phi_CMS, p30Kp_f2p_CMS;
double p30Jpsi_mid_CMS, p30Jpsi_ll_CMS, p30Jpsi_phi_CMS, p30Jpsi_f2p_CMS;
double int_const_NR, int_Flatte_f0, int_BW_phi, int_BW_f2p;
double f_S_NR, f_f0, f_phi, f_f2p, f_phi_0, f_phi_perp, f_f2p_0, f_f2p_perp;
double A_S_NR, A_f0, A_phi_0, A_phi_perp, A_phi_par, A_f2p_0, A_f2p_perp;
double A_f2p_par;
double delta_S_NR, delta_f0, delta_phi_0, delta_phi_perp, delta_phi_par;
double delta_f2p_0, delta_f2p_perp, delta_f2p_par;
double phis_S_NR, phis_f0, phis_phi_0, phis_phi_perp, phis_phi_par;
double phis_f2p_0, phis_f2p_perp, phis_f2p_par;
double lambda_S_NR_abs, lambda_f0_abs, lambda_phi_0_abs, lambda_phi_perp_abs;
double lambda_phi_par_abs, lambda_f2p_0_abs, lambda_f2p_perp_abs;
double lambda_f2p_par_abs;
double Gamma, deltaGamma, ctau, deltaMs;
};
#endif
diff --git a/EvtGenModels/EvtBsquark.hh b/EvtGenModels/EvtBsquark.hh
index c80528b..f46d06f 100644
--- a/EvtGenModels/EvtBsquark.hh
+++ b/EvtGenModels/EvtBsquark.hh
@@ -1,38 +1,18 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtTauScalarnu.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBSQUARK_HH
#define EVTBSQUARK_HH
#include "EvtGenBase/EvtDecayProb.hh"
class EvtParticle;
class EvtBsquark : public EvtDecayProb {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtBto2piCPiso.hh b/EvtGenModels/EvtBto2piCPiso.hh
index 05e2f82..15114eb 100644
--- a/EvtGenModels/EvtBto2piCPiso.hh
+++ b/EvtGenModels/EvtBto2piCPiso.hh
@@ -1,41 +1,21 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBto2piCPiso.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTO2PICPISO_HH
#define EVTBTO2PICPISO_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtParticle.hh"
class EvtBto2piCPiso : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
std::string getParamName( int i ) override;
std::string getParamDefault( int i ) override;
};
#endif
diff --git a/EvtGenModels/EvtBtoKD3P.hh b/EvtGenModels/EvtBtoKD3P.hh
index b73dfb7..933d2e4 100644
--- a/EvtGenModels/EvtBtoKD3P.hh
+++ b/EvtGenModels/EvtBtoKD3P.hh
@@ -1,75 +1,58 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtBtoKD3P.hh,v 1.1 2009-03-16 16:49:00 robbep Exp $
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 2003, Colorado State University
-//
-// Module creator:
-// Abi soffer, CSU, 2003
-//-----------------------------------------------------------------------
+#ifndef EVT_BTOKD3P
+#define EVT_BTOKD3P
+
+class EvtParticle;
+#include "EvtGenBase/EvtComplex.hh"
+#include "EvtGenBase/EvtDecayAmp.hh"
// Decay model that does the decay B+ -> K+ D , D -> 3 psudoscalars.
//
// The B- daughters specified in the decay file should be K-, D0, D0,
// where the first D0 is produced via b->c decay and the second via b->u.
// In reality, only one D daughter exists, so the first two
// daughters must be defined to decay to the same final state using
// the EvtPto3P model, but with CP-conjugate amplitudes.
//
// For a given point in the Pto3P Dalitz plot,
// the total amplitude is \propto [A1 + A2 r exp(i(phase))], where
//
// A1 & A2 are the amplitudes of the D0 and D0bar to decay into that
// Dalitz plot point,
//
// r is the (positive) ratio between the A(B->B0bar K) and A(B->D0 K)
// B decay amplitudes,
//
// phase is the total phase difference (weak phase + strong phase) between
// A(B->D0bar K) and A(B->B0 K).
//
// Note that this model knows nothing about your convention for the
// sign of the phase, so when specifying the decay of a B- you need to
// change the order of D0 and D0bar and change the total phase so that
// the sign of the weak phase flips with respect to the parameters of B+.
-//
-
-#ifndef EVT_BTOKD3P
-#define EVT_BTOKD3P
-
-class EvtParticle;
-#include "EvtGenBase/EvtComplex.hh"
-#include "EvtGenBase/EvtDecayAmp.hh"
class EvtBtoKD3P : public EvtDecayAmp {
public:
EvtDecayBase* clone() override;
// Initialize model
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
// we really have two daughters, although three are listed in the .dec file:
int nRealDaughters() override { return 2; }
std::string getName() override;
protected:
// parameters:
double _r;
EvtComplex _exp;
// other:
const EvtDecayBase* _model1 = nullptr;
const EvtDecayBase* _model2 = nullptr;
bool _decayedOnce = false;
};
#endif
diff --git a/EvtGenModels/EvtBtoKpiCPiso.hh b/EvtGenModels/EvtBtoKpiCPiso.hh
index 30d3cd2..646278e 100644
--- a/EvtGenModels/EvtBtoKpiCPiso.hh
+++ b/EvtGenModels/EvtBtoKpiCPiso.hh
@@ -1,38 +1,18 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtBtoKpiCPiso.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOKPICPISO_HH
#define EVTBTOKPICPISO_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtParticle.hh"
class EvtBtoKpiCPiso : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtBtoXsEtap.hh b/EvtGenModels/EvtBtoXsEtap.hh
index 445742a..0c22dd8 100644
--- a/EvtGenModels/EvtBtoXsEtap.hh
+++ b/EvtGenModels/EvtBtoXsEtap.hh
@@ -1,42 +1,21 @@
-//--------------------------------------------------------------------------
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-//
-// Module: EvtGen/EvtBtoXsEtap.hh
-//
-// Description:
-// Class to generate non-resonant two-body b->s,gluon decays.
-//
-// Modification history:
-//
-// Adlene Hicheur Jannuary 10, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOXSETAP_HH
#define EVTBTOXSETAP_HH
#include "EvtGenBase/EvtDecayIncoherent.hh"
class EvtParticle;
class EvtBtoXsEtap : public EvtDecayIncoherent {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtBtoXsgamma.hh b/EvtGenModels/EvtBtoXsgamma.hh
index 4df7b22..46244fa 100644
--- a/EvtGenModels/EvtBtoXsgamma.hh
+++ b/EvtGenModels/EvtBtoXsgamma.hh
@@ -1,49 +1,30 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-//
-// Module: EvtGen/EvtBtoXsgamma.hh
-//
-// Description:
-// Class to generate non-resonant two-body b->s,gamma decays.
-//
-// Modification history:
-//
-// Mark Ian Williams July 20, 2000 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOXSGAMMA_HH
#define EVTBTOXSGAMMA_HH
#include "EvtGenBase/EvtDecayIncoherent.hh"
#include "EvtGenModels/EvtBtoXsgammaAbsModel.hh"
#include <memory>
class EvtParticle;
+
+// Class to generate non-resonant two-body b->s,gamma decays.
+
class EvtBtoXsgamma : public EvtDecayIncoherent {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
private:
std::unique_ptr<EvtBtoXsgammaAbsModel> _model;
};
#endif
diff --git a/EvtGenModels/EvtBtoXsgammaAbsModel.hh b/EvtGenModels/EvtBtoXsgammaAbsModel.hh
index b8f25e2..6710dff 100644
--- a/EvtGenModels/EvtBtoXsgammaAbsModel.hh
+++ b/EvtGenModels/EvtBtoXsgammaAbsModel.hh
@@ -1,35 +1,16 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-//
-// Module: EvtGen/EvtBtoXsgammaAbsModel.hh
-//
-// Description:
-// B->Xs gamma model base class.
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2000 Module Created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOXSGAMMAABSMODEL_HH
#define EVTBTOXSGAMMAABSMODEL_HH
+// Description:
+// B->Xs gamma model base class.
+
class EvtBtoXsgammaAbsModel {
public:
virtual ~EvtBtoXsgammaAbsModel() = default;
virtual void init( int, double* );
virtual double GetMass( int code ) = 0;
};
#endif
diff --git a/EvtGenModels/EvtBtoXsgammaAliGreub.hh b/EvtGenModels/EvtBtoXsgammaAliGreub.hh
index 5b13b0f..5c44928 100644
--- a/EvtGenModels/EvtBtoXsgammaAliGreub.hh
+++ b/EvtGenModels/EvtBtoXsgammaAliGreub.hh
@@ -1,35 +1,15 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-//
-// Module: EvtGen/EvtBtoXsgammaAliGreubFcn.hh
-//
-// Description:
-// Class to generate non-resonant two-body b->s,gamma decays.
-//
-// Modification history:
-//
-// Mark Ian Williams July 20, 2000 Module created
-// Jane Tinslay March 21, 2000 Separated from EvtBtoXsgamma
-// class to allow choice of input models.
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOXSGAMMAALIGREUB_HH
#define EVTBTOXSGAMMAALIGREUB_HH
+
#include "EvtGenModels/EvtBtoXsgammaAbsModel.hh"
+// Class to generate non-resonant two-body b->s,gamma decays.
+
class EvtBtoXsgammaAliGreub : public EvtBtoXsgammaAbsModel {
public:
void init( int, double* ) override;
double GetMass( int code ) override;
};
#endif
diff --git a/EvtGenModels/EvtBtoXsgammaFermiUtil.hh b/EvtGenModels/EvtBtoXsgammaFermiUtil.hh
index b127cf8..842c8e9 100644
--- a/EvtGenModels/EvtBtoXsgammaFermiUtil.hh
+++ b/EvtGenModels/EvtBtoXsgammaFermiUtil.hh
@@ -1,55 +1,37 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2001 Brunel University
-//
-// Module: EvtGen/EvtBtoXsgammaFermiUtil.hh
-//
-// Description:
-// Class to hold various fermi functions and their helper functions. The
-// fermi functions are used in EvtBtoXsgammaKagan.
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOXSGAMMAFERMIUTIL_HH
#define EVTBTOXSGAMMAFERMIUTIL_HH
#include <vector>
+// Description:
+// Class to hold various fermi functions and their helper functions. The
+// fermi functions are used in EvtBtoXsgammaKagan.
+
class EvtBtoXsgammaFermiUtil final {
//--------------------
// Instance Members --
//--------------------
public:
//Exponential function
static double FermiExpFunc( double var, const std::vector<double>& coeffs );
//Gaussian function and its helper functions
static double FermiGaussFunc( double, std::vector<double> const& coeffs );
static double FermiGaussFuncRoot( double, double, double,
std::vector<double>& coeffs );
static double FermiGaussRootFcnA( double, const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2 );
static double FermiGaussRootFcnB( double, const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2 );
static double Gamma( double, const std::vector<double>& coeffs );
//Roman function and its helper functions
static double BesselI1( double );
static double BesselK1( double );
static double FermiRomanFuncRoot( double, double );
static double FermiRomanRootFcnA( double );
static double FermiRomanFunc( double, std::vector<double> const& coeffs );
};
#endif
diff --git a/EvtGenModels/EvtBtoXsgammaFixedMass.hh b/EvtGenModels/EvtBtoXsgammaFixedMass.hh
index 694ca68..fdcc455 100644
--- a/EvtGenModels/EvtBtoXsgammaFixedMass.hh
+++ b/EvtGenModels/EvtBtoXsgammaFixedMass.hh
@@ -1,38 +1,20 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 2001 Brunel University, University of Wisconsin
-//
-// Module: EvtGen/EvtBtoXsgammaFixedMass.hh
-//
-// Description:
-// Implimentation of a fixed hadronic mass to measure spectrum
-//
-// Modification history:
-//
-// Jim Libby October 11, 2002 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOXSGAMMAFIXEDMASS_HH
#define EVTBTOXSGAMMAFIXEDMASS_HH
#include "EvtGenModels/EvtBtoXsgammaAbsModel.hh"
+// Description:
+// Implimentation of a fixed hadronic mass to measure spectrum
+
class EvtBtoXsgammaFixedMass : public EvtBtoXsgammaAbsModel {
public:
void init( int, double* ) override;
double GetMass( int code ) override;
private:
//Input parameters
double _mH;
};
#endif
diff --git a/EvtGenModels/EvtBtoXsgammaFlatEnergy.hh b/EvtGenModels/EvtBtoXsgammaFlatEnergy.hh
index 80ff296..095ae1e 100644
--- a/EvtGenModels/EvtBtoXsgammaFlatEnergy.hh
+++ b/EvtGenModels/EvtBtoXsgammaFlatEnergy.hh
@@ -1,42 +1,24 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 2001 Brunel University, University of Wisconsin
-//
-// Module: EvtGen/EvtBtoXsgammaFlatEnergy.hh
-//
-// Description:
-// Implimentation of a fixed hadronic mass to measure spectrum
-//
-// Modification history:
-//
-// Jim Libby October 11, 2002 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOXSGAMMAFLATENERGY_HH
#define EVTBTOXSGAMMAFLATENERGY_HH
#include "EvtGenModels/EvtBtoXsgammaAbsModel.hh"
+// Description:
+// Implimentation of a fixed hadronic mass to measure spectrum
+
class EvtBtoXsgammaFlatEnergy : public EvtBtoXsgammaAbsModel {
public:
void init( int, double* ) override;
double GetMass( int code ) override;
private:
//Input parameters
double _eMin;
double _eMax;
//
double _mB0;
double _eRange;
};
#endif
diff --git a/EvtGenModels/EvtBtoXsgammaKagan.hh b/EvtGenModels/EvtBtoXsgammaKagan.hh
index a01ebac..9ba8251 100644
--- a/EvtGenModels/EvtBtoXsgammaKagan.hh
+++ b/EvtGenModels/EvtBtoXsgammaKagan.hh
@@ -1,131 +1,128 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 2001 Brunel University, University of Wisconsin
-//
-// Module: EvtGen/EvtBtoXsgammaKagan.hh
-//
-// Description:
-// Implimentation of the Kagan-Neubert model for non-resonant
-// B->Xs,gamma decays.
-//
-// Modification history:
-//
-// Jane Tinslay, Francesca Di Lodovico March 27, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOXSGAMMAKAGAN_HH
#define EVTBTOXSGAMMAKAGAN_HH
#include "EvtGenModels/EvtBtoXsgammaAbsModel.hh"
#include <vector>
+// Description:
+// Implimentation of the Kagan-Neubert model for non-resonant
+// B->Xs,gamma decays.
+// Description:
+// Routine to perform two-body non-resonant B->Xs,gamma decays.
+// The X_s mass spectrum generated is based on the Kagan-Neubert model.
+// See hep-ph/9805303 for the model details and input parameters.
+//
+// The input parameters are 1:fermi_model, 2:mB, 3:mb, 4:mu, 5:lam1,
+// 6:delta, 7:z, 8:nIntervalS, 9:nIntervalmH. Choosing fermi_model=1
+// uses an exponential shape function, fermi_model=2 uses a gaussian
+// shape function and fermi_model=3 a roman shape function. The complete mass
+// spectrum for a given set of input parameters is calculated from
+// scratch in bins of nIntervalmH. The s22, s27 and s28 coefficients are calculated
+// in bins of nIntervalS. As the program includes lots of integration, the
+// theoretical hadronic mass spectra is computed for the first time
+// the init method is called. Then, all the other times (eg if we want to decay a B0
+// as well as an anti-B0) the vector mass info stored the first time is used again.
+
class EvtBtoXsgammaKagan : public EvtBtoXsgammaAbsModel {
public:
void init( int, double* ) override;
void computeHadronicMass( int, double* );
void getDefaultHadronicMass();
double GetMass( int code ) override;
double CalcAlphaS( double );
void CalcWilsonCoeffs();
void CalcDelta();
double Fz( double );
private:
//Input parameters
double _mb;
double _mB;
double _delta;
double _nIntervalS;
double _nIntervalmH;
double _lambdabar;
double _lam1;
double _mHmin;
double _mHmax;
//Other parameters
double _r7;
double _gam77;
double _gam27;
double _gam87;
double _beta0;
double _beta1;
double _alphasmZ;
double _mZ;
double _z;
double _fz;
double _lam2;
double _kappabar;
double _rer2;
double _rer8;
double _kSLemmu;
double _mW;
double _mt;
double _ms;
double _mu;
double _c2mu;
double _c70mu;
double _c80mu;
double _c71mu;
double _c7emmu;
double _cDeltatot;
double _alpha;
double _alphasmW;
double _alphasmt;
double _alphasmu;
double _alphasmubar;
double _etamu;
std::vector<double> _mHVect;
static double ReG( double );
static double ImG( double );
static double s77( double );
static double s88( double, double, double );
static double s78( double );
static double s22Func( double var, const std::vector<double>& coeffs );
static double s27Func( double var, const std::vector<double>& coeffs );
static double Delta( double, double );
static double DeltaFermiFunc( double, const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2,
const std::vector<double>& coeffs3 );
static double s77FermiFunc( double, const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2 );
static double s88FermiFunc( double, const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2,
const std::vector<double>& coeffs3 );
static double s78FermiFunc( double, const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2 );
static double s22FermiFunc( double, std::vector<double>& coeffs );
static double s27FermiFunc( double, std::vector<double>& coeffs );
static double s28FermiFunc( double, std::vector<double>& coeffs );
static double GetArrayVal( double, double, double, double,
std::vector<double> );
static double sFermiFunc( double, const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2,
const std::vector<double>& coeffs3,
const std::vector<double>& coeffs4 );
static double FermiFunc( double, const std::vector<double>& coeffs );
static double diLogFunc( double );
static double diLogMathematica( double );
std::vector<double> massHad, brHad;
static double intervalMH;
static bool bbprod;
};
#endif
diff --git a/EvtGenModels/EvtBtoXsgammaRootFinder.hh b/EvtGenModels/EvtBtoXsgammaRootFinder.hh
index adecfdf..b1b174e 100644
--- a/EvtGenModels/EvtBtoXsgammaRootFinder.hh
+++ b/EvtGenModels/EvtBtoXsgammaRootFinder.hh
@@ -1,50 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2001 Brunel University
-//
-// Module: EvtGen/EvtBtoXsgammaRootFinder.hh
-//
-// Description:
-// Root finding algorithms using the bilear method. Basic structure
-// lifted from the BaBar IntegrationUtils root finding algorithm
-// (author John Back).
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOXSGAMMAROOTFINDER_HH
#define EVTBTOXSGAMMAROOTFINDER_HH
//-------------
// C Headers --
//-------------
extern "C" {
}
//#include "EvtGenBase/EvtItgAbsFunction.hh"
class EvtItgAbsFunction;
+// Description:
+// Root finding algorithms using the bilear method. Basic structure
+// lifted from the BaBar IntegrationUtils root finding algorithm
+// (author John Back).
+
class EvtBtoXsgammaRootFinder final {
public:
double GetRootSingleFunc( const EvtItgAbsFunction* theFunc,
double functionValue, double lowerValue,
double upperValue, double precision );
double GetGaussIntegFcnRoot( EvtItgAbsFunction* theFunc1,
EvtItgAbsFunction* theFunc2,
double integ1Precision, double integ2Precision,
int maxLoop1, int maxLoop2, double integLower,
double integUpper, double lowerValue,
double upperValue, double precision );
};
#endif
diff --git a/EvtGenModels/EvtBtoXsll.hh b/EvtGenModels/EvtBtoXsll.hh
index 4fe3aa6..0f57061 100644
--- a/EvtGenModels/EvtBtoXsll.hh
+++ b/EvtGenModels/EvtBtoXsll.hh
@@ -1,55 +1,43 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-//
-// Module: EvtGen/EvtBtoXsll.hh
-//
-// Description:
-// Class to generate inclusive non-resonant B -> Xs l+ l- decays.
-//
-// Modification history:
-//
-// Stephane Willocq Jan 17, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOXSLL_HH
#define EVTBTOXSLL_HH
#include "EvtGenBase/EvtDecayIncoherent.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenModels/EvtBtoXsllUtil.hh"
#include <memory>
class EvtBtoXsllUtil;
+// Description:
+// Class to generate inclusive non-resonant B -> Xs l+ l- decays.
+// Description: Routine to generate non-resonant B -> Xs l+ l- decays.
+// It generates a dilepton mass spectrum according to Kruger and Sehgal
+// and then generates the two lepton momenta accoring to Ali et al.
+// The resultant X_s particles may be decayed by JETSET.
+
class EvtBtoXsll : public EvtDecayIncoherent {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
private:
std::unique_ptr<EvtBtoXsllUtil> _calcprob;
double _dGdsProbMax;
double _dGdsdupProbMax;
double _mb;
double _ms;
double _mq;
double _pf;
double _mxmin;
};
#endif
diff --git a/EvtGenModels/EvtBtoXsllUtil.hh b/EvtGenModels/EvtBtoXsllUtil.hh
index 5e17543..0d4f49b 100644
--- a/EvtGenModels/EvtBtoXsllUtil.hh
+++ b/EvtGenModels/EvtBtoXsllUtil.hh
@@ -1,49 +1,43 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-//
-// Module: EvtGen/EvtBtoXsllUtil.hh
-//
-// Description:
-// Class to generate inclusive non-resonant B -> Xs l+ l- decays.
-//
-// Modification history:
-//
-// Stephane Willocq Jan 19, 2001 Module created
-// Stephane Willocq Nov 6, 2003 Update Wilson Coeffs
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOXSLLUTIL_HH
#define EVTBTOXSLLUTIL_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDecayIncoherent.hh"
#include "EvtGenBase/EvtParticle.hh"
class EvtComplex;
+// Description:
+// Class to generate inclusive non-resonant B -> Xs l+ l- decays.
+// Description: Routine to generate non-resonant B -> Xs l+ l- decays.
+// It generates a dilepton mass spectrum according to
+// F.Kruger and L.M.Sehgal, Phys. Lett. B380, 199 (1996)
+// and then generates the two lepton momenta according to
+// A.Ali, G.Hiller, L.T.Handoko and T.Morozumi, Phys. Rev. D55, 4105 (1997).
+// Expressions for Wilson coefficients and power corrections are taken
+// from A.Ali, E.Lunghi, C.Greub and G.Hiller, Phys. Rev. D66, 034002 (2002).
+// Detailed formulae for shat dependence of these coefficients are taken
+// from H.H.Asatryan, H.M.Asatrian, C.Greub and M.Walker, PRD65, 074004 (2002)
+// and C.Bobeth, M.Misiak and J.Urban, Nucl. Phys. B574, 291 (2000).
+// The resultant Xs particles may be decayed by JETSET.
+
class EvtBtoXsllUtil {
public:
EvtComplex GetC7Eff0( double sh, bool nnlo = true );
EvtComplex GetC7Eff1( double sh, double mb, bool nnlo = true );
EvtComplex GetC9Eff0( double sh, double mb, bool nnlo = true,
bool btod = false );
EvtComplex GetC9Eff1( double sh, double mb, bool nnlo = true,
bool btod = false );
EvtComplex GetC10Eff( double sh, bool nnlo = true );
double dGdsProb( double mb, double ms, double ml, double s );
double dGdsdupProb( double mb, double ms, double ml, double s, double u );
double FermiMomentum( double pf );
double FermiMomentumProb( double pb, double pf );
};
#endif
diff --git a/EvtGenModels/EvtCBTo3piMPP.hh b/EvtGenModels/EvtCBTo3piMPP.hh
index 39b9fe7..0a7afb3 100644
--- a/EvtGenModels/EvtCBTo3piMPP.hh
+++ b/EvtGenModels/EvtCBTo3piMPP.hh
@@ -1,45 +1,25 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtCBTo3piMPP.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTCBTO3PIMPP_HH
#define EVTCBTO3PIMPP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtBTo3hCP.hh"
class EvtParticle;
class EvtCBTo3piMPP : public EvtDecayAmp {
public:
std::string getName() override;
EvtCBTo3piMPP* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
private:
EvtBTo3hCP generator;
};
#endif
diff --git a/EvtGenModels/EvtCBTo3piP00.hh b/EvtGenModels/EvtCBTo3piP00.hh
index f1fd146..4e65ff5 100644
--- a/EvtGenModels/EvtCBTo3piP00.hh
+++ b/EvtGenModels/EvtCBTo3piP00.hh
@@ -1,47 +1,27 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtCBTo3piP00.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTCBTO3PIP00_HH
#define EVTCBTO3PIP00_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtBTo3hCP.hh"
class EvtParticle;
class EvtCBTo3piP00 : public EvtDecayAmp {
public:
EvtCBTo3piP00() {}
std::string getName() override;
EvtCBTo3piP00* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
private:
EvtBTo3hCP generator;
};
#endif
diff --git a/EvtGenModels/EvtD0gammaDalitz.hh b/EvtGenModels/EvtD0gammaDalitz.hh
index f5549d5..6f42de6 100644
--- a/EvtGenModels/EvtD0gammaDalitz.hh
+++ b/EvtGenModels/EvtD0gammaDalitz.hh
@@ -1,90 +1,80 @@
-//--------------------------------------------------------------------------
-//
-// Module: EvtGen/EvtD0gammaDalitz.hh
-//
-// Modification history:
-//
-// JGT February 13, 2012 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef __EVTD0GAMMADALITZ_HH__
#define __EVTD0GAMMADALITZ_HH__
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDalitzReso.hh"
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtFlatte.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include <vector>
class EvtParticle;
class EvtD0gammaDalitz : public EvtDecayAmp {
private:
int _d1;
int _d2;
int _d3;
bool _isKsPiPi;
// Useful constants.
static const EvtSpinType::spintype& _SCALAR;
static const EvtSpinType::spintype& _VECTOR;
static const EvtSpinType::spintype& _TENSOR;
static const EvtDalitzReso::CouplingType& _EtaPic;
static const EvtDalitzReso::CouplingType& _PicPicKK;
static const EvtDalitzReso::NumType& _RBW;
static const EvtDalitzReso::NumType& _GS;
static const EvtDalitzReso::NumType& _KMAT;
static const EvtCyclic3::Pair& _AB;
static const EvtCyclic3::Pair& _AC;
static const EvtCyclic3::Pair& _BC;
// Values to be read or computed based on values in the evt.pdl file.
// IDs of the relevant particles.
EvtId _BP;
EvtId _BM;
EvtId _B0;
EvtId _B0B;
EvtId _D0;
EvtId _D0B;
EvtId _KM;
EvtId _KP;
EvtId _K0;
EvtId _K0B;
EvtId _KL;
EvtId _KS;
EvtId _PIM;
EvtId _PIP;
// Flavor of the B mother.
EvtId _bFlavor;
// Masses of the relevant particles.
double _mD0;
double _mKs;
double _mPi;
double _mK;
void readPDGValues();
void reportInvalidAndExit() const;
EvtComplex dalitzKsPiPi( const EvtDalitzPoint& point ) const;
EvtComplex dalitzKsKK( const EvtDalitzPoint& point ) const;
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtD0mixDalitz.hh b/EvtGenModels/EvtD0mixDalitz.hh
index e242b73..18f0a39 100644
--- a/EvtGenModels/EvtD0mixDalitz.hh
+++ b/EvtGenModels/EvtD0mixDalitz.hh
@@ -1,123 +1,114 @@
-/*****************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenModels
- * File: $Id: EvtD0mixDalitz.hh,v 1.1 2009-03-16 16:49:00 robbep Exp $
- *
- * Description:
- * The D0mixDalitz model, with many resonances and mixing implemented.
- *
- * Modification history:
- * Jordi Garra Ticó 2008/07/03 File created
- *****************************************************************************/
-
#ifndef __EVTD0MIXDALITZ_HH__
#define __EVTD0MIXDALITZ_HH__
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDalitzPoint.hh"
#include "EvtGenBase/EvtDalitzReso.hh"
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtSpinType.hh"
+// Description:
+// The D0mixDalitz model, with many resonances and mixing implemented.
+
class EvtD0mixDalitz : public EvtDecayAmp {
private:
int _d1;
int _d2;
int _d3;
// Mixing parameters.
double _x;
double _y;
// q/p CP violation in the mixing.
EvtComplex _qp;
// Checker of the decay mode.
bool _isKsPiPi;
bool _isRBWmodel;
// Useful constants.
static const EvtSpinType::spintype& _SCALAR;
static const EvtSpinType::spintype& _VECTOR;
static const EvtSpinType::spintype& _TENSOR;
static const EvtDalitzReso::CouplingType& _EtaPic;
static const EvtDalitzReso::CouplingType& _PicPicKK;
static const EvtDalitzReso::NumType& _RBW;
static const EvtDalitzReso::NumType& _GS;
static const EvtDalitzReso::NumType& _KMAT;
static const EvtCyclic3::Pair& _AB;
static const EvtCyclic3::Pair& _AC;
static const EvtCyclic3::Pair& _BC;
// Values to be read or computed based on values in the evt.pdl file.
// IDs of the relevant particles.
EvtId _D0;
EvtId _D0B;
EvtId _KM;
EvtId _KP;
EvtId _K0;
EvtId _K0B;
EvtId _KL;
EvtId _KS;
EvtId _PIM;
EvtId _PIP;
// Masses of the relevant particles.
double _mD0;
double _mKs;
double _mPi;
double _mK;
// Life time and decay rate.
double _ctau;
double _gamma;
// Some useful integrals over the Dalitz plot.
EvtComplex _iChi;
EvtComplex _iChi2;
void readPDGValues();
EvtComplex dalitzKsPiPi( const EvtDalitzPoint& point );
EvtComplex dalitzKsKK( const EvtDalitzPoint& point );
// Time evolution functions for hamiltonian eigenstates.
// Negative exponential part removed.
EvtComplex h1( const double& ct ) const;
EvtComplex h2( const double& ct ) const;
void reportInvalidAndExit() const
{
EvtGenReport( EVTGEN_ERROR, "EvtD0mixDalitz" )
<< "EvtD0mixDalitz: Invalid mode." << std::endl;
exit( 1 );
}
public:
EvtD0mixDalitz() :
_d1( 0 ),
_d2( 0 ),
_d3( 0 ),
_x( 0. ),
_y( 0. ),
_qp( 1. ),
_isKsPiPi( false ),
_isRBWmodel( true )
{
}
// One-line inline functions.
std::string getName() override { return "D0MIXDALITZ"; }
EvtDecayBase* clone() override { return new EvtD0mixDalitz; }
void initProbMax() override { setProbMax( 5200. ); }
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtDDalitz.hh b/EvtGenModels/EvtDDalitz.hh
index 380fa51..13631b2 100644
--- a/EvtGenModels/EvtDDalitz.hh
+++ b/EvtGenModels/EvtDDalitz.hh
@@ -1,52 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtDDalitz.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTDDALITZ_HH
#define EVTDDALITZ_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtFlatte.hh"
#include <vector>
class EvtParticle;
class EvtDDalitz : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
private:
int _d1, _d2, _d3, _flag;
EvtComplex amplDtoK0PiPi( EvtVector4R p4_p, EvtVector4R moms1,
EvtVector4R moms2, EvtVector4R moms3 );
EvtComplex amplDtoK0KK( EvtVector4R p4_p, EvtVector4R moms1,
EvtVector4R moms2, EvtVector4R moms3 );
vector<EvtFlatteParam> _kkpi_params;
};
#endif
diff --git a/EvtGenModels/EvtDMix.hh b/EvtGenModels/EvtDMix.hh
index 966d5d1..80ff1ba 100644
--- a/EvtGenModels/EvtDMix.hh
+++ b/EvtGenModels/EvtDMix.hh
@@ -1,48 +1,26 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtPhsp.hh
-//
-// Description:
-//Class to handle generic phase space decays not done
-//in other decay models.
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTDMIX_HH
#define EVTDMIX_HH
#include "EvtGenBase/EvtDecayIncoherent.hh"
class EvtParticle;
class EvtDMix : public EvtDecayIncoherent {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
private:
double _rd;
double _xpr;
double _ypr;
};
#endif
diff --git a/EvtGenModels/EvtDalitzDecayInfo.hh b/EvtGenModels/EvtDalitzDecayInfo.hh
index 52be230..ef3cba5 100644
--- a/EvtGenModels/EvtDalitzDecayInfo.hh
+++ b/EvtGenModels/EvtDalitzDecayInfo.hh
@@ -1,63 +1,45 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtGenericDalitz.hh
-//
-// Description: Model to describe a generic dalitz decay
-//
-// Modification history:
-//
-// DCC 16 December, 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTDALITZDECAYINFO_HH
#define EVTDALITZDECAYINFO_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDalitzReso.hh"
#include "EvtGenBase/EvtId.hh"
#include <vector>
+// Description: Model to describe a generic dalitz decay
+
class EvtDalitzDecayInfo final {
public:
EvtDalitzDecayInfo( EvtId d1, EvtId d2, EvtId d3 ) :
_d1( d1 ), _d2( d2 ), _d3( d3 ), _probMax( 0. )
{
}
void addResonance( EvtComplex amp, EvtDalitzReso res )
{
_resonances.push_back( std::pair<EvtComplex, EvtDalitzReso>( amp, res ) );
}
void addResonance( std::pair<EvtComplex, EvtDalitzReso> res )
{
_resonances.push_back( res );
}
void setProbMax( double probMax ) { _probMax = probMax; }
const std::vector<std::pair<EvtComplex, EvtDalitzReso>>& getResonances() const
{
return _resonances;
}
double getProbMax() const { return _probMax; }
inline const EvtId& daughter1() const { return _d1; }
inline const EvtId& daughter2() const { return _d2; }
inline const EvtId& daughter3() const { return _d3; }
private:
EvtId _d1, _d2, _d3;
std::vector<std::pair<EvtComplex, EvtDalitzReso>> _resonances;
double _probMax;
};
#endif
diff --git a/EvtGenModels/EvtDalitzTable.hh b/EvtGenModels/EvtDalitzTable.hh
index fd84aa0..5696228 100644
--- a/EvtGenModels/EvtDalitzTable.hh
+++ b/EvtGenModels/EvtDalitzTable.hh
@@ -1,78 +1,60 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtGenericDalitz.hh
-//
-// Description: Model to describe a generic dalitz decay
-//
-// Modification history:
-//
-// DCC 16 December, 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTDALITZTABLE_HPP
#define EVTDALITZTABLE_HPP
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDalitzPlot.hh"
#include "EvtGenBase/EvtDalitzReso.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenModels/EvtDalitzDecayInfo.hh"
#include <map>
#include <string>
#include <vector>
+// Description: Model to describe a generic dalitz decay
+
class EvtDalitzTable {
public:
static EvtDalitzTable* getInstance( const std::string dec_name = "",
bool verbose = true );
bool fileHasBeenRead( const std::string dec_name );
void readXMLDecayFile( const std::string dec_name, bool verbose = true );
void checkParticle( std::string particle );
void addDecay( EvtId parent, const EvtDalitzDecayInfo& dec );
void copyDecay( EvtId parent, EvtId* daughters, EvtId copy, EvtId* copyd );
std::vector<EvtDalitzDecayInfo> getDalitzTable( const EvtId& parent );
protected:
EvtDalitzTable();
~EvtDalitzTable();
private:
EvtDalitzReso getResonance( std::string shape, EvtDalitzPlot dp,
EvtCyclic3::Pair angPair,
EvtCyclic3::Pair resPair,
EvtSpinType::spintype spinType, double mass,
double width, double FFp, double FFr,
double alpha, double aLass, double rLass,
double BLass, double phiBLass, double RLass,
double phiRLass, double cutoffLass );
int getDaughterPairs(
EvtId* resDaughter, EvtId* daughter,
std::vector<std::pair<EvtCyclic3::Pair, EvtCyclic3::Pair>>& angAndResPairs );
std::map<EvtId, std::vector<EvtDalitzDecayInfo>> _dalitztable;
std::vector<std::string> _readFiles;
EvtDalitzTable( const EvtDalitzTable& );
EvtDalitzTable& operator=( const EvtDalitzTable& );
//to calculate probMax
double calcProbMax( EvtDalitzPlot dp, EvtDalitzDecayInfo* model );
double calcProb( EvtDalitzPoint point, EvtDalitzDecayInfo* model );
};
#endif
diff --git a/EvtGenModels/EvtEta2MuMuGamma.hh b/EvtGenModels/EvtEta2MuMuGamma.hh
index f009a6e..c121ae5 100644
--- a/EvtGenModels/EvtEta2MuMuGamma.hh
+++ b/EvtGenModels/EvtEta2MuMuGamma.hh
@@ -1,39 +1,19 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtPi0Dalitz.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTETA2MUMUGAMMA_HH
#define EVTETA2MUMUGAMMA_HH
#include "EvtGenBase/EvtDecayProb.hh"
class EvtParticle;
class EvtEta2MuMuGamma : public EvtDecayProb {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtEtaDalitz.hh b/EvtGenModels/EvtEtaDalitz.hh
index d9b6053..abf8dc8 100644
--- a/EvtGenModels/EvtEtaDalitz.hh
+++ b/EvtGenModels/EvtEtaDalitz.hh
@@ -1,39 +1,19 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtEtaDalitz.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTETADALITZ_HH
#define EVTETADALITZ_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtEtaDalitz : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtFlatQ2.hh b/EvtGenModels/EvtFlatQ2.hh
index fdb9563..994943c 100644
--- a/EvtGenModels/EvtFlatQ2.hh
+++ b/EvtGenModels/EvtFlatQ2.hh
@@ -1,42 +1,24 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtFlatQ2.hh
-//
-// Description: B->Xu l nu with flat q2 distribution
-//
-// Modification history:
-//
-// David Cote, U. de Montreal, 11/02/2003 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTFLATQ2_HH
#define EVTFLATQ2_HH
#include "EvtGenBase/EvtDecayProb.hh"
class EvtParticle;
+// Description: B->Xu l nu with flat q2 distribution
+
class EvtFlatQ2 : public EvtDecayProb {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
private:
bool _usePhsp;
};
#endif
diff --git a/EvtGenModels/EvtFlatSqDalitz.hh b/EvtGenModels/EvtFlatSqDalitz.hh
index 4bfd3d4..76e5b03 100644
--- a/EvtGenModels/EvtFlatSqDalitz.hh
+++ b/EvtGenModels/EvtFlatSqDalitz.hh
@@ -1,44 +1,25 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtFlatSqDalitz.cc
-//
-// Description: B->3 body flat in square dalitz vairiables
-// the square dalitz is the plane m12 theta12
-//
-// Modification history:
-//
-// Aurelien Martens, LPNHE Paris, 23/06/2012 Module created
-//
-//
-//------------------------------------------------------------------------
-
#ifndef EVTFLATSQDALITZ_HH
#define EVTFLATSQDALITZ_HH
#include "EvtGenBase/EvtDecayProb.hh"
class EvtParticle;
+// Description: B->3 body flat in square dalitz vairiables
+// the square dalitz is the plane m12 theta12
+
class EvtFlatSqDalitz : public EvtDecayProb {
public:
EvtFlatSqDalitz() {}
~EvtFlatSqDalitz();
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtGenericDalitz.hh b/EvtGenModels/EvtGenericDalitz.hh
index 03cf11c..61aeb26 100644
--- a/EvtGenModels/EvtGenericDalitz.hh
+++ b/EvtGenModels/EvtGenericDalitz.hh
@@ -1,50 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtGenericDalitz.hh
-//
-// Description: Model to describe a generic dalitz decay
-//
-// Modification history:
-//
-// DCC 16 December, 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTGENERICDALITZ_HH
#define EVTGENERICDALITZ_HH
#include "EvtGenBase/EvtDalitzReso.hh"
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtFlatte.hh"
#include <string>
#include <vector>
class EvtParticle;
+// Description: Model to describe a generic dalitz decay
+
class EvtGenericDalitz : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override{}; //prob max will be set in init
void decay( EvtParticle* p ) override;
std::string getParamName( int i ) override;
private:
int _d1, _d2, _d3;
std::vector<std::pair<EvtComplex, EvtDalitzReso>> _resonances;
};
#endif
diff --git a/EvtGenModels/EvtGoityRoberts.hh b/EvtGenModels/EvtGoityRoberts.hh
index 2f09308..bdd3b91 100644
--- a/EvtGenModels/EvtGoityRoberts.hh
+++ b/EvtGenModels/EvtGoityRoberts.hh
@@ -1,45 +1,25 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtGoityRoberts.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTGOITYROBERTS_HH
#define EVTGOITYROBERTS_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtId;
class EvtGoityRoberts : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
private:
void DecayBDstarpilnuGR( EvtParticle* pb, EvtId ndstar, EvtId nlep,
EvtId nnu );
void DecayBDpilnuGR( EvtParticle* pb, EvtId nd, EvtId nlep, EvtId nnu );
};
#endif
diff --git a/EvtGenModels/EvtHQET.hh b/EvtGenModels/EvtHQET.hh
index f2e0afa..7f97464 100644
--- a/EvtGenModels/EvtHQET.hh
+++ b/EvtGenModels/EvtHQET.hh
@@ -1,45 +1,27 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtHQET.hh
-//
-// Description:Implementation of the HQET model
-//
-// Modification history:
-//
-// DJL April 20, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTHQET_HH
#define EVTHQET_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include <memory>
class EvtParticle;
+// Description:Implementation of the HQET model
+
class EvtHQET : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
void init() override;
private:
std::unique_ptr<EvtSemiLeptonicFF> hqetffmodel;
std::unique_ptr<EvtSemiLeptonicAmp> calcamp;
};
#endif
diff --git a/EvtGenModels/EvtHQET2.hh b/EvtGenModels/EvtHQET2.hh
index 7247e1a..a322bed 100644
--- a/EvtGenModels/EvtHQET2.hh
+++ b/EvtGenModels/EvtHQET2.hh
@@ -1,38 +1,28 @@
-//--------------------------------------------------------------------------
-//
-// Module: EvtGen/EvtHQET2.hh
-//
-// Description:Implementation of the HQET model with dispersive FF due to
-// Caprini et al.
-//
-// Modification history:
-//
-// Marco Bomben March 11, 2003 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTHQET2_HH
#define EVTHQET2_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include <memory>
class EvtParticle;
+// Description:Implementation of the HQET model with dispersive FF due to
+// Caprini et al.
+
class EvtHQET2 : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
void init() override;
private:
std::unique_ptr<EvtSemiLeptonicFF> hqetffmodel;
std::unique_ptr<EvtSemiLeptonicAmp> calcamp;
};
#endif
diff --git a/EvtGenModels/EvtHQET2FF.hh b/EvtGenModels/EvtHQET2FF.hh
index d754f1d..fb7bdfc 100644
--- a/EvtGenModels/EvtHQET2FF.hh
+++ b/EvtGenModels/EvtHQET2FF.hh
@@ -1,61 +1,46 @@
-//--------------------------------------------------------------------------
-//
-// Module: EvtGen/EvtHQET2FF.hh
-//
-// Description:
-//
-// Modification history:
-//
-// Marco Bomben March 10, 2003 Module created
-//
-// Brian Hamilton Jan 10, 2016 Added "extened" functionality
-// <brian.hamilton -=AT=- cern.ch> to include scalar amplitude
-//
-//------------------------------------------------------------------------
-
#ifndef EVTHQET2FF_HH
#define EVTHQET2FF_HH
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
class EvtId;
class EvtHQET2FF : public EvtSemiLeptonicFF {
public:
EvtHQET2FF( double hqetrho2, double hqetha1_1, double hqetr1_1,
double hqetr2_1 );
EvtHQET2FF( double hqetrho2, double hqetv1_1 );
EvtHQET2FF( double hqetrho2, double hqetha1_1, double hqetr1_1,
double hqetr2_1, double hqetr0_1 );
EvtHQET2FF( double hqetrho2, double hqetv1_1, double indelta );
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void getscalarff( EvtId parent, EvtId daught, double t, double mass,
double* f0p, double* f0m ) override;
void gettensorff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double* ) override;
void getraritaff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double*, double*, double* ) override;
private:
double r1_1;
double rho2;
double r2_1;
double ha1_1;
double v1_1;
double r0_1;
double delta;
bool extended;
};
#endif
diff --git a/EvtGenModels/EvtHQETFF.hh b/EvtGenModels/EvtHQETFF.hh
index 49b2052..83daef0 100644
--- a/EvtGenModels/EvtHQETFF.hh
+++ b/EvtGenModels/EvtHQETFF.hh
@@ -1,58 +1,38 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtHQETFF.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL April 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTHQETFF_HH
#define EVTHQETFF_HH
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
class EvtId;
class EvtHQETFF : public EvtSemiLeptonicFF {
public:
EvtHQETFF( double hqetrho2, double hqetr1, double hqetr2, double hqetc = 0. );
EvtHQETFF( double hqetrho2, double hqetc = 0. );
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void getscalarff( EvtId parent, EvtId daught, double t, double mass,
double* f0p, double* f0m ) override;
void gettensorff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double* ) override;
void getraritaff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double*, double*, double* ) override;
private:
double r1;
double rho2;
double r2;
double c;
};
#endif
diff --git a/EvtGenModels/EvtHelAmp.hh b/EvtGenModels/EvtHelAmp.hh
index ea63ea1..6a30418 100644
--- a/EvtGenModels/EvtHelAmp.hh
+++ b/EvtGenModels/EvtHelAmp.hh
@@ -1,49 +1,31 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtHelAmp.hh
-//
-// Description:Decay model for implementation of generic 2 body
-// decay specified by the helicity amplitudes
-//
-// Modification history:
-//
-// RYD March 14, 1999 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTHELAMP_HH
#define EVTHELAMP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtId.hh"
#include <memory>
class EvtParticle;
class EvtEvalHelAmp;
+// Description:Decay model for implementation of generic 2 body
+// decay specified by the helicity amplitudes
+
class EvtHelAmp : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
private:
void fillHelicity( int* lambda2, int n, int J2, EvtId id );
std::unique_ptr<EvtEvalHelAmp> _evalHelAmp;
};
#endif
diff --git a/EvtGenModels/EvtHypNonLepton.hh b/EvtGenModels/EvtHypNonLepton.hh
index 0d3ae57..6f0c692 100644
--- a/EvtGenModels/EvtHypNonLepton.hh
+++ b/EvtGenModels/EvtHypNonLepton.hh
@@ -1,38 +1,28 @@
-//-----------------------------------------------------------------------------------------------
-//
-// Module: EvtHybNonLepton.hh
-//
-// Desription: Routine to implement Hyperon(s=1/2) -> Baryon(s=1/2) + Scalar decays accroding to
-// Review Of Particle Physics 2004, Phys.Lett.B, Vol.592, p.864
-//
-// Modification history:
-//
-// 20/02/2005 PR Module created according to PHSP and Lb2Lll model
-//
-//-----------------------------------------------------------------------------------------------
-
#ifndef EVTHYBNONLEPTON_HH
#define EVTHYBNONLEPTON_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDecayAmp.hh"
+// Desription: Routine to implement Hyperon(s=1/2) -> Baryon(s=1/2) + Scalar decays accroding to
+// Review Of Particle Physics 2004, Phys.Lett.B, Vol.592, p.864
+
class EvtHypNonLepton : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
void calcAmp( EvtAmp* amp, EvtParticle* parent );
private:
double m_alpha;
double m_phi;
EvtComplex m_B_to_A;
long m_noTries;
};
#endif
diff --git a/EvtGenModels/EvtISGW.hh b/EvtGenModels/EvtISGW.hh
index c77ded6..b201aa4 100644
--- a/EvtGenModels/EvtISGW.hh
+++ b/EvtGenModels/EvtISGW.hh
@@ -1,44 +1,24 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtISGW.hh
-//
-// Description:Implementation of the ISGW model
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTISGW_HH
#define EVTISGW_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include <memory>
class EvtParticle;
class EvtISGW : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
private:
std::unique_ptr<EvtSemiLeptonicFF> isgwffmodel;
std::unique_ptr<EvtSemiLeptonicAmp> calcamp;
};
#endif
diff --git a/EvtGenModels/EvtISGW2.hh b/EvtGenModels/EvtISGW2.hh
index 4c795bc..447a08c 100644
--- a/EvtGenModels/EvtISGW2.hh
+++ b/EvtGenModels/EvtISGW2.hh
@@ -1,50 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtISGW2.hh
-//
-// Description:Implementation of the ISGW2 model
-// Class to handle semileptonic decays using the ISGW2
-// model, as described in PRD 52 5 (1995) by
-// Isgur and Scora. Electron, muon, and tau models
-// are available. Form factors, q2 and lepton energy
-// spectra checked against code from Scora.
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTISGW2_HH
#define EVTISGW2_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include <memory>
class EvtParticle;
+// Description:Implementation of the ISGW2 model
+// Class to handle semileptonic decays using the ISGW2
+// model, as described in PRD 52 5 (1995) by
+// Isgur and Scora. Electron, muon, and tau models
+// are available. Form factors, q2 and lepton energy
+// spectra checked against code from Scora.
+
class EvtISGW2 : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
void init() override;
private:
std::unique_ptr<EvtSemiLeptonicFF> isgw2ffmodel;
std::unique_ptr<EvtSemiLeptonicAmp> calcamp;
};
#endif
diff --git a/EvtGenModels/EvtISGW2FF.hh b/EvtGenModels/EvtISGW2FF.hh
index afe5efe..d7439ab 100644
--- a/EvtGenModels/EvtISGW2FF.hh
+++ b/EvtGenModels/EvtISGW2FF.hh
@@ -1,74 +1,56 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtISGW2FF.hh
-//
-// Description:Form factor routines specific to EvtISGW2
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTISGW2FF_HH
#define EVTISGW2FF_HH
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
class EvtId;
+// Description:Form factor routines specific to EvtISGW2
+
class EvtISGW2FF : public EvtSemiLeptonicFF {
public:
void getscalarff( EvtId parent, EvtId daught, double t, double mass,
double* fpf, double* f0f ) override;
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void gettensorff( EvtId parent, EvtId daught, double t, double mass,
double* hf, double* kf, double* bpf, double* bmf ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double* ) override;
void getraritaff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double*, double*, double* ) override;
private:
// getscalarff, getvectorff, and gettensorff call the
// correct isgw2 form factor routine which computes
// form factors according to the ISGW2 paper.
void EvtISGW2FF3S1( EvtId parent, EvtId daught, double t, double mass,
double* ff, double* gf, double* apf, double* amf );
void EvtISGW2FF23S1( EvtId parent, EvtId daught, double t, double mass,
double* fpf, double* gpf, double* app, double* apm );
void EvtISGW2FF3P1( EvtId parent, EvtId daught, double t, double mass,
double* lf, double* qf, double* cpf, double* cmf );
void EvtISGW2FF3P0( EvtId parent, EvtId daught, double t, double mass,
double* upf, double* umf );
void EvtISGW2FF1S0( EvtId parent, EvtId daught, double t, double mass,
double* fpf, double* fmf );
void EvtISGW2FF21S0( EvtId parent, EvtId daught, double t, double mass,
double* fppf, double* fpmf );
void EvtISGW2FF3P2( EvtId parent, EvtId daught, double t, double mass,
double* h, double* k, double* bp, double* bm );
void EvtISGW2FF1P1( EvtId parent, EvtId daught, double t, double mass,
double* rf, double* vf, double* spf, double* smf );
double EvtGetas( double mass );
double EvtGetas( double mass, double mass1 );
double EvtGetGammaji( double z );
};
#endif
diff --git a/EvtGenModels/EvtISGWFF.hh b/EvtGenModels/EvtISGWFF.hh
index d6ce0ff..3898249 100644
--- a/EvtGenModels/EvtISGWFF.hh
+++ b/EvtGenModels/EvtISGWFF.hh
@@ -1,68 +1,50 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtISGWFF.hh
-//
-// Description:Form factor routines specific to EvtISGW
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTISGWFF_HH
#define EVTISGWFF_HH
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
class EvtId;
+// Description:Form factor routines specific to EvtISGW
+
class EvtISGWFF : public EvtSemiLeptonicFF {
void getscalarff( EvtId parent, EvtId daught, double t, double mass,
double* fpf, double* f0f ) override;
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void gettensorff( EvtId parent, EvtId daught, double t, double mass,
double* hf, double* kf, double* bpf, double* bmf ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double* ) override;
void getraritaff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double*, double*, double* ) override;
// getscalarff, getvectorff, and gettensorff call the
// correct isgw form factor routine which computes
// form factors according to the ISGW paper.
void EvtISGW1FF3S1( EvtId parent, EvtId daught, double t, double mass,
double* ff, double* gf, double* apf, double* amf );
void EvtISGW1FF23S1( EvtId parent, EvtId daught, double t, double mass,
double* fpf, double* gpf, double* app, double* apm );
void EvtISGW1FF3P1( EvtId parent, EvtId daught, double t, double mass,
double* lf, double* qf, double* cpf, double* cmf );
void EvtISGW1FF3P0( EvtId parent, EvtId daught, double t, double mass,
double* upf, double* umf );
void EvtISGW1FF1S0( EvtId parent, EvtId daught, double t, double mass,
double* fpf, double* fmf );
void EvtISGW1FF21S0( EvtId parent, EvtId daught, double t, double mass,
double* fppf, double* fpmf );
void EvtISGW1FF3P2( EvtId parent, EvtId daught, double t, double mass,
double* h, double* k, double* bp, double* bm );
void EvtISGW1FF1P1( EvtId parent, EvtId daught, double t, double mass,
double* vf, double* rf, double* spf, double* smf );
};
#endif
diff --git a/EvtGenModels/EvtIntervalDecayAmp.hh b/EvtGenModels/EvtIntervalDecayAmp.hh
index f572c54..e7efaca 100644
--- a/EvtGenModels/EvtIntervalDecayAmp.hh
+++ b/EvtGenModels/EvtIntervalDecayAmp.hh
@@ -1,197 +1,181 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtIntervalDecayAmp.hh,v 1.4 2009-03-16 16:39:16 robbep Exp $
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module creator:
-// Alexei Dvoretskii, Caltech, 2001-2002.
-//-----------------------------------------------------------------------
-
-// Decay model that uses the "amplitude on an interval"
-// templatization
-
#ifndef EVT_INTERVAL_DECAY_AMP
#define EVT_INTERVAL_DECAY_AMP
#define VERBOSE true
#include "EvtGenBase/EvtAmpFactory.hh"
#include "EvtGenBase/EvtAmpPdf.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtMacros.hh"
#include "EvtGenBase/EvtMultiChannelParser.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPdf.hh"
#include "EvtGenBase/EvtReport.hh"
#include <iostream>
#include <string>
#include <vector>
+// Decay model that uses the "amplitude on an interval"
+// templatization
+
template <class T>
class EvtIntervalDecayAmp : public EvtDecayAmp {
public:
EvtIntervalDecayAmp() : _probMax( 0. ), _nScan( 0 ), _fact( 0 ) {}
EvtIntervalDecayAmp( const EvtIntervalDecayAmp<T>& other ) :
_probMax( other._probMax ), _nScan( other._nScan ), COPY_PTR( _fact )
{
}
virtual ~EvtIntervalDecayAmp() { delete _fact; }
// Initialize model
void init() override
{
// Collect model parameters and parse them
vector<std::string> args;
int i;
for ( i = 0; i < getNArg(); i++ )
args.push_back( getArgStr( i ) );
EvtMultiChannelParser parser;
parser.parse( args );
// Create factory and interval
if ( VERBOSE )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Create factory and interval" << std::endl;
_fact = createFactory( parser );
// Maximum PDF value over the Dalitz plot can be specified, or a scan
// can be performed.
_probMax = parser.pdfMax();
_nScan = parser.nScan();
if ( VERBOSE )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Pdf maximum " << _probMax << std::endl;
if ( VERBOSE )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Scan number " << _nScan << std::endl;
}
void initProbMax() override
{
if ( 0 == _nScan ) {
if ( _probMax > 0 )
setProbMax( _probMax );
else
assert( 0 );
} else {
double factor = 1.2; // increase maximum probability by 20%
EvtAmpPdf<T> pdf( *_fact->getAmp() );
EvtPdfSum<T>* pc = _fact->getPC();
EvtPdfDiv<T> pdfdiv( pdf, *pc );
printf( "Sampling %d points to find maximum\n", _nScan );
EvtPdfMax<T> x = pdfdiv.findMax( *pc, _nScan );
_probMax = factor * x.value();
printf( "Found maximum %f\n", x.value() );
printf( "Increase to %f\n", _probMax );
setProbMax( _probMax );
}
}
void decay( EvtParticle* p ) override
{
// Set things up in most general way
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
double t;
EvtId other_b;
EvtComplex ampl( 0., 0. );
// Sample using pole-compensator pdf
EvtPdfSum<T>* pc = getPC();
_x = pc->randomPoint();
if ( _fact->isCPModel() ) {
// Time-dependent Dalitz plot changes
// Dec 2005 (ddujmic@slac.stanford.edu)
EvtComplex A = _fact->getAmp()->evaluate( _x );
EvtComplex Abar = _fact->getAmpConj()->evaluate( _x );
EvtCPUtil::getInstance()->OtherB( p, t, other_b );
double dm = _fact->dm();
double mixAmpli = _fact->mixAmpli();
double mixPhase = _fact->mixPhase();
EvtComplex qoverp( cos( mixPhase ) * mixAmpli,
sin( mixPhase ) * mixAmpli );
EvtComplex poverq( cos( mixPhase ) / mixAmpli,
-sin( mixPhase ) / mixAmpli );
if ( other_b == B0B )
ampl = A * cos( dm * t / ( 2 * EvtConst::c ) ) +
EvtComplex( 0., 1. ) * Abar *
sin( dm * t / ( 2 * EvtConst::c ) ) * qoverp;
if ( other_b == B0 )
ampl = Abar * cos( dm * t / ( 2 * EvtConst::c ) ) +
EvtComplex( 0., 1. ) * A *
sin( dm * t / ( 2 * EvtConst::c ) ) * poverq;
} else {
ampl = amplNonCP( _x );
}
// Pole-compensate
double comp = sqrt( pc->evaluate( _x ) );
assert( comp > 0 );
vertex( ampl / comp );
// Now generate random angles, rotate and setup
// the daughters
std::vector<EvtVector4R> v = initDaughters( _x );
size_t N = p->getNDaug();
if ( v.size() != N ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Number of daughters " << N << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Momentum vector size " << v.size() << std::endl;
assert( 0 );
}
for ( size_t i = 0; i < N; i++ ) {
p->getDaug( i )->init( getDaugs()[i], v[i] );
}
}
virtual EvtAmpFactory<T>* createFactory(
const EvtMultiChannelParser& parser ) = 0;
virtual std::vector<EvtVector4R> initDaughters( const T& p ) const = 0;
// provide access to the decay point and to the amplitude of any decay point.
// this is used by EvtBtoKD3P:
const T& x() const { return _x; }
EvtComplex amplNonCP( const T& x )
{
return _fact->getAmp()->evaluate( x );
}
EvtPdfSum<T>* getPC() { return _fact->getPC(); }
protected:
double _probMax; // Maximum probability
int _nScan; // Number of points for max prob DP scan
T _x; // Decay point
EvtAmpFactory<T>* _fact; // factory
};
#endif
diff --git a/EvtGenModels/EvtItgAbsFunction.hh b/EvtGenModels/EvtItgAbsFunction.hh
index 1657fd1..3486e78 100644
--- a/EvtGenModels/EvtItgAbsFunction.hh
+++ b/EvtGenModels/EvtItgAbsFunction.hh
@@ -1,72 +1,53 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtItgAbsFunction.hh
-//
-// Description:
-// Abstraction of a generic function for use in integration methods elsewhere
-// in this package. (Stolen and modified from the BaBar IntegrationUtils package
-// - author: Phil Strother).
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module adapted for use in
-// EvtGen
-//
-//------------------------------------------------------------------------
-
#ifndef EVTITGABSFUNCTION_HH
#define EVTITGABSFUNCTION_HH
//-------------
// C Headers --
//-------------
extern "C" {
}
+// Description:
+// Abstraction of a generic function for use in integration methods elsewhere
+// in this package. (Stolen and modified from the BaBar IntegrationUtils package
+// - author: Phil Strother).
+
class EvtItgAbsFunction {
public:
// Constructors
EvtItgAbsFunction( double lowerRange, double upperRange );
// Destructor
virtual ~EvtItgAbsFunction() = default;
virtual double value( double x ) const;
virtual double operator()( double x ) const;
// Selectors (const)
inline double upperRange() const { return _upperRange; }
inline double lowerRange() const { return _lowerRange; }
inline void getRange( double& lower, double& upper ) const
{
lower = _lowerRange;
upper = _upperRange;
}
virtual void setCoeff( int, int, double ) = 0;
virtual double getCoeff( int, int ) = 0;
protected:
virtual double myFunction( double x ) const = 0;
void setRange( double x1, double x2 )
{
_lowerRange = x1;
_upperRange = x2;
};
private:
double _upperRange;
double _lowerRange;
};
#endif // EVTITGABSFUNCTION_HH
diff --git a/EvtGenModels/EvtItgAbsIntegrator.hh b/EvtGenModels/EvtItgAbsIntegrator.hh
index 7dae329..fdbe80a 100644
--- a/EvtGenModels/EvtItgAbsIntegrator.hh
+++ b/EvtGenModels/EvtItgAbsIntegrator.hh
@@ -1,58 +1,39 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtItgAbsIntegrator.hh
-//
-// Description:
-// Abstraction of a generic integrator (Stolen and modified from
-// the BaBar IntegrationUtils package - author: Phil Strother).
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module adapted for use in
-// EvtGen
-//
-//------------------------------------------------------------------------
-
#ifndef EVTITGABSINTEGRATOR_HH
#define EVTITGABSINTEGRATOR_HH
#include "EvtGenModels/EvtItgAbsFunction.hh"
+// Description:
+// Abstraction of a generic integrator (Stolen and modified from
+// the BaBar IntegrationUtils package - author: Phil Strother).
+
class EvtItgAbsIntegrator {
public:
EvtItgAbsIntegrator( const EvtItgAbsFunction& );
virtual ~EvtItgAbsIntegrator() = default;
double evaluate( double lower, double upper ) const;
double normalisation() const;
protected:
double trapezoid( double lower, double higher, int n, double& result ) const;
virtual double evaluateIt( double lower, double higher ) const = 0;
double myFunction( double x ) const { return _myFunction( x ); }
private:
const EvtItgAbsFunction& _myFunction;
void boundsCheck( double&, double& ) const;
// Note: if your class needs a copy constructor or an assignment operator,
// make one of the following public and implement it.
EvtItgAbsIntegrator();
//EvtItgAbsIntegrator( const EvtItgAbsIntegrator& ); // Copy Constructor
//EvtItgAbsIntegrator& operator= ( const EvtItgAbsIntegrator& ); // Assignment op
};
#endif // EVTITGABSINTEGRATOR_HH
diff --git a/EvtGenModels/EvtItgFourCoeffFcn.hh b/EvtGenModels/EvtItgFourCoeffFcn.hh
index 7494173..f2428a3 100644
--- a/EvtGenModels/EvtItgFourCoeffFcn.hh
+++ b/EvtGenModels/EvtItgFourCoeffFcn.hh
@@ -1,61 +1,43 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtItgFourCoeffFcn.hh
-//
-// Description:
-// Class describing a function with Four vectors of coefficients.
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTITFOURCOEFFFCN_HH
#define EVTITFOURCOEFFFCN_HH
#include "EvtGenModels/EvtItgAbsFunction.hh"
#include <vector>
+// Description:
+// Class describing a function with Four vectors of coefficients.
+
class EvtItgFourCoeffFcn : public EvtItgAbsFunction {
public:
EvtItgFourCoeffFcn( double ( *theFunction )( double,
const std::vector<double>&,
const std::vector<double>&,
const std::vector<double>&,
const std::vector<double>& ),
double lowerRange, double upperRange,
const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2,
const std::vector<double>& coeffs3,
const std::vector<double>& coeffs4 );
void setCoeff( int, int, double ) override;
double getCoeff( int, int ) override;
protected:
double myFunction( double x ) const override;
private:
// Data members
double ( *_myFunction )( double x, const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2,
const std::vector<double>& coeffs3,
const std::vector<double>& coeffs4 );
std::vector<double> _coeffs1;
std::vector<double> _coeffs2;
std::vector<double> _coeffs3;
std::vector<double> _coeffs4;
};
#endif // EvtITGPTRFUNCTION_HH
diff --git a/EvtGenModels/EvtItgFunction.hh b/EvtGenModels/EvtItgFunction.hh
index 5e15fec..12cc26f 100644
--- a/EvtGenModels/EvtItgFunction.hh
+++ b/EvtGenModels/EvtItgFunction.hh
@@ -1,52 +1,33 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software was developed for the BaBar collaboration. If you
-// use all or part of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 LBNL
-//
-//------------------------------------------------------------------------
-
#ifndef EVTITGFUNCTION_HH
#define EVTITGFUNCTION_HH
#include "EvtGenModels/EvtItgAbsFunction.hh"
/**
- * Copyright (C) 1998 LBNL
- *
* Generic function where the pointer to the function is available.
*
* The function is taken as type pointer to function returning double and
* taking a double (the abscissa) and a const RWTValVector<double> reference
* (the parameter values of the function) as arguments.
- *
- * @see EvtItgFunctionEvtItgFunction
- *
- * @version $Id: EvtItgFunction.hh,v 1.2 2009-03-16 16:34:00 robbep Exp $
- *
- * @author Phil Strother Originator
*/
class EvtItgFunction : public EvtItgAbsFunction {
public:
// Constructors
EvtItgFunction( double ( *theFunction )( double ), double lowerRange,
double upperRange );
void setCoeff( int, int, double ) override{};
double getCoeff( int, int ) override { return 0.0; };
protected:
// Helper functions
double myFunction( double x ) const override;
private:
// Data members
double ( *_myFunction )( double x );
};
#endif // EvtITGFUNCTION_HH
diff --git a/EvtGenModels/EvtItgPtrFunction.hh b/EvtGenModels/EvtItgPtrFunction.hh
index a9ada6a..d52f5ec 100644
--- a/EvtGenModels/EvtItgPtrFunction.hh
+++ b/EvtGenModels/EvtItgPtrFunction.hh
@@ -1,51 +1,32 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtItgPtrFunction.hh
-//
-// Description:
-// Class describing a function with one vector of coefficients. (Stolen and
-// modified from the BaBar IntegrationUtils package - author: Phil Strother).
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module adapted for use in
-// EvtGen
-//
-//------------------------------------------------------------------------
-
#ifndef EVTITGPTRFUNCTION_HH
#define EVTITGPTRFUNCTION_HH
#include "EvtGenModels/EvtItgAbsFunction.hh"
#include <vector>
+// Description:
+// Class describing a function with one vector of coefficients. (Stolen and
+// modified from the BaBar IntegrationUtils package - author: Phil Strother).
+
class EvtItgPtrFunction : public EvtItgAbsFunction {
public:
EvtItgPtrFunction( double ( *theFunction )( double,
const std::vector<double>& ),
double lowerRange, double upperRange,
const std::vector<double>& coeffs1 );
void setCoeff( int, int, double ) override;
double getCoeff( int, int ) override;
protected:
double myFunction( double x ) const override;
private:
// Data members
double ( *_myFunction )( double x, const std::vector<double>& coeffs1 );
std::vector<double> _coeffs1;
};
#endif // EVTITGPTRFUNCTION_HH
diff --git a/EvtGenModels/EvtItgSimpsonIntegrator.hh b/EvtGenModels/EvtItgSimpsonIntegrator.hh
index 96041e9..9e3fd27 100644
--- a/EvtGenModels/EvtItgSimpsonIntegrator.hh
+++ b/EvtGenModels/EvtItgSimpsonIntegrator.hh
@@ -1,51 +1,32 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtItgSimpsonIntegrator.hh
-//
-// Description:
-// Simpson integrator (Stolen and modified from
-// the BaBar IntegrationUtils package - author: Phil Strother).
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module adapted for use in
-// EvtGen
-//
-//------------------------------------------------------------------------
-
#ifndef EVTITGSIMPSONINTEGRATOR_HH
#define EVTITGSIMPSONINTEGRATOR_HH
//-------------
// C Headers --
//-------------
extern "C" {
}
#include "EvtGenModels/EvtItgAbsIntegrator.hh"
+// Description:
+// Simpson integrator (Stolen and modified from
+// the BaBar IntegrationUtils package - author: Phil Strother).
+
class EvtItgSimpsonIntegrator : public EvtItgAbsIntegrator {
public:
EvtItgSimpsonIntegrator( const EvtItgAbsFunction&,
double precision = 1.0e-5, int maxLoop = 20 );
protected:
double evaluateIt( double, double ) const override;
private:
double _precision;
double _maxLoop;
//EvtItgSimpsonIntegrator( const EvtItgSimpsonIntegrator& ); //// Copy Constructor
//EvtItgSimpsonIntegrator& operator= ( const EvtItgSimpsonIntegrator& ); // Assignment op
};
#endif // ITGSIMPSONINTEGRATOR_HH
diff --git a/EvtGenModels/EvtItgThreeCoeffFcn.hh b/EvtGenModels/EvtItgThreeCoeffFcn.hh
index 10865b2..a5661cc 100644
--- a/EvtGenModels/EvtItgThreeCoeffFcn.hh
+++ b/EvtGenModels/EvtItgThreeCoeffFcn.hh
@@ -1,63 +1,45 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtItgThreeCoeffFcn.hh
-//
-// Description:
-// Class describing a function with three vectors of coefficients.
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTITTHREECOEFFFCN_HH
#define EVTITTHREECOEFFFCN_HH
#include <vector>
//-------------
// C Headers --
//-------------
extern "C" {
}
#include "EvtGenModels/EvtItgAbsFunction.hh"
+// Description:
+// Class describing a function with three vectors of coefficients.
+
class EvtItgThreeCoeffFcn : public EvtItgAbsFunction {
public:
EvtItgThreeCoeffFcn( double ( *theFunction )( double,
const std::vector<double>&,
const std::vector<double>&,
const std::vector<double>& ),
double lowerRange, double upperRange,
const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2,
const std::vector<double>& coeffs3 );
void setCoeff( int, int, double ) override;
double getCoeff( int, int ) override;
protected:
double myFunction( double x ) const override;
private:
// Data members
double ( *_myFunction )( double x, const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2,
const std::vector<double>& coeffs3 );
std::vector<double> _coeffs1;
std::vector<double> _coeffs2;
std::vector<double> _coeffs3;
};
#endif // EvtITGPTRFUNCTION_HH
diff --git a/EvtGenModels/EvtItgTwoCoeffFcn.hh b/EvtGenModels/EvtItgTwoCoeffFcn.hh
index 8091a8f..3f6f57b 100644
--- a/EvtGenModels/EvtItgTwoCoeffFcn.hh
+++ b/EvtGenModels/EvtItgTwoCoeffFcn.hh
@@ -1,58 +1,40 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtItgTwoCoeffFcn.hh
-//
-// Description:
-// Class describing a function with two vectors of coefficients.
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTITTWOCOEFFFCN_HH
#define EVTITTWOCOEFFFCN_HH
#include <vector>
//-------------
// C Headers --
//-------------
extern "C" {
}
#include "EvtGenModels/EvtItgAbsFunction.hh"
+// Description:
+// Class describing a function with two vectors of coefficients.
+
class EvtItgTwoCoeffFcn : public EvtItgAbsFunction {
public:
EvtItgTwoCoeffFcn( double ( *theFunction )( double, const std::vector<double>&,
const std::vector<double>& ),
double lowerRange, double upperRange,
const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2 );
void setCoeff( int, int, double ) override;
double getCoeff( int, int ) override;
protected:
double myFunction( double x ) const override;
private:
// Data members
double ( *_myFunction )( double x, const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2 );
std::vector<double> _coeffs1;
std::vector<double> _coeffs2;
};
#endif // EvtITGTWOCOEFFFUNCTION_HH
diff --git a/EvtGenModels/EvtKKLambdaC.hh b/EvtGenModels/EvtKKLambdaC.hh
index e233515..59b2a43 100644
--- a/EvtGenModels/EvtKKLambdaC.hh
+++ b/EvtGenModels/EvtKKLambdaC.hh
@@ -1,46 +1,28 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtKKLambdaC.hh
-//
-// Description:Semileptonic decays with pole form form factors
-//
-// Modification history:
-//
-// DJL April 23, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTKKLAMBDAC_HH
#define EVTKKLAMBDAC_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include <memory>
class Evtparticle;
+// Description:Semileptonic decays with pole form form factors
+
class EvtKKLambdaC : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
void init() override;
private:
std::unique_ptr<EvtSemiLeptonicFF> _ffmodel;
std::unique_ptr<EvtSemiLeptonicAmp> _calcamp;
};
#endif
diff --git a/EvtGenModels/EvtKKLambdaCFF.hh b/EvtGenModels/EvtKKLambdaCFF.hh
index c935d86..246ff85 100644
--- a/EvtGenModels/EvtKKLambdaCFF.hh
+++ b/EvtGenModels/EvtKKLambdaCFF.hh
@@ -1,55 +1,35 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSLPoleFF.hh
-//
-// Description:Form factor routines for EvtSLPole
-//
-// Modification history:
-//
-// DJL April 23, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTKKLAMBDACFF_HH
#define EVTKKLAMBDACFF_HH
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
class EvtKKLambdaCFF : public EvtSemiLeptonicFF {
public:
EvtKKLambdaCFF( int numarg, double* arglist );
void getscalarff( EvtId parent, EvtId daught, double t, double mass,
double* f0p, double* f0m ) override;
void getvectorff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void gettensorff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getbaryonff( EvtId parent, EvtId daught, double t, double mass,
double* f1v, double* f1a, double* f2v,
double* f2a ) override;
void getdiracff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double* ) override;
void getraritaff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double*, double*, double* ) override;
private:
int _nargs;
double _args[2];
};
#endif
diff --git a/EvtGenModels/EvtKStopizmumu.hh b/EvtGenModels/EvtKStopizmumu.hh
index 4b4649d..bff3ec7 100644
--- a/EvtGenModels/EvtKStopizmumu.hh
+++ b/EvtGenModels/EvtKStopizmumu.hh
@@ -1,31 +1,33 @@
#ifndef EVTKSTOPIZMUMU_HH
#define EVTKSTOPIZMUMU_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include <string>
class EvtParticle;
+// Description: Routine to implement KS -> pi0 mu mu; see JHEP08(1998)004.
+
class EvtKStopizmumu : public EvtDecayAmp {
public:
std::string getName() override { return "KS_PI0MUMU"; }
EvtDecayBase* clone() override { return new EvtKStopizmumu; }
void init() override;
void initProbMax() override { setProbMax( 1.0e-10 ); }
void decay( EvtParticle* p ) override;
double F_z( const double& z, const double& rvsq );
EvtComplex G_z( const double& z );
double Wpol_z( const double& z, const double& as, const double& bs );
EvtComplex chi_z( const double& z, const double& rpisq );
EvtComplex Wpipi_z( const double& z, const double& alpha_s,
const double& beta_s, const double& rvsq,
const double& rpisq, const double& z0 );
};
#endif //EVTKTOPIZMUMU_HH
diff --git a/EvtGenModels/EvtKstarnunu.hh b/EvtGenModels/EvtKstarnunu.hh
index c06dd0a..15ffcbb 100644
--- a/EvtGenModels/EvtKstarnunu.hh
+++ b/EvtGenModels/EvtKstarnunu.hh
@@ -1,38 +1,18 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtKstarnunu.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTKSTARNUNU_HH
#define EVTKSTARNUNU_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtKstarnunu : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtKstarstargamma.hh b/EvtGenModels/EvtKstarstargamma.hh
index e9d8265..1c52f86 100644
--- a/EvtGenModels/EvtKstarstargamma.hh
+++ b/EvtGenModels/EvtKstarstargamma.hh
@@ -1,38 +1,18 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2002 Caltech
-//
-// Module: EvtGen/EvtKstarstargamma.hh
-//
-// Description:
-//
-// Modification history:
-//
-// RYD Nov 15, 2002 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTKSTARSTARGAMMA_HH
#define EVTKSTARSTARGAMMA_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtKstarstargamma : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
};
#endif
diff --git a/EvtGenModels/EvtLNuGamma.hh b/EvtGenModels/EvtLNuGamma.hh
index d6795f8..1393eb0 100644
--- a/EvtGenModels/EvtLNuGamma.hh
+++ b/EvtGenModels/EvtLNuGamma.hh
@@ -1,43 +1,24 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2001 Caltech
-//
-// Module: EvtGen/EvtLNuGamma.hh
-//
-// Description: B+ -> l+ nu gamma. Form factor is tree level, from
-// Korchemsky, Pirjol, and Yan,Phy Rev D 61 (200) 114510
-//
-//
-// Modification history:
-//
-// Edward Chen April 24, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTLNUGAMMA_HH
#define EVTLNUGAMMA_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
+// Description: B+ -> l+ nu gamma. Form factor is tree level, from
+// Korchemsky, Pirjol, and Yan,Phy Rev D 61 (200) 114510
+
class EvtLNuGamma : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
double getFormFactor( double photonEnergy );
bool _fafvzero = false;
};
#endif
diff --git a/EvtGenModels/EvtLambdaB2LambdaV.hh b/EvtGenModels/EvtLambdaB2LambdaV.hh
index 65b1984..ad99324 100644
--- a/EvtGenModels/EvtLambdaB2LambdaV.hh
+++ b/EvtGenModels/EvtLambdaB2LambdaV.hh
@@ -1,182 +1,162 @@
-//------------------------------------------------------------------------
-//
-// Module: EvtGen/EvtLambdaB2LambdaV.hh
-//
-// Description:
-// Class to generate LambdaB -> Lambda(p pi) V(Vp Vm) decays
-// with V a vector meson such as J/psi (mu+mu-)
-// Rho (pi+pi-)
-// Omega (pi+pi-)
-// Rho-omega mixing (pi+pi-)
-//
-// Author : Eric Conte (LPC Clermont-Ferrand)
-// econte@clermont.in2p3.fr / ziad@clermont.in2p3.fr
-//
-// Modification history:
-//
-// E. Conte April 13, 2006 Module created
-// E. Conte February 5, 2006 First draft
-//
-//------------------------------------------------------------------------
-
#ifndef EVTLAMBDAB2LAMBDAV_HH
#define EVTLAMBDAB2LAMBDAV_HH
#include "EvtGenBase/EvtDecayProb.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
namespace VID {
enum VectorMesonType
{
JPSI,
OMEGA,
RHO,
RHO_OMEGA_MIXING
};
}
-//*******************************************************************
-//* *
-//* Class EvtLambdaB2LambdaV *
-//* *
-//*******************************************************************
+// Description:
+// Class to generate LambdaB -> Lambda(p pi) V(Vp Vm) decays
+// with V a vector meson such as J/psi (mu+mu-)
+// Rho (pi+pi-)
+// Omega (pi+pi-)
+// Rho-omega mixing (pi+pi-)
//
// DECAY : LambdaB -> Lambda + vector meson
//
// d(Sigma)
// -------- = 1 + A*B*cos(theta) + 2*A*Re(C*exp(i*phi))*sin(theta)
// d(Omega)
//
// with A (real) : lambdaB helicity asymmetry parameter
// B (real) : lambdaB polarisation
// C (complex) : lambdaB density matrix element rho+-
//
// cf : O. Leitner, Z.J Ajaltouni, E. Conte,
// PCCF RI 0601, ECT-05-15, LPNHE/2006-01, hep-ph/0602043
class EvtLambdaB2LambdaV : public EvtDecayProb {
public:
EvtLambdaB2LambdaV();
EvtDecayBase* clone() override;
std::string getName() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* lambdab ) override;
private:
//class name for report method
std::string fname;
//meson vector identity
VID::VectorMesonType Vtype;
//decay dynamics parameters
double A;
double B;
EvtComplex C;
//V mass generator method
double getVMass( double MASS_LAMBDAB, double MASS_LAMBDA );
//PDF generator method
double BreitWignerRelPDF( double m, double _m0, double _g0 );
double RhoOmegaMixingPDF( double m, double _mr, double _gr, double _mo,
double _go );
};
//*******************************************************************
//* *
//* Class EvtLambda2PPiForLambdaB2LambdaV *
//* *
//*******************************************************************
//
// DECAY : Lambda -> p + pi-
//
// d(Sigma)
// -------- = 1 + A*B*cos(theta) + 2*A*Re(D*exp(i*phi))*sin(theta)
// d(Omega)
//
// with A (real) : lambda asymmetry parameter
// B (real) : lambda polarisation
// C (real) : lambdaB polarisation
// D (complex) : lambda density matrix element rho+-
//
// cf : O. Leitner, Z.J Ajaltouni, E. Conte
// PCCF RI 0601, ECT-05-15, LPNHE/2006-01, hep-ph/0602043
class EvtLambda2PPiForLambdaB2LambdaV : public EvtDecayProb {
public:
EvtLambda2PPiForLambdaB2LambdaV();
EvtDecayBase* clone() override;
std::string getName() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* lambda ) override;
private:
//class name for report method
std::string fname;
//meson vector identity
VID::VectorMesonType Vtype;
//decay dynamics parameters
double A;
double B;
double C;
EvtComplex D;
};
//*******************************************************************
//* *
//* Class EvtV2VpVmForLambdaB2LambdaV *
//* *
//*******************************************************************
//
// DECAY : vector meson V -> Vp + Vm
//
// d(Sigma)
// -------- = (1-3A)*cos(theta)^2 + (1+A) //leptonic decays
// d(Omega)
//
// d(Sigma)
// -------- = (3A-1)*cos(theta)^2 + (1-A) //hadronic decays
// d(Omega)
//
// with A (real) : V density matrix element indicating the
// probability to be longitudinally polarized
//
// cf : O. Leitner, Z.J Ajaltouni, E. Conte
// PCCF RI 0601, ECT-05-15, LPNHE/2006-01, hep-ph/0602043
class EvtV2VpVmForLambdaB2LambdaV : public EvtDecayProb {
public:
EvtV2VpVmForLambdaB2LambdaV();
EvtDecayBase* clone() override;
std::string getName() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* V ) override;
private:
//class name for report method
std::string fname;
//meson vector identity
VID::VectorMesonType Vtype;
//decay dynamics parameters
double A;
};
#endif
diff --git a/EvtGenModels/EvtLambdaP_BarGamma.hh b/EvtGenModels/EvtLambdaP_BarGamma.hh
index c3c37bb..e42134b 100644
--- a/EvtGenModels/EvtLambdaP_BarGamma.hh
+++ b/EvtGenModels/EvtLambdaP_BarGamma.hh
@@ -1,75 +1,57 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech
-//
-// Module: EvtGen/EvtRadiativeBaryonicPenguins.hh
-//
-// Description:Implementation of the decay B- -> lambda p_bar gamma according to
-// Cheng, Yang; hep-ph/0201015
-//
-// Modification history:
-//
-// JFS December 16th, 2003 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTLAMBDAPBARGAMMA_HH
#define EVTLAMBDAPBARGAMMA_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
+// Description:Implementation of the decay B- -> lambda p_bar gamma according to
+// Cheng, Yang; hep-ph/0201015
+
class EvtLambdaP_BarGamma : public EvtDecayAmp {
public:
EvtLambdaP_BarGamma();
~EvtLambdaP_BarGamma() { ; }
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
private:
// some constants to make the code easier to read and maintain
// these three should be constants... (implementation of getMass() prohibits this)
double _mLambdab; // = 5.624; // Lambda_b mass
double _mLambda0; // = 1.115684; // Lambda0 mass
double _c7Eff; // = -0.31; // Wilson coefficient
double _mb; // = 4.4; // running b mass
double _mV; // = 5.42; // pole mass vector current
double _mA; // = 5.86; // pole mass axial current
double _GF; // = 1.166E-5; // Fermi constant
double _gLambdab; // = 16; // coupling constant Lambda_b -> B- p
double _e0; // = 1; // electromagnetic coupling (+1)
double _g1; // = 0.64; // heavy-light form factors at q_mSqare
double _g2; // = -0.10;
double _f1; // = 0.64;
double _f2; // = -0.31;
double _VtbVtsStar; // = 0.038; // |V_tb V_ts^*|
// user never needs to call this -> private
// baryonic form factors f(p), g(p), at p=0
double f0( const double f_qm,
int n = 1 ) const; // calculate f(0) with f(q_max)
double g0( const double f_qm,
int n = 1 ) const; // calculate g(0) with g(q_max)
// shorthand for constants a and b in the formula
double constA() const;
double constB() const;
// initialize phasespace and calculate the amplitude for one (i=0,1) state of the photon
EvtComplex calcAmpliude( const EvtParticle* p, const unsigned int polState );
};
#endif
diff --git a/EvtGenModels/EvtLambdacPHH.hh b/EvtGenModels/EvtLambdacPHH.hh
index 723a58b..1747a81 100644
--- a/EvtGenModels/EvtLambdacPHH.hh
+++ b/EvtGenModels/EvtLambdacPHH.hh
@@ -1,96 +1,83 @@
-//--------------------------------------------------------------------------
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtLambdacPHH.hh
-//
-// Description: Decay model for Lambda_c -> K- pi+ p using amplitudes
-// from the Fermilab E791 analysis: arXiv:hep-ex/9912003v1
-//
-// Modification history:
-//
-// Elisabeth Niel (elisabeth.maria.niel@cern.ch) and
-// Patrick Robbe (robbe@lal.in2p3.fr) Jan 2019 Module created
-//
-//------------------------------------------------------------------------
-//
#ifndef EVTLAMBDACPHH_HH
#define EVTLAMBDACPHH_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtResonance2.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <string>
#include <vector>
class EvtParticle;
+// Description: Decay model for Lambda_c -> K- pi+ p using amplitudes
+// from the Fermilab E791 analysis: arXiv:hep-ex/9912003v1
+
class EvtLambdacPHH : public EvtDecayAmp {
public:
EvtLambdacPHH();
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
protected:
// Resonance enumeration
enum LcResLabel
{
NonReson = 0,
Kstar,
Delta,
Lambda
};
// Amplitude functions
std::vector<EvtComplex> calcResAmpTerms( EvtLambdacPHH::LcResLabel resIndex,
const EvtResonance2& res,
double norm ) const;
EvtComplex DecayAmp3( EvtLambdacPHH::LcResLabel resonance, int m,
int mprime, double theta_res, double phi_res,
double theta_prime_daughter_res,
double phi_prime_daughter_res ) const;
EvtComplex fampl3( double amplitude_res, double phi_res, int spinMother,
int m_spinMother, int m_prime_spinMother,
double theta_res, float spin_res, float m_spin_res,
float m_prime_spin_res, double theta_daughter_res,
double phi_prime_daughter_res ) const;
// Find resonance normalisation factors
void calcNormalisations();
void getFitFractions();
// Inverse cos/sin functions that checks for valid arguments
double getACos( double num, double denom ) const;
double getASin( double num, double denom ) const;
private:
// Daughter ordering for K-, pi+, p
int _d1, _d2, _d3;
// Resonance parameters
double _Nplusplus, _Nplusminus, _Nminusplus, _Nminusminus;
double _phiNplusplus, _phiNplusminus, _phiNminusplus, _phiNminusminus;
double _E1, _phiE1, _E2, _phiE2, _E3, _phiE3, _E4, _phiE4;
double _F1, _phiF1, _F2, _phiF2, _H1, _phiH1, _H2, _phiH2;
double _NRNorm, _KstarNorm, _DeltaNorm, _LambdaNorm;
double _KstarM, _KstarW, _KstarR;
double _DeltaM, _DeltaW, _DeltaR;
double _LambdaM, _LambdaW, _LambdaR;
double _Lambda_cR;
EvtVector4R _zprime, _p4_Lambda_c;
double _zpMag, _p4_Lambdac_Mag;
};
#endif
diff --git a/EvtGenModels/EvtLb2Baryonlnu.hh b/EvtGenModels/EvtLb2Baryonlnu.hh
index cc6e156..bf2a0cd 100644
--- a/EvtGenModels/EvtLb2Baryonlnu.hh
+++ b/EvtGenModels/EvtLb2Baryonlnu.hh
@@ -1,50 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtLb2Baryonlnu.hh
-//
-// Description:Implementation of the Lb2Baryonlnu model
-// Class to handle semileptonic Lb -> p l nu decays using the using form factor predictions based on the quark model. Here baryon can be Lc+, p, Lc*+, N*+.
-//
-//
-// Modification history:
-//
-// William Sutcliffe July 27, 2013 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTLB2BARYONLNU_HH
#define EVTLB2BARYONLNU_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include "EvtGenModels/EvtSLBaryonAmp.hh"
class EvtParticle;
+// Description:Implementation of the Lb2Baryonlnu model
+// Class to handle semileptonic Lb -> p l nu decays using the using form factor predictions based on the quark model. Here baryon can be Lc+, p, Lc*+, N*+.
+// Description: Routine to implement Lb->N*+ l nu semileptonic decays using form factor predictions based on the quark model. The form factors are from W. Roberts, M. Pervin, S. Chapstick, (2011). arXiv:nucl-th/0503030v1. The model can be used for decays to all N*+ states with J^{P} = 1/2^{+}, 1/2^{-}, 3/2^{+}, 3/2^{-} and, in addition, decays to p, Lc+, Lc(2593)+, Lc(2625)+
+
class EvtLb2Baryonlnu : public EvtDecayAmp {
public:
EvtLb2Baryonlnu();
~EvtLb2Baryonlnu();
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
void init() override;
private:
EvtSemiLeptonicFF* ffmodel;
EvtSLBaryonAmp* calcamp;
};
#endif
diff --git a/EvtGenModels/EvtLb2BaryonlnuFF.hh b/EvtGenModels/EvtLb2BaryonlnuFF.hh
index 38f6fb2..d2bb04b 100644
--- a/EvtGenModels/EvtLb2BaryonlnuFF.hh
+++ b/EvtGenModels/EvtLb2BaryonlnuFF.hh
@@ -1,50 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtLb2NstlnuLCSRFF.hh
-//
-// Description: Module for computation of Lb->N*+ and Lb->Lc*+ form factors. Uses predictions based from W. Roberts, M. Pervin, S. Chapstick, (2011). arXiv:nucl-th/0503030v1
-//
-// Modification history:
-//
-// William Sutcliffe November 21, 2013 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTLB2BARYONLNUFF_HH
#define EVTLB2BARYONLNUFF_HH
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
class EvtId;
+// Description: Module for computation of Lb->N*+ and Lb->Lc*+ form factors. Uses predictions based from W. Roberts, M. Pervin, S. Chapstick, (2011). arXiv:nucl-th/0503030v1
+
class EvtLb2BaryonlnuFF : public EvtSemiLeptonicFF {
public:
void getscalarff( EvtId parent, EvtId daught, double t, double mass,
double* fpf, double* f0f ) override;
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void gettensorff( EvtId parent, EvtId daught, double t, double mass,
double* hf, double* kf, double* bpf, double* bmf ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId parent, EvtId daught, double q2, double mass,
double* f1, double* f2, double* f3, double* g1, double* g2,
double* g3 ) override;
void getraritaff( EvtId parent, EvtId daught, double q2, double mass,
double* f1, double* f2, double* f3, double* f4,
double* g1, double* g2, double* g3, double* g4 ) override;
};
#endif
diff --git a/EvtGenModels/EvtLb2Lll.hh b/EvtGenModels/EvtLb2Lll.hh
index 56565ff..8621255 100644
--- a/EvtGenModels/EvtLb2Lll.hh
+++ b/EvtGenModels/EvtLb2Lll.hh
@@ -1,55 +1,43 @@
-//----------------------------------------------------------------------------------
-//
-// Module: EvtLb2Lll.hh
-//
-// Desription: Routine to implement Lambda_b0 -> Lambda_0 l+ l- decays accroding to
-// several models: Chen. Geng.
-// Aliev. Ozpineci. Savci.
-//
-// Modification history:
-//
-// 15/09/2004 PR Module created according to PHSP model
-// 20/02/2005 PR Added parameters, created matrix element (without polarization)
-// 04/03/2005 PR LD contrib., corrected WC eff. according to Chen. Geng.
-//
-//----------------------------------------------------------------------------------
-
#ifndef EVTLB2LLL_HH
#define EVTLB2LLL_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenModels/EvtWilsonCoefficients.hh"
+// Desription: Routine to implement Lambda_b0 -> Lambda_0 l+ l- decays accroding to
+// several models: Chen. Geng.
+// Aliev. Ozpineci. Savci.
+
class EvtLb2Lll : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
void calcAmp( EvtAmp* amp, EvtParticle* parent );
EvtTensor4C EvtLeptonTG5Current( const EvtDiracSpinor& d,
const EvtDiracSpinor& dp );
private:
double m_polarizationLambdab0;
double m_maxProbability;
double m_poleSize;
long m_noTries;
double m_omega;
std::string m_decayName;
std::string m_polarizationIntroduction;
std::string m_HEPmodel;
std::string m_FFtype;
std::string m_effectContribution;
EvtWilsonCoefficients m_WC;
};
#endif
diff --git a/EvtGenModels/EvtLb2plnuLCSR.hh b/EvtGenModels/EvtLb2plnuLCSR.hh
index 13f6699..a8deed6 100644
--- a/EvtGenModels/EvtLb2plnuLCSR.hh
+++ b/EvtGenModels/EvtLb2plnuLCSR.hh
@@ -1,50 +1,34 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtLb2plnuLCSR.hh
-//
-// Description:Implementation of the Lb2plnuLCSR model
-// Class to handle semileptonic Lb -> p l nu decays using the using form factor predictions from Light Cone Sum Rules.
-//
-//
-// Modification history:
-//
-// William Sutcliffe July 27, 2013 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTLB2PMUNULCSR_HH
#define EVTLB2PMUNULCSR_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include "EvtGenModels/EvtSLBaryonAmp.hh"
class EvtParticle;
+// Description:Implementation of the Lb2plnuLCSR model
+// Class to handle semileptonic Lb -> p l nu decays using the using form factor predictions from Light Cone Sum Rules.
+// Description: Routine to implement Lb->p l nu semileptonic decays using form factor
+// predictions form Light Cone Sum Rules. The form factors are from
+// A. Khodjamirian, C. Klein, T. Mannel and Y.-M. Wang, arXiv.1108.2971 (2011)
+
class EvtLb2plnuLCSR : public EvtDecayAmp {
public:
EvtLb2plnuLCSR();
~EvtLb2plnuLCSR();
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
void init() override;
private:
EvtSemiLeptonicFF* ffmodel;
EvtSLBaryonAmp* calcamp;
};
#endif
diff --git a/EvtGenModels/EvtLb2plnuLCSRFF.hh b/EvtGenModels/EvtLb2plnuLCSRFF.hh
index 3408914..088e3d0 100644
--- a/EvtGenModels/EvtLb2plnuLCSRFF.hh
+++ b/EvtGenModels/EvtLb2plnuLCSRFF.hh
@@ -1,50 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtLb2plnuLCSRFF.hh
-//
-// Description: Module for computation of Lb->p form factors via LCSR
-//
-// Modification history:
-//
-// William Sutcliffe July 27, 2013 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTLB2PMUNULCSRFF_HH
#define EVTLB2PMUNULCSRFF_HH
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
class EvtId;
+// Description: Module for computation of Lb->p form factors via LCSR
+
class EvtLb2plnuLCSRFF : public EvtSemiLeptonicFF {
public:
void getscalarff( EvtId parent, EvtId daught, double t, double mass,
double* fpf, double* f0f ) override;
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void gettensorff( EvtId parent, EvtId daught, double t, double mass,
double* hf, double* kf, double* bpf, double* bmf ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId parent, EvtId daught, double q2, double mass,
double* f1, double* f2, double* f3, double* g1, double* g2,
double* g3 ) override;
void getraritaff( EvtId parent, EvtId daught, double q2, double mass,
double* f1, double* f2, double* f3, double* f4,
double* g1, double* g2, double* g3, double* g4 ) override;
};
#endif
diff --git a/EvtGenModels/EvtLb2plnuLQCD.hh b/EvtGenModels/EvtLb2plnuLQCD.hh
index ebeef2a..539a427 100644
--- a/EvtGenModels/EvtLb2plnuLQCD.hh
+++ b/EvtGenModels/EvtLb2plnuLQCD.hh
@@ -1,50 +1,34 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtLb2plnuLQCD.hh
-//
-// Description:Implementation of the Lb2plnuLQCD model
-// Class to handle semileptonic Lb -> p l nu decays using the using form factor predictions from Lattice QCD.
-//
-//
-// Modification history:
-//
-// William Sutcliffe July 27, 2013 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTLB2PMUNULQCD_HH
#define EVTLB2PMUNULQCD_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include "EvtGenModels/EvtSLBaryonAmp.hh"
class EvtParticle;
+// Description:Implementation of the Lb2plnuLQCD model
+// Class to handle semileptonic Lb -> p l nu decays using the using form factor predictions from Lattice QCD.
+// Description: Routine to implement Lb->p l nu semileptonic decays using form factor predictions from LQCD.
+// The form factors are from:
+// W. Detmold, C-J. Lin, S. Meinel and M.Wingate, arXiv:1306.0446 (2013)
+
class EvtLb2plnuLQCD : public EvtDecayAmp {
public:
EvtLb2plnuLQCD();
~EvtLb2plnuLQCD();
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
void init() override;
private:
EvtSemiLeptonicFF* ffmodel;
EvtSLBaryonAmp* calcamp;
};
#endif
diff --git a/EvtGenModels/EvtLb2plnuLQCDFF.hh b/EvtGenModels/EvtLb2plnuLQCDFF.hh
index 41dc41f..973deaa 100644
--- a/EvtGenModels/EvtLb2plnuLQCDFF.hh
+++ b/EvtGenModels/EvtLb2plnuLQCDFF.hh
@@ -1,50 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtLb2plnuLQCDFF.hh
-//
-// Description: Module for computation of Lb->p form factors via LQCD
-//
-// Modification history:
-//
-// William Sutcliffe July 27, 2013 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTLB2PMUNULQCDFF_HH
#define EVTLB2PMUNULQCDFF_HH
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
class EvtId;
+// Description: Module for computation of Lb->p form factors via LQCD
+
class EvtLb2plnuLQCDFF : public EvtSemiLeptonicFF {
public:
void getscalarff( EvtId parent, EvtId daught, double t, double mass,
double* fpf, double* f0f ) override;
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void gettensorff( EvtId parent, EvtId daught, double t, double mass,
double* hf, double* kf, double* bpf, double* bmf ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId parent, EvtId daught, double q2, double mass,
double* f1, double* f2, double* f3, double* g1, double* g2,
double* g3 ) override;
void getraritaff( EvtId parent, EvtId daught, double q2, double mass,
double* f1, double* f2, double* f3, double* f4,
double* g1, double* g2, double* g3, double* g4 ) override;
};
#endif
diff --git a/EvtGenModels/EvtMelikhov.hh b/EvtGenModels/EvtMelikhov.hh
index 9f7923e..538bae4 100644
--- a/EvtGenModels/EvtMelikhov.hh
+++ b/EvtGenModels/EvtMelikhov.hh
@@ -1,45 +1,27 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtMelikhov.hh
-//
-// Description:Implementation of the Melikhov semileptonic model
-//
-// Modification history:
-//
-// DJL April 20, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTMELIKHOV_HH
#define EVTMELIKHOV_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include <memory>
class EvtParticle;
+// Description:Implementation of the Melikhov semileptonic model
+
class EvtMelikhov : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
private:
std::unique_ptr<EvtSemiLeptonicFF> Melikhovffmodel;
std::unique_ptr<EvtSemiLeptonicAmp> calcamp;
};
#endif
diff --git a/EvtGenModels/EvtMelikhovFF.hh b/EvtGenModels/EvtMelikhovFF.hh
index 0a07fbe..3ad5365 100644
--- a/EvtGenModels/EvtMelikhovFF.hh
+++ b/EvtGenModels/EvtMelikhovFF.hh
@@ -1,53 +1,35 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtMelikhovFF.hh
-//
-// Description: Form factors for EvtMelikhov model
-//
-// Modification history:
-//
-// DJL April 20, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTMELIKHOVFF_HH
#define EVTMELIKHOVFF_HH
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
class EvtId;
+// Description: Form factors for EvtMelikhov model
+
class EvtMelikhovFF : public EvtSemiLeptonicFF {
public:
EvtMelikhovFF( double par1 );
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void getscalarff( EvtId, EvtId, double, double, double*, double* ) override;
void gettensorff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double* ) override;
void getraritaff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double*, double*, double* ) override;
private:
int whichfit;
};
#endif
diff --git a/EvtGenModels/EvtModelReg.hh b/EvtGenModels/EvtModelReg.hh
index f52b326..1839462 100644
--- a/EvtGenModels/EvtModelReg.hh
+++ b/EvtGenModels/EvtModelReg.hh
@@ -1,35 +1,15 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtModelReg.hh
-//
-// Description:
-//
-// Modification history:
-//
-// Lange April 18, 2002 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTMODELREG_HH
#define EVTMODELREG_HH
#include <list>
class EvtDecayBase;
class EvtModelReg {
public:
EvtModelReg( const std::list<EvtDecayBase*>* extraModels = 0 );
private:
};
#endif
diff --git a/EvtGenModels/EvtNoRadCorr.hh b/EvtGenModels/EvtNoRadCorr.hh
index bcf96d3..60bb9a1 100644
--- a/EvtGenModels/EvtNoRadCorr.hh
+++ b/EvtGenModels/EvtNoRadCorr.hh
@@ -1,42 +1,24 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2012 University of Warwick, UK
-//
-// Module: EvtNoRadCorr
-//
-// Description: Create an empty radiative correction engine which does nothing.
-// This is required since the EvtGen constructor still needs at least one
-// concrete implementation of EvtAbsRadCorr for the case when Photos is not used.
-//
-// Modification history:
-//
-// John Back Sept 2012 Module created
-//
-//------------------------------------------------------------------------------
-//
-
#ifndef EVTNORADCORR_HH
#define EVTNORADCORR_HH
#include "EvtGenBase/EvtAbsRadCorr.hh"
#include <string>
class EvtParticle;
+// Description: Create an empty radiative correction engine which does nothing.
+// This is required since the EvtGen constructor still needs at least one
+// concrete implementation of EvtAbsRadCorr for the case when Photos is not used.
+
class EvtNoRadCorr : public EvtAbsRadCorr {
public:
EvtNoRadCorr() { ; }
virtual ~EvtNoRadCorr() { ; }
virtual void doRadCorr( EvtParticle* ) { ; }
private:
};
#endif
diff --git a/EvtGenModels/EvtOmegaDalitz.hh b/EvtGenModels/EvtOmegaDalitz.hh
index 5f8e677..fc7697f 100644
--- a/EvtGenModels/EvtOmegaDalitz.hh
+++ b/EvtGenModels/EvtOmegaDalitz.hh
@@ -1,41 +1,22 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtOmegaDalitz.hh
-//
-// Description:Class to handle the omega -> pi pi pi dalitz decay.
-
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTOMEGADALITZ_HH
#define EVTOMEGADALITZ_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
+// Description:Class to handle the omega -> pi pi pi dalitz decay.
+
class EvtOmegaDalitz : public EvtDecayAmp {
public:
EvtOmegaDalitz() {}
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
};
#endif
diff --git a/EvtGenModels/EvtPFermi.hh b/EvtGenModels/EvtPFermi.hh
index 05dc6d3..119e245 100644
--- a/EvtGenModels/EvtPFermi.hh
+++ b/EvtGenModels/EvtPFermi.hh
@@ -1,60 +1,47 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-//
+#ifndef EVTPFERMI_HH
+#define EVTPFERMI_HH
+
// Description:
// DFN model:
// F(k+) = N (1-x)^a exp((1+a)x) ,x=k+/(mB-mb)
// the fermi motion distribution according to
// hep-ph/9905351 v2
// BLNP model:
// F(what,Lambda,b) = pow(_b,_b)/(tgamma(_b)*_Lambda)*pow(what/_Lambda,_b-1)*
// exp(-_b*what/Lambda);
// the leading order shape function (exp) (hep-ph/0504071)
-// Environment:
-// Software developed for the BaBar Detector at the SLAC B-Factory.
-//
-// Author List:
-// Sven Menke (DFN model)
-// Alexei Volk (BLNP model)
-//-----------------------------------------------------------------------
-
-#ifndef EVTPFERMI_HH
-#define EVTPFERMI_HH
class EvtPFermi final {
public:
// Constructors
EvtPFermi( const double& a, const double& mB, const double& mb );
EvtPFermi( const double& Lambda, const double& b );
// Operators
// Selectors
// Modifiers
// Methods
double getFPFermi( const double& kplus );
double getSFBLNP( const double& what );
protected:
// Helper functions
private:
// Friends
// Data members
double _a;
double _mb;
double _mB;
double _Lambda;
double _b;
};
#endif // EVTPFERMI_HH
diff --git a/EvtGenModels/EvtPVVCPLH.hh b/EvtGenModels/EvtPVVCPLH.hh
index 35420a6..50ea09a 100644
--- a/EvtGenModels/EvtPVVCPLH.hh
+++ b/EvtGenModels/EvtPVVCPLH.hh
@@ -1,44 +1,22 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1999 Caltech, UCSB
-//
-// Module: EvtGen/EvtPVVCPLH.hh
-//
-// Description:
-//
-// Modification history:
-//
-// RYD November 5, 1999 Module created
-//
-// TDP October 10, 2006 Modified
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPVVCPLH_HH
#define EVTPVVCPLH_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtPVVCPLH : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
private:
bool isBsMixed( EvtParticle* p );
};
#endif
diff --git a/EvtGenModels/EvtPartWave.hh b/EvtGenModels/EvtPartWave.hh
index 00d9b93..bbd9937 100644
--- a/EvtGenModels/EvtPartWave.hh
+++ b/EvtGenModels/EvtPartWave.hh
@@ -1,50 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtPartWave.hh
-//
-// Description:Decay model for implementation of generic 2 body
-// decay specified by the partial waves amplitudes
-//
-// Modification history:
-//
-// RYD September 7, 1999 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPARTWAVE_HH
#define EVTPARTWAVE_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtEvalHelAmp.hh"
#include "EvtGenBase/EvtId.hh"
#include <memory>
class EvtParticle;
class EvtEvalHelAmp;
+// Description:Decay model for implementation of generic 2 body
+// decay specified by the partial waves amplitudes
+
class EvtPartWave : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
private:
void fillHelicity( int* lambda2, int n, int J2 );
std::unique_ptr<EvtEvalHelAmp> _evalHelAmp;
};
#endif
diff --git a/EvtGenModels/EvtPhiDalitz.hh b/EvtGenModels/EvtPhiDalitz.hh
index 9c42001..d61913d 100644
--- a/EvtGenModels/EvtPhiDalitz.hh
+++ b/EvtGenModels/EvtPhiDalitz.hh
@@ -1,30 +1,29 @@
-
#ifndef EVTPHIDALITZ_HH
#define EVTPHIDALITZ_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtPhiDalitz : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void decay( EvtParticle* p ) override;
private:
double _mRho;
double _gRho;
double _aD;
double _phiD;
double _aOmega;
double _phiOmega;
int _locPip;
int _locPim;
int _locPi0;
};
#endif
diff --git a/EvtGenModels/EvtPhsp.hh b/EvtGenModels/EvtPhsp.hh
index 140faaa..d788af3 100644
--- a/EvtGenModels/EvtPhsp.hh
+++ b/EvtGenModels/EvtPhsp.hh
@@ -1,43 +1,25 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtPhsp.hh
-//
-// Description:
-//Class to handle generic phase space decays not done
-//in other decay models.
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPHSP_HH
#define EVTPHSP_HH
#include "EvtGenBase/EvtDecayIncoherent.hh"
class EvtParticle;
+// Description:
+//Class to handle generic phase space decays not done
+//in other decay models.
+
class EvtPhsp : public EvtDecayIncoherent {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtPhspFlatLifetime.hh b/EvtGenModels/EvtPhspFlatLifetime.hh
index ff4d7bc..8045b1b 100644
--- a/EvtGenModels/EvtPhspFlatLifetime.hh
+++ b/EvtGenModels/EvtPhspFlatLifetime.hh
@@ -1,58 +1,40 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtPhspFlatLifetime.hh
-//
-// Description:
-// Class to handle generic phase space decays not done
-// in other decay models, with a flat lifetime
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-// PR July 11, 2013 Add flat lifetime generation
-//------------------------------------------------------------------------
-
#ifndef EVTPHSPFLATLIFETIME_HH
#define EVTPHSPFLATLIFETIME_HH
#include "EvtGenBase/EvtDecayIncoherent.hh"
class EvtParticle;
+// Description:
+// Class to handle generic phase space decays not done
+// in other decay models, with a flat lifetime
+
class EvtPhspFlatLifetime : public EvtDecayIncoherent {
public:
/// Constructor
EvtPhspFlatLifetime() : m_maxLifetime( 0. ){};
/// Destructor
virtual ~EvtPhspFlatLifetime(){};
/// return name of the model
std::string getName() override;
/// Clone
EvtDecayBase* clone() override;
/// Compute maximum weight
void initProbMax() override;
/// Initialize the model
void init() override;
/// Perform the decay
void decay( EvtParticle* p ) override;
private:
/// parameter of the model: maximum of the generated lifetime (in ps)
double m_maxLifetime;
};
#endif
diff --git a/EvtGenModels/EvtPi0Dalitz.hh b/EvtGenModels/EvtPi0Dalitz.hh
index 6428889..49ececd 100644
--- a/EvtGenModels/EvtPi0Dalitz.hh
+++ b/EvtGenModels/EvtPi0Dalitz.hh
@@ -1,39 +1,19 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtPi0Dalitz.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPI0DALITZ_HH
#define EVTPI0DALITZ_HH
#include "EvtGenBase/EvtDecayProb.hh"
class EvtParticle;
class EvtPi0Dalitz : public EvtDecayProb {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtPropSLPole.hh b/EvtGenModels/EvtPropSLPole.hh
index e8af730..d8872f6 100644
--- a/EvtGenModels/EvtPropSLPole.hh
+++ b/EvtGenModels/EvtPropSLPole.hh
@@ -1,65 +1,47 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtPropSLPole.hh
-//
-// Description:Semileptonic decays with pole form form factors
-//
-// Modification history:
-//
-// DJL April 23, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPROPSLPOLE_HH
#define EVTPROPSLPOLE_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtPoint1D.hh"
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include <memory>
class Evtparticle;
+// Description:Semileptonic decays with pole form form factors
+
class EvtPropSLPole : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
void init() override;
double calBreitWigner( EvtParticle* pmeson, EvtPoint1D point );
double calBreitWignerBasic( double maxMass );
double calcMaxProb( EvtId parent, EvtId meson, EvtId lepton, EvtId nudaug,
EvtSemiLeptonicFF* FormFactors );
private:
bool _includeDecayFact;
bool _includeBirthFact;
double _mass;
double _massMin;
double _massMax;
double _width;
double _maxRange;
EvtSpinType::spintype _spin;
double _blatt;
bool _isProbMaxSet;
std::unique_ptr<EvtSemiLeptonicFF> SLPoleffmodel;
std::unique_ptr<EvtSemiLeptonicAmp> calcamp;
};
#endif
diff --git a/EvtGenModels/EvtPsi2JpsiPiPi.hh b/EvtGenModels/EvtPsi2JpsiPiPi.hh
index b602d05..a23c4b1 100644
--- a/EvtGenModels/EvtPsi2JpsiPiPi.hh
+++ b/EvtGenModels/EvtPsi2JpsiPiPi.hh
@@ -1,46 +1,36 @@
-//--------------------------------------------------------------------------
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtPsi2JpsiPiPi.hh
-//
-// Description: Header file for the model "PSI2JPSIPIPI" which generates
-// psi2S -> J/psi pi+ pi- decays based on hep-ph/1507.07985
-//
-// Modification history: A Luchinsky Nov 2019 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTPSI2JPSIPIPI_HH
#define EVTPSI2JPSIPIPI_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include <array>
#include <string>
class EvtDecayBase;
class EvtParticle;
+// Description: Header file for the model "PSI2JPSIPIPI" which generates
+// psi2S -> J/psi pi+ pi- decays based on hep-ph/1507.07985
+
class EvtPsi2JpsiPiPi : public EvtDecayAmp {
public:
EvtPsi2JpsiPiPi();
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
private:
bool tree;
double phi; // LO vs NLO mixing angle (radians)
double cosPhi, cos2Phi, sinPhi, sin2Phi;
// NLO corrections
static const int nQ = 6; // number of terms in mPiPi interpolation
std::array<double, nQ> c0, c1, c2, s1, s2;
void setNLOArrays();
};
#endif
diff --git a/EvtGenModels/EvtPto3P.hh b/EvtGenModels/EvtPto3P.hh
index 08d2699..9f403ab 100644
--- a/EvtGenModels/EvtPto3P.hh
+++ b/EvtGenModels/EvtPto3P.hh
@@ -1,41 +1,25 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtPto3P.hh,v 1.2 2009-03-16 16:31:05 robbep Exp $
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module creator:
-// Alexei Dvoretskii, Caltech, 2001-2002.
-//-----------------------------------------------------------------------
-
#ifndef EVT_PTO3P_HH
#define EVT_PTO3P_HH
#include "EvtGenBase/EvtDalitzPoint.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtIntervalDecayAmp.hh"
#include <vector>
class EvtPto3P : public EvtIntervalDecayAmp<EvtDalitzPoint> {
public:
EvtPto3P() {}
~EvtPto3P() {}
std::string getName() override { return "PTO3P"; }
EvtDecayBase* clone() override { return new EvtPto3P(); }
EvtAmpFactory<EvtDalitzPoint>* createFactory(
const EvtMultiChannelParser& parser ) override;
std::vector<EvtVector4R> initDaughters( const EvtDalitzPoint& p ) const override;
EvtDalitzPlot dp();
};
#endif
diff --git a/EvtGenModels/EvtRareLbToLll.hh b/EvtGenModels/EvtRareLbToLll.hh
index 2c85901..0015b4c 100644
--- a/EvtGenModels/EvtRareLbToLll.hh
+++ b/EvtGenModels/EvtRareLbToLll.hh
@@ -1,51 +1,46 @@
#ifndef EVTRARELBTOLLL_HH
#define EVTRARELBTOLLL_HH 1
-// Include files
-
-/** @class EvtRareLbToLll EvtRareLbToLll.hh EvtGenModels/EvtRareLbToLll.hh
- *
- *
- * @author Thomas Blake
- * @date 2013-11-27
- */
-
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenModels/EvtRareLbToLllFFBase.hh"
#include "EvtGenModels/EvtRareLbToLllWC.hh"
#include <memory>
+// Description:
+// Implements the rare Lb --> Lambda^(*) ell ell models described in
+// http://arxiv.org/pdf/1108.6129.pdf
+
class EvtRareLbToLll : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* parent ) override;
protected:
void calcAmp( EvtAmp& amp, EvtParticle* parent );
void HadronicAmp( EvtParticle* parent, EvtParticle* lambda, EvtVector4C* T,
const int i, const int j );
void HadronicAmpRS( EvtParticle* parent, EvtParticle* lambda,
EvtVector4C* T, const int i, const int j );
bool isParticle( EvtParticle* parent ) const;
private:
double m_maxProbability;
std::unique_ptr<EvtRareLbToLllFFBase> ffmodel_;
std::unique_ptr<EvtRareLbToLllWC> wcmodel_;
};
#endif //
diff --git a/EvtGenModels/EvtSLBKPole.hh b/EvtGenModels/EvtSLBKPole.hh
index b93e551..1c588f4 100644
--- a/EvtGenModels/EvtSLBKPole.hh
+++ b/EvtGenModels/EvtSLBKPole.hh
@@ -1,46 +1,28 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSLBKPole.hh
-//
-// Description:Semileptonic decays with pole form form factors,
-// according to Becirevic and Kaidalov(BK)
-//
-// Modification history:
-//
-// liheng October 20, 2005 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSLBKPOLE_HH //modified
#define EVTSLBKPOLE_HH //modified
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh" //modified
#include <memory>
class Evtparticle;
+// Description:Semileptonic decays with pole form form factors,
+// according to Becirevic and Kaidalov(BK)
+
class EvtSLBKPole : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
void init() override;
private:
std::unique_ptr<EvtSemiLeptonicFF> SLBKPoleffmodel; //modified
std::unique_ptr<EvtSemiLeptonicAmp> calcamp;
};
#endif
diff --git a/EvtGenModels/EvtSLBKPoleFF.hh b/EvtGenModels/EvtSLBKPoleFF.hh
index 9f9e016..f4942cb 100644
--- a/EvtGenModels/EvtSLBKPoleFF.hh
+++ b/EvtGenModels/EvtSLBKPoleFF.hh
@@ -1,56 +1,38 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSLBKPoleFF.hh
-//
-// Description:Form factor routines for EvtSLBKPole,
-// according to Becirevic and Kaidalov(BK)
-//
-// Modification history:
-//
-// liheng October 20, 2005 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSLBKPOLEFF_HH //modified
#define EVTSLBKPOLEFF_HH //modified
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh" //modified
+// Description:Form factor routines for EvtSLBKPole,
+// according to Becirevic and Kaidalov(BK)
+
class EvtSLBKPoleFF : public EvtSemiLeptonicFF { //modified
public:
EvtSLBKPoleFF( int numarg, double* arglist ); //modified
void getscalarff( EvtId parent, EvtId daught, double t, double mass,
double* fpf, double* f0f ) override;
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void gettensorff( EvtId parent,
EvtId daught, //need to be modified, but not yet
double t, double mass, double* hf, double* kf, double* bp,
double* bm ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double* ) override;
void getraritaff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double*, double*, double* ) override;
private:
int numSLBKPoleargs; //modified
double SLBKPoleargs[16]; //modified
};
#endif
diff --git a/EvtGenModels/EvtSLBaryonAmp.hh b/EvtGenModels/EvtSLBaryonAmp.hh
index 8a9829d..10d1c3e 100644
--- a/EvtGenModels/EvtSLBaryonAmp.hh
+++ b/EvtGenModels/EvtSLBaryonAmp.hh
@@ -1,64 +1,44 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSLBaryonAmp.hh
-//
-// Description:
-//
-// Modification history:
-//
-// Lange Oct 20, 2004 Created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSLBARYONAMP_HH
#define EVTSLBARYONAMP_HH
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
class EvtAmp;
class EvtComplex;
class EvtDiracSpinor;
class EvtParticle;
class EvtRaritaSchwinger;
class EvtSemiLeptonicFF;
class EvtVector4C;
class EvtVector4R;
class EvtSLBaryonAmp : public EvtSemiLeptonicAmp {
public:
~EvtSLBaryonAmp();
//Daughters are initialized and have been added to the parent.
//No need to carry around the daughters seperately!
void CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtSemiLeptonicFF* FormFactors ) override;
void CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtSemiLeptonicFF* FormFactors, EvtComplex r00,
EvtComplex r01, EvtComplex r10, EvtComplex r11 );
double CalcMaxProb( EvtId parent, EvtId meson, EvtId lepton, EvtId nudaug,
EvtSemiLeptonicFF* FormFactors, EvtComplex r00,
EvtComplex r01, EvtComplex r10, EvtComplex r11 );
private:
EvtVector4C EvtBaryonVACurrent( const EvtDiracSpinor& Bf,
const EvtDiracSpinor& Bi,
EvtVector4R parent, EvtVector4R daught,
const double* ff, int pflag );
EvtVector4C EvtBaryonVARaritaCurrent( const EvtRaritaSchwinger& Bf_vect,
const EvtDiracSpinor& Bi,
EvtVector4R parent, EvtVector4R daught,
const double* ff, int pflag );
};
#endif
diff --git a/EvtGenModels/EvtSLDiBaryonAmp.hh b/EvtGenModels/EvtSLDiBaryonAmp.hh
index 145451f..d6a16e7 100644
--- a/EvtGenModels/EvtSLDiBaryonAmp.hh
+++ b/EvtGenModels/EvtSLDiBaryonAmp.hh
@@ -1,57 +1,39 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSLDiBaryonAmp.hh
-//
-// Description:
-//
-// Modification history:
-//
-// Mark Smith July 18, 2017 Created
-// John B Oct 2018 Code simplification
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSLDIBARYONAMP_HH
#define EVTSLDIBARYONAMP_HH
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtBToDiBaryonlnupQCDFF.hh"
#include <vector>
class EvtParticle;
+// Description: Routine to implement semileptonic decays to dibaryonic final
+// state. Details of amplitude calculation to be found in arXiv:1107.0801.
+
class EvtSLDiBaryonAmp {
public:
EvtSLDiBaryonAmp( const EvtBToDiBaryonlnupQCDFF& );
void CalcAmp( EvtParticle* parent, EvtAmp& amp ) const;
protected:
int checkDibaryonParity( const EvtId& id1, const EvtId& id2, const int J1,
const int J2 ) const;
int getBaryonParity( const EvtId& id ) const;
std::vector<EvtVector4C> getHadronicCurrents(
const EvtDiracSpinor& u, const EvtDiracSpinor& v, const EvtVector4R& p,
const EvtVector4R& gMtmTerms, const EvtVector4R& fMtmTerms ) const;
private:
EvtBToDiBaryonlnupQCDFF ffModel_;
};
#endif
diff --git a/EvtGenModels/EvtSLN.hh b/EvtGenModels/EvtSLN.hh
index 62a72f5..19d35ec 100644
--- a/EvtGenModels/EvtSLN.hh
+++ b/EvtGenModels/EvtSLN.hh
@@ -1,43 +1,23 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSLN.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSLN_HH
#define EVTSLN_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
//Class to handle decays of the type SCALAR -> DIRAC NEUTRINO
class EvtSLN : public EvtDecayAmp {
public:
EvtSLN() {}
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtSLPole.hh b/EvtGenModels/EvtSLPole.hh
index 05a0ea1..07da620 100644
--- a/EvtGenModels/EvtSLPole.hh
+++ b/EvtGenModels/EvtSLPole.hh
@@ -1,48 +1,28 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSLPole.hh
-//
-// Description:Semileptonic decays with pole form form factors
-//
-// Modification history:
-//
-// DJL April 23, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSLPOLE_HH
#define EVTSLPOLE_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include <memory>
class Evtparticle;
class EvtSLPole : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
void init() override;
private:
std::unique_ptr<EvtSemiLeptonicFF> SLPoleffmodel;
std::unique_ptr<EvtSemiLeptonicAmp> calcamp;
//special case - reset the daughter masses
bool _resetDaughterTree;
};
#endif
diff --git a/EvtGenModels/EvtSLPoleFF.hh b/EvtGenModels/EvtSLPoleFF.hh
index ad39e93..4957561 100644
--- a/EvtGenModels/EvtSLPoleFF.hh
+++ b/EvtGenModels/EvtSLPoleFF.hh
@@ -1,52 +1,34 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSLPoleFF.hh
-//
-// Description:Form factor routines for EvtSLPole
-//
-// Modification history:
-//
-// DJL April 23, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSLPOLEFF_HH
#define EVTSLPOLEFF_HH
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
+// Description:Form factor routines for EvtSLPole
+
class EvtSLPoleFF : public EvtSemiLeptonicFF {
public:
EvtSLPoleFF( int numarg, double* arglist );
void getscalarff( EvtId parent, EvtId daught, double t, double mass,
double* fpf, double* f0f ) override;
void getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f ) override;
void gettensorff( EvtId parent, EvtId daught, double t, double mass,
double* hf, double* kf, double* bp, double* bm ) override;
void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
double* ) override;
void getdiracff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double* ) override;
void getraritaff( EvtId, EvtId, double, double, double*, double*, double*,
double*, double*, double*, double*, double* ) override;
private:
int numSLPoleargs;
double SLPoleargs[16];
};
#endif
diff --git a/EvtGenModels/EvtSSDCP.hh b/EvtGenModels/EvtSSDCP.hh
index 7d5c657..199047e 100644
--- a/EvtGenModels/EvtSSDCP.hh
+++ b/EvtGenModels/EvtSSDCP.hh
@@ -1,70 +1,52 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 12001 Caltech
-//
-// Module: EvtGen/EvtSSDCP.hh
-//
-// Description: This module is part of the unification of simulation of CP violation in
-// B decays. This model handles decays of the type B->SD where D is either
-// a spin 0, 1, or 2 particle. See long writeup for more information.
-//
-// Modification history:
-//
-// DJL/RYD August 12, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSSDCP_HH
#define EVTSSDCP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
+// Description: This module is part of the unification of simulation of CP violation in
+// B decays. This model handles decays of the type B->SD where D is either
+// a spin 0, 1, or 2 particle. See long writeup for more information.
+
class EvtSSDCP : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
std::string getParamName( int i ) override;
std::string getParamDefault( int i ) override;
private:
//Arguments
double _dm;
double _dgog;
EvtComplex _qoverp;
EvtComplex _poverq;
EvtComplex _z; //FS CPTV parameter
// FS commented next line becuse not used
// int _cp;
EvtComplex _A_f;
EvtComplex _Abar_f;
EvtComplex _A_fbar;
EvtComplex _Abar_fbar;
//Derived quantities
double _gamma;
double _dgamma;
bool _eigenstate;
};
#endif
diff --git a/EvtGenModels/EvtSSD_DirectCP.hh b/EvtGenModels/EvtSSD_DirectCP.hh
index b31a52e..e3955d7 100644
--- a/EvtGenModels/EvtSSD_DirectCP.hh
+++ b/EvtGenModels/EvtSSD_DirectCP.hh
@@ -1,31 +1,30 @@
-// Generation of direct CP violation in hadronic environment
-// Patrick Robbe, LHCb, 08 Nov 2006
-//
-
#ifndef EVTSSD_DirectCP_HH
#define EVTSSD_DirectCP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
+// Generation of direct CP violation in hadronic environment
+// Patrick Robbe, LHCb, 08 Nov 2006
+
class EvtSSD_DirectCP : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
std::string getParamName( int i ) override;
private:
bool isB0Mixed( EvtParticle* p );
bool isBsMixed( EvtParticle* p );
//Arguments
double _acp;
};
#endif
diff --git a/EvtGenModels/EvtSSSCP.hh b/EvtGenModels/EvtSSSCP.hh
index 3e898b7..f5fff73 100644
--- a/EvtGenModels/EvtSSSCP.hh
+++ b/EvtGenModels/EvtSSSCP.hh
@@ -1,42 +1,22 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSSSCP.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSSSCP_HH
#define EVTSSSCP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtSSSCP : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
std::string getParamName( int i ) override;
std::string getParamDefault( int i ) override;
};
#endif
diff --git a/EvtGenModels/EvtSSSCPT.hh b/EvtGenModels/EvtSSSCPT.hh
index b22042c..0861292 100644
--- a/EvtGenModels/EvtSSSCPT.hh
+++ b/EvtGenModels/EvtSSSCPT.hh
@@ -1,37 +1,17 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSSSCPT.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSSSCPT_HH
#define EVTSSSCPT_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtSSSCPT : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtSSSCPpng.hh b/EvtGenModels/EvtSSSCPpng.hh
index 211c74f..3ac12fb 100644
--- a/EvtGenModels/EvtSSSCPpng.hh
+++ b/EvtGenModels/EvtSSSCPpng.hh
@@ -1,39 +1,22 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSSSCPpng.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSSSCPPNG_HH
#define EVTSSSCPPNG_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
+// Description: Routine to decay B -> 2 scalars taking into account penguin
+// contributions (assuming single quark dominance for penguins)
+
class EvtSSSCPpng : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtSTS.hh b/EvtGenModels/EvtSTS.hh
index bba5432..bf53372 100644
--- a/EvtGenModels/EvtSTS.hh
+++ b/EvtGenModels/EvtSTS.hh
@@ -1,39 +1,21 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSTS.hh
-//
-// Description:Performs the decay of a scalar -> tensor scalar
-//
-// Modification history:
-//
-// RYD August 21, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSTS_HH
#define EVTSTS_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
+// Description:Performs the decay of a scalar -> tensor scalar
+
class EvtSTS : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtSTSCP.hh b/EvtGenModels/EvtSTSCP.hh
index 409cc6a..a602b75 100644
--- a/EvtGenModels/EvtSTSCP.hh
+++ b/EvtGenModels/EvtSTSCP.hh
@@ -1,41 +1,21 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSTSCP.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSTSCP_HH
#define EVTSTSCP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtSTSCP : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
std::string getParamName( int i ) override;
std::string getParamDefault( int i ) override;
};
#endif
diff --git a/EvtGenModels/EvtSVP.hh b/EvtGenModels/EvtSVP.hh
index 535392b..450aebe 100644
--- a/EvtGenModels/EvtSVP.hh
+++ b/EvtGenModels/EvtSVP.hh
@@ -1,50 +1,31 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSVP.hh
-//
-// Description: Routine to implement radiative decay
-// chi_c0 -> psi gamma
-// chi_c0 -> psi ell ell
-//
-// Modification history:
-// AVL Jul 6, 2012: chi_c0 -> gamma psi mode created
-// AVL Oct 10, 2017: chi_c0 -> psi mu mu mode created
-// AVL Nov 9 2017: models joined
-//
-//------------------------------------------------------------------------
-
#ifndef EvtSVP_HH
#define EvtSVP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include <string>
class EvtParticle;
class EvtDecayBase;
+// Description: Routine to implement radiative decay
+// chi_c0 -> psi gamma
+// chi_c0 -> psi ell ell
+
class EvtSVP : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
private:
void decay_2body( EvtParticle* p );
void decay_3body( EvtParticle* p );
double delta; // form factor parameter
};
#endif
diff --git a/EvtGenModels/EvtSVPCP.hh b/EvtGenModels/EvtSVPCP.hh
index bbf4d7c..ec52acb 100644
--- a/EvtGenModels/EvtSVPCP.hh
+++ b/EvtGenModels/EvtSVPCP.hh
@@ -1,51 +1,33 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtSVPCP.cc
-//
-// Description: Routine to decay scalar -> vectors+photon
-// including CP violation effects
-//
-// Modification history:
-//
-// Maurizio pierini Nov 11, 2003 Module created
-//
-//------------------------------------------------------------------------
-//
-
#ifndef EVTSVPCP_HH
#define EVTSVPCP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
+// Description: Routine to decay scalar -> vectors+photon
+// including CP violation effects
+//
//Class to handle decays of the form SCALAR ->VECTOR PHOTON
//where the helicity amplitudes must be specified. The
//first and third arguements are the magnetudes of the H+
//and H- helicity amplitudes respectively. The second and
//fourth arguements are the phases.
//Calls EvtSVPHel.
class EvtSVPCP : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
static void SVPHel( EvtParticle* parent, EvtAmp& amp, EvtId n_v1,
EvtId n_v2, const EvtComplex& hp, const EvtComplex& hm );
std::string getParamName( int i ) override;
std::string getParamDefault( int i ) override;
};
#endif
diff --git a/EvtGenModels/EvtSVPHelAmp.hh b/EvtGenModels/EvtSVPHelAmp.hh
index 2012f78..b379030 100644
--- a/EvtGenModels/EvtSVPHelAmp.hh
+++ b/EvtGenModels/EvtSVPHelAmp.hh
@@ -1,53 +1,34 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSVPHelAmp.hh
-//
-// Description: Routine to decay scalar -> vector + photon
-// by specifying the helicity amplitudes
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-// Clara Remon (Clara.Remon@ific.uv.es) September 24, 2015 Function SVPHel created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSVPHELAMP_HH
#define EVTSVPHELAMP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
+// Description: Routine to decay scalar -> vector + photon
+// by specifying the helicity amplitudes
+//
//Class to handle decays of the form SCALAR -> VECTOR PHOTON
//where the helicity amplitudes must be specified. The
//first and third arguments are the magnitudes of the H+
//and H- helicity amplitudes respectively. The second and
//fourth arguements are the phases.
//Calls EvtSVPHel.
class EvtParticle;
class EvtAmp;
class EvtId;
class EvtSVPHelAmp : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
static void SVPHel( EvtParticle* parent, EvtAmp& amp, EvtId n_v1,
EvtId n_ph, const EvtComplex& hp, const EvtComplex& hm );
};
#endif
diff --git a/EvtGenModels/EvtSVPHelCPMix.hh b/EvtGenModels/EvtSVPHelCPMix.hh
index b56af6a..e315e69 100644
--- a/EvtGenModels/EvtSVPHelCPMix.hh
+++ b/EvtGenModels/EvtSVPHelCPMix.hh
@@ -1,42 +1,27 @@
-//--------------------------------------------------------------------------
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1999 Caltech, UCSB
-//
-// Module: EvtSVPHelCPMix.hh
-//
-// Description: The decay of a scalar Bs meson to a vector particle and a photon is
-// performed with CP violation and different widths for
-// the heavy and light states (DeltaGamma_s =! 0). E.g. Bs->phi gamma.
-//
-// Modification history:
-//
-// Clara Remon (Clara.Remon@ific.uv.es) September 24, 2015 Module EvtSVPHelCPMix created
-//
-//--------------------------------------------------------------------------
-//
#ifndef EVTSVPHELCPMIX_HH
#define EVTSVPHELCPMIX_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
+// Description: The decay of a scalar Bs meson to a vector particle and a photon is
+// performed with CP violation and different widths for
+// the heavy and light states (DeltaGamma_s =! 0). E.g. Bs->phi gamma.
+// Model input arguments:
+// |H+| arg|H+| |H-| arg|H-| beta_s
+// H+ and H- don't need to be normalized.
+// beta_s in radians.
+
class EvtSVPHelCPMix : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtSVS.hh b/EvtGenModels/EvtSVS.hh
index 4f04a64..1662d20 100644
--- a/EvtGenModels/EvtSVS.hh
+++ b/EvtGenModels/EvtSVS.hh
@@ -1,41 +1,21 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSVS.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSVS_HH
#define EVTSVS_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
//Class to handle decays of the form SCALAR->VECTOR SCALAR
//Calls EvtScalarToVectorScalar.
class EvtSVS : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
};
#endif
diff --git a/EvtGenModels/EvtSVSCP.hh b/EvtGenModels/EvtSVSCP.hh
index 5bf6eb6..b36afd4 100644
--- a/EvtGenModels/EvtSVSCP.hh
+++ b/EvtGenModels/EvtSVSCP.hh
@@ -1,41 +1,21 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSVSCP.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSVSCP_HH
#define EVTSVSCP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtSVSCP : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
std::string getParamName( int i ) override;
std::string getParamDefault( int i ) override;
};
#endif
diff --git a/EvtGenModels/EvtSVSCPLH.hh b/EvtGenModels/EvtSVSCPLH.hh
index 5a3351f..1c2fa4e 100644
--- a/EvtGenModels/EvtSVSCPLH.hh
+++ b/EvtGenModels/EvtSVSCPLH.hh
@@ -1,47 +1,31 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1999 Caltech, UCSB
-//
-// Module: EvtGen/EvtSVSCPLH.hh
-//
-// Description:
-//
-// Modification history:
-//
-// Ryd March 29, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSVSCPLH_HH
#define EVTSVSCPLH_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
+// Description: The decay of a scalar to a scalar and a vector particle are
+// performed with CP violation and different widths for
+// the cp even and odd states. E.g. B->J/psi K_S.
+
class EvtSVSCPLH : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
private:
EvtComplex _Af, _Abarf;
EvtComplex _qop, _poq;
double _dm;
double _dgamma;
};
#endif
diff --git a/EvtGenModels/EvtSVSCPiso.hh b/EvtGenModels/EvtSVSCPiso.hh
index a85390d..dad9770 100644
--- a/EvtGenModels/EvtSVSCPiso.hh
+++ b/EvtGenModels/EvtSVSCPiso.hh
@@ -1,39 +1,24 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSVSCPiso.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSVSCPISO_HH
#define EVTSVSCPISO_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
+// Description: Routine to decay scalar -> vectors scalar
+// with CP violation and isospin amplitudes.
+// More specifically, it is indended to handle
+// decays like B->rho pi and B->a1 pi.
+
class EvtSVSCPiso : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtSVSNONCPEIGEN.hh b/EvtGenModels/EvtSVSNONCPEIGEN.hh
index 93199eb..3e2f350 100644
--- a/EvtGenModels/EvtSVSNONCPEIGEN.hh
+++ b/EvtGenModels/EvtSVSNONCPEIGEN.hh
@@ -1,49 +1,29 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSVSNONCPEIGEN.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSVSNONCPEIGEN_HH
#define EVTSVSNONCPEIGEN_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtSVSNONCPEIGEN : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
private:
EvtComplex _A_f;
EvtComplex _Abar_f;
EvtComplex _A_fbar;
EvtComplex _Abar_fbar;
double _dm;
double _phickm;
};
#endif
diff --git a/EvtGenModels/EvtSVVCP.hh b/EvtGenModels/EvtSVVCP.hh
index 43d32e9..0758b38 100644
--- a/EvtGenModels/EvtSVVCP.hh
+++ b/EvtGenModels/EvtSVVCP.hh
@@ -1,42 +1,22 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSVVCP.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSVVCP_HH
#define EVTSVVCP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtSVVCP : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
std::string getParamName( int i ) override;
std::string getParamDefault( int i ) override;
};
#endif
diff --git a/EvtGenModels/EvtSVVCPLH.hh b/EvtGenModels/EvtSVVCPLH.hh
index a6e3ba0..e6bb8d6 100644
--- a/EvtGenModels/EvtSVVCPLH.hh
+++ b/EvtGenModels/EvtSVVCPLH.hh
@@ -1,41 +1,21 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1999 Caltech, UCSB
-//
-// Module: EvtGen/EvtSVVCPLH.hh
-//
-// Description:
-//
-// Modification history:
-//
-// RYD November 5, 1999 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSVVCPLH_HH
#define EVTSVVCPLH_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtSVVCPLH : public EvtDecayAmp {
public:
EvtSVVCPLH() {}
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtSVVHelAmp.hh b/EvtGenModels/EvtSVVHelAmp.hh
index b673c07..cc2461d 100644
--- a/EvtGenModels/EvtSVVHelAmp.hh
+++ b/EvtGenModels/EvtSVVHelAmp.hh
@@ -1,53 +1,33 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSVVHelAmp.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSVVHELAMP_HH
#define EVTSVVHELAMP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
//Class to handle decays of the form SCALAR -> VECTOR VECTOR
//according the the helicity amplitudes specified by the
//user. There are 6 arguements, orders as amplitude then
//phase for H+, H0, and H-, in that order.
class EvtAmp;
class EvtParticle;
class EvtId;
class EvtSVVHelAmp : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
static void SVVHel( EvtParticle* parent, EvtAmp& amp, EvtId n_v1,
EvtId n_v2, const EvtComplex& hp, const EvtComplex& h0,
const EvtComplex& hm );
std::string getParamName( int i ) override;
std::string getParamDefault( int i ) override;
};
#endif
diff --git a/EvtGenModels/EvtSVVHelCPMix.hh b/EvtGenModels/EvtSVVHelCPMix.hh
index dd9269e..cd9783b 100644
--- a/EvtGenModels/EvtSVVHelCPMix.hh
+++ b/EvtGenModels/EvtSVVHelCPMix.hh
@@ -1,62 +1,57 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSVVHelCPMix.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module (SVV_HELAMP) created
-// CATMORE March 2004 Amendments made t
-//------------------------------------------------------------------------
-
#ifndef EVTSVVHELCPMIX_HH
#define EVTSVVHELCPMIX_HH
#include "EvtGenBase/EvtDecayAmp.hh"
//Class to handle decays of the form SCALAR -> VECTOR VECTOR
//according the the helicity amplitudes specified by the
//user. There are 6 arguements, orders as amplitude then
//phase for H+, H0, and H-, in that order.
+//
+// Description: Routine to decay scalar -> 2 vectors
+// by specifying the helicity amplitudes, taking appropriate
+// weak phases into account to get mixing and CP violation through
+// interference. Based on EvtSVVHelAmp. Particularly appropriate for
+// Bs->J/Psi+Phi
+//
+// Model takes the following as user-specified arguments:
+// deltaM, averageM - mass diference and average of light and heavy mass eigenstates (real scalars)
+// gamma, deltagamma - average width and width difference of the l and h eigenstates (real scalars)
+// delta1, delta2 - strong phases (real scalars)
+// direct weak phase (real scalar) (for Bs->JPsiPhi this will be zero)
+// weak mixing phase (real scalar) (this is equal to 2*arg(Vts Vtb) for Bs->JPsiPhi)
+// Magnitudes of helicity amplitudes as in SVV_HELAMP
+// See Phys Rev D 34 p1404 - p1417 and chapters 5 and 7 of Physics Reports 370 p537-680 for more details
class EvtAmp;
class EvtParticle;
class EvtId;
class EvtSVVHelCPMix : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
EvtComplex hp;
EvtComplex h0;
EvtComplex hm;
double averageM;
double deltaM;
double gamma;
double deltagamma;
EvtComplex strongphase1;
EvtComplex strongphase2;
EvtComplex weakmixingphase;
EvtComplex weakdirectphase;
void initProbMax() override;
void decay( EvtParticle* p ) override;
std::string getParamName( int i ) override;
std::string getParamDefault( int i ) override;
};
#endif
diff --git a/EvtGenModels/EvtSVVNONCPEIGEN.hh b/EvtGenModels/EvtSVVNONCPEIGEN.hh
index 33deacf..7dab147 100644
--- a/EvtGenModels/EvtSVVNONCPEIGEN.hh
+++ b/EvtGenModels/EvtSVVNONCPEIGEN.hh
@@ -1,45 +1,62 @@
-//--------------------------------------------------------------------------
+#ifndef EVTSVVNONCPEIGEN_HH
+#define EVTSVVNONCPEIGEN_HH
+
+#include "EvtGenBase/EvtDecayAmp.hh"
+
+class EvtParticle;
+
+// Description: Routine to decay scalar -> vector vector
+// and has CP violation.
//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
+// This model does all the ckm-suppressed decays and mixing for you. It randomly 'overwrites'
+// any reco or tagging state as set in the Y(4S) decay model (VSS_(B)MIX) with its own generated states.
//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2001 Royal Holloway, University of London
+// As such, the corresponding dec file requires only one decay-mode description, for example:
+// Decay MyB0
+// 1.000 rho+ MyD*- SVV_NONCPEIGEN dm beta gamma 0.322 0.31 0.941 0 0.107 1.42 0.02 0 0.02 0 0.02 0 ;
+// EndDecay
+// and furthermore Y(4S) only needs to decay to B0's (or B0bar's).
+// The decay above should be a CKM-favored mode (eg. B0->D*-rho+ or B0bar->D*+rho-).
+// All ckm-suppressed decays and the mixing are derived from this line in the ::Decay function.
//
-// Module: EvtGen/EvtSVVNONCPEIGEN.hh
+// There are 15 or 27 arguments. The first three are dm, phase1
+// and phase2. dm is the B0-B0bar mass difference. Phases 1
+// and 2 are the CKM weak phases relevant for the particular mode,
+// eg for B-->DstRho phase1 is beta and phase2 is gamma.
//
-// Description: See EvtSVVNONCPEIGEN.cc
+// The next arguments are the 2 amplitudes (= 12 input parameters)
+// in the order: A_f, Abar_f. In the example above, the 'A_f' amplitude now
+// stands for the ckm-favored decay 'B0->D*-rho+', and 'Abar_f' stands for 'B0bar->D*-rho+'
//
-// Modification history:
+// Each amplitude has its 3 helicity states in the order +, 0, -, which are each
+// specified by a magnitude and a strong phase.
//
-// Ajit Kurup 9 March 2001 Module created (from EvtSVSNONCPEIGEN.hh)
+// The last 2 arguments A_fbar and Abar_fbar (=12 input parameters) are not necessary,
+// but can included if one wants to set them differently from A_f, Abar_f.
//
-//------------------------------------------------------------------------
-
-#ifndef EVTSVVNONCPEIGEN_HH
-#define EVTSVVNONCPEIGEN_HH
-
-#include "EvtGenBase/EvtDecayAmp.hh"
-
-class EvtParticle;
+// Mind you that Hbar_+- = H_-+ (ignoring the weak phase, which flips sign).
+// It is custumary to select one set of helicity states (eg H_+-) and to adopt these for
+// the CP-conjugate decays as well (ie. depict Hbar_-+ with H_+-), which is the interpretation
+// we use for the input-parameters above.
+// However, the angular decay in EvtGen is just a formula in which helicity amplitudes are 'plugged' in,
+// making no difference between B0 or B0bar decays. In the model below we (thus) account for the +-
+// flipping between B0 and B0bar.
class EvtSVVNONCPEIGEN : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
std::string getParamName( int i ) override;
std::string getParamDefault( int i ) override;
private:
EvtComplex _A_f[12];
};
#endif
diff --git a/EvtGenModels/EvtSingleParticle.hh b/EvtGenModels/EvtSingleParticle.hh
index 168f96d..b6caae6 100644
--- a/EvtGenModels/EvtSingleParticle.hh
+++ b/EvtGenModels/EvtSingleParticle.hh
@@ -1,44 +1,26 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSingleParticle.hh
-//
-// Description:
-//This is a special decay model to generate single particles.
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSINGLEPARTICLE_HH
#define EVTSINGLEPARTICLE_HH
#include "EvtGenBase/EvtDecayIncoherent.hh"
class EvtParticle;
+// Description:
+//This is a special decay model to generate single particles.
+
class EvtSingleParticle : public EvtDecayIncoherent {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
private:
double pmin, pmax;
double cthetamin, cthetamax;
double phimin, phimax;
};
#endif
diff --git a/EvtGenModels/EvtSll.hh b/EvtGenModels/EvtSll.hh
index 54efa53..d6834f2 100644
--- a/EvtGenModels/EvtSll.hh
+++ b/EvtGenModels/EvtSll.hh
@@ -1,40 +1,20 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtSll.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTSLL_HH
#define EVTSLL_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
//Class to handle decays of the form SCALAR -> DIRAC DIRAC.
class EvtSll : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtTSS.hh b/EvtGenModels/EvtTSS.hh
index 5b0f488..f8d0a63 100644
--- a/EvtGenModels/EvtTSS.hh
+++ b/EvtGenModels/EvtTSS.hh
@@ -1,41 +1,21 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtTSS.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTTSS_HH
#define EVTTSS_HH
#include "EvtGenBase/EvtDecayAmp.hh"
//Class to handle decays of the form TENSOR -> SCALAR SCALAR.
//Calls EvtTensorToScalarScalar
class EvtParticle;
class EvtTSS : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void decay( EvtParticle* p ) override;
void initProbMax() override;
};
#endif
diff --git a/EvtGenModels/EvtTVP.hh b/EvtGenModels/EvtTVP.hh
index ac886a3..1d0c8b2 100644
--- a/EvtGenModels/EvtTVP.hh
+++ b/EvtGenModels/EvtTVP.hh
@@ -1,52 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtTVP.hh
-//
-// Description: Routine to implement radiative decay
-// chi_c2 -> psi gamma
-// chi_c2 -> psi ell ell
-//
-//
-// Modification history:
-// AVL Jul 6, 2012: chi_c2 -> gamma psi mode created
-// AVL Oct 10, 2017: chi_c2 -> psi mu mu mode created
-// AVL Nov 9 2017: models joined
-//
-//------------------------------------------------------------------------
-//
-
#ifndef EvtTVP_HH
#define EvtTVP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include <string>
class EvtDecayBase;
class EvtParticle;
+// Description: Routine to implement radiative decay
+// chi_c2 -> psi gamma
+// chi_c2 -> psi ell ell
+// matrix element from [S.P Baranov et al, PRD 85, 014034 (2012)]
+
class EvtTVP : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
private:
void decay_2body( EvtParticle* p );
void decay_3body( EvtParticle* p );
double delta; // form factor parameter
};
#endif
diff --git a/EvtGenModels/EvtTVSPwave.hh b/EvtGenModels/EvtTVSPwave.hh
index b4d7454..ed16277 100644
--- a/EvtGenModels/EvtTVSPwave.hh
+++ b/EvtGenModels/EvtTVSPwave.hh
@@ -1,46 +1,26 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtTVSPwave.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTTVSPWAVE_HH
#define EVTTVSPWAVE_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
//Class to handles decays of the form TENSOR -> VECTOR SCALAR,
//which proceed via S,P, or D partial waves. There are
//six arguements, which are the magnetude and phase of
//each partial wave (S, P then D). Calls EvtTensorToVectorScalar
class EvtTVSPwave : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
std::string getParamName( int i ) override;
std::string getParamDefault( int i ) override;
};
#endif
diff --git a/EvtGenModels/EvtTauHadnu.hh b/EvtGenModels/EvtTauHadnu.hh
index f269701..113a831 100644
--- a/EvtGenModels/EvtTauHadnu.hh
+++ b/EvtGenModels/EvtTauHadnu.hh
@@ -1,53 +1,33 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtTauHadnu.hh
-//
-// Description:
-//
-// Modification history:
-//
-// Lange Oct 26, 2002 Created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTTAUHADNUKS_HH
#define EVTTAUHADNUKS_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtTauHadnu : public EvtDecayAmp {
public:
EvtTauHadnu() {}
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
private:
double _beta;
double _mRho;
double _gammaRho;
double _mRhopr;
double _gammaRhopr;
double _mA1;
double _gammaA1;
double gFunc( double m2, int dupD );
EvtComplex Fpi( double s, double xm1, double xm2 );
EvtComplex BW( double s, double m, double gamma, double xm1, double xm2 );
};
#endif
diff --git a/EvtGenModels/EvtTauScalarnu.hh b/EvtGenModels/EvtTauScalarnu.hh
index 5b4b474..bc67806 100644
--- a/EvtGenModels/EvtTauScalarnu.hh
+++ b/EvtGenModels/EvtTauScalarnu.hh
@@ -1,38 +1,18 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtTauScalarnu.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTTAUSCALARNU_HH
#define EVTTAUSCALARNU_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtTauScalarnu : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtTauVectornu.hh b/EvtGenModels/EvtTauVectornu.hh
index 674ee39..55ca3b6 100644
--- a/EvtGenModels/EvtTauVectornu.hh
+++ b/EvtGenModels/EvtTauVectornu.hh
@@ -1,40 +1,20 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtTauVectornu.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTTAUVECTORNU_HH
#define EVTTAUVECTORNU_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtTauVectornu : public EvtDecayAmp {
public:
EvtTauVectornu() {}
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
};
#endif
diff --git a/EvtGenModels/EvtTaulnunu.hh b/EvtGenModels/EvtTaulnunu.hh
index f77498c..b12568b 100644
--- a/EvtGenModels/EvtTaulnunu.hh
+++ b/EvtGenModels/EvtTaulnunu.hh
@@ -1,38 +1,18 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtTaulnunu.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTTAULNUNU_HH
#define EVTTAULNUNU_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtTaulnunu : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtVPHOtoV.hh b/EvtGenModels/EvtVPHOtoV.hh
index 10c3776..21cec97 100644
--- a/EvtGenModels/EvtVPHOtoV.hh
+++ b/EvtGenModels/EvtVPHOtoV.hh
@@ -1,38 +1,18 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2004 Cornell
-//
-// Module: EvtGen/EvtVPHOtoV.hh
-//
-// Description:
-//
-// Modification history:
-//
-// Ryd March 9, 2004 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVPHOTOV_HH
#define EVTVPHOTOV_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtVPHOtoV : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
};
#endif
diff --git a/EvtGenModels/EvtVPHOtoVISR.hh b/EvtGenModels/EvtVPHOtoVISR.hh
index 0e31688..d0f2b77 100644
--- a/EvtGenModels/EvtVPHOtoVISR.hh
+++ b/EvtGenModels/EvtVPHOtoVISR.hh
@@ -1,38 +1,18 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2004 Cornell
-//
-// Module: EvtGen/EvtVPHOtoVISR.hh
-//
-// Description:
-//
-// Modification history:
-//
-// Ryd March 20, 2004 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVPHOTOVISR_HH
#define EVTVPHOTOVISR_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtVPHOtoVISR : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
};
#endif
diff --git a/EvtGenModels/EvtVPHOtoVISRHi.hh b/EvtGenModels/EvtVPHOtoVISRHi.hh
index af5a65a..d8a133f 100644
--- a/EvtGenModels/EvtVPHOtoVISRHi.hh
+++ b/EvtGenModels/EvtVPHOtoVISRHi.hh
@@ -1,40 +1,20 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2004 Cornell
-//
-// Module: EvtGen/EvtVPHOtoVISRHi.hh
-//
-// Description:
-//
-// Modification history:
-//
-// Ryd March 20, 2004 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVPHOTOVISRHI_HH
#define EVTVPHOTOVISRHI_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include <string>
class EvtParticle;
class EvtVPHOtoVISRHi : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
};
#endif
diff --git a/EvtGenModels/EvtVSPPwave.hh b/EvtGenModels/EvtVSPPwave.hh
index 8ad3fc5..f20126e 100644
--- a/EvtGenModels/EvtVSPPwave.hh
+++ b/EvtGenModels/EvtVSPPwave.hh
@@ -1,38 +1,18 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVSPPwave.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVSPPWAVE_HH
#define EVTVSPPWAVE_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtVSPPwave : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
};
#endif
diff --git a/EvtGenModels/EvtVSS.hh b/EvtGenModels/EvtVSS.hh
index 2676043..4a13dd9 100644
--- a/EvtGenModels/EvtVSS.hh
+++ b/EvtGenModels/EvtVSS.hh
@@ -1,38 +1,18 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVSS.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVSS_HH
#define EVTVSS_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtVSS : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
};
#endif
diff --git a/EvtGenModels/EvtVSSBMixCPT.hh b/EvtGenModels/EvtVSSBMixCPT.hh
index 87a6d5a..9c40b46 100644
--- a/EvtGenModels/EvtVSSBMixCPT.hh
+++ b/EvtGenModels/EvtVSSBMixCPT.hh
@@ -1,61 +1,43 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2002 INFN-Pisa
-//
-// Module: EvtGen/EvtVSSBMixCPT.hh
-//
-// Description:
-// Routine to decay vector-> scalar scalar with coherent BB-like mixing
-// including CPT effects
-// Based on VSSBMIX
-//
-// Modification history:
-//
-// F. Sandrelli, Fernando M-V March 03, 2002
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVSSBMIXCPT_HH
#define EVTVSSBMIXCPT_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtParticle.hh"
+// Description:
+// Routine to decay vector-> scalar scalar with coherent BB-like mixing
+// including CPT effects
+// Based on VSSBMIX
+
class EvtVSSBMixCPT : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
int nRealDaughters() override { return 2; }
std::string getParamName( int i ) override;
std::string getParamDefault( int i ) override;
private:
double _freq; // mixing frequency in hbar/mm
double _dGamma;
EvtComplex _qoverp;
EvtComplex _poverq;
EvtComplex _z;
double _chib0_b0bar;
double _chib0bar_b0;
EvtComplex _A_f;
EvtComplex _Abar_f;
EvtComplex _A_fbar;
EvtComplex _Abar_fbar;
};
#endif
diff --git a/EvtGenModels/EvtVSSMix.hh b/EvtGenModels/EvtVSSMix.hh
index d2fcdae..30ca9f7 100644
--- a/EvtGenModels/EvtVSSMix.hh
+++ b/EvtGenModels/EvtVSSMix.hh
@@ -1,42 +1,22 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVSSMix.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVSSMIX_HH
#define EVTVSSMIX_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtVSSMix : public EvtDecayAmp {
public:
EvtVSSMix() {}
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
std::string getParamName( int i ) override;
};
#endif
diff --git a/EvtGenModels/EvtVVP.hh b/EvtGenModels/EvtVVP.hh
index 8218580..16837ed 100644
--- a/EvtGenModels/EvtVVP.hh
+++ b/EvtGenModels/EvtVVP.hh
@@ -1,53 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVVP.hh
-//
-// Description: Routine to implement radiative decay
-// chi_c1 -> psi gamma
-// chi_c1 -> psi ell ell
-//
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-// AVL Oct 10, 2017: chi_c0 -> psi mu mu mode created
-// AVL Nov 9 2017: models joined
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVVP_HH
#define EVTVVP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include <string>
class EvtParticle;
class EvtDecayBase;
+// Description: Routine to implement radiative decay
+// chi_c1 -> psi gamma
+// chi_c1 -> psi ell ell
+
class EvtVVP : public EvtDecayAmp {
public:
EvtVVP() {}
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
private:
void decay_2body( EvtParticle* p );
void decay_3body( EvtParticle* p );
double delta; // form factor parameter
};
#endif
diff --git a/EvtGenModels/EvtVVPIPI_WEIGHTED.hh b/EvtGenModels/EvtVVPIPI_WEIGHTED.hh
index 47e8eb8..c379b47 100644
--- a/EvtGenModels/EvtVVPIPI_WEIGHTED.hh
+++ b/EvtGenModels/EvtVVPIPI_WEIGHTED.hh
@@ -1,41 +1,23 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVVpipi.hh
-//
-// Description: For decays of a vector to a vector and 2 pions,
-// the decay is assumed to be dominated by S-wave.
-//
-// Modification history:
-//
-// Jim Hunt June 4, 2008 Module Created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVVPIPI_WEIGHTED_HH
#define EVTVVPIPI_WEIGHTED_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include <string>
class EvtParticle;
+// Description: For decays of a vector to a vector and 2 pions,
+// the decay is assumed to be dominated by S-wave.
+
class EvtVVPIPI_WEIGHTED : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
};
#endif
diff --git a/EvtGenModels/EvtVVSPwave.hh b/EvtGenModels/EvtVVSPwave.hh
index cdf310f..077c1b5 100644
--- a/EvtGenModels/EvtVVSPwave.hh
+++ b/EvtGenModels/EvtVVSPwave.hh
@@ -1,40 +1,20 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVVSPwave.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVVSPWAVE_HH
#define EVTVVSPWAVE_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtVVSPwave : public EvtDecayAmp {
public:
EvtVVSPwave() {}
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
};
#endif
diff --git a/EvtGenModels/EvtVVpipi.hh b/EvtGenModels/EvtVVpipi.hh
index e8709e0..ae483ad 100644
--- a/EvtGenModels/EvtVVpipi.hh
+++ b/EvtGenModels/EvtVVpipi.hh
@@ -1,39 +1,21 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVVpipi.hh
-//
-// Description: For decays of a vector to a vector and 2 pions,
-// the decay is assumed to be dominated by S-wave.
-//
-// Modification history:
-//
-// RYD/CAHN December 10, 1999 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVVPIPI_HH
#define EVTVVPIPI_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
+// Description: For decays of a vector to a vector and 2 pions,
+// the decay is assumed to be dominated by S-wave.
+
class EvtVVpipi : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
};
#endif
diff --git a/EvtGenModels/EvtVectorIsr.hh b/EvtGenModels/EvtVectorIsr.hh
index 03d56ce..965b299 100644
--- a/EvtGenModels/EvtVectorIsr.hh
+++ b/EvtGenModels/EvtVectorIsr.hh
@@ -1,56 +1,36 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVectorIsr2.hh
-//
-// Description:
-// This is a special decay model to generate e+e- -> phi gamma + soft gammas
-// using soft collinear ISR calculation from AfkQed
-// This is implemented as a decay of the VPHO.
-//
-// Modification history:
-//
-// Joe Izen Oct, 2005 Soft Colinear Photons (secondary ISR) ported from AfkQed
-// Joe Izen Dec 16, 2002 Fix cos_theta distribution - prevents boom at cos_theta=+/-1
-// RYD/Adriano June 16, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVECTORISR_HH
#define EVTVECTORISR_HH
#include "EvtGenBase/EvtDecayIncoherent.hh"
class EvtParticle;
+// Description:
+// This is a special decay model to generate e+e- -> phi gamma + soft gammas
+// using soft collinear ISR calculation from AfkQed
+// This is implemented as a decay of the VPHO.
+
class EvtVectorIsr : public EvtDecayIncoherent {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
double ckhrad1( double xx, double a, double b );
void ckhrad( const double& e_beam, const double& q2_min, double& e01,
double& e02, double& f );
private:
double csfrmn, csbkmn;
double fmax;
bool firstorder;
};
#endif
diff --git a/EvtGenModels/EvtVll.hh b/EvtGenModels/EvtVll.hh
index 6c4f638..8ce2cbd 100644
--- a/EvtGenModels/EvtVll.hh
+++ b/EvtGenModels/EvtVll.hh
@@ -1,38 +1,18 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVll.hh
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVLL_HH
#define EVTVLL_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtVll : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtVtoSll.hh b/EvtGenModels/EvtVtoSll.hh
index ae5d8c4..d3dbb7d 100644
--- a/EvtGenModels/EvtVtoSll.hh
+++ b/EvtGenModels/EvtVtoSll.hh
@@ -1,38 +1,18 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVtoSll.hh
-//
-// Description:
-//
-// Modification history:
-//
-// RYD Feb. 28, 2009 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVTOSLL_HH
#define EVTVTOSLL_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtVtoSll : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
};
#endif
diff --git a/EvtGenModels/EvtVub.hh b/EvtGenModels/EvtVub.hh
index a77dec8..bb35573 100644
--- a/EvtGenModels/EvtVub.hh
+++ b/EvtGenModels/EvtVub.hh
@@ -1,62 +1,44 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVub.hh
-//
-// Description:
-// Class to generate inclusive B to X_u l nu decays according to various
-// decay models. Implemtented are ACCM, parton-model and a QCD model.
-//
-// Modification history:
-//
-// Sven Menke January 17, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVUB_HH
#define EVTVUB_HH
#include "EvtGenBase/EvtDecayIncoherent.hh"
#include "EvtGenModels/EvtVubdGamma.hh"
#include <memory>
#include <vector>
class EvtParticle;
+// Description:
+// Class to generate inclusive B to X_u l nu decays according to various
+// decay models. Implemtented are ACCM, parton-model and a QCD model.
+
class EvtVub : public EvtDecayIncoherent {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
private:
double _mb; // the b-quark pole mass in GeV (try 4.65 to 4.9)
double _a; // Parameter for the Fermi Motion (1.29 is good)
double _alphas; // Strong Coupling at m_b (around 0.24)
double _dGMax; // max dGamma*p2 value;
int _nbins;
int _storeQplus;
std::vector<double> _masses;
std::vector<double> _weights;
std::unique_ptr<EvtVubdGamma> _dGamma; // calculates the decay rate
double findPFermi();
std::vector<double> _pf;
};
#endif
diff --git a/EvtGenModels/EvtVubAC.hh b/EvtGenModels/EvtVubAC.hh
index 0e023f9..2701c84 100644
--- a/EvtGenModels/EvtVubAC.hh
+++ b/EvtGenModels/EvtVubAC.hh
@@ -1,65 +1,61 @@
-//////////////////////////////////////////////////////////////////////
-//
-// Module: EvtVubAC.hh
-//
-//////////////////////////////////////////////////////////////////
-
#ifndef EVTVUBAC_HH
#define EVTVUBAC_HH
#include "EvtGenBase/EvtDecayIncoherent.hh"
#include <vector>
class EvtParticle;
+// Analytic Coupling Model (based on hep-ph/0608047 by Aglietti, Ferrera and Ricciardi)
+
class EvtVubAC : public EvtDecayIncoherent {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* Bmeson ) override;
private:
// Input parameters
double mB;
double alphaSmZ;
double alphaSmB;
double c;
double q;
double k;
double CF;
double CA;
double beta0;
std::vector<double> gvars;
double rate( double u, double w, double xb );
double wreg( double w );
double alphaS( double Q );
double PolyLog( double v, double z );
double ureg( double u );
double ularge( double u );
double Coeff( double u, double w, double xb );
double Coeff1( double w, double xb );
double Coeff0( double w, double xb );
double Sigma( double x1, double x2 );
double max( double ub, double lb );
double d1( double u, double w, double xb );
double d( double u, double w, double xb );
double f( double w );
double Lambda2( double x, double alphaSmZ );
int Bisect( double x1, double x2, double precision, double& root,
const double alphaSmZ );
double FindRoot( const double alphaSmZ );
};
#endif
diff --git a/EvtGenModels/EvtVubBLNP.hh b/EvtGenModels/EvtVubBLNP.hh
index 03bee3a..f1ccf5e 100644
--- a/EvtGenModels/EvtVubBLNP.hh
+++ b/EvtGenModels/EvtVubBLNP.hh
@@ -1,139 +1,130 @@
-
-//////////////////////////////////////////////////////////////////////
-//
-// Module: EvtVubBLNP.hh
-//
-// Description: Modeled on Riccardo Faccini's EvtVubNLO module
-// author: sheila date: October 2005
-//
-// tripleDiff from BLNP's notebook, based on hep-ph/0504071
-//
-//////////////////////////////////////////////////////////////////
-
#ifndef EVTVUBBLNP_HH
#define EVTVUBBLNP_HH
#include "EvtGenBase/EvtDecayIncoherent.hh"
#include <vector>
class EvtParticle;
+// Description: Modeled on Riccardo Faccini's EvtVubNLO module
+// tripleDiff from BLNP's notebook (based on BLNP4, hep-ph/0504071)
+
class EvtVubBLNP : public EvtDecayIncoherent {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* Bmeson ) override;
private:
// Input parameters
double mBB;
double lambda2;
// Shape function parameters
double b;
double Lambda;
double Ecut;
double wzero;
// SF and SSF modes
int itype;
double dtype;
int isubl;
// flags
int flag1;
int flag2;
int flag3;
// Quark mass
double mb;
// Matching scales
double muh;
double mui;
double mubar;
// Perturbative quantities
double CF;
double CA;
double beta0;
double beta1;
double beta2;
double zeta3;
double Gamma0;
double Gamma1;
double Gamma2;
double gp0;
double gp1;
double Lbar;
double mupisq;
double moment2;
int flagpower;
int flag2loop;
int maxLoop;
double precision;
std::vector<double> gvars;
double rate3( double Pp, double Pl, double Pm );
double F1( double Pp, double Pm, double muh, double mui, double mubar,
double doneJS, double done1 );
double F2( double Pp, double Pm, double muh, double mui, double mubar,
double done3 );
double F3( double Pp, double Pm, double muh, double mui, double mubar,
double done2 );
double DoneJS( double Pp, double Pm, double mui );
double Done1( double Pp, double Pm, double mui );
double Done2( double Pp, double Pm, double mui );
double Done3( double Pp, double Pm, double mui );
static double IntJS( double what, const std::vector<double>& vars );
static double Int1( double what, const std::vector<double>& vars );
static double Int2( double what, const std::vector<double>& vars );
static double Int3( double what, const std::vector<double>& vars );
static double g1( double w, const std::vector<double>& vars );
static double g2( double w, const std::vector<double>& vars );
static double g3( double w, const std::vector<double>& vars );
static double Shat( double w, const std::vector<double>& vars );
static double Mzero( double muf, double mu, double mupisq,
const std::vector<double>& vars );
double wS( double w );
double t( double w );
double u( double w );
double v( double w );
double myfunction( double w, double Lbar, double mom2 );
double myfunctionBIK( double w, double Lbar, double mom2 );
double dU1nlo( double muh, double mui );
double U1lo( double muh, double mui );
double Sfun( double mu1, double mu2, double epsilon );
double S0( double a1, double r );
double S1( double a1, double r );
double S2( double a1, double r );
double aGamma( double mu1, double mu2, double epsilon );
double agp( double mu1, double mu2, double epsilon );
double alo( double muh, double mui );
double anlo( double muh, double mui ); // d/depsilon of aGamma
static double alphas( double mu, const std::vector<double>& vars );
double PolyLog( double v, double z );
static double Gamma( double z );
static double Gamma( double a, double x );
static double gamser( double a, double x, double LogGamma );
static double gammcf( double a, double x, double LogGamma );
double findBLNPWhat();
std::vector<double> _pf;
};
#endif
diff --git a/EvtGenModels/EvtVubBLNPHybrid.hh b/EvtGenModels/EvtVubBLNPHybrid.hh
index 997abec..e11945b 100644
--- a/EvtGenModels/EvtVubBLNPHybrid.hh
+++ b/EvtGenModels/EvtVubBLNPHybrid.hh
@@ -1,170 +1,161 @@
+#ifndef EVTVUBBLNPHYBRID_HH
+#define EVTVUBBLNPHYBRID_HH
+
+#include "EvtGenBase/EvtDecayIncoherent.hh"
+
+#include <vector>
+
+class EvtParticle;
-//////////////////////////////////////////////////////////////////////
-//
-// Module: EvtVubBLNPHybrid.hh
-//
-//
// tripleDiff from BLNPHybrid's notebook, based on hep-ph/0504071
//
// Description:
// Class to generate inclusive B to X_u l nu decays.
// This class is based on EvtVubBLNP by Sheila Mclachlin with an update to
// generate the inclusive decays in such a way that the right
// mix of inclusive and exclusive decays is obtained.
//
//NOTE:
// - A set of weights (for bins in the kinematic variables mX, q2, El)
// is read from DECAY.DEC. This set of weights must be consistent
// with the other parameters specified (excl. BF, non-res BF, mb, a).
// - If no binning/weights are specified in DECAY.DEC the hybrid
// reweighting is not activated
-//
-//
-//////////////////////////////////////////////////////////////////
-
-#ifndef EVTVUBBLNPHYBRID_HH
-#define EVTVUBBLNPHYBRID_HH
-
-#include "EvtGenBase/EvtDecayIncoherent.hh"
-
-#include <vector>
-
-class EvtParticle;
class EvtVubBLNPHybrid : public EvtDecayIncoherent {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* Bmeson ) override;
void readWeights( int startArg = 0 );
double getWeight( double mX, double q2, double El );
private:
//Input for hybrid modell
enum
{
nParameters = 10,
nVariables = 3
};
bool _noHybrid = false;
bool _storeWhat = true;
int _nbins = 0;
double _masscut = 0.28;
std::vector<double> _bins_mX;
std::vector<double> _bins_q2;
std::vector<double> _bins_El;
std::vector<double> _weights;
// Input parameters
double mBB;
double lambda2;
// Shape function parameters
double b;
double Lambda;
double Ecut;
double wzero;
// SF and SSF modes
int itype;
double dtype;
int isubl;
// flags
int flag1;
int flag2;
int flag3;
// Quark mass
double mb;
// Matching scales
double muh;
double mui;
double mubar;
// Perturbative quantities
double CF;
double CA;
double beta0;
double beta1;
double beta2;
double zeta3;
double Gamma0;
double Gamma1;
double Gamma2;
double gp0;
double gp1;
double Lbar;
double mupisq;
double moment2;
int flagpower;
int flag2loop;
int maxLoop;
double precision;
std::vector<double> gvars;
double rate3( double Pp, double Pl, double Pm );
double F1( double Pp, double Pm, double muh, double mui, double mubar,
double doneJS, double done1 );
double F2( double Pp, double Pm, double muh, double mui, double mubar,
double done3 );
double F3( double Pp, double Pm, double muh, double mui, double mubar,
double done2 );
double DoneJS( double Pp, double Pm, double mui );
double Done1( double Pp, double Pm, double mui );
double Done2( double Pp, double Pm, double mui );
double Done3( double Pp, double Pm, double mui );
static double IntJS( double what, const std::vector<double>& vars );
static double Int1( double what, const std::vector<double>& vars );
static double Int2( double what, const std::vector<double>& vars );
static double Int3( double what, const std::vector<double>& vars );
static double g1( double w, const std::vector<double>& vars );
static double g2( double w, const std::vector<double>& vars );
static double g3( double w, const std::vector<double>& vars );
static double Shat( double w, const std::vector<double>& vars );
static double Mzero( double muf, double mu, double mupisq,
const std::vector<double>& vars );
double wS( double w );
double t( double w );
double u( double w );
double v( double w );
double myfunction( double w, double Lbar, double mom2 );
double myfunctionBIK( double w, double Lbar, double mom2 );
double dU1nlo( double muh, double mui );
double U1lo( double muh, double mui );
double Sfun( double mu1, double mu2, double epsilon );
double S0( double a1, double r );
double S1( double a1, double r );
double S2( double a1, double r );
double aGamma( double mu1, double mu2, double epsilon );
double agp( double mu1, double mu2, double epsilon );
double alo( double muh, double mui );
double anlo( double muh, double mui ); // d/depsilon of aGamma
static double alphas( double mu, const std::vector<double>& vars );
double PolyLog( double v, double z );
static double Gamma( double z );
static double Gamma( double a, double x );
static double gamser( double a, double x, double LogGamma );
static double gammcf( double a, double x, double LogGamma );
double findBLNPWhat();
std::vector<double> _pf;
};
#endif
diff --git a/EvtGenModels/EvtVubHybrid.hh b/EvtGenModels/EvtVubHybrid.hh
index cfa8c74..b642976 100644
--- a/EvtGenModels/EvtVubHybrid.hh
+++ b/EvtGenModels/EvtVubHybrid.hh
@@ -1,90 +1,71 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVubHybrid.hh
-//
-// Description:
-// Class to generate inclusive B to X_u l nu decays.
-// This class is based on EvtVub by Sven Menke with an update to
-// generate the inclusive decays in such a way that the right
-// mix of inclusive and exclusive decays is obtained:
-// "Hybrid Model" by Dominique Fortin.
-// NOTE:
-// - A set of weights (for bins in the kinematic variables mX, q2, El)
-// is read from DECAY.DEC. This set of weights must be consistent
-// with the other parameters specified (excl. BF, non-res BF, mb, a).
-// - If no binning/weights are specified in DECAY.DEC the hybrid
-// reweighting is not activated
-//
-// Modification history:
-//
-// Jochen Dingfelder February 1, 2005 Created Module as update of
-// the module EvtVub including
-// hybrid model.
-//------------------------------------------------------------------------
-
#ifndef EVTVUBHYBRID_HH
#define EVTVUBHYBRID_HH
#include "EvtGenBase/EvtDecayIncoherent.hh"
#include "EvtGenModels/EvtVubdGamma.hh"
#include <memory>
#include <vector>
class EvtParticle;
class RandGeneral;
+// Description:
+// Class to generate inclusive B to X_u l nu decays.
+// This class is based on EvtVub by Sven Menke with an update to
+// generate the inclusive decays in such a way that the right
+// mix of inclusive and exclusive decays is obtained:
+// "Hybrid Model" by Dominique Fortin.
+// NOTE:
+// - A set of weights (for bins in the kinematic variables mX, q2, El)
+// is read from DECAY.DEC. This set of weights must be consistent
+// with the other parameters specified (excl. BF, non-res BF, mb, a).
+// - If no binning/weights are specified in DECAY.DEC the hybrid
+// reweighting is not activated
+
class EvtVubHybrid : public EvtDecayIncoherent {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
void readWeights( int startArg = 0 );
double getWeight( double mX, double q2, double El );
private:
double findPFermi();
enum
{
nParameters = 3,
nVariables = 3
};
bool _noHybrid =
false; // _noHybrid will be set TRUE if the DECAY.DEC file has no binning or weights
bool _storeQplus =
true; // _storeQplus should alwasy be TRUE: writes out Fermi motion parameter
double _mb = 4.62; // the b-quark pole mass in GeV (try 4.65 to 4.9)
double _a = 2.27; // Parameter for the Fermi Motion (1.29 is good)
double _alphas = 0.22; // Strong Coupling at m_b (around 0.24)
double _dGMax = 3.; // max dGamma*p2 value;
int _nbins = 0;
double _masscut = 0.28;
std::vector<double> _bins_mX;
std::vector<double> _bins_q2;
std::vector<double> _bins_El;
std::vector<double> _weights;
std::unique_ptr<EvtVubdGamma> _dGamma; // calculates the decay rate
std::vector<double> _pf;
};
#endif
diff --git a/EvtGenModels/EvtVubNLO.hh b/EvtGenModels/EvtVubNLO.hh
index 97a2576..a6157ca 100644
--- a/EvtGenModels/EvtVubNLO.hh
+++ b/EvtGenModels/EvtVubNLO.hh
@@ -1,231 +1,215 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVubNLO.hh
-//
-// Description:
-// Class to generate inclusive B to X_u l nu decays according to various
-// decay models. Implemtented are ACCM, parton-model and a QCD model.
-//
-// Modification history:
-//
-// Sven Menke January 17, 2001 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTVUBNLO_HH
#define EVTVUBNLO_HH
#include "EvtGenBase/EvtDecayIncoherent.hh"
#include <vector>
class EvtParticle;
class RandGeneral;
+// Description:
+// Class to generate inclusive B to X_u l nu decays according to various
+// decay models. Implemtented are ACCM, parton-model and a QCD model.
+// Description: Routine to decay B->Xulnu according to Bosch, Lange, Neubert, and Paz hep-ph/0402094
+// Equation numbers refer to this paper
+
class EvtVubNLO : public EvtDecayIncoherent {
public:
EvtVubNLO() = default;
~EvtVubNLO();
std::string getName() override;
EvtDecayBase* clone() override;
void initProbMax() override;
void init() override;
void decay( EvtParticle* p ) override;
private:
// cache
double _lbar;
double _mupi2;
double _mb; // the b-quark pole mass in GeV
double _mB;
double _lambdaSF;
double _b; // Parameter for the Fermi Motion
double _kpar;
double _mui; // renormalization scale (preferred value=1.5 GeV)
double _SFNorm; // SF normalization
double _dGMax; // max dGamma*p2 value;
int _idSF; // which shape function?
std::vector<double> _masses;
std::vector<double> _weights;
double _gmax;
int _ngood, _ntot;
double tripleDiff( double pp, double pl, double pm );
double SFNorm( const std::vector<double>& coeffs );
static double integrand( double omega, const std::vector<double>& coeffs );
double F10( const std::vector<double>& coeffs );
static double F1Int( double omega, const std::vector<double>& coeffs );
double F20( const std::vector<double>& coeffs );
static double F2Int( double omega, const std::vector<double>& coeffs );
double F30( const std::vector<double>& coeffs );
static double F3Int( double omega, const std::vector<double>& coeffs );
static double g1( double y, double z );
static double g2( double y, double z );
static double g3( double y, double z );
static double Gamma( double z ); // Euler Gamma Function
static double dgamma( double t, const std::vector<double>& c )
{
return pow( t, c[0] - 1 ) * exp( -t );
}
static double Gamma( double z, double tmax );
// theory parameters
inline double mu_i() { return _mui; } // intermediate scale
inline double mu_bar() { return _mui; }
inline double mu_h() { return _mb / sqrt( 2.0 ); } // high scale
inline double lambda1() { return -_mupi2; }
// expansion coefficients for RGE
static double beta0( int nf = 4 ) { return 11. - 2. / 3. * nf; }
static double beta1( int nf = 4 ) { return 34. * 3. - 38. / 3. * nf; }
static double beta2( int nf = 4 )
{
return 1428.5 - 5033. / 18. * nf + 325. / 54. * nf * nf;
}
static double gamma0() { return 16. / 3.; }
static double gamma1( int nf = 4 )
{
return 4. / 3. * ( 49.85498 - 40. / 9. * nf );
}
static double gamma2( int nf = 4 )
{
return 64. / 3. * ( 55.07242 - 8.58691 * nf - nf * nf / 27. );
} /* zeta3=1.20206 */
static double gammap0() { return -20. / 3.; }
static double gammap1( int nf = 4 )
{
return -32. / 3. * ( 6.92653 - 0.9899 * nf );
} /* ?? zeta3=1.202 */
// running constants
static double alphas( double mu );
static double C_F( double mu )
{
return ( 4.0 / 3.0 ) * alphas( mu ) / 4. / EvtConst::pi;
}
// Shape Functions
inline double lambda_SF() { return _lambdaSF; }
double lambda_bar( double omega0 );
inline double lambda2() { return 0.12; }
double mu_pi2( double omega0 );
inline double lambda( double ) { return _mB - _mb; }
// specail for gaussian SF
static double cGaus( double b )
{
return pow( Gamma( 1 + b / 2. ) / Gamma( ( 1 + b ) / 2. ), 2 );
}
double M0( double mui, double omega0 );
static double shapeFunction( double omega, const std::vector<double>& coeffs );
static double expShapeFunction( double omega,
const std::vector<double>& coeffs );
static double gausShapeFunction( double omega,
const std::vector<double>& coeffs );
// SSF (not yet implemented)
double subS( const std::vector<double>& coeffs );
double subT( const std::vector<double>& coeffs );
double subU( const std::vector<double>& coeffs );
double subV( const std::vector<double>& coeffs );
// Sudakov
inline double S0( double a, double r )
{
return -gamma0() / 4 / a / pow( beta0(), 2 ) * ( 1 / r - 1 + log( r ) );
}
inline double S1( double /*a*/, double r )
{
return gamma0() / 4. / pow( beta0(), 2 ) *
( pow( log( r ), 2 ) * beta1() / 2. / beta0() +
( gamma1() / gamma0() - beta1() / beta0() ) *
( 1. - r + log( r ) ) );
}
inline double S2( double a, double r )
{
return gamma0() * a / 4. / pow( beta0(), 2 ) *
( -0.5 * pow( ( 1 - r ), 2 ) *
( pow( beta1() / beta0(), 2 ) - beta2() / beta0() -
beta1() / beta0() * gamma1() / gamma0() +
gamma2() / gamma0() ) +
( pow( beta1() / beta0(), 2 ) - beta2() / beta0() ) *
( 1 - r ) * log( r ) +
( beta1() / beta0() * gamma1() / gamma0() - beta2() / beta0() ) *
( 1 - r + r * log( r ) ) );
}
inline double dSudakovdepsi( double mu1, double mu2 )
{
return S2( alphas( mu1 ) / ( 4 * EvtConst::pi ),
alphas( mu2 ) / alphas( mu1 ) );
}
inline double Sudakov( double mu1, double mu2, double epsi = 0 )
{
double fp( 4 * EvtConst::pi );
return S0( alphas( mu1 ) / fp, alphas( mu2 ) / alphas( mu1 ) ) +
S1( alphas( mu1 ) / fp, alphas( mu2 ) / alphas( mu1 ) ) +
epsi * dSudakovdepsi( mu1, mu2 );
}
// RG
inline double dGdepsi( double mu1, double mu2 )
{
return 1. / 8. / EvtConst::pi * ( alphas( mu2 ) - alphas( mu1 ) ) *
( gamma1() / beta0() - beta1() * gamma0() / pow( beta0(), 2 ) );
}
inline double aGamma( double mu1, double mu2, double epsi = 0 )
{
return gamma0() / 2 / beta0() * log( alphas( mu2 ) / alphas( mu1 ) ) +
epsi * dGdepsi( mu1, mu2 );
}
inline double dgpdepsi( double mu1, double mu2 )
{
return 1. / 8. / EvtConst::pi * ( alphas( mu2 ) - alphas( mu1 ) ) *
( gammap1() / beta0() - beta1() * gammap0() / pow( beta0(), 2 ) );
}
inline double agammap( double mu1, double mu2, double epsi = 0 )
{
return gammap0() / 2 / beta0() * log( alphas( mu2 ) / alphas( mu1 ) ) +
epsi * dgpdepsi( mu1, mu2 );
}
inline double U1( double mu1, double mu2, double epsi = 0 )
{
return exp( 2 * ( Sudakov( mu1, mu2, epsi ) - agammap( mu1, mu2, epsi ) -
aGamma( mu1, mu2, epsi ) * log( _mb / mu1 ) ) );
}
inline double U1lo( double mu1, double mu2 ) { return U1( mu1, mu2 ); }
inline double U1nlo( double mu1, double mu2 )
{
return U1( mu1, mu2 ) *
( 1 + 2 * ( dSudakovdepsi( mu1, mu2 ) - dgpdepsi( mu1, mu2 ) -
log( _mb / mu1 ) * dGdepsi( mu1, mu2 ) ) );
}
inline double alo( double mu1, double mu2 )
{
return -2 * aGamma( mu1, mu2 );
}
inline double anlo( double mu1, double mu2 )
{
return -2 * dGdepsi( mu1, mu2 );
}
};
#endif
diff --git a/EvtGenModels/EvtVubdGamma.hh b/EvtGenModels/EvtVubdGamma.hh
index d95596f..b96ee4f 100644
--- a/EvtGenModels/EvtVubdGamma.hh
+++ b/EvtGenModels/EvtVubdGamma.hh
@@ -1,84 +1,70 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-//
+#ifndef EVTVUBDGAMMA_HH
+#define EVTVUBDGAMMA_HH
+
// Description:
// 3 2 2
// d Gamma / _ _ _2 mb _2 mb
// ---------- = 12 Gamma | (1+x-z)(z-x-p ) -- W + (1-z+p ) -- W
// _ 2 0 \ 2 1 2 2
// dx dz dp 2
// _ _ _2 mb 2 \.
// + [x(z-x)-p ] -- (W + 2mb W + mb W ) |
// 4 3 4 5 /
//
// with
// 2 E 2
// l _2 p 2 v.p _
// x = ------ , p = --- , z = ------ , x = 1-x
// mb 2 mb
// mb
//
// the triple differential decay rate according to
// hep-ph/9905351 v2
-//
-// Environment:
-// Software developed for the BaBar Detector at the SLAC B-Factory.
-//
-// Author List:
-// Sven Menke
-//
-//-----------------------------------------------------------------------
-
-#ifndef EVTVUBDGAMMA_HH
-#define EVTVUBDGAMMA_HH
class EvtVubdGamma final {
public:
// Constructors
EvtVubdGamma( const double& alphas );
// Operators
// Selectors
// Modifiers
// Methods
double getdGdxdzdp( const double& x, const double& z, const double& p2 );
protected:
// Helper functions
double delta( const double& x, const double& xmin, const double& xmax );
double getW1nodelta( const double& x, const double& z, const double& p2 );
double getW2nodelta( const double& x, const double& z, const double& p2 );
double getW3nodelta( const double& x, const double& z, const double& p2 );
double getW4nodelta( const double& x, const double& z, const double& p2 );
double getW5nodelta( const double& x, const double& z, const double& p2 );
double getW1delta( const double& x, const double& z );
double getW4plus5delta( const double& x, const double& z );
private:
// Friends
// Data members
double _alphas;
double _epsilon1;
double _epsilon2;
double _epsilon3;
};
#endif // EVTVUBDGAMMA_HH
diff --git a/EvtGenModels/EvtWHad.hh b/EvtGenModels/EvtWHad.hh
index 3929d0f..bb03084 100644
--- a/EvtGenModels/EvtWHad.hh
+++ b/EvtGenModels/EvtWHad.hh
@@ -1,75 +1,60 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtWHad.hh
-//
-// Description: Routine to calculate W -> (n pi) + (m K) current
-// according to [Kuhn, Was, Acta.Phys.Polon B39 (2008) 147]
-//
-// Modification history:
-// A V Luchinsky 20 Jan, 2013 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EvtWHad_HH
#define EvtWHad_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <vector>
+// Description: Routine to calculate W -> (n pi) + (m K) current
+// according to [Kuhn, Was, Acta.Phys.Polon B39 (2008) 147]
+
class EvtWHad {
public:
EvtWHad();
EvtVector4C WCurrent( const EvtVector4R& q1 ) const;
EvtVector4C WCurrent( const EvtVector4R& q1, const EvtVector4R& q2 ) const;
EvtVector4C WCurrent( const EvtVector4R& q1, const EvtVector4R& q2,
const EvtVector4R& q3 ) const;
EvtVector4C WCurrent( const EvtVector4R& q1, const EvtVector4R& q2,
const EvtVector4R& q3, const EvtVector4R& q4,
const EvtVector4R& q5 ) const;
EvtVector4C WCurrent_KKP( const EvtVector4R& pKplus,
const EvtVector4R& pKminus,
const EvtVector4R& pPiPlus ) const;
EvtVector4C WCurrent_KPP( const EvtVector4R& pKplus,
const EvtVector4R& pPiPlus,
const EvtVector4R& pPiMinus ) const;
EvtVector4C WCurrent_KSK( const EvtVector4R& pKS,
const EvtVector4R& pKplus ) const;
protected:
EvtVector4C JB( const EvtVector4R& q1, const EvtVector4R& q2,
const EvtVector4R& q3, const EvtVector4R& q4,
const EvtVector4R& q5 ) const;
EvtComplex BWa( const EvtVector4R& q ) const;
EvtComplex BWf( const EvtVector4R& q ) const;
EvtComplex BWr( const EvtVector4R& q ) const;
EvtComplex BWKK( double s, int i ) const;
double pi3G( double Q2 ) const;
EvtComplex pcm( double s ) const;
private:
std::vector<double> mRho_, gamma0_, cK_;
};
#endif
diff --git a/EvtGenModels/EvtWilsonCoefficients.hh b/EvtGenModels/EvtWilsonCoefficients.hh
index bbd2173..ded4ca3 100644
--- a/EvtGenModels/EvtWilsonCoefficients.hh
+++ b/EvtGenModels/EvtWilsonCoefficients.hh
@@ -1,149 +1,141 @@
-//---------------------------------------------------------------------------------
-//
+#ifndef EVTWILSONCOEFICIENTS_HH
+#define EVTWILSONCOEFICIENTS_HH
+
+#include "EvtGenBase/EvtComplex.hh"
+
// Wilson coeficients according to A.J.Buras and M.Munz, Phys.Rev. D52, 186. (1995)
// Thanks to N. Nikitine for example code for Pythia
// Coefficient C8eff and C2 correction to C7eff taken from:
// A.J.Buras, M.Misiak, M.Munz, S.Pokorski, Nucl.Phys. B424, 374 (1994)
//
// Used constants come from PDG 2004
-//
-// P. Reznicek 18.02.2005
-//
-// 04/03/2005 PR Added h-function
-//
-//---------------------------------------------------------------------------------
-
-#ifndef EVTWILSONCOEFICIENTS_HH
-#define EVTWILSONCOEFICIENTS_HH
-
-#include "EvtGenBase/EvtComplex.hh"
class EvtWilsonCoefficients {
public:
EvtWilsonCoefficients();
//~EvtWilsonCoefficients() {};
// calculate strong coupling constant for n_f flavours and scale mu
double alphaS( double mu, int n_f, double Lambda );
// calculate Lambda matching alphaS using simple iterative method
double Lambda( double alpha, int n_f, double mu, double epsilon, int maxstep );
// eta-function: ratio of strong coupling constants
double eta( double mu, int n_f, double Lambda, double M_W );
// Wilson coeficients C1-C6
EvtComplex C1( double mu, int n_f, double Lambda, double M_W );
EvtComplex C2( double mu, int n_f, double Lambda, double M_W );
EvtComplex C3( double mu, int n_f, double Lambda, double M_W );
EvtComplex C4( double mu, int n_f, double Lambda, double M_W );
EvtComplex C5( double mu, int n_f, double Lambda, double M_W );
EvtComplex C6( double mu, int n_f, double Lambda, double M_W );
// Wilson coeficietns C7,C8 => C7eff
EvtComplex C7( double M_t, double M_W );
EvtComplex C8( double M_t, double M_W );
EvtComplex C7eff0( double mu, int n_f, double Lambda, double M_t, double M_W );
EvtComplex C8eff0( double mu, int n_f, double Lambda, double M_t, double M_W );
// Wilson coeficient C10
EvtComplex C10tilda( double sin2W, double M_t, double M_W );
EvtComplex C10( double sin2W, double M_t, double M_W, double ialpha );
// Wilson coeficient C9
double PE( double mu, int n_f, double Lambda, double M_W );
EvtComplex P0( int ksi, double mu, int n_f, double Lambda, double M_W );
EvtComplex C9tilda( int ksi, double mu, int n_f, double Lambda,
double sin2W, double M_t, double M_W );
EvtComplex C9( int ksi, double mu, int n_f, double Lambda, double sin2W,
double M_t, double M_W, double ialpha );
// Intermediate functions A-F,Y,Z
double A( double x );
double B( double x );
double C( double x );
double D( double x );
double E( double x );
double F( double x );
double Y( double x );
double Z( double x );
// Mode decay specific functions
EvtComplex hzs( double z, double shat, double mu, double M_b );
double fz( double z );
double kappa( double z, double alpha_S );
double etatilda( double shat, double alpha_S );
double omega( double shat );
EvtComplex C9efftilda( double z, double shat, double alpha_S, EvtComplex c1,
EvtComplex c2, EvtComplex c3, EvtComplex c4,
EvtComplex c5, EvtComplex c6, EvtComplex c9tilda,
int ksi );
EvtComplex C7b2sg( double alpha_S, double et, EvtComplex c2, double M_t,
double M_W );
EvtComplex Yld( double q2, double ki[], double Gi[], double Mi[], int ni,
EvtComplex c1, EvtComplex c2, EvtComplex c3, EvtComplex c4,
EvtComplex c5, EvtComplex c6, double ialpha );
// User function
void CalculateAllCoefficients();
// Set parameters
void SetLambda( double lambda ) { m_Lambda = lambda; }
void CalculateLambda( double epsilon, int maxstep )
{
m_Lambda = Lambda( m_alphaMZ, m_n_f, m_mu, epsilon, maxstep );
}
void SetStrongCouplingAtZMass( double alphaMZ ) { m_alphaMZ = alphaMZ; }
void SetScale( double mu ) { m_mu = mu; }
void SetNumberOfFlavours( int n_f ) { m_n_f = n_f; }
void SetZMass( double M_Z ) { m_M_Z = M_Z; }
void SetWMass( double M_W ) { m_M_W = M_W; }
void SetTopMass( double M_t ) { m_M_t = M_t; }
void SetSin2WeinbergAngle( double sin2W ) { m_sin2W = sin2W; }
void SetInvElMagCoupling( double ialpha ) { m_ialpha = ialpha; }
void SetRenormalizationScheme( std::string scheme );
// Get parameters
double GetLambda() { return m_Lambda; }
double GetStrongCouplingAtZMass() { return m_alphaMZ; }
double GetStrongCouplingConst() { return m_alphaS; }
double GetScale() { return m_mu; }
int GetNumberOfFlavours() { return m_n_f; }
int GetRenormSchemePar() { return m_ksi; }
double GetZMass() { return m_M_Z; }
double GetWMass() { return m_M_W; }
double GetTopMass() { return m_M_t; }
double GetSin2WeinbergAngle() { return m_sin2W; }
double GetInvElMagCoupling() { return m_ialpha; }
double GetEta() { return m_eta; }
// Get results
double GetA() { return m_A; }
double GetB() { return m_B; }
double GetC() { return m_C; }
double GetD() { return m_D; }
double GetE() { return m_E; }
double GetF() { return m_F; }
double GetY() { return m_Y; }
double GetZ() { return m_Z; }
EvtComplex GetC1() { return m_C1; }
EvtComplex GetC2() { return m_C2; }
EvtComplex GetC3() { return m_C3; }
EvtComplex GetC4() { return m_C4; }
EvtComplex GetC5() { return m_C5; }
EvtComplex GetC6() { return m_C6; }
EvtComplex GetC7() { return m_C7; }
EvtComplex GetC8() { return m_C8; }
EvtComplex GetC9() { return m_C9; }
EvtComplex GetC10() { return m_C10; }
EvtComplex GetC7eff0() { return m_C7eff0; }
EvtComplex GetC8eff0() { return m_C8eff0; }
EvtComplex GetC9tilda() { return m_C9tilda; }
EvtComplex GetC10tilda() { return m_C10tilda; }
EvtComplex GetP0() { return m_P0; }
double GetPE() { return m_PE; }
private:
int m_n_f, m_ksi;
double m_Lambda, m_alphaMZ, m_mu, m_M_Z, m_M_t, m_M_W, m_alphaS, m_eta,
m_sin2W, m_ialpha;
EvtComplex m_C1, m_C2, m_C3, m_C4, m_C5, m_C6, m_C7, m_C7eff0, m_C8,
m_C8eff0, m_C9, m_C9tilda, m_C10, m_C10tilda, m_P0;
double m_A, m_B, m_C, m_D, m_E, m_F, m_Y, m_Z, m_PE;
double k[6][8], a[8], h[8], p[8], r[2][8], s[8], q[8], g[8];
};
#endif
diff --git a/EvtGenModels/EvtWnPi.hh b/EvtGenModels/EvtWnPi.hh
index d956804..986f9f8 100644
--- a/EvtGenModels/EvtWnPi.hh
+++ b/EvtGenModels/EvtWnPi.hh
@@ -1,26 +1,29 @@
#ifndef EvtWNPI_HH
#define EvtWNPI_HH
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
+// Description: Routine to calculate W -> (n pi) current
+// according to [Kuhn, Was, Acta.Phys.Polon B39 (2008) 147]
+
class EvtWnPi {
public:
EvtVector4C WCurrent( EvtVector4R q1 );
EvtVector4C WCurrent( EvtVector4R q1, EvtVector4R q2 );
EvtVector4C WCurrent( EvtVector4R q1, EvtVector4R q2, EvtVector4R q3 );
EvtVector4C WCurrent( EvtVector4R q1, EvtVector4R q2, EvtVector4R q3,
EvtVector4R q4, EvtVector4R q5 );
protected:
EvtVector4C JB( EvtVector4R q1, EvtVector4R q2, EvtVector4R q3,
EvtVector4R q4, EvtVector4R q5 );
EvtComplex BWa( EvtVector4R q );
EvtComplex BWf( EvtVector4R q );
EvtComplex BWr( EvtVector4R q );
double pi3G( double Q2 );
};
#endif
diff --git a/EvtGenModels/EvtXPsiGamma.hh b/EvtGenModels/EvtXPsiGamma.hh
index 522a1e4..631bc7a 100644
--- a/EvtGenModels/EvtXPsiGamma.hh
+++ b/EvtGenModels/EvtXPsiGamma.hh
@@ -1,56 +1,40 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtXPsiGamma.hh
-//
-// Description:Implementation of the X3872(2-+) -> J/psi gamma decay
-//
-// Modification history:
-//
-// 7 May 2012: Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTXPSIGAMMA_HH
#define EVTXPSIGAMMA_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtId.hh"
#include <fstream>
#include <stdio.h>
class EvtComplex;
class EvtParticle;
class EvtTensor4C;
class EvtVector4C;
class EvtVector4R;
+// Description:Implementation of the X3872(2-+) -> J/psi gamma decay
+// Description: Routine to implement radiative decay X3872(2-+) -> J/psi gamma
+// according to [F. Brazzi et al, arXiv:1103.3155
+
class EvtXPsiGamma : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
private:
// int whichfit;
EvtComplex fT2( EvtVector4R p, EvtVector4R q, EvtTensor4C epsPI,
EvtVector4C epsEps, EvtVector4C epsEta );
EvtComplex fT3( EvtVector4R p, EvtVector4R q, EvtTensor4C epsPI,
EvtVector4C epsEps, EvtVector4C epsEta );
EvtId _ID0;
int ncall;
};
#endif
diff --git a/EvtGenModels/EvtY3SToY1SpipiMoxhay.hh b/EvtGenModels/EvtY3SToY1SpipiMoxhay.hh
index 5f7d606..4b7b841 100644
--- a/EvtGenModels/EvtY3SToY1SpipiMoxhay.hh
+++ b/EvtGenModels/EvtY3SToY1SpipiMoxhay.hh
@@ -1,56 +1,37 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVVpipiMoxhay.hh
-//
+#ifndef EVTY3STOY1SPIPIMOXHAY_HH
+#define EVTY3STOY1SPIPIMOXHAY_HH
+
+#include "EvtGenBase/EvtDecayProb.hh"
+
+class EvtParticle;
+
// Description: This model is based on the proposal by Tuan and Lipkin
// (Phys.Lett.B206:349-353,1988) and the subsequent model
// by Moxhay (Phys.Rev.D39:3497,1989) for the dipion spectrum
// in Y(3S) -> pi+ pi- Y(1S). Please Note: in Moxhay's paper,
// he wrote the fitted value of the parameter Im(B)/A as
// -0.2983. However, using his quoted value leads to the wrong
// spectrum. Changing the sign of his quoted Im(B)/A fixes the
// shape and reproduces his result. Therefore, please pass
// Im(B)/A = 0.2983 and Re(B)/A = 0.2196 to get the correct shape
// based on his fit to the CLEO data.
//
// Example:
//
// Decay Upsilon(3S)
// 1.0000 Upsilon pi+ pi- Y3STOY1SPIPIMOXHAY 0.2196 0.2983;
// Enddecay
//
// --> the order of parameters is: Re(B)/A Im(B)/A
-//
-//
-// Modification history:
-//
-// SEKULA November 02, 2007 Module created
-//
-//------------------------------------------------------------------------
-
-#ifndef EVTY3STOY1SPIPIMOXHAY_HH
-#define EVTY3STOY1SPIPIMOXHAY_HH
-
-#include "EvtGenBase/EvtDecayProb.hh"
-
-class EvtParticle;
class EvtY3SToY1SpipiMoxhay : public EvtDecayProb {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
};
#endif
diff --git a/EvtGenModels/EvtYmSToYnSpipiCLEO.hh b/EvtGenModels/EvtYmSToYnSpipiCLEO.hh
index 67280a9..6e4a16d 100644
--- a/EvtGenModels/EvtYmSToYnSpipiCLEO.hh
+++ b/EvtGenModels/EvtYmSToYnSpipiCLEO.hh
@@ -1,61 +1,43 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtYmSToYnSpipiCLEO.hh
-//
+#ifndef EVTYMSTOYNSPIPICLEO_HH
+#define EVTYMSTOYNSPIPICLEO_HH
+
+// #include "EvtGenBase/EvtDecayProb.hh"
+#include "EvtGenBase/EvtDecayAmp.hh"
+
+class EvtParticle;
+
// Description: This model is based on matrix element method used by
// CLEO in Phys.Rev.D76:072001,2007 to model the dipion mass
// and helicity angle distribution in the decays Y(mS) -> pi pi Y(nS),
// where m,n are integers and m>n and m<4.
// This model has two parameters, Re(B/A) and Im(B/A), which
// are coefficients of the matrix element's terms determined by
// the CLEO fits.
//
// Example:
//
// Decay Upsilon(3S)
// 1.0000 Upsilon pi+ pi- YMSTOYNSPIPICLEO -2.523 1.189;
// Enddecay
// Decay Upsilon(3S)
// 1.0000 Upsilon(2S) pi+ pi- YMSTOYNSPIPICLEO -0.395 0.001;
// Enddecay
// Decay Upsilon(2S)
// 1.0000 Upsilon pi+ pi- YMSTOYNSPIPICLEO -0.753 0.000;
// Enddecay
//
// --> the order of parameters is: Re(B/A) Im(B/A)
-//
-// Modification history:
-//
-// SEKULA Jan. 28, 2008 Module created
-//
-//------------------------------------------------------------------------
-
-#ifndef EVTYMSTOYNSPIPICLEO_HH
-#define EVTYMSTOYNSPIPICLEO_HH
-
-// #include "EvtGenBase/EvtDecayProb.hh"
-#include "EvtGenBase/EvtDecayAmp.hh"
-
-class EvtParticle;
class EvtYmSToYnSpipiCLEO : public EvtDecayAmp {
//EvtDecayProb {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
};
#endif
diff --git a/EvtGenModels/EvtbTosllAli.hh b/EvtGenModels/EvtbTosllAli.hh
index 59b3975..9682f77 100644
--- a/EvtGenModels/EvtbTosllAli.hh
+++ b/EvtGenModels/EvtbTosllAli.hh
@@ -1,48 +1,30 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech
-//
-// Module: EvtGen/EvtbTosllAli.hh
-//
-// Description:Implementation of the b->sll decays according to Ali '01 et al.
-//
-// Modification history:
-//
-// Ryd March 30, 2003 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLALI_HH
#define EVTBTOSLLALI_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include <memory>
class EvtbTosllFF;
#include "EvtGenModels/EvtbTosllAmp.hh"
#include "EvtGenModels/EvtbTosllFF.hh"
class EvtParticle;
+// Description:Implementation of the b->sll decays according to Ali '01 et al.
+
class EvtbTosllAli : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
private:
std::unique_ptr<EvtbTosllFF> _aliffmodel;
std::unique_ptr<EvtbTosllAmp> _calcamp;
double _poleSize;
};
#endif
diff --git a/EvtGenModels/EvtbTosllAliFF.hh b/EvtGenModels/EvtbTosllAliFF.hh
index a58e5df..0f63edd 100644
--- a/EvtGenModels/EvtbTosllAliFF.hh
+++ b/EvtGenModels/EvtbTosllAliFF.hh
@@ -1,39 +1,22 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module:
-// Description: Form factors for b->sll according to Ali '02 et al.
-// PRD 66 34002
-//
-// Modification history:
-//
-// Ryd March 30, 2003 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLALIFF_HH
#define EVTBTOSLLALIFF_HH
#include "EvtGenModels/EvtbTosllFF.hh"
class EvtId;
+// Description: Form factors for b->sll according to Ali '02 et al.
+// PRD 66 34002
+
class EvtbTosllAliFF : public EvtbTosllFF {
public:
EvtbTosllAliFF();
void getScalarFF( EvtId parent, EvtId daught, double t, double mass,
double& fp, double& f0, double& ft ) override;
void getVectorFF( EvtId parent, EvtId daught, double t, double mass,
double& a1, double& a2, double& a0, double& v, double& t1,
double& t2, double& t3 ) override;
};
#endif
diff --git a/EvtGenModels/EvtbTosllAmp.hh b/EvtGenModels/EvtbTosllAmp.hh
index f489887..5e5e02d 100644
--- a/EvtGenModels/EvtbTosllAmp.hh
+++ b/EvtGenModels/EvtbTosllAmp.hh
@@ -1,52 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtbTosllAmp.hh
-//
-// Description:
-//
-// Modification history:
-//
-// RYD January 30 2000 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLAMP_HH
#define EVTBTOSLLAMP_HH
class EvtAmp;
class EvtId;
class EvtbTosllFF;
class EvtParticle;
class EvtComplex;
class EvtbTosllAmp {
public:
virtual ~EvtbTosllAmp(){};
//Daughters are initialized and have been added to the parent.
//No need to carry around the daughters seperately!
virtual void CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtbTosllFF* formFactors ) = 0;
double CalcMaxProb( EvtId parent, EvtId meson, EvtId lepton, EvtId nudaug,
EvtbTosllFF* formFactors, double& poleSize );
EvtComplex GetC7Eff( double q2, bool nnlo = true );
EvtComplex GetC9Eff( double q2, bool nnlo = true, bool btod = false );
EvtComplex GetC10Eff( double q2, bool nnlo = true );
double dGdsProb( double mb, double ms, double ml, double s );
double dGdsdupProb( double mb, double ms, double ml, double s, double u );
};
#endif
diff --git a/EvtGenModels/EvtbTosllAmpNew.hh b/EvtGenModels/EvtbTosllAmpNew.hh
index b111bf2..5ba7318 100644
--- a/EvtGenModels/EvtbTosllAmpNew.hh
+++ b/EvtGenModels/EvtbTosllAmpNew.hh
@@ -1,59 +1,39 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtbTosllAmpNew.hh
-//
-// Description:
-//
-// Modification history:
-//
-// N.Nikitin March 27 2008 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLAMPNEW_HH
#define EVTBTOSLLAMPNEW_HH
class EvtAmp;
class EvtId;
class EvtbTosllFFNew;
class EvtParticle;
class EvtbTosllWilsCoeffNLO;
// all definicions !
class EvtbTosllAmpNew {
public:
virtual ~EvtbTosllAmpNew(){};
virtual void CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtbTosllFFNew* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double /* mu */,
int /* Nf */, int /* res_swch */, int /* ias */,
double /* CKM_A */, double /* CKM_lambda */,
double /* CKM_barrho */, double /* CKM_bareta */ ) = 0;
virtual double CalcMaxProb( EvtId /* parnum */, EvtId /* mesnum */,
EvtId /* l1num */, EvtId /* l2num */,
EvtbTosllFFNew* /* formFactors */,
EvtbTosllWilsCoeffNLO* /*WilsCoeff */,
double /* mu */, int /* Nf */,
int /* res_swch */, int /* ias */,
double /* CKM_A */, double /* CKM_lambda */,
double /* CKM_barrho */, double /* CKM_bareta */ )
{
return 0.0;
};
virtual double lambda( double /* a */, double /* b */, double /* c */ )
{
return 0.0;
};
};
#endif
diff --git a/EvtGenModels/EvtbTosllAmpNewExt.hh b/EvtGenModels/EvtbTosllAmpNewExt.hh
index 060d694..e3f4a01 100644
--- a/EvtGenModels/EvtbTosllAmpNewExt.hh
+++ b/EvtGenModels/EvtbTosllAmpNewExt.hh
@@ -1,63 +1,43 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtbTosllAmpNewExt.hh
-//
-// Description:
-//
-// Modification history:
-//
-// N.Nikitin July 07 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLAMPNEWEXT_HH
#define EVTBTOSLLAMPNEWEXT_HH
class EvtAmp;
class EvtId;
class EvtbTosllFFNew;
class EvtParticle;
class EvtbTosllWilsCoeffNLO;
// all definicions !
class EvtbTosllAmpNewExt {
public:
virtual ~EvtbTosllAmpNewExt(){};
virtual void CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtbTosllFFNew* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double /* mu */,
int /* Nf */, int /* res_swch */, int /* ias */,
double /* CKM_A */, double /* CKM_lambda */,
double /* CKM_barrho */, double /* CKM_bareta */,
double /* ReA7 */, double /* ImA7 */,
double /* ReA10 */, double /*ImA10 */ ) = 0;
virtual double CalcMaxProb( EvtId /* parnum */, EvtId /* mesnum */,
EvtId /* l1num */, EvtId /* l2num */,
EvtbTosllFFNew* /* formFactors */,
EvtbTosllWilsCoeffNLO* /*WilsCoeff */,
double /* mu */, int /* Nf */,
int /* res_swch */, int /* ias */,
double /* CKM_A */, double /* CKM_lambda */,
double /* CKM_barrho */, double /* CKM_bareta */,
double /* ReA7 */, double /* ImA7 */,
double /* ReA10 */, double /*ImA10 */ )
{
return 0.0;
};
virtual double lambda( double /* a */, double /* b */, double /* c */ )
{
return 0.0;
};
};
#endif
diff --git a/EvtGenModels/EvtbTosllBall.hh b/EvtGenModels/EvtbTosllBall.hh
index 9d4efcd..62231a7 100644
--- a/EvtGenModels/EvtbTosllBall.hh
+++ b/EvtGenModels/EvtbTosllBall.hh
@@ -1,47 +1,29 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtGen/EvtbTosllBall.hh
-//
-// Description:Implementation of the b->sll decays according to Ball et al.
-//
-// Modification history:
-//
-// Ryd January 5, 2000 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLBALL_HH
#define EVTBTOSLLBALL_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include <memory>
class EvtbTosllFF;
class EvtbTosllAmp;
class EvtParticle;
+// Description:Implementation of the b->sll decays according to Ball et al.
+
class EvtbTosllBall : public EvtDecayAmp {
public:
std::string getName() override;
EvtDecayBase* clone() override;
void decay( EvtParticle* p ) override;
void init() override;
void initProbMax() override;
private:
std::unique_ptr<EvtbTosllAmp> _calcamp;
std::unique_ptr<EvtbTosllFF> _ballffmodel;
double _poleSize;
};
#endif
diff --git a/EvtGenModels/EvtbTosllBallFF.hh b/EvtGenModels/EvtbTosllBallFF.hh
index d056fea..a763b6b 100644
--- a/EvtGenModels/EvtbTosllBallFF.hh
+++ b/EvtGenModels/EvtbTosllBallFF.hh
@@ -1,42 +1,25 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module:
-// Description: Form factors for b->sll according to Ali, Ball et al.
-// hep-ph/9910221v2
-//
-// Modification history:
-//
-// Ryd January 5, 2000 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLBALLFF_HH
#define EVTBTOSLLBALLFF_HH
#include "EvtGenModels/EvtbTosllFF.hh"
class EvtId;
+// Description: Form factors for b->sll according to Ali, Ball et al.
+// hep-ph/9910221v2
+
class EvtbTosllBallFF : public EvtbTosllFF {
public:
EvtbTosllBallFF( int );
void getScalarFF( EvtId parent, EvtId daught, double t, double mass,
double& fp, double& f0, double& ft ) override;
void getVectorFF( EvtId parent, EvtId daught, double t, double mass,
double& a1, double& a2, double& a0, double& v, double& t1,
double& t2, double& t3 ) override;
private:
int _theFFModel;
};
#endif
diff --git a/EvtGenModels/EvtbTosllFF.hh b/EvtGenModels/EvtbTosllFF.hh
index cd36a9c..3502f6b 100644
--- a/EvtGenModels/EvtbTosllFF.hh
+++ b/EvtGenModels/EvtbTosllFF.hh
@@ -1,46 +1,27 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech
-//
-// Module:
-// This is the base class for form factors in b->sll transitions.
-//
-// Description:
-//
-// Modification history:
-//
-// RYD January 5, 2000 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLFF_HH
#define EVTBTOSLLFF_HH
#include "EvtGenBase/EvtId.hh"
+// This is the base class for form factors in b->sll transitions.
+
class EvtbTosllFF {
public:
virtual ~EvtbTosllFF() = default;
virtual void getScalarFF( EvtId /*parent*/, EvtId /*daught*/, double /*t*/,
double /*mass*/, double& /*fp*/, double& /*f0*/,
double& /*ft*/ )
{
return;
}
virtual void getVectorFF( EvtId /*parent*/, EvtId /*daught*/, double /*t*/,
double /*mass*/, double& /*a1*/, double& /*a2*/,
double& /*a0*/, double& /*v*/, double& /*t1*/,
double& /*t2*/, double& /*t3*/ )
{
return;
}
};
#endif
diff --git a/EvtGenModels/EvtbTosllFFNew.hh b/EvtGenModels/EvtbTosllFFNew.hh
index 9f3d4b3..35f3f83 100644
--- a/EvtGenModels/EvtbTosllFFNew.hh
+++ b/EvtGenModels/EvtbTosllFFNew.hh
@@ -1,47 +1,29 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech
-//
-// Module: EvtbTosllFFNew.hh
-//
-// Description: This is the NEW base class for form factors in b->sll transitions.
-//
-// Modification history:
-//
-// N.Nikitin (nnikit@mail.cern.ch) Avril 18, 2008 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLFFNEW_HH
#define EVTBTOSLLFFNEW_HH
#include "EvtGenBase/EvtId.hh"
+// Description: This is the NEW base class for form factors in b->sll transitions.
+
class EvtbTosllFFNew {
public:
virtual ~EvtbTosllFFNew(){};
virtual void getScalarFF( EvtId /*parent*/, EvtId /*daught*/, double /*t*/,
double& /*fp*/, double& /*f0*/, double& /*ft*/ )
{
return;
}
virtual void getVectorFF( EvtId /*parent*/, EvtId /*daught*/, double /*t*/,
double& /*a1*/, double& /*a2*/, double& /*a0*/,
double& /*v*/, double& /*t1*/, double& /*t2*/,
double& /*t3*/ )
{
return;
}
virtual double getQuarkMass( int /*i*/ ) { return 0.0; }
};
#endif
diff --git a/EvtGenModels/EvtbTosllMS.hh b/EvtGenModels/EvtbTosllMS.hh
index 18270c6..6a3f376 100644
--- a/EvtGenModels/EvtbTosllMS.hh
+++ b/EvtGenModels/EvtbTosllMS.hh
@@ -1,54 +1,36 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech
-//
-// Module: EvtGen/EvtbTosllMS.hh
-//
-// Description: Implementation of the B -> K* ell^+ ell^- decay according
-// to the paper: D.Melikhov, B.Stech, PRD62, 014006 (2000).
-//
-// This is the derived class of the base class "EvtDecayAmp",
-// but the decay amplitude will be calculated in the class
-// "EvtbTosllAmpNew" (see file EvtbTosllAmpNew.hh).
-//
-// Modification history:
-//
-// N.Nikitin (nnikit@mail.cern.ch) Avril 21, 2008 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLMS_HH
#define EVTBTOSLLMS_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtbTosllFFNew; // my class with ff for rare semileptonic B-decays
class EvtbTosllAmpNew; // my class with amplitudes for rare semileptonic B-decays
class EvtbTosllWilsCoeffNLO; // my class with Wilson coefficients in NLO
+// Description: Implementation of the B -> K* ell^+ ell^- decay according
+// to the paper: D.Melikhov, B.Stech, PRD62, 014006 (2000).
+//
+// This is the derived class of the base class "EvtDecayAmp",
+// but the decay amplitude will be calculated in the class
+// "EvtbTosllAmpNew" (see file EvtbTosllAmpNew.hh).
+
class EvtbTosllMS : public EvtDecayAmp {
public:
EvtbTosllMS(){};
virtual ~EvtbTosllMS();
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
private:
EvtbTosllFFNew* _msffmodel;
EvtbTosllAmpNew* _calcamp;
EvtbTosllWilsCoeffNLO* _wilscoeff;
};
#endif
diff --git a/EvtGenModels/EvtbTosllMSExt.hh b/EvtGenModels/EvtbTosllMSExt.hh
index d3af810..bd13a33 100644
--- a/EvtGenModels/EvtbTosllMSExt.hh
+++ b/EvtGenModels/EvtbTosllMSExt.hh
@@ -1,55 +1,37 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech
-//
-// Module: EvtGen/EvtbTosllMSExt.hh
-//
-// Description: Implementation of the rare semileptonic B-decays according
-// to the paper: D.Melikhov, B.Stech, PRD62, 014006 (2000)
-// with the nonstandart models simuliakr..
-//
-// This is the derived class of the base class "EvtDecayAmp",
-// but the decay amplitude will be calculated in the class
-// "EvtbTosllAmpNew" (see file EvtbTosllAmpNew.hh).
-//
-// Modification history:
-//
-// N.Nikitin (nnikit@mail.cern.ch) July 07, 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLMSEXT_HH
#define EVTBTOSLLMSEXT_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtbTosllFFNew; // my class with ff for rare semileptonic B-decays
class EvtbTosllAmpNewExt; // my class with amplitudes for rare semileptonic B-decays
class EvtbTosllWilsCoeffNLO; // my class with Wilson coefficients in NLO
+// Description: Implementation of the rare semileptonic B-decays according
+// to the paper: D.Melikhov, B.Stech, PRD62, 014006 (2000)
+// with the nonstandart models simuliakr..
+//
+// This is the derived class of the base class "EvtDecayAmp",
+// but the decay amplitude will be calculated in the class
+// "EvtbTosllAmpNew" (see file EvtbTosllAmpNew.hh).
+
class EvtbTosllMSExt : public EvtDecayAmp {
public:
EvtbTosllMSExt(){};
virtual ~EvtbTosllMSExt();
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
private:
EvtbTosllFFNew* _msffmodel;
EvtbTosllAmpNewExt* _calcamp;
EvtbTosllWilsCoeffNLO* _wilscoeff;
};
#endif
diff --git a/EvtGenModels/EvtbTosllMSFF.hh b/EvtGenModels/EvtbTosllMSFF.hh
index da1eed2..273770d 100644
--- a/EvtGenModels/EvtbTosllMSFF.hh
+++ b/EvtGenModels/EvtbTosllMSFF.hh
@@ -1,47 +1,39 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtbTosllMSFF.hh
-// Description: Form factors for B^0_d -> K^* l^+ l^- transition according
-// to the paper: D.Melikhov, B.Stech, PRD62, 014006 (2000).
-//
-// Modification history:
-//
-// N.Nikitin March 13, 2008 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLMSFF_HH
#define EVTBTOSLLMSFF_HH
#include "EvtGenModels/EvtbTosllFFNew.hh"
class EvtId;
+// Description: Form factors for B^0_d -> K^* l^+ l^- transition according
+// to the paper: D.Melikhov, B.Stech, PRD62, 014006 (2000).
+// N.Nikitin (nnikit@mail.cern.ch) March 13, 2008 Module created
+// N.Nikitin (nnikit@mail.cern.ch) March 27, 2008 add \bar B -> \bar (K,K^*) transition ff
+// N.Nikitin (nnikit@mail.cern.ch) April 26, 2008 add \bar Bs -> phi transition ff
+// N.Nikitin (nnikit@mail.cern.ch) April 26, 2008 add \bar Bs -> K* transition ff
+// N.Nikitin (nnikit@mail.cern.ch) April 27, 2008 add \bar B -> \bar rho transition ff
+// N.Nikitin (nnikit@mail.cern.ch) Nvmbr 04, 2011 add \bar B -> omega transition ff
+// N.Nikitin (nnikit@mail.cern.ch) Dec 16, 2011 add \bar B -> \bar K_1(1270) transition ff (from H.Hatanaka and Kwei-Chou Yang, PRD78, 074007 (2008))
+// N.Nikitin (nnikit@mail.cern.ch) Dec 16, 2011 add \bar B -> \bar K_1(1400) transition ff (from H.Hatanaka and Kwei-Chou Yang, PRD78, 074007 (2008))
+// N.Nikitin (nnikit@mail.cern.ch) May 11, 2012 add \bar Bs -> f_0(980) transition ff with NLO corrections from Table II (see P.Colangelo et al., PRD81, 074001 (2010))
+
class EvtbTosllMSFF : public EvtbTosllFFNew {
public:
EvtbTosllMSFF();
double equation9_10( double ff0, double M2, double q2, double sigma1,
double sigma2, int eq_num );
void getScalarFF( EvtId parent, EvtId daught, double t, double& fp,
double& f0, double& ft ) override;
void getVectorFF( EvtId parent, EvtId daught, double t, double& a1,
double& a2, double& a0, double& v, double& t1, double& t2,
double& t3 ) override;
double getQuarkMass( int i ) override;
private:
};
#endif
diff --git a/EvtGenModels/EvtbTosllScalarAmp.hh b/EvtGenModels/EvtbTosllScalarAmp.hh
index 2910371..5632d24 100644
--- a/EvtGenModels/EvtbTosllScalarAmp.hh
+++ b/EvtGenModels/EvtbTosllScalarAmp.hh
@@ -1,42 +1,22 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtbTosllScalarAmp.hh
-//
-// Description:
-//
-// Modification history:
-//
-// RYD January 5, 2000 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLSCALARAMP_HH
#define EVTBTOSLLSCALARAMP_HH
#include "EvtGenModels/EvtbTosllAmp.hh"
class EvtParticle;
class EvtAmp;
class bTosllFF;
class EvtbTosllScalarAmp : public EvtbTosllAmp {
public:
//EvtbTosllScalarAmp(double c7, double c9, double c10):_c7(c7),_c9(c9),_c10(c10){}
//Daughters are initialized and have been added to the parent.
//No need to carry around the daughters seperately!
void CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtbTosllFF* formFactors ) override;
private:
//double _c7,_c9,_c10;
};
#endif
diff --git a/EvtGenModels/EvtbTosllScalarAmpNew.hh b/EvtGenModels/EvtbTosllScalarAmpNew.hh
index b0e7e37..6269334 100644
--- a/EvtGenModels/EvtbTosllScalarAmpNew.hh
+++ b/EvtGenModels/EvtbTosllScalarAmpNew.hh
@@ -1,52 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtbTosllScalarAmpNew.hh
-//
-// Description:
-//
-// Modification history:
-//
-// N.Nikitin May 06, 2008 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLSCALARAMPNEW_HH
#define EVTBTOSLLSCALARAMPNEW_HH
#include "EvtGenModels/EvtbTosllAmpNew.hh"
class EvtId;
class EvtAmp;
class EvtParticle;
class EvtbTosllFFNew;
class EvtbTosllWilsCoeffNLO;
class EvtbTosllScalarAmpNew : public EvtbTosllAmpNew {
public:
EvtbTosllScalarAmpNew() {}
//Daughters are initialized and have been added to the parent.
//No need to carry around the daughters seperately!
void CalcAmp( EvtParticle* parent, EvtAmp& amp, EvtbTosllFFNew* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf,
int res_swch, int ias, double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta ) override;
double CalcMaxProb( EvtId parnum, EvtId mesnum, EvtId l1num, EvtId l2num,
EvtbTosllFFNew* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf,
int res_swch, int ias, double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta ) override;
double lambda( double a, double b, double c ) override;
};
#endif
diff --git a/EvtGenModels/EvtbTosllScalarAmpNewExt.hh b/EvtGenModels/EvtbTosllScalarAmpNewExt.hh
index 10b210a..f272478 100644
--- a/EvtGenModels/EvtbTosllScalarAmpNewExt.hh
+++ b/EvtGenModels/EvtbTosllScalarAmpNewExt.hh
@@ -1,54 +1,34 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtbTosllScalarAmpNew.hh
-//
-// Description:
-//
-// Modification history:
-//
-// N.Nikitin May 06, 2008 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLSCALARAMPNEWEXT_HH
#define EVTBTOSLLSCALARAMPNEWEXT_HH
#include "EvtGenModels/EvtbTosllAmpNewExt.hh"
class EvtId;
class EvtAmp;
class EvtParticle;
class EvtbTosllFFNew;
class EvtbTosllWilsCoeffNLO;
class EvtbTosllScalarAmpNewExt : public EvtbTosllAmpNewExt {
public:
EvtbTosllScalarAmpNewExt() {}
//Daughters are initialized and have been added to the parent.
//No need to carry around the daughters seperately!
void CalcAmp( EvtParticle* parent, EvtAmp& amp, EvtbTosllFFNew* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf,
int res_swch, int ias, double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta, double ReA7,
double ImA7, double ReA10, double ImA10 ) override;
double CalcMaxProb( EvtId parnum, EvtId mesnum, EvtId l1num, EvtId l2num,
EvtbTosllFFNew* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf,
int res_swch, int ias, double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta, double ReA7,
double ImA7, double ReA10, double ImA10 ) override;
double lambda( double a, double b, double c ) override;
};
#endif
diff --git a/EvtGenModels/EvtbTosllVectorAmp.hh b/EvtGenModels/EvtbTosllVectorAmp.hh
index 6e6623e..69e5251 100644
--- a/EvtGenModels/EvtbTosllVectorAmp.hh
+++ b/EvtGenModels/EvtbTosllVectorAmp.hh
@@ -1,43 +1,23 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtbTosllVectorAmp.hh
-//
-// Description:
-//
-// Modification history:
-//
-// RYD January 5, 2000 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLVECTORAMP_HH
#define EVTBTOSLLVECTORAMP_HH
#include "EvtGenModels/EvtbTosllAmp.hh"
class EvtAmp;
class EvtParticle;
class EvtbTosllFF;
class EvtbTosllVectorAmp : public EvtbTosllAmp {
public:
//EvtbTosllVectorAmp(double c7, double c9, double c10):_c7(c7),_c9(c9),_c10(c10){}
//Daughters are initialized and have been added to the parent.
//No need to carry around the daughters seperately!
void CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtbTosllFF* formFactors ) override;
private:
//double _c7,_c9,_c10;
};
#endif
diff --git a/EvtGenModels/EvtbTosllVectorAmpNew.hh b/EvtGenModels/EvtbTosllVectorAmpNew.hh
index c7fe699..9a51fcf 100644
--- a/EvtGenModels/EvtbTosllVectorAmpNew.hh
+++ b/EvtGenModels/EvtbTosllVectorAmpNew.hh
@@ -1,52 +1,32 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtbTosllVectorAmpNew.hh
-//
-// Description:
-//
-// Modification history:
-//
-// N.Nikitin Avril 21, 2008 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLVECTORAMPNEW_HH
#define EVTBTOSLLVECTORAMPNEW_HH
#include "EvtGenModels/EvtbTosllAmpNew.hh"
class EvtId;
class EvtAmp;
class EvtParticle;
class EvtbTosllFFNew;
class EvtbTosllWilsCoeffNLO;
class EvtbTosllVectorAmpNew : public EvtbTosllAmpNew {
public:
EvtbTosllVectorAmpNew() {}
//Daughters are initialized and have been added to the parent.
//No need to carry around the daughters seperately!
void CalcAmp( EvtParticle* parent, EvtAmp& amp, EvtbTosllFFNew* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf,
int res_swch, int ias, double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta ) override;
double CalcMaxProb( EvtId parnum, EvtId mesnum, EvtId l1num, EvtId l2num,
EvtbTosllFFNew* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf,
int res_swch, int ias, double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta ) override;
double lambda( double a, double b, double c ) override;
};
#endif
diff --git a/EvtGenModels/EvtbTosllVectorAmpNewExt.hh b/EvtGenModels/EvtbTosllVectorAmpNewExt.hh
index 335c11f..d110890 100644
--- a/EvtGenModels/EvtbTosllVectorAmpNewExt.hh
+++ b/EvtGenModels/EvtbTosllVectorAmpNewExt.hh
@@ -1,54 +1,34 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtbTosllVectorAmpNewExt.hh
-//
-// Description:
-//
-// Modification history:
-//
-// N.Nikitin July 07, 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLVECTORAMPNEWEXT_HH
#define EVTBTOSLLVECTORAMPNEWEXT_HH
#include "EvtGenModels/EvtbTosllAmpNewExt.hh"
class EvtId;
class EvtAmp;
class EvtParticle;
class EvtbTosllFFNew;
class EvtbTosllWilsCoeffNLO;
class EvtbTosllVectorAmpNewExt : public EvtbTosllAmpNewExt {
public:
EvtbTosllVectorAmpNewExt() {}
//Daughters are initialized and have been added to the parent.
//No need to carry around the daughters seperately!
void CalcAmp( EvtParticle* parent, EvtAmp& amp, EvtbTosllFFNew* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf,
int res_swch, int ias, double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta, double ReA7,
double ImA7, double ReA10, double ImA10 ) override;
double CalcMaxProb( EvtId parnum, EvtId mesnum, EvtId l1num, EvtId l2num,
EvtbTosllFFNew* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf,
int res_swch, int ias, double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta, double ReA7,
double ImA7, double ReA10, double ImA10 ) override;
double lambda( double a, double b, double c ) override;
};
#endif
diff --git a/EvtGenModels/EvtbTosllWilsCoeffNLO.hh b/EvtGenModels/EvtbTosllWilsCoeffNLO.hh
index 3fefd91..386ca7b 100644
--- a/EvtGenModels/EvtbTosllWilsCoeffNLO.hh
+++ b/EvtGenModels/EvtbTosllWilsCoeffNLO.hh
@@ -1,86 +1,68 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtbTosllWilsCoeffNLO.hh
-//
-// Description:
-//
-// Modification history:
-//
-// N.Nikitin March 27, 2008 Module created
-// N.Nikitin January 12, 2010 New resonant contribution
-// description
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBTOSLLWILCNLO_HH
#define EVTBTOSLLWILCNLO_HH
class EvtComplex;
-// all definicions !
+// Description: The calculation of the Wilson coefficients for
+// b -> (d,s) ell+ ell- transitions in the SM at NLO
+// according to the paper:
+// A.J.Buras, M.Munz, Phys.Rev.D52, p.189 (1995).
+
class EvtbTosllWilsCoeffNLO {
public:
double As( double mu, int Nf, int ias );
double Li2( double w );
double C1( double mu, double Mw, int Nf, int ias );
double C2( double mu, double Mw, int Nf, int ias );
double C3( double mu, double Mw, int Nf, int ias );
double C4( double mu, double Mw, int Nf, int ias );
double C5( double mu, double Mw, int Nf, int ias );
double C6( double mu, double Mw, int Nf, int ias );
double A( double z );
double B( double z );
double C_Bur( double z );
double D_Bur( double z );
double E( double z );
double F_Bur( double z );
double Y( double z );
double Z( double z );
double C7gamma( double mu, double Mw, double mt, int Nf, int ias );
double Pe( double eta );
double P0ndr( double asW, double eta );
double C9v( double mu, double Mw, double mt, int Nf, int ias );
double C10a( double mt, double Mw );
double Reh( double mu, double mQ, double q2 );
double Imh( double mQ, double q2 );
double ReResonant( double q2, double GV, double GllV, double MV );
double ImResonant( double q2, double GV, double GllV, double MV );
double ReHtot( int qflavour, int res_swch, int ias, int Nf, double mu,
double mQ, double q2, double ml, double Mw );
double ImHtot( int qflavour, int res_swch, int ias, int Nf, double mu,
double mQ, double q2, double ml, double Mw );
double omega( double q2, double m2 );
double ReC9eff( int decay_id, int res_swch, int ias, int Nf, double q2,
double m2, double md, double mc, double mu, double mt,
double Mw, double ml, double Relambda_qu,
double Imlambda_qu );
double ImC9eff( int decay_id, int res_swch, int ias, int Nf, double q2,
double m2, double md, double mc, double mu, double Mw,
double ml, double Relambda_qu, double Imlambda_qu );
EvtComplex GetC9Eff( int decay_id, int res_swch, int ias, int Nf, double q2,
double m2, double md, double mc, double mu, double mt,
double Mw, double ml, double Relambda_qu,
double Imlambda_qu );
EvtComplex GetC10Eff( double mt, double Mw );
EvtComplex GetC7Eff( double mu, double Mw, double mt, int Nf, int ias );
};
#endif
diff --git a/EvtGenModels/Evtbs2llGammaAmp.hh b/EvtGenModels/Evtbs2llGammaAmp.hh
index a8c286b..8ec372f 100644
--- a/EvtGenModels/Evtbs2llGammaAmp.hh
+++ b/EvtGenModels/Evtbs2llGammaAmp.hh
@@ -1,46 +1,37 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtbTosllVectorAmpNew.hh
-//
-// Description:
-//
-// Modification history:
-//
-// A.Popov October 21, 2008 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBSTOLLGAMMA_AMP_HH
#define EVTBSTOLLGAMMA_AMP_HH
class EvtId;
class EvtAmp;
class EvtParticle;
class Evtbs2llGammaFF;
class EvtbTosllWilsCoeffNLO;
+// Description: Preparation of the decay amplitude for the process:
+// B^0_{q}(p,M1) -> gamma(k) ell^+(p1,m) ell^-(p2,m).
+//
+// Note: The code of this module is based on the EvtbTosllVectorAmp.cpp
+// module code.
+// The main functiom for the amplitude calculation retuns the
+// amplitude for the decay B -> gamma ell^+ ell^-
+// In our calculations we assume, that photon is the first
+// daughter particle (iG=0) and leptons are the second and thirds
+// daughter particles (il1=1 and il2=2).
+
class Evtbs2llGammaAmp {
public:
void CalcAmp( EvtParticle* parent, EvtAmp& amp, Evtbs2llGammaFF* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf,
int res_swch, int ias, double Egamma_min, double CKM_A,
double CKM_lambda, double CKM_barrho, double CKM_bareta );
double CalcMaxProb( EvtId parnum, EvtId photnum, EvtId l1num, EvtId l2num,
Evtbs2llGammaFF* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf,
int res_swch, int ias, double Egamma_min, double CKM_A,
double CKM_lambda, double CKM_barrho, double CKM_bareta );
double lambda( double a, double b, double c );
};
#endif
diff --git a/EvtGenModels/Evtbs2llGammaFF.hh b/EvtGenModels/Evtbs2llGammaFF.hh
index 1b10168..ee3a66c 100644
--- a/EvtGenModels/Evtbs2llGammaFF.hh
+++ b/EvtGenModels/Evtbs2llGammaFF.hh
@@ -1,46 +1,27 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech
-//
-// Module: Evtbs2llGammaFF.hh
-//
-// Description: This is the NEW base class for form factors in b->sll transitions.
-//
-// Modification history:
-//
-// N.Nikitin (nnikit@mail.cern.ch) October 13, 2008 Module created
-// A.Popov October 30, 2008 Add function "getPhotonFF"
-//
-//--------------------------------------------------------------------------------
-
#ifndef EVTBS2LLGAMMAFF_HH
#define EVTBS2LLGAMMAFF_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtId.hh"
+// Description: This is the NEW base class for form factors in b->sll transitions.
+
class Evtbs2llGammaFF {
public:
virtual ~Evtbs2llGammaFF(){};
virtual void getPhotonFF( int /*decay_id*/, double /*fb*/, EvtId /*parent*/,
double /*q2*/, double /*M1*/, double /*mb*/,
double /*mq*/, EvtComplex /*c7gam*/,
EvtComplex /*a1*/, EvtComplex /*lambda_qu */,
EvtComplex /*lambda_qc*/, EvtComplex& /*Fv*/,
EvtComplex& /*Fa*/, EvtComplex& /*Ftv*/,
EvtComplex& /*Fta*/ )
{
return;
};
virtual double getQuarkMass( int /*i*/ ) { return 0.0; };
};
#endif
diff --git a/EvtGenModels/Evtbs2llGammaFFMNT.hh b/EvtGenModels/Evtbs2llGammaFFMNT.hh
index df31413..24e83ab 100644
--- a/EvtGenModels/Evtbs2llGammaFFMNT.hh
+++ b/EvtGenModels/Evtbs2llGammaFFMNT.hh
@@ -1,48 +1,36 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: Evtbs2llGammaFFMNT.hh
-// Description: Form factors for rare radiative leptonic B-decays
-// according to the papers:
-// 1) F.Kruger, D.Melikhov, Phys. Rev. D67, 034002, 2003.
-// 2) D.Melikhov, N.Nikitin, Phys. Rev. D70, 114028, 2004.
-// 3) I.Balakireva, D.Melikhov, N.Nikitin, D.Tlisov,
-// e-Print: arXiv:0911.0605 [hep-ph].
-//
-// Modification history:
-//
-// A.Popov October 30, 2008 Module created
-// N.Nikitin February 25, 2010 Module modifided
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBS2LLGAMMAFFMNT_HH
#define EVTBS2LLGAMMAFFMNT_HH
#include "EvtGenModels/Evtbs2llGammaFF.hh"
class EvtId;
class EvtComplex;
+// Description: Form factors for rare radiative leptonic B-decays
+// according to the papers:
+// 1) F.Kruger, D.Melikhov, Phys. Rev. D67, 034002, 2003.
+// 2) D.Melikhov, N.Nikitin, Phys. Rev. D70, 114028, 2004.
+// 3) I.Balakireva, D.Melikhov, N.Nikitin, D.Tlisov,
+// e-Print: arXiv:0911.0605 [hep-ph].
+// Description: Form-factors for B_q -> gamma transitions, q={d,s}
+// according to the papers:
+// 1) F.Kruger, D.Melikhov, Phys. Rev. D67, 034002, 2003.
+// 2) D.Melikhov, N.Nikitin, Phys. Rev. D70, 114028, 2004.
+// 3) I.Balakireva, D.Melikhov, N.Nikitin, D.Tlisov,
+// Phys. Rev. D81, 054024, 2010.
+
class Evtbs2llGammaFFMNT : public Evtbs2llGammaFF {
public:
Evtbs2llGammaFFMNT();
void getPhotonFF( int decay_id, double fb, EvtId parent, double q2,
double M1, double mb, double mq, EvtComplex c7gam,
EvtComplex a1, EvtComplex lambda_qu, EvtComplex lambda_qc,
EvtComplex& Fv, EvtComplex& Fa, EvtComplex& Ftv,
EvtComplex& Fta ) override;
double getQuarkMass( int i ) override;
};
#endif
diff --git a/EvtGenModels/Evtbs2llGammaISRFSR.hh b/EvtGenModels/Evtbs2llGammaISRFSR.hh
index 8fdf632..dffef33 100644
--- a/EvtGenModels/Evtbs2llGammaISRFSR.hh
+++ b/EvtGenModels/Evtbs2llGammaISRFSR.hh
@@ -1,49 +1,31 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech
-//
-// Module: Evtbs2llGammaISRFSR.hh
-//
-// Description: See the Internal LHCb Note LHCb-INT-2011-011.
-//
-// Modification history:
-//
-// N.Nikitin December 09, 2014 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBS2LLGAMMAISRFSR_HH
#define EVTBS2LLGAMMAISRFSR_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class Evtbs2llGammaFF; // my class with ff for rare semileptonic B-decays
class Evtbs2llGammaISRFSRAmp; // my class with amplitudes for rare radiative leptonic B-decays
class EvtbTosllWilsCoeffNLO; // my class with Wilson coefficients in NLO
+// Description: See the Internal LHCb Note LHCb-INT-2011-011.
+
class Evtbs2llGammaISRFSR : public EvtDecayAmp {
public:
Evtbs2llGammaISRFSR() {}
virtual ~Evtbs2llGammaISRFSR();
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
private:
Evtbs2llGammaFF* _mntffmodel;
Evtbs2llGammaISRFSRAmp* _calcamp;
EvtbTosllWilsCoeffNLO* _wilscoeff;
};
#endif
diff --git a/EvtGenModels/Evtbs2llGammaISRFSRAmp.hh b/EvtGenModels/Evtbs2llGammaISRFSRAmp.hh
index 57849b7..fb74697 100644
--- a/EvtGenModels/Evtbs2llGammaISRFSRAmp.hh
+++ b/EvtGenModels/Evtbs2llGammaISRFSRAmp.hh
@@ -1,48 +1,40 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/Evtbs2llGammaISRFSRAmp.hh
-//
-// Description: See the Internal LHCb Note LHCb-INT-2011-011.
-//
-// Modification history:
-//
-// N.Nikitin December 09, 2014 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBSTOLLGAMMAISRFSR_AMP_HH
#define EVTBSTOLLGAMMAISRFSR_AMP_HH
class EvtId;
class EvtAmp;
class EvtParticle;
class Evtbs2llGammaFF;
class EvtbTosllWilsCoeffNLO;
+// Description: Preparation of the decay amplitude for the process:
+// B^0_{q}(p,M1) -> gamma(k) ell^+(p1,m) ell^-(p2,m).
+// See the Internal LHCb Note LHCb-INT-2011-011.
+//
+// Note: The code of this module is based on the EvtbTosllVectorAmp.cpp
+// module code.
+// The main functiom for the amplitude calculation retuns the
+// amplitude for the decay B -> gamma ell^+ ell^-
+// In our calculations we assume, that photon is the first
+// daughter particle (iG=0) and leptons are the second and thirds
+// daughter particles (il1=1 and il2=2).
+
class Evtbs2llGammaISRFSRAmp {
public:
void CalcAmp( EvtParticle* parent, EvtAmp& amp, Evtbs2llGammaFF* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf, int sr,
int res_swch, int ias, double Egamma_min, double CKM_A,
double CKM_lambda, double CKM_barrho, double CKM_bareta,
double mumumass_min );
double CalcMaxProb( EvtId parnum, EvtId photnum, EvtId l1num, EvtId l2num,
Evtbs2llGammaFF* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf,
int sr, int res_swch, int ias, double Egamma_min,
double CKM_A, double CKM_lambda, double CKM_barrho,
double CKM_bareta, double mumumass_min );
double lambda( double a, double b, double c );
};
#endif
diff --git a/EvtGenModels/Evtbs2llGammaMNT.hh b/EvtGenModels/Evtbs2llGammaMNT.hh
index 778f901..a86326b 100644
--- a/EvtGenModels/Evtbs2llGammaMNT.hh
+++ b/EvtGenModels/Evtbs2llGammaMNT.hh
@@ -1,55 +1,36 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech
-//
-// Module: Evtbs2llGammaMNT.hh
-//
-// Description: the B -> Gamma ell^+ ell^- decay channel description
-// based on the papers:
-// D.Melikhov, N.Nikitin, K.Toms, Yad. Fiz. 62, No 11
-// and
-// I.Balakireva, D.Melikhov, N.Nikitin, D.Tlisov,
-// e-Print: arXiv:0911.0605 [hep-ph].
-//
-// Modification history:
-//
-// A.Popov October 30, 2008 Module created
-// A.Popov and N.Nikitin February 25, 2010 New description of CP-violation
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBS2LLGAMMAMNT_HH
#define EVTBS2LLGAMMAMNT_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class Evtbs2llGammaFF; // my class with ff for rare semileptonic B-decays
class Evtbs2llGammaAmp; // my class with amplitudes for rare semileptonic B-decays
class EvtbTosllWilsCoeffNLO; // my class with Wilson coefficients in NLO
+// Description: the B -> Gamma ell^+ ell^- decay channel description
+// based on the papers:
+// D.Melikhov, N.Nikitin, K.Toms, Yad. Fiz. 62, No 11
+// and
+// I.Balakireva, D.Melikhov, N.Nikitin, D.Tlisov,
+// e-Print: arXiv:0911.0605 [hep-ph].
+
class Evtbs2llGammaMNT : public EvtDecayAmp {
public:
Evtbs2llGammaMNT() {}
virtual ~Evtbs2llGammaMNT();
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
private:
Evtbs2llGammaFF* _mntffmodel;
Evtbs2llGammaAmp* _calcamp;
EvtbTosllWilsCoeffNLO* _wilscoeff;
};
#endif
diff --git a/EvtGenModels/EvtbsToLLLL.hh b/EvtGenModels/EvtbsToLLLL.hh
index f1ed383..d4ec777 100644
--- a/EvtGenModels/EvtbsToLLLL.hh
+++ b/EvtGenModels/EvtbsToLLLL.hh
@@ -1,49 +1,29 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech
-//
-// Module: EvtGen/EvtbsToLLLL.hh
-//
-// Description:
-//
-// Modification history:
-//
-// N.Nikitin (nnikit@mail.cern.ch) July 24, 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBSTOLLLL_HH
#define EVTBSTOLLLL_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class Evtbs2llGammaFF; // my class with ff for rare semileptonic B-decays
class EvtbsToLLLLAmp; // my class with amplitudes for rare four-leptonic B-decays
class EvtbTosllWilsCoeffNLO; // my class with Wilson coefficients in NLO
class EvtbsToLLLL : public EvtDecayAmp {
public:
EvtbsToLLLL(){};
virtual ~EvtbsToLLLL();
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
private:
Evtbs2llGammaFF* _mntffmodel;
EvtbsToLLLLAmp* _calcamp;
EvtbTosllWilsCoeffNLO* _wilscoeff;
};
#endif
diff --git a/EvtGenModels/EvtbsToLLLLAmp.hh b/EvtGenModels/EvtbsToLLLLAmp.hh
index aa33e56..d1b4015 100644
--- a/EvtGenModels/EvtbsToLLLLAmp.hh
+++ b/EvtGenModels/EvtbsToLLLLAmp.hh
@@ -1,51 +1,31 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtbsToLLLLAmp.hh
-//
-// Description:
-//
-// Modification history:
-//
-// N.Nikitin Jult 24, 2011 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBSTOLLLL_AMP_HH
#define EVTBSTOLLLL_AMP_HH
class EvtId;
class EvtAmp;
class EvtParticle;
class Evtbs2llGammaFF;
class EvtbTosllWilsCoeffNLO;
class EvtbsToLLLLAmp {
public:
void CalcAmp( EvtParticle* parent, EvtAmp& amp, Evtbs2llGammaFF* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf,
int res_swch, int ias, double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta );
double CalcMaxProb(
// EvtId parnum,
// EvtId l1num, EvtId l2num,
// EvtId l3num, EvtId l4num,
// Evtbs2llGammaFF *formFactors,
// EvtbTosllWilsCoeffNLO *WilsCoeff,
// double mu, int Nf, int res_swch, int ias,
// double CKM_A, double CKM_lambda,
// double CKM_barrho, double CKM_bareta
);
double lambda( double a, double b, double c );
};
#endif
diff --git a/EvtGenModels/EvtbsToLLLLHyperCP.hh b/EvtGenModels/EvtbsToLLLLHyperCP.hh
index eedbb45..539def6 100644
--- a/EvtGenModels/EvtbsToLLLLHyperCP.hh
+++ b/EvtGenModels/EvtbsToLLLLHyperCP.hh
@@ -1,45 +1,25 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech
-//
-// Module: EvtGen/EvtbsToLLLLHyperCP.hh
-//
-// Description:
-//
-// Modification history:
-//
-// N.Nikitin (nnikit@mail.cern.ch) May 30, 2012 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBSTOLLLL_HYPERCP_HH
#define EVTBSTOLLLL_HYPERCP_HH
#include "EvtGenBase/EvtDecayAmp.hh"
class EvtParticle;
class EvtbsToLLLLHyperCPAmp; // my class with amplitudes for rare four-leptonic B-decays
class EvtbsToLLLLHyperCP : public EvtDecayAmp {
public:
EvtbsToLLLLHyperCP(){};
virtual ~EvtbsToLLLLHyperCP();
std::string getName() override;
EvtDecayBase* clone() override;
void init() override;
void initProbMax() override;
void decay( EvtParticle* p ) override;
private:
EvtbsToLLLLHyperCPAmp* _calcamp;
};
#endif
diff --git a/EvtGenModels/EvtbsToLLLLHyperCPAmp.hh b/EvtGenModels/EvtbsToLLLLHyperCPAmp.hh
index 0bee7a4..0a99233 100644
--- a/EvtGenModels/EvtbsToLLLLHyperCPAmp.hh
+++ b/EvtGenModels/EvtbsToLLLLHyperCPAmp.hh
@@ -1,45 +1,34 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtbsToLLLLHyperCPAmp.hh
-//
-// Description:
-//
-// Modification history:
-//
-// N.Nikitin May 11, 2012 Module created
-//
-//------------------------------------------------------------------------
-
#ifndef EVTBSTOLLLL_HYPERCPAMP_HH
#define EVTBSTOLLLL_HYPERCPAMP_HH
class EvtId;
class EvtAmp;
class EvtParticle;
+// Description: Preparation of the decay amplitude for the process:
+// B^0_{q}(p,M1) -> ell^+(k1,m) ell^-(k2,m) ell^+(k3,m) ell^-(k4,m)
+// in the HyperCP model.
+//
+// [1] D.S.Gorbunov, Nucl.Phys.B602, pp.213-237 (2001);
+// [2] S.V. Demidov, D.S.Gorbunov, hep-ph/1112.5230v2, 17 April 2012.
+//
+// Note: The code of this module is based on the EvtbsToLLLLAmp.cpp module code.
+
class EvtbsToLLLLHyperCPAmp {
public:
void CalcAmp( EvtParticle* parent, EvtAmp& amp, double mS, double mP,
double gammaS, double gammaP, double mLiiLR, double Fc,
double mD23LL, double mD23RR, double mD32LL, double mD32RR,
double mD13LL, double mD13RR, double mD31LL, double mD31RR );
double CalcMaxProb( EvtId parnum, EvtId l1num, EvtId l2num, EvtId l3num,
EvtId l4num, double mS, double mP, double gammaS,
double gammaP, double mLiiLR, double Fc, double mD23LL,
double mD23RR, double mD32LL, double mD32RR,
double mD13LL, double mD13RR, double mD31LL,
double mD31RR );
double lambda( double a, double b, double c );
};
#endif
diff --git a/History.txt b/History.txt
index 2665f81..14a4813 100644
--- a/History.txt
+++ b/History.txt
@@ -1,616 +1,625 @@
//==========================================================================
//
// History file for EvtGen
//
//===========================================================================
+15th Apr 2020 Tom Latham
+ Add text of GNU GPLv3 in COPYING, add (preliminary) list of authors in
+ AUTHORS, and clean-up all source files, prior to applying copyright and
+ licence notices.
+
+9th Apr 2020 Tom Latham
+ Improve, and document use of, standalone installation script.
+ Apply clang-format formatting to all C++ source files.
+
8th Apr 2020 Tom Latham
One small modernisation change to EvtPhotosEngine to match that already
applied in EvtTauolaEngine.
8th Apr 2020 John Back
Fixed NonReson amplitude and the 4-momentum boosts used for angles in
EvtLambdacPHH, courtesy of Elisabeth Niel (LHCb).
7th Apr 2020 Gerhard Raven, Tom Latham, Michal Kreps and John Back
Incorporate C++ modernization changes from Gerhard Raven (LHCb).
Merged modernize branch into master.
9th Mar 2020 John Back
Add EvtAbsExternalGen::getDecayProb() to allow external generators to
return a probability that can be used in EvtDecayProb (default = 1).
6th Mar 2020 Andrii Verbytskyi and Tom Latham
Implement HepMC3 support: EvtHepMCEvent, external engines & cmake files.
15th Nov 2019 John Back
Added EvtPsi2JpsiPiPi model for psi2S -> J/psi pi+ pi- decays based on
hep-ph/1507.07985, courtesy of Aleksei Luchinsky (LHCb).
21st August 2019 Michal Kreps
Added the EvtDToKpienu decay model for D -> K pi e nu decays from
BESIII, courtesy of Liaoyuan Dong.
16th July 2019 John Back
Correct imaginary sign for EvtComplex /= (EvtComplex c) operator.
3rd July 2019 John Back
Added the EvtLambdacPHH decay model for Lc -> p K pi decays with K*(890),
Delta++(1232) and Lambda(1520) resonances, based on the Fermilab E791
analysis hep-ex/9912003v1, courtesy of Elisabeth Niel and Patrick Robbe
(LHCb). Modified EvtResonance2 to accept other barrier factor radii.
3rd July 2019 Michal Kreps
Make sure minimum mass for resonances with non-zero widths is larger than
1e-4 GeV in EvtRelBreitWignerBarrierFact.
3rd May 2019 John Back
Corrected EvtSLDiBaryonAmp bugs/issues in the BToDiBaryonlnupQCD model:
parity, amplitude terms and B momentum reference frame variables.
Corrected treament of spinor indices in EvtRareLb2Lll, courtesy of
Tom Blake and Michal Kreps (LHCb).
Updated the EvtBcVHad model to also handle Bc -> psi Ks K decays,
courtesy of Aleksei Luchinsky (LHCb).
Add new decay model EvtBsMuMuKK (BS_MUMUKK) for Bs to J/psi (mu+mu-) K+K-,
courtesy of Veronika Chobanova, Jeremy Dalseno, Diego Martinez Santos and
Marcos Romero Lamas (LHCb).
Fix infinite loop during initialisation of the EvtBTo3hCP model via
EvtCBTo3piP00 and EvtCBTo3piMPP, courtesy of Peter Richardson (Durham).
15th March 2019 Tom Latham
Implement cmake build system, replacing the old config method.
30th Jan 2019 John Back
Fix modernization compiler errors and warnings.
29th Jan 2019 Michal Kreps
Allow reading decay files which are missing end-of-line before end-of-file.
21st December 2018 John Back
Imported C++ modernization changes from Gerhard Raven (LHCb).
7th December 2018 John Back
Added the EvtBLLNuL (BLLNUL) model that generates rare B -> ell ell nu ell
decays, where ell = e or mu, courtesy of Anna Danilina and Nikolai Nikitin
(LHCb). Removed the EvtB2MuMuMuNu (BUTOMMMN) model, since its now replaced
by the more general BLLNuL one.
5th November 2018 John Back
Added the BToDiBaryonlnupQCD model for generating B to p N* l nu decays,
where N can be any (exited) charged baryon (spin 1/2 or 3/2), courtesy of
Mark Smith and Ryan Newcombe (LHCb), with added code optimisations.
17th October 2018 John Back
Added various decay models from LHCb EvtGenExtras package:
EvtBcVHad ("BC_VHAD"), Evtbs2llGammaMNT ("BSTOGLLMNT"),
Evtbs2llGammaISRFSR ("BSTOGLLISRFSR"), EvtbTosllMS ("BTOSLLMS"),
EvtbTosllMSExt ("BTOSLLMSEXT"), EvtLb2Baryonlnu ("Lb2Baryonlnu"),
EvtLb2plnuLCSR ("Lb2plnuLCSR"), EvtLb2plnuLQCD ("Lb2plnuLQCD"),
EvtFlatSqDalitz ("FLATSQDALITZ") and EvtPhspFlatLifetime
("PHSPFLATLIFETIME").
5th October 2018 John Back
Updated setupEvtGen.sh to work with the new HepForge Phabricator site.
13th March 2018 John Back
Updated EvtPythiaEngine to correctly handle updates of various particle
properties so that Pythia uses the same information as EvtGen (evt.pdl)
for the generic and alias PYTHIA decay model.
12th March 2018 John Back
Updated EvtBcXMuNu models (X = Scalar, Vector, Tensor) to generate
Bc to D0(star) mu nu decays, with associated form factors in EvtBCXFF,
courtesy of Aleksei Luchinsky (LHCb). Also generalised the calculation
of their maximum probabilities by reusing the CalcMaxProb method in
EvtSemiLeptonicAmp, which now allows for different Q^2 binning
(default remains at 25 bins).
R01-07-00-------------------------------------------------------------------
13th December 2017 John Back
New tag incorporating all changes below. Recommended external packages
are HepMC 2.06.09, pythia 8.230, Photos++ 3.61 and Tauola++ 1.1.6c,
as used in the setupEvtGen.sh script.
12th December 2017 John Back
Changed Pythia validation example decay files to use Pythia8 codes.
6th December 2017 John Back
Modified the examples to use DECAY.DEC (see 25th April 2016) instead of
DECAY_2010.DEC. Changed EvtExternalGenList to assume Pythia8 codes are
used in decay files by default, which is the case for DECAY.DEC. Also
updated the setupEvtGen.sh script to work with Pythia 8.2x versions.
29th November 2017 John Back
Modified EvtSVP, EvtVVP and EvtTVP models to handle both radiative and
two-lepton decays, courtesy of Aleksei Luchinsky (LHCb).
14th July 2017 John Back
Only create external generator objects if they don't already exist in
EvtExternalGenFactory. Modified configure script to work with Pythia 8.2x
5th July 2017 Michal Kreps
Register the VTOSLL model.
14th June 2017 John Back
Add isNeutralKaon() boolean function and corrected comments in EvtDDalitz.
8th May 2017 Michal Kreps
Fix bug in EvtbTosllVectorAmp to recognise Bs --> K*bar mu mu decay as
b --> d ll transition.
8th May 2017 Michal Kreps
Significantly simplify way how we decide on decay mode and daughters
ordering in DDalitz model. With new code by definition all orderings of
daughters in the decay file will yield same output.
4th May 2017 John Back
Further fixes to DDalitz particle ordering (including charge-conjugates):
Mode 5: D0 -> K- K0bar K+ and K+ K- K0bar
Mode 12: D0 -> pi0 pi- pi+ and pi+ pi0 pi-
Removed unneeded index ordering checks for mode 10 (D+ -> pi- pi+ pi+)
and mode 11 (Ds+ -> pi- pi+ pi+)
27th April 2017 John Back
Fixed DDalitz particle ordering for mode 7: D+ -> pi+ K- K+ and K+ pi+ K-
and their charge-conjugates
7th April 2017 John Back
Modified EvtGenExternal/EvtPythiaEngine to ensure that the EvtGen-based
instances of Pythia8 (for generic and alias decays) use the same
particle properties as defined by EvtGen, courtesy Patrick Robbe (LHCb).
5th April 2017 Michal Kreps
Fixed indexing in copy constructor of Evt3Rank3C, which would otherwise
produce an infinite loop; bug report from David Grellscheid.
3rd November 2016 John Back
Modified EvtFlatQ2 model to work for all B -> X lepton lepton modes, as
well as adding an extra phase space factor to correct for the dip at low
q^2, courtesy of Marcin Chrzaszcz & Thomas Blake (LHCb), which is enabled
by using "FLATQ2 1" instead of just "FLATQ2" in the decay file.
13th October 2016 John Back
Added the TauolaCurrentOption decfile keyword to select the hadronic
current in Tauola; default is the BaBar-tuned current option (int = 1).
EvtParticles can store double attributes using the functions
setAttributeDouble(name, double) and getAttributeDouble(name), which can
be useful for storing and retrieving amplitude weights, for example.
The analogous EvtParticle integer attribute interface remains unchanged:
setAttribute(name, int) and getAttribute(name).
13th September 2016 John Back
Modified EvtTauolaEngine to use internal Tauola spin matrices for
tau pair events by temporarily setting the PDG id of the mother as a
boson, keeping the same 4-momentum. The BaBar hadronic currents are now
used by default. Also added the ability to change some Tauola parameters
using the "Define" keyword in decay files. Added an example decay file
illustrating the new features: validation/TauolaFiles/Btautau.dec
9th September 2016 Michal Kreps
Reimplement code in EvtBTo3pi.F, EvtBTo3piMPP.F, EvtBTo3piP00.F and
EvtBToKpipi.F in C++ in order to remove dependence on Fortran compiler.
With this, there is no internal Fortran code in EvtGen.
R01-06-00-------------------------------------------------------------------
1st June 2016 John Back
New tag incorporating all changes below. Recommended external packages
are HepMC 2.06.09, pythia 8.186, Photos++ 3.61 and Tauola++ 1.1.5.
28th April 2016 Michal Kreps
For Ds+ --> 2pi+ pi- there was double counting of branching fraction
resulting in total branching fraction being 1.5 times larger than measured
one. Fix by revisiting submodes, which now fill total Ds --> 3pi.
25th April 2016 Michal Kreps
Added DECAY.DEC/XML, which contain updated semileptonic charm and beauty
branching fractions using the 2014 PDG, tuned to minimize disagreements
between measurements and EvtGen for both inclusive and exclusive decays.
Updated the evt.pdl particle properties file to the PDG 2014 edition.
Implemented new LQCD form factors for Lb --> L mu mu from arXiv paper
1602.01399 (EvtRareLbToLllFFlQCD); old LQCD form factors are removed.
18th March 2016 John Back
Fixed incorrect spinor algebra used in S1 -> 1/2 S2, 1/2 -> S3 S4 decays
in EvtDiracParticle::rotateToHelicityBasis() functions, courtesy of
Luis Miguel Garcia Martin and the IFIC Valencia LHCb group.
19th Feburary 2016 John Back
Fixed bug in the definition of the initial spinor term Sinit in
EvtRareLbToLll::HadronicAmpRS(), from Tom Blake (LHCb).
12th February 2016 John Back
From LHCb, added extensions to the EvtHQET2(FF) model for semitauonic
decays from Brian Hamilton, which needs a patch to EvtSemiLeptonicAmp
from Jack Wimberley to ensure that the q^2 range is physical when
finding the maximum amplitude probability.
2nd December 2015 John Back
From LHCb, added EvtKStopizmumu model for KS -> pi0 mu mu decays based on
JHEP08(1998)004, courtesy of Veronika Chobanova, Diego Martinez Santos
and Jeremy Dalseno. Added EvtConst::Fermi for Fermi coupling constant.
R01-05-00-------------------------------------------------------------------
21st October 2015 John Back
New tag incorporating all changes below. Recommended external packages
are HepMC 2.06.09, pythia 8.186, Photos++ 3.61 and Tauola++ 1.1.5.
Added the EvtB2MuMuMuNu model for simulating the very rare four-leptonic
decays B- -> mu+ mu- anti-nu_mu mu-, courtesy Nikolai Nikitin.
16th October 2015 John Back
Updated the configure script to automatically select the library names
for PHOTOS++; version 3.56 and below uses Fortran, version 3.61 and above
uses C++ only (default). Avoid using v3.60, since it does not work.
This needs the PHOTOS libraries built before EvtGen is configured.
Modified setupEvtGen.sh to use Photos++ v3.61.
7th October 2015 John Back
Updated EvtGenExternal/EvtPhotosEngine to check that additional particles
from the outgoing vertex are indeed (FSR) photons, since later versions of
PHOTOS introduce pair emission, where particles may not always be photons.
Added the genRootDecayChain.cc validation program to create ROOT files
containing information about the complete decay tree. Two example test
decay files BKstarGamma.dec and BuDst0rhop.dec can be used with this; the
first tests PHOTOS, the second looks at sequential decay chain storage.
The plotBKstarGamma.C ROOT macro can be used for B -> K* gamma plots.
2nd October 2015 John Back
Modified EvtSVPHelAmp and added a new EvtSVPHelCPMix model, implementing
the complete mixing phenomenology of Bs to vector gamma decays, courtesy
of Clara Remon (LHCb).
EvtD0mixDalitz code: cleanup, inverted q/p for decays of D0bar (simplifies
user decay files) and fixed y parameter bug, courtesy of Jordi Tico (LHCb).
Changed the initialisation order of the infrared cut-off in EvtPhotosEngine.
This actually has no effect, since the exponentiation function sets it to the
same 1e-7 value, but it's now in the correct order if we need to update it.
Removed all remaining obsolete pragma (Win32) warnings from some classes.
23rd September 2015 Michal Kreps
Reimplement the real Spence function in C++ and removed its fortran
implementation.
15th September 2015 Michal Kreps
Fixed accessed uninitialised memory in EvtPDL.cpp, line 213.
Modified the configure and setupEvtGen.sh scripts to work on Mac; needed
Mac compilation patch files added to the new "platform" subdirectory.
10th September 2015 John Back
Updated setupEvtGen.sh to use the recommended external packages:
HepMC 2.06.09, pythia 8.186, Photos++ 3.56 and Tauola++ 1.1.5.
Fixed form-factor calculations for the BTOSLLBALL model 6 used to generate
b -> sll decays, courtesy of Christoph Langenbruch and David Loh (LHCb).
Affects B->K*ll, B->rholl and B->omegall, particularly the electron modes.
In the validation directory, added runPhotosTest.sh for testing FSR in
Upsilon(4S) -> e+ e- decays, and changed the plot comparison scripts to
use the 2nd directory "oldRootFiles" (which could be a soft-link) for
including ROOT histograms made from a previous version of EvtGen.
27th August 2015 John Back
Added Mersenne-Twister random number generator (RNG) EvtMTRandomEngine.
It requires c++11 compiler features (>= gcc 4.7), which should
automatically be enabled by the configure script. Introduced the
preprocessor environment variable EVTGEN_CPP11 for c++11 features.
EvtMTRandomEngine is the default RNG for the validation and test examples
if c++11 features are enabled.
Added a phase-space test validation/genPHSP.sh and PhaseSpacePlots.C to
visually check the flatness of Dalitz plots in order to ensure that the
RNG is not producing biased results that depend on particle ordering.
Added the models EvtbsToLLLLAmp and EvtbsToLLLLHyperCP for
B0_q -> l+ l- l+ l- decays (SM and one supersymmetric scenario),
courtesy of Nikolai Nikitin and Konstantin Toms. Documentation provided
in doc/evt_BQTOLLLL_model.pdf and doc/evt_BQTOLLLLHYPERCP_model.pdf.
Changed the installation and set-up script name to be just setupEvtGen.sh;
it uses the VERSION variable to specify the required tag. List of tags
are available using either "svn ls -v http://svn.cern.ch/guest/evtgen/tags"
or by going to http://svn.cern.ch/guest/evtgen/tags in a web browser.
12th June 2015 John Back
Changed the width of chi_b1 in evt.pdl from 9.8928 GeV (!) to zero.
1st May 2015 John Back
Added Bc -> scalar ell nu (EvtBcSMuNu) and Bc -> tensor ell nu
(EvtBcTMuNu) decays, courtesy of Jack Wimberley, LHCb. Also included the
chi_c1 mode for EvtBcVMuNu.
R01-04-00-------------------------------------------------------------------
2nd April 2015 John Back
Removed the EvtStdlibRandomEngine class since this can produce biases
to kinematic distributions when one or more of the daughters is a
resonance, such as B0 -> K pi psi (thanks to Antonio Augusto Alves Jr
who discovered this issue). EvtSimpleRandomEngine is now the default
random number generator in the validation and test examples.
Incorporated several additions and modifications from LHCb:
a) From Michal Kreps, Tom Blake & Christoph Langenbruch,
added rare Lb --> Lambda^(*) ell ell models described in
arXiv:1108.6129, with various form factors from Gutsche et al.
(arXiv:1301.3737) and lattice QCD (arXiv:1212.4827)
b) From Andrew Crocombe, implemented Bs --> K* form factors
from Ball-Zwicky and z-parametrization form factors from
arXiv:1006.4945 for EvtbTosllBallFF
c) Christoph Langenbruch fixed the Bs -> phi ll form factors in
EvtbTosllBallFF; T3 showed a non-physical pole at very low
q2 which significantly affected the electron mode
d) From Michal Kreps, removed semicolons from wrong places to
clear warnings when compiled with the "-pedantic" option.
9th October 2014 John Back
Change svnweb.cern.ch to svn.cern.ch in the setup script.
1st April 2014 John Back
In EvtReport, modified the logging output severity status flags
to have the "EVTGEN_" prefix, e.g. INFO becomes EVTGEN_INFO.
The global report() function has been renamed to EvtGenReport().
31st March 2014 John Back
Added the ability to store named attributes for EvtParticles in the
form of a map<string, int>. The setAttribute(name, value) stores the
required value, while getAttribute(name) retrieves the integer value.
This is used in EvtPhotosEngine to specify the final-state radiation
"FSR" attribute to 1 for any additional photons (EvtPhotonParticles)
created by Photos++. It also stores the "ISR" attribute, but this
is always set to zero, since only FSR photons are created.
If the named attribute doesn't exist, then getAttribute() returns zero.
29th January 2014 Daniel Craik
Removed mass assertion on GS shape in EvtDalitzReso to allow it to also
be used for charged rho resonances.
27th January 2014 John Back
Minor corrections to Vub models to remove further gcc 4.8 warnings.
Updated configure script to work for MacOS clang (from Genser team).
R01-03-00-------------------------------------------------------------------
9th January 2014 John Back
New tag version "1.3.0", incorporating all changes below.
Replaced auto-install script to work with this version as well as
the latest versions of all external generator packages.
Updated README to mention the new CERN-based web pages for Photos++
and Tauola++.
8th January 2014 John Back
Fix gcc 4.6 and 4.8 compilation warnings, courtesy of
Patrick Robbe (LHCb); main changes are removal of unused variables.
Changed the EvtPythiaEngine class and configure script to use new
Pythia 8 header locations; Pythia 8.180 or above is now required.
7th January 2014 John Back
Modified EvtBCVFF to correct the Kiselev form factors from
Jack Wimberley (LHCb).
9th October 2013 Daniel Craik
Added Gounaris-Sakurai and Gaussian shapes to EvtGenericDalitz
and set sensible defaults for LASS parameters.
19th September 2013 John Back
Modified EvtGenExternal/EvtPythiaEngine to keep track of any new
particles that are added to the default Pythia database to avoid
duplicating particle/anti-particle entries that could override
previously defined Pythia decay chains.
18th September 2013 John Back
Added Mac OS flags for the configure script and src/Makefile.
15th July 2013 Daniel Craik
Added flag to turn on scaling of LASS amplitude by M/q in EvtDalitzReso
15th July 2013 Daniel Craik
EvtParserXML now accepts file names containing environment variables,
exponential non-resonant shape in EvtDalitzReso now defined as exp(-alpha*m^2),
LASS shape in EvtDalitzReso now takes a cutoff parameter
4th July 2013 Daniel Craik
Added LASS, exponential non-resonant and linear non-resonant shapes to EvtGenericDalitz.
3rd July 2013 Daniel Craik
Fixed auto-install script for R01-02-00.
1st July 2013 Daniel Craik
Added auto-install script for R01-02-00.
R01-02-00-------------------------------------------------------------------
15th May 2013 John Back
New tag, version "1.2.0", incorporating all changes below.
14th May 2013 Michal Kreps
Added Blatt-Weisskopf barrier factors up to L=5 in
EvtGenBase/EvtBlattWeisskopf::compute().
14th May 2013 John Back
Added additional entries (appended at the end) to the evt.pdl particle
data file courtesy of Romulus Godang and Belle II colleagues.
14th March 2013 John Back
Added the method EvtParticle::getPDGId() to get the PDG integer for a
particle directly (which just calls EvtPDL::getStdHep()).
Added a check in EvtPhotosEngine::doDecay to skip Photos if a given
particle has too many daughters (>= 10) to avoid a problem with a
hard coded upper limit in the Photos PHOENE subroutine.
2nd February 2013 Daniel Craik
Updated EvtDalitzTable to estimate probMax when it is missing from a
Dalitz model.
1st February 2013 John Back
Added the ability to read in Pythia 6 commands in ascii decay files in
EvtDecayTable::readDecayFile (this was already possible in xml files).
Modified the Photos++ engine default settings to be more suited to B
decays (from LHCb defaults).
31st January 2013 John Back
Added the ability to read in Pythia 8 commands in ascii decay files
in EvtDecayTable::readDecayFile. They can be set using the syntax:
"PythiaTypeParam module:variable=value", where Type = Generic, Alias or
Both for specifying whether the parameter is for the generic or alias
Pythia decay engines (or both). The 2nd argument must not contain any
spaces. Fixed the list of commands strings being used in the
EvtPythiaEngine class (i.e. Pythia parameters that can be set via decay
files).
31st January 2013 Daniel Craik
Added named parameters to various decay models.
30th January 2013 John Back
Fixed some of the parameter arguments used in the EvtSVSCPiso model.
24th January 2013 John Back
Set the Photos++ and Tauola++ models to use the EvtGen random number
engine when useEvtGenRandom is set to true in the EvtExternalGenList
constructor.
23rd January 2013 John Back
Added EvtGenExternal/EvtPythiaRandom to allow the use of the EvtGen
random number engine to also be used for the random engine for Pythia 8.
Added a boolean (useEvtGenRandom, default = true) within the
EvtExternalGenList constructor to use this feature.
18th December 2012 John Back
Corrected some wrong daughter ordering assignments for decay modes 5 and
12 in EvtDDalitz. Updated validation/DalitzDecays.xml to also contain
D decay mode 12, as well as various modes that may use K_S0 and K_L0.
Added validation/genDDalitzModes.sh and updated
validation/compareDalitz.C to do a complete comparison of the D Dalitz
modes with the xml versions.
11th December 2012 Daniel Craik
Updated the Xml parser to support named model parameters. Updated the
generic Dalitz model to use named model parameters as an example.
15th October 2012 John Back
Make EvtSimpleRandomEngine inherit from EvtRandomEngine to avoid
crash in EvtGen.cpp when no random engine is defined
(from Bjoern Spruck).
R01-01-00-------------------------------------------------------------------
4th October 2012 John Back
New tag, version "1.1.0", incorporating all changes below.
Provide proper default constructors for EvtVector4R and
EvtPhotonParticle. Modified the validation and test code to also
compile/link in the case of no external generators being included.
3rd October 2012 John Back
Corrected the t3 vector form factor values for the Ball-Zwicky '05
model (modelId = 6) in EvtbTosllBallFF::getVectorFF(), which
were set to t3tilde instead.
18th September 2012 John Back
Moved the external generator engines to a new sub-directory
EvtGenExternal. Building the code now creates 2 libraries:
libEvtGen.so (Base+Models) and libEvtGenExternal.so.
This allows anyone to ignore using the new external generators
if required (by not creating/loading the 2nd library).
Added prefix option to the configure script/Makefile to allow the user
to specify an installation directory for the include files, libraries,
DECAY.DEC and evt.pdl files (for Genser).
14th September 2012 Michal Kreps
Fixed the calculation of the angle between decay planes in the function
EvtKine::EvtDecayAngleChi. Fixed typo in EvtLb2Lll decay model. Only
some NP scenarious could be affected, SM one is definitely unaffected.
13th September 2012 John Back
Added the use of the environment variables EVTGEN_PHOTOS, EVTGEN_PYTHIA
and EVTGEN_TAUOLA to specify if the Photos, Pythia and/or Tauola engine
classes are used or not. These variables are set by the configure script,
depending if the library paths are specified for these generators.
R01-00-01--------------------------------------------------------------------
12th September 2012 John Back
New tag incorporating all changes below, since R01-00-00.
11th September 2012 John Back
Modified the Photos and Tauola engine classes to use the new
Photospp and Tauolapp namespaces that are present in the latest
versions of Photos++(3.5) and Tauola++(1.0.7). Updated the configure file
to get the correct location of the Tauola++ include files.
Added the D0->pi+pi-pi0 decay mode in EvtDDalitz from Marco Gersabeck
and Frederic Dreyer (LHCb).
Added new decay models/classes from Alexey Luchinsky (LHCb):
EvtBcVMuNu, EvtTVP, EvtWnPi, EvtSVP, EvtXPsiGamma, EvtBcVNpi
29th June 2012 John Back
Corrected mass(squared) variables filled in the Dalitz TTree in
validation/genExampleRootFiles.
15th May 2012 Daniel Craik
Updated EvtD0gammaDalitz to deal with D mesons from neutral B->DK
Added save function to validation/compareDalitz.C.
11th May 2012 Daniel Craik
Replaced BaBar specific configuration for BlattWeisskopf birth factors.
Updated XML conversion script to handle new configuration.
Fixed some bugs in the XML conversion script related to particle
modifications.
9th May 2012 Daniel Craik
Added latex documentation for xml decay files.
2nd May 2012 Daniel Craik
Added resDaughters attribute to the Dalitz resonance xml tag to
simplify defining symmetric resonances. Updated validation xml files to
use the new functionality.
27th April 2012 Daniel Craik
Upgraded EvtGenericDalitz to use EvtDalitzReso for resonances.
Added validation to compare EvtGenericDalitz to all 11 EvtDDalitz modes.
Added a root macro to quickly compare two Dalitz decays for validation.
24th April 2012 John Back
Solved two bugs in the EvtD0gammaDalitz model (from Jordi Tico, LHCb):
configuration of the conjugated model, and using only the B charge
to determine the model used, not the D flavour.
17th April 2012 Daniel Craik
Updated the GenericDalitz validation code to use the same probMax
values as DDalitz. Added XML decay file parsing to EvtGen::readUDecay.
Dec files are still the default.
30th March 2012 John Back
Update maximum probability values in EvtDDalitz::initProbMax()
for all DDalitz modes.
23rd March 2012 John Back
Added the EvtEta2MuMuGamma decay model from LHCb.
21st March 2012 John Back
Added EvtD0gammaDalitz decay model from LHCb.
20th March 2012 Daniel Craik
Added backwards compatibility for Pythia 6 commands in the XML
configuration. Updated decay file conversion tool to convert JetSetPar
lines to pythia6Param tags.
19th March 2012 Daniel Craik
Added infrastructure to pass commands to external generators.
XML config now takes Pythia8 configuration commands.
16th March 2012 Daniel Craik
Added the ability to define particles from the PDL for Dalitz decay
resonances instead of defining mass, width and spin seperately. Renamed
the lifetime attribute of Dalitz decay resonaces to width to avoid
confusion. Added further validation code for the generic Dalitz model.
15th March 2012 Daniel Craik
Added validation code for xml decay files and the generic Dalitz model.
R01-00-00 ------------------------------------------------------------------
6th March 2012 John Back
First official version for Genser (evtgen 1.0.0) that includes
support for external generators: Pythia8, Photos++ and Tauola++.
This also includes a preliminary version of creating Dalitz plot
decay models using EvtGenericDalitz.
diff --git a/src/EvtGen.cpp b/src/EvtGen.cpp
index 191b485..67d73fb 100644
--- a/src/EvtGen.cpp
+++ b/src/EvtGen.cpp
@@ -1,192 +1,171 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen.cc
-//
-// Description: Main class to provide user interface to EvtGen.
-//
-// Modification history:
-//
-// RYD March 24, 1998 Module created
-// JBack June 2011 Added HepMC event interface
-//
-//------------------------------------------------------------------------
-//
#include "EvtGen/EvtGen.hh"
#include "EvtGenBase/EvtAbsRadCorr.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtDecayTable.hh"
#include "EvtGenBase/EvtHepMCEvent.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtParticleFactory.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRadCorr.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtRandomEngine.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSimpleRandomEngine.hh"
#include "EvtGenBase/EvtStatus.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtModelReg.hh"
#include "EvtGenModels/EvtNoRadCorr.hh"
#include <cstdlib>
#include <fstream>
#include <string>
using std::endl;
using std::fstream;
using std::ifstream;
EvtGen::~EvtGen()
{
//This is a bit ugly, should not do anything
//in a destructor. This will fail if EvtGen is made a static
//because then this destructor might be called _after_
//the destruction of objects that it depends on, e.g., EvtPDL.
if ( getenv( "EVTINFO" ) ) {
EvtDecayTable::getInstance()->printSummary();
}
}
EvtGen::EvtGen( const char* const decayName, const char* const pdtTableName,
EvtRandomEngine* randomEngine, EvtAbsRadCorr* isrEngine,
const std::list<EvtDecayBase*>* extraModels, int mixingType,
bool useXml )
{
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Initializing EvtGen" << endl;
if ( randomEngine == 0 ) {
static EvtSimpleRandomEngine defaultRandomEngine;
EvtRandom::setRandomEngine( &defaultRandomEngine );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "No random engine given in "
<< "EvtGen::EvtGen constructor, "
<< "will use default EvtSimpleRandomEngine." << endl;
} else {
EvtRandom::setRandomEngine( randomEngine );
}
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Storing known decay models" << endl;
EvtModelReg dummy( extraModels );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Main decay file name :" << decayName << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "PDT table file name :" << pdtTableName << endl;
_pdl.readPDT( pdtTableName );
if ( useXml ) {
EvtDecayTable::getInstance()->readXMLDecayFile( decayName, false );
} else {
EvtDecayTable::getInstance()->readDecayFile( decayName, false );
}
_mixingType = mixingType;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Mixing type integer set to " << _mixingType << endl;
EvtCPUtil::getInstance()->setMixingType( _mixingType );
// Set the radiative correction engine
if ( isrEngine != 0 ) {
EvtRadCorr::setRadCorrEngine( isrEngine );
} else {
// Owing to the pure abstract interface, we still need to define a concrete
// implementation of a radiative correction engine. Use one which does nothing.
EvtAbsRadCorr* noRadCorr = new EvtNoRadCorr();
EvtRadCorr::setRadCorrEngine( noRadCorr );
}
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Done initializing EvtGen" << endl;
}
void EvtGen::readUDecay( const char* const uDecayName, bool useXml )
{
ifstream indec;
if ( uDecayName[0] == 0 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Is not reading a user decay file!" << endl;
} else {
indec.open( uDecayName );
if ( indec ) {
if ( useXml ) {
EvtDecayTable::getInstance()->readXMLDecayFile( uDecayName, true );
} else {
EvtDecayTable::getInstance()->readDecayFile( uDecayName, true );
}
} else {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Can not find UDECAY file '" << uDecayName << "'. Stopping"
<< endl;
::abort();
}
}
}
EvtHepMCEvent* EvtGen::generateDecay( int PDGId, EvtVector4R refFrameP4,
EvtVector4R translation,
EvtSpinDensity* spinDensity )
{
EvtParticle* theParticle( 0 );
if ( spinDensity == 0 ) {
theParticle = EvtParticleFactory::particleFactory(
EvtPDL::evtIdFromStdHep( PDGId ), refFrameP4 );
} else {
theParticle = EvtParticleFactory::particleFactory(
EvtPDL::evtIdFromStdHep( PDGId ), refFrameP4, *spinDensity );
}
generateDecay( theParticle );
EvtHepMCEvent* hepMCEvent = new EvtHepMCEvent();
hepMCEvent->constructEvent( theParticle, translation );
theParticle->deleteTree();
return hepMCEvent;
}
void EvtGen::generateDecay( EvtParticle* p )
{
int times = 0;
do {
times += 1;
EvtStatus::initRejectFlag();
p->decay();
//ok then finish.
if ( EvtStatus::getRejectFlag() == 0 ) {
times = 0;
} else {
for ( size_t ii = 0; ii < p->getNDaug(); ii++ ) {
EvtParticle* temp = p->getDaug( ii );
temp->deleteTree();
}
p->resetFirstOrNot();
p->resetNDaug();
}
if ( times == 10000 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Your event has been rejected 10000 times!" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Will now abort." << endl;
::abort();
times = 0;
}
} while ( times );
}
diff --git a/src/EvtGenBase/Evt3Rank3C.cpp b/src/EvtGenBase/Evt3Rank3C.cpp
index ebb72f8..0e03ae6 100644
--- a/src/EvtGenBase/Evt3Rank3C.cpp
+++ b/src/EvtGenBase/Evt3Rank3C.cpp
@@ -1,281 +1,262 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: Evt3Rank3C.cc
-//
-// Description: Implementation of complex 3Rank 3D tensors.
-//
-// Modification history:
-//
-// RYD September 14, 1996 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenBase/Evt3Rank3C.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor3C.hh"
#include "EvtGenBase/EvtVector3C.hh"
#include <iostream>
#include <math.h>
Evt3Rank3C::Evt3Rank3C( const Evt3Rank3C& t1 )
{
int i, j, k;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
for ( k = 0; k < 3; k++ ) {
t[i][j][k] = t1.t[i][j][k];
}
}
}
}
Evt3Rank3C& Evt3Rank3C::operator=( const Evt3Rank3C& t1 )
{
int i, j, k;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
for ( k = 0; k < 3; k++ ) {
t[i][j][k] = t1.t[i][j][k];
}
}
}
return *this;
}
Evt3Rank3C Evt3Rank3C::conj() const
{
Evt3Rank3C temp;
int i, j, k;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
for ( k = 0; k < 3; k++ ) {
temp.set( i, j, k, ::conj( t[i][j][k] ) );
}
}
}
return temp;
}
void Evt3Rank3C::zero()
{
int i, j, k;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
for ( k = 0; k < 3; k++ ) {
t[i][j][k] = EvtComplex( 0.0, 0.0 );
}
}
}
}
Evt3Rank3C::Evt3Rank3C()
{
int i, j, k;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
for ( k = 0; k < 3; k++ ) {
t[i][j][k] = EvtComplex( 0.0, 0.0 );
}
}
}
}
std::ostream& operator<<( std::ostream& s, const Evt3Rank3C& t2 )
{
int i, j, k;
for ( k = 0; k < 3; k++ ) {
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << t2.t[k][i][j];
}
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "\n";
}
}
return s;
}
Evt3Rank3C& Evt3Rank3C::operator+=( const Evt3Rank3C& t2 )
{
int i, j, k;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
for ( k = 0; k < 3; k++ ) {
t[i][j][k] += t2.t[i][j][k];
}
}
}
return *this;
}
Evt3Rank3C& Evt3Rank3C::operator-=( const Evt3Rank3C& t2 )
{
int i, j, k;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
for ( k = 0; k < 3; k++ ) {
t[i][j][k] -= t2.t[i][j][k];
}
}
}
return *this;
}
Evt3Rank3C& Evt3Rank3C::operator*=( const EvtComplex& c )
{
int i, j, k;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
for ( k = 0; k < 3; k++ ) {
t[i][j][k] *= c;
}
}
}
return *this;
}
Evt3Rank3C& Evt3Rank3C::operator*=( const double c )
{
int i, j, k;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
for ( k = 0; k < 3; k++ ) {
t[i][j][k] *= c;
}
}
}
return *this;
}
Evt3Rank3C conj( const Evt3Rank3C& t2 )
{
Evt3Rank3C temp;
int i, j, k;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
for ( k = 0; k < 3; k++ ) {
temp.t[i][j][k] = ::conj( t2.t[i][j][k] );
}
}
}
return temp;
}
EvtTensor3C Evt3Rank3C::cont1( const EvtVector3C& v ) const
{
EvtTensor3C temp;
int i, k;
for ( i = 0; i < 3; i++ ) {
for ( k = 0; k < 3; k++ ) {
temp.set( i, k,
t[0][i][k] * v.get( 0 ) + t[1][i][k] * v.get( 1 ) +
t[2][i][k] * v.get( 2 ) );
}
}
return temp;
}
EvtTensor3C Evt3Rank3C::cont2( const EvtVector3C& v ) const
{
EvtTensor3C temp;
int i, k;
for ( i = 0; i < 3; i++ ) {
for ( k = 0; k < 3; k++ ) {
temp.set( i, k,
t[i][0][k] * v.get( 0 ) + t[i][1][k] * v.get( 1 ) +
t[i][2][k] * v.get( 2 ) );
}
}
return temp;
}
EvtTensor3C Evt3Rank3C::cont3( const EvtVector3C& v ) const
{
EvtTensor3C temp;
int i, k;
for ( i = 0; i < 3; i++ ) {
for ( k = 0; k < 3; k++ ) {
temp.set( i, k,
t[i][k][0] * v.get( 0 ) + t[i][k][1] * v.get( 1 ) +
t[i][k][2] * v.get( 2 ) );
}
}
return temp;
}
EvtTensor3C Evt3Rank3C::cont1( const EvtVector3R& v ) const
{
EvtTensor3C temp;
int i, k;
for ( i = 0; i < 3; i++ ) {
for ( k = 0; k < 3; k++ ) {
temp.set( i, k,
t[0][i][k] * v.get( 0 ) + t[1][i][k] * v.get( 1 ) +
t[2][i][k] * v.get( 2 ) );
}
}
return temp;
}
EvtTensor3C Evt3Rank3C::cont2( const EvtVector3R& v ) const
{
EvtTensor3C temp;
int i, k;
for ( i = 0; i < 3; i++ ) {
for ( k = 0; k < 3; k++ ) {
temp.set( i, k,
t[i][0][k] * v.get( 0 ) + t[i][1][k] * v.get( 1 ) +
t[i][2][k] * v.get( 2 ) );
}
}
return temp;
}
EvtTensor3C Evt3Rank3C::cont3( const EvtVector3R& v ) const
{
EvtTensor3C temp;
int i, k;
for ( i = 0; i < 3; i++ ) {
for ( k = 0; k < 3; k++ ) {
temp.set( i, k,
t[i][k][0] * v.get( 0 ) + t[i][k][1] * v.get( 1 ) +
t[i][k][2] * v.get( 2 ) );
}
}
return temp;
}
diff --git a/src/EvtGenBase/EvtAbsLineShape.cpp b/src/EvtGenBase/EvtAbsLineShape.cpp
index 3693714..cfdabe0 100644
--- a/src/EvtGenBase/EvtAbsLineShape.cpp
+++ b/src/EvtGenBase/EvtAbsLineShape.cpp
@@ -1,172 +1,152 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtLineShape.cc
-//
-// Description: Store particle properties for one particle.
-//
-// Modification history:
-//
-// Lange March 10, 2001 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtAbsLineShape.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtPropBreitWigner.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTwoBodyVertex.hh"
#include <ctype.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
using namespace std;
EvtAbsLineShape::EvtAbsLineShape( double mass, double width, double maxRange,
EvtSpinType::spintype sp )
{
_includeDecayFact = false;
_includeBirthFact = false;
_mass = mass;
_width = width;
_spin = sp;
_maxRange = maxRange;
double maxdelta = 15.0 * width;
//if ( width>0.001 ) {
// if ( 5.0*width < 0.6 ) maxdelta = 0.6;
//}
if ( maxRange > 0.00001 ) {
_massMax = mass + maxdelta;
_massMin = mass - maxRange;
} else {
_massMax = mass + maxdelta;
_massMin = mass - 15.0 * width;
}
if ( _massMin < 0. )
_massMin = 0.;
_massMax = mass + maxdelta;
}
EvtAbsLineShape::EvtAbsLineShape( const EvtAbsLineShape& x )
{
_includeDecayFact = x._includeDecayFact;
_includeBirthFact = x._includeBirthFact;
_mass = x._mass;
_massMax = x._massMax;
_massMin = x._massMin;
_width = x._width;
_spin = x._spin;
_maxRange = x._maxRange;
}
EvtAbsLineShape& EvtAbsLineShape::operator=( const EvtAbsLineShape& x )
{
_includeDecayFact = x._includeDecayFact;
_includeBirthFact = x._includeBirthFact;
_mass = x._mass;
_massMax = x._massMax;
_massMin = x._massMin;
_width = x._width;
_spin = x._spin;
_maxRange = x._maxRange;
return *this;
}
EvtAbsLineShape* EvtAbsLineShape::clone()
{
return new EvtAbsLineShape( *this );
}
double EvtAbsLineShape::rollMass()
{
double ymin, ymax;
double temp;
if ( _width < 0.0001 ) {
return _mass;
} else {
ymin = atan( 2.0 * ( _massMin - _mass ) / _width );
ymax = atan( 2.0 * ( _massMax - _mass ) / _width );
temp = ( _mass +
( ( _width / 2.0 ) * tan( EvtRandom::Flat( ymin, ymax ) ) ) );
return temp;
}
}
double EvtAbsLineShape::getRandMass( EvtId* parId, int /* nDaug */,
EvtId* /*dauId*/, EvtId* /*othDaugId*/,
double maxMass, double* /*dauMasses*/ )
{
if ( _width < 0.0001 )
return _mass;
//its not flat - but generated according to a BW
if ( maxMass > 0 && maxMass < _massMin ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "In EvtAbsLineShape::getRandMass:" << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Cannot create a particle with a minimal mass of " << _massMin
<< " from a " << EvtPDL::name( *parId )
<< " decay with available left-over mass-energy " << maxMass
<< ". Returning 0.0 mass. The rest of this decay chain will probably fail..."
<< endl;
return 0.0;
}
double mMin = _massMin;
double mMax = _massMax;
if ( maxMass > -0.5 && maxMass < mMax )
mMax = maxMass;
double ymin = atan( 2.0 * ( mMin - _mass ) / _width );
double ymax = atan( 2.0 * ( mMax - _mass ) / _width );
return ( _mass + ( ( _width / 2.0 ) * tan( EvtRandom::Flat( ymin, ymax ) ) ) );
// return EvtRandom::Flat(_massMin,_massMax);
}
double EvtAbsLineShape::getMassProb( double mass, double massPar, int nDaug,
double* massDau )
{
double dTotMass = 0.;
if ( nDaug > 1 ) {
int i;
for ( i = 0; i < nDaug; i++ ) {
dTotMass += massDau[i];
}
//EvtGenReport(EVTGEN_INFO,"EvtGen") << mass << " " << massPar << " " << dTotMass << " "<< endl;
// if ( (mass-dTotMass)<0.0001 ) return 0.;
if ( ( mass < dTotMass ) )
return 0.;
}
if ( _width < 0.0001 )
return 1.;
// no parent - lets not panic
if ( massPar > 0.0000000001 ) {
if ( mass > massPar )
return 0.;
}
//Otherwise return the right value.
//Fortunately we have generated events according to a non-rel BW, so
//just return..
//EvtPropBreitWigner bw(_mass,_width);
//EvtPropFactor<EvtTwoBodyVertex> f(bw);
//EvtComplex fm=f.eval(mass);
//EvtComplex fm0=f.eval(_mass);
//return (abs(fm)*abs(fm))/(abs(fm0)*abs(fm0));
return 1.0;
}
diff --git a/src/EvtGenBase/EvtAmp.cpp b/src/EvtGenBase/EvtAmp.cpp
index 7979768..8a49062 100644
--- a/src/EvtGenBase/EvtAmp.cpp
+++ b/src/EvtGenBase/EvtAmp.cpp
@@ -1,515 +1,495 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtAmp.cc
-//
-// Description: Class to manipulate the amplitudes in the decays.
-//
-// Modification history:
-//
-// RYD May 29, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSpinDensity.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
using std::endl;
EvtAmp::EvtAmp()
{
_ndaug = 0;
_pstates = 0;
_nontrivial = 0;
}
EvtAmp::EvtAmp( const EvtAmp& amp )
{
int i;
_ndaug = amp._ndaug;
_pstates = amp._pstates;
for ( i = 0; i < _ndaug; i++ ) {
dstates[i] = amp.dstates[i];
_dnontrivial[i] = amp._dnontrivial[i];
}
_nontrivial = amp._nontrivial;
int namp = 1;
for ( i = 0; i < _nontrivial; i++ ) {
_nstate[i] = amp._nstate[i];
namp *= _nstate[i];
}
for ( i = 0; i < namp; i++ ) {
assert( i < 125 );
_amp[i] = amp._amp[i];
}
}
void EvtAmp::init( EvtId p, int ndaugs, EvtId* daug )
{
setNDaug( ndaugs );
int ichild;
int daug_states[100], parstates;
for ( ichild = 0; ichild < ndaugs; ichild++ ) {
daug_states[ichild] = EvtSpinType::getSpinStates(
EvtPDL::getSpinType( daug[ichild] ) );
}
parstates = EvtSpinType::getSpinStates( EvtPDL::getSpinType( p ) );
setNState( parstates, daug_states );
}
void EvtAmp::setNDaug( int n )
{
_ndaug = n;
}
void EvtAmp::setNState( int parent_states, int* daug_states )
{
_nontrivial = 0;
_pstates = parent_states;
if ( _pstates > 1 ) {
_nstate[_nontrivial] = _pstates;
_nontrivial++;
}
int i;
for ( i = 0; i < _ndaug; i++ ) {
dstates[i] = daug_states[i];
_dnontrivial[i] = -1;
if ( daug_states[i] > 1 ) {
_nstate[_nontrivial] = daug_states[i];
_dnontrivial[i] = _nontrivial;
_nontrivial++;
}
}
if ( _nontrivial > 5 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Too many nontrivial states in EvtAmp!" << endl;
}
}
void EvtAmp::setAmp( int* ind, const EvtComplex& a )
{
int nstatepad = 1;
int position = ind[0];
for ( int i = 1; i < _nontrivial; i++ ) {
nstatepad *= _nstate[i - 1];
position += nstatepad * ind[i];
}
assert( position < 125 );
_amp[position] = a;
}
const EvtComplex& EvtAmp::getAmp( int* ind ) const
{
int nstatepad = 1;
int position = ind[0];
for ( int i = 1; i < _nontrivial; i++ ) {
nstatepad *= _nstate[i - 1];
position += nstatepad * ind[i];
}
return _amp[position];
}
EvtSpinDensity EvtAmp::getSpinDensity()
{
EvtSpinDensity rho;
rho.setDim( _pstates );
EvtComplex temp;
int i, j, n;
if ( _pstates == 1 ) {
if ( _nontrivial == 0 ) {
rho.set( 0, 0, _amp[0] * conj( _amp[0] ) );
return rho;
}
n = 1;
temp = EvtComplex( 0.0 );
for ( i = 0; i < _nontrivial; i++ ) {
n *= _nstate[i];
}
for ( i = 0; i < n; i++ ) {
temp += _amp[i] * conj( _amp[i] );
}
rho.set( 0, 0, temp );
;
return rho;
}
else {
for ( i = 0; i < _pstates; i++ ) {
for ( j = 0; j < _pstates; j++ ) {
temp = EvtComplex( 0.0 );
int kk;
int allloop = 1;
for ( kk = 0; kk < _ndaug; kk++ ) {
allloop *= dstates[kk];
}
for ( kk = 0; kk < allloop; kk++ ) {
temp += _amp[_pstates * kk + i] *
conj( _amp[_pstates * kk + j] );
}
// if (_nontrivial>3){
//EvtGenReport(EVTGEN_ERROR,"EvtGen") << "Can't handle so many states in EvtAmp!"<<endl;
//}
rho.set( i, j, temp );
}
}
return rho;
}
}
EvtSpinDensity EvtAmp::getBackwardSpinDensity( EvtSpinDensity* rho_list )
{
EvtSpinDensity rho;
rho.setDim( _pstates );
if ( _pstates == 1 ) {
rho.set( 0, 0, EvtComplex( 1.0, 0.0 ) );
return rho;
}
int k;
EvtAmp ampprime;
ampprime = ( *this );
for ( k = 0; k < _ndaug; k++ ) {
if ( dstates[k] != 1 ) {
ampprime = ampprime.contract( _dnontrivial[k], rho_list[k + 1] );
}
}
return ampprime.contract( 0, ( *this ) );
}
EvtSpinDensity EvtAmp::getForwardSpinDensity( EvtSpinDensity* rho_list, int i )
{
EvtSpinDensity rho;
rho.setDim( dstates[i] );
int k;
if ( dstates[i] == 1 ) {
rho.set( 0, 0, EvtComplex( 1.0, 0.0 ) );
return rho;
}
EvtAmp ampprime;
ampprime = ( *this );
if ( _pstates != 1 ) {
ampprime = ampprime.contract( 0, rho_list[0] );
}
for ( k = 0; k < i; k++ ) {
if ( dstates[k] != 1 ) {
ampprime = ampprime.contract( _dnontrivial[k], rho_list[k + 1] );
}
}
return ampprime.contract( _dnontrivial[i], ( *this ) );
}
EvtAmp EvtAmp::contract( int k, const EvtSpinDensity& rho )
{
EvtAmp temp;
int i, j;
temp._ndaug = _ndaug;
temp._pstates = _pstates;
temp._nontrivial = _nontrivial;
for ( i = 0; i < _ndaug; i++ ) {
temp.dstates[i] = dstates[i];
temp._dnontrivial[i] = _dnontrivial[i];
}
if ( _nontrivial == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Should not be here EvtAmp!" << endl;
}
for ( i = 0; i < _nontrivial; i++ ) {
temp._nstate[i] = _nstate[i];
}
EvtComplex c;
int index[10];
for ( i = 0; i < 10; i++ ) {
index[i] = 0;
}
int allloop = 1;
int indflag, ii;
for ( i = 0; i < _nontrivial; i++ ) {
allloop *= _nstate[i];
}
for ( i = 0; i < allloop; i++ ) {
c = EvtComplex( 0.0 );
int tempint = index[k];
for ( j = 0; j < _nstate[k]; j++ ) {
index[k] = j;
c += rho.get( j, tempint ) * getAmp( index );
}
index[k] = tempint;
temp.setAmp( index, c );
indflag = 0;
for ( ii = 0; ii < _nontrivial; ii++ ) {
if ( indflag == 0 ) {
if ( index[ii] == ( _nstate[ii] - 1 ) ) {
index[ii] = 0;
} else {
indflag = 1;
index[ii] += 1;
}
}
}
}
return temp;
}
EvtSpinDensity EvtAmp::contract( int k, const EvtAmp& amp2 )
{
int i, j, l;
EvtComplex temp;
EvtSpinDensity rho;
rho.setDim( _nstate[k] );
int allloop = 1;
int indflag, ii;
for ( i = 0; i < _nontrivial; i++ ) {
allloop *= _nstate[i];
}
int index[10];
int index1[10];
// int l;
for ( i = 0; i < _nstate[k]; i++ ) {
for ( j = 0; j < _nstate[k]; j++ ) {
if ( _nontrivial == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Should not be here1 EvtAmp!" << endl;
rho.set( 0, 0, EvtComplex( 1.0, 0.0 ) );
return rho;
}
for ( ii = 0; ii < 10; ii++ ) {
index[ii] = 0;
index1[ii] = 0;
}
index[k] = i;
index1[k] = j;
temp = EvtComplex( 0.0 );
for ( l = 0; l < int( allloop / _nstate[k] ); l++ ) {
temp += getAmp( index ) * conj( amp2.getAmp( index1 ) );
indflag = 0;
for ( ii = 0; ii < _nontrivial; ii++ ) {
if ( ii != k ) {
if ( indflag == 0 ) {
if ( index[ii] == ( _nstate[ii] - 1 ) ) {
index[ii] = 0;
index1[ii] = 0;
} else {
indflag = 1;
index[ii] += 1;
index1[ii] += 1;
}
}
}
}
}
rho.set( i, j, temp );
}
}
return rho;
}
EvtAmp EvtAmp::contract( int, const EvtAmp&, const EvtAmp& )
{
//Do we need this method?
EvtAmp tmp;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "EvtAmp::contract not written yet" << endl;
return tmp;
}
void EvtAmp::dump()
{
int i, list[10];
for ( i = 0; i < 10; i++ ) {
list[i] = 0;
}
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Number of daugthers:" << _ndaug << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Number of states of the parent:" << _pstates << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << "Number of states on daughters:";
for ( i = 0; i < _ndaug; i++ ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << dstates[i] << " ";
}
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << "Nontrivial index of daughters:";
for ( i = 0; i < _ndaug; i++ ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << _dnontrivial[i] << " ";
}
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "number of nontrivial states:" << _nontrivial << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Nontrivial particles number of states:";
for ( i = 0; i < _nontrivial; i++ ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << _nstate[i] << " ";
}
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << "Amplitudes:" << endl;
if ( _nontrivial == 0 ) {
list[0] = 0;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << getAmp( list ) << endl;
}
int allloop[10];
for ( i = 0; i < 10; i++ ) {
allloop[i] = 0;
}
allloop[0] = 1;
for ( i = 0; i < _nontrivial; i++ ) {
if ( i == 0 ) {
allloop[i] *= _nstate[i];
} else {
allloop[i] = allloop[i - 1] * _nstate[i];
}
}
int index = 0;
for ( i = 0; i < allloop[_nontrivial - 1]; i++ ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << getAmp( list ) << " ";
if ( i == allloop[index] - 1 ) {
index++;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << endl;
}
}
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "-----------------------------------" << endl;
}
void EvtAmp::vertex( const EvtComplex& c )
{
int list[1];
list[0] = 0;
setAmp( list, c );
}
void EvtAmp::vertex( int i, const EvtComplex& c )
{
int list[1];
list[0] = i;
setAmp( list, c );
}
void EvtAmp::vertex( int i, int j, const EvtComplex& c )
{
int list[2];
list[0] = i;
list[1] = j;
setAmp( list, c );
}
void EvtAmp::vertex( int i, int j, int k, const EvtComplex& c )
{
int list[3];
list[0] = i;
list[1] = j;
list[2] = k;
setAmp( list, c );
}
void EvtAmp::vertex( int* i1, const EvtComplex& c )
{
setAmp( i1, c );
}
EvtAmp& EvtAmp::operator=( const EvtAmp& amp )
{
int i;
_ndaug = amp._ndaug;
_pstates = amp._pstates;
for ( i = 0; i < _ndaug; i++ ) {
dstates[i] = amp.dstates[i];
_dnontrivial[i] = amp._dnontrivial[i];
}
_nontrivial = amp._nontrivial;
int namp = 1;
for ( i = 0; i < _nontrivial; i++ ) {
_nstate[i] = amp._nstate[i];
namp *= _nstate[i];
}
for ( i = 0; i < namp; i++ ) {
assert( i < 125 );
_amp[i] = amp._amp[i];
}
return *this;
}
diff --git a/src/EvtGenBase/EvtAmpIndex.cpp b/src/EvtGenBase/EvtAmpIndex.cpp
index 6143d87..348d9b9 100644
--- a/src/EvtGenBase/EvtAmpIndex.cpp
+++ b/src/EvtGenBase/EvtAmpIndex.cpp
@@ -1,75 +1,55 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2002 Caltech
-//
-// Module: EvtAmp.cc
-//
-// Description: Class to manipulate the amplitudes in the decays.
-//
-// Modification history:
-//
-// RYD Nov 22, 2002 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtAmpIndex.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <vector>
using std::vector;
EvtAmpIndex::EvtAmpIndex( std::vector<int> ind ) :
_ind( ind ), _size( ind.size() ), _state( ind.size() ), _nstate( ind.size() )
{
int i;
for ( i = 0; i < _size; i++ ) {
_state[i] = 0;
if ( i == 0 ) {
_nstate[i] = 1;
} else {
_nstate[i] = _nstate[i - 1] * _ind[i];
}
}
}
void EvtAmpIndex::reset()
{
int i;
for ( i = 0; i < _size; i++ ) {
_state[i] = 0;
}
}
bool EvtAmpIndex::next()
{
int i;
for ( i = 0; i < _size; i++ ) {
_state[i]++;
if ( _state[i] < _ind[i] ) {
return true;
} else {
_state[i] = 0;
}
}
return false;
}
int EvtAmpIndex::index()
{
int i;
int ind = 0;
for ( i = 0; i < _size; i++ ) {
ind += _state[i] * _nstate[i];
}
return ind;
}
diff --git a/src/EvtGenBase/EvtAmpSubIndex.cpp b/src/EvtGenBase/EvtAmpSubIndex.cpp
index 613feab..1aac05f 100644
--- a/src/EvtGenBase/EvtAmpSubIndex.cpp
+++ b/src/EvtGenBase/EvtAmpSubIndex.cpp
@@ -1,53 +1,33 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2002 Caltech
-//
-// Module: EvtAmpSubIndex.cc
-//
-// Description: Class to manipulate the amplitudes in the decays.
-//
-// Modification history:
-//
-// RYD Nov 22, 2002 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtAmpSubIndex.hh"
#include "EvtGenBase/EvtAmpIndex.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <vector>
using std::vector;
EvtAmpSubIndex::EvtAmpSubIndex( EvtAmpIndex* ind, std::vector<int> sub ) :
_ind( ind ), _sub( sub ), _size( sub.size() ), _nstate( sub.size() )
{
int i;
for ( i = 0; i < _size; i++ ) {
if ( i == 0 ) {
_nstate[i] = 1;
} else {
_nstate[i] = _nstate[i - 1] * _ind->_ind[sub[i - 1]];
}
}
}
int EvtAmpSubIndex::index()
{
int i;
int ind = 0;
for ( i = 0; i < _size; i++ ) {
ind += _ind->_state[_ind->_ind[i]] * _nstate[i];
}
return ind;
}
diff --git a/src/EvtGenBase/EvtBlattWeisskopf.cpp b/src/EvtGenBase/EvtBlattWeisskopf.cpp
index 8e52a5b..52da9a0 100644
--- a/src/EvtGenBase/EvtBlattWeisskopf.cpp
+++ b/src/EvtGenBase/EvtBlattWeisskopf.cpp
@@ -1,93 +1,85 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtBlattWeisskopf.cpp,v 1.3 2009-03-16 15:56:37 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
#include "EvtGenBase/EvtBlattWeisskopf.hh"
+
+#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
using std::endl;
EvtBlattWeisskopf::EvtBlattWeisskopf( int LL, double R, double p0 ) :
_LL( LL ), _radial( R ), _p0( p0 )
{
if ( R < 0 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Radius " << R << " negative" << endl;
assert( 0 );
}
_radial = R;
// compute formula for nominal momentum
_F0 = compute( _p0 );
if ( _F0 <= 0 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Invalid nominal form factor computed " << _F0 << endl;
assert( 0 );
}
}
EvtBlattWeisskopf::EvtBlattWeisskopf( const EvtBlattWeisskopf& other ) :
_LL( other._LL ), _radial( other._radial ), _p0( other._p0 ), _F0( other._F0 )
{
}
double EvtBlattWeisskopf::operator()( double p ) const
{
double ret = compute( p ) / _F0;
// EvtGenReport(EVTGEN_INFO,"EvtGen") << p << " " << _p0 << " " << _F0 << " " << _LL << " " << _radial << " " << ret << endl;
return ret;
}
// Blatt-Weisskopf form factors
// see e.g. hep-ex/0011065
// Dalitz Analysis of the Decay D0->K-pi+pi0 (CLEO)
//
// p - momentum of either daugher in the meson rest frame,
// the mass of the meson is used
// pAB - momentum of either daughter in the candidate rest frame
// the mass of the candidate is used
// R - meson radial parameter
//
// In the CLEO paper R=5 GeV-1 for D0, R=1.5 for intermediate resonances
double EvtBlattWeisskopf::compute( double p ) const
{
double value( 1.0 );
double z = p * _radial;
double zSq = z * z;
if ( _LL == 0 ) {
value = 1.0;
} else if ( _LL == 1 ) {
value = sqrt( 1.0 / ( 1.0 + zSq ) );
} else if ( _LL == 2 ) {
value = sqrt( 1.0 / ( zSq * ( zSq + 3.0 ) + 9.0 ) );
} else if ( _LL == 3 ) {
double denom = zSq * ( zSq * ( zSq + 6.0 ) + 45.0 ) + 225.0;
value = sqrt( 1.0 / denom );
} else if ( _LL == 4 ) {
double denom = zSq * ( zSq * ( zSq * ( zSq + 10.0 ) + 135.0 ) + 1575.0 ) +
11025.0;
value = sqrt( 1.0 / denom );
} else if ( _LL == 5 ) {
double denom =
zSq * ( zSq * ( zSq * ( zSq * ( zSq + 15.0 ) + 315.0 ) + 6300.0 ) +
99225.0 ) +
893025.0;
value = sqrt( 1.0 / denom );
}
return value;
}
diff --git a/src/EvtGenBase/EvtBreitWignerPdf.cpp b/src/EvtGenBase/EvtBreitWignerPdf.cpp
index d2bc398..8f6b973 100644
--- a/src/EvtGenBase/EvtBreitWignerPdf.cpp
+++ b/src/EvtGenBase/EvtBreitWignerPdf.cpp
@@ -1,75 +1,63 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtBreitWignerPdf.cpp,v 1.3 2009-03-16 15:55:55 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Breit-Wigner shape PDF. If the width is zero it degenerates into a delta
-// function. The integral and its inverse can be still evaluated.
-
#include "EvtGenBase/EvtBreitWignerPdf.hh"
+
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <assert.h>
#include <math.h>
#include <stdio.h>
EvtBreitWignerPdf::EvtBreitWignerPdf( double min, double max, double m0,
double g0 ) :
EvtIntegPdf1D( min, max ), _m0( m0 ), _g0( g0 )
{
}
EvtBreitWignerPdf::EvtBreitWignerPdf( const EvtBreitWignerPdf& other ) :
EvtIntegPdf1D( other ), _m0( other._m0 ), _g0( other._g0 )
{
}
double EvtBreitWignerPdf::pdf( const EvtPoint1D& x ) const
{
double m = x.value();
if ( ( 0 == ( m - _m0 ) ) && ( 0. == _g0 ) ) {
printf( "Delta function Breit-Wigner\n" );
assert( 0 );
}
double ret = _g0 / EvtConst::twoPi /
( ( m - _m0 ) * ( m - _m0 ) + _g0 * _g0 / 4 );
return ret;
}
double EvtBreitWignerPdf::pdfIntegral( double m ) const
{
double itg = 0;
if ( _g0 == 0 ) {
if ( m > _m0 )
itg = 1.;
else if ( m < _m0 )
itg = 0.;
else
itg = 0.5;
} else
itg = atan( ( m - _m0 ) / ( _g0 / 2. ) ) / EvtConst::pi + 0.5;
return itg;
}
double EvtBreitWignerPdf::pdfIntegralInverse( double x ) const
{
if ( x < 0 || x > 1 ) {
printf( "Invalid integral value %f\n", x );
assert( 0 );
}
double m = _m0;
if ( _g0 != 0 )
m = _m0 + ( _g0 / 2. ) * tan( EvtConst::pi * ( x - 0.5 ) );
return m;
}
diff --git a/src/EvtGenBase/EvtCGCoefSingle.cpp b/src/EvtGenBase/EvtCGCoefSingle.cpp
index 428e3db..9e5edab 100644
--- a/src/EvtGenBase/EvtCGCoefSingle.cpp
+++ b/src/EvtGenBase/EvtCGCoefSingle.cpp
@@ -1,146 +1,125 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtCGCoefSingle.cc
-//
-// Description: Evaluates Clebsch-Gordon coef for fixed j1 and j2.
-//
-// Modification history:
-//
-// fkw February 2, 2001 changes to satisfy KCC
-// RYD August 12, 2000 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtCGCoefSingle.hh"
#include "EvtGenBase/EvtOrthogVector.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
void EvtCGCoefSingle::init( int j1, int j2 )
{
_j1 = j1;
_j2 = j2;
_Jmax = abs( j1 + j2 );
_Jmin = abs( j1 - j2 );
_table.resize( ( _Jmax - _Jmin ) / 2 + 1 );
int J, M;
int lenmax = j1 + 1;
if ( j2 < j1 )
lenmax = j2 + 1;
//set vector sizes
for ( J = _Jmax; J >= _Jmin; J -= 2 ) {
_table[( J - _Jmin ) / 2].resize( J + 1 );
for ( M = J; J >= -M; M -= 2 ) {
int len = ( ( _j1 + _j2 ) - abs( M ) ) / 2 + 1;
if ( len > lenmax )
len = lenmax;
_table[( J - _Jmin ) / 2][( M + J ) / 2].resize( len );
}
}
//now fill the vectors
for ( J = _Jmax; J >= _Jmin; J -= 2 ) {
//bootstrap with highest M(=J) as a special case
if ( J == _Jmax ) {
cg( J, J, _j1, _j2 ) = 1.0;
} else {
int n = ( _Jmax - J ) / 2 + 1;
std::vector<double>* vectors = new std::vector<double>[n - 1];
int i, k;
for ( i = 0; i < n - 1; i++ ) {
// i corresponds to J=Jmax-2*i
vectors[i].resize( n );
for ( k = 0; k < n; k++ ) {
double tmp = _table[( _Jmax - _Jmin ) / 2 - i]
[( J + _Jmax - 2 * i ) / 2][k];
vectors[i][k] = tmp;
}
}
EvtOrthogVector getOrth( n, vectors );
std::vector<double> orth = getOrth.getOrthogVector();
int sign = 1;
if ( orth[n - 1] < 0.0 )
sign = -1;
for ( k = 0; k < n; k++ ) {
_table[( J - _Jmin ) / 2][J][k] = sign * orth[k];
}
delete[] vectors;
}
for ( M = J - 2; M >= -J; M -= 2 ) {
int len = ( ( _j1 + _j2 ) - abs( M ) ) / 2 + 1;
if ( len > lenmax )
len = lenmax;
int mmin = M - j2;
if ( mmin < -j1 )
mmin = -j1;
int m1;
for ( m1 = mmin; m1 < mmin + len * 2; m1 += 2 ) {
int m2 = M - m1;
double sum = 0.0;
float fkwTmp = _j1 * ( _j1 + 2 ) - ( m1 + 2 ) * m1;
//fkw 2/2/2001: changes needed to satisfy KCC
//fkw if (m1+2<=_j1) sum+=0.5*sqrt(_j1*(_j1+2)-(m1+2)*m1)*cg(J,M+2,m1+2,m2);
//fkw if (m2+2<=_j2) sum+=0.5*sqrt(_j2*(_j2+2)-(m2+2)*m2)*cg(J,M+2,m1,m2+2);
//fkw sum/=(0.5*sqrt(J*(J+2)-(M+2)*M));
if ( m1 + 2 <= _j1 )
sum += 0.5 * sqrt( fkwTmp ) * cg( J, M + 2, m1 + 2, m2 );
fkwTmp = _j2 * ( _j2 + 2 ) - ( m2 + 2 ) * m2;
if ( m2 + 2 <= _j2 )
sum += 0.5 * sqrt( fkwTmp ) * cg( J, M + 2, m1, m2 + 2 );
fkwTmp = J * ( J + 2 ) - ( M + 2 ) * M;
sum /= ( 0.5 * sqrt( fkwTmp ) );
cg( J, M, m1, m2 ) = sum;
}
}
}
}
double EvtCGCoefSingle::coef( int J, int M, int j1, int j2, int m1, int m2 )
{
assert( j1 == _j1 );
_unused( j1 );
assert( j2 == _j2 );
_unused( j2 );
return cg( J, M, m1, m2 );
}
double& EvtCGCoefSingle::cg( int J, int M, int m1, int m2 )
{
assert( M == m1 + m2 );
_unused( m2 );
assert( abs( M ) <= J );
assert( J <= _Jmax );
assert( J >= _Jmin );
assert( abs( m1 ) <= _j1 );
assert( abs( m2 ) <= _j2 );
//find lowest m1 allowed for the given M
int mmin = M - _j2;
if ( mmin < -_j1 )
mmin = -_j1;
int n = m1 - mmin;
return _table[( J - _Jmin ) / 2][( M + J ) / 2][n / 2];
}
diff --git a/src/EvtGenBase/EvtCPUtil.cpp b/src/EvtGenBase/EvtCPUtil.cpp
index c9052ed..fb57c68 100644
--- a/src/EvtGenBase/EvtCPUtil.cpp
+++ b/src/EvtGenBase/EvtCPUtil.cpp
@@ -1,577 +1,554 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtCPUtil.cc
-//
-// Description: Utilities needed for generation of CP violating
-// decays.
-//
-// Modification history:
-//
-// RYD March 24, 1998 Module created
-//
-// COWAN June 10, 2009 Added methods for getting dGamma(s)
-// and dm(s) using B(s)0H and B(s)0L.
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtSymTable.hh"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
using std::endl;
EvtCPUtil::EvtCPUtil( int mixingType )
{
_enableFlip = false;
_mixingType = mixingType;
}
EvtCPUtil* EvtCPUtil::getInstance()
{
static EvtCPUtil* theCPUtil = 0;
if ( theCPUtil == 0 ) {
theCPUtil = new EvtCPUtil( 1 );
}
return theCPUtil;
}
//added two functions for finding the fraction of B0 tags for decays into
//both CP eigenstates and non-CP eigenstates -- NK, Jan. 27th, 1998
void EvtCPUtil::fractB0CP( EvtComplex Af, EvtComplex Abarf, double /*deltam*/,
double beta, double& fract )
{
//This function returns the number of B0 tags for decays into CP-eigenstates
//(the "probB0" in the new EvtOtherB)
//double gamma_B = EvtPDL::getWidth(B0);
//double xd = deltam/gamma_B;
//double xd = 0.65;
double ratio = 1 / ( 1 + 0.65 * 0.65 );
EvtComplex rf, rbarf;
rf = EvtComplex( cos( 2.0 * beta ), sin( 2.0 * beta ) ) * Abarf / Af;
rbarf = EvtComplex( 1.0 ) / rf;
double A2 = real( Af ) * real( Af ) + imag( Af ) * imag( Af );
double Abar2 = real( Abarf ) * real( Abarf ) + imag( Abarf ) * imag( Abarf );
double rf2 = real( rf ) * real( rf ) + imag( rf ) * imag( rf );
double rbarf2 = real( rbarf ) * real( rbarf ) + imag( rbarf ) * imag( rbarf );
fract = ( Abar2 * ( 1 + rbarf2 + ( 1 - rbarf2 ) * ratio ) ) /
( Abar2 * ( 1 + rbarf2 + ( 1 - rbarf2 ) * ratio ) +
A2 * ( 1 + rf2 + ( 1 - rf2 ) * ratio ) );
return;
}
void EvtCPUtil::fractB0nonCP( EvtComplex Af, EvtComplex Abarf, EvtComplex Afbar,
EvtComplex Abarfbar, double deltam, double beta,
int flip, double& fract )
{
//this function returns the number of B0 tags for decays into non-CP eigenstates
//(the "probB0" in the new EvtOtherB)
//this needs more thought...
//double gamma_B = EvtPDL::getWidth(B0);
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "gamma " << gamma_B<< endl;
//double xd = deltam/gamma_B;
//why is the width of B0 0 in PDL??
double xd = 0.65;
double gamma_B = deltam / xd;
double IAf, IAfbar, IAbarf, IAbarfbar;
EvtComplex rf, rfbar, rbarf, rbarfbar;
double rf2, rfbar2, rbarf2, rbarfbar2;
double Af2, Afbar2, Abarf2, Abarfbar2;
rf = EvtComplex( cos( 2.0 * beta ), sin( 2.0 * beta ) ) * Abarf / Af;
rfbar = EvtComplex( cos( 2.0 * beta ), sin( 2.0 * beta ) ) * Abarfbar / Afbar;
rbarf = EvtComplex( cos( -2.0 * beta ), sin( -2.0 * beta ) ) * Af / Abarf;
rbarfbar = EvtComplex( cos( -2.0 * beta ), sin( -2.0 * beta ) ) * Afbar /
Abarfbar;
rf2 = real( rf ) * real( rf ) + imag( rf ) * imag( rf );
rfbar2 = real( rfbar ) * real( rfbar ) + imag( rfbar ) * imag( rfbar );
rbarf2 = real( rbarf ) * real( rbarf ) + imag( rbarf ) * imag( rbarf );
rbarfbar2 = real( rbarfbar ) * real( rbarfbar ) +
imag( rbarfbar ) * imag( rbarfbar );
Af2 = real( Af ) * real( Af ) + imag( Af ) * imag( Af );
Afbar2 = real( Afbar ) * real( Afbar ) + imag( Afbar ) * imag( Afbar );
Abarf2 = real( Abarf ) * real( Abarf ) + imag( Abarf ) * imag( Abarf );
Abarfbar2 = real( Abarfbar ) * real( Abarfbar ) +
imag( Abarfbar ) * imag( Abarfbar );
//
//IAf = integral(gamma(B0->f)), etc.
//
IAf = ( Af2 / ( 2 * gamma_B ) ) * ( 1 + rf2 + ( 1 - rf2 ) / ( 1 + xd * xd ) );
IAfbar = ( Afbar2 / ( 2 * gamma_B ) ) *
( 1 + rfbar2 + ( 1 - rfbar2 ) / ( 1 + xd * xd ) );
IAbarf = ( Abarf2 / ( 2 * gamma_B ) ) *
( 1 + rbarf2 + ( 1 - rbarf2 ) / ( 1 + xd * xd ) );
IAbarfbar = ( Abarfbar2 / ( 2 * gamma_B ) ) *
( 1 + rbarfbar2 + ( 1 - rbarfbar2 ) / ( 1 + xd * xd ) );
//flip specifies the relative fraction of fbar events
fract = IAbarf / ( IAbarf + IAf ) + flip * IAbarfbar / ( IAfbar + IAbarfbar );
return;
}
void EvtCPUtil::OtherB( EvtParticle* p, double& t, EvtId& otherb, double probB0 )
{
if ( _mixingType == EvtCPUtil::Coherent ) {
OtherCoherentB( p, t, otherb, probB0 );
} else if ( _mixingType == EvtCPUtil::Incoherent ) {
OtherIncoherentB( p, t, otherb, probB0 );
}
}
void EvtCPUtil::OtherCoherentB( EvtParticle* p, double& t, EvtId& otherb,
double probB0 )
{
//Can not call this recursively!!!
static int entryCount = 0;
entryCount++;
//added by Lange Jan4,2000
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
static EvtId BS = EvtPDL::getId( "B_s0" );
static EvtId UPS4S = EvtPDL::getId( "Upsilon(4S)" );
int isB0 = EvtRandom::Flat( 0.0, 1.0 ) < probB0;
int idaug;
p->setLifetime();
// now get the time between the decay of this B and the other B!
EvtParticle* parent = p->getParent();
EvtParticle* other;
bool incoherentmix = false;
if ( ( parent != 0 ) && ( parent->getId() == B0 || parent->getId() == B0B ||
parent->getId() == BS || parent->getId() == BSB ) ) {
incoherentmix = true;
}
if ( incoherentmix )
parent = parent->getParent();
if ( parent == 0 || parent->getId() != UPS4S ) {
//Need to make this more general, but for now
//assume no parent. If we have parent of B we
//need to charge conj. full decay tree.
if ( parent != 0 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "p=" << EvtPDL::name( p->getId() )
<< " parent=" << EvtPDL::name( parent->getId() ) << endl;
}
assert( parent == 0 );
p->setLifetime();
t = p->getLifetime();
bool needToChargeConj = false;
if ( p->getId() == B0B && isB0 )
needToChargeConj = true;
if ( p->getId() == B0 && !isB0 )
needToChargeConj = true;
if ( p->getId() == BSB && isB0 )
needToChargeConj = true;
if ( p->getId() == BS && !isB0 )
needToChargeConj = true;
if ( needToChargeConj ) {
p->setId( EvtPDL::chargeConj( p->getId() ) );
if ( incoherentmix ) {
p->getDaug( 0 )->setId(
EvtPDL::chargeConj( p->getDaug( 0 )->getId() ) );
}
}
otherb = EvtPDL::chargeConj( p->getId() );
entryCount--;
return;
} else {
if ( parent->getDaug( 0 ) != p ) {
other = parent->getDaug( 0 );
idaug = 0;
} else {
other = parent->getDaug( 1 );
idaug = 1;
}
}
if ( parent != 0 ) {
//if (entryCount>1){
// EvtGenReport(EVTGEN_INFO,"EvtGen") << "Double CP decay:"<<entryCount<<endl;
//}
//kludge!! Lange Mar21, 2003
// if the other B is an alias... don't change the flavor..
if ( other->getId().isAlias() ) {
OtherB( p, t, otherb );
entryCount--;
return;
}
if ( entryCount == 1 ) {
EvtVector4R p_init = other->getP4();
//int decayed=other->getNDaug()>0;
bool decayed = other->isDecayed();
other->deleteTree();
EvtScalarParticle* scalar_part;
scalar_part = new EvtScalarParticle;
if ( isB0 ) {
scalar_part->init( B0, p_init );
} else {
scalar_part->init( B0B, p_init );
}
other = (EvtParticle*)scalar_part;
// other->set_type(EvtSpinType::SCALAR);
other->setDiagonalSpinDensity();
parent->insertDaugPtr( idaug, other );
if ( decayed ) {
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "In CP Util calling decay \n";
other->decay();
}
}
otherb = other->getId();
other->setLifetime();
t = p->getLifetime() - other->getLifetime();
otherb = other->getId();
} else {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "We have an error here!!!!" << endl;
otherb = EvtId( -1, -1 );
}
entryCount--;
return;
}
// ========================================================================
bool EvtCPUtil::isBsMixed( EvtParticle* p )
{
if ( !( p->getParent() ) )
return false;
static EvtId BS0 = EvtPDL::getId( "B_s0" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
if ( ( p->getId() != BS0 ) && ( p->getId() != BSB ) )
return false;
if ( ( p->getParent()->getId() == BS0 ) || ( p->getParent()->getId() == BSB ) )
return true;
return false;
}
// ========================================================================
bool EvtCPUtil::isB0Mixed( EvtParticle* p )
{
if ( !( p->getParent() ) )
return false;
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
if ( ( p->getId() != B0 ) && ( p->getId() != B0B ) )
return false;
if ( ( p->getParent()->getId() == B0 ) || ( p->getParent()->getId() == B0B ) )
return true;
return false;
}
//============================================================================
// Return the tag of the event (ie the anti-flavour of the produced
// B meson). Flip the flavour of the event with probB probability
//============================================================================
void EvtCPUtil::OtherIncoherentB( EvtParticle* p, double& t, EvtId& otherb,
double probB )
{
//std::cout<<"New routine running"<<endl;
//if(p->getId() == B0 || p->getId() == B0B)
//added by liming Zhang
enableFlip();
if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
p->getParent()->setLifetime();
t = p->getParent()->getLifetime();
} else {
p->setLifetime();
t = p->getLifetime();
}
if ( flipIsEnabled() ) {
//std::cout << " liming << flipIsEnabled " << std::endl;
// Flip the flavour of the particle with probability probB
bool isFlipped = ( EvtRandom::Flat( 0., 1. ) < probB );
if ( isFlipped ) {
if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
p->getParent()->setId(
EvtPDL::chargeConj( p->getParent()->getId() ) );
p->setId( EvtPDL::chargeConj( p->getId() ) );
} else {
p->setId( EvtPDL::chargeConj( p->getId() ) );
}
}
}
if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
// if B has mixed, tag flavour is charge conjugate of parent of B-meson
otherb = EvtPDL::chargeConj( p->getParent()->getId() );
} else {
// else it is opposite flavour than this B hadron
otherb = EvtPDL::chargeConj( p->getId() );
}
return;
}
//============================================================================
void EvtCPUtil::OtherB( EvtParticle* p, double& t, EvtId& otherb )
{
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
static EvtId BS0 = EvtPDL::getId( "B_s0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId UPS4 = EvtPDL::getId( "Upsilon(4S)" );
if ( p->getId() == BS0 || p->getId() == BSB ) {
static double ctauL = EvtPDL::getctau( EvtPDL::getId( "B_s0L" ) );
static double ctauH = EvtPDL::getctau( EvtPDL::getId( "B_s0H" ) );
static double ctau = ctauL < ctauH ? ctauH : ctauL;
t = -log( EvtRandom::Flat() ) * ctau;
EvtParticle* parent = p->getParent();
if ( parent != 0 && ( parent->getId() == BS0 || parent->getId() == BSB ) ) {
if ( parent->getId() == BS0 )
otherb = BSB;
if ( parent->getId() == BSB )
otherb = BS0;
parent->setLifetime( t );
return;
}
if ( p->getId() == BS0 )
otherb = BSB;
if ( p->getId() == BSB )
otherb = BS0;
p->setLifetime( t );
return;
}
if ( p->getId() == D0 || p->getId() == D0B ) {
static double ctauL = EvtPDL::getctau( EvtPDL::getId( "D0L" ) );
static double ctauH = EvtPDL::getctau( EvtPDL::getId( "D0H" ) );
static double ctau = ctauL < ctauH ? ctauH : ctauL;
t = -log( EvtRandom::Flat() ) * ctau;
EvtParticle* parent = p->getParent();
if ( parent != 0 && ( parent->getId() == D0 || parent->getId() == D0B ) ) {
if ( parent->getId() == D0 )
otherb = D0B;
if ( parent->getId() == D0B )
otherb = D0;
parent->setLifetime( t );
return;
}
if ( p->getId() == D0 )
otherb = D0B;
if ( p->getId() == D0B )
otherb = D0;
p->setLifetime( t );
return;
}
p->setLifetime();
// now get the time between the decay of this B and the other B!
EvtParticle* parent = p->getParent();
if ( parent == 0 || parent->getId() != UPS4 ) {
//EvtGenReport(EVTGEN_ERROR,"EvtGen") <<
// "Warning CP violation with B having no parent!"<<endl;
t = p->getLifetime();
if ( p->getId() == B0 )
otherb = B0B;
if ( p->getId() == B0B )
otherb = B0;
if ( p->getId() == BS0 )
otherb = BSB;
if ( p->getId() == BSB )
otherb = BS0;
return;
} else {
if ( parent->getDaug( 0 ) != p ) {
otherb = parent->getDaug( 0 )->getId();
parent->getDaug( 0 )->setLifetime();
t = p->getLifetime() - parent->getDaug( 0 )->getLifetime();
} else {
otherb = parent->getDaug( 1 )->getId();
parent->getDaug( 1 )->setLifetime();
t = p->getLifetime() - parent->getDaug( 1 )->getLifetime();
}
}
return;
}
// No CP violation is assumed
void EvtCPUtil::incoherentMix( const EvtId id, double& t, int& mix )
{
int stdHepNum = EvtPDL::getStdHep( id );
stdHepNum = abs( stdHepNum );
EvtId partId = EvtPDL::evtIdFromStdHep( stdHepNum );
std::string partName = EvtPDL::name( partId );
std::string hname = partName + std::string( "H" );
std::string lname = partName + std::string( "L" );
EvtId lId = EvtPDL::getId( lname );
EvtId hId = EvtPDL::getId( hname );
double ctauL = EvtPDL::getctau( lId );
double ctauH = EvtPDL::getctau( hId );
// Bug Fixed: Corrected the average as gamma is the relevent parameter
double ctau = 2.0 * ( ctauL * ctauH ) / ( ctauL + ctauH );
//double ctau=0.5*(ctauL+ctauH);
// Bug Fixed: ctau definition changed above
//double y=(ctauH-ctauL)/(2*ctau);
double y = ( ctauH - ctauL ) / ( ctauH + ctauL );
//deltam and qoverp defined in DECAY.DEC
std::string qoverpParmName = std::string( "qoverp_incohMix_" ) + partName;
std::string mdParmName = std::string( "dm_incohMix_" ) + partName;
int ierr;
double qoverp = atof( EvtSymTable::get( qoverpParmName, ierr ).c_str() );
double x = atof( EvtSymTable::get( mdParmName, ierr ).c_str() ) * ctau /
EvtConst::c;
double fac;
if ( id == partId ) {
fac = 1.0 / ( qoverp * qoverp );
} else {
fac = qoverp * qoverp;
}
double mixprob = ( x * x + y * y ) /
( x * x + y * y + fac * ( 2.0 + x * x - y * y ) );
int mixsign;
mixsign = ( mixprob > EvtRandom::Flat( 0.0, 1.0 ) ) ? -1 : 1;
double prob;
// Find the longest of the two lifetimes
double ctaulong = ctauL <= ctauH ? ctauH : ctauL;
// Bug fixed: Ensure cosine argument is dimensionless so /ctau
do {
t = -log( EvtRandom::Flat() ) * ctaulong;
prob = 1.0 + exp( -2.0 * fabs( y ) * t / ctau ) +
mixsign * 2.0 * exp( -fabs( y ) * t / ctau ) * cos( x * t / ctau );
} while ( prob < 4.0 * EvtRandom::Flat() );
mix = 0;
if ( mixsign == -1 )
mix = 1;
return;
}
double EvtCPUtil::getDeltaGamma( const EvtId id )
{
int stdHepNum = EvtPDL::getStdHep( id );
stdHepNum = abs( stdHepNum );
EvtId partId = EvtPDL::evtIdFromStdHep( stdHepNum );
std::string partName = EvtPDL::name( partId );
std::string hname = partName + std::string( "H" );
std::string lname = partName + std::string( "L" );
EvtId lId = EvtPDL::getId( lname );
EvtId hId = EvtPDL::getId( hname );
double ctauL = EvtPDL::getctau( lId );
double ctauH = EvtPDL::getctau( hId );
double dGamma = ( 1 / ctauL - 1 / ctauH ) * EvtConst::c;
return dGamma;
}
double EvtCPUtil::getDeltaM( const EvtId id )
{
int stdHepNum = EvtPDL::getStdHep( id );
stdHepNum = abs( stdHepNum );
EvtId partId = EvtPDL::evtIdFromStdHep( stdHepNum );
std::string partName = EvtPDL::name( partId );
std::string parmName = std::string( "dm_incohMix_" ) + partName;
int ierr;
double dM = atof( EvtSymTable::get( parmName, ierr ).c_str() );
return dM;
}
bool EvtCPUtil::flipIsEnabled()
{
return _enableFlip;
}
void EvtCPUtil::enableFlip()
{
_enableFlip = true;
}
void EvtCPUtil::disableFlip()
{
_enableFlip = false;
}
diff --git a/src/EvtGenBase/EvtComplex.cpp b/src/EvtGenBase/EvtComplex.cpp
index 8f44429..0b2aa0c 100644
--- a/src/EvtGenBase/EvtComplex.cpp
+++ b/src/EvtGenBase/EvtComplex.cpp
@@ -1,57 +1,37 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtComplex.cc
-//
-// Description: EvtComlex.cc
-//
-// Modification history:
-//
-// RYD December 5, 1998 Created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <iostream>
#include <math.h>
using std::ostream;
ostream& operator<<( ostream& s, const EvtComplex& c )
{
s << "(" << c._rpart << "," << c._ipart << ")";
return s;
}
EvtComplex& EvtComplex::operator*=( EvtComplex c )
{
double r = _rpart * c._rpart - _ipart * c._ipart;
double i = _rpart * c._ipart + _ipart * c._rpart;
_rpart = r;
_ipart = i;
return *this;
}
EvtComplex& EvtComplex::operator/=( EvtComplex c )
{
double inv = 1.0 / ( c._rpart * c._rpart + c._ipart * c._ipart );
double r = inv * ( _rpart * c._rpart + _ipart * c._ipart );
double i = inv * ( _ipart * c._rpart - _rpart * c._ipart );
_rpart = r;
_ipart = i;
return *this;
}
diff --git a/src/EvtGenBase/EvtConst.cpp b/src/EvtGenBase/EvtConst.cpp
index af1a6ab..7aaa3e3 100644
--- a/src/EvtGenBase/EvtConst.cpp
+++ b/src/EvtGenBase/EvtConst.cpp
@@ -1,30 +1,10 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtConst.cc
-//
-// Description: Routines to handle numerical constants in EvtGen
-//
-// Modification history:
-//
-// DJL/RYD August 8, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtPatches.hh"
const double EvtConst::pi = 3.14159265358979323846;
const double EvtConst::twoPi = 2.0 * pi;
const double EvtConst::radToDegrees = 180.0 / pi;
const double EvtConst::c = 2.99792458E11; // mm/sec
const double EvtConst::Fermi = 1.1663787E-5; // Fermi coupling constant, GeV^-2
diff --git a/src/EvtGenBase/EvtCyclic3.cpp b/src/EvtGenBase/EvtCyclic3.cpp
index ccc6073..2670062 100644
--- a/src/EvtGenBase/EvtCyclic3.cpp
+++ b/src/EvtGenBase/EvtCyclic3.cpp
@@ -1,416 +1,407 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtCyclic3.cpp,v 1.3 2009-03-16 15:55:13 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
#include "EvtGenBase/EvtCyclic3.hh"
+
#include "EvtGenBase/EvtPatches.hh"
#include <assert.h>
#include <iostream>
#include <string.h>
using std::ostream;
using namespace EvtCyclic3;
Index EvtCyclic3::permute( Index i, Perm p )
{
if ( p == ABC )
return i;
else if ( p == BCA ) {
if ( i == A )
return C;
else if ( i == B )
return A;
else if ( i == C )
return B;
} else if ( p == BCA ) {
if ( i == A )
return C;
else if ( i == B )
return A;
else if ( i == C )
return B;
} else if ( p == CAB ) {
if ( i == A )
return B;
else if ( i == B )
return C;
else if ( i == C )
return A;
} else if ( p == CBA ) {
if ( i == A )
return C;
else if ( i == B )
return B;
else if ( i == C )
return A;
} else if ( p == BAC ) {
if ( i == A )
return B;
else if ( i == B )
return A;
else if ( i == C )
return C;
} else if ( p == ACB ) {
if ( i == A )
return A;
else if ( i == B )
return C;
else if ( i == C )
return B;
}
assert( 0 );
return A;
}
Perm EvtCyclic3::permutation( Index i1, Index i2, Index i3 )
{
assert( i1 != i2 && i2 != i3 && i3 != i1 );
_unused( i3 );
if ( i1 == A )
return ( i2 == B ) ? ABC : ACB;
if ( i1 == B )
return ( i2 == C ) ? BCA : BAC;
if ( i1 == C )
return ( i2 == A ) ? CAB : CBA;
assert( 0 );
return ABC;
}
Perm EvtCyclic3::permute( Perm i, Perm p )
{
Index i1 = permute( permute( A, i ), p );
Index i2 = permute( permute( B, i ), p );
Index i3 = permute( permute( C, i ), p );
return permutation( i1, i2, i3 );
}
Pair EvtCyclic3::permute( Pair i, Perm p )
{
Index i1 = permute( first( i ), p );
Index i2 = permute( second( i ), p );
return combine( i1, i2 );
}
Pair EvtCyclic3::i2pair( int i )
{
assert( 0 <= i && i <= 2 );
switch ( i ) {
case 0:
return BC;
case 1:
return CA;
case 2:
return AB;
}
assert( 0 );
return AB; // should never get here
}
Index EvtCyclic3::prev( Index i )
{
switch ( i ) {
case A:
return C;
case B:
return A;
case C:
return B;
}
assert( 0 );
return A; // should never get here
}
Index EvtCyclic3::next( Index i )
{
switch ( i ) {
case A:
return B;
case B:
return C;
case C:
return A;
}
assert( 0 );
return A; // should never get here
}
Index EvtCyclic3::other( Index i, Index j )
{
assert( i != j );
switch ( i ) {
case A:
switch ( j ) {
case B:
return C;
case C:
return B;
default:
assert( 0 );
}
case B:
switch ( j ) {
case C:
return A;
case A:
return C;
default:
assert( 0 );
}
case C:
switch ( j ) {
case A:
return B;
case B:
return A;
default:
assert( 0 );
}
}
assert( 0 );
return A; // should never get here
}
// Index-to-pair conversions
Pair EvtCyclic3::other( Index i )
{
switch ( i ) {
case A:
return BC;
case B:
return CA;
case C:
return AB;
}
assert( 0 );
return AB; // should never get here
}
Pair EvtCyclic3::combine( Index i, Index j )
{
return other( other( i, j ) );
}
// Pair-to-pair conversions
Pair EvtCyclic3::prev( Pair i )
{
switch ( i ) {
case BC:
return AB;
case CA:
return BC;
case AB:
return CA;
}
assert( 0 );
return AB; // should never get here
}
Pair EvtCyclic3::next( Pair i )
{
switch ( i ) {
case BC:
return CA;
case CA:
return AB;
case AB:
return BC;
}
assert( 0 );
return AB; // should never get here
}
Pair EvtCyclic3::other( Pair i, Pair j )
{
return combine( other( i ), other( j ) );
}
// Pair-to-index conversions
Index EvtCyclic3::first( Pair i )
{
switch ( i ) {
case BC:
return B;
case CA:
return C;
case AB:
return A;
}
assert( 0 );
return A; // should never get here
}
Index EvtCyclic3::second( Pair i )
{
switch ( i ) {
case BC:
return C;
case CA:
return A;
case AB:
return B;
}
assert( 0 );
return A; // should never get here
}
Index EvtCyclic3::other( Pair i )
{
switch ( i ) {
case BC:
return A;
case CA:
return B;
case AB:
return C;
}
assert( 0 );
return A; // should never get here
}
Index EvtCyclic3::common( Pair i, Pair j )
{
return other( other( i, j ) );
}
Index EvtCyclic3::strToIndex( const char* str )
{
if ( strcmp( str, "A" ) )
return A;
else if ( strcmp( str, "B" ) )
return B;
else if ( strcmp( str, "C" ) )
return C;
else
assert( 0 );
return A;
}
Pair EvtCyclic3::strToPair( const char* str )
{
if ( !strcmp( str, "AB" ) || !strcmp( str, "BA" ) )
return AB;
else if ( !strcmp( str, "BC" ) || !strcmp( str, "CB" ) )
return BC;
else if ( !strcmp( str, "CA" ) || !strcmp( str, "AC" ) )
return CA;
else
assert( 0 );
return AB;
}
const char* EvtCyclic3::c_str( Index i )
{
switch ( i ) {
case A:
return "A";
case B:
return "B";
case C:
return "C";
}
assert( 0 );
return 0; // sngh
}
const char* EvtCyclic3::c_str( Pair i )
{
switch ( i ) {
case BC:
return "BC";
case CA:
return "CA";
case AB:
return "AB";
}
assert( 0 );
return 0; // sngh
}
const char* EvtCyclic3::c_str( Perm p )
{
if ( p == ABC )
return "ABC";
if ( p == BCA )
return "BCA";
if ( p == CAB )
return "CAB";
if ( p == CBA )
return "CBA";
if ( p == BAC )
return "BAC";
if ( p == ACB )
return "ACB";
assert( 0 );
return "ABC";
}
char* EvtCyclic3::append( const char* str, EvtCyclic3::Index i )
{
// str + null + 1 character
char* s = new char[strlen( str ) + 2];
strcpy( s, str );
strcat( s, c_str( i ) );
return s;
}
char* EvtCyclic3::append( const char* str, EvtCyclic3::Pair i )
{
// str + null + 2 characters
char* s = new char[strlen( str ) + 3];
strcpy( s, str );
strcat( s, c_str( i ) );
return s;
}
ostream& operator<<( ostream& os, EvtCyclic3::Index i )
{
switch ( i ) {
case A: {
os << "A";
return os;
}
case B: {
os << "B";
return os;
}
case C: {
os << "C";
return os;
}
}
assert( 0 );
return os; // should never get here
}
ostream& operator<<( ostream& os, EvtCyclic3::Pair i )
{
switch ( i ) {
case BC: {
os << "BC";
return os;
}
case CA: {
os << "CA";
return os;
}
case AB: {
os << "AB";
return os;
}
}
assert( 0 );
return os; // should never get here
}
diff --git a/src/EvtGenBase/EvtDalitzCoord.cpp b/src/EvtGenBase/EvtDalitzCoord.cpp
index cb56aa9..37b0a2e 100644
--- a/src/EvtGenBase/EvtDalitzCoord.cpp
+++ b/src/EvtGenBase/EvtDalitzCoord.cpp
@@ -1,53 +1,45 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtDalitzCoord.cpp,v 1.3 2009-03-16 15:55:13 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
#include "EvtGenBase/EvtDalitzCoord.hh"
+#include "EvtGenBase/EvtPatches.hh"
+
#include <assert.h>
#include <iostream>
using EvtCyclic3::Pair;
using std::endl;
using std::ostream;
// For coordinates it's good to alway have a
// default ctor. Initialize to something invalid.
EvtDalitzCoord::EvtDalitzCoord() :
_i1( EvtCyclic3::AB ), _i2( EvtCyclic3::BC ), _q1( -1. ), _q2( -1. )
{
}
EvtDalitzCoord::EvtDalitzCoord( const EvtDalitzCoord& other ) :
_i1( other._i1 ), _i2( other._i2 ), _q1( other._q1 ), _q2( other._q2 )
{
}
EvtDalitzCoord::EvtDalitzCoord( Pair i1, double q1, Pair i2, double q2 ) :
_i1( i1 ), _i2( i2 ), _q1( q1 ), _q2( q2 )
{
}
bool EvtDalitzCoord::operator==( const EvtDalitzCoord& other ) const
{
return ( _i1 == other._i1 && _i2 == other._i2 && _q1 == other._q1 &&
_q2 == other._q2 );
}
void EvtDalitzCoord::print( ostream& os ) const
{
os << _i1 << " " << _q1 << endl;
os << _i2 << " " << _q2 << endl;
}
ostream& operator<<( ostream& os, const EvtDalitzCoord& p )
{
p.print( os );
return os;
}
diff --git a/src/EvtGenBase/EvtDalitzFlatPdf.cpp b/src/EvtGenBase/EvtDalitzFlatPdf.cpp
index af300af..660f3c5 100644
--- a/src/EvtGenBase/EvtDalitzFlatPdf.cpp
+++ b/src/EvtGenBase/EvtDalitzFlatPdf.cpp
@@ -1,66 +1,57 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtDalitzFlatPdf.cpp,v 1.3 2009-03-16 15:53:27 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
#include "EvtGenBase/EvtDalitzFlatPdf.hh"
+
#include "EvtGenBase/EvtPatches.hh"
EvtDalitzFlatPdf::EvtDalitzFlatPdf( const EvtDalitzPlot& dp ) :
EvtPdf<EvtDalitzPoint>(), _dp( dp )
{
}
EvtDalitzFlatPdf::EvtDalitzFlatPdf( const EvtDalitzFlatPdf& other ) :
EvtPdf<EvtDalitzPoint>( other ), _dp( other._dp )
{
}
EvtPdf<EvtDalitzPoint>* EvtDalitzFlatPdf::clone() const
{
return new EvtDalitzFlatPdf( *this );
}
double EvtDalitzFlatPdf::pdf( const EvtDalitzPoint& ) const
{
return 1.;
}
EvtValError EvtDalitzFlatPdf::compute_integral( int N ) const
{
return EvtValError( _dp.getArea( N ), 0. );
}
EvtDalitzPoint EvtDalitzFlatPdf::randomPoint()
{
// To obtain a uniform distribution generate
// in terms of q's. Generate in a box that circumscribes the
// Dalitz plot. Accept points inside. If there are two
// many unsuccessful attempts it's a hint that the Dalitz plot
// area is tiny compared to the box. It's a pathological
// case. Abort.
EvtCyclic3::Pair pair1 = EvtCyclic3::BC;
EvtCyclic3::Pair pair2 = EvtCyclic3::CA;
int n = 0;
int maxTries = 1000;
while ( n++ < maxTries ) {
double q1 = EvtRandom::Flat( _dp.qAbsMin( pair1 ), _dp.qAbsMax( pair2 ) );
double q2 = EvtRandom::Flat( _dp.qAbsMin( pair2 ), _dp.qAbsMax( pair2 ) );
EvtDalitzCoord point( pair1, q1, pair2, q2 );
EvtDalitzPoint x( _dp, point );
if ( x.isValid() )
return x;
}
printf( "No point generated for dalitz plot after %d tries\n", maxTries );
return EvtDalitzPoint();
}
diff --git a/src/EvtGenBase/EvtDalitzPlot.cpp b/src/EvtGenBase/EvtDalitzPlot.cpp
index 0504e05..0ffd601 100644
--- a/src/EvtGenBase/EvtDalitzPlot.cpp
+++ b/src/EvtGenBase/EvtDalitzPlot.cpp
@@ -1,318 +1,299 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtDalitzPlot.cpp,v 1.3 2009-03-16 15:53:27 robbep Exp $
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module creator:
-// Alexei Dvoretskii, Caltech, 2001-2002.
-//-----------------------------------------------------------------------
-#include "EvtGenBase/EvtPatches.hh"
-
-// Global 3-body Dalitz decay kinematics as defined by the mass
-// of the mother and the daughters. Spins are not considered.
-
#include "EvtGenBase/EvtDalitzPlot.hh"
+
#include "EvtGenBase/EvtDecayMode.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtTwoBodyVertex.hh"
#include <assert.h>
#include <math.h>
#include <stdio.h>
using namespace EvtCyclic3;
EvtDalitzPlot::EvtDalitzPlot() :
_mA( 0. ), _mB( 0. ), _mC( 0. ), _bigM( 0. ), _ldel( 0. ), _rdel( 0. )
{
}
EvtDalitzPlot::EvtDalitzPlot( double mA, double mB, double mC, double bigM,
double ldel, double rdel ) :
_mA( mA ), _mB( mB ), _mC( mC ), _bigM( bigM ), _ldel( ldel ), _rdel( rdel )
{
sanityCheck();
}
EvtDalitzPlot::EvtDalitzPlot( const EvtDecayMode& mode, double ldel, double rdel )
{
_mA = EvtPDL::getMeanMass( EvtPDL::getId( mode.dau( A ) ) );
_mB = EvtPDL::getMeanMass( EvtPDL::getId( mode.dau( B ) ) );
_mC = EvtPDL::getMeanMass( EvtPDL::getId( mode.dau( C ) ) );
_bigM = EvtPDL::getMeanMass( EvtPDL::getId( mode.mother() ) );
_ldel = ldel;
_rdel = rdel;
sanityCheck();
}
bool EvtDalitzPlot::operator==( const EvtDalitzPlot& other ) const
{
bool ret = false;
if ( _mA == other._mA && _mB == other._mB && _mC == other._mC &&
_bigM == other._bigM )
ret = true;
return ret;
}
const EvtDalitzPlot* EvtDalitzPlot::clone() const
{
return new EvtDalitzPlot( *this );
}
void EvtDalitzPlot::sanityCheck() const
{
if ( _mA < 0 || _mB < 0 || _mC < 0 || _bigM <= 0 ||
_bigM - _mA - _mB - _mC < 0. ) {
printf( "Invalid Dalitz plot %f %f %f %f\n", _mA, _mB, _mC, _bigM );
assert( 0 );
}
assert( _ldel <= 0. );
assert( _rdel >= 0. );
}
double EvtDalitzPlot::m( Index i ) const
{
double m = _mA;
if ( i == B )
m = _mB;
else if ( i == C )
m = _mC;
return m;
}
double EvtDalitzPlot::sum() const
{
return _mA * _mA + _mB * _mB + _mC * _mC + _bigM * _bigM;
}
double EvtDalitzPlot::qAbsMin( Pair i ) const
{
Index j = first( i );
Index k = second( i );
return ( m( j ) + m( k ) ) * ( m( j ) + m( k ) );
}
double EvtDalitzPlot::qAbsMax( Pair i ) const
{
Index j = other( i );
return ( _bigM - m( j ) ) * ( _bigM - m( j ) );
}
double EvtDalitzPlot::qResAbsMin( EvtCyclic3::Pair i ) const
{
return qAbsMin( i ) - sum() / 3.;
}
double EvtDalitzPlot::qResAbsMax( EvtCyclic3::Pair i ) const
{
return qAbsMax( i ) - sum() / 3.;
}
double EvtDalitzPlot::qHelAbsMin( EvtCyclic3::Pair i ) const
{
Pair j = next( i );
Pair k = prev( i );
return ( qAbsMin( j ) - qAbsMax( k ) ) / 2.;
}
double EvtDalitzPlot::qHelAbsMax( EvtCyclic3::Pair i ) const
{
Pair j = next( i );
Pair k = prev( i );
return ( qAbsMax( j ) - qAbsMin( k ) ) / 2.;
}
double EvtDalitzPlot::mAbsMin( Pair i ) const
{
return sqrt( qAbsMin( i ) );
}
double EvtDalitzPlot::mAbsMax( Pair i ) const
{
return sqrt( qAbsMax( i ) );
}
// parallel
double EvtDalitzPlot::qMin( Pair i, Pair j, double q ) const
{
if ( i == j )
return q;
else {
// Particle pair j defines the rest-frame
// 0 - particle common to r.f. and angle calculations
// 1 - particle belonging to r.f. but not angle
// 2 - particle not belonging to r.f.
Index k0 = common( i, j );
Index k2 = other( j );
Index k1 = other( k0, k2 );
// Energy, momentum of particle common to rest-frame and angle
EvtTwoBodyKine jpair( m( k0 ), m( k1 ), sqrt( q ) );
double pk = jpair.p();
double ek = jpair.e( EvtTwoBodyKine::A, EvtTwoBodyKine::AB );
// Energy and momentum of the other particle
EvtTwoBodyKine mother( sqrt( q ), m( k2 ), bigM() );
double ej = mother.e( EvtTwoBodyKine::B, EvtTwoBodyKine::A );
double pj = mother.p( EvtTwoBodyKine::A );
// See PDG 34.4.3.1
return ( ek + ej ) * ( ek + ej ) - ( pk + pj ) * ( pk + pj );
}
}
// antiparallel
double EvtDalitzPlot::qMax( Pair i, Pair j, double q ) const
{
if ( i == j )
return q;
else {
// Particle pair j defines the rest-frame
// 0 - particle common to r.f. and angle calculations
// 1 - particle belonging to r.f. but not angle
// 2 - particle not belonging to r.f.
Index k0 = common( i, j );
Index k2 = other( j );
Index k1 = other( k0, k2 );
// Energy, momentum of particle common to rest-frame and angle
EvtTwoBodyKine jpair( m( k0 ), m( k1 ), sqrt( q ) );
double ek = jpair.e( EvtTwoBodyKine::A, EvtTwoBodyKine::AB );
double pk = jpair.p();
// Energy and momentum of the other particle
EvtTwoBodyKine mother( sqrt( q ), m( k2 ), bigM() );
double ej = mother.e( EvtTwoBodyKine::B, EvtTwoBodyKine::A );
double pj = mother.p( EvtTwoBodyKine::A );
// See PDG 34.4.3.1
return ( ek + ej ) * ( ek + ej ) - ( pk - pj ) * ( pk - pj );
}
}
double EvtDalitzPlot::getArea( int N, Pair i, Pair j ) const
{
// Trapezoidal integral over qi. qj can be calculated.
// The first and the last point are zero, so they are not counted
double dh = ( qAbsMax( i ) - qAbsMin( i ) ) / ( (double)N );
double sum = 0;
int ii;
for ( ii = 1; ii < N; ii++ ) {
double x = qAbsMin( i ) + ii * dh;
double dy = qMax( j, i, x ) - qMin( j, i, x );
sum += dy;
}
return sum * dh;
}
double EvtDalitzPlot::cosTh( EvtCyclic3::Pair i1, double q1,
EvtCyclic3::Pair i2, double q2 ) const
{
if ( i1 == i2 )
return 1.;
double qmax = qMax( i1, i2, q2 );
double qmin = qMin( i1, i2, q2 );
double cos = ( qmax + qmin - 2 * q1 ) / ( qmax - qmin );
return cos;
}
double EvtDalitzPlot::e( Index i, Pair j, double q ) const
{
if ( i == other( j ) ) {
// i does not belong to pair j
return ( bigM() * bigM() - q - m( i ) * m( i ) ) / 2 / sqrt( q );
} else {
// i and k make pair j
Index k;
if ( first( j ) == i )
k = second( j );
else
k = first( j );
double e = ( q + m( i ) * m( i ) - m( k ) * m( k ) ) / 2 / sqrt( q );
return e;
}
}
double EvtDalitzPlot::p( Index i, Pair j, double q ) const
{
double en = e( i, j, q );
double p2 = en * en - m( i ) * m( i );
if ( p2 < 0 ) {
printf( "Bad value of p2 %f %d %d %f %f\n", p2, i, j, en, m( i ) );
assert( 0 );
}
return sqrt( p2 );
}
double EvtDalitzPlot::q( EvtCyclic3::Pair i1, double cosTh, EvtCyclic3::Pair i2,
double q2 ) const
{
if ( i1 == i2 )
return q2;
EvtCyclic3::Index f = first( i1 );
EvtCyclic3::Index s = second( i1 );
return m( f ) * m( f ) + m( s ) * m( s ) +
2 * e( f, i2, q2 ) * e( s, i2, q2 ) -
2 * p( f, i2, q2 ) * p( s, i2, q2 ) * cosTh;
}
double EvtDalitzPlot::jacobian( EvtCyclic3::Pair i, double q ) const
{
return 2 * p( first( i ), i, q ) *
p( other( i ), i, q ); // J(BC) = 2pA*pB = 2pA*pC
}
EvtTwoBodyVertex EvtDalitzPlot::vD( Pair iRes, double m0, int L ) const
{
return EvtTwoBodyVertex( m( first( iRes ) ), m( second( iRes ) ), m0, L );
}
EvtTwoBodyVertex EvtDalitzPlot::vB( Pair iRes, double m0, int L ) const
{
return EvtTwoBodyVertex( m0, m( other( iRes ) ), bigM(), L );
}
void EvtDalitzPlot::print() const
{
// masses
printf( "Mass M %f\n", bigM() );
printf( "Mass mA %f\n", _mA );
printf( "Mass mB %f\n", _mB );
printf( "Mass mC %f\n", _mC );
// limits
printf( "Limits qAB %f : %f\n", qAbsMin( AB ), qAbsMax( AB ) );
printf( "Limits qBC %f : %f\n", qAbsMin( BC ), qAbsMax( BC ) );
printf( "Limits qCA %f : %f\n", qAbsMin( CA ), qAbsMax( CA ) );
printf( "Sum q %f\n", sum() );
printf( "Limit qsum %f : %f\n", qSumMin(), qSumMax() );
}
diff --git a/src/EvtGenBase/EvtDalitzPoint.cpp b/src/EvtGenBase/EvtDalitzPoint.cpp
index ec24482..1a14e0b 100644
--- a/src/EvtGenBase/EvtDalitzPoint.cpp
+++ b/src/EvtGenBase/EvtDalitzPoint.cpp
@@ -1,204 +1,195 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtDalitzPoint.cpp,v 1.3 2009-03-16 15:53:27 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
#include "EvtGenBase/EvtDalitzPoint.hh"
+
#include "EvtGenBase/EvtPatches.hh"
#include <assert.h>
#include <math.h>
#include <stdio.h>
using namespace EvtCyclic3;
EvtDalitzPoint::EvtDalitzPoint() :
_mA( -1. ), _mB( -1. ), _mC( -1. ), _qAB( -1. ), _qBC( -1. ), _qCA( -1. )
{
}
EvtDalitzPoint::EvtDalitzPoint( double mA, double mB, double mC, double qAB,
double qBC, double qCA ) :
_mA( mA ), _mB( mB ), _mC( mC ), _qAB( qAB ), _qBC( qBC ), _qCA( qCA )
{
}
// Constructor from Zemach coordinates
EvtDalitzPoint::EvtDalitzPoint( double mA, double mB, double mC,
EvtCyclic3::Pair i, double qres, double qhel,
double qsum ) :
_mA( mA ), _mB( mB ), _mC( mC )
{
double qi = qres + qsum / 3.;
double qj = -qres / 2. + qhel + qsum / 3.;
double qk = -qres / 2. - qhel + qsum / 3.;
if ( i == AB ) {
_qAB = qi;
_qBC = qj;
_qCA = qk;
} else if ( i == BC ) {
_qAB = qk;
_qBC = qi;
_qCA = qj;
} else if ( i == CA ) {
_qAB = qj;
_qBC = qk;
_qCA = qi;
}
}
EvtDalitzPoint::EvtDalitzPoint( const EvtDalitzPlot& dp,
const EvtDalitzCoord& x ) :
_mA( dp.m( A ) ), _mB( dp.m( B ) ), _mC( dp.m( C ) )
{
if ( x.pair1() == AB )
_qAB = x.q1();
else if ( x.pair2() == AB )
_qAB = x.q2();
else
_qAB = dp.sum() - x.q1() - x.q2();
if ( x.pair1() == BC )
_qBC = x.q1();
else if ( x.pair2() == BC )
_qBC = x.q2();
else
_qBC = dp.sum() - x.q1() - x.q2();
if ( x.pair1() == CA )
_qCA = x.q1();
else if ( x.pair2() == CA )
_qCA = x.q2();
else
_qCA = dp.sum() - x.q1() - x.q2();
}
double EvtDalitzPoint::q( EvtCyclic3::Pair i ) const
{
double ret = _qAB;
if ( BC == i )
ret = _qBC;
else if ( CA == i )
ret = _qCA;
return ret;
}
double EvtDalitzPoint::m( EvtCyclic3::Index i ) const
{
double ret = _mA;
if ( B == i )
ret = _mB;
else if ( C == i )
ret = _mC;
return ret;
}
// Zemach variables
double EvtDalitzPoint::qres( EvtCyclic3::Pair i ) const
{
return ( 2. * q( i ) - q( EvtCyclic3::prev( i ) ) -
q( EvtCyclic3::next( i ) ) ) /
3.;
}
double EvtDalitzPoint::qhel( EvtCyclic3::Pair i ) const
{
Pair j = next( i );
Pair k = prev( i );
return ( q( j ) - q( k ) ) / 2.;
}
double EvtDalitzPoint::qsum() const
{
return _qAB + _qBC + _qCA;
}
double EvtDalitzPoint::qMin( EvtCyclic3::Pair i, EvtCyclic3::Pair j ) const
{
EvtDalitzPlot dp = getDalitzPlot();
return dp.qMin( i, j, q( j ) );
}
double EvtDalitzPoint::qMax( EvtCyclic3::Pair i, EvtCyclic3::Pair j ) const
{
EvtDalitzPlot dp = getDalitzPlot();
return dp.qMax( i, j, q( j ) );
}
double EvtDalitzPoint::pp( EvtCyclic3::Index i, EvtCyclic3::Index j ) const
{
if ( i == j )
return m( i ) * m( i );
else
return ( q( combine( i, j ) ) - m( i ) * m( i ) - m( j ) * m( j ) ) / 2.;
}
double EvtDalitzPoint::e( EvtCyclic3::Index i, EvtCyclic3::Pair j ) const
{
EvtDalitzPlot dp = getDalitzPlot();
return dp.e( i, j, q( j ) );
}
double EvtDalitzPoint::p( EvtCyclic3::Index i, EvtCyclic3::Pair j ) const
{
EvtDalitzPlot dp = getDalitzPlot();
return dp.p( i, j, q( j ) );
}
double EvtDalitzPoint::cosTh( EvtCyclic3::Pair pairAng,
EvtCyclic3::Pair pairRes ) const
{
EvtDalitzPlot dp = getDalitzPlot();
return dp.cosTh( pairAng, q( pairAng ), pairRes, q( pairRes ) );
}
EvtDalitzCoord EvtDalitzPoint::getDalitzPoint( EvtCyclic3::Pair i,
EvtCyclic3::Pair j ) const
{
return EvtDalitzCoord( i, q( i ), j, q( j ) );
}
EvtDalitzPlot EvtDalitzPoint::getDalitzPlot() const
{
return EvtDalitzPlot( _mA, _mB, _mC, bigM() );
}
bool EvtDalitzPoint::isValid() const
{
// Check masses
double M = bigM();
if ( _mA < 0 || _mB < 0 || _mC < 0 || M <= 0 )
return false;
if ( M < _mA + _mB + _mC )
return false;
// Check that first coordinate is within absolute limits
bool inside = false;
EvtDalitzPlot dp = getDalitzPlot();
if ( dp.qAbsMin( AB ) <= _qAB && _qAB <= dp.qAbsMax( AB ) )
if ( qMin( BC, AB ) <= _qBC && _qBC <= qMax( BC, AB ) )
inside = true;
return inside;
}
double EvtDalitzPoint::bigM() const
{
return sqrt( _qAB + _qBC + _qCA - _mA * _mA - _mB * _mB - _mC * _mC );
}
void EvtDalitzPoint::print() const
{
getDalitzPlot().print();
printf( "%f %f %f\n", _qAB, _qBC, _qCA );
}
diff --git a/src/EvtGenBase/EvtDalitzResPdf.cpp b/src/EvtGenBase/EvtDalitzResPdf.cpp
index 0898220..59785ec 100644
--- a/src/EvtGenBase/EvtDalitzResPdf.cpp
+++ b/src/EvtGenBase/EvtDalitzResPdf.cpp
@@ -1,92 +1,83 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtDalitzResPdf.cpp,v 1.3 2009-03-16 15:54:07 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
+#include "EvtGenBase/EvtDalitzResPdf.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtDalitzCoord.hh"
-#include "EvtGenBase/EvtDalitzResPdf.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include <math.h>
#include <stdio.h>
using namespace EvtCyclic3;
EvtDalitzResPdf::EvtDalitzResPdf( const EvtDalitzPlot& dp, double _m0,
double _g0, EvtCyclic3::Pair pair ) :
EvtPdf<EvtDalitzPoint>(), _dp( dp ), _m0( _m0 ), _g0( _g0 ), _pair( pair )
{
}
EvtValError EvtDalitzResPdf::compute_integral( int N ) const
{
assert( N != 0 );
EvtCyclic3::Pair i = _pair;
EvtCyclic3::Pair j = EvtCyclic3::next( i );
// Trapezoidal integral
double dh = ( _dp.qAbsMax( j ) - _dp.qAbsMin( j ) ) / ( (double)N );
double sum = 0;
int ii;
for ( ii = 1; ii < N; ii++ ) {
double x = _dp.qAbsMin( j ) + ii * dh;
double min = ( _dp.qMin( i, j, x ) - _m0 * _m0 ) / _m0 / _g0;
double max = ( _dp.qMax( i, j, x ) - _m0 * _m0 ) / _m0 / _g0;
double itg = 1 / EvtConst::pi * ( atan( max ) - atan( min ) );
sum += itg;
}
EvtValError ret( sum * dh, 0. );
return ret;
}
EvtDalitzPoint EvtDalitzResPdf::randomPoint()
{
// Random point generation must be done in a box encompassing the
// Dalitz plot
EvtCyclic3::Pair i = _pair;
EvtCyclic3::Pair j = EvtCyclic3::next( i );
double min = 1 / EvtConst::pi *
atan( ( _dp.qAbsMin( i ) - _m0 * _m0 ) / _m0 / _g0 );
double max = 1 / EvtConst::pi *
atan( ( _dp.qAbsMax( i ) - _m0 * _m0 ) / _m0 / _g0 );
int n = 0;
while ( n++ < 1000 ) {
double qj = EvtRandom::Flat( _dp.qAbsMin( j ), _dp.qAbsMax( j ) );
double r = EvtRandom::Flat( min, max );
double qi = tan( EvtConst::pi * r ) * _g0 * _m0 + _m0 * _m0;
EvtDalitzCoord x( i, qi, j, qj );
EvtDalitzPoint ret( _dp, x );
if ( ret.isValid() )
return ret;
}
// All generated points turned out to be outside of the Dalitz plot
// (in the outer box)
printf( "No point generated for dalitz plot after 1000 tries\n" );
return EvtDalitzPoint( 0., 0., 0., 0., 0., 0. );
}
double EvtDalitzResPdf::pdf( const EvtDalitzPoint& x ) const
{
EvtCyclic3::Pair i = _pair;
double dq = x.q( i ) - _m0 * _m0;
return 1 / EvtConst::pi * _g0 * _m0 / ( dq * dq + _g0 * _g0 * _m0 * _m0 );
}
double EvtDalitzResPdf::pdfMaxValue() const
{
return 1 / ( EvtConst::pi * _g0 * _m0 );
}
diff --git a/src/EvtGenBase/EvtDalitzReso.cpp b/src/EvtGenBase/EvtDalitzReso.cpp
index 56a5054..1d4882c 100644
--- a/src/EvtGenBase/EvtDalitzReso.cpp
+++ b/src/EvtGenBase/EvtDalitzReso.cpp
@@ -1,1097 +1,1085 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*****************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtDalitzReso.cpp,v 1.1 2009-03-16 16:47:51 robbep Exp $
- *
- * Description:
- * Class to compute Dalitz amplitudes based on many models that cannot be
- * handled with EvtResonance.
- *
- * Modification history:
- * Jordi Garra Ticó 2008/07/03 File created
- *****************************************************************************/
+#include "EvtGenBase/EvtDalitzReso.hh"
#include "EvtGenBase/EvtCyclic3.hh"
-#include "EvtGenBase/EvtDalitzReso.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtMatrix.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtdFunction.hh"
#include <assert.h>
#include <cmath>
#include <iostream>
#include <stdlib.h>
#define PRECISION ( 1.e-3 )
using EvtCyclic3::Index;
using EvtCyclic3::Pair;
// single Breit-Wigner
EvtDalitzReso::EvtDalitzReso( const EvtDalitzPlot& dp, Pair pairAng, Pair pairRes,
EvtSpinType::spintype spin, double m0, double g0,
NumType typeN, double f_b, double f_d ) :
_dp( dp ),
_pairAng( pairAng ),
_pairRes( pairRes ),
_spin( spin ),
_typeN( typeN ),
_m0( m0 ),
_g0( g0 ),
_massFirst( dp.m( first( pairRes ) ) ),
_massSecond( dp.m( second( pairRes ) ) ),
_m0_mix( -1. ),
_g0_mix( 0. ),
_delta_mix( 0. ),
_amp_mix( 0., 0. ),
_g1( -1. ),
_g2( -1. ),
_coupling2( Undefined ),
_f_b( f_b ),
_f_d( f_d ),
_kmatrix_index( -1 ),
_fr12prod( 0., 0. ),
_fr13prod( 0., 0. ),
_fr14prod( 0., 0. ),
_fr15prod( 0., 0. ),
_s0prod( 0. ),
_a( 0. ),
_r( 0. ),
_Blass( 0. ),
_phiB( 0. ),
_R( 0. ),
_phiR( 0. ),
_cutoff( -1. ),
_scaleByMOverQ( false ),
_alpha( 0. )
{
_vb = EvtTwoBodyVertex( _m0, _dp.m( EvtCyclic3::other( _pairRes ) ),
_dp.bigM(), _spin );
_vd = EvtTwoBodyVertex( _massFirst, _massSecond, _m0, _spin );
_vb.set_f( _f_b ); // Default values for Blatt-Weisskopf factors are 0.0 and 1.5.
_vd.set_f( _f_d );
assert( _typeN != K_MATRIX && _typeN != K_MATRIX_I &&
_typeN != K_MATRIX_II ); // single BW cannot be K-matrix
}
// Breit-Wigner with electromagnetic mass mixing
EvtDalitzReso::EvtDalitzReso( const EvtDalitzPlot& dp, Pair pairAng, Pair pairRes,
EvtSpinType::spintype spin, double m0, double g0,
NumType typeN, double m0_mix, double g0_mix,
double delta_mix, EvtComplex amp_mix ) :
_dp( dp ),
_pairAng( pairAng ),
_pairRes( pairRes ),
_spin( spin ),
_typeN( typeN ),
_m0( m0 ),
_g0( g0 ),
_massFirst( dp.m( first( pairRes ) ) ),
_massSecond( dp.m( second( pairRes ) ) ),
_m0_mix( m0_mix ),
_g0_mix( g0_mix ),
_delta_mix( delta_mix ),
_amp_mix( amp_mix ),
_g1( -1. ),
_g2( -1. ),
_coupling2( Undefined ),
_f_b( 0.0 ),
_f_d( 1.5 ),
_kmatrix_index( -1 ),
_fr12prod( 0., 0. ),
_fr13prod( 0., 0. ),
_fr14prod( 0., 0. ),
_fr15prod( 0., 0. ),
_s0prod( 0. ),
_a( 0. ),
_r( 0. ),
_Blass( 0. ),
_phiB( 0. ),
_R( 0. ),
_phiR( 0. ),
_cutoff( -1. ),
_scaleByMOverQ( false ),
_alpha( 0. )
{
_vb = EvtTwoBodyVertex( _m0, _dp.m( EvtCyclic3::other( _pairRes ) ),
_dp.bigM(), _spin );
_vd = EvtTwoBodyVertex( _massFirst, _massSecond, _m0, _spin );
_vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
_vd.set_f( 1.5 );
// single BW (with electromagnetic mixing) cannot be K-matrix
assert( _typeN != K_MATRIX && _typeN != K_MATRIX_I && _typeN != K_MATRIX_II );
}
// coupled Breit-Wigner
EvtDalitzReso::EvtDalitzReso( const EvtDalitzPlot& dp, Pair pairAng,
Pair pairRes, EvtSpinType::spintype spin,
double m0, NumType typeN, double g1, double g2,
CouplingType coupling2 ) :
_dp( dp ),
_pairAng( pairAng ),
_pairRes( pairRes ),
_spin( spin ),
_typeN( typeN ),
_m0( m0 ),
_g0( -1. ),
_massFirst( dp.m( first( pairRes ) ) ),
_massSecond( dp.m( second( pairRes ) ) ),
_m0_mix( -1. ),
_g0_mix( 0. ),
_delta_mix( 0. ),
_amp_mix( 0., 0. ),
_g1( g1 ),
_g2( g2 ),
_coupling2( coupling2 ),
_f_b( 0.0 ),
_f_d( 1.5 ),
_kmatrix_index( -1 ),
_fr12prod( 0., 0. ),
_fr13prod( 0., 0. ),
_fr14prod( 0., 0. ),
_fr15prod( 0., 0. ),
_s0prod( 0. ),
_a( 0. ),
_r( 0. ),
_Blass( 0. ),
_phiB( 0. ),
_R( 0. ),
_phiR( 0. ),
_cutoff( -1. ),
_scaleByMOverQ( false ),
_alpha( 0. )
{
_vb = EvtTwoBodyVertex( _m0, _dp.m( EvtCyclic3::other( _pairRes ) ),
_dp.bigM(), _spin );
_vd = EvtTwoBodyVertex( _massFirst, _massSecond, _m0, _spin );
_vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
_vd.set_f( 1.5 );
assert( _coupling2 != Undefined );
assert( _typeN != K_MATRIX && _typeN != K_MATRIX_I &&
_typeN != K_MATRIX_II ); // coupled BW cannot be K-matrix
assert( _typeN != LASS ); // coupled BW cannot be LASS
assert( _typeN != NBW ); // for coupled BW, only relativistic BW
}
// K-Matrix (A&S)
EvtDalitzReso::EvtDalitzReso( const EvtDalitzPlot& dp, Pair pairRes,
std::string nameIndex, NumType typeN,
EvtComplex fr12prod, EvtComplex fr13prod,
EvtComplex fr14prod, EvtComplex fr15prod,
double s0prod ) :
_dp( dp ),
_pairRes( pairRes ),
_typeN( typeN ),
_m0( 0. ),
_g0( 0. ),
_massFirst( dp.m( first( pairRes ) ) ),
_massSecond( dp.m( second( pairRes ) ) ),
_m0_mix( -1. ),
_g0_mix( 0. ),
_delta_mix( 0. ),
_amp_mix( 0., 0. ),
_g1( -1. ),
_g2( -1. ),
_coupling2( Undefined ),
_f_b( 0. ),
_f_d( 0. ),
_kmatrix_index( -1 ),
_fr12prod( fr12prod ),
_fr13prod( fr13prod ),
_fr14prod( fr14prod ),
_fr15prod( fr15prod ),
_s0prod( s0prod ),
_a( 0. ),
_r( 0. ),
_Blass( 0. ),
_phiB( 0. ),
_R( 0. ),
_phiR( 0. ),
_cutoff( -1. ),
_scaleByMOverQ( false ),
_alpha( 0. )
{
assert( _typeN == K_MATRIX || _typeN == K_MATRIX_I || _typeN == K_MATRIX_II );
_spin = EvtSpinType::SCALAR;
if ( nameIndex == "Pole1" )
_kmatrix_index = 1;
else if ( nameIndex == "Pole2" )
_kmatrix_index = 2;
else if ( nameIndex == "Pole3" )
_kmatrix_index = 3;
else if ( nameIndex == "Pole4" )
_kmatrix_index = 4;
else if ( nameIndex == "Pole5" )
_kmatrix_index = 5;
else if ( nameIndex == "f11prod" )
_kmatrix_index = 6;
else
assert( 0 );
}
// LASS parameterization
EvtDalitzReso::EvtDalitzReso( const EvtDalitzPlot& dp, Pair pairRes, double m0,
double g0, double a, double r, double B,
double phiB, double R, double phiR, double cutoff,
bool scaleByMOverQ ) :
_dp( dp ),
_pairRes( pairRes ),
_typeN( LASS ),
_m0( m0 ),
_g0( g0 ),
_massFirst( dp.m( first( pairRes ) ) ),
_massSecond( dp.m( second( pairRes ) ) ),
_m0_mix( -1. ),
_g0_mix( 0. ),
_delta_mix( 0. ),
_amp_mix( 0., 0. ),
_g1( -1. ),
_g2( -1. ),
_coupling2( Undefined ),
_f_b( 0.0 ),
_f_d( 1.5 ),
_kmatrix_index( -1 ),
_fr12prod( 0., 0. ),
_fr13prod( 0., 0. ),
_fr14prod( 0., 0. ),
_fr15prod( 0., 0. ),
_s0prod( 0. ),
_a( a ),
_r( r ),
_Blass( B ),
_phiB( phiB ),
_R( R ),
_phiR( phiR ),
_cutoff( cutoff ),
_scaleByMOverQ( scaleByMOverQ ),
_alpha( 0. )
{
_spin = EvtSpinType::SCALAR;
_vd = EvtTwoBodyVertex( _massFirst, _massSecond, _m0, _spin );
_vd.set_f( 1.5 ); // Default values for Blatt-Weisskopf factors.
}
//Flatte
EvtDalitzReso::EvtDalitzReso( const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes,
double m0 ) :
_dp( dp ),
_pairRes( pairRes ),
_typeN( FLATTE ),
_m0( m0 ),
_g0( 0. ),
_massFirst( dp.m( first( pairRes ) ) ),
_massSecond( dp.m( second( pairRes ) ) ),
_m0_mix( -1. ),
_g0_mix( 0. ),
_delta_mix( 0. ),
_amp_mix( 0., 0. ),
_g1( -1. ),
_g2( -1. ),
_coupling2( Undefined ),
_f_b( 0. ),
_f_d( 0. ),
_kmatrix_index( -1 ),
_fr12prod( 0., 0. ),
_fr13prod( 0., 0. ),
_fr14prod( 0., 0. ),
_fr15prod( 0., 0. ),
_s0prod( 0. ),
_a( 0. ),
_r( 0. ),
_Blass( 0. ),
_phiB( 0. ),
_R( 0. ),
_phiR( 0. ),
_cutoff( -1. ),
_scaleByMOverQ( false ),
_alpha( 0. )
{
_spin = EvtSpinType::SCALAR;
}
EvtDalitzReso::EvtDalitzReso( const EvtDalitzReso& other ) :
_dp( other._dp ),
_pairAng( other._pairAng ),
_pairRes( other._pairRes ),
_spin( other._spin ),
_typeN( other._typeN ),
_m0( other._m0 ),
_g0( other._g0 ),
_vb( other._vb ),
_vd( other._vd ),
_massFirst( other._massFirst ),
_massSecond( other._massSecond ),
_m0_mix( other._m0_mix ),
_g0_mix( other._g0_mix ),
_delta_mix( other._delta_mix ),
_amp_mix( other._amp_mix ),
_g1( other._g1 ),
_g2( other._g2 ),
_coupling2( other._coupling2 ),
_f_b( other._f_b ),
_f_d( other._f_d ),
_kmatrix_index( other._kmatrix_index ),
_fr12prod( other._fr12prod ),
_fr13prod( other._fr13prod ),
_fr14prod( other._fr14prod ),
_fr15prod( other._fr15prod ),
_s0prod( other._s0prod ),
_a( other._a ),
_r( other._r ),
_Blass( other._Blass ),
_phiB( other._phiB ),
_R( other._R ),
_phiR( other._phiR ),
_cutoff( other._cutoff ),
_scaleByMOverQ( other._scaleByMOverQ ),
_alpha( other._alpha ),
_flatteParams( other._flatteParams )
{
}
EvtComplex EvtDalitzReso::evaluate( const EvtDalitzPoint& x )
{
double m = sqrt( x.q( _pairRes ) );
if ( _typeN == NON_RES )
return EvtComplex( 1.0, 0.0 );
if ( _typeN == NON_RES_LIN )
return m * m;
if ( _typeN == NON_RES_EXP )
return exp( -_alpha * m * m );
// do use always hash table (speed up fitting)
if ( _typeN == K_MATRIX || _typeN == K_MATRIX_I || _typeN == K_MATRIX_II )
return Fvector( m * m, _kmatrix_index );
if ( _typeN == LASS )
return lass( m * m );
if ( _typeN == FLATTE )
return flatte( m );
EvtComplex amp( 1.0, 0.0 );
if ( fabs( _dp.bigM() - x.bigM() ) > 0.000001 ) {
_vb = EvtTwoBodyVertex( _m0, _dp.m( EvtCyclic3::other( _pairRes ) ),
x.bigM(), _spin );
_vb.set_f( _f_b );
}
EvtTwoBodyKine vb( m, x.m( EvtCyclic3::other( _pairRes ) ), x.bigM() );
EvtTwoBodyKine vd( _massFirst, _massSecond, m );
EvtComplex prop( 0, 0 );
if ( _typeN == NBW ) {
prop = propBreitWigner( _m0, _g0, m );
} else if ( _typeN == GAUSS_CLEO || _typeN == GAUSS_CLEO_ZEMACH ) {
prop = propGauss( _m0, _g0, m );
} else {
if ( _coupling2 == Undefined ) {
// single BW
double g = ( _g0 <= 0. || _vd.pD() <= 0. )
? -_g0
: _g0 * _vd.widthFactor( vd ); // running width
if ( _typeN == GS_CLEO || _typeN == GS_CLEO_ZEMACH ) {
// Gounaris-Sakurai (GS)
prop = propGounarisSakurai( _m0, fabs( _g0 ), _vd.pD(), m, g,
vd.p() );
} else {
// standard relativistic BW
prop = propBreitWignerRel( _m0, g, m );
}
} else {
// coupled width BW
EvtComplex G1, G2;
switch ( _coupling2 ) {
case PicPic: {
G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
G2 = _g2 * _g2 * psFactor( mPic, mPic, m );
break;
}
case PizPiz: {
G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
G2 = _g2 * _g2 * psFactor( mPiz, mPiz, m );
break;
}
case PiPi: {
G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
G2 = _g2 * _g2 * psFactor( mPic, mPic, mPiz, mPiz, m );
break;
}
case KcKc: {
G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
G2 = _g2 * _g2 * psFactor( mKc, mKc, m );
break;
}
case KzKz: {
G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
G2 = _g2 * _g2 * psFactor( mKz, mKz, m );
break;
}
case KK: {
G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
G2 = _g2 * _g2 * psFactor( mKc, mKc, mKz, mKz, m );
break;
}
case EtaPic: {
G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
static double mEta = EvtPDL::getMass( EvtPDL::getId( "eta" ) );
static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
G2 = _g2 * _g2 * psFactor( mEta, mPic, m );
break;
}
case EtaPiz: {
G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
static double mEta = EvtPDL::getMass( EvtPDL::getId( "eta" ) );
static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
G2 = _g2 * _g2 * psFactor( mEta, mPiz, m );
break;
}
case PicPicKK: {
static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
//G1 = _g1*_g1*psFactor(mPic,mPic,m);
G1 = _g1 * psFactor( mPic, mPic, m );
static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
//G2 = _g2*_g2*psFactor(mKc,mKc,mKz,mKz,m);
G2 = _g2 * psFactor( mKc, mKc, mKz, mKz, m );
break;
}
default:
std::cout
<< "EvtDalitzReso:evaluate(): PANIC, wrong coupling2 state."
<< std::endl;
assert( 0 );
break;
}
// calculate standard couple BW propagator
if ( _coupling2 != WA76 )
prop = _g1 * propBreitWignerRelCoupled( _m0, G1, G2, m );
}
}
amp *= prop;
// Compute form-factors (Blatt-Weisskopf penetration factor)
amp *= _vb.formFactor( vb );
amp *= _vd.formFactor( vd );
// Compute numerator (angular distribution)
amp *= numerator( x, vb, vd );
// Compute electromagnetic mass mixing factor
if ( _m0_mix > 0. ) {
EvtComplex prop_mix;
if ( _typeN == NBW ) {
prop_mix = propBreitWigner( _m0_mix, _g0_mix, m );
} else {
assert( _g1 < 0. ); // running width only
double g_mix = _g0_mix * _vd.widthFactor( vd );
prop_mix = propBreitWignerRel( _m0_mix, g_mix, m );
}
amp *= mixFactor( prop, prop_mix );
}
return amp;
}
EvtComplex EvtDalitzReso::psFactor( double& ma, double& mb, double& m )
{
if ( m > ( ma + mb ) ) {
EvtTwoBodyKine vd( ma, mb, m );
return EvtComplex( 0, 2 * vd.p() / m );
} else {
// analytical continuation
double s = m * m;
double phaseFactor_analyticalCont =
-0.5 * ( sqrt( 4 * ma * ma / s - 1 ) + sqrt( 4 * mb * mb / s - 1 ) );
return EvtComplex( phaseFactor_analyticalCont, 0 );
}
}
EvtComplex EvtDalitzReso::psFactor( double& ma1, double& mb1, double& ma2,
double& mb2, double& m )
{
return 0.5 * ( psFactor( ma1, mb1, m ) + psFactor( ma2, mb2, m ) );
}
EvtComplex EvtDalitzReso::propGauss( const double& m0, const double& s0,
const double& m )
{
// Gaussian
double gauss = 1. / sqrt( EvtConst::twoPi ) / s0 *
exp( -( m - m0 ) * ( m - m0 ) / 2. / ( s0 * s0 ) );
return EvtComplex( gauss, 0. );
}
EvtComplex EvtDalitzReso::propBreitWigner( const double& m0, const double& g0,
const double& m )
{
// non-relativistic BW
return sqrt( g0 / EvtConst::twoPi ) / ( m - m0 - EvtComplex( 0.0, g0 / 2. ) );
}
EvtComplex EvtDalitzReso::propBreitWignerRel( const double& m0,
const double& g0, const double& m )
{
// relativistic BW with real width
return 1. / ( m0 * m0 - m * m - EvtComplex( 0., m0 * g0 ) );
}
EvtComplex EvtDalitzReso::propBreitWignerRel( const double& m0,
const EvtComplex& g0,
const double& m )
{
// relativistic BW with complex width
return 1. / ( m0 * m0 - m * m - EvtComplex( 0., m0 ) * g0 );
}
EvtComplex EvtDalitzReso::propBreitWignerRelCoupled( const double& m0,
const EvtComplex& g1,
const EvtComplex& g2,
const double& m )
{
// relativistic coupled BW
return 1. / ( m0 * m0 - m * m - ( g1 + g2 ) );
}
EvtComplex EvtDalitzReso::propGounarisSakurai( const double& m0, const double& g0,
const double& k0, const double& m,
const double& g, const double& k )
{
// Gounaris-Sakurai parameterization of pi+pi- P wave. PRD, Vol61, 112002. PRL, Vol21, 244.
// Expressions taken from BAD637v4, after fixing the imaginary part of the BW denominator: i M_R Gamma_R(s) --> i sqrt(s) Gamma_R(s)
return ( 1. + GS_d( m0, k0 ) * g0 / m0 ) /
( m0 * m0 - m * m - EvtComplex( 0., m * g ) +
GS_f( m0, g0, k0, m, k ) );
}
inline double EvtDalitzReso::GS_f( const double& m0, const double& g0,
const double& k0, const double& m,
const double& k )
{
// m: sqrt(s)
// m0: nominal resonance mass
// k: momentum of pion in resonance rest frame (at m)
// k0: momentum of pion in resonance rest frame (at nominal resonance mass)
return g0 * m0 * m0 / ( k0 * k0 * k0 ) *
( k * k * ( GS_h( m, k ) - GS_h( m0, k0 ) ) +
( m0 * m0 - m * m ) * k0 * k0 * GS_dhods( m0, k0 ) );
}
inline double EvtDalitzReso::GS_h( const double& m, const double& k )
{
return 2. / EvtConst::pi * k / m *
log( ( m + 2. * k ) / ( 2. * _massFirst ) );
}
inline double EvtDalitzReso::GS_dhods( const double& m0, const double& k0 )
{
return GS_h( m0, k0 ) * ( 0.125 / ( k0 * k0 ) - 0.5 / ( m0 * m0 ) ) +
0.5 / ( EvtConst::pi * m0 * m0 );
}
inline double EvtDalitzReso::GS_d( const double& m0, const double& k0 )
{
return 3. / EvtConst::pi * _massFirst * _massFirst / ( k0 * k0 ) *
log( ( m0 + 2. * k0 ) / ( 2. * _massFirst ) ) +
m0 / ( 2. * EvtConst::pi * k0 ) -
_massFirst * _massFirst * m0 / ( EvtConst::pi * k0 * k0 * k0 );
}
EvtComplex EvtDalitzReso::numerator( const EvtDalitzPoint& x,
const EvtTwoBodyKine& vb,
const EvtTwoBodyKine& vd )
{
EvtComplex ret( 0., 0. );
// Non-relativistic Breit-Wigner
if ( NBW == _typeN ) {
ret = angDep( x );
}
// Standard relativistic Zemach propagator
else if ( RBW_ZEMACH == _typeN ) {
ret = _vd.phaseSpaceFactor( vd, EvtTwoBodyKine::AB ) * angDep( x );
}
// Standard relativistic Zemach propagator
else if ( RBW_ZEMACH2 == _typeN ) {
ret = _vd.phaseSpaceFactor( vd, EvtTwoBodyKine::AB ) *
_vb.phaseSpaceFactor( vb, EvtTwoBodyKine::AB ) * angDep( x );
if ( _spin == EvtSpinType::VECTOR ) {
ret *= -4.;
} else if ( _spin == EvtSpinType::TENSOR ) {
ret *= 16. / 3.;
} else if ( _spin != EvtSpinType::SCALAR )
assert( 0 );
}
// Kuehn-Santamaria normalization:
else if ( RBW_KUEHN == _typeN ) {
ret = _m0 * _m0 * angDep( x );
}
// CLEO amplitude
else if ( ( RBW_CLEO == _typeN ) || ( GS_CLEO == _typeN ) ||
( RBW_CLEO_ZEMACH == _typeN ) || ( GS_CLEO_ZEMACH == _typeN ) ||
( GAUSS_CLEO == _typeN ) || ( GAUSS_CLEO_ZEMACH == _typeN ) ) {
Index iA = other( _pairAng ); // A = other(BC)
Index iB = common( _pairRes, _pairAng ); // B = common(AB,BC)
Index iC = other( _pairRes ); // C = other(AB)
double M = x.bigM();
double mA = x.m( iA );
double mB = x.m( iB );
double mC = x.m( iC );
double qAB = x.q( combine( iA, iB ) );
double qBC = x.q( combine( iB, iC ) );
double qCA = x.q( combine( iC, iA ) );
double M2 = M * M;
double m02 = ( ( RBW_CLEO_ZEMACH == _typeN ) ||
( GS_CLEO_ZEMACH == _typeN ) ||
( GAUSS_CLEO_ZEMACH == _typeN ) )
? qAB
: _m0 * _m0;
double mA2 = mA * mA;
double mB2 = mB * mB;
double mC2 = mC * mC;
if ( _spin == EvtSpinType::SCALAR )
ret = EvtComplex( 1., 0. );
else if ( _spin == EvtSpinType::VECTOR ) {
ret = qCA - qBC + ( M2 - mC2 ) * ( mB2 - mA2 ) / m02;
} else if ( _spin == EvtSpinType::TENSOR ) {
double x1 = qBC - qCA + ( M2 - mC2 ) * ( mA2 - mB2 ) / m02;
double x2 = M2 - mC2;
double x3 = qAB - 2 * M2 - 2 * mC2 + x2 * x2 / m02;
double x4 = mA2 - mB2;
double x5 = qAB - 2 * mB2 - 2 * mA2 + x4 * x4 / m02;
ret = x1 * x1 - x3 * x5 / 3.;
} else
assert( 0 );
}
return ret;
}
double EvtDalitzReso::angDep( const EvtDalitzPoint& x )
{
// Angular dependece for factorizable amplitudes
// unphysical cosines indicate we are in big trouble
double cosTh = x.cosTh(
_pairAng, _pairRes ); // angle between common(reso,ang) and other(reso)
if ( fabs( cosTh ) > 1. ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "cosTh " << cosTh << std::endl;
assert( 0 );
}
// in units of half-spin
return EvtdFunction::d( EvtSpinType::getSpin2( _spin ), 2 * 0, 2 * 0,
acos( cosTh ) );
}
EvtComplex EvtDalitzReso::mixFactor( EvtComplex prop, EvtComplex prop_mix )
{
double Delta = _delta_mix * ( _m0 + _m0_mix );
return 1 / ( 1 - Delta * Delta * prop * prop_mix ) *
( 1 + _amp_mix * Delta * prop_mix );
}
EvtComplex EvtDalitzReso::Fvector( double s, int index )
{
assert( index >= 1 && index <= 6 );
//Define the complex coupling constant
//The convection is as follow
//i=0 --> pi+ pi-
//i=1 --> KK
//i=2 --> 4pi
//i=3 --> eta eta
//i=4 --> eta eta'
//The first index is the resonace-pole index
double g[5][5]; // Coupling constants. The first index is the pole index. The second index is the decay channel
double ma[5]; // Pole masses. The unit is in GeV
int solution = ( _typeN == K_MATRIX )
? 3
: ( ( _typeN == K_MATRIX_I )
? 1
: ( ( _typeN == K_MATRIX_II ) ? 2 : 0 ) );
if ( solution == 0 ) {
std::cout << "EvtDalitzReso::Fvector() error. Kmatrix solution incorrectly chosen ! "
<< std::endl;
abort();
}
if ( solution == 3 ) {
// coupling constants
//pi+pi- channel
g[0][0] = 0.22889;
g[1][0] = 0.94128;
g[2][0] = 0.36856;
g[3][0] = 0.33650;
g[4][0] = 0.18171;
//K+K- channel
g[0][1] = -0.55377;
g[1][1] = 0.55095;
g[2][1] = 0.23888;
g[3][1] = 0.40907;
g[4][1] = -0.17558;
//4pi channel
g[0][2] = 0;
g[1][2] = 0;
g[2][2] = 0.55639;
g[3][2] = 0.85679;
g[4][2] = -0.79658;
//eta eta channel
g[0][3] = -0.39899;
g[1][3] = 0.39065;
g[2][3] = 0.18340;
g[3][3] = 0.19906;
g[4][3] = -0.00355;
//eta eta' channel
g[0][4] = -0.34639;
g[1][4] = 0.31503;
g[2][4] = 0.18681;
g[3][4] = -0.00984;
g[4][4] = 0.22358;
// Pole masses
ma[0] = 0.651;
ma[1] = 1.20360;
ma[2] = 1.55817;
ma[3] = 1.21000;
ma[4] = 1.82206;
} else if ( solution == 1 ) { // solnI.txt
// coupling constants
//pi+pi- channel
g[0][0] = 0.31896;
g[1][0] = 0.85963;
g[2][0] = 0.47993;
g[3][0] = 0.45121;
g[4][0] = 0.39391;
//K+K- channel
g[0][1] = -0.49998;
g[1][1] = 0.52402;
g[2][1] = 0.40254;
g[3][1] = 0.42769;
g[4][1] = -0.30860;
//4pi channel
g[0][2] = 0;
g[1][2] = 0;
g[2][2] = 1.0;
g[3][2] = 1.15088;
g[4][2] = 0.33999;
//eta eta channel
g[0][3] = -0.21554;
g[1][3] = 0.38093;
g[2][3] = 0.21811;
g[3][3] = 0.22925;
g[4][3] = 0.06919;
//eta eta' channel
g[0][4] = -0.18294;
g[1][4] = 0.23788;
g[2][4] = 0.05454;
g[3][4] = 0.06444;
g[4][4] = 0.32620;
// Pole masses
ma[0] = 0.7369;
ma[1] = 1.24347;
ma[2] = 1.62681;
ma[3] = 1.21900;
ma[4] = 1.74932;
} else if ( solution == 2 ) { // solnIIa.txt
// coupling constants
//pi+pi- channel
g[0][0] = 0.26014;
g[1][0] = 0.95289;
g[2][0] = 0.46244;
g[3][0] = 0.41848;
g[4][0] = 0.01804;
//K+K- channel
g[0][1] = -0.57849;
g[1][1] = 0.55887;
g[2][1] = 0.31712;
g[3][1] = 0.49910;
g[4][1] = -0.28430;
//4pi channel
g[0][2] = 0;
g[1][2] = 0;
g[2][2] = 0.70340;
g[3][2] = 0.96819;
g[4][2] = -0.90100;
//eta eta channel
g[0][3] = -0.32936;
g[1][3] = 0.39910;
g[2][3] = 0.22963;
g[3][3] = 0.24415;
g[4][3] = -0.07252;
//eta eta' channel
g[0][4] = -0.30906;
g[1][4] = 0.31143;
g[2][4] = 0.19802;
g[3][4] = -0.00522;
g[4][4] = 0.17097;
// Pole masses
ma[0] = 0.67460;
ma[1] = 1.21094;
ma[2] = 1.57896;
ma[3] = 1.21900;
ma[4] = 1.86602;
}
//Now define the K-matrix pole
double rho1sq, rho2sq, rho4sq, rho5sq;
EvtComplex rho[5];
double f[5][5];
//Initalize the mass of the resonance
double mpi = 0.13957;
double mK = 0.493677; //using charged K value
double meta = 0.54775; //using PDG value
double metap = 0.95778; //using PDG value
//Initialize the matrix to value zero
EvtComplex K[5][5];
for ( int i = 0; i < 5; i++ ) {
for ( int j = 0; j < 5; j++ ) {
K[i][j] = EvtComplex( 0, 0 );
f[i][j] = 0;
}
}
//Input the _f[i][j] scattering data
double s_scatt = 0.0;
if ( solution == 3 )
s_scatt = -3.92637;
else if ( solution == 1 )
s_scatt = -5.0;
else if ( solution == 2 )
s_scatt = -5.0;
double sa = 1.0;
double sa_0 = -0.15;
if ( solution == 3 ) {
f[0][0] = 0.23399; // f^scatt
f[0][1] = 0.15044;
f[0][2] = -0.20545;
f[0][3] = 0.32825;
f[0][4] = 0.35412;
} else if ( solution == 1 ) {
f[0][0] = 0.04214; // f^scatt
f[0][1] = 0.19865;
f[0][2] = -0.63764;
f[0][3] = 0.44063;
f[0][4] = 0.36717;
} else if ( solution == 2 ) {
f[0][0] = 0.26447; // f^scatt
f[0][1] = 0.10400;
f[0][2] = -0.35445;
f[0][3] = 0.31596;
f[0][4] = 0.42483;
}
f[1][0] = f[0][1];
f[2][0] = f[0][2];
f[3][0] = f[0][3];
f[4][0] = f[0][4];
//Now construct the phase-space factor
//For eta-eta' there is no difference term
rho1sq = 1. - pow( mpi + mpi, 2 ) / s; //pi+ pi- phase factor
if ( rho1sq >= 0 )
rho[0] = EvtComplex( sqrt( rho1sq ), 0 );
else
rho[0] = EvtComplex( 0, sqrt( -rho1sq ) );
rho2sq = 1. - pow( mK + mK, 2 ) / s;
if ( rho2sq >= 0 )
rho[1] = EvtComplex( sqrt( rho2sq ), 0 );
else
rho[1] = EvtComplex( 0, sqrt( -rho2sq ) );
//using the A&S 4pi phase space Factor:
//Shit, not continue
if ( s <= 1 ) {
double real = 1.2274 + .00370909 / ( s * s ) - .111203 / s -
6.39017 * s + 16.8358 * s * s - 21.8845 * s * s * s +
11.3153 * s * s * s * s;
double cont32 = sqrt( 1.0 - ( 16.0 * mpi * mpi ) );
rho[2] = EvtComplex( cont32 * real, 0 );
} else
rho[2] = EvtComplex( sqrt( 1. - 16. * mpi * mpi / s ), 0 );
rho4sq = 1. - pow( meta + meta, 2 ) / s;
if ( rho4sq >= 0 )
rho[3] = EvtComplex( sqrt( rho4sq ), 0 );
else
rho[3] = EvtComplex( 0, sqrt( -rho4sq ) );
rho5sq = 1. - pow( meta + metap, 2 ) / s;
if ( rho5sq >= 0 )
rho[4] = EvtComplex( sqrt( rho5sq ), 0 );
else
rho[4] = EvtComplex( 0, sqrt( -rho5sq ) );
double smallTerm = 1; // Factor to prevent divergences.
// Check if some pole may arise problems.
for ( int pole = 0; pole < 5; pole++ )
if ( fabs( pow( ma[pole], 2 ) - s ) < PRECISION )
smallTerm = pow( ma[pole], 2 ) - s;
//now sum all the pole
//equation (3) in the E791 K-matrix paper
for ( int i = 0; i < 5; i++ ) {
for ( int j = 0; j < 5; j++ ) {
for ( int pole_index = 0; pole_index < 5; pole_index++ ) {
double A = g[pole_index][i] * g[pole_index][j];
double B = ma[pole_index] * ma[pole_index] - s;
if ( fabs( B ) < PRECISION )
K[i][j] += EvtComplex( A, 0 );
else
K[i][j] += EvtComplex( A / B, 0 ) * smallTerm;
}
}
}
//now add the SVT part
for ( int i = 0; i < 5; i++ ) {
for ( int j = 0; j < 5; j++ ) {
double C = f[i][j] * ( 1.0 - s_scatt );
double D = ( s - s_scatt );
K[i][j] += EvtComplex( C / D, 0 ) * smallTerm;
}
}
//Fix the bug in the FOCUS paper
//Include the Alder zero term:
for ( int i = 0; i < 5; i++ ) {
for ( int j = 0; j < 5; j++ ) {
double E = ( s - ( sa * mpi * mpi * 0.5 ) ) * ( 1.0 - sa_0 );
double F = ( s - sa_0 );
K[i][j] *= EvtComplex( E / F, 0 );
}
}
//This is not correct!
//(1-ipK) != (1-iKp)
static EvtMatrix<EvtComplex> mat;
mat.setRange(
5 ); // Try to do in only the first time. DEFINE ALLOCATION IN CONSTRUCTOR.
for ( int row = 0; row < 5; row++ )
for ( int col = 0; col < 5; col++ )
mat( row, col ) = ( row == col ) * smallTerm -
EvtComplex( 0., 1. ) * K[row][col] * rho[col];
EvtMatrix<EvtComplex>* matInverse =
mat.inverse(); //The 1st row of the inverse matrix. This matrix is {(I-iKp)^-1}_0j
vector<EvtComplex> U1j;
for ( int j = 0; j < 5; j++ )
U1j.push_back( ( *matInverse )[0][j] );
delete matInverse;
//this calculates final F0 factor
EvtComplex value( 0, 0 );
if ( index <= 5 ) {
//this calculates the beta_idx Factors
for ( int j = 0; j < 5; j++ ) { // sum for 5 channel
EvtComplex top = U1j[j] * g[index - 1][j];
double bottom = ma[index - 1] * ma[index - 1] - s;
if ( fabs( bottom ) < PRECISION )
value += top;
else
value += top / bottom * smallTerm;
}
} else {
//this calculates fprod Factors
value += U1j[0];
value += U1j[1] * _fr12prod;
value += U1j[2] * _fr13prod;
value += U1j[3] * _fr14prod;
value += U1j[4] * _fr15prod;
value *= ( 1 - _s0prod ) / ( s - _s0prod ) * smallTerm;
}
return value;
}
//replace Breit-Wigner with LASS
EvtComplex EvtDalitzReso::lass( double s )
{
EvtTwoBodyKine vd( _massFirst, _massSecond, sqrt( s ) );
double q = vd.p();
double GammaM = _g0 * _vd.widthFactor( vd ); // running width;
//calculate the background phase motion
double cot_deltaB = 1.0 / ( _a * q ) + 0.5 * _r * q;
double deltaB = atan( 1.0 / cot_deltaB );
double totalB = deltaB + _phiB;
//calculate the resonant phase motion
double deltaR = atan( ( _m0 * GammaM / ( _m0 * _m0 - s ) ) );
double totalR = deltaR + _phiR;
//sum them up
EvtComplex bkgB, resT;
bkgB = EvtComplex( _Blass * sin( totalB ), 0 ) *
EvtComplex( cos( totalB ), sin( totalB ) );
resT = EvtComplex( _R * sin( deltaR ), 0 ) *
EvtComplex( cos( totalR ), sin( totalR ) ) *
EvtComplex( cos( 2 * totalB ), sin( 2 * totalB ) );
EvtComplex T;
if ( _cutoff > 0 && sqrt( s ) > _cutoff )
T = resT;
else
T = bkgB + resT;
if ( _scaleByMOverQ )
T *= ( sqrt( s ) / q );
return T;
}
EvtComplex EvtDalitzReso::flatte( const double& m )
{
EvtComplex w;
for ( vector<EvtFlatteParam>::const_iterator param = _flatteParams.begin();
param != _flatteParams.end(); ++param ) {
double m1 = ( *param ).m1();
double m2 = ( *param ).m2();
double g = ( *param ).g();
w += ( g * g *
sqrtCplx( ( 1 - ( ( m1 - m2 ) * ( m1 - m2 ) ) / ( m * m ) ) *
( 1 - ( ( m1 + m2 ) * ( m1 + m2 ) ) / ( m * m ) ) ) );
}
EvtComplex denom = _m0 * _m0 - m * m - EvtComplex( 0, 1 ) * w;
return EvtComplex( 1.0, 0.0 ) / denom;
}
diff --git a/src/EvtGenBase/EvtDecayAmp.cpp b/src/EvtGenBase/EvtDecayAmp.cpp
index 40a35b2..a363829 100644
--- a/src/EvtGenBase/EvtDecayAmp.cpp
+++ b/src/EvtGenBase/EvtDecayAmp.cpp
@@ -1,258 +1,239 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtDecayAmp.cc
-//
-// Description: Baseclass for models that calculates amplitudes
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRadCorr.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
using std::endl;
void EvtDecayAmp::makeDecay( EvtParticle* p, bool recursive )
{
//original default value
int ntimes = 10000;
int more;
EvtSpinDensity rho;
double prob, prob_max;
_amp2.init( p->getId(), getNDaug(), getDaugs() );
do {
_daugsDecayedByParentModel = false;
_weight = 1.0;
decay( p );
rho = _amp2.getSpinDensity();
prob = p->getSpinDensityForward().normalizedProb( rho );
if ( prob < 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Negative prob:" << p->getId().getId() << " "
<< p->getChannel() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "rho_forward:" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << p->getSpinDensityForward();
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "rho decay:" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << rho << endl;
}
if ( prob != prob ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Forward density matrix:" << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << p->getSpinDensityForward();
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Decay density matrix:" << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << rho;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << "prob:" << prob << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Particle:" << EvtPDL::name( p->getId() ).c_str() << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "channel :" << p->getChannel() << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Momentum:" << p->getP4() << " " << p->mass() << endl;
if ( p->getParent() != 0 ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "parent:"
<< EvtPDL::name( p->getParent()->getId() ).c_str() << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "parent channel :" << p->getParent()->getChannel()
<< endl;
size_t i;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << "parent daughters :";
for ( i = 0; i < p->getParent()->getNDaug(); i++ ) {
EvtGenReport( EVTGEN_DEBUG, "" )
<< EvtPDL::name( p->getParent()->getDaug( i )->getId() )
.c_str()
<< " ";
}
EvtGenReport( EVTGEN_DEBUG, "" ) << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << "daughters :";
for ( size_t i = 0; i < p->getNDaug(); i++ ) {
EvtGenReport( EVTGEN_DEBUG, "" )
<< EvtPDL::name( p->getDaug( i )->getId() ).c_str()
<< " ";
}
EvtGenReport( EVTGEN_DEBUG, "" ) << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "daughter momenta :" << endl;
;
for ( size_t i = 0; i < p->getNDaug(); i++ ) {
EvtGenReport( EVTGEN_DEBUG, "" )
<< p->getDaug( i )->getP4() << " "
<< p->getDaug( i )->mass();
EvtGenReport( EVTGEN_DEBUG, "" ) << endl;
}
}
}
prob /= _weight;
prob_max = getProbMax( prob );
p->setDecayProb( prob / prob_max );
more = prob < EvtRandom::Flat( prob_max );
ntimes--;
} while ( ntimes && more );
if ( ntimes == 0 ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Tried accept/reject: 10000"
<< " times, and rejected all the times!" << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< p->getSpinDensityForward() << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Is therefore accepting the last event!" << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Decay of particle:" << EvtPDL::name( p->getId() ).c_str()
<< "(channel:" << p->getChannel() << ") with mass " << p->mass()
<< endl;
for ( size_t ii = 0; ii < p->getNDaug(); ii++ ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Daughter " << ii << ":"
<< EvtPDL::name( p->getDaug( ii )->getId() ).c_str()
<< " with mass " << p->getDaug( ii )->mass() << endl;
}
}
EvtSpinDensity rho_list[10];
rho_list[0] = p->getSpinDensityForward();
EvtAmp ampcont;
if ( _amp2._pstates != 1 ) {
ampcont = _amp2.contract( 0, p->getSpinDensityForward() );
} else {
ampcont = _amp2;
}
// it may be that the parent decay model has already
// done the decay - this should be rare and the
// model better know what it is doing..
if ( !daugsDecayedByParentModel() ) {
if ( recursive ) {
for ( size_t i = 0; i < p->getNDaug(); i++ ) {
rho.setDim( _amp2.dstates[i] );
if ( _amp2.dstates[i] == 1 ) {
rho.set( 0, 0, EvtComplex( 1.0, 0.0 ) );
} else {
rho = ampcont.contract( _amp2._dnontrivial[i], _amp2 );
}
if ( !rho.check() ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "-------start error-------" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "forward rho failed Check:"
<< EvtPDL::name( p->getId() ).c_str() << " "
<< p->getChannel() << " " << i << endl;
p->printTree();
for ( size_t idaug = 0; idaug < p->getNDaug(); idaug++ ) {
EvtParticle* daughter = p->getDaug( idaug );
if ( daughter != 0 ) {
daughter->printTree();
}
}
EvtParticle* pParent = p->getParent();
if ( pParent != 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Parent:"
<< EvtPDL::name( pParent->getId() ).c_str() << endl;
EvtParticle* grandParent = pParent->getParent();
if ( grandParent != 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "GrandParent:"
<< EvtPDL::name( grandParent->getId() ).c_str()
<< endl;
}
}
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " EvtSpinDensity rho: " << rho;
_amp2.dump();
for ( size_t ii = 0; ii < i + 1; ii++ ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "rho_list[" << ii << "] = " << rho_list[ii];
}
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "-------Done with error-------" << endl;
}
p->getDaug( i )->setSpinDensityForward( rho );
p->getDaug( i )->decay();
rho_list[i + 1] = p->getDaug( i )->getSpinDensityBackward();
if ( _amp2.dstates[i] != 1 ) {
ampcont = ampcont.contract( _amp2._dnontrivial[i],
rho_list[i + 1] );
}
}
p->setSpinDensityBackward( _amp2.getBackwardSpinDensity( rho_list ) );
if ( !p->getSpinDensityBackward().check() ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "rho_backward failed Check" << p->getId().getId() << " "
<< p->getChannel() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< p->getSpinDensityBackward();
}
}
}
if ( getPHOTOS() || EvtRadCorr::alwaysRadCorr() ) {
int n_daug_orig = p->getNDaug();
EvtRadCorr::doRadCorr( p );
int n_daug_new = p->getNDaug();
for ( int i = n_daug_orig; i < n_daug_new; i++ ) {
p->getDaug( i )->decay();
}
}
}
diff --git a/src/EvtGenBase/EvtDecayBase.cpp b/src/EvtGenBase/EvtDecayBase.cpp
index 77d8bab..da1d56c 100644
--- a/src/EvtGenBase/EvtDecayBase.cpp
+++ b/src/EvtGenBase/EvtDecayBase.cpp
@@ -1,665 +1,645 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtDecayBase.cc
-//
-// Description: Store decay parameters for one decay.
-//
-// Modification history:
-//
-// RYD September 30, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtStatus.hh"
#include <ctype.h>
#include <fstream>
#include <iostream>
#include <stdlib.h>
#include <vector>
using std::endl;
using std::fstream;
void EvtDecayBase::checkQ()
{
int i;
int q = 0;
int qpar;
//If there are no daughters (jetset etc) then we do not
//want to do this test. Why? Because sometimes the parent
//will have a nonzero charge.
if ( _ndaug != 0 ) {
for ( i = 0; i < _ndaug; i++ ) {
q += EvtPDL::chg3( _daug[i] );
}
qpar = EvtPDL::chg3( _parent );
if ( q != qpar ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< _modelname.c_str() << " generator expected "
<< " charge to be conserved, found:" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Parent charge of " << ( qpar / 3 ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Sum of daughter charge of " << ( q / 3 ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The parent is " << EvtPDL::name( _parent ).c_str() << endl;
for ( i = 0; i < _ndaug; i++ ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Daughter " << EvtPDL::name( _daug[i] ).c_str() << endl;
}
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
}
double EvtDecayBase::getProbMax( double prob )
{
int i;
//diagnostics
sum_prob += prob;
if ( prob > max_prob )
max_prob = prob;
if ( defaultprobmax && ntimes_prob <= 500 ) {
//We are building up probmax with this iteration
ntimes_prob += 1;
if ( prob > probmax ) {
probmax = prob;
}
if ( ntimes_prob == 500 ) {
probmax *= 1.2;
}
return 1000000.0 * prob;
}
if ( prob > probmax * 1.0001 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "prob > probmax:(" << prob << ">" << probmax << ")";
EvtGenReport( EVTGEN_INFO, "" ) << "(" << _modelname.c_str() << ") ";
EvtGenReport( EVTGEN_INFO, "" )
<< EvtPDL::name( _parent ).c_str() << " -> ";
for ( i = 0; i < _ndaug; i++ ) {
EvtGenReport( EVTGEN_INFO, "" )
<< EvtPDL::name( _daug[i] ).c_str() << " ";
}
EvtGenReport( EVTGEN_INFO, "" ) << endl;
if ( defaultprobmax )
probmax = prob;
}
ntimes_prob += 1;
return probmax;
} //getProbMax
double EvtDecayBase::resetProbMax( double prob )
{
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Reseting prob max\n";
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "prob > probmax:(" << prob << ">" << probmax << ")";
EvtGenReport( EVTGEN_INFO, "" ) << "(" << _modelname.c_str() << ")";
EvtGenReport( EVTGEN_INFO, "" ) << EvtPDL::getStdHep( _parent ) << "->";
for ( int i = 0; i < _ndaug; i++ ) {
EvtGenReport( EVTGEN_INFO, "" ) << EvtPDL::getStdHep( _daug[i] ) << " ";
}
EvtGenReport( EVTGEN_INFO, "" ) << endl;
probmax = 0.0;
defaultprobmax = 0;
ntimes_prob = 0;
return prob;
}
std::string EvtDecayBase::commandName()
{
return std::string( "" );
}
void EvtDecayBase::command( std::string )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Should never call EvtDecayBase::command" << endl;
::abort();
}
std::string EvtDecayBase::getParamName( int i )
{
switch ( i ) {
case 0:
return "param00";
case 1:
return "param01";
case 2:
return "param02";
case 3:
return "param03";
case 4:
return "param04";
case 5:
return "param05";
case 6:
return "param06";
case 7:
return "param07";
case 8:
return "param08";
case 9:
return "param09";
default:
return "";
}
}
std::string EvtDecayBase::getParamDefault( int /*i*/ )
{
return "";
}
void EvtDecayBase::init()
{
//This default version of init does nothing;
//A specialized version of this function can be
//supplied for each decay model to do initialization.
return;
}
void EvtDecayBase::initProbMax()
{
//This function is called if the decay does not have a
//specialized initialization.
//The default is to set the maximum
//probability to 0 and the number of times called to 0
//and defaultprobmax to 1 such that the decay will be
//generated many many times
//in order to generate a reasonable maximum probability
//for the decay.
defaultprobmax = 1;
ntimes_prob = 0;
probmax = 0.0;
} //initProbMax
void EvtDecayBase::saveDecayInfo( EvtId ipar, int ndaug, EvtId* daug, int narg,
std::vector<std::string>& args,
std::string name, double brfr )
{
int i;
_brfr = brfr;
_ndaug = ndaug;
_narg = narg;
_parent = ipar;
_dsum = 0;
if ( _ndaug > 0 ) {
_daug.resize( _ndaug );
for ( i = 0; i < _ndaug; i++ ) {
_daug[i] = daug[i];
_dsum += daug[i].getAlias();
}
} else {
_daug.clear();
}
if ( _narg > 0 ) {
_args.resize( _narg + 1 );
for ( i = 0; i < _narg; i++ ) {
_args[i] = args[i];
}
} else {
_args.clear();
}
_modelname = name;
this->init();
this->initProbMax();
if ( _chkCharge ) {
this->checkQ();
}
if ( defaultprobmax ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "No default probmax for ";
EvtGenReport( EVTGEN_INFO, "" ) << "(" << _modelname.c_str() << ") ";
EvtGenReport( EVTGEN_INFO, "" )
<< EvtPDL::name( _parent ).c_str() << " -> ";
for ( i = 0; i < _ndaug; i++ ) {
EvtGenReport( EVTGEN_INFO, "" )
<< EvtPDL::name( _daug[i] ).c_str() << " ";
}
EvtGenReport( EVTGEN_INFO, "" ) << endl;
EvtGenReport( EVTGEN_INFO, "" )
<< "This is fine for development, but must be provided for production."
<< endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Never fear though - the decay will use the \n";
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "500 iterations to build up a good probmax \n";
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "before accepting a decay. " << endl;
}
}
EvtDecayBase::EvtDecayBase()
{
//the default is that the user module does _not_ set
// any probmax.
defaultprobmax = 1;
ntimes_prob = 0;
probmax = 0.0;
_photos = 0;
_verbose = 0;
_summary = 0;
_parent = EvtId( -1, -1 );
_ndaug = 0;
_narg = 0;
_modelname = "**********";
//Default is to check that charge is conserved
_chkCharge = 1;
//statistics collection!
max_prob = 0.0;
sum_prob = 0.0;
}
void EvtDecayBase::printSummary() const
{
if ( ntimes_prob > 0 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Calls = " << ntimes_prob
<< " eff: " << sum_prob / ( probmax * ntimes_prob )
<< " frac. max:" << max_prob / probmax;
EvtGenReport( EVTGEN_INFO, "" )
<< " probmax:" << probmax << " max:" << max_prob << " : ";
}
printInfo();
}
void EvtDecayBase::printInfo() const
{
EvtGenReport( EVTGEN_INFO, "" ) << EvtPDL::name( _parent ).c_str() << " -> ";
for ( int i = 0; i < _ndaug; i++ ) {
EvtGenReport( EVTGEN_INFO, "" )
<< EvtPDL::name( _daug[i] ).c_str() << " ";
}
EvtGenReport( EVTGEN_INFO, "" ) << " (" << _modelname.c_str() << ")" << endl;
}
void EvtDecayBase::setProbMax( double prbmx )
{
defaultprobmax = 0;
probmax = prbmx;
}
void EvtDecayBase::noProbMax()
{
defaultprobmax = 0;
}
double EvtDecayBase::findMaxMass( EvtParticle* p )
{
double maxOkMass = EvtPDL::getMaxMass( p->getId() );
//protect against vphotons
if ( maxOkMass < 0.0000000001 )
return 10000000.;
//and against already determined masses
if ( p->hasValidP4() )
maxOkMass = p->mass();
EvtParticle* par = p->getParent();
if ( par ) {
double maxParMass = findMaxMass( par );
size_t i;
double minDaugMass = 0.;
for ( i = 0; i < par->getNDaug(); i++ ) {
EvtParticle* dau = par->getDaug( i );
if ( dau != p ) {
// it might already have a mass
if ( dau->isInitialized() || dau->hasValidP4() )
minDaugMass += dau->mass();
else
//give it a bit of phase space
minDaugMass += 1.000001 * EvtPDL::getMinMass( dau->getId() );
}
}
if ( maxOkMass > ( maxParMass - minDaugMass ) )
maxOkMass = maxParMass - minDaugMass;
}
return maxOkMass;
}
// given list of daughters ( by number ) returns a
// list of viable masses.
void EvtDecayBase::findMass( EvtParticle* p )
{
//Need to also check that this mass does not screw
//up the parent
//This code assumes that for the ith daughter, 0..i-1
//already have a mass
double maxOkMass = findMaxMass( p );
int count = 0;
double mass;
bool massOk = false;
size_t i;
while ( !massOk ) {
count++;
if ( count > 10000 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Can not find a valid mass for: "
<< EvtPDL::name( p->getId() ).c_str() << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Now printing parent and/or grandparent tree\n";
if ( p->getParent() ) {
if ( p->getParent()->getParent() ) {
p->getParent()->getParent()->printTree();
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< p->getParent()->getParent()->mass() << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< p->getParent()->mass() << endl;
} else {
p->getParent()->printTree();
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< p->getParent()->mass() << endl;
}
} else
p->printTree();
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "maxokmass=" << maxOkMass << " "
<< EvtPDL::getMinMass( p->getId() ) << " "
<< EvtPDL::getMaxMass( p->getId() ) << endl;
if ( p->getNDaug() ) {
for ( i = 0; i < p->getNDaug(); i++ ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< p->getDaug( i )->mass() << " ";
}
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << endl;
}
if ( maxOkMass >= EvtPDL::getMinMass( p->getId() ) ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "taking a default value\n";
p->setMass( maxOkMass );
return;
}
assert( 0 );
}
mass = EvtPDL::getMass( p->getId() );
//Just need to check that this mass is > than
//the mass of all daughters
double massSum = 0.;
if ( p->getNDaug() ) {
for ( i = 0; i < p->getNDaug(); i++ ) {
massSum += p->getDaug( i )->mass();
}
}
//some special cases are handled with 0 (stable) or 1 (k0->ks/kl) daughters
if ( p->getNDaug() < 2 )
massOk = true;
if ( p->getParent() ) {
if ( p->getParent()->getNDaug() == 1 )
massOk = true;
}
if ( !massOk ) {
if ( massSum < mass )
massOk = true;
if ( mass > maxOkMass )
massOk = false;
}
}
p->setMass( mass );
}
void EvtDecayBase::findMasses( EvtParticle* p, int ndaugs, EvtId daugs[10],
double masses[10] )
{
int i;
double mass_sum;
int count = 0;
if ( !( p->firstornot() ) ) {
for ( i = 0; i < ndaugs; i++ ) {
masses[i] = p->getDaug( i )->mass();
} //for
} //if
else {
p->setFirstOrNot();
// if only one daughter do it
if ( ndaugs == 1 ) {
masses[0] = p->mass();
return;
}
//until we get a combo whose masses are less than _parent mass.
do {
mass_sum = 0.0;
for ( i = 0; i < ndaugs; i++ ) {
masses[i] = EvtPDL::getMass( daugs[i] );
mass_sum = mass_sum + masses[i];
}
count++;
if ( count == 10000 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Decaying particle:" << EvtPDL::name( p->getId() ).c_str()
<< " (m=" << p->mass() << ")" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "To the following daugthers" << endl;
for ( i = 0; i < ndaugs; i++ ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< EvtPDL::name( daugs[i] ).c_str() << endl;
}
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Has been rejected " << count
<< " times, will now take minimal masses "
<< " of daugthers" << endl;
mass_sum = 0.;
for ( i = 0; i < ndaugs; i++ ) {
masses[i] = EvtPDL::getMinMass( daugs[i] );
mass_sum = mass_sum + masses[i];
}
if ( mass_sum > p->mass() ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Parent mass=" << p->mass()
<< "to light for daugthers." << endl
<< "Will throw the event away." << endl;
//dont terminate - start over on the event.
EvtStatus::setRejectFlag();
mass_sum = 0.;
// ::abort();
}
}
} while ( mass_sum > p->mass() );
} //else
return;
}
void EvtDecayBase::checkNArg( int a1, int a2, int a3, int a4 )
{
if ( _narg != a1 && _narg != a2 && _narg != a3 && _narg != a4 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< _modelname.c_str() << " generator expected " << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << a1 << endl;
;
if ( a2 > -1 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << " or " << a2 << endl;
}
if ( a3 > -1 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << " or " << a3 << endl;
}
if ( a4 > -1 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << " or " << a4 << endl;
}
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " arguments but found:" << _narg << endl;
printSummary();
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
void EvtDecayBase::checkNDaug( int d1, int d2 )
{
if ( _ndaug != d1 && _ndaug != d2 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< _modelname.c_str() << " generator expected ";
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << d1;
if ( d2 > -1 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << " or " << d2;
}
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " daughters but found:" << _ndaug << endl;
printSummary();
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
void EvtDecayBase::checkSpinParent( EvtSpinType::spintype sp )
{
EvtSpinType::spintype parenttype = EvtPDL::getSpinType( getParentId() );
if ( parenttype != sp ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< _modelname.c_str() << " did not get the correct parent spin\n";
printSummary();
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
void EvtDecayBase::checkSpinDaughter( int d1, EvtSpinType::spintype sp )
{
EvtSpinType::spintype parenttype = EvtPDL::getSpinType( getDaug( d1 ) );
if ( parenttype != sp ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< _modelname.c_str()
<< " did not get the correct daughter spin d=" << d1 << endl;
printSummary();
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
double* EvtDecayBase::getArgs()
{
if ( !_argsD.empty() )
return _argsD.data();
//The user has asked for a list of doubles - the arguments
//better all be doubles...
if ( _narg == 0 )
return _argsD.data();
_argsD.resize( _narg );
for ( int i = 0; i < _narg; i++ ) {
char* tc;
_argsD[i] = strtod( _args[i].c_str(), &tc );
}
return _argsD.data();
}
double EvtDecayBase::getArg( unsigned int j )
{
// Verify string
if ( getParentId().getId() == 25 ) {
int i = 0;
++i;
}
const char* str = _args[j].c_str();
int i = 0;
while ( str[i] != 0 ) {
if ( isalpha( str[i] ) && str[i] != 'e' ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "String " << str << " is not a number" << endl;
assert( 0 );
}
i++;
}
char** tc = 0;
double result = strtod( _args[j].c_str(), tc );
if ( _storedArgs.size() < j + 1 ) { // then store the argument's value
_storedArgs.push_back( result );
}
return result;
}
bool EvtDecayBase::matchingDecay( const EvtDecayBase& other ) const
{
if ( _ndaug != other._ndaug )
return false;
if ( _parent != other._parent )
return false;
std::vector<int> useDs;
for ( int i = 0; i < _ndaug; i++ )
useDs.push_back( 0 );
for ( int i = 0; i < _ndaug; i++ ) {
bool foundIt = false;
for ( int j = 0; j < _ndaug; j++ ) {
if ( useDs[j] == 1 )
continue;
if ( _daug[i] == other._daug[j] &&
_daug[i].getAlias() == other._daug[j].getAlias() ) {
foundIt = true;
useDs[j] = 1;
break;
}
}
if ( foundIt == false )
return false;
}
for ( int i = 0; i < _ndaug; i++ )
if ( useDs[i] == 0 )
return false;
return true;
}
diff --git a/src/EvtGenBase/EvtDecayIncoherent.cpp b/src/EvtGenBase/EvtDecayIncoherent.cpp
index 1930163..8518f31 100644
--- a/src/EvtGenBase/EvtDecayIncoherent.cpp
+++ b/src/EvtGenBase/EvtDecayIncoherent.cpp
@@ -1,77 +1,58 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtDecayIncoherent.cc
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenBase/EvtDecayIncoherent.hh"
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRadCorr.hh"
#include "EvtGenBase/EvtReport.hh"
void EvtDecayIncoherent::makeDecay( EvtParticle* p, bool recursive )
{
//initialize this the hard way..
//Lange June 26, 2000
for ( size_t i = 0; i < static_cast<unsigned int>( MAX_DAUG ); i++ ) {
spinDensitySet[i] = 0;
}
_daugsDecayedByParentModel = false;
decay( p );
p->setDecayProb( 1.0 );
EvtSpinDensity rho;
rho.setDiag( p->getSpinStates() );
p->setSpinDensityBackward( rho );
if ( getPHOTOS() || EvtRadCorr::alwaysRadCorr() ) {
EvtRadCorr::doRadCorr( p );
}
if ( !recursive )
return;
//Now decay the daughters.
if ( !daugsDecayedByParentModel() ) {
for ( size_t i = 0; i < p->getNDaug(); i++ ) {
//Need to set the spin density of the daughters to be
//diagonal.
rho.setDiag( p->getDaug( i )->getSpinStates() );
//if (p->getDaug(i)->getNDaug()==0){
//only do this if the user has not already set the
//spin density matrix herself.
//Lange June 26, 2000
if ( isDaughterSpinDensitySet( i ) == 0 ) {
p->getDaug( i )->setSpinDensityForward( rho );
} else {
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "spinDensitymatrix already set!!!\n";
EvtSpinDensity temp = p->getDaug( i )->getSpinDensityForward();
// EvtGenReport(EVTGEN_INFO,"EvtGen") <<temp<<endl;
}
//Now decay the daughter. Really!
p->getDaug( i )->decay();
}
}
}
diff --git a/src/EvtGenBase/EvtDecayMode.cpp b/src/EvtGenBase/EvtDecayMode.cpp
index 3bac774..43c1c81 100644
--- a/src/EvtGenBase/EvtDecayMode.cpp
+++ b/src/EvtGenBase/EvtDecayMode.cpp
@@ -1,162 +1,142 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtDecayMode.cpp,v 1.3 2009-03-16 15:53:27 robbep Exp $
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module creator:
-// Alexei Dvoretskii, Caltech, 2001-2002.
-//-----------------------------------------------------------------------
-#include "EvtGenBase/EvtPatches.hh"
-
-// Parses a decay string to identify the name
-// of the mother and of the daughters. The string should
-// be in standard format e.g. "B+ -> pi+ pi+ pi-"
-
#include "EvtGenBase/EvtDecayMode.hh"
+
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <assert.h>
#include <iostream>
using std::endl;
using std::ostream;
using std::string;
using std::vector;
EvtDecayMode::EvtDecayMode( std::string mother, vector<string> dau ) :
_mother( mother ), _dau( dau )
{
}
EvtDecayMode::EvtDecayMode( const EvtDecayMode& other ) :
_mother( other._mother ), _dau( other._dau )
{
}
EvtDecayMode::EvtDecayMode( const char* decay )
{
// Parse the decay string, it should be in a standard
// format, e.g. "B+ -> pi+ pi+ pi-" with all spaces
string s( decay );
// mother
string::size_type i = s.find_first_not_of( " " );
string::size_type j = s.find_first_of( " ", i );
if ( i == string::npos ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "No non-space character found" << endl;
assert( 0 );
}
if ( j == string::npos ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "No space before -> found" << endl;
assert( 0 );
}
_mother = string( s, i, j - i );
i = s.find_first_not_of( " ", j );
j = s.find_first_of( "->", j );
if ( i != j ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Multiple mothers?" << i << "," << j << endl;
assert( 0 );
}
j += 2;
while ( 1 ) {
i = s.find_first_not_of( " ", j );
j = s.find_first_of( " ", i );
if ( i == string::npos )
break;
if ( j == string::npos ) {
_dau.push_back( string( s, i, s.size() - i + 1 ) );
break;
} else {
_dau.push_back( string( s, i, j - i ) );
}
}
}
const char* EvtDecayMode::mother() const
{
return _mother.c_str();
}
int EvtDecayMode::nD() const
{
return _dau.size();
}
const char* EvtDecayMode::dau( int i ) const
{
assert( 0 <= i && i < (int)_dau.size() );
return _dau[i].c_str();
}
std::string EvtDecayMode::mode() const
{
string ret = _mother + string( " -> " );
for ( size_t i = 0; i < _dau.size() - 1; i++ ) {
ret += string( _dau[i] ) + string( " " );
}
ret += _dau[_dau.size() - 1];
return ret;
}
ostream& EvtDecayMode::print( ostream& os ) const
{
os << _mother.c_str() << " ->";
for ( size_t i = 0; i < _dau.size(); i++ ) {
os << " " << _dau[i].c_str();
}
return os;
}
std::string EvtDecayMode::m( EvtCyclic3::Pair i ) const
{
string s( "m(" );
s.append( dau( EvtCyclic3::first( i ) ) );
s.append( "," );
s.append( dau( EvtCyclic3::second( i ) ) );
s.append( ")" );
return s;
}
std::string EvtDecayMode::q( EvtCyclic3::Pair i ) const
{
string s( "q(" );
s.append( dau( EvtCyclic3::first( i ) ) );
s.append( "," );
s.append( dau( EvtCyclic3::second( i ) ) );
s.append( ")" );
return s;
}
std::string EvtDecayMode::dal( EvtCyclic3::Pair i, EvtCyclic3::Pair j ) const
{
string s( q( i ) );
s.append( ":" );
s.append( q( j ) );
return s;
}
ostream& operator<<( ostream& os, const EvtDecayMode& mode )
{
mode.print( os );
return os;
}
diff --git a/src/EvtGenBase/EvtDecayParm.cpp b/src/EvtGenBase/EvtDecayParm.cpp
index dde73c4..9293a82 100644
--- a/src/EvtGenBase/EvtDecayParm.cpp
+++ b/src/EvtGenBase/EvtDecayParm.cpp
@@ -1,72 +1,52 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtDecayParm.cc
-//
-// Description: Store decay parameters for one decay.
-//
-// Modification history:
-//
-// RYD April 5, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtDecayParm.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <ctype.h>
#include <fstream>
#include <iostream>
#include <stdlib.h>
#include <string>
using std::fstream;
void EvtDecayParm::init( fcnPtr pfcn, int ndaug, int* daugs, int narg,
double* args, std::string name )
{
int i;
itsfcn = pfcn;
itsndaug = ndaug;
itsnarg = narg;
itsdaugs = new int[itsndaug];
for ( i = 0; i < itsndaug; i++ ) {
itsdaugs[i] = daugs[i];
}
itsargs = new double[itsnarg];
for ( i = 0; i < itsnarg; i++ ) {
itsargs[i] = args[i];
}
modelname = name;
}
EvtDecayParm::EvtDecayParm()
{
itsfcn = 0;
itsndaug = 0;
itsnarg = 0;
itsdaugs = 0;
itsargs = 0;
modelname = "**********";
}
EvtDecayParm::~EvtDecayParm()
{
if ( itsdaugs != 0 ) {
delete[] itsdaugs;
}
if ( itsargs != 0 ) {
delete[] itsargs;
}
}
diff --git a/src/EvtGenBase/EvtDecayProb.cpp b/src/EvtGenBase/EvtDecayProb.cpp
index b05c0be..dbd460e 100644
--- a/src/EvtGenBase/EvtDecayProb.cpp
+++ b/src/EvtGenBase/EvtDecayProb.cpp
@@ -1,93 +1,74 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtDecayProb.cc
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1998 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenBase/EvtDecayProb.hh"
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRadCorr.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
using std::endl;
void EvtDecayProb::makeDecay( EvtParticle* p, bool recursive )
{
int ntimes = 10000;
double dummy;
do {
_weight = 1.0;
_daugsDecayedByParentModel = false;
decay( p );
ntimes--;
_prob = _prob / _weight;
dummy = getProbMax( _prob ) * EvtRandom::Flat();
p->setDecayProb( _prob / getProbMax( _prob ) );
} while ( ntimes && ( _prob < dummy ) );
if ( ntimes == 0 ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Tried accept/reject:10000"
<< " times, and rejected all the times!" << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Is therefore accepting the last event!" << endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Decay of particle:" << EvtPDL::name( p->getId() ).c_str()
<< "(channel:" << p->getChannel() << ") with mass " << p->mass()
<< endl;
for ( size_t ii = 0; ii < p->getNDaug(); ii++ ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Daughter " << ii << ":"
<< EvtPDL::name( p->getDaug( ii )->getId() ).c_str()
<< " with mass " << p->getDaug( ii )->mass() << endl;
}
}
EvtSpinDensity rho;
rho.setDiag( p->getSpinStates() );
p->setSpinDensityBackward( rho );
if ( getPHOTOS() || EvtRadCorr::alwaysRadCorr() ) {
EvtRadCorr::doRadCorr( p );
}
if ( !recursive )
return;
//Now decay the daughters.
if ( !daugsDecayedByParentModel() ) {
for ( size_t i = 0; i < p->getNDaug(); i++ ) {
//Need to set the spin density of the daughters to be
//diagonal.
rho.setDiag( p->getDaug( i )->getSpinStates() );
p->getDaug( i )->setSpinDensityForward( rho );
//Now decay the daughter. Really!
p->getDaug( i )->decay();
}
}
}
diff --git a/src/EvtGenBase/EvtDecayTable.cpp b/src/EvtGenBase/EvtDecayTable.cpp
index 7c13f38..2b4186f 100644
--- a/src/EvtGenBase/EvtDecayTable.cpp
+++ b/src/EvtGenBase/EvtDecayTable.cpp
@@ -1,1634 +1,1614 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtDecayTable.cc
-//
-// Description:
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtDecayTable.hh"
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenBase/EvtExtGeneratorCommandsTable.hh"
#include "EvtGenBase/EvtModel.hh"
#include "EvtGenBase/EvtModelAlias.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParser.hh"
#include "EvtGenBase/EvtParserXml.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRadCorr.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSymTable.hh"
#include <ctype.h>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <sstream>
#include <stdlib.h>
#include <string.h>
using std::endl;
using std::fstream;
using std::ifstream;
EvtDecayTable::EvtDecayTable()
{
_decaytable.clear();
}
EvtDecayTable::~EvtDecayTable()
{
_decaytable.clear();
}
EvtDecayTable* EvtDecayTable::getInstance()
{
static EvtDecayTable* theDecayTable = 0;
if ( theDecayTable == 0 ) {
theDecayTable = new EvtDecayTable();
}
return theDecayTable;
}
int EvtDecayTable::getNMode( int ipar )
{
return _decaytable[ipar].getNMode();
}
EvtDecayBase* EvtDecayTable::getDecay( int ipar, int imode )
{
return _decaytable[ipar].getDecayModel( imode );
}
void EvtDecayTable::printSummary()
{
for ( size_t i = 0; i < EvtPDL::entries(); i++ ) {
_decaytable[i].printSummary();
}
}
EvtDecayBase* EvtDecayTable::getDecayFunc( EvtParticle* p )
{
int partnum;
partnum = p->getId().getAlias();
if ( _decaytable[partnum].getNMode() == 0 )
return 0;
return _decaytable[partnum].getDecayModel( p );
}
void EvtDecayTable::readDecayFile( const std::string dec_name, bool verbose )
{
if ( _decaytable.size() < EvtPDL::entries() )
_decaytable.resize( EvtPDL::entries() );
EvtModel& modelist = EvtModel::instance();
EvtExtGeneratorCommandsTable* extGenCommands =
EvtExtGeneratorCommandsTable::getInstance();
std::string colon( ":" ), equals( "=" );
int i;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "In readDecayFile, reading:" << dec_name.c_str() << endl;
ifstream fin;
fin.open( dec_name.c_str() );
if ( !fin ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Could not open " << dec_name.c_str() << endl;
}
fin.close();
EvtParser parser;
parser.read( dec_name );
int itok;
int hasend = 0;
std::string token;
for ( itok = 0; itok < parser.getNToken(); itok++ ) {
token = parser.getToken( itok );
if ( token == "End" )
hasend = 1;
}
if ( !hasend ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Could not find an 'End' in " << dec_name.c_str() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution." << endl;
::abort();
}
std::string model, parent, sdaug;
EvtId ipar;
int n_daugh;
EvtId daught[MAX_DAUG];
double brfr;
int itoken = 0;
std::vector<EvtModelAlias> modelAliasList;
do {
token = parser.getToken( itoken++ );
//Easy way to turn off photos... Lange September 5, 2000
if ( token == "noPhotos" ) {
EvtRadCorr::setNeverRadCorr();
if ( verbose )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "As requested, PHOTOS will be turned off." << endl;
} else if ( token == "yesPhotos" ) {
EvtRadCorr::setAlwaysRadCorr();
if ( verbose )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "As requested, PHOTOS will be turned on for all decays."
<< endl;
} else if ( token == "normalPhotos" ) {
EvtRadCorr::setNormalRadCorr();
if ( verbose )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "As requested, PHOTOS will be turned on only when requested."
<< endl;
} else if ( token == "Alias" ) {
std::string newname;
std::string oldname;
newname = parser.getToken( itoken++ );
oldname = parser.getToken( itoken++ );
EvtId id = EvtPDL::getId( oldname );
if ( id == EvtId( -1, -1 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unknown particle name:" << oldname.c_str()
<< " on line " << parser.getLineofToken( itoken ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
EvtPDL::alias( id, newname );
if ( _decaytable.size() < EvtPDL::entries() )
_decaytable.resize( EvtPDL::entries() );
} else if ( token == "ModelAlias" ) {
std::vector<std::string> modelArgList;
std::string aliasName = parser.getToken( itoken++ );
std::string modelName = parser.getToken( itoken++ );
std::string nameTemp;
do {
nameTemp = parser.getToken( itoken++ );
if ( nameTemp != ";" ) {
modelArgList.push_back( nameTemp );
}
} while ( nameTemp != ";" );
EvtModelAlias newAlias( aliasName, modelName, modelArgList );
modelAliasList.push_back( newAlias );
} else if ( token == "ChargeConj" ) {
std::string aname;
std::string abarname;
aname = parser.getToken( itoken++ );
abarname = parser.getToken( itoken++ );
EvtId a = EvtPDL::getId( aname );
EvtId abar = EvtPDL::getId( abarname );
if ( a == EvtId( -1, -1 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unknown particle name:" << aname.c_str() << " on line "
<< parser.getLineofToken( itoken ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( abar == EvtId( -1, -1 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unknown particle name:" << abarname.c_str()
<< " on line " << parser.getLineofToken( itoken ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
EvtPDL::aliasChgConj( a, abar );
} else if ( token == "JetSetPar" ) {
// Check if any old Pythia 6 commands are present
std::string pythiaCommand = parser.getToken( itoken++ );
Command command;
// The old command format is NAME(INT)=VALUE
int i1 = pythiaCommand.find_first_of( "(" );
int i2 = pythiaCommand.find_first_of( ")" );
int i3 = pythiaCommand.find_first_of( "=" );
std::string pythiaModule = pythiaCommand.substr( 0, i1 );
std::string pythiaParam = pythiaCommand.substr( i1 + 1, i2 - i1 - 1 );
std::string pythiaValue = pythiaCommand.substr( i3 + 1 );
command["MODULE"] = pythiaModule;
command["PARAM"] = pythiaParam;
command["VALUE"] = pythiaValue;
command["GENERATOR"] = "Both";
command["VERSION"] = "PYTHIA6";
extGenCommands->addCommand( "PYTHIA", command );
} else if ( modelist.isCommand( token ) ) {
std::string cnfgstr;
cnfgstr = parser.getToken( itoken++ );
modelist.storeCommand( token, cnfgstr );
} else if ( token == "PythiaGenericParam" ||
token == "PythiaAliasParam" || token == "PythiaBothParam" ) {
// Read in any Pythia 8 commands, which will be of the form
// pythia<type>Param module:param=value, with no spaces in the parameter
// string! Here, <type> specifies whether the command is for generic
// decays, alias decays, or both.
// Pythia 6 commands will be defined by the old JetSetPar command
// name, which is handled by the modelist.isCommand() statement above.
std::string pythiaCommand = parser.getToken( itoken++ );
std::string pythiaModule( "" ), pythiaParam( "" ), pythiaValue( "" );
// Separate out the string into the 3 sections using the delimiters
// ":" and "=".
std::vector<std::string> pComVect1 =
this->splitString( pythiaCommand, colon );
if ( pComVect1.size() == 2 ) {
pythiaModule = pComVect1[0];
std::string pCom2 = pComVect1[1];
std::vector<std::string> pComVect2 = this->splitString( pCom2,
equals );
if ( pComVect2.size() == 2 ) {
pythiaParam = pComVect2[0];
pythiaValue = pComVect2[1];
}
}
// Define the Pythia 8 command and pass it to the external generator
// command list.
Command command;
if ( token == "PythiaGenericParam" ) {
command["GENERATOR"] = "Generic";
} else if ( token == "PythiaAliasParam" ) {
command["GENERATOR"] = "Alias";
} else {
command["GENERATOR"] = "Both";
}
command["MODULE"] = pythiaModule;
command["PARAM"] = pythiaParam;
command["VALUE"] = pythiaValue;
command["VERSION"] = "PYTHIA8";
extGenCommands->addCommand( "PYTHIA", command );
} else if ( token == "CDecay" ) {
std::string name;
name = parser.getToken( itoken++ );
ipar = EvtPDL::getId( name );
if ( ipar == EvtId( -1, -1 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unknown particle name:" << name.c_str() << " on line "
<< parser.getLineofToken( itoken - 1 ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
EvtId cipar = EvtPDL::chargeConj( ipar );
if ( _decaytable[ipar.getAlias()].getNMode() != 0 ) {
if ( verbose )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Redefined decay of " << name.c_str() << " in CDecay"
<< endl;
_decaytable[ipar.getAlias()].removeDecay();
}
//take contents of cipar and conjugate and store in ipar
_decaytable[ipar.getAlias()].makeChargeConj(
&_decaytable[cipar.getAlias()] );
} else if ( token == "Define" ) {
std::string name;
name = parser.getToken( itoken++ );
// value=atof(parser.getToken(itoken++).c_str());
EvtSymTable::define( name, parser.getToken( itoken++ ) );
//New code Lange April 10, 2001 - allow the user
//to change particle definitions of EXISTING
//particles on the fly
} else if ( token == "Particle" ) {
std::string pname;
pname = parser.getToken( itoken++ );
if ( verbose )
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << pname.c_str() << endl;
//There should be at least the mass
double newMass = atof( parser.getToken( itoken++ ).c_str() );
EvtId thisPart = EvtPDL::getId( pname );
double newWidth = EvtPDL::getMeanMass( thisPart );
if ( parser.getNToken() > 3 )
newWidth = atof( parser.getToken( itoken++ ).c_str() );
//Now make the change!
EvtPDL::reSetMass( thisPart, newMass );
EvtPDL::reSetWidth( thisPart, newWidth );
if ( verbose )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Changing particle properties of " << pname.c_str()
<< " Mass=" << newMass << " Width=" << newWidth << endl;
} else if ( token == "ChangeMassMin" ) {
std::string pname;
pname = parser.getToken( itoken++ );
double tmass = atof( parser.getToken( itoken++ ).c_str() );
EvtId thisPart = EvtPDL::getId( pname );
EvtPDL::reSetMassMin( thisPart, tmass );
if ( verbose )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Refined minimum mass for "
<< EvtPDL::name( thisPart ).c_str() << " to be " << tmass
<< endl;
} else if ( token == "ChangeMassMax" ) {
std::string pname;
pname = parser.getToken( itoken++ );
double tmass = atof( parser.getToken( itoken++ ).c_str() );
EvtId thisPart = EvtPDL::getId( pname );
EvtPDL::reSetMassMax( thisPart, tmass );
if ( verbose )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Refined maximum mass for "
<< EvtPDL::name( thisPart ).c_str() << " to be " << tmass
<< endl;
} else if ( token == "IncludeBirthFactor" ) {
std::string pname;
pname = parser.getToken( itoken++ );
bool yesno = false;
if ( parser.getToken( itoken++ ) == "yes" )
yesno = true;
EvtId thisPart = EvtPDL::getId( pname );
EvtPDL::includeBirthFactor( thisPart, yesno );
if ( verbose ) {
if ( yesno )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Include birth factor for "
<< EvtPDL::name( thisPart ).c_str() << endl;
if ( !yesno )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "No longer include birth factor for "
<< EvtPDL::name( thisPart ).c_str() << endl;
}
} else if ( token == "IncludeDecayFactor" ) {
std::string pname;
pname = parser.getToken( itoken++ );
bool yesno = false;
if ( parser.getToken( itoken++ ) == "yes" )
yesno = true;
EvtId thisPart = EvtPDL::getId( pname );
EvtPDL::includeDecayFactor( thisPart, yesno );
if ( verbose ) {
if ( yesno )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Include decay factor for "
<< EvtPDL::name( thisPart ).c_str() << endl;
if ( !yesno )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "No longer include decay factor for "
<< EvtPDL::name( thisPart ).c_str() << endl;
}
} else if ( token == "LSNONRELBW" ) {
std::string pname;
pname = parser.getToken( itoken++ );
EvtId thisPart = EvtPDL::getId( pname );
std::string tstr = "NONRELBW";
EvtPDL::changeLS( thisPart, tstr );
if ( verbose )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Change lineshape to non-rel BW for "
<< EvtPDL::name( thisPart ).c_str() << endl;
} else if ( token == "LSFLAT" ) {
std::string pname;
pname = parser.getToken( itoken++ );
EvtId thisPart = EvtPDL::getId( pname );
std::string tstr = "FLAT";
EvtPDL::changeLS( thisPart, tstr );
if ( verbose )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Change lineshape to flat for "
<< EvtPDL::name( thisPart ).c_str() << endl;
} else if ( token == "LSMANYDELTAFUNC" ) {
std::string pname;
pname = parser.getToken( itoken++ );
EvtId thisPart = EvtPDL::getId( pname );
std::string tstr = "MANYDELTAFUNC";
EvtPDL::changeLS( thisPart, tstr );
if ( verbose )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Change lineshape to spikes for "
<< EvtPDL::name( thisPart ).c_str() << endl;
} else if ( token == "BlattWeisskopf" ) {
std::string pname;
pname = parser.getToken( itoken++ );
double tnum = atof( parser.getToken( itoken++ ).c_str() );
EvtId thisPart = EvtPDL::getId( pname );
EvtPDL::reSetBlatt( thisPart, tnum );
if ( verbose )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Redefined Blatt-Weisskopf factor "
<< EvtPDL::name( thisPart ).c_str() << " to be " << tnum
<< endl;
} else if ( token == "BlattWeisskopfBirth" ) {
std::string pname;
pname = parser.getToken( itoken++ );
double tnum = atof( parser.getToken( itoken++ ).c_str() );
EvtId thisPart = EvtPDL::getId( pname );
EvtPDL::reSetBlattBirth( thisPart, tnum );
if ( verbose )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Redefined Blatt-Weisskopf birth factor "
<< EvtPDL::name( thisPart ).c_str() << " to be " << tnum
<< endl;
} else if ( token == "SetLineshapePW" ) {
std::string pname;
pname = parser.getToken( itoken++ );
EvtId thisPart = EvtPDL::getId( pname );
std::string pnameD1 = parser.getToken( itoken++ );
EvtId thisD1 = EvtPDL::getId( pnameD1 );
std::string pnameD2 = parser.getToken( itoken++ );
EvtId thisD2 = EvtPDL::getId( pnameD2 );
int pw = atoi( parser.getToken( itoken++ ).c_str() );
if ( verbose )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Redefined Partial wave for " << pname.c_str() << " to "
<< pnameD1.c_str() << " " << pnameD2.c_str() << " (" << pw
<< ")" << endl;
EvtPDL::setPWForDecay( thisPart, pw, thisD1, thisD2 );
EvtPDL::setPWForBirthL( thisD1, pw, thisPart, thisD2 );
EvtPDL::setPWForBirthL( thisD2, pw, thisPart, thisD1 );
} else if ( token == "Decay" ) {
std::string temp_fcn_new_model;
EvtDecayBase* temp_fcn_new;
double brfrsum = 0.0;
parent = parser.getToken( itoken++ );
ipar = EvtPDL::getId( parent );
if ( ipar == EvtId( -1, -1 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unknown particle name:" << parent.c_str() << " on line "
<< parser.getLineofToken( itoken - 1 ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( _decaytable[ipar.getAlias()].getNMode() != 0 ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Redefined decay of " << parent.c_str() << endl;
_decaytable[ipar.getAlias()].removeDecay();
}
do {
token = parser.getToken( itoken++ );
if ( token != "Enddecay" ) {
i = 0;
while ( token.c_str()[i++] != 0 ) {
if ( isalpha( token.c_str()[i] ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Expected to find a branching fraction or Enddecay "
<< "but found:" << token.c_str() << " on line "
<< parser.getLineofToken( itoken - 1 ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Possibly to few arguments to model "
<< "on previous line!" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
brfr = atof( token.c_str() );
int isname =
EvtPDL::getId( parser.getToken( itoken ) ).getId() >= 0;
int ismodel = modelist.isModel( parser.getToken( itoken ) );
if ( !( isname || ismodel ) ) {
//see if this is an aliased model
for ( size_t iAlias = 0; iAlias < modelAliasList.size();
iAlias++ ) {
if ( modelAliasList[iAlias].matchAlias(
parser.getToken( itoken ) ) ) {
ismodel = 2;
break;
}
}
}
if ( !( isname || ismodel ) ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< parser.getToken( itoken ).c_str()
<< " is neither a particle name nor "
<< "the name of a model. " << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "It was encountered on line "
<< parser.getLineofToken( itoken )
<< " of the decay file." << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Please fix it. Thank you." << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Be sure to check that the "
<< "correct case has been used. \n";
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Terminating execution. \n";
::abort();
itoken++;
}
n_daugh = 0;
while ( EvtPDL::getId( parser.getToken( itoken ) ).getId() >=
0 ) {
sdaug = parser.getToken( itoken++ );
daught[n_daugh++] = EvtPDL::getId( sdaug );
if ( daught[n_daugh - 1] == EvtId( -1, -1 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unknown particle name:" << sdaug.c_str()
<< " on line "
<< parser.getLineofToken( itoken ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
model = parser.getToken( itoken++ );
int photos = 0;
int verbose = 0;
int summary = 0;
do {
if ( model == "PHOTOS" ) {
photos = 1;
model = parser.getToken( itoken++ );
}
if ( model == "VERBOSE" ) {
verbose = 1;
model = parser.getToken( itoken++ );
}
if ( model == "SUMMARY" ) {
summary = 1;
model = parser.getToken( itoken++ );
}
} while ( model == "PHOTOS" || model == "VERBOSE" ||
model == "SUMMARY" );
//see if this is an aliased model
int foundAnAlias = -1;
for ( size_t iAlias = 0; iAlias < modelAliasList.size();
iAlias++ ) {
if ( modelAliasList[iAlias].matchAlias( model ) ) {
foundAnAlias = iAlias;
break;
}
}
if ( foundAnAlias == -1 ) {
if ( !modelist.isModel( model ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Expected to find a model name,"
<< "found:" << model.c_str() << " on line "
<< parser.getLineofToken( itoken ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
} else {
model = modelAliasList[foundAnAlias].getName();
}
temp_fcn_new_model = model;
temp_fcn_new = modelist.getFcn( model );
if ( photos ) {
temp_fcn_new->setPHOTOS();
}
if ( verbose ) {
temp_fcn_new->setVerbose();
}
if ( summary ) {
temp_fcn_new->setSummary();
}
std::vector<std::string> temp_fcn_new_args;
std::string name;
int ierr;
if ( foundAnAlias == -1 ) {
do {
name = parser.getToken( itoken++ );
if ( name != ";" ) {
temp_fcn_new_args.push_back(
EvtSymTable::get( name, ierr ) );
if ( ierr ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Reading arguments and found:"
<< name.c_str() << " on line:"
<< parser.getLineofToken( itoken - 1 )
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
//int isname=EvtPDL::getId(name).getId()>=0;
int ismodel = modelist.isModel( name );
if ( ismodel ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Expected ';' but found:" << name.c_str()
<< " on line:"
<< parser.getLineofToken( itoken - 1 )
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Most probable error is omitted ';'."
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
} while ( name != ";" );
} else {
std::vector<std::string> copyMe =
modelAliasList[foundAnAlias].getArgList();
temp_fcn_new_args = copyMe;
itoken++;
}
//Found one decay.
brfrsum += brfr;
temp_fcn_new->saveDecayInfo( ipar, n_daugh, daught,
temp_fcn_new_args.size(),
temp_fcn_new_args,
temp_fcn_new_model, brfr );
double massmin = 0.0;
// for (i=0;i<n_daugh;i++){
for ( i = 0; i < temp_fcn_new->nRealDaughters(); i++ ) {
if ( EvtPDL::getMinMass( daught[i] ) > 0.0001 ) {
massmin += EvtPDL::getMinMass( daught[i] );
} else {
massmin += EvtPDL::getMeanMass( daught[i] );
}
}
_decaytable[ipar.getAlias()].addMode( temp_fcn_new, brfrsum,
massmin );
}
} while ( token != "Enddecay" );
_decaytable[ipar.getAlias()].finalize();
}
// Allow copying of decays from one particle to another; useful
// in combination with RemoveDecay
else if ( token == "CopyDecay" ) {
std::string newname;
std::string oldname;
newname = parser.getToken( itoken++ );
oldname = parser.getToken( itoken++ );
EvtId newipar = EvtPDL::getId( newname );
EvtId oldipar = EvtPDL::getId( oldname );
if ( oldipar == EvtId( -1, -1 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unknown particle name:" << oldname.c_str()
<< " on line " << parser.getLineofToken( itoken ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( newipar == EvtId( -1, -1 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unknown particle name:" << newname.c_str()
<< " on line " << parser.getLineofToken( itoken ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( _decaytable[newipar.getAlias()].getNMode() != 0 ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Redefining decay of " << newname << endl;
_decaytable[newipar.getAlias()].removeDecay();
}
_decaytable[newipar.getAlias()] = _decaytable[oldipar.getAlias()];
}
// Enable decay deletion; intended primarily for aliases
// Peter Onyisi, March 2008
else if ( token == "RemoveDecay" ) {
parent = parser.getToken( itoken++ );
ipar = EvtPDL::getId( parent );
if ( ipar == EvtId( -1, -1 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unknown particle name:" << parent.c_str() << " on line "
<< parser.getLineofToken( itoken - 1 ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( _decaytable[ipar.getAlias()].getNMode() == 0 ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "No decays to delete for " << parent.c_str() << endl;
} else {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Deleting selected decays of " << parent.c_str() << endl;
}
do {
token = parser.getToken( itoken );
if ( token != "Enddecay" ) {
n_daugh = 0;
while ( EvtPDL::getId( parser.getToken( itoken ) ).getId() >=
0 ) {
sdaug = parser.getToken( itoken++ );
daught[n_daugh++] = EvtPDL::getId( sdaug );
if ( daught[n_daugh - 1] == EvtId( -1, -1 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unknown particle name:" << sdaug.c_str()
<< " on line "
<< parser.getLineofToken( itoken ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
token = parser.getToken( itoken );
if ( token != ";" ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Expected ';' but found:" << token << " on line:"
<< parser.getLineofToken( itoken - 1 ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Most probable error is omitted ';'." << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
token = parser.getToken( itoken++ );
EvtDecayBase* temp_fcn_new = modelist.getFcn( "PHSP" );
std::vector<std::string> temp_fcn_new_args;
std::string temp_fcn_new_model( "PHSP" );
temp_fcn_new->saveDecayInfo( ipar, n_daugh, daught, 0,
temp_fcn_new_args,
temp_fcn_new_model, 0. );
_decaytable[ipar.getAlias()].removeMode( temp_fcn_new );
}
} while ( token != "Enddecay" );
itoken++;
} else if ( token != "End" ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Found unknown command:'" << token.c_str() << "' on line "
<< parser.getLineofToken( itoken ) << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
} while ( ( token != "End" ) && itoken != parser.getNToken() );
//Now we may need to reset the minimum mass for some particles????
for ( size_t ii = 0; ii < EvtPDL::entries(); ii++ ) {
EvtId temp( ii, ii );
int nModTot = getNMode( ii );
//no decay modes
if ( nModTot == 0 )
continue;
//0 width?
if ( EvtPDL::getWidth( temp ) < 0.0000001 )
continue;
int jj;
double minMass = EvtPDL::getMaxMass( temp );
for ( jj = 0; jj < nModTot; jj++ ) {
double tmass = _decaytable[ii].getDecay( jj ).getMassMin();
if ( tmass < minMass )
minMass = tmass;
}
if ( minMass > EvtPDL::getMinMass( temp ) ) {
if ( verbose )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Given allowed decays, resetting minMass "
<< EvtPDL::name( temp ).c_str() << " "
<< EvtPDL::getMinMass( temp ) << " to " << minMass << endl;
EvtPDL::reSetMassMin( temp, minMass );
}
}
}
void EvtDecayTable::readXMLDecayFile( const std::string dec_name, bool verbose )
{
if ( _decaytable.size() < EvtPDL::entries() )
_decaytable.resize( EvtPDL::entries() );
EvtModel& modelist = EvtModel::instance();
EvtExtGeneratorCommandsTable* extGenCommands =
EvtExtGeneratorCommandsTable::getInstance();
EvtParserXml parser;
parser.open( dec_name );
EvtId ipar;
std::string decayParent = "";
double brfrSum = 0.;
std::vector<EvtModelAlias> modelAliasList;
bool endReached = false;
while ( parser.readNextTag() ) {
//TAGS FOUND UNDER DATA
if ( parser.getParentTagTitle() == "data" ) {
if ( parser.getTagTitle() == "photos" ) {
std::string usage = parser.readAttribute( "usage" );
if ( usage == "always" ) {
EvtRadCorr::setAlwaysRadCorr();
if ( verbose )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "As requested, PHOTOS will be turned on for all decays."
<< endl;
} else if ( usage == "never" ) {
EvtRadCorr::setNeverRadCorr();
if ( verbose )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "As requested, PHOTOS will be turned off."
<< endl;
} else {
EvtRadCorr::setNormalRadCorr();
if ( verbose )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "As requested, PHOTOS will be turned on only when requested."
<< endl;
}
} else if ( parser.getTagTitle() == "alias" ) {
std::string alias = parser.readAttribute( "name" );
std::string particle = parser.readAttribute( "particle" );
checkParticle( particle );
EvtId id = EvtPDL::getId( particle );
EvtPDL::alias( id, alias );
if ( _decaytable.size() < EvtPDL::entries() )
_decaytable.resize( EvtPDL::entries() );
} else if ( parser.getTagTitle() == "modelAlias" ) {
std::vector<std::string> modelArgList;
std::string alias = parser.readAttribute( "name" );
std::string model = parser.readAttribute( "model" );
std::string paramStr = parser.readAttribute( "params" );
std::istringstream paramStream( paramStr );
std::string param;
if ( paramStr == "" ) {
EvtDecayBase* fcn = modelist.getFcn( model );
int i( 0 );
std::string paramName = fcn->getParamName( 0 );
while ( paramName != "" ) {
param = parser.readAttribute( paramName,
fcn->getParamDefault( i ) );
if ( param == "" )
break;
modelArgList.push_back( param );
++i;
paramName = fcn->getParamName( i );
}
} else {
while ( std::getline( paramStream, param, ' ' ) ) {
modelArgList.push_back( param );
}
}
EvtModelAlias newAlias( alias, model, modelArgList );
modelAliasList.push_back( newAlias );
} else if ( parser.getTagTitle() == "chargeConj" ) {
std::string particle = parser.readAttribute( "particle" );
std::string conjugate = parser.readAttribute( "conjugate" );
EvtId a = EvtPDL::getId( particle );
EvtId abar = EvtPDL::getId( conjugate );
checkParticle( particle );
checkParticle( conjugate );
EvtPDL::aliasChgConj( a, abar );
} else if ( parser.getTagTitle() == "conjDecay" ) {
std::string particle = parser.readAttribute( "particle" );
EvtId a = EvtPDL::getId( particle );
EvtId abar = EvtPDL::chargeConj( a );
checkParticle( particle );
checkParticle( abar.getName() );
if ( _decaytable[a.getAlias()].getNMode() != 0 ) {
if ( verbose )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Redefined decay of " << particle.c_str()
<< " in ConjDecay" << endl;
_decaytable[a.getAlias()].removeDecay();
}
//take contents of abar and conjugate and store in a
_decaytable[a.getAlias()].makeChargeConj(
&_decaytable[abar.getAlias()] );
} else if ( parser.getTagTitle() == "define" ) {
std::string name = parser.readAttribute( "name" );
std::string value = parser.readAttribute( "value" );
EvtSymTable::define( name, value );
} else if ( parser.getTagTitle() == "particle" ) {
std::string name = parser.readAttribute( "name" );
double mass = parser.readAttributeDouble( "mass" );
double width = parser.readAttributeDouble( "width" );
double minMass = parser.readAttributeDouble( "massMin" );
double maxMass = parser.readAttributeDouble( "massMax" );
std::string birthFactor = parser.readAttribute(
"includeBirthFactor" );
std::string decayFactor = parser.readAttribute(
"includeDecayFactor" );
std::string lineShape = parser.readAttribute( "lineShape" );
double blattWeisskopfD = parser.readAttributeDouble(
"blattWeisskopfFactor" );
double blattWeisskopfB = parser.readAttributeDouble(
"blattWeisskopfBirth" );
EvtId thisPart = EvtPDL::getId( name );
checkParticle( name );
if ( mass != -1 ) {
EvtPDL::reSetMass( thisPart, mass );
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Refined mass for "
<< EvtPDL::name( thisPart ).c_str() << " to be " << mass
<< endl;
}
if ( width != -1 ) {
EvtPDL::reSetWidth( thisPart, width );
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Refined width for "
<< EvtPDL::name( thisPart ).c_str() << " to be "
<< width << endl;
}
if ( minMass != -1 ) {
EvtPDL::reSetMassMin( thisPart, minMass );
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Refined minimum mass for "
<< EvtPDL::name( thisPart ).c_str() << " to be "
<< minMass << endl;
}
if ( maxMass != -1 ) {
EvtPDL::reSetMassMax( thisPart, maxMass );
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Refined maximum mass for "
<< EvtPDL::name( thisPart ).c_str() << " to be "
<< maxMass << endl;
}
if ( !birthFactor.empty() ) {
EvtPDL::includeBirthFactor( thisPart,
stringToBoolean( birthFactor ) );
if ( verbose ) {
if ( stringToBoolean( birthFactor ) ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Include birth factor for "
<< EvtPDL::name( thisPart ).c_str() << endl;
} else {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "No longer include birth factor for "
<< EvtPDL::name( thisPart ).c_str() << endl;
}
}
}
if ( !decayFactor.empty() ) {
EvtPDL::includeDecayFactor( thisPart,
stringToBoolean( decayFactor ) );
if ( verbose ) {
if ( stringToBoolean( decayFactor ) ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Include decay factor for "
<< EvtPDL::name( thisPart ).c_str() << endl;
} else {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "No longer include decay factor for "
<< EvtPDL::name( thisPart ).c_str() << endl;
}
}
}
if ( !lineShape.empty() ) {
EvtPDL::changeLS( thisPart, lineShape );
if ( verbose )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Change lineshape to " << lineShape << " for "
<< EvtPDL::name( thisPart ).c_str() << endl;
}
if ( blattWeisskopfD != -1 ) {
EvtPDL::reSetBlatt( thisPart, blattWeisskopfD );
if ( verbose )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Redefined Blatt-Weisskopf factor "
<< EvtPDL::name( thisPart ).c_str() << " to be "
<< blattWeisskopfD << endl;
}
if ( blattWeisskopfB != -1 ) {
EvtPDL::reSetBlattBirth( thisPart, blattWeisskopfB );
if ( verbose )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Redefined Blatt-Weisskopf birth factor "
<< EvtPDL::name( thisPart ).c_str() << " to be "
<< blattWeisskopfB << endl;
}
} else if ( parser.getTagTitle() == "lineShapePW" ) {
std::string parent = parser.readAttribute( "parent" );
std::string daug1 = parser.readAttribute( "daug1" );
std::string daug2 = parser.readAttribute( "daug2" );
int pw = parser.readAttributeInt( "pw" );
checkParticle( parent );
checkParticle( daug1 );
checkParticle( daug2 );
EvtId thisPart = EvtPDL::getId( parent );
EvtId thisD1 = EvtPDL::getId( daug1 );
EvtId thisD2 = EvtPDL::getId( daug2 );
EvtPDL::setPWForDecay( thisPart, pw, thisD1, thisD2 );
EvtPDL::setPWForBirthL( thisD1, pw, thisPart, thisD2 );
EvtPDL::setPWForBirthL( thisD2, pw, thisPart, thisD1 );
if ( verbose )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Redefined Partial wave for " << parent.c_str()
<< " to " << daug1.c_str() << " " << daug2.c_str()
<< " (" << pw << ")" << endl;
} else if ( parser.getTagTitle() == "decay" ) { //start of a particle
brfrSum = 0.;
decayParent = parser.readAttribute( "name" );
checkParticle( decayParent );
ipar = EvtPDL::getId( decayParent );
if ( _decaytable[ipar.getAlias()].getNMode() != 0 ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Redefined decay of " << decayParent.c_str() << endl;
_decaytable[ipar.getAlias()].removeDecay();
}
} else if ( parser.getTagTitle() == "copyDecay" ) {
std::string particle = parser.readAttribute( "particle" );
std::string copy = parser.readAttribute( "copy" );
EvtId newipar = EvtPDL::getId( particle );
EvtId oldipar = EvtPDL::getId( copy );
checkParticle( particle );
checkParticle( copy );
if ( _decaytable[newipar.getAlias()].getNMode() != 0 ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Redefining decay of " << particle << endl;
_decaytable[newipar.getAlias()].removeDecay();
}
_decaytable[newipar.getAlias()] = _decaytable[oldipar.getAlias()];
} else if ( parser.getTagTitle() == "removeDecay" ) {
decayParent = parser.readAttribute( "particle" );
checkParticle( decayParent );
ipar = EvtPDL::getId( decayParent );
if ( _decaytable[ipar.getAlias()].getNMode() == 0 ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "No decays to delete for " << decayParent.c_str()
<< endl;
} else {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "Deleting selected decays of " << decayParent.c_str()
<< endl;
}
} else if ( parser.getTagTitle() == "pythiaParam" ) {
Command command;
command["GENERATOR"] = parser.readAttribute( "generator" );
command["MODULE"] = parser.readAttribute( "module" );
command["PARAM"] = parser.readAttribute( "param" );
command["VALUE"] = parser.readAttribute( "value" );
command["VERSION"] = "PYTHIA8";
extGenCommands->addCommand( "PYTHIA", command );
} else if ( parser.getTagTitle() == "pythia6Param" ) {
Command command;
command["GENERATOR"] = parser.readAttribute( "generator" );
command["MODULE"] = parser.readAttribute( "module" );
command["PARAM"] = parser.readAttribute( "param" );
command["VALUE"] = parser.readAttribute( "value" );
command["VERSION"] = "PYTHIA6";
extGenCommands->addCommand( "PYTHIA", command );
} else if ( parser.getTagTitle() == "/data" ) { //end of data
endReached = true;
parser.close();
break;
} else if ( parser.getTagTitle() == "Title" ||
parser.getTagTitle() == "Details" ||
parser.getTagTitle() == "Author" ||
parser.getTagTitle() == "Version"
//the above tags are expected to be in the XML decay file but are not used by EvtGen
|| parser.getTagTitle() == "dalitzDecay" ||
parser.getTagTitle() == "copyDalitz" ) {
//the above tags are only used by EvtGenModels/EvtDalitzTable
} else {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Unknown tag " << parser.getTagTitle()
<< " found in XML decay file near line "
<< parser.getLineNumber() << ". Tag will be ignored."
<< endl;
}
//TAGS FOUND UNDER DECAY
} else if ( parser.getParentTagTitle() == "decay" ) {
if ( parser.getTagTitle() == "channel" ) { //start of a channel
int nDaughters = 0;
EvtId daughter[MAX_DAUG];
EvtDecayBase* temp_fcn_new;
std::string temp_fcn_new_model;
std::vector<std::string> temp_fcn_new_args;
double brfr = parser.readAttributeDouble( "br" );
std::string daugStr = parser.readAttribute( "daughters" );
std::istringstream daugStream( daugStr );
std::string model = parser.readAttribute( "model" );
std::string paramStr = parser.readAttribute( "params" );
std::istringstream paramStream( paramStr );
bool decVerbose = parser.readAttributeBool( "verbose" );
bool decPhotos = parser.readAttributeBool( "photos" );
bool decSummary = parser.readAttributeBool( "summary" );
std::string daugh;
while ( std::getline( daugStream, daugh, ' ' ) ) {
checkParticle( daugh );
daughter[nDaughters++] = EvtPDL::getId( daugh );
}
int modelAlias = -1;
for ( size_t iAlias = 0; iAlias < modelAliasList.size();
iAlias++ ) {
if ( modelAliasList[iAlias].matchAlias( model ) ) {
modelAlias = iAlias;
break;
}
}
if ( modelAlias == -1 ) {
if ( !modelist.isModel( model ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Expected to find a model name near line "
<< parser.getLineNumber() << ","
<< "found:" << model.c_str() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
} else {
model = modelAliasList[modelAlias].getName();
}
temp_fcn_new_model = model;
temp_fcn_new = modelist.getFcn( model );
if ( decPhotos )
temp_fcn_new->setPHOTOS();
if ( decVerbose )
temp_fcn_new->setVerbose();
if ( decSummary )
temp_fcn_new->setSummary();
int ierr;
if ( modelAlias == -1 ) {
std::string param;
if ( paramStr == "" ) {
int i( 0 );
std::string paramName = temp_fcn_new->getParamName( 0 );
while ( paramName != "" ) {
param = parser.readAttribute(
paramName, temp_fcn_new->getParamDefault( i ) );
if ( param == "" )
break; //params must be added in order so we can't just skip the missing ones
temp_fcn_new_args.push_back(
EvtSymTable::get( param, ierr ) );
if ( ierr ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Reading arguments near line "
<< parser.getLineNumber()
<< " and found:" << param.c_str() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
++i;
paramName = temp_fcn_new->getParamName( i );
}
} else { //if the params are not set seperately
while ( std::getline( paramStream, param, ' ' ) ) {
temp_fcn_new_args.push_back(
EvtSymTable::get( param, ierr ) );
if ( ierr ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Reading arguments near line "
<< parser.getLineNumber()
<< " and found:" << param.c_str() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
}
} else {
std::vector<std::string> copyMe =
modelAliasList[modelAlias].getArgList();
temp_fcn_new_args = copyMe;
}
brfrSum += brfr;
temp_fcn_new->saveDecayInfo( ipar, nDaughters, daughter,
temp_fcn_new_args.size(),
temp_fcn_new_args,
temp_fcn_new_model, brfr );
double massMin = 0.0;
for ( int i = 0; i < temp_fcn_new->nRealDaughters(); i++ ) {
if ( EvtPDL::getMinMass( daughter[i] ) > 0.0001 ) {
massMin += EvtPDL::getMinMass( daughter[i] );
} else {
massMin += EvtPDL::getMeanMass( daughter[i] );
}
}
_decaytable[ipar.getAlias()].addMode( temp_fcn_new, brfrSum,
massMin );
} else if ( parser.getTagTitle() == "/decay" ) { //end of a particle
_decaytable[ipar.getAlias()].finalize();
} else
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Unexpected tag " << parser.getTagTitle()
<< " found in XML decay file near line "
<< parser.getLineNumber() << ". Tag will be ignored."
<< endl;
//TAGS FOUND UNDER REMOVEDECAY
} else if ( parser.getParentTagTitle() == "removeDecay" ) {
if ( parser.getTagTitle() == "channel" ) { //start of a channel
int nDaughters = 0;
EvtId daughter[MAX_DAUG];
std::string daugStr = parser.readAttribute( "daughters" );
std::istringstream daugStream( daugStr );
std::string daugh;
while ( std::getline( daugStream, daugh, ' ' ) ) {
checkParticle( daugh );
daughter[nDaughters++] = EvtPDL::getId( daugh );
}
EvtDecayBase* temp_fcn_new = modelist.getFcn( "PHSP" );
std::vector<std::string> temp_fcn_new_args;
std::string temp_fcn_new_model( "PHSP" );
temp_fcn_new->saveDecayInfo( ipar, nDaughters, daughter, 0,
temp_fcn_new_args,
temp_fcn_new_model, 0. );
_decaytable[ipar.getAlias()].removeMode( temp_fcn_new );
} else if ( parser.getTagTitle() != "/removeDecay" ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Unexpected tag " << parser.getTagTitle()
<< " found in XML decay file near line "
<< parser.getLineNumber() << ". Tag will be ignored."
<< endl;
}
}
} //while lines in file
if ( !endReached ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Either the decay file ended prematurely or the file is badly formed.\n"
<< "Error occured near line" << parser.getLineNumber() << endl;
::abort();
}
//Now we may need to reset the minimum mass for some particles????
for ( size_t ii = 0; ii < EvtPDL::entries(); ii++ ) {
EvtId temp( ii, ii );
int nModTot = getNMode( ii );
//no decay modes
if ( nModTot == 0 )
continue;
//0 width?
if ( EvtPDL::getWidth( temp ) < 0.0000001 )
continue;
int jj;
double minMass = EvtPDL::getMaxMass( temp );
for ( jj = 0; jj < nModTot; jj++ ) {
double tmass = _decaytable[ii].getDecay( jj ).getMassMin();
if ( tmass < minMass )
minMass = tmass;
}
if ( minMass > EvtPDL::getMinMass( temp ) ) {
if ( verbose )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Given allowed decays, resetting minMass "
<< EvtPDL::name( temp ).c_str() << " "
<< EvtPDL::getMinMass( temp ) << " to " << minMass << endl;
EvtPDL::reSetMassMin( temp, minMass );
}
}
}
bool EvtDecayTable::stringToBoolean( std::string valStr )
{
return ( valStr == "true" || valStr == "1" || valStr == "on" ||
valStr == "yes" );
}
void EvtDecayTable::checkParticle( std::string particle )
{
if ( EvtPDL::getId( particle ) == EvtId( -1, -1 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unknown particle name:" << particle.c_str() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
EvtDecayBase* EvtDecayTable::findDecayModel( EvtId id, int modeInt )
{
int aliasInt = id.getAlias();
EvtDecayBase* theModel = this->findDecayModel( aliasInt, modeInt );
return theModel;
}
EvtDecayBase* EvtDecayTable::findDecayModel( int aliasInt, int modeInt )
{
EvtDecayBase* theModel( 0 );
if ( aliasInt >= 0 && aliasInt < (int)EvtPDL::entries() ) {
theModel = _decaytable[aliasInt].getDecayModel( modeInt );
}
return theModel;
}
bool EvtDecayTable::hasPythia( EvtId id )
{
bool hasPythia = this->hasPythia( id.getAlias() );
return hasPythia;
}
bool EvtDecayTable::hasPythia( int aliasInt )
{
bool hasPythia( false );
if ( aliasInt >= 0 && aliasInt < (int)EvtPDL::entries() ) {
hasPythia = _decaytable[aliasInt].isJetSet();
}
return hasPythia;
}
int EvtDecayTable::getNModes( EvtId id )
{
int nModes = this->getNModes( id.getAlias() );
return nModes;
}
int EvtDecayTable::getNModes( int aliasInt )
{
int nModes( 0 );
if ( aliasInt >= 0 && aliasInt < (int)EvtPDL::entries() ) {
nModes = _decaytable[aliasInt].getNMode();
}
return nModes;
}
int EvtDecayTable::findChannel( EvtId parent, std::string model, int ndaug,
EvtId* daugs, int narg, std::string* args )
{
int i, j, right;
EvtId daugs_scratch[50];
int nmatch, k;
for ( i = 0; i < _decaytable[parent.getAlias()].getNMode(); i++ ) {
right = 1;
right = right && model == _decaytable[parent.getAlias()]
.getDecay( i )
.getDecayModel()
->getModelName();
right = right && ( ndaug == _decaytable[parent.getAlias()]
.getDecay( i )
.getDecayModel()
->getNDaug() );
right = right && ( narg == _decaytable[parent.getAlias()]
.getDecay( i )
.getDecayModel()
->getNArg() );
if ( right ) {
for ( j = 0; j < ndaug; j++ ) {
daugs_scratch[j] = daugs[j];
}
nmatch = 0;
for ( j = 0; j < _decaytable[parent.getAlias()]
.getDecay( i )
.getDecayModel()
->getNDaug();
j++ ) {
for ( k = 0; k < ndaug; k++ ) {
if ( daugs_scratch[k] == _decaytable[parent.getAlias()]
.getDecay( i )
.getDecayModel()
->getDaug( j ) ) {
daugs_scratch[k] = EvtId( -1, -1 );
nmatch++;
break;
}
}
}
right = right && ( nmatch == ndaug );
for ( j = 0; j < _decaytable[parent.getAlias()]
.getDecay( i )
.getDecayModel()
->getNArg();
j++ ) {
right = right && ( args[j] == _decaytable[parent.getAlias()]
.getDecay( i )
.getDecayModel()
->getArgStr( j ) );
}
}
if ( right )
return i;
}
return -1;
}
int EvtDecayTable::inChannelList( EvtId parent, int ndaug, EvtId* daugs )
{
int i, j, k;
EvtId daugs_scratch[MAX_DAUG];
int dsum = 0;
for ( i = 0; i < ndaug; i++ ) {
dsum += daugs[i].getAlias();
}
int nmatch;
int ipar = parent.getAlias();
int nmode = _decaytable[ipar].getNMode();
for ( i = 0; i < nmode; i++ ) {
EvtDecayBase* thedecaymodel =
_decaytable[ipar].getDecay( i ).getDecayModel();
if ( thedecaymodel->getDSum() == dsum ) {
int nd = thedecaymodel->getNDaug();
if ( ndaug == nd ) {
for ( j = 0; j < ndaug; j++ ) {
daugs_scratch[j] = daugs[j];
}
nmatch = 0;
for ( j = 0; j < nd; j++ ) {
for ( k = 0; k < ndaug; k++ ) {
if ( EvtId( daugs_scratch[k] ) ==
thedecaymodel->getDaug( j ) ) {
daugs_scratch[k] = EvtId( -1, -1 );
nmatch++;
break;
}
}
}
if ( ( nmatch == ndaug ) &&
( !( ( thedecaymodel->getModelName() == "JETSET" ) ||
( thedecaymodel->getModelName() == "PYTHIA" ) ) ) ) {
return i;
}
}
}
}
return -1;
}
std::vector<std::string> EvtDecayTable::splitString( std::string& theString,
std::string& splitter )
{
// Code from STLplus
std::vector<std::string> result;
if ( !theString.empty() && !splitter.empty() ) {
for ( std::string::size_type offset = 0;; ) {
std::string::size_type found = theString.find( splitter, offset );
if ( found != std::string::npos ) {
std::string tmpString = theString.substr( offset, found - offset );
if ( tmpString.size() > 0 ) {
result.push_back( tmpString );
}
offset = found + splitter.size();
} else {
std::string tmpString =
theString.substr( offset, theString.size() - offset );
if ( tmpString.size() > 0 ) {
result.push_back( tmpString );
}
break;
}
}
}
return result;
}
diff --git a/src/EvtGenBase/EvtDiLog.cpp b/src/EvtGenBase/EvtDiLog.cpp
index dd5b12e..96e8af4 100644
--- a/src/EvtGenBase/EvtDiLog.cpp
+++ b/src/EvtGenBase/EvtDiLog.cpp
@@ -1,67 +1,63 @@
-// $Id: EvtDiLog.cpp,v 1.3 2009-03-16 15:52:42 robbep Exp $
-// Include files
-
-// local
#include "EvtGenBase/EvtDiLog.hh"
#include <cmath>
//-----------------------------------------------------------------------------
// Implementation file for class : EvtDiLog
//
// 2007-01-23 : Patrick Robbe
//-----------------------------------------------------------------------------
double EvtDiLog::DiLog( double x )
{
double h, t, y, s, a, alfa, b0, b1, b2;
if ( x == 1. )
h = PI6;
else if ( x == -1. )
h = -PI12;
else {
t = -x;
if ( t <= -2. ) {
y = -1. / ( 1. + t );
s = 1.;
a = -PI3 + HF * ( std::pow( log( -t ), 2 ) -
std::pow( log( 1. + 1. / t ), 2 ) );
} else if ( t < -1. ) {
y = -1. - t;
s = -1.;
a = log( -t );
a = -PI6 + a * ( a + log( 1. + 1. / t ) );
} else if ( t <= -HF ) {
y = -( 1. + t ) / t;
s = 1.;
a = log( -t );
a = -PI6 + a * ( -HF * a + log( 1. + t ) );
} else if ( t < 0 ) {
y = -t / ( 1. + t );
s = -1.;
a = HF * std::pow( log( 1. + t ), 2 );
} else if ( t <= 1. ) {
y = t;
s = 1.;
a = 0.;
} else {
y = 1. / t;
s = -1.;
a = PI6 + HF * std::pow( log( t ), 2 );
}
h = y + y - 1.;
alfa = h + h;
b1 = 0.;
b2 = 0.;
for ( int i = 19; i >= 0; --i ) {
b0 = C[i] + alfa * b1 - b2;
b2 = b1;
b1 = b0;
}
h = -( s * ( b0 - h * b2 ) + a );
}
return h;
}
diff --git a/src/EvtGenBase/EvtDiracParticle.cpp b/src/EvtGenBase/EvtDiracParticle.cpp
index a93acdd..c426177 100644
--- a/src/EvtGenBase/EvtDiracParticle.cpp
+++ b/src/EvtGenBase/EvtDiracParticle.cpp
@@ -1,153 +1,133 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtDiracParticle.cc
-//
-// Description: Class to describe spin 1/2 particles.
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtDiracParticle.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtGammaMatrix.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSpinDensity.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <iostream>
#include <math.h>
#include <stdlib.h>
using std::endl;
void EvtDiracParticle::init( EvtId part_n, const EvtVector4R& p4 )
{
_validP4 = true;
setp( p4 );
setpart_num( part_n );
if ( EvtPDL::getStdHep( part_n ) == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Error in EvtDiracParticle::init, part_n=" << part_n.getId()
<< endl;
::abort();
}
if ( EvtPDL::getStdHep( part_n ) > 0 ) {
_spinorRest[0].set( EvtComplex( sqrt( 2.0 * mass() ), 0.0 ),
EvtComplex( 0.0, 0.0 ), EvtComplex( 0.0, 0.0 ),
EvtComplex( 0.0, 0.0 ) );
_spinorRest[1].set( EvtComplex( 0.0, 0.0 ),
EvtComplex( sqrt( 2.0 * mass() ), 0.0 ),
EvtComplex( 0.0, 0.0 ), EvtComplex( 0.0, 0.0 ) );
_spinorParent[0] = boostTo( _spinorRest[0], p4 );
_spinorParent[1] = boostTo( _spinorRest[1], p4 );
} else {
_spinorRest[0].set( EvtComplex( 0.0, 0.0 ), EvtComplex( 0.0, 0.0 ),
EvtComplex( sqrt( 2.0 * mass() ), 0.0 ),
EvtComplex( 0.0, 0.0 ) );
_spinorRest[1].set( EvtComplex( 0.0, 0.0 ), EvtComplex( 0.0, 0.0 ),
EvtComplex( 0.0, 0.0 ),
EvtComplex( sqrt( 2.0 * mass() ), 0.0 ) );
_spinorParent[0] = boostTo( _spinorRest[0], p4 );
_spinorParent[1] = boostTo( _spinorRest[1], p4 );
}
setLifetime();
}
void EvtDiracParticle::init( EvtId part_n, const EvtVector4R& p4,
const EvtDiracSpinor& prod1,
const EvtDiracSpinor& prod2,
const EvtDiracSpinor& rest1,
const EvtDiracSpinor& rest2 )
{
_validP4 = true;
setp( p4 );
setpart_num( part_n );
if ( EvtPDL::getStdHep( part_n ) == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Error in EvtDiracParticle::init, part_n=" << part_n.getId()
<< std::endl;
::abort();
}
_spinorRest[0] = rest1;
_spinorRest[1] = rest2;
_spinorParent[0] = prod1;
_spinorParent[1] = prod2;
setLifetime();
}
EvtSpinDensity EvtDiracParticle::rotateToHelicityBasis() const
{
EvtDiracSpinor spplus;
EvtDiracSpinor spminus;
double sqmt2 = sqrt( 2. * ( getP4().mass() ) );
if ( EvtPDL::getStdHep( getId() ) > 0 ) {
spplus.set( 1.0, 0.0, 0.0, 0.0 );
spminus.set( 0.0, 1.0, 0.0, 0.0 );
} else {
spplus.set( 0.0, 0.0, 1.0, 0.0 );
spminus.set( 0.0, 0.0, 0.0, 1.0 );
}
EvtSpinDensity R;
R.setDim( 2 );
for ( int i = 0; i < 2; i++ ) {
R.set( 0, i, ( spplus * _spinorRest[i] ) / sqmt2 );
R.set( 1, i, ( spminus * _spinorRest[i] ) / sqmt2 );
}
return R;
}
EvtSpinDensity EvtDiracParticle::rotateToHelicityBasis( double alpha, double beta,
double gamma ) const
{
EvtDiracSpinor spplus;
EvtDiracSpinor spminus;
double sqmt2 = sqrt( 2. * ( getP4().mass() ) );
if ( EvtPDL::getStdHep( getId() ) > 0 ) {
spplus.set( 1.0, 0.0, 0.0, 0.0 );
spminus.set( 0.0, 1.0, 0.0, 0.0 );
} else {
spplus.set( 0.0, 0.0, 1.0, 0.0 );
spminus.set( 0.0, 0.0, 0.0, 1.0 );
}
spplus.applyRotateEuler( alpha, beta, gamma );
spminus.applyRotateEuler( alpha, beta, gamma );
EvtSpinDensity R;
R.setDim( 2 );
for ( int i = 0; i < 2; i++ ) {
R.set( 0, i, ( spplus * _spinorRest[i] ) / sqmt2 );
R.set( 1, i, ( spminus * _spinorRest[i] ) / sqmt2 );
}
return R;
}
diff --git a/src/EvtGenBase/EvtDiracSpinor.cpp b/src/EvtGenBase/EvtDiracSpinor.cpp
index 9d7fe00..8315068 100644
--- a/src/EvtGenBase/EvtDiracSpinor.cpp
+++ b/src/EvtGenBase/EvtDiracSpinor.cpp
@@ -1,352 +1,332 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtDiracSpinor.cc
-//
-// Description: Class to describe (EvtDiracParticle) spinors.
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtGammaMatrix.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <assert.h>
#include <math.h>
using std::ostream;
EvtDiracSpinor::EvtDiracSpinor( const EvtComplex& sp0, const EvtComplex& sp1,
const EvtComplex& sp2, const EvtComplex& sp3 )
{
set( sp0, sp1, sp2, sp3 );
}
void EvtDiracSpinor::set( const EvtComplex& sp0, const EvtComplex& sp1,
const EvtComplex& sp2, const EvtComplex& sp3 )
{
spinor[0] = sp0;
spinor[1] = sp1;
spinor[2] = sp2;
spinor[3] = sp3;
}
void EvtDiracSpinor::set_spinor( int i, const EvtComplex& sp )
{
spinor[i] = sp;
}
ostream& operator<<( ostream& s, const EvtDiracSpinor& sp )
{
s << "[" << sp.spinor[0] << "," << sp.spinor[1] << "," << sp.spinor[2]
<< "," << sp.spinor[3] << "]";
return s;
}
const EvtComplex& EvtDiracSpinor::get_spinor( int i ) const
{
return spinor[i];
}
EvtDiracSpinor rotateEuler( const EvtDiracSpinor& sp, double alpha, double beta,
double gamma )
{
EvtDiracSpinor tmp( sp );
tmp.applyRotateEuler( alpha, beta, gamma );
return tmp;
}
EvtDiracSpinor boostTo( const EvtDiracSpinor& sp, const EvtVector4R p4 )
{
EvtDiracSpinor tmp( sp );
tmp.applyBoostTo( p4 );
return tmp;
}
EvtDiracSpinor boostTo( const EvtDiracSpinor& sp, const EvtVector3R boost )
{
EvtDiracSpinor tmp( sp );
tmp.applyBoostTo( boost );
return tmp;
}
void EvtDiracSpinor::applyBoostTo( const EvtVector4R& p4 )
{
double e = p4.get( 0 );
EvtVector3R boost( p4.get( 1 ) / e, p4.get( 2 ) / e, p4.get( 3 ) / e );
applyBoostTo( boost );
return;
}
void EvtDiracSpinor::applyBoostTo( const EvtVector3R& boost )
{
double bx, by, bz, gamma, b2, f1, f2;
EvtComplex spinorp[4];
bx = boost.get( 0 );
by = boost.get( 1 );
bz = boost.get( 2 );
b2 = bx * bx + by * by + bz * bz;
if ( b2 == 0.0 ) {
return;
}
//assert(b2<1.0);
gamma = 1.0;
if ( b2 < 1.0 ) {
gamma = 1.0 / sqrt( 1.0 - b2 );
}
f1 = sqrt( ( gamma + 1.0 ) / 2.0 );
f2 = f1 * gamma / ( gamma + 1.0 );
spinorp[0] = f1 * spinor[0] + f2 * bz * spinor[2] +
f2 * EvtComplex( bx, -by ) * spinor[3];
spinorp[1] = f1 * spinor[1] + f2 * EvtComplex( bx, by ) * spinor[2] -
f2 * bz * spinor[3];
spinorp[2] = f2 * bz * spinor[0] + f2 * EvtComplex( bx, -by ) * spinor[1] +
f1 * spinor[2];
spinorp[3] = f2 * EvtComplex( bx, by ) * spinor[0] - f2 * bz * spinor[1] +
f1 * spinor[3];
spinor[0] = spinorp[0];
spinor[1] = spinorp[1];
spinor[2] = spinorp[2];
spinor[3] = spinorp[3];
return;
}
void EvtDiracSpinor::applyRotateEuler( double alpha, double beta, double gamma )
{
EvtComplex retVal[4];
double cb2 = cos( 0.5 * beta );
double sb2 = sin( 0.5 * beta );
double capg2 = cos( 0.5 * ( alpha + gamma ) );
double camg2 = cos( 0.5 * ( alpha - gamma ) );
double sapg2 = sin( 0.5 * ( alpha + gamma ) );
double samg2 = sin( 0.5 * ( alpha - gamma ) );
EvtComplex m11( cb2 * capg2, -cb2 * sapg2 );
EvtComplex m12( -sb2 * camg2, sb2 * samg2 );
EvtComplex m21( sb2 * camg2, sb2 * samg2 );
EvtComplex m22( cb2 * capg2, cb2 * sapg2 );
retVal[0] = m11 * spinor[0] + m12 * spinor[1];
retVal[1] = m21 * spinor[0] + m22 * spinor[1];
retVal[2] = m11 * spinor[2] + m12 * spinor[3];
retVal[3] = m21 * spinor[2] + m22 * spinor[3];
spinor[0] = retVal[0];
spinor[1] = retVal[1];
spinor[2] = retVal[2];
spinor[3] = retVal[3];
return;
}
EvtDiracSpinor EvtDiracSpinor::conj() const
{
EvtDiracSpinor sp;
for ( int i = 0; i < 4; i++ )
sp.set_spinor( i, ::conj( spinor[i] ) );
return sp;
}
EvtVector4C EvtLeptonVACurrent( const EvtDiracSpinor& d, const EvtDiracSpinor& dp )
{
//Old code; below is a new specialized code that does it more efficiently.
//EvtGammaMatrix mat;
//EvtVector4C temp;
//mat.va0();
//temp.set(0,d*(mat*dp));
//mat.va1();
//temp.set(1,d*(mat*dp));
//mat.va2();
//temp.set(2,d*(mat*dp));
//mat.va3();
//temp.set(3,d*(mat*dp));
//return temp;
EvtComplex u02 = ::conj( d.spinor[0] - d.spinor[2] );
EvtComplex u13 = ::conj( d.spinor[1] - d.spinor[3] );
EvtComplex v02 = dp.spinor[0] - dp.spinor[2];
EvtComplex v13 = dp.spinor[1] - dp.spinor[3];
EvtComplex a = u02 * v02;
EvtComplex b = u13 * v13;
EvtComplex c = u02 * v13;
EvtComplex e = u13 * v02;
return EvtVector4C( a + b, -( c + e ), EvtComplex( 0, 1 ) * ( c - e ), b - a );
}
EvtVector4C EvtLeptonVCurrent( const EvtDiracSpinor& d, const EvtDiracSpinor& dp )
{
EvtVector4C temp;
// no conjugate here; done in the multiplication
// yes this is stupid and fooled me to for a long time (ryd)
temp.set( 0, d * ( EvtGammaMatrix::v0() * dp ) );
temp.set( 1, d * ( EvtGammaMatrix::v1() * dp ) );
temp.set( 2, d * ( EvtGammaMatrix::v2() * dp ) );
temp.set( 3, d * ( EvtGammaMatrix::v3() * dp ) );
return temp;
}
EvtVector4C EvtLeptonACurrent( const EvtDiracSpinor& d, const EvtDiracSpinor& dp )
{
EvtVector4C temp;
EvtGammaMatrix mat;
// no conjugate here; done in the multiplication
// yes this is stupid and fooled me to for a long time (ryd)
mat = EvtGammaMatrix::v0() - EvtGammaMatrix::va0();
temp.set( 0, d * ( mat * dp ) );
mat = EvtGammaMatrix::v1() - EvtGammaMatrix::va1();
temp.set( 1, d * ( mat * dp ) );
mat = EvtGammaMatrix::v2() - EvtGammaMatrix::va2();
temp.set( 2, d * ( mat * dp ) );
mat = EvtGammaMatrix::v3() - EvtGammaMatrix::va3();
temp.set( 3, d * ( mat * dp ) );
return temp;
}
EvtComplex EvtLeptonSCurrent( const EvtDiracSpinor& d, const EvtDiracSpinor& dp )
{
EvtComplex temp;
// no conjugate here; done in the multiplication
// yes this is stupid and fooled me to for a long time (ryd)
temp = d * ( EvtGammaMatrix::g0() * dp );
return temp;
}
EvtComplex EvtLeptonPCurrent( const EvtDiracSpinor& d, const EvtDiracSpinor& dp )
{
EvtComplex temp;
// no conjugate here; done in the multiplication
// yes this is stupid and fooled me to for a long time (ryd)
static EvtGammaMatrix m = EvtGammaMatrix::g0() * EvtGammaMatrix::g5();
temp = d * ( m * dp );
return temp;
}
EvtTensor4C EvtLeptonTCurrent( const EvtDiracSpinor& d, const EvtDiracSpinor& dp )
{
EvtTensor4C temp;
temp.zero();
EvtComplex i2( 0, 0.5 );
static EvtGammaMatrix mat01 =
EvtGammaMatrix::g0() * ( EvtGammaMatrix::g0() * EvtGammaMatrix::g1() -
EvtGammaMatrix::g1() * EvtGammaMatrix::g0() );
static EvtGammaMatrix mat02 =
EvtGammaMatrix::g0() * ( EvtGammaMatrix::g0() * EvtGammaMatrix::g2() -
EvtGammaMatrix::g2() * EvtGammaMatrix::g0() );
static EvtGammaMatrix mat03 =
EvtGammaMatrix::g0() * ( EvtGammaMatrix::g0() * EvtGammaMatrix::g3() -
EvtGammaMatrix::g3() * EvtGammaMatrix::g0() );
static EvtGammaMatrix mat12 =
EvtGammaMatrix::g0() * ( EvtGammaMatrix::g1() * EvtGammaMatrix::g2() -
EvtGammaMatrix::g2() * EvtGammaMatrix::g1() );
static EvtGammaMatrix mat13 =
EvtGammaMatrix::g0() * ( EvtGammaMatrix::g1() * EvtGammaMatrix::g3() -
EvtGammaMatrix::g3() * EvtGammaMatrix::g1() );
static EvtGammaMatrix mat23 =
EvtGammaMatrix::g0() * ( EvtGammaMatrix::g2() * EvtGammaMatrix::g3() -
EvtGammaMatrix::g3() * EvtGammaMatrix::g2() );
temp.set( 0, 1, i2 * ( d * ( mat01 * dp ) ) );
temp.set( 1, 0, -temp.get( 0, 1 ) );
temp.set( 0, 2, i2 * ( d * ( mat02 * dp ) ) );
temp.set( 2, 0, -temp.get( 0, 2 ) );
temp.set( 0, 3, i2 * ( d * ( mat03 * dp ) ) );
temp.set( 3, 0, -temp.get( 0, 3 ) );
temp.set( 1, 2, i2 * ( d * ( mat12 * dp ) ) );
temp.set( 2, 1, -temp.get( 1, 2 ) );
temp.set( 1, 3, i2 * ( d * ( mat13 * dp ) ) );
temp.set( 3, 1, -temp.get( 1, 3 ) );
temp.set( 2, 3, i2 * ( d * ( mat23 * dp ) ) );
temp.set( 3, 2, -temp.get( 2, 3 ) );
return temp;
}
EvtDiracSpinor operator*( const EvtComplex& c, const EvtDiracSpinor& d )
{
EvtDiracSpinor result;
result.spinor[0] = c * d.spinor[0];
result.spinor[1] = c * d.spinor[1];
result.spinor[2] = c * d.spinor[2];
result.spinor[3] = c * d.spinor[3];
return result;
}
EvtDiracSpinor EvtDiracSpinor::adjoint() const
{
EvtDiracSpinor d = this->conj(); // first conjugate, then multiply with gamma0
EvtGammaMatrix g0 = EvtGammaMatrix::g0();
EvtDiracSpinor result; // automatically initialized to 0
for ( int i = 0; i < 4; ++i )
for ( int j = 0; j < 4; ++j )
result.spinor[i] += d.spinor[j] * g0._gamma[i][j];
return result;
}
EvtComplex operator*( const EvtDiracSpinor& d, const EvtDiracSpinor& dp )
{
int i;
EvtComplex temp;
temp = EvtComplex( 0.0, 0.0 );
for ( i = 0; i < 4; i++ ) {
temp += conj( d.get_spinor( i ) ) * dp.get_spinor( i );
}
return temp;
}
diff --git a/src/EvtGenBase/EvtEvalHelAmp.cpp b/src/EvtGenBase/EvtEvalHelAmp.cpp
index 4597331..dbd4044 100644
--- a/src/EvtGenBase/EvtEvalHelAmp.cpp
+++ b/src/EvtGenBase/EvtEvalHelAmp.cpp
@@ -1,467 +1,444 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtHelAmp.cc
-//
-// Description: Decay model for implementation of generic 2 body
-// decay specified by the partial wave amplitudes
-//
-//
-// Modification history:
-//
-// fkw February 2, 2001 changes to satisfy KCC
-// RYD September 7, 2000 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtEvalHelAmp.hh"
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtdFunction.hh"
#include <stdlib.h>
using std::endl;
EvtEvalHelAmp::~EvtEvalHelAmp()
{
//deallocate memory
delete[] _lambdaA2;
delete[] _lambdaB2;
delete[] _lambdaC2;
int ia, ib, ic;
for ( ib = 0; ib < _nB; ib++ ) {
delete[] _HBC[ib];
}
delete[] _HBC;
for ( ia = 0; ia < _nA; ia++ ) {
delete[] _RA[ia];
}
delete[] _RA;
for ( ib = 0; ib < _nB; ib++ ) {
delete[] _RB[ib];
}
delete[] _RB;
for ( ic = 0; ic < _nC; ic++ ) {
delete[] _RC[ic];
}
delete[] _RC;
for ( ia = 0; ia < _nA; ia++ ) {
for ( ib = 0; ib < _nB; ib++ ) {
delete[] _amp[ia][ib];
delete[] _amp1[ia][ib];
delete[] _amp3[ia][ib];
}
delete[] _amp[ia];
delete[] _amp1[ia];
delete[] _amp3[ia];
}
delete[] _amp;
delete[] _amp1;
delete[] _amp3;
}
EvtEvalHelAmp::EvtEvalHelAmp( EvtId idA, EvtId idB, EvtId idC,
EvtComplexPtrPtr HBC )
{
EvtSpinType::spintype typeA = EvtPDL::getSpinType( idA );
EvtSpinType::spintype typeB = EvtPDL::getSpinType( idB );
EvtSpinType::spintype typeC = EvtPDL::getSpinType( idC );
//find out how many states each particle have
_nA = EvtSpinType::getSpinStates( typeA );
_nB = EvtSpinType::getSpinStates( typeB );
_nC = EvtSpinType::getSpinStates( typeC );
//find out what 2 times the spin is
_JA2 = EvtSpinType::getSpin2( typeA );
_JB2 = EvtSpinType::getSpin2( typeB );
_JC2 = EvtSpinType::getSpin2( typeC );
//allocate memory
_lambdaA2 = new int[_nA];
_lambdaB2 = new int[_nB];
_lambdaC2 = new int[_nC];
_HBC = new EvtComplexPtr[_nB];
int ia, ib, ic;
for ( ib = 0; ib < _nB; ib++ ) {
_HBC[ib] = new EvtComplex[_nC];
}
_RA = new EvtComplexPtr[_nA];
for ( ia = 0; ia < _nA; ia++ ) {
_RA[ia] = new EvtComplex[_nA];
}
_RB = new EvtComplexPtr[_nB];
for ( ib = 0; ib < _nB; ib++ ) {
_RB[ib] = new EvtComplex[_nB];
}
_RC = new EvtComplexPtr[_nC];
for ( ic = 0; ic < _nC; ic++ ) {
_RC[ic] = new EvtComplex[_nC];
}
_amp = new EvtComplexPtrPtr[_nA];
_amp1 = new EvtComplexPtrPtr[_nA];
_amp3 = new EvtComplexPtrPtr[_nA];
for ( ia = 0; ia < _nA; ia++ ) {
_amp[ia] = new EvtComplexPtr[_nB];
_amp1[ia] = new EvtComplexPtr[_nB];
_amp3[ia] = new EvtComplexPtr[_nB];
for ( ib = 0; ib < _nB; ib++ ) {
_amp[ia][ib] = new EvtComplex[_nC];
_amp1[ia][ib] = new EvtComplex[_nC];
_amp3[ia][ib] = new EvtComplex[_nC];
}
}
//find the allowed helicities (actually 2*times the helicity!)
fillHelicity( _lambdaA2, _nA, _JA2, idA );
fillHelicity( _lambdaB2, _nB, _JB2, idB );
fillHelicity( _lambdaC2, _nC, _JC2, idC );
for ( ib = 0; ib < _nB; ib++ ) {
for ( ic = 0; ic < _nC; ic++ ) {
_HBC[ib][ic] = HBC[ib][ic];
}
}
}
double EvtEvalHelAmp::probMax()
{
double c = 1.0 / sqrt( 4 * EvtConst::pi / ( _JA2 + 1 ) );
int ia, ib, ic;
double theta;
int itheta;
double maxprob = 0.0;
for ( itheta = -10; itheta <= 10; itheta++ ) {
theta = acos( 0.099999 * itheta );
for ( ia = 0; ia < _nA; ia++ ) {
double prob = 0.0;
for ( ib = 0; ib < _nB; ib++ ) {
for ( ic = 0; ic < _nC; ic++ ) {
_amp[ia][ib][ic] = 0.0;
if ( abs( _lambdaB2[ib] - _lambdaC2[ic] ) <= _JA2 ) {
_amp[ia][ib][ic] = c * _HBC[ib][ic] *
EvtdFunction::d( _JA2, _lambdaA2[ia],
_lambdaB2[ib] -
_lambdaC2[ic],
theta );
prob += real( _amp[ia][ib][ic] *
conj( _amp[ia][ib][ic] ) );
}
}
}
prob *= sqrt( 1.0 * _nA );
if ( prob > maxprob )
maxprob = prob;
}
}
return maxprob;
}
void EvtEvalHelAmp::evalAmp( EvtParticle* p, EvtAmp& amp )
{
//find theta and phi of the first daughter
EvtVector4R pB = p->getDaug( 0 )->getP4();
double theta = acos( pB.get( 3 ) / pB.d3mag() );
double phi = atan2( pB.get( 2 ), pB.get( 1 ) );
double c = sqrt( ( _JA2 + 1 ) / ( 4 * EvtConst::pi ) );
int ia, ib, ic;
double prob1 = 0.0;
for ( ia = 0; ia < _nA; ia++ ) {
for ( ib = 0; ib < _nB; ib++ ) {
for ( ic = 0; ic < _nC; ic++ ) {
_amp[ia][ib][ic] = 0.0;
if ( abs( _lambdaB2[ib] - _lambdaC2[ic] ) <= _JA2 ) {
double dfun = EvtdFunction::d( _JA2, _lambdaA2[ia],
_lambdaB2[ib] - _lambdaC2[ic],
theta );
_amp[ia][ib][ic] =
c * _HBC[ib][ic] *
exp( EvtComplex( 0.0, phi * 0.5 *
( _lambdaA2[ia] - _lambdaB2[ib] +
_lambdaC2[ic] ) ) ) *
dfun;
}
prob1 += real( _amp[ia][ib][ic] * conj( _amp[ia][ib][ic] ) );
}
}
}
setUpRotationMatrices( p, theta, phi );
applyRotationMatrices();
double prob2 = 0.0;
for ( ia = 0; ia < _nA; ia++ ) {
for ( ib = 0; ib < _nB; ib++ ) {
for ( ic = 0; ic < _nC; ic++ ) {
prob2 += real( _amp[ia][ib][ic] * conj( _amp[ia][ib][ic] ) );
if ( _nA == 1 ) {
if ( _nB == 1 ) {
if ( _nC == 1 ) {
amp.vertex( _amp[ia][ib][ic] );
} else {
amp.vertex( ic, _amp[ia][ib][ic] );
}
} else {
if ( _nC == 1 ) {
amp.vertex( ib, _amp[ia][ib][ic] );
} else {
amp.vertex( ib, ic, _amp[ia][ib][ic] );
}
}
} else {
if ( _nB == 1 ) {
if ( _nC == 1 ) {
amp.vertex( ia, _amp[ia][ib][ic] );
} else {
amp.vertex( ia, ic, _amp[ia][ib][ic] );
}
} else {
if ( _nC == 1 ) {
amp.vertex( ia, ib, _amp[ia][ib][ic] );
} else {
amp.vertex( ia, ib, ic, _amp[ia][ib][ic] );
}
}
}
}
}
}
if ( fabs( prob1 - prob2 ) > 0.000001 * prob1 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "prob1,prob2:" << prob1 << " " << prob2 << endl;
::abort();
}
return;
}
void EvtEvalHelAmp::fillHelicity( int* lambda2, int n, int J2, EvtId id )
{
int i;
//photon is special case!
if ( n == 2 && J2 == 2 ) {
lambda2[0] = 2;
lambda2[1] = -2;
return;
}
//and so is the neutrino!
if ( n == 1 && J2 == 1 ) {
if ( EvtPDL::getStdHep( id ) > 0 ) {
//particle i.e. lefthanded
lambda2[0] = -1;
} else {
//anti particle i.e. righthanded
lambda2[0] = 1;
}
return;
}
assert( n == J2 + 1 );
for ( i = 0; i < n; i++ ) {
lambda2[i] = n - i * 2 - 1;
}
return;
}
void EvtEvalHelAmp::setUpRotationMatrices( EvtParticle* p, double theta,
double phi )
{
switch ( _JA2 ) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
{
EvtSpinDensity R = p->rotateToHelicityBasis();
int i, j, n;
n = R.getDim();
assert( n == _nA );
for ( i = 0; i < n; i++ ) {
for ( j = 0; j < n; j++ ) {
_RA[i][j] = R.get( i, j );
}
}
}
break;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Spin2(_JA2)=" << _JA2 << " not supported!" << endl;
::abort();
}
switch ( _JB2 ) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
{
int i, j, n;
EvtSpinDensity R =
p->getDaug( 0 )->rotateToHelicityBasis( phi, theta, -phi );
n = R.getDim();
assert( n == _nB );
for ( i = 0; i < n; i++ ) {
for ( j = 0; j < n; j++ ) {
_RB[i][j] = conj( R.get( i, j ) );
}
}
}
break;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Spin2(_JB2)=" << _JB2 << " not supported!" << endl;
::abort();
}
switch ( _JC2 ) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
{
int i, j, n;
EvtSpinDensity R = p->getDaug( 1 )->rotateToHelicityBasis(
phi, EvtConst::pi + theta, phi - EvtConst::pi );
n = R.getDim();
assert( n == _nC );
for ( i = 0; i < n; i++ ) {
for ( j = 0; j < n; j++ ) {
_RC[i][j] = conj( R.get( i, j ) );
}
}
}
break;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Spin2(_JC2)=" << _JC2 << " not supported!" << endl;
::abort();
}
}
void EvtEvalHelAmp::applyRotationMatrices()
{
int ia, ib, ic, i;
EvtComplex temp;
for ( ia = 0; ia < _nA; ia++ ) {
for ( ib = 0; ib < _nB; ib++ ) {
for ( ic = 0; ic < _nC; ic++ ) {
temp = 0;
for ( i = 0; i < _nC; i++ ) {
temp += _RC[i][ic] * _amp[ia][ib][i];
}
_amp1[ia][ib][ic] = temp;
}
}
}
for ( ia = 0; ia < _nA; ia++ ) {
for ( ic = 0; ic < _nC; ic++ ) {
for ( ib = 0; ib < _nB; ib++ ) {
temp = 0;
for ( i = 0; i < _nB; i++ ) {
temp += _RB[i][ib] * _amp1[ia][i][ic];
}
_amp3[ia][ib][ic] = temp;
}
}
}
for ( ib = 0; ib < _nB; ib++ ) {
for ( ic = 0; ic < _nC; ic++ ) {
for ( ia = 0; ia < _nA; ia++ ) {
temp = 0;
for ( i = 0; i < _nA; i++ ) {
temp += _RA[i][ia] * _amp3[i][ib][ic];
}
_amp[ia][ib][ic] = temp;
}
}
}
}
diff --git a/src/EvtGenBase/EvtExtGeneratorCommandsTable.cpp b/src/EvtGenBase/EvtExtGeneratorCommandsTable.cpp
index 332fe5e..64c61f0 100644
--- a/src/EvtGenBase/EvtExtGeneratorCommandsTable.cpp
+++ b/src/EvtGenBase/EvtExtGeneratorCommandsTable.cpp
@@ -1,41 +1,22 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2012 University of Warwick, UK
-//
-// Module: EvtExtGeneratorCommandsTable
-//
-// Description: Table of commands to pass to external generators
-//
-// Modification history:
-//
-// Daniel Craik March 2012 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenBase/EvtExtGeneratorCommandsTable.hh"
EvtExtGeneratorCommandsTable::EvtExtGeneratorCommandsTable()
{
_commandMap.clear();
}
EvtExtGeneratorCommandsTable::~EvtExtGeneratorCommandsTable()
{
_commandMap.clear();
}
EvtExtGeneratorCommandsTable* EvtExtGeneratorCommandsTable::getInstance()
{
static EvtExtGeneratorCommandsTable* theCommandMap = 0;
if ( theCommandMap == 0 ) {
theCommandMap = new EvtExtGeneratorCommandsTable();
}
return theCommandMap;
}
diff --git a/src/EvtGenBase/EvtFlatLineShape.cpp b/src/EvtGenBase/EvtFlatLineShape.cpp
index cfc77f6..788a64b 100644
--- a/src/EvtGenBase/EvtFlatLineShape.cpp
+++ b/src/EvtGenBase/EvtFlatLineShape.cpp
@@ -1,100 +1,80 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtLineShape.cc
-//
-// Description: Store particle properties for one particle.
-//
-// Modification history:
-//
-// Lange March 10, 2001 Module created
-// Dvoretskii June 03, 2002 Reimplemented rollMass()
-//
-//------------------------------------------------------------------------
#include "EvtGenBase/EvtFlatLineShape.hh"
#include "EvtGenBase/EvtBlattWeisskopf.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtPropBreitWigner.hh"
#include "EvtGenBase/EvtPropBreitWignerRel.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtTwoBodyVertex.hh"
EvtFlatLineShape::EvtFlatLineShape( double mass, double width, double maxRange,
EvtSpinType::spintype sp )
{
_mass = mass;
_width = width;
_spin = sp;
_maxRange = maxRange;
double maxdelta = width;
_massMax = mass + maxdelta;
_massMin = mass - maxdelta;
if ( _massMin < 0. )
_massMin = 0.;
}
EvtFlatLineShape::EvtFlatLineShape( const EvtFlatLineShape& x ) :
EvtAbsLineShape( x )
{
_mass = x._mass;
_width = x._width;
_spin = x._spin;
_massMax = x._massMax;
_massMin = x._massMin;
_maxRange = x._maxRange;
}
EvtFlatLineShape& EvtFlatLineShape::operator=( const EvtFlatLineShape& x )
{
_mass = x._mass;
_massMax = x._massMax;
_massMin = x._massMin;
_width = x._width;
_maxRange = x._maxRange;
_spin = x._spin;
return *this;
}
EvtAbsLineShape* EvtFlatLineShape::clone()
{
return new EvtFlatLineShape( *this );
}
double EvtFlatLineShape::getMassProb( double mass, double massPar, int nDaug,
double* massDau )
{
double dTotMass = 0.;
int i;
for ( i = 0; i < nDaug; i++ ) {
dTotMass += massDau[i];
}
if ( ( mass < dTotMass ) )
return 0.;
if ( massPar > 0.0000000001 ) {
if ( mass > massPar )
return 0.;
}
return 1.;
}
double EvtFlatLineShape::getRandMass( EvtId*, int, EvtId*, EvtId*, double,
double* )
{
return EvtRandom::Flat( _massMin, _massMax );
}
diff --git a/src/EvtGenBase/EvtFlatte.cpp b/src/EvtGenBase/EvtFlatte.cpp
index c872d0c..9c40c92 100644
--- a/src/EvtGenBase/EvtFlatte.cpp
+++ b/src/EvtGenBase/EvtFlatte.cpp
@@ -1,106 +1,86 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtFlatte.cc
-//
-// Description: resonance-defining class
-//
-// Modification history:
-//
-// ponyisi 18 Feb 2008 created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtFlatte.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtKine.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <math.h>
//operator
EvtFlatte& EvtFlatte::operator=( const EvtFlatte& n )
{
if ( &n == this )
return *this;
_p4_p = n._p4_p;
_p4_d1 = n._p4_d1;
_p4_d2 = n._p4_d2;
_ampl = n._ampl;
_theta = n._theta;
_mass = n._mass;
_params = n._params;
// _m1a = n._m1a;
// _m1b = n._m1b;
// _g1 = n._g1;
// _m2a = n._m2a;
// _m2b = n._m2b;
// _g2 = n._g2;
return *this;
}
//constructor
EvtFlatte::EvtFlatte( const EvtVector4R& p4_p, const EvtVector4R& p4_d1,
const EvtVector4R& p4_d2, double ampl, double theta,
double mass, vector<EvtFlatteParam>& params
// double m1a, double m1b, double g1,
// double m2a, double m2b, double g2
) :
_p4_p( p4_p ),
_p4_d1( p4_d1 ),
_p4_d2( p4_d2 ),
_ampl( ampl ),
_theta( theta ),
_mass( mass ),
_params( params )
// _m1a(m1a), _m1b(m1b), _g1(g1),
// _m2a(m2a), _m2b(m2b), _g2(g2)
{
}
//amplitude function
EvtComplex EvtFlatte::resAmpl()
{
double pi180inv = 1.0 / EvtConst::radToDegrees;
// EvtComplex ampl(cos(_theta*pi180inv), sin(_theta*pi180inv));
// ampl *= _ampl;
// SCALARS ONLY
double mR = ( _p4_d1 + _p4_d2 ).mass();
EvtComplex w;
for ( vector<EvtFlatteParam>::const_iterator param = _params.begin();
param != _params.end(); ++param ) {
double m1 = ( *param ).m1();
double m2 = ( *param ).m2();
double g = ( *param ).g();
w += ( g * g *
sqrtCplx( ( 1 - ( ( m1 - m2 ) * ( m1 - m2 ) ) / ( mR * mR ) ) *
( 1 - ( ( m1 + m2 ) * ( m1 + m2 ) ) / ( mR * mR ) ) ) );
// cout << m1 << " " << mR << " " << w << endl;
}
EvtComplex denom = _mass * _mass - mR * mR - EvtComplex( 0, 1 ) * w;
EvtComplex ampl = _ampl *
EvtComplex( cos( _theta * pi180inv ),
sin( _theta * pi180inv ) ) /
denom;
// cout << abs(1/denom) << endl;
return ampl;
}
diff --git a/src/EvtGenBase/EvtGammaMatrix.cpp b/src/EvtGenBase/EvtGammaMatrix.cpp
index 3dcd160..a185cd6 100644
--- a/src/EvtGenBase/EvtGammaMatrix.cpp
+++ b/src/EvtGenBase/EvtGammaMatrix.cpp
@@ -1,631 +1,611 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGammaMatrix.cc
-//
-// Description: Make gamma matrices availible for the calc. of amplitudes, etc.
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtGammaMatrix.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
using std::endl;
using std::ostream;
EvtGammaMatrix::EvtGammaMatrix()
{
int i, j;
static EvtComplex zero( 0.0, 0.0 );
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
_gamma[i][j] = zero;
}
}
}
EvtGammaMatrix operator*( const EvtGammaMatrix& g, const EvtComplex& c )
{
return c * g;
}
EvtGammaMatrix operator*( const EvtComplex& c, const EvtGammaMatrix& g )
{
int i, j;
EvtGammaMatrix temp;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
temp._gamma[i][j] = g._gamma[i][j] * c;
}
}
return temp;
}
ostream& operator<<( ostream& s, const EvtGammaMatrix& g )
{
s << "[" << g._gamma[0][0] << "," << g._gamma[0][1] << "," << g._gamma[0][2]
<< "," << g._gamma[0][3] << "]" << endl;
s << "[" << g._gamma[1][0] << "," << g._gamma[1][1] << "," << g._gamma[1][2]
<< "," << g._gamma[1][3] << "]" << endl;
s << "[" << g._gamma[2][0] << "," << g._gamma[2][1] << "," << g._gamma[2][2]
<< "," << g._gamma[2][3] << "]" << endl;
s << "[" << g._gamma[3][0] << "," << g._gamma[3][1] << "," << g._gamma[3][2]
<< "," << g._gamma[3][3] << "]" << endl;
return s;
}
EvtGammaMatrix::EvtGammaMatrix( const EvtGammaMatrix& gm )
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
_gamma[i][j] = gm._gamma[i][j];
}
}
}
EvtGammaMatrix& EvtGammaMatrix::operator=( const EvtGammaMatrix& gm )
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
_gamma[i][j] = gm._gamma[i][j];
}
}
return *this;
}
void EvtGammaMatrix::init()
{
int i, j;
static EvtComplex zero( 0.0, 0.0 );
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
_gamma[i][j] = zero;
}
}
}
const EvtGammaMatrix& EvtGammaMatrix::va0()
{
static EvtGammaMatrix g;
static int first = 1;
if ( first ) {
first = 0;
g._gamma[0][0] = EvtComplex( 1.0, 0.0 );
g._gamma[0][1] = EvtComplex( 0.0, 0.0 );
g._gamma[0][2] = EvtComplex( -1.0, 0.0 );
g._gamma[0][3] = EvtComplex( 0.0, 0.0 );
g._gamma[1][0] = EvtComplex( 0.0, 0.0 );
g._gamma[1][1] = EvtComplex( 1.0, 0.0 );
g._gamma[1][2] = EvtComplex( 0.0, 0.0 );
g._gamma[1][3] = EvtComplex( -1.0, 0.0 );
g._gamma[2][0] = EvtComplex( -1.0, 0.0 );
g._gamma[2][1] = EvtComplex( 0.0, 0.0 );
g._gamma[2][2] = EvtComplex( 1.0, 0.0 );
g._gamma[2][3] = EvtComplex( 0.0, 0.0 );
g._gamma[3][0] = EvtComplex( 0.0, 0.0 );
g._gamma[3][1] = EvtComplex( -1.0, 0.0 );
g._gamma[3][2] = EvtComplex( 0.0, 0.0 );
g._gamma[3][3] = EvtComplex( 1.0, 0.0 );
}
return g;
}
const EvtGammaMatrix& EvtGammaMatrix::va1()
{
static EvtGammaMatrix g;
static int first = 1;
if ( first ) {
first = 0;
g._gamma[0][0] = EvtComplex( 0.0, 0.0 );
g._gamma[0][1] = EvtComplex( -1.0, 0.0 );
g._gamma[0][2] = EvtComplex( 0.0, 0.0 );
g._gamma[0][3] = EvtComplex( 1.0, 0.0 );
g._gamma[1][0] = EvtComplex( -1.0, 0.0 );
g._gamma[1][1] = EvtComplex( 0.0, 0.0 );
g._gamma[1][2] = EvtComplex( 1.0, 0.0 );
g._gamma[1][3] = EvtComplex( 0.0, 0.0 );
g._gamma[2][0] = EvtComplex( 0.0, 0.0 );
g._gamma[2][1] = EvtComplex( 1.0, 0.0 );
g._gamma[2][2] = EvtComplex( 0.0, 0.0 );
g._gamma[2][3] = EvtComplex( -1.0, 0.0 );
g._gamma[3][0] = EvtComplex( 1.0, 0.0 );
g._gamma[3][1] = EvtComplex( 0.0, 0.0 );
g._gamma[3][2] = EvtComplex( -1.0, 0.0 );
g._gamma[3][3] = EvtComplex( 0.0, 0.0 );
}
return g;
}
const EvtGammaMatrix& EvtGammaMatrix::va2()
{
static EvtGammaMatrix g;
static int first = 1;
if ( first ) {
first = 0;
g._gamma[0][0] = EvtComplex( 0.0, 0.0 );
g._gamma[0][1] = EvtComplex( 0.0, 1.0 );
g._gamma[0][2] = EvtComplex( 0.0, 0.0 );
g._gamma[0][3] = EvtComplex( 0.0, -1.0 );
g._gamma[1][0] = EvtComplex( 0.0, -1.0 );
g._gamma[1][1] = EvtComplex( 0.0, 0.0 );
g._gamma[1][2] = EvtComplex( 0.0, 1.0 );
g._gamma[1][3] = EvtComplex( 0.0, 0.0 );
g._gamma[2][0] = EvtComplex( 0.0, 0.0 );
g._gamma[2][1] = EvtComplex( 0.0, -1.0 );
g._gamma[2][2] = EvtComplex( 0.0, 0.0 );
g._gamma[2][3] = EvtComplex( 0.0, 1.0 );
g._gamma[3][0] = EvtComplex( 0.0, 1.0 );
g._gamma[3][1] = EvtComplex( 0.0, 0.0 );
g._gamma[3][2] = EvtComplex( 0.0, -1.0 );
g._gamma[3][3] = EvtComplex( 0.0, 0.0 );
}
return g;
}
const EvtGammaMatrix& EvtGammaMatrix::va3()
{
static EvtGammaMatrix g;
static int first = 1;
if ( first ) {
first = 0;
g._gamma[0][0] = EvtComplex( -1.0, 0.0 );
g._gamma[0][1] = EvtComplex( 0.0, 0.0 );
g._gamma[0][2] = EvtComplex( 1.0, 0.0 );
g._gamma[0][3] = EvtComplex( 0.0, 0.0 );
g._gamma[1][0] = EvtComplex( 0.0, 0.0 );
g._gamma[1][1] = EvtComplex( 1.0, 0.0 );
g._gamma[1][2] = EvtComplex( 0.0, 0.0 );
g._gamma[1][3] = EvtComplex( -1.0, 0.0 );
g._gamma[2][0] = EvtComplex( 1.0, 0.0 );
g._gamma[2][1] = EvtComplex( 0.0, 0.0 );
g._gamma[2][2] = EvtComplex( -1.0, 0.0 );
g._gamma[2][3] = EvtComplex( 0.0, 0.0 );
g._gamma[3][0] = EvtComplex( 0.0, 0.0 );
g._gamma[3][1] = EvtComplex( -1.0, 0.0 );
g._gamma[3][2] = EvtComplex( 0.0, 0.0 );
g._gamma[3][3] = EvtComplex( 1.0, 0.0 );
}
return g;
}
const EvtGammaMatrix& EvtGammaMatrix::g0()
{
static EvtGammaMatrix g;
static int first = 1;
if ( first ) {
first = 0;
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
g._gamma[i][j] = EvtComplex( 0.0, 0.0 );
}
}
g._gamma[0][0] = EvtComplex( 1.0, 0.0 );
g._gamma[1][1] = EvtComplex( 1.0, 0.0 );
g._gamma[2][2] = EvtComplex( -1.0, 0.0 );
g._gamma[3][3] = EvtComplex( -1.0, 0.0 );
}
return g;
}
const EvtGammaMatrix& EvtGammaMatrix::g1()
{
static EvtGammaMatrix g;
static int first = 1;
if ( first ) {
first = 0;
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
g._gamma[i][j] = EvtComplex( 0.0, 0.0 );
}
}
g._gamma[0][3] = EvtComplex( 1.0, 0.0 );
g._gamma[1][2] = EvtComplex( 1.0, 0.0 );
g._gamma[2][1] = EvtComplex( -1.0, 0.0 );
g._gamma[3][0] = EvtComplex( -1.0, 0.0 );
}
return g;
}
const EvtGammaMatrix& EvtGammaMatrix::g2()
{
static EvtGammaMatrix g;
static int first = 1;
if ( first ) {
first = 0;
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
g._gamma[i][j] = EvtComplex( 0.0, 0.0 );
}
}
g._gamma[0][3] = EvtComplex( 0.0, -1.0 );
g._gamma[1][2] = EvtComplex( 0.0, 1.0 );
g._gamma[2][1] = EvtComplex( 0.0, 1.0 );
g._gamma[3][0] = EvtComplex( 0.0, -1.0 );
}
return g;
}
const EvtGammaMatrix& EvtGammaMatrix::g3()
{
static EvtGammaMatrix g;
static int first = 1;
if ( first ) {
first = 0;
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
g._gamma[i][j] = EvtComplex( 0.0, 0.0 );
}
}
g._gamma[0][2] = EvtComplex( 1.0, 0.0 );
g._gamma[1][3] = EvtComplex( -1.0, 0.0 );
g._gamma[2][0] = EvtComplex( -1.0, 0.0 );
g._gamma[3][1] = EvtComplex( 1.0, 0.0 );
}
return g;
}
const EvtGammaMatrix& EvtGammaMatrix::g5()
{
static EvtGammaMatrix g;
static int first = 1;
if ( first ) {
first = 0;
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
g._gamma[i][j] = EvtComplex( 0.0, 0.0 );
}
}
g._gamma[0][2] = EvtComplex( 1.0, 0.0 );
g._gamma[1][3] = EvtComplex( 1.0, 0.0 );
g._gamma[2][0] = EvtComplex( 1.0, 0.0 );
g._gamma[3][1] = EvtComplex( 1.0, 0.0 );
}
return g;
}
const EvtGammaMatrix& EvtGammaMatrix::g( int index )
{
switch ( index ) {
case 0:
return g0();
case 1:
return g1();
case 2:
return g2();
case 3:
return g3();
case 5:
return g5();
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Invalid index for four vector: " << index << endl;
exit( -2 );
}
}
const EvtGammaMatrix& EvtGammaMatrix::v0()
{
static EvtGammaMatrix g;
static int first = 1;
if ( first ) {
first = 0;
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
g._gamma[i][j] = EvtComplex( 0.0, 0.0 );
}
}
g._gamma[0][0] = EvtComplex( 1.0, 0.0 );
g._gamma[1][1] = EvtComplex( 1.0, 0.0 );
g._gamma[2][2] = EvtComplex( 1.0, 0.0 );
g._gamma[3][3] = EvtComplex( 1.0, 0.0 );
}
return g;
}
const EvtGammaMatrix& EvtGammaMatrix::v1()
{
static EvtGammaMatrix g;
static int first = 1;
if ( first ) {
first = 0;
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
g._gamma[i][j] = EvtComplex( 0.0, 0.0 );
}
}
g._gamma[0][3] = EvtComplex( 1.0, 0.0 );
g._gamma[1][2] = EvtComplex( 1.0, 0.0 );
g._gamma[2][1] = EvtComplex( 1.0, 0.0 );
g._gamma[3][0] = EvtComplex( 1.0, 0.0 );
}
return g;
}
const EvtGammaMatrix& EvtGammaMatrix::v2()
{
static EvtGammaMatrix g;
static int first = 1;
if ( first ) {
first = 0;
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
g._gamma[i][j] = EvtComplex( 0.0, 0.0 );
}
}
g._gamma[0][3] = EvtComplex( 0.0, -1.0 );
g._gamma[1][2] = EvtComplex( 0.0, 1.0 );
g._gamma[2][1] = EvtComplex( 0.0, -1.0 );
g._gamma[3][0] = EvtComplex( 0.0, 1.0 );
}
return g;
}
const EvtGammaMatrix& EvtGammaMatrix::v3()
{
static EvtGammaMatrix g;
static int first = 1;
if ( first ) {
first = 0;
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
g._gamma[i][j] = EvtComplex( 0.0, 0.0 );
}
}
g._gamma[0][2] = EvtComplex( 1.0, 0.0 );
g._gamma[1][3] = EvtComplex( -1.0, 0.0 );
g._gamma[2][0] = EvtComplex( 1.0, 0.0 );
g._gamma[3][1] = EvtComplex( -1.0, 0.0 );
}
return g;
}
const EvtGammaMatrix& EvtGammaMatrix::id()
{
static EvtGammaMatrix g;
static int first = 1;
if ( first ) {
first = 0;
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
g._gamma[i][j] = EvtComplex( 0.0, 0.0 );
}
}
g._gamma[0][0] = EvtComplex( 1.0, 0.0 );
g._gamma[1][1] = EvtComplex( 1.0, 0.0 );
g._gamma[2][2] = EvtComplex( 1.0, 0.0 );
g._gamma[3][3] = EvtComplex( 1.0, 0.0 );
}
return g;
}
EvtGammaMatrix& EvtGammaMatrix::operator+=( const EvtGammaMatrix& g )
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
_gamma[i][j] += g._gamma[i][j];
}
}
return *this;
}
EvtGammaMatrix& EvtGammaMatrix::operator-=( const EvtGammaMatrix& g )
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
_gamma[i][j] -= g._gamma[i][j];
}
}
return *this;
}
EvtGammaMatrix& EvtGammaMatrix::operator*=( const EvtGammaMatrix& g )
{
int i, j, k;
EvtGammaMatrix temp;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
temp._gamma[i][j] = EvtComplex( 0.0, 0.0 );
for ( k = 0; k < 4; k++ ) {
temp._gamma[i][j] += _gamma[i][k] * g._gamma[k][j];
}
}
}
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
_gamma[i][j] = temp._gamma[i][j];
}
}
return *this;
}
EvtDiracSpinor operator*( const EvtGammaMatrix& g, const EvtDiracSpinor& d )
{
int i, j;
EvtDiracSpinor temp;
for ( i = 0; i < 4; i++ ) {
temp.set_spinor( i, EvtComplex( 0.0, 0.0 ) );
for ( j = 0; j < 4; j++ ) {
temp.set_spinor( i, temp.get_spinor( i ) +
g._gamma[i][j] * d.get_spinor( j ) );
}
}
return temp;
}
// upper index
const EvtGammaMatrix& EvtGammaMatrix::sigmaUpper( unsigned int mu,
unsigned int nu )
{
static EvtGammaMatrix sigma[4][4];
static bool hasBeenCalled = false;
if ( !hasBeenCalled ) {
EvtComplex I( 0, 1 );
for ( int i = 0; i < 4; ++i )
sigma[i][i].init(); // set to 0
EvtGammaMatrix s01 = I / 2 * ( g0() * g1() - g1() * g0() );
EvtGammaMatrix s02 = I / 2 * ( g0() * g2() - g2() * g0() );
EvtGammaMatrix s03 = I / 2 * ( g0() * g3() - g3() * g0() );
EvtGammaMatrix s12 = I / 2 * ( g1() * g2() - g2() * g1() );
EvtGammaMatrix s13 = I / 2 * ( g1() * g3() - g3() * g1() );
EvtGammaMatrix s23 = I / 2 * ( g2() * g3() - g3() * g2() );
sigma[0][1] = s01;
sigma[1][0] = -1 * s01;
sigma[0][2] = s02;
sigma[2][0] = -1 * s02;
sigma[0][3] = s03;
sigma[3][0] = -1 * s03;
sigma[1][2] = s12;
sigma[2][1] = -1 * s12;
sigma[1][3] = s13;
sigma[3][1] = -1 * s13;
sigma[2][3] = s23;
sigma[3][2] = -1 * s23;
}
hasBeenCalled = true;
if ( mu > 3 || nu > 3 ) {
EvtGenReport( EVTGEN_ERROR, "EvtSigmaTensor" )
<< "Expected index between 0 and 3, but found " << nu << "!" << endl;
assert( 0 );
}
return sigma[mu][nu];
}
const EvtGammaMatrix& EvtGammaMatrix::sigmaLower( unsigned int mu,
unsigned int nu )
{
const EvtComplex I( 0, 1 );
EvtGammaMatrix a, b;
static EvtGammaMatrix sigma[4][4];
static bool hasBeenCalled = false;
static const EvtTensor4C eta = EvtTensor4C::g();
if ( !hasBeenCalled ) // has to be initialized only at the first call
{
// lower index
for ( int i = 0; i < 4; ++i ) {
a = eta.get( i, 0 ) * g0() + eta.get( i, 1 ) * g1() +
eta.get( i, 2 ) * g2() + eta.get( i, 3 ) * g3();
for ( int j = 0; j < 4; ++j ) {
b = eta.get( j, 0 ) * g0() + eta.get( j, 1 ) * g1() +
eta.get( j, 2 ) * g2() + eta.get( j, 3 ) * g3();
sigma[i][j] = I / 2 * ( a * b - b * a );
}
}
}
return sigma[mu][nu];
}
EvtGammaMatrix EvtGenFunctions::slash( const EvtVector4C& p )
{
return EvtGammaMatrix::g0() * p.get( 0 ) + EvtGammaMatrix::g1() * p.get( 1 ) +
EvtGammaMatrix::g2() * p.get( 2 ) + EvtGammaMatrix::g3() * p.get( 3 );
}
EvtGammaMatrix EvtGenFunctions::slash( const EvtVector4R& p )
{
return EvtGammaMatrix::g0() * p.get( 0 ) + EvtGammaMatrix::g1() * p.get( 1 ) +
EvtGammaMatrix::g2() * p.get( 2 ) + EvtGammaMatrix::g3() * p.get( 3 );
}
diff --git a/src/EvtGenBase/EvtGenKine.cpp b/src/EvtGenBase/EvtGenKine.cpp
index 5327e22..359a4dc 100644
--- a/src/EvtGenBase/EvtGenKine.cpp
+++ b/src/EvtGenBase/EvtGenKine.cpp
@@ -1,343 +1,322 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGenKine.cc
-//
-// Description: Tools for generating distributions of four vectors in
-// phasespace
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <iostream>
#include <math.h>
using std::endl;
double EvtPawt( double a, double b, double c )
{
double temp = ( a * a - ( b + c ) * ( b + c ) ) *
( a * a - ( b - c ) * ( b - c ) );
if ( temp <= 0 ) {
return 0.0;
}
return sqrt( temp ) / ( 2.0 * a );
}
double EvtGenKine::PhaseSpace( int ndaug, double mass[30], EvtVector4R p4[30],
double mp )
// N body phase space routine. Send parent with
// daughters already defined ( Number and masses )
// Returns four vectors in parent frame.
{
double energy, p3, alpha, beta;
if ( ndaug == 1 ) {
p4[0].set( mass[0], 0.0, 0.0, 0.0 );
return 1.0;
}
if ( ndaug == 2 ) {
//Two body phase space
energy = ( mp * mp + mass[0] * mass[0] - mass[1] * mass[1] ) /
( 2.0 * mp );
p3 = 0.0;
if ( energy > mass[0] ) {
p3 = sqrt( energy * energy - mass[0] * mass[0] );
}
p4[0].set( energy, 0.0, 0.0, p3 );
energy = mp - energy;
p3 = -1.0 * p3;
p4[1].set( energy, 0.0, 0.0, p3 );
//Now rotate four vectors.
alpha = EvtRandom::Flat( EvtConst::twoPi );
beta = acos( EvtRandom::Flat( -1.0, 1.0 ) );
p4[0].applyRotateEuler( alpha, beta, -alpha );
p4[1].applyRotateEuler( alpha, beta, -alpha );
return 1.0;
}
if ( ndaug != 2 ) {
double wtmax = 0.0;
double pm[5][30], pmin, pmax, psum, rnd[30];
double ran, wt, pa, costh, sinth, phi, p[4][30], be[4], bep, temp;
int i, il, ilr, i1, il1u, il1, il2r, ilu;
int il2 = 0;
for ( i = 0; i < ndaug; i++ ) {
pm[4][i] = 0.0;
rnd[i] = 0.0;
}
pm[0][0] = mp;
pm[1][0] = 0.0;
pm[2][0] = 0.0;
pm[3][0] = 0.0;
pm[4][0] = mp;
psum = 0.0;
for ( i = 1; i < ndaug + 1; i++ ) {
psum = psum + mass[i - 1];
}
pm[4][ndaug - 1] = mass[ndaug - 1];
switch ( ndaug ) {
case 1:
wtmax = 1.0 / 16.0;
break;
case 2:
wtmax = 1.0 / 150.0;
break;
case 3:
wtmax = 1.0 / 2.0;
break;
case 4:
wtmax = 1.0 / 5.0;
break;
case 5:
wtmax = 1.0 / 15.0;
break;
case 6:
wtmax = 1.0 / 15.0;
break;
case 7:
wtmax = 1.0 / 15.0;
break;
case 8:
wtmax = 1.0 / 15.0;
break;
case 9:
wtmax = 1.0 / 15.0;
break;
case 10:
wtmax = 1.0 / 15.0;
break;
case 11:
wtmax = 1.0 / 15.0;
break;
case 12:
wtmax = 1.0 / 15.0;
break;
case 13:
wtmax = 1.0 / 15.0;
break;
case 14:
wtmax = 1.0 / 15.0;
break;
case 15:
wtmax = 1.0 / 15.0;
break;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "too many daughters for phase space..." << ndaug << " "
<< mp << endl;
;
break;
}
pmax = mp - psum + mass[ndaug - 1];
pmin = 0.0;
for ( ilr = 2; ilr < ndaug + 1; ilr++ ) {
il = ndaug + 1 - ilr;
pmax = pmax + mass[il - 1];
pmin = pmin + mass[il + 1 - 1];
wtmax = wtmax * EvtPawt( pmax, pmin, mass[il - 1] );
}
do {
rnd[0] = 1.0;
il1u = ndaug - 1;
for ( il1 = 2; il1 < il1u + 1; il1++ ) {
ran = EvtRandom::Flat();
for ( il2r = 2; il2r < il1 + 1; il2r++ ) {
il2 = il1 + 1 - il2r;
if ( ran <= rnd[il2 - 1] )
goto two39;
rnd[il2 + 1 - 1] = rnd[il2 - 1];
}
two39:
rnd[il2 + 1 - 1] = ran;
}
rnd[ndaug - 1] = 0.0;
wt = 1.0;
for ( ilr = 2; ilr < ndaug + 1; ilr++ ) {
il = ndaug + 1 - ilr;
pm[4][il - 1] = pm[4][il + 1 - 1] + mass[il - 1] +
( rnd[il - 1] - rnd[il + 1 - 1] ) * ( mp - psum );
wt = wt *
EvtPawt( pm[4][il - 1], pm[4][il + 1 - 1], mass[il - 1] );
}
if ( wt > wtmax ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "wtmax to small in EvtPhaseSpace with " << ndaug
<< " daughters" << endl;
;
}
} while ( wt < EvtRandom::Flat( wtmax ) );
ilu = ndaug - 1;
for ( il = 1; il < ilu + 1; il++ ) {
pa = EvtPawt( pm[4][il - 1], pm[4][il + 1 - 1], mass[il - 1] );
costh = EvtRandom::Flat( -1.0, 1.0 );
sinth = sqrt( 1.0 - costh * costh );
phi = EvtRandom::Flat( EvtConst::twoPi );
p[1][il - 1] = pa * sinth * cos( phi );
p[2][il - 1] = pa * sinth * sin( phi );
p[3][il - 1] = pa * costh;
pm[1][il + 1 - 1] = -p[1][il - 1];
pm[2][il + 1 - 1] = -p[2][il - 1];
pm[3][il + 1 - 1] = -p[3][il - 1];
p[0][il - 1] = sqrt( pa * pa + mass[il - 1] * mass[il - 1] );
pm[0][il + 1 - 1] = sqrt( pa * pa +
pm[4][il + 1 - 1] * pm[4][il + 1 - 1] );
}
p[0][ndaug - 1] = pm[0][ndaug - 1];
p[1][ndaug - 1] = pm[1][ndaug - 1];
p[2][ndaug - 1] = pm[2][ndaug - 1];
p[3][ndaug - 1] = pm[3][ndaug - 1];
for ( ilr = 2; ilr < ndaug + 1; ilr++ ) {
il = ndaug + 1 - ilr;
be[0] = pm[0][il - 1] / pm[4][il - 1];
be[1] = pm[1][il - 1] / pm[4][il - 1];
be[2] = pm[2][il - 1] / pm[4][il - 1];
be[3] = pm[3][il - 1] / pm[4][il - 1];
for ( i1 = il; i1 < ndaug + 1; i1++ ) {
bep = be[1] * p[1][i1 - 1] + be[2] * p[2][i1 - 1] +
be[3] * p[3][i1 - 1] + be[0] * p[0][i1 - 1];
temp = ( p[0][i1 - 1] + bep ) / ( be[0] + 1.0 );
p[1][i1 - 1] = p[1][i1 - 1] + temp * be[1];
p[2][i1 - 1] = p[2][i1 - 1] + temp * be[2];
p[3][i1 - 1] = p[3][i1 - 1] + temp * be[3];
p[0][i1 - 1] = bep;
}
}
for ( ilr = 0; ilr < ndaug; ilr++ ) {
p4[ilr].set( p[0][ilr], p[1][ilr], p[2][ilr], p[3][ilr] );
}
return 1.0;
}
return 1.0;
}
double EvtGenKine::PhaseSpacePole( double M, double m1, double m2, double m3,
double a, EvtVector4R p4[10] )
// generate kinematics for 3 body decays, pole for the m1,m2 mass.
{
//f1 = 1 (phasespace)
//f2 = a*(1/m12sq)^2
double m12sqmax = ( M - m3 ) * ( M - m3 );
double m12sqmin = ( m1 + m2 ) * ( m1 + m2 );
double m13sqmax = ( M - m2 ) * ( M - m2 );
double m13sqmin = ( m1 + m3 ) * ( m1 + m3 );
double v1 = ( m12sqmax - m12sqmin ) * ( m13sqmax - m13sqmin );
double v2 = a * ( 1.0 / m12sqmin - 1.0 / m12sqmax ) * ( m13sqmax - m13sqmin );
double m12sq, m13sq;
double r = v1 / ( v1 + v2 );
double m13min, m13max;
do {
m13sq = EvtRandom::Flat( m13sqmin, m13sqmax );
if ( r > EvtRandom::Flat() ) {
m12sq = EvtRandom::Flat( m12sqmin, m12sqmax );
} else {
m12sq = 1.0 /
( 1.0 / m12sqmin -
EvtRandom::Flat() * ( 1.0 / m12sqmin - 1.0 / m12sqmax ) );
}
//kinematically allowed?
double E3star = ( M * M - m12sq - m3 * m3 ) / sqrt( 4 * m12sq );
double E1star = ( m12sq + m1 * m1 - m2 * m2 ) / sqrt( 4 * m12sq );
double p3star = sqrt( E3star * E3star - m3 * m3 );
double p1star = sqrt( E1star * E1star - m1 * m1 );
m13max = ( E3star + E1star ) * ( E3star + E1star ) -
( p3star - p1star ) * ( p3star - p1star );
m13min = ( E3star + E1star ) * ( E3star + E1star ) -
( p3star + p1star ) * ( p3star + p1star );
} while ( m13sq < m13min || m13sq > m13max );
double E2 = ( M * M + m2 * m2 - m13sq ) / ( 2.0 * M );
double E3 = ( M * M + m3 * m3 - m12sq ) / ( 2.0 * M );
double E1 = M - E2 - E3;
double p1mom = sqrt( E1 * E1 - m1 * m1 );
double p3mom = sqrt( E3 * E3 - m3 * m3 );
double cost13 = ( 2.0 * E1 * E3 + m1 * m1 + m3 * m3 - m13sq ) /
( 2.0 * p1mom * p3mom );
//EvtGenReport(EVTGEN_INFO,"EvtGen") << m13sq << endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << m12sq << endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << E1 << endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << E2 << endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << E3 << endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << p1mom << endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << p3mom << endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << cost13 << endl;
p4[2].set( E3, 0.0, 0.0, p3mom );
p4[0].set( E1, p1mom * sqrt( 1.0 - cost13 * cost13 ), 0.0, p1mom * cost13 );
p4[1].set( E2, -p1mom * sqrt( 1.0 - cost13 * cost13 ), 0.0,
-p1mom * cost13 - p3mom );
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "p4:"<<p4[0]<<p4[1]<<p4[2]<<endl;
double alpha = EvtRandom::Flat( EvtConst::twoPi );
double beta = acos( EvtRandom::Flat( -1.0, 1.0 ) );
double gamma = EvtRandom::Flat( EvtConst::twoPi );
p4[0].applyRotateEuler( alpha, beta, gamma );
p4[1].applyRotateEuler( alpha, beta, gamma );
p4[2].applyRotateEuler( alpha, beta, gamma );
return 1.0 + a / ( m12sq * m12sq );
}
diff --git a/src/EvtGenBase/EvtHepMCEvent.cpp b/src/EvtGenBase/EvtHepMCEvent.cpp
index f20af13..f9f75f0 100644
--- a/src/EvtGenBase/EvtHepMCEvent.cpp
+++ b/src/EvtGenBase/EvtHepMCEvent.cpp
@@ -1,194 +1,174 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2011 University of Warwick, UK
-//
-// Module: EvtHepMCEvent
-//
-// Description: Create an HepMC::GenEvent for the complete EvtParticle
-// decay tree.
-//
-// Modification history:
-//
-// John Back June 2011 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenBase/EvtHepMCEvent.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
EvtHepMCEvent::EvtHepMCEvent() :
_theEvent( 0 ), _translation( 0.0, 0.0, 0.0, 0.0 )
{
}
EvtHepMCEvent::~EvtHepMCEvent()
{
this->deleteEvent();
}
void EvtHepMCEvent::deleteEvent()
{
if ( _theEvent != 0 ) {
_theEvent->clear();
delete _theEvent;
_theEvent = 0;
}
}
void EvtHepMCEvent::constructEvent( EvtParticle* baseParticle )
{
EvtVector4R origin( 0.0, 0.0, 0.0, 0.0 );
this->constructEvent( baseParticle, origin );
}
void EvtHepMCEvent::constructEvent( EvtParticle* baseParticle,
EvtVector4R& translation )
{
// This class does not take ownership of the base particle pointer.
// Rather, it uses the base particle to construct the event.
this->deleteEvent();
if ( baseParticle == 0 ) {
return;
}
_theEvent = new GenEvent( Units::GEV, Units::MM );
_translation = translation;
// Use the recursive function addVertex to add a vertex with incoming/outgoing
// particles. Adds a new vertex for any EvtParticles with decay daughters.
// All particles are in the rest frame of the base particle ("lab frame").
GenParticlePtr hepMCGenParticle =
this->createGenParticle( baseParticle, EvtHepMCEvent::LAB );
this->addVertex( baseParticle, hepMCGenParticle );
}
GenParticlePtr EvtHepMCEvent::createGenParticle( EvtParticle* theParticle,
int frameType )
{
// Create an HepMC GenParticle, with the 4-momenta in the frame given by the frameType integer
GenParticlePtr genParticle{nullptr};
if ( theParticle != 0 ) {
// Set the particle status integer to either stable or decayed
int status( EvtHepMCEvent::STABLE );
int nDaug = theParticle->getNDaug();
if ( nDaug > 0 ) {
status = EvtHepMCEvent::DECAYED;
}
// Get the 4-momentum (E, px, py, pz) for the EvtParticle.
EvtVector4R p4( 0.0, 0.0, 0.0, 0.0 );
if ( frameType == EvtHepMCEvent::RESTFRAME ) {
p4 = theParticle->getP4Restframe();
} else if ( frameType == EvtHepMCEvent::LAB ) {
p4 = theParticle->getP4Lab();
} else {
p4 = theParticle->getP4();
}
// Convert this to the HepMC 4-momentum
double E = p4.get( 0 );
double px = p4.get( 1 );
double py = p4.get( 2 );
double pz = p4.get( 3 );
FourVector hepMC_p4( px, py, pz, E );
// Get the particle PDG integer id
int PDGInt = EvtPDL::getStdHep( theParticle->getId() );
genParticle = newGenParticlePtr( hepMC_p4, PDGInt, status );
}
return genParticle;
}
void EvtHepMCEvent::addVertex( EvtParticle* inEvtParticle,
GenParticlePtr inGenParticle )
{
// This is a recursive function that adds GenVertices to the GenEvent for
// the incoming EvtParticle and its daughters. We use two separate
// pointers for the EvtParticle and GenParticle information: the former
// to obtain the PDGId, 4-momenta, daughter and vertex positions, the latter to
// set the incoming particle to the vertex. Note that the outgoing particle for
// one vertex might be the incoming particle for another vertex - this needs to
// be the same GenParticle pointer, hence the reason for using it as a 2nd argument
// in this function.
if ( _theEvent == 0 || inEvtParticle == 0 || inGenParticle == 0 ) {
return;
}
// Create the decay vertex
FourVector vtxCoord = this->getVertexCoord( inEvtParticle );
GenVertexPtr theVertex = newGenVertexPtr( vtxCoord );
// Add the vertex to the event
_theEvent->add_vertex( theVertex );
// Set the incoming particle
theVertex->add_particle_in( inGenParticle );
// Set the outgoing particles (decay products)
int nDaug = inEvtParticle->getNDaug();
int iDaug( 0 );
// Loop over the daughters
for ( iDaug = 0; iDaug < nDaug; iDaug++ ) {
EvtParticle* evtDaughter = inEvtParticle->getDaug( iDaug );
GenParticlePtr genDaughter =
this->createGenParticle( evtDaughter, EvtHepMCEvent::LAB );
if ( genDaughter != 0 ) {
// Add a new GenParticle (outgoing) particle daughter to the vertex
theVertex->add_particle_out( genDaughter );
// Find out if the daughter also has decay products.
// If so, recursively run this function again.
int nDaugProducts = evtDaughter->getNDaug();
if ( nDaugProducts > 0 ) {
// Recursively process daughter particles and add their vertices to the event
this->addVertex( evtDaughter, genDaughter );
} // Have daughter products
} // hepMCDaughter != 0
} // Loop over daughters
}
FourVector EvtHepMCEvent::getVertexCoord( EvtParticle* theParticle )
{
FourVector vertexCoord( 0.0, 0.0, 0.0, 0.0 );
if ( theParticle != 0 && theParticle->getNDaug() != 0 ) {
// Get the position (t,x,y,z) of the EvtParticle, offset by the translation vector.
// This position will be the point where the particle decays. So we ask
// the position of the (1st) daughter particle.
EvtParticle* daugParticle = theParticle->getDaug( 0 );
if ( daugParticle != 0 ) {
EvtVector4R vtxPosition = daugParticle->get4Pos() + _translation;
// Create the HepMC 4 vector of the position (x,y,z,t)
vertexCoord.setX( vtxPosition.get( 1 ) );
vertexCoord.setY( vtxPosition.get( 2 ) );
vertexCoord.setZ( vtxPosition.get( 3 ) );
vertexCoord.setT( vtxPosition.get( 0 ) );
}
}
return vertexCoord;
-}
\ No newline at end of file
+}
diff --git a/src/EvtGenBase/EvtHighSpinParticle.cpp b/src/EvtGenBase/EvtHighSpinParticle.cpp
index 5852203..e1f19bd 100644
--- a/src/EvtGenBase/EvtHighSpinParticle.cpp
+++ b/src/EvtGenBase/EvtHighSpinParticle.cpp
@@ -1,80 +1,60 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtHighSpinParticle.cc
-//
-// Description: Class to describe particles with spin>2.
-//
-// Modification history:
-//
-// RYD August 8, 2000 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtHighSpinParticle.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtSpinDensity.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenBase/EvtdFunction.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
void EvtHighSpinParticle::init( EvtId id, const EvtVector4R& p4 )
{
_validP4 = true;
setp( p4 );
setpart_num( id );
setLifetime();
}
EvtSpinDensity EvtHighSpinParticle::rotateToHelicityBasis() const
{
int n = EvtSpinType::getSpinStates( EvtPDL::getSpinType( getId() ) );
EvtSpinDensity R;
R.setDiag( n );
return R;
}
EvtSpinDensity EvtHighSpinParticle::rotateToHelicityBasis( double alpha,
double beta,
double gamma ) const
{
int i, j;
int n = EvtSpinType::getSpinStates( EvtPDL::getSpinType( getId() ) );
EvtSpinDensity R;
R.setDim( n );
int J2 = EvtSpinType::getSpin2( EvtPDL::getSpinType( getId() ) );
assert( n == J2 + 1 );
auto lambda2 = [J2]( int i ) { return J2 - i * 2; };
for ( i = 0; i < n; i++ ) {
for ( j = 0; j < n; j++ ) {
R.set( i, j,
EvtdFunction::d( J2, lambda2( j ), lambda2( i ), beta ) *
exp( EvtComplex( 0.0, 0.5 * ( alpha * lambda2( i ) -
gamma * lambda2( j ) ) ) ) );
}
}
return R;
}
diff --git a/src/EvtGenBase/EvtId.cpp b/src/EvtGenBase/EvtId.cpp
index f9903ab..4fb8977 100644
--- a/src/EvtGenBase/EvtId.cpp
+++ b/src/EvtGenBase/EvtId.cpp
@@ -1,44 +1,24 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtId.cc
-//
-// Description: Class for particle Id used in EvtGen.
-//
-// Modification history:
-//
-// RYD May 26, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <iostream>
using std::ostream;
ostream& operator<<( ostream& s, const EvtId& id )
{
s << "(Id=" << id._id << " Alias=" << id._alias << ")";
return s;
}
int EvtId::isConjugate( const EvtId& id ) const
{
return EvtPDL::getStdHep( *this ) == -EvtPDL::getStdHep( id );
}
std::string EvtId::getName() const
{
return EvtPDL::name( *this );
}
diff --git a/src/EvtGenBase/EvtIdSet.cpp b/src/EvtGenBase/EvtIdSet.cpp
index 17bad7b..db5c853 100644
--- a/src/EvtGenBase/EvtIdSet.cpp
+++ b/src/EvtGenBase/EvtIdSet.cpp
@@ -1,492 +1,472 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtId.cc
-//
-// Description: Class for particle Id used in EvtGen.
-//
-// Modification history:
-//
-// DJL Jan 4, 2000 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <iostream>
#include <string>
EvtIdSet::EvtIdSet( const EvtId name1 )
{
_numInList = 1;
_list = new EvtId[_numInList];
_list[0] = name1;
}
EvtIdSet::EvtIdSet( const std::string name1 )
{
_numInList = 1;
_list = new EvtId[_numInList];
_list[0] = EvtPDL::getId( name1 );
}
EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2 )
{
_numInList = 2;
_list = new EvtId[_numInList];
_list[0] = name1;
_list[1] = name2;
}
EvtIdSet::EvtIdSet( const std::string name1, const std::string name2 )
{
_numInList = 2;
_list = new EvtId[_numInList];
_list[0] = EvtPDL::getId( name1 );
_list[1] = EvtPDL::getId( name2 );
}
EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3 )
{
_numInList = 3;
_list = new EvtId[_numInList];
_list[0] = name1;
_list[1] = name2;
_list[2] = name3;
}
EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
const std::string name3 )
{
_numInList = 3;
_list = new EvtId[_numInList];
_list[0] = EvtPDL::getId( name1 );
_list[1] = EvtPDL::getId( name2 );
_list[2] = EvtPDL::getId( name3 );
}
EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4 )
{
_numInList = 4;
_list = new EvtId[_numInList];
_list[0] = name1;
_list[1] = name2;
_list[2] = name3;
_list[3] = name4;
}
EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4 )
{
_numInList = 4;
_list = new EvtId[_numInList];
_list[0] = EvtPDL::getId( name1 );
_list[1] = EvtPDL::getId( name2 );
_list[2] = EvtPDL::getId( name3 );
_list[3] = EvtPDL::getId( name4 );
}
EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5 )
{
_numInList = 5;
_list = new EvtId[_numInList];
_list[0] = name1;
_list[1] = name2;
_list[2] = name3;
_list[3] = name4;
_list[4] = name5;
}
EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5 )
{
_numInList = 5;
_list = new EvtId[_numInList];
_list[0] = EvtPDL::getId( name1 );
_list[1] = EvtPDL::getId( name2 );
_list[2] = EvtPDL::getId( name3 );
_list[3] = EvtPDL::getId( name4 );
_list[4] = EvtPDL::getId( name5 );
}
EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5, const EvtId name6 )
{
_numInList = 6;
_list = new EvtId[_numInList];
_list[0] = name1;
_list[1] = name2;
_list[2] = name3;
_list[3] = name4;
_list[4] = name5;
_list[5] = name6;
}
EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5, const std::string name6 )
{
_numInList = 6;
_list = new EvtId[_numInList];
_list[0] = EvtPDL::getId( name1 );
_list[1] = EvtPDL::getId( name2 );
_list[2] = EvtPDL::getId( name3 );
_list[3] = EvtPDL::getId( name4 );
_list[4] = EvtPDL::getId( name5 );
_list[5] = EvtPDL::getId( name6 );
}
EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5, const EvtId name6,
const EvtId name7 )
{
_numInList = 7;
_list = new EvtId[_numInList];
_list[0] = name1;
_list[1] = name2;
_list[2] = name3;
_list[3] = name4;
_list[4] = name5;
_list[5] = name6;
_list[6] = name7;
}
EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5, const std::string name6,
const std::string name7 )
{
_numInList = 7;
_list = new EvtId[_numInList];
_list[0] = EvtPDL::getId( name1 );
_list[1] = EvtPDL::getId( name2 );
_list[2] = EvtPDL::getId( name3 );
_list[3] = EvtPDL::getId( name4 );
_list[4] = EvtPDL::getId( name5 );
_list[5] = EvtPDL::getId( name6 );
_list[6] = EvtPDL::getId( name7 );
}
EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5, const EvtId name6,
const EvtId name7, const EvtId name8 )
{
_numInList = 8;
_list = new EvtId[_numInList];
_list[0] = name1;
_list[1] = name2;
_list[2] = name3;
_list[3] = name4;
_list[4] = name5;
_list[5] = name6;
_list[6] = name7;
_list[7] = name8;
}
EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5, const std::string name6,
const std::string name7, const std::string name8 )
{
_numInList = 8;
_list = new EvtId[_numInList];
_list[0] = EvtPDL::getId( name1 );
_list[1] = EvtPDL::getId( name2 );
_list[2] = EvtPDL::getId( name3 );
_list[3] = EvtPDL::getId( name4 );
_list[4] = EvtPDL::getId( name5 );
_list[5] = EvtPDL::getId( name6 );
_list[6] = EvtPDL::getId( name7 );
_list[7] = EvtPDL::getId( name8 );
}
EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5, const EvtId name6,
const EvtId name7, const EvtId name8, const EvtId name9 )
{
_numInList = 9;
_list = new EvtId[_numInList];
_list[0] = name1;
_list[1] = name2;
_list[2] = name3;
_list[3] = name4;
_list[4] = name5;
_list[5] = name6;
_list[6] = name7;
_list[7] = name8;
_list[8] = name9;
}
EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5, const std::string name6,
const std::string name7, const std::string name8,
const std::string name9 )
{
_numInList = 9;
_list = new EvtId[_numInList];
_list[0] = EvtPDL::getId( name1 );
_list[1] = EvtPDL::getId( name2 );
_list[2] = EvtPDL::getId( name3 );
_list[3] = EvtPDL::getId( name4 );
_list[4] = EvtPDL::getId( name5 );
_list[5] = EvtPDL::getId( name6 );
_list[6] = EvtPDL::getId( name7 );
_list[7] = EvtPDL::getId( name8 );
_list[8] = EvtPDL::getId( name9 );
}
EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5, const EvtId name6,
const EvtId name7, const EvtId name8, const EvtId name9,
const EvtId name10 )
{
_numInList = 10;
_list = new EvtId[_numInList];
_list[0] = name1;
_list[1] = name2;
_list[2] = name3;
_list[3] = name4;
_list[4] = name5;
_list[5] = name6;
_list[6] = name7;
_list[7] = name8;
_list[8] = name9;
_list[9] = name10;
}
EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5, const std::string name6,
const std::string name7, const std::string name8,
const std::string name9, const std::string name10 )
{
_numInList = 10;
_list = new EvtId[_numInList];
_list[0] = EvtPDL::getId( name1 );
_list[1] = EvtPDL::getId( name2 );
_list[2] = EvtPDL::getId( name3 );
_list[3] = EvtPDL::getId( name4 );
_list[4] = EvtPDL::getId( name5 );
_list[5] = EvtPDL::getId( name6 );
_list[6] = EvtPDL::getId( name7 );
_list[7] = EvtPDL::getId( name8 );
_list[8] = EvtPDL::getId( name9 );
_list[9] = EvtPDL::getId( name10 );
}
EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5, const EvtId name6,
const EvtId name7, const EvtId name8, const EvtId name9,
const EvtId name10, const EvtId name11 )
{
_numInList = 11;
_list = new EvtId[_numInList];
_list[0] = name1;
_list[1] = name2;
_list[2] = name3;
_list[3] = name4;
_list[4] = name5;
_list[5] = name6;
_list[6] = name7;
_list[7] = name8;
_list[8] = name9;
_list[9] = name10;
_list[10] = name11;
}
EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5, const std::string name6,
const std::string name7, const std::string name8,
const std::string name9, const std::string name10,
const std::string name11 )
{
_numInList = 11;
_list = new EvtId[_numInList];
_list[0] = EvtPDL::getId( name1 );
_list[1] = EvtPDL::getId( name2 );
_list[2] = EvtPDL::getId( name3 );
_list[3] = EvtPDL::getId( name4 );
_list[4] = EvtPDL::getId( name5 );
_list[5] = EvtPDL::getId( name6 );
_list[6] = EvtPDL::getId( name7 );
_list[7] = EvtPDL::getId( name8 );
_list[8] = EvtPDL::getId( name9 );
_list[9] = EvtPDL::getId( name10 );
_list[10] = EvtPDL::getId( name11 );
}
EvtIdSet::EvtIdSet( const EvtId name1, const EvtId name2, const EvtId name3,
const EvtId name4, const EvtId name5, const EvtId name6,
const EvtId name7, const EvtId name8, const EvtId name9,
const EvtId name10, const EvtId name11, const EvtId name12 )
{
_numInList = 12;
_list = new EvtId[_numInList];
_list[0] = name1;
_list[1] = name2;
_list[2] = name3;
_list[3] = name4;
_list[4] = name5;
_list[5] = name6;
_list[6] = name7;
_list[7] = name8;
_list[8] = name9;
_list[9] = name10;
_list[10] = name11;
_list[11] = name12;
}
EvtIdSet::EvtIdSet( const std::string name1, const std::string name2,
const std::string name3, const std::string name4,
const std::string name5, const std::string name6,
const std::string name7, const std::string name8,
const std::string name9, const std::string name10,
const std::string name11, const std::string name12 )
{
_numInList = 12;
_list = new EvtId[_numInList];
_list[0] = EvtPDL::getId( name1 );
_list[1] = EvtPDL::getId( name2 );
_list[2] = EvtPDL::getId( name3 );
_list[3] = EvtPDL::getId( name4 );
_list[4] = EvtPDL::getId( name5 );
_list[5] = EvtPDL::getId( name6 );
_list[6] = EvtPDL::getId( name7 );
_list[7] = EvtPDL::getId( name8 );
_list[8] = EvtPDL::getId( name9 );
_list[9] = EvtPDL::getId( name10 );
_list[10] = EvtPDL::getId( name11 );
_list[11] = EvtPDL::getId( name12 );
}
EvtIdSet::EvtIdSet( const EvtIdSet& set1 )
{
_numInList = set1.sizeOfSet();
_list = new EvtId[_numInList];
int i;
for ( i = 0; i < _numInList; i++ ) {
_list[i] = set1.getElem( i );
}
}
EvtIdSet::EvtIdSet( const EvtIdSet& set1, const EvtIdSet& set2 )
{
_numInList = set1.sizeOfSet();
_list = new EvtId[_numInList];
int i;
for ( i = 0; i < _numInList; i++ ) {
_list[i] = set1.getElem( i );
}
//then just append the second list.
this->append( set2 );
}
int EvtIdSet::contains( const EvtId id )
{
int i;
for ( i = 0; i < _numInList; i++ ) {
if ( _list[i] == id )
return 1;
}
return 0;
}
int EvtIdSet::contains( const std::string nm )
{
int i;
for ( i = 0; i < _numInList; i++ ) {
if ( _list[i] == EvtPDL::getId( nm ) )
return 1;
}
return 0;
}
void EvtIdSet::append( const EvtIdSet set1 )
{
int combLen = _numInList + set1.sizeOfSet();
int uniqueLen = 0;
EvtId* combSet;
combSet = new EvtId[combLen];
int i;
for ( i = 0; i < combLen; i++ ) {
if ( i >= _numInList ) {
//check that there are no overlaps between lists
int j;
int isUnique = 1;
for ( j = 0; j < _numInList; j++ ) {
if ( _list[j] == set1.getElem( i - _numInList ) ) {
isUnique = 0;
}
}
if ( isUnique == 1 ) {
combSet[uniqueLen] = set1.getElem( i - _numInList );
uniqueLen += 1;
}
} else {
combSet[uniqueLen] = _list[i];
uniqueLen += 1;
}
delete _list;
_list = new EvtId[uniqueLen];
_numInList = uniqueLen;
for ( i = 0; i < _numInList; i++ ) {
_list[i] = combSet[i];
}
delete combSet;
}
}
int EvtIdSet::sizeOfSet() const
{
return _numInList;
}
EvtId EvtIdSet::getElem( const int i ) const
{
return _list[i];
}
diff --git a/src/EvtGenBase/EvtIncoherentMixing.cpp b/src/EvtGenBase/EvtIncoherentMixing.cpp
index d383679..51abae3 100644
--- a/src/EvtGenBase/EvtIncoherentMixing.cpp
+++ b/src/EvtGenBase/EvtIncoherentMixing.cpp
@@ -1,308 +1,304 @@
-// $Id: EvtIncoherentMixing.cpp,v 1.13 2009-11-27 09:09:41 mwhitehe Exp $
-// Include files
-
-// local
#include "EvtGenBase/EvtIncoherentMixing.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtRandom.hh"
#include <stdlib.h>
//-----------------------------------------------------------------------------
// Implementation file for class : EvtIncoherentMixing
//
// 2003-10-09 : Patrick Robbe
//-----------------------------------------------------------------------------
bool EvtIncoherentMixing::_doB0Mixing = false;
bool EvtIncoherentMixing::_doBsMixing = false;
bool EvtIncoherentMixing::_enableFlip = false;
double EvtIncoherentMixing::_dGammad = 0.;
double EvtIncoherentMixing::_deltamd = 0.502e12;
// dGamma_s corresponds to DeltaGamma / Gamma = 10 %
double EvtIncoherentMixing::_dGammas = 6.852e10;
double EvtIncoherentMixing::_deltams = 20.e12;
//=============================================================================
// Standard constructor, initializes variables
//=============================================================================
EvtIncoherentMixing::EvtIncoherentMixing()
{
_doB0Mixing = false;
_doBsMixing = false;
_dGammad = 0.;
// dGammas corresponds to DeltaGamma / Gamma = 10 %
_dGammas = 6.852e10;
_deltamd = 0.502e12;
_deltams = 20.e12;
_enableFlip = false;
}
//=============================================================================
void EvtIncoherentMixing::incoherentB0Mix( const EvtId id, double& t, int& mix )
{
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
if ( ( B0 != id ) && ( B0B != id ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Bad configuration in incoherentB0Mix" << std::endl;
::abort();
}
double x = getdeltamd() * EvtPDL::getctau( B0 ) / EvtConst::c;
double y = getdGammad() * ( EvtPDL::getctau( B0 ) / EvtConst::c ) / 2.;
double fac = 1.; // No CP violation
double mixprob = ( x * x + y * y ) /
( x * x + y * y + ( 1. / fac ) * ( 2. + x * x - y * y ) );
int mixsign;
// decide if state is mixed
mixsign = ( mixprob > EvtRandom::Flat( 0., 1. ) ) ? -1 : 1;
double prob;
do {
t = -log( EvtRandom::Flat() ) * EvtPDL::getctau( B0 ) / ( 1. - y );
prob = ( 1. + exp( -2. * y * t / EvtPDL::getctau( B0 ) ) +
mixsign * 2. * exp( -y * t / EvtPDL::getctau( B0 ) ) *
cos( getdeltamd() * t / EvtConst::c ) ) /
2.;
} while ( prob < 2. * EvtRandom::Flat() );
mix = 0;
if ( mixsign == -1 )
mix = 1;
return;
}
// ============================================================================
void EvtIncoherentMixing::incoherentBsMix( const EvtId id, double& t, int& mix )
{
static EvtId BS = EvtPDL::getId( "B_s0" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
if ( ( BS != id ) && ( BSB != id ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Bad configuration in incoherentBsMix" << std::endl;
::abort();
}
double x = getdeltams() * EvtPDL::getctau( BS ) / EvtConst::c;
double y = getdGammas() * ( EvtPDL::getctau( BS ) / EvtConst::c ) / 2.;
double fac = 1.; // No CP violation
double mixprob = ( x * x + y * y ) /
( x * x + y * y + ( 1. / fac ) * ( 2. + x * x - y * y ) );
int mixsign;
// decide if state is mixed
mixsign = ( mixprob > EvtRandom::Flat( 0., 1. ) ) ? -1 : 1;
double prob;
do {
t = -log( EvtRandom::Flat() ) * EvtPDL::getctau( BS ) / ( 1. - y );
prob = ( 1. + exp( -2. * y * t / EvtPDL::getctau( BS ) ) +
mixsign * 2. * exp( -y * t / EvtPDL::getctau( BS ) ) *
cos( getdeltams() * t / EvtConst::c ) ) /
2.;
} while ( prob < 2. * EvtRandom::Flat() );
mix = 0;
if ( mixsign == -1 )
mix = 1;
return;
}
// ========================================================================
bool EvtIncoherentMixing::isBsMixed( EvtParticle* p )
{
if ( !( p->getParent() ) )
return false;
static EvtId BS0 = EvtPDL::getId( "B_s0" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
if ( ( p->getId() != BS0 ) && ( p->getId() != BSB ) )
return false;
if ( ( p->getParent()->getId() == BS0 ) || ( p->getParent()->getId() == BSB ) )
return true;
return false;
}
// ========================================================================
bool EvtIncoherentMixing::isB0Mixed( EvtParticle* p )
{
if ( !( p->getParent() ) )
return false;
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
if ( ( p->getId() != B0 ) && ( p->getId() != B0B ) )
return false;
if ( ( p->getParent()->getId() == B0 ) || ( p->getParent()->getId() == B0B ) )
return true;
return false;
}
//============================================================================
// Return the tag of the event (ie the anti-flavour of the produced
// B meson). Flip the flavour of the event with probB probability
//============================================================================
void EvtIncoherentMixing::OtherB( EvtParticle* p, double& t, EvtId& otherb,
double probB )
{
//if(p->getId() == B0 || p->getId() == B0B)
//added by liming Zhang
enableFlip();
if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
p->getParent()->setLifetime();
t = p->getParent()->getLifetime();
} else {
p->setLifetime();
t = p->getLifetime();
}
if ( flipIsEnabled() ) {
//std::cout << " liming << flipIsEnabled " << std::endl;
// Flip the flavour of the particle with probability probB
bool isFlipped = ( EvtRandom::Flat( 0., 1. ) < probB );
if ( isFlipped ) {
if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
p->getParent()->setId(
EvtPDL::chargeConj( p->getParent()->getId() ) );
p->setId( EvtPDL::chargeConj( p->getId() ) );
} else {
p->setId( EvtPDL::chargeConj( p->getId() ) );
}
}
}
if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
// if B has mixed, tag flavour is charge conjugate of parent of B-meson
otherb = EvtPDL::chargeConj( p->getParent()->getId() );
} else {
// else it is opposite flavour than this B hadron
otherb = EvtPDL::chargeConj( p->getId() );
}
return;
}
//============================================================================
// Return the tag of the event (ie the anti-flavour of the produced
// B meson). No flip
//============================================================================
void EvtIncoherentMixing::OtherB( EvtParticle* p, double& t, EvtId& otherb )
{
if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
p->getParent()->setLifetime();
t = p->getParent()->getLifetime();
} else {
p->setLifetime();
t = p->getLifetime();
}
if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
// if B has mixed, tag flavour is charge conjugate of parent of B-meson
otherb = EvtPDL::chargeConj( p->getParent()->getId() );
} else {
// else it is opposite flavour than this B hadron
otherb = EvtPDL::chargeConj( p->getId() );
}
return;
}
// activate or desactivate the Bs mixing
void EvtIncoherentMixing::setB0Mixing()
{
_doB0Mixing = true;
}
void EvtIncoherentMixing::unsetB0Mixing()
{
_doB0Mixing = false;
}
// activate or desactivate the B0 mixing
void EvtIncoherentMixing::setBsMixing()
{
_doBsMixing = true;
}
void EvtIncoherentMixing::unsetBsMixing()
{
_doBsMixing = false;
}
// is mixing activated ?
bool EvtIncoherentMixing::doB0Mixing()
{
return _doB0Mixing;
}
bool EvtIncoherentMixing::doBsMixing()
{
return _doBsMixing;
}
// set values for the mixing
void EvtIncoherentMixing::setdGammad( double value )
{
_dGammad = value;
}
void EvtIncoherentMixing::setdeltamd( double value )
{
_deltamd = value;
}
void EvtIncoherentMixing::setdGammas( double value )
{
_dGammas = value;
}
void EvtIncoherentMixing::setdeltams( double value )
{
_deltams = value;
}
// get parameters for mixing
double EvtIncoherentMixing::getdGammad()
{
return _dGammad;
}
double EvtIncoherentMixing::getdeltamd()
{
return _deltamd;
}
double EvtIncoherentMixing::getdGammas()
{
return _dGammas;
}
double EvtIncoherentMixing::getdeltams()
{
return _deltams;
}
bool EvtIncoherentMixing::flipIsEnabled()
{
return _enableFlip;
}
void EvtIncoherentMixing::enableFlip()
{
_enableFlip = true;
}
void EvtIncoherentMixing::disableFlip()
{
_enableFlip = false;
}
diff --git a/src/EvtGenBase/EvtIntegPdf1D.cpp b/src/EvtGenBase/EvtIntegPdf1D.cpp
index 3f77523..b23c241 100644
--- a/src/EvtGenBase/EvtIntegPdf1D.cpp
+++ b/src/EvtGenBase/EvtIntegPdf1D.cpp
@@ -1,42 +1,33 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtIntegPdf1D.cpp,v 1.3 2009-03-16 15:48:09 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
#include "EvtGenBase/EvtIntegPdf1D.hh"
+
#include "EvtGenBase/EvtMacros.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <assert.h>
EvtIntegPdf1D::EvtIntegPdf1D( double min, double max ) :
EvtPdf<EvtPoint1D>(), _min( min ), _max( max )
{
assert( min <= max );
}
EvtIntegPdf1D::EvtIntegPdf1D( const EvtIntegPdf1D& other ) :
EvtPdf<EvtPoint1D>( other ), _min( other._min ), _max( other._max )
{
}
EvtValError EvtIntegPdf1D::compute_integral() const
{
double x1 = pdfIntegral( _min );
double x2 = pdfIntegral( _max );
return EvtValError( x2 - x1, 0. );
}
EvtPoint1D EvtIntegPdf1D::randomPoint()
{
double itgmin = pdfIntegral( _min );
double itgmax = pdfIntegral( _max );
double itgrnd = EvtRandom::Flat( itgmin, itgmax );
return EvtPoint1D( _min, _max, pdfIntegralInverse( itgrnd ) );
}
diff --git a/src/EvtGenBase/EvtIntervalFlatPdf.cpp b/src/EvtGenBase/EvtIntervalFlatPdf.cpp
index c2561ed..4c7ff40 100644
--- a/src/EvtGenBase/EvtIntervalFlatPdf.cpp
+++ b/src/EvtGenBase/EvtIntervalFlatPdf.cpp
@@ -1,46 +1,37 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtIntervalFlatPdf.cpp,v 1.3 2009-03-16 15:51:08 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
#include "EvtGenBase/EvtIntervalFlatPdf.hh"
+
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include <assert.h>
EvtIntervalFlatPdf::EvtIntervalFlatPdf( double min, double max ) :
EvtPdf<EvtPoint1D>(), _min( min ), _max( max )
{
assert( max >= min );
}
EvtIntervalFlatPdf::EvtIntervalFlatPdf( const EvtIntervalFlatPdf& other ) :
EvtPdf<EvtPoint1D>( other ), _min( other._min ), _max( other._max )
{
}
EvtPdf<EvtPoint1D>* EvtIntervalFlatPdf::clone() const
{
return new EvtIntervalFlatPdf( *this );
}
double EvtIntervalFlatPdf::pdf( const EvtPoint1D& ) const
{
return 1.;
}
EvtValError EvtIntervalFlatPdf::compute_integral() const
{
return EvtValError( _max - _min, 0. );
}
EvtPoint1D EvtIntervalFlatPdf::randomPoint()
{
return EvtPoint1D( _min, _max, EvtRandom::Flat( _min, _max ) );
}
diff --git a/src/EvtGenBase/EvtKine.cpp b/src/EvtGenBase/EvtKine.cpp
index 7c002a3..28664e4 100644
--- a/src/EvtGenBase/EvtKine.cpp
+++ b/src/EvtGenBase/EvtKine.cpp
@@ -1,133 +1,113 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtKine.cc
-//
-// Description: routines to calculate decay angles.
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtKine.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenBase/EvtdFunction.hh"
#include <math.h>
double EvtDecayAngle( const EvtVector4R& p, const EvtVector4R& q,
const EvtVector4R& d )
{
double pd = p * d;
double pq = p * q;
double qd = q * d;
double mp2 = p.mass2();
double mq2 = q.mass2();
double md2 = d.mass2();
double cost = ( pd * mq2 - pq * qd ) /
sqrt( ( pq * pq - mq2 * mp2 ) * ( qd * qd - mq2 * md2 ) );
return cost;
}
double EvtDecayAngleChi( const EvtVector4R& p4_p, const EvtVector4R& p4_d1,
const EvtVector4R& p4_d2, const EvtVector4R& p4_h1,
const EvtVector4R& p4_h2 )
{
EvtVector4R p4_d1p, p4_h1p, p4_h2p, p4_d2p;
// boost all vectors parent restframe
// This does not boost particle to parent rest frame !!!
// It goes from parents rest frame to frame where parent has given momentum.
p4_d1p = boostTo( p4_d1, p4_p, true );
p4_d2p = boostTo( p4_d2, p4_p, true );
p4_h1p = boostTo( p4_h1, p4_p, true );
p4_h2p = boostTo( p4_h2, p4_p, true );
EvtVector4R d1_perp, d1_prime, h1_perp;
EvtVector4R D;
D = p4_d1p + p4_d2p;
d1_perp = p4_d1p - ( D.dot( p4_d1p ) / D.dot( D ) ) * D;
h1_perp = p4_h1p - ( D.dot( p4_h1p ) / D.dot( D ) ) * D;
// orthogonal to both D and d1_perp
d1_prime = D.cross( d1_perp );
d1_perp = d1_perp / d1_perp.d3mag();
d1_prime = d1_prime / d1_prime.d3mag();
double x, y;
x = d1_perp.dot( h1_perp );
y = d1_prime.dot( h1_perp );
double chi = atan2( y, x );
if ( chi < 0.0 )
chi += EvtConst::twoPi;
return chi;
}
double EvtDecayPlaneNormalAngle( const EvtVector4R& p, const EvtVector4R& q,
const EvtVector4R& d1, const EvtVector4R& d2 )
{
EvtVector4C lc = dual( EvtGenFunctions::directProd( d1, d2 ) ).cont2( q );
EvtVector4R l( real( lc.get( 0 ) ), real( lc.get( 1 ) ),
real( lc.get( 2 ) ), real( lc.get( 3 ) ) );
double pq = p * q;
return q.mass() * ( p * l ) /
sqrt( -( pq * pq - p.mass2() * q.mass2() ) * l.mass2() );
}
// Calculate phi using the given 4 vectors (all in the same frame)
double EvtDecayAnglePhi( const EvtVector4R& z, const EvtVector4R& p,
const EvtVector4R& q, const EvtVector4R& d )
{
double eq = ( p * q ) / p.mass();
double ed = ( p * d ) / p.mass();
double mq = q.mass();
double q2 = p.mag2r3( q );
double qd = p.dotr3( q, d );
double zq = p.dotr3( z, q );
double zd = p.dotr3( z, d );
double alpha = ( eq - mq ) / ( q2 * mq ) * qd - ed / mq;
double y = p.scalartripler3( z, q, d ) + alpha * p.scalartripler3( z, q, q );
double x = ( zq * ( qd + alpha * q2 ) - q2 * ( zd + alpha * zq ) ) /
sqrt( q2 );
double phi = atan2( y, x );
return phi < 0 ? ( phi + EvtConst::twoPi ) : phi;
}
EvtComplex wignerD( int j, int m1, int m2, double phi, double theta, double gamma )
{
EvtComplex gp( 0.0, -phi * m1 );
EvtComplex gm( 0.0, -gamma * m2 );
return exp( gp ) * EvtdFunction::d( j, m1, m2, theta ) * exp( gm );
}
diff --git a/src/EvtGenBase/EvtLASSAmp.cpp b/src/EvtGenBase/EvtLASSAmp.cpp
index 05d864e..85972c3 100644
--- a/src/EvtGenBase/EvtLASSAmp.cpp
+++ b/src/EvtGenBase/EvtLASSAmp.cpp
@@ -1,105 +1,97 @@
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * Author: Denis Dujmic, ddujmic@slac.stanford.edu
- *
- * Copyright (C) 2005 SLAC
- *******************************************************************************/
-
#include "EvtGenBase/EvtLASSAmp.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDalitzCoord.hh"
#include "EvtGenBase/EvtdFunction.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
using EvtCyclic3::Index;
using EvtCyclic3::Pair;
using std::endl;
EvtLASSAmp::EvtLASSAmp( EvtDalitzPlot* dp, EvtCyclic3::Pair pair, double m0,
double g0, double a, double r, double cutoff,
std::string subtype ) :
EvtAmplitude<EvtDalitzPoint>(),
_pair( pair ),
_m0( m0 ),
_g0( g0 ),
_r( r ),
_a( a ),
_cutoff( cutoff ),
_subtype( subtype )
{
_dalitzSpace = dp;
double ma = dp->m( first( pair ) );
double mb = dp->m( second( pair ) );
double E0a = 0.5 * ( _m0 * _m0 + ma * ma - mb * mb ) / _m0;
_q0 = E0a * E0a - ma * ma;
assert( _q0 > 0 );
_q0 = sqrt( _q0 );
}
EvtComplex EvtLASSAmp::amplitude( const EvtDalitzPoint& dalitzPoint ) const
{
/*
Parameterization of Kpi S-wave using LASS scattering data.
- Nucl.Phys.B296, 493 (1988)
- W.Dunwoodie,http://www.slac.stanford.edu/~wmd/kpi_swave/kpi_swave_fit.note
m m0^2*Gamma0/q0
----------------- + exp(2*i*delta) * --------------------------------
q*cot(delta)-i*q m0^2-m^2 - i*m0*Gamma0*q/m*m0/q0
where q = momentum of K or pi in Kpi system
q*cot(delta) = 1/ a + 1/2 * [ r * q**2 ]
a = scattering length
r = effective range
*/
double s = dalitzPoint.q( _pair );
double m = sqrt( s );
double q = dalitzPoint.p( first( _pair ), _pair );
// elastic scattering
double qcotd = 1. / _a + 0.5 * _r * q * q;
EvtComplex lass_elastic = m < _cutoff ? m / ( qcotd - EvtComplex( 0, q ) )
: 0;
// relative phase
double cosd = 1;
double sind = 0;
if ( q > 0 ) {
cosd = qcotd * qcotd / ( q * q );
cosd = sqrt( cosd / ( 1 + cosd ) );
sind = sqrt( 1 - cosd * cosd );
}
EvtComplex lass_phase( cosd, sind );
lass_phase *= lass_phase;
// K*(1430)
double gamma = _g0 * q / m * _m0 / _q0;
EvtComplex lass_Kstar = ( _m0 * _m0 ) * ( _g0 / _q0 ) /
( _m0 * _m0 - m * m - EvtComplex( 0., _m0 * gamma ) );
EvtComplex theAmplitude( 0.0, 0.0 );
if ( _subtype == "LASS_ELASTIC" ) {
theAmplitude = lass_elastic;
} else if ( _subtype == "LASS_RESONANT" ) {
theAmplitude = lass_phase * lass_Kstar;
} else {
theAmplitude = lass_phase * lass_Kstar + lass_elastic;
}
return theAmplitude;
}
diff --git a/src/EvtGenBase/EvtMTRandomEngine.cpp b/src/EvtGenBase/EvtMTRandomEngine.cpp
index 7c0b46e..ed80981 100644
--- a/src/EvtGenBase/EvtMTRandomEngine.cpp
+++ b/src/EvtGenBase/EvtMTRandomEngine.cpp
@@ -1,38 +1,19 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2015 University of Warwick, UK
-//
-// Module: EvtMTRandomEngine
-//
-// Generate random numbers using the Mersenne-Twister MT19937.
-//
-// Modification history:
-//
-// John Back Aug 2015 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtMTRandomEngine.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <iostream>
EvtMTRandomEngine::EvtMTRandomEngine( unsigned int seed ) :
engine_( seed ), distribution_( URDist( 0.0, 1.0 ) )
{
EvtGenReport( EVTGEN_INFO, "EvtMTRandomEngine" )
<< "Mersenne-Twister random number generator with seed = " << seed
<< std::endl;
}
double EvtMTRandomEngine::random()
{
return distribution_( engine_ );
}
diff --git a/src/EvtGenBase/EvtMTree.cpp b/src/EvtGenBase/EvtMTree.cpp
index 9ea1605..16eeaad 100644
--- a/src/EvtGenBase/EvtMTree.cpp
+++ b/src/EvtGenBase/EvtMTree.cpp
@@ -1,448 +1,444 @@
#include "EvtGenBase/EvtMTree.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtKine.hh"
+#include "EvtGenBase/EvtMBreitWigner.hh"
+#include "EvtGenBase/EvtMHelAmp.hh"
+#include "EvtGenBase/EvtMTrivialLS.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
-// Make sure to include Lineshapes here
-#include "EvtGenBase/EvtMBreitWigner.hh"
-#include "EvtGenBase/EvtMTrivialLS.hh"
-
-// Make sure to include Parametrizations
-#include "EvtGenBase/EvtMHelAmp.hh"
-
using std::endl;
EvtMTree::EvtMTree( const EvtId* idtbl, unsigned int ndaug )
{
for ( size_t i = 0; i < ndaug; ++i ) {
_lbltbl.push_back( EvtPDL::name( idtbl[i] ) );
}
}
EvtMTree::~EvtMTree()
{
for ( size_t i = 0; i < _root.size(); ++i )
delete _root[i];
}
bool EvtMTree::parsecheck( char arg, const string& chars )
{
bool ret = false;
for ( size_t i = 0; i < chars.size(); ++i ) {
ret = ret || ( chars[i] == arg );
}
return ret;
}
vector<EvtMNode*> EvtMTree::makeparticles( const string& strid )
{
vector<EvtMNode*> particles;
vector<int> labels;
for ( size_t i = 0; i < _lbltbl.size(); ++i ) {
if ( _lbltbl[i] == strid )
labels.push_back( i );
}
if ( labels.size() == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Error unknown particle label " << strid << endl;
::abort();
}
for ( size_t i = 0; i < labels.size(); ++i )
particles.push_back(
new EvtMParticle( labels[i], EvtPDL::getId( strid ) ) );
return particles;
}
EvtMRes* EvtMTree::makeresonance( const EvtId& id, const string& ls,
const vector<string>& lsarg, const string& type,
const vector<EvtComplex>& amps,
const vector<EvtMNode*>& children )
{
EvtMRes* resonance = NULL;
EvtMLineShape* lineshape = NULL;
if ( ls == "BREITWIGNER" ) {
lineshape = new EvtMBreitWigner( id, lsarg );
} else if ( ls == "TRIVIAL" ) {
lineshape = new EvtMTrivialLS( id, lsarg );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Lineshape " << lineshape << " not recognized." << endl;
::abort();
}
if ( type == "HELAMP" ) {
resonance = new EvtMHelAmp( id, lineshape, children, amps );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Model " << type << " not recognized." << endl;
::abort();
}
lineshape->setres( resonance );
return resonance;
}
void EvtMTree::parseerror( bool flag, ptype& c_iter, ptype& c_begin, ptype& c_end )
{
if ( !flag )
return;
string error;
while ( c_begin != c_end ) {
if ( c_begin == c_iter ) {
error += '_';
error += *c_begin;
error += '_';
} else
error += *c_begin;
++c_begin;
}
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Parse error at: " << error << endl;
::abort();
}
string EvtMTree::parseId( ptype& c_iter, ptype& c_begin, ptype& c_end )
{
string strid;
while ( c_iter != c_end ) {
parseerror( parsecheck( *c_iter, ")[]," ), c_iter, c_begin, c_end );
if ( *c_iter == '(' ) {
++c_iter;
return strid;
}
strid += *c_iter;
++c_iter;
}
return strid;
}
string EvtMTree::parseKey( ptype& c_iter, ptype& c_begin, ptype& c_end )
{
string key;
while ( *c_iter != ',' ) {
parseerror( c_iter == c_end || parsecheck( *c_iter, "()[]" ), c_iter,
c_begin, c_end );
key += *c_iter;
++c_iter;
}
++c_iter;
parseerror( c_iter == c_end, c_iter, c_begin, c_end );
return key;
}
vector<string> EvtMTree::parseArg( ptype& c_iter, ptype& c_begin, ptype& c_end )
{
vector<string> arg;
if ( *c_iter != '[' )
return arg;
++c_iter;
string temp;
while ( true ) {
parseerror( c_iter == c_end || parsecheck( *c_iter, "[()" ), c_iter,
c_begin, c_end );
if ( *c_iter == ']' ) {
++c_iter;
if ( temp.size() > 0 )
arg.push_back( temp );
break;
}
if ( *c_iter == ',' ) {
arg.push_back( temp );
temp.clear();
++c_iter;
continue;
}
temp += *c_iter;
++c_iter;
}
parseerror( c_iter == c_end || *c_iter != ',', c_iter, c_begin, c_end );
++c_iter;
return arg;
}
vector<EvtComplex> EvtMTree::parseAmps( ptype& c_iter, ptype& c_begin,
ptype& c_end )
{
vector<string> parg = parseArg( c_iter, c_begin, c_end );
parseerror( parg.size() == 0, c_iter, c_begin, c_end );
// Get parametrization amplitudes
vector<string>::iterator amp_iter = parg.begin();
vector<string>::iterator amp_end = parg.end();
vector<EvtComplex> amps;
while ( amp_iter != amp_end ) {
const char* nptr;
char* endptr = NULL;
double amp = 0.0, phase = 0.0;
nptr = ( *amp_iter ).c_str();
amp = strtod( nptr, &endptr );
parseerror( nptr == endptr, c_iter, c_begin, c_end );
++amp_iter;
parseerror( amp_iter == amp_end, c_iter, c_begin, c_end );
nptr = ( *amp_iter ).c_str();
phase = strtod( nptr, &endptr );
parseerror( nptr == endptr, c_iter, c_begin, c_end );
amps.push_back( amp * exp( EvtComplex( 0.0, phase ) ) );
++amp_iter;
}
return amps;
}
vector<EvtMNode*> EvtMTree::duplicate( const vector<EvtMNode*>& list ) const
{
vector<EvtMNode*> newlist;
for ( size_t i = 0; i < list.size(); ++i )
newlist.push_back( list[i]->duplicate() );
return newlist;
}
// XXX Warning it is unsafe to use cl1 after a call to this function XXX
vector<vector<EvtMNode*>> EvtMTree::unionChildren( const string& nodestr,
vector<vector<EvtMNode*>>& cl1 )
{
vector<EvtMNode*> cl2 = parsenode( nodestr, false );
vector<vector<EvtMNode*>> cl;
if ( cl1.size() == 0 ) {
for ( size_t i = 0; i < cl2.size(); ++i ) {
vector<EvtMNode*> temp( 1, cl2[i] );
cl.push_back( temp );
}
return cl;
}
for ( size_t i = 0; i < cl1.size(); ++i ) {
for ( size_t j = 0; j < cl2.size(); ++j ) {
vector<EvtMNode*> temp;
temp = duplicate( cl1[i] );
temp.push_back( cl2[j]->duplicate() );
cl.push_back( temp );
}
}
for ( size_t i = 0; i < cl1.size(); ++i )
for ( size_t j = 0; j < cl1[i].size(); ++j )
delete cl1[i][j];
for ( size_t i = 0; i < cl2.size(); ++i )
delete ( cl2[i] );
return cl;
}
vector<vector<EvtMNode*>> EvtMTree::parseChildren( ptype& c_iter,
ptype& c_begin, ptype& c_end )
{
bool test = true;
int pcount = 0;
string nodestr;
vector<vector<EvtMNode*>> children;
parseerror( c_iter == c_end || *c_iter != '[', c_iter, c_begin, c_end );
++c_iter;
while ( test ) {
parseerror( c_iter == c_end || pcount < 0, c_iter, c_begin, c_end );
switch ( *c_iter ) {
case ')':
--pcount;
nodestr += *c_iter;
break;
case '(':
++pcount;
nodestr += *c_iter;
break;
case ']':
if ( pcount == 0 ) {
children = unionChildren( nodestr, children );
test = false;
} else {
nodestr += *c_iter;
}
break;
case ',':
if ( pcount == 0 ) {
children = unionChildren( nodestr, children );
nodestr.clear();
} else {
nodestr += *c_iter;
}
break;
default:
nodestr += *c_iter;
break;
}
++c_iter;
}
return children;
}
vector<EvtMNode*> EvtMTree::parsenode( const string& args, bool rootnode )
{
ptype c_iter, c_begin, c_end;
c_iter = c_begin = args.begin();
c_end = args.end();
string strid = parseId( c_iter, c_begin, c_end );
// Case 1: Particle
if ( c_iter == c_end )
return makeparticles( strid );
// Case 2: Resonance - parse further
EvtId id = EvtPDL::getId( strid );
parseerror( EvtId( -1, -1 ) == id, c_iter, c_begin, c_end );
string ls;
vector<string> lsarg;
if ( rootnode ) {
ls = "TRIVIAL";
} else {
// Get lineshape (e.g. BREITWIGNER)
ls = parseKey( c_iter, c_begin, c_end );
lsarg = parseArg( c_iter, c_begin, c_end );
}
// Get resonance parametrization type (e.g. HELAMP)
string type = parseKey( c_iter, c_begin, c_end );
vector<EvtComplex> amps = parseAmps( c_iter, c_begin, c_end );
// Children
vector<vector<EvtMNode*>> children = parseChildren( c_iter, c_begin, c_end );
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << children.size() << endl;
vector<EvtMNode*> resonances;
for ( size_t i = 0; i < children.size(); ++i ) {
resonances.push_back(
makeresonance( id, ls, lsarg, type, amps, children[i] ) );
}
parseerror( c_iter == c_end || *c_iter != ')', c_iter, c_begin, c_end );
return resonances;
}
bool EvtMTree::validTree( const EvtMNode* root ) const
{
vector<int> res = root->getresonance();
vector<bool> check( res.size(), false );
for ( size_t i = 0; i < res.size(); ++i ) {
check[res[i]] = true;
}
bool ret = true;
for ( size_t i = 0; i < check.size(); ++i ) {
ret = ret && check[i];
}
return ret;
}
void EvtMTree::addtree( const string& str )
{
vector<EvtMNode*> roots = parsenode( str, true );
_norm = 0;
for ( size_t i = 0; i < roots.size(); ++i ) {
if ( validTree( roots[i] ) ) {
_root.push_back( roots[i] );
_norm = _norm + 1;
} else
delete roots[i];
}
_norm = 1.0 / sqrt( _norm );
}
EvtSpinAmp EvtMTree::getrotation( EvtParticle* p ) const
{
// Set up the rotation matrix for the root particle (for now)
EvtSpinDensity sd = p->rotateToHelicityBasis();
EvtSpinType::spintype type = EvtPDL::getSpinType( _root[0]->getid() );
int twospin = EvtSpinType::getSpin2( type );
vector<EvtSpinType::spintype> types( 2, type );
EvtSpinAmp rot( types, EvtComplex( 0.0, 0.0 ) );
vector<int> index = rot.iterallowedinit();
do {
rot( index ) = sd.get( ( index[0] + twospin ) / 2,
( index[1] + twospin ) / 2 );
} while ( rot.iterateallowed( index ) );
return rot;
}
EvtSpinAmp EvtMTree::amplitude( EvtParticle* p ) const
{
vector<EvtVector4R> product;
for ( size_t i = 0; i < p->getNDaug(); ++i )
product.push_back( p->getDaug( i )->getP4Lab() );
if ( _root.size() == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "No decay tree present." << endl;
::abort();
}
EvtSpinAmp amp = _root[0]->amplitude( product );
for ( size_t i = 1; i < _root.size(); ++i ) {
// Assume that helicity amplitude is returned
amp += _root[i]->amplitude( product );
}
amp = _norm * amp;
//ryd
return amp;
// Do Rotation to Proper Frame
EvtSpinAmp newamp = getrotation( p );
newamp.extcont( amp, 1, 0 );
return newamp;
}
diff --git a/src/EvtGenBase/EvtManyDeltaFuncLineShape.cpp b/src/EvtGenBase/EvtManyDeltaFuncLineShape.cpp
index 3015206..ca9f3d8 100644
--- a/src/EvtGenBase/EvtManyDeltaFuncLineShape.cpp
+++ b/src/EvtGenBase/EvtManyDeltaFuncLineShape.cpp
@@ -1,111 +1,91 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtLineShape.cc
-//
-// Description: Store particle properties for one particle.
-//
-// Modification history:
-//
-// Lange March 10, 2001 Module created
-// Dvoretskii June 03, 2002 Reimplemented rollMass()
-//
-//------------------------------------------------------------------------
#include "EvtGenBase/EvtManyDeltaFuncLineShape.hh"
#include "EvtGenBase/EvtBlattWeisskopf.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtPropBreitWigner.hh"
#include "EvtGenBase/EvtPropBreitWignerRel.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtTwoBodyVertex.hh"
EvtManyDeltaFuncLineShape::EvtManyDeltaFuncLineShape()
{
}
EvtManyDeltaFuncLineShape::EvtManyDeltaFuncLineShape( double mass, double width,
double maxRange,
EvtSpinType::spintype sp )
{
_mass = mass;
_width = width;
_spin = sp;
_maxRange = maxRange;
double maxdelta = width;
_massMax = mass + maxdelta;
_massMin = mass - maxdelta;
if ( _massMin < 0. )
_massMin = 0.;
}
EvtManyDeltaFuncLineShape::EvtManyDeltaFuncLineShape(
const EvtManyDeltaFuncLineShape& x ) :
EvtAbsLineShape( x )
{
_mass = x._mass;
_width = x._width;
_spin = x._spin;
_massMax = x._massMax;
_massMin = x._massMin;
_maxRange = x._maxRange;
}
EvtManyDeltaFuncLineShape& EvtManyDeltaFuncLineShape::operator=(
const EvtManyDeltaFuncLineShape& x )
{
_mass = x._mass;
_massMax = x._massMax;
_massMin = x._massMin;
_width = x._width;
_maxRange = x._maxRange;
_spin = x._spin;
return *this;
}
EvtAbsLineShape* EvtManyDeltaFuncLineShape::clone()
{
return new EvtManyDeltaFuncLineShape( *this );
}
double EvtManyDeltaFuncLineShape::getMassProb( double mass, double massPar,
int nDaug, double* massDau )
{
double dTotMass = 0.;
int i;
for ( i = 0; i < nDaug; i++ ) {
dTotMass += massDau[i];
}
if ( ( mass < dTotMass ) )
return 0.;
if ( massPar > 0.0000000001 ) {
if ( mass > massPar )
return 0.;
}
return 1.;
}
double EvtManyDeltaFuncLineShape::getRandMass( EvtId*, int, EvtId*, EvtId*,
double, double* )
{
int nDelta = int( ( _massMax - _massMin ) / _width );
nDelta++;
double rand = EvtRandom::Flat( 0., float( nDelta ) );
int randI = int( rand );
return _massMin + randI * _width;
}
diff --git a/src/EvtGenBase/EvtMassAmp.cpp b/src/EvtGenBase/EvtMassAmp.cpp
index 3e9557e..c60ed12 100644
--- a/src/EvtGenBase/EvtMassAmp.cpp
+++ b/src/EvtGenBase/EvtMassAmp.cpp
@@ -1,103 +1,88 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtMassAmp.cpp,v 1.3 2009-03-16 15:47:10 robbep Exp $
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module creator:
-// Alexei Dvoretskii, Caltech, 2001-2002.
-//-----------------------------------------------------------------------
#include "EvtGenBase/EvtMassAmp.hh"
#include "EvtGenBase/EvtPatches.hh"
EvtMassAmp::EvtMassAmp( const EvtPropBreitWignerRel& prop,
const EvtTwoBodyVertex& vd ) :
EvtAmplitude<EvtPoint1D>(),
_prop( prop ),
_vd( vd ),
_useBirthFact( false ),
_useDeathFact( false ),
_useBirthFactFF( false ),
_useDeathFactFF( false )
{
}
EvtMassAmp::EvtMassAmp( const EvtMassAmp& other ) :
EvtAmplitude<EvtPoint1D>( other ),
_prop( other._prop ),
_vd( other._vd ),
_vb( other._vb ? new EvtTwoBodyVertex( *other._vb ) : nullptr ),
_useBirthFact( other._useBirthFact ),
_useDeathFact( other._useDeathFact ),
_useBirthFactFF( other._useBirthFactFF ),
_useDeathFactFF( other._useDeathFactFF )
{
}
EvtMassAmp& EvtMassAmp::operator=( const EvtMassAmp& other )
{
EvtAmplitude<EvtPoint1D>::operator=( other );
_prop = other._prop;
_vd = other._vd;
_vb.reset( other._vb ? new EvtTwoBodyVertex( *other._vb ) : nullptr );
_useBirthFact = other._useBirthFact;
_useDeathFact = other._useDeathFact;
_useBirthFactFF = other._useBirthFactFF;
_useDeathFactFF = other._useDeathFactFF;
return *this;
}
EvtComplex EvtMassAmp::amplitude( const EvtPoint1D& p ) const
{
// Modified vertex
double m = p.value();
// keep things from crashing..
if ( m < ( _vd.mA() + _vd.mB() ) )
return EvtComplex( 0., 0. );
EvtTwoBodyKine vd( _vd.mA(), _vd.mB(), m );
// Compute mass-dependent width for relativistic propagator
EvtPropBreitWignerRel bw( _prop.m0(), _prop.g0() * _vd.widthFactor( vd ) );
EvtComplex amp = bw.evaluate( m );
// Birth vertex factors
if ( _useBirthFact ) {
assert( _vb );
if ( ( m + _vb->mB() ) < _vb->mAB() ) {
EvtTwoBodyKine vb( m, _vb->mB(), _vb->mAB() );
amp *= _vb->phaseSpaceFactor( vb, EvtTwoBodyKine::AB );
amp *= sqrt( ( vb.p() / _vb->pD() ) );
if ( _useBirthFactFF ) {
assert( _vb );
amp *= _vb->formFactor( vb );
}
} else {
if ( _vb->L() != 0 )
amp = 0.;
}
}
// Decay vertex factors
if ( _useDeathFact ) {
amp *= _vd.phaseSpaceFactor( vd, EvtTwoBodyKine::AB );
amp *= sqrt( ( vd.p() / _vd.pD() ) );
}
if ( _useDeathFactFF )
amp *= _vd.formFactor( vd );
return amp;
}
diff --git a/src/EvtGenBase/EvtModel.cpp b/src/EvtGenBase/EvtModel.cpp
index d642a53..62d11a3 100644
--- a/src/EvtGenBase/EvtModel.cpp
+++ b/src/EvtGenBase/EvtModel.cpp
@@ -1,102 +1,82 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtModel.cc
-//
-// Description:
-//
-// Modification history:
-//
-// RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtModel.hh"
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParser.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtParticleDecayList.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include <assert.h>
#include <ctype.h>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <stdlib.h>
#include <string>
using std::fstream;
EvtModel* EvtModel::_instance = 0;
EvtModel::EvtModel()
{
}
EvtDecayBase* EvtModel::getFcn( std::string model_name )
{
EvtDecayBase* model = 0;
if ( _modelNameHash.find( model_name ) != _modelNameHash.end() ) {
model = _modelNameHash[model_name];
}
if ( model == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Did not find the right model:" << model_name.c_str() << "\n";
return 0;
}
return model->clone();
}
void EvtModel::registerModel( EvtDecayBase* prototype )
{
std::string modelName = prototype->getName();
_modelNameHash[modelName] = prototype;
std::string commandName = prototype->commandName();
if ( commandName != "" ) {
_commandNameHash[commandName] = prototype;
}
}
int EvtModel::isModel( std::string model_name )
{
if ( _modelNameHash.find( model_name ) != _modelNameHash.end() ) {
return 1;
}
return 0;
}
int EvtModel::isCommand( std::string cmd )
{
if ( _commandNameHash.find( cmd ) != _commandNameHash.end() ) {
return 1;
}
return 0;
}
void EvtModel::storeCommand( std::string cmd, std::string cnfgstr )
{
EvtDecayBase* model = 0;
if ( _commandNameHash.find( cmd ) != _commandNameHash.end() ) {
model = _commandNameHash[cmd];
}
assert( model != 0 );
model->command( cnfgstr );
}
diff --git a/src/EvtGenBase/EvtModelAlias.cpp b/src/EvtGenBase/EvtModelAlias.cpp
index 5e6e9ee..86f7aba 100644
--- a/src/EvtGenBase/EvtModelAlias.cpp
+++ b/src/EvtGenBase/EvtModelAlias.cpp
@@ -1,54 +1,34 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2002 Caltech, LLNL
-//
-// Module: EvtGen/EvtModelAlias.cc
-//
-// Description:Class to keep track of model aliases
-// read in from the decay table
-//
-// Modification history:
-//
-// Lange January 19, 2002 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenBase/EvtModelAlias.hh"
#include "EvtGenBase/EvtPatches.hh"
EvtModelAlias::EvtModelAlias( std::string alias, std::string model,
std::vector<std::string> args ) :
_aliasName( alias ), _model( model ), _modelArgs( args )
{
}
EvtModelAlias::EvtModelAlias( const EvtModelAlias& copyMe ) :
_aliasName( copyMe._aliasName ),
_model( copyMe._model ),
_modelArgs( copyMe._modelArgs )
{
}
EvtModelAlias EvtModelAlias::operator=( const EvtModelAlias& copyMe )
{
_aliasName = copyMe._aliasName;
_model = copyMe._model;
_modelArgs = copyMe._modelArgs;
return *this;
}
std::vector<std::string> EvtModelAlias::getArgList()
{
return _modelArgs;
}
diff --git a/src/EvtGenBase/EvtMultiChannelParser.cpp b/src/EvtGenBase/EvtMultiChannelParser.cpp
index 196be58..5a86775 100644
--- a/src/EvtGenBase/EvtMultiChannelParser.cpp
+++ b/src/EvtGenBase/EvtMultiChannelParser.cpp
@@ -1,254 +1,239 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtMultiChannelParser.cpp,v 1.4 2009-03-16 15:46:01 robbep Exp $
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module creator:
-// Alexei Dvoretskii, Caltech, 2001-2002.
-//-----------------------------------------------------------------------
#include "EvtGenBase/EvtMultiChannelParser.hh"
#include "EvtGenBase/EvtDecayMode.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParser.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <assert.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <vector>
using std::string;
using std::vector;
EvtDecayMode EvtMultiChannelParser::getDecayMode( const char* file )
{
// Open file, read tokens
EvtParser parser;
parser.read( file );
// Seek Decay
int i = 0;
int N = parser.getNToken();
while ( i < N ) {
std::string tok = parser.getToken( i++ );
if ( tok == std::string( "Decay" ) )
break;
}
// Get mother
string mother = string( parser.getToken( i++ ).c_str() );
std::string bf = parser.getToken( i++ );
vector<string> dauV;
// Get daughters
while ( 1 ) {
std::string d = parser.getToken( i++ );
if ( EvtPDL::getStdHep( EvtPDL::getId( d.c_str() ) ) == 0 )
break;
dauV.push_back( string( d.c_str() ) );
}
EvtDecayMode mode( mother, dauV );
printf( "Decay File defines mode %s\n", mode.mode().c_str() );
return mode;
}
void EvtMultiChannelParser::parse( const char* file, const char* model )
{
// Open file, read tokens
EvtParser parser;
parser.read( file );
// Get parameters (tokens between the model name and ;)
int i = 0;
int N = parser.getNToken();
// Seek the model name
while ( i < N ) {
std::string tok = parser.getToken( i++ );
if ( tok == std::string( model ) )
break;
}
if ( i == N ) {
printf( "No model %s found in decay file %s", model, file );
exit( 0 );
}
// Add all tokens up to a semicolon to vector
std::vector<std::string> v;
while ( i < N ) {
std::string tok = parser.getToken( i++ );
if ( tok == std::string( ";" ) )
break;
else
v.push_back( tok );
}
if ( i == N ) {
printf( "No terminating ; found in decay file %s", file );
assert( 0 );
}
parse( v );
}
void EvtMultiChannelParser::parse( const std::vector<std::string>& v )
{
// place holder for strtod
char** tc = 0;
// Get PDF maximum or number of points to
// use in the scan.
if ( v[0] == std::string( "MAXPDF" ) ) {
_pdfMax = strtod( v[1].c_str(), tc );
if ( _pdfMax <= 0 ) {
printf( "Bad pdfMax=%f\n", _pdfMax );
assert( 0 );
}
} else if ( v[0] == std::string( "SCANPDF" ) ) {
_nScan = atoi( v[1].c_str() );
} else {
printf( "Error parsing decay file\n" );
assert( 0 );
}
// Now parse the rest of file for amplitude specifications.
bool conjugate = false;
size_t i = 2;
assert( isKeyword( v[2] ) );
while ( i < v.size() ) {
size_t i0 = i;
// Switch to conjugate amplitudes after keyword
if ( v[i] == std::string( "CONJUGATE" ) ) {
assert( conjugate == false );
conjugate = true;
i++;
_dm = strtod( v[i++].c_str(), tc );
_mixAmpli = strtod( v[i++].c_str(), tc );
_mixPhase = strtod( v[i++].c_str(), tc );
}
if ( i >= v.size() )
break;
std::vector<std::string> params;
EvtComplex c;
int format;
if ( !conjugate && v[i] == std::string( "AMPLITUDE" ) ) {
while ( !isKeyword( v[++i] ) )
params.push_back( v[i] );
_amp.push_back( params );
parseComplexCoef( i, v, c, format );
_ampCoef.push_back( c );
_coefFormat.push_back( format );
continue;
} else if ( conjugate && v[i] == std::string( "AMPLITUDE" ) ) {
while ( !isKeyword( v[++i] ) )
params.push_back( v[i] );
_ampConj.push_back( params );
parseComplexCoef( i, v, c, format );
_ampConjCoef.push_back( c );
_coefConjFormat.push_back( format );
continue;
} else {
printf( "Expect keyword, found parameter %s\n", v[i].c_str() );
assert( 0 );
}
assert( i > i0 );
_unused( i0 );
}
printf( "PARSING SUCCESSFUL\n" );
printf( "%d amplitude terms\n", (int)_amp.size() );
printf( "%d conj amplitude terms\n", (int)_ampConj.size() );
}
void EvtMultiChannelParser::parseComplexCoef( size_t& i,
const std::vector<std::string>& v,
EvtComplex& c, int& format )
{
// place holder for strtod
char** tc = 0;
std::string coefString = v[i++];
assert( coefString == std::string( "COEFFICIENT" ) );
if ( v[i] == std::string( "POLAR_DEG" ) ) {
double mag = strtod( v[i + 1].c_str(), tc );
double phaseRad = strtod( v[i + 2].c_str(), tc ) * EvtConst::pi / 180.0;
i += 3;
c = EvtComplex( mag * cos( phaseRad ), mag * sin( phaseRad ) );
format = POLAR_DEG;
} else if ( v[i] == std::string( "POLAR_RAD" ) ) {
double mag = strtod( v[i + 1].c_str(), tc );
double phaseRad = strtod( v[i + 2].c_str(), tc );
i += 3;
c = EvtComplex( mag * cos( phaseRad ), mag * sin( phaseRad ) );
format = POLAR_RAD;
} else if ( v[i] == std::string( "CARTESIAN" ) ) {
double re = strtod( v[i + 1].c_str(), tc );
double im = strtod( v[i + 2].c_str(), tc );
i += 3;
c = EvtComplex( re, im );
format = CARTESIAN;
} else {
printf( "Invalid format %s for complex coefficient\n", v[i].c_str() );
exit( 0 );
}
}
double EvtMultiChannelParser::parseRealCoef( int& i,
const std::vector<std::string>& v )
{
// place holder for strtod
char** tc = 0;
double value = 0;
if ( v[i] == std::string( "COEFFICIENT" ) ) {
value = strtod( v[i + 1].c_str(), tc );
} else
assert( 0 );
i += 2;
assert( value > 0. );
return value;
}
bool EvtMultiChannelParser::isKeyword( const std::string& s )
{
if ( s == std::string( "AMPLITUDE" ) )
return true;
if ( s == std::string( "CONJUGATE" ) )
return true;
if ( s == std::string( "COEFFICIENT" ) )
return true;
return false;
}
diff --git a/src/EvtGenBase/EvtNeutrinoParticle.cpp b/src/EvtGenBase/EvtNeutrinoParticle.cpp
index 5d64cf3..1cec571 100644
--- a/src/EvtGenBase/EvtNeutrinoParticle.cpp
+++ b/src/EvtGenBase/EvtNeutrinoParticle.cpp
@@ -1,138 +1,118 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtNeutrinoParticle.cc
-//
-// Description: Class to describe neutrinos
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtNeutrinoParticle.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <iostream>
#include <math.h>
#include <stdlib.h>
using std::endl;
void EvtNeutrinoParticle::init( EvtId part_n, const EvtVector4R& p4 )
{
_validP4 = true;
setp( p4 );
setpart_num( part_n );
double e, px, py, pz;
e = p4.get( 0 );
px = p4.get( 1 );
py = p4.get( 2 );
pz = p4.get( 3 );
if ( EvtPDL::getStdHep( part_n ) == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Error in EvtNeutrinoParticle::init, part_n=" << part_n.getId()
<< endl;
}
if ( EvtPDL::getStdHep( part_n ) > 0 ) {
double beta, alpha, p2, norm;
// See Sakurai p. 167-169
// and Renton p. 126
p2 = px * px + py * py + pz * pz;
beta = acos( pz / sqrt( p2 ) );
alpha = atan2( py, px );
norm = sqrt( 2 * e );
double cosb, sinb, cosa, sina;
cosb = cos( 0.5 * beta );
sinb = sin( 0.5 * beta );
cosa = cos( 0.5 * alpha );
sina = sin( 0.5 * alpha );
spinor_parent.set( -norm * sinb * EvtComplex( cosa, -sina ),
norm * cosb * EvtComplex( cosa, sina ),
norm * sinb * EvtComplex( cosa, -sina ),
-norm * cosb * EvtComplex( cosa, sina ) );
} else {
px = -p4.get( 1 );
py = -p4.get( 2 );
pz = -p4.get( 3 );
double pn, sqrpn;
pn = e;
sqrpn = sqrt( pn - pz );
spinor_parent.set( ( 1.0 / sqrpn ) * EvtComplex( px, -py ),
EvtComplex( sqrpn, 0.0 ),
( -1.0 / sqrpn ) * EvtComplex( px, -py ),
-EvtComplex( sqrpn, 0.0 ) );
}
setLifetime();
}
EvtDiracSpinor EvtNeutrinoParticle::spParentNeutrino() const
{
return spinor_parent;
}
EvtDiracSpinor EvtNeutrinoParticle::spNeutrino() const
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Tried to get neutrino spinor in restframe";
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Will terminate execution.";
::abort();
return spinor_rest;
}
EvtSpinDensity EvtNeutrinoParticle::rotateToHelicityBasis() const
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "rotateToHelicityBasis not implemented for neutrino.";
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Will terminate execution.";
::abort();
EvtSpinDensity rho;
return rho;
}
EvtSpinDensity EvtNeutrinoParticle::rotateToHelicityBasis( double, double,
double ) const
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "rotateToHelicityBasis(alpha,beta,gama) not implemented for neutrino.";
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Will terminate execution.";
::abort();
EvtSpinDensity R;
R.setDiag( 1 );
return R;
}
diff --git a/src/EvtGenBase/EvtNonresonantAmp.cpp b/src/EvtGenBase/EvtNonresonantAmp.cpp
index 222f140..10494ba 100644
--- a/src/EvtGenBase/EvtNonresonantAmp.cpp
+++ b/src/EvtGenBase/EvtNonresonantAmp.cpp
@@ -1,86 +1,79 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * Author: Denis Dujmic, ddujmic@slac.stanford.edu
- *
- * Copyright (C) 2005 SLAC
- *******************************************************************************/
+#include "EvtGenBase/EvtNonresonantAmp.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDalitzCoord.hh"
-#include "EvtGenBase/EvtNonresonantAmp.hh"
+#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtdFunction.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
using EvtCyclic3::Index;
using EvtCyclic3::Pair;
using std::endl;
EvtNonresonantAmp::EvtNonresonantAmp( EvtDalitzPlot* dp,
EvtPto3PAmp::NumType type,
EvtCyclic3::Pair pair1, double par1,
EvtCyclic3::Pair pair2, double par2,
EvtSpinType::spintype spin ) :
EvtAmplitude<EvtDalitzPoint>(),
_dalitzSpace{dp},
_type( type ),
_pair1( pair1 ),
_pair2( pair2 ),
_par1( par1 ),
_par2( par2 ),
_spin( spin )
{
}
EvtComplex EvtNonresonantAmp::amplitude( const EvtDalitzPoint& dalitzPoint ) const
{
// flat model
if ( _type == EvtPto3PAmp::NONRES ) {
return 1;
}
// "linear model" (prop. to m^2)
else if ( _type == EvtPto3PAmp::NONRES_LIN ) {
return dalitzPoint.q( _pair1 );
}
// Chen-Chua-Soni
else if ( _type == EvtPto3PAmp::NONRES_CCS ) {
double s = dalitzPoint.q( _pair1 );
double smin = _dalitzSpace->qAbsMin( _pair1 );
return sqrt( s - smin ) / ( s * log( s * _par1 ) );
}
// exp{par*m^2) (Belle model, Garmash et al, PRD71)
else if ( _type == EvtPto3PAmp::NONRES_EXP ) {
return exp( _par1 * dalitzPoint.q( _pair1 ) );
}
// exp(par1*m12^2 + par2*m13^2) (Belle model, Garmash et al, PRD71)
else if ( _type == EvtPto3PAmp::NONRES_EXP_ADD ) {
return exp( _par1 * dalitzPoint.q( _pair1 ) +
_par2 * dalitzPoint.q( _pair2 ) );
}
// Laura model (P.Harrison et al, BAD806)
else if ( _type == EvtPto3PAmp::NONRES_LAURA ) {
double m = sqrt( dalitzPoint.q( _pair1 ) );
double mmin = sqrt( _dalitzSpace->qAbsMin( _pair1 ) );
double dm = m - mmin;
assert( dm > 0 );
double cosTh = 1;
int ispin = EvtSpinType::getSpin2( _spin );
if ( ispin > 0 ) {
cosTh = dalitzPoint.cosTh( EvtCyclic3::next( _pair1 ), _pair1 );
if ( ispin > 2 )
cosTh *= cosTh;
}
return pow( dm, _par1 ) * exp( dm * _par2 ) * cosTh;
}
return 0;
}
diff --git a/src/EvtGenBase/EvtOrthogVector.cpp b/src/EvtGenBase/EvtOrthogVector.cpp
index 12e2677..0252c52 100644
--- a/src/EvtGenBase/EvtOrthogVector.cpp
+++ b/src/EvtGenBase/EvtOrthogVector.cpp
@@ -1,126 +1,107 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, LLNL
-//
-// Module: EvtGen/EvtOrthogVector.hh
-//
-// Description:
-//
-// Modification history:
-//
-// Lange August 11, 2000 Created
-//
-//------------------------------------------------------------------------
#include "EvtGenBase/EvtOrthogVector.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <ctype.h>
#include <fstream>
#include <iostream>
#include <stdlib.h>
#include <string.h>
using std::fstream;
EvtOrthogVector::EvtOrthogVector( int n, std::vector<double>* vectors )
{
_dimen = n;
_holder.resize( n );
std::vector<int> temp;
int i;
for ( i = 0; i < n; i++ ) {
_orthogVector.push_back( 0. );
temp.push_back( i );
}
findOrthog( _dimen, temp, vectors );
}
void EvtOrthogVector::findOrthog( int dim, std::vector<int> invect,
std::vector<double>* vectors )
{
if ( dim == 2 ) {
_holder[0] = invect[0];
_holder[1] = invect[1];
int sign = findEvenOddSwaps();
{
double addition = 1;
int i;
for ( i = 1; i < _dimen; i++ ) {
addition *= vectors[i - 1][_holder[i]];
}
addition *= sign;
_orthogVector[_holder[0]] += addition;
}
_holder[0] = invect[1];
_holder[1] = invect[0];
{
double addition = 1;
int i;
for ( i = 1; i < _dimen; i++ ) {
addition *= vectors[i - 1][_holder[i]];
}
addition *= sign;
_orthogVector[_holder[0]] -= addition;
}
return;
} else {
std::vector<int> temp( ( 2 * dim ) );
int i;
for ( i = 0; i < dim; i++ )
temp[i] = invect[i];
for ( i = 0; i < dim; i++ )
temp[i + dim] = invect[i];
for ( i = 0; i < dim; i++ ) {
_holder[dim - 1] = temp[dim - 1 + i];
std::vector<int> tempDim( ( dim - 1 ) );
int j;
for ( j = 0; j < ( dim - 1 ); j++ )
tempDim[j] = temp[j + i];
findOrthog( dim - 1, tempDim, vectors );
}
}
return;
}
int EvtOrthogVector::findEvenOddSwaps()
{
std::vector<int> temp( _dimen );
int i, j, nSwap;
for ( i = 0; i < _dimen; i++ )
temp[i] = _holder[i];
nSwap = 0;
for ( i = 0; i < ( _dimen - 1 ); i++ ) {
for ( j = i + 1; j < _dimen; j++ ) {
if ( temp[i] > temp[j] ) {
int duh = temp[j];
temp[j] = temp[i];
temp[i] = duh;
nSwap += 1;
}
}
}
nSwap -= ( nSwap / 2 ) * 2;
if ( nSwap )
return -1;
return 1;
}
diff --git a/src/EvtGenBase/EvtPDL.cpp b/src/EvtGenBase/EvtPDL.cpp
index e80538c..3fe185c 100644
--- a/src/EvtGenBase/EvtPDL.cpp
+++ b/src/EvtGenBase/EvtPDL.cpp
@@ -1,451 +1,431 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtPDL.cc
-//
-// Description: routines to store particle properties in EvtPDL structure.
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPartProp.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <ctype.h>
#include <fstream>
#include <iostream>
#include <stdlib.h>
#include <string.h>
using std::endl;
using std::fstream;
using std::ifstream;
static int first = 1;
unsigned int EvtPDL::_firstAlias;
int EvtPDL::_nentries;
std::map<std::string, int> EvtPDL::_particleNameLookup;
EvtPDL::EvtPDL()
{
if ( first != 0 ) {
first = 0;
_nentries = 0;
_firstAlias = 999999;
}
}
void EvtPDL::read( const char* fname )
{
readPDT( fname );
}
void EvtPDL::readPDT( const std::string fname )
{
ifstream indec;
indec.open( fname.c_str() );
char cmnd[100];
char xxxx[100];
char pname[100];
int stdhepid;
double mass;
double pwidth;
double pmaxwidth;
int chg3;
int spin2;
double ctau;
int lundkc;
EvtId i;
if ( !indec ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Could not open:" << fname.c_str() << "EvtPDL" << endl;
return;
}
do {
char ch, ch1;
do {
indec.get( ch );
if ( ch == '\n' )
indec.get( ch );
if ( ch != '*' ) {
indec.putback( ch );
} else {
while ( indec.get( ch1 ), ch1 != '\n' )
;
}
} while ( ch == '*' );
indec >> cmnd;
if ( strcmp( cmnd, "end" ) ) {
if ( !strcmp( cmnd, "add" ) ) {
indec >> xxxx;
indec >> xxxx;
indec >> pname;
indec >> stdhepid;
indec >> mass;
indec >> pwidth;
indec >> pmaxwidth;
indec >> chg3;
indec >> spin2;
indec >> ctau;
indec >> lundkc;
i = EvtId( _nentries, _nentries );
EvtPartProp tmp;
tmp.setSpinType( EvtSpinType::SCALAR );
if ( spin2 == 0 )
tmp.setSpinType( EvtSpinType::SCALAR );
if ( spin2 == 1 )
tmp.setSpinType( EvtSpinType::DIRAC );
if ( spin2 == 2 )
tmp.setSpinType( EvtSpinType::VECTOR );
if ( spin2 == 3 )
tmp.setSpinType( EvtSpinType::RARITASCHWINGER );
if ( spin2 == 4 )
tmp.setSpinType( EvtSpinType::TENSOR );
if ( spin2 == 5 )
tmp.setSpinType( EvtSpinType::SPIN5HALF );
if ( spin2 == 6 )
tmp.setSpinType( EvtSpinType::SPIN3 );
if ( spin2 == 7 )
tmp.setSpinType( EvtSpinType::SPIN7HALF );
if ( spin2 == 8 )
tmp.setSpinType( EvtSpinType::SPIN4 );
if ( spin2 == 2 && mass < 0.0001 )
tmp.setSpinType( EvtSpinType::PHOTON );
if ( spin2 == 1 && mass < 0.0001 )
tmp.setSpinType( EvtSpinType::NEUTRINO );
if ( !strcmp( pname, "string" ) ) {
tmp.setSpinType( EvtSpinType::STRING );
}
if ( !strcmp( pname, "vpho" ) ) {
tmp.setSpinType( EvtSpinType::VECTOR );
}
tmp.setId( i );
tmp.setIdChgConj( EvtId( -1, -1 ) );
tmp.setStdHep( stdhepid );
tmp.setLundKC( lundkc );
tmp.setName( pname );
if ( _particleNameLookup.find( std::string( pname ) ) !=
_particleNameLookup.end() ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The particle name:" << pname
<< " is already defined." << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution.";
::abort();
}
_particleNameLookup[std::string( pname )] = _nentries;
tmp.setctau( ctau );
tmp.setChg3( chg3 );
tmp.initLineShape( mass, pwidth, pmaxwidth );
partlist().push_back( tmp );
_nentries++;
}
// if find a set read information and discard it
if ( !strcmp( cmnd, "set" ) ) {
indec >> xxxx;
indec >> xxxx;
indec >> xxxx;
indec >> xxxx;
}
}
} while ( strcmp( cmnd, "end" ) );
setUpConstsPdt();
}
void EvtPDL::aliasChgConj( EvtId a, EvtId abar )
{
if ( EvtPDL::chargeConj( EvtId( a.getId(), a.getId() ) ) !=
EvtId( abar.getId(), abar.getId() ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Can't charge conjugate the two aliases:"
<< EvtPDL::name( a ).c_str() << " and "
<< EvtPDL::name( abar ).c_str() << endl;
::abort();
}
partlist()[a.getAlias()].setIdChgConj( abar );
partlist()[abar.getAlias()].setIdChgConj( a );
}
EvtId EvtPDL::chargeConj( EvtId id )
{
// EvtId idchg=partlist()[id.getAlias()].getIdChgConj();
int index = id.getAlias();
EvtId idchg;
if ( index > -1 ) {
idchg = partlist()[id.getAlias()].getIdChgConj();
}
if ( idchg != EvtId( -1, -1 ) )
return idchg;
if ( id.getId() != id.getAlias() ) {
if ( chargeConj( EvtId( id.getId(), id.getId() ) ) ==
EvtId( id.getId(), id.getId() ) ) {
partlist()[id.getAlias()].setIdChgConj( id );
return id;
}
}
if ( id.getAlias() != id.getId() ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Trying to charge conjugate alias particle:" << name( id ).c_str()
<< " without defining the alias!" << endl;
::abort();
}
for ( size_t i = 0; i < partlist().size(); i++ ) {
if ( partlist()[i].getStdHep() == -partlist()[id.getId()].getStdHep() ) {
partlist()[id.getId()].setIdChgConj( partlist()[i].getId() );
return partlist()[i].getId();
}
}
partlist()[id.getId()].setIdChgConj( id );
return id;
}
EvtId EvtPDL::evtIdFromStdHep( int stdhep )
{
for ( size_t i = 0; i < partlist().size(); i++ ) {
if ( partlist()[i].getStdHep() == stdhep )
return partlist()[i].getId();
}
return EvtId( -1, -1 );
}
void EvtPDL::alias( EvtId num, const std::string& newname )
{
if ( _firstAlias < partlist().size() ) {
for ( size_t i = _firstAlias; i < partlist().size(); i-- ) {
if ( newname == partlist()[i].getName() ) {
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "Redefining alias:" << newname.c_str()
<< " will be ignored!" << endl;
return;
}
}
} else {
_firstAlias = partlist().size();
}
partlist().push_back( partlist()[num.getId()] );
int entry = partlist().size() - 1;
partlist()[entry].setName( newname );
if ( _particleNameLookup.find( std::string( newname ) ) !=
_particleNameLookup.end() ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The particle name:" << newname << " is already defined." << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Will terminate execution.";
::abort();
}
_particleNameLookup[std::string( newname )] = entry;
partlist()[entry].setId( EvtId( num.getId(), entry ) );
//Lange - Dec7, 2003. Unset the charge conjugate.
partlist()[entry].setIdChgConj( EvtId( -1, -1 ) );
}
EvtId EvtPDL::getId( const std::string& name )
{
std::map<std::string, int>::iterator it = _particleNameLookup.find(
std::string( name ) );
if ( it == _particleNameLookup.end() )
return EvtId( -1, -1 );
return partlist()[it->second].getId();
}
void EvtPDL::setUpConstsPdt()
{
}
// Function to get EvtId from LundKC ( == Pythia Hep Code , KF )
EvtId EvtPDL::evtIdFromLundKC( int pythiaId )
{
unsigned int i;
for ( i = 0; i < partlist().size(); i++ ) {
if ( partlist()[i].getLundKC() == pythiaId )
return partlist()[i].getId();
}
return EvtId( -1, -1 );
}
double EvtPDL::getMeanMass( EvtId i )
{
return partlist()[i.getId()].getMass();
}
double EvtPDL::getMass( EvtId i )
{
return partlist()[i.getId()].rollMass();
}
double EvtPDL::getRandMass( EvtId i, EvtId* parId, int nDaug, EvtId* dauId,
EvtId* othDaugId, double maxMass, double* dauMasses )
{
return partlist()[i.getId()].getRandMass( parId, nDaug, dauId, othDaugId,
maxMass, dauMasses );
}
double EvtPDL::getMassProb( EvtId i, double mass, double massPar, int nDaug,
double* massDau )
{
return partlist()[i.getId()].getMassProb( mass, massPar, nDaug, massDau );
}
double EvtPDL::getMaxMass( EvtId i )
{
return partlist()[i.getId()].getMassMax();
}
double EvtPDL::getMinMass( EvtId i )
{
return partlist()[i.getId()].getMassMin();
}
double EvtPDL::getMaxRange( EvtId i )
{
return partlist()[i.getId()].getMaxRange();
}
double EvtPDL::getWidth( EvtId i )
{
return partlist()[i.getId()].getWidth();
}
double EvtPDL::getctau( EvtId i )
{
return partlist()[i.getId()].getctau();
}
int EvtPDL::getStdHep( EvtId id )
{
return partlist()[id.getId()].getStdHep();
}
int EvtPDL::getLundKC( EvtId id )
{
return partlist()[id.getId()].getLundKC();
}
int EvtPDL::chg3( EvtId i )
{
return partlist()[i.getId()].getChg3();
}
EvtSpinType::spintype EvtPDL::getSpinType( EvtId i )
{
return partlist()[i.getId()].getSpinType();
}
std::string EvtPDL::name( EvtId i )
{
return partlist()[i.getAlias()].getName();
}
size_t EvtPDL::entries()
{
return partlist().size();
}
EvtId EvtPDL::getEntry( int i )
{
return partlist()[i].getId();
}
void EvtPDL::reSetMass( EvtId i, double mass )
{
partlist()[i.getId()].reSetMass( mass );
}
void EvtPDL::reSetWidth( EvtId i, double width )
{
partlist()[i.getId()].reSetWidth( width );
}
void EvtPDL::reSetMassMin( EvtId i, double mass )
{
partlist()[i.getId()].reSetMassMin( mass );
}
void EvtPDL::reSetMassMax( EvtId i, double mass )
{
partlist()[i.getId()].reSetMassMax( mass );
}
void EvtPDL::reSetBlatt( EvtId i, double blatt )
{
partlist()[i.getId()].reSetBlatt( blatt );
}
void EvtPDL::reSetBlattBirth( EvtId i, double blatt )
{
partlist()[i.getId()].reSetBlattBirth( blatt );
}
void EvtPDL::includeBirthFactor( EvtId i, bool yesno )
{
partlist()[i.getId()].includeBirthFactor( yesno );
}
void EvtPDL::includeDecayFactor( EvtId i, bool yesno )
{
partlist()[i.getId()].includeDecayFactor( yesno );
}
void EvtPDL::changeLS( EvtId i, std::string& newLS )
{
partlist()[i.getId()].newLineShape( newLS );
}
void EvtPDL::setPWForDecay( EvtId i, int spin, EvtId d1, EvtId d2 )
{
partlist()[i.getId()].setPWForDecay( spin, d1, d2 );
}
void EvtPDL::setPWForBirthL( EvtId i, int spin, EvtId par, EvtId othD )
{
partlist()[i.getId()].setPWForBirthL( spin, par, othD );
}
diff --git a/src/EvtGenBase/EvtParser.cpp b/src/EvtGenBase/EvtParser.cpp
index aa9700f..419ebfa 100644
--- a/src/EvtGenBase/EvtParser.cpp
+++ b/src/EvtGenBase/EvtParser.cpp
@@ -1,162 +1,142 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtParser.cc
-//
-// Description: Reading the decay table and produce a list of tokens.
-//
-// Modification history:
-//
-// RYD Febuary 11, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtParser.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <fstream>
#include <sstream>
#include <string.h>
using namespace std;
#define MAXBUF 1024
EvtParser::EvtParser()
{
_ntoken = 0;
_lengthoftokenlist = 0;
_tokenlist = 0;
_linelist = 0;
}
EvtParser::~EvtParser()
{
delete[] _tokenlist;
delete[] _linelist;
}
int EvtParser::getNToken()
{
return _ntoken;
}
const std::string& EvtParser::getToken( int i )
{
return _tokenlist[i];
}
int EvtParser::getLineofToken( int i )
{
return _linelist[i];
}
int EvtParser::read( const std::string filename )
{
ifstream fin;
fin.open( filename.c_str() );
if ( !fin ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Could not open file '" << filename.c_str() << "'" << endl;
return -1;
}
char buf[MAXBUF];
char buf2[MAXBUF];
char c;
int line = 0;
int i;
while ( fin.peek() != EOF ) {
line++;
i = 0;
while ( ( c = fin.get() ) != '\n' && c != EOF && i < MAXBUF ) {
buf[i] = c;
i++;
}
if ( i == MAXBUF ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Error in EvtParser: line:" << line << " to long" << endl;
} else {
buf[i] = '\0';
}
//search for '#' which indicates comment for rest of line!
i = 0;
do {
if ( buf[i] == '#' )
buf[i] = 0;
i++;
} while ( buf[i - 1] != 0 );
string tmp( buf, strlen( buf ) );
//read each token
istringstream ist( tmp );
while ( ist >> buf2 ) {
i = 0;
int semicolon = 0;
do {
if ( buf2[i] == ';' ) {
buf2[i] = 0;
semicolon = 1;
}
} while ( buf2[i++] != 0 );
if ( buf2[0] != 0 ) {
addToken( line, buf2 );
}
if ( semicolon )
addToken( line, ";" );
}
}
fin.close();
return 0;
}
void EvtParser::addToken( int line, const std::string& string )
{
//EvtGenReport(EVTGEN_INFO,"EvtGen") <<_ntoken<<" "<<line<<" "<<string<<endl;
if ( _ntoken == _lengthoftokenlist ) {
int new_length = 1000 + 4 * _lengthoftokenlist;
int* newlinelist = new int[new_length];
std::string* newtokenlist = new std::string[new_length];
int i;
for ( i = 0; i < _ntoken; i++ ) {
newlinelist[i] = _linelist[i];
newtokenlist[i] = _tokenlist[i];
}
delete[] _tokenlist;
delete[] _linelist;
_tokenlist = newtokenlist;
_linelist = newlinelist;
_lengthoftokenlist = new_length;
}
_tokenlist[_ntoken] = string;
_linelist[_ntoken] = line;
_ntoken++;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "First:"<<_tokenlist[0]<<" last:"<<_tokenlist[_ntoken-1]<<endl;
}
diff --git a/src/EvtGenBase/EvtParserXml.cpp b/src/EvtGenBase/EvtParserXml.cpp
index 0f87abc..802bd4f 100644
--- a/src/EvtGenBase/EvtParserXml.cpp
+++ b/src/EvtGenBase/EvtParserXml.cpp
@@ -1,294 +1,274 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtParserXml.cc
-//
-// Description: Reading the decay XML file.
-//
-// Modification history:
-//
-// DCC 24 October, 2011 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtParserXml.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <fstream>
#include <sstream>
#include <stdlib.h>
#include <string.h>
#include <vector>
using namespace std;
bool EvtParserXml::open( std::string filename )
{
if ( !expandEnvVars( filename ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Error while expanding environment variables in file name '"
<< filename.c_str() << "'" << endl;
return false;
}
_fin.open( filename.c_str() );
if ( !_fin ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Could not open file '" << filename.c_str() << "'" << endl;
return false;
}
return true;
}
bool EvtParserXml::close()
{
_fin.close();
return true;
}
bool EvtParserXml::readNextTag()
{
if ( !processTagTree() ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unexpected end tag " << _tagTitle << " found near line "
<< _lineNo << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
return false;
} //first process the previous tag to find out where we are in the tag tree
while ( _line.find( "<" ) ==
std::string::npos ) { //add lines until we find start of a tag
std::string addLine;
if ( !std::getline( _fin, addLine ) )
return false;
_lineNo++;
_line += " ";
_line += addLine;
}
unsigned int startTag;
unsigned int endTag;
unsigned int endTagTitle;
startTag = _line.find( "<" );
if ( _line[startTag + 1] ==
'?' ) { //XML header tag - ignore then read the next tag
while ( _line.find( "?>", startTag ) == std::string::npos ) {
std::string addLine;
if ( !std::getline( _fin, addLine ) )
return false;
_lineNo++;
_line += " ";
_line += addLine;
}
endTag = _line.find( "?>", startTag );
_line = _line.substr( endTag + 2 );
return readNextTag();
} else if ( _line[startTag + 1] ==
'!' ) { //XML comment tag - ignore then read the next tag
while ( _line.find( "-->", startTag ) == std::string::npos ) {
std::string addLine;
if ( !std::getline( _fin, addLine ) )
return false;
_lineNo++;
_line += " ";
_line += addLine;
}
endTag = _line.find( "-->", startTag );
_line = _line.substr( endTag + 3 );
_tagTitle = "";
_tag = "";
return readNextTag();
} else { //parsable
while ( _line.find( ">", startTag ) ==
std::string::npos ) { //find end of a tag
std::string addLine;
if ( !std::getline( _fin, addLine ) )
return false;
_lineNo++;
_line += " ";
_line += addLine;
}
endTag = _line.find( ">", startTag );
_inLineTag = false;
if ( _line.find( "/>", startTag ) < endTag ) {
endTag--;
_inLineTag = true;
}
if ( _line.find( " ", startTag ) != std::string::npos &&
_line.find( " ", startTag ) <
endTag ) { //find end of the first word in the tag
endTagTitle = _line.find( " ", startTag );
} else {
endTagTitle = endTag;
}
_tagTitle = _line.substr( startTag + 1, endTagTitle - startTag - 1 );
_tag = _line.substr( startTag + 1, endTag - startTag - 1 );
//now we have the tag lets remove it from the line
if ( _inLineTag ) {
_line = _line.substr( endTag + 2 );
} else {
_line = _line.substr( endTag + 1 );
}
return true;
}
}
std::string EvtParserXml::getParentTagTitle()
{
if ( _tagTree.empty() )
return "";
else
return _tagTree.back();
}
std::string EvtParserXml::readAttribute( std::string attribute,
std::string defaultValue )
{
std::string whitespace = " \t\n\v\f\r";
for ( unsigned int i = 0; i < whitespace.size(); i++ ) {
//find any whitespace followed by the attribute name followed by an '='
std::string attName = whitespace[i] + attribute + "=";
if ( _tag.find( attName ) != std::string::npos ) {
int startAttri = _tag.find( attName );
int startQuote = _tag.find( "\"", startAttri + 1 );
int endQuote = _tag.find( "\"", startQuote + 1 );
return _tag.substr( startQuote + 1, endQuote - startQuote - 1 );
}
}
return defaultValue;
}
bool EvtParserXml::readAttributeBool( std::string attribute, bool defaultValue )
{
std::string valStr = readAttribute( attribute );
if ( !defaultValue )
return ( valStr == "true" || valStr == "1" || valStr == "on" ||
valStr == "yes" );
else
return ( valStr != "false" && valStr != "0" && valStr != "off" &&
valStr != "no" );
}
int EvtParserXml::readAttributeInt( std::string attribute, int defaultValue )
{
std::string valStr = readAttribute( attribute );
if ( valStr == "" )
return defaultValue;
std::istringstream valStream( valStr );
int retVal;
valStream >> retVal;
return retVal;
}
double EvtParserXml::readAttributeDouble( std::string attribute,
double defaultValue )
{
std::string valStr = readAttribute( attribute );
if ( valStr == "" )
return defaultValue;
std::istringstream valStream( valStr );
double retVal;
valStream >> retVal;
return retVal;
}
bool EvtParserXml::processTagTree()
{
if ( _tagTitle == "" )
return true;
if ( _tagTitle[0] == '/' ) {
if ( _tagTitle.substr( 1 ) == _tagTree.back() ) {
_tagTree.pop_back();
} else {
return false;
}
} else if ( !_inLineTag ) {
_tagTree.push_back( _tagTitle );
}
return true;
}
bool EvtParserXml::expandEnvVars( std::string& str )
{
while ( str.find( '$' ) != std::string::npos ) {
size_t varStart = str.find( '$' );
size_t varNameLength;
std::string varName;
//if this is the last character then just remove the $
if ( varStart == str.length() - 1 ) {
str.erase( varStart );
return true;
}
if ( str[varStart + 1] == '{' ) {
//deal with environment variables in {}s
size_t braceStart = varStart + 1;
size_t braceEnd = str.find( '}', braceStart );
if ( braceEnd == std::string::npos ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Incomplete environment variable found in text: " << str
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
return false;
}
varName = str.substr( braceStart + 1, braceEnd - braceStart - 1 );
varNameLength = braceEnd - varStart;
} else {
//deal with everything else
varNameLength = 0;
while ( varNameLength + varStart + 1 < str.length() &&
isAlphaNum( str[varStart + varNameLength + 1] ) ) {
++varNameLength;
}
varName = str.substr( varStart + 1, varNameLength );
}
char* envVar = getenv( varName.c_str() );
if ( envVar )
str.replace( varStart, varNameLength + 1, envVar );
else {
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "Undefined environment variable found in text: " << varName
<< endl;
str.replace( varStart, varNameLength + 1, "" );
}
}
return true;
}
bool EvtParserXml::isAlphaNum( char c )
{
if ( c >= '0' && c <= '9' )
return true;
if ( c >= 'A' && c <= 'Z' )
return true;
if ( c >= 'a' && c <= 'z' )
return true;
if ( c == '_' )
return true;
return false;
}
diff --git a/src/EvtGenBase/EvtPartProp.cpp b/src/EvtGenBase/EvtPartProp.cpp
index aeca7ed..527670d 100644
--- a/src/EvtGenBase/EvtPartProp.cpp
+++ b/src/EvtGenBase/EvtPartProp.cpp
@@ -1,161 +1,142 @@
-#include "EvtGenBase/EvtPatches.hh"
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtPartProp.cc
-//
-// Description: Store particle properties for one particle.
-//
-// Modification history:
-//
-// RYD April 4, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
+#include "EvtGenBase/EvtPartProp.hh"
+
#include "EvtGenBase/EvtAbsLineShape.hh"
#include "EvtGenBase/EvtFlatLineShape.hh"
#include "EvtGenBase/EvtManyDeltaFuncLineShape.hh"
-#include "EvtGenBase/EvtPartProp.hh"
+#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRelBreitWignerBarrierFact.hh"
#include <ctype.h>
#include <fstream>
#include <iostream>
#include <stdlib.h>
#include <string>
using std::fstream;
EvtPartProp::EvtPartProp() :
_id( -1, -1 ), _idchgconj( -1, -1 ), _chg3( 0 ), _stdhep( 0 ), _lundkc( 0 )
{
_ctau = 0.0;
_name = "*******";
_spintype = EvtSpinType::SCALAR;
}
EvtPartProp::EvtPartProp( const EvtPartProp& x )
{
_lineShape.reset( x._lineShape ? x._lineShape->clone() : nullptr );
_ctau = x._ctau;
_name = x._name;
_spintype = x._spintype;
_id = x._id;
_idchgconj = x._idchgconj;
_chg3 = x._chg3;
_stdhep = x._stdhep;
_lundkc = x._lundkc;
}
void EvtPartProp::setName( std::string pname )
{
_name = pname;
}
EvtPartProp& EvtPartProp::operator=( const EvtPartProp& x )
{
_lineShape.reset( x._lineShape ? x._lineShape->clone() : nullptr );
_ctau = x._ctau;
_name = x._name;
_chg3 = x._chg3;
_spintype = x._spintype;
return *this;
}
void EvtPartProp::initLineShape( double mass, double width, double maxRange )
{
_lineShape = std::make_unique<EvtRelBreitWignerBarrierFact>( mass, width,
maxRange,
_spintype );
}
void EvtPartProp::newLineShape( std::string type )
{
double m = _lineShape->getMass();
double w = _lineShape->getWidth();
double mR = _lineShape->getMaxRange();
EvtSpinType::spintype st = _lineShape->getSpinType();
if ( type == "RELBW" ) {
_lineShape = std::make_unique<EvtRelBreitWignerBarrierFact>( m, w, mR,
st );
} else if ( type == "NONRELBW" ) {
_lineShape = std::make_unique<EvtAbsLineShape>( m, w, mR, st );
} else if ( type == "FLAT" ) {
_lineShape = std::make_unique<EvtFlatLineShape>( m, w, mR, st );
} else if ( type == "MANYDELTAFUNC" ) {
_lineShape = std::make_unique<EvtManyDeltaFuncLineShape>( m, w, mR, st );
} else {
_lineShape.reset();
}
}
void EvtPartProp::reSetMass( double mass )
{
if ( !_lineShape )
::abort();
_lineShape->reSetMass( mass );
}
void EvtPartProp::reSetWidth( double width )
{
if ( !_lineShape )
::abort();
_lineShape->reSetWidth( width );
}
void EvtPartProp::setPWForDecay( int spin, EvtId d1, EvtId d2 )
{
if ( !_lineShape )
::abort();
_lineShape->setPWForDecay( spin, d1, d2 );
}
void EvtPartProp::setPWForBirthL( int spin, EvtId par, EvtId othD )
{
if ( !_lineShape )
::abort();
_lineShape->setPWForBirthL( spin, par, othD );
}
void EvtPartProp::reSetMassMin( double mass )
{
if ( !_lineShape )
::abort();
_lineShape->reSetMassMin( mass );
}
void EvtPartProp::reSetMassMax( double mass )
{
if ( !_lineShape )
::abort();
_lineShape->reSetMassMax( mass );
}
void EvtPartProp::reSetBlatt( double blatt )
{
if ( !_lineShape )
::abort();
_lineShape->reSetBlatt( blatt );
}
void EvtPartProp::reSetBlattBirth( double blatt )
{
if ( !_lineShape )
::abort();
_lineShape->reSetBlattBirth( blatt );
}
void EvtPartProp::includeBirthFactor( bool yesno )
{
if ( !_lineShape )
::abort();
_lineShape->includeBirthFactor( yesno );
}
void EvtPartProp::includeDecayFactor( bool yesno )
{
if ( !_lineShape )
::abort();
_lineShape->includeDecayFactor( yesno );
}
diff --git a/src/EvtGenBase/EvtParticle.cpp b/src/EvtGenBase/EvtParticle.cpp
index 7f33a95..c8bb283 100644
--- a/src/EvtGenBase/EvtParticle.cpp
+++ b/src/EvtGenBase/EvtParticle.cpp
@@ -1,1319 +1,1299 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtParticle.cc
-//
-// Description: Class to describe all particles
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtDecayTable.hh"
#include "EvtGenBase/EvtDiracParticle.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtNeutrinoParticle.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticleFactory.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtPhotonParticle.hh"
#include "EvtGenBase/EvtRadCorr.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtRaritaSchwingerParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtSecondary.hh"
#include "EvtGenBase/EvtStatus.hh"
#include "EvtGenBase/EvtStdHep.hh"
#include "EvtGenBase/EvtStringParticle.hh"
#include "EvtGenBase/EvtTensorParticle.hh"
#include "EvtGenBase/EvtVectorParticle.hh"
#include <sys/stat.h>
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
using std::endl;
EvtParticle::~EvtParticle()
{
delete _decayProb;
}
EvtParticle::EvtParticle()
{
_ndaug = 0;
_parent = 0;
_channel = -10;
_t = 0.0;
_genlifetime = 1;
_first = 1;
_isInit = false;
_validP4 = false;
_isDecayed = false;
_decayProb = 0;
_intAttributes.clear();
_dblAttributes.clear();
// _mix=false;
}
void EvtParticle::setFirstOrNot()
{
_first = 0;
}
void EvtParticle::resetFirstOrNot()
{
_first = 1;
}
void EvtParticle::setChannel( int i )
{
_channel = i;
}
EvtParticle* EvtParticle::getDaug( int i )
{
return _daug[i];
}
EvtParticle* EvtParticle::getParent() const
{
return _parent;
}
void EvtParticle::setLifetime( double tau )
{
_t = tau;
}
void EvtParticle::setLifetime()
{
if ( _genlifetime ) {
_t = -log( EvtRandom::Flat() ) * EvtPDL::getctau( getId() );
}
}
double EvtParticle::getLifetime()
{
return _t;
}
void EvtParticle::addDaug( EvtParticle* node )
{
node->_daug[node->_ndaug++] = this;
_ndaug = 0;
_parent = node;
}
int EvtParticle::firstornot() const
{
return _first;
}
EvtId EvtParticle::getId() const
{
return _id;
}
int EvtParticle::getPDGId() const
{
return EvtPDL::getStdHep( _id );
}
EvtSpinType::spintype EvtParticle::getSpinType() const
{
return EvtPDL::getSpinType( _id );
}
int EvtParticle::getSpinStates() const
{
return EvtSpinType::getSpinStates( EvtPDL::getSpinType( _id ) );
}
const EvtVector4R& EvtParticle::getP4() const
{
return _p;
}
int EvtParticle::getChannel() const
{
return _channel;
}
size_t EvtParticle::getNDaug() const
{
return _ndaug;
}
double EvtParticle::mass() const
{
return _p.mass();
}
void EvtParticle::setDiagonalSpinDensity()
{
_rhoForward.setDiag( getSpinStates() );
}
void EvtParticle::setVectorSpinDensity()
{
if ( getSpinStates() != 3 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Error in EvtParticle::setVectorSpinDensity" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "spin_states:" << getSpinStates() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "particle:" << EvtPDL::name( _id ).c_str() << endl;
::abort();
}
EvtSpinDensity rho;
//Set helicity +1 and -1 to 1.
rho.setDiag( getSpinStates() );
rho.set( 1, 1, EvtComplex( 0.0, 0.0 ) );
setSpinDensityForwardHelicityBasis( rho );
}
void EvtParticle::setSpinDensityForwardHelicityBasis( const EvtSpinDensity& rho )
{
EvtSpinDensity R = rotateToHelicityBasis();
assert( R.getDim() == rho.getDim() );
int n = rho.getDim();
_rhoForward.setDim( n );
int i, j, k, l;
for ( i = 0; i < n; i++ ) {
for ( j = 0; j < n; j++ ) {
EvtComplex tmp = 0.0;
for ( k = 0; k < n; k++ ) {
for ( l = 0; l < n; l++ ) {
tmp += R.get( l, i ) * rho.get( l, k ) *
conj( R.get( k, j ) );
}
}
_rhoForward.set( i, j, tmp );
}
}
}
void EvtParticle::setSpinDensityForwardHelicityBasis( const EvtSpinDensity& rho,
double alpha, double beta,
double gamma )
{
EvtSpinDensity R = rotateToHelicityBasis( alpha, beta, gamma );
assert( R.getDim() == rho.getDim() );
int n = rho.getDim();
_rhoForward.setDim( n );
int i, j, k, l;
for ( i = 0; i < n; i++ ) {
for ( j = 0; j < n; j++ ) {
EvtComplex tmp = 0.0;
for ( k = 0; k < n; k++ ) {
for ( l = 0; l < n; l++ ) {
tmp += R.get( l, i ) * rho.get( l, k ) *
conj( R.get( k, j ) );
}
}
_rhoForward.set( i, j, tmp );
}
}
}
void EvtParticle::initDecay( bool useMinMass )
{
EvtParticle* p = this;
// carefull - the parent mass might be fixed in stone..
EvtParticle* par = p->getParent();
double parMass = -1.;
if ( par != 0 ) {
if ( par->hasValidP4() )
parMass = par->mass();
for ( size_t i = 0; i < par->getNDaug(); i++ ) {
EvtParticle* tDaug = par->getDaug( i );
if ( p != tDaug )
parMass -= EvtPDL::getMinMass( tDaug->getId() );
}
}
if ( _isInit ) {
//we have already been here - just reroll the masses!
if ( _ndaug > 0 ) {
for ( size_t ii = 0; ii < _ndaug; ii++ ) {
if ( _ndaug == 1 ||
EvtPDL::getWidth( p->getDaug( ii )->getId() ) > 0.0000001 )
p->getDaug( ii )->initDecay( useMinMass );
else
p->getDaug( ii )->setMass(
EvtPDL::getMeanMass( p->getDaug( ii )->getId() ) );
}
}
EvtId* dauId = 0;
double* dauMasses = 0;
if ( _ndaug > 0 ) {
dauId = new EvtId[_ndaug];
dauMasses = new double[_ndaug];
for ( size_t j = 0; j < _ndaug; j++ ) {
dauId[j] = p->getDaug( j )->getId();
dauMasses[j] = p->getDaug( j )->mass();
}
}
EvtId* parId = 0;
EvtId* othDauId = 0;
EvtParticle* tempPar = p->getParent();
if ( tempPar ) {
parId = new EvtId( tempPar->getId() );
if ( tempPar->getNDaug() == 2 ) {
if ( tempPar->getDaug( 0 ) == this )
othDauId = new EvtId( tempPar->getDaug( 1 )->getId() );
else
othDauId = new EvtId( tempPar->getDaug( 0 )->getId() );
}
}
if ( p->getParent() && _validP4 == false ) {
if ( !useMinMass ) {
p->setMass( EvtPDL::getRandMass( p->getId(), parId, _ndaug, dauId,
othDauId, parMass, dauMasses ) );
} else
p->setMass( EvtPDL::getMinMass( p->getId() ) );
}
if ( parId )
delete parId;
if ( othDauId )
delete othDauId;
if ( dauId )
delete[] dauId;
if ( dauMasses )
delete[] dauMasses;
return;
}
//Will include effects of mixing here
//added by Lange Jan4,2000
static EvtId BS0 = EvtPDL::getId( "B_s0" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
static EvtId BD0 = EvtPDL::getId( "B0" );
static EvtId BDB = EvtPDL::getId( "anti-B0" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId U4S = EvtPDL::getId( "Upsilon(4S)" );
static EvtIdSet borUps( BS0, BSB, BD0, BDB, U4S );
//only makes sense if there is no parent particle which is a B or an Upsilon
bool hasBorUps = false;
if ( getParent() && borUps.contains( getParent()->getId() ) )
hasBorUps = true;
// if ( (getNDaug()==0)&&(getParent()==0) && (getId()==BS0||getId()==BSB||getId()==BD0||getId()==BDB)){
EvtId thisId = getId();
// remove D0 mixing for now.
// if ( (getNDaug()==0 && !hasBorUps) && (thisId==BS0||thisId==BSB||thisId==BD0||thisId==BDB||thisId==D0||thisId==D0B)){
if ( ( getNDaug() == 0 && !hasBorUps ) &&
( thisId == BS0 || thisId == BSB || thisId == BD0 || thisId == BDB ) ) {
double t;
int mix;
EvtCPUtil::getInstance()->incoherentMix( getId(), t, mix );
setLifetime( t );
if ( mix ) {
EvtScalarParticle* scalar_part;
scalar_part = new EvtScalarParticle;
if ( getId() == BS0 ) {
EvtVector4R p_init( EvtPDL::getMass( BSB ), 0.0, 0.0, 0.0 );
scalar_part->init( EvtPDL::chargeConj( getId() ), p_init );
} else if ( getId() == BSB ) {
EvtVector4R p_init( EvtPDL::getMass( BS0 ), 0.0, 0.0, 0.0 );
scalar_part->init( EvtPDL::chargeConj( getId() ), p_init );
} else if ( getId() == BD0 ) {
EvtVector4R p_init( EvtPDL::getMass( BDB ), 0.0, 0.0, 0.0 );
scalar_part->init( EvtPDL::chargeConj( getId() ), p_init );
} else if ( getId() == BDB ) {
EvtVector4R p_init( EvtPDL::getMass( BD0 ), 0.0, 0.0, 0.0 );
scalar_part->init( EvtPDL::chargeConj( getId() ), p_init );
} else if ( getId() == D0 ) {
EvtVector4R p_init( EvtPDL::getMass( D0B ), 0.0, 0.0, 0.0 );
scalar_part->init( EvtPDL::chargeConj( getId() ), p_init );
} else if ( getId() == D0B ) {
EvtVector4R p_init( EvtPDL::getMass( D0 ), 0.0, 0.0, 0.0 );
scalar_part->init( EvtPDL::chargeConj( getId() ), p_init );
}
scalar_part->setLifetime( 0 );
scalar_part->setDiagonalSpinDensity();
insertDaugPtr( 0, scalar_part );
_ndaug = 1;
_isInit = true;
p = scalar_part;
p->initDecay( useMinMass );
return;
}
}
EvtDecayBase* decayer;
decayer = EvtDecayTable::getInstance()->getDecayFunc( p );
if ( decayer ) {
p->makeDaughters( decayer->nRealDaughters(), decayer->getDaugs() );
//then loop over the daughters and init their decay
for ( size_t i = 0; i < p->getNDaug(); i++ ) {
// std::cout << EvtPDL::name(p->getDaug(i)->getId()) << " " << i << " " << p->getDaug(i)->getSpinType() << " " << EvtPDL::name(p->getId()) << std::endl;
if ( EvtPDL::getWidth( p->getDaug( i )->getId() ) > 0.0000001 )
p->getDaug( i )->initDecay( useMinMass );
else
p->getDaug( i )->setMass(
EvtPDL::getMeanMass( p->getDaug( i )->getId() ) );
}
}
int j;
EvtId* dauId = 0;
double* dauMasses = 0;
int nDaugT = p->getNDaug();
if ( nDaugT > 0 ) {
dauId = new EvtId[nDaugT];
dauMasses = new double[nDaugT];
for ( j = 0; j < nDaugT; j++ ) {
dauId[j] = p->getDaug( j )->getId();
dauMasses[j] = p->getDaug( j )->mass();
}
}
EvtId* parId = 0;
EvtId* othDauId = 0;
EvtParticle* tempPar = p->getParent();
if ( tempPar ) {
parId = new EvtId( tempPar->getId() );
if ( tempPar->getNDaug() == 2 ) {
if ( tempPar->getDaug( 0 ) == this )
othDauId = new EvtId( tempPar->getDaug( 1 )->getId() );
else
othDauId = new EvtId( tempPar->getDaug( 0 )->getId() );
}
}
if ( p->getParent() && p->hasValidP4() == false ) {
if ( !useMinMass ) {
p->setMass( EvtPDL::getRandMass( p->getId(), parId, p->getNDaug(),
dauId, othDauId, parMass,
dauMasses ) );
} else {
p->setMass( EvtPDL::getMinMass( p->getId() ) );
}
}
if ( parId )
delete parId;
if ( othDauId )
delete othDauId;
if ( dauId )
delete[] dauId;
if ( dauMasses )
delete[] dauMasses;
_isInit = true;
}
void EvtParticle::decay()
{
//P is particle to decay, typically 'this' but sometime
//modified by mixing
EvtParticle* p = this;
//Did it mix?
//if ( p->getMixed() ) {
//should take C(p) - this should only
//happen the first time we call decay for this
//particle
//p->takeCConj();
// p->setUnMixed();
//}
EvtDecayBase* decayer;
decayer = EvtDecayTable::getInstance()->getDecayFunc( p );
// if ( decayer ) {
// EvtGenReport(EVTGEN_INFO,"EvtGen") << "calling decay for " << EvtPDL::name(p->getId()) << " " << p->mass() << " " << p->getP4() << " " << p->getNDaug() << " " << p << endl;
// EvtGenReport(EVTGEN_INFO,"EvtGen") << "NDaug= " << decayer->getNDaug() << endl;
// int ti;
// for ( ti=0; ti<decayer->getNDaug(); ti++)
// EvtGenReport(EVTGEN_INFO,"EvtGen") << "Daug " << ti << " " << EvtPDL::name(decayer->getDaug(ti)) << endl;
// }
//if (p->_ndaug>0) {
// EvtGenReport(EVTGEN_INFO,"EvtGen") <<"Is decaying particle with daughters!!!!!"<<endl;
// ::abort();
//return;
//call initdecay first - April 29,2002 - Lange
//}
//if there are already daughters, then this step is already done!
// figure out the masses
bool massTreeOK( true );
if ( _ndaug == 0 ) {
massTreeOK = generateMassTree();
}
if ( massTreeOK == false ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Could not decay " << EvtPDL::name( p->getId() ) << " with mass "
<< p->mass() << " to decay channel number " << _channel << endl;
_isDecayed = false;
return;
}
static EvtId BS0 = EvtPDL::getId( "B_s0" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
static EvtId BD0 = EvtPDL::getId( "B0" );
static EvtId BDB = EvtPDL::getId( "anti-B0" );
// static EvtId D0=EvtPDL::getId("D0");
// static EvtId D0B=EvtPDL::getId("anti-D0");
EvtId thisId = getId();
// remove D0 mixing for now..
// if ( _ndaug==1 && (thisId==BS0||thisId==BSB||thisId==BD0||thisId==BDB||thisId==D0||thisId==D0B) ) {
if ( _ndaug == 1 &&
( thisId == BS0 || thisId == BSB || thisId == BD0 || thisId == BDB ) ) {
p = p->getDaug( 0 );
decayer = EvtDecayTable::getInstance()->getDecayFunc( p );
}
//now we have accepted a set of masses - time
if ( decayer != 0 ) {
decayer->makeDecay( p );
} else {
p->_rhoBackward.setDiag( p->getSpinStates() );
}
_isDecayed = true;
return;
}
bool EvtParticle::generateMassTree()
{
bool isOK( true );
double massProb = 1.;
double ranNum = 2.;
int counter = 0;
EvtParticle* p = this;
while ( massProb < ranNum ) {
//check it out the first time.
p->initDecay();
massProb = p->compMassProb();
ranNum = EvtRandom::Flat();
counter++;
if ( counter > 10000 ) {
if ( counter == 10001 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Too many iterations to determine the mass tree. Parent mass= "
<< p->mass() << " " << massProb << endl;
p->printTree();
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "will take next combo with non-zero likelihood\n";
}
if ( massProb > 0. )
massProb = 2.0;
if ( counter > 20000 ) {
// one last try - take the minimum masses
p->initDecay( true );
p->printTree();
massProb = p->compMassProb();
if ( massProb > 0. ) {
massProb = 2.0;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Taking the minimum mass of all particles in the chain\n";
} else {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Sorry, no luck finding a valid set of masses. This may be a pathological combo\n";
isOK = false;
break;
}
}
}
}
return isOK;
}
double EvtParticle::compMassProb()
{
EvtParticle* p = this;
double mass = p->mass();
double parMass = 0.;
if ( p->getParent() ) {
parMass = p->getParent()->mass();
}
int nDaug = p->getNDaug();
double* dMasses = 0;
int i;
if ( nDaug > 0 ) {
dMasses = new double[nDaug];
for ( i = 0; i < nDaug; i++ )
dMasses[i] = p->getDaug( i )->mass();
}
double temp = 1.0;
temp = EvtPDL::getMassProb( p->getId(), mass, parMass, nDaug, dMasses );
//If the particle already has a mass, we dont need to include
//it in the probability calculation
if ( ( !p->getParent() || _validP4 ) && temp > 0.0 )
temp = 1.;
delete[] dMasses;
for ( i = 0; i < nDaug; i++ ) {
temp *= p->getDaug( i )->compMassProb();
}
return temp;
}
void EvtParticle::deleteDaughters( bool keepChannel )
{
for ( size_t i = 0; i < _ndaug; i++ ) {
_daug[i]->deleteTree();
}
_ndaug = 0;
if ( !keepChannel )
_channel = -10;
_first = 1;
_isInit = false;
}
void EvtParticle::deleteTree()
{
this->deleteDaughters();
delete this;
}
EvtVector4C EvtParticle::epsParent( int i ) const
{
EvtVector4C temp;
printParticle();
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "and you have asked for the:" << i << "th polarization vector."
<< " I.e. you thought it was a"
<< " vector particle!" << endl;
::abort();
return temp;
}
EvtVector4C EvtParticle::eps( int i ) const
{
EvtVector4C temp;
printParticle();
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "and you have asked for the:" << i << "th polarization vector."
<< " I.e. you thought it was a"
<< " vector particle!" << endl;
::abort();
return temp;
}
EvtVector4C EvtParticle::epsParentPhoton( int i )
{
EvtVector4C temp;
printParticle();
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "and you have asked for the:" << i
<< "th polarization vector of photon."
<< " I.e. you thought it was a"
<< " photon particle!" << endl;
::abort();
return temp;
}
EvtVector4C EvtParticle::epsPhoton( int i )
{
EvtVector4C temp;
printParticle();
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "and you have asked for the:" << i
<< "th polarization vector of a photon."
<< " I.e. you thought it was a"
<< " photon particle!" << endl;
::abort();
return temp;
}
EvtDiracSpinor EvtParticle::spParent( int i ) const
{
EvtDiracSpinor tempD;
printParticle();
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "and you have asked for the:" << i << "th dirac spinor."
<< " I.e. you thought it was a"
<< " Dirac particle!" << endl;
::abort();
return tempD;
}
EvtDiracSpinor EvtParticle::sp( int i ) const
{
EvtDiracSpinor tempD;
printParticle();
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "and you have asked for the:" << i << "th dirac spinor."
<< " I.e. you thought it was a"
<< " Dirac particle!" << endl;
::abort();
return tempD;
}
EvtDiracSpinor EvtParticle::spParentNeutrino() const
{
EvtDiracSpinor tempD;
printParticle();
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "and you have asked for the "
<< "dirac spinor."
<< " I.e. you thought it was a"
<< " neutrino particle!" << endl;
::abort();
return tempD;
}
EvtDiracSpinor EvtParticle::spNeutrino() const
{
EvtDiracSpinor tempD;
printParticle();
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "and you have asked for the "
<< "dirac spinor."
<< " I.e. you thought it was a"
<< " neutrino particle!" << endl;
::abort();
return tempD;
}
EvtTensor4C EvtParticle::epsTensorParent( int i ) const
{
EvtTensor4C tempC;
printParticle();
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "and you have asked for the:" << i << "th tensor."
<< " I.e. you thought it was a"
<< " Tensor particle!" << endl;
::abort();
return tempC;
}
EvtTensor4C EvtParticle::epsTensor( int i ) const
{
EvtTensor4C tempC;
printParticle();
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "and you have asked for the:" << i << "th tensor."
<< " I.e. you thought it was a"
<< " Tensor particle!" << endl;
::abort();
return tempC;
}
EvtRaritaSchwinger EvtParticle::spRSParent( int i ) const
{
EvtRaritaSchwinger tempD;
printParticle();
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "and you have asked for the:" << i << "th Rarita-Schwinger spinor."
<< " I.e. you thought it was a"
<< " RaritaSchwinger particle!" << std::endl;
::abort();
return tempD;
}
EvtRaritaSchwinger EvtParticle::spRS( int i ) const
{
EvtRaritaSchwinger tempD;
printParticle();
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "and you have asked for the:" << i << "th Rarita-Schwinger spinor."
<< " I.e. you thought it was a"
<< " RaritaSchwinger particle!" << std::endl;
::abort();
return tempD;
}
EvtVector4R EvtParticle::getP4Lab() const
{
EvtVector4R temp, mom;
const EvtParticle* ptemp;
temp = this->getP4();
ptemp = this;
while ( ptemp->getParent() != 0 ) {
ptemp = ptemp->getParent();
mom = ptemp->getP4();
temp = boostTo( temp, mom );
}
return temp;
}
EvtVector4R EvtParticle::getP4LabBeforeFSR()
{
EvtVector4R temp, mom;
EvtParticle* ptemp;
temp = this->_pBeforeFSR;
ptemp = this;
while ( ptemp->getParent() != 0 ) {
ptemp = ptemp->getParent();
mom = ptemp->getP4();
temp = boostTo( temp, mom );
}
return temp;
}
EvtVector4R EvtParticle::getP4Restframe() const
{
return EvtVector4R( mass(), 0.0, 0.0, 0.0 );
}
EvtVector4R EvtParticle::get4Pos() const
{
EvtVector4R temp, mom;
EvtParticle* ptemp;
temp.set( 0.0, 0.0, 0.0, 0.0 );
ptemp = getParent();
if ( ptemp == 0 )
return temp;
temp = ( ptemp->_t / ptemp->mass() ) * ( ptemp->getP4() );
while ( ptemp->getParent() != 0 ) {
ptemp = ptemp->getParent();
mom = ptemp->getP4();
temp = boostTo( temp, mom );
temp = temp + ( ptemp->_t / ptemp->mass() ) * ( ptemp->getP4() );
}
return temp;
}
EvtParticle* EvtParticle::nextIter( EvtParticle* rootOfTree )
{
EvtParticle* bpart;
EvtParticle* current;
current = this;
size_t i;
if ( _ndaug != 0 )
return _daug[0];
do {
bpart = current->_parent;
if ( bpart == 0 )
return 0;
i = 0;
while ( bpart->_daug[i] != current ) {
i++;
}
if ( bpart == rootOfTree ) {
if ( i + 1 == bpart->_ndaug )
return 0;
}
i++;
current = bpart;
} while ( i >= bpart->_ndaug );
return bpart->_daug[i];
}
void EvtParticle::makeStdHep( EvtStdHep& stdhep, EvtSecondary& secondary,
EvtId* list_of_stable )
{
//first add particle to the stdhep list;
stdhep.createParticle( getP4Lab(), get4Pos(), -1, -1,
EvtPDL::getStdHep( getId() ) );
int ii = 0;
//lets see if this is a longlived particle and terminate the
//list building!
while ( list_of_stable[ii] != EvtId( -1, -1 ) ) {
if ( getId() == list_of_stable[ii] ) {
secondary.createSecondary( 0, this );
return;
}
ii++;
}
for ( size_t i = 0; i < _ndaug; i++ ) {
stdhep.createParticle( _daug[i]->getP4Lab(), _daug[i]->get4Pos(), 0, 0,
EvtPDL::getStdHep( _daug[i]->getId() ) );
}
for ( size_t i = 0; i < _ndaug; i++ ) {
_daug[i]->makeStdHepRec( 1 + i, 1 + i, stdhep, secondary, list_of_stable );
}
return;
}
void EvtParticle::makeStdHep( EvtStdHep& stdhep )
{
//first add particle to the stdhep list;
stdhep.createParticle( getP4Lab(), get4Pos(), -1, -1,
EvtPDL::getStdHep( getId() ) );
for ( size_t i = 0; i < _ndaug; i++ ) {
stdhep.createParticle( _daug[i]->getP4Lab(), _daug[i]->get4Pos(), 0, 0,
EvtPDL::getStdHep( _daug[i]->getId() ) );
}
for ( size_t i = 0; i < _ndaug; i++ ) {
_daug[i]->makeStdHepRec( 1 + i, 1 + i, stdhep );
}
return;
}
void EvtParticle::makeStdHepRec( int firstparent, int lastparent,
EvtStdHep& stdhep, EvtSecondary& secondary,
EvtId* list_of_stable )
{
int ii = 0;
//lets see if this is a longlived particle and terminate the
//list building!
while ( list_of_stable[ii] != EvtId( -1, -1 ) ) {
if ( getId() == list_of_stable[ii] ) {
secondary.createSecondary( firstparent, this );
return;
}
ii++;
}
int parent_num = stdhep.getNPart();
for ( size_t i = 0; i < _ndaug; i++ ) {
stdhep.createParticle( _daug[i]->getP4Lab(), _daug[i]->get4Pos(),
firstparent, lastparent,
EvtPDL::getStdHep( _daug[i]->getId() ) );
}
for ( size_t i = 0; i < _ndaug; i++ ) {
_daug[i]->makeStdHepRec( parent_num + i, parent_num + i, stdhep,
secondary, list_of_stable );
}
return;
}
void EvtParticle::makeStdHepRec( int firstparent, int lastparent,
EvtStdHep& stdhep )
{
int parent_num = stdhep.getNPart();
for ( size_t i = 0; i < _ndaug; i++ ) {
stdhep.createParticle( _daug[i]->getP4Lab(), _daug[i]->get4Pos(),
firstparent, lastparent,
EvtPDL::getStdHep( _daug[i]->getId() ) );
}
for ( size_t i = 0; i < _ndaug; i++ ) {
_daug[i]->makeStdHepRec( parent_num + i, parent_num + i, stdhep );
}
return;
}
void EvtParticle::printTreeRec( unsigned int level ) const
{
size_t newlevel, i;
newlevel = level + 1;
if ( _ndaug != 0 ) {
if ( level > 0 ) {
for ( i = 0; i < ( 5 * level ); i++ ) {
EvtGenReport( EVTGEN_INFO, "" ) << " ";
}
}
EvtGenReport( EVTGEN_INFO, "" ) << EvtPDL::name( _id ).c_str();
EvtGenReport( EVTGEN_INFO, "" ) << " -> ";
for ( i = 0; i < _ndaug; i++ ) {
EvtGenReport( EVTGEN_INFO, "" )
<< EvtPDL::name( _daug[i]->getId() ).c_str() << " ";
}
for ( i = 0; i < _ndaug; i++ ) {
EvtGenReport( EVTGEN_INFO, "" )
<< _daug[i]->mass() << " " << _daug[i]->getP4() << " "
<< _daug[i]->getSpinStates() << "; ";
}
EvtGenReport( EVTGEN_INFO, "" ) << endl;
for ( i = 0; i < _ndaug; i++ ) {
_daug[i]->printTreeRec( newlevel );
}
}
}
void EvtParticle::printTree() const
{
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "This is the current decay chain" << endl;
EvtGenReport( EVTGEN_INFO, "" )
<< "This top particle is " << EvtPDL::name( _id ).c_str() << " "
<< this->mass() << " " << this->getP4() << endl;
this->printTreeRec( 0 );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "End of decay chain." << endl;
}
std::string EvtParticle::treeStrRec( unsigned int level ) const
{
size_t newlevel, i;
newlevel = level + 1;
std::string retval = "";
for ( i = 0; i < _ndaug; i++ ) {
retval += EvtPDL::name( _daug[i]->getId() );
if ( _daug[i]->getNDaug() > 0 ) {
retval += " (";
retval += _daug[i]->treeStrRec( newlevel );
retval += ") ";
} else {
if ( i + 1 != _ndaug )
retval += " ";
}
}
return retval;
}
std::string EvtParticle::treeStr() const
{
std::string retval = EvtPDL::name( _id );
retval += " -> ";
retval += treeStrRec( 0 );
return retval;
}
void EvtParticle::printParticle() const
{
switch ( EvtPDL::getSpinType( _id ) ) {
case EvtSpinType::SCALAR:
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "This is a scalar particle:" << EvtPDL::name( _id ).c_str()
<< "\n";
break;
case EvtSpinType::VECTOR:
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "This is a vector particle:" << EvtPDL::name( _id ).c_str()
<< "\n";
break;
case EvtSpinType::TENSOR:
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "This is a tensor particle:" << EvtPDL::name( _id ).c_str()
<< "\n";
break;
case EvtSpinType::DIRAC:
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "This is a dirac particle:" << EvtPDL::name( _id ).c_str()
<< "\n";
break;
case EvtSpinType::PHOTON:
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "This is a photon:" << EvtPDL::name( _id ).c_str() << "\n";
break;
case EvtSpinType::NEUTRINO:
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "This is a neutrino:" << EvtPDL::name( _id ).c_str() << "\n";
break;
case EvtSpinType::STRING:
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "This is a string:" << EvtPDL::name( _id ).c_str() << "\n";
break;
default:
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Unknown particle type in EvtParticle::printParticle()"
<< endl;
break;
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Number of daughters:" << _ndaug << "\n";
}
void init_vector( EvtParticle** part )
{
*part = new EvtVectorParticle;
}
void init_scalar( EvtParticle** part )
{
*part = new EvtScalarParticle;
}
void init_tensor( EvtParticle** part )
{
*part = new EvtTensorParticle;
}
void init_dirac( EvtParticle** part )
{
*part = new EvtDiracParticle;
}
void init_photon( EvtParticle** part )
{
*part = new EvtPhotonParticle;
}
void init_neutrino( EvtParticle** part )
{
*part = new EvtNeutrinoParticle;
}
void init_string( EvtParticle** part )
{
*part = new EvtStringParticle;
}
double EvtParticle::initializePhaseSpace( unsigned int numdaughter,
EvtId* daughters,
bool forceDaugMassReset,
double poleSize, int whichTwo1,
int whichTwo2 )
{
double m_b;
unsigned int i;
//lange
// this->makeDaughters(numdaughter,daughters);
static EvtVector4R p4[100];
static double mass[100];
m_b = this->mass();
//lange - Jan2,2002 - Need to check to see if the daughters of the parent
// have changed. If so, delete them and start over.
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "the parent is\n";
//if ( this->getParent() ) {
// if ( this->getParent()->getParent() ) this->getParent()->getParent()->printTree();
// this->getParent()->printTree();
//}
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "and this is\n";
//if ( this) this->printTree();
bool resetDaughters = false;
if ( numdaughter != this->getNDaug() && this->getNDaug() > 0 )
resetDaughters = true;
if ( numdaughter == this->getNDaug() )
for ( i = 0; i < numdaughter; i++ ) {
if ( this->getDaug( i )->getId() != daughters[i] )
resetDaughters = true;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << EvtPDL::name(this->getDaug(i)->getId())
// << " " << EvtPDL::name(daughters[i]) << endl;
}
if ( resetDaughters || forceDaugMassReset ) {
bool t1 = true;
//but keep the decay channel of the parent.
this->deleteDaughters( t1 );
this->makeDaughters( numdaughter, daughters );
bool massTreeOK = this->generateMassTree();
if ( massTreeOK == false ) {
return 0.0;
}
}
double weight = 0.;
for ( i = 0; i < numdaughter; i++ ) {
mass[i] = this->getDaug( i )->mass();
}
if ( poleSize < -0.1 ) {
//special case to enforce 4-momentum conservation in 1->1 decays
if ( numdaughter == 1 ) {
this->getDaug( 0 )->init( daughters[0],
EvtVector4R( m_b, 0.0, 0.0, 0.0 ) );
} else {
EvtGenKine::PhaseSpace( numdaughter, mass, p4, m_b );
for ( i = 0; i < numdaughter; i++ ) {
this->getDaug( i )->init( daughters[i], p4[i] );
}
}
} else {
if ( numdaughter != 3 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Only can generate pole phase space "
<< "distributions for 3 body final states" << endl
<< "Will terminate." << endl;
::abort();
}
bool ok = false;
if ( ( whichTwo1 == 1 && whichTwo2 == 0 ) ||
( whichTwo1 == 0 && whichTwo2 == 1 ) ) {
weight = EvtGenKine::PhaseSpacePole( m_b, mass[0], mass[1], mass[2],
poleSize, p4 );
this->getDaug( 0 )->init( daughters[0], p4[0] );
this->getDaug( 1 )->init( daughters[1], p4[1] );
this->getDaug( 2 )->init( daughters[2], p4[2] );
ok = true;
}
if ( ( whichTwo1 == 1 && whichTwo2 == 2 ) ||
( whichTwo1 == 2 && whichTwo2 == 1 ) ) {
weight = EvtGenKine::PhaseSpacePole( m_b, mass[2], mass[1], mass[0],
poleSize, p4 );
this->getDaug( 0 )->init( daughters[0], p4[2] );
this->getDaug( 1 )->init( daughters[1], p4[1] );
this->getDaug( 2 )->init( daughters[2], p4[0] );
ok = true;
}
if ( ( whichTwo1 == 0 && whichTwo2 == 2 ) ||
( whichTwo1 == 2 && whichTwo2 == 0 ) ) {
weight = EvtGenKine::PhaseSpacePole( m_b, mass[1], mass[0], mass[2],
poleSize, p4 );
this->getDaug( 0 )->init( daughters[0], p4[1] );
this->getDaug( 1 )->init( daughters[1], p4[0] );
this->getDaug( 2 )->init( daughters[2], p4[2] );
ok = true;
}
if ( !ok ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Invalid pair of particle to generate a pole dist "
<< whichTwo1 << " " << whichTwo2 << endl
<< "Will terminate." << endl;
::abort();
}
}
return weight;
}
void EvtParticle::makeDaughters( unsigned int ndaugstore,
std::vector<EvtId> idVector )
{
// Convert the STL vector method to use the array method for now, since the
// array method pervades most of the EvtGen code...
unsigned int nVector = idVector.size();
if ( nVector < ndaugstore ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Asking to make " << ndaugstore << " daughters when there "
<< "are only " << nVector << " EvtId values available" << endl;
return;
}
EvtId* idArray = new EvtId[ndaugstore];
unsigned int i;
for ( i = 0; i < ndaugstore; i++ ) {
idArray[i] = idVector[i];
}
this->makeDaughters( ndaugstore, idArray );
delete[] idArray;
}
void EvtParticle::makeDaughters( unsigned int ndaugstore, EvtId* id )
{
unsigned int i;
if ( _channel < 0 ) {
setChannel( 0 );
}
EvtParticle* pdaug;
if ( _ndaug != 0 ) {
if ( _ndaug != ndaugstore ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Asking to make a different number of "
<< "daughters than what was previously created." << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Original parent:" << EvtPDL::name( _id ) << endl;
for ( size_t i = 0; i < _ndaug; i++ ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Original daugther:"
<< EvtPDL::name( getDaug( i )->getId() ) << endl;
}
for ( size_t i = 0; i < ndaugstore; i++ ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "New Daug:" << EvtPDL::name( id[i] ) << endl;
}
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Will terminate." << endl;
::abort();
}
} else {
for ( i = 0; i < ndaugstore; i++ ) {
pdaug = EvtParticleFactory::particleFactory(
EvtPDL::getSpinType( id[i] ) );
pdaug->setId( id[i] );
pdaug->addDaug( this );
}
} //else
} //makeDaughters
void EvtParticle::setDecayProb( double prob )
{
if ( _decayProb == 0 )
_decayProb = new double;
*_decayProb = prob;
}
std::string EvtParticle::getName()
{
std::string theName = _id.getName();
return theName;
}
int EvtParticle::getAttribute( std::string attName )
{
// Retrieve the attribute integer if the name exists.
// Otherwise, simply return 0
int attValue = 0;
EvtAttIntMap::iterator mapIter;
if ( ( mapIter = _intAttributes.find( attName ) ) != _intAttributes.end() ) {
attValue = mapIter->second;
}
return attValue;
}
double EvtParticle::getAttributeDouble( std::string attName )
{
// Retrieve the attribute double if the name exists.
// Otherwise, simply return 0.0
double attValue = 0.0;
EvtAttDblMap::iterator mapIter;
if ( ( mapIter = _dblAttributes.find( attName ) ) != _dblAttributes.end() ) {
attValue = mapIter->second;
}
return attValue;
}
diff --git a/src/EvtGenBase/EvtParticleDecay.cpp b/src/EvtGenBase/EvtParticleDecay.cpp
index d7b4224..40e108d 100644
--- a/src/EvtGenBase/EvtParticleDecay.cpp
+++ b/src/EvtGenBase/EvtParticleDecay.cpp
@@ -1,72 +1,52 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtDecayParm.cc
-//
-// Description: Store decay parameters for one decay.
-//
-// Modification history:
-//
-// RYD April 5, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtParticleDecay.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include <ctype.h>
#include <fstream>
#include <iostream>
#include <stdlib.h>
#include <string>
#include <vector>
using std::fstream;
void EvtParticleDecay::printSummary()
{
if ( _decay != 0 )
_decay->printSummary();
}
void EvtParticleDecay::chargeConj( EvtParticleDecay* decay )
{
_brfrsum = decay->_brfrsum;
_massmin = decay->_massmin;
_decay = decay->_decay->clone();
int ndaug = decay->_decay->getNDaug();
int narg = decay->_decay->getNArg();
double brfr = decay->_decay->getBranchingFraction();
std::string name = decay->_decay->getName();
EvtId ipar = EvtPDL::chargeConj( decay->_decay->getParentId() );
int i;
EvtId* daug = new EvtId[ndaug];
for ( i = 0; i < ndaug; i++ ) {
daug[i] = EvtPDL::chargeConj( decay->_decay->getDaug( i ) );
}
//Had to add 1 to make sure the vector is not empty!
std::vector<std::string> args;
for ( i = 0; i < narg; i++ ) {
args.push_back( decay->_decay->getArgStr( i ) );
}
_decay->saveDecayInfo( ipar, ndaug, daug, narg, args, name, brfr );
if ( decay->_decay->getPHOTOS() )
_decay->setPHOTOS();
delete[] daug;
}
diff --git a/src/EvtGenBase/EvtParticleDecayList.cpp b/src/EvtGenBase/EvtParticleDecayList.cpp
index e94c2ee..90e9d81 100644
--- a/src/EvtGenBase/EvtParticleDecayList.cpp
+++ b/src/EvtGenBase/EvtParticleDecayList.cpp
@@ -1,463 +1,443 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtDecayParm.cc
-//
-// Description: Store decay parameters for one decay.
-//
-// Modification history:
-//
-// RYD April 5, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtParticleDecayList.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtStatus.hh"
#include <ctype.h>
#include <fstream>
#include <iostream>
#include <stdlib.h>
using std::endl;
using std::fstream;
EvtParticleDecayList::EvtParticleDecayList( const EvtParticleDecayList& o )
{
_nmode = o._nmode;
_rawbrfrsum = o._rawbrfrsum;
_decaylist = new EvtParticleDecayPtr[_nmode];
int i;
for ( i = 0; i < _nmode; i++ ) {
_decaylist[i] = new EvtParticleDecay;
EvtDecayBase* tModel = o._decaylist[i]->getDecayModel();
EvtDecayBase* tModelNew = tModel->clone();
if ( tModel->getPHOTOS() ) {
tModelNew->setPHOTOS();
}
if ( tModel->verbose() ) {
tModelNew->setVerbose();
}
if ( tModel->summary() ) {
tModelNew->setSummary();
}
std::vector<std::string> args;
int j;
for ( j = 0; j < tModel->getNArg(); j++ ) {
args.push_back( tModel->getArgStr( j ) );
}
tModelNew->saveDecayInfo( tModel->getParentId(), tModel->getNDaug(),
tModel->getDaugs(), tModel->getNArg(), args,
tModel->getModelName(),
tModel->getBranchingFraction() );
_decaylist[i]->setDecayModel( tModelNew );
_decaylist[i]->setBrfrSum( o._decaylist[i]->getBrfrSum() );
_decaylist[i]->setMassMin( o._decaylist[i]->getMassMin() );
}
}
EvtParticleDecayList::~EvtParticleDecayList()
{
int i;
for ( i = 0; i < _nmode; i++ ) {
delete _decaylist[i];
}
if ( _decaylist != 0 )
delete[] _decaylist;
}
void EvtParticleDecayList::printSummary()
{
int i;
for ( i = 0; i < _nmode; i++ ) {
_decaylist[i]->printSummary();
}
}
void EvtParticleDecayList::removeDecay()
{
int i;
for ( i = 0; i < _nmode; i++ ) {
delete _decaylist[i];
}
delete[] _decaylist;
_decaylist = 0;
_nmode = 0;
_rawbrfrsum = 0.0;
}
EvtDecayBase* EvtParticleDecayList::getDecayModel( int imode )
{
EvtDecayBase* theModel( 0 );
if ( imode >= 0 && imode < _nmode ) {
EvtParticleDecay* theDecay = _decaylist[imode];
if ( theDecay != 0 ) {
theModel = theDecay->getDecayModel();
}
}
return theModel;
}
EvtDecayBase* EvtParticleDecayList::getDecayModel( EvtParticle* p )
{
if ( p->getNDaug() != 0 ) {
assert( p->getChannel() >= 0 );
return getDecay( p->getChannel() ).getDecayModel();
}
if ( p->getChannel() > ( -1 ) ) {
return getDecay( p->getChannel() ).getDecayModel();
}
if ( getNMode() == 0 ) {
return 0;
}
if ( getRawBrfrSum() < 0.00000001 ) {
return 0;
}
if ( getNMode() == 1 ) {
p->setChannel( 0 );
return getDecay( 0 ).getDecayModel();
}
if ( p->getChannel() > ( -1 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Internal error!!!" << endl;
::abort();
}
int j;
for ( j = 0; j < 10000000; j++ ) {
double u = EvtRandom::Flat();
int i;
bool breakL = false;
for ( i = 0; i < getNMode(); i++ ) {
if ( breakL )
continue;
if ( u < getDecay( i ).getBrfrSum() ) {
breakL = true;
//special case for decay of on particel to another
// e.g. K0->K0S
if ( getDecay( i ).getDecayModel()->getNDaug() == 1 ) {
p->setChannel( i );
return getDecay( i ).getDecayModel();
}
if ( p->hasValidP4() ) {
if ( getDecay( i ).getMassMin() < p->mass() ) {
p->setChannel( i );
return getDecay( i ).getDecayModel();
}
} else {
//Lange apr29-2002 - dont know the mass yet
p->setChannel( i );
return getDecay( i ).getDecayModel();
}
}
}
}
//Ok, we tried 10000000 times above to pick a decay channel that is
//kinematically allowed! Now we give up and search all channels!
//if that fails, the particle will not be decayed!
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Tried 10000000 times to generate decay of "
<< EvtPDL::name( p->getId() ) << " with mass=" << p->mass() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will take first kinematically allowed decay in the decay table"
<< endl;
int i;
//Need to check that we don't use modes with 0 branching fractions.
double previousBrSum = 0.0;
for ( i = 0; i < getNMode(); i++ ) {
if ( getDecay( i ).getBrfrSum() != previousBrSum ) {
if ( getDecay( i ).getMassMin() < p->mass() ) {
p->setChannel( i );
return getDecay( i ).getDecayModel();
}
}
previousBrSum = getDecay( i ).getBrfrSum();
}
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Could not decay:" << EvtPDL::name( p->getId() ).c_str()
<< " with mass:" << p->mass() << " will throw event away! " << endl;
EvtStatus::setRejectFlag();
return 0;
}
void EvtParticleDecayList::setNMode( int nmode )
{
EvtParticleDecayPtr* _decaylist_new = new EvtParticleDecayPtr[nmode];
if ( _nmode != 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Error _nmode not equal to zero!!!" << endl;
::abort();
}
if ( _decaylist != 0 ) {
delete[] _decaylist;
}
_decaylist = _decaylist_new;
_nmode = nmode;
}
EvtParticleDecay& EvtParticleDecayList::getDecay( int nchannel ) const
{
if ( nchannel >= _nmode ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Error getting channel:" << nchannel << " with only " << _nmode
<< " stored!" << endl;
::abort();
}
return *( _decaylist[nchannel] );
}
void EvtParticleDecayList::makeChargeConj( EvtParticleDecayList* conjDecayList )
{
_rawbrfrsum = conjDecayList->_rawbrfrsum;
setNMode( conjDecayList->_nmode );
int i;
for ( i = 0; i < _nmode; i++ ) {
_decaylist[i] = new EvtParticleDecay;
_decaylist[i]->chargeConj( conjDecayList->_decaylist[i] );
}
}
void EvtParticleDecayList::addMode( EvtDecayBase* decay, double brfrsum,
double massmin )
{
EvtParticleDecayPtr* newlist = new EvtParticleDecayPtr[_nmode + 1];
int i;
for ( i = 0; i < _nmode; i++ ) {
newlist[i] = _decaylist[i];
}
_rawbrfrsum = brfrsum;
newlist[_nmode] = new EvtParticleDecay;
newlist[_nmode]->setDecayModel( decay );
newlist[_nmode]->setBrfrSum( brfrsum );
newlist[_nmode]->setMassMin( massmin );
EvtDecayBase* newDec = newlist[_nmode]->getDecayModel();
for ( i = 0; i < _nmode; i++ ) {
if ( newDec->matchingDecay( *( newlist[i]->getDecayModel() ) ) ) {
//sometimes its ok..
if ( newDec->getModelName() == "JETSET" ||
newDec->getModelName() == "PYTHIA" )
continue;
if ( newDec->getModelName() == "JSCONT" ||
newDec->getModelName() == "PYCONT" )
continue;
if ( newDec->getModelName() == "PYGAGA" )
continue;
if ( newDec->getModelName() == "LUNDAREALAW" )
continue;
if ( newDec->getModelName() == "TAUOLA" )
continue;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Two matching decays with same parent in decay table\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Please fix that\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Parent " << EvtPDL::name( newDec->getParentId() ).c_str()
<< endl;
for ( int j = 0; j < newDec->getNDaug(); j++ )
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Daughter "
<< EvtPDL::name( newDec->getDaug( j ) ).c_str() << endl;
assert( 0 );
}
}
if ( _nmode != 0 ) {
delete[] _decaylist;
}
if ( ( _nmode == 0 ) && ( _decaylist != 0 ) )
delete[] _decaylist;
_nmode++;
_decaylist = newlist;
}
void EvtParticleDecayList::finalize()
{
if ( _nmode > 0 ) {
if ( _rawbrfrsum < 0.000001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Please give me a "
<< "branching fraction sum greater than 0\n";
assert( 0 );
}
if ( fabs( _rawbrfrsum - 1.0 ) > 0.0001 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Warning, sum of branching fractions for "
<< EvtPDL::name( _decaylist[0]->getDecayModel()->getParentId() )
.c_str()
<< " is " << _rawbrfrsum << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "rescaled to one! " << endl;
}
int i;
for ( i = 0; i < _nmode; i++ ) {
double brfrsum = _decaylist[i]->getBrfrSum() / _rawbrfrsum;
_decaylist[i]->setBrfrSum( brfrsum );
}
}
}
EvtParticleDecayList& EvtParticleDecayList::operator=( const EvtParticleDecayList& o )
{
if ( this != &o ) {
removeDecay();
_nmode = o._nmode;
_rawbrfrsum = o._rawbrfrsum;
_decaylist = new EvtParticleDecayPtr[_nmode];
int i;
for ( i = 0; i < _nmode; i++ ) {
_decaylist[i] = new EvtParticleDecay;
EvtDecayBase* tModel = o._decaylist[i]->getDecayModel();
EvtDecayBase* tModelNew = tModel->clone();
if ( tModel->getPHOTOS() ) {
tModelNew->setPHOTOS();
}
if ( tModel->verbose() ) {
tModelNew->setVerbose();
}
if ( tModel->summary() ) {
tModelNew->setSummary();
}
std::vector<std::string> args;
int j;
for ( j = 0; j < tModel->getNArg(); j++ ) {
args.push_back( tModel->getArgStr( j ) );
}
tModelNew->saveDecayInfo( tModel->getParentId(), tModel->getNDaug(),
tModel->getDaugs(), tModel->getNArg(),
args, tModel->getModelName(),
tModel->getBranchingFraction() );
_decaylist[i]->setDecayModel( tModelNew );
//_decaylist[i]->setDecayModel(tModel);
_decaylist[i]->setBrfrSum( o._decaylist[i]->getBrfrSum() );
_decaylist[i]->setMassMin( o._decaylist[i]->getMassMin() );
}
}
return *this;
}
void EvtParticleDecayList::removeMode( EvtDecayBase* decay )
{
// here we will delete a decay with the same final state particles
// and recalculate the branching fractions for the remaining modes
int match = -1;
int i;
double match_bf;
for ( i = 0; i < _nmode; i++ ) {
if ( decay->matchingDecay( *( _decaylist[i]->getDecayModel() ) ) ) {
match = i;
}
}
if ( match < 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " Attempt to remove undefined mode for" << endl
<< "Parent " << EvtPDL::name( decay->getParentId() ).c_str() << endl
<< "Daughters: ";
for ( int j = 0; j < decay->getNDaug(); j++ )
EvtGenReport( EVTGEN_ERROR, "" )
<< EvtPDL::name( decay->getDaug( j ) ).c_str() << " ";
EvtGenReport( EVTGEN_ERROR, "" ) << endl;
::abort();
}
if ( match == 0 ) {
match_bf = _decaylist[match]->getBrfrSum();
} else {
match_bf = ( _decaylist[match]->getBrfrSum() -
_decaylist[match - 1]->getBrfrSum() );
}
double divisor = 1 - match_bf;
if ( divisor < 0.000001 && _nmode > 1 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Removing requested mode leaves "
<< EvtPDL::name( decay->getParentId() ).c_str()
<< " with zero sum branching fraction," << endl
<< "but more than one decay mode remains. Aborting." << endl;
::abort();
}
EvtParticleDecayPtr* newlist = new EvtParticleDecayPtr[_nmode - 1];
for ( i = 0; i < match; i++ ) {
newlist[i] = _decaylist[i];
newlist[i]->setBrfrSum( newlist[i]->getBrfrSum() / divisor );
}
for ( i = match + 1; i < _nmode; i++ ) {
newlist[i - 1] = _decaylist[i];
newlist[i - 1]->setBrfrSum(
( newlist[i - 1]->getBrfrSum() - match_bf ) / divisor );
}
delete[] _decaylist;
_nmode--;
_decaylist = newlist;
if ( _nmode == 0 ) {
delete[] _decaylist;
}
}
bool EvtParticleDecayList::isJetSet() const
{
int i;
EvtDecayBase* decayer;
for ( i = 0; i < getNMode(); i++ ) {
decayer = getDecay( i ).getDecayModel();
if ( decayer->getModelName() == "PYTHIA" )
return true;
}
return false;
}
diff --git a/src/EvtGenBase/EvtParticleFactory.cpp b/src/EvtGenBase/EvtParticleFactory.cpp
index 3cd4356..7959e51 100644
--- a/src/EvtGenBase/EvtParticleFactory.cpp
+++ b/src/EvtGenBase/EvtParticleFactory.cpp
@@ -1,207 +1,187 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtParticleFactory.cc
-//
-// Description: Class to describe all particles
-//
-// Modification history:
-//
-// DJL December 27, 1999 Module created.
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtParticleFactory.hh"
#include "EvtGenBase/EvtDiracParticle.hh"
#include "EvtGenBase/EvtHighSpinParticle.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtNeutrinoParticle.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtPhotonParticle.hh"
#include "EvtGenBase/EvtRaritaSchwingerParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtStringParticle.hh"
#include "EvtGenBase/EvtTensorParticle.hh"
#include "EvtGenBase/EvtVectorParticle.hh"
#include <sys/stat.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using std::endl;
EvtParticle* EvtParticleFactory::particleFactory( EvtSpinType::spintype spinType )
{
if ( spinType == EvtSpinType::SCALAR ) {
return new EvtScalarParticle;
}
if ( spinType == EvtSpinType::VECTOR ) {
return new EvtVectorParticle;
}
if ( spinType == EvtSpinType::DIRAC ) {
return new EvtDiracParticle;
}
if ( spinType == EvtSpinType::NEUTRINO ) {
return new EvtNeutrinoParticle;
}
if ( spinType == EvtSpinType::PHOTON ) {
return new EvtPhotonParticle;
}
if ( spinType == EvtSpinType::TENSOR ) {
return new EvtTensorParticle;
}
if ( spinType == EvtSpinType::STRING ) {
return new EvtStringParticle;
}
if ( spinType == EvtSpinType::RARITASCHWINGER ) {
return new EvtRaritaSchwingerParticle;
}
if ( spinType == EvtSpinType::SPIN5HALF ) {
return new EvtHighSpinParticle;
}
if ( spinType == EvtSpinType::SPIN3 ) {
return new EvtHighSpinParticle;
}
if ( spinType == EvtSpinType::SPIN7HALF ) {
return new EvtHighSpinParticle;
}
if ( spinType == EvtSpinType::SPIN4 ) {
return new EvtHighSpinParticle;
}
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Error in EvtParticleFactory::particleFactory" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Tried to create non-existing particle"
<< " with spin type:" << spinType << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Will terminate execution" << endl;
::abort();
return 0;
}
EvtParticle* EvtParticleFactory::particleFactory( EvtId id, EvtVector4R p4,
EvtSpinDensity rho )
{
EvtSpinType::spintype thisSpin = EvtPDL::getSpinType( id );
if ( thisSpin == EvtSpinType::SCALAR ) {
EvtScalarParticle* myPart;
myPart = new EvtScalarParticle;
myPart->init( id, p4 );
myPart->setSpinDensityForward( rho );
return myPart;
}
if ( thisSpin == EvtSpinType::VECTOR ) {
EvtVectorParticle* myPart;
myPart = new EvtVectorParticle;
myPart->init( id, p4 );
myPart->setSpinDensityForward( rho );
return myPart;
}
if ( thisSpin == EvtSpinType::DIRAC ) {
EvtDiracParticle* myPart;
myPart = new EvtDiracParticle;
myPart->init( id, p4 );
myPart->setSpinDensityForward( rho );
return myPart;
}
if ( thisSpin == EvtSpinType::NEUTRINO ) {
EvtNeutrinoParticle* myPart;
myPart = new EvtNeutrinoParticle;
myPart->init( id, p4 );
myPart->setSpinDensityForward( rho );
return myPart;
}
if ( thisSpin == EvtSpinType::PHOTON ) {
EvtPhotonParticle* myPart;
myPart = new EvtPhotonParticle;
myPart->init( id, p4 );
myPart->setSpinDensityForward( rho );
return myPart;
}
if ( thisSpin == EvtSpinType::TENSOR ) {
EvtTensorParticle* myPart;
myPart = new EvtTensorParticle;
myPart->init( id, p4 );
myPart->setSpinDensityForward( rho );
return myPart;
}
if ( thisSpin == EvtSpinType::STRING ) {
EvtStringParticle* myPart;
myPart = new EvtStringParticle;
myPart->init( id, p4 );
myPart->setSpinDensityForward( rho );
return myPart;
}
if ( thisSpin == EvtSpinType::SPIN3 ) {
EvtHighSpinParticle* myPart;
myPart = new EvtHighSpinParticle;
myPart->init( id, p4 );
myPart->setSpinDensityForward( rho );
return myPart;
}
if ( thisSpin == EvtSpinType::SPIN5HALF ) {
EvtHighSpinParticle* myPart;
myPart = new EvtHighSpinParticle;
myPart->init( id, p4 );
myPart->setSpinDensityForward( rho );
return myPart;
}
if ( thisSpin == EvtSpinType::SPIN7HALF ) {
EvtHighSpinParticle* myPart;
myPart = new EvtHighSpinParticle;
myPart->init( id, p4 );
myPart->setSpinDensityForward( rho );
return myPart;
}
if ( thisSpin == EvtSpinType::RARITASCHWINGER ) {
EvtRaritaSchwingerParticle* myPart;
myPart = new EvtRaritaSchwingerParticle;
myPart->init( id, p4 );
myPart->setSpinDensityForward( rho );
return myPart;
}
if ( thisSpin == EvtSpinType::SPIN4 ) {
EvtHighSpinParticle* myPart;
myPart = new EvtHighSpinParticle;
myPart->init( id, p4 );
myPart->setSpinDensityForward( rho );
return myPart;
}
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Error in EvtParticleFactory::particleFactory" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Tried to create non-existing particle"
<< " with spin type:" << thisSpin
<< " and name:" << EvtPDL::name( id ).c_str() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Will terminate execution" << endl;
::abort();
return 0;
}
EvtParticle* EvtParticleFactory::particleFactory( EvtId id, EvtVector4R p4 )
{
EvtSpinDensity rho;
rho.setDiag( EvtSpinType::getSpinStates( EvtPDL::getSpinType( id ) ) );
return particleFactory( id, p4, rho );
}
diff --git a/src/EvtGenBase/EvtPhotonParticle.cpp b/src/EvtGenBase/EvtPhotonParticle.cpp
index 5d0e550..920efdc 100644
--- a/src/EvtGenBase/EvtPhotonParticle.cpp
+++ b/src/EvtGenBase/EvtPhotonParticle.cpp
@@ -1,158 +1,138 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtPhotonParticle.cc
-//
-// Description: Class to describe massless vectors
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtPhotonParticle.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <iostream>
#include <math.h>
#include <stdlib.h>
using std::endl;
void EvtPhotonParticle::init( EvtId part_n, const EvtVector4R& p4 )
{
init( part_n, p4.get( 0 ), p4.get( 1 ), p4.get( 2 ), p4.get( 3 ) );
}
void EvtPhotonParticle::init( EvtId part_n, double e, double px, double py,
double pz )
{
_validP4 = true;
setp( e, px, py, pz );
setpart_num( part_n );
setLifetime();
//defere calculation of basis vectors untill they are needed!
_evalBasis = 0;
}
EvtVector4C EvtPhotonParticle::epsParentPhoton( int i )
{
if ( !_evalBasis ) {
_evalBasis = 1;
eps1.set( EvtComplex( 0.0, 0.0 ), EvtComplex( -1.0 / sqrt( 2.0 ), 0.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), EvtComplex( 0.0, 0.0 ) );
eps2.set( EvtComplex( 0.0, 0.0 ), EvtComplex( 1.0 / sqrt( 2.0 ), 0.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), EvtComplex( 0.0, 0.0 ) );
// These are for photon along z axis. Rotate to get
// correct direction...
double phi, theta;
EvtVector4R p = this->getP4();
double px = p.get( 1 );
double py = p.get( 2 );
double pz = p.get( 3 );
phi = atan2( py, px );
theta = acos( pz / sqrt( px * px + py * py + pz * pz ) );
eps1.applyRotateEuler( phi, theta, -phi );
eps2.applyRotateEuler( phi, theta, -phi );
}
EvtVector4C temp;
switch ( i ) {
case 0:
temp = eps1;
break;
case 1:
temp = eps2;
break;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtPhotonParticle.cc: Asked "
<< "for state:" << i << endl;
::abort();
break;
}
return temp;
}
EvtVector4C EvtPhotonParticle::epsPhoton( int )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtPhotonParticle.cc: Can not get "
<< "state in photons restframe." << endl;
;
::abort();
return EvtVector4C();
}
EvtSpinDensity EvtPhotonParticle::rotateToHelicityBasis() const
{
EvtVector4C eplus( 0.0, -1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
EvtVector4C eminus( 0.0, 1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
//Really uggly have to cast away constness because the
//function epsParentPhoton caches the state vectors...
EvtVector4C e1 = ( (EvtParticle*)this )->epsParentPhoton( 0 );
EvtVector4C e2 = ( (EvtParticle*)this )->epsParentPhoton( 1 );
EvtSpinDensity R;
R.setDim( 2 );
R.set( 0, 0, ( eplus.conj() ) * e1 );
R.set( 0, 1, ( eplus.conj() ) * e2 );
R.set( 1, 0, ( eminus.conj() ) * e1 );
R.set( 1, 1, ( eminus.conj() ) * e2 );
return R;
}
EvtSpinDensity EvtPhotonParticle::rotateToHelicityBasis( double alpha,
double beta,
double gamma ) const
{
EvtVector4C eplus( 0.0, -1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
EvtVector4C eminus( 0.0, 1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
eplus.applyRotateEuler( alpha, beta, gamma );
eminus.applyRotateEuler( alpha, beta, gamma );
//Really uggly have to cast away constness because the
//function epsParentPhoton caches the state vectors...
EvtVector4C e1 = ( (EvtParticle*)this )->epsParentPhoton( 0 );
EvtVector4C e2 = ( (EvtParticle*)this )->epsParentPhoton( 1 );
EvtSpinDensity R;
R.setDim( 2 );
R.set( 0, 0, ( eplus.conj() ) * e1 );
R.set( 0, 1, ( eplus.conj() ) * e2 );
R.set( 1, 0, ( eminus.conj() ) * e1 );
R.set( 1, 1, ( eminus.conj() ) * e2 );
return R;
}
diff --git a/src/EvtGenBase/EvtPoint1D.cpp b/src/EvtGenBase/EvtPoint1D.cpp
index 668a433..59ad6bc 100644
--- a/src/EvtGenBase/EvtPoint1D.cpp
+++ b/src/EvtGenBase/EvtPoint1D.cpp
@@ -1,39 +1,28 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPoint1D.cpp,v 1.3 2009-03-16 15:44:41 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
-// Point on a finite 1-D interval. isValid shows whether for a given specification,
-// the coordinate _value is inside the interval defined by _min, _max.
-
#include "EvtGenBase/EvtPoint1D.hh"
+#include "EvtGenBase/EvtPatches.hh"
+
#include <stdio.h>
EvtPoint1D::EvtPoint1D() :
_min( 0. ), _max( -1. ), _value( 0. ), _valid( false )
{
}
EvtPoint1D::EvtPoint1D( double value ) :
_min( 0. ), _max( -1. ), _value( value ), _valid( true )
{
}
EvtPoint1D::EvtPoint1D( double min, double max, double value ) :
_min( min ),
_max( max ),
_value( value ),
_valid( ( _min <= _value && _value <= _max ) ? true : false )
{
}
void EvtPoint1D::print() const
{
printf( "%f (%f : %f)\n", _value, _min, _max );
}
diff --git a/src/EvtGenBase/EvtPropBreitWigner.cpp b/src/EvtGenBase/EvtPropBreitWigner.cpp
index b1f23b8..982ec7b 100644
--- a/src/EvtGenBase/EvtPropBreitWigner.cpp
+++ b/src/EvtGenBase/EvtPropBreitWigner.cpp
@@ -1,32 +1,24 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPropBreitWigner.cpp,v 1.3 2009-03-16 15:44:41 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
+#include "EvtGenBase/EvtPropBreitWigner.hh"
#include "EvtGenBase/EvtConst.hh"
-#include "EvtGenBase/EvtPropBreitWigner.hh"
+#include "EvtGenBase/EvtPatches.hh"
#include <math.h>
EvtPropBreitWigner::EvtPropBreitWigner( double m0, double g0 ) :
EvtPropagator( m0, g0 )
{
}
EvtAmplitude<EvtPoint1D>* EvtPropBreitWigner::clone() const
{
return new EvtPropBreitWigner( *this );
}
EvtComplex EvtPropBreitWigner::amplitude( const EvtPoint1D& x ) const
{
double m = x.value();
EvtComplex value = sqrt( _g0 / EvtConst::twoPi ) /
( m - _m0 - EvtComplex( 0.0, _g0 / 2. ) );
return value;
}
diff --git a/src/EvtGenBase/EvtPropBreitWignerRel.cpp b/src/EvtGenBase/EvtPropBreitWignerRel.cpp
index b108466..2848110 100644
--- a/src/EvtGenBase/EvtPropBreitWignerRel.cpp
+++ b/src/EvtGenBase/EvtPropBreitWignerRel.cpp
@@ -1,29 +1,21 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPropBreitWignerRel.cpp,v 1.3 2009-03-16 15:44:41 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
#include "EvtGenBase/EvtPropBreitWignerRel.hh"
+#include "EvtGenBase/EvtPatches.hh"
+
#include <math.h>
EvtPropBreitWignerRel::EvtPropBreitWignerRel( double m0, double g0 ) :
EvtPropagator( m0, g0 )
{
}
EvtAmplitude<EvtPoint1D>* EvtPropBreitWignerRel::clone() const
{
return new EvtPropBreitWignerRel( *this );
}
EvtComplex EvtPropBreitWignerRel::amplitude( const EvtPoint1D& x ) const
{
double m = x.value();
return 1. / ( _m0 * _m0 - m * m - EvtComplex( 0., _m0 * _g0 ) );
}
diff --git a/src/EvtGenBase/EvtPropFlatte.cpp b/src/EvtGenBase/EvtPropFlatte.cpp
index 72ccca9..b834967 100644
--- a/src/EvtGenBase/EvtPropFlatte.cpp
+++ b/src/EvtGenBase/EvtPropFlatte.cpp
@@ -1,79 +1,72 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * Author : D. Dujmic, J. Thompson
- *
- * Copyright (C) 2005 SLAC
- *******************************************************************************/
-
#include "EvtGenBase/EvtPropFlatte.hh"
+#include "EvtGenBase/EvtPatches.hh"
+
#include <iostream>
#include <math.h>
using std::cout;
using std::endl;
EvtPropFlatte::EvtPropFlatte( double m0, double g0, double m0a, double m0b,
double g1, double m1a, double m1b ) :
EvtPropagator( m0, g0 ),
_m0a( m0a ),
_m0b( m0b ),
_g1( g1 ),
_m1a( m1a ),
_m1b( m1b )
{
}
EvtAmplitude<EvtPoint1D>* EvtPropFlatte::clone() const
{
return new EvtPropFlatte( *this );
}
EvtComplex EvtPropFlatte::amplitude( const EvtPoint1D& x ) const
{
/*
Use BES parameterization:
1.
-----------------------------------------
m0^2 - m^2 - i*m0*( g1*rho1 + g2*rho2 )
Resonance mass: m0
Channel1: m0a, m0b, g0
Channel2: m1a, m1b, g1
where breakup momenta q's are:
E0a = (m^2 + m0a^2 - m0b^2) / 2m
q0 = sqrt( E0a^2 - m0a^2 )
E1a = (m^2 + m1a^2 - m1b^2) / 2m
q1 = sqrt( E1a^2 - m1a^2 )
*/
double s = x.value() * x.value();
double m = x.value();
double E0a = 0.5 * ( s + _m0a * _m0a - _m0b * _m0b ) / m;
double qSq0 = E0a * E0a - _m0a * _m0a;
double E1a = 0.5 * ( s + _m1a * _m1a - _m1b * _m1b ) / m;
double qSq1 = E1a * E1a - _m1a * _m1a;
EvtComplex gamma0 = qSq0 >= 0 ? EvtComplex( _g0 * sqrt( qSq0 ), 0 )
: EvtComplex( 0, _g0 * sqrt( -qSq0 ) );
EvtComplex gamma1 = qSq1 >= 0 ? EvtComplex( _g1 * sqrt( qSq1 ), 0 )
: EvtComplex( 0, _g1 * sqrt( -qSq1 ) );
EvtComplex gamma = gamma0 + gamma1;
EvtComplex a = 1.0 /
( _m0 * _m0 - s - EvtComplex( 0.0, 2 * _m0 / m ) * gamma );
return a;
}
diff --git a/src/EvtGenBase/EvtPropGounarisSakurai.cpp b/src/EvtGenBase/EvtPropGounarisSakurai.cpp
index bc0f84d..cccfb13 100644
--- a/src/EvtGenBase/EvtPropGounarisSakurai.cpp
+++ b/src/EvtGenBase/EvtPropGounarisSakurai.cpp
@@ -1,95 +1,88 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPropGounarisSakurai.cpp,v 1.1 2009-03-16 16:47:03 robbep Exp $
- * Author: Matt Graham
- * modified from EvtPropBreitWignerRel...this should be used for rho's
- *******************************************************************************/
-
#include "EvtGenBase/EvtPropGounarisSakurai.hh"
+#include "EvtGenBase/EvtPatches.hh"
+
#include <math.h>
EvtPropGounarisSakurai::EvtPropGounarisSakurai( EvtDalitzPlot* dp,
EvtCyclic3::Pair pair,
double m0, double g0 ) :
EvtPropagator( m0, g0 ), _pair( pair ), _gbase( g0 )
{
_dalitzSpace = dp;
_m1 = dp->m( EvtCyclic3::first( _pair ) );
_m2 = dp->m( EvtCyclic3::second( _pair ) );
}
EvtAmplitude<EvtPoint1D>* EvtPropGounarisSakurai::clone() const
{
return new EvtPropGounarisSakurai( *this );
}
EvtComplex EvtPropGounarisSakurai::amplitude( const EvtPoint1D& x ) const
{
double m = x.value();
double s = m * m;
double m2 = _m0 * _m0;
double _width = _gbase;
double _mass = _m0;
double A = ( 1 + dFun( m2 ) * _width / _mass );
double B = s - m2 - fsFun( s );
// double C = sqrt(s)*_g0;//wrong!
double C = sqrt( m2 ) * _g0; //correct!
double D = B * B + C * C;
EvtComplex rpt( A * B / D, -A * C / D );
return rpt;
}
// adapted from RhoPiTools
double EvtPropGounarisSakurai::fsFun( double s ) const
{
double m2 = _m0 * _m0;
EvtTwoBodyKine vd( _m1, _m2, sqrt( s ) );
EvtTwoBodyKine vR( _m1, _m2, _m0 );
double k_s = vd.p();
double k_Am2 = vR.p();
//
double f = _gbase * m2 / pow( k_Am2, 3 ) *
( pow( k_s, 2 ) * ( hFun( s ) - hFun( m2 ) ) +
( m2 - s ) * pow( k_Am2, 2 ) * dh_dsFun( m2 ) );
return f;
}
double EvtPropGounarisSakurai::hFun( double s ) const
{
double sm = _m1 + _m2;
double SQRTs = sqrt( s );
EvtTwoBodyKine vd( _m1, _m2, sqrt( s ) );
double k_s = vd.p();
return 2 / EvtConst::pi * ( k_s / SQRTs ) *
log( ( SQRTs + 2 * k_s ) / ( sm ) );
}
double EvtPropGounarisSakurai::dh_dsFun( double s ) const
{
EvtTwoBodyKine vd( _m1, _m2, sqrt( s ) );
double k_s = vd.p();
return hFun( s ) * ( 1 / ( 8 * pow( k_s, 2 ) ) - 1 / ( 2 * s ) ) +
1 / ( 2 * EvtConst::pi * s );
}
double EvtPropGounarisSakurai::dFun( double s ) const
{
double sm = _m1 + _m2;
double sm24 = sm * sm / 4;
double m = sqrt( s );
EvtTwoBodyKine vd( _m1, _m2, sqrt( s ) );
double k_m2 = vd.p();
double _pi = EvtConst::pi;
return 3.0 / _pi * sm24 / pow( k_m2, 2 ) * log( ( m + 2 * k_m2 ) / sm ) +
m / ( 2 * _pi * k_m2 ) - sm24 * m / ( _pi * pow( k_m2, 3 ) );
}
diff --git a/src/EvtGenBase/EvtPto3PAmp.cpp b/src/EvtGenBase/EvtPto3PAmp.cpp
index 7abc26e..c399d08 100644
--- a/src/EvtGenBase/EvtPto3PAmp.cpp
+++ b/src/EvtGenBase/EvtPto3PAmp.cpp
@@ -1,210 +1,198 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtPto3PAmp.cpp,v 1.3 2009-03-16 15:44:04 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *
- * Modified: May 30, 2005, Denis Dujmic (ddujmic@slac.stanford.edu): flip sign
- * for vector resonances (-i -> i at resonance mass).
- * Introduce Flatte lineshape.
- *******************************************************************************/
+#include "EvtGenBase/EvtPto3PAmp.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDalitzCoord.hh"
-#include "EvtGenBase/EvtPto3PAmp.hh"
+#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtdFunction.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
using EvtCyclic3::Index;
using EvtCyclic3::Pair;
using std::endl;
EvtPto3PAmp::EvtPto3PAmp( EvtDalitzPlot dp, Pair pairAng, Pair pairRes,
EvtSpinType::spintype spin, const EvtPropagator& prop,
NumType typeN ) :
EvtAmplitude<EvtDalitzPoint>(),
_pairAng( pairAng ),
_pairRes( pairRes ),
_spin( spin ),
_typeN( typeN ),
_prop( (EvtPropagator*)prop.clone() ),
_g0( prop.g0() ),
_min( 0 ),
_max( 0 ),
_vb( prop.m0(), dp.m( EvtCyclic3::other( pairRes ) ), dp.bigM(), spin ),
_vd( dp.m( EvtCyclic3::first( pairRes ) ),
dp.m( EvtCyclic3::second( pairRes ) ), prop.m0(), spin )
{
}
EvtPto3PAmp::EvtPto3PAmp( const EvtPto3PAmp& other ) :
EvtAmplitude<EvtDalitzPoint>( other ),
_pairAng( other._pairAng ),
_pairRes( other._pairRes ),
_spin( other._spin ),
_typeN( other._typeN ),
_prop( ( other._prop ) ? (EvtPropagator*)other._prop->clone() : 0 ),
_g0( other._g0 ),
_min( other._min ),
_max( other._max ),
_vb( other._vb ),
_vd( other._vd )
{
}
EvtPto3PAmp::~EvtPto3PAmp()
{
if ( _prop )
delete _prop;
}
void EvtPto3PAmp::set_fd( double R )
{
_vd.set_f( R );
}
void EvtPto3PAmp::set_fb( double R )
{
_vb.set_f( R );
}
EvtComplex EvtPto3PAmp::amplitude( const EvtDalitzPoint& x ) const
{
EvtComplex amp( 1.0, 0.0 );
double m = sqrt( x.q( _pairRes ) );
if ( ( _max > 0 && m > _max ) || ( _min > 0 && m < _min ) )
return EvtComplex( 0.0, 0.0 );
EvtTwoBodyKine vd( x.m( EvtCyclic3::first( _pairRes ) ),
x.m( EvtCyclic3::second( _pairRes ) ), m );
EvtTwoBodyKine vb( m, x.m( EvtCyclic3::other( _pairRes ) ), x.bigM() );
// Compute mass-dependent width for relativistic propagators
if ( _typeN != NBW && _typeN != FLATTE ) {
_prop->set_g0( _g0 * _vd.widthFactor( vd ) );
}
// Compute propagator
amp *= evalPropagator( m );
// Compute form-factors
amp *= _vd.formFactor( vd );
amp *= _vb.formFactor( vb );
amp *= numerator( x );
return amp;
}
EvtComplex EvtPto3PAmp::numerator( const EvtDalitzPoint& x ) const
{
EvtComplex ret( 0., 0. );
double m = sqrt( x.q( _pairRes ) );
EvtTwoBodyKine vd( x.m( EvtCyclic3::first( _pairRes ) ),
x.m( EvtCyclic3::second( _pairRes ) ), m );
EvtTwoBodyKine vb( m, x.m( EvtCyclic3::other( _pairRes ) ), x.bigM() );
// Non-relativistic Breit-Wigner
if ( NBW == _typeN ) {
ret = angDep( x );
}
// Standard relativistic Zemach propagator
else if ( RBW_ZEMACH == _typeN ) {
ret = _vd.phaseSpaceFactor( vd, EvtTwoBodyKine::AB ) * angDep( x );
}
// Kuehn-Santamaria normalization:
else if ( RBW_KUEHN == _typeN ) {
ret = _prop->m0() * _prop->m0() * angDep( x );
}
// CLEO amplitude is not factorizable
//
// The CLEO amplitude numerator is proportional to:
//
// m2_AC - m2_BC + (m2_D - m2_C)(m2_B - m2_A)/m2_0
//
// m2_AC = (eA + eC)^2 + (P - P_C cosTh(BC))^2
// m2_BC = (eB + eC)^2 + (P + P_C cosTh(BC))^2
//
// The first term m2_AB-m2_BC is therefore a p-wave term
// - 4PP_C cosTh(BC)
// The second term is an s-wave, the amplitude
// does not factorize!
//
// The first term is just Zemach. However, the sign is flipped!
// Let's consistently use the convention in which the amplitude
// is proportional to +cosTh(BC). In the CLEO expressions, I will
// therefore exchange AB to get rid of the sign flip.
if ( RBW_CLEO == _typeN || FLATTE == _typeN || GS == _typeN ) {
Index iA = EvtCyclic3::other( _pairAng ); // A = other(BC)
Index iB = EvtCyclic3::common( _pairRes, _pairAng ); // B = common(AB,BC)
Index iC = EvtCyclic3::other( _pairRes ); // C = other(AB)
double M = x.bigM();
double mA = x.m( iA );
double mB = x.m( iB );
double mC = x.m( iC );
double qAB = x.q( EvtCyclic3::combine( iA, iB ) );
double qBC = x.q( EvtCyclic3::combine( iB, iC ) );
double qCA = x.q( EvtCyclic3::combine( iC, iA ) );
//double m0 = _prop->m0();
if ( _spin == EvtSpinType::SCALAR )
ret = EvtComplex( 1., 0. );
else if ( _spin == EvtSpinType::VECTOR ) {
//ret = qCA - qBC - (M*M - mC*mC)*(mA*mA - mB*mB)/m0/m0;
ret = qCA - qBC - ( M * M - mC * mC ) * ( mA * mA - mB * mB ) / qAB;
} else if ( _spin == EvtSpinType::TENSOR ) {
//double x1 = qBC - qCA + (M*M - mC*mC)*(mA*mA - mB*mB)/m0/m0;
double x1 = qBC - qCA +
( M * M - mC * mC ) * ( mA * mA - mB * mB ) / qAB;
double x2 = M * M - mC * mC;
//double x3 = qAB - 2*M*M - 2*mC*mC + x2*x2/m0/m0;
double x3 = qAB - 2 * M * M - 2 * mC * mC + x2 * x2 / qAB;
double x4 = mB * mB - mA * mA;
//double x5 = qAB - 2*mB*mB - 2*mA*mA + x4*x4/m0/m0;
double x5 = qAB - 2 * mB * mB - 2 * mA * mA + x4 * x4 / qAB;
ret = ( x1 * x1 - 1. / 3. * x3 * x5 );
} else
assert( 0 );
}
return ret;
}
double EvtPto3PAmp::angDep( const EvtDalitzPoint& x ) const
{
// Angular dependece for factorizable amplitudes
// unphysical cosines indicate we are in big trouble
double cosTh = x.cosTh( _pairAng, _pairRes );
if ( fabs( cosTh ) > 1. ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "cosTh " << cosTh << endl;
assert( 0 );
}
// in units of half-spin
return EvtdFunction::d( EvtSpinType::getSpin2( _spin ), 2 * 0, 2 * 0,
acos( cosTh ) );
}
diff --git a/src/EvtGenBase/EvtPto3PAmpFactory.cpp b/src/EvtGenBase/EvtPto3PAmpFactory.cpp
index d63cdb7..e6bc216 100644
--- a/src/EvtGenBase/EvtPto3PAmpFactory.cpp
+++ b/src/EvtGenBase/EvtPto3PAmpFactory.cpp
@@ -1,369 +1,351 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtPto3PAmpFactory.cpp,v 1.3 2009-03-16 15:44:04 robbep Exp $
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module creator:
-// Alexei Dvoretskii, Caltech, 2001-2002.
-//-----------------------------------------------------------------------
-#include "EvtGenBase/EvtPatches.hh"
-
-// AmpFactory for building a P -> 3P decay
-// (pseudoscalar to three pseudoscalars)
+#include "EvtGenBase/EvtPto3PAmpFactory.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDalitzFlatPdf.hh"
#include "EvtGenBase/EvtDalitzResPdf.hh"
#include "EvtGenBase/EvtFlatAmp.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtLASSAmp.hh"
#include "EvtGenBase/EvtNonresonantAmp.hh"
#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtPropBreitWigner.hh"
#include "EvtGenBase/EvtPropBreitWignerRel.hh"
#include "EvtGenBase/EvtPropFlatte.hh"
#include "EvtGenBase/EvtPto3PAmp.hh"
-#include "EvtGenBase/EvtPto3PAmpFactory.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include <assert.h>
#include <math.h>
#include <memory>
#include <stdio.h>
#include <stdlib.h>
using namespace EvtCyclic3;
#include <iostream>
void EvtPto3PAmpFactory::processAmp( EvtComplex c, std::vector<std::string> vv,
bool conj )
{
if ( _verbose ) {
printf( "Make %samplitude\n", conj ? "CP conjugate" : "" );
unsigned i;
for ( i = 0; i < vv.size(); i++ )
printf( "%s\n", vv[i].c_str() );
printf( "\n" );
}
std::unique_ptr<EvtAmplitude<EvtDalitzPoint>> amp;
std::unique_ptr<EvtPdf<EvtDalitzPoint>> pdf;
std::string name;
Pair pairRes = AB;
size_t i;
/*
Experimental amplitudes
*/
if ( vv[0] == "PHASESPACE" ) {
pdf = std::make_unique<EvtDalitzFlatPdf>( _dp );
amp = std::make_unique<EvtFlatAmp<EvtDalitzPoint>>();
name = "NR";
} else if ( !vv[0].find( "NONRES" ) ) {
double alpha = 0;
EvtPto3PAmp::NumType typeNRes = EvtPto3PAmp::NONRES;
if ( vv[0] == "NONRES_LIN" ) {
typeNRes = EvtPto3PAmp::NONRES_LIN;
pairRes = strToPair( vv[1].c_str() );
} else if ( vv[0] == "NONRES_EXP" ) {
typeNRes = EvtPto3PAmp::NONRES_EXP;
pairRes = strToPair( vv[1].c_str() );
alpha = strtod( vv[2].c_str(), 0 );
} else
assert( 0 );
pdf = std::make_unique<EvtDalitzFlatPdf>( _dp );
amp = std::make_unique<EvtNonresonantAmp>( &_dp, typeNRes, pairRes,
alpha );
} else if ( vv[0] == "LASS" || vv[0] == "LASS_ELASTIC" ||
vv[0] == "LASS_RESONANT" ) {
pairRes = strToPair( vv[1].c_str() );
double m0 = strtod( vv[2].c_str(), 0 );
double g0 = strtod( vv[3].c_str(), 0 );
double a = strtod( vv[4].c_str(), 0 );
double r = strtod( vv[5].c_str(), 0 );
double cutoff = strtod( vv[6].c_str(), 0 );
pdf = std::make_unique<EvtDalitzResPdf>( _dp, m0, g0, pairRes );
amp = std::make_unique<EvtLASSAmp>( &_dp, pairRes, m0, g0, a, r, cutoff,
vv[0] );
}
/*
Resonant amplitudes
*/
else if ( vv[0] == "RESONANCE" ) {
std::unique_ptr<EvtPto3PAmp> partAmp;
// RESONANCE stanza
pairRes = strToPair( vv[1].c_str() );
EvtSpinType::spintype spinR = EvtSpinType::SCALAR;
double mR, gR;
name = vv[2];
EvtId resId = EvtPDL::getId( vv[2] );
if ( _verbose )
printf( "Particles %s form %sresonance %s\n", vv[1].c_str(),
vv[2].c_str(), conj ? "(conj) " : "" );
// If no valid particle name is given, assume that
// it is the spin, the mass and the width of the particle.
if ( resId.getId() == -1 ) {
switch ( atoi( vv[2].c_str() ) ) {
case 0: {
spinR = EvtSpinType::SCALAR;
break;
}
case 1: {
spinR = EvtSpinType::VECTOR;
break;
}
case 2: {
spinR = EvtSpinType::TENSOR;
break;
}
case 3: {
spinR = EvtSpinType::SPIN3;
break;
}
case 4: {
spinR = EvtSpinType::SPIN4;
break;
}
default: {
assert( 0 );
break;
}
}
mR = strtod( vv[3].c_str(), 0 );
gR = strtod( vv[4].c_str(), 0 );
i = 4;
} else {
// For a valid particle get spin, mass and width
spinR = EvtPDL::getSpinType( resId );
mR = EvtPDL::getMeanMass( resId );
gR = EvtPDL::getWidth( resId );
i = 2;
// It's possible to specify mass and width of a particle
// explicitly
if ( vv[3] != "ANGULAR" ) {
if ( _verbose )
printf( "Setting m(%s)=%s g(%s)=%s\n", vv[2].c_str(),
vv[3].c_str(), vv[2].c_str(), vv[4].c_str() );
mR = strtod( vv[3].c_str(), 0 );
gR = strtod( vv[4].c_str(), 0 );
i = 4;
}
}
// ANGULAR stanza
if ( vv[++i] != "ANGULAR" ) {
printf( "%s instead of ANGULAR\n", vv[i].c_str() );
exit( 0 );
}
Pair pairAng = strToPair( vv[++i].c_str() );
if ( _verbose )
printf( "Angle is measured between particles %s\n", vv[i].c_str() );
// TYPE stanza
std::string typeName = vv[++i];
assert( typeName == "TYPE" );
std::string type = vv[++i];
if ( _verbose )
printf( "Propagator type %s\n", vv[i].c_str() );
if ( type == "NBW" ) {
EvtPropBreitWigner prop( mR, gR );
partAmp = std::make_unique<EvtPto3PAmp>( _dp, pairAng, pairRes, spinR,
prop, EvtPto3PAmp::NBW );
} else if ( type == "RBW_ZEMACH" ) {
EvtPropBreitWignerRel prop( mR, gR );
partAmp = std::make_unique<EvtPto3PAmp>( _dp, pairAng, pairRes,
spinR, prop,
EvtPto3PAmp::RBW_ZEMACH );
} else if ( type == "RBW_KUEHN" ) {
EvtPropBreitWignerRel prop( mR, gR );
partAmp = std::make_unique<EvtPto3PAmp>( _dp, pairAng, pairRes,
spinR, prop,
EvtPto3PAmp::RBW_KUEHN );
} else if ( type == "RBW_CLEO" ) {
EvtPropBreitWignerRel prop( mR, gR );
partAmp = std::make_unique<EvtPto3PAmp>( _dp, pairAng, pairRes,
spinR, prop,
EvtPto3PAmp::RBW_CLEO );
} else if ( type == "FLATTE" ) {
double m1a = _dp.m( first( pairRes ) );
double m1b = _dp.m( second( pairRes ) );
// 2nd channel
double g2 = strtod( vv[++i].c_str(), 0 );
double m2a = strtod( vv[++i].c_str(), 0 );
double m2b = strtod( vv[++i].c_str(), 0 );
EvtPropFlatte prop( mR, gR, m1a, m1b, g2, m2a, m2b );
partAmp = std::make_unique<EvtPto3PAmp>( _dp, pairAng, pairRes, spinR,
prop, EvtPto3PAmp::FLATTE );
} else
assert( 0 );
// Optional DVFF, BVFF stanzas
if ( i < vv.size() - 1 ) {
if ( vv[i + 1] == "DVFF" ) {
i++;
if ( vv[++i] == "BLATTWEISSKOPF" ) {
double R = strtod( vv[++i].c_str(), 0 );
partAmp->set_fd( R );
} else
assert( 0 );
}
}
if ( i < vv.size() - 1 ) {
if ( vv[i + 1] == "BVFF" ) {
i++;
if ( vv[++i] == "BLATTWEISSKOPF" ) {
if ( _verbose )
printf( "BVFF=%s\n", vv[i].c_str() );
double R = strtod( vv[++i].c_str(), 0 );
partAmp->set_fb( R );
} else
assert( 0 );
}
}
const int minwidths = 5;
//Optional resonance minimum and maximum
if ( i < vv.size() - 1 ) {
if ( vv[i + 1] == "CUTOFF" ) {
i++;
if ( vv[i + 1] == "MIN" ) {
i++;
double min = strtod( vv[++i].c_str(), 0 );
if ( _verbose )
std::cout << "CUTOFF MIN = " << min << " " << minwidths
<< std::endl;
//ensure against cutting off too close to the resonance
assert( min < ( mR - minwidths * gR ) );
partAmp->setmin( min );
} else if ( vv[i + 1] == "MAX" ) {
i++;
double max = strtod( vv[++i].c_str(), 0 );
if ( _verbose )
std::cout << "CUTOFF MAX = " << max << " " << minwidths
<< std::endl;
//ensure against cutting off too close to the resonance
assert( max > ( mR + minwidths * gR ) );
partAmp->setmax( max );
} else
assert( 0 );
}
}
//2nd iteration in case min and max are both specified
if ( i < vv.size() - 1 ) {
if ( vv[i + 1] == "CUTOFF" ) {
i++;
if ( vv[i + 1] == "MIN" ) {
i++;
double min = strtod( vv[++i].c_str(), 0 );
if ( _verbose )
std::cout << "CUTOFF MIN = " << min << std::endl;
//ensure against cutting off too close to the resonance
assert( min < ( mR - minwidths * gR ) );
partAmp->setmin( min );
} else if ( vv[i + 1] == "MAX" ) {
i++;
double max = strtod( vv[++i].c_str(), 0 );
if ( _verbose )
std::cout << "CUTOFF MAX = " << max << std::endl;
//ensure against cutting off too close to the resonance
assert( max > ( mR + minwidths * gR ) );
partAmp->setmax( max );
} else
assert( 0 );
}
}
i++;
pdf = std::make_unique<EvtDalitzResPdf>( _dp, mR, gR, pairRes );
amp = std::move( partAmp );
}
assert( amp );
assert( pdf );
double scale = matchIsobarCoef( *_amp, *pdf, pairRes );
if ( !conj ) {
_amp->addOwnedTerm( c, std::move( amp ) );
} else {
_ampConj->addOwnedTerm( c, std::move( amp ) );
}
_pc->addOwnedTerm( abs2( c ) * scale, std::move( pdf ) );
_names.push_back( name );
}
double EvtPto3PAmpFactory::matchIsobarCoef( EvtAmplitude<EvtDalitzPoint>& amp,
EvtPdf<EvtDalitzPoint>& pdf,
EvtCyclic3::Pair ipair )
{
// account for differences in the definition of amplitudes by matching
// Integral( c'*pdf ) = Integral( c*|A|^2 )
// to improve generation efficiency ...
double Ipdf = pdf.compute_integral( 10000 ).value();
double Iamp2 = 0;
EvtCyclic3::Pair jpair = EvtCyclic3::next( ipair );
EvtCyclic3::Pair kpair = EvtCyclic3::next( jpair );
// Trapezoidal integral
int N = 10000;
double di = ( _dp.qAbsMax( ipair ) - _dp.qAbsMin( ipair ) ) / ( (double)N );
double siMin = _dp.qAbsMin( ipair );
double s[3]; // playing with fire
for ( int i = 1; i < N; i++ ) {
s[ipair] = siMin + di * i;
s[jpair] = _dp.q( jpair, 0.9999, ipair, s[ipair] );
s[kpair] = _dp.bigM() * _dp.bigM() - s[ipair] - s[jpair] +
_dp.mA() * _dp.mA() + _dp.mB() * _dp.mB() +
_dp.mC() * _dp.mC();
EvtDalitzPoint point( _dp.mA(), _dp.mB(), _dp.mC(), s[EvtCyclic3::AB],
s[EvtCyclic3::BC], s[EvtCyclic3::CA] );
if ( !point.isValid() )
continue;
double p = point.p( other( ipair ), ipair );
double q = point.p( first( ipair ), ipair );
double itg = abs2( amp.evaluate( point ) ) * di * 4 * q * p;
Iamp2 += itg;
}
if ( _verbose )
std::cout << "integral = " << Iamp2 << " pdf=" << Ipdf << std::endl;
assert( Ipdf > 0 && Iamp2 > 0 );
return Iamp2 / Ipdf;
}
diff --git a/src/EvtGenBase/EvtPto3PAmpSmpResolution.cpp b/src/EvtGenBase/EvtPto3PAmpSmpResolution.cpp
index 3977fb1..8d3ef04 100644
--- a/src/EvtGenBase/EvtPto3PAmpSmpResolution.cpp
+++ b/src/EvtGenBase/EvtPto3PAmpSmpResolution.cpp
@@ -1,56 +1,48 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * Author: D. Dujmic, ddujmic@slac.stanford.edu
- *
- * Copyright (C) 2005 SLAC
- *
- *******************************************************************************/
+#include "EvtGenBase/EvtPto3PAmpSmpResolution.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDalitzCoord.hh"
+#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtPto3PAmp.hh"
-#include "EvtGenBase/EvtPto3PAmpSmpResolution.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
using EvtCyclic3::Index;
using EvtCyclic3::Pair;
using std::cout;
using std::endl;
EvtPto3PAmpSmpResolution::EvtPto3PAmpSmpResolution( EvtDalitzPlot dp,
Pair pairAng, Pair pairRes,
EvtSpinType::spintype spin,
const EvtPropagator& prop,
NumType typeN ) :
EvtPto3PAmp( dp, pairAng, pairRes, spin, prop, typeN )
{
}
EvtComplex EvtPto3PAmpSmpResolution::evalPropagator( double m ) const
{
EvtComplex prop( 0, 0 );
if ( _sigma > 0 ) { // convolved
int nconv = 20;
double min = m + _bias - _sigma * 2.5;
double max = m + _bias + _sigma * 2.5;
double dm = ( max - min ) / nconv;
static double sqrt2pi = sqrt( 2 * 3.14159 );
double ifact = 1. / ( sqrt2pi * _sigma );
for ( int i = 0; i < nconv; i++ ) {
double mprime = min + dm * ( i + 0.5 );
double t = ( mprime - m ) / _sigma;
prop += ifact * exp( -0.5 * t * t ) *
EvtPto3PAmp::evalPropagator( m ) * dm;
}
} else {
prop = EvtPto3PAmp::evalPropagator( m );
}
return prop;
}
diff --git a/src/EvtGenBase/EvtRadCorr.cpp b/src/EvtGenBase/EvtRadCorr.cpp
index 536ebe3..4eb4f64 100644
--- a/src/EvtGenBase/EvtRadCorr.cpp
+++ b/src/EvtGenBase/EvtRadCorr.cpp
@@ -1,92 +1,71 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtRadCorr.cc
-//
-// Description: RadCorr interface for EvtGen
-//
-//
-// Modification history:
-//
-// Lange April 27, 2002 - Created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtRadCorr.hh"
#include "EvtGenBase/EvtAbsRadCorr.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <iostream>
#include <stdlib.h>
using std::endl;
EvtAbsRadCorr* EvtRadCorr::_fsrEngine = 0;
bool EvtRadCorr::_alwaysRadCorr = false;
bool EvtRadCorr::_neverRadCorr = false;
EvtRadCorr::EvtRadCorr()
{
_fsrEngine = 0;
_alwaysRadCorr = false;
_neverRadCorr = false;
}
EvtRadCorr::~EvtRadCorr()
{
if ( _fsrEngine )
delete _fsrEngine;
_fsrEngine = 0;
}
void EvtRadCorr::setRadCorrEngine( EvtAbsRadCorr* fsrEngine )
{
_fsrEngine = fsrEngine;
}
void EvtRadCorr::doRadCorr( EvtParticle* p )
{
if ( _fsrEngine == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "No RadCorr model available in "
<< "EvtRadCorr::doRadCorr()." << endl;
::abort();
}
if ( !_neverRadCorr )
_fsrEngine->doRadCorr( p );
return;
}
bool EvtRadCorr::alwaysRadCorr()
{
return _alwaysRadCorr;
}
bool EvtRadCorr::neverRadCorr()
{
return _neverRadCorr;
}
void EvtRadCorr::setAlwaysRadCorr()
{
_alwaysRadCorr = true;
_neverRadCorr = false;
}
void EvtRadCorr::setNeverRadCorr()
{
_alwaysRadCorr = false;
_neverRadCorr = true;
}
void EvtRadCorr::setNormalRadCorr()
{
_alwaysRadCorr = false;
_neverRadCorr = false;
}
diff --git a/src/EvtGenBase/EvtRandom.cpp b/src/EvtGenBase/EvtRandom.cpp
index d376880..9b4d2a1 100644
--- a/src/EvtGenBase/EvtRandom.cpp
+++ b/src/EvtGenBase/EvtRandom.cpp
@@ -1,84 +1,63 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtRandom.cc
-//
-// Description: routines to get random numbers from
-// random number generator.
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandomEngine.hh"
#include "EvtGenBase/EvtReport.hh"
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
using std::endl;
EvtRandomEngine* EvtRandom::_randomEngine = 0;
void EvtRandom::setRandomEngine( EvtRandomEngine* randomEngine )
{
_randomEngine = randomEngine;
}
double EvtRandom::random()
{
if ( _randomEngine == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "No random engine available in "
<< "EvtRandom::random()." << endl;
::abort();
}
return _randomEngine->random();
}
// Random number routine to generate numbers between
// min and max. By djl on July 27, 1995.
double EvtRandom::Flat( double min, double max )
{
if ( min > max ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "min>max in EvtRandom::Flat(" << min << "," << max << ")" << endl;
::abort();
}
return EvtRandom::random() * ( max - min ) + min;
}
double EvtRandom::Flat( double max )
{
return max * EvtRandom::random();
}
double EvtRandom::Flat()
{
return EvtRandom::random();
}
double EvtRandom::Gaussian()
{
double x = EvtRandom::random();
double y = EvtRandom::random();
return cos( x * EvtConst::twoPi ) * sqrt( -2.0 * log( 1 - y ) );
}
diff --git a/src/EvtGenBase/EvtRaritaSchwinger.cpp b/src/EvtGenBase/EvtRaritaSchwinger.cpp
index f34f95e..8cbf1c2 100644
--- a/src/EvtGenBase/EvtRaritaSchwinger.cpp
+++ b/src/EvtGenBase/EvtRaritaSchwinger.cpp
@@ -1,250 +1,231 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtGen/EvtRaritaSchwing.hh
-//
-// Description:Class to handle spin 3/2
-//
-// Modification history:
-//
-// RYD April 23, 2000 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenBase/EvtRaritaSchwinger.hh"
#include "EvtGenBase/EvtPatches.hh"
using std::endl;
using std::ostream;
EvtRaritaSchwinger rotateEuler( const EvtRaritaSchwinger& rs, double alpha,
double beta, double gamma )
{
EvtRaritaSchwinger tmp( rs );
tmp.applyRotateEuler( alpha, beta, gamma );
return tmp;
}
EvtRaritaSchwinger boostTo( const EvtRaritaSchwinger& rs, const EvtVector4R p4 )
{
EvtRaritaSchwinger tmp( rs );
tmp.applyBoostTo( p4 );
return tmp;
}
EvtRaritaSchwinger boostTo( const EvtRaritaSchwinger& rs, const EvtVector3R boost )
{
EvtRaritaSchwinger tmp( rs );
tmp.applyBoostTo( boost );
return tmp;
}
void EvtRaritaSchwinger::set( int i, int j, const EvtComplex& sp )
{
_rs[i][j] = sp;
}
EvtComplex EvtRaritaSchwinger::get( int i, int j ) const
{
return _rs[i][j];
}
void EvtRaritaSchwinger::applyRotateEuler( double alpha, double beta,
double gamma )
{
//inefficient but simple to code...
EvtVector4C v0 = getVector( 0 );
EvtVector4C v1 = getVector( 1 );
EvtVector4C v2 = getVector( 2 );
EvtVector4C v3 = getVector( 3 );
v0.applyRotateEuler( alpha, beta, gamma );
v1.applyRotateEuler( alpha, beta, gamma );
v2.applyRotateEuler( alpha, beta, gamma );
v3.applyRotateEuler( alpha, beta, gamma );
setVector( 0, v0 );
setVector( 1, v1 );
setVector( 2, v2 );
setVector( 3, v3 );
EvtDiracSpinor sp0 = getSpinor( 0 );
EvtDiracSpinor sp1 = getSpinor( 1 );
EvtDiracSpinor sp2 = getSpinor( 2 );
EvtDiracSpinor sp3 = getSpinor( 3 );
sp0.applyRotateEuler( alpha, beta, gamma );
sp1.applyRotateEuler( alpha, beta, gamma );
sp2.applyRotateEuler( alpha, beta, gamma );
sp3.applyRotateEuler( alpha, beta, gamma );
setSpinor( 0, sp0 );
setSpinor( 1, sp1 );
setSpinor( 2, sp2 );
setSpinor( 3, sp3 );
}
void EvtRaritaSchwinger::applyBoostTo( const EvtVector4R p4 )
{
double e = p4.get( 0 );
EvtVector3R boost( p4.get( 1 ) / e, p4.get( 2 ) / e, p4.get( 3 ) / e );
applyBoostTo( boost );
return;
}
void EvtRaritaSchwinger::applyBoostTo( const EvtVector3R boost )
{
//inefficient but simple to code...
EvtVector4C v0 = getVector( 0 );
EvtVector4C v1 = getVector( 1 );
EvtVector4C v2 = getVector( 2 );
EvtVector4C v3 = getVector( 3 );
v0.applyBoostTo( boost );
v1.applyBoostTo( boost );
v2.applyBoostTo( boost );
v3.applyBoostTo( boost );
setVector( 0, v0 );
setVector( 1, v1 );
setVector( 2, v2 );
setVector( 3, v3 );
EvtDiracSpinor sp0 = getSpinor( 0 );
EvtDiracSpinor sp1 = getSpinor( 1 );
EvtDiracSpinor sp2 = getSpinor( 2 );
EvtDiracSpinor sp3 = getSpinor( 3 );
sp0.applyBoostTo( boost );
sp1.applyBoostTo( boost );
sp2.applyBoostTo( boost );
sp3.applyBoostTo( boost );
setSpinor( 0, sp0 );
setSpinor( 1, sp1 );
setSpinor( 2, sp2 );
setSpinor( 3, sp3 );
}
ostream& operator<<( ostream& s, const EvtRaritaSchwinger& rs )
{
int i, j;
s << endl;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
s << rs._rs[i][j];
}
s << endl;
}
return s;
}
EvtVector4C EvtRaritaSchwinger::getVector( int i ) const
{
EvtVector4C tmp( _rs[i][0], _rs[i][1], _rs[i][2], _rs[i][3] );
return tmp;
}
EvtDiracSpinor EvtRaritaSchwinger::getSpinor( int i ) const
{
EvtDiracSpinor tmp;
tmp.set( _rs[0][i], _rs[1][i], _rs[2][i], _rs[3][i] );
return tmp;
}
void EvtRaritaSchwinger::setVector( int i, const EvtVector4C& v )
{
_rs[i][0] = v.get( 0 );
_rs[i][1] = v.get( 1 );
_rs[i][2] = v.get( 2 );
_rs[i][3] = v.get( 3 );
}
void EvtRaritaSchwinger::setSpinor( int i, const EvtDiracSpinor& sp )
{
_rs[0][i] = sp.get_spinor( 0 );
_rs[1][i] = sp.get_spinor( 1 );
_rs[2][i] = sp.get_spinor( 2 );
_rs[3][i] = sp.get_spinor( 3 );
}
EvtRaritaSchwinger dirProd( EvtVector4R v, EvtDiracSpinor u )
{
int i, j;
EvtRaritaSchwinger tmp;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
tmp._rs[i][j] = u.get_spinor( i ) * v.get( j );
}
}
return tmp;
}
EvtRaritaSchwinger dirProd( EvtVector4C v, EvtDiracSpinor u )
{
int i, j;
EvtRaritaSchwinger tmp;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
tmp._rs[i][j] = u.get_spinor( i ) * v.get( j );
}
}
return tmp;
}
EvtComplex operator*( const EvtRaritaSchwinger& u1, const EvtRaritaSchwinger& u2 )
{
int i, j;
EvtComplex tmp = 0.0;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
tmp += conj( u1._rs[i][j] ) * u2._rs[i][j];
}
}
return tmp;
}
EvtRaritaSchwinger& EvtRaritaSchwinger::operator+=( const EvtRaritaSchwinger& u2 )
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
_rs[i][j] += u2._rs[i][j];
}
}
return *this;
}
EvtRaritaSchwinger operator+( const EvtRaritaSchwinger& u1,
const EvtRaritaSchwinger& u2 )
{
return EvtRaritaSchwinger( u1 ) += u2;
}
EvtRaritaSchwinger& EvtRaritaSchwinger::operator-=( const EvtRaritaSchwinger& u2 )
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
_rs[i][j] += u2._rs[i][j];
}
}
return *this;
}
EvtRaritaSchwinger operator-( const EvtRaritaSchwinger& u1,
const EvtRaritaSchwinger& u2 )
{
return EvtRaritaSchwinger( u1 ) -= u2;
}
diff --git a/src/EvtGenBase/EvtRaritaSchwingerParticle.cpp b/src/EvtGenBase/EvtRaritaSchwingerParticle.cpp
index a160854..68dc05c 100644
--- a/src/EvtGenBase/EvtRaritaSchwingerParticle.cpp
+++ b/src/EvtGenBase/EvtRaritaSchwingerParticle.cpp
@@ -1,208 +1,188 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtRaritaSchwingerParticle.cc
-//
-// Description: Class to describe spin 1/2 particles.
-//
-// Modification history:
-//
-// RYD August 9, 2000 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtRaritaSchwingerParticle.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <iostream>
#include <math.h>
#include <stdlib.h>
using std::endl;
void EvtRaritaSchwingerParticle::init( EvtId id, const EvtVector4R& p4 )
{
_validP4 = true;
setp( p4 );
setpart_num( id );
if ( EvtPDL::getStdHep( id ) == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Error in EvtRaritaSchwingerParticle::init, part_n=" << id.getId()
<< endl;
::abort();
}
double sqmt2 = sqrt( 2.0 * ( this->getP4().mass() ) );
EvtDiracSpinor spplus;
EvtDiracSpinor spminus;
if ( EvtPDL::getStdHep( getId() ) > 0 ) {
spplus.set( sqmt2, 0.0, 0.0, 0.0 );
spminus.set( 0.0, sqmt2, 0.0, 0.0 );
} else {
spplus.set( 0.0, 0.0, sqmt2, 0.0 );
spminus.set( 0.0, 0.0, 0.0, sqmt2 );
}
static EvtVector4C eplus( 0.0, -1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
static EvtVector4C ezero( 0.0, 0.0, 0.0, 1.0 );
static EvtVector4C eminus( 0.0, 1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
_spinorRest[0] = dirProd( eplus, spplus );
_spinorRest[1] = dirProd( sqrt( 2.0 / 3.0 ) * ezero, spplus ) +
dirProd( sqrt( 1.0 / 3.0 ) * eplus, spminus );
_spinorRest[2] = dirProd( sqrt( 2.0 / 3.0 ) * ezero, spminus ) +
dirProd( sqrt( 1.0 / 3.0 ) * eminus, spplus );
_spinorRest[3] = dirProd( eminus, spminus );
_spinor[0] = boostTo( _spinorRest[0], p4 );
_spinor[1] = boostTo( _spinorRest[1], p4 );
_spinor[2] = boostTo( _spinorRest[2], p4 );
_spinor[3] = boostTo( _spinorRest[3], p4 );
setLifetime();
}
void EvtRaritaSchwingerParticle::init(
EvtId id, const EvtVector4R& p4, const EvtRaritaSchwinger& prod1,
const EvtRaritaSchwinger& prod2, const EvtRaritaSchwinger& prod3,
const EvtRaritaSchwinger& prod4, const EvtRaritaSchwinger& rest1,
const EvtRaritaSchwinger& rest2, const EvtRaritaSchwinger& rest3,
const EvtRaritaSchwinger& rest4 )
{
_validP4 = true;
setp( p4 );
setpart_num( id );
if ( EvtPDL::getStdHep( id ) == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Error in EvtRaritaSchwingerParticle::init, part_n=" << id.getId()
<< std::endl;
::abort();
}
_spinorRest[0] = rest1;
_spinorRest[1] = rest2;
_spinorRest[2] = rest3;
_spinorRest[3] = rest4;
_spinor[0] = prod1;
_spinor[1] = prod2;
_spinor[2] = prod3;
_spinor[3] = prod4;
setLifetime();
}
EvtRaritaSchwinger EvtRaritaSchwingerParticle::spRSParent( int i ) const
{
return _spinor[i];
}
EvtRaritaSchwinger EvtRaritaSchwingerParticle::spRS( int i ) const
{
return _spinorRest[i];
}
EvtSpinDensity EvtRaritaSchwingerParticle::rotateToHelicityBasis() const
{
double sqmt2 = sqrt( 2.0 * ( this->getP4().mass() ) );
EvtDiracSpinor spplus;
EvtDiracSpinor spminus;
if ( EvtPDL::getStdHep( getId() ) > 0 ) {
spplus.set( 1.0, 0.0, 0.0, 0.0 );
spminus.set( 0.0, 1.0, 0.0, 0.0 );
} else {
spplus.set( 0.0, 0.0, 1.0, 0.0 );
spminus.set( 0.0, 0.0, 0.0, 1.0 );
}
EvtVector4C eplus( 0.0, -1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
EvtVector4C ezero( 0.0, 0.0, 0.0, 1.0 );
EvtVector4C eminus( 0.0, 1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
EvtRaritaSchwinger sppp = dirProd( eplus, spplus );
EvtRaritaSchwinger spp = dirProd( sqrt( 2.0 / 3.0 ) * ezero, spplus ) +
dirProd( sqrt( 1.0 / 3.0 ) * eplus, spminus );
EvtRaritaSchwinger spm = dirProd( sqrt( 2.0 / 3.0 ) * ezero, spminus ) +
dirProd( sqrt( 1.0 / 3.0 ) * eminus, spplus );
EvtRaritaSchwinger spmm = dirProd( eminus, spminus );
EvtSpinDensity R;
R.setDim( 4 );
for ( int i = 0; i < 4; i++ ) {
R.set( 0, i, ( sppp * _spinorRest[i] ) / sqmt2 );
R.set( 1, i, ( spp * _spinorRest[i] ) / sqmt2 );
R.set( 2, i, ( spm * _spinorRest[i] ) / sqmt2 );
R.set( 3, i, ( spmm * _spinorRest[i] ) / sqmt2 );
}
return R;
}
EvtSpinDensity EvtRaritaSchwingerParticle::rotateToHelicityBasis(
double alpha, double beta, double gamma ) const
{
EvtDiracSpinor spplus;
EvtDiracSpinor spminus;
if ( EvtPDL::getStdHep( getId() ) > 0 ) {
spplus.set( 1.0, 0.0, 0.0, 0.0 );
spminus.set( 0.0, 1.0, 0.0, 0.0 );
} else {
spplus.set( 0.0, 0.0, 1.0, 0.0 );
spminus.set( 0.0, 0.0, 0.0, 1.0 );
}
EvtVector4C eplus( 0.0, -1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
EvtVector4C ezero( 0.0, 0.0, 0.0, 1.0 );
EvtVector4C eminus( 0.0, 1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
EvtRaritaSchwinger sppp = dirProd( eplus, spplus );
EvtRaritaSchwinger spp = dirProd( sqrt( 2.0 / 3.0 ) * ezero, spplus ) +
dirProd( sqrt( 1.0 / 3.0 ) * eplus, spminus );
EvtRaritaSchwinger spm = dirProd( sqrt( 2.0 / 3.0 ) * ezero, spminus ) +
dirProd( sqrt( 1.0 / 3.0 ) * eminus, spplus );
EvtRaritaSchwinger spmm = dirProd( eminus, spminus );
sppp.applyRotateEuler( alpha, beta, gamma );
spp.applyRotateEuler( alpha, beta, gamma );
spm.applyRotateEuler( alpha, beta, gamma );
spmm.applyRotateEuler( alpha, beta, gamma );
EvtSpinDensity R;
R.setDim( 4 );
double sqmt2 = sqrt( 2.0 * ( this->getP4().mass() ) );
for ( int i = 0; i < 4; i++ ) {
R.set( 0, i, ( sppp * _spinorRest[i] ) / sqmt2 );
R.set( 1, i, ( spp * _spinorRest[i] ) / sqmt2 );
R.set( 2, i, ( spm * _spinorRest[i] ) / sqmt2 );
R.set( 3, i, ( spmm * _spinorRest[i] ) / sqmt2 );
}
return R;
}
diff --git a/src/EvtGenBase/EvtRelBreitWignerBarrierFact.cpp b/src/EvtGenBase/EvtRelBreitWignerBarrierFact.cpp
index 8d2e600..53b0ca0 100644
--- a/src/EvtGenBase/EvtRelBreitWignerBarrierFact.cpp
+++ b/src/EvtGenBase/EvtRelBreitWignerBarrierFact.cpp
@@ -1,304 +1,284 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtLineShape.cc
-//
-// Description: Store particle properties for one particle.
-//
-// Modification history:
-//
-// Lange March 10, 2001 Module created
-// Dvoretskii June 03, 2002 Reimplemented rollMass()
-//
-//------------------------------------------------------------------------
#include "EvtGenBase/EvtRelBreitWignerBarrierFact.hh"
#include "EvtGenBase/EvtAmpPdf.hh"
#include "EvtGenBase/EvtIntervalFlatPdf.hh"
#include "EvtGenBase/EvtMassAmp.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtPredGen.hh"
#include "EvtGenBase/EvtPropBreitWignerRel.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtTwoBodyVertex.hh"
#include <algorithm>
EvtRelBreitWignerBarrierFact::EvtRelBreitWignerBarrierFact(
double mass, double width, double maxRange, EvtSpinType::spintype sp ) :
EvtAbsLineShape( mass, width, maxRange, sp )
{ // double mDaug1, double mDaug2, int l) {
_includeDecayFact = true;
_includeBirthFact = true;
_mass = mass;
_width = width;
_spin = sp;
_blattDecay = 3.0;
_blattBirth = 1.0;
_maxRange = maxRange;
_errorCond = false;
double maxdelta = 15.0 * width;
if ( maxRange > 0.00001 ) {
_massMax = mass + maxdelta;
_massMin = mass - maxRange;
} else {
_massMax = mass + maxdelta;
_massMin = mass - 15.0 * width;
}
_massMax = mass + maxdelta;
if ( _massMin < 0. ) {
if ( _width > 0.0001 ) {
_massMin = 0.00011;
} else {
_massMin = 0.;
}
}
}
EvtRelBreitWignerBarrierFact::EvtRelBreitWignerBarrierFact(
const EvtRelBreitWignerBarrierFact& x ) :
EvtAbsLineShape( x )
{
_massMax = x._massMax;
_massMin = x._massMin;
_blattDecay = x._blattDecay;
_blattBirth = x._blattBirth;
_maxRange = x._maxRange;
_includeDecayFact = x._includeDecayFact;
_includeBirthFact = x._includeBirthFact;
_errorCond = x._errorCond;
}
EvtRelBreitWignerBarrierFact& EvtRelBreitWignerBarrierFact::operator=(
const EvtRelBreitWignerBarrierFact& x )
{
_mass = x._mass;
_width = x._width;
_spin = x._spin;
_massMax = x._massMax;
_massMin = x._massMin;
_blattDecay = x._blattDecay;
_blattBirth = x._blattBirth;
_maxRange = x._maxRange;
_includeDecayFact = x._includeDecayFact;
_includeBirthFact = x._includeBirthFact;
_errorCond = x._errorCond;
return *this;
}
EvtAbsLineShape* EvtRelBreitWignerBarrierFact::clone()
{
return new EvtRelBreitWignerBarrierFact( *this );
}
double EvtRelBreitWignerBarrierFact::getMassProb( double mass, double massPar,
int nDaug, double* massDau )
{
_errorCond = false;
//return EvtAbsLineShape::getMassProb(mass,massPar,nDaug,massDau);
if ( nDaug != 2 )
return EvtAbsLineShape::getMassProb( mass, massPar, nDaug, massDau );
double dTotMass = 0.;
int i;
for ( i = 0; i < nDaug; i++ ) {
dTotMass += massDau[i];
}
//EvtGenReport(EVTGEN_INFO,"EvtGen") << mass << " " << massPar << " " << dTotMass << " "<< endl;
// if ( (mass-dTotMass)<0.0001 ) return 0.;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << mass << " " << dTotMass << endl;
if ( ( mass < dTotMass ) )
return 0.;
if ( _width < 0.0001 )
return 1.;
if ( massPar > 0.0000000001 ) {
if ( mass > massPar )
return 0.;
}
if ( _errorCond )
return 0.;
// we did all the work in getRandMass
return 1.;
}
double EvtRelBreitWignerBarrierFact::getRandMass( EvtId* parId, int nDaug,
EvtId* dauId, EvtId* othDaugId,
double maxMass,
double* dauMasses )
{
if ( nDaug != 2 )
return EvtAbsLineShape::getRandMass( parId, nDaug, dauId, othDaugId,
maxMass, dauMasses );
if ( _width < 0.00001 )
return _mass;
//first figure out L - take the lowest allowed.
EvtSpinType::spintype spinD1 = EvtPDL::getSpinType( dauId[0] );
EvtSpinType::spintype spinD2 = EvtPDL::getSpinType( dauId[1] );
int t1 = EvtSpinType::getSpin2( spinD1 );
int t2 = EvtSpinType::getSpin2( spinD2 );
int t3 = EvtSpinType::getSpin2( _spin );
int Lmin = -10;
// the user has overridden the partial wave to use.
for ( unsigned int vC = 0; vC < _userSetPW.size(); vC++ ) {
if ( dauId[0] == _userSetPWD1[vC] && dauId[1] == _userSetPWD2[vC] ) {
Lmin = 2 * _userSetPW[vC];
}
if ( dauId[0] == _userSetPWD2[vC] && dauId[1] == _userSetPWD1[vC] ) {
Lmin = 2 * _userSetPW[vC];
}
}
// allow for special cases.
if ( Lmin < -1 ) {
//There are some things I don't know how to deal with
if ( t3 > 4 )
return EvtAbsLineShape::getRandMass( parId, nDaug, dauId, othDaugId,
maxMass, dauMasses );
if ( t1 > 4 )
return EvtAbsLineShape::getRandMass( parId, nDaug, dauId, othDaugId,
maxMass, dauMasses );
if ( t2 > 4 )
return EvtAbsLineShape::getRandMass( parId, nDaug, dauId, othDaugId,
maxMass, dauMasses );
//figure the min and max allowwed "spins" for the daughters state
Lmin = std::max( t3 - t2 - t1, std::max( t2 - t3 - t1, t1 - t3 - t2 ) );
if ( Lmin < 0 )
Lmin = 0;
assert( Lmin == 0 || Lmin == 2 || Lmin == 4 );
}
//double massD1=EvtPDL::getMeanMass(dauId[0]);
//double massD2=EvtPDL::getMeanMass(dauId[1]);
double massD1 = dauMasses[0];
double massD2 = dauMasses[1];
// I'm not sure how to define the vertex factor here - so retreat to nonRel code.
if ( ( massD1 + massD2 ) > _mass )
return EvtAbsLineShape::getRandMass( parId, nDaug, dauId, othDaugId,
maxMass, dauMasses );
//parent vertex factor not yet implemented
double massOthD = -10.;
double massParent = -10.;
int birthl = -10;
if ( othDaugId ) {
EvtSpinType::spintype spinOth = EvtPDL::getSpinType( *othDaugId );
EvtSpinType::spintype spinPar = EvtPDL::getSpinType( *parId );
int tt1 = EvtSpinType::getSpin2( spinOth );
int tt2 = EvtSpinType::getSpin2( spinPar );
int tt3 = EvtSpinType::getSpin2( _spin );
//figure the min and max allowwed "spins" for the daughters state
if ( ( tt1 <= 4 ) && ( tt2 <= 4 ) ) {
birthl = std::max( tt3 - tt2 - tt1,
std::max( tt2 - tt3 - tt1, tt1 - tt3 - tt2 ) );
if ( birthl < 0 )
birthl = 0;
massOthD = EvtPDL::getMeanMass( *othDaugId );
massParent = EvtPDL::getMeanMass( *parId );
}
// allow user to override
for ( size_t vC = 0; vC < _userSetBirthPW.size(); vC++ ) {
if ( *othDaugId == _userSetBirthOthD[vC] &&
*parId == _userSetBirthPar[vC] ) {
birthl = 2 * _userSetBirthPW[vC];
}
}
}
double massM = _massMax;
if ( ( maxMass > -0.5 ) && ( maxMass < massM ) )
massM = maxMass;
//special case... if the parent mass is _fixed_ we can do a little better
//and only for a two body decay as that seems to be where we have problems
// Define relativistic propagator amplitude
EvtTwoBodyVertex vd( massD1, massD2, _mass, Lmin / 2 );
vd.set_f( _blattDecay );
EvtPropBreitWignerRel bw( _mass, _width );
EvtMassAmp amp( bw, vd );
if ( _includeDecayFact ) {
amp.addDeathFact();
amp.addDeathFactFF();
}
if ( massParent > -1. ) {
if ( _includeBirthFact ) {
EvtTwoBodyVertex vb( _mass, massOthD, massParent, birthl / 2 );
vb.set_f( _blattBirth );
amp.setBirthVtx( vb );
amp.addBirthFact();
amp.addBirthFactFF();
}
}
EvtAmpPdf<EvtPoint1D> pdf( amp );
// Estimate maximum and create predicate for accept reject
double tempMaxLoc = _mass;
if ( maxMass > -0.5 && maxMass < _mass )
tempMaxLoc = maxMass;
double tempMax = _massMax;
if ( maxMass > -0.5 && maxMass < _massMax )
tempMax = maxMass;
double tempMinMass = _massMin;
if ( massD1 + massD2 > _massMin )
tempMinMass = massD1 + massD2;
//redo sanity check - is there a solution to our problem.
//if not return an error condition that is caught by the
//mass prob calculation above.
if ( tempMinMass > tempMax ) {
_errorCond = true;
return tempMinMass;
}
if ( tempMaxLoc < tempMinMass )
tempMaxLoc = tempMinMass;
double safetyFactor = 1.2;
EvtPdfMax<EvtPoint1D> max(
safetyFactor *
pdf.evaluate( EvtPoint1D( tempMinMass, tempMax, tempMaxLoc ) ) );
EvtPdfPred<EvtPoint1D> pred( pdf );
pred.setMax( max );
EvtIntervalFlatPdf flat( tempMinMass, tempMax );
EvtPdfGen<EvtPoint1D> gen( flat );
EvtPredGen<EvtPdfGen<EvtPoint1D>, EvtPdfPred<EvtPoint1D>> predgen( gen, pred );
EvtPoint1D point = predgen();
return point.value();
}
diff --git a/src/EvtGenBase/EvtReport.cpp b/src/EvtGenBase/EvtReport.cpp
index 4d1ba55..87a57e6 100644
--- a/src/EvtGenBase/EvtReport.cpp
+++ b/src/EvtGenBase/EvtReport.cpp
@@ -1,51 +1,31 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtReport.cc
-//
-// Description: definitions of global functions.
-//
-// Modification history:
-//
-// Simon Patton June 3, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtPatches.hh"
using std::cerr;
using std::cout;
using std::endl;
using std::ostream;
//
// constants, enums and typedefs
//
ostream& EvtGenReport( EvtGenSeverity severity, const char* facility )
{
int printNoFacility = 1;
if ( ( facility == 0 ) && ( printNoFacility == 1 ) ) {
cout << "There is no `facility' implemented in `report'" << endl;
printNoFacility = 0;
}
if ( severity < EVTGEN_WARNING ) {
if ( facility[0] != 0 ) {
cerr << facility << ":";
}
return ( cerr );
}
if ( facility[0] != 0 ) {
cout << facility << ":";
}
return cout;
}
diff --git a/src/EvtGenBase/EvtResonance.cpp b/src/EvtGenBase/EvtResonance.cpp
index 5483417..5ad449d 100644
--- a/src/EvtGenBase/EvtResonance.cpp
+++ b/src/EvtGenBase/EvtResonance.cpp
@@ -1,180 +1,160 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtResonance.cc
-//
-// Description: resonance-defining class
-//
-// Modification history:
-//
-// NK September 4, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtResonance.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtKine.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <math.h>
using std::endl;
EvtResonance& EvtResonance::operator=( const EvtResonance& n )
{
if ( &n == this )
return *this;
_p4_p = n._p4_p;
_p4_d1 = n._p4_d1;
_p4_d2 = n._p4_d2;
_ampl = n._ampl;
_theta = n._theta;
_gamma = n._gamma;
_spin = n._spin;
_bwm = n._bwm;
return *this;
}
EvtResonance::EvtResonance( const EvtVector4R& p4_p, const EvtVector4R& p4_d1,
const EvtVector4R& p4_d2, double ampl, double theta,
double gamma, double bwm, int spin ) :
_p4_p( p4_p ),
_p4_d1( p4_d1 ),
_p4_d2( p4_d2 ),
_ampl( ampl ),
_theta( theta ),
_gamma( gamma ),
_bwm( bwm ),
_spin( spin )
{
}
EvtComplex EvtResonance::resAmpl()
{
double pi180inv = 1.0 / EvtConst::radToDegrees;
EvtComplex ampl;
//EvtVector4R _p4_d3 = _p4_p-_p4_d1-_p4_d2;
//get cos of the angle between the daughters from their 4-momenta
//and the 4-momentum of the parent
//in general, EvtDecayAngle(parent, part1+part2, part1) gives the angle
//the missing particle (not listed in the arguments) makes
//with part2 in the rest frame of both
//listed particles (12)
//angle 3 makes with 2 in rest frame of 12 (CS3)
double cos_phi_0 = EvtDecayAngle( _p4_p, _p4_d1 + _p4_d2, _p4_d1 );
//angle 3 makes with 1 in 12 is, of course, -cos_phi_0
switch ( _spin ) {
case 0:
ampl = ( _ampl *
EvtComplex( cos( _theta * pi180inv ),
sin( _theta * pi180inv ) ) *
sqrt( _gamma / EvtConst::twoPi ) *
( 1.0 / ( ( _p4_d1 + _p4_d2 ).mass() - _bwm -
EvtComplex( 0.0, 0.5 * _gamma ) ) ) );
break;
case 1:
ampl = ( _ampl *
EvtComplex( cos( _theta * pi180inv ),
sin( _theta * pi180inv ) ) *
sqrt( _gamma / EvtConst::twoPi ) *
( cos_phi_0 / ( ( _p4_d1 + _p4_d2 ).mass() - _bwm -
EvtComplex( 0.0, 0.5 * _gamma ) ) ) );
break;
case 2:
ampl = ( _ampl *
EvtComplex( cos( _theta * pi180inv ),
sin( _theta * pi180inv ) ) *
sqrt( _gamma / EvtConst::twoPi ) *
( ( 1.5 * cos_phi_0 * cos_phi_0 - 0.5 ) /
( ( _p4_d1 + _p4_d2 ).mass() - _bwm -
EvtComplex( 0.0, 0.5 * _gamma ) ) ) );
break;
case 3:
ampl = ( _ampl *
EvtComplex( cos( _theta * pi180inv ),
sin( _theta * pi180inv ) ) *
sqrt( _gamma / EvtConst::twoPi ) *
( ( 2.5 * cos_phi_0 * cos_phi_0 * cos_phi_0 -
1.5 * cos_phi_0 ) /
( ( _p4_d1 + _p4_d2 ).mass() - _bwm -
EvtComplex( 0.0, 0.5 * _gamma ) ) ) );
break;
default:
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "EvtGen: wrong spin in EvtResonance" << endl;
ampl = EvtComplex( 0.0 );
break;
}
return ampl;
}
EvtComplex EvtResonance::relBrWig( int i )
{
//this function returns relativistic Breit-Wigner amplitude
//for a given resonance (for P-wave decays of scalars only at the moment!)
EvtComplex BW;
EvtVector4R _p4_d3 = _p4_p - _p4_d1 - _p4_d2;
EvtVector4R _p4_12 = _p4_d1 + _p4_d2;
double msq13 = ( _p4_d1 + _p4_d3 ).mass2();
double msq23 = ( _p4_d2 + _p4_d3 ).mass2();
double msqParent = _p4_p.mass2();
double msq1 = _p4_d1.mass2();
double msq2 = _p4_d2.mass2();
double msq3 = _p4_d3.mass2();
double M;
double p2 = sqrt( ( _p4_12.mass2() - ( _p4_d1.mass() + _p4_d2.mass() ) *
( _p4_d1.mass() + _p4_d2.mass() ) ) *
( _p4_12.mass2() - ( _p4_d1.mass() - _p4_d2.mass() ) *
( _p4_d1.mass() - _p4_d2.mass() ) ) ) /
( 2.0 * _p4_12.mass() );
double p2R = sqrt( ( _bwm * _bwm - ( _p4_d1.mass() + _p4_d2.mass() ) *
( _p4_d1.mass() + _p4_d2.mass() ) ) *
( _bwm * _bwm - ( _p4_d1.mass() - _p4_d2.mass() ) *
( _p4_d1.mass() - _p4_d2.mass() ) ) ) /
( 2.0 * _bwm );
double gam, R;
if ( i == 1 ) {
R = 2.0 / ( 0.197 );
} else
R = 5.0 / ( 0.197 );
gam = _gamma * ( _bwm / _p4_12.mass() ) * ( p2 / p2R ) * ( p2 / p2R ) *
( p2 / p2R ) * ( ( 1 + R * R * p2R * p2R ) / ( 1 + R * R * p2 * p2 ) );
M = ( msq13 - msq23 -
( msqParent - msq3 ) * ( msq1 - msq2 ) / ( _bwm * _bwm ) ) *
sqrt( ( 1 + R * R * p2R * p2R ) / ( 1 + R * R * p2 * p2 ) );
BW = sqrt( _gamma ) * M /
( ( _bwm * _bwm - _p4_12.mass2() ) -
EvtComplex( 0.0, 1.0 ) * gam * _bwm );
return BW;
}
diff --git a/src/EvtGenBase/EvtResonance2.cpp b/src/EvtGenBase/EvtResonance2.cpp
index 7488a5b..3104f0d 100644
--- a/src/EvtGenBase/EvtResonance2.cpp
+++ b/src/EvtGenBase/EvtResonance2.cpp
@@ -1,196 +1,176 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtResonance2.cc
-//
-// Description: resonance-defining class
-//
-// Modification history:
-//
-// NK September 4, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtResonance2.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <cmath>
EvtResonance2& EvtResonance2::operator=( const EvtResonance2& n )
{
if ( &n == this )
return *this;
_p4_p = n._p4_p;
_p4_d1 = n._p4_d1;
_p4_d2 = n._p4_d2;
_ampl = n._ampl;
_theta = n._theta;
_gamma = n._gamma;
_spin = n._spin;
_bwm = n._bwm;
_invmass_angdenom = n._invmass_angdenom;
_barrier1 = n._barrier1;
_barrier2 = n._barrier2;
return *this;
}
EvtResonance2::EvtResonance2( const EvtVector4R& p4_p, const EvtVector4R& p4_d1,
const EvtVector4R& p4_d2, double ampl,
double theta, double gamma, double bwm, int spin,
bool invmass_angdenom, double barrier1,
double barrier2 ) :
_p4_p( p4_p ),
_p4_d1( p4_d1 ),
_p4_d2( p4_d2 ),
_ampl( ampl ),
_theta( theta ),
_gamma( gamma ),
_bwm( bwm ),
_barrier1( barrier1 ),
_barrier2( barrier2 ),
_spin( spin ),
_invmass_angdenom( invmass_angdenom )
{
}
EvtComplex EvtResonance2::resAmpl() const
{
double pi180inv = 1.0 / EvtConst::radToDegrees;
EvtComplex ampl;
EvtVector4R p4_d3 = _p4_p - _p4_d1 - _p4_d2;
//get cos of the angle between the daughters from their 4-momenta
//and the 4-momentum of the parent
//in general, EvtDecayAngle(parent, part1+part2, part1) gives the angle
//the missing particle (not listed in the arguments) makes
//with part2 in the rest frame of both
//listed particles (12)
//angle 3 makes with 2 in rest frame of 12 (CS3)
//double cos_phi_0 = EvtDecayAngle(_p4_p, _p4_d1+_p4_d2, _p4_d1);
//angle 3 makes with 1 in 12 is, of course, -cos_phi_0
//first compute several quantities...follow CLEO preprint 00-23
double mAB = ( _p4_d1 + _p4_d2 ).mass();
double mBC = ( _p4_d2 + p4_d3 ).mass();
double mAC = ( _p4_d1 + p4_d3 ).mass();
double mA = _p4_d1.mass();
double mB = _p4_d2.mass();
double mD = _p4_p.mass();
double mC = p4_d3.mass();
double mR = _bwm;
double gammaR = _gamma;
double mdenom = _invmass_angdenom ? mAB : mR;
double pAB = sqrt( ( ( ( mAB * mAB - mA * mA - mB * mB ) *
( mAB * mAB - mA * mA - mB * mB ) / 4.0 ) -
mA * mA * mB * mB ) /
( mAB * mAB ) );
double pR = sqrt( ( ( ( mR * mR - mA * mA - mB * mB ) *
( mR * mR - mA * mA - mB * mB ) / 4.0 ) -
mA * mA * mB * mB ) /
( mR * mR ) );
double pD = ( ( ( mD * mD - mR * mR - mC * mC ) *
( mD * mD - mR * mR - mC * mC ) / 4.0 ) -
mR * mR * mC * mC ) /
( mD * mD );
if ( pD > 0 ) {
pD = sqrt( pD );
} else {
pD = 0;
}
double pDAB = sqrt( ( ( ( mD * mD - mAB * mAB - mC * mC ) *
( mD * mD - mAB * mAB - mC * mC ) / 4.0 ) -
mAB * mAB * mC * mC ) /
( mD * mD ) );
double fR = 1;
double fD = 1;
int power = 0;
switch ( _spin ) {
case 0:
fR = 1.0;
fD = 1.0;
power = 1;
break;
case 1:
fR = sqrt( 1.0 + _barrier1 * _barrier1 * pR * pR ) /
sqrt( 1.0 + _barrier1 * _barrier1 * pAB * pAB );
fD = sqrt( 1.0 + _barrier2 * _barrier2 * pD * pD ) /
sqrt( 1.0 + _barrier2 * _barrier2 * pDAB * pDAB );
power = 3;
break;
case 2:
fR = sqrt( ( 9 + 3 * pow( ( _barrier1 * pR ), 2 ) +
pow( ( _barrier1 * pR ), 4 ) ) /
( 9 + 3 * pow( ( _barrier1 * pAB ), 2 ) +
pow( ( _barrier1 * pAB ), 4 ) ) );
fD = sqrt( ( 9 + 3 * pow( ( _barrier2 * pD ), 2 ) +
pow( ( _barrier2 * pD ), 4 ) ) /
( 9 + 3 * pow( ( _barrier2 * pDAB ), 2 ) +
pow( ( _barrier2 * pDAB ), 4 ) ) );
power = 5;
break;
default:
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Incorrect spin in EvtResonance2.cc\n";
}
double gammaAB = gammaR * pow( pAB / pR, power ) * ( mR / mAB ) * fR * fR;
switch ( _spin ) {
case 0:
ampl = _ampl *
EvtComplex( cos( _theta * pi180inv ),
sin( _theta * pi180inv ) ) *
fR * fD /
( mR * mR - mAB * mAB - EvtComplex( 0.0, mR * gammaAB ) );
break;
case 1:
ampl = _ampl *
EvtComplex( cos( _theta * pi180inv ),
sin( _theta * pi180inv ) ) *
( fR * fD *
( mAC * mAC - mBC * mBC +
( ( mD * mD - mC * mC ) * ( mB * mB - mA * mA ) /
( mdenom * mdenom ) ) ) /
( mR * mR - mAB * mAB - EvtComplex( 0.0, mR * gammaAB ) ) );
break;
case 2:
ampl = _ampl *
EvtComplex( cos( _theta * pi180inv ),
sin( _theta * pi180inv ) ) *
fR * fD /
( mR * mR - mAB * mAB - EvtComplex( 0.0, mR * gammaAB ) ) *
( pow( ( mBC * mBC - mAC * mAC +
( mD * mD - mC * mC ) * ( mA * mA - mB * mB ) /
( mdenom * mdenom ) ),
2 ) -
( 1.0 / 3.0 ) *
( mAB * mAB - 2 * mD * mD - 2 * mC * mC +
pow( ( mD * mD - mC * mC ) / mdenom, 2 ) ) *
( mAB * mAB - 2 * mA * mA - 2 * mB * mB +
pow( ( mA * mA - mB * mB ) / mdenom, 2 ) ) );
break;
default:
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Incorrect spin in EvtResonance2.cc\n";
}
return ampl;
}
diff --git a/src/EvtGenBase/EvtScalarParticle.cpp b/src/EvtGenBase/EvtScalarParticle.cpp
index 8a3ac3a..588ec49 100644
--- a/src/EvtGenBase/EvtScalarParticle.cpp
+++ b/src/EvtGenBase/EvtScalarParticle.cpp
@@ -1,67 +1,47 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtScalarParticle.cc
-//
-// Description: Class to describe scalar particles
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <iostream>
#include <math.h>
void EvtScalarParticle::init( EvtId part_n, double e, double px, double py,
double pz )
{
_validP4 = true;
setp( e, px, py, pz );
setpart_num( part_n );
setLifetime();
}
void EvtScalarParticle::init( EvtId part_n, const EvtVector4R& p4 )
{
_validP4 = true;
setp( p4 );
setpart_num( part_n );
setLifetime();
}
EvtSpinDensity EvtScalarParticle::rotateToHelicityBasis() const
{
EvtSpinDensity R;
R.setDim( 1 );
R.set( 0, 0, 1.0 );
return R;
}
EvtSpinDensity EvtScalarParticle::rotateToHelicityBasis( double, double,
double ) const
{
EvtSpinDensity R;
R.setDim( 1 );
R.set( 0, 0, 1.0 );
return R;
}
diff --git a/src/EvtGenBase/EvtSecondary.cpp b/src/EvtGenBase/EvtSecondary.cpp
index 714f3b5..a4ae194 100644
--- a/src/EvtGenBase/EvtSecondary.cpp
+++ b/src/EvtGenBase/EvtSecondary.cpp
@@ -1,93 +1,73 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSecondary.cc
-//
-// Description: Class to store the decays of the secondary particles.
-//
-// Modification history:
-//
-// RYD March 12, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtSecondary.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <iostream>
using std::endl;
using std::ostream;
void EvtSecondary::init()
{
_npart = 0;
}
int EvtSecondary::getNPart()
{
return _npart;
}
void EvtSecondary::createSecondary( int stdhepindex, EvtParticle* prnt )
{
_stdhepindex[_npart] = stdhepindex;
if ( prnt->getNDaug() == 0 ) {
_id1[_npart] = 0;
_id2[_npart] = 0;
_id3[_npart] = 0;
_npart++;
return;
}
if ( prnt->getNDaug() == 1 ) {
_id1[_npart] = EvtPDL::getStdHep( prnt->getDaug( 0 )->getId() );
_id2[_npart] = 0;
_id3[_npart] = 0;
_npart++;
return;
}
if ( prnt->getNDaug() == 2 ) {
_id1[_npart] = EvtPDL::getStdHep( prnt->getDaug( 0 )->getId() );
_id2[_npart] = EvtPDL::getStdHep( prnt->getDaug( 1 )->getId() );
_id3[_npart] = 0;
_npart++;
return;
}
if ( prnt->getNDaug() == 3 ) {
_id1[_npart] = EvtPDL::getStdHep( prnt->getDaug( 0 )->getId() );
_id2[_npart] = EvtPDL::getStdHep( prnt->getDaug( 1 )->getId() );
_id3[_npart] = EvtPDL::getStdHep( prnt->getDaug( 2 )->getId() );
_npart++;
return;
}
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "More than 3 decay products in a secondary particle!" << endl;
}
ostream& operator<<( ostream& s, const EvtSecondary& secondary )
{
s << endl;
s << "Secondary decays:" << endl;
int i;
for ( i = 0; i < secondary._npart; i++ ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< i << " " << secondary._stdhepindex[i] << " " << secondary._id1[i]
<< " " << secondary._id2[i] << " " << secondary._id3[i] << endl;
}
s << endl;
return s;
}
diff --git a/src/EvtGenBase/EvtSemiLeptonicAmp.cpp b/src/EvtGenBase/EvtSemiLeptonicAmp.cpp
index 29d7ce7..d9ba692 100644
--- a/src/EvtGenBase/EvtSemiLeptonicAmp.cpp
+++ b/src/EvtGenBase/EvtSemiLeptonicAmp.cpp
@@ -1,210 +1,191 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSemiLeptonicAmp.cc
-//
-// Description: Base class for semileptonic decays
-//
-// Modification history:
-//
-// DJL April 17,1998 Module created
-//
-//------------------------------------------------------------------------
-//
+#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
+
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
-#include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtTensorParticle.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVectorParticle.hh"
double EvtSemiLeptonicAmp::CalcMaxProb( EvtId parent, EvtId meson, EvtId lepton,
EvtId nudaug,
EvtSemiLeptonicFF* FormFactors,
int nQ2Bins )
{
//This routine takes the arguements parent, meson, and lepton
//number, and a form factor model, and returns a maximum
//probability for this semileptonic form factor model. A
//brute force method is used. The 2D cos theta lepton and
//q2 phase space is probed.
//Start by declaring a particle at rest.
//It only makes sense to have a scalar parent. For now.
//This should be generalized later.
EvtScalarParticle* scalar_part;
EvtParticle* root_part;
scalar_part = new EvtScalarParticle;
//cludge to avoid generating random numbers!
scalar_part->noLifeTime();
EvtVector4R p_init;
p_init.set( EvtPDL::getMass( parent ), 0.0, 0.0, 0.0 );
scalar_part->init( parent, p_init );
root_part = (EvtParticle*)scalar_part;
root_part->setDiagonalSpinDensity();
EvtParticle *daughter, *lep, *trino;
EvtAmp amp;
EvtId listdaug[3];
listdaug[0] = meson;
listdaug[1] = lepton;
listdaug[2] = nudaug;
amp.init( parent, 3, listdaug );
root_part->makeDaughters( 3, listdaug );
daughter = root_part->getDaug( 0 );
lep = root_part->getDaug( 1 );
trino = root_part->getDaug( 2 );
//cludge to avoid generating random numbers!
daughter->noLifeTime();
lep->noLifeTime();
trino->noLifeTime();
//Initial particle is unpolarized, well it is a scalar so it is
//trivial
EvtSpinDensity rho;
rho.setDiag( root_part->getSpinStates() );
double mass[3];
double m = root_part->mass();
EvtVector4R p4meson, p4lepton, p4nu, p4w;
double q2min;
double q2max;
double q2, elepton, plepton;
int i, j;
double erho, prho, costl;
double maxfoundprob = 0.0;
double prob = -10.0;
int massiter;
for ( massiter = 0; massiter < 3; massiter++ ) {
mass[0] = EvtPDL::getMeanMass( meson );
mass[1] = EvtPDL::getMeanMass( lepton );
mass[2] = EvtPDL::getMeanMass( nudaug );
if ( massiter == 1 ) {
mass[0] = EvtPDL::getMinMass( meson );
}
if ( massiter == 2 ) {
mass[0] = EvtPDL::getMaxMass( meson );
if ( ( mass[0] + mass[1] + mass[2] ) > m )
mass[0] = m - mass[1] - mass[2] - 0.00001;
}
q2min = mass[1] * mass[1];
q2max = ( m - mass[0] ) * ( m - mass[0] );
//loop over q2 (default = 25 bins)
for ( i = 0; i < nQ2Bins; i++ ) {
q2 = q2min + ( ( i + 0.5 ) * ( q2max - q2min ) ) / nQ2Bins;
erho = ( m * m + mass[0] * mass[0] - q2 ) / ( 2.0 * m );
prho = sqrt( erho * erho - mass[0] * mass[0] );
p4meson.set( erho, 0.0, 0.0, -1.0 * prho );
p4w.set( m - erho, 0.0, 0.0, prho );
//This is in the W rest frame
elepton = ( q2 + mass[1] * mass[1] ) / ( 2.0 * sqrt( q2 ) );
plepton = sqrt( elepton * elepton - mass[1] * mass[1] );
double probctl[3];
for ( j = 0; j < 3; j++ ) {
costl = 0.99 * ( j - 1.0 );
//These are in the W rest frame. Need to boost out into
//the B frame.
p4lepton.set( elepton, 0.0, plepton * sqrt( 1.0 - costl * costl ),
plepton * costl );
p4nu.set( plepton, 0.0,
-1.0 * plepton * sqrt( 1.0 - costl * costl ),
-1.0 * plepton * costl );
EvtVector4R boost( ( m - erho ), 0.0, 0.0, 1.0 * prho );
p4lepton = boostTo( p4lepton, boost );
p4nu = boostTo( p4nu, boost );
//Now initialize the daughters...
daughter->init( meson, p4meson );
lep->init( lepton, p4lepton );
trino->init( nudaug, p4nu );
CalcAmp( root_part, amp, FormFactors );
//Now find the probability at this q2 and cos theta lepton point
//and compare to maxfoundprob.
//Do a little magic to get the probability!!
prob = rho.normalizedProb( amp.getSpinDensity() );
probctl[j] = prob;
}
//probclt contains prob at ctl=-1,0,1.
//prob=a+b*ctl+c*ctl^2
double a = probctl[1];
double b = 0.5 * ( probctl[2] - probctl[0] );
double c = 0.5 * ( probctl[2] + probctl[0] ) - probctl[1];
prob = probctl[0];
if ( probctl[1] > prob )
prob = probctl[1];
if ( probctl[2] > prob )
prob = probctl[2];
if ( fabs( c ) > 1e-20 ) {
double ctlx = -0.5 * b / c;
if ( fabs( ctlx ) < 1.0 ) {
double probtmp = a + b * ctlx + c * ctlx * ctlx;
if ( probtmp > prob )
prob = probtmp;
}
}
if ( prob > maxfoundprob ) {
maxfoundprob = prob;
}
}
if ( EvtPDL::getWidth( meson ) <= 0.0 ) {
//if the particle is narrow dont bother with changing the mass.
massiter = 4;
}
}
root_part->deleteTree();
maxfoundprob *= 1.1;
return maxfoundprob;
}
diff --git a/src/EvtGenBase/EvtSemiLeptonicBaryonAmp.cpp b/src/EvtGenBase/EvtSemiLeptonicBaryonAmp.cpp
index ae8a63e..6f2cef8 100644
--- a/src/EvtGenBase/EvtSemiLeptonicBaryonAmp.cpp
+++ b/src/EvtGenBase/EvtSemiLeptonicBaryonAmp.cpp
@@ -1,790 +1,768 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSemiLeptonicBaryonAmp.cc
-//
-// Description: Routine to implement semileptonic decays of Dirac baryons
-//
-// Modification history:
-//
-// R.J. Tesarek May 28, 2004 Module created
-// Karen Gibson 1/20/2006 Module updated for 1/2+->1/2+,
-// 1/2+->1/2-, 1/2+->3/2- Lambda decays
-//
-//--------------------------------------------------------------------------
-
#include "EvtGenBase/EvtSemiLeptonicBaryonAmp.hh"
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtDiracParticle.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGammaMatrix.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRaritaSchwinger.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
using std::endl;
void EvtSemiLeptonicBaryonAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtSemiLeptonicFF* FormFactors )
{
static EvtId EM = EvtPDL::getId( "e-" );
static EvtId MUM = EvtPDL::getId( "mu-" );
static EvtId TAUM = EvtPDL::getId( "tau-" );
static EvtId EP = EvtPDL::getId( "e+" );
static EvtId MUP = EvtPDL::getId( "mu+" );
static EvtId TAUP = EvtPDL::getId( "tau+" );
//Add the lepton and neutrino 4 momenta to find q2
EvtVector4R q = parent->getDaug( 1 )->getP4() + parent->getDaug( 2 )->getP4();
double q2 = ( q.mass2() );
double f1v, f1a, f2v, f2a;
double m_meson = parent->getDaug( 0 )->mass();
FormFactors->getbaryonff( parent->getId(), parent->getDaug( 0 )->getId(),
q2, m_meson, &f1v, &f1a, &f2v, &f2a );
EvtVector4R p4b;
p4b.set( parent->mass(), 0.0, 0.0, 0.0 );
EvtVector4C temp_00_term1;
EvtVector4C temp_00_term2;
EvtVector4C temp_01_term1;
EvtVector4C temp_01_term2;
EvtVector4C temp_10_term1;
EvtVector4C temp_10_term2;
EvtVector4C temp_11_term1;
EvtVector4C temp_11_term2;
EvtDiracSpinor p0 = parent->sp( 0 );
EvtDiracSpinor p1 = parent->sp( 1 );
EvtDiracSpinor d0 = parent->getDaug( 0 )->spParent( 0 );
EvtDiracSpinor d1 = parent->getDaug( 0 )->spParent( 1 );
temp_00_term1.set( 0, f1v * ( d0 * ( EvtGammaMatrix::g0() * p0 ) ) );
temp_00_term2.set(
0,
f1a * ( d0 * ( ( EvtGammaMatrix::g0() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_01_term1.set( 0, f1v * ( d0 * ( EvtGammaMatrix::g0() * p1 ) ) );
temp_01_term2.set(
0,
f1a * ( d0 * ( ( EvtGammaMatrix::g0() * EvtGammaMatrix::g5() ) * p1 ) ) );
temp_10_term1.set( 0, f1v * ( d1 * ( EvtGammaMatrix::g0() * p0 ) ) );
temp_10_term2.set(
0,
f1a * ( d1 * ( ( EvtGammaMatrix::g0() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_11_term1.set( 0, f1v * ( d1 * ( EvtGammaMatrix::g0() * p1 ) ) );
temp_11_term2.set(
0,
f1a * ( d1 * ( ( EvtGammaMatrix::g0() * EvtGammaMatrix::g5() ) * p1 ) ) );
temp_00_term1.set( 1, f1v * ( d0 * ( EvtGammaMatrix::g1() * p0 ) ) );
temp_00_term2.set(
1,
f1a * ( d0 * ( ( EvtGammaMatrix::g1() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_01_term1.set( 1, f1v * ( d0 * ( EvtGammaMatrix::g1() * p1 ) ) );
temp_01_term2.set(
1,
f1a * ( d0 * ( ( EvtGammaMatrix::g1() * EvtGammaMatrix::g5() ) * p1 ) ) );
temp_10_term1.set( 1, f1v * ( d1 * ( EvtGammaMatrix::g1() * p0 ) ) );
temp_10_term2.set(
1,
f1a * ( d1 * ( ( EvtGammaMatrix::g1() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_11_term1.set( 1, f1v * ( d1 * ( EvtGammaMatrix::g1() * p1 ) ) );
temp_11_term2.set(
1,
f1a * ( d1 * ( ( EvtGammaMatrix::g1() * EvtGammaMatrix::g5() ) * p1 ) ) );
temp_00_term1.set( 2, f1v * ( d0 * ( EvtGammaMatrix::g2() * p0 ) ) );
temp_00_term2.set(
2,
f1a * ( d0 * ( ( EvtGammaMatrix::g2() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_01_term1.set( 2, f1v * ( d0 * ( EvtGammaMatrix::g2() * p1 ) ) );
temp_01_term2.set(
2,
f1a * ( d0 * ( ( EvtGammaMatrix::g2() * EvtGammaMatrix::g5() ) * p1 ) ) );
temp_10_term1.set( 2, f1v * ( d1 * ( EvtGammaMatrix::g2() * p0 ) ) );
temp_10_term2.set(
2,
f1a * ( d1 * ( ( EvtGammaMatrix::g2() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_11_term1.set( 2, f1v * ( d1 * ( EvtGammaMatrix::g2() * p1 ) ) );
temp_11_term2.set(
2,
f1a * ( d1 * ( ( EvtGammaMatrix::g2() * EvtGammaMatrix::g5() ) * p1 ) ) );
temp_00_term1.set( 3, f1v * ( d0 * ( EvtGammaMatrix::g3() * p0 ) ) );
temp_00_term2.set(
3,
f1a * ( d0 * ( ( EvtGammaMatrix::g3() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_01_term1.set( 3, f1v * ( d0 * ( EvtGammaMatrix::g3() * p1 ) ) );
temp_01_term2.set(
3,
f1a * ( d0 * ( ( EvtGammaMatrix::g3() * EvtGammaMatrix::g5() ) * p1 ) ) );
temp_10_term1.set( 3, f1v * ( d1 * ( EvtGammaMatrix::g3() * p0 ) ) );
temp_10_term2.set(
3,
f1a * ( d1 * ( ( EvtGammaMatrix::g3() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_11_term1.set( 3, f1v * ( d1 * ( EvtGammaMatrix::g3() * p1 ) ) );
temp_11_term2.set(
3,
f1a * ( d1 * ( ( EvtGammaMatrix::g3() * EvtGammaMatrix::g5() ) * p1 ) ) );
EvtVector4C l1, l2;
EvtId l_num = parent->getDaug( 1 )->getId();
if ( l_num == EM || l_num == MUM || l_num == TAUM ) {
l1 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParentNeutrino() );
l2 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParentNeutrino() );
} else {
if ( l_num == EP || l_num == MUP || l_num == TAUP ) {
l1 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 0 ) );
l2 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 1 ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Wrong lepton number" << endl;
}
}
amp.vertex( 0, 0, 0, l1.cont( temp_00_term1 + temp_00_term2 ) );
amp.vertex( 0, 0, 1, l2.cont( temp_00_term1 + temp_00_term2 ) );
amp.vertex( 0, 1, 0, l1.cont( temp_01_term1 + temp_01_term2 ) );
amp.vertex( 0, 1, 1, l2.cont( temp_01_term1 + temp_01_term2 ) );
amp.vertex( 1, 0, 0, l1.cont( temp_10_term1 + temp_10_term2 ) );
amp.vertex( 1, 0, 1, l2.cont( temp_10_term1 + temp_10_term2 ) );
amp.vertex( 1, 1, 0, l1.cont( temp_11_term1 + temp_11_term2 ) );
amp.vertex( 1, 1, 1, l2.cont( temp_11_term1 + temp_11_term2 ) );
return;
}
double EvtSemiLeptonicBaryonAmp::CalcMaxProb( EvtId parent, EvtId baryon,
EvtId lepton, EvtId nudaug,
EvtSemiLeptonicFF* FormFactors,
EvtComplex r00, EvtComplex r01,
EvtComplex r10, EvtComplex r11 )
{
//This routine takes the arguements parent, baryon, and lepton
//number, and a form factor model, and returns a maximum
//probability for this semileptonic form factor model. A
//brute force method is used. The 2D cos theta lepton and
//q2 phase space is probed.
//Start by declaring a particle at rest.
//It only makes sense to have a scalar parent. For now.
//This should be generalized later.
// EvtScalarParticle *scalar_part;
// scalar_part=new EvtScalarParticle;
EvtDiracParticle* dirac_part;
EvtParticle* root_part;
dirac_part = new EvtDiracParticle;
//cludge to avoid generating random numbers!
// scalar_part->noLifeTime();
dirac_part->noLifeTime();
EvtVector4R p_init;
p_init.set( EvtPDL::getMass( parent ), 0.0, 0.0, 0.0 );
// scalar_part->init(parent,p_init);
// root_part=(EvtParticle *)scalar_part;
// root_part->set_type(EvtSpinType::SCALAR);
dirac_part->init( parent, p_init );
root_part = (EvtParticle*)dirac_part;
root_part->setDiagonalSpinDensity();
EvtParticle *daughter, *lep, *trino;
EvtAmp amp;
EvtId listdaug[3];
listdaug[0] = baryon;
listdaug[1] = lepton;
listdaug[2] = nudaug;
amp.init( parent, 3, listdaug );
root_part->makeDaughters( 3, listdaug );
daughter = root_part->getDaug( 0 );
lep = root_part->getDaug( 1 );
trino = root_part->getDaug( 2 );
//cludge to avoid generating random numbers!
daughter->noLifeTime();
lep->noLifeTime();
trino->noLifeTime();
//Initial particle is unpolarized, well it is a scalar so it is
//trivial
EvtSpinDensity rho;
rho.setDiag( root_part->getSpinStates() );
double mass[3];
double m = root_part->mass();
EvtVector4R p4baryon, p4lepton, p4nu, p4w;
double q2max;
double q2, elepton, plepton;
int i, j;
double erho, prho, costl;
double maxfoundprob = 0.0;
double prob = -10.0;
int massiter;
for ( massiter = 0; massiter < 3; massiter++ ) {
mass[0] = EvtPDL::getMass( baryon );
mass[1] = EvtPDL::getMass( lepton );
mass[2] = EvtPDL::getMass( nudaug );
if ( massiter == 1 ) {
mass[0] = EvtPDL::getMinMass( baryon );
}
if ( massiter == 2 ) {
mass[0] = EvtPDL::getMaxMass( baryon );
}
q2max = ( m - mass[0] ) * ( m - mass[0] );
//loop over q2
for ( i = 0; i < 25; i++ ) {
q2 = ( ( i + 0.5 ) * q2max ) / 25.0;
erho = ( m * m + mass[0] * mass[0] - q2 ) / ( 2.0 * m );
prho = sqrt( erho * erho - mass[0] * mass[0] );
p4baryon.set( erho, 0.0, 0.0, -1.0 * prho );
p4w.set( m - erho, 0.0, 0.0, prho );
//This is in the W rest frame
elepton = ( q2 + mass[1] * mass[1] ) / ( 2.0 * sqrt( q2 ) );
plepton = sqrt( elepton * elepton - mass[1] * mass[1] );
double probctl[3];
for ( j = 0; j < 3; j++ ) {
costl = 0.99 * ( j - 1.0 );
//These are in the W rest frame. Need to boost out into
//the B frame.
p4lepton.set( elepton, 0.0, plepton * sqrt( 1.0 - costl * costl ),
plepton * costl );
p4nu.set( plepton, 0.0,
-1.0 * plepton * sqrt( 1.0 - costl * costl ),
-1.0 * plepton * costl );
EvtVector4R boost( ( m - erho ), 0.0, 0.0, 1.0 * prho );
p4lepton = boostTo( p4lepton, boost );
p4nu = boostTo( p4nu, boost );
//Now initialize the daughters...
daughter->init( baryon, p4baryon );
lep->init( lepton, p4lepton );
trino->init( nudaug, p4nu );
CalcAmp( root_part, amp, FormFactors, r00, r01, r10, r11 );
//Now find the probability at this q2 and cos theta lepton point
//and compare to maxfoundprob.
//Do a little magic to get the probability!!
prob = rho.normalizedProb( amp.getSpinDensity() );
probctl[j] = prob;
}
//probclt contains prob at ctl=-1,0,1.
//prob=a+b*ctl+c*ctl^2
double a = probctl[1];
double b = 0.5 * ( probctl[2] - probctl[0] );
double c = 0.5 * ( probctl[2] + probctl[0] ) - probctl[1];
prob = probctl[0];
if ( probctl[1] > prob )
prob = probctl[1];
if ( probctl[2] > prob )
prob = probctl[2];
if ( fabs( c ) > 1e-20 ) {
double ctlx = -0.5 * b / c;
if ( fabs( ctlx ) < 1.0 ) {
double probtmp = a + b * ctlx + c * ctlx * ctlx;
if ( probtmp > prob )
prob = probtmp;
}
}
//EvtGenReport(EVTGEN_DEBUG,"EvtGen") << "prob,probctl:"<<prob<<" "
// << probctl[0]<<" "
// << probctl[1]<<" "
// << probctl[2]<<std::endl;
if ( prob > maxfoundprob ) {
maxfoundprob = prob;
}
}
if ( EvtPDL::getWidth( baryon ) <= 0.0 ) {
//if the particle is narrow dont bother with changing the mass.
massiter = 4;
}
}
root_part->deleteTree();
maxfoundprob *= 1.1;
return maxfoundprob;
}
void EvtSemiLeptonicBaryonAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtSemiLeptonicFF* FormFactors,
EvtComplex r00, EvtComplex r01,
EvtComplex r10, EvtComplex r11 )
{
// Leptons
static EvtId EM = EvtPDL::getId( "e-" );
static EvtId MUM = EvtPDL::getId( "mu-" );
static EvtId TAUM = EvtPDL::getId( "tau-" );
// Anti-Leptons
static EvtId EP = EvtPDL::getId( "e+" );
static EvtId MUP = EvtPDL::getId( "mu+" );
static EvtId TAUP = EvtPDL::getId( "tau+" );
// Baryons
static EvtId LAMCP = EvtPDL::getId( "Lambda_c+" );
static EvtId LAMC1P = EvtPDL::getId( "Lambda_c(2593)+" );
static EvtId LAMC2P = EvtPDL::getId( "Lambda_c(2625)+" );
static EvtId LAMB = EvtPDL::getId( "Lambda_b0" );
// Anti-Baryons
static EvtId LAMCM = EvtPDL::getId( "anti-Lambda_c-" );
static EvtId LAMC1M = EvtPDL::getId( "anti-Lambda_c(2593)-" );
static EvtId LAMC2M = EvtPDL::getId( "anti-Lambda_c(2625)-" );
static EvtId LAMBB = EvtPDL::getId( "anti-Lambda_b0" );
// Set the spin density matrix of the parent baryon
EvtSpinDensity rho;
rho.setDim( 2 );
rho.set( 0, 0, r00 );
rho.set( 0, 1, r01 );
rho.set( 1, 0, r10 );
rho.set( 1, 1, r11 );
EvtVector4R vector4P = parent->getP4Lab();
double pmag = vector4P.d3mag();
double cosTheta = vector4P.get( 3 ) / pmag;
double theta = acos( cosTheta );
double phi = atan2( vector4P.get( 2 ), vector4P.get( 1 ) );
parent->setSpinDensityForwardHelicityBasis( rho, phi, theta, 0.0 );
//parent->setSpinDensityForward(rho);
// Set the four momentum of the parent baryon in it's rest frame
EvtVector4R p4b;
p4b.set( parent->mass(), 0.0, 0.0, 0.0 );
// Get the four momentum of the daughter baryon in the parent's rest frame
EvtVector4R p4daught = parent->getDaug( 0 )->getP4();
// Add the lepton and neutrino 4 momenta to find q (q^2)
EvtVector4R q = parent->getDaug( 1 )->getP4() + parent->getDaug( 2 )->getP4();
double q2 = q.mass2();
EvtId l_num = parent->getDaug( 1 )->getId();
EvtId bar_num = parent->getDaug( 0 )->getId();
EvtId par_num = parent->getId();
double baryonmass = parent->getDaug( 0 )->mass();
// Handle spin-1/2 daughter baryon Dirac spinor cases
if ( EvtPDL::getSpinType( parent->getDaug( 0 )->getId() ) ==
EvtSpinType::DIRAC ) {
// Set the form factors
double f1, f2, f3, g1, g2, g3;
FormFactors->getdiracff( par_num, bar_num, q2, baryonmass, &f1, &f2,
&f3, &g1, &g2, &g3 );
const double form_fact[6] = {f1, f2, f3, g1, g2, g3};
EvtVector4C b11, b12, b21, b22, l1, l2;
// Lepton Current
if ( l_num == EM || l_num == MUM || l_num == TAUM ) {
l1 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParentNeutrino() );
l2 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParentNeutrino() );
} else if ( l_num == EP || l_num == MUP || l_num == TAUP ) {
l1 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 0 ) );
l2 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 1 ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Wrong lepton number \n";
::abort();
}
// Baryon current
// Flag for particle/anti-particle parent, daughter with same/opp. parity
// pflag = 0 => particle, same parity parent, daughter
// pflag = 1 => particle, opp. parity parent, daughter
// pflag = 2 => anti-particle, same parity parent, daughter
// pflag = 3 => anti-particle, opp. parity parent, daughter
int pflag = 0;
// Handle 1/2+ -> 1/2+ first
if ( ( par_num == LAMB && bar_num == LAMCP ) ||
( par_num == LAMBB && bar_num == LAMCM ) ) {
// Set particle/anti-particle flag
if ( bar_num == LAMCP )
pflag = 0;
else if ( bar_num == LAMCM )
pflag = 2;
b11 = EvtBaryonVACurrent( parent->getDaug( 0 )->spParent( 0 ),
parent->sp( 0 ), p4b, p4daught, form_fact,
pflag );
b21 = EvtBaryonVACurrent( parent->getDaug( 0 )->spParent( 0 ),
parent->sp( 1 ), p4b, p4daught, form_fact,
pflag );
b12 = EvtBaryonVACurrent( parent->getDaug( 0 )->spParent( 1 ),
parent->sp( 0 ), p4b, p4daught, form_fact,
pflag );
b22 = EvtBaryonVACurrent( parent->getDaug( 0 )->spParent( 1 ),
parent->sp( 1 ), p4b, p4daught, form_fact,
pflag );
}
// Handle 1/2+ -> 1/2- second
else if ( ( par_num == LAMB && bar_num == LAMC1P ) ||
( par_num == LAMBB && bar_num == LAMC1M ) ) {
// Set particle/anti-particle flag
if ( bar_num == LAMC1P )
pflag = 1;
else if ( bar_num == LAMC1M )
pflag = 3;
b11 = EvtBaryonVACurrent( ( parent->getDaug( 0 )->spParent( 0 ) ),
( EvtGammaMatrix::g5() * parent->sp( 0 ) ),
p4b, p4daught, form_fact, pflag );
b21 = EvtBaryonVACurrent( ( parent->getDaug( 0 )->spParent( 0 ) ),
( EvtGammaMatrix::g5() * parent->sp( 1 ) ),
p4b, p4daught, form_fact, pflag );
b12 = EvtBaryonVACurrent( ( parent->getDaug( 0 )->spParent( 1 ) ),
( EvtGammaMatrix::g5() * parent->sp( 0 ) ),
p4b, p4daught, form_fact, pflag );
b22 = EvtBaryonVACurrent( ( parent->getDaug( 0 )->spParent( 1 ) ),
( EvtGammaMatrix::g5() * parent->sp( 1 ) ),
p4b, p4daught, form_fact, pflag );
}
else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Dirac semilep. baryon current "
<< "not implemented for this decay sequence." << std::endl;
::abort();
}
amp.vertex( 0, 0, 0, l1 * b11 );
amp.vertex( 0, 0, 1, l2 * b11 );
amp.vertex( 1, 0, 0, l1 * b21 );
amp.vertex( 1, 0, 1, l2 * b21 );
amp.vertex( 0, 1, 0, l1 * b12 );
amp.vertex( 0, 1, 1, l2 * b12 );
amp.vertex( 1, 1, 0, l1 * b22 );
amp.vertex( 1, 1, 1, l2 * b22 );
}
// Need special handling for the spin-3/2 daughter baryon
// Rarita-Schwinger spinor cases
else if ( EvtPDL::getSpinType( parent->getDaug( 0 )->getId() ) ==
EvtSpinType::RARITASCHWINGER ) {
// Set the form factors
double f1, f2, f3, f4, g1, g2, g3, g4;
FormFactors->getraritaff( par_num, bar_num, q2, baryonmass, &f1, &f2,
&f3, &f4, &g1, &g2, &g3, &g4 );
const double form_fact[8] = {f1, f2, f3, f4, g1, g2, g3, g4};
EvtId l_num = parent->getDaug( 1 )->getId();
EvtVector4C b11, b12, b21, b22, b13, b23, b14, b24, l1, l2;
// Lepton Current
if ( l_num == EM || l_num == MUM || l_num == TAUM ) {
// Lepton Current
l1 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParentNeutrino() );
l2 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParentNeutrino() );
} else if ( l_num == EP || l_num == MUP || l_num == TAUP ) {
l1 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 0 ) );
l2 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 1 ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Wrong lepton number \n";
}
// Baryon Current
// Declare particle, anti-particle flag, same/opp. parity
// pflag = 0 => particle
// pflag = 1 => anti-particle
int pflag = 0;
// Handle cases of 1/2+ -> 3/2-
if ( par_num == LAMB && bar_num == LAMC2P ) {
// Set flag for particle case
pflag = 0;
} else if ( par_num == LAMBB && bar_num == LAMC2M ) {
// Set flag for anti-particle case
pflag = 1;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Rarita-Schwinger semilep. baryon current "
<< "not implemented for this decay sequence." << std::endl;
::abort();
}
// Baryon current
b11 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 0 ),
parent->sp( 0 ), p4b, p4daught,
form_fact, pflag );
b21 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 0 ),
parent->sp( 1 ), p4b, p4daught,
form_fact, pflag );
b12 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 1 ),
parent->sp( 0 ), p4b, p4daught,
form_fact, pflag );
b22 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 1 ),
parent->sp( 1 ), p4b, p4daught,
form_fact, pflag );
b13 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 2 ),
parent->sp( 0 ), p4b, p4daught,
form_fact, pflag );
b23 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 2 ),
parent->sp( 1 ), p4b, p4daught,
form_fact, pflag );
b14 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 3 ),
parent->sp( 0 ), p4b, p4daught,
form_fact, pflag );
b24 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 3 ),
parent->sp( 1 ), p4b, p4daught,
form_fact, pflag );
amp.vertex( 0, 0, 0, l1 * b11 );
amp.vertex( 0, 0, 1, l2 * b11 );
amp.vertex( 1, 0, 0, l1 * b21 );
amp.vertex( 1, 0, 1, l2 * b21 );
amp.vertex( 0, 1, 0, l1 * b12 );
amp.vertex( 0, 1, 1, l2 * b12 );
amp.vertex( 1, 1, 0, l1 * b22 );
amp.vertex( 1, 1, 1, l2 * b22 );
amp.vertex( 0, 2, 0, l1 * b13 );
amp.vertex( 0, 2, 1, l2 * b13 );
amp.vertex( 1, 2, 0, l1 * b23 );
amp.vertex( 1, 2, 1, l2 * b23 );
amp.vertex( 0, 3, 0, l1 * b14 );
amp.vertex( 0, 3, 1, l2 * b14 );
amp.vertex( 1, 3, 0, l1 * b24 );
amp.vertex( 1, 3, 1, l2 * b24 );
}
}
EvtVector4C EvtSemiLeptonicBaryonAmp::EvtBaryonVACurrent(
const EvtDiracSpinor& Bf, const EvtDiracSpinor& Bi, EvtVector4R parent,
EvtVector4R daught, const double* ff, int pflag )
{
// flag == 0 => particle, same parity
// flag == 1 => particle, opposite parity
// flag == 2 => anti-particle, same parity
// flag == 3 => anti-particle, opposite parity
// particle
EvtComplex cv = EvtComplex( 1.0, 0. );
EvtComplex ca = EvtComplex( 1.0, 0. );
EvtComplex cg0 = EvtComplex( 1.0, 0. );
EvtComplex cg5 = EvtComplex( 1.0, 0. );
// antiparticle- same parity parent & daughter
if ( pflag == 2 ) {
cv = EvtComplex( -1.0, 0. );
ca = EvtComplex( 1.0, 0. );
cg0 = EvtComplex( 1.0, 0.0 );
cg5 = EvtComplex( 0.0, -1.0 );
}
// antiparticle- opposite parity parent & daughter
else if ( pflag == 3 ) {
cv = EvtComplex( 1.0, 0. );
ca = EvtComplex( -1.0, 0. );
cg0 = EvtComplex( 0.0, -1.0 );
cg5 = EvtComplex( 1.0, 0.0 );
}
EvtVector4C t[6];
// Term 1 = \bar{u}(p',s')*(F_1(q^2)*\gamma_{mu})*u(p,s)
t[0] = cv * EvtLeptonVCurrent( Bf, Bi );
// Term 2 = \bar{u}(p',s')*(F_2(q^2)*(p_{mu}/m_{\Lambda_Q}))*u(p,s)
t[1] = cg0 * EvtLeptonSCurrent( Bf, Bi ) * ( parent / parent.mass() );
// Term 3 = \bar{u}(p',s')*(F_3(q^2)*(p'_{mu}/m_{\Lambda_q}))*u(p,s)
t[2] = cg0 * EvtLeptonSCurrent( Bf, Bi ) * ( daught / daught.mass() );
// Term 4 = \bar{u}(p',s')*(G_1(q^2)*\gamma_{mu}*\gamma_5)*u(p,s)
t[3] = ca * EvtLeptonACurrent( Bf, Bi );
// Term 5 = \bar{u}(p',s')*(G_2(q^2)*(p_{mu}/m_{\Lambda_Q})*\gamma_5)*u(p,s)
t[4] = cg5 * EvtLeptonPCurrent( Bf, Bi ) * ( parent / parent.mass() );
// Term 6 = \bar{u}(p',s')*(G_3(q^2)*(p'_{mu}/m_{\Lambda_q})*\gamma_5)*u(p,s)
t[5] = cg5 * EvtLeptonPCurrent( Bf, Bi ) * ( daught / daught.mass() );
// Sum the individual terms
EvtVector4C current = ( ff[0] * t[0] + ff[1] * t[1] + ff[2] * t[2] -
ff[3] * t[3] - ff[4] * t[4] - ff[5] * t[5] );
return current;
}
EvtVector4C EvtSemiLeptonicBaryonAmp::EvtBaryonVARaritaCurrent(
const EvtRaritaSchwinger& Bf, const EvtDiracSpinor& Bi, EvtVector4R parent,
EvtVector4R daught, const double* ff, int pflag )
{
// flag == 0 => particle
// flag == 1 => anti-particle
// particle
EvtComplex cv = EvtComplex( 1.0, 0. );
EvtComplex ca = EvtComplex( 1.0, 0. );
EvtComplex cg0 = EvtComplex( 1.0, 0. );
EvtComplex cg5 = EvtComplex( 1.0, 0. );
// antiparticle
if ( pflag == 1 ) {
cv = EvtComplex( -1.0, 0. );
ca = EvtComplex( 1.0, 0. );
cg0 = EvtComplex( 1.0, 0.0 );
cg5 = EvtComplex( 0.0, -1.0 );
}
EvtVector4C t[8];
EvtTensor4C id;
id.setdiag( 1.0, 1.0, 1.0, 1.0 );
EvtDiracSpinor tmp;
for ( int i = 0; i < 4; i++ ) {
tmp.set_spinor( i, Bf.getVector( i ) * parent );
}
EvtVector4C v1, v2;
for ( int i = 0; i < 4; i++ ) {
v1.set( i, EvtLeptonSCurrent( Bf.getSpinor( i ), Bi ) );
v2.set( i, EvtLeptonPCurrent( Bf.getSpinor( i ), Bi ) );
}
// Term 1 = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(F_1(q^2)*\gamma_{mu})*u(p,s)
t[0] = ( cv / parent.mass() ) * EvtLeptonVCurrent( tmp, Bi );
// Term 2
// = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(F_2(q^2)*(p_{mu}/m_{\Lambda_Q}))*u(p,s)
t[1] = ( ( cg0 / parent.mass() ) * EvtLeptonSCurrent( tmp, Bi ) ) *
( parent / parent.mass() );
// Term 3
// = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(F_3(q^2)*(p'_{mu}/m_{\Lambda_q}))*u(p,s)
t[2] = ( ( cg0 / parent.mass() ) * EvtLeptonSCurrent( tmp, Bi ) ) *
( daught / daught.mass() );
// Term 4 = \bar{u}^{\alpha}(p',s')*(F_4(q^2)*g_{\alpha,\mu})*u(p,s)
t[3] = cg0 * ( id.cont2( v1 ) );
// Term 5
// = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(G_1(q^2)*\gamma_{mu}*\gamma_5)*u(p,s)
t[4] = ( ca / parent.mass() ) * EvtLeptonACurrent( tmp, Bi );
// Term 6
// = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})
// *(G_2(q^2)*(p_{mu}/m_{\Lambda_Q})*\gamma_5)*u(p,s)
t[5] = ( ( cg5 / parent.mass() ) * EvtLeptonPCurrent( tmp, Bi ) ) *
( parent / parent.mass() );
// Term 7
// = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})
// *(G_3(q^2)*(p'_{mu}/m_{\Lambda_q})*\gamma_5)*u(p,s)
t[6] = ( ( cg5 / parent.mass() ) * EvtLeptonPCurrent( tmp, Bi ) ) *
( daught / daught.mass() );
// Term 8 = \bar{u}^{\alpha}(p',s')*(G_4(q^2)*g_{\alpha,\mu}*\gamma_5))*u(p,s)
t[7] = cg5 * ( id.cont2( v2 ) );
// Sum the individual terms
EvtVector4C current = ( ff[0] * t[0] + ff[1] * t[1] + ff[2] * t[2] +
ff[3] * t[3] - ff[4] * t[4] - ff[5] * t[5] -
ff[6] * t[6] - ff[7] * t[7] );
return current;
}
diff --git a/src/EvtGenBase/EvtSemiLeptonicScalarAmp.cpp b/src/EvtGenBase/EvtSemiLeptonicScalarAmp.cpp
index 0c500e3..5e0fbae 100644
--- a/src/EvtGenBase/EvtSemiLeptonicScalarAmp.cpp
+++ b/src/EvtGenBase/EvtSemiLeptonicScalarAmp.cpp
@@ -1,97 +1,76 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSemiLeptonicScalarAmp.cc
-//
-// Description: Routine to implement semileptonic decays to pseudo-scalar
-// mesons.
-//
-// Modification history:
-//
-// DJL April 17,1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
void EvtSemiLeptonicScalarAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtSemiLeptonicFF* FormFactors )
{
static EvtId EM = EvtPDL::getId( "e-" );
static EvtId MUM = EvtPDL::getId( "mu-" );
static EvtId TAUM = EvtPDL::getId( "tau-" );
static EvtId EP = EvtPDL::getId( "e+" );
static EvtId MUP = EvtPDL::getId( "mu+" );
static EvtId TAUP = EvtPDL::getId( "tau+" );
//Add the lepton and neutrino 4 momenta to find q2
EvtVector4R q = parent->getDaug( 1 )->getP4() + parent->getDaug( 2 )->getP4();
double q2 = ( q.mass2() );
double fpf, f0f;
double mesonmass = parent->getDaug( 0 )->mass();
double parentmass = parent->mass();
FormFactors->getscalarff( parent->getId(), parent->getDaug( 0 )->getId(),
q2, mesonmass, &fpf, &f0f );
EvtVector4R p4b;
p4b.set( parent->mass(), 0.0, 0.0, 0.0 );
EvtVector4R p4meson = parent->getDaug( 0 )->getP4();
double mdiffoverq2;
mdiffoverq2 = parentmass * parentmass - mesonmass * mesonmass;
mdiffoverq2 = mdiffoverq2 / q2;
EvtVector4C l1, l2;
EvtId l_num = parent->getDaug( 1 )->getId();
EvtVector4C tds;
if ( l_num == EM || l_num == MUM || l_num == TAUM ) {
tds = EvtVector4C(
fpf * ( p4b + p4meson - ( mdiffoverq2 * ( p4b - p4meson ) ) ) +
+f0f * mdiffoverq2 * ( p4b - p4meson ) );
l1 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParentNeutrino() );
l2 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParentNeutrino() );
} else {
if ( l_num == EP || l_num == MUP || l_num == TAUP ) {
tds = EvtVector4C(
fpf * ( p4b + p4meson - ( mdiffoverq2 * ( p4b - p4meson ) ) ) +
+f0f * mdiffoverq2 * ( p4b - p4meson ) );
l1 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 0 ) );
l2 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 1 ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "dfnb89agngri wrong lepton number\n";
}
}
amp.vertex( 0, l1 * tds );
amp.vertex( 1, l2 * tds );
}
diff --git a/src/EvtGenBase/EvtSemiLeptonicTensorAmp.cpp b/src/EvtGenBase/EvtSemiLeptonicTensorAmp.cpp
index 27fc29c..25ca133 100644
--- a/src/EvtGenBase/EvtSemiLeptonicTensorAmp.cpp
+++ b/src/EvtGenBase/EvtSemiLeptonicTensorAmp.cpp
@@ -1,195 +1,174 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSemiLeptonicTensorAmp.cc
-//
-// Description: Routine to implement semileptonic decays to pseudo-scalar
-// mesons.
-//
-// Modification history:
-//
-// DJL April 17,1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtSemiLeptonicTensorAmp.hh"
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
void EvtSemiLeptonicTensorAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtSemiLeptonicFF* FormFactors )
{
static EvtId EM = EvtPDL::getId( "e-" );
static EvtId MUM = EvtPDL::getId( "mu-" );
static EvtId TAUM = EvtPDL::getId( "tau-" );
static EvtId EP = EvtPDL::getId( "e+" );
static EvtId MUP = EvtPDL::getId( "mu+" );
static EvtId TAUP = EvtPDL::getId( "tau+" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId DSM = EvtPDL::getId( "D_s-" );
static EvtId DSP = EvtPDL::getId( "D_s+" );
//Add the lepton and neutrino 4 momenta to find q2
EvtVector4R q = parent->getDaug( 1 )->getP4() + parent->getDaug( 2 )->getP4();
double q2 = ( q.mass2() );
double hf, kf, bpf, bmf;
FormFactors->gettensorff( parent->getId(), parent->getDaug( 0 )->getId(),
q2, parent->getDaug( 0 )->mass(), &hf, &kf, &bpf,
&bmf );
double costhl_flag = 1.0;
if ( parent->getId() == D0 || parent->getId() == D0B ||
parent->getId() == DP || parent->getId() == DM ) {
costhl_flag = -1.0;
}
if ( parent->getId() == DSP || parent->getId() == DSM ) {
costhl_flag = -1.0;
}
hf = hf * costhl_flag;
EvtVector4R p4b;
p4b.set( parent->mass(), 0.0, 0.0, 0.0 );
EvtVector4R p4meson = parent->getDaug( 0 )->getP4();
EvtVector4C l1, l2;
EvtId l_num = parent->getDaug( 1 )->getId();
EvtVector4C ep_meson_b[5];
ep_meson_b[0] =
( ( parent->getDaug( 0 )->epsTensorParent( 0 ) ).cont2( p4b ) ).conj();
ep_meson_b[1] =
( ( parent->getDaug( 0 )->epsTensorParent( 1 ) ).cont2( p4b ) ).conj();
ep_meson_b[2] =
( ( parent->getDaug( 0 )->epsTensorParent( 2 ) ).cont2( p4b ) ).conj();
ep_meson_b[3] =
( ( parent->getDaug( 0 )->epsTensorParent( 3 ) ).cont2( p4b ) ).conj();
ep_meson_b[4] =
( ( parent->getDaug( 0 )->epsTensorParent( 4 ) ).cont2( p4b ) ).conj();
EvtVector4R pp, pm;
pp = p4b + p4meson;
pm = p4b - p4meson;
//lange - October 31,2002 - try to lessen the mass dependence of probmax
double q2max = p4b.mass2() + p4meson.mass2() -
2.0 * p4b.mass() * p4meson.mass();
double q2maxin = 1.0 / q2max;
EvtComplex ep_meson_bb[5];
ep_meson_bb[0] = ep_meson_b[0] * ( p4b );
ep_meson_bb[1] = ep_meson_b[1] * ( p4b );
ep_meson_bb[2] = ep_meson_b[2] * ( p4b );
ep_meson_bb[3] = ep_meson_b[3] * ( p4b );
ep_meson_bb[4] = ep_meson_b[4] * ( p4b );
EvtVector4C tds0, tds1, tds2, tds3, tds4;
EvtTensor4C tds;
if ( l_num == EM || l_num == MUM || l_num == TAUM ) {
EvtTensor4C tdual = EvtComplex( 0.0, hf ) *
dual( EvtGenFunctions::directProd( pp, pm ) );
tds0 = tdual.cont2( ep_meson_b[0] ) - kf * ep_meson_b[0] -
bpf * ep_meson_bb[0] * pp - bmf * ep_meson_bb[0] * pm;
tds0 *= q2maxin;
tds1 = tdual.cont2( ep_meson_b[1] ) - kf * ep_meson_b[1] -
bpf * ep_meson_bb[1] * pp - bmf * ep_meson_bb[1] * pm;
tds1 *= q2maxin;
tds2 = tdual.cont2( ep_meson_b[2] ) - kf * ep_meson_b[2] -
bpf * ep_meson_bb[2] * pp - bmf * ep_meson_bb[2] * pm;
tds2 *= q2maxin;
tds3 = tdual.cont2( ep_meson_b[3] ) - kf * ep_meson_b[3] -
bpf * ep_meson_bb[3] * pp - bmf * ep_meson_bb[3] * pm;
tds3 *= q2maxin;
tds4 = tdual.cont2( ep_meson_b[4] ) - kf * ep_meson_b[4] -
bpf * ep_meson_bb[4] * pp - bmf * ep_meson_bb[4] * pm;
tds4 *= q2maxin;
l1 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParentNeutrino() );
l2 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParentNeutrino() );
} else {
if ( l_num == EP || l_num == MUP || l_num == TAUP ) {
EvtTensor4C tdual = EvtComplex( 0.0, -hf ) *
dual( EvtGenFunctions::directProd( pp, pm ) );
tds0 = tdual.cont2( ep_meson_b[0] ) - kf * ep_meson_b[0] -
bpf * ep_meson_bb[0] * pp - bmf * ep_meson_bb[0] * pm;
tds0 *= q2maxin;
tds1 = tdual.cont2( ep_meson_b[1] ) - kf * ep_meson_b[1] -
bpf * ep_meson_bb[1] * pp - bmf * ep_meson_bb[1] * pm;
tds1 *= q2maxin;
tds2 = tdual.cont2( ep_meson_b[2] ) - kf * ep_meson_b[2] -
bpf * ep_meson_bb[2] * pp - bmf * ep_meson_bb[2] * pm;
tds2 *= q2maxin;
tds3 = tdual.cont2( ep_meson_b[3] ) - kf * ep_meson_b[3] -
bpf * ep_meson_bb[3] * pp - bmf * ep_meson_bb[3] * pm;
tds3 *= q2maxin;
tds4 = tdual.cont2( ep_meson_b[4] ) - kf * ep_meson_b[4] -
bpf * ep_meson_bb[4] * pp - bmf * ep_meson_bb[4] * pm;
tds4 *= q2maxin;
l1 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 0 ) );
l2 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 1 ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "dfnb89agngri wrong lepton number\n";
}
}
amp.vertex( 0, 0, l1 * tds0 );
amp.vertex( 0, 1, l2 * tds0 );
amp.vertex( 1, 0, l1 * tds1 );
amp.vertex( 1, 1, l2 * tds1 );
amp.vertex( 2, 0, l1 * tds2 );
amp.vertex( 2, 1, l2 * tds2 );
amp.vertex( 3, 0, l1 * tds3 );
amp.vertex( 3, 1, l2 * tds3 );
amp.vertex( 4, 0, l1 * tds4 );
amp.vertex( 4, 1, l2 * tds4 );
return;
}
diff --git a/src/EvtGenBase/EvtSemiLeptonicVectorAmp.cpp b/src/EvtGenBase/EvtSemiLeptonicVectorAmp.cpp
index d3cd9f7..624f927 100644
--- a/src/EvtGenBase/EvtSemiLeptonicVectorAmp.cpp
+++ b/src/EvtGenBase/EvtSemiLeptonicVectorAmp.cpp
@@ -1,136 +1,115 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSemiLeptonicVectorAmp.cc
-//
-// Description: Routine to implement semileptonic decays to vector
-// mesons.
-//
-// Modification history:
-//
-// DJL April 17,1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
using std::endl;
void EvtSemiLeptonicVectorAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtSemiLeptonicFF* FormFactors )
{
static EvtId EM = EvtPDL::getId( "e-" );
static EvtId MUM = EvtPDL::getId( "mu-" );
static EvtId TAUM = EvtPDL::getId( "tau-" );
static EvtId EP = EvtPDL::getId( "e+" );
static EvtId MUP = EvtPDL::getId( "mu+" );
static EvtId TAUP = EvtPDL::getId( "tau+" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId DSM = EvtPDL::getId( "D_s-" );
static EvtId DSP = EvtPDL::getId( "D_s+" );
//Add the lepton and neutrino 4 momenta to find q2
EvtVector4R q = parent->getDaug( 1 )->getP4() + parent->getDaug( 2 )->getP4();
double q2 = ( q.mass2() );
double a1f, a2f, vf, a0f, a3f;
double m_meson = parent->getDaug( 0 )->mass();
FormFactors->getvectorff( parent->getId(), parent->getDaug( 0 )->getId(),
q2, m_meson, &a1f, &a2f, &vf, &a0f );
double costhl_flag = 1.0;
if ( parent->getId() == D0 || parent->getId() == D0B ||
parent->getId() == DP || parent->getId() == DM ) {
costhl_flag = -1.0;
}
if ( parent->getId() == DSP || parent->getId() == DSM ) {
costhl_flag = -1.0;
}
vf = vf * costhl_flag;
EvtVector4R p4b;
p4b.set( parent->mass(), 0.0, 0.0, 0.0 );
EvtVector4R p4meson = parent->getDaug( 0 )->getP4();
EvtVector4C l1, l2;
EvtId l_num = parent->getDaug( 1 )->getId();
double m_b = parent->mass();
a3f = ( ( m_b + m_meson ) / ( 2.0 * m_meson ) ) * a1f -
( ( m_b - m_meson ) / ( 2.0 * m_meson ) ) * a2f;
EvtTensor4C tds;
if ( l_num == EM || l_num == MUM || l_num == TAUM ) {
tds = a1f * ( m_b + m_meson ) * EvtTensor4C::g();
tds.addDirProd( ( -a2f / ( m_b + m_meson ) ) * p4b, p4b + p4meson );
tds += EvtComplex( 0.0, vf / ( m_b + m_meson ) ) *
dual( EvtGenFunctions::directProd( p4meson + p4b, p4b - p4meson ) );
tds.addDirProd( ( a0f - a3f ) * 2.0 * ( m_meson / q2 ) * p4b,
p4b - p4meson );
l1 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParentNeutrino() );
l2 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParentNeutrino() );
} else {
if ( l_num == EP || l_num == MUP || l_num == TAUP ) {
tds = a1f * ( m_b + m_meson ) * EvtTensor4C::g();
tds.addDirProd( ( -a2f / ( m_b + m_meson ) ) * p4b, p4b + p4meson );
tds -= EvtComplex( 0.0, vf / ( m_b + m_meson ) ) *
dual( EvtGenFunctions::directProd( p4meson + p4b,
p4b - p4meson ) );
tds.addDirProd( ( a0f - a3f ) * 2.0 * ( m_meson / q2 ) * p4b,
p4b - p4meson );
l1 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 0 ) );
l2 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 1 ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Wrong lepton number" << endl;
}
}
EvtVector4C et0 = tds.cont1( parent->getDaug( 0 )->epsParent( 0 ).conj() );
EvtVector4C et1 = tds.cont1( parent->getDaug( 0 )->epsParent( 1 ).conj() );
EvtVector4C et2 = tds.cont1( parent->getDaug( 0 )->epsParent( 2 ).conj() );
amp.vertex( 0, 0, l1.cont( et0 ) );
amp.vertex( 0, 1, l2.cont( et0 ) );
amp.vertex( 1, 0, l1.cont( et1 ) );
amp.vertex( 1, 1, l2.cont( et1 ) );
amp.vertex( 2, 0, l1.cont( et2 ) );
amp.vertex( 2, 1, l2.cont( et2 ) );
return;
}
diff --git a/src/EvtGenBase/EvtSimpleRandomEngine.cpp b/src/EvtGenBase/EvtSimpleRandomEngine.cpp
index 77b14cf..92b4ff1 100644
--- a/src/EvtGenBase/EvtSimpleRandomEngine.cpp
+++ b/src/EvtGenBase/EvtSimpleRandomEngine.cpp
@@ -1,37 +1,15 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtRandomEngine.cc
-//
-// Description: routines to generate random numbers
-// really trivial random number
-// implementation.
-//
-// Modification history:
-//
-// RYD December 25, 1999 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtSimpleRandomEngine.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <iostream>
#include <math.h>
#include <stdio.h>
double EvtSimpleRandomEngine::random()
{
_next = _next * 1103515245 + 123345;
unsigned temp = (unsigned)( _next / 65536 ) % 32768;
return ( temp + 1.0 ) / 32769.0;
}
diff --git a/src/EvtGenBase/EvtSpinDensity.cpp b/src/EvtGenBase/EvtSpinDensity.cpp
index b073916..28af79a 100644
--- a/src/EvtGenBase/EvtSpinDensity.cpp
+++ b/src/EvtGenBase/EvtSpinDensity.cpp
@@ -1,222 +1,202 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSpinDensity.cc
-//
-// Description: Class to reperesent spindensity matrices.
-//
-// Modification history:
-//
-// RYD May 29,1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtSpinDensity.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
using std::endl;
using std::ostream;
EvtSpinDensity::EvtSpinDensity( const EvtSpinDensity& density )
{
dim = 0;
rho = 0;
int i, j;
setDim( density.dim );
for ( i = 0; i < dim; i++ ) {
for ( j = 0; j < dim; j++ ) {
rho[i][j] = density.rho[i][j];
}
}
}
EvtSpinDensity& EvtSpinDensity::operator=( const EvtSpinDensity& density )
{
int i, j;
setDim( density.dim );
for ( i = 0; i < dim; i++ ) {
for ( j = 0; j < dim; j++ ) {
rho[i][j] = density.rho[i][j];
}
}
return *this;
}
EvtSpinDensity::~EvtSpinDensity()
{
if ( dim != 0 ) {
int i;
for ( i = 0; i < dim; i++ )
delete[] rho[i];
}
delete[] rho;
}
EvtSpinDensity::EvtSpinDensity()
{
dim = 0;
rho = 0;
}
void EvtSpinDensity::setDim( int n )
{
if ( dim == n )
return;
if ( dim != 0 ) {
int i;
for ( i = 0; i < dim; i++ )
delete[] rho[i];
delete[] rho;
rho = 0;
dim = 0;
}
if ( n == 0 )
return;
dim = n;
rho = new EvtComplexPtr[n];
int i;
for ( i = 0; i < n; i++ ) {
rho[i] = new EvtComplex[n];
}
}
int EvtSpinDensity::getDim() const
{
return dim;
}
void EvtSpinDensity::set( int i, int j, const EvtComplex& rhoij )
{
assert( i < dim && j < dim );
rho[i][j] = rhoij;
}
const EvtComplex& EvtSpinDensity::get( int i, int j ) const
{
assert( i < dim && j < dim );
return rho[i][j];
}
void EvtSpinDensity::setDiag( int n )
{
setDim( n );
int i, j;
for ( i = 0; i < n; i++ ) {
for ( j = 0; j < n; j++ ) {
rho[i][j] = EvtComplex( 0.0 );
}
rho[i][i] = EvtComplex( 1.0 );
}
}
double EvtSpinDensity::normalizedProb( const EvtSpinDensity& d )
{
int i, j;
EvtComplex prob( 0.0, 0.0 );
double norm = 0.0;
if ( dim != d.dim ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not matching dimensions in NormalizedProb" << endl;
::abort();
}
for ( i = 0; i < dim; i++ ) {
norm += real( rho[i][i] );
for ( j = 0; j < dim; j++ ) {
prob += rho[i][j] * d.rho[i][j];
}
}
if ( imag( prob ) > 0.00000001 * real( prob ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Imaginary probability:" << prob << " " << norm << endl;
}
if ( real( prob ) < 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Negative probability:" << prob << " " << norm << endl;
}
return real( prob ) / norm;
}
int EvtSpinDensity::check()
{
if ( dim < 1 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "dim=" << dim << "in SpinDensity::Check" << endl;
}
int i, j;
double trace( 0.0 );
for ( i = 0; i < dim; i++ ) {
trace += abs( rho[i][i] );
}
for ( i = 0; i < dim; i++ ) {
if ( real( rho[i][i] ) < 0.0 )
return 0;
if ( imag( rho[i][i] ) * 1000000.0 > trace ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << *this << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << trace << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Failing 1" << endl;
return 0;
}
}
for ( i = 0; i < dim; i++ ) {
for ( j = i + 1; j < dim; j++ ) {
if ( fabs( real( rho[i][j] - rho[j][i] ) ) >
0.00000001 * ( abs( rho[i][i] ) + abs( rho[j][j] ) ) ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Failing 2" << endl;
return 0;
}
if ( fabs( imag( rho[i][j] + rho[j][i] ) ) >
0.00000001 * ( abs( rho[i][i] ) + abs( rho[j][j] ) ) ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Failing 3" << endl;
return 0;
}
}
}
return 1;
}
ostream& operator<<( ostream& s, const EvtSpinDensity& d )
{
int i, j;
s << endl;
s << "Dimension:" << d.dim << endl;
for ( i = 0; i < d.dim; i++ ) {
for ( j = 0; j < d.dim; j++ ) {
s << d.rho[i][j] << " ";
}
s << endl;
}
return s;
}
diff --git a/src/EvtGenBase/EvtSpinType.cpp b/src/EvtGenBase/EvtSpinType.cpp
index 387e249..0d465dd 100644
--- a/src/EvtGenBase/EvtSpinType.cpp
+++ b/src/EvtGenBase/EvtSpinType.cpp
@@ -1,87 +1,66 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGenBase/EvtSpinType.cc
-//
-// Description: Class for enumarating the different types of
-// particles and the number of states they have.
-//
-// Modification history:
-//
-// RYD Jan 26, 2006 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
int EvtSpinType::getSpin2( spintype stype )
{
switch ( stype ) {
case SCALAR:
case STRING:
return 0;
case DIRAC:
case NEUTRINO:
return 1;
case VECTOR:
case PHOTON:
return 2;
case RARITASCHWINGER:
return 3;
case TENSOR:
return 4;
case SPIN5HALF:
return 5;
case SPIN3:
return 6;
case SPIN7HALF:
return 7;
case SPIN4:
return 8;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unknown spintype in EvtSpinType!" << std::endl;
return 0;
}
}
int EvtSpinType::getSpinStates( spintype stype )
{
switch ( stype ) {
case SCALAR:
case STRING:
case NEUTRINO:
return 1;
case DIRAC:
case PHOTON:
return 2;
case VECTOR:
return 3;
case RARITASCHWINGER:
return 4;
case TENSOR:
return 5;
case SPIN5HALF:
return 6;
case SPIN3:
return 7;
case SPIN7HALF:
return 8;
case SPIN4:
return 9;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unknown spintype in EvtSpinType!" << std::endl;
return 0;
}
}
diff --git a/src/EvtGenBase/EvtStdHep.cpp b/src/EvtGenBase/EvtStdHep.cpp
index fc03ae2..9fd212f 100644
--- a/src/EvtGenBase/EvtStdHep.cpp
+++ b/src/EvtGenBase/EvtStdHep.cpp
@@ -1,147 +1,128 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtStdHep.cc
-//
-// Description: Class produce the StdHep representation of the decay.
-//
-// Modification history:
-//
-// RYD March 11, 1998 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenBase/EvtStdHep.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <iomanip>
#include <iostream>
using namespace std;
void EvtStdHep::init()
{
_npart = 0;
}
int EvtStdHep::getNPart()
{
return _npart;
}
void EvtStdHep::createParticle( EvtVector4R p4, EvtVector4R x, int prntfirst,
int prntlast, int id )
{
_p4[_npart] = p4;
_x[_npart] = x;
_prntfirst[_npart] = prntfirst;
_prntlast[_npart] = prntlast;
_daugfirst[_npart] = -1;
_dauglast[_npart] = -1;
_id[_npart] = id;
_istat[_npart] = 1;
//we also need to fix up the parents pointer to the daughter!
if ( prntfirst >= 0 ) {
int i;
for ( i = prntfirst; i <= prntlast; i++ ) {
_istat[i] = 2;
if ( _daugfirst[i] == -1 )
_daugfirst[i] = _npart;
if ( _dauglast[i] < _npart )
_dauglast[i] = _npart;
}
}
_npart++;
}
void EvtStdHep::translate( EvtVector4R d )
{
int i;
for ( i = 0; i < _npart; i++ ) {
_x[i] += d;
}
}
/*
ostream& operator<<(ostream& s, const EvtStdHep& stdhep){
int w=s.width();
int p=s.precision();
std::ios::fmtflags f=s.flags();
s <<endl;
s << " N Id Ist M1 M2 DF DL px py pz E t x y z"<<endl;
int i;
for(i=0;i<stdhep._npart;i++){
s.width(3);
s<<i<<" ";
s.width(7);
s<<stdhep._id[i]<<" ";
s.width(3);
s<<stdhep._istat[i]<<" ";
s.width(4);
s<<stdhep._prntfirst[i]<<" ";
s.width(4);
s<<stdhep._prntlast[i]<<" ";
s.width(4);
s<<stdhep._daugfirst[i]<<" ";
s.width(4);
s<<stdhep._dauglast[i]<<" ";
s.width(7);
s.precision(4);
s<<setiosflags( ios::right|ios::fixed );
s<<stdhep._p4[i].get(1)<<" ";
s.width(7);
s.precision(4);
s<<setiosflags( ios::right|ios::fixed );
s<<stdhep._p4[i].get(2)<<" ";
s.width(7);
s.precision(4);
s<<setiosflags( ios::right|ios::fixed );
s<<stdhep._p4[i].get(3)<<" ";
s.width(7);
s.precision(4);
s<<setiosflags( ios::right|ios::fixed );
s<<stdhep._p4[i].get(0)<<" ";
s.width(7);
s.precision(4);
s<<setiosflags( ios::right|ios::fixed );
s<<stdhep._x[i].get(0)<<" ";
s.width(7);
s.precision(4);
s<<setiosflags( ios::right|ios::fixed );
s<<stdhep._x[i].get(1)<<" ";
s.width(7);
s.precision(4);
s<<setiosflags( ios::right|ios::fixed );
s<<stdhep._x[i].get(2)<<" ";
s.width(7);
s.precision(4);
s<<setiosflags( ios::right|ios::fixed );
s<<stdhep._x[i].get(3)<<endl;
s.width(0);
}
s<<endl;
s.width(w);
s.precision(p);
s.flags((std::ios::fmtflags)f);
return s;
}
*/
diff --git a/src/EvtGenBase/EvtStringParticle.cpp b/src/EvtGenBase/EvtStringParticle.cpp
index 6c3f4ce..00dbc2c 100644
--- a/src/EvtGenBase/EvtStringParticle.cpp
+++ b/src/EvtGenBase/EvtStringParticle.cpp
@@ -1,87 +1,67 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtStringParticle.cc
-//
-// Description: Class to describe the partons that are produced in JetSet.
-//
-// Modification history:
-//
-// RYD Febuary 27,1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtStringParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <iostream>
#include <math.h>
#include <stdlib.h>
void EvtStringParticle::init( EvtId id, const EvtVector4R& p4 )
{
_validP4 = true;
setp( p4 );
setpart_num( id );
}
void EvtStringParticle::initPartons( int npartons, EvtVector4R* p4partons,
EvtId* idpartons )
{
_p4partons.resize( npartons );
_idpartons.resize( npartons );
for ( int i = 0; i < npartons; i++ ) {
_p4partons[i] = p4partons[i];
_idpartons[i] = idpartons[i];
}
}
int EvtStringParticle::getNPartons()
{
return _p4partons.size();
}
EvtId EvtStringParticle::getIdParton( int i )
{
return _idpartons[i];
}
EvtVector4R EvtStringParticle::getP4Parton( int i )
{
return _p4partons[i];
}
EvtSpinDensity EvtStringParticle::rotateToHelicityBasis() const
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "rotateToHelicityBasis not implemented for strin particle.";
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Will terminate execution.";
::abort();
EvtSpinDensity rho;
return rho;
}
EvtSpinDensity EvtStringParticle::rotateToHelicityBasis( double, double,
double ) const
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "rotateToHelicityBasis(alpha,beta,gamma) not implemented for string particle.";
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Will terminate execution.";
::abort();
EvtSpinDensity rho;
return rho;
}
diff --git a/src/EvtGenBase/EvtSymTable.cpp b/src/EvtGenBase/EvtSymTable.cpp
index 4be34f6..3030a48 100644
--- a/src/EvtGenBase/EvtSymTable.cpp
+++ b/src/EvtGenBase/EvtSymTable.cpp
@@ -1,65 +1,45 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSymTable.cc
-//
-// Description: Class to hold the symbols that are defined
-// in the DECAY files.
-// Modification history:
-//
-// RYD May 8, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtSymTable.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <ctype.h>
#include <fstream>
#include <iostream>
#include <stdlib.h>
#include <string>
using std::endl;
using std::fstream;
std::map<std::string, std::string> EvtSymTable::_symMap;
EvtSymTable::EvtSymTable()
{
}
void EvtSymTable::define( const std::string& symname, std::string d )
{
if ( _symMap.find( symname ) != _symMap.end() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Symbol:" << symname.c_str()
<< " redefined, old value:" << _symMap[symname].c_str()
<< " new value:" << d.c_str() << endl;
_symMap[symname] = d;
return;
}
_symMap[symname] = d;
return;
}
std::string EvtSymTable::get( const std::string& symname, int& ierr )
{
ierr = 0;
if ( _symMap.find( symname ) != _symMap.end() )
return _symMap[symname];
// If no matching symbol found just return the string
return symname;
}
diff --git a/src/EvtGenBase/EvtTensor3C.cpp b/src/EvtGenBase/EvtTensor3C.cpp
index 24787d7..d36af1f 100644
--- a/src/EvtGenBase/EvtTensor3C.cpp
+++ b/src/EvtGenBase/EvtTensor3C.cpp
@@ -1,393 +1,373 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtTensor3C.cc
-//
-// Description: Implementation of 3 tensors.
-//
-// Modification history:
-//
-// RYD September 14, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtTensor3C.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector3C.hh"
#include <iostream>
#include <math.h>
using std::endl;
using std::ostream;
EvtTensor3C::EvtTensor3C( const EvtTensor3C& t1 )
{
int i, j;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
t[i][j] = t1.t[i][j];
}
}
}
EvtTensor3C::EvtTensor3C( double d11, double d22, double d33 )
{
int i, j;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
t[i][j] = 0.0;
}
}
t[0][0] = d11;
t[1][1] = d22;
t[2][2] = d33;
}
EvtTensor3C& EvtTensor3C::operator=( const EvtTensor3C& t1 )
{
int i, j;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
t[i][j] = t1.t[i][j];
}
}
return *this;
}
EvtTensor3C EvtTensor3C::conj() const
{
EvtTensor3C temp;
int i, j;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
temp.set( j, i, ::conj( t[i][j] ) );
}
}
return temp;
}
void EvtTensor3C::zero()
{
int i, j;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
t[i][j] = EvtComplex( 0.0, 0.0 );
}
}
}
EvtTensor3C::EvtTensor3C()
{
int i, j;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
t[i][j] = EvtComplex( 0.0, 0.0 );
}
}
}
EvtTensor3C EvtTensor3C::operator+=( const EvtTensor3C& t2 )
{
int i, j;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
t[i][j] += t2.t[i][j];
}
}
return *this;
}
EvtTensor3C EvtTensor3C::operator-=( const EvtTensor3C& t2 )
{
int i, j;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
t[i][j] -= t2.t[i][j];
}
}
return *this;
}
EvtTensor3C EvtTensor3C::operator*=( const EvtComplex& c )
{
int i, j;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
t[i][j] *= c;
}
}
return *this;
}
EvtTensor3C EvtTensor3C::operator*=( const double c )
{
int i, j;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
t[i][j] *= EvtComplex( c );
}
}
return *this;
}
EvtTensor3C EvtGenFunctions::directProd( const EvtVector3C& c1,
const EvtVector3C& c2 )
{
EvtTensor3C temp;
int i, j;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
temp.set( i, j, c1.get( i ) * c2.get( j ) );
}
}
return temp;
}
EvtTensor3C EvtGenFunctions::directProd( const EvtVector3C& c1,
const EvtVector3R& c2 )
{
EvtTensor3C temp;
int i, j;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
temp.set( i, j, c1.get( i ) * c2.get( j ) );
}
}
return temp;
}
EvtTensor3C EvtGenFunctions::directProd( const EvtVector3R& c1,
const EvtVector3R& c2 )
{
EvtTensor3C temp;
int i, j;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
temp.t[i][j] = EvtComplex( c1.get( i ) * c2.get( j ), 0.0 );
}
}
return temp;
}
EvtTensor3C conj( const EvtTensor3C& t2 )
{
EvtTensor3C temp;
int i, j;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
temp.set( i, j, ::conj( ( t2.get( i, j ) ) ) );
}
}
return temp;
}
EvtTensor3C cont22( const EvtTensor3C& t1, const EvtTensor3C& t2 )
{
EvtTensor3C temp;
int i, j;
EvtComplex c;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
c = t1.get( i, 0 ) * t2.get( j, 0 ) +
t1.get( i, 1 ) * t2.get( j, 1 ) + t1.get( i, 2 ) * t2.get( j, 2 );
temp.set( i, j, c );
}
}
return temp;
}
EvtTensor3C cont11( const EvtTensor3C& t1, const EvtTensor3C& t2 )
{
EvtTensor3C temp;
int i, j;
EvtComplex c;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
c = t1.get( 0, i ) * t2.get( 0, j ) +
t1.get( 1, i ) * t2.get( 1, j ) + t1.get( 2, i ) * t2.get( 2, j );
temp.set( i, j, c );
}
}
return temp;
}
EvtVector3C EvtTensor3C::cont1( const EvtVector3C& v ) const
{
EvtVector3C temp;
int i;
for ( i = 0; i < 3; i++ ) {
temp.set( i, t[0][i] * v.get( 0 ) + t[1][i] * v.get( 1 ) +
t[2][i] * v.get( 2 ) );
}
return temp;
}
EvtVector3C EvtTensor3C::cont2( const EvtVector3C& v ) const
{
EvtVector3C temp;
int i;
for ( i = 0; i < 3; i++ ) {
temp.set( i, t[i][0] * v.get( 0 ) + t[i][1] * v.get( 1 ) +
t[i][2] * v.get( 2 ) );
}
return temp;
}
EvtVector3C EvtTensor3C::cont1( const EvtVector3R& v ) const
{
EvtVector3C temp;
int i;
for ( i = 0; i < 3; i++ ) {
temp.set( i, t[0][i] * v.get( 0 ) + t[1][i] * v.get( 1 ) +
t[2][i] * v.get( 2 ) );
}
return temp;
}
EvtVector3C EvtTensor3C::cont2( const EvtVector3R& v ) const
{
EvtVector3C temp;
int i;
for ( i = 0; i < 3; i++ ) {
temp.set( i, t[i][0] * v.get( 0 ) + t[i][1] * v.get( 1 ) +
t[i][2] * v.get( 2 ) );
}
return temp;
}
EvtTensor3C EvtGenFunctions::eps( const EvtVector3R& v )
{
EvtTensor3C temp;
temp.t[0][0] = 0.0;
temp.t[1][1] = 0.0;
temp.t[2][2] = 0.0;
temp.t[0][1] = v.get( 2 );
temp.t[0][2] = -v.get( 1 );
temp.t[1][0] = -v.get( 2 );
temp.t[1][2] = v.get( 0 );
temp.t[2][0] = v.get( 1 );
temp.t[2][1] = -v.get( 0 );
return temp;
}
const EvtTensor3C& EvtTensor3C::id()
{
static EvtTensor3C identity( 1.0, 1.0, 1.0 );
return identity;
}
ostream& operator<<( ostream& s, const EvtTensor3C& v )
{
s << endl
<< "(" << v.t[0][0] << "," << v.t[0][1] << "," << v.t[0][2] << ")";
s << endl
<< "(" << v.t[1][0] << "," << v.t[1][1] << "," << v.t[1][2] << ")";
s << endl
<< "(" << v.t[2][0] << "," << v.t[2][1] << "," << v.t[2][2] << ")" << endl;
return s;
}
EvtTensor3C EvtGenFunctions::rotateEuler( const EvtTensor3C& v, double alpha,
double beta, double gamma )
{
EvtTensor3C tmp( v );
tmp.applyRotateEuler( alpha, beta, gamma );
return tmp;
}
void EvtTensor3C::applyRotateEuler( double phi, double theta, double ksi )
{
EvtComplex temp[3][3];
double sp, st, sk, cp, ct, ck;
double r[3][3];
int i, j, k;
sp = sin( phi );
st = sin( theta );
sk = sin( ksi );
cp = cos( phi );
ct = cos( theta );
ck = cos( ksi );
r[0][0] = ck * ct * cp - sk * sp;
r[0][1] = ck * ct * sp + sk * cp;
r[0][2] = -ck * st;
r[1][0] = -sk * ct * cp - ck * sp;
r[1][1] = -sk * ct * sp + ck * cp;
r[1][2] = sk * st;
r[2][0] = st * cp;
r[2][1] = st * sp;
r[2][2] = ct;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
temp[i][j] = 0.0;
for ( k = 0; k < 3; k++ ) {
temp[i][j] += r[i][k] * t[k][j];
}
}
}
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
t[i][j] = 0.0;
for ( k = 0; k < 3; k++ ) {
t[i][j] += r[i][k] * temp[j][k];
}
}
}
}
diff --git a/src/EvtGenBase/EvtTensor4C.cpp b/src/EvtGenBase/EvtTensor4C.cpp
index 6eb3bfe..b85b932 100644
--- a/src/EvtGenBase/EvtTensor4C.cpp
+++ b/src/EvtGenBase/EvtTensor4C.cpp
@@ -1,555 +1,535 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtTensor4C.cc
-//
-// Description: Implementation of tensor particles.
-//
-// Modification history:
-//
-// DJL/RYD September 25,1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
using std::endl;
using std::ostream;
EvtTensor4C::EvtTensor4C( const EvtTensor4C& t1 )
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
t[i][j] = t1.t[i][j];
}
}
}
const EvtTensor4C& EvtTensor4C::g()
{
static EvtTensor4C g_metric( 1.0, -1.0, -1.0, -1.0 );
return g_metric;
}
EvtTensor4C& EvtTensor4C::operator=( const EvtTensor4C& t1 )
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
t[i][j] = t1.t[i][j];
}
}
return *this;
}
EvtTensor4C EvtTensor4C::conj() const
{
EvtTensor4C temp;
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
temp.set( j, i, ::conj( t[i][j] ) );
}
}
return temp;
}
EvtTensor4C rotateEuler( const EvtTensor4C& rs, double alpha, double beta,
double gamma )
{
EvtTensor4C tmp( rs );
tmp.applyRotateEuler( alpha, beta, gamma );
return tmp;
}
EvtTensor4C boostTo( const EvtTensor4C& rs, const EvtVector4R p4 )
{
EvtTensor4C tmp( rs );
tmp.applyBoostTo( p4 );
return tmp;
}
EvtTensor4C boostTo( const EvtTensor4C& rs, const EvtVector3R boost )
{
EvtTensor4C tmp( rs );
tmp.applyBoostTo( boost );
return tmp;
}
void EvtTensor4C::applyBoostTo( const EvtVector4R& p4 )
{
double e = p4.get( 0 );
EvtVector3R boost( p4.get( 1 ) / e, p4.get( 2 ) / e, p4.get( 3 ) / e );
applyBoostTo( boost );
return;
}
void EvtTensor4C::applyBoostTo( const EvtVector3R& boost )
{
double bx, by, bz, gamma, b2;
double lambda[4][4];
EvtComplex tt[4][4];
bx = boost.get( 0 );
by = boost.get( 1 );
bz = boost.get( 2 );
double bxx = bx * bx;
double byy = by * by;
double bzz = bz * bz;
b2 = bxx + byy + bzz;
if ( b2 == 0.0 ) {
return;
}
assert( b2 < 1.0 );
gamma = 1.0 / sqrt( 1 - b2 );
int i, j, k;
if ( b2 == 0.0 ) {
return;
}
lambda[0][0] = gamma;
lambda[0][1] = gamma * bx;
lambda[1][0] = gamma * bx;
lambda[0][2] = gamma * by;
lambda[2][0] = gamma * by;
lambda[0][3] = gamma * bz;
lambda[3][0] = gamma * bz;
lambda[1][1] = 1.0 + ( gamma - 1.0 ) * bx * bx / b2;
lambda[2][2] = 1.0 + ( gamma - 1.0 ) * by * by / b2;
lambda[3][3] = 1.0 + ( gamma - 1.0 ) * bz * bz / b2;
lambda[1][2] = ( gamma - 1.0 ) * bx * by / b2;
lambda[2][1] = ( gamma - 1.0 ) * bx * by / b2;
lambda[1][3] = ( gamma - 1.0 ) * bx * bz / b2;
lambda[3][1] = ( gamma - 1.0 ) * bx * bz / b2;
lambda[3][2] = ( gamma - 1.0 ) * bz * by / b2;
lambda[2][3] = ( gamma - 1.0 ) * bz * by / b2;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
tt[i][j] = EvtComplex( 0.0 );
for ( k = 0; k < 4; k++ ) {
tt[i][j] = tt[i][j] + lambda[j][k] * t[i][k];
}
}
}
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
t[i][j] = EvtComplex( 0.0 );
for ( k = 0; k < 4; k++ ) {
t[i][j] = t[i][j] + lambda[i][k] * tt[k][j];
}
}
}
}
void EvtTensor4C::zero()
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
t[i][j] = EvtComplex( 0.0, 0.0 );
}
}
}
ostream& operator<<( ostream& s, const EvtTensor4C& t )
{
int i, j;
s << endl;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
s << t.t[i][j];
}
s << endl;
}
return s;
}
void EvtTensor4C::setdiag( double g00, double g11, double g22, double g33 )
{
t[0][0] = EvtComplex( g00 );
t[1][1] = EvtComplex( g11 );
t[2][2] = EvtComplex( g22 );
t[3][3] = EvtComplex( g33 );
t[0][1] = EvtComplex( 0.0 );
t[0][2] = EvtComplex( 0.0 );
t[0][3] = EvtComplex( 0.0 );
t[1][0] = EvtComplex( 0.0 );
t[1][2] = EvtComplex( 0.0 );
t[1][3] = EvtComplex( 0.0 );
t[2][0] = EvtComplex( 0.0 );
t[2][1] = EvtComplex( 0.0 );
t[2][3] = EvtComplex( 0.0 );
t[3][0] = EvtComplex( 0.0 );
t[3][1] = EvtComplex( 0.0 );
t[3][2] = EvtComplex( 0.0 );
}
EvtTensor4C& EvtTensor4C::operator+=( const EvtTensor4C& t2 )
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
t[i][j] += t2.get( i, j );
}
}
return *this;
}
EvtTensor4C& EvtTensor4C::operator-=( const EvtTensor4C& t2 )
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
t[i][j] -= t2.get( i, j );
}
}
return *this;
}
EvtTensor4C& EvtTensor4C::operator*=( const EvtComplex& c )
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
t[i][j] *= c;
}
}
return *this;
}
EvtTensor4C operator*( const EvtTensor4C& t1, const EvtComplex& c )
{
return EvtTensor4C( t1 ) *= c;
}
EvtTensor4C operator*( const EvtComplex& c, const EvtTensor4C& t1 )
{
return EvtTensor4C( t1 ) *= c;
}
EvtTensor4C& EvtTensor4C::operator*=( double d )
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
t[i][j] *= EvtComplex( d, 0.0 );
}
}
return *this;
}
EvtTensor4C operator*( const EvtTensor4C& t1, double d )
{
return EvtTensor4C( t1 ) *= EvtComplex( d, 0.0 );
}
EvtTensor4C operator*( double d, const EvtTensor4C& t1 )
{
return EvtTensor4C( t1 ) *= EvtComplex( d, 0.0 );
}
EvtComplex cont( const EvtTensor4C& t1, const EvtTensor4C& t2 )
{
EvtComplex sum( 0.0, 0.0 );
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
if ( ( i == 0 && j != 0 ) || ( j == 0 && i != 0 ) ) {
sum -= t1.t[i][j] * t2.t[i][j];
} else {
sum += t1.t[i][j] * t2.t[i][j];
}
}
}
return sum;
}
EvtTensor4C EvtGenFunctions::directProd( const EvtVector4C& c1,
const EvtVector4C& c2 )
{
EvtTensor4C temp;
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
temp.set( i, j, c1.get( i ) * c2.get( j ) );
}
}
return temp;
}
EvtTensor4C EvtGenFunctions::directProd( const EvtVector4C& c1,
const EvtVector4R& c2 )
{
EvtTensor4C temp;
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
temp.set( i, j, c1.get( i ) * c2.get( j ) );
}
}
return temp;
}
EvtTensor4C EvtGenFunctions::directProd( const EvtVector4R& c1,
const EvtVector4R& c2 )
{
EvtTensor4C temp;
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
temp.t[i][j] = EvtComplex( c1.get( i ) * c2.get( j ), 0.0 );
}
}
return temp;
}
EvtTensor4C& EvtTensor4C::addDirProd( const EvtVector4R& p1,
const EvtVector4R& p2 )
{
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
t[i][j] += p1.get( i ) * p2.get( j );
}
}
return *this;
}
EvtTensor4C dual( const EvtTensor4C& t2 )
{
EvtTensor4C temp;
temp.set( 0, 0, EvtComplex( 0.0, 0.0 ) );
temp.set( 1, 1, EvtComplex( 0.0, 0.0 ) );
temp.set( 2, 2, EvtComplex( 0.0, 0.0 ) );
temp.set( 3, 3, EvtComplex( 0.0, 0.0 ) );
temp.set( 0, 1, t2.get( 3, 2 ) - t2.get( 2, 3 ) );
temp.set( 0, 2, -t2.get( 3, 1 ) + t2.get( 1, 3 ) );
temp.set( 0, 3, t2.get( 2, 1 ) - t2.get( 1, 2 ) );
temp.set( 1, 2, -t2.get( 3, 0 ) + t2.get( 0, 3 ) );
temp.set( 1, 3, t2.get( 2, 0 ) - t2.get( 0, 2 ) );
temp.set( 2, 3, -t2.get( 1, 0 ) + t2.get( 0, 1 ) );
temp.set( 1, 0, -temp.get( 0, 1 ) );
temp.set( 2, 0, -temp.get( 0, 2 ) );
temp.set( 3, 0, -temp.get( 0, 3 ) );
temp.set( 2, 1, -temp.get( 1, 2 ) );
temp.set( 3, 1, -temp.get( 1, 3 ) );
temp.set( 3, 2, -temp.get( 2, 3 ) );
return temp;
}
EvtTensor4C conj( const EvtTensor4C& t2 )
{
EvtTensor4C temp;
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
temp.set( i, j, ::conj( ( t2.get( i, j ) ) ) );
}
}
return temp;
}
EvtTensor4C cont22( const EvtTensor4C& t1, const EvtTensor4C& t2 )
{
EvtTensor4C temp;
int i, j;
EvtComplex c;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
c = t1.get( i, 0 ) * t2.get( j, 0 ) -
t1.get( i, 1 ) * t2.get( j, 1 ) -
t1.get( i, 2 ) * t2.get( j, 2 ) - t1.get( i, 3 ) * t2.get( j, 3 );
temp.set( i, j, c );
}
}
return temp;
}
EvtTensor4C cont11( const EvtTensor4C& t1, const EvtTensor4C& t2 )
{
EvtTensor4C temp;
int i, j;
EvtComplex c;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
c = t1.get( 0, i ) * t2.get( 0, j ) -
t1.get( 1, i ) * t2.get( 1, j ) -
t1.get( 2, i ) * t2.get( 2, j ) - t1.get( 3, i ) * t2.get( 3, j );
temp.set( i, j, c );
}
}
return temp;
}
EvtVector4C EvtTensor4C::cont1( const EvtVector4C& v4 ) const
{
EvtVector4C temp;
int i;
for ( i = 0; i < 4; i++ ) {
temp.set( i, t[0][i] * v4.get( 0 ) - t[1][i] * v4.get( 1 ) -
t[2][i] * v4.get( 2 ) - t[3][i] * v4.get( 3 ) );
}
return temp;
}
EvtVector4C EvtTensor4C::cont2( const EvtVector4C& v4 ) const
{
EvtVector4C temp;
int i;
for ( i = 0; i < 4; i++ ) {
temp.set( i, t[i][0] * v4.get( 0 ) - t[i][1] * v4.get( 1 ) -
t[i][2] * v4.get( 2 ) - t[i][3] * v4.get( 3 ) );
}
return temp;
}
EvtVector4C EvtTensor4C::cont1( const EvtVector4R& v4 ) const
{
EvtVector4C temp;
int i;
for ( i = 0; i < 4; i++ ) {
temp.set( i, t[0][i] * v4.get( 0 ) - t[1][i] * v4.get( 1 ) -
t[2][i] * v4.get( 2 ) - t[3][i] * v4.get( 3 ) );
}
return temp;
}
EvtVector4C EvtTensor4C::cont2( const EvtVector4R& v4 ) const
{
EvtVector4C temp;
int i;
for ( i = 0; i < 4; i++ ) {
temp.set( i, t[i][0] * v4.get( 0 ) - t[i][1] * v4.get( 1 ) -
t[i][2] * v4.get( 2 ) - t[i][3] * v4.get( 3 ) );
}
return temp;
}
void EvtTensor4C::applyRotateEuler( double phi, double theta, double ksi )
{
EvtComplex tt[4][4];
double sp, st, sk, cp, ct, ck;
double lambda[4][4];
sp = sin( phi );
st = sin( theta );
sk = sin( ksi );
cp = cos( phi );
ct = cos( theta );
ck = cos( ksi );
lambda[0][0] = 1.0;
lambda[0][1] = 0.0;
lambda[1][0] = 0.0;
lambda[0][2] = 0.0;
lambda[2][0] = 0.0;
lambda[0][3] = 0.0;
lambda[3][0] = 0.0;
lambda[1][1] = ck * ct * cp - sk * sp;
lambda[1][2] = -sk * ct * cp - ck * sp;
lambda[1][3] = st * cp;
lambda[2][1] = ck * ct * sp + sk * cp;
lambda[2][2] = -sk * ct * sp + ck * cp;
lambda[2][3] = st * sp;
lambda[3][1] = -ck * st;
lambda[3][2] = sk * st;
lambda[3][3] = ct;
int i, j, k;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
tt[i][j] = EvtComplex( 0.0 );
for ( k = 0; k < 4; k++ ) {
tt[i][j] += lambda[j][k] * t[i][k];
}
}
}
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j < 4; j++ ) {
t[i][j] = EvtComplex( 0.0 );
for ( k = 0; k < 4; k++ ) {
t[i][j] += lambda[i][k] * tt[k][j];
}
}
}
}
diff --git a/src/EvtGenBase/EvtTensorParticle.cpp b/src/EvtGenBase/EvtTensorParticle.cpp
index 0752423..bdc84d5 100644
--- a/src/EvtGenBase/EvtTensorParticle.cpp
+++ b/src/EvtGenBase/EvtTensorParticle.cpp
@@ -1,181 +1,161 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtTensorParticle.cc
-//
-// Description: Class to describe spin 2 particles.
-//
-// Modification history:
-//
-// DJL/RYD September 25,1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtTensorParticle.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <iostream>
#include <math.h>
#include <stdlib.h>
void EvtTensorParticle::init( EvtId part_n, const EvtVector4R& p4 )
{
init( part_n, p4.get( 0 ), p4.get( 1 ), p4.get( 2 ), p4.get( 3 ) );
setLifetime();
}
void EvtTensorParticle::init( EvtId part_n, double e, double px, double py,
double pz )
{
_validP4 = true;
setp( e, px, py, pz );
setpart_num( part_n );
eps[0].setdiag( 0.0, -1.0 / sqrt( 6.0 ), -1.0 / sqrt( 6.0 ),
2.0 / sqrt( 6.0 ) );
eps[1].setdiag( 0.0, 1.0 / sqrt( 2.0 ), -1.0 / sqrt( 2.0 ), 0.0 );
eps[2].setdiag( 0.0, 0.0, 0.0, 0.0 );
eps[3].setdiag( 0.0, 0.0, 0.0, 0.0 );
eps[4].setdiag( 0.0, 0.0, 0.0, 0.0 );
eps[2].set( 1, 2, EvtComplex( 1.0 / sqrt( 2.0 ), 0.0 ) );
eps[2].set( 2, 1, EvtComplex( 1.0 / sqrt( 2.0 ), 0.0 ) );
eps[3].set( 1, 3, EvtComplex( 1.0 / sqrt( 2.0 ), 0.0 ) );
eps[3].set( 3, 1, EvtComplex( 1.0 / sqrt( 2.0 ), 0.0 ) );
eps[4].set( 2, 3, EvtComplex( 1.0 / sqrt( 2.0 ), 0.0 ) );
eps[4].set( 3, 2, EvtComplex( 1.0 / sqrt( 2.0 ), 0.0 ) );
setLifetime();
}
void EvtTensorParticle::init( EvtId part_n, const EvtVector4R& p4,
const EvtTensor4C& epsin1,
const EvtTensor4C& epsin2,
const EvtTensor4C& epsin3,
const EvtTensor4C& epsin4,
const EvtTensor4C& epsin5 )
{
_validP4 = true;
setp( p4 );
setpart_num( part_n );
eps[0] = epsin1;
eps[1] = epsin2;
eps[2] = epsin3;
eps[3] = epsin4;
eps[4] = epsin5;
setLifetime();
}
EvtTensor4C EvtTensorParticle::epsTensorParent( int i ) const
{
EvtTensor4C temp = eps[i];
temp.applyBoostTo( this->getP4() );
return temp;
} //epsParent
EvtTensor4C EvtTensorParticle::epsTensor( int i ) const
{
return eps[i];
} //eps
EvtSpinDensity EvtTensorParticle::rotateToHelicityBasis() const
{
static EvtVector4C eplus( 0.0, -1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
static EvtVector4C ezero( 0.0, 0.0, 0.0, 1.0 );
static EvtVector4C eminus( 0.0, 1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
static EvtTensor4C dPpp( EvtGenFunctions::directProd( eplus, eplus ) );
static EvtTensor4C dPp0( EvtGenFunctions::directProd( eplus, ezero ) );
static EvtTensor4C dP0p( EvtGenFunctions::directProd( ezero, eplus ) );
static EvtTensor4C dPpm( EvtGenFunctions::directProd( eplus, eminus ) );
static EvtTensor4C dP00( EvtGenFunctions::directProd( ezero, ezero ) );
static EvtTensor4C dPmp( EvtGenFunctions::directProd( eminus, eplus ) );
static EvtTensor4C dPmm( EvtGenFunctions::directProd( eminus, eminus ) );
static EvtTensor4C dPm0( EvtGenFunctions::directProd( eminus, ezero ) );
static EvtTensor4C dP0m( EvtGenFunctions::directProd( ezero, eminus ) );
static EvtTensor4C es0( conj( dPpp ) );
static EvtTensor4C es1(
conj( ( 1 / sqrt( 2.0 ) ) * dPp0 + ( 1 / sqrt( 2.0 ) ) * dP0p ) );
static EvtTensor4C es2( conj( ( 1 / sqrt( 6.0 ) ) * dPpm +
( 2 / sqrt( 6.0 ) ) * dP00 +
( 1 / sqrt( 6.0 ) ) * dPmp ) );
static EvtTensor4C es3(
conj( ( 1 / sqrt( 2.0 ) ) * dPm0 + ( 1 / sqrt( 2.0 ) ) * dP0m ) );
static EvtTensor4C es4( conj( dPmm ) );
EvtSpinDensity R;
R.setDim( 5 );
for ( int j = 0; j < 5; j++ ) {
R.set( 0, j, cont( es0, eps[j] ) );
R.set( 1, j, cont( es1, eps[j] ) );
R.set( 2, j, cont( es2, eps[j] ) );
R.set( 3, j, cont( es3, eps[j] ) );
R.set( 4, j, cont( es4, eps[j] ) );
}
return R;
}
EvtSpinDensity EvtTensorParticle::rotateToHelicityBasis( double alpha,
double beta,
double gamma ) const
{
EvtTensor4C es[5];
static EvtVector4C eplus( 0.0, -1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
static EvtVector4C ezero( 0.0, 0.0, 0.0, 1.0 );
static EvtVector4C eminus( 0.0, 1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
eplus.applyRotateEuler( alpha, beta, gamma );
ezero.applyRotateEuler( alpha, beta, gamma );
eminus.applyRotateEuler( alpha, beta, gamma );
for ( int i = 0; i < 5; i++ )
es[i].zero();
es[0] = EvtGenFunctions::directProd( eplus, eplus );
es[1] = ( 1 / sqrt( 2.0 ) ) * EvtGenFunctions::directProd( eplus, ezero ) +
( 1 / sqrt( 2.0 ) ) * EvtGenFunctions::directProd( ezero, eplus );
es[2] = ( 1 / sqrt( 6.0 ) ) * EvtGenFunctions::directProd( eplus, eminus ) +
( 2 / sqrt( 6.0 ) ) * EvtGenFunctions::directProd( ezero, ezero ) +
( 1 / sqrt( 6.0 ) ) * EvtGenFunctions::directProd( eminus, eplus );
es[3] = ( 1 / sqrt( 2.0 ) ) * EvtGenFunctions::directProd( eminus, ezero ) +
( 1 / sqrt( 2.0 ) ) * EvtGenFunctions::directProd( ezero, eminus );
es[4] = EvtGenFunctions::directProd( eminus, eminus );
for ( int i = 0; i < 5; i++ )
es[i] = conj( es[i] );
EvtSpinDensity R;
R.setDim( 5 );
for ( int i = 0; i < 5; i++ )
for ( int j = 0; j < 5; j++ )
R.set( i, j, cont( es[i], eps[j] ) );
return R;
}
diff --git a/src/EvtGenBase/EvtTwoBodyKine.cpp b/src/EvtGenBase/EvtTwoBodyKine.cpp
index c43efc1..305bd42 100644
--- a/src/EvtGenBase/EvtTwoBodyKine.cpp
+++ b/src/EvtGenBase/EvtTwoBodyKine.cpp
@@ -1,87 +1,79 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtTwoBodyKine.cpp,v 1.3 2009-03-16 15:37:54 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
+#include "EvtGenBase/EvtTwoBodyKine.hh"
+#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
-#include "EvtGenBase/EvtTwoBodyKine.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
using std::endl;
using std::ostream;
EvtTwoBodyKine::EvtTwoBodyKine() : _mA( 0. ), _mB( 0. ), _mAB( 0. )
{
}
EvtTwoBodyKine::EvtTwoBodyKine( double mA, double mB, double mAB ) :
_mA( mA ), _mB( mB ), _mAB( mAB )
{
if ( mAB < mA + mB ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< mAB << " < " << mA << " + " << mB << endl;
assert( 0 );
}
}
double EvtTwoBodyKine::m( Index i ) const
{
double ret = _mAB;
if ( A == i )
ret = _mA;
else if ( B == i )
ret = _mB;
return ret;
}
double EvtTwoBodyKine::p( Index i ) const
{
double p0 = 0.;
if ( i == AB ) {
double x = _mAB * _mAB - _mA * _mA - _mB * _mB;
double y = 2 * _mA * _mB;
p0 = sqrt( x * x - y * y ) / 2. / _mAB;
} else if ( i == A ) {
double x = _mA * _mA - _mAB * _mAB - _mB * _mB;
double y = 2 * _mAB * _mB;
p0 = sqrt( x * x - y * y ) / 2. / _mA;
} else {
double x = _mB * _mB - _mAB * _mAB - _mA * _mA;
double y = 2 * _mAB * _mA;
p0 = sqrt( x * x - y * y ) / 2. / _mB;
}
return p0;
}
double EvtTwoBodyKine::e( Index i, Index j ) const
{
double ret = m( i );
if ( i != j ) {
double pD = p( j );
ret = sqrt( ret * ret + pD * pD );
}
return ret;
}
void EvtTwoBodyKine::print( ostream& os ) const
{
os << " mA = " << _mA << endl;
os << " mB = " << _mB << endl;
os << "mAB = " << _mAB << endl;
}
ostream& operator<<( ostream& os, const EvtTwoBodyKine& p )
{
p.print( os );
return os;
}
diff --git a/src/EvtGenBase/EvtTwoBodyVertex.cpp b/src/EvtGenBase/EvtTwoBodyVertex.cpp
index d8ae47c..82e39e4 100644
--- a/src/EvtGenBase/EvtTwoBodyVertex.cpp
+++ b/src/EvtGenBase/EvtTwoBodyVertex.cpp
@@ -1,103 +1,95 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtTwoBodyVertex.cpp,v 1.3 2009-03-16 15:38:39 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
+#include "EvtGenBase/EvtTwoBodyVertex.hh"
#include "EvtGenBase/EvtMacros.hh"
-#include "EvtGenBase/EvtTwoBodyVertex.hh"
+#include "EvtGenBase/EvtPatches.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
using std::endl;
using std::ostream;
// Default ctor can sometimes be useful
EvtTwoBodyVertex::EvtTwoBodyVertex() : _LL( 0 ), _p0( 0 )
{
}
EvtTwoBodyVertex::EvtTwoBodyVertex( double mA, double mB, double mAB, int L ) :
_kine(), _LL( L ), _p0( 0 )
{
// Kinematics is initialized only if the decay is above threshold
if ( mAB > mA + mB ) {
_kine = EvtTwoBodyKine( mA, mB, mAB );
_p0 = _kine.p();
}
}
EvtTwoBodyVertex::EvtTwoBodyVertex( const EvtTwoBodyVertex& other ) :
_kine( other._kine ),
_LL( other._LL ),
_p0( other._p0 ),
_f( ( other._f ) ? new EvtBlattWeisskopf( *other._f ) : nullptr )
{
}
EvtTwoBodyVertex& EvtTwoBodyVertex::operator=( const EvtTwoBodyVertex& other )
{
_kine = other._kine;
_LL = other._LL;
_p0 = other._p0;
_f.reset( other._f ? new EvtBlattWeisskopf( *other._f ) : nullptr );
return *this;
}
void EvtTwoBodyVertex::set_f( double R )
{
_f = std::make_unique<EvtBlattWeisskopf>( _LL, R, _p0 );
}
double EvtTwoBodyVertex::widthFactor( EvtTwoBodyKine x ) const
{
assert( _p0 > 0. );
double p1 = x.p();
double ff = formFactor( x );
double factor = pow( p1 / _p0, 2 * _LL + 1 ) * mAB() / x.mAB() * ff * ff;
return factor;
}
double EvtTwoBodyVertex::phaseSpaceFactor( EvtTwoBodyKine x,
EvtTwoBodyKine::Index i ) const
{
double p1 = x.p( i );
double factor = pow( p1, _LL );
return factor;
}
double EvtTwoBodyVertex::formFactor( EvtTwoBodyKine x ) const
{
double ff = 1.;
if ( _f ) {
double p1 = x.p();
ff = ( *_f )( p1 );
}
return ff;
}
void EvtTwoBodyVertex::print( ostream& os ) const
{
os << " mA = " << mA() << endl;
os << " mB = " << mB() << endl;
os << "mAB = " << mAB() << endl;
os << " L = " << _LL << endl;
os << " p0 = " << _p0 << endl;
}
ostream& operator<<( ostream& os, const EvtTwoBodyVertex& v )
{
v.print( os );
return os;
}
diff --git a/src/EvtGenBase/EvtValError.cpp b/src/EvtGenBase/EvtValError.cpp
index 60fba3a..e48ab38 100644
--- a/src/EvtGenBase/EvtValError.cpp
+++ b/src/EvtGenBase/EvtValError.cpp
@@ -1,162 +1,154 @@
-#include "EvtGenBase/EvtPatches.hh"
-/*******************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenBase
- * File: $Id: EvtValError.cpp,v 1.3 2009-03-16 15:39:28 robbep Exp $
- * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
- *
- * Copyright (C) 2002 Caltech
- *******************************************************************************/
-
#include "EvtGenBase/EvtValError.hh"
+#include "EvtGenBase/EvtPatches.hh"
+
#include <assert.h>
#include <iostream>
#include <math.h>
using std::endl;
using std::ostream;
EvtValError::EvtValError() :
_valKnown( 0 ), _val( 0. ), _errKnown( 0 ), _err( 0. )
{
}
EvtValError::EvtValError( double val ) :
_valKnown( 1 ), _val( val ), _errKnown( 0 ), _err( 0. )
{
}
EvtValError::EvtValError( double val, double err ) :
_valKnown( 1 ), _val( val ), _errKnown( 1 ), _err( err )
{
}
EvtValError::EvtValError( const EvtValError& other ) :
_valKnown( other._valKnown ),
_val( other._val ),
_errKnown( other._errKnown ),
_err( other._err )
{
}
double EvtValError::prec() const
{
assert( _valKnown && _errKnown );
return ( _val != 0 ) ? _err / _val : 0;
}
void EvtValError::operator=( const EvtValError& other )
{
_valKnown = other._valKnown;
_val = other._val;
_errKnown = other._errKnown;
_err = other._err;
}
void EvtValError::operator*=( const EvtValError& other )
{
assert( _valKnown && other._valKnown );
// Relative errors add in quadrature
if ( _errKnown && other._errKnown )
_err = _val * other._val *
sqrt( prec() * prec() + other.prec() * other.prec() );
else
_errKnown = 0;
// Modify the value
_val *= other._val;
}
void EvtValError::operator/=( const EvtValError& other )
{
assert( _valKnown && other._valKnown && other._val != 0. );
// Relative errors add in quadrature
if ( _errKnown && other._errKnown )
_err = _val / other._val *
sqrt( prec() * prec() + other.prec() * other.prec() );
else
_errKnown = 0;
// Modify the value
_val /= other._val;
}
void EvtValError::print( ostream& os ) const
{
if ( _valKnown )
os << _val;
else
os << "Undef";
os << " +/- ";
if ( _errKnown )
os << _err;
else
os << "Undef";
os << endl;
}
void EvtValError::operator+=( const EvtValError& other )
{
assert( _valKnown );
assert( other._valKnown );
_val += other._val;
// add errors in quadrature
if ( _errKnown && other._errKnown ) {
_err = sqrt( _err * _err + other._err * other._err );
} else {
_errKnown = 0;
}
}
void EvtValError::operator*=( double c )
{
assert( _valKnown );
_val *= c;
if ( _errKnown )
_err *= c;
}
EvtValError operator*( const EvtValError& x1, const EvtValError& x2 )
{
EvtValError ret( x1 );
ret *= x2;
return ret;
}
EvtValError operator/( const EvtValError& x1, const EvtValError& x2 )
{
EvtValError ret( x1 );
ret /= x2;
return ret;
}
EvtValError operator+( const EvtValError& x1, const EvtValError& x2 )
{
EvtValError ret( x1 );
ret += x2;
return ret;
}
EvtValError operator*( const EvtValError& x, double c )
{
EvtValError ret( x );
ret *= c;
return ret;
}
EvtValError operator*( double c, const EvtValError& x )
{
EvtValError ret( x );
ret *= c;
return ret;
}
ostream& operator<<( ostream& os, const EvtValError& other )
{
other.print( os );
return os;
}
diff --git a/src/EvtGenBase/EvtVector3C.cpp b/src/EvtGenBase/EvtVector3C.cpp
index 2983256..6390d23 100644
--- a/src/EvtGenBase/EvtVector3C.cpp
+++ b/src/EvtGenBase/EvtVector3C.cpp
@@ -1,94 +1,74 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVector3C.cc
-//
-// Description: Complex 3 vectors.
-//
-// Modification history:
-//
-// RYD September 5, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtVector3C.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <iostream>
#include <math.h>
using std::ostream;
EvtVector3C::EvtVector3C()
{
v[0] = EvtComplex( 0.0 );
v[1] = EvtComplex( 0.0 );
v[2] = EvtComplex( 0.0 );
}
EvtVector3C::EvtVector3C( const EvtComplex& e1, const EvtComplex& e2,
const EvtComplex& e3 )
{
v[0] = e1;
v[1] = e2;
v[2] = e3;
}
EvtVector3C EvtVector3C::cross( const EvtVector3C& p2 )
{
//Calcs the cross product. Added by djl on July 27, 1995.
EvtVector3C temp;
temp.v[0] = v[1] * p2.v[2] - v[2] * p2.v[1];
temp.v[1] = v[2] * p2.v[0] - v[0] * p2.v[2];
temp.v[2] = v[0] * p2.v[1] - v[1] * p2.v[0];
return temp;
}
EvtVector3C rotateEuler( const EvtVector3C& v, double alpha, double beta,
double gamma )
{
EvtVector3C tmp( v );
tmp.applyRotateEuler( alpha, beta, gamma );
return tmp;
}
void EvtVector3C::applyRotateEuler( double phi, double theta, double ksi )
{
EvtComplex temp[3];
double sp, st, sk, cp, ct, ck;
sp = sin( phi );
st = sin( theta );
sk = sin( ksi );
cp = cos( phi );
ct = cos( theta );
ck = cos( ksi );
temp[0] = ( ck * ct * cp - sk * sp ) * v[0] +
( -sk * ct * cp - ck * sp ) * v[1] + st * cp * v[2];
temp[1] = ( ck * ct * sp + sk * cp ) * v[0] +
( -sk * ct * sp + ck * cp ) * v[1] + st * sp * v[2];
temp[2] = -ck * st * v[0] + sk * st * v[1] + ct * v[2];
v[0] = temp[0];
v[1] = temp[1];
v[2] = temp[2];
}
ostream& operator<<( ostream& s, const EvtVector3C& v )
{
s << "(" << v.v[0] << "," << v.v[1] << "," << v.v[2] << ")";
return s;
}
diff --git a/src/EvtGenBase/EvtVector3R.cpp b/src/EvtGenBase/EvtVector3R.cpp
index 1394b5d..3e8b389 100644
--- a/src/EvtGenBase/EvtVector3R.cpp
+++ b/src/EvtGenBase/EvtVector3R.cpp
@@ -1,110 +1,90 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVector3R.cc
-//
-// Description: Real implementation of 3-vectors
-//
-// Modification history:
-//
-// RYD September 5, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtVector3R.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <iostream>
#include <math.h>
using std::ostream;
EvtVector3R::EvtVector3R()
{
v[0] = v[1] = v[2] = 0.0;
}
EvtVector3R::EvtVector3R( double x, double y, double z )
{
v[0] = x;
v[1] = y;
v[2] = z;
}
EvtVector3R rotateEuler( const EvtVector3R& v, double alpha, double beta,
double gamma )
{
EvtVector3R tmp( v );
tmp.applyRotateEuler( alpha, beta, gamma );
return tmp;
}
void EvtVector3R::applyRotateEuler( double phi, double theta, double ksi )
{
double temp[3];
double sp, st, sk, cp, ct, ck;
sp = sin( phi );
st = sin( theta );
sk = sin( ksi );
cp = cos( phi );
ct = cos( theta );
ck = cos( ksi );
temp[0] = ( ck * ct * cp - sk * sp ) * v[0] +
( -sk * ct * cp - ck * sp ) * v[1] + st * cp * v[2];
temp[1] = ( ck * ct * sp + sk * cp ) * v[0] +
( -sk * ct * sp + ck * cp ) * v[1] + st * sp * v[2];
temp[2] = -ck * st * v[0] + sk * st * v[1] + ct * v[2];
v[0] = temp[0];
v[1] = temp[1];
v[2] = temp[2];
}
ostream& operator<<( ostream& s, const EvtVector3R& v )
{
s << "(" << v.v[0] << "," << v.v[1] << "," << v.v[2] << ")";
return s;
}
EvtVector3R cross( const EvtVector3R& p1, const EvtVector3R& p2 )
{
//Calcs the cross product. Added by djl on July 27, 1995.
//Modified for real vectros by ryd Aug 28-96
return EvtVector3R( p1.v[1] * p2.v[2] - p1.v[2] * p2.v[1],
p1.v[2] * p2.v[0] - p1.v[0] * p2.v[2],
p1.v[0] * p2.v[1] - p1.v[1] * p2.v[0] );
}
double EvtVector3R::d3mag() const
// returns the 3 momentum mag.
{
double temp;
temp = v[0] * v[0] + v[1] * v[1] + v[2] * v[2];
temp = sqrt( temp );
return temp;
} // r3mag
double EvtVector3R::dot( const EvtVector3R& p2 )
{
double temp;
temp = v[0] * p2.v[0];
temp += v[0] * p2.v[0];
temp += v[0] * p2.v[0];
return temp;
} //dot
diff --git a/src/EvtGenBase/EvtVector4C.cpp b/src/EvtGenBase/EvtVector4C.cpp
index bd7d989..ab6fd02 100644
--- a/src/EvtGenBase/EvtVector4C.cpp
+++ b/src/EvtGenBase/EvtVector4C.cpp
@@ -1,154 +1,134 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVector4C.cc
-//
-// Description: EvtComplex implemention of 4 - vectors
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
using std::ostream;
EvtVector4C::EvtVector4C()
{
v[0] = EvtComplex( 0.0 );
v[1] = EvtComplex( 0.0 );
v[2] = EvtComplex( 0.0 );
v[3] = EvtComplex( 0.0 );
}
EvtVector4C::EvtVector4C( const EvtComplex& e0, const EvtComplex& e1,
const EvtComplex& e2, const EvtComplex& e3 )
{
v[0] = e0;
v[1] = e1;
v[2] = e2;
v[3] = e3;
}
EvtVector4C rotateEuler( const EvtVector4C& rs, double alpha, double beta,
double gamma )
{
EvtVector4C tmp( rs );
tmp.applyRotateEuler( alpha, beta, gamma );
return tmp;
}
EvtVector4C boostTo( const EvtVector4C& rs, const EvtVector4R p4 )
{
EvtVector4C tmp( rs );
tmp.applyBoostTo( p4 );
return tmp;
}
EvtVector4C boostTo( const EvtVector4C& rs, const EvtVector3R boost )
{
EvtVector4C tmp( rs );
tmp.applyBoostTo( boost );
return tmp;
}
void EvtVector4C::applyBoostTo( const EvtVector4R& p4 )
{
double e = p4.get( 0 );
EvtVector3R boost( p4.get( 1 ) / e, p4.get( 2 ) / e, p4.get( 3 ) / e );
applyBoostTo( boost );
return;
}
void EvtVector4C::applyBoostTo( const EvtVector3R& boost )
{
double bx, by, bz, gamma, b2;
bx = boost.get( 0 );
by = boost.get( 1 );
bz = boost.get( 2 );
double bxx = bx * bx;
double byy = by * by;
double bzz = bz * bz;
b2 = bxx + byy + bzz;
if ( b2 == 0.0 ) {
return;
}
assert( b2 < 1.0 );
gamma = 1.0 / sqrt( 1 - b2 );
double gb2 = ( gamma - 1.0 ) / b2;
double gb2xy = gb2 * bx * by;
double gb2xz = gb2 * bx * bz;
double gb2yz = gb2 * by * bz;
double gbx = gamma * bx;
double gby = gamma * by;
double gbz = gamma * bz;
EvtComplex e2 = v[0];
EvtComplex px2 = v[1];
EvtComplex py2 = v[2];
EvtComplex pz2 = v[3];
v[0] = gamma * e2 + gbx * px2 + gby * py2 + gbz * pz2;
v[1] = gbx * e2 + gb2 * bxx * px2 + px2 + gb2xy * py2 + gb2xz * pz2;
v[2] = gby * e2 + gb2 * byy * py2 + py2 + gb2xy * px2 + gb2yz * pz2;
v[3] = gbz * e2 + gb2 * bzz * pz2 + pz2 + gb2yz * py2 + gb2xz * px2;
return;
}
void EvtVector4C::applyRotateEuler( double phi, double theta, double ksi )
{
double sp = sin( phi );
double st = sin( theta );
double sk = sin( ksi );
double cp = cos( phi );
double ct = cos( theta );
double ck = cos( ksi );
EvtComplex x = ( ck * ct * cp - sk * sp ) * v[1] +
( -sk * ct * cp - ck * sp ) * v[2] + st * cp * v[3];
EvtComplex y = ( ck * ct * sp + sk * cp ) * v[1] +
( -sk * ct * sp + ck * cp ) * v[2] + st * sp * v[3];
EvtComplex z = -ck * st * v[1] + sk * st * v[2] + ct * v[3];
v[1] = x;
v[2] = y;
v[3] = z;
}
ostream& operator<<( ostream& s, const EvtVector4C& v )
{
s << "(" << v.v[0] << "," << v.v[1] << "," << v.v[2] << "," << v.v[3] << ")";
return s;
}
diff --git a/src/EvtGenBase/EvtVector4R.cpp b/src/EvtGenBase/EvtVector4R.cpp
index 1b606ad..e34938a 100644
--- a/src/EvtGenBase/EvtVector4R.cpp
+++ b/src/EvtGenBase/EvtVector4R.cpp
@@ -1,247 +1,227 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVector4R.cc
-//
-// Description: Real implementation of 4-vectors
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector3R.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <cmath>
#include <iostream>
using std::ostream;
EvtVector4R::EvtVector4R()
{
v[0] = 0.0;
v[1] = 0.0;
v[2] = 0.0;
v[3] = 0.0;
}
EvtVector4R::EvtVector4R( double e, double p1, double p2, double p3 )
{
v[0] = e;
v[1] = p1;
v[2] = p2;
v[3] = p3;
}
double EvtVector4R::mass() const
{
double m2 = v[0] * v[0] - v[1] * v[1] - v[2] * v[2] - v[3] * v[3];
if ( m2 > 0.0 ) {
return sqrt( m2 );
} else {
return 0.0;
}
}
EvtVector4R rotateEuler( const EvtVector4R& rs, double alpha, double beta,
double gamma )
{
EvtVector4R tmp( rs );
tmp.applyRotateEuler( alpha, beta, gamma );
return tmp;
}
EvtVector4R boostTo( const EvtVector4R& rs, const EvtVector4R& p4, bool inverse )
{
EvtVector4R tmp( rs );
tmp.applyBoostTo( p4, inverse );
return tmp;
}
EvtVector4R boostTo( const EvtVector4R& rs, const EvtVector3R& boost,
bool inverse )
{
EvtVector4R tmp( rs );
tmp.applyBoostTo( boost, inverse );
return tmp;
}
void EvtVector4R::applyRotateEuler( double phi, double theta, double ksi )
{
double sp = sin( phi );
double st = sin( theta );
double sk = sin( ksi );
double cp = cos( phi );
double ct = cos( theta );
double ck = cos( ksi );
double x = ( ck * ct * cp - sk * sp ) * v[1] +
( -sk * ct * cp - ck * sp ) * v[2] + st * cp * v[3];
double y = ( ck * ct * sp + sk * cp ) * v[1] +
( -sk * ct * sp + ck * cp ) * v[2] + st * sp * v[3];
double z = -ck * st * v[1] + sk * st * v[2] + ct * v[3];
v[1] = x;
v[2] = y;
v[3] = z;
}
ostream& operator<<( ostream& s, const EvtVector4R& v )
{
s << "(" << v.v[0] << "," << v.v[1] << "," << v.v[2] << "," << v.v[3] << ")";
return s;
}
void EvtVector4R::applyBoostTo( const EvtVector4R& p4, bool inverse )
{
double e = p4.get( 0 );
EvtVector3R boost( p4.get( 1 ) / e, p4.get( 2 ) / e, p4.get( 3 ) / e );
applyBoostTo( boost, inverse );
return;
}
void EvtVector4R::applyBoostTo( const EvtVector3R& boost, bool inverse )
{
double bx, by, bz, gamma, b2;
bx = boost.get( 0 );
by = boost.get( 1 );
bz = boost.get( 2 );
double bxx = bx * bx;
double byy = by * by;
double bzz = bz * bz;
b2 = bxx + byy + bzz;
if ( b2 > 0.0 && b2 < 1.0 ) {
gamma = 1.0 / sqrt( 1.0 - b2 );
double gb2 = ( gamma - 1.0 ) / b2;
double gb2xy = gb2 * bx * by;
double gb2xz = gb2 * bx * bz;
double gb2yz = gb2 * by * bz;
double gbx = gamma * bx;
double gby = gamma * by;
double gbz = gamma * bz;
double e2 = v[0];
double px2 = v[1];
double py2 = v[2];
double pz2 = v[3];
if ( inverse ) {
v[0] = gamma * e2 - gbx * px2 - gby * py2 - gbz * pz2;
v[1] = -gbx * e2 + gb2 * bxx * px2 + px2 + gb2xy * py2 + gb2xz * pz2;
v[2] = -gby * e2 + gb2 * byy * py2 + py2 + gb2xy * px2 + gb2yz * pz2;
v[3] = -gbz * e2 + gb2 * bzz * pz2 + pz2 + gb2yz * py2 + gb2xz * px2;
} else {
v[0] = gamma * e2 + gbx * px2 + gby * py2 + gbz * pz2;
v[1] = gbx * e2 + gb2 * bxx * px2 + px2 + gb2xy * py2 + gb2xz * pz2;
v[2] = gby * e2 + gb2 * byy * py2 + py2 + gb2xy * px2 + gb2yz * pz2;
v[3] = gbz * e2 + gb2 * bzz * pz2 + pz2 + gb2yz * py2 + gb2xz * px2;
}
}
}
EvtVector4R EvtVector4R::cross( const EvtVector4R& p2 )
{
//Calcs the cross product. Added by djl on July 27, 1995.
//Modified for real vectros by ryd Aug 28-96
EvtVector4R temp;
temp.v[0] = 0.0;
temp.v[1] = v[2] * p2.v[3] - v[3] * p2.v[2];
temp.v[2] = v[3] * p2.v[1] - v[1] * p2.v[3];
temp.v[3] = v[1] * p2.v[2] - v[2] * p2.v[1];
return temp;
}
double EvtVector4R::d3mag() const
// returns the 3 momentum mag.
{
double temp;
temp = v[1] * v[1] + v[2] * v[2] + v[3] * v[3];
temp = sqrt( temp );
return temp;
} // r3mag
double EvtVector4R::dot( const EvtVector4R& p2 ) const
{
//Returns the dot product of the 3 momentum. Added by
//djl on July 27, 1995. for real!!!
double temp;
temp = v[1] * p2.v[1];
temp += v[2] * p2.v[2];
temp += v[3] * p2.v[3];
return temp;
} //dot
// Functions below added by AJB
// Calculate ( \vec{p1} cross \vec{p2} ) \cdot \vec{p3} in rest frame of object
double EvtVector4R::scalartripler3( const EvtVector4R& p1, const EvtVector4R& p2,
const EvtVector4R& p3 ) const
{
EvtVector4C lc = dual( EvtGenFunctions::directProd( *this, p1 ) ).cont2( p2 );
EvtVector4R l( real( lc.get( 0 ) ), real( lc.get( 1 ) ),
real( lc.get( 2 ) ), real( lc.get( 3 ) ) );
return -1.0 / mass() * ( l * p3 );
}
// Calculate the 3-d dot product of 4-vectors p1 and p2 in the rest frame of
// 4-vector p0
double EvtVector4R::dotr3( const EvtVector4R& p1, const EvtVector4R& p2 ) const
{
return 1 / mass2() * ( ( *this ) * p1 ) * ( ( *this ) * p2 ) - p1 * p2;
}
// Calculate the 3-d magnitude squared of 4-vector p1 in the rest frame of
// 4-vector p0
double EvtVector4R::mag2r3( const EvtVector4R& p1 ) const
{
return Square( ( *this ) * p1 ) / mass2() - p1.mass2();
}
// Calculate the 3-d magnitude 4-vector p1 in the rest frame of 4-vector p0.
double EvtVector4R::magr3( const EvtVector4R& p1 ) const
{
return sqrt( mag2r3( p1 ) );
}
diff --git a/src/EvtGenBase/EvtVectorParticle.cpp b/src/EvtGenBase/EvtVectorParticle.cpp
index 38ef207..8f22f2c 100644
--- a/src/EvtGenBase/EvtVectorParticle.cpp
+++ b/src/EvtGenBase/EvtVectorParticle.cpp
@@ -1,123 +1,103 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVectorParticle.cc
-//
-// Description: Class to describe spin 1 particles
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtVectorParticle.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <iostream>
#include <math.h>
#include <stdlib.h>
void EvtVectorParticle::init( EvtId part_n, double e, double px, double py,
double pz )
{
_validP4 = true;
setp( e, px, py, pz );
setpart_num( part_n );
_eps[0].set( 0.0, 1.0, 0.0, 0.0 );
_eps[1].set( 0.0, 0.0, 1.0, 0.0 );
_eps[2].set( 0.0, 0.0, 0.0, 1.0 );
setLifetime();
}
void EvtVectorParticle::init( EvtId part_n, const EvtVector4R& p4 )
{
_validP4 = true;
setp( p4 );
setpart_num( part_n );
_eps[0].set( 0.0, 1.0, 0.0, 0.0 );
_eps[1].set( 0.0, 0.0, 1.0, 0.0 );
_eps[2].set( 0.0, 0.0, 0.0, 1.0 );
setLifetime();
}
void EvtVectorParticle::init( EvtId part_n, const EvtVector4R& p4,
const EvtVector4C& epsin1,
const EvtVector4C& epsin2,
const EvtVector4C& epsin3 )
{
_validP4 = true;
setp( p4 );
setpart_num( part_n );
_eps[0] = epsin1;
_eps[1] = epsin2;
_eps[2] = epsin3;
setLifetime();
}
EvtSpinDensity EvtVectorParticle::rotateToHelicityBasis() const
{
static EvtVector4C eplus( 0.0, -1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
static EvtVector4C ezero( 0.0, 0.0, 0.0, 1.0 );
static EvtVector4C eminus( 0.0, 1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
static EvtVector4C eplusC( eplus.conj() );
static EvtVector4C ezeroC( ezero.conj() );
static EvtVector4C eminusC( eminus.conj() );
EvtSpinDensity R;
R.setDim( 3 );
for ( int i = 0; i < 3; i++ ) {
R.set( 0, i, (eplusC)*_eps[i] );
R.set( 1, i, (ezeroC)*_eps[i] );
R.set( 2, i, (eminusC)*_eps[i] );
}
return R;
}
EvtSpinDensity EvtVectorParticle::rotateToHelicityBasis( double alpha,
double beta,
double gamma ) const
{
EvtVector4C eplus( 0.0, -1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
EvtVector4C ezero( 0.0, 0.0, 0.0, 1.0 );
EvtVector4C eminus( 0.0, 1.0 / sqrt( 2.0 ),
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
eplus.applyRotateEuler( alpha, beta, gamma );
ezero.applyRotateEuler( alpha, beta, gamma );
eminus.applyRotateEuler( alpha, beta, gamma );
EvtSpinDensity R;
R.setDim( 3 );
for ( int i = 0; i < 3; i++ ) {
R.set( 0, i, ( eplus.conj() ) * _eps[i] );
R.set( 1, i, ( ezero.conj() ) * _eps[i] );
R.set( 2, i, ( eminus.conj() ) * _eps[i] );
}
return R;
}
diff --git a/src/EvtGenBase/EvtdFunction.cpp b/src/EvtGenBase/EvtdFunction.cpp
index 7b5bce0..964fcbb 100644
--- a/src/EvtGenBase/EvtdFunction.cpp
+++ b/src/EvtGenBase/EvtdFunction.cpp
@@ -1,61 +1,41 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtKine.cc
-//
-// Description: Evaluates the Wigner d-Functions.
-//
-// Modification history:
-//
-// RYD March 14, 1999 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtdFunction.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtdFunctionSingle.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
double EvtdFunction::d( int j, int m1, int m2, double theta )
{
int m1p = m1;
int m2p = m2;
int signp = 1;
//make |m2p|>|m1p|
if ( abs( m2p ) < abs( m1p ) ) {
int tmp = m1p;
m1p = m2p;
m2p = tmp;
if ( ( m1p - m2p ) % 4 != 0 )
signp = -signp;
}
//make m2p non-negative
if ( m2p < 0 ) {
m1p = -m1p;
m2p = -m2p;
if ( ( m1p - m2p ) % 4 != 0 )
signp = -signp;
}
EvtdFunctionSingle df;
df.init( j, m1p, m2p );
double d = df.d( j, m1p, m2p, theta ) * signp;
return d;
}
diff --git a/src/EvtGenBase/EvtdFunctionSingle.cpp b/src/EvtGenBase/EvtdFunctionSingle.cpp
index 2a2aa3f..c67309c 100644
--- a/src/EvtGenBase/EvtdFunctionSingle.cpp
+++ b/src/EvtGenBase/EvtdFunctionSingle.cpp
@@ -1,111 +1,90 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtdFunctionSingle.cc
-//
-// Description: Evaluates one Wigner d-Functions.
-//
-// Modification history:
-//
-// fkw February 2, 2001 changes to satisfy KCC
-// RYD August 10, 2000 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenBase/EvtdFunctionSingle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <assert.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
EvtdFunctionSingle::EvtdFunctionSingle()
{
_j = 0;
_m1 = 0;
_m2 = 0;
_coef = 0;
_kmin = 0;
_kmax = 0;
}
EvtdFunctionSingle::~EvtdFunctionSingle()
{
if ( _coef != 0 )
delete[] _coef;
}
void EvtdFunctionSingle::init( int j, int m1, int m2 )
{
assert( abs( m2 ) >= abs( m1 ) );
assert( m2 >= 0 );
_j = j;
_m1 = m1;
_m2 = m2;
_kmin = _m2 - _m1;
_kmax = _j - _m1;
assert( _kmin <= _kmax );
_coef = new double[( _kmax - _kmin ) / 2 + 1];
int k;
for ( k = _kmin; k <= _kmax; k += 2 ) {
int sign = 1;
if ( ( k - _m2 + _m1 ) % 4 != 0 )
sign = -sign;
double tmp = fact( ( _j + _m2 ) / 2 ) * fact( ( _j - _m2 ) / 2 ) *
fact( ( _j + _m1 ) / 2 ) * fact( ( _j - _m1 ) / 2 );
_coef[( k - _kmin ) / 2] =
sign * sqrt( tmp ) /
( fact( ( _j + _m2 - k ) / 2 ) * fact( k / 2 ) *
fact( ( _j - _m1 - k ) / 2 ) * fact( ( k - _m2 + _m1 ) / 2 ) );
}
}
double EvtdFunctionSingle::d( int j, int m1, int m2, double theta )
{
assert( j == _j );
_unused( j );
assert( m1 == _m1 );
assert( m2 == _m2 );
double c2 = cos( 0.5 * theta );
double s2 = sin( 0.5 * theta );
double d = 0.0;
int k;
for ( k = _kmin; k <= _kmax; k += 2 ) {
d += _coef[( k - _kmin ) / 2] *
pow( c2, ( 2 * _j - 2 * k + m2 - m1 ) / 2 ) *
pow( s2, ( 2 * k - m2 + m1 ) / 2 );
}
return d;
}
int EvtdFunctionSingle::fact( int n )
{
assert( n >= 0 );
int f = 1;
int k;
for ( k = 2; k <= n; k++ )
f *= k;
return f;
}
diff --git a/src/EvtGenExternal/EvtExternalGenFactory.cpp b/src/EvtGenExternal/EvtExternalGenFactory.cpp
index f7c5355..8e0114c 100644
--- a/src/EvtGenExternal/EvtExternalGenFactory.cpp
+++ b/src/EvtGenExternal/EvtExternalGenFactory.cpp
@@ -1,160 +1,139 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2011 University of Warwick, UK
-//
-// Module: EvtExternalGenFactory
-//
-// Description: A factory type method to create engines for external physics
-// generators like Pythia.
-//
-// Modification history:
-//
-// John Back April 2011 Module created
-//
-//------------------------------------------------------------------------------
-//
-
#include "EvtGenExternal/EvtExternalGenFactory.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#ifdef EVTGEN_PYTHIA
#include "EvtGenExternal/EvtPythiaEngine.hh"
#endif
#ifdef EVTGEN_PHOTOS
#include "EvtGenExternal/EvtPhotosEngine.hh"
#endif
#ifdef EVTGEN_TAUOLA
#include "EvtGenExternal/EvtTauolaEngine.hh"
#endif
#include <iostream>
using std::endl;
EvtExternalGenFactory::EvtExternalGenFactory()
{
_extGenMap.clear();
}
EvtExternalGenFactory::~EvtExternalGenFactory()
{
ExtGenMap::iterator iter;
for ( iter = _extGenMap.begin(); iter != _extGenMap.end(); ++iter ) {
EvtAbsExternalGen* theGenerator = iter->second;
delete theGenerator;
}
_extGenMap.clear();
}
EvtExternalGenFactory* EvtExternalGenFactory::getInstance()
{
static EvtExternalGenFactory* theFactory = 0;
if ( theFactory == 0 ) {
theFactory = new EvtExternalGenFactory();
}
return theFactory;
}
void EvtExternalGenFactory::definePythiaGenerator( std::string xmlDir,
bool convertPhysCodes,
bool useEvtGenRandom )
{
// Only define the generator if we have the external ifdef variable set
#ifdef EVTGEN_PYTHIA
int genId = EvtExternalGenFactory::PythiaGenId;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Defining EvtPythiaEngine: data tables defined in " << xmlDir << endl;
if ( convertPhysCodes == true ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Pythia 6 codes in decay files will be converted to Pythia 8 codes"
<< endl;
} else {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Pythia 8 codes need to be used in decay files" << endl;
}
if ( useEvtGenRandom == true ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Using EvtGen random engine for Pythia 8 as well" << endl;
}
EvtAbsExternalGen* pythiaGenerator =
new EvtPythiaEngine( xmlDir, convertPhysCodes, useEvtGenRandom );
_extGenMap[genId] = pythiaGenerator;
#endif
}
void EvtExternalGenFactory::definePhotosGenerator( std::string photonType,
bool useEvtGenRandom )
{
#ifdef EVTGEN_PHOTOS
int genId = EvtExternalGenFactory::PhotosGenId;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Defining EvtPhotosEngine using photonType = " << photonType << endl;
EvtAbsExternalGen* photosGenerator = new EvtPhotosEngine( photonType,
useEvtGenRandom );
_extGenMap[genId] = photosGenerator;
#endif
}
void EvtExternalGenFactory::defineTauolaGenerator( bool useEvtGenRandom )
{
#ifdef EVTGEN_TAUOLA
int genId = EvtExternalGenFactory::TauolaGenId;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Defining EvtTauolaEngine." << endl;
EvtAbsExternalGen* tauolaGenerator = new EvtTauolaEngine( useEvtGenRandom );
_extGenMap[genId] = tauolaGenerator;
#endif
}
EvtAbsExternalGen* EvtExternalGenFactory::getGenerator( int genId )
{
EvtAbsExternalGen* theGenerator( 0 );
ExtGenMap::iterator iter;
if ( ( iter = _extGenMap.find( genId ) ) != _extGenMap.end() ) {
// Retrieve the external generator engine
theGenerator = iter->second;
} else {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "EvtAbsExternalGen::getGenerator: could not find generator for genId = "
<< genId << endl;
}
return theGenerator;
}
void EvtExternalGenFactory::initialiseAllGenerators()
{
ExtGenMap::iterator iter;
for ( iter = _extGenMap.begin(); iter != _extGenMap.end(); ++iter ) {
EvtAbsExternalGen* theGenerator = iter->second;
if ( theGenerator != 0 ) {
theGenerator->initialise();
}
}
}
diff --git a/src/EvtGenExternal/EvtExternalGenList.cpp b/src/EvtGenExternal/EvtExternalGenList.cpp
index a645de3..48514e3 100644
--- a/src/EvtGenExternal/EvtExternalGenList.cpp
+++ b/src/EvtGenExternal/EvtExternalGenList.cpp
@@ -1,79 +1,58 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2012 University of Warwick, UK
-//
-// Module: EvtExternalGenFactory
-//
-// Description: A factory type method to create engines for external physics
-// generators like Pythia.
-//
-// Modification history:
-//
-// John Back Sept 2012 Module created
-//
-//------------------------------------------------------------------------------
-//
-
#include "EvtGenExternal/EvtExternalGenList.hh"
#include "EvtGenExternal/EvtExternalGenFactory.hh"
#include "EvtGenExternal/EvtPHOTOS.hh"
#include "EvtGenExternal/EvtPythia.hh"
#include "EvtGenExternal/EvtTauola.hh"
EvtExternalGenList::EvtExternalGenList( bool convertPythiaCodes,
std::string pythiaXmlDir,
std::string photonType,
bool useEvtGenRandom )
{
// Instantiate the external generator factory
EvtExternalGenFactory* extFactory = EvtExternalGenFactory::getInstance();
// Define the external generator "engines" here
extFactory->definePhotosGenerator( photonType, useEvtGenRandom );
if ( pythiaXmlDir.size() < 1 ) {
// If we have no string defined, check the value of the
// PYTHIA8DATA environment variable which should be set to the
// xmldoc Pythia directory
char* pythiaDataDir = getenv( "PYTHIA8DATA" );
if ( pythiaDataDir != 0 ) {
pythiaXmlDir = pythiaDataDir;
}
}
extFactory->definePythiaGenerator( pythiaXmlDir, convertPythiaCodes,
useEvtGenRandom );
extFactory->defineTauolaGenerator( useEvtGenRandom );
}
EvtExternalGenList::~EvtExternalGenList()
{
}
EvtAbsRadCorr* EvtExternalGenList::getPhotosModel()
{
// Define the Photos model, which uses the EvtPhotosEngine class.
EvtPHOTOS* photosModel = new EvtPHOTOS();
return photosModel;
}
std::list<EvtDecayBase*> EvtExternalGenList::getListOfModels()
{
// Create the Pythia and Tauola models, which use their own engine classes.
EvtPythia* pythiaModel = new EvtPythia();
EvtTauola* tauolaModel = new EvtTauola();
std::list<EvtDecayBase*> extraModels;
extraModels.push_back( pythiaModel );
extraModels.push_back( tauolaModel );
// Return the list of models
return extraModels;
}
diff --git a/src/EvtGenExternal/EvtPHOTOS.cpp b/src/EvtGenExternal/EvtPHOTOS.cpp
index 24ebfc8..d250855 100644
--- a/src/EvtGenExternal/EvtPHOTOS.cpp
+++ b/src/EvtGenExternal/EvtPHOTOS.cpp
@@ -1,40 +1,17 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtPHOTOS.cc
-//
-// Description: This routine takes the particle *p and applies
-// the PHOTOS package to generate final state radiation
-// on the produced mesons.
-//
-// Modification history:
-//
-// RYD October 1, 1997 Module created
-// JJB May 2011 Modified to use new PHOTOS generator
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenExternal/EvtPHOTOS.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenExternal/EvtExternalGenFactory.hh"
void EvtPHOTOS::doRadCorr( EvtParticle* p )
{
if ( !_photosEngine ) {
_photosEngine = EvtExternalGenFactory::getInstance()->getGenerator(
EvtExternalGenFactory::PhotosGenId );
}
if ( _photosEngine ) {
_photosEngine->doDecay( p );
}
}
diff --git a/src/EvtGenExternal/EvtPhotosEngine.cpp b/src/EvtGenExternal/EvtPhotosEngine.cpp
index 7b13de5..38feaa2 100644
--- a/src/EvtGenExternal/EvtPhotosEngine.cpp
+++ b/src/EvtGenExternal/EvtPhotosEngine.cpp
@@ -1,305 +1,287 @@
#ifdef EVTGEN_PHOTOS
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2011 University of Warwick, UK
-//
-// Module: EvtPhotosEngine
-//
-// Description: Interface to the PHOTOS external generator
-//
-// Modification history:
-//
-// John Back May 2011 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenExternal/EvtPhotosEngine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPhotonParticle.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <iostream>
#include <sstream>
#include <vector>
using std::endl;
EvtPhotosEngine::EvtPhotosEngine( std::string photonType, bool useEvtGenRandom )
{
_photonType = photonType;
_gammaId = EvtId( -1, -1 );
_gammaPDG = 22; // default photon pdg integer
_mPhoton = 0.0;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Setting up PHOTOS." << endl;
if ( useEvtGenRandom == true ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Using EvtGen random number engine also for Photos++" << endl;
Photospp::Photos::setRandomGenerator( EvtRandom::Flat );
}
Photospp::Photos::initialize();
// Increase the maximum possible value of the interference weight
Photospp::Photos::maxWtInterference(
64.0 ); // 2^n, where n = number of charges (+,-)
Photospp::Photos::setInterference( true );
Photospp::Photos::setExponentiation( true ); // Sets the infrared cutoff at 1e-7
// Reset the minimum photon energy, if required, in units of half of the decaying particle mass.
// This must be done after exponentiation! Keep the cut at 1e-7, i.e. 0.1 keV at the 1 GeV scale,
// which is appropriate for B decays
Photospp::Photos::setInfraredCutOff( 1.0e-7 );
_initialised = false;
}
void EvtPhotosEngine::initialise()
{
if ( _initialised == false ) {
_gammaId = EvtPDL::getId( _photonType );
if ( _gammaId == EvtId( -1, -1 ) ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Error in EvtPhotosEngine. Do not recognise the photon type "
<< _photonType << ". Setting this to \"gamma\". " << endl;
_gammaId = EvtPDL::getId( "gamma" );
}
_gammaPDG = EvtPDL::getStdHep( _gammaId );
_mPhoton = EvtPDL::getMeanMass( _gammaId );
_initialised = true;
}
}
bool EvtPhotosEngine::doDecay( EvtParticle* theMother )
{
if ( _initialised == false ) {
this->initialise();
}
if ( theMother == 0 ) {
return false;
}
// Create a dummy HepMC GenEvent containing a single vertex, with the mother
// assigned as the incoming particle and its daughters as outgoing particles.
// We then pass this event to Photos for processing.
// It will return a modified version of the event, updating the momentum of
// the original particles and will contain any new photon particles.
// We add these extra photons to the mother particle daughter list.
// Skip running Photos if the particle has no daughters, since we can't add FSR.
// Also skip Photos if the particle has too many daughters (>= 10) to avoid a problem
// with a hard coded upper limit in the PHOENE subroutine.
int nDaug( theMother->getNDaug() );
if ( nDaug == 0 || nDaug >= 10 ) {
return false;
}
// Create the dummy event.
auto theEvent = std::make_unique<GenEvent>( Units::GEV, Units::MM );
// Create the decay "vertex".
GenVertexPtr theVertex = newGenVertexPtr();
theEvent->add_vertex( theVertex );
// Add the mother particle as the incoming particle to the vertex.
GenParticlePtr hepMCMother = this->createGenParticle( theMother, true );
theVertex->add_particle_in( hepMCMother );
// Find all daughter particles and assign them as outgoing particles to the vertex.
// Keep track of the number of photons already in the decay (e.g. we may have B -> K* gamma)
int iDaug( 0 ), nGamma( 0 );
for ( iDaug = 0; iDaug < nDaug; iDaug++ ) {
EvtParticle* theDaughter = theMother->getDaug( iDaug );
GenParticlePtr hepMCDaughter = this->createGenParticle( theDaughter,
false );
theVertex->add_particle_out( hepMCDaughter );
if ( theDaughter ) {
int daugId = theDaughter->getPDGId();
if ( daugId == _gammaPDG ) {
nGamma++;
}
}
}
// Now pass the event to Photos for processing
// Create a Photos event object
#ifdef EVTGEN_HEPMC3
Photospp::PhotosHepMC3Event photosEvent( theEvent.get() );
#else
Photospp::PhotosHepMCEvent photosEvent( theEvent.get() );
#endif
// Run the Photos algorithm
photosEvent.process();
// Find the number of (outgoing) photons in the event
int nPhotons = this->getNumberOfPhotons( theVertex );
// See if Photos has created additional photons. If not, do nothing extra
int nDiffPhotons = nPhotons - nGamma;
int iLoop( 0 );
if ( nDiffPhotons > 0 ) {
// We have extra particles from Photos; these would have been appended
// to the outgoing particle list
// Get the iterator of outgoing particles for this vertex
#ifdef EVTGEN_HEPMC3
for ( auto outParticle : theVertex->particles_out() ) {
#else
HepMC::GenVertex::particles_out_const_iterator outIter;
for ( outIter = theVertex->particles_out_const_begin();
outIter != theVertex->particles_out_const_end(); ++outIter ) {
// Get the next HepMC GenParticle
HepMC::GenParticle* outParticle = *outIter;
#endif
// Get the three-momentum Photos result for this particle, and the PDG id
double px( 0.0 ), py( 0.0 ), pz( 0.0 );
int pdgId( 0 );
if ( outParticle != 0 ) {
FourVector HepMCP4 = outParticle->momentum();
px = HepMCP4.px();
py = HepMCP4.py();
pz = HepMCP4.pz();
pdgId = outParticle->pdg_id();
}
// Create an empty 4-momentum vector for the new/modified daughters
EvtVector4R newP4;
if ( iLoop < nDaug ) {
// Original daughters
EvtParticle* daugParticle = theMother->getDaug( iLoop );
if ( daugParticle != 0 ) {
// Keep the original particle mass, but set the three-momentum
// according to what Photos has modified. However, this will
// violate energy conservation (from what Photos has provided).
double mass = daugParticle->mass();
double energy = sqrt( mass * mass + px * px + py * py +
pz * pz );
newP4.set( energy, px, py, pz );
// Set the new four-momentum (FSR applied)
daugParticle->setP4WithFSR( newP4 );
}
} else if ( pdgId == _gammaPDG ) {
// Extra photon particle. Setup the four-momentum object
double energy = sqrt( _mPhoton * _mPhoton + px * px + py * py +
pz * pz );
newP4.set( energy, px, py, pz );
// Create a new photon particle and add it to the list of daughters
EvtPhotonParticle* gamma = new EvtPhotonParticle();
gamma->init( _gammaId, newP4 );
// Set the pre-FSR photon momentum to zero
gamma->setFSRP4toZero();
// Let the mother know about this new photon
gamma->addDaug( theMother );
// Set its particle attribute to specify it is a FSR photon
gamma->setAttribute( "FSR", 1 ); // it is a FSR photon
gamma->setAttribute( "ISR", 0 ); // it is not an ISR photon
}
// Increment the loop counter for detecting additional photon particles
iLoop++;
}
}
// Cleanup
theEvent->clear();
return true;
}
GenParticlePtr EvtPhotosEngine::createGenParticle( EvtParticle* theParticle,
bool incoming )
{
// Method to create an HepMC::GenParticle version of the given EvtParticle.
if ( theParticle == 0 ) {
return 0;
}
// Get the 4-momentum (E, px, py, pz) for the EvtParticle
EvtVector4R p4( 0.0, 0.0, 0.0, 0.0 );
if ( incoming == true ) {
p4 = theParticle->getP4Restframe();
} else {
p4 = theParticle->getP4();
}
// Convert this to the HepMC 4-momentum
double E = p4.get( 0 );
double px = p4.get( 1 );
double py = p4.get( 2 );
double pz = p4.get( 3 );
FourVector hepMC_p4( px, py, pz, E );
int PDGInt = EvtPDL::getStdHep( theParticle->getId() );
// Set the status flag for the particle. This is required, otherwise Photos++
// will crash from out-of-bounds array index problems.
int status = Photospp::PhotosParticle::HISTORY;
if ( incoming == false ) {
status = Photospp::PhotosParticle::STABLE;
}
GenParticlePtr genParticle = newGenParticlePtr( hepMC_p4, PDGInt, status );
return genParticle;
}
int EvtPhotosEngine::getNumberOfPhotons( const GenVertexPtr theVertex ) const
{
// Find the number of photons from the outgoing particle list
if ( !theVertex ) {
return 0;
}
int nPhotons( 0 );
// Get the iterator of outgoing particles for this vertex
#ifdef EVTGEN_HEPMC3
for ( auto outParticle : theVertex->particles_out() ) {
#else
HepMC::GenVertex::particles_out_const_iterator outIter;
for ( outIter = theVertex->particles_out_const_begin();
outIter != theVertex->particles_out_const_end(); ++outIter ) {
// Get the next HepMC GenParticle
HepMC::GenParticle* outParticle = *outIter;
#endif
// Get the PDG id
int pdgId( 0 );
if ( outParticle != 0 ) {
pdgId = outParticle->pdg_id();
}
// Keep track of how many photons there are
if ( pdgId == _gammaPDG ) {
nPhotons++;
}
}
return nPhotons;
}
#endif
diff --git a/src/EvtGenExternal/EvtPythia.cpp b/src/EvtGenExternal/EvtPythia.cpp
index 4ca6b5a..12524cf 100644
--- a/src/EvtGenExternal/EvtPythia.cpp
+++ b/src/EvtGenExternal/EvtPythia.cpp
@@ -1,153 +1,132 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-// 2011 University of Warwick, UK
-// Module: EvtPythia.cc
-//
-// Description: Routine to decay a particle according th phase space
-//
-// Modification history:
-//
-// RYD January 8, 1997 Module created
-// JJB April 2011 Modified to use new Pythia8 interface
-//
-//------------------------------------------------------------------------
-
#include "EvtGenExternal/EvtPythia.hh"
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtSpinDensity.hh"
#include "EvtGenModels/EvtAbsExternalGen.hh"
#include "EvtGenExternal/EvtExternalGenFactory.hh"
#include <cmath>
#include <iostream>
EvtPythia::EvtPythia()
{
// Set the Pythia engine to a null pointer at first.
// When we do the decay, we retrieve the pointer to the Pythia engine
// and use that for all decays. All clones will use the same Pythia engine.
_pythiaEngine = 0;
}
EvtPythia::~EvtPythia()
{
_commandList.clear();
}
std::string EvtPythia::getName()
{
return "PYTHIA";
}
EvtDecayBase* EvtPythia::clone()
{
return new EvtPythia();
}
void EvtPythia::init()
{
// Do not check for any arguments. The PythiaEngine will check
// to see if there is an integer specifying the decay physics,
// otherwise it just uses phase-space.
}
void EvtPythia::initProbMax()
{
noProbMax();
}
void EvtPythia::decay( EvtParticle* p )
{
// We have to initialise the Pythia engine after the decay.dec files have been read in,
// since we will be modifying Pythia data tables, and that is only possible once we have
// defined all Pythia-type decays we want to use.
// We check to see if the engine has been created before doing the decay.
// This should only create the full Pythia engine once, and all clones will point to the same engine.
if ( !_pythiaEngine ) {
_pythiaEngine = EvtExternalGenFactory::getInstance()->getGenerator(
EvtExternalGenFactory::PythiaGenId );
}
if ( _pythiaEngine ) {
_pythiaEngine->doDecay( p );
}
this->fixPolarisations( p );
}
void EvtPythia::fixPolarisations( EvtParticle* p )
{
// Special case to handle the J/psi polarisation
if ( !p ) {
return;
}
int nDaug = p->getNDaug();
int i( 0 );
static EvtId Jpsi = EvtPDL::getId( "J/psi" );
for ( i = 0; i < nDaug; i++ ) {
EvtParticle* theDaug = p->getDaug( i );
if ( theDaug ) {
if ( theDaug->getId() == Jpsi ) {
EvtSpinDensity rho;
rho.setDim( 3 );
rho.set( 0, 0, 0.5 );
rho.set( 0, 1, 0.0 );
rho.set( 0, 2, 0.0 );
rho.set( 1, 0, 0.0 );
rho.set( 1, 1, 1.0 );
rho.set( 1, 2, 0.0 );
rho.set( 2, 0, 0.0 );
rho.set( 2, 1, 0.0 );
rho.set( 2, 2, 0.5 );
EvtVector4R p4Psi = theDaug->getP4();
double alpha = atan2( p4Psi.get( 2 ), p4Psi.get( 1 ) );
double beta = acos( p4Psi.get( 3 ) / p4Psi.d3mag() );
theDaug->setSpinDensityForwardHelicityBasis( rho, alpha, beta,
0.0 );
setDaughterSpinDensity( i );
}
}
}
}
std::string EvtPythia::commandName()
{
// Allow backward compatibility for decay.dec files
// having JetSetPar parameters. They are obsolete for Pythia 8,
// since the JetSet-type array variables do not exist.
// Need to think about including user defined parameters in
// EvtPythiaEngine::updatePhysicsParameters().
return std::string( "JetSetPar" );
}
void EvtPythia::command( std::string cmd )
{
// Locally store commands in a vector
_commandList.push_back( cmd );
}
diff --git a/src/EvtGenExternal/EvtPythia6CommandConverter.cpp b/src/EvtGenExternal/EvtPythia6CommandConverter.cpp
index a6eb1b5..16a1dff 100644
--- a/src/EvtGenExternal/EvtPythia6CommandConverter.cpp
+++ b/src/EvtGenExternal/EvtPythia6CommandConverter.cpp
@@ -1,269 +1,249 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2012 University of Warwick, UK
-//
-// Module: EvtPythia6CommandConverter
-//
-// Description: Function to replace Pythia 6 commands with the
-// corresponding Pythia 8 commands.
-//
-// Modification history:
-//
-// Daniel Craik March 2012 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenExternal/EvtPythia6CommandConverter.hh"
#include "EvtGenBase/EvtReport.hh"
#include <iostream>
#include <stdlib.h>
using std::endl;
std::vector<std::string> convertPythia6Command( Command command )
{
std::string module = command["MODULE"];
std::string param = command["PARAM"];
std::string value = command["VALUE"];
std::vector<std::string> commandStrings;
if ( module == "MSTJ" ) {
switch ( atoi( param.c_str() ) ) {
//1,2,3
case 11:
switch ( atoi( value.c_str() ) ) {
case 3:
commandStrings.push_back( "StringZ:usePetersonC = on" );
commandStrings.push_back( "StringZ:usePetersonB = on" );
commandStrings.push_back( "StringZ:usePetersonH = on" );
break;
case 1:
case 4:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Pythia6 parameter: MSTJ(11)=" << value
<< " is only implicitly supported." << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Please use MSTJ(11)=5 and ensure PARJ(46) and PARJ(47) are both set appropriately."
<< endl;
::abort();
case 5:
commandStrings.push_back( "StringZ:usePetersonC = off" );
commandStrings.push_back( "StringZ:usePetersonB = off" );
commandStrings.push_back( "StringZ:usePetersonH = off" );
break;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Pythia6 parameter: MSTJ(11)=" << value
<< " is not currently supported." << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Please use MSTJ(11)=3 or MSTJ(11)=5." << endl;
::abort();
}
break;
case 12:
switch ( atoi( value.c_str() ) ) {
case 2:
commandStrings.push_back(
"StringFlav:suppressLeadingB = off" );
break;
case 3:
commandStrings.push_back(
"StringFlav:suppressLeadingB = on" );
break;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Pythia6 parameter: MSTJ(12)=" << value
<< " is not currently supported." << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Please use MSTJ(12)=2 or MSTJ(12)=3." << endl;
::abort();
}
break;
//13-19,21-24
case 26:
switch ( atoi( value.c_str() ) ) {
case 0:
commandStrings.push_back( "ParticleDecays:mixB = off" );
break;
case 1:
case 2:
commandStrings.push_back( "ParticleDecays:mixB = on" );
break;
}
break;
//28,38-50
//51 Inclusion of BE effects - TODO
case 52:
switch ( atoi( value.c_str() ) ) {
case 9:
commandStrings.push_back( "BoseEinstein:Eta = on" );
[[fallthrough]];
case 7:
commandStrings.push_back( "BoseEinstein:Kaon = on" );
[[fallthrough]];
case 3:
commandStrings.push_back( "BoseEinstein:Pion = on" );
break;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Pythia6 parameter: MSTJ(52)=" << value
<< " is not allowed." << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Please select 3,7 or 9." << endl;
::abort();
}
break;
//53-57,91-93,101-121
default:
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "Pythia6 parameter: " << module << "(" << param
<< ") is not currently supported and will be ignored."
<< endl;
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "A similar Pythia8 parameter may be available." << endl;
}
} else if ( module == "PARJ" ) {
switch ( atoi( param.c_str() ) ) {
case 1:
commandStrings.push_back( "StringFlav:probQQtoQ = " + value );
break;
case 2:
commandStrings.push_back( "StringFlav:probStoUD = " + value );
break;
case 3:
commandStrings.push_back( "StringFlav:probSQtoQQ = " + value );
break;
case 4:
commandStrings.push_back( "StringFlav:probQQ1toQQ0 = " + value );
break;
case 5:
commandStrings.push_back( "StringFlav:popcornRate = " + value );
break;
case 6:
commandStrings.push_back( "StringFlav:popcornSpair = " + value );
break;
case 7:
commandStrings.push_back( "StringFlav:popcornSmeson = " + value );
break;
//8-10 Advanced popcorn model - can't find these in Pythia8 (unsupported?)
case 11:
commandStrings.push_back( "StringFlav:mesonUDvector = " + value );
break;
case 12:
commandStrings.push_back( "StringFlav:mesonSvector = " + value );
break;
case 13:
commandStrings.push_back( "StringFlav:mesonCvector = " + value );
commandStrings.push_back( "StringFlav:mesonBvector = " + value );
break;
case 14:
commandStrings.push_back( "StringFlav:mesonUDL1S0J1 = " + value );
commandStrings.push_back( "StringFlav:mesonSL1S0J1 = " + value );
commandStrings.push_back( "StringFlav:mesonCL1S0J1 = " + value );
commandStrings.push_back( "StringFlav:mesonBL1S0J1 = " + value );
break;
case 15:
commandStrings.push_back( "StringFlav:mesonUDL1S1J0 = " + value );
commandStrings.push_back( "StringFlav:mesonSL1S1J0 = " + value );
commandStrings.push_back( "StringFlav:mesonCL1S1J0 = " + value );
commandStrings.push_back( "StringFlav:mesonBL1S1J0 = " + value );
break;
case 16:
commandStrings.push_back( "StringFlav:mesonUDL1S1J1 = " + value );
commandStrings.push_back( "StringFlav:mesonSL1S1J1 = " + value );
commandStrings.push_back( "StringFlav:mesonCL1S1J1 = " + value );
commandStrings.push_back( "StringFlav:mesonBL1S1J1 = " + value );
break;
case 17:
commandStrings.push_back( "StringFlav:mesonUDL1S1J2 = " + value );
commandStrings.push_back( "StringFlav:mesonSL1S1J2 = " + value );
commandStrings.push_back( "StringFlav:mesonCL1S1J2 = " + value );
commandStrings.push_back( "StringFlav:mesonBL1S1J2 = " + value );
break;
case 18:
commandStrings.push_back( "StringFlav:decupletSup = " + value );
break;
case 19:
commandStrings.push_back( "StringFlav:lightLeadingBSup = " +
value );
commandStrings.push_back( "StringFlav:heavyLeadingBSup = " +
value );
break;
//21-24 Gaussian PT distributions for primary hadrons - can't find these in Pythia8
case 25:
commandStrings.push_back( "StringFlav:etaSup = " + value );
break;
case 26:
commandStrings.push_back( "StringFlav:etaPrimeSup = " + value );
break;
//31,32
case 33:
commandStrings.push_back( "StringFragmentation:stopMass = " +
value );
break;
//34 Stop mass for MSTJ(11)=2 - can't find MSTJ(11)=2 analogue in Pythia 8 so leaving this out too
//36
case 37:
commandStrings.push_back( "StringFragmentation:stopSmear = " +
value );
break;
//39,40
case 41:
commandStrings.push_back( "StringZ:aLund = " + value );
break;
case 42:
commandStrings.push_back( "StringZ:bLund = " + value );
break;
//43,44
case 45:
commandStrings.push_back( "StringZ:aExtraDiquark = " + value );
break;
case 46:
commandStrings.push_back( "StringZ:rFactC = " + value );
break;
case 47:
commandStrings.push_back( "StringZ:rFactB = " + value );
break;
//48,49,50,51-55,59,61-63,64,65,66,71,72,73,74
case 76:
commandStrings.push_back( "ParticleDecays:xBdMix = " + value );
break;
case 77:
commandStrings.push_back( "ParticleDecays:xBsMix = " + value );
break;
//80-90 Time-like parton showers - can't find these in Pythia8
case 91:
commandStrings.push_back( "BoseEinstein:widthSep = " + value );
break;
case 92:
commandStrings.push_back( "BoseEinstein:lambda = " + value );
break;
case 93:
commandStrings.push_back( "BoseEinstein:QRef = " + value );
break;
//94-96 Further BE parameters - can't find these in Pythia8
//121-171 parameters for ee event generation - can't find these in Pythia8
//180-195 Various coupling constants & parameters related to couplings - can't find these in Pythia8
default:
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "Pythia6 parameter: " << module << "(" << param
<< ") is not currently supported and will be ignored."
<< endl;
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "A similar Pythia8 parameter may be available." << endl;
}
} else {
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "Pythia6 parameter: " << module << "(" << param
<< ") is not currently supported and will be ignored." << endl;
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "A similar Pythia8 parameter may be available." << endl;
}
return commandStrings;
}
diff --git a/src/EvtGenExternal/EvtPythiaEngine.cpp b/src/EvtGenExternal/EvtPythiaEngine.cpp
index 63ea002..cfbc497 100644
--- a/src/EvtGenExternal/EvtPythiaEngine.cpp
+++ b/src/EvtGenExternal/EvtPythiaEngine.cpp
@@ -1,845 +1,827 @@
#ifdef EVTGEN_PYTHIA
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2011 University of Warwick, UK
-//
-// Module: EvtPythiaEngine
-//
-// Description: Interface to the Pytha 8 external generator
-//
-// Modification history:
-//
-// John Back April 2011 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenExternal/EvtPythiaEngine.hh"
#include "EvtGenBase/EvtDecayTable.hh"
#include "EvtGenBase/EvtExtGeneratorCommandsTable.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticleFactory.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenExternal/EvtPythia6CommandConverter.hh"
#include "Pythia8/Event.h"
#include "Pythia8/ParticleData.h"
#include <cmath>
#include <iostream>
#include <sstream>
using std::endl;
EvtPythiaEngine::EvtPythiaEngine( std::string xmlDir, bool convertPhysCodes,
bool useEvtGenRandom )
{
// Create two Pythia generators. One will be for generic
// Pythia decays in the decay.dec file. The other one will be to
// only decay aliased particles, which are in general "signal"
// decays different from those in the decay.dec file.
// Even though it is not possible to have two different particle
// versions in one Pythia generator, we can use two generators to
// get the required behaviour.
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Creating generic Pythia generator" << endl;
_genericPythiaGen = std::make_unique<Pythia8::Pythia>( xmlDir );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Creating alias Pythia generator" << endl;
_aliasPythiaGen = std::make_unique<Pythia8::Pythia>( xmlDir, false );
_thePythiaGenerator = 0;
_daugPDGVector.clear();
_daugP4Vector.clear();
_convertPhysCodes = convertPhysCodes;
// Specify if we are going to use the random number generator (engine)
// from EvtGen for Pythia 8.
_useEvtGenRandom = useEvtGenRandom;
_evtgenRandom = std::make_unique<EvtPythiaRandom>();
_initialised = false;
}
EvtPythiaEngine::~EvtPythiaEngine()
{
_thePythiaGenerator = nullptr;
this->clearDaughterVectors();
this->clearPythiaModeMap();
}
void EvtPythiaEngine::clearDaughterVectors()
{
_daugPDGVector.clear();
_daugP4Vector.clear();
}
void EvtPythiaEngine::clearPythiaModeMap()
{
PythiaModeMap::iterator iter;
for ( iter = _pythiaModeMap.begin(); iter != _pythiaModeMap.end(); ++iter ) {
std::vector<int> modeVector = iter->second;
modeVector.clear();
}
_pythiaModeMap.clear();
}
void EvtPythiaEngine::initialise()
{
if ( _initialised ) {
return;
}
this->clearPythiaModeMap();
this->updateParticleLists();
// Hadron-level processes only (hadronized, string fragmentation and secondary decays).
// We do not want to generate the full pp or e+e- event structure etc..
_genericPythiaGen->readString( "ProcessLevel:all = off" );
_aliasPythiaGen->readString( "ProcessLevel:all = off" );
// Turn off Pythia warnings, e.g. changes to particle properties
_genericPythiaGen->readString( "Print:quiet = on" );
_aliasPythiaGen->readString( "Print:quiet = on" );
// Apply any other physics (or special particle) requirements/cuts etc..
this->updatePhysicsParameters();
// Set the random number generator
if ( _useEvtGenRandom == true ) {
_genericPythiaGen->setRndmEnginePtr( _evtgenRandom.get() );
_aliasPythiaGen->setRndmEnginePtr( _evtgenRandom.get() );
}
_genericPythiaGen->init();
_aliasPythiaGen->init();
_initialised = true;
}
bool EvtPythiaEngine::doDecay( EvtParticle* theParticle )
{
// Store the mother particle within a Pythia8 Event object.
// Then do the hadron level decays.
// The EvtParticle must be a colour singlet (meson/baryon/lepton), i.e. not a gluon or quark
// We delete any daughters the particle may have, since we are asking Pythia
// to generate the decay anew. Also note that _any_ Pythia decay allowed for the particle
// will be generated and not the specific Pythia decay mode that EvtGen has already
// specified. This is necessary since we only want to initialise the Pythia decay table
// once; all Pythia branching fractions for a given mother particle are renormalised to sum to 1.0.
// In EvtGen decay.dec files, it may be the case that Pythia decays are only used
// for some of the particle decays (i.e. Pythia BF sum < 1.0). As we loop over many events,
// the total frequency for each Pythia decay mode will normalise correctly to what
// we wanted via the specifications made to the decay.dec file, even though event-by-event
// the EvtGen decay channel and the Pythia decay channel may be different.
if ( _initialised == false ) {
this->initialise();
}
if ( theParticle == 0 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Error in EvtPythiaEngine::doDecay. The mother particle is null. Not doing any Pythia decay."
<< endl;
return false;
}
// Delete EvtParticle daughters if they already exist
if ( theParticle->getNDaug() != 0 ) {
bool keepChannel( false );
theParticle->deleteDaughters( keepChannel );
}
EvtId particleId = theParticle->getId();
int isAlias = particleId.isAlias();
// Choose the generator depending if we have an aliased (parent) particle or not
_thePythiaGenerator = ( isAlias == 1 ? _aliasPythiaGen.get()
: _genericPythiaGen.get() );
// Need to use the reference to the Pythia8::Event object,
// otherwise it will just return a new empty, default event object.
Pythia8::Event& theEvent = _thePythiaGenerator->event;
theEvent.reset();
// Initialise the event to be the particle rest frame
int PDGCode = EvtPDL::getStdHep( particleId );
int status( 1 );
int colour( 0 ), anticolour( 0 );
double px( 0.0 ), py( 0.0 ), pz( 0.0 );
double m0 = theParticle->mass();
double E = m0;
theEvent.append( PDGCode, status, colour, anticolour, px, py, pz, E, m0 );
// Generate the Pythia event
int iTrial( 0 );
bool generatedEvent( false );
for ( iTrial = 0; iTrial < 10; iTrial++ ) {
generatedEvent = _thePythiaGenerator->next();
if ( generatedEvent ) {
break;
}
}
bool success( false );
if ( generatedEvent ) {
// Store the daughters for this particle from the Pythia decay tree.
// This is a recursive function that will continue looping through
// all available daughters until the first set of non-quark and non-gluon
// particles are encountered in the Pythia Event structure.
// First, clear up the internal vectors storing the daughter
// EvtId types and 4-momenta.
this->clearDaughterVectors();
// Now store the daughter info. Since this is a recursive function
// to loop through the full Pythia decay tree, we do not want to create
// EvtParticles here but in the next step.
this->storeDaughterInfo( theParticle, 1 );
// Now create the EvtParticle daughters of the (parent) particle.
// We need to use the EvtParticle::makeDaughters function
// owing to the way EvtParticle stores parent-daughter information.
this->createDaughterEvtParticles( theParticle );
//theParticle->printTree();
//theEvent.list(true, true);
success = true;
}
return success;
}
void EvtPythiaEngine::storeDaughterInfo( EvtParticle* theParticle, int startInt )
{
Pythia8::Event& theEvent = _thePythiaGenerator->event;
std::vector<int> daugList = theEvent.daughterList( startInt );
std::vector<int>::iterator daugIter;
for ( daugIter = daugList.begin(); daugIter != daugList.end(); ++daugIter ) {
int daugInt = *daugIter;
// Ask if the daughter is a quark or gluon. If so, recursively search again.
Pythia8::Particle& daugParticle = theEvent[daugInt];
if ( daugParticle.isQuark() || daugParticle.isGluon() ) {
// Recursively search for correct daughter type
this->storeDaughterInfo( theParticle, daugInt );
} else {
// We have a daughter that is not a quark nor gluon particle.
// Make sure we are not double counting particles, since several quarks
// and gluons make one particle.
// Set the status flag for any "new" particle to say that we have stored it.
// Use status flag = 1000 (within the user allowed range for Pythia codes).
// Check that the status flag for the particle is not equal to 1000
int statusCode = daugParticle.status();
if ( statusCode != 1000 ) {
int daugPDGInt = daugParticle.id();
double px = daugParticle.px();
double py = daugParticle.py();
double pz = daugParticle.pz();
double E = daugParticle.e();
EvtVector4R daughterP4( E, px, py, pz );
// Now store the EvtId and 4-momentum in the internal vectors
_daugPDGVector.push_back( daugPDGInt );
_daugP4Vector.push_back( daughterP4 );
// Set the status flag for the Pythia particle to let us know
// that we have already considered it to avoid double counting.
daugParticle.status( 1000 );
} // Status code != 1000
}
}
}
void EvtPythiaEngine::createDaughterEvtParticles( EvtParticle* theParent )
{
if ( theParent == 0 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Error in EvtPythiaEngine::createDaughterEvtParticles. The parent is null"
<< endl;
return;
}
// Get the list of Pythia decay modes defined for this particle id alias.
// It would be easier to just use the decay channel number that Pythia chose to use
// for the particle decay, but this is not accessible from the Pythia interface at present.
int nDaughters = _daugPDGVector.size();
std::vector<EvtId> daugAliasIdVect( 0 );
EvtId particleId = theParent->getId();
// Check to see if we have an anti-particle. If we do, charge conjugate the particle id to get the
// Pythia "alias" we can compare with the defined (particle) Pythia modes.
int PDGId = EvtPDL::getStdHep( particleId );
int aliasInt = particleId.getAlias();
int pythiaAliasInt( aliasInt );
if ( PDGId < 0 ) {
// We have an anti-particle.
EvtId conjPartId = EvtPDL::chargeConj( particleId );
pythiaAliasInt = conjPartId.getAlias();
}
std::vector<int> pythiaModes = _pythiaModeMap[pythiaAliasInt];
// Loop over all available Pythia decay modes and find the channel that matches
// the daughter ids. Set each daughter id to also use the alias integer.
// This will then convert the Pythia generated channel to the EvtGen alias defined one.
std::vector<int>::iterator modeIter;
bool gotMode( false );
for ( modeIter = pythiaModes.begin(); modeIter != pythiaModes.end();
++modeIter ) {
// Stop the loop if we have the right decay mode channel
if ( gotMode ) {
break;
}
int pythiaModeInt = *modeIter;
EvtDecayBase* decayModel = EvtDecayTable::getInstance()->findDecayModel(
aliasInt, pythiaModeInt );
if ( decayModel != 0 ) {
int nModeDaug = decayModel->getNDaug();
// We need to make sure that the number of daughters match
if ( nDaughters == nModeDaug ) {
int iModeDaug( 0 );
for ( iModeDaug = 0; iModeDaug < nModeDaug; iModeDaug++ ) {
EvtId daugId = decayModel->getDaug( iModeDaug );
int daugPDGId = EvtPDL::getStdHep( daugId );
// Pythia has used the right PDG codes for this decay mode, even for conjugate modes
int pythiaPDGId = _daugPDGVector[iModeDaug];
if ( daugPDGId == pythiaPDGId ) {
daugAliasIdVect.push_back( daugId );
}
} // Loop over EvtGen mode daughters
int daugAliasSize = daugAliasIdVect.size();
if ( daugAliasSize == nDaughters ) {
// All daughter Id codes are accounted for. Set the flag to stop the loop.
gotMode = true;
} else {
// We do not have the correct daughter ordering. Clear the id vector
// and try another mode.
daugAliasIdVect.clear();
}
} // Same number of daughters
} // decayModel != 0
} // Loop over available Pythia modes
if ( gotMode == false ) {
// We did not find a match for the daughter aliases. Just use the normal PDG codes
// from the Pythia decay result
int iPyDaug( 0 );
for ( iPyDaug = 0; iPyDaug < nDaughters; iPyDaug++ ) {
int daugPDGCode = _daugPDGVector[iPyDaug];
EvtId daugPyId = EvtPDL::evtIdFromStdHep( daugPDGCode );
daugAliasIdVect.push_back( daugPyId );
}
}
// Make the EvtParticle daughters (with correct alias id's). Their 4-momenta are uninitialised.
theParent->makeDaughters( nDaughters, daugAliasIdVect );
// Now set the 4-momenta of the daughters.
int iDaug( 0 );
// Can use an iterator here, but we already had to use the vector size...
for ( iDaug = 0; iDaug < nDaughters; iDaug++ ) {
EvtParticle* theDaughter = theParent->getDaug( iDaug );
// Set the correct 4-momentum for each daughter particle.
if ( theDaughter != 0 ) {
EvtId theDaugId = daugAliasIdVect[iDaug];
const EvtVector4R theDaugP4 = _daugP4Vector[iDaug];
theDaughter->init( theDaugId, theDaugP4 );
}
}
}
void EvtPythiaEngine::updateParticleLists()
{
// Use the EvtGen decay table (decay/user.dec) to update Pythia particle
// decay modes. Also, make sure the generic and alias Pythia generators
// use the same particle data entries as defined by EvtGen (evt.pdl).
// Loop over all entries in the EvtPDL particle data table.
// Aliases are added at the end with id numbers equal to the
// original particle, but with alias integer = lastPDLEntry+1 etc..
int iPDL;
int nPDL = EvtPDL::entries();
// Reset the _addedPDGCodes map that keeps track
// of any new particles added to the Pythia input data stream
_addedPDGCodes.clear();
for ( iPDL = 0; iPDL < nPDL; iPDL++ ) {
EvtId particleId = EvtPDL::getEntry( iPDL );
int aliasInt = particleId.getAlias();
// Pythia and EvtGen should use the same PDG codes for particles
int PDGCode = EvtPDL::getStdHep( particleId );
// Update pole mass, width, lifetime and mass range
double mass = EvtPDL::getMeanMass( particleId );
double width = EvtPDL::getWidth( particleId );
double lifetime = EvtPDL::getctau( particleId );
double mmin = EvtPDL::getMinMass( particleId );
double mmax = EvtPDL::getMaxMass( particleId );
// Particle data pointers. The generic and alias Pythia generator pointers have
// their own Pythia8::ParticleData particleData public data members which contain
// the particle properties table. We can extract and change individual particle
// entries using the particleDataEntryPtr() function within ParticleData.
// However, we must be careful when accessing the particleData table. We must do
// this directly, since assigning it to another Pythia8::ParticleData object via copying
// or assignment will give it a different memory address and it will no longer refer to
// the original particleData information from the generator pointer.
Pythia8::ParticleDataEntry* entry_generic =
_genericPythiaGen->particleData.particleDataEntryPtr( PDGCode );
Pythia8::ParticleDataEntry* entry_alias =
_aliasPythiaGen->particleData.particleDataEntryPtr( PDGCode );
// Check that the PDG code is not zero/null and exclude other
// special cases, e.g. those reserved for internal generator use
if ( entry_generic != 0 && this->validPDGCode( PDGCode ) ) {
entry_generic->setM0( mass );
entry_generic->setMWidth( width );
entry_generic->setTau0( lifetime );
if ( std::fabs( width ) > 0.0 ) {
entry_generic->setMMin( mmin );
entry_generic->setMMax( mmax );
}
}
// Check that the PDG code is not zero/null and exclude other
// special cases, e.g. those reserved for internal generator use
if ( entry_alias != 0 && this->validPDGCode( PDGCode ) ) {
entry_alias->setM0( mass );
entry_alias->setMWidth( width );
entry_alias->setTau0( lifetime );
if ( std::fabs( width ) > 0.0 ) {
entry_alias->setMMin( mmin );
entry_alias->setMMax( mmax );
}
}
// Check which particles have a Pythia decay defined.
// Get the list of all possible decays for the particle, using the alias integer.
// If the particle is not actually an alias, aliasInt = idInt.
bool hasPythiaDecays = EvtDecayTable::getInstance()->hasPythia( aliasInt );
if ( hasPythiaDecays ) {
int isAlias = particleId.isAlias();
// Decide what generator to use depending on whether we have
// an aliased particle or not
_thePythiaGenerator = ( isAlias == 1 ? _aliasPythiaGen.get()
: _genericPythiaGen.get() );
// Find the Pythia particle name given the standard PDG code integer
std::string dataName = _thePythiaGenerator->particleData.name(
PDGCode );
bool alreadyStored = ( _addedPDGCodes.find( abs( PDGCode ) ) !=
_addedPDGCodes.end() );
if ( dataName == " " && !alreadyStored ) {
// Particle and its antiparticle do not exist in the Pythia database.
// Create a new particle, then create the new decay modes.
this->createPythiaParticle( particleId, PDGCode );
}
// For the particle, create the Pythia decay modes.
// Update Pythia data tables.
this->updatePythiaDecayTable( particleId, aliasInt, PDGCode );
} // Loop over Pythia decays
} // Loop over EvtPDL entries
//EvtGenReport(EVTGEN_INFO,"EvtGen")<<"Writing out changed generic Pythia decay list"<<endl;
//_genericPythiaGen->particleData.listChanged();
//EvtGenReport(EVTGEN_INFO,"EvtGen")<<"Writing out changed alias Pythia decay list"<<endl;
//_aliasPythiaGen->particleData.listChanged();
}
bool EvtPythiaEngine::validPDGCode( int PDGCode )
{
// Exclude certain PDG codes: void = 0 and special values = 81 to 100, which are reserved
// for internal generator use (pseudoparticles) according to PDG guidelines. Also exclude
// nu'_tau (nu_L) = 18, which has different masses: Pythia8 = 400 GeV, EvtGen = 0 GeV.
bool isValid( true );
int absPDGCode = abs( PDGCode );
if ( absPDGCode == 0 || absPDGCode == 18 ) {
// Void and nu_L or nu'_tau
isValid = false;
} else if ( absPDGCode >= 81 && absPDGCode <= 100 ) {
// Pseudoparticles
isValid = false;
}
return isValid;
}
void EvtPythiaEngine::updatePythiaDecayTable( EvtId& particleId, int aliasInt,
int PDGCode )
{
// Update the particle data table in Pythia.
// The tables store information about the allowed decay modes
// where the PDGId for all particles must be positive; anti-particles are stored
// with the corresponding particle entry.
// Since we do not want to implement CP violation here, just use the same branching
// fractions for particle and anti-particle modes.
int nModes = EvtDecayTable::getInstance()->getNModes( aliasInt );
int iMode( 0 );
bool firstMode( true );
// Only process positive PDG codes.
if ( PDGCode < 0 ) {
return;
}
// Keep track of which decay modes are Pythia decays for each aliasInt
std::vector<int> pythiaModes( 0 );
// Loop over the decay modes for this particle
for ( iMode = 0; iMode < nModes; iMode++ ) {
EvtDecayBase* decayModel =
EvtDecayTable::getInstance()->findDecayModel( aliasInt, iMode );
if ( decayModel != 0 ) {
int nDaug = decayModel->getNDaug();
// If the decay mode has no daughters, then that means that there will be
// no entries for any submode re-definitions for Pythia.
// This sometimes occurs for any mode using non-standard Pythia 6 codes.
// Do not refine the decay mode, i.e. accept the Pythia 8 default (if it exists).
if ( nDaug > 0 ) {
// Check to see if we have a Pythia decay mode
std::string modelName = decayModel->getModelName();
if ( modelName == "PYTHIA" ) {
// Keep track which decay mode is a Pythia one. We need this in order to
// reassign alias Id values for particles generated in the decay.
pythiaModes.push_back( iMode );
std::ostringstream oss;
oss.setf( std::ios::scientific );
// Write out the absolute value of the PDG code, since
// particles and anti-particles occupy the same part of the Pythia table.
oss << PDGCode;
if ( firstMode ) {
// Create a new channel
oss << ":oneChannel = ";
firstMode = false;
} else {
// Add the channel
oss << ":addChannel = ";
}
// Select all channels (particle and anti-particle).
// For CP violation, or different BFs for particle and anti-particle,
// use options 2 or 3 (not here).
int onMode( 1 );
oss << onMode << " ";
double BF = decayModel->getBranchingFraction();
oss << BF << " ";
// Need to convert the old Pythia physics mode integers with the new ones
// To do this, get the model argument and write a conversion method.
int modeInt = this->getModeInt( decayModel );
oss << modeInt;
int iDaug( 0 );
for ( iDaug = 0; iDaug < nDaug; iDaug++ ) {
EvtId daugId = decayModel->getDaug( iDaug );
int daugPDG = EvtPDL::getStdHep( daugId );
oss << " " << daugPDG;
} // Daughter list
_thePythiaGenerator->readString( oss.str() );
} // is Pythia
} else {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Warning in EvtPythiaEngine. Trying to redefine Pythia table for "
<< EvtPDL::name( particleId )
<< " for a decay channel that has no daughters."
<< " Keeping Pythia default (if available)." << endl;
}
} else {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Error in EvtPythiaEngine. decayModel is null for particle "
<< EvtPDL::name( particleId ) << " mode number " << iMode
<< endl;
}
} // Loop over modes
_pythiaModeMap[aliasInt] = pythiaModes;
// Now, renormalise the decay branching fractions to sum to 1.0
std::ostringstream rescaleStr;
rescaleStr.setf( std::ios::scientific );
rescaleStr << PDGCode << ":rescaleBR = 1.0";
_thePythiaGenerator->readString( rescaleStr.str() );
}
int EvtPythiaEngine::getModeInt( EvtDecayBase* decayModel )
{
int tmpModeInt( 0 ), modeInt( 0 );
if ( decayModel != 0 ) {
int nVars = decayModel->getNArg();
// Just read the first integer, which specifies the Pythia decay model.
// Ignore any other values.
if ( nVars > 0 ) {
tmpModeInt = static_cast<int>( decayModel->getArg( 0 ) );
}
}
if ( _convertPhysCodes ) {
// Extra code to convert the old Pythia decay model integer MDME(ICC,2) to the new one.
// This should be removed eventually after updating decay.dec files to use
// the new convention.
if ( tmpModeInt == 0 ) {
modeInt = 0; // phase-space
} else if ( tmpModeInt == 1 ) {
modeInt = 1; // omega or phi -> 3pi
} else if ( tmpModeInt == 2 ) {
modeInt = 11; // Dalitz decay
} else if ( tmpModeInt == 3 ) {
modeInt = 2; // V -> PS PS
} else if ( tmpModeInt == 4 ) {
modeInt = 92; // onium -> ggg or gg gamma
} else if ( tmpModeInt == 11 ) {
modeInt = 42; // phase-space of hadrons from available quarks
} else if ( tmpModeInt == 12 ) {
modeInt = 42; // phase-space for onia resonances
} else if ( tmpModeInt == 13 ) {
modeInt = 43; // phase-space of at least 3 hadrons
} else if ( tmpModeInt == 14 ) {
modeInt = 44; // phase-space of at least 4 hadrons
} else if ( tmpModeInt == 15 ) {
modeInt = 45; // phase-space of at least 5 hadrons
} else if ( tmpModeInt >= 22 && tmpModeInt <= 30 ) {
modeInt = tmpModeInt +
40; // phase space of hadrons with fixed multiplicity (modeInt - 60)
} else if ( tmpModeInt == 31 ) {
modeInt = 42; // two or more quarks phase-space; one spectactor quark
} else if ( tmpModeInt == 32 ) {
modeInt = 91; // qqbar or gg pair
} else if ( tmpModeInt == 33 ) {
modeInt = 0; // triplet q X qbar, where X = gluon or colour singlet (superfluous, since g's are created anyway)
} else if ( tmpModeInt == 41 ) {
modeInt = 21; // weak decay phase space, weighting nu_tau spectrum
} else if ( tmpModeInt == 42 ) {
modeInt = 22; // weak decay V-A matrix element
} else if ( tmpModeInt == 43 ) {
modeInt = 22; // weak decay V-A matrix element, quarks as jets (superfluous)
} else if ( tmpModeInt == 44 ) {
modeInt = 22; // weak decay V-A matrix element, parton showers (superfluous)
} else if ( tmpModeInt == 48 ) {
modeInt = 23; // weak decay V-A matrix element, at least 3 decay products
} else if ( tmpModeInt == 50 ) {
modeInt = 0; // default behaviour
} else if ( tmpModeInt == 51 ) {
modeInt = 0; // step threshold (channel switched off when mass daughters > mother mass
} else if ( tmpModeInt == 52 || tmpModeInt == 53 ) {
modeInt = 0; // beta-factor threshold
} else if ( tmpModeInt == 84 ) {
modeInt = 42; // unknown physics process - just use phase-space
} else if ( tmpModeInt == 101 ) {
modeInt = 0; // continuation line
} else if ( tmpModeInt == 102 ) {
modeInt = 0; // off mass shell particles.
} else {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Pythia mode integer " << tmpModeInt
<< " is not recognised. Using phase-space model" << endl;
modeInt = 0; // Use phase-space for anything else
}
} else {
// No need to convert the physics mode integer code
modeInt = tmpModeInt;
}
return modeInt;
}
void EvtPythiaEngine::createPythiaParticle( EvtId& particleId, int PDGCode )
{
// Use the EvtGen name, PDGId and other variables to define the new Pythia particle.
EvtId antiPartId = EvtPDL::chargeConj( particleId );
std::string aliasName = EvtPDL::name(
particleId ); // If not an alias, aliasName = normal name
std::string antiName = EvtPDL::name( antiPartId );
EvtSpinType::spintype spinType = EvtPDL::getSpinType( particleId );
int spin = EvtSpinType::getSpin2( spinType );
int charge = EvtPDL::chg3( particleId );
// Must set the correct colour type manually here, since the evt.pdl file
// does not store this information. This is required for quarks otherwise
// Pythia cannot generate the decay properly.
int PDGId = EvtPDL::getStdHep( particleId );
int colour( 0 );
if ( PDGId == 21 ) {
colour = 2; // gluons
} else if ( PDGId <= 8 && PDGId > 0 ) {
colour = 1; // single quarks
}
double m0 = EvtPDL::getMeanMass( particleId );
double mWidth = EvtPDL::getWidth( particleId );
double mMin = EvtPDL::getMinMass( particleId );
double mMax = EvtPDL::getMaxMass( particleId );
double tau0 = EvtPDL::getctau( particleId );
std::ostringstream oss;
oss.setf( std::ios::scientific );
int absPDGCode = abs( PDGCode );
oss << absPDGCode << ":new = " << aliasName << " " << antiName << " "
<< spin << " " << charge << " " << colour << " " << m0 << " " << mWidth
<< " " << mMin << " " << mMax << " " << tau0;
// Pass this information to Pythia
_thePythiaGenerator->readString( oss.str() );
// Also store the absolute value of the PDG entry
// to keep track of which new particles have been added,
// which also automatically includes the anti-particle.
// We need to avoid creating new anti-particles when
// they already exist when the particle was added.
_addedPDGCodes[absPDGCode] = 1;
}
void EvtPythiaEngine::updatePhysicsParameters()
{
// Update any more Pythia physics (or special particle) requirements/cuts etc..
// This should be used if any of the Pythia 6 parameters like JetSetPar MSTJ(i) = x
// are needed. Such commands will need to be implemented using the new interface
// pythiaGenerator->readString(cmd); Here cmd is a string telling Pythia 8
// what physics parameters to change. This will need to be done for the generic and
// alias generator pointers, as appropriate.
// Set the multiplicity level for hadronic weak decays
std::string multiWeakCut( "ParticleDecays:multIncreaseWeak = 2.0" );
_genericPythiaGen->readString( multiWeakCut );
_aliasPythiaGen->readString( multiWeakCut );
// Set the multiplicity level for all other decays
std::string multiCut( "ParticleDecays:multIncrease = 4.5" );
_genericPythiaGen->readString( multiCut );
_aliasPythiaGen->readString( multiCut );
//Now read in any custom configuration entered in the XML
GeneratorCommands commands =
EvtExtGeneratorCommandsTable::getInstance()->getCommands( "PYTHIA" );
GeneratorCommands::iterator it = commands.begin();
for ( ; it != commands.end(); it++ ) {
Command command = *it;
std::vector<std::string> commandStrings;
if ( command["VERSION"] == "PYTHIA6" ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Converting Pythia 6 command: " << command["MODULE"] << "("
<< command["PARAM"] << ")=" << command["VALUE"] << "..." << endl;
commandStrings = convertPythia6Command( command );
} else if ( command["VERSION"] == "PYTHIA8" ) {
commandStrings.push_back( command["MODULE"] + ":" + command["PARAM"] +
" = " + command["VALUE"] );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Pythia command received by EvtPythiaEngine has bad version:"
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Received " << command["VERSION"]
<< " but expected PYTHIA6 or PYTHIA8." << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The error is likely to be in EvtDecayTable.cpp" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtGen will now abort." << endl;
::abort();
}
std::string generator = command["GENERATOR"];
if ( generator == "GENERIC" || generator == "Generic" ||
generator == "generic" || generator == "BOTH" ||
generator == "Both" || generator == "both" ) {
std::vector<std::string>::iterator it2 = commandStrings.begin();
for ( ; it2 != commandStrings.end(); it2++ ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Configuring generic Pythia generator: " << ( *it2 )
<< endl;
_genericPythiaGen->readString( *it2 );
}
}
if ( generator == "ALIAS" || generator == "Alias" ||
generator == "alias" || generator == "BOTH" ||
generator == "Both" || generator == "both" ) {
std::vector<std::string>::iterator it2 = commandStrings.begin();
for ( ; it2 != commandStrings.end(); it2++ ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Configuring alias Pythia generator: " << ( *it2 )
<< endl;
_aliasPythiaGen->readString( *it2 );
}
}
}
}
#endif
diff --git a/src/EvtGenExternal/EvtTauola.cpp b/src/EvtGenExternal/EvtTauola.cpp
index f1f76f9..b40a4e3 100644
--- a/src/EvtGenExternal/EvtTauola.cpp
+++ b/src/EvtGenExternal/EvtTauola.cpp
@@ -1,66 +1,48 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2011 University of Warwick, UK
-//
-// Description: Use the Tauola external generator for tau decays
-//
-// Modification history:
-//
-// John Back May 2011 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenExternal/EvtTauola.hh"
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenModels/EvtAbsExternalGen.hh"
#include "EvtGenExternal/EvtExternalGenFactory.hh"
#include <cmath>
#include <iostream>
#include <string>
std::string EvtTauola::getName()
{
return "TAUOLA";
}
EvtDecayBase* EvtTauola::clone()
{
return new EvtTauola();
}
void EvtTauola::init()
{
}
void EvtTauola::initProbMax()
{
noProbMax();
}
void EvtTauola::decay( EvtParticle* p )
{
// We check to see if the Tauola engine has been created before doing the decay.
// This should only create the full Tauola engine once, and all clones will
// point to the same engine.
if ( !_tauolaEngine ) {
_tauolaEngine = EvtExternalGenFactory::getInstance()->getGenerator(
EvtExternalGenFactory::TauolaGenId );
}
if ( _tauolaEngine ) {
_tauolaEngine->doDecay( p );
}
}
diff --git a/src/EvtGenExternal/EvtTauolaEngine.cpp b/src/EvtGenExternal/EvtTauolaEngine.cpp
index bc070d4..4751bef 100644
--- a/src/EvtGenExternal/EvtTauolaEngine.cpp
+++ b/src/EvtGenExternal/EvtTauolaEngine.cpp
@@ -1,600 +1,581 @@
#ifdef EVTGEN_TAUOLA
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2011 University of Warwick, UK
-//
-// Module: EvtTauolaEngine
-//
-// Description: Interface to the TAUOLA external generator, which
-// decays tau particles
-//
-// Modification history:
-//
-// John Back May 2011 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenExternal/EvtTauolaEngine.hh"
#include "EvtGenBase/EvtDecayTable.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSymTable.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "Tauola/Log.h"
#include "Tauola/Tauola.h"
#include <cmath>
#include <iostream>
#include <memory>
#include <sstream>
#include <string>
using std::endl;
EvtTauolaEngine::EvtTauolaEngine( bool useEvtGenRandom )
{
// PDG standard code integer ID for tau particle
_tauPDG = 15;
// Number of possible decay modes in Tauola
_nTauolaModes = 22;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Setting up TAUOLA." << endl;
// These three lines are not really necessary since they are the default.
// But they are here so that we know what the initial conditions are.
Tauolapp::Tauola::setDecayingParticle( _tauPDG ); // tau PDG code
Tauolapp::Tauola::setSameParticleDecayMode(
Tauolapp::Tauola::All ); // all modes allowed
Tauolapp::Tauola::setOppositeParticleDecayMode(
Tauolapp::Tauola::All ); // all modes allowed
// Limit the number of warnings printed out. Can't choose zero here, unfortunately
Tauolapp::Log::SetWarningLimit( 1 );
// Initial the Tauola external generator
if ( useEvtGenRandom == true ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Using EvtGen random number engine also for Tauola++" << endl;
Tauolapp::Tauola::setRandomGenerator( EvtRandom::Flat );
}
// Use the BaBar-tuned chiral current calculations by default. Can be changed using the
// TauolaCurrentOption keyword in decay files
Tauolapp::Tauola::setNewCurrents( 1 );
Tauolapp::Tauola::initialize();
// Initialise various default parameters
// Neutral and charged spin propagator choices
_neutPropType = 0;
_posPropType = 0;
_negPropType = 0;
// Set-up possible decay modes _after_ we have read the (user) decay file
_initialised = false;
}
void EvtTauolaEngine::initialise()
{
// Set up all possible tau decay modes.
// This should be done just before the first doDecay() call,
// since we want to make sure that any decay.dec files are processed
// first to get lists of particle modes and their alias definitions
// (for creating EvtParticles with the right history information).
if ( _initialised == false ) {
this->setUpPossibleTauModes();
this->setOtherParameters();
_initialised = true;
}
}
void EvtTauolaEngine::setUpPossibleTauModes()
{
// Get the decay table list defined by the decay.dec files.
// Only look for the first tau particle decay mode definitions with the Tauola name,
// since that generator only allows the same BFs for both tau+ and tau- decays.
// We can not choose a specific tau decay event-by-event, since this is
// only possible before we call Tauola::initialize().
// Otherwise, we could have selected a random mode ourselves for tau- and tau+
// separately (via selecting a random number and comparing it to be less than
// the cumulative BF) for each event.
int nPDL = EvtPDL::entries();
int iPDL( 0 );
bool gotAnyTauolaModes( false );
for ( iPDL = 0; iPDL < nPDL; iPDL++ ) {
EvtId particleId = EvtPDL::getEntry( iPDL );
int PDGId = EvtPDL::getStdHep( particleId );
if ( abs( PDGId ) == _tauPDG && gotAnyTauolaModes == false ) {
int aliasInt = particleId.getAlias();
// Get the list of decay modes for this tau particle (alias)
int nModes = EvtDecayTable::getInstance()->getNModes( aliasInt );
int iMode( 0 ), iTauMode( 0 );
// Vector to store tau mode branching fractions.
// The size of this vector equals the total number of possible
// Tauola decay modes. Initialise all BFs to zero.
std::vector<double> tauolaModeBFs( _nTauolaModes );
for ( iTauMode = 0; iTauMode < _nTauolaModes; iTauMode++ ) {
tauolaModeBFs[iTauMode] = 0.0;
}
double totalTauModeBF( 0.0 );
int nNonTauolaModes( 0 );
// Loop through each decay mode
for ( iMode = 0; iMode < nModes; iMode++ ) {
EvtDecayBase* decayModel =
EvtDecayTable::getInstance()->findDecayModel( aliasInt,
iMode );
if ( decayModel ) {
// Check that the decay model name matches TAUOLA
std::string modelName = decayModel->getName();
if ( modelName == "TAUOLA" ) {
if ( gotAnyTauolaModes == false ) {
gotAnyTauolaModes = true;
}
// Extract the decay mode integer type and branching fraction
double BF = decayModel->getBranchingFraction();
int modeArrayInt = this->getModeInt( decayModel ) - 1;
if ( modeArrayInt >= 0 && modeArrayInt < _nTauolaModes ) {
tauolaModeBFs[modeArrayInt] = BF;
totalTauModeBF += BF;
}
} else {
nNonTauolaModes++;
}
} // Decay mode exists
} // Loop over decay models
if ( gotAnyTauolaModes == true && nNonTauolaModes > 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Please remove all non-TAUOLA decay modes for particle "
<< EvtPDL::name( particleId ) << endl;
::abort();
}
// Normalise all (non-zero) tau mode BFs to sum up to 1.0, and
// let Tauola know about these normalised branching fractions
if ( totalTauModeBF > 0.0 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Setting TAUOLA BF modes using the definitions for the particle "
<< EvtPDL::name( particleId ) << endl;
for ( iTauMode = 0; iTauMode < _nTauolaModes; iTauMode++ ) {
tauolaModeBFs[iTauMode] /= totalTauModeBF;
double modeBF = tauolaModeBFs[iTauMode];
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Setting TAUOLA BF for mode " << iTauMode + 1
<< " = " << modeBF << endl;
Tauolapp::Tauola::setTauBr( iTauMode + 1, modeBF );
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Any other TAUOLA BF modes for other tau particle decay mode definitions will be ignored!"
<< endl;
}
} // Got tau particle and have yet to get a TAUOLA mode
} // Loop through PDL entries
}
int EvtTauolaEngine::getModeInt( EvtDecayBase* decayModel )
{
int modeInt( 0 );
if ( decayModel ) {
int nVars = decayModel->getNArg();
if ( nVars > 0 ) {
modeInt = static_cast<int>( decayModel->getArg( 0 ) );
}
}
return modeInt;
}
void EvtTauolaEngine::setOtherParameters()
{
// Set other Tauola parameters using the "Defined" keyword in the decay file. If any of
// these are not found in the decay file, then default values are assumed/kept
// 1) TauolaNeutralProp: Specify the neutral propagator type used for spin matrix calculations
// "Z" (default), "Gamma", "Higgs" (H0), "PseudoHiggs" (A0), "MixedHiggs" (A0/H0)
int iErr( 0 );
std::string neutPropName = EvtSymTable::get( "TauolaNeutralProp", iErr );
if ( neutPropName == "Z0" || neutPropName == "Z" ) {
_neutPropType = Tauolapp::TauolaParticle::Z0;
} else if ( neutPropName == "Gamma" ) {
_neutPropType = Tauolapp::TauolaParticle::GAMMA;
} else if ( neutPropName == "Higgs" ) {
_neutPropType = Tauolapp::TauolaParticle::HIGGS;
} else if ( neutPropName == "PseudoHiggs" ) {
_neutPropType = Tauolapp::TauolaParticle::HIGGS_A;
} else if ( neutPropName == "MixedHiggs" ) {
_neutPropType = Tauolapp::Tauola::getHiggsScalarPseudoscalarPDG();
}
if ( _neutPropType != 0 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "TAUOLA neutral spin propagator PDG id set to " << _neutPropType
<< endl;
}
// 2) TauolaChargedProp: Specify the charged propagator type used for spin matrix calculations
// "W" (default), "Higgs" (H+/H-)
std::string chargedPropName = EvtSymTable::get( "TauolaChargedProp", iErr );
if ( chargedPropName == "W" ) {
_negPropType = Tauolapp::TauolaParticle::W_MINUS;
_posPropType = Tauolapp::TauolaParticle::W_PLUS;
} else if ( chargedPropName == "Higgs" ) {
_negPropType = Tauolapp::TauolaParticle::HIGGS_MINUS;
_posPropType = Tauolapp::TauolaParticle::HIGGS_PLUS;
}
if ( _negPropType != 0 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "TAUOLA negative charge spin propagator PDG id set to "
<< _negPropType << endl;
}
if ( _posPropType != 0 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "TAUOLA positive charge spin propagator PDG id set to "
<< _posPropType << endl;
}
// 3) TauolaHiggsMixingAngle: Specify the mixing angle between the neutral scalar & pseudoscalar Higgs
// A0/H0; the default mixing angle is pi/4 radians
std::string mixString = EvtSymTable::get( "TauolaHiggsMixingAngle", iErr );
// If the definition name is not found, get() just returns the first argument string
if ( mixString != "TauolaHiggsMixingAngle" ) {
double mixAngle = std::atof( mixString.c_str() );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "TAUOLA Higgs mixing angle set to " << mixAngle << " radians"
<< endl;
Tauolapp::Tauola::setHiggsScalarPseudoscalarMixingAngle( mixAngle );
}
// 4) TauolaBRi, where i = 1,2,3,4: Redefine sub-channel branching fractions using the setTaukle
// function, after initialized() has been called. Default values = 0.5, 0.5, 0.5 and 0.6667
int j( 1 );
std::vector<double> BRVect;
BRVect.push_back( 0.5 );
BRVect.push_back( 0.5 );
BRVect.push_back( 0.5 );
BRVect.push_back( 0.6667 );
for ( j = 1; j < 5; j++ ) {
std::ostringstream o;
o << j;
std::string BRName = "TauolaBR" + o.str();
std::string stringBR = EvtSymTable::get( BRName, iErr );
// If the definition name is not found, get() just returns the first argument string
if ( stringBR != BRName ) {
BRVect[j - 1] = std::atof( stringBR.c_str() );
}
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "TAUOLA::setTaukle values are " << BRVect[0] << ", " << BRVect[1]
<< ", " << BRVect[2] << ", " << BRVect[3] << endl;
Tauolapp::Tauola::setTaukle( BRVect[0], BRVect[1], BRVect[2], BRVect[3] );
// 5) Specify the hadronic current option, e.g. orig CLEO = 0, BaBar-tuned = 1 (default), ...
// No check is made by EvtGen on valid integer options - its just passed to Tauola
std::string currentOption = EvtSymTable::get( "TauolaCurrentOption", iErr );
// If the definition name is not found, get() just returns the first argument string
if ( currentOption != "TauolaCurrentOption" ) {
int currentOpt = std::atoi( currentOption.c_str() );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "TAUOLA current option = " << currentOpt << endl;
Tauolapp::Tauola::setNewCurrents( currentOpt );
}
}
bool EvtTauolaEngine::doDecay( EvtParticle* tauParticle )
{
if ( _initialised == false ) {
this->initialise();
}
if ( tauParticle == 0 ) {
return false;
}
// Check that we have a tau particle.
EvtId partId = tauParticle->getId();
if ( abs( EvtPDL::getStdHep( partId ) ) != _tauPDG ) {
return false;
}
int nTauDaug = tauParticle->getNDaug();
// If the number of tau daughters is not zero, then we have already decayed
// it using Tauola/another decay algorithm.
if ( nTauDaug > 0 ) {
return true;
}
this->decayTauEvent( tauParticle );
return true;
}
void EvtTauolaEngine::decayTauEvent( EvtParticle* tauParticle )
{
// Either we have a tau particle within a decay chain, or a single particle.
// Create a dummy HepMC event & vertex for the parent particle, containing the tau as
// one of the outgoing particles. If we have a decay chain, the parent will be the
// incoming particle, while the daughters, including the tau, are outgoing particles.
// For the single particle case, the incoming particle is null, while the single tau
// is the only outgoing particle.
// We can then pass this event to Tauola which should then decay the tau particle.
// We also consider all other tau particles from the parent decay in the logic below.
// Create the dummy event.
auto theEvent = std::make_unique<GenEvent>( Units::GEV, Units::MM );
// Create the decay "vertex".
GenVertexPtr theVertex = newGenVertexPtr();
theEvent->add_vertex( theVertex );
// Get the parent of this tau particle
EvtParticle* theParent = tauParticle->getParent();
GenParticlePtr hepMCParent( 0 );
// Assign the parent particle as the incoming particle to the vertex.
if ( theParent ) {
hepMCParent = this->createGenParticle( theParent );
theVertex->add_particle_in( hepMCParent );
} else {
// The tau particle has no parent. Set "itself" as the incoming particle for the first vertex.
// This is needed, otherwise Tauola warns of momentum non-conservation for this (1st) vertex.
GenParticlePtr tauGenInit = this->createGenParticle( tauParticle );
theVertex->add_particle_in( tauGenInit );
}
// Find all daughter particles and assign them as outgoing particles to the vertex.
// This will include the tau particle we are currently processing.
// If the parent decay has more than one tau particle, we need to include them as well.
// This is important since Tauola needs the correct physics correlations: we do not
// want Tauola to decay each particle separately if they are from tau pair combinations.
// Tauola will process the event, and we will create EvtParticles from all tau decay
// products, i.e. the tau particle we currently have and any other tau particles.
// EvtGen will try to decay the other tau particle(s) by calling EvtTauola and therefore
// this function. However, we check to see if the tau candidate has any daughters already.
// If it does, then we have already set the tau decay products from Tauola.
// Map to store (HepMC,EvtParticle) pairs for each tau candidate from the parent
// decay. This is needed to find out what EvtParticle corresponds to a given tau HepMC
// candidate: we do not want to recreate existing EvtParticle pointers.
std::map<GenParticlePtr, EvtParticle*> tauMap;
// Keep track of the original EvtId of the parent particle, since we may need to set
// the equivalent HepMCParticle has a gauge boson to let Tauola calculate spin effects
EvtId origParentId( -1, -1 );
if ( theParent ) {
// Original parent id
origParentId = EvtPDL::getId( theParent->getName() );
// Find all tau particles in the decay tree and store them in the map.
// Keep track of how many tau daughters this parent particle has
int nTaus( 0 );
int nDaug( theParent->getNDaug() );
int iDaug( 0 );
for ( iDaug = 0; iDaug < nDaug; iDaug++ ) {
EvtParticle* theDaughter = theParent->getDaug( iDaug );
if ( theDaughter ) {
GenParticlePtr hepMCDaughter = this->createGenParticle(
theDaughter );
theVertex->add_particle_out( hepMCDaughter );
EvtId theId = theDaughter->getId();
int PDGInt = EvtPDL::getStdHep( theId );
if ( abs( PDGInt ) == _tauPDG ) {
// Delete any siblings for the tau particle
if ( theDaughter->getNDaug() > 0 ) {
theDaughter->deleteDaughters( false );
}
tauMap[hepMCDaughter] = theDaughter;
nTaus++;
} else {
// Treat all other particles as "stable"
hepMCDaughter->set_status( Tauolapp::TauolaParticle::STABLE );
}
} // theDaughter != 0
} // Loop over daughters
// For the parent particle, artifically set the PDG to a boson with the same 4-momentum
// so that spin correlations are calculated inside Tauola.
// This leaves the original parent _EvtParticle_ unchanged
if ( nTaus > 0 && hepMCParent ) {
int parCharge = EvtPDL::chg3( origParentId ) /
3; // (3*particle charge)/3 = particle charge
if ( parCharge == 0 && _neutPropType != 0 ) {
hepMCParent->set_pdg_id( _neutPropType );
} else if ( parCharge == -1 && _negPropType != 0 ) {
hepMCParent->set_pdg_id( _negPropType );
} else if ( parCharge == 1 && _posPropType != 0 ) {
hepMCParent->set_pdg_id( _posPropType );
}
}
} else {
// We only have the one tau particle. Store only this in the map.
GenParticlePtr singleTau = this->createGenParticle( tauParticle );
theVertex->add_particle_out( singleTau );
tauMap[singleTau] = tauParticle;
}
// Now pass the event to Tauola for processing
// Create a Tauola event object
#ifdef EVTGEN_HEPMC3
Tauolapp::TauolaHepMC3Event tauolaEvent( theEvent.get() );
#else
Tauolapp::TauolaHepMCEvent tauolaEvent( theEvent.get() );
#endif
// Run the Tauola algorithm
tauolaEvent.decayTaus();
// Loop over all tau particles in the HepMC event and create their EvtParticle daughters.
// Store all final "stable" descendent particles as the tau daughters, i.e.
// let Tauola decay any resonances such as a_1 or rho.
// If there is more than one tau particle in the event, then also create the
// corresponding EvtParticles for their daughters as well. They will not be
// re-decayed since we check at the start of this function if the tau particle has
// any daughters before running Tauola decayTaus().
#ifdef EVTGEN_HEPMC3
for ( auto aParticle : theEvent->particles() ) {
#else
HepMC::GenEvent::particle_iterator eventIter;
for ( eventIter = theEvent->particles_begin();
eventIter != theEvent->particles_end(); ++eventIter ) {
// Check to see if we have a tau particle
HepMC::GenParticle* aParticle = ( *eventIter );
#endif
if ( aParticle && abs( aParticle->pdg_id() ) == _tauPDG ) {
// Find out what EvtParticle corresponds to the HepMC particle.
// We need this to create and attach EvtParticle daughters.
EvtParticle* tauEvtParticle = tauMap[aParticle];
if ( tauEvtParticle ) {
// Get the tau 4-momentum in the lab (first mother) frame. We need to boost
// all the tau daughters to this frame, such that daug.getP4() is in the tau restframe.
EvtVector4R tauP4CM = tauEvtParticle->getP4Lab();
tauP4CM.set( tauP4CM.get( 0 ), -tauP4CM.get( 1 ),
-tauP4CM.get( 2 ), -tauP4CM.get( 3 ) );
// Get the decay vertex for the tau particle
GenVertexPtr endVertex = aParticle->end_vertex();
std::vector<EvtId> daugIdVect;
std::vector<EvtVector4R> daugP4Vect;
// Loop through all descendants
#ifdef EVTGEN_HEPMC3
for ( auto tauDaug :
HepMC3::Relatives::DESCENDANTS( endVertex ) ) {
#else
HepMC::GenVertex::particle_iterator tauIter;
// Loop through all descendants
for ( tauIter = endVertex->particles_begin( HepMC::descendants );
tauIter != endVertex->particles_end( HepMC::descendants );
++tauIter ) {
HepMC::GenParticle* tauDaug = ( *tauIter );
#endif
// Check to see if this descendant has its own decay vertex, e.g. rho resonance.
// If so, skip this daughter and continue looping through the descendant list
// until we reach the final "stable" products (e.g. pi pi from rho -> pi pi).
GenVertexPtr daugDecayVtx = tauDaug->end_vertex();
if ( daugDecayVtx ) {
continue;
}
// Store the particle id and 4-momentum
int tauDaugPDG = tauDaug->pdg_id();
EvtId daugId = EvtPDL::evtIdFromStdHep( tauDaugPDG );
daugIdVect.push_back( daugId );
FourVector tauDaugP4 = tauDaug->momentum();
double tauDaug_px = tauDaugP4.px();
double tauDaug_py = tauDaugP4.py();
double tauDaug_pz = tauDaugP4.pz();
double tauDaug_E = tauDaugP4.e();
EvtVector4R daugP4( tauDaug_E, tauDaug_px, tauDaug_py,
tauDaug_pz );
daugP4Vect.push_back( daugP4 );
} // Loop over HepMC tau daughters
// Create the tau EvtParticle daughters and assign their ids and 4-mtm
int nDaug = daugIdVect.size();
tauEvtParticle->makeDaughters( nDaug, daugIdVect );
int iDaug( 0 );
for ( iDaug = 0; iDaug < nDaug; iDaug++ ) {
EvtParticle* theDaugPart = tauEvtParticle->getDaug( iDaug );
if ( theDaugPart ) {
EvtId theDaugId = daugIdVect[iDaug];
EvtVector4R theDaugP4 = daugP4Vect[iDaug];
theDaugP4.applyBoostTo(
tauP4CM ); // Boost the 4-mtm to the tau rest frame
theDaugPart->init( theDaugId, theDaugP4 );
}
} // Loop over tau daughters
}
} // We have a tau HepMC particle in the event
}
theEvent->clear();
}
GenParticlePtr EvtTauolaEngine::createGenParticle( EvtParticle* theParticle )
{
// Method to create an HepMC::GenParticle version of the given EvtParticle.
if ( theParticle == 0 ) {
return 0;
}
// Get the 4-momentum (E, px, py, pz) for the EvtParticle
EvtVector4R p4 = theParticle->getP4Lab();
// Convert this to the HepMC 4-momentum
double E = p4.get( 0 );
double px = p4.get( 1 );
double py = p4.get( 2 );
double pz = p4.get( 3 );
FourVector hepMC_p4( px, py, pz, E );
int PDGInt = EvtPDL::getStdHep( theParticle->getId() );
// Set the status flag for the particle.
int status = Tauolapp::TauolaParticle::HISTORY;
GenParticlePtr genParticle = newGenParticlePtr( hepMC_p4, PDGInt, status );
return genParticle;
}
#endif
diff --git a/src/EvtGenModels/EvtBBScalar.cpp b/src/EvtGenModels/EvtBBScalar.cpp
index a182fb9..5e75069 100644
--- a/src/EvtGenModels/EvtBBScalar.cpp
+++ b/src/EvtGenModels/EvtBBScalar.cpp
@@ -1,498 +1,477 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech
-//
-// Module: EvtGen/EvtBBScalar
-//
-// Description:Implementation of the decay B- -> lambda p_bar pi according to
-// hep-ph/0204185, hep-ph/0211240
-// This model is intended to be applicable to all decays of the type B-> baryon baryon scalar
-//
-// Modification history:
-//
-// Jan Strube March 24, 2006 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenModels/EvtBBScalar.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGammaMatrix.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include <cmath>
using namespace std;
const float pi = 3.14159;
const EvtComplex EvtBBScalar::I = EvtComplex( 0, 1 );
const EvtComplex EvtBBScalar::V_ub = EvtComplex( 3.67e-3 * cos( 60 / 180 * pi ),
3.67e-3 * cos( 60 / 180 * pi ) );
const EvtComplex EvtBBScalar::V_us_star = EvtComplex( 0.22, 0 );
const EvtComplex EvtBBScalar::a1 = EvtComplex( 1.05, 0 );
const EvtComplex EvtBBScalar::V_tb = EvtComplex( 0.99915, 0 );
const EvtComplex EvtBBScalar::V_ts_star =
EvtComplex( -0.04029 - 0.000813 * cos( 60 / 180 * pi ),
-0.000813 * cos( 60 / 180 * pi ) );
const EvtComplex EvtBBScalar::a4 = EvtComplex( -387.3e-4, -121e-4 );
const EvtComplex EvtBBScalar::a6 = EvtComplex( -555.3e-4, -121e-4 );
const double EvtBBScalar::x[] = {420.96, -10485.50, 100639.97, -433916.61,
613780.15};
const double EvtBBScalar::y[] = {292.62, -735.73};
const double EvtBBScalar::m_s = 0.120;
const double EvtBBScalar::m_u = 0.029 * 0.120;
const double EvtBBScalar::m_b = 4.88;
EvtBBScalar::EvtBBScalar() : EvtDecayAmp(), _massRatio( 0 ), _baryonMassSum( 0 )
{
FormFactor dummy;
dummy.value = 0.36;
dummy.sigma1 = 0.43;
dummy.sigma2 = 0.0;
dummy.mV = 5.42;
_f1Map.insert( make_pair( string( "K" ), dummy ) );
dummy.sigma1 = 0.70;
dummy.sigma2 = 0.27;
_f0Map.insert( make_pair( string( "K" ), dummy ) );
dummy.value = 0.29;
dummy.sigma1 = 0.48;
dummy.sigma2 = 0.0;
dummy.mV = 5.32;
_f1Map.insert( make_pair( string( "pi" ), dummy ) );
dummy.sigma1 = 0.76;
dummy.sigma2 = 0.28;
_f0Map.insert( make_pair( string( "pi" ), dummy ) );
}
std::string EvtBBScalar::getName()
{
return "B_TO_2BARYON_SCALAR";
}
EvtBBScalar* EvtBBScalar::clone()
{
return new EvtBBScalar;
}
void EvtBBScalar::setKnownBaryonTypes( const EvtId& baryon )
{
int baryonId = EvtPDL::getStdHep( baryon );
if ( EvtPDL::getStdHep( EvtPDL::getId( "Lambda0" ) ) == baryonId or
EvtPDL::getStdHep( EvtPDL::getId( "anti-Lambda0" ) ) == baryonId ) {
_baryonCombination.set( Lambda );
} else if ( EvtPDL::getStdHep( EvtPDL::getId( "p+" ) ) == baryonId or
EvtPDL::getStdHep( EvtPDL::getId( "anti-p-" ) ) == baryonId ) {
_baryonCombination.set( Proton );
} else if ( EvtPDL::getStdHep( EvtPDL::getId( "n0" ) ) == baryonId or
EvtPDL::getStdHep( EvtPDL::getId( "anti-n0" ) ) == baryonId ) {
_baryonCombination.set( Neutron );
} else if ( EvtPDL::getStdHep( EvtPDL::getId( "Sigma0" ) ) == baryonId or
EvtPDL::getStdHep( EvtPDL::getId( "anti-Sigma0" ) ) == baryonId ) {
_baryonCombination.set( Sigma0 );
} else if ( EvtPDL::getStdHep( EvtPDL::getId( "Sigma-" ) ) == baryonId or
EvtPDL::getStdHep( EvtPDL::getId( "anti-Sigma+" ) ) == baryonId ) {
_baryonCombination.set( Sigma_minus );
} else if ( EvtPDL::getStdHep( EvtPDL::getId( "Xi0" ) ) == baryonId or
EvtPDL::getStdHep( EvtPDL::getId( "anti-Xi0" ) ) == baryonId ) {
_baryonCombination.set( Xi0 );
} else if ( EvtPDL::getStdHep( EvtPDL::getId( "Xi-" ) ) == baryonId or
EvtPDL::getStdHep( EvtPDL::getId( "anti-Xi+" ) ) == baryonId ) {
_baryonCombination.set( Xi_minus );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBBScalar::init: Don't know what to do with this type as the first or second baryon\n";
exit( 2 );
}
}
double EvtBBScalar::baryonF1F2( double t ) const
{
// check for known form factors for combination of baryons
if ( _baryonCombination.test( Lambda ) and _baryonCombination.test( Proton ) ) {
return -sqrt( 1.5 ) * G_p( t );
} else if ( _baryonCombination.test( Sigma0 ) and
_baryonCombination.test( Proton ) ) {
return -sqrt( 0.5 ) * ( G_p( t ) + 2 * G_n( t ) );
} else if ( _baryonCombination.test( Sigma_minus ) and
_baryonCombination.test( Neutron ) ) {
return -G_p( t ) - 2 * G_n( t );
} else if ( _baryonCombination.test( Xi0 ) and
_baryonCombination.test( Sigma_minus ) ) {
return G_p( t ) - G_n( t );
} else if ( _baryonCombination.test( Xi_minus ) and
_baryonCombination.test( Sigma0 ) ) {
return sqrt( 0.5 ) * ( G_p( t ) - G_n( t ) );
} else if ( _baryonCombination.test( Xi_minus ) and
_baryonCombination.test( Lambda ) ) {
return sqrt( 1.5 ) * ( G_p( t ) + G_n( t ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBBScalar::baryonF1F2: Don't know what to do with this type as the first or second baryon\n";
exit( 2 );
}
}
double EvtBBScalar::formFactorFit( double t, const vector<double>& params ) const
{
static const double gamma = 2.148;
static const double Lambda_0 = 0.3;
double result = 0;
for ( size_t i = 0; i < params.size(); ++i ) {
result += params[i] / pow( t, static_cast<int>( i + 1 ) );
}
return result * pow( log( t / pow( Lambda_0, 2 ) ), -gamma );
}
double EvtBBScalar::G_p( double t ) const
{
const vector<double> v_x( x, x + 5 );
return formFactorFit( t, v_x );
}
double EvtBBScalar::G_n( double t ) const
{
const vector<double> v_y( y, y + 2 );
return -formFactorFit( t, v_y );
}
double EvtBBScalar::baryon_gA( double t ) const
{
// check for known form factors for combination of baryons
if ( _baryonCombination.test( Lambda ) and _baryonCombination.test( Proton ) ) {
return -1 / sqrt( 6. ) * ( D_A( t ) + 3 * F_A( t ) );
} else if ( _baryonCombination.test( Sigma0 ) and
_baryonCombination.test( Proton ) ) {
return 1 / sqrt( 2. ) * ( D_A( t ) - F_A( t ) );
} else if ( _baryonCombination.test( Sigma_minus ) and
_baryonCombination.test( Neutron ) ) {
return D_A( t ) - F_A( t );
} else if ( _baryonCombination.test( Xi0 ) and
_baryonCombination.test( Sigma_minus ) ) {
return D_A( t ) + F_A( t );
} else if ( _baryonCombination.test( Xi_minus ) and
_baryonCombination.test( Sigma0 ) ) {
return 1 / sqrt( 2. ) * ( D_A( t ) + F_A( t ) );
} else if ( _baryonCombination.test( Xi_minus ) and
_baryonCombination.test( Lambda ) ) {
return -1 / sqrt( 6. ) * ( D_A( t ) - 3 * F_A( t ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBBScalar::baryon_gA: Don't know what to do with this type as the first or second baryon\n";
exit( 2 );
}
}
double EvtBBScalar::baryon_gP( double t ) const
{
// check for known form factors for combination of baryons
if ( _baryonCombination.test( Lambda ) and _baryonCombination.test( Proton ) ) {
return -1 / sqrt( 6. ) * ( D_P( t ) + 3 * F_P( t ) );
} else if ( _baryonCombination.test( Sigma0 ) and
_baryonCombination.test( Proton ) ) {
return 1 / sqrt( 2. ) * ( D_P( t ) - F_P( t ) );
} else if ( _baryonCombination.test( Sigma_minus ) and
_baryonCombination.test( Neutron ) ) {
return D_P( t ) - F_P( t );
} else if ( _baryonCombination.test( Xi0 ) and
_baryonCombination.test( Sigma_minus ) ) {
return D_P( t ) + F_P( t );
} else if ( _baryonCombination.test( Xi_minus ) and
_baryonCombination.test( Sigma0 ) ) {
return 1 / sqrt( 2. ) * ( D_P( t ) + F_P( t ) );
} else if ( _baryonCombination.test( Xi_minus ) and
_baryonCombination.test( Lambda ) ) {
return -1 / sqrt( 6. ) * ( D_P( t ) - 3 * F_P( t ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBBScalar::baryon_gP: Don't know what to do with this type as the first or second baryon\n";
exit( 2 );
}
}
double EvtBBScalar::baryon_fS( double t ) const
{
// check for known form factors for combination of baryons
if ( _baryonCombination.test( Lambda ) and _baryonCombination.test( Proton ) ) {
return -1 / sqrt( 6. ) * ( D_S( t ) + 3 * F_S( t ) );
} else if ( _baryonCombination.test( Sigma0 ) and
_baryonCombination.test( Proton ) ) {
return 1 / sqrt( 2. ) * ( D_S( t ) - F_S( t ) );
} else if ( _baryonCombination.test( Sigma_minus ) and
_baryonCombination.test( Neutron ) ) {
return D_S( t ) - F_S( t );
} else if ( _baryonCombination.test( Xi0 ) and
_baryonCombination.test( Sigma_minus ) ) {
return D_S( t ) + F_S( t );
} else if ( _baryonCombination.test( Xi_minus ) and
_baryonCombination.test( Sigma0 ) ) {
return 1 / sqrt( 2. ) * ( D_S( t ) + F_S( t ) );
} else if ( _baryonCombination.test( Xi_minus ) and
_baryonCombination.test( Lambda ) ) {
return -1 / sqrt( 6. ) * ( D_S( t ) - 3 * F_S( t ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBBScalar::baryon_fS: Don't know what to do with this type as the first or second baryon\n";
exit( 2 );
}
}
double EvtBBScalar::D_A( double t ) const
{
const double d_tilde[] = {x[0] - 1.5 * y[0], -478};
const vector<double> v_d_tilde( d_tilde, d_tilde + 2 );
return formFactorFit( t, v_d_tilde );
}
double EvtBBScalar::F_A( double t ) const
{
const double f_tilde[] = {2. / 3 * x[0] + 0.5 * y[0], -478};
const vector<double> v_f_tilde( f_tilde, f_tilde + 2 );
return formFactorFit( t, v_f_tilde );
}
double EvtBBScalar::D_P( double t ) const
{
const double d_bar[] = {1.5 * y[0] * _massRatio, /*-952*/ 0};
const vector<double> v_d_bar( d_bar, d_bar + 2 );
return formFactorFit( t, v_d_bar );
}
double EvtBBScalar::F_P( double t ) const
{
const double f_bar[] = {( x[0] - 0.5 * y[0] ) * _massRatio, /*-952*/ 0};
const vector<double> v_f_bar( f_bar, f_bar + 2 );
return formFactorFit( t, v_f_bar );
}
double EvtBBScalar::D_S( double t ) const
{
return -1.5 * _massRatio * G_n( t );
}
double EvtBBScalar::F_S( double t ) const
{
return ( G_p( t ) + 0.5 * G_n( t ) ) * _massRatio;
}
double EvtBBScalar::baryon_hA( double t ) const
{
return ( 1 / _massRatio * baryon_gP( t ) - baryon_gA( t ) ) *
pow( _baryonMassSum, 2 ) / t;
}
void EvtBBScalar::init()
{
// no arguments, daughter lambda p_bar pi
// charge conservation is checked by base class
checkNArg( 0 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::DIRAC );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::SCALAR );
EvtId baryon1 = getDaug( 0 );
EvtId baryon2 = getDaug( 1 );
EvtId scalar = getDaug( 2 );
int scalarId = EvtPDL::getStdHep( scalar );
// Different form factors for the B-pi or B-K transition.
if ( scalarId == EvtPDL::getStdHep( EvtPDL::getId( "pi+" ) ) or
scalarId == EvtPDL::getStdHep( EvtPDL::getId( "pi-" ) ) or
scalarId == EvtPDL::getStdHep( EvtPDL::getId( "pi0" ) ) ) {
_scalarType = "pi";
} else if ( scalarId == EvtPDL::getStdHep( EvtPDL::getId( "K+" ) ) or
scalarId == EvtPDL::getStdHep( EvtPDL::getId( "K-" ) ) or
scalarId == EvtPDL::getStdHep( EvtPDL::getId( "K0" ) ) or
scalarId == EvtPDL::getStdHep( EvtPDL::getId( "anti-K0" ) ) ) {
_scalarType = "K";
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBBScalar::init: Can only deal with Kaons or pions as the third particle\n"
<< "\tFound: " << scalarId << endl;
exit( 2 );
}
// check for known particles
setKnownBaryonTypes( baryon1 );
setKnownBaryonTypes( baryon2 );
double mass1 = EvtPDL::getMass( baryon1 );
double mass2 = EvtPDL::getMass( baryon2 );
// This whole model deals only with baryons that differ in s-u
if ( mass1 > mass2 )
_massRatio = ( mass1 - mass2 ) / ( m_s - m_u );
else
_massRatio = ( mass2 - mass1 ) / ( m_s - m_u );
_baryonMassSum = mass1 + mass2;
}
// initialize phasespace and calculate the amplitude
void EvtBBScalar::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4R B_Momentum = p->getP4Lab();
EvtDiracParticle* theLambda = dynamic_cast<EvtDiracParticle*>(
p->getDaug( 0 ) );
EvtDiracParticle* theAntiP = dynamic_cast<EvtDiracParticle*>(
p->getDaug( 1 ) );
EvtScalarParticle* theScalar = dynamic_cast<EvtScalarParticle*>(
p->getDaug( 2 ) );
EvtVector4R scalarMomentum = theScalar->getP4Lab();
// The amplitude consists of three matrix elements. These will be calculated one by one here.
// loop over all possible spin states
for ( int i = 0; i < 2; ++i ) {
EvtDiracSpinor lambdaPol = theLambda->spParent( i );
for ( int j = 0; j < 2; ++j ) {
EvtDiracSpinor antiP_Pol = theAntiP->spParent( j );
EvtVector4C theAmplitudePartA = amp_A( B_Momentum, scalarMomentum );
EvtComplex amplitude;
for ( int index = 0; index < 4; ++index ) {
amplitude += theAmplitudePartA.get( index ) *
( const_B * amp_B( theLambda, lambdaPol, theAntiP,
antiP_Pol, index ) +
const_C * amp_C( theLambda, lambdaPol, theAntiP,
antiP_Pol, index ) );
}
vertex( i, j, amplitude );
}
}
}
void EvtBBScalar::initProbMax()
{
// setProbMax(1);
setProbMax( 0.2 ); // found by trial and error
}
// Form factor f1 for B-pi transition
double EvtBBScalar::B_pi_f1( double t ) const
{
FormFactor f = _f1Map[_scalarType];
double mv2 = f.mV * f.mV;
return f.value / ( ( 1 - t / mv2 ) * ( 1 - f.sigma1 * t / mv2 +
f.sigma2 * t * t / mv2 / mv2 ) );
}
// Form factor f0 for B-pi transition
double EvtBBScalar::B_pi_f0( double t ) const
{
FormFactor f = _f0Map[_scalarType];
double mv2 = f.mV * f.mV;
return f.value / ( 1 - f.sigma1 * t / mv2 + f.sigma2 * t * t / mv2 / mv2 );
}
// constants of the B and C parts of the amplitude
const EvtComplex EvtBBScalar::const_B = V_ub * V_us_star * a1 -
V_tb * V_ts_star * a4;
const EvtComplex EvtBBScalar::const_C = 2 * a6 * V_tb * V_ts_star;
// part A of the amplitude, see hep-ph/0204185
const EvtVector4C EvtBBScalar::amp_A( const EvtVector4R& p4B,
const EvtVector4R& p4Scalar )
{
double mB2 = p4B.mass2();
double mScalar2 = p4Scalar.mass2();
double t = ( p4B - p4Scalar ).mass2();
return ( ( p4B + p4Scalar ) - ( mB2 - mScalar2 ) / t * ( p4B - p4Scalar ) ) *
B_pi_f1( t ) +
( mB2 - mScalar2 ) / t * ( p4B - p4Scalar ) * B_pi_f0( t );
}
// part B of the amplitude, Vector and Axial Vector parts
const EvtComplex EvtBBScalar::amp_B( const EvtDiracParticle* baryon1,
const EvtDiracSpinor& b1Pol,
const EvtDiracParticle* baryon2,
const EvtDiracSpinor& b2Pol, int index )
{
return amp_B_vectorPart( baryon1, b1Pol, baryon2, b2Pol, index ) -
amp_B_axialPart( baryon1, b1Pol, baryon2, b2Pol, index );
}
const EvtComplex EvtBBScalar::amp_B_vectorPart( const EvtDiracParticle* baryon1,
const EvtDiracSpinor& b1Pol,
const EvtDiracParticle* baryon2,
const EvtDiracSpinor& b2Pol,
int index )
{
double t = ( baryon1->getP4Lab() + baryon2->getP4Lab() ).mass2();
EvtGammaMatrix gamma;
for ( int i = 0; i < 4; ++i ) {
gamma += EvtTensor4C::g().get( index, i ) * EvtGammaMatrix::g( i );
}
// The F2 contribution that is written out in the paper is neglected here.
// see hep-ph/0204185
EvtDiracSpinor A = EvtComplex( baryonF1F2( t ) ) * b2Pol;
EvtDiracSpinor Adjb1Pol = b1Pol.adjoint();
EvtDiracSpinor gammaA = gamma * A;
return Adjb1Pol * gammaA;
// return b1Pol.adjoint()*(gamma*(EvtComplex(baryonF1F2(t))*b2Pol));
}
const EvtComplex EvtBBScalar::amp_B_axialPart( const EvtDiracParticle* baryon1,
const EvtDiracSpinor& b1Pol,
const EvtDiracParticle* baryon2,
const EvtDiracSpinor& b2Pol,
int index )
{
EvtGammaMatrix gamma;
for ( int i = 0; i < 4; ++i ) {
gamma += EvtTensor4C::g().get( index, i ) * EvtGammaMatrix::g( i );
}
double t = ( baryon1->getP4Lab() + baryon2->getP4Lab() ).mass2();
double mSum = baryon1->mass() + baryon2->mass();
EvtVector4C momentum_upper = ( baryon1->getP4Lab() + baryon2->getP4Lab() );
EvtVector4C momentum;
for ( int mu = 0; mu < 0; ++mu ) {
EvtComplex dummy;
for ( int i = 0; i < 4; ++i ) {
dummy += EvtTensor4C::g().get( index, i ) * momentum_upper.get( i );
}
momentum.set( mu, dummy );
}
return b1Pol.adjoint() *
( ( ( baryon_gA( t ) * gamma + EvtGammaMatrix::id() * baryon_hA( t ) /
mSum * momentum.get( index ) ) *
EvtGammaMatrix::g5() ) *
b2Pol );
}
// part C of the amplitude, Scalar and Pseudoscalar parts
const EvtComplex EvtBBScalar::amp_C( const EvtDiracParticle* baryon1,
const EvtDiracSpinor& b1Pol,
const EvtDiracParticle* baryon2,
const EvtDiracSpinor& b2Pol, int index )
{
EvtVector4C baryonSumP4_upper = baryon1->getP4Lab() + baryon2->getP4Lab();
EvtVector4C baryonSumP4;
for ( int mu = 0; mu < 4; ++mu ) {
EvtComplex dummy;
for ( int i = 0; i < 4; ++i ) {
dummy += EvtTensor4C::g().get( mu, i ) * baryonSumP4_upper.get( i );
}
baryonSumP4.set( mu, dummy );
}
double t = ( baryon1->getP4Lab() + baryon2->getP4Lab() ).mass2();
return baryonSumP4.get( index ) / ( m_b - m_u ) *
( amp_C_scalarPart( b1Pol, b2Pol, t ) +
amp_C_pseudoscalarPart( b1Pol, b2Pol, t ) );
}
const EvtComplex EvtBBScalar::amp_C_scalarPart( const EvtDiracSpinor& b1Pol,
const EvtDiracSpinor& b2Pol,
double t )
{
return baryon_fS( t ) * b1Pol.adjoint() * b2Pol;
}
const EvtComplex EvtBBScalar::amp_C_pseudoscalarPart(
const EvtDiracSpinor& b1Pol, const EvtDiracSpinor& b2Pol, double t )
{
return baryon_gP( t ) * b1Pol.adjoint() * ( EvtGammaMatrix::g5() * b2Pol );
}
diff --git a/src/EvtGenModels/EvtBCSFF.cpp b/src/EvtGenModels/EvtBCSFF.cpp
index f151194..3f39e50 100644
--- a/src/EvtGenModels/EvtBCSFF.cpp
+++ b/src/EvtGenModels/EvtBCSFF.cpp
@@ -1,147 +1,126 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBCSFF.cc
-//
-// Description: form factors for Bc->Slnu
-//
-// Modification history:
-//
-// AVL Jul 6, 2012 Module created
-// AVL Feb 5, 2018 D0, D*0 modes added
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBCSFF.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <string>
using namespace std;
EvtBCSFF::EvtBCSFF( int idS, int fit )
{
idScalar = idS;
whichfit = fit;
MBc = EvtPDL::getMeanMass( EvtPDL::getId( "B_c+" ) );
MD0 = EvtPDL::getMeanMass( EvtPDL::getId( "D0" ) );
return;
}
void EvtBCSFF::getscalarff( EvtId /*p*/, EvtId /*d*/, double t, double /*mass*/,
double* fpf, double* f0f )
{
double q2 = t;
if ( whichfit == 0 ) {
*fpf = 1;
*f0f = 0;
return;
}
if ( idScalar == EvtPDL::getId( "chi_c0" ).getId() ) { // Bc -> chi_c0
if ( whichfit == 3 ) { // FF from Wang et al 10.1103/PhysRevD.79.114018
double ratio = q2 / ( MBc * MBc );
double fpf_0 = 0.47;
double fpf_c1 = 2.03;
double fpf_c2 = 0.43;
double f0f_0 = 0.47;
double f0f_c1 = -0.45;
double f0f_c2 = -1.31;
*fpf = fpf_0 * exp( fpf_c1 * ratio + fpf_c2 * ratio * ratio );
*f0f = f0f_0 * exp( f0f_c1 * ratio + f0f_c2 * ratio * ratio );
return;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtBCSFF" )
<< "Must choose 0 (fpf = 1) or 3 (Wang).\n";
::abort();
}
} else if ( idScalar == EvtPDL::getId( "D0" ).getId() ||
idScalar == EvtPDL::getId( "anti-D0" ).getId() ) { // Bc -> D0
if ( whichfit == 1 ) { // FF from Kiselev:2002vz, tables III, IV
double q2invmass = q2 / ( MBc * MBc - MD0 * MD0 );
double den = 1 - q2 / ( 5.0 * 5.0 );
if ( fabs( den ) < 1e-10 ) {
*fpf = 0;
*f0f = 0;
} else {
double fPlus = 0.32 / den;
double fMinus = -0.34 / den;
*fpf = fPlus;
*f0f = q2invmass * fMinus + fPlus;
}
} else if ( whichfit == 2 ) { // FF from Ebert:2003cn, Fig 9
double ratio = q2 / MBc / MBc;
double const fPlus_0 = 0.143, fPlus_a = 0.7, fPlus_b = 2.13;
double const f0_0 = 0.136, f0_a = 1.63, f0_b = -0.139;
*fpf = fPlus_0 / ( 1 - fPlus_a * ratio - fPlus_b * ratio * ratio );
*f0f = f0_0 / ( 1 - f0_a * ratio - f0_b * ratio * ratio );
return;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtBCSFF" )
<< "Should choose 1 (Kiselev:2002vz) or 2 (Ebert:2003cn).\n";
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtBCSFF" )
<< "Only chi_c0 and D0/anti-D0 implemented.\n";
::abort();
}
}
void EvtBCSFF::getvectorff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getvectorff in EvtBCSFF.\n";
::abort();
}
void EvtBCSFF::gettensorff( EvtId /*p*/, EvtId /*d*/, double /*t*/,
double /*mass*/, double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :gettensorff in EvtBCSFF.\n";
::abort();
}
void EvtBCSFF::getbaryonff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtBCSFF.\n";
::abort();
}
void EvtBCSFF::getdiracff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getdiracff in EvtBCSFF.\n";
::abort();
}
void EvtBCSFF::getraritaff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtBCSFF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtBCTFF.cpp b/src/EvtGenModels/EvtBCTFF.cpp
index 531954b..fb8428c 100644
--- a/src/EvtGenModels/EvtBCTFF.cpp
+++ b/src/EvtGenModels/EvtBCTFF.cpp
@@ -1,130 +1,110 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBCTFF.cc
-//
-// Description: form factors for Bc->Tlnu
-//
-// Modification history:
-//
-// AVL Jul 6, Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBCTFF.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <string>
using namespace std;
EvtBCTFF::EvtBCTFF( int idT, int fit )
{
idTensor = idT;
whichfit = fit;
MBc = EvtPDL::getMeanMass( EvtPDL::getId( "B_c+" ) );
return;
}
void EvtBCTFF::getscalarff( EvtId, EvtId, double, double, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getscalarff in EvtBCTFF.\n";
::abort();
}
void EvtBCTFF::getvectorff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getvectorff in EvtBCTFF.\n";
::abort();
}
void EvtBCTFF::gettensorff( EvtId /*p*/, EvtId /*d*/, double t, double /*mass*/,
double* hf, double* kf, double* bpf, double* bmf )
{
double q2 = t;
if ( whichfit == 0 ) {
*hf = 0;
*kf = 0;
*bpf = 0;
*bmf = 0;
return;
}
if ( idTensor == EvtPDL::getId( "chi_c2" ).getId() ) { // Bc -> chi_c1
if ( whichfit == 3 ) { // FF from Wang et al 10.1103/PhysRevD.79.114018
double ratio = q2 / ( MBc * MBc );
double hf_0 = 0.022;
double hf_c1 = 2.58;
double hf_c2 = 0.61;
double kf_0 = 1.27;
double kf_c1 = 1.61;
double kf_c2 = 0.24;
double bpf_0 = -0.011;
double bpf_c1 = 2.27;
double bpf_c2 = 0.46;
double bmf_0 = 0.020;
double bmf_c1 = 2.48;
double bmf_c2 = 0.56;
*hf = hf_0 * exp( hf_c1 * ratio + hf_c2 * ratio * ratio );
*kf = kf_0 * exp( kf_c1 * ratio + kf_c2 * ratio * ratio );
*bpf = bpf_0 * exp( bpf_c1 * ratio + bpf_c2 * ratio * ratio );
*bmf = bmf_0 * exp( bmf_c1 * ratio + bmf_c2 * ratio * ratio );
return;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Must choose 0 (a1f = 1) or 3 (Wang).\n";
::abort();
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "chi_c2 is the only (pseudo)vector decay implemented in EvtBCTFF.\n";
::abort();
}
}
void EvtBCTFF::getbaryonff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtBCTFF.\n";
::abort();
}
void EvtBCTFF::getdiracff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getdiracff in EvtBCTFF.\n";
::abort();
}
void EvtBCTFF::getraritaff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtBCTFF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtBCVFF.cpp b/src/EvtGenModels/EvtBCVFF.cpp
index 9b49bf7..c43b2ac 100644
--- a/src/EvtGenModels/EvtBCVFF.cpp
+++ b/src/EvtGenModels/EvtBCVFF.cpp
@@ -1,236 +1,215 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBCVFF.cc
-//
-// Description: form factors for Bc->Vlnu
-//
-// Modification history:
-//
-// AVL Jul 6, 2012 Module created
-// AVL Feb 5, 2018 D0, D*0 modes added
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBCVFF.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <string>
using namespace std;
EvtBCVFF::EvtBCVFF( int idV, int fit )
{
idVector = idV;
whichfit = fit;
MBc = EvtPDL::getMeanMass( EvtPDL::getId( "B_c+" ) );
MD0 = EvtPDL::getMeanMass( EvtPDL::getId( "D*0" ) );
Mpsi = EvtPDL::getMeanMass( EvtPDL::getId( "J/psi" ) );
Mpsi2S = EvtPDL::getMeanMass( EvtPDL::getId( "psi(2S)" ) );
kappa = Mpsi / Mpsi2S;
Mchi = EvtPDL::getMeanMass( EvtPDL::getId( "chi_c1" ) );
return;
}
void EvtBCVFF::getvectorff( EvtId, EvtId, double t, double, double* a1f,
double* a2f, double* vf, double* a0f )
{
double q2 = t;
if ( whichfit == 0 ) {
*vf = 0;
*a0f = 0;
*a1f = 1;
*a2f = 0;
return;
}
if ( idVector == EvtPDL::getId( "J/psi" ).getId() ) { // Bc -> J/psi
if ( whichfit == 1 ) { // SR form factor set from [Kiselev, hep-ph/0211021]
double Mpole2 = 4.5 * 4.5, den = 1. / ( 1. - q2 / Mpole2 );
double FV = 0.11 * den, FAp = -0.074 * den, FA0 = 5.9 * den,
FAm = 0.12 * den;
*vf = ( MBc + Mpsi ) * FV;
*a2f = -( MBc + Mpsi ) * FAp;
*a1f = FA0 / ( MBc + Mpsi );
*a0f = ( q2 * FAm + ( MBc + Mpsi ) * ( *a1f ) -
( MBc - Mpsi ) * ( *a2f ) ) /
( 2 * Mpsi );
return;
} else if ( whichfit ==
2 ) { // form factor set from [Ebert, hep-ph/0306306]
*vf = ( 0.49077824756158533 - 0.0012925655191347828 * q2 ) /
( 1 - 0.06292520325875656 * q2 );
*a0f = ( 0.4160345034630221 - 0.0024720095310225023 * q2 ) /
( 1 - 0.061603451915567785 * q2 );
*a1f = ( 0.4970212860605933 - 0.0067519730024654745 * q2 ) /
( 1 - 0.050487026667172176 * q2 );
*a2f = ( 0.7315284919705497 + 0.0014263826220727142 * q2 -
0.0006946090066269195 * q2 * q2 ) /
( 1 - 0.04885587273651653 * q2 );
return;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtBCVFF" )
<< "Must choose 0 (a1f = 1), 1 (Kiselev), or 2 (Ebert).\n";
::abort();
}
} else if ( idVector ==
EvtPDL::getId( "psi(2S)" ).getId() ) { // Bc -> psi((2S)
if ( whichfit == 1 ) {
double Mpole2 = 4.5 * 4.5, den = 1. / ( 1. - q2 / Mpole2 );
double FV = 0.11 * den * kappa / 3.1,
FAp = -0.074 * den * kappa / 4.9,
FA0 = 5.9 * den * kappa / 3.5, FAm = 0.12 * den * kappa / 2.3;
*vf = ( MBc + Mpsi2S ) * FV;
*a2f = -( MBc + Mpsi2S ) * FAp;
*a1f = FA0 / ( MBc + Mpsi2S );
*a0f = ( q2 * FAm + ( MBc + Mpsi2S ) * ( *a1f ) -
( MBc - Mpsi2S ) * ( *a2f ) ) /
( 2 * Mpsi2S );
return;
} else if ( whichfit == 2 ) {
*vf = ( 0.24177223968739653 - 0.053589051007278135 * q2 ) /
( 1 - 0.0977848994260899 * q2 );
*a0f = ( 0.23996026570086615 - 0.03530198514007337 * q2 ) /
( 1 - 0.09371162519983989 * q2 );
*a1f = ( 0.17418379258849329 - 0.004129699022085851 * q2 * q2 ) /
( 1 + 0.06607665248402918 * q2 );
*a2f = ( 0.1352376939112041 - 0.040361722565209444 * q2 +
0.003343515369431853 * q2 * q2 ) /
( 1 - 0.1463698128333418 * q2 );
return;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtBCVFF" )
<< "Must choose 0 (a1f = 1), 1 (Kiselev), or 2 (Ebert).\n";
::abort();
}
} else if ( idVector == EvtPDL::getId( "chi_c1" ).getId() ) { // Bc -> chi_c1
if ( whichfit == 3 ) { // FF from Wang et al 10.1103/PhysRevD.79.114018
double SoverD = ( MBc + Mchi ) / ( MBc - Mchi );
double DoverS = ( MBc - Mchi ) / ( MBc + Mchi );
double ratio = q2 / ( MBc * MBc );
double vf_0 = SoverD * 0.36;
double vf_c1 = 1.98;
double vf_c2 = 0.43;
double a2f_0 = SoverD * 0.15;
double a2f_c1 = 1.22;
double a2f_c2 = -0.08;
double a1f_0 = DoverS * 0.85;
double a1f_c1 = -0.51;
double a1f_c2 = -1.38;
double a0f_0 = 0.13;
double a0f_c1 = 2.99;
double a0f_c2 = 0.023;
*vf = vf_0 * exp( vf_c1 * ratio + vf_c2 * ratio * ratio );
*a2f = a2f_0 * exp( a2f_c1 * ratio + a2f_c2 * ratio * ratio );
*a1f = a1f_0 * exp( a1f_c1 * ratio + a1f_c2 * ratio * ratio );
*a0f = a0f_0 * exp( a0f_c1 * ratio + a0f_c2 * ratio * ratio );
return;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtBCVFF" )
<< "Must choose 0 (a1f = 1) or 3 (Wang).\n";
::abort();
}
} else if ( idVector == EvtPDL::getId( "D*0" ).getId() ||
idVector == EvtPDL::getId( "anti-D*0" ).getId() ) {
if ( whichfit == 1 ) {
// SR form factor set from Kiselev, hep-ph/0211021
double Mpole2 = 6.2 * 6.2, den = ( 1. - q2 / Mpole2 );
if ( fabs( den ) < 1e-10 ) {
*vf = 0;
*a2f = 0;
*a1f = 0;
*a0f = 0;
} else {
double FV = 0.20 / den, FAp = -0.062 / den, FA0 = 3.6,
FAm = 0.11 / den;
*vf = ( MBc + MD0 ) * FV;
*a2f = -( MBc + MD0 ) * FAp;
*a1f = FA0 / ( MBc + MD0 );
*a0f = ( q2 * FAm + ( MBc + MD0 ) * ( *a1f ) -
( MBc - MD0 ) * ( *a2f ) ) /
( 2 * MD0 );
}
return;
} else if ( whichfit == 2 ) {
// form factors from Ebert, hep-ph/0306306
double ratio = q2 / MBc / MBc;
double const fV_0 = 0.202, fV_a = 1.38, fV_b = 1.31;
double const fA2_0 = 0.22, fA2_a = 2.44, fA2_b = -1.21;
double const fA0_0 = 0.144, fA0_a = 1.18, fA0_b = 1.39;
double const fA1_0 = 0.174, fA1_a = 1.69, fA1_b = -0.219;
*vf = fV_0 / ( 1 - fV_a * ratio - fV_b * ratio * ratio );
*a2f = fA2_0 / ( 1 - fA2_a * ratio - fA2_b * ratio * ratio );
*a0f = fA0_0 / ( 1 - fA0_a * ratio - fA0_b * ratio * ratio );
*a1f = fA1_0 / ( 1 - fA1_a * ratio - fA1_b * ratio * ratio );
return;
} else {
EvtGenReport( EVTGEN_ERROR, "BCVFF" )
<< "FF should be 0 (a1f = 1), 1 (Kiselev 2002) or 2 (Ebert).\n";
::abort();
}
} else {
EvtGenReport( EVTGEN_ERROR, "ECVFF" )
<< "Only J/psi, psi(2S), chi_c1 and D*0/anti-D*0 implemented.\n";
::abort();
}
}
void EvtBCVFF::getscalarff( EvtId, EvtId, double, double, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getscalarff in EvtBCVFF.\n";
::abort();
}
void EvtBCVFF::gettensorff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :gettensorff in EvtBCVFF.\n";
::abort();
}
void EvtBCVFF::getbaryonff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtBCVFF.\n";
::abort();
}
void EvtBCVFF::getdiracff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getdiracff in EvtBCVFF.\n";
::abort();
}
void EvtBCVFF::getraritaff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtBCVFF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtBCVFF2.cpp b/src/EvtGenModels/EvtBCVFF2.cpp
index b95fefa..247dccc 100644
--- a/src/EvtGenModels/EvtBCVFF2.cpp
+++ b/src/EvtGenModels/EvtBCVFF2.cpp
@@ -1,148 +1,127 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBCVFF2.cc
-//
-// Description: form factors for B->Vlnu
-//
-// Modification history:
-//
-// AVL Jan 29, 2013, Module created
-//
-//------------------------------------------------------------------------
-//
-
#include "EvtGenModels/EvtBCVFF2.hh"
using namespace std;
EvtBCVFF2::EvtBCVFF2( int idV, int fit )
{
idVector = idV;
whichfit = fit;
//cout<<"==== EvtBCVFF2:: idVector="<<idVector<<" whichfit="<<whichfit<<endl;
return;
}
void EvtBCVFF2::getvectorff( EvtId, EvtId, double t, double, double* a1f,
double* a2f, double* vf, double* a0f )
{
double q2 = t;
if ( whichfit == 0 ) {
*vf = 0;
*a0f = 0;
*a1f = 1;
*a2f = 0;
return;
};
if ( idVector == EvtPDL::getId( "J/psi" ).getId() ) { // Bc -> J/psi
if ( whichfit == 1 ) { // SR form factor set from [Kiselev, hep-ph/0211021]
double Mbc = 6.277, Mpsi = 3.0967; // Experimental values
double Mpole2 = 4.5 * 4.5, den = 1. / ( 1. - q2 / Mpole2 );
double FV = 0.11 * den, FAp = -0.071 * den, FA0 = 5.9 * den,
FAm = 0.12 * den;
*vf = ( Mbc + Mpsi ) * FV;
*a2f = -( Mbc + Mpsi ) * FAp;
*a1f = FA0 / ( Mbc + Mpsi );
*a0f = ( q2 * FAm + ( Mbc + Mpsi ) * ( *a1f ) -
( Mbc - Mpsi ) * ( *a2f ) ) /
( 2 * Mpsi );
return;
} else if ( whichfit ==
2 ) { // form factor set from [Ebert, hep-ph/0306306]
*vf = ( 0.49077824756158533 - 0.0012925655191347828 * q2 ) /
( 1 - 0.06292520325875656 * q2 );
*a0f = ( 0.4160345034630221 - 0.0024720095310225023 * q2 ) /
( 1 - 0.061603451915567785 * q2 );
*a1f = ( 0.4970212860605933 - 0.0067519730024654745 * q2 ) /
( 1 - 0.050487026667172176 * q2 );
*a2f = ( 0.7315284919705497 + 0.0014263826220727142 * q2 -
0.0006946090066269195 * q2 * q2 ) /
( 1 - 0.04885587273651653 * q2 );
return;
};
} else if ( idVector ==
EvtPDL::getId( "psi(2S)" ).getId() ) { // Bc -> psi((2S)
if ( whichfit == 1 ) {
////cout<<"BC2:: psi2S, Kiselev, q2="<<q2<<endl;
double Mbc = 6.277, Mpsi = 3.0967, Mpsi2S = 3.686,
kappa = Mpsi / Mpsi2S; // Experimental values
double Mpole2 = 4.5 * 4.5, den = 1. / ( 1. - q2 / Mpole2 );
double FV = 0.11 * den * kappa / 3.1,
FAp = -0.071 * den * kappa / 4.9,
FA0 = 5.9 * den * kappa / 3.5, FAm = 0.12 * den * kappa / 2.3;
*vf = ( Mbc + Mpsi2S ) * FV;
*a2f = -( Mbc + Mpsi2S ) * FAp;
*a1f = FA0 / ( Mbc + Mpsi2S );
*a0f = ( q2 * FAm + ( Mbc + Mpsi2S ) * ( *a1f ) -
( Mbc - Mpsi2S ) * ( *a2f ) ) /
( 2 * Mpsi2S );
return;
} else if ( whichfit == 2 ) {
////cout<<"BC2:: psi2S, Ebert, q2="<<q2<<endl;
*vf = ( 0.24177223968739653 - 0.053589051007278135 * q2 ) /
( 1 - 0.0977848994260899 * q2 );
*a0f = ( 0.23996026570086615 - 0.03530198514007337 * q2 ) /
( 1 - 0.09371162519983989 * q2 );
*a1f = ( 0.17418379258849329 - 0.004129699022085851 * q2 * q2 ) /
( 1 + 0.06607665248402918 * q2 );
*a2f = ( 0.1352376939112041 - 0.040361722565209444 * q2 +
0.003343515369431853 * q2 * q2 ) /
( 1 - 0.1463698128333418 * q2 );
return;
};
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtBCVFF2.\n";
::abort();
};
}
void EvtBCVFF2::getscalarff( EvtId, EvtId, double, double, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtBCVFF2.\n";
::abort();
}
void EvtBCVFF2::gettensorff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtBCVFF2.\n";
::abort();
}
void EvtBCVFF2::getbaryonff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtBCVFF2.\n";
::abort();
}
void EvtBCVFF2::getdiracff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getdiracff in EvtBCVFF2.\n";
::abort();
}
void EvtBCVFF2::getraritaff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtBCVFF2.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtBHadronic.cpp b/src/EvtGenModels/EvtBHadronic.cpp
index 8761afa..831f897 100644
--- a/src/EvtGenModels/EvtBHadronic.cpp
+++ b/src/EvtGenModels/EvtBHadronic.cpp
@@ -1,299 +1,279 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBHadronic.cc
-//
-// Description: Model for hadronic B decays. Uses naive factorization.
-//
-// Modification history:
-//
-// RYD June 14, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBHadronic.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtISGW2FF.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtBHadronic::getName()
{
return "BHADRONIC";
}
EvtBHadronic* EvtBHadronic::clone()
{
return new EvtBHadronic;
}
void EvtBHadronic::init()
{
// check that there are 2 argument
checkNArg( 2 );
}
void EvtBHadronic::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId DST0 = EvtPDL::getId( "D*0" );
static EvtId D3P10 = EvtPDL::getId( "D'_10" );
static EvtId D3P20 = EvtPDL::getId( "D_2*0" );
static EvtId D3P00 = EvtPDL::getId( "D_0*0" );
static EvtId D1P10 = EvtPDL::getId( "D_10" );
static EvtISGW2FF ffmodel;
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4R p4[MAX_DAUG];
p->mass();
int i, j;
for ( i = 0; i < getNDaug(); i++ ) {
p4[i] = p->getDaug( i )->getP4();
}
int bcurrent, wcurrent;
int nbcurrent = 0;
int nwcurrent = 0;
bcurrent = (int)getArg( 0 );
wcurrent = (int)getArg( 1 );
EvtVector4C jb[5], jw[5];
EvtTensor4C g, tds;
EvtVector4R p4b;
p4b.set( p->mass(), 0.0, 0.0, 0.0 );
EvtVector4R q;
double q2;
EvtComplex ep_meson_bb[5];
double f, gf, ap, am;
double fp, fm;
double hf, kf, bp, bm;
EvtVector4R pp, pm;
EvtVector4C ep_meson_b[5];
switch ( bcurrent ) {
// D0
case 1:
q = p4b - p4[0];
q2 = q * q;
nbcurrent = 1;
ffmodel.getscalarff( B0, D0, EvtPDL::getMeanMass( D0 ),
EvtPDL::getMeanMass( getDaugs()[1] ), &fp, &fm );
jb[0] = EvtVector4C( fp * ( p4b + p4[0] ) - fm * q );
break;
// D*
case 2:
q = p4b - p4[0];
q2 = q * q;
nbcurrent = 3;
ffmodel.getvectorff( B0, DST0, EvtPDL::getMeanMass( DST0 ), q2, &f,
&gf, &ap, &am );
g.setdiag( 1.0, -1.0, -1.0, -1.0 );
tds = -f * g -
ap * ( EvtGenFunctions::directProd( p4b, p4b ) +
EvtGenFunctions::directProd( p4b, p4[0] ) ) -
gf * EvtComplex( 0.0, 1.0 ) *
dual( EvtGenFunctions::directProd( p4[0] + p4b,
p4b - p4[0] ) ) -
am * ( ( EvtGenFunctions::directProd( p4b, p4b ) -
EvtGenFunctions::directProd( p4b, p4[0] ) ) );
jb[0] = tds.cont1( p->getDaug( 0 )->epsParent( 0 ).conj() );
jb[1] = tds.cont1( p->getDaug( 0 )->epsParent( 1 ).conj() );
jb[2] = tds.cont1( p->getDaug( 0 )->epsParent( 2 ).conj() );
break;
// D1
case 3:
q = p4b - p4[0];
q2 = q * q;
nbcurrent = 3;
ffmodel.getvectorff( B0, D3P10, EvtPDL::getMeanMass( D3P10 ), q2,
&f, &gf, &ap, &am );
g.setdiag( 1.0, -1.0, -1.0, -1.0 );
tds = -f * g -
ap * ( EvtGenFunctions::directProd( p4b, p4b ) +
EvtGenFunctions::directProd( p4b, p4[0] ) ) -
gf * EvtComplex( 0.0, 1.0 ) *
dual( EvtGenFunctions::directProd( p4[0] + p4b,
p4b - p4[0] ) ) -
am * ( ( EvtGenFunctions::directProd( p4b, p4b ) -
EvtGenFunctions::directProd( p4b, p4[0] ) ) );
jb[0] = tds.cont1( p->getDaug( 0 )->epsParent( 0 ).conj() );
jb[1] = tds.cont1( p->getDaug( 0 )->epsParent( 1 ).conj() );
jb[2] = tds.cont1( p->getDaug( 0 )->epsParent( 2 ).conj() );
break;
// D2*
case 4:
q = p4b - p4[0];
q2 = q * q;
nbcurrent = 5;
ffmodel.gettensorff( B0, D3P20, EvtPDL::getMeanMass( D3P20 ), q2,
&hf, &kf, &bp, &bm );
g.setdiag( 1.0, -1.0, -1.0, -1.0 );
ep_meson_b[0] =
( ( p->getDaug( 0 )->epsTensorParent( 0 ) ).cont2( p4b ) ).conj();
ep_meson_b[1] =
( ( p->getDaug( 0 )->epsTensorParent( 1 ) ).cont2( p4b ) ).conj();
ep_meson_b[2] =
( ( p->getDaug( 0 )->epsTensorParent( 2 ) ).cont2( p4b ) ).conj();
ep_meson_b[3] =
( ( p->getDaug( 0 )->epsTensorParent( 3 ) ).cont2( p4b ) ).conj();
ep_meson_b[4] =
( ( p->getDaug( 0 )->epsTensorParent( 4 ) ).cont2( p4b ) ).conj();
pp = p4b + p4[0];
pm = p4b - p4[0];
ep_meson_bb[0] = ep_meson_b[0] * ( p4b );
ep_meson_bb[1] = ep_meson_b[1] * ( p4b );
ep_meson_bb[2] = ep_meson_b[2] * ( p4b );
ep_meson_bb[3] = ep_meson_b[3] * ( p4b );
ep_meson_bb[4] = ep_meson_b[4] * ( p4b );
jb[0] = EvtComplex( 0.0, ( 1.0 ) * hf ) *
dual( EvtGenFunctions::directProd( pp, pm ) )
.cont2( ep_meson_b[0] ) -
kf * ep_meson_b[0] - bp * ep_meson_bb[0] * pp -
bm * ep_meson_bb[0] * pm;
jb[1] = EvtComplex( 0.0, ( 1.0 ) * hf ) *
dual( EvtGenFunctions::directProd( pp, pm ) )
.cont2( ep_meson_b[1] ) -
kf * ep_meson_b[1] - bp * ep_meson_bb[1] * pp -
bm * ep_meson_bb[1] * pm;
jb[2] = EvtComplex( 0.0, ( 1.0 ) * hf ) *
dual( EvtGenFunctions::directProd( pp, pm ) )
.cont2( ep_meson_b[2] ) -
kf * ep_meson_b[2] - bp * ep_meson_bb[2] * pp -
bm * ep_meson_bb[2] * pm;
jb[3] = EvtComplex( 0.0, ( 1.0 ) * hf ) *
dual( EvtGenFunctions::directProd( pp, pm ) )
.cont2( ep_meson_b[3] ) -
kf * ep_meson_b[3] - bp * ep_meson_bb[3] * pp -
bm * ep_meson_bb[3] * pm;
jb[4] = EvtComplex( 0.0, ( 1.0 ) * hf ) *
dual( EvtGenFunctions::directProd( pp, pm ) )
.cont2( ep_meson_b[4] ) -
kf * ep_meson_b[4] - bp * ep_meson_bb[4] * pp -
bm * ep_meson_bb[4] * pm;
break;
// D_0*
case 5:
q = p4b - p4[0];
q2 = q * q;
double f, gf, ap, am;
nbcurrent = 3;
ffmodel.getvectorff( B0, D1P10, EvtPDL::getMeanMass( D1P10 ), q2,
&f, &gf, &ap, &am );
g.setdiag( 1.0, -1.0, -1.0, -1.0 );
tds = -f * g -
ap * ( EvtGenFunctions::directProd( p4b, p4b ) +
EvtGenFunctions::directProd( p4b, p4[0] ) ) +
gf * EvtComplex( 0.0, 1.0 ) *
dual( EvtGenFunctions::directProd( p4[0] + p4b,
p4b - p4[0] ) ) -
am * ( ( EvtGenFunctions::directProd( p4b, p4b ) -
EvtGenFunctions::directProd( p4b, p4[0] ) ) );
jb[0] = tds.cont1( p->getDaug( 0 )->epsParent( 0 ).conj() );
jb[1] = tds.cont1( p->getDaug( 0 )->epsParent( 1 ).conj() );
jb[2] = tds.cont1( p->getDaug( 0 )->epsParent( 2 ).conj() );
break;
// D_1
case 6:
q = p4b - p4[0];
q2 = q * q;
nbcurrent = 1;
ffmodel.getscalarff( B0, D3P00, EvtPDL::getMeanMass( D3P00 ), q2,
&fp, &fm );
jb[0] = fp * ( p4b + p4[0] ) + fm * q;
break;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "In EvtBHadronic, unknown hadronic current." << endl;
}
double norm;
switch ( wcurrent ) {
case 1:
case 3:
case 4:
nwcurrent = 1;
jw[0] = p4[getNDaug() - 1];
break;
case 2:
case 5:
case 6:
nwcurrent = 3;
norm = 1.0 /
sqrt( p4[1].get( 0 ) * p4[1].get( 0 ) / p4[1].mass2() - 1.0 );
jw[0] = norm * p->getDaug( getNDaug() - 1 )->epsParent( 0 );
jw[1] = norm * p->getDaug( getNDaug() - 1 )->epsParent( 1 );
jw[2] = norm * p->getDaug( getNDaug() - 1 )->epsParent( 2 );
break;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "In EvtBHadronic, unknown W current." << endl;
}
if ( nbcurrent == 1 && nwcurrent == 1 ) {
vertex( jb[0] * jw[0] );
return;
}
if ( nbcurrent == 1 ) {
for ( j = 0; j < nwcurrent; j++ ) {
vertex( j, jb[0] * jw[j] );
}
return;
}
if ( nwcurrent == 1 ) {
for ( j = 0; j < nbcurrent; j++ ) {
vertex( j, jb[j] * jw[0] );
}
return;
}
for ( j = 0; j < nbcurrent; j++ ) {
for ( i = 0; i < nwcurrent; i++ ) {
vertex( j, i, jb[j] * jw[i] );
}
}
return;
}
diff --git a/src/EvtGenModels/EvtBLLNuL.cpp b/src/EvtGenModels/EvtBLLNuL.cpp
index 1a0130e..73e5b7b 100644
--- a/src/EvtGenModels/EvtBLLNuL.cpp
+++ b/src/EvtGenModels/EvtBLLNuL.cpp
@@ -1,146 +1,128 @@
-//--------------------------------------------------------------------------
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtBLLNuL.cpp
-//
-// Description: The main file for the model "BLLNUL" which simulates
-// the rare four-leptonic B-decays
-// B^-(p) -> ell^+(k_1) ell^-(k_2) neu (k_3) ell^-(k_4)
-//
-// Modification history:
-//
-// Anna Danilina (anna.danilina@cern.ch) and
-// Nikolai Nikitin (Nikolai.Nikitine@cern.ch) Nov 2018 Module created
-// John B Code optimisations
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBLLNuL.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSpinType.hh"
EvtBLLNuL::EvtBLLNuL() : calcAmp_()
{
}
std::string EvtBLLNuL::getName()
{
// The model name
return "BLLNUL";
}
EvtDecayBase* EvtBLLNuL::clone()
{
return new EvtBLLNuL();
}
void EvtBLLNuL::init()
{
// check that there are 4 daughters
checkNDaug( 4 );
// We expect that the parent to be a scalar (B meson) and
// the daughters to be ell+ (k1), ell- (k2), neutrino (k3)
// and the last lepton ell- (k4)
// Check spin types
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::DIRAC ); // ell+(k_1)
checkSpinDaughter( 1, EvtSpinType::DIRAC ); // ell-(k_2)
checkSpinDaughter( 2, EvtSpinType::NEUTRINO ); // neu (k_3)
checkSpinDaughter( 3, EvtSpinType::DIRAC ); // ell-(k_4)
// Check that we have a charged B parent
static EvtIdSet BMesons( "B-", "B+" );
if ( !BMesons.contains( getParentId() ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtBLLNuL" )
<< "Expecting the parent to be a charged B. Found PDG = "
<< EvtPDL::getStdHep( getParentId() ) << std::endl;
::abort();
}
// Make sure the first two leptons are charged conjugates of each other
int id1 = EvtPDL::getStdHep( getDaug( 0 ) );
int id2 = EvtPDL::getStdHep( getDaug( 1 ) );
if ( id1 != -id2 ) {
EvtGenReport( EVTGEN_ERROR, "EvtBLLNuL" )
<< "Expecting the first 2 leptons, with PDG codes " << id1 << " and "
<< id2 << ", to be charged conjugates of each other" << std::endl;
::abort();
}
// Check that the last lepton has the same charge as the B parent
int q3 = EvtPDL::chg3( getDaug( 3 ) ) / 3;
int qB = EvtPDL::chg3( getParentId() ) / 3;
if ( q3 != qB ) {
EvtGenReport( EVTGEN_ERROR, "EvtBLLNuL" )
<< "The 3rd lepton charge " << q3 << " does not match the B charge "
<< qB << std::endl;
::abort();
}
// Also check that the 2nd lepton has the same charge as the 3rd one
int q2 = EvtPDL::chg3( getDaug( 1 ) ) / 3;
if ( q2 != q3 ) {
EvtGenReport( EVTGEN_ERROR, "EvtBLLNuL" )
<< "The 2nd lepton charge " << q2
<< " does not match the 3rd lepton charge " << q3 << std::endl;
::abort();
}
// Identify if the decay has 3 charged leptons with the same flavour.
// If so, then we need to include amplitude terms where the 2nd and 3rd
// same-sign leptons are interchanged: k2 <-> k4
bool symmetry( false );
int id3 = EvtPDL::getStdHep( getDaug( 3 ) );
if ( abs( id1 ) == abs( id2 ) && abs( id1 ) == abs( id3 ) ) {
symmetry = true;
}
// Specify the qSq minimum cut-off as 4*(muon mass)^2 = 0.044655 and the
// kSq minimum cut off as 4*(electron mass)^2 = 1.044e-6
double muMass = EvtPDL::getMeanMass( EvtPDL::getId( "mu+" ) );
double eMass = EvtPDL::getMeanMass( EvtPDL::getId( "e+" ) );
double qSqMin = 4.0 * muMass * muMass;
double kSqMin = 4.0 * eMass * eMass;
// Optionally set these cut-offs using two decay file parameters. We may
// have a 3rd parameter (max prob), so check for at least 2 parameters
if ( getNArg() >= 2 ) {
qSqMin = getArg( 0 );
kSqMin = getArg( 1 );
}
// Define the amplitude qSq and kSq cut-offs, also
// specifying if the decay mode has flavour symmetry
calcAmp_.setParameters( qSqMin, kSqMin, symmetry );
}
void EvtBLLNuL::initProbMax()
{
// Set the maximum probability of the decay
double maxProb( 3.2 );
// Optional 3rd decay file parameter, e.g. if qSq and/or kSq min have changed.
// Note that both qSq and kSq parameters must still be specified in the decay
// file to ensure that the maximum probability value is the 3rd parameter!
if ( getNArg() == 3 ) {
maxProb = getArg( 2 );
}
setProbMax( maxProb );
}
void EvtBLLNuL::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
calcAmp_.CalcAmp( p, _amp2 );
}
diff --git a/src/EvtGenModels/EvtBLLNuLAmp.cpp b/src/EvtGenModels/EvtBLLNuLAmp.cpp
index 40727cc..fd34dba 100644
--- a/src/EvtGenModels/EvtBLLNuLAmp.cpp
+++ b/src/EvtGenModels/EvtBLLNuLAmp.cpp
@@ -1,432 +1,416 @@
-//--------------------------------------------------------------------------
-//
-// Module: EvtBLLNuLAmp.cpp
-//
-// Description: Amplitude calculation class for the "BLLNUL" model of
-// rare four-leptonic B-decays:
-// B^-(p) -> ell^+(k_1) ell^-(k_2) neu (k_3) ell^-(k_4)
-//
-// Modification history:
-//
-// Anna Danilina (anna.danilina@cern.ch) and
-// Nikolai Nikitin (Nikolai.Nikitine@cern.ch) Nov 2018 Module created
-// John B Code optimisations
-//
-//-----------------------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBLLNuLAmp.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <cmath>
EvtBLLNuLAmp::EvtBLLNuLAmp( double Vub ) :
qSqMin_( 0.0 ),
kSqMin_( 0.0 ),
symmetry_( false ),
BpId_( EvtPDL::getId( "B+" ) ),
BnId_( EvtPDL::getId( "B-" ) ),
coupling_( 0.0 ),
sqrt2_( sqrt( 2.0 ) ),
fBu_( 0.191 ), // leptonic constant (GeV)
Bstar_( EvtBLLNuLAmp::ResPole( 5.32, 0.00658, 0.183 / 3.0 ) ),
Upsilon_( EvtBLLNuLAmp::ResPole( 9.64, 0.0, 0.0 ) ),
resPoles_(),
nPoles_( 0 ),
zero_( EvtComplex( 0.0, 0.0 ) ),
unitI_( EvtComplex( 0.0, 1.0 ) )
{
double GF = 1.166371e-5; // GeV^{-2}
double alphaEM = 1.0 / 137.0;
// Normalisation constant, multiplied by 1e4 to increase probability scale
coupling_ = 400.0 * GF * EvtConst::pi * alphaEM * Vub * 1e4 / sqrt2_;
// Define VMD resonance poles using PDG 2016 values with constants from
// D.Melikhov, N.Nikitin and K.Toms, Phys. Atom. Nucl. 68, 1842 (2005)
// Rho and omega resonances
EvtBLLNuLAmp::ResPole rho = EvtBLLNuLAmp::ResPole( 0.77526, 0.1491,
1.0 / 5.04 );
resPoles_.push_back( rho );
EvtBLLNuLAmp::ResPole omega = EvtBLLNuLAmp::ResPole( 0.78265, 0.00849,
1.0 / 17.1 );
resPoles_.push_back( omega );
nPoles_ = resPoles_.size();
}
EvtBLLNuLAmp::EvtBLLNuLAmp( double qSqMin, double kSqMin, bool symmetry,
double Vub ) :
qSqMin_( qSqMin ),
kSqMin_( kSqMin ),
symmetry_( symmetry ),
BpId_( EvtPDL::getId( "B+" ) ),
BnId_( EvtPDL::getId( "B-" ) ),
coupling_( 0.0 ),
sqrt2_( sqrt( 2.0 ) ),
fBu_( 0.191 ), // leptonic constant (GeV)
Bstar_( EvtBLLNuLAmp::ResPole( 5.32, 0.00658, 0.183 / 3.0 ) ),
Upsilon_( EvtBLLNuLAmp::ResPole( 9.64, 0.0, 0.0 ) ),
resPoles_(),
nPoles_( 0 ),
zero_( EvtComplex( 0.0, 0.0 ) ),
unitI_( EvtComplex( 0.0, 1.0 ) )
{
double GF = 1.166371e-5; // GeV^{-2}
double alphaEM = 1.0 / 137.0;
// Normalisation constant, multiplied by 1e4 to increase probability scale
coupling_ = 400.0 * GF * EvtConst::pi * alphaEM * Vub * 1e4 / sqrt2_;
// Define VMD resonance poles using PDG 2016 values with constants from
// D.Melikhov, N.Nikitin and K.Toms, Phys. Atom. Nucl. 68, 1842 (2005)
// Rho and omega resonances
EvtBLLNuLAmp::ResPole rho = EvtBLLNuLAmp::ResPole( 0.77526, 0.1491,
1.0 / 5.04 );
resPoles_.push_back( rho );
EvtBLLNuLAmp::ResPole omega = EvtBLLNuLAmp::ResPole( 0.78265, 0.00849,
1.0 / 17.1 );
resPoles_.push_back( omega );
nPoles_ = resPoles_.size();
}
// Storing resonance pole information
EvtBLLNuLAmp::ResPole::ResPole( double mass, double width, double coupling ) :
m0_( mass ),
m0Sq_( mass * mass ),
w0_( width ),
c_( coupling ),
I_( EvtComplex( 0.0, 1.0 ) ),
Imw_( I_ * mass * width )
{
}
EvtComplex EvtBLLNuLAmp::ResPole::propagator( double qSq, int numForm ) const
{
// Numerator term: mass-squared (default) or mass
double num( m0Sq_ );
if ( numForm == 1 ) {
num = m0_;
}
EvtComplex result = num * c_ / ( ( qSq - m0Sq_ ) + Imw_ );
return result;
}
// Amplitude calculation
void EvtBLLNuLAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp ) const
{
// Check for 4 daughters and an existing parent
if ( !parent || parent->getNDaug() != 4 ) {
return;
}
// The first two charged leptons. The 2nd one will have
// the same charge as the 3rd charged lepton
EvtParticle* lepA = parent->getDaug( 0 );
EvtParticle* lepB = parent->getDaug( 1 );
// The neutrino
EvtParticle* neu = parent->getDaug( 2 );
// The third charged lepton
EvtParticle* lepC = parent->getDaug( 3 );
// Kinematics
double MB = parent->mass(); // B-meson mass, GeV
// 4-momenta of the leptons in the B rest frame. The daughters will already
// be in the correct order since this check is done in EvtBLLNuL::init()
// when initialising the model using the decay file
EvtVector4R p1 = lepA->getP4();
EvtVector4R p2 = lepB->getP4();
EvtVector4R p3 = neu->getP4();
EvtVector4R p4 = lepC->getP4();
// 4-momenta sums
EvtVector4R q12 = p1 + p2;
EvtVector4R k34 = p3 + p4;
// Mandelstam variables: q^2 and k^2
double q12Sq = q12.mass2();
double k34Sq = k34.mass2();
// Check if we are above mass thresholds
bool threshold( true );
if ( q12Sq < qSqMin_ || k34Sq < kSqMin_ ) {
threshold = false;
}
// For the symmetric terms when we exchange the
// 2nd and 3rd charged leptons: p2 <-> p4
EvtVector4R q14, k23;
double q14Sq( 0.0 ), k23Sq( 0.0 );
if ( symmetry_ ) {
q14 = p1 + p4;
k23 = p2 + p3;
q14Sq = q14.mass2();
k23Sq = k23.mass2();
if ( q14Sq < qSqMin_ || k23Sq < kSqMin_ ) {
threshold = false;
}
}
// B meson id
EvtId parId = parent->getId();
// B+ or B- decays
int sign( 1 );
if ( parId == BnId_ ) {
sign = -1;
}
// Hadronic tensors
EvtTensor4C THadronA = getHadronTensor( q12, k34, q12Sq, k34Sq, MB, sign );
// When we need to include the symmetric terms
EvtTensor4C THadronB;
if ( symmetry_ ) {
THadronB = getHadronTensor( q14, k23, q14Sq, k23Sq, MB, sign );
}
// Leptonic currents: A for normal terms, B for symmetric terms
EvtVector4C L1A, L2A, L1B, L2B;
int leptonSpins[4]; // array for saving the leptonic spin configuration
// Loop over lepton spin states
for ( int i2 = 0; i2 < 2; i2++ ) {
leptonSpins[0] = i2;
for ( int i1 = 0; i1 < 2; i1++ ) {
leptonSpins[1] = i1;
if ( sign == -1 ) {
// B- currents
// L2^{\nu} = \bar mu(k_2) \gamma^{\nu} mu(- k_1)
L2A = EvtLeptonVCurrent( lepB->spParent( i2 ),
lepA->spParent( i1 ) );
if ( symmetry_ ) {
// Swapping the 2nd and 3rd charged leptons
L1B = EvtLeptonVACurrent( lepB->spParent( i2 ),
neu->spParentNeutrino() );
}
} else {
// B+ currents
// L2^{\nu} = \bar mu(k_1) \gamma^{\nu} mu(- k_2)
L2A = EvtLeptonVCurrent( lepA->spParent( i1 ),
lepB->spParent( i2 ) );
if ( symmetry_ ) {
// Swapping the 2nd and 3rd charged leptons
L1B = EvtLeptonVACurrent( neu->spParentNeutrino(),
lepB->spParent( i2 ) );
}
}
// Production: Tfi^{\mu} = THadron^{\mu \nu} L_{2 \nu}
EvtVector4C THL2A = THadronA.cont2( L2A );
for ( int i4 = 0; i4 < 2; i4++ ) {
leptonSpins[2] = i4;
leptonSpins[3] = 0; // neutrino handedness
if ( sign == -1 ) {
// B- currents
// L1^{\mu} = \bar e(k_4) \gamma^{\mu} (1 - \gamma^5) nu_e(- k_3)
L1A = EvtLeptonVACurrent( lepC->spParent( i4 ),
neu->spParentNeutrino() );
if ( symmetry_ ) {
// Swapping the 2nd and 3rd charged leptons
L2B = EvtLeptonVCurrent( lepC->spParent( i4 ),
lepA->spParent( i1 ) );
}
} else {
// B+ currents
// L1^{\mu} = \bar nu_e(k_3) \gamma^{\mu} (1 - \gamma^5) e(- k_4)
L1A = EvtLeptonVACurrent( neu->spParentNeutrino(),
lepC->spParent( i4 ) );
if ( symmetry_ ) {
// Swapping the 2nd and 3rd charged leptons
L2B = EvtLeptonVCurrent( lepA->spParent( i1 ),
lepC->spParent( i4 ) );
}
}
if ( threshold == false ) {
// Below kinematic thresholds
amp.vertex( leptonSpins, zero_ );
} else {
// Decay amplitude calculation: L_1^{\mu} Tfi_{\mu}
EvtComplex decAmp = L1A * THL2A;
// If we also need to swap the 2nd and 3rd charged leptons
if ( symmetry_ ) {
// Hadronic current production term. L2B depends on i4 so we need
// it here instead of inside the i2 loop as was the case for THL2A
EvtVector4C THL2B = THadronB.cont2( L2B );
// The symmetric amplitude
EvtComplex ampB = L1B * THL2B;
// Subtract this from the total amplitude
decAmp -= ampB;
}
amp.vertex( leptonSpins, decAmp );
}
} // i4 loop
} // i1 loop
} // i2 loop
}
EvtTensor4C EvtBLLNuLAmp::getHadronTensor( const EvtVector4R& q,
const EvtVector4R& k,
const double qSq, const double kSq,
const double MB, const int sign ) const
{
// Hadronic tensor calculation
EvtTensor4C epskq = dual( EvtGenFunctions::directProd( k, q ) );
EvtTensor4C qk = EvtGenFunctions::directProd( q, k );
EvtComplex BstarAmp = getBStarTerm( qSq, kSq, MB );
std::vector<EvtComplex> VMDAmps = getVMDTerms( qSq, kSq, MB );
EvtComplex FF_ekq = BstarAmp + VMDAmps[0];
EvtComplex FF_g = VMDAmps[1] - fBu_;
EvtComplex FF_qk = VMDAmps[2];
// Full hadronic tensor
EvtTensor4C THadron = sign * 2.0 * FF_ekq * epskq +
unitI_ * ( 2.0 * FF_qk * qk - FF_g * EvtTensor4C::g() );
// Kinematic cuts
double coeffcut( 0.0 );
if ( qSq > qSqMin_ && kSq > kSqMin_ ) {
coeffcut = 1.0 / qSq;
}
// Normalisation constant
THadron *= coeffcut * coupling_;
return THadron;
}
std::vector<EvtComplex> EvtBLLNuLAmp::getVMDTerms( double qSq, double kSq,
double MB ) const
{
// Find the 3 VMD form factors: epsilon*k*q, g(uv) and q*k terms
EvtComplex VMD1( 0.0, 0.0 ), VMD2( 0.0, 0.0 ), VMD3( 0.0, 0.0 );
// Loop over the VMD poles
for ( int iPole = 0; iPole < nPoles_; iPole++ ) {
auto pole = resPoles_[iPole];
// Propagator term, common for all factors
EvtComplex prop = pole.propagator( qSq );
double mSum = MB + pole.getMass();
VMD1 += prop / mSum;
VMD2 += mSum * prop;
}
// Third pole summation term is the same as the first one
VMD3 = VMD1;
// Multiply by couplings for the given kSq
VMD1 *= FF_V( kSq );
VMD2 *= FF_A1( kSq );
VMD3 *= FF_A2( kSq );
// Return the factors as a vector
std::vector<EvtComplex> factors;
factors.push_back( VMD1 );
factors.push_back( VMD2 );
factors.push_back( VMD3 );
return factors;
}
EvtComplex EvtBLLNuLAmp::getBStarTerm( double qSq, double kSq, double MB ) const
{
EvtComplex amplitude = Bstar_.propagator( kSq, 1 ) * FF_B2Bstar( qSq ) /
( MB + Bstar_.getMass() );
return amplitude;
}
double EvtBLLNuLAmp::FF_B2Bstar( double qSq ) const
{
// Electromagnetic FF for B -> B* transition, when gamma is emitted from the b quark
// D.Melikhov, private communication
double y = qSq / Upsilon_.getMassSq();
double denom = ( 1.0 - y ) * ( 1.0 - 0.81 * y );
double V( 0.0 );
if ( fabs( denom ) > 1e-10 ) {
V = 1.044 / denom;
}
return V;
}
double EvtBLLNuLAmp::FF_V( double kSq ) const
{
// D. Melikhov and B. Stech, PRD 62, 014006 (2000) Table XV
double y = kSq / Bstar_.getMassSq();
double denom = sqrt2_ * ( 1.0 - y ) * ( 1.0 - 0.59 * y );
double V( 0.0 );
if ( fabs( denom ) > 1e-10 ) {
V = 0.31 / denom;
}
return V;
}
double EvtBLLNuLAmp::FF_A1( double kSq ) const
{
// D. Melikhov and B. Stech, PRD 62, 014006 (2000) Table XV
double y = kSq / Bstar_.getMassSq();
double denom = ( ( 0.1 * y - 0.73 ) * y + 1.0 ) * sqrt2_;
double A1( 0.0 );
if ( fabs( denom ) > 1e-10 ) {
A1 = 0.26 / denom;
}
return A1;
}
double EvtBLLNuLAmp::FF_A2( double kSq ) const
{
// D. Melikhov and B. Stech, PRD 62, 014006 (2000) Table XV
double y = kSq / Bstar_.getMassSq();
double denom = ( ( 0.5 * y - 1.4 ) * y + 1.0 ) * sqrt2_;
double A2( 0.0 );
if ( fabs( denom ) > 1e-10 ) {
A2 = 0.24 / denom;
}
return A2;
}
diff --git a/src/EvtGenModels/EvtBTo3hCP.cpp b/src/EvtGenModels/EvtBTo3hCP.cpp
index 954f4ce..2c5125b 100644
--- a/src/EvtGenModels/EvtBTo3hCP.cpp
+++ b/src/EvtGenModels/EvtBTo3hCP.cpp
@@ -1,1326 +1,1305 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBTo3hCP.cpp
-//
-// Description: This package is providing a B -->-- 3hadrons decay
-// generator. It is reimplementation of original Fortran code.
-//
-// Modification history:
-//
-// M. Kreps September, 2016 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBTo3hCP.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <cmath>
#include <stdlib.h>
#include <string>
#define square( x ) ( ( x ) * ( x ) )
/*
* MK - 25/Aug/2016
* The code bellow is not necessarilly well writen as it is 1-to-1 rewrite
* from FORTRAN code (which is spread over 4 different source codes in not
* fully obvious way). Once it is rewriten and giving correct results, I
* will think how to give it more proper structure (mainly by checking what
* is duplicated and how to simplify it).
*/
EvtBTo3hCP::EvtBTo3hCP() :
pi( 3.141592653 ),
Mass_rho( 0.770 ),
Gam_rho( 0.150 ),
M_B( 5.2794 ),
M_pip( 0.13957 ),
M_pim( 0.13957 ),
M_pi0( 0.134976 ),
M_Kp( 0.49368 ),
Mass_Kstarp( 0.8916 ),
Mass_Kstar0( 0.8961 ),
Gam_Kstarp( 0.0498 ),
Gam_Kstar0( 0.0505 ),
factor_max( 1 )
{
}
/*
extern "C" {
// extern void evt3pions_(double *,int *,double *,
// double *,double *,double *,double *,
// double *,double *,double *);
// extern void evtfirst_step_(double *, double *, double *);
// extern void evtcompute_(double *, double *, double *, double *, double *,
// double *, double *, int *, int *);
extern struct
{
fcomplex Mat_S1, Mat_S2, Mat_S3, Mat_S4, Mat_S5, Nat_S1, Nat_S2, Nat_S3,
Nat_S4, Nat_S5, MatKstarp, MatKstar0, MatKrho, NatKstarp, NatKstar0,
NatKrho;
double alphaCP, betaCP, pi, MA2, MB2, MC2, one, eno, Mass_rho, Gam_rho, M_B,
M_pip, M_pim, M_pi0, DeltaM, Gam_B, xd, M_Upsi, BetaBabar, ptcut,
coscut, M_Kp, Mass_Kstarp, Mass_Kstar0, Gam_Kstarp, Gam_Kstar0;
} theory_;
}
*/
void EvtBTo3hCP::setConstants( double balpha, double bbeta )
{
alphaCP = balpha;
double calpha = cos( alphaCP );
double salpha = sin( alphaCP );
betaCP = bbeta;
double cbeta = cos( betaCP );
double sbeta = sin( betaCP );
MA2 = square( M_B ) + square( M_pip ) + square( M_pi0 ) + square( M_pi0 );
MB2 = square( M_B ) + square( M_pip ) + square( M_pim ) + square( M_pi0 );
MC2 = square( M_B ) + square( M_Kp ) + square( M_pim ) + square( M_pi0 );
double StrongPhase = 0;
EvtComplex StrongExp( cos( StrongPhase ), sin( StrongPhase ) );
EvtComplex Mat_Tp0( calpha, -salpha );
Mat_Tp0 *= 1.09;
EvtComplex Mat_Tm0( calpha, -salpha );
Mat_Tm0 *= 1.09;
EvtComplex Mat_T0p( calpha, -salpha );
Mat_T0p *= 0.66;
EvtComplex Mat_T0m( calpha, -salpha );
Mat_T0m *= 0.66;
EvtComplex Mat_Tpm( calpha, -salpha );
Mat_Tpm *= 1.00;
EvtComplex Mat_Tmp( calpha, -salpha );
Mat_Tmp *= 0.47;
EvtComplex Mat_Ppm( cos( -0.5 ), sin( -0.5 ) );
Mat_Ppm *= -0.2;
EvtComplex Mat_Pmp( cos( 2. ), sin( 2. ) );
Mat_Pmp *= 0.15;
EvtComplex Mat_P1 = 0.5 * ( Mat_Ppm - Mat_Pmp );
EvtComplex Mat_P0 = 0.5 * ( Mat_Ppm + Mat_Pmp );
EvtComplex Nat_Tp0( calpha, salpha );
Nat_Tp0 *= 1.09;
EvtComplex Nat_Tm0( calpha, salpha );
Nat_Tm0 *= 1.09;
EvtComplex Nat_T0p( calpha, salpha );
Nat_T0p *= 0.66;
EvtComplex Nat_T0m( calpha, salpha );
Nat_T0m *= 0.66;
EvtComplex Nat_Tpm( calpha, salpha );
Nat_Tpm *= 1.00;
EvtComplex Nat_Tmp( calpha, salpha );
Nat_Tmp *= 0.47;
EvtComplex Nat_P1 = Mat_P1;
EvtComplex Nat_P0 = Mat_P0;
Mat_Tpm = StrongExp * Mat_Tpm;
Nat_Tpm = StrongExp * Nat_Tpm;
Mat_S1 = Mat_Tp0 + 2. * Mat_P1;
Mat_S2 = Mat_T0p - 2. * Mat_P1;
Mat_S3 = Mat_Tpm + Mat_P1 + Mat_P0;
Mat_S4 = Mat_Tmp - Mat_P1 + Mat_P0;
Mat_S5 = -Mat_Tpm - Mat_Tmp + Mat_Tp0 + Mat_T0p - 2. * Mat_P0;
Nat_S1 = Nat_Tp0 + 2. * Nat_P1;
Nat_S2 = Nat_T0p - 2. * Nat_P1;
Nat_S3 = Nat_Tpm + Nat_P1 + Nat_P0;
Nat_S4 = Nat_Tmp - Nat_P1 + Nat_P0;
Nat_S5 = -Nat_Tpm - Nat_Tmp + Nat_Tp0 + Nat_T0p - 2. * Nat_P0;
// B0 -->-- K*+ pi- Amplitudes (Trees + Penguins)
MatKstarp = EvtComplex( calpha, -salpha ) * EvtComplex( 0.220, 0. ) +
EvtComplex( cbeta, sbeta ) * EvtComplex( -1.200, 0. );
// B0 -->-- K*0 pi0 Amplitudes (Trees + Penguins)
MatKstar0 = EvtComplex( calpha, -salpha ) * EvtComplex( 0.015, 0. ) +
EvtComplex( cbeta, sbeta ) * EvtComplex( 0.850, 0. );
// B0 -->-- K+ rho- Amplitudes (Trees + Penguins)
MatKrho = EvtComplex( calpha, -salpha ) * EvtComplex( 0.130, 0. ) +
EvtComplex( cbeta, sbeta ) * EvtComplex( 0.160, 0. );
// B0bar -->-- K*+ pi- Amplitudes (Trees + Penguins)
NatKstarp = EvtComplex( 0., 0. );
// B0bar -->-- K*0 pi0 Amplitudes (Trees + Penguins)
NatKstar0 = EvtComplex( 0., 0. );
// B0bar -->-- K+ rho- Amplitudes (Trees + Penguins)
NatKrho = EvtComplex( 0., 0. );
// Before we get rid of fortran code completely, need to propagate all
// settings to common block, so fortran code has access to everything.
// This will also help in testing as there will be no value from previous
// run of fortran code.
/*
theory_.alphaCP = alphaCP;
theory_.betaCP = betaCP;
theory_.pi = pi;
theory_.MA2 = MA2;
theory_.MB2 = MB2;
theory_.MC2 = MC2;
theory_.one = one;
theory_.eno = eno;
theory_.Mass_rho = Mass_rho;
theory_.Gam_rho = Gam_rho;
theory_.M_B = M_B;
theory_.M_pip = M_pip;
theory_.M_pim = M_pim;
theory_.M_pi0 = M_pi0;
theory_.DeltaM = DeltaM;
theory_.Gam_B = Gam_B;
theory_.xd = xd;
theory_.M_Upsi = M_Upsi;
theory_.BetaBabar = BetaBabar;
theory_.ptcut = ptcut;
theory_.coscut = coscut;
theory_.M_Kp = M_Kp;
theory_.Mass_Kstarp = Mass_Kstarp;
theory_.Mass_Kstar0 = Mass_Kstar0;
theory_.Gam_Kstarp = Gam_Kstarp;
theory_.Gam_Kstar0 = Gam_Kstar0;
theory_.Mat_S1.re = real(Mat_S1);
theory_.Mat_S2.re = real(Mat_S2);
theory_.Mat_S3.re = real(Mat_S3);
theory_.Mat_S4.re = real(Mat_S4);
theory_.Mat_S5.re = real(Mat_S5);
theory_.Nat_S1.re = real(Nat_S1);
theory_.Nat_S2.re = real(Nat_S2);
theory_.Nat_S3.re = real(Nat_S3);
theory_.Nat_S4.re = real(Nat_S4);
theory_.Nat_S5.re = real(Nat_S5);
theory_.MatKstarp.re = real(MatKstarp);
theory_.MatKstar0.re = real(MatKstar0);
theory_.MatKrho.re = real(MatKrho);
theory_.NatKstarp.re = real(NatKstarp);
theory_.NatKstar0.re = real(NatKstar0);
theory_.NatKrho.re = real(NatKrho);
theory_.Mat_S1.im = imag(Mat_S1);
theory_.Mat_S2.im = imag(Mat_S2);
theory_.Mat_S3.im = imag(Mat_S3);
theory_.Mat_S4.im = imag(Mat_S4);
theory_.Mat_S5.im = imag(Mat_S5);
theory_.Nat_S1.im = imag(Nat_S1);
theory_.Nat_S2.im = imag(Nat_S2);
theory_.Nat_S3.im = imag(Nat_S3);
theory_.Nat_S4.im = imag(Nat_S4);
theory_.Nat_S5.im = imag(Nat_S5);
theory_.MatKstarp.im = imag(MatKstarp);
theory_.MatKstar0.im = imag(MatKstar0);
theory_.MatKrho.im = imag(MatKrho);
theory_.NatKstarp.im = imag(NatKstarp);
theory_.NatKstar0.im = imag(NatKstar0);
theory_.NatKrho.im = imag(NatKrho);
*/
}
void EvtBTo3hCP::Evt3pi( double alpha, int iset, EvtVector4R& p_pi_plus,
EvtVector4R& p_pi_minus, EvtVector4R& p_gamma_1,
EvtVector4R& p_gamma_2, double& Real_B0,
double& Imag_B0, double& Real_B0bar, double& Imag_B0bar )
{
EvtVector4R p_p2;
double AB0, AB0bar, Ainter, R1, R2;
double factor;
int ierr = 0;
if ( iset == 0 ) {
p_pi_plus.set( M_pip, 0, 0, 0 );
p_p2.set( M_pi0, 0, 0, 0 );
p_pi_minus.set( M_pim, 0, 0, 0 );
do {
firstStep( p_pi_plus, p_p2, p_pi_minus, 1 );
ierr = compute3pi( p_pi_plus, p_p2, p_pi_minus, Real_B0, Imag_B0,
Real_B0bar, Imag_B0bar, iset );
} while ( ierr != 0 );
} else if ( iset < 0 ) {
p_p2 = p_gamma_1 + p_gamma_2;
ierr = compute3pi( p_pi_plus, p_p2, p_pi_minus, Real_B0, Imag_B0,
Real_B0bar, Imag_B0bar, iset );
if ( ierr != 0 ) {
std::cout << "Provided kinematics is not physical\n";
std::cout << "Program will stop\n";
exit( 1 );
}
} else // iset > 0
{
factor_max = 0;
// Ghm : beta is not needed for this generation - put a default value
setConstants( alpha, 0.362 );
int endLoop = iset;
for ( int i = 0; i < endLoop; ++i ) {
p_pi_plus.set( M_pip, 0, 0, 0 );
p_p2.set( M_pi0, 0, 0, 0 );
p_pi_minus.set( M_pim, 0, 0, 0 );
firstStep( p_pi_plus, p_p2, p_pi_minus, 1 );
ierr = compute3pi( p_pi_plus, p_p2, p_pi_minus, Real_B0, Imag_B0,
Real_B0bar, Imag_B0bar, iset );
if ( ierr != 0 ) {
continue;
}
AB0 = square( Real_B0 ) + square( Imag_B0 );
AB0bar = square( Real_B0bar ) + square( Imag_B0bar );
Ainter = Real_B0 * Imag_B0bar - Imag_B0 * Real_B0bar;
R1 = ( AB0 - AB0bar ) / ( AB0 + AB0bar );
R2 = ( 2.0 * Ainter ) / ( AB0 + AB0bar );
factor = ( 1.0 + sqrt( square( R1 ) + square( R2 ) ) ) *
( AB0 + AB0bar ) / 2.0;
if ( factor > factor_max )
factor_max = factor;
}
factor_max = 1.0 / std::sqrt( factor_max );
}
Real_B0 *= factor_max;
Imag_B0 *= factor_max;
Real_B0bar *= factor_max;
Imag_B0bar *= factor_max;
if ( iset < 0 ) {
return;
}
rotation( p_pi_plus, 1 );
rotation( p_p2, 0 );
rotation( p_pi_minus, 0 );
gammaGamma( p_p2, p_gamma_1, p_gamma_2 );
}
void EvtBTo3hCP::Evt3piMPP( double alpha, int iset, EvtVector4R& p_p1,
EvtVector4R& p_p2, EvtVector4R& p_p3,
double& Real_B0, double& Imag_B0,
double& Real_B0bar, double& Imag_B0bar )
{
double ABp, ABm;
int ierr = 0;
if ( iset == 0 ) {
p_p1.set( M_pim, 0, 0, 0 );
p_p2.set( M_pip, 0, 0, 0 );
p_p3.set( M_pip, 0, 0, 0 );
do {
firstStep( p_p1, p_p2, p_p3, 2 );
ierr = compute3piMPP( p_p1, p_p2, p_p3, Real_B0, Imag_B0,
Real_B0bar, Imag_B0bar, iset );
} while ( ierr != 0 );
} else if ( iset < 0 ) {
ierr = compute3piMPP( p_p1, p_p2, p_p3, Real_B0, Imag_B0, Real_B0bar,
Imag_B0bar, iset );
if ( ierr != 0 ) {
std::cout << "Provided kinematics is not physical\n";
std::cout << "Program will stop\n";
exit( 1 );
}
} else // iset > 0
{
factor_max = 0;
// Ghm : beta is not needed for this generation - put a default value
setConstants( alpha, 0.362 );
int endLoop = iset;
for ( int i = 0; i < endLoop; ++i ) {
p_p1.set( M_pim, 0, 0, 0 );
p_p2.set( M_pip, 0, 0, 0 );
p_p3.set( M_pip, 0, 0, 0 );
firstStep( p_p1, p_p2, p_p3, 2 );
ierr = compute3piMPP( p_p1, p_p2, p_p3, Real_B0, Imag_B0,
Real_B0bar, Imag_B0bar, iset );
if ( ierr != 0 ) {
continue;
}
ABp = square( Real_B0 ) + square( Imag_B0 );
ABm = square( Real_B0bar ) + square( Imag_B0bar );
if ( ABp > factor_max )
factor_max = ABp;
if ( ABm > factor_max )
factor_max = ABm;
}
factor_max = 1.0 / std::sqrt( factor_max );
}
Real_B0 *= factor_max;
Imag_B0 *= factor_max;
Real_B0bar *= factor_max;
Imag_B0bar *= factor_max;
if ( iset < 0 ) {
return;
}
rotation( p_p1, 1 );
rotation( p_p2, 0 );
rotation( p_p3, 0 );
}
void EvtBTo3hCP::Evt3piP00( double alpha, int iset, EvtVector4R& p_p1,
EvtVector4R& p_p1_gamma1, EvtVector4R& p_p1_gamma2,
EvtVector4R& p_p2_gamma1, EvtVector4R& p_p2_gamma2,
double& Real_B0, double& Imag_B0,
double& Real_B0bar, double& Imag_B0bar )
{
double ABp, ABm;
EvtVector4R p_p2, p_p3;
int ierr = 0;
if ( iset == 0 ) {
p_p1.set( M_pip, 0, 0, 0 );
p_p2.set( M_pi0, 0, 0, 0 );
p_p3.set( M_pi0, 0, 0, 0 );
do {
firstStep( p_p1, p_p2, p_p3, 3 );
ierr = compute3piP00( p_p1, p_p2, p_p3, Real_B0, Imag_B0,
Real_B0bar, Imag_B0bar, iset );
} while ( ierr != 0 );
} else if ( iset < 0 ) {
p_p2 = p_p1_gamma1 + p_p1_gamma2;
p_p3 = p_p2_gamma1 + p_p2_gamma2;
ierr = compute3piP00( p_p1, p_p2, p_p3, Real_B0, Imag_B0, Real_B0bar,
Imag_B0bar, iset );
if ( ierr != 0 ) {
std::cout << "Provided kinematics is not physical\n";
std::cout << "Program will stop\n";
exit( 1 );
}
} else // iset > 0
{
factor_max = 0;
// Ghm : beta is not needed for this generation - put a default value
setConstants( alpha, 0.362 );
int endLoop = iset;
for ( int i = 0; i < endLoop; ++i ) {
p_p1.set( M_pip, 0, 0, 0 );
p_p2.set( M_pi0, 0, 0, 0 );
p_p3.set( M_pi0, 0, 0, 0 );
firstStep( p_p1, p_p2, p_p3, 3 );
ierr = compute3piP00( p_p1, p_p2, p_p3, Real_B0, Imag_B0,
Real_B0bar, Imag_B0bar, iset );
if ( ierr != 0 ) {
continue;
}
ABp = square( Real_B0 ) + square( Imag_B0 );
ABm = square( Real_B0bar ) + square( Imag_B0bar );
if ( ABp > factor_max )
factor_max = ABp;
if ( ABm > factor_max )
factor_max = ABm;
}
factor_max = 1.0 / std::sqrt( factor_max );
}
Real_B0 *= factor_max;
Imag_B0 *= factor_max;
Real_B0bar *= factor_max;
Imag_B0bar *= factor_max;
if ( iset < 0 ) {
return;
}
rotation( p_p1, 1 );
rotation( p_p2, 0 );
rotation( p_p3, 0 );
gammaGamma( p_p2, p_p1_gamma1, p_p1_gamma2 );
gammaGamma( p_p3, p_p2_gamma1, p_p2_gamma2 );
}
void EvtBTo3hCP::EvtKpipi( double alpha, double beta, int iset,
EvtVector4R& p_K_plus, EvtVector4R& p_pi_minus,
EvtVector4R& p_gamma_1, EvtVector4R& p_gamma_2,
double& Real_B0, double& Imag_B0, double& Real_B0bar,
double& Imag_B0bar )
{
EvtVector4R p_p3;
double ABp, ABm;
int ierr = 0;
if ( iset == 0 ) {
p_K_plus.set( M_Kp, 0, 0, 0 );
p_pi_minus.set( M_pim, 0, 0, 0 );
p_p3.set( M_pi0, 0, 0, 0 );
do {
firstStep( p_K_plus, p_pi_minus, p_p3, 0 );
ierr = computeKpipi( p_K_plus, p_pi_minus, p_p3, Real_B0, Imag_B0,
Real_B0bar, Imag_B0bar, iset );
} while ( ierr != 0 );
} else if ( iset < 0 ) {
p_p3 = p_gamma_1 + p_gamma_2;
ierr = computeKpipi( p_K_plus, p_pi_minus, p_p3, Real_B0, Imag_B0,
Real_B0bar, Imag_B0bar, iset );
if ( ierr != 0 ) {
std::cout << "Provided kinematics is not physical\n";
std::cout << "Program will stop\n";
exit( 1 );
}
} else // iset > 0
{
factor_max = 0;
setConstants( alpha, beta );
int endLoop = iset;
for ( int i = 0; i < endLoop; ++i ) {
p_K_plus.set( M_Kp, 0, 0, 0 );
p_pi_minus.set( M_pim, 0, 0, 0 );
p_p3.set( M_pi0, 0, 0, 0 );
firstStep( p_K_plus, p_pi_minus, p_p3, 0 );
ierr = computeKpipi( p_K_plus, p_pi_minus, p_p3, Real_B0, Imag_B0,
Real_B0bar, Imag_B0bar, iset );
if ( ierr != 0 ) {
continue;
}
ABp = square( Real_B0 ) + square( Imag_B0 );
ABm = square( Real_B0bar ) + square( Imag_B0bar );
if ( ABp > factor_max ) {
factor_max = ABp;
}
if ( ABm > factor_max ) {
factor_max = ABm;
}
}
factor_max = 1.0 / std::sqrt( factor_max );
}
Real_B0 *= factor_max;
Imag_B0 *= factor_max;
Real_B0bar *= factor_max;
Imag_B0bar *= factor_max;
if ( iset < 0 ) {
return;
}
rotation( p_K_plus, 1 );
rotation( p_pi_minus, 0 );
rotation( p_p3, 0 );
gammaGamma( p_p3, p_gamma_1, p_gamma_2 );
}
void EvtBTo3hCP::firstStep( EvtVector4R& p1, EvtVector4R& p2, EvtVector4R& p3,
int mode )
{
const double m1sq = p1.mass2();
const double m2sq = p2.mass2();
const double m3sq = p3.mass2();
double min_m12, min_m13, min_m23;
double max_m12 = square( M_B );
double max_m13 = square( M_B );
double max_m23 = square( M_B );
if ( mode == 0 ) {
min_m12 = m1sq + m2sq + 2 * sqrt( m1sq * m2sq );
min_m13 = m1sq + m3sq + 2 * sqrt( m1sq * m3sq );
min_m23 = m2sq + m3sq + 2 * sqrt( m2sq * m3sq );
} else {
min_m12 = m1sq + m2sq;
min_m13 = m1sq + m3sq;
min_m23 = m2sq + m3sq;
}
bool eventOK;
double m13, m12, m23;
double E1;
double E2;
double E3;
double p1mom;
double p2mom;
double p3mom;
double cost13;
double cost12;
double cost23;
eventOK = false;
do {
switch ( mode ) {
case 0:
generateSqMasses_Kpipi( m12, m13, m23, MC2, m1sq, m2sq, m3sq );
break;
case 1:
generateSqMasses_3pi( m12, m13, m23, MB2, m1sq, m2sq, m3sq );
break;
case 2:
generateSqMasses_3piMPP( m12, m13, m23, MB2, m1sq, m2sq, m3sq );
break;
case 3:
generateSqMasses_3piP00( m12, m13, m23, MA2, m1sq, m2sq, m3sq );
break;
default:
break;
}
// Check whether event is physical
if ( ( m23 < min_m23 ) || ( m23 > max_m23 ) )
continue;
if ( ( m13 < min_m13 ) || ( m13 > max_m13 ) )
continue;
if ( ( m12 < min_m12 ) || ( m12 > max_m12 ) )
continue;
// Now check the cosines of the angles
E1 = ( square( M_B ) + m1sq - m23 ) / ( 2. * M_B );
E2 = ( square( M_B ) + m2sq - m13 ) / ( 2. * M_B );
E3 = ( square( M_B ) + m3sq - m12 ) / ( 2. * M_B );
p1mom = square( E1 ) - m1sq;
p2mom = square( E2 ) - m2sq;
p3mom = square( E3 ) - m3sq;
if ( p1mom < 0 || p2mom < 0 || p3mom < 0 ) {
// std::cout<<"Momenta magnitude negative\n";
continue;
}
p1mom = sqrt( p1mom );
p2mom = sqrt( p2mom );
p3mom = sqrt( p3mom );
cost13 = ( 2. * E1 * E3 + m1sq + m3sq - m13 ) / ( 2. * p1mom * p3mom );
cost12 = ( 2. * E1 * E2 + m1sq + m2sq - m12 ) / ( 2. * p1mom * p2mom );
cost23 = ( 2. * E2 * E3 + m2sq + m3sq - m23 ) / ( 2. * p2mom * p3mom );
if ( cost13 < -1. || cost13 > 1. || cost12 < -1. || cost12 > 1. ||
cost23 < -1. || cost23 > 1. ) {
continue;
}
eventOK = true;
} while ( eventOK == false );
// Now is time to fill 4-vectors
p3.set( E3, 0, 0, p3mom );
p1.set( E1, p1mom * sqrt( 1 - square( cost13 ) ), 0, p1mom * cost13 );
p2.set( 0, E2 );
for ( int i = 1; i < 4; ++i ) {
p2.set( i, -p1.get( i ) - p3.get( i ) );
}
if ( p1.get( 0 ) < p1.d3mag() ) {
std::cout << "Unphysical p1 generated: " << p1 << std::endl;
}
if ( p2.get( 0 ) < p2.d3mag() ) {
std::cout << "Unphysical p2 generated: " << p2 << std::endl;
}
if ( p3.get( 0 ) < p3.d3mag() ) {
std::cout << "Unphysical p3 generated: " << p3 << std::endl;
}
double testMB2 = MB2;
switch ( mode ) {
case 0:
testMB2 = MC2;
break;
case 1:
case 2:
testMB2 = MB2;
break;
case 3:
testMB2 = MA2;
break;
}
if ( fabs( m12 + m13 + m23 - testMB2 ) > 1e-4 ) {
std::cout << "Unphysical event generated: " << m12 << " " << m13 << " "
<< m23 << std::endl;
}
}
void EvtBTo3hCP::generateSqMasses_Kpipi( double& m12, double& m13, double& m23,
double MB2, double m1sq, double m2sq,
double m3sq )
{
/*
C There is two ways of generating the events:
C The first one used a pole-compensation method to generate the
C events efficiently taking into account the poles due to the
C Breit-Wigners of the rho s. It is activated by setting
C Phase_Space to .false.
C The second one generates events according to phase space. It is
C inneficient but allows the exploration of the full Dalitz plot
C in an uniform way. It was found to be usefull fopr some peculiar
C applications. It is activated by setting
C Phase_space to .true.
C Note that in that case, the generation is no longer correct.
*/
static bool phaseSpace = false;
double max_m12 = square( M_B );
double min_m12 = m1sq + m2sq + 2 * sqrt( m1sq * m2sq );
double max_m13 = square( M_B );
double min_m13 = m1sq + m3sq + 2 * sqrt( m1sq * m3sq );
double max_m23 = square( M_B );
double min_m23 = m2sq + m3sq + 2 * sqrt( m2sq * m3sq );
double z = 3. * EvtRandom::Flat();
if ( z < 1. ) // K*+
{
if ( phaseSpace ) {
m13 = EvtRandom::Flat() * ( max_m13 - min_m13 ) + min_m13;
} else {
double y = EvtRandom::Flat() * pi - pi / 2;
double x = std::tan( y );
double mass = x * Gam_Kstarp / 2. + Mass_Kstarp;
m13 = square( mass );
}
m12 = EvtRandom::Flat() * ( max_m12 - min_m12 ) + min_m12;
m23 = MB2 - m12 - m13;
} else if ( z < 2. ) // K*0
{
if ( phaseSpace ) {
m12 = EvtRandom::Flat() * ( max_m12 - min_m12 ) + min_m12;
} else {
double y = EvtRandom::Flat() * pi - pi / 2;
double x = std::tan( y );
double mass = x * Gam_Kstar0 / 2. + Mass_Kstar0;
m12 = square( mass );
}
m13 = EvtRandom::Flat() * ( max_m13 - min_m13 ) + min_m13;
m23 = MB2 - m12 - m13;
} else // rho-
{
if ( phaseSpace ) {
m23 = EvtRandom::Flat() * ( max_m23 - min_m23 ) + min_m23;
} else {
double y = EvtRandom::Flat() * pi - pi / 2;
double x = std::tan( y );
double mass = x * Gam_rho / 2. + Mass_rho;
m23 = square( mass );
}
m13 = EvtRandom::Flat() * ( max_m13 - min_m13 ) + min_m13;
m12 = MB2 - m23 - m13;
}
}
void EvtBTo3hCP::generateSqMasses_3pi( double& m12, double& m13, double& m23,
double MB2, double m1sq, double m2sq,
double m3sq )
{
/*
C There is two ways of generating the events:
C The first one used a pole-compensation method to generate the
C events efficiently taking into account the poles due to the
C Breit-Wigners of the rho s. It is activated by setting
C Phase_Space to .false.
C The second one generates events according to phase space. It is
C inneficient but allows the exploration of the full Dalitz plot
C in an uniform way. It was found to be usefull fopr some peculiar
C applications. It is activated by setting
C Phase_space to .true.
C Note that in that case, the generation is no longer correct.
*/
static bool phaseSpace = false;
double max_m12 = square( M_B );
double min_m12 = m1sq + m2sq;
double max_m13 = square( M_B );
double min_m13 = m1sq + m3sq;
double max_m23 = square( M_B );
double min_m23 = m2sq + m3sq;
double mass = 0;
if ( !phaseSpace ) {
double y = EvtRandom::Flat() * pi - pi / 2;
double x = std::tan( y );
mass = x * Gam_rho / 2. + Mass_rho;
}
double z = 3. * EvtRandom::Flat();
if ( z < 1. ) {
if ( phaseSpace ) {
m12 = EvtRandom::Flat() * ( max_m12 - min_m12 ) + min_m12;
} else {
m12 = square( mass );
}
m13 = EvtRandom::Flat() * ( max_m13 - min_m13 ) + min_m13;
m23 = MB2 - m12 - m13;
} else if ( z < 2. ) {
if ( phaseSpace ) {
m13 = EvtRandom::Flat() * ( max_m13 - min_m13 ) + min_m13;
} else {
m13 = square( mass );
}
m12 = EvtRandom::Flat() * ( max_m12 - min_m12 ) + min_m12;
m23 = MB2 - m12 - m13;
} else {
if ( phaseSpace ) {
m23 = EvtRandom::Flat() * ( max_m23 - min_m23 ) + min_m23;
} else {
m23 = square( mass );
}
m12 = EvtRandom::Flat() * ( max_m12 - min_m12 ) + min_m12;
m13 = MB2 - m12 - m23;
}
}
void EvtBTo3hCP::generateSqMasses_3piMPP( double& m12, double& m13, double& m23,
double MB2, double m1sq, double m2sq,
double m3sq )
{
/*
C There is two ways of generating the events:
C The first one used a pole-compensation method to generate the
C events efficiently taking into account the poles due to the
C Breit-Wigners of the rho s. It is activated by setting
C Phase_Space to .false.
C The second one generates events according to phase space. It is
C inneficient but allows the exploration of the full Dalitz plot
C in an uniform way. It was found to be usefull fopr some peculiar
C applications. It is activated by setting
C Phase_space to .true.
C Note that in that case, the generation is no longer correct.
*/
static bool phaseSpace = false;
double max_m12 = square( M_B );
double min_m12 = m1sq + m2sq;
double max_m13 = square( M_B );
double min_m13 = m1sq + m3sq;
double mass = 0;
if ( !phaseSpace ) {
double y = EvtRandom::Flat() * pi - pi / 2;
double x = std::tan( y );
mass = x * Gam_rho / 2. + Mass_rho;
}
double z = EvtRandom::Flat();
if ( z < 0.5 ) {
if ( phaseSpace ) {
m12 = EvtRandom::Flat() * ( max_m12 - min_m12 ) + min_m12;
} else {
m12 = square( mass );
}
m13 = EvtRandom::Flat() * ( max_m13 - min_m13 ) + min_m13;
m23 = MB2 - m12 - m13;
} else {
if ( phaseSpace ) {
m13 = EvtRandom::Flat() * ( max_m13 - min_m13 ) + min_m13;
} else {
m13 = square( mass );
}
m12 = EvtRandom::Flat() * ( max_m12 - min_m12 ) + min_m12;
m23 = MB2 - m12 - m13;
}
}
void EvtBTo3hCP::generateSqMasses_3piP00( double& m12, double& m13, double& m23,
double MB2, double m1sq, double m2sq,
double m3sq )
{
/*
C There is two ways of generating the events:
C The first one used a pole-compensation method to generate the
C events efficiently taking into account the poles due to the
C Breit-Wigners of the rho s. It is activated by setting
C Phase_Space to .false.
C The second one generates events according to phase space. It is
C inneficient but allows the exploration of the full Dalitz plot
C in an uniform way. It was found to be usefull fopr some peculiar
C applications. It is activated by setting
C Phase_space to .true.
C Note that in that case, the generation is no longer correct.
*/
static bool phaseSpace = false;
double max_m12 = square( M_B );
double min_m12 = m1sq + m2sq;
double max_m13 = square( M_B );
double min_m13 = m1sq + m3sq;
double mass = 0;
if ( !phaseSpace ) {
double y = EvtRandom::Flat() * pi - pi / 2;
double x = std::tan( y );
mass = x * Gam_rho / 2. + Mass_rho;
}
double z = EvtRandom::Flat();
if ( z < 0.5 ) {
if ( phaseSpace ) {
m12 = EvtRandom::Flat() * ( max_m12 - min_m12 ) + min_m12;
} else {
m12 = square( mass );
}
m13 = EvtRandom::Flat() * ( max_m13 - min_m13 ) + min_m13;
m23 = MB2 - m12 - m13;
} else {
if ( phaseSpace ) {
m13 = EvtRandom::Flat() * ( max_m13 - min_m13 ) + min_m13;
} else {
m13 = square( mass );
}
m12 = EvtRandom::Flat() * ( max_m12 - min_m12 ) + min_m12;
m23 = MB2 - m12 - m13;
}
}
int EvtBTo3hCP::compute3pi( EvtVector4R& p1, EvtVector4R& p2, EvtVector4R& p3,
double& real_B0, double& imag_B0,
double& real_B0bar, double& imag_B0bar, int iset )
{
int ierr = 0;
double m12 = ( p1 + p2 ).mass();
double m13 = ( p1 + p3 ).mass();
double m23 = ( p2 + p3 ).mass();
double W12 = 1. /
( ( square( Mass_rho - m12 ) + square( Gam_rho / 2. ) ) * m12 );
double W13 = 1. /
( ( square( Mass_rho - m13 ) + square( Gam_rho / 2. ) ) * m13 );
double W23 = 1. /
( ( square( Mass_rho - m23 ) + square( Gam_rho / 2. ) ) * m23 );
double Wtot = 1.;
if ( iset >= 0 ) {
Wtot = 1. / sqrt( W12 + W13 + W23 );
}
EvtComplex Mat_rhop = BreitWigner( p1, p2, p3, ierr );
EvtComplex Mat_rhom = BreitWigner( p2, p3, p1, ierr );
EvtComplex Mat_rho0 = BreitWigner( p1, p3, p2, ierr );
EvtComplex Mat_1 = Mat_S3 * Mat_rhop;
EvtComplex Mat_2 = Mat_S4 * Mat_rhom;
EvtComplex Mat_3 = Mat_S5 * Mat_rho0 * 0.5;
EvtComplex MatBp = ( Mat_1 + Mat_2 + Mat_3 ) * Wtot;
Mat_1 = Nat_S3 * Mat_rhom;
Mat_2 = Nat_S4 * Mat_rhop;
Mat_3 = Nat_S5 * Mat_rho0 * 0.5;
EvtComplex MatBm = ( Mat_1 + Mat_2 + Mat_3 ) * Wtot;
real_B0 = real( MatBp );
imag_B0 = imag( MatBp );
real_B0bar = real( MatBm );
imag_B0bar = imag( MatBm );
return ierr;
}
int EvtBTo3hCP::compute3piMPP( EvtVector4R& p1, EvtVector4R& p2,
EvtVector4R& p3, double& real_B0, double& imag_B0,
double& real_B0bar, double& imag_B0bar, int iset )
{
int ierr = 0;
const double ASHQ = sqrt( 2. );
double m12 = ( p1 + p2 ).mass();
double m13 = ( p1 + p3 ).mass();
double W12 = 1. /
( ( square( Mass_rho - m12 ) + square( Gam_rho / 2. ) ) * m12 );
double W13 = 1. /
( ( square( Mass_rho - m13 ) + square( Gam_rho / 2. ) ) * m13 );
double Wtot = 1.;
if ( iset >= 0 ) {
Wtot = 1. / sqrt( W12 + W13 );
}
EvtComplex Mat_rhop = BreitWigner( p1, p2, p3, ierr ) +
BreitWigner( p1, p3, p2, ierr );
EvtComplex MatBp = Mat_S2 * Mat_rhop * Wtot * ASHQ;
EvtComplex MatBm = Nat_S2 * Mat_rhop * Wtot * ASHQ;
real_B0 = real( MatBp );
imag_B0 = imag( MatBp );
real_B0bar = real( MatBm );
imag_B0bar = imag( MatBm );
return ierr;
}
int EvtBTo3hCP::compute3piP00( EvtVector4R& p1, EvtVector4R& p2,
EvtVector4R& p3, double& real_B0, double& imag_B0,
double& real_B0bar, double& imag_B0bar, int iset )
{
int ierr = 0;
const double ASHQ = sqrt( 2. );
double m12 = ( p1 + p2 ).mass();
double m13 = ( p1 + p3 ).mass();
double W12 = 1. /
( ( square( Mass_rho - m12 ) + square( Gam_rho / 2. ) ) * m12 );
double W13 = 1. /
( ( square( Mass_rho - m13 ) + square( Gam_rho / 2. ) ) * m13 );
double Wtot = 1.;
if ( iset >= 0 ) {
Wtot = 1. / sqrt( W12 + W13 );
}
EvtComplex Mat_rhop = BreitWigner( p1, p2, p3, ierr ) +
BreitWigner( p1, p3, p2, ierr );
EvtComplex MatBp = Mat_S1 * Mat_rhop * Wtot * ASHQ;
EvtComplex MatBm = Nat_S1 * Mat_rhop * Wtot * ASHQ;
real_B0 = real( MatBp );
imag_B0 = imag( MatBp );
real_B0bar = real( MatBm );
imag_B0bar = imag( MatBm );
return ierr;
}
int EvtBTo3hCP::computeKpipi( EvtVector4R& p1, EvtVector4R& p2, EvtVector4R& p3,
double& real_B0, double& imag_B0,
double& real_B0bar, double& imag_B0bar, int iset )
{
int ierr = 0;
double m12 = ( p1 + p2 ).mass();
double m13 = ( p1 + p3 ).mass();
double m23 = ( p2 + p3 ).mass();
double W12 = 1. /
( ( square( Mass_Kstar0 - m12 ) + square( Gam_Kstar0 / 2. ) ) *
m12 );
double W13 = 1. /
( ( square( Mass_Kstarp - m13 ) + square( Gam_Kstarp / 2. ) ) *
m13 );
double W23 = 1. /
( ( square( Mass_rho - m23 ) + square( Gam_rho / 2. ) ) * m23 );
double Wtot = 1.;
if ( iset >= 0 ) {
Wtot = 1. / sqrt( W12 + W13 + W23 );
}
EvtComplex BW13 = BreitWigner( p1, p3, p2, ierr, Mass_Kstarp, Gam_Kstarp );
if ( ierr != 0 )
return ierr;
EvtComplex BW12 = BreitWigner( p1, p2, p3, ierr, Mass_Kstar0, Gam_Kstar0 );
if ( ierr != 0 )
return ierr;
/*
If the rho is to be treated on the same footing as K* ==> use the line below
EvtComplex BW23=BreitWigner(p2, p3, p1, ierr, Mass_Rho, Gam_Rho);
*/
EvtComplex BW23 = BreitWigner( p2, p3, p1, ierr );
if ( ierr != 0 )
return ierr;
// Build up amplitudes
EvtComplex MatB0 = MatKstarp * BW13 + MatKstar0 * BW12 + MatKrho * BW23;
EvtComplex MatB0bar = NatKstarp * BW13 + NatKstar0 * BW12 + NatKrho * BW23;
real_B0 = real( MatB0 ) * Wtot;
imag_B0 = imag( MatB0 ) * Wtot;
real_B0bar = real( MatB0bar ) * Wtot;
imag_B0bar = imag( MatB0bar ) * Wtot;
return ierr;
}
void EvtBTo3hCP::rotation( EvtVector4R& p, int newRot )
{
if ( newRot ) {
double phi2 = EvtRandom::Flat() * 2. * pi;
double phi3 = EvtRandom::Flat() * 2. * pi;
double c1 = 2. * EvtRandom::Flat() - 1.;
double c2 = cos( phi2 );
double c3 = cos( phi3 );
double s1 = sqrt( 1. - square( c1 ) );
double s2 = sin( phi2 );
double s3 = sin( phi3 );
rotMatrix[0][0] = c1;
rotMatrix[0][1] = s1 * c3;
rotMatrix[0][2] = s1 * s3;
rotMatrix[1][0] = -s1 * c2;
rotMatrix[1][1] = c1 * c2 * c3 - s2 * s3;
rotMatrix[1][2] = c1 * c2 * s3 + s2 * c3;
rotMatrix[2][0] = s1 * s2;
rotMatrix[2][1] = -c1 * s2 * c3 - c2 * s3;
rotMatrix[2][2] = -c1 * s2 * s3 + c2 * c3;
}
double mom[3];
for ( int i = 1; i < 4; ++i ) {
mom[i - 1] = p.get( i );
p.set( i, 0 );
}
for ( int i = 0; i < 3; ++i ) {
for ( int j = 0; j < 3; ++j ) {
p.set( i + 1, p.get( i + 1 ) + rotMatrix[i][j] * mom[j] );
}
}
}
void EvtBTo3hCP::gammaGamma( EvtVector4R& p, EvtVector4R& pgamma1,
EvtVector4R& pgamma2 )
{
double EGammaCmsPi0 = sqrt( p.mass2() ) / 2.;
double cosThetaRot = EvtRandom::Flat() * 2. - 1.;
double sinThetaRot = sqrt( 1. - square( cosThetaRot ) );
double PhiRot = EvtRandom::Flat() * 2. * pi;
pgamma1.set( 1, EGammaCmsPi0 * sinThetaRot * cos( PhiRot ) );
pgamma1.set( 2, EGammaCmsPi0 * sinThetaRot * sin( PhiRot ) );
pgamma1.set( 3, EGammaCmsPi0 * cosThetaRot );
pgamma1.set( 0, EGammaCmsPi0 );
for ( int i = 1; i < 4; ++i ) {
pgamma2.set( i, -pgamma1.get( i ) );
}
pgamma2.set( 0, pgamma1.get( 0 ) );
pgamma1.applyBoostTo( p );
pgamma2.applyBoostTo( p );
}
EvtComplex EvtBTo3hCP::BreitWigner( EvtVector4R& p1, EvtVector4R& p2,
EvtVector4R& p3, int& ierr, double Mass,
double Width )
{
bool pipiMode = true;
if ( Mass > 1e-5 ) {
pipiMode = false;
}
bool relatBW = true;
bool aleph = true;
EvtComplex result( 0, 0 );
ierr = 0;
double m12 = ( p1 + p2 ).mass();
double e12 = ( p1 + p2 ).get( 0 );
double argu = 1. - square( m12 ) / square( e12 );
double beta = 0;
if ( argu > 0 ) {
beta = sqrt( argu );
} else {
std::cout << "Abnormal beta ! Argu = " << argu << std::endl;
argu = 0;
}
double gamma = e12 / m12;
double m13sq = ( p1 + p3 ).mass2();
double costet = ( 2. * p1.get( 0 ) * p3.get( 0 ) - m13sq + p1.mass2() +
p3.mass2() ) /
( 2. * p1.d3mag() * p3.d3mag() );
double p1z = p1.d3mag() * costet;
double p1zcms12 = gamma * ( p1z + beta * p1.get( 0 ) );
double e1cms12 = gamma * ( p1.get( 0 ) + beta * p1z );
double p1cms12 = sqrt( square( e1cms12 ) - p1.mass2() );
double coscms = p1zcms12 / p1cms12;
if ( pipiMode ) {
if ( aleph ) {
double m12_2 = square( m12 );
result = coscms * EvtCRhoF_W( m12_2 );
} else {
double factor = 2 * ( square( Mass_rho - m12 ) +
square( 0.5 * Gam_rho ) );
factor = coscms * Gam_rho / factor;
double numReal = ( Mass_rho - m12 ) * factor;
double numImg = 0.5 * Gam_rho * factor;
result = EvtComplex( numReal, numImg );
}
} else {
if ( relatBW ) {
double Am2Min = p1.mass2() + p2.mass2() + 2 * p1.mass() * p2.mass();
result = coscms *
EvtRBW( square( m12 ), square( Mass ), Width, Am2Min );
} else {
double factor = 2 * ( square( Mass - m12 ) + square( 0.5 * Width ) );
factor = coscms * Width / factor;
double numReal = ( Mass - m12 ) * factor;
double numImg = 0.5 * Width * factor;
result = EvtComplex( numReal, numImg );
}
}
return result;
}
EvtComplex EvtBTo3hCP::EvtCRhoF_W( double s )
{
const bool kuhn_santa = true; // type of Breit-Wigner formula
// double lambda = 1.0;
double AmRho, GamRho, AmRhoP, GamRhoP, beta, AmRhoPP, GamRhoPP, gamma;
if ( kuhn_santa ) {
//...rho(770)
AmRho = 0.7734;
GamRho = 0.1477;
//...rho(1450)
AmRhoP = 1.465;
GamRhoP = 0.696;
beta = -0.229;
//...rho(1700)
AmRhoPP = 1.760;
GamRhoPP = 0.215;
gamma = 0.075;
} else {
//...rho(770)
AmRho = 0.7757;
GamRho = 0.1508;
//...rho(1450)
AmRhoP = 1.448;
GamRhoP = 0.503;
beta = -0.161;
//...rho(1700)
AmRhoPP = 1.757;
GamRhoPP = 0.237;
gamma = 0.076;
}
EvtComplex result( 0, 0 );
if ( kuhn_santa ) {
result = ( EvtcBW_KS( s, square( AmRho ), GamRho ) + //!...BW-rho( 770)
EvtcBW_KS( s, square( AmRhoP ), GamRhoP ) *
( beta ) + //!...BW-rho(1450)
EvtcBW_KS( s, square( AmRhoPP ), GamRhoPP ) *
( gamma ) ) / //!...BW-rho(1700)
( 1. + beta + gamma );
} else {
result = ( EvtcBW_GS( s, square( AmRho ), GamRho ) +
EvtcBW_GS( s, square( AmRhoP ), GamRhoP ) * ( beta ) +
EvtcBW_GS( s, square( AmRhoPP ), GamRhoPP ) * ( gamma ) ) /
( 1. + beta + gamma );
}
return result;
}
EvtComplex EvtBTo3hCP::EvtRBW( double s, double Am2, double Gam, double Am2Min )
{
EvtComplex result( 0, 0 );
if ( s < Am2Min ) {
return result;
}
double tmp = ( ( s - Am2Min ) / ( Am2 - Am2Min ) );
double G = Gam * ( Am2 / s ) * sqrt( square( tmp ) * tmp );
double D = square( Am2 - s ) + s * square( G );
double X = Am2 * ( Am2 - s );
double Y = Am2 * sqrt( s ) * G;
result = EvtComplex( X / D, Y / D );
return result;
}
EvtComplex EvtBTo3hCP::EvtcBW_KS( double s, double Am2, double Gam )
{
EvtComplex result( 0, 0 );
const double AmPi2 = square( 0.13956995 );
return EvtRBW( s, Am2, Gam, 4. * AmPi2 );
}
EvtComplex EvtBTo3hCP::EvtcBW_GS( double s, double Am2, double Gam )
{
EvtComplex result( 0, 0 );
const double AmPi2 = square( 0.13956995 );
if ( s < 4. * AmPi2 ) {
return result;
}
double tmp = ( ( s - 4. * AmPi2 ) / ( Am2 - 4. * AmPi2 ) );
double G = Gam * ( Am2 / s ) * sqrt( square( tmp ) * tmp );
double z1 = Am2 - s + Evtfs( s, Am2, Gam );
double z2 = sqrt( s ) * G;
double z3 = Am2 + d( Am2 ) * Gam * sqrt( Am2 );
double X = z3 * z1;
double Y = z3 * z2;
double N = square( z1 ) + square( z2 );
result = EvtComplex( X / N, Y / N );
return result;
}
double EvtBTo3hCP::d( double AmRho2 )
{
const double lpi = 3.141593;
const double AmPi = 0.13956995;
const double AmPi2 = square( AmPi );
double AmRho = sqrt( AmRho2 );
double k_AmRho2 = k( AmRho2 );
double result = 3. / lpi * AmPi2 / square( k_AmRho2 ) *
log( ( AmRho + 2. * k_AmRho2 ) / ( 2. * AmPi ) ) +
AmRho / ( 2. * pi * k_AmRho2 ) -
AmPi2 * AmRho / ( pi * ( square( k_AmRho2 ) * k_AmRho2 ) );
return result;
}
double EvtBTo3hCP::k( double s )
{
const double AmPi2 = square( 0.13956995 );
return 0.5 * sqrt( s - 4. * AmPi2 );
}
double EvtBTo3hCP::Evtfs( double s, double AmRho2, double GamRho )
{
double k_s = k( s );
double k_Am2 = k( AmRho2 );
return GamRho * AmRho2 / ( square( k_Am2 ) * k_Am2 ) *
( square( k_s ) * ( h( s ) - h( AmRho2 ) ) +
( AmRho2 - s ) * square( k_Am2 ) * dh_ds( AmRho2 ) );
}
double EvtBTo3hCP::h( double s )
{
const double pi = 3.141593;
const double AmPi = 0.13956995;
double sqrts = sqrt( s );
double k_s = k( s );
return 2. / pi * ( k_s / sqrts ) *
log( ( sqrts + 2. * k_s ) / ( 2. * AmPi ) );
}
double EvtBTo3hCP::dh_ds( double s )
{
const double pi = 3.141593;
return h( s ) * ( 1. / ( 8. * square( k( s ) ) ) - 1. / ( 2 * s ) ) +
1. / ( 2. * pi * s );
}
diff --git a/src/EvtGenModels/EvtBTo3piCP.cpp b/src/EvtGenModels/EvtBTo3piCP.cpp
index 377d535..a397087 100644
--- a/src/EvtGenModels/EvtBTo3piCP.cpp
+++ b/src/EvtGenModels/EvtBTo3piCP.cpp
@@ -1,142 +1,120 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBTo3piCP.cc
-//
-// Description: Routine to decay B->pi+ pi- pi0
-// and has CP violation.
-//
-// Modification history:
-//
-// MK September, 2016 Reimplementation to C++
-// RYD/VERSILLE March 2, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBTo3piCP.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
std::string EvtBTo3piCP::getName()
{
return "BTO3PI_CP";
}
EvtBTo3piCP* EvtBTo3piCP::clone()
{
return new EvtBTo3piCP;
}
void EvtBTo3piCP::init()
{
// check that there are 2 arguments
checkNArg( 2 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
checkSpinDaughter( 2, EvtSpinType::SCALAR );
}
void EvtBTo3piCP::initProbMax()
{
// perform common blocks initialization before
// first use
double alpha = getArg( 1 );
int iset;
iset = 10000;
EvtVector4R p4piplus, p4piminus, p4gamm1, p4gamm2;
double realA, imgA, realbarA, imgbarA;
generator.Evt3pi( alpha, iset, p4piplus, p4piminus, p4gamm1, p4gamm2, realA,
imgA, realbarA, imgbarA );
setProbMax( 1.5 );
}
void EvtBTo3piCP::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
double t;
EvtId other_b;
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.5 );
EvtParticle *pip, *pim, *pi0;
p->makeDaughters( getNDaug(), getDaugs() );
// p->init_daug(SCALAR,&pip,SCALAR,&pim,SCALAR,&pi0);
pip = p->getDaug( 0 );
pim = p->getDaug( 1 );
pi0 = p->getDaug( 2 );
EvtVector4R p4[3];
double dm = getArg( 0 );
double alpha = getArg( 1 );
int iset;
iset = 0;
EvtVector4R p4piplus, p4piminus, p4gamm1, p4gamm2;
double realA, imgA, realbarA, imgbarA;
generator.Evt3pi( alpha, iset, p4[0], p4[1], p4gamm1, p4gamm2, realA, imgA,
realbarA, imgbarA );
p4[2] = p4gamm1 + p4gamm2;
if ( pip->getId() == EvtPDL::getId( "pi+" ) ) {
pip->init( getDaug( 0 ), p4[0] );
pim->init( getDaug( 1 ), p4[1] );
} else {
pip->init( getDaug( 0 ), p4[1] );
pim->init( getDaug( 1 ), p4[0] );
}
pi0->init( getDaug( 2 ), p4[2] );
EvtComplex amp;
EvtComplex A( realA, imgA );
EvtComplex Abar( realbarA, imgbarA );
if ( other_b == B0B ) {
amp = A * cos( dm * t / ( 2 * EvtConst::c ) ) +
EvtComplex( 0., 1. ) * Abar * sin( dm * t / ( 2 * EvtConst::c ) );
}
if ( other_b == B0 ) {
amp = Abar * cos( dm * t / ( 2 * EvtConst::c ) ) +
EvtComplex( 0., 1. ) * A * sin( dm * t / ( 2 * EvtConst::c ) );
}
vertex( amp );
return;
}
diff --git a/src/EvtGenModels/EvtBTo4piCP.cpp b/src/EvtGenModels/EvtBTo4piCP.cpp
index 6b5d4d5..0511758 100644
--- a/src/EvtGenModels/EvtBTo4piCP.cpp
+++ b/src/EvtGenModels/EvtBTo4piCP.cpp
@@ -1,261 +1,241 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBTo4piCP.cc
-//
-// Description: Routine to decay B->pi+ pi- pi+ pi-.
-//
-// Modification history:
-//
-// RYD March 2, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBTo4piCP.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <stdlib.h>
#include <string>
EvtComplex EvtAmpA2( const EvtVector4R& p4pi1, const EvtVector4R& p4pi2,
const EvtVector4R& p4pi3, const EvtVector4R& p4pi4 )
{
//added by Lange Jan4,2000
static EvtId A2M = EvtPDL::getId( "a_2-" );
static EvtId RHO0 = EvtPDL::getId( "rho0" );
EvtVector4R p4a2, p4rho, p4b;
p4rho = p4pi1 + p4pi2;
p4a2 = p4rho + p4pi3;
p4b = p4a2 + p4pi4;
EvtVector4R p4b_a2, p4rho_a2, p4pi1_a2, p4a2_a2;
p4b_a2 = boostTo( p4b, p4a2 );
p4rho_a2 = boostTo( p4rho, p4a2 );
p4pi1_a2 = boostTo( p4pi1, p4a2 );
p4a2_a2 = boostTo( p4a2, p4a2 );
EvtVector4R p4pi1_rho;
p4pi1_rho = boostTo( p4pi1_a2, p4rho_a2 );
EvtVector4R vb, vrho, vpi, t;
vb = p4b_a2 / p4b_a2.d3mag();
vrho = p4rho_a2 / p4rho_a2.d3mag();
vpi = p4pi1_rho / p4pi1_rho.d3mag();
t.set( 1.0, 0.0, 0.0, 0.0 );
// EvtComplex amp_a1,amp_a2;
EvtComplex amp_a2;
// double bwm_a1=EvtPDL::getMeanMass(A1M);
// double gamma_a1=EvtPDL::getWidth(A1M);
double bwm_a2 = EvtPDL::getMeanMass( A2M );
double gamma_a2 = EvtPDL::getWidth( A2M );
double bwm_rho = EvtPDL::getMeanMass( RHO0 );
double gamma_rho = EvtPDL::getWidth( RHO0 );
amp_a2 =
( sqrt( gamma_a2 / EvtConst::twoPi ) /
( ( p4a2 ).mass() - bwm_a2 - EvtComplex( 0.0, 0.5 * gamma_a2 ) ) ) *
( sqrt( gamma_rho / EvtConst::twoPi ) /
( ( p4rho ).mass() - bwm_rho - EvtComplex( 0.0, 0.5 * gamma_rho ) ) );
return amp_a2 *
( vb.get( 1 ) * vrho.get( 1 ) + vb.get( 2 ) * vrho.get( 2 ) +
vb.get( 3 ) * vrho.get( 3 ) ) *
( vpi.get( 1 ) *
( vb.get( 2 ) * vrho.get( 3 ) - vb.get( 3 ) * vrho.get( 2 ) ) +
vpi.get( 2 ) *
( vb.get( 3 ) * vrho.get( 1 ) - vb.get( 1 ) * vrho.get( 3 ) ) +
vpi.get( 3 ) *
( vb.get( 1 ) * vrho.get( 2 ) - vb.get( 2 ) * vrho.get( 1 ) ) );
}
EvtComplex EvtAmpA1( const EvtVector4R& p4pi1, const EvtVector4R& p4pi2,
const EvtVector4R& p4pi3, const EvtVector4R& p4pi4 )
{
//added by Lange Jan4,2000
static EvtId A1M = EvtPDL::getId( "a_1-" );
static EvtId RHO0 = EvtPDL::getId( "rho0" );
EvtVector4R p4a1, p4rho, p4b;
p4rho = p4pi1 + p4pi2;
p4a1 = p4rho + p4pi3;
p4b = p4a1 + p4pi4;
EvtVector4R p4b_a1, p4rho_a1, p4pi1_a1, p4a1_a1;
p4b_a1 = boostTo( p4b, p4a1 );
p4rho_a1 = boostTo( p4rho, p4a1 );
p4pi1_a1 = boostTo( p4pi1, p4a1 );
p4a1_a1 = boostTo( p4a1, p4a1 );
EvtVector4R p4pi1_rho;
p4pi1_rho = boostTo( p4pi1_a1, p4rho_a1 );
EvtVector4R vb, vrho, vpi, t;
vb = p4b_a1 / p4b_a1.d3mag();
vrho = p4rho_a1 / p4rho_a1.d3mag();
vpi = p4pi1_rho / p4pi1_rho.d3mag();
t.set( 1.0, 0.0, 0.0, 0.0 );
EvtComplex amp_a1;
double bwm_a1 = EvtPDL::getMeanMass( A1M );
double gamma_a1 = EvtPDL::getWidth( A1M );
// double bwm_a2=EvtPDL::getMeanMass(A2M);
// double gamma_a2=EvtPDL::getWidth(A2M);
double bwm_rho = EvtPDL::getMeanMass( RHO0 );
double gamma_rho = EvtPDL::getWidth( RHO0 );
amp_a1 =
( sqrt( gamma_a1 / EvtConst::twoPi ) /
( ( p4a1 ).mass() - bwm_a1 - EvtComplex( 0.0, 0.5 * gamma_a1 ) ) ) *
( sqrt( gamma_rho / EvtConst::twoPi ) /
( ( p4rho ).mass() - bwm_rho - EvtComplex( 0.0, 0.5 * gamma_rho ) ) );
return amp_a1 * ( vb.get( 1 ) * vpi.get( 1 ) + vb.get( 2 ) * vpi.get( 2 ) +
vb.get( 3 ) * vpi.get( 3 ) );
}
std::string EvtBTo4piCP::getName()
{
return "BTO4PI_CP";
}
EvtBTo4piCP* EvtBTo4piCP::clone()
{
return new EvtBTo4piCP;
}
void EvtBTo4piCP::init()
{
// check that there are 18 arguments
checkNArg( 18 );
checkNDaug( 4 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
checkSpinDaughter( 2, EvtSpinType::SCALAR );
checkSpinDaughter( 3, EvtSpinType::SCALAR );
}
void EvtBTo4piCP::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
double t;
EvtId other_b;
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.5 );
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4R mom1 = p->getDaug( 0 )->getP4();
EvtVector4R mom2 = p->getDaug( 1 )->getP4();
EvtVector4R mom3 = p->getDaug( 2 )->getP4();
EvtVector4R mom4 = p->getDaug( 3 )->getP4();
// double alpha=getArg(0);
//double dm=getArg(1);
EvtComplex amp;
EvtComplex A, Abar;
EvtComplex A_a1p, Abar_a1p, A_a2p, Abar_a2p;
EvtComplex A_a1m, Abar_a1m, A_a2m, Abar_a2m;
A_a1p = EvtComplex( getArg( 2 ) * cos( getArg( 3 ) ),
getArg( 2 ) * sin( getArg( 3 ) ) );
Abar_a1p = EvtComplex( getArg( 4 ) * cos( getArg( 5 ) ),
getArg( 4 ) * sin( getArg( 5 ) ) );
A_a2p = EvtComplex( getArg( 6 ) * cos( getArg( 7 ) ),
getArg( 6 ) * sin( getArg( 7 ) ) );
Abar_a2p = EvtComplex( getArg( 8 ) * cos( getArg( 9 ) ),
getArg( 8 ) * sin( getArg( 9 ) ) );
A_a1m = EvtComplex( getArg( 10 ) * cos( getArg( 11 ) ),
getArg( 10 ) * sin( getArg( 11 ) ) );
Abar_a1m = EvtComplex( getArg( 12 ) * cos( getArg( 13 ) ),
getArg( 12 ) * sin( getArg( 13 ) ) );
A_a2m = EvtComplex( getArg( 14 ) * cos( getArg( 15 ) ),
getArg( 14 ) * sin( getArg( 15 ) ) );
Abar_a2m = EvtComplex( getArg( 16 ) * cos( getArg( 17 ) ),
getArg( 16 ) * sin( getArg( 17 ) ) );
EvtComplex a2p_amp = EvtAmpA2( mom1, mom2, mom3, mom4 ) +
EvtAmpA2( mom1, mom4, mom3, mom2 ) +
EvtAmpA2( mom3, mom2, mom1, mom4 ) +
EvtAmpA2( mom3, mom4, mom1, mom2 );
EvtComplex a2m_amp = EvtAmpA2( mom2, mom3, mom4, mom1 ) +
EvtAmpA2( mom2, mom1, mom4, mom3 ) +
EvtAmpA2( mom4, mom3, mom2, mom1 ) +
EvtAmpA2( mom4, mom1, mom2, mom3 );
EvtComplex a1p_amp = EvtAmpA1( mom1, mom2, mom3, mom4 ) +
EvtAmpA1( mom1, mom4, mom3, mom2 ) +
EvtAmpA1( mom3, mom2, mom1, mom4 ) +
EvtAmpA1( mom3, mom4, mom1, mom2 );
EvtComplex a1m_amp = EvtAmpA1( mom2, mom3, mom4, mom1 ) +
EvtAmpA1( mom2, mom1, mom4, mom3 ) +
EvtAmpA1( mom4, mom3, mom2, mom1 ) +
EvtAmpA1( mom4, mom1, mom2, mom3 );
A = A_a2p * a2p_amp + A_a1p * a1p_amp + A_a2m * a2m_amp + A_a1m * a1m_amp;
Abar = Abar_a2p * a2p_amp + Abar_a1p * a1p_amp + Abar_a2m * a2m_amp +
Abar_a1m * a1m_amp;
if ( other_b == B0B ) {
amp = A * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
EvtComplex( cos( -2.0 * getArg( 0 ) ), sin( -2.0 * getArg( 0 ) ) ) *
getArg( 2 ) * EvtComplex( 0.0, 1.0 ) * Abar *
sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
}
if ( other_b == B0 ) {
amp = A * EvtComplex( cos( 2.0 * getArg( 0 ) ), sin( 2.0 * getArg( 0 ) ) ) *
EvtComplex( 0.0, 1.0 ) *
sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
getArg( 2 ) * Abar * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
}
vertex( amp );
return;
}
diff --git a/src/EvtGenModels/EvtBToDDalitzCPK.cpp b/src/EvtGenModels/EvtBToDDalitzCPK.cpp
index 5ba2e6c..6db3881 100644
--- a/src/EvtGenModels/EvtBToDDalitzCPK.cpp
+++ b/src/EvtGenModels/EvtBToDDalitzCPK.cpp
@@ -1,125 +1,122 @@
-// $Id: EvtBToDDalitzCPK.cpp,v 1.2 2009-03-16 16:28:42 robbep Exp $
-// Include files
+#include "EvtGenModels/EvtBToDDalitzCPK.hh"
+
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtVector4C.hh"
-// local
-#include "EvtGenModels/EvtBToDDalitzCPK.hh"
-
//-----------------------------------------------------------------------------
// Implementation file for class : EvtBToDDalitzCPK
// Decay Model for B->D0K with D0->Ks pi+ pi-
// it is just a way to get the arguments...
// Works also for other B->D0K decays...
// 2003-12-08 : Patrick Robbe
//-----------------------------------------------------------------------------
//=============================================================================
// Name of the model
//=============================================================================
std::string EvtBToDDalitzCPK::getName()
{
return "BTODDALITZCPK";
}
//=============================================================================
// Clone method
//=============================================================================
EvtBToDDalitzCPK* EvtBToDDalitzCPK::clone()
{
return new EvtBToDDalitzCPK;
}
//=============================================================================
// Initialisation method
//=============================================================================
void EvtBToDDalitzCPK::init()
{
// Check that there are 3 arguments
checkNArg( 3 );
// Check that there are 2 daughters
checkNDaug( 2 );
// Check that the particles of the decay are :
// B+/- -> D0/bar K+/-
// B+/- -> K+/- D0/bar
// B0/bar -> K*0/bar D0/bar
// and nothing else ...
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId KP = EvtPDL::getId( "K+" );
static EvtId KM = EvtPDL::getId( "K-" );
static EvtId KS = EvtPDL::getId( "K*0" );
static EvtId KSB = EvtPDL::getId( "anti-K*0" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
_flag = 0;
EvtId parent = getParentId();
EvtId d1 = getDaug( 0 );
EvtId d2 = getDaug( 1 );
if ( ( ( parent == BP ) || ( parent == BM ) ) &&
( ( d1 == D0 ) || ( d1 == D0B ) ) && ( ( d2 == KP ) || ( d2 == KM ) ) ) {
_flag = 1;
// PHSP Decay
} else if ( ( ( parent == BP ) || ( parent == BM ) ) &&
( ( d1 == KP ) || ( d1 == KM ) ) &&
( ( d2 == D0 ) || ( d2 == D0B ) ) ) {
_flag = 1;
// also PHSP decay
} else if ( ( ( parent == B0 ) || ( parent == B0B ) ) &&
( ( d1 == KS ) || ( d1 == KSB ) ) &&
( ( d2 == D0 ) || ( d2 == D0B ) ) ) {
_flag = 2;
// SVS Decay
}
if ( _flag == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBToDDalitzCPK : Invalid mode." << std::endl;
assert( 0 );
}
}
//=============================================================================
// Set prob max
//=============================================================================
void EvtBToDDalitzCPK::initProbMax()
{
if ( _flag == 1 ) {
// PHSP
setProbMax( 0. );
} else if ( _flag == 2 ) {
// SVS
setProbMax( 1.0 );
}
}
//=============================================================================
// decay particle
//=============================================================================
void EvtBToDDalitzCPK::decay( EvtParticle* p )
{
if ( _flag == 1 ) {
// PHSP
p->initializePhaseSpace( getNDaug(), getDaugs() );
vertex( 0. );
} else if ( _flag == 2 ) {
// SVS
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle* v;
v = p->getDaug( 0 );
double massv = v->mass();
EvtVector4R momv = v->getP4();
EvtVector4R moms = p->getDaug( 1 )->getP4();
double m_parent = p->mass();
EvtVector4R p4_parent = momv + moms;
double norm = massv / ( momv.d3mag() * m_parent );
p4_parent = norm * p4_parent;
vertex( 0, p4_parent * ( v->epsParent( 0 ) ) );
vertex( 1, p4_parent * ( v->epsParent( 1 ) ) );
vertex( 2, p4_parent * ( v->epsParent( 2 ) ) );
}
}
diff --git a/src/EvtGenModels/EvtBToDiBaryonlnupQCD.cpp b/src/EvtGenModels/EvtBToDiBaryonlnupQCD.cpp
index 28c7061..4d3f1ba 100644
--- a/src/EvtGenModels/EvtBToDiBaryonlnupQCD.cpp
+++ b/src/EvtGenModels/EvtBToDiBaryonlnupQCD.cpp
@@ -1,232 +1,208 @@
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBToDiBaryonlnupQCD.cc
-//
-// Description: Routine to implement B -> Baryon Anti-baryon l nu decays.
-// The form factors are from arXiv.1107.0801 (2011)
-//
-//
-// Modification history:
-//
-// Mark Smith 17/07/2017 Module created
-// Ryan Newcombe May 2018 Additional baryons and
-// Rarita-Schwinger-type particles
-// John B Oct 2018 Optimisations
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtBToDiBaryonlnupQCD.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtVector4R.hh"
std::string EvtBToDiBaryonlnupQCD::getName()
{
return "BToDiBaryonlnupQCD";
}
EvtDecayBase* EvtBToDiBaryonlnupQCD::clone()
{
return new EvtBToDiBaryonlnupQCD;
}
void EvtBToDiBaryonlnupQCD::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs(), true );
calcAmp_->CalcAmp( p, _amp2 );
}
void EvtBToDiBaryonlnupQCD::init()
{
if ( !( getNArg() == 6 || getNArg() == 7 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBToDiBaryonlnupQCD model expected "
<< " 6 or 7 arguments but found:" << getNArg() << std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << std::endl;
::abort();
}
if ( getNDaug() != 4 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Wrong number of daughters in EvtBToDiBaryonlnupQCD model: "
<< "4 daughters expected but found: " << getNDaug() << std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << std::endl;
::abort();
}
// We expect B -> baryon baryon lepton neutrino
EvtSpinType::spintype parentType = EvtPDL::getSpinType( getParentId() );
EvtSpinType::spintype leptonType = EvtPDL::getSpinType( getDaug( 2 ) );
EvtSpinType::spintype neutrinoType = EvtPDL::getSpinType( getDaug( 3 ) );
if ( parentType != EvtSpinType::SCALAR ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBToDiBaryonlnupQCD model expected "
<< " a SCALAR parent, found:" << EvtPDL::name( getParentId() )
<< std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << std::endl;
::abort();
}
if ( leptonType != EvtSpinType::DIRAC ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBToDiBaryonlnupQCD model expected "
<< " a DIRAC 3rd daughter, found:" << EvtPDL::name( getDaug( 2 ) )
<< std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << std::endl;
::abort();
}
if ( neutrinoType != EvtSpinType::NEUTRINO ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBToDiBaryonlnupQCD model expected "
<< " a NEUTRINO 4th daughter, found:" << EvtPDL::name( getDaug( 3 ) )
<< std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << std::endl;
::abort();
}
// Get the 6 form factor D parameters from model arguments in the decay file
std::vector<double> DPars( 6 );
for ( int i = 0; i < 6; i++ ) {
DPars[i] = getArg( i );
}
// Form factor model
ffModel_ = std::make_unique<EvtBToDiBaryonlnupQCDFF>( DPars );
// Set amplitude calculation pointer.
// Accomodate for spin 1/2 (DIRAC) or 3/2 (RARITASCHWINGER) baryons
EvtSpinType::spintype baryon1Type = EvtPDL::getSpinType( getDaug( 0 ) );
EvtSpinType::spintype baryon2Type = EvtPDL::getSpinType( getDaug( 1 ) );
if ( ( baryon1Type == EvtSpinType::DIRAC &&
baryon2Type == EvtSpinType::RARITASCHWINGER ) ||
( baryon1Type == EvtSpinType::RARITASCHWINGER &&
baryon2Type == EvtSpinType::DIRAC ) ||
( baryon1Type == EvtSpinType::DIRAC &&
baryon2Type == EvtSpinType::DIRAC ) ) {
calcAmp_ = std::make_unique<EvtSLDiBaryonAmp>( *ffModel_ );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Wrong baryon spin type in EvtBToDiBaryonlnupQCD model. "
<< "Expected spin type " << EvtSpinType::DIRAC << " or "
<< EvtSpinType::RARITASCHWINGER << ", found spin types "
<< baryon1Type << " and " << baryon2Type << std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << std::endl;
::abort();
}
}
void EvtBToDiBaryonlnupQCD::initProbMax()
{
// Set maximum prob using dec file parameter if present
if ( getNArg() == 7 ) {
setProbMax( getArg( 6 ) );
} else {
// Default probability for the B -> p p l nu mode, where l = e, mu or tau
setProbMax( 3.0e6 );
// Specific decay modes, where we have one proton plus a second
// baryon that can be any (excited) state. They all have lower
// maximum probabilities compared to the default pp mode in order
// to improve accept/reject generation efficiency
static EvtIdSet BMesons( "B-", "B+" );
static EvtIdSet Delta( "Delta+", "anti-Delta-" );
static EvtIdSet LambdaC( "Lambda_c+", "anti-Lambda_c-" );
static EvtIdSet LambdaC1( "Lambda_c(2593)+", "anti-Lambda_c(2593)-" );
static EvtIdSet LambdaC2( "Lambda_c(2625)+", "anti-Lambda_c(2625)-" );
static EvtIdSet N1440( "N(1440)+", "anti-N(1440)-" );
static EvtIdSet N1520( "N(1520)+", "anti-N(1520)-" );
static EvtIdSet N1535( "N(1535)+", "anti-N(1535)-" );
static EvtIdSet N1650( "N(1650)+", "anti-N(1650)-" );
static EvtIdSet N1700( "N(1700)+", "anti-N(1700)-" );
static EvtIdSet N1710( "N(1710)+", "anti-N(1710)-" );
static EvtIdSet N1720( "N(1720)+", "anti-N(1720)-" );
EvtId parId = getParentId();
EvtId bar1Id = getDaug( 0 );
EvtId bar2Id = getDaug( 1 );
// These probabilties are sensitive to the sub-decay modes of the excited baryon states,
// which limit the available phase space and allows for events to be generated within the
// 10,000 event trial limit. Otherwise the amplitude varies too much (by more than a factor
// of a million) and events fail to be generated correctly. In case of problems, specify
// the maximum probability by passing an extra 7th model parameter
if ( BMesons.contains( parId ) ) {
if ( Delta.contains( bar1Id ) || Delta.contains( bar2Id ) ) {
// Delta
setProbMax( 1e7 );
} else if ( LambdaC.contains( bar1Id ) ||
LambdaC.contains( bar2Id ) ) {
// Lambda_c+
setProbMax( 1000.0 );
} else if ( LambdaC1.contains( bar1Id ) ||
LambdaC1.contains( bar2Id ) ) {
// Lambda_c+(2593)
setProbMax( 200.0 );
} else if ( LambdaC2.contains( bar1Id ) ||
LambdaC2.contains( bar2Id ) ) {
// Lambda_c+(2625)
setProbMax( 500.0 );
} else if ( N1440.contains( bar1Id ) || N1440.contains( bar2Id ) ) {
// N(1440)
setProbMax( 8e5 );
} else if ( N1520.contains( bar1Id ) || N1520.contains( bar2Id ) ) {
// N(1520)
setProbMax( 8e6 );
} else if ( N1535.contains( bar1Id ) || N1535.contains( bar2Id ) ) {
// N(1535)
setProbMax( 8e5 );
} else if ( N1650.contains( bar1Id ) || N1650.contains( bar2Id ) ) {
// N(1650)
setProbMax( 8e5 );
} else if ( N1700.contains( bar1Id ) || N1700.contains( bar2Id ) ) {
// N(1700)
setProbMax( 4e6 );
} else if ( N1710.contains( bar1Id ) || N1710.contains( bar2Id ) ) {
// N(1710)
setProbMax( 5e5 );
} else if ( N1720.contains( bar1Id ) || N1720.contains( bar2Id ) ) {
// N(1720)
setProbMax( 4e6 );
} // Baryon combinations
} // B parent
} // Specific modes
}
diff --git a/src/EvtGenModels/EvtBToDiBaryonlnupQCDFF.cpp b/src/EvtGenModels/EvtBToDiBaryonlnupQCDFF.cpp
index d7628cd..f892c42 100644
--- a/src/EvtGenModels/EvtBToDiBaryonlnupQCDFF.cpp
+++ b/src/EvtGenModels/EvtBToDiBaryonlnupQCDFF.cpp
@@ -1,81 +1,55 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBTopplnupQCDFF.cc
-//
-// Description: Routine to implement form factor calculation for
-// B->Baryon Anti-baryon l nu from pQCD counting rules.
-// Taken from arXiv:1107.0801
-//
-//
-// Modification history:
-//
-// Mark Smith 17/07/2017 Module created
-// Ryan Newcombe May 2018 Added function to get form factors for
-// Rarita-Schwinger daughters
-// John B Oct 2018 Added FormFactors class
-//
-//--------------------------------------------------------------------------
-
#include "EvtGenModels/EvtBToDiBaryonlnupQCDFF.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
EvtBToDiBaryonlnupQCDFF::EvtBToDiBaryonlnupQCDFF() : DPars(), nDPars( 0 )
{
}
EvtBToDiBaryonlnupQCDFF::EvtBToDiBaryonlnupQCDFF( std::vector<double>& DParameters ) :
DPars( DParameters ), nDPars( DParameters.size() )
{
}
void EvtBToDiBaryonlnupQCDFF::getFF( EvtParticle*, double dibaryonMass,
EvtBToDiBaryonlnupQCDFF::FormFactors& FF ) const
{
if ( nDPars == 6 && dibaryonMass > 0.0 ) {
// 5/3*[1/M^2]^3
double t = 5.0 / ( 3.0 * pow( dibaryonMass, 6.0 ) );
double Dp = DPars[0];
double Dpb = DPars[1];
double D2 = DPars[2];
double D3 = DPars[3];
double D4 = DPars[4];
double D5 = DPars[5];
FF.F1 = ( Dp + 0.2 * Dpb ) * t;
FF.F2 = -D2 * t;
FF.F3 = -D3 * t;
FF.F4 = -D4 * t;
FF.F5 = -D5 * t;
FF.G1 = ( Dp - 0.2 * Dpb ) * t;
FF.G2 = -FF.F2;
FF.G3 = -FF.F3;
FF.G4 = -FF.F4;
FF.G5 = -FF.F5;
}
}
void EvtBToDiBaryonlnupQCDFF::getDiracFF(
EvtParticle* parent, double dibaryonMass,
EvtBToDiBaryonlnupQCDFF::FormFactors& FF ) const
{
this->getFF( parent, dibaryonMass, FF );
}
void EvtBToDiBaryonlnupQCDFF::getRaritaFF(
EvtParticle* parent, double dibaryonMass,
EvtBToDiBaryonlnupQCDFF::FormFactors& FF ) const
{
this->getFF( parent, dibaryonMass, FF );
}
diff --git a/src/EvtGenModels/EvtBToKpipiCP.cpp b/src/EvtGenModels/EvtBToKpipiCP.cpp
index 0878a20..732ae68 100644
--- a/src/EvtGenModels/EvtBToKpipiCP.cpp
+++ b/src/EvtGenModels/EvtBToKpipiCP.cpp
@@ -1,135 +1,105 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBToKpipiCP.cc
-//
-// Description: Routine to decay B->K pi pi
-// and has CP violation.
-// --- This is the routine to be called by the Main generator
-// to get the decay of B0 -->-- K+ pi- pi0
-// The decay proceeeds through three channels:
-// a) B0 -->-- K*+ pi- ; K*+ -->-- K+ pi0
-// b) K*0 pi0 ; K*0bar -->-- K+ pi-
-// c) K- rho+ ; rho+ -->-- pi+ pi0
-// It provides at the same time the CP conjugate decay
-// B0bar -->-- K- pi+ pi0
-//
-// Modification history:
-//
-// MK September, 2016 Reimplementation to C++
-// Versille September, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBToKpipiCP.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <stdlib.h>
#include <string>
std::string EvtBToKpipiCP::getName()
{
return "BTOKPIPI_CP";
}
EvtBToKpipiCP* EvtBToKpipiCP::clone()
{
return new EvtBToKpipiCP;
}
void EvtBToKpipiCP::init()
{
// check that there are 3 arguments
checkNArg( 3 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
checkSpinDaughter( 2, EvtSpinType::SCALAR );
double alpha = getArg( 1 );
double beta = getArg( 2 );
int iset;
iset = 10000;
EvtVector4R p4Kplus, p4piminus, p4gamm1, p4gamm2;
double realA, imgA, realbarA, imgbarA;
generator.EvtKpipi( alpha, beta, iset, p4Kplus, p4piminus, p4gamm1, p4gamm2,
realA, imgA, realbarA, imgbarA );
}
void EvtBToKpipiCP::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
double t;
EvtId other_b;
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.5 );
EvtParticle *Kp, *pim, *pi0;
p->makeDaughters( getNDaug(), getDaugs() );
Kp = p->getDaug( 0 );
pim = p->getDaug( 1 );
pi0 = p->getDaug( 2 );
EvtVector4R p4[3];
//double dm=getArg(0);
double alpha = getArg( 1 );
double beta = getArg( 2 );
int iset;
iset = 0;
EvtVector4R p4Kplus, p4piminus, p4gamm1, p4gamm2;
double realA, imgA, realbarA, imgbarA;
generator.EvtKpipi( alpha, beta, iset, p4[0], p4[1], p4gamm1, p4gamm2,
realA, imgA, realbarA, imgbarA );
p4[2] = p4gamm1 + p4gamm2;
Kp->init( getDaug( 0 ), p4[0] );
pim->init( getDaug( 1 ), p4[1] );
pi0->init( getDaug( 2 ), p4[2] );
EvtComplex amp;
EvtComplex A( realA, imgA );
EvtComplex Abar( realbarA, imgbarA );
if ( other_b == B0B ) {
amp = Abar;
}
if ( other_b == B0 ) {
amp = A;
}
vertex( amp );
return;
}
diff --git a/src/EvtGenModels/EvtBToPlnuBK.cpp b/src/EvtGenModels/EvtBToPlnuBK.cpp
index 5a4292f..64fb3fd 100644
--- a/src/EvtGenModels/EvtBToPlnuBK.cpp
+++ b/src/EvtGenModels/EvtBToPlnuBK.cpp
@@ -1,92 +1,71 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGenModels/EvtBToPlnuBK.cc
-//
-// Description: B->Xu l nu with BK (Becirevic-Kaidalov) parametrization
-// Xu is a pseudoscalar (pi_plus,pi0,eta or eta_prime)
-//
-// Modification history:
-//
-// Martin Simard, U. de Montreal, 08/01/2007 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBToPlnuBK.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
#include "EvtGenModels/EvtBToPlnuBKFF.hh"
#include <assert.h>
#include <stdlib.h>
using std::cout;
using std::endl;
using std::fstream;
std::string EvtBToPlnuBK::getName()
{
return "BTOPLNUBK";
}
EvtBToPlnuBK* EvtBToPlnuBK::clone()
{
return new EvtBToPlnuBK;
}
void EvtBToPlnuBK::initProbMax()
{
EvtId parnum, mesnum, lnum, nunum;
parnum = getParentId();
mesnum = getDaug( 0 );
lnum = getDaug( 1 );
nunum = getDaug( 2 );
double mymaxprob = calcamp->CalcMaxProb( parnum, mesnum, lnum, nunum,
BKmodel.get() );
setProbMax( mymaxprob );
}
void EvtBToPlnuBK::init()
{
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be X lepton neutrino
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
EvtSpinType::spintype d1type = EvtPDL::getSpinType( getDaug( 0 ) );
if ( d1type == EvtSpinType::SCALAR ) {
checkNArg( 2 );
BKmodel = std::make_unique<EvtBToPlnuBKFF>( getArg( 0 ), getArg( 1 ) );
calcamp = std::make_unique<EvtSemiLeptonicScalarAmp>();
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "BK model handles only scalar meson daughters. Sorry." << endl;
::abort();
}
}
void EvtBToPlnuBK::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
calcamp->CalcAmp( p, _amp2, BKmodel.get() );
}
diff --git a/src/EvtGenModels/EvtBToPlnuBKFF.cpp b/src/EvtGenModels/EvtBToPlnuBKFF.cpp
index 597c38d..f991f54 100644
--- a/src/EvtGenModels/EvtBToPlnuBKFF.cpp
+++ b/src/EvtGenModels/EvtBToPlnuBKFF.cpp
@@ -1,102 +1,81 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGenModels/EvtBToPlnuBK.cc
-//
-// Description: B->Xu l nu with BK (Becirevic-Kaidalov) parametrization
-// Xu is a pseudoscalar (pi_plus,pi0,eta or eta_prime)
-//
-// Modification history:
-//
-// Martin Simard, U. de Montreal, 08/01/2007 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBToPlnuBKFF.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <math.h>
#include <stdlib.h>
#include <string>
EvtBToPlnuBKFF::EvtBToPlnuBKFF( double alpha, double beta )
{
_alpha = alpha;
_beta = beta;
return;
}
void EvtBToPlnuBKFF::getscalarff( EvtId parent, EvtId /*daught*/, double t,
double /*mass*/, double* fp, double* f0 )
{
//Define mBstar
EvtId Bplus = EvtPDL::getId( "B+" );
EvtId Bminus = EvtPDL::getId( "B-" );
double mBstar = EvtPDL::getMeanMass( EvtPDL::getId( "B*0" ) );
if ( parent == Bplus || parent == Bminus )
mBstar = EvtPDL::getMeanMass( EvtPDL::getId( "B*+" ) );
double mBstar2 = mBstar * mBstar;
//Compute BK parametrization (t==q2)
double fplus = 1.0 /
( ( 1.0 - t / mBstar2 ) * ( 1.0 - _alpha * t / mBstar2 ) );
double fzero = 1.0 / ( 1.0 - t / ( mBstar2 * _beta ) );
*fp = fplus;
*f0 = fzero;
return;
}
void EvtBToPlnuBKFF::getvectorff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getvectorff in EvtBToPlnuBKFF.\n";
::abort();
}
void EvtBToPlnuBKFF::gettensorff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :gettensorff in EvtBToPlnuBKFf.\n";
::abort();
}
void EvtBToPlnuBKFF::getbaryonff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtBToPlnuBKFF.\n";
::abort();
}
void EvtBToPlnuBKFF::getdiracff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getdiracff in EvtBToPlnuBKFF.\n";
::abort();
}
void EvtBToPlnuBKFF::getraritaff( EvtId, EvtId, double, double, double*,
double*, double*, double*, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtBToPlnuBKFF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtBToVlnuBall.cpp b/src/EvtGenModels/EvtBToVlnuBall.cpp
index f778ce9..463e9ba 100644
--- a/src/EvtGenModels/EvtBToVlnuBall.cpp
+++ b/src/EvtGenModels/EvtBToVlnuBall.cpp
@@ -1,94 +1,72 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGenModels/EvtBToVlnuBall.cc
-//
-// Description: B->Xu l nu with the Ball/Zwicky decay model
-// Xu is a vector (rho, rho0, omega)
-//
-//
-// Modification history:
-//
-// Wells Wulsin 2008 Aug 14 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBToVlnuBall.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
#include "EvtGenModels/EvtBToVlnuBallFF.hh"
#include <assert.h>
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtBToVlnuBall::getName()
{
return "BTOVLNUBALL";
}
EvtBToVlnuBall* EvtBToVlnuBall::clone()
{
return new EvtBToVlnuBall;
}
void EvtBToVlnuBall::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
_calcamp->CalcAmp( p, _amp2, _Ballmodel.get() );
}
void EvtBToVlnuBall::initProbMax()
{
EvtId parnum, mesnum, lnum, nunum;
parnum = getParentId();
mesnum = getDaug( 0 );
lnum = getDaug( 1 );
nunum = getDaug( 2 );
double mymaxprob = _calcamp->CalcMaxProb( parnum, mesnum, lnum, nunum,
_Ballmodel.get() );
setProbMax( mymaxprob );
}
void EvtBToVlnuBall::init()
{
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be X lepton neutrino
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
EvtSpinType::spintype d1type = EvtPDL::getSpinType( getDaug( 0 ) );
if ( d1type == EvtSpinType::VECTOR ) {
checkNArg( 8 ); // the number of arguments needed for the Ball model
_Ballmodel = std::make_unique<EvtBToVlnuBallFF>(
getArg( 0 ), getArg( 1 ), getArg( 2 ), getArg( 3 ), getArg( 4 ),
getArg( 5 ), getArg( 6 ), getArg( 7 ) );
_calcamp = std::make_unique<EvtSemiLeptonicVectorAmp>();
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Ball model handles only vector meson daughters. Sorry." << endl;
::abort();
}
}
diff --git a/src/EvtGenModels/EvtBToVlnuBallFF.cpp b/src/EvtGenModels/EvtBToVlnuBallFF.cpp
index 125a6f1..c531946 100644
--- a/src/EvtGenModels/EvtBToVlnuBallFF.cpp
+++ b/src/EvtGenModels/EvtBToVlnuBallFF.cpp
@@ -1,128 +1,107 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtHQETFF.cc
-//
-// Description: B->Xu l nu with the Ball/Zwicky decay model
-// Xu is a vector (rho, rho0, omega)
-//
-// Modification history:
-//
-// Wells Wulsin 2008 Aug 14 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBToVlnuBallFF.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <math.h>
#include <stdlib.h>
#include <string>
EvtBToVlnuBallFF::EvtBToVlnuBallFF( double r2_A1, double mfit2_A1, double r1_A2,
double r2_A2, double mfit2_A2, double r1_V,
double r2_V, double mfit2_V )
{
_r2_A1 = r2_A1;
_mfit2_A1 = mfit2_A1;
_r1_A2 = r1_A2;
_r2_A2 = r2_A2;
_mfit2_A2 = mfit2_A2;
_r1_V = r1_V;
_r2_V = r2_V;
_mfit2_V = mfit2_V;
return;
}
void EvtBToVlnuBallFF::getvectorff( EvtId parent, EvtId /*daught*/, double t,
double /*mass*/, double* a1f, double* a2f,
double* vf, double* a0f )
{
// FF calculations taken from the LCSR calculation of
// P. Ball, R. Zwicky, Phys.~Rev.~{\bf D71} 014029 (2005), hep-ph/0412079.
//Define mBstar
EvtId Bplus = EvtPDL::getId( "B+" );
EvtId Bminus = EvtPDL::getId( "B-" );
double mBstar = EvtPDL::getMeanMass( EvtPDL::getId( "B*0" ) );
if ( parent == Bplus || parent == Bminus )
mBstar = EvtPDL::getMeanMass( EvtPDL::getId( "B*+" ) );
double q2 = t;
*a1f = _r2_A1 / ( 1. - q2 / _mfit2_A1 );
*a2f = _r1_A2 / ( 1. - q2 / _mfit2_A2 ) +
_r2_A2 / pow( 1. - q2 / _mfit2_A2, 2. );
*vf = _r1_V / ( 1. - q2 / mBstar / mBstar ) + _r2_V / ( 1. - q2 / _mfit2_V );
*a0f = 0.0;
return;
// OLD STUFF from HQETFF
// double mb=EvtPDL::getMeanMass(parent);
// double w = ((mb*mb)+(mass*mass)-t)/(2.0*mb*mass);
// Form factors have a general form, with parameters passed in
// from the arguements.
// double rstar = ( 2.0*sqrt(mb*mass))/(mb+mass);
// double ha1 = 1-rho2*(w-1);
// *a1f = (1.0 - (t/((mb+mass)*(mb+mass))))*ha1;
// *a1f = (*a1f)/rstar;
// *a2f = (r2/rstar)*ha1;
// *vf = (r1/rstar)*ha1;
}
void EvtBToVlnuBallFF::getscalarff( EvtId, EvtId, double, double, double*,
double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getvectorff in EvtBToVlnuBallFF.\n";
::abort();
}
void EvtBToVlnuBallFF::gettensorff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :gettensorff in EvtBToVlnuBallFF.\n";
::abort();
}
void EvtBToVlnuBallFF::getbaryonff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtBToVlnuBallFF.\n";
::abort();
}
void EvtBToVlnuBallFF::getdiracff( EvtId, EvtId, double, double, double*,
double*, double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getdiracff in EvtBToVlnuBallFF.\n";
::abort();
}
void EvtBToVlnuBallFF::getraritaff( EvtId, EvtId, double, double, double*,
double*, double*, double*, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtBToVlnuBallFF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtBaryonPCR.cpp b/src/EvtGenModels/EvtBaryonPCR.cpp
index 56b5120..b20f3bf 100644
--- a/src/EvtGenModels/EvtBaryonPCR.cpp
+++ b/src/EvtGenModels/EvtBaryonPCR.cpp
@@ -1,188 +1,163 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBaryonVminusA.cc
-//
-// Description: Routine to implement semileptonic decays using realistic
-// dynamics. The form factors are from
-// M.Pervin,S.Capstick,W. Roberts, Phys.Rev. C72 035201(2005).
-//
-//
-// Modification history:
-//
-// R.J. Tesarek May 28, 2004 Module created
-// Karen Gibson 1/20/2006 Module updated for 1/2+->1/2+,
-// 1/2+->1/2-, 1/2+->3/2- Lambda decays
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtBaryonPCR.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtBaryonPCRFF.hh"
#include <stdlib.h>
#include <string>
using namespace std;
#ifdef D0
#undef D0
#endif
std::string EvtBaryonPCR::getName()
{
return "BaryonPCR";
}
EvtBaryonPCR* EvtBaryonPCR::clone()
{
return new EvtBaryonPCR;
}
void EvtBaryonPCR::decay( EvtParticle* p )
{
//This is a kludge to avoid warnings because the K_2* mass becomes to large.
static EvtIdSet regenerateMasses( "K_2*+", "K_2*-", "K_2*0", "anti-K_2*0",
"K_1+", "K_1-", "K_10", "anti-K_10",
"D'_1+", "D'_1-", "D'_10", "anti-D'_10" );
if ( regenerateMasses.contains( getDaug( 0 ) ) ) {
p->resetFirstOrNot();
}
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtComplex r00( getArg( 0 ), 0.0 );
EvtComplex r01( getArg( 1 ), 0.0 );
EvtComplex r10( getArg( 2 ), 0.0 );
EvtComplex r11( getArg( 3 ), 0.0 );
calcamp->CalcAmp( p, _amp2, baryonpcrffmodel.get(), r00, r01, r10, r11 );
}
void EvtBaryonPCR::initProbMax()
{
// Baryons (partial list 5/28/04)
static EvtId SIGC0 = EvtPDL::getId( "Sigma_c0" );
static EvtId SIGC0B = EvtPDL::getId( "anti-Sigma_c0" );
static EvtId SIGCP = EvtPDL::getId( "Sigma_c+" );
static EvtId SIGCM = EvtPDL::getId( "anti-Sigma_c-" );
static EvtId SIGCPP = EvtPDL::getId( "Sigma_c++" );
static EvtId SIGCMM = EvtPDL::getId( "anti-Sigma_c--" );
static EvtId LAMCP = EvtPDL::getId( "Lambda_c+" );
static EvtId LAMCM = EvtPDL::getId( "anti-Lambda_c-" );
static EvtId LAMC1P = EvtPDL::getId( "Lambda_c(2593)+" );
static EvtId LAMC1M = EvtPDL::getId( "anti-Lambda_c(2593)-" );
static EvtId LAMC2P = EvtPDL::getId( "Lambda_c(2625)+" );
static EvtId LAMC2M = EvtPDL::getId( "anti-Lambda_c(2625)-" );
static EvtId LAMB = EvtPDL::getId( "Lambda_b0" );
static EvtId LAMBB = EvtPDL::getId( "anti-Lambda_b0" );
EvtId parnum, barnum, lnum;
parnum = getParentId();
barnum = getDaug( 0 );
lnum = getDaug( 1 );
if ( parnum == LAMB || parnum == LAMBB ) {
if ( barnum == LAMCP || barnum == LAMCM || barnum == LAMC1P ||
barnum == LAMC1M || barnum == LAMC2P || barnum == LAMC2M ||
barnum == SIGC0 || barnum == SIGC0B || barnum == SIGCP ||
barnum == SIGCM || barnum == SIGCPP || barnum == SIGCMM ) {
setProbMax( 22000.0 );
return;
}
}
//This is a real cludge.. (ryd)
setProbMax( 0.0 );
}
void EvtBaryonPCR::init()
{
//if (getNArg()!=0) {
if ( getNArg() != 4 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBaryonPCR generator expected "
<< " 4 arguments but found:" << getNArg() << endl;
//<< " 0 arguments but found:"<<getNArg()<<endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( getNDaug() != 3 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Wrong number of daughters in EvtBaryonPCR.cc "
<< " 3 daughters expected but found: " << getNDaug() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
//We expect the parent to be a scalar
//and the daughters to be X lepton neutrino
EvtSpinType::spintype parenttype = EvtPDL::getSpinType( getParentId() );
EvtSpinType::spintype baryontype = EvtPDL::getSpinType( getDaug( 0 ) );
EvtSpinType::spintype leptontype = EvtPDL::getSpinType( getDaug( 1 ) );
EvtSpinType::spintype neutrinotype = EvtPDL::getSpinType( getDaug( 2 ) );
if ( parenttype != EvtSpinType::DIRAC ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBaryonPCR generator expected "
<< " a DIRAC parent, found:" << EvtPDL::name( getParentId() )
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( leptontype != EvtSpinType::DIRAC ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBaryonPCR generator expected "
<< " a DIRAC 2nd daughter, found:" << EvtPDL::name( getDaug( 1 ) )
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( neutrinotype != EvtSpinType::NEUTRINO ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBaryonPCR generator expected "
<< " a NEUTRINO 3rd daughter, found:" << EvtPDL::name( getDaug( 2 ) )
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
baryonpcrffmodel = std::make_unique<EvtBaryonPCRFF>();
if ( baryontype == EvtSpinType::DIRAC ||
baryontype == EvtSpinType::RARITASCHWINGER ) {
calcamp = std::make_unique<EvtSemiLeptonicBaryonAmp>();
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Wrong baryon spin type in EvtBaryonPCR.cc "
<< "Expected spin type " << EvtSpinType::DIRAC
<< ", found spin type " << baryontype << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
diff --git a/src/EvtGenModels/EvtBaryonPCRFF.cpp b/src/EvtGenModels/EvtBaryonPCRFF.cpp
index 70d5ba5..5239af9 100644
--- a/src/EvtGenModels/EvtBaryonPCRFF.cpp
+++ b/src/EvtGenModels/EvtBaryonPCRFF.cpp
@@ -1,282 +1,260 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBaryonVminusAFF.cc
-//
-// Description: Routine to implement semileptonic form factors
-// according to the model BaryonVminusA
-//
-// Modification history:
-//
-// R.J. Tesarek May 28, 2004 Module created
-// Karen Gibson 1/20/2006 Module updated for 1/2+->1/2+,
-// 1/2+->1/2-, 1/2+->3/2- Lambda decays
-//
-//--------------------------------------------------------------------------
#include "EvtGenModels/EvtBaryonPCRFF.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <math.h>
#include <stdlib.h>
#include <string>
using std::endl;
void EvtBaryonPCRFF::getdiracff( EvtId parent, EvtId daught, double q2,
double /* mass */, double* f1, double* f2,
double* f3, double* g1, double* g2, double* g3 )
{
// Baryons (partial list 5/28/04)
static EvtId LAMCP = EvtPDL::getId( "Lambda_c+" );
static EvtId LAMCM = EvtPDL::getId( "anti-Lambda_c-" );
static EvtId LAMC1P = EvtPDL::getId( "Lambda_c(2593)+" );
static EvtId LAMC1M = EvtPDL::getId( "anti-Lambda_c(2593)-" );
static EvtId LAMB = EvtPDL::getId( "Lambda_b0" );
static EvtId LAMBB = EvtPDL::getId( "anti-Lambda_b0" );
double F1, F2, F3, G1, G2, G3;
if ( parent == LAMB || parent == LAMBB ) {
// Implement constituent quark model form factors predicted
// by M. Pervin, W. Roberst, and S. Capstick, Phys. Rev. C72, 035201 (2005)
if ( daught == LAMCP || daught == LAMCM ) {
// Parameters needed in the calculation;
double mQ = 5.28;
double mq = 1.89;
double md = 0.40;
double MLamB = EvtPDL::getMass( parent );
double MLamC = EvtPDL::getMass( daught );
double aL = 0.59;
double aLp = 0.55;
double aL2 = aL * aL;
double aLp2 = aLp * aLp;
double aLLp2 = 0.5 * ( aL2 + aLp2 );
// relativistic correction factor
double k2 = 1.0;
double rho2 = 3. * md * md / ( 2. * k2 * aLLp2 );
// w = scalar product of the 4 velocities of the Lb and Lc.
double w = 0.5 * ( MLamB * MLamB + MLamC * MLamC - q2 ) / MLamB /
MLamC;
double I = pow( aL * aLp / aLLp2, 1.5 ) *
exp( -rho2 * ( w * w - 1. ) );
// Calculate the form factors
F1 = I * ( 1.0 + ( md / aLLp2 ) * ( ( aLp2 / mq ) + ( aL2 / mQ ) ) );
F2 = -I * ( ( md / mq ) * ( aLp2 / aLLp2 ) -
aL2 * aLp2 / ( 4. * aLLp2 * mq * mQ ) );
F3 = -I * md * aL2 / ( mQ * aLLp2 );
G1 = I * ( 1.0 - ( aL2 * aLp2 ) / ( 12. * aLLp2 * mq * mQ ) );
G2 = -I * ( md * aLp2 / ( mq * aLLp2 ) +
( aL2 * aLp2 ) / ( 12. * aLLp2 * mq * mQ ) *
( 1. + 12. * md * md / aLLp2 ) );
G3 = I * ( md * aL2 / ( mQ * aLLp2 ) +
md * md * aL2 * aLp2 / ( mq * mQ * aLLp2 * aLLp2 ) );
// Set form factors to be passed to the amplitude calc.
*f1 = F1;
*f2 = F2;
*f3 = F3;
*g1 = G1;
*g2 = G2;
*g3 = G3;
}
else if ( daught == LAMC1P || daught == LAMC1M ) {
double mQ = 5.28;
double mq = 1.89;
double md = 0.40;
double MLamB = EvtPDL::getMass( parent );
double MLamC = EvtPDL::getMass( daught );
double aL = 0.59;
double aLp = 0.47;
double aL2 = aL * aL;
double aLp2 = aLp * aLp;
double aLLp2 = 0.5 * ( aL2 + aLp2 );
// relativistic correction factor
double k2 = 1.0;
double rho2 = 3. * md * md / ( 2. * k2 * aLLp2 );
// w = scalar product of the 4 velocities of the Lb and Lc.
double w = 0.5 * ( MLamB * MLamB + MLamC * MLamC - q2 ) / MLamB /
MLamC;
double I = pow( aL * aLp / aLLp2, 2.5 ) *
exp( -rho2 * ( w * w - 1. ) );
// Calculate the form factors
F1 = I * aL / 6.0 * ( 3.0 / mq - 1.0 / mQ );
F2 = -I * ( 2.0 * md / aL - aL / ( 2.0 * mq ) +
2. * md * md * aL / ( mQ * aLLp2 ) -
( md * aL / ( 6. * mq * mQ * aLLp2 ) ) *
( 3. * aL2 - 2. * aLp2 ) );
F3 = I * 2. * md * md * aL / ( mQ * aLLp2 );
G1 = I * ( 2.0 * md / aL - aL / ( 6. * mQ ) +
( md * aL / ( 6. * mq * mQ * aLLp2 ) ) *
( 3. * aL2 - 2. * aLp2 ) );
G2 = I * ( -2. * md / aL + aL / ( 2. * mq ) + aL / ( 3. * mQ ) );
G3 = I * aL / ( 3. * mQ ) *
( 1.0 - ( md / ( 2. * mq * aLLp2 ) ) * ( 3. * aL2 - 2. * aLp2 ) );
// Set form factors to be passed to the amplitude calc.
*f1 = F1;
*f2 = F2;
*f3 = F3;
*g1 = G1;
*g2 = G2;
*g3 = G3;
}
}
else {
*f1 = 1.0;
*f2 = 1.0;
*f3 = 0.0;
*g1 = 1.0;
*g2 = 1.0;
*g3 = 0.0;
}
return;
}
void EvtBaryonPCRFF::getraritaff( EvtId parent, EvtId daught, double q2,
double /* mass */, double* f1, double* f2,
double* f3, double* f4, double* g1,
double* g2, double* g3, double* g4 )
{
// Baryons (partial list 5/28/04)
static EvtId LAMB = EvtPDL::getId( "Lambda_b0" );
static EvtId LAMBB = EvtPDL::getId( "anti-Lambda_b0" );
static EvtId LAMC2P = EvtPDL::getId( "Lambda_c(2625)+" );
static EvtId LAMC2M = EvtPDL::getId( "anti-Lambda_c(2625)-" );
double F1, F2, F3, F4, G1, G2, G3, G4;
if ( parent == LAMB || parent == LAMBB ) {
// Implement constituent quark model form factors predicted
// by M. Pervin, W. Roberst, and S. Capstick, Phys. Rev. C72, 035201 (2005)
if ( daught == LAMC2P || daught == LAMC2M ) {
double mQ = 5.28;
double mq = 1.89;
double md = 0.40;
double MLamB = EvtPDL::getMass( parent );
double MLamC = EvtPDL::getMass( daught );
double aL = 0.59;
double aLp = 0.47;
double aL2 = aL * aL;
double aLp2 = aLp * aLp;
double aLLp2 = 0.5 * ( aL2 + aLp2 );
// relativistic correction factor
double k2 = 1.0;
double rho2 = 3. * md * md / ( 2. * k2 * aLLp2 );
// w = scalar product of the 4 velocities of the Lb and Lc.
double w = 0.5 * ( MLamB * MLamB + MLamC * MLamC - q2 ) / MLamB /
MLamC;
double I = -( 1. / sqrt( 3. ) ) * pow( aL * aLp / aLLp2, 2.5 ) *
exp( -rho2 * ( w * w - 1. ) );
// Calculate the form factors
F1 = I * 3.0 * md / aL *
( 1.0 + ( md / aLLp2 ) * ( ( aLp2 / mq ) + ( aL2 / mQ ) ) );
F2 = -I * ( ( 3. * md * md / mq ) * ( aLp2 / ( aLLp2 * aL2 ) ) -
5. * aL * aLp2 * md / ( 4. * aLLp2 * mq * mQ ) );
F3 = -I * ( 3. * md * md * aL / ( mQ * aLLp2 ) + aL / ( 2. * mQ ) );
F4 = I * aL / mQ;
G1 = I * ( 3.0 * md / aL -
( aL / ( 2. * mQ ) ) *
( 1. + 3. * md * aLp2 / ( 2. * aLLp2 * mq ) ) );
G2 = -I * ( ( 3. * md * md / mq ) * ( aLp2 / ( aLLp2 * aL ) ) +
aL * aLp2 * md / ( 4. * aLLp2 * aLLp2 * mq * mQ ) *
( aLLp2 + 12. * md * md ) );
G3 = I * aL / ( mQ * aLLp2 ) *
( aLLp2 / 2. + 3. * md * md +
aLp2 * md / ( mq * aLLp2 ) * ( aLLp2 + 6. * md * md ) );
G4 = -I * ( aL / mQ + md / ( mq * mQ ) * aLp2 * aL / aLLp2 );
// Set form factors to be passed to the amplitude calc.
*f1 = F1;
*f2 = F2;
*f3 = F3;
*f4 = F4;
*g1 = G1;
*g2 = G2;
*g3 = G3;
*g4 = G4;
}
}
else {
*f1 = 1.0;
*f2 = 1.0;
*f3 = 0.0;
*f4 = 0.0;
*g1 = 1.0;
*g2 = 1.0;
*g3 = 0.0;
*g4 = 0.0;
}
return;
}
void EvtBaryonPCRFF::getscalarff( EvtId, EvtId, double, double, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getscalarff in EvtBaryonPCRFF.\n";
::abort();
}
void EvtBaryonPCRFF::getvectorff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getvectorff in EvtBaryonPCRFF.\n";
::abort();
}
void EvtBaryonPCRFF::gettensorff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :gettensorff in EvtBaryonPCRFF.\n";
::abort();
}
void EvtBaryonPCRFF::getbaryonff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtBaryonPCRFF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtBcBsNPi.cpp b/src/EvtGenModels/EvtBcBsNPi.cpp
index 8a5f3ad..cc6678b 100644
--- a/src/EvtGenModels/EvtBcBsNPi.cpp
+++ b/src/EvtGenModels/EvtBcBsNPi.cpp
@@ -1,74 +1,56 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtGenModels/EvtBcBsNPi.hh
-//
-// Description: Decay model for Bc -> Bs + npi
-//
-// Modification history:
-//
-// A.Berezhnoy, A.Likhoded, A.Luchinsky July 2011 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtBcBsNPi.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtSpinType.hh"
EvtBcBsNPi::EvtBcBsNPi()
{
_beta = -0.108;
_mRho = 0.775;
_gammaRho = 0.149;
_mRhopr = 1.364;
_gammaRhopr = 0.400;
_mA1 = 1.23;
_gammaA1 = 0.4;
// Fp_N=1.3; Fp_c1=0.30; Fp_c2=0.069;
Fp_N = 3 * 1.3;
Fp_c1 = 0.30;
Fp_c2 = 0.069;
Fm_N = 0.0;
Fm_c1 = 0.0;
Fm_c2 = 0.0;
}
std::string EvtBcBsNPi::getName()
{
return "BC_BS_NPI";
}
EvtBcBsNPi* EvtBcBsNPi::clone()
{
return new EvtBcBsNPi;
}
void EvtBcBsNPi::init()
{
checkNArg( 0 );
// check spins
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
// the others are scalar
for ( int i = 1; i <= ( getNDaug() - 1 ); i++ ) {
checkSpinDaughter( i, EvtSpinType::SCALAR );
}
}
void EvtBcBsNPi::initProbMax()
{
if ( getNDaug() == 2 ) {
setProbMax( 250. );
} else if ( getNDaug() == 3 ) {
setProbMax( 25000. ); // checked at 30k events
} else if ( getNDaug() == 4 ) {
setProbMax( 45000. ); // checked at 30k events
}
}
diff --git a/src/EvtGenModels/EvtBcBsStarNPi.cpp b/src/EvtGenModels/EvtBcBsStarNPi.cpp
index fb9405f..84d6e99 100644
--- a/src/EvtGenModels/EvtBcBsStarNPi.cpp
+++ b/src/EvtGenModels/EvtBcBsStarNPi.cpp
@@ -1,80 +1,62 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtGenModels/EvtBcBsStarNPi.hh
-//
-// Description: Decay model for Bc -> Bs* + npi
-//
-// Modification history:
-//
-// A.Berezhnoy, A.Likhoded, A.Luchinsky April 2011 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtBcBsStarNPi.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtSpinType.hh"
EvtBcBsStarNPi::EvtBcBsStarNPi()
{
_beta = -0.108;
_mRho = 0.775;
_gammaRho = 0.149;
_mRhopr = 1.364;
_gammaRhopr = 0.400;
_mA1 = 1.23;
_gammaA1 = 0.4;
FA0_N = 8.1;
FA0_c1 = 0.30;
FA0_c2 = 0.069;
FAm_N = 0.0;
FAm_c1 = 0.0;
FAm_c2 = 0.0;
FAp_N = 0.15;
FAp_c1 = 0.30;
FAp_c2 = 0.069;
FV_N = 1.08;
FV_c1 = 0.30;
FV_c2 = 0.069;
}
std::string EvtBcBsStarNPi::getName()
{
return "BC_BSSTAR_NPI";
}
EvtBcBsStarNPi* EvtBcBsStarNPi::clone()
{
return new EvtBcBsStarNPi;
}
void EvtBcBsStarNPi::init()
{
checkNArg( 0 );
// check spins
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
// the others are scalar
for ( int i = 1; i <= ( getNDaug() - 1 ); i++ ) {
checkSpinDaughter( i, EvtSpinType::SCALAR );
}
}
void EvtBcBsStarNPi::initProbMax()
{
if ( getNDaug() == 2 ) {
setProbMax( 100. );
} else if ( getNDaug() == 3 ) {
setProbMax( 40000. );
} else if ( getNDaug() == 4 ) {
setProbMax( 620. ); // checked, 30k events
}
}
diff --git a/src/EvtGenModels/EvtBcPsiNPi.cpp b/src/EvtGenModels/EvtBcPsiNPi.cpp
index b37a226..cef5169 100644
--- a/src/EvtGenModels/EvtBcPsiNPi.cpp
+++ b/src/EvtGenModels/EvtBcPsiNPi.cpp
@@ -1,81 +1,63 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtGenModels/EvtBcBsNPi.hh
-//
-// Description: Decay model for Bc -> J/psi + npi
-//
-// Modification history:
-//
-// A.Berezhnoy, A.Likhoded, A.Luchinsky April 2011 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtBcPsiNPi.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtSpinType.hh"
EvtBcPsiNPi::EvtBcPsiNPi()
{
_beta = -0.108;
_mRho = 0.775;
_gammaRho = 0.149;
_mRhopr = 1.364;
_gammaRhopr = 0.400;
_mA1 = 1.23;
_gammaA1 = 0.4;
FA0_N = 5.9;
FA0_c1 = 0.049;
FA0_c2 = 0.0015;
FAm_N = 0.0;
FAm_c1 = 0.0;
FAm_c2 = 0.0;
FAp_N = -0.074;
FAp_c1 = 0.049;
FAp_c2 = 0.0015;
FV_N = 0.11;
FV_c1 = 0.049;
FV_c2 = 0.0015;
}
std::string EvtBcPsiNPi::getName()
{
return "BC_PSI_NPI";
}
EvtBcPsiNPi* EvtBcPsiNPi::clone()
{
return new EvtBcPsiNPi;
}
void EvtBcPsiNPi::init()
{
checkNArg( 0 );
// check spins
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
// the others are scalar
for ( int i = 1; i <= ( getNDaug() - 1 ); i++ ) {
checkSpinDaughter( i, EvtSpinType::SCALAR );
}
}
void EvtBcPsiNPi::initProbMax()
{
setProbMax( 100. );
if ( getNDaug() == 2 ) {
setProbMax( 330. );
} else if ( getNDaug() == 3 ) {
setProbMax( 11000. ); // checked with 30k events
} else if ( getNDaug() == 4 ) {
setProbMax( 36000. );
}
}
diff --git a/src/EvtGenModels/EvtBcSMuNu.cpp b/src/EvtGenModels/EvtBcSMuNu.cpp
index f9dc080..c6333a4 100644
--- a/src/EvtGenModels/EvtBcSMuNu.cpp
+++ b/src/EvtGenModels/EvtBcSMuNu.cpp
@@ -1,94 +1,73 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBcSMuNu.cc
-//
-// Description: Routine to implement semileptonic Bc -> scalar l nu decays
-//
-// Modification history:
-//
-// AVL Jul 6, 2012 Module created
-// AVL Feb 5, 2018 D0, D*0 modes added
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBcSMuNu.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
#include "EvtGenModels/EvtBCSFF.hh"
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
std::string EvtBcSMuNu::getName()
{
return "BC_SMN";
}
EvtDecayBase* EvtBcSMuNu::clone()
{
return new EvtBcSMuNu;
}
void EvtBcSMuNu::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
calcamp->CalcAmp( p, _amp2, ffmodel.get() );
}
void EvtBcSMuNu::init()
{
checkNArg( 1 );
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be X lepton neutrino
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
idScalar = getDaug( 0 ).getId();
whichfit = int( getArg( 0 ) + 0.1 );
ffmodel = std::make_unique<EvtBCSFF>( idScalar, whichfit );
calcamp = std::make_unique<EvtSemiLeptonicScalarAmp>();
}
void EvtBcSMuNu::initProbMax()
{
EvtId parId = getParentId();
EvtId mesonId = getDaug( 0 );
EvtId lepId = getDaug( 1 );
EvtId nuId = getDaug( 2 );
int nQ2Bins = 200;
double maxProb = calcamp->CalcMaxProb( parId, mesonId, lepId, nuId,
ffmodel.get(), nQ2Bins );
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtBcSMuNu" )
<< "Max prob = " << maxProb << endl;
}
setProbMax( maxProb );
}
diff --git a/src/EvtGenModels/EvtBcTMuNu.cpp b/src/EvtGenModels/EvtBcTMuNu.cpp
index c7f7e99..9e46bc6 100644
--- a/src/EvtGenModels/EvtBcTMuNu.cpp
+++ b/src/EvtGenModels/EvtBcTMuNu.cpp
@@ -1,93 +1,73 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBcTMuNu.cc
-//
-// Description: Routine to implement semileptonic B->T lnu decays
-//
-// Modification history:
-//
-// AVL July 6, 2012 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBcTMuNu.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicTensorAmp.hh"
#include "EvtGenModels/EvtBCTFF.hh"
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
std::string EvtBcTMuNu::getName()
{
return "BC_TMN";
}
EvtDecayBase* EvtBcTMuNu::clone()
{
return new EvtBcTMuNu;
}
void EvtBcTMuNu::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
calcamp->CalcAmp( p, _amp2, ffmodel.get() );
}
void EvtBcTMuNu::init()
{
checkNArg( 1 );
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be X lepton neutrino
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::TENSOR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
idTensor = getDaug( 0 ).getId();
whichfit = int( getArg( 0 ) + 0.1 );
ffmodel = std::make_unique<EvtBCTFF>( idTensor, whichfit );
calcamp = std::make_unique<EvtSemiLeptonicTensorAmp>();
}
void EvtBcTMuNu::initProbMax()
{
EvtId parId = getParentId();
EvtId mesonId = getDaug( 0 );
EvtId lepId = getDaug( 1 );
EvtId nuId = getDaug( 2 );
int nQ2Bins = 200;
double maxProb = calcamp->CalcMaxProb( parId, mesonId, lepId, nuId,
ffmodel.get(), nQ2Bins );
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtBcTMuNu" )
<< "Max prob = " << maxProb << endl;
}
setProbMax( maxProb );
}
diff --git a/src/EvtGenModels/EvtBcToNPi.cpp b/src/EvtGenModels/EvtBcToNPi.cpp
index 914aa54..c552d72 100644
--- a/src/EvtGenModels/EvtBcToNPi.cpp
+++ b/src/EvtGenModels/EvtBcToNPi.cpp
@@ -1,377 +1,359 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtGenModels/EvtBcToNPi.hh
-//
-// Description: General decay model for Bc -> V + npi and Bc -> P + npi
-//
-// Modification history:
-//
-// A.Berezhnoy, A.Likhoded, A.Luchinsky April 2011 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtBcToNPi.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <iostream>
using std::endl;
EvtBcToNPi::EvtBcToNPi( bool printAuthorInfo )
{
nCall = 0;
maxAmp2 = 0;
if ( printAuthorInfo == true ) {
this->printAuthorInfo();
}
}
std::string EvtBcToNPi::getName()
{
return "EvtBcToNPi";
}
EvtDecayBase* EvtBcToNPi::clone()
{
return new EvtBcToNPi;
}
void EvtBcToNPi::init()
{
// check spins
checkSpinParent( EvtSpinType::SCALAR );
// the others are scalar
for ( int i = 1; i <= ( getNDaug() - 1 ); i++ ) {
checkSpinDaughter( i, EvtSpinType::SCALAR );
};
_beta = -0.108;
_mRho = 0.775;
_gammaRho = 0.149;
_mRhopr = 1.364;
_gammaRhopr = 0.400;
_mA1 = 1.23;
_gammaA1 = 0.4;
// read arguments
if ( EvtPDL::getSpinType( getDaug( 0 ) ) == EvtSpinType::VECTOR ) {
checkNArg( 10 );
int n = 0;
_maxProb = getArg( n++ );
FA0_N = getArg( n++ );
FA0_c1 = getArg( n++ );
FA0_c2 = getArg( n++ );
FAp_N = getArg( n++ );
FAp_c1 = getArg( n++ );
FAp_c2 = getArg( n++ );
FV_N = getArg( n++ );
FV_c1 = getArg( n++ );
FV_c2 = getArg( n++ );
FAm_N = 0;
FAm_c1 = 0;
FAm_c2 = 0;
} else if ( EvtPDL::getSpinType( getDaug( 0 ) ) == EvtSpinType::SCALAR ) {
checkNArg( 4 );
int n = 0;
_maxProb = getArg( n++ );
Fp_N = getArg( n++ );
Fp_c1 = getArg( n++ );
Fp_c2 = getArg( n++ );
Fm_N = 0;
Fm_c1 = 0;
Fm_c2 = 0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Have not yet implemented this final state in BCPSINPI model"
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Ndaug=" << getNDaug() << endl;
for ( int id = 0; id < ( getNDaug() - 1 ); id++ )
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Daug " << id << " " << EvtPDL::name( getDaug( id ) ).c_str()
<< endl;
return;
};
if ( getNDaug() < 2 || getNDaug() > 4 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Have not yet implemented this final state in BCPSINPI model"
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Ndaug=" << getNDaug() << endl;
for ( int id = 0; id < ( getNDaug() - 1 ); id++ )
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Daug " << id << " " << EvtPDL::name( getDaug( id ) ).c_str()
<< endl;
return;
}
}
double EvtBcToNPi::_ee( double M, double m1, double m2 )
{
return ( M * M + m1 * m1 - m2 * m2 ) / ( 2 * M );
}
double EvtBcToNPi::_pp( double M, double m1, double m2 )
{
double __ee = _ee( M, m1, m2 );
return sqrt( __ee * __ee - m1 * m1 );
}
void EvtBcToNPi::initProbMax()
{
if ( _maxProb > 0. )
setProbMax( _maxProb );
else {
EvtId id = getParentId();
EvtScalarParticle* p = new EvtScalarParticle();
p->init( id, EvtPDL::getMass( id ), 0., 0., 0. );
p->setDiagonalSpinDensity();
// add daughters
p->makeDaughters( getNDaug(), getDaugs() );
// fill the momenta
if ( getNDaug() == 2 ) {
double M = EvtPDL::getMass( id ),
m1 = EvtPDL::getMass( getDaug( 0 ) ),
m2 = EvtPDL::getMass( getDaug( 1 ) );
double __pp = _pp( M, m1, m2 );
p->getDaug( 0 )->setP4(
EvtVector4R( _ee( M, m1, m2 ), 0., 0., __pp ) );
p->getDaug( 1 )->setP4(
EvtVector4R( _ee( M, m2, m1 ), 0., 0., -__pp ) );
} else if ( getNDaug() == 3 ) {
double M = EvtPDL::getMass( id ),
m1 = EvtPDL::getMass( getDaug( 0 ) ),
m2 = EvtPDL::getMass( getDaug( 1 ) ),
m3 = EvtPDL::getMass( getDaug( 2 ) );
double __ppRho = _pp( M, m1, _mRho ), __ppPi = _pp( _mRho, m2, m3 );
p->getDaug( 0 )->setP4(
EvtVector4R( _ee( M, m1, _mRho ), 0., 0., __ppRho ) );
EvtVector4R _pRho( _ee( M, _mRho, m1 ), 0., 0., -__ppRho );
EvtVector4R _p2( _ee( _mRho, m2, m3 ), 0., 0., __ppPi );
_p2.applyBoostTo( _pRho );
EvtVector4R _p3( _ee( _mRho, m2, m3 ), 0., 0., -__ppPi );
_p3.applyBoostTo( _pRho );
p->getDaug( 1 )->setP4( _p2 );
p->getDaug( 2 )->setP4( _p3 );
} else if ( getNDaug() == 4 ) {
double M = EvtPDL::getMass( id ),
m1 = EvtPDL::getMass( getDaug( 0 ) ),
m2 = EvtPDL::getMass( getDaug( 1 ) ),
m3 = EvtPDL::getMass( getDaug( 2 ) ),
m4 = EvtPDL::getMass( getDaug( 3 ) );
if ( M < m1 + _mA1 )
return;
double __ppA1 = _pp( M, m1, _mA1 ), __ppRho = _pp( _mA1, _mRho, m4 ),
__ppPi = _pp( _mRho, m2, m3 );
p->getDaug( 0 )->setP4(
EvtVector4R( _ee( M, m1, _mRho ), 0., 0., __ppA1 ) );
EvtVector4R _pA1( _ee( M, _mA1, m1 ), 0., 0., -__ppA1 );
EvtVector4R _pRho( _ee( _mA1, _mRho, m4 ), 0, 0, __ppRho );
_pRho.applyBoostTo( _pA1 );
EvtVector4R _p4( _ee( _mA1, m4, _mRho ), 0, 0, -__ppRho );
_p4.applyBoostTo( _pA1 );
p->getDaug( 3 )->setP4( _p4 );
EvtVector4R _p2( _ee( _mRho, m2, m3 ), 0, 0, __ppPi );
_p2.applyBoostTo( _pRho );
p->getDaug( 1 )->setP4( _p2 );
EvtVector4R _p3( _ee( _mRho, m2, m3 ), 0, 0, -__ppPi );
_p2.applyBoostTo( _pRho );
p->getDaug( 2 )->setP4( _p3 );
};
_amp2.init( p->getId(), getNDaug(), getDaugs() );
decay( p );
EvtSpinDensity rho = _amp2.getSpinDensity();
double prob = p->getSpinDensityForward().normalizedProb( rho );
if ( prob > 0 )
setProbMax( 0.9 * prob );
};
}
void EvtBcToNPi::decay( EvtParticle* root_particle )
{
++nCall;
EvtIdSet thePis( "pi+", "pi-", "pi0" );
EvtComplex I = EvtComplex( 0.0, 1.0 );
root_particle->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4R p( root_particle->mass(), 0., 0., 0. ), // Bc momentum
k = root_particle->getDaug( 0 )->getP4(), // J/psi momenta
Q = p - k;
double Q2 = Q.mass2();
// check pi-mesons and calculate hadronic current
EvtVector4C hardCur;
bool foundHadCurr = false;
if ( getNDaug() == 2 ) // Bc -> psi pi+
{
hardCur = Q;
foundHadCurr = true;
} else if ( getNDaug() == 3 ) // Bc -> psi pi+ pi0
{
EvtVector4R p1, p2;
p1 = root_particle->getDaug( 1 )->getP4(), // pi+ momenta
p2 = root_particle->getDaug( 2 )->getP4(), // pi0 momentum
hardCur = Fpi( p1, p2 ) * ( p1 - p2 );
foundHadCurr = true;
} else if ( getNDaug() == 4 ) // Bc -> psi pi+ pi pi
{
int diffPi( 0 ), samePi1( 0 ), samePi2( 0 );
if ( getDaug( 1 ) == getDaug( 2 ) ) {
diffPi = 3;
samePi1 = 1;
samePi2 = 2;
}
if ( getDaug( 1 ) == getDaug( 3 ) ) {
diffPi = 2;
samePi1 = 1;
samePi2 = 3;
}
if ( getDaug( 2 ) == getDaug( 3 ) ) {
diffPi = 1;
samePi1 = 2;
samePi2 = 3;
}
EvtVector4R p1 = root_particle->getDaug( samePi1 )->getP4();
EvtVector4R p2 = root_particle->getDaug( samePi2 )->getP4();
EvtVector4R p3 = root_particle->getDaug( diffPi )->getP4();
EvtComplex BA1;
double GA1 = _gammaA1 * pi3G( Q2, samePi1 ) /
pi3G( _mA1 * _mA1, samePi1 );
EvtComplex denBA1( _mA1 * _mA1 - Q.mass2(), -1. * _mA1 * GA1 );
BA1 = _mA1 * _mA1 / denBA1;
hardCur = BA1 * ( ( p1 - p3 ) -
( Q * ( Q * ( p1 - p3 ) ) / Q2 ) * Fpi( p2, p3 ) +
( p2 - p3 ) -
( Q * ( Q * ( p2 - p3 ) ) / Q2 ) * Fpi( p1, p3 ) );
foundHadCurr = true;
}
if ( !foundHadCurr ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Have not yet implemented this final state in BCNPI model"
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Ndaug=" << getNDaug() << endl;
int id;
for ( id = 0; id < ( getNDaug() - 1 ); id++ )
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Daug " << id << " " << EvtPDL::name( getDaug( id ) ).c_str()
<< endl;
::abort();
};
EvtTensor4C H;
double amp2 = 0.;
if ( root_particle->getDaug( 0 )->getSpinType() == EvtSpinType::VECTOR ) {
double FA0 = FA0_N * exp( FA0_c1 * Q2 + FA0_c2 * Q2 * Q2 );
double FAp = FAp_N * exp( FAp_c1 * Q2 + FAp_c2 * Q2 * Q2 );
double FAm = FAm_N * exp( FAm_c1 * Q2 + FAm_c2 * Q2 * Q2 );
double FV = FV_N * exp( FV_c1 * Q2 + FV_c2 * Q2 * Q2 );
H = -FA0 * EvtTensor4C::g() -
FAp * EvtGenFunctions::directProd( p, p + k ) +
FAm * EvtGenFunctions::directProd( p, p - k ) +
2 * I * FV * dual( EvtGenFunctions::directProd( p, k ) );
EvtVector4C Heps = H.cont2( hardCur );
for ( int i = 0; i < 4; i++ ) {
EvtVector4C eps = root_particle->getDaug( 0 )
->epsParent( i )
.conj(); // psi-meson polarization vector
EvtComplex amp = eps * Heps;
vertex( i, amp );
amp2 += pow( abs( amp ), 2 );
}
} else if ( root_particle->getDaug( 0 )->getSpinType() ==
EvtSpinType::SCALAR ) {
double Fp = Fp_N * exp( Fp_c1 * Q2 + Fp_c2 * Q2 * Q2 );
double Fm = Fm_N * exp( Fm_c1 * Q2 + Fm_c2 * Q2 * Q2 );
EvtVector4C H = Fp * ( p + k ) + Fm * ( p - k );
EvtComplex amp = H * hardCur;
vertex( amp );
amp2 += pow( abs( amp ), 2 );
};
if ( amp2 > maxAmp2 )
maxAmp2 = amp2;
return;
}
EvtComplex EvtBcToNPi::Fpi( EvtVector4R q1, EvtVector4R q2 )
{
double m1 = q1.mass();
double m2 = q2.mass();
EvtVector4R Q = q1 + q2;
double mQ2 = Q * Q;
// momenta in the rho->pipi decay
double dRho = _mRho * _mRho - m1 * m1 - m2 * m2;
double pPiRho = ( 1.0 / _mRho ) *
sqrt( ( dRho * dRho ) / 4.0 - m1 * m1 * m2 * m2 );
double dRhopr = _mRhopr * _mRhopr - m1 * m1 - m2 * m2;
double pPiRhopr = ( 1.0 / _mRhopr ) *
sqrt( ( dRhopr * dRhopr ) / 4.0 - m1 * m1 * m2 * m2 );
double dQ = mQ2 - m1 * m1 - m2 * m2;
double pPiQ = ( 1.0 / sqrt( mQ2 ) ) *
sqrt( ( dQ * dQ ) / 4.0 - m1 * m1 * m2 * m2 );
double gammaRho = _gammaRho * _mRho / sqrt( mQ2 ) *
pow( ( pPiQ / pPiRho ), 3 );
EvtComplex BRhoDem( _mRho * _mRho - mQ2, -1.0 * _mRho * gammaRho );
EvtComplex BRho = _mRho * _mRho / BRhoDem;
double gammaRhopr = _gammaRhopr * _mRhopr / sqrt( mQ2 ) *
pow( ( pPiQ / pPiRhopr ), 3 );
EvtComplex BRhoprDem( _mRhopr * _mRhopr - mQ2, -1.0 * _mRho * gammaRhopr );
EvtComplex BRhopr = _mRhopr * _mRhopr / BRhoprDem;
return ( BRho + _beta * BRhopr ) / ( 1 + _beta );
}
double EvtBcToNPi::pi3G( double m2, int dupD )
{
double mPi = EvtPDL::getMeanMass( getDaug( dupD ) );
if ( m2 > ( _mRho + mPi ) ) {
return m2 * ( 1.623 + 10.38 / m2 - 9.32 / ( m2 * m2 ) +
0.65 / ( m2 * m2 * m2 ) );
} else {
double t1 = m2 - 9.0 * mPi * mPi;
return 4.1 * pow( t1, 3.0 ) * ( 1.0 - 3.3 * t1 + 5.8 * t1 * t1 );
}
}
void EvtBcToNPi::printAuthorInfo()
{
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Defining EvtBcToNPi model: Bc -> V + npi and Bc -> P + npi decays\n"
<< "from A.V. Berezhnoy, A.K. Likhoded, A.V. Luchinsky: "
<< "Phys.Rev.D 82, 014012 (2010) and arXiV:1104.0808." << endl;
}
diff --git a/src/EvtGenModels/EvtBcVHad.cpp b/src/EvtGenModels/EvtBcVHad.cpp
index c05ae61..4f23c9d 100644
--- a/src/EvtGenModels/EvtBcVHad.cpp
+++ b/src/EvtGenModels/EvtBcVHad.cpp
@@ -1,296 +1,277 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtBcVHad.cc
-//
-// Description: Module to implement Bc -> psi + (n pi) + (m K) decays
-//
-// Modification history:
-//
-// A V Luchinsky Jan 29, 2013 Module created
-// A V Luchinsky Apr 30, 2019 psi K_S K mode added
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtBcVHad.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtBCVFF2.hh"
#include "EvtGenModels/EvtWHad.hh"
#include <iostream>
std::string EvtBcVHad::getName()
{
return "BC_VHAD";
}
EvtDecayBase* EvtBcVHad::clone()
{
return new EvtBcVHad;
}
//======================================================
void EvtBcVHad::init()
{
checkNArg( 1 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
for ( int i = 1; i <= ( getNDaug() - 1 ); i++ ) {
checkSpinDaughter( i, EvtSpinType::SCALAR );
}
if ( getNDaug() < 2 || getNDaug() > 6 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Have not yet implemented this final state in BC_VHAD model"
<< std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Ndaug=" << getNDaug() << std::endl;
for ( int id = 0; id < ( getNDaug() - 1 ); id++ ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Daug " << id << " " << EvtPDL::name( getDaug( id ) ).c_str()
<< std::endl;
}
return;
}
idVector = getDaug( 0 ).getId();
whichfit = int( getArg( 0 ) + 0.1 );
ffmodel = std::make_unique<EvtBCVFF2>( idVector, whichfit );
wcurr = std::make_unique<EvtWHad>();
// determine the code of final hadronic state
EvtIdSet thePis( "pi+", "pi-", "pi0" );
EvtIdSet theK( "K+", "K-", "K_S0" );
if ( getNDaug() == 2 && thePis.contains( getDaug( 1 ) ) ) {
out_code = 1;
} else if ( getNDaug() == 3 && thePis.contains( getDaug( 1 ) ) &&
thePis.contains( getDaug( 2 ) ) ) {
out_code = 2;
} else if ( getNDaug() == 4 && thePis.contains( getDaug( 1 ) ) &&
thePis.contains( getDaug( 2 ) ) &&
thePis.contains( getDaug( 3 ) ) ) {
out_code = 3;
} else if ( getNDaug() == 5 && thePis.contains( getDaug( 1 ) ) &&
thePis.contains( getDaug( 2 ) ) &&
thePis.contains( getDaug( 3 ) ) &&
thePis.contains( getDaug( 4 ) ) ) {
out_code = 4;
} else if ( getNDaug() == 6 && thePis.contains( getDaug( 1 ) ) &&
thePis.contains( getDaug( 2 ) ) &&
thePis.contains( getDaug( 3 ) ) &&
thePis.contains( getDaug( 4 ) ) &&
thePis.contains( getDaug( 5 ) ) ) {
out_code = 5;
} else if ( getNDaug() == 4 && theK.contains( getDaug( 1 ) ) &&
theK.contains( getDaug( 2 ) ) &&
thePis.contains( getDaug( 3 ) ) ) {
out_code = 6;
} else if ( getNDaug() == 4 && theK.contains( getDaug( 1 ) ) &&
thePis.contains( getDaug( 2 ) ) &&
thePis.contains( getDaug( 3 ) ) ) {
out_code = 7;
} else if ( getNDaug() == 3 && theK.contains( getDaug( 1 ) ) &&
theK.contains( getDaug( 2 ) ) ) {
out_code = 8;
}
}
//======================================================
void EvtBcVHad::initProbMax()
{
if ( out_code == 3 ) {
if ( idVector == EvtPDL::getId( "J/psi" ).getId() && whichfit == 1 &&
getNDaug() == 4 )
setProbMax( 42000. );
else if ( idVector == EvtPDL::getId( "J/psi" ).getId() &&
whichfit == 2 && getNDaug() == 4 )
setProbMax( 16000. );
else if ( idVector == EvtPDL::getId( "psi(2S)" ).getId() &&
whichfit == 1 && getNDaug() == 4 )
setProbMax( 1200. );
else if ( idVector == EvtPDL::getId( "psi(2S)" ).getId() &&
whichfit == 2 && getNDaug() == 4 )
setProbMax( 2600. );
} else if ( out_code == 5 ) {
if ( idVector == EvtPDL::getId( "J/psi" ).getId() && whichfit == 1 &&
getNDaug() == 6 )
setProbMax( 720000. );
else if ( idVector == EvtPDL::getId( "J/psi" ).getId() &&
whichfit == 2 && getNDaug() == 6 )
setProbMax( 471817. );
else if ( idVector == EvtPDL::getId( "psi(2S)" ).getId() &&
whichfit == 1 && getNDaug() == 6 )
setProbMax( 40000. );
else if ( idVector == EvtPDL::getId( "psi(2S)" ).getId() &&
whichfit == 2 && getNDaug() == 6 )
setProbMax( 30000. );
} else if ( out_code == 6 ) {
if ( idVector == EvtPDL::getId( "J/psi" ).getId() && whichfit == 1 )
setProbMax( 50000. );
else if ( idVector == EvtPDL::getId( "J/psi" ).getId() && whichfit == 2 )
setProbMax( 20000.0 );
else if ( idVector == EvtPDL::getId( "psi(2S)" ).getId() && whichfit == 1 )
setProbMax( 2100.0 );
else if ( idVector == EvtPDL::getId( "psi(2S)" ).getId() && whichfit == 2 )
setProbMax( 1700.00 );
} else if ( out_code == 7 ) {
if ( idVector == EvtPDL::getId( "J/psi" ).getId() && whichfit == 1 )
setProbMax( 2.2e+06 );
else if ( idVector == EvtPDL::getId( "J/psi" ).getId() && whichfit == 2 )
setProbMax( 830000 );
else if ( idVector == EvtPDL::getId( "psi(2S)" ).getId() && whichfit == 1 )
setProbMax( 92000.0 );
else if ( idVector == EvtPDL::getId( "psi(2S)" ).getId() && whichfit == 2 )
setProbMax( 93000.0 );
} else if ( out_code == 8 ) {
if ( idVector == EvtPDL::getId( "J/psi" ).getId() && whichfit == 1 )
setProbMax( 2e2 );
else if ( idVector == EvtPDL::getId( "J/psi" ).getId() && whichfit == 2 )
setProbMax( 80 );
else if ( idVector == EvtPDL::getId( "psi(2S)" ).getId() && whichfit == 1 )
setProbMax( 10 );
else if ( idVector == EvtPDL::getId( "psi(2S)" ).getId() && whichfit == 2 )
setProbMax( 10 );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Have not yet implemented this final state in BC_VHAD model"
<< std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Ndaug=" << getNDaug() << std::endl;
for ( int id = 0; id < ( getNDaug() - 1 ); id++ ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Daug " << id << " " << EvtPDL::name( getDaug( id ) ).c_str()
<< std::endl;
}
::abort();
}
}
//======================================================
EvtVector4C EvtBcVHad::hardCurr( EvtParticle* root_particle ) const
{
EvtVector4C hardCur;
if ( out_code == 1 ) {
// pi+
hardCur = wcurr->WCurrent( root_particle->getDaug( 1 )->getP4() );
} else if ( out_code == 2 ) {
// pi+ pi0
hardCur = wcurr->WCurrent( root_particle->getDaug( 1 )->getP4(),
root_particle->getDaug( 2 )->getP4() );
} else if ( out_code == 3 ) {
// pi+ pi+ pi-
hardCur = wcurr->WCurrent( root_particle->getDaug( 1 )->getP4(),
root_particle->getDaug( 2 )->getP4(),
root_particle->getDaug( 3 )->getP4() );
} else if ( out_code == 5 ) {
// Bc -> psi pi+ pi+ pi- pi- pi+ from Kuhn, Was, hep-ph/0602162
hardCur = wcurr->WCurrent( root_particle->getDaug( 1 )->getP4(),
root_particle->getDaug( 2 )->getP4(),
root_particle->getDaug( 3 )->getP4(),
root_particle->getDaug( 4 )->getP4(),
root_particle->getDaug( 5 )->getP4() );
} else if ( out_code == 6 ) {
// K+ K- pi+
hardCur = wcurr->WCurrent_KKP( root_particle->getDaug( 1 )->getP4(),
root_particle->getDaug( 2 )->getP4(),
root_particle->getDaug( 3 )->getP4() );
} else if ( out_code == 7 ) {
// K+ pi+ pi-
hardCur = wcurr->WCurrent_KPP( root_particle->getDaug( 1 )->getP4(),
root_particle->getDaug( 2 )->getP4(),
root_particle->getDaug( 3 )->getP4() );
} else if ( out_code == 8 ) {
// K_S0 K+
hardCur = wcurr->WCurrent_KSK( root_particle->getDaug( 1 )->getP4(),
root_particle->getDaug( 2 )->getP4() );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Have not yet implemented this final state in BC_VHAD model"
<< std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Ndaug=" << getNDaug() << std::endl;
for ( int id = 0; id < ( getNDaug() - 1 ); id++ ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Daug " << id << " " << EvtPDL::name( getDaug( id ) ).c_str()
<< std::endl;
}
::abort();
}
return hardCur;
}
//======================================================
void EvtBcVHad::decay( EvtParticle* root_particle )
{
root_particle->initializePhaseSpace( getNDaug(), getDaugs() );
// Calculate hadronic current
EvtVector4C hardCur = hardCurr( root_particle );
EvtParticle* Jpsi = root_particle->getDaug( 0 );
EvtVector4R p4b( root_particle->mass(), 0., 0., 0. ), // Bc momentum
p4meson = Jpsi->getP4(), // J/psi momenta
Q = p4b - p4meson, p4Sum = p4meson + p4b;
double Q2 = Q.mass2();
// Calculate Bc -> V W form-factors
double a1f( 0.0 ), a2f( 0.0 ), vf( 0.0 ), a0f( 0.0 );
double m_meson = Jpsi->mass();
double m_b = root_particle->mass();
double mVar = m_b + m_meson;
ffmodel->getvectorff( root_particle->getId(), Jpsi->getId(), Q2, m_meson,
&a1f, &a2f, &vf, &a0f );
double a3f = ( mVar / ( 2.0 * m_meson ) ) * a1f -
( ( m_b - m_meson ) / ( 2.0 * m_meson ) ) * a2f;
// Calculate Bc -> V W current
EvtTensor4C H = a1f * mVar * EvtTensor4C::g();
H.addDirProd( ( -a2f / mVar ) * p4b, p4Sum );
H += EvtComplex( 0.0, vf / mVar ) *
dual( EvtGenFunctions::directProd( p4Sum, Q ) );
H.addDirProd( ( a0f - a3f ) * 2.0 * ( m_meson / Q2 ) * p4b, Q );
EvtVector4C Heps = H.cont2( hardCur );
for ( int i = 0; i < 4; i++ ) {
EvtVector4C eps =
Jpsi->epsParent( i ).conj(); // psi-meson polarization vector
EvtComplex amp = eps * Heps;
vertex( i, amp );
}
}
diff --git a/src/EvtGenModels/EvtBcVMuNu.cpp b/src/EvtGenModels/EvtBcVMuNu.cpp
index a89f575..4ce2fef 100644
--- a/src/EvtGenModels/EvtBcVMuNu.cpp
+++ b/src/EvtGenModels/EvtBcVMuNu.cpp
@@ -1,94 +1,73 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBcVMuNu.cc
-//
-// Description: Routine to implement semileptonic Bc -> vector l nu decays
-//
-// Modification history:
-//
-// AVL Jul 6, 2012 Module created
-// AVL Feb 5, 2018 D0, D*0 modes added
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBcVMuNu.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
#include "EvtGenModels/EvtBCVFF.hh"
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
std::string EvtBcVMuNu::getName()
{
return "BC_VMN";
}
EvtDecayBase* EvtBcVMuNu::clone()
{
return new EvtBcVMuNu;
}
void EvtBcVMuNu::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
calcamp->CalcAmp( p, _amp2, ffmodel.get() );
}
void EvtBcVMuNu::init()
{
checkNArg( 1 );
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be X lepton neutrino
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
idVector = getDaug( 0 ).getId();
whichfit = int( getArg( 0 ) + 0.1 );
ffmodel = std::make_unique<EvtBCVFF>( idVector, whichfit );
calcamp = std::make_unique<EvtSemiLeptonicVectorAmp>();
}
void EvtBcVMuNu::initProbMax()
{
EvtId parId = getParentId();
EvtId mesonId = getDaug( 0 );
EvtId lepId = getDaug( 1 );
EvtId nuId = getDaug( 2 );
int nQ2Bins = 200;
double maxProb = calcamp->CalcMaxProb( parId, mesonId, lepId, nuId,
ffmodel.get(), nQ2Bins );
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtBcVMuNu" )
<< "Max prob = " << maxProb << endl;
}
setProbMax( maxProb );
}
diff --git a/src/EvtGenModels/EvtBcVNpi.cpp b/src/EvtGenModels/EvtBcVNpi.cpp
index 7ef9020..b6b8490 100644
--- a/src/EvtGenModels/EvtBcVNpi.cpp
+++ b/src/EvtGenModels/EvtBcVNpi.cpp
@@ -1,193 +1,173 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBcVNpi.cc
-//
-// Description: Module to implement Bc -> psi + (n pi) decays
-//
-// Modification history:
-//
-// AVL July 6, 2012 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBcVNpi.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParser.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenModels/EvtTauHadnu.hh"
#include "EvtGenModels/EvtWnPi.hh"
#include <ctype.h>
#include <stdlib.h>
std::string EvtBcVNpi::getName()
{
return "BC_VNPI";
}
EvtDecayBase* EvtBcVNpi::clone()
{
return new EvtBcVNpi;
}
//======================================================
void EvtBcVNpi::init()
{
//cout<<"BcVNpi::init()"<<endl;
checkNArg( 1 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
for ( int i = 1; i <= ( getNDaug() - 1 ); i++ ) {
checkSpinDaughter( i, EvtSpinType::SCALAR );
};
if ( getNDaug() < 2 || getNDaug() > 6 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Have not yet implemented this final state in BcVNpi model"
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Ndaug=" << getNDaug() << endl;
for ( int id = 0; id < ( getNDaug() - 1 ); id++ )
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Daug " << id << " " << EvtPDL::name( getDaug( id ) ).c_str()
<< endl;
return;
}
// for(int i=0; i<getNDaug(); i++)
// cout<<"BcVNpi::init \t\t daughter "<<i<<" : "<<getDaug(i).getId()<<" "<<EvtPDL::name(getDaug(i)).c_str()<<endl;
idVector = getDaug( 0 ).getId();
whichfit = int( getArg( 0 ) + 0.1 );
// cout<<"BcVNpi: whichfit ="<<whichfit<<" idVector="<<idVector<<endl;
ffmodel = std::make_unique<EvtBCVFF>( idVector, whichfit );
wcurr = std::make_unique<EvtWnPi>();
nCall = 0;
}
//======================================================
void EvtBcVNpi::initProbMax()
{
// cout<<"BcVNpi::initProbMax()"<<endl;
if ( idVector == EvtPDL::getId( "J/psi" ).getId() && whichfit == 1 &&
getNDaug() == 6 )
setProbMax( 720000. );
else if ( idVector == EvtPDL::getId( "J/psi" ).getId() && whichfit == 2 &&
getNDaug() == 6 )
setProbMax( 471817. );
else if ( idVector == EvtPDL::getId( "J/psi" ).getId() && whichfit == 1 &&
getNDaug() == 4 )
setProbMax( 42000. );
else if ( idVector == EvtPDL::getId( "J/psi" ).getId() && whichfit == 2 &&
getNDaug() == 4 )
setProbMax( 16000. );
else if ( idVector == EvtPDL::getId( "psi(2S)" ).getId() && whichfit == 1 &&
getNDaug() == 4 )
setProbMax( 1200. );
else if ( idVector == EvtPDL::getId( "psi(2S)" ).getId() && whichfit == 2 &&
getNDaug() == 4 )
setProbMax( 2600. );
else if ( idVector == EvtPDL::getId( "psi(2S)" ).getId() && whichfit == 1 &&
getNDaug() == 6 )
setProbMax( 40000. );
else if ( idVector == EvtPDL::getId( "psi(2S)" ).getId() && whichfit == 2 &&
getNDaug() == 6 )
setProbMax( 30000. );
}
//======================================================
void EvtBcVNpi::decay( EvtParticle* root_particle )
{
++nCall;
// cout<<"BcVNpi::decay()"<<endl;
root_particle->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4R p4b( root_particle->mass(), 0., 0., 0. ), // Bc momentum
p4meson = root_particle->getDaug( 0 )->getP4(), // J/psi momenta
Q = p4b - p4meson;
double Q2 = Q.mass2();
// check pi-mesons and calculate hadronic current
EvtVector4C hardCur;
// bool foundHadCurr=false;
if ( getNDaug() == 2 ) {
hardCur = wcurr->WCurrent( root_particle->getDaug( 1 )->getP4() );
// foundHadCurr=true;
} else if ( getNDaug() == 3 ) {
hardCur = wcurr->WCurrent( root_particle->getDaug( 1 )->getP4(),
root_particle->getDaug( 2 )->getP4() );
// foundHadCurr=true;
} else if ( getNDaug() == 4 ) {
hardCur = wcurr->WCurrent( root_particle->getDaug( 1 )->getP4(),
root_particle->getDaug( 2 )->getP4(),
root_particle->getDaug( 3 )->getP4() );
// foundHadCurr=true;
} else if ( getNDaug() ==
6 ) // Bc -> psi pi+ pi+ pi- pi- pi+ from [Kuhn, Was, hep-ph/0602162
{
hardCur = wcurr->WCurrent( root_particle->getDaug( 1 )->getP4(),
root_particle->getDaug( 2 )->getP4(),
root_particle->getDaug( 3 )->getP4(),
root_particle->getDaug( 4 )->getP4(),
root_particle->getDaug( 5 )->getP4() );
// foundHadCurr=true;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Have not yet implemented this final state in BCNPI model"
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Ndaug=" << getNDaug() << endl;
int id;
for ( id = 0; id < ( getNDaug() - 1 ); id++ )
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Daug " << id << " " << EvtPDL::name( getDaug( id ) ).c_str()
<< endl;
::abort();
};
// calculate Bc -> V W form-factors
double a1f, a2f, vf, a0f;
double m_meson = root_particle->getDaug( 0 )->mass();
double m_b = root_particle->mass();
ffmodel->getvectorff( root_particle->getId(),
root_particle->getDaug( 0 )->getId(), Q2, m_meson,
&a1f, &a2f, &vf, &a0f );
double a3f = ( ( m_b + m_meson ) / ( 2.0 * m_meson ) ) * a1f -
( ( m_b - m_meson ) / ( 2.0 * m_meson ) ) * a2f;
// calculate Bc -> V W current
EvtTensor4C H;
H = a1f * ( m_b + m_meson ) * EvtTensor4C::g();
H.addDirProd( ( -a2f / ( m_b + m_meson ) ) * p4b, p4b + p4meson );
H += EvtComplex( 0.0, vf / ( m_b + m_meson ) ) *
dual( EvtGenFunctions::directProd( p4meson + p4b, p4b - p4meson ) );
H.addDirProd( ( a0f - a3f ) * 2.0 * ( m_meson / Q2 ) * p4b, p4b - p4meson );
EvtVector4C Heps = H.cont2( hardCur );
for ( int i = 0; i < 4; i++ ) {
EvtVector4C eps = root_particle->getDaug( 0 )
->epsParent( i )
.conj(); // psi-meson polarization vector
EvtComplex amp = eps * Heps;
vertex( i, amp );
};
}
diff --git a/src/EvtGenModels/EvtBsMuMuKK.cpp b/src/EvtGenModels/EvtBsMuMuKK.cpp
index 7add0f2..e2ead99 100644
--- a/src/EvtGenModels/EvtBsMuMuKK.cpp
+++ b/src/EvtGenModels/EvtBsMuMuKK.cpp
@@ -1,674 +1,655 @@
-////////////////////////////////////////////////////////////////////////////////
-// //
-// Environment: //
-// This software is part of the EvtGen package. //
-// //
-// Copyright Information: See EvtGen/COPYRIGHT //
-// //
-// Module: EvtBsMUMUKK.cc //
-// //
-// Description: Routine to implement Bs -> J/psi KK //
-// //
-// Modification history: //
-// Veronika Chobanova, Jeremy Dalseno, Diego Martinez Santos //
-// April 21, 2016 Module created LHCb collaboration //
-// Marcos Romero Lamas //
-// February 8, 2019 Module updated LHCb collaboration //
-// //
-////////////////////////////////////////////////////////////////////////////////
-
#include "EvtGenModels/EvtBsMuMuKK.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector3R.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenBase/EvtdFunction.hh"
const double pi = EvtConst::pi;
const EvtComplex I = EvtComplex( 0.0, 1.0 );
const double sq2 = sqrt( 2.0 );
std::string EvtBsMuMuKK::getName()
{
return "BS_MUMUKK";
}
EvtDecayBase* EvtBsMuMuKK::clone()
{
return new EvtBsMuMuKK;
}
void EvtBsMuMuKK::init()
{
// DecFile parameters
checkNArg( 37 );
// Non-resonant S wave
f_S_NR = getArg( 0 );
delta_S_NR = getArg( 1 );
phis_S_NR = getArg( 2 );
lambda_S_NR_abs = getArg( 3 );
// f0 (S wave)
f_f0 = getArg( 4 );
delta_f0 = getArg( 5 );
phis_f0 = getArg( 6 );
lambda_f0_abs = getArg( 7 );
// phi (P wave)
f_phi = getArg( 8 );
f_phi_0 = getArg( 9 );
delta_phi_0 = getArg( 10 );
phis_phi_0 = getArg( 11 );
lambda_phi_0_abs = getArg( 12 );
f_phi_perp = getArg( 13 );
delta_phi_perp = pi - getArg( 14 );
phis_phi_perp = getArg( 15 );
lambda_phi_perp_abs = getArg( 16 );
delta_phi_par = pi - getArg( 17 );
phis_phi_par = getArg( 18 );
lambda_phi_par_abs = getArg( 19 );
// f2' (D wave)
f_f2p_0 = getArg( 20 );
delta_f2p_0 = getArg( 21 );
phis_f2p_0 = getArg( 22 );
lambda_f2p_0_abs = getArg( 23 );
f_f2p_perp = getArg( 24 );
delta_f2p_perp = pi - getArg( 25 );
phis_f2p_perp = getArg( 26 );
lambda_f2p_perp_abs = getArg( 27 );
delta_f2p_par = pi - getArg( 28 );
phis_f2p_par = getArg( 29 );
lambda_f2p_par_abs = getArg( 30 );
// Time dependence
Gamma = getArg( 31 );
deltaGamma = getArg( 32 );
deltaMs = getArg( 33 );
// mKK window
Mf0 = getArg( 34 );
kin_lower_limit = getArg( 35 ); // the minimum is approx 2.03*MKp
kin_upper_limit = getArg( 36 );
// PDG masses
MBs = EvtPDL::getMass( EvtPDL::getId( "B_s0" ) );
MJpsi = EvtPDL::getMeanMass( EvtPDL::getId( "J/psi" ) );
Mphi = EvtPDL::getMeanMass( EvtPDL::getId( "phi" ) );
Mf2p = EvtPDL::getMeanMass( EvtPDL::getId( "f'_2" ) );
MKp = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
MKm = EvtPDL::getMass( EvtPDL::getId( "K-" ) );
MK0 = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
Mpip = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
Mpi0 = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
Mmu = EvtPDL::getMass( EvtPDL::getId( "mu+" ) );
double MBsSq = MBs * MBs;
// Amplitudes and other time parameters
A_S_NR = sqrt( f_S_NR );
A_f0 = sqrt( f_f0 );
A_phi_0 = sqrt( f_phi_0 * f_phi );
A_phi_perp = sqrt( f_phi_perp * f_phi );
// Use fabs to make sure subtractions are >= 0, since subtracting 0 from 0 can give -0
A_phi_par = sqrt(
fabs( f_phi - A_phi_perp * A_phi_perp - A_phi_0 * A_phi_0 ) );
f_f2p = fabs( 1.0 - f_S_NR - f_f0 - f_phi );
A_f2p_0 = sqrt( f_f2p_0 * f_f2p );
A_f2p_perp = sqrt( f_f2p_perp * f_f2p );
A_f2p_par = sqrt(
fabs( f_f2p - A_f2p_perp * A_f2p_perp - A_f2p_0 * A_f2p_0 ) );
ctau = 1.0 / Gamma;
Gamma0phi = EvtPDL::getWidth( EvtPDL::getId( "phi" ) );
Gamma0f2p = EvtPDL::getWidth( EvtPDL::getId( "f'_2" ) );
kin_middle = 0.5 * ( kin_upper_limit + kin_lower_limit );
int_const_NR = sqrt(
Integral( 1.0, 1.0, 0, 1, 1.0, kin_lower_limit, kin_upper_limit, 0 ) );
int_Flatte_f0 = sqrt(
Integral( 1.0, Mf0, 0, 1, 1.0, kin_lower_limit, kin_upper_limit, 1 ) );
p30Kp_mid_CMS = sqrt( ( pow( kin_middle, 2 ) - pow( MKp + MKm, 2 ) ) *
( pow( kin_middle, 2 ) - pow( MKp - MKm, 2 ) ) ) /
( 2.0 * kin_middle );
p30Kp_ll_CMS = sqrt( ( pow( kin_lower_limit, 2 ) - pow( MKp + MKm, 2 ) ) *
( pow( kin_lower_limit, 2 ) - pow( MKp - MKm, 2 ) ) ) /
( 2.0 * kin_lower_limit );
p30Kp_phi_CMS = sqrt( ( Mphi * Mphi - pow( MKp + MKm, 2 ) ) *
( Mphi * Mphi - pow( MKp - MKm, 2 ) ) ) /
( 2.0 * Mphi );
p30Kp_f2p_CMS = sqrt( ( Mf2p * Mf2p - pow( MKp + MKm, 2 ) ) *
( Mf2p * Mf2p - pow( MKp - MKm, 2 ) ) ) /
( 2.0 * Mf2p );
p30Jpsi_mid_CMS = sqrt( ( MBsSq - pow( kin_middle + MJpsi, 2 ) ) *
( MBsSq - pow( kin_middle - MJpsi, 2 ) ) ) /
( 2.0 * MBs );
p30Jpsi_ll_CMS = sqrt( ( MBsSq - pow( kin_lower_limit + MJpsi, 2 ) ) *
( MBsSq - pow( kin_lower_limit - MJpsi, 2 ) ) ) /
( 2.0 * MBs );
p30Jpsi_phi_CMS = sqrt( ( MBsSq - pow( Mphi + MJpsi, 2 ) ) *
( MBsSq - pow( Mphi - MJpsi, 2 ) ) ) /
( 2.0 * MBs );
p30Jpsi_f2p_CMS = sqrt( ( MBsSq - pow( Mf2p + MJpsi, 2 ) ) *
( MBsSq - pow( Mf2p - MJpsi, 2 ) ) ) /
( 2.0 * MBs );
int_BW_phi = sqrt( Integral( Gamma0phi, Mphi, 1, 0, p30Kp_phi_CMS,
kin_lower_limit, kin_upper_limit, 2 ) );
int_BW_f2p = sqrt( Integral( Gamma0f2p, Mf2p, 2, 1, p30Kp_f2p_CMS,
kin_lower_limit, kin_upper_limit, 2 ) );
// 4 daughters
checkNDaug( 4 );
// Spin-0 parent
checkSpinParent( EvtSpinType::SCALAR ); // B_s0 (anti-B_s0)
// Daughters
checkSpinDaughter( 0, EvtSpinType::DIRAC ); // mu+ (mu-)
checkSpinDaughter( 1, EvtSpinType::DIRAC ); // mu- (mu+)
checkSpinDaughter( 2, EvtSpinType::SCALAR ); // K+ (K-)
checkSpinDaughter( 3, EvtSpinType::SCALAR ); // K- (K+)
// B_s0 parent (Parent must be B_s0 or anti-B_s0)
const EvtId p = getParentId();
if ( p != EvtPDL::getId( "B_s0" ) && p != EvtPDL::getId( "anti-B_s0" ) ) {
assert( 0 );
}
// Daughter types and ordering (should be mu+-, mu-+, K+-, K-+)
const EvtId d1 = getDaug( 0 );
const EvtId d2 = getDaug( 1 );
const EvtId d3 = getDaug( 2 );
const EvtId d4 = getDaug( 3 );
if ( !( ( d1 == EvtPDL::getId( "mu+" ) || d1 == EvtPDL::getId( "mu-" ) ) &&
( d2 == EvtPDL::getId( "mu-" ) || d2 == EvtPDL::getId( "mu+" ) ) &&
( d3 == EvtPDL::getId( "K+" ) || d3 == EvtPDL::getId( "K-" ) ) &&
( d4 == EvtPDL::getId( "K-" ) || d4 == EvtPDL::getId( "K+" ) ) ) ) {
assert( 0 );
}
}
// Get ProbMax
void EvtBsMuMuKK::initProbMax()
{
const EvtComplex term11 = sqrt( p30Jpsi_f2p_CMS * p30Kp_f2p_CMS );
const EvtComplex term12 = X_J( 2, p30Kp_f2p_CMS, 0 ) *
X_J( 1, p30Jpsi_f2p_CMS, 1 ) * p30Kp_f2p_CMS *
p30Kp_f2p_CMS * p30Jpsi_f2p_CMS *
( A_f2p_0 + 0.3 * A_f2p_perp + 0.3 * A_f2p_par );
const EvtComplex term13 = f_f2p *
Breit_Wigner( Gamma0f2p, Mf2p, Mf2p, 2,
p30Kp_f2p_CMS, p30Kp_f2p_CMS ) /
int_BW_f2p;
const EvtComplex term21 = sqrt( p30Jpsi_phi_CMS * p30Kp_phi_CMS );
const EvtComplex term22 = X_J( 1, p30Kp_phi_CMS, 0 ) * p30Kp_phi_CMS *
( 0.65 * A_phi_0 + 0.6 * A_phi_perp +
0.6 * A_phi_par );
const EvtComplex term23 = f_phi *
Breit_Wigner( Gamma0phi, Mphi, Mphi, 1,
p30Kp_phi_CMS, p30Kp_phi_CMS ) /
int_BW_phi;
const EvtComplex term31 = sqrt( p30Jpsi_ll_CMS * p30Kp_ll_CMS );
const EvtComplex term32 = X_J( 1, p30Jpsi_ll_CMS, 1 ) * p30Jpsi_ll_CMS;
const EvtComplex term33 = f_f0 * Flatte( Mf0, kin_lower_limit ) /
int_Flatte_f0;
const EvtComplex term41 = sqrt( p30Jpsi_mid_CMS * p30Kp_mid_CMS );
const EvtComplex term42 = X_J( 1, p30Jpsi_mid_CMS, 1 ) * p30Jpsi_mid_CMS;
const EvtComplex term43 = 1.2 * f_S_NR / int_const_NR;
const EvtComplex hm = term11 * term12 * term13 + term21 * term22 * term23 +
term31 * term32 * term33 + term41 * term42 * term43;
// Increase by 10%
setProbMax( 0.5 * abs2( hm ) * 1.1 );
}
// Decay function
void EvtBsMuMuKK::decay( EvtParticle* p )
{
EvtId other_b;
double time( 0.0 );
EvtCPUtil::getInstance()->OtherB( p, time, other_b );
time = -log( EvtRandom::Flat() ) *
ctau; // This overrules the ctau made in OtherB
if ( EvtCPUtil::getInstance()->isBsMixed( p ) ) {
p->getParent()->setLifetime( time * EvtConst::c / 1e12 ); // units: mm
} else {
p->setLifetime( time * EvtConst::c / 1e12 ); // units: mm
}
double DGtime = 0.25 * deltaGamma * time;
double DMtime = 0.5 * deltaMs * time;
double mt = exp( -DGtime );
double pt = exp( +DGtime );
double cDMt = cos( DMtime );
double sDMt = sin( DMtime );
EvtComplex termplus = EvtComplex( cDMt, sDMt );
EvtComplex terminus = EvtComplex( cDMt, -sDMt );
EvtComplex gplus = 0.5 * ( mt * termplus + pt * terminus );
EvtComplex gminus = 0.5 * ( mt * termplus - pt * terminus );
EvtId BSB = EvtPDL::getId( "anti-B_s0" );
// Flavour: first assume B_s0, otherwise choose anti-B_s0
int q( 1 );
if ( other_b == BSB ) {
q = -1;
}
p->setAttribute( "q", q );
// Amplitudes
EvtComplex a_S_NR = AmpTime( q, gplus, gminus, delta_S_NR, lambda_S_NR_abs,
A_S_NR, phis_S_NR, -1 );
EvtComplex a_f0 = AmpTime( q, gplus, gminus, delta_f0, lambda_f0_abs, A_f0,
phis_f0, -1 );
EvtComplex a0_phi = AmpTime( q, gplus, gminus, delta_phi_0,
lambda_phi_0_abs, A_phi_0, phis_phi_0, 1 );
EvtComplex aperp_phi = AmpTime( q, gplus, gminus, delta_phi_perp,
lambda_phi_perp_abs, A_phi_perp,
phis_phi_perp, -1 );
EvtComplex apar_phi = AmpTime( q, gplus, gminus, delta_phi_par,
lambda_phi_par_abs, A_phi_par, phis_phi_par,
1 );
EvtComplex a0_f2p = AmpTime( q, gplus, gminus, delta_f2p_0,
lambda_f2p_0_abs, A_f2p_0, phis_f2p_0, -1 );
EvtComplex aperp_f2p = AmpTime( q, gplus, gminus, delta_f2p_perp,
lambda_f2p_perp_abs, A_f2p_perp,
phis_f2p_perp, 1 );
EvtComplex apar_f2p = AmpTime( q, gplus, gminus, delta_f2p_par,
lambda_f2p_par_abs, A_f2p_par, phis_f2p_par,
-1 );
// Generate 4-momenta
double mKK = EvtRandom::Flat( kin_lower_limit, kin_upper_limit );
double mass[10] = {MJpsi, mKK, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
double Kmass[10] = {MKp, MKm, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
double muMass[10] = {Mmu, Mmu, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
EvtVector4R mypV[2], mypK[2], mypmu[2];
EvtGenKine::PhaseSpace( 2, mass, mypV, MBs );
EvtGenKine::PhaseSpace( 2, Kmass, mypK, mKK );
EvtGenKine::PhaseSpace( 2, muMass, mypmu, MJpsi );
EvtVector4R p4mup = boostTo( mypmu[0], mypV[0] );
EvtVector4R p4mum = boostTo( mypmu[1], mypV[0] );
EvtVector4R p4Kp = boostTo( mypK[0], mypV[1] );
EvtVector4R p4Km = boostTo( mypK[1], mypV[1] );
p->makeDaughters( getNDaug(), getDaugs() );
EvtParticle* thisparticle;
EvtParticle *muplus, *muminus, *Kplus, *Kminus;
// Check particle ID
for ( int k = 0; k <= 3; k++ ) {
thisparticle = p->getDaug( k );
EvtId pId = thisparticle->getId();
if ( pId == EvtPDL::getId( "mu+" ) ) {
muplus = thisparticle;
muplus->init( getDaug( k ), p4mup );
} else if ( pId == EvtPDL::getId( "mu-" ) ) {
muminus = thisparticle;
muminus->init( getDaug( k ), p4mum );
} else if ( pId == EvtPDL::getId( "K+" ) ) {
Kplus = thisparticle;
Kplus->init( getDaug( k ), p4Kp );
} else if ( pId == EvtPDL::getId( "K-" ) ) {
Kminus = thisparticle;
Kminus->init( getDaug( k ), p4Km );
}
}
EvtVector4R p4KK = p4Kp + p4Km;
EvtVector4R p4mumu = p4mup + p4mum;
EvtVector4R p4Bs = p4mumu + p4KK;
double p4KK_mass2 = p4KK.mass2();
double p4KK_mass = p4KK.mass();
double p4Bs_mass2 = p4Bs.mass2();
double p4Bs_mass = p4Bs.mass();
// Kp momentum in the KK CMS
double p3Kp_KK_CMS = sqrt( ( p4KK_mass2 - pow( MKp + MKm, 2 ) ) *
( p4KK_mass2 - pow( MKp - MKm, 2 ) ) ) /
( 2.0 * p4KK_mass );
// J/psi momentum in the KK CMS
double p3Jpsi_KK_CMS = sqrt( ( p4Bs_mass2 - pow( p4KK_mass + MJpsi, 2 ) ) *
( p4Bs_mass2 - pow( p4KK_mass - MJpsi, 2 ) ) ) /
( 2.0 * p4Bs_mass );
// Mass lineshapes
// Non-resonant S wave
EvtComplex P_NR = 1.0 / int_const_NR;
// f0 Flatte
EvtComplex F_f0 = Flatte( Mf0, p4KK_mass ) / int_Flatte_f0;
// phi Breit Wigner
EvtComplex BW_phi = Breit_Wigner( Gamma0phi, Mphi, p4KK_mass, 1,
p30Kp_phi_CMS, p3Kp_KK_CMS ) /
int_BW_phi;
// f2' Breit Wigner
EvtComplex BW_f2p = Breit_Wigner( Gamma0f2p, Mf2p, p4KK_mass, 1,
p30Kp_f2p_CMS, p3Kp_KK_CMS ) /
int_BW_f2p;
// Barrier factors: Always taking the lowest Bs L
double X_KK_0 = 1.0;
double X_KK_1 = X_J( 1, p3Kp_KK_CMS, 0 );
double X_KK_2 = X_J( 2, p3Kp_KK_CMS, 0 );
double X_NR_Jpsi_1 = X_J( 1, p3Jpsi_KK_CMS, 1 );
double X_f0_Jpsi_1 = X_J( 1, p3Jpsi_KK_CMS, 1 );
double X_phi_Jpsi_0 = 1.0;
double X_f2p_Jpsi_1 = X_J( 1, p3Jpsi_KK_CMS, 1 );
// Birth momentum factors: pow(p3(K+),LR)* pow(p3(J/psi),LB)
double f_PHSP = sqrt( p3Jpsi_KK_CMS * p3Kp_KK_CMS );
double f_BMF_NR = p3Jpsi_KK_CMS;
double f_BMF_f0 = p3Jpsi_KK_CMS;
double f_BMF_phi = p3Kp_KK_CMS;
double f_BMF_f2p = p3Kp_KK_CMS * p3Kp_KK_CMS * p3Jpsi_KK_CMS;
// Angular distribution and sum over KK states
double CosK = EvtDecayAngle( p4Bs, p4KK, p4Kp );
double CosMu = EvtDecayAngle( p4Bs, p4mumu, p4mup );
double chi = EvtDecayAngleChi( p4Bs, p4mup, p4mum, p4Kp, p4Km );
// Build helicity amplitudes
// phi
EvtComplex H0_phi = a0_phi;
EvtComplex Hp_phi = ( apar_phi + aperp_phi ) / sq2;
EvtComplex Hm_phi = ( apar_phi - aperp_phi ) / sq2;
// f2p
EvtComplex H0_f2p = a0_f2p;
EvtComplex Hp_f2p = ( apar_f2p + aperp_f2p ) / sq2;
EvtComplex Hm_f2p = ( apar_f2p - aperp_f2p ) / sq2;
// muon polarization +1
EvtComplex swaveangdist1 = AngularDist( 0, 0, 1, CosK, CosMu, chi );
// KK Spin-0 NR
EvtComplex mp_hS_NR = a_S_NR * swaveangdist1;
EvtComplex Amp_p_NR = P_NR * X_KK_0 * X_NR_Jpsi_1 * f_BMF_NR * mp_hS_NR;
// KK Spin-0 f0
EvtComplex mp_h_f0 = a_f0 * swaveangdist1;
EvtComplex Amp_p_f0 = F_f0 * X_KK_0 * X_f0_Jpsi_1 * f_BMF_f0 * mp_h_f0;
// KK Spin-1
EvtComplex mp_h0_phi = H0_phi * AngularDist( 1, 0, 1, CosK, CosMu, chi );
EvtComplex mp_hp_phi = Hp_phi * AngularDist( 1, 1, 1, CosK, CosMu, chi );
EvtComplex mp_hm_phi = Hm_phi * AngularDist( 1, -1, 1, CosK, CosMu, chi );
EvtComplex Amp_p_phi = BW_phi * X_KK_1 * X_phi_Jpsi_0 * f_BMF_phi *
( mp_h0_phi + mp_hp_phi + mp_hm_phi );
// KK Spin-2
EvtComplex mp_h0_f2p = H0_f2p * AngularDist( 2, 0, 1, CosK, CosMu, chi );
EvtComplex mp_hp_f2p = Hp_f2p * AngularDist( 2, 1, 1, CosK, CosMu, chi );
EvtComplex mp_hm_f2p = Hm_f2p * AngularDist( 2, -1, 1, CosK, CosMu, chi );
EvtComplex Amp_p_f2p = BW_f2p * X_KK_2 * X_f2p_Jpsi_1 * f_BMF_f2p *
( mp_h0_f2p + mp_hp_f2p + mp_hm_f2p );
// muon polarization -1
EvtComplex swaveangdist2 = AngularDist( 0, 0, -1, CosK, CosMu, chi );
// KK Spin-0 NR
EvtComplex mm_hS_NR = a_S_NR * swaveangdist2;
EvtComplex Amp_m_NR = P_NR * X_KK_0 * X_NR_Jpsi_1 * f_BMF_NR * mm_hS_NR;
// KK Spin-0
EvtComplex mm_h_f0 = a_f0 * swaveangdist2;
EvtComplex Amp_m_f0 = F_f0 * X_KK_0 * X_f0_Jpsi_1 * f_BMF_f0 * mm_h_f0;
// KK Spin-1
EvtComplex mm_h0_phi = H0_phi * AngularDist( 1, 0, -1, CosK, CosMu, chi );
EvtComplex mm_hp_phi = Hp_phi * AngularDist( 1, +1, -1, CosK, CosMu, chi );
EvtComplex mm_hm_phi = Hm_phi * AngularDist( 1, -1, -1, CosK, CosMu, chi );
EvtComplex Amp_m_phi = BW_phi * X_KK_1 * X_phi_Jpsi_0 * f_BMF_phi *
( mm_h0_phi + mm_hp_phi + mm_hm_phi );
// KK Spin-2
EvtComplex mm_h0_f2p = H0_f2p * AngularDist( 2, 0, -1, CosK, CosMu, chi );
EvtComplex mm_hp_f2p = Hp_f2p * AngularDist( 2, 1, -1, CosK, CosMu, chi );
EvtComplex mm_hm_f2p = Hm_f2p * AngularDist( 2, -1, -1, CosK, CosMu, chi );
EvtComplex Amp_m_f2p = BW_f2p * X_KK_2 * X_f2p_Jpsi_1 * f_BMF_f2p *
( mm_h0_f2p + mm_hp_f2p + mm_hm_f2p );
// Total amplitudes
EvtComplex Amp_tot_plus = f_PHSP *
( Amp_p_NR + Amp_p_f0 + Amp_p_phi + Amp_p_f2p );
EvtComplex Amp_tot_minus = f_PHSP *
( Amp_m_NR + Amp_m_f0 + Amp_m_phi + Amp_m_f2p );
vertex( 0, 0, 0.0 );
vertex( 0, 1, Amp_tot_plus );
vertex( 1, 0, Amp_tot_minus );
vertex( 1, 1, 0.0 );
}
// Rho function
EvtComplex EvtBsMuMuKK::GetRho( const double m0, const double m ) const
{
double rho_sq = 1.0 - ( 4.0 * m0 * m0 / ( m * m ) );
EvtComplex rho;
if ( rho_sq > 0.0 ) {
rho = EvtComplex( sqrt( rho_sq ), 0.0 );
} else {
rho = EvtComplex( 0.0, sqrt( -rho_sq ) );
}
return rho;
}
// Flatte function
EvtComplex EvtBsMuMuKK::Flatte( const double m0, const double m ) const
{
double gpipi = 0.167;
double gKK = 3.05 * gpipi;
EvtComplex term1 = ( 2.0 * GetRho( Mpip, m ) + GetRho( Mpi0, m ) ) / 3.0;
EvtComplex term2 = ( GetRho( MKp, m ) + GetRho( MK0, m ) ) / 2.0;
EvtComplex w = gpipi * term1 + gKK * term2;
EvtComplex Flatte_0 = 1.0 / ( m0 * m0 - m * m - I * m0 * w );
return Flatte_0;
}
// Breit-Wigner function
EvtComplex EvtBsMuMuKK::Breit_Wigner( const double Gamma0, const double m0,
const double m, const int J,
const double q0, const double q ) const
{
double X_J_q0_sq = pow( X_J( J, q0, 0 ), 2 );
double X_J_q_sq = pow( X_J( J, q, 0 ), 2 );
double Gamma = Gamma0 * pow( q / q0, 2 * J + 1 ) * ( m0 / m ) *
( X_J_q_sq / X_J_q0_sq );
return 1.0 / ( m0 * m0 - m * m - I * m0 * Gamma );
}
// Integral
double EvtBsMuMuKK::Integral( const double Gamma0, const double m0, const int JR,
const int JB, const double q0, const double M_KK_ll,
const double M_KK_ul, const int fcntype ) const
{
int bins = 1000;
double bin_width = ( M_KK_ul - M_KK_ll ) / static_cast<double>( bins );
EvtComplex integral( 0.0, 0.0 );
double MKpiKm2 = pow( MKp + MKm, 2 );
double MBs2 = pow( MBs, 2 );
for ( int i = 0; i < bins; i++ ) {
double M_KK_i = M_KK_ll + static_cast<double>( i ) * bin_width;
double M_KK_f = M_KK_ll + static_cast<double>( i + 1 ) * bin_width;
double p3Kp_KK_CMS_i = ( pow( M_KK_i, 2 ) - MKpiKm2 ) / ( 2.0 * M_KK_i );
double p3Kp_KK_CMS_f = ( pow( M_KK_f, 2 ) - MKpiKm2 ) / ( 2.0 * M_KK_f );
double p3Jpsi_Bs_CMS_i = sqrt( ( MBs2 - pow( M_KK_i + MJpsi, 2 ) ) *
( MBs2 - pow( M_KK_i - MJpsi, 2 ) ) ) /
( 2.0 * MBs );
double p3Jpsi_Bs_CMS_f = sqrt( ( MBs2 - pow( M_KK_f + MJpsi, 2 ) ) *
( MBs2 - pow( M_KK_f - MJpsi, 2 ) ) ) /
( 2.0 * MBs );
double f_PHSP_i = sqrt( p3Kp_KK_CMS_i * p3Jpsi_Bs_CMS_i );
double f_PHSP_f = sqrt( p3Kp_KK_CMS_f * p3Jpsi_Bs_CMS_f );
double f_MBF_KK_i = pow( p3Kp_KK_CMS_i, JR );
double f_MBF_KK_f = pow( p3Kp_KK_CMS_f, JR );
double f_MBF_Bs_i = pow( p3Jpsi_Bs_CMS_i, JB );
double f_MBF_Bs_f = pow( p3Jpsi_Bs_CMS_f, JB );
double X_JR_i = X_J( JR, p3Kp_KK_CMS_i, 0 );
double X_JR_f = X_J( JR, p3Kp_KK_CMS_f, 0 );
double X_JB_i = X_J( JB, p3Jpsi_Bs_CMS_i, 1 );
double X_JB_f = X_J( JB, p3Jpsi_Bs_CMS_f, 1 );
EvtComplex fcn_i( 1.0, 0.0 ), fcn_f( 1.0, 0.0 );
if ( fcntype == 1 ) {
fcn_i = Flatte( m0, M_KK_i );
fcn_f = Flatte( m0, M_KK_f );
} else if ( fcntype == 2 ) {
fcn_i = Breit_Wigner( Gamma0, m0, M_KK_i, JR, q0, p3Kp_KK_CMS_i );
fcn_f = Breit_Wigner( Gamma0, m0, M_KK_f, JR, q0, p3Kp_KK_CMS_f );
}
EvtComplex a_i = f_PHSP_i * f_MBF_KK_i * f_MBF_Bs_i * X_JR_i * X_JB_i *
fcn_i;
EvtComplex a_st_i = conj( a_i );
EvtComplex a_f = f_PHSP_f * f_MBF_KK_f * f_MBF_Bs_f * X_JR_f * X_JB_f *
fcn_f;
EvtComplex a_st_f = conj( a_f );
integral += 0.5 * bin_width * ( a_i * a_st_i + a_f * a_st_f );
}
return sqrt( abs2( integral ) );
}
// Blatt-Weisskopf barrier factors
double EvtBsMuMuKK::X_J( const int J, const double q, const int isB ) const
{
double r_BW = 1.0;
if ( isB == 0 ) {
r_BW = 1.5;
} else if ( isB == 1 ) {
r_BW = 5.0;
}
double zsq = pow( r_BW * q, 2 );
double X_J( 1.0 );
if ( J == 1 ) {
X_J = sqrt( 1.0 / ( 1.0 + zsq ) );
} else if ( J == 2 ) {
X_J = sqrt( 1.0 / ( zsq * zsq + 3.0 * zsq + 9.0 ) );
}
return X_J;
}
// EvtGen d matrix: Input is 2J instead of J etc
double EvtBsMuMuKK::Wignerd( const int J, const int l, const int alpha,
const double theta ) const
{
return EvtdFunction::d( 2 * J, 2 * l, 2 * alpha, theta );
}
// J spin of KK, l spin proj of J/psi, alpha dimuon spin
EvtComplex EvtBsMuMuKK::AngularDist( const int J, const int l, const int alpha,
const double cK, const double cL,
const double chi ) const
{
double thetaL = acos( cL );
double thetaK = acos( cK );
EvtComplex out = 0.5 * sqrt( ( 2 * J + 1 ) / pi ) *
exp( EvtComplex( 0, -l * chi ) );
out *= Wignerd( 1, l, alpha, thetaL ) * Wignerd( J, -l, 0, thetaK );
return out;
}
// Time-dependent amplitude calculation
EvtComplex EvtBsMuMuKK::AmpTime( const int q, const EvtComplex& gplus,
const EvtComplex& gminus, const double delta,
const double lambda_abs, const double Amp,
const double phis, const int eta ) const
{
EvtComplex amp_time = Amp * EvtComplex( cos( -delta ), sin( -delta ) );
double qphis = q * phis;
amp_time *= ( gplus + eta * pow( lambda_abs, -1.0 * q ) *
EvtComplex( cos( qphis ), sin( qphis ) ) * gminus );
if ( q == 1 ) {
amp_time *= eta;
}
return amp_time;
}
diff --git a/src/EvtGenModels/EvtBsquark.cpp b/src/EvtGenModels/EvtBsquark.cpp
index 7d0fabf..6409f5c 100644
--- a/src/EvtGenModels/EvtBsquark.cpp
+++ b/src/EvtGenModels/EvtBsquark.cpp
@@ -1,207 +1,186 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtTauScalarnu.cc
-//
-// Description: The leptonic decay of the tau meson.
-// E.g., tau- -> e- nueb nut
-//
-// Modification history:
-//
-// RYD January 17, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBsquark.hh"
#include "EvtGenBase/EvtDiracParticle.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGammaMatrix.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <iostream>
#include <string>
std::string EvtBsquark::getName()
{
return "BSQUARK";
}
EvtDecayBase* EvtBsquark::clone()
{
return new EvtBsquark;
}
void EvtBsquark::init()
{
// check that there are 5 arguments
checkNArg( 5 );
}
void EvtBsquark::initProbMax()
{
//For now do not set a maximum.
//SetProbMax(0.000000000005);
}
void EvtBsquark::decay( EvtParticle* p )
{
static EvtId cquark = EvtPDL::getId( "c" );
static EvtId anticquark = EvtPDL::getId( "anti-c" );
static EvtIdSet leptons( "e-", "mu-", "tau-" );
p->initializePhaseSpace( getNDaug(), getDaugs() );
int charge = 1;
EvtParticle* lepton;
lepton = p->getDaug( 1 );
if ( leptons.contains( lepton->getId() ) ) {
charge = -1;
}
EvtDiracParticle charmquark;
//this is a very crude approximation...
if ( charge == -1 ) {
charmquark.init( cquark, p->getDaug( 0 )->getP4() );
} else {
charmquark.init( anticquark, p->getDaug( 0 )->getP4() );
}
EvtVector4R p4c = p->getDaug( 0 )->getP4();
EvtVector4R p4sn = p->getDaug( 2 )->getP4();
EvtVector4R p4b( p->mass(), 0.0, 0.0, 0.0 );
EvtComplex M[2][2];
int il, ic;
//project out the right handed current
EvtGammaMatrix PR = 0.5 * ( EvtGammaMatrix::id() + EvtGammaMatrix::g5() );
double tanbeta = getArg( 1 );
double cosbeta = cos( atan( tanbeta ) );
double sinbeta = sin( atan( tanbeta ) );
double mb = 4.9;
double mc = 1.3;
double mw = 80.4;
double Mass = getArg( 2 );
double mu = getArg( 3 );
double mchargino = getArg( 4 );
double tan2phim = 2 * sqrt( 2.0 ) * mw * ( mu * cosbeta + Mass * sinbeta ) /
( Mass * Mass - mu * mu +
2 * mw * mw * cos( 2 * atan( tanbeta ) ) );
double phim = 0.5 * atan( tan2phim );
EvtComplex U11 = cos( phim );
EvtComplex U12 = sin( phim );
EvtComplex U21 = -sin( phim );
EvtComplex U22 = cos( phim );
double tan2phip = 2 * sqrt( 2.0 ) * mw * ( mu * cosbeta + Mass * sinbeta ) /
( Mass * Mass - mu * mu -
2 * mw * mw * cos( 2 * atan( tanbeta ) ) );
double phip = 0.5 * atan( tan2phip );
EvtComplex V11 = cos( phip );
EvtComplex V12 = sin( phip );
EvtComplex V21 = -sin( phip );
EvtComplex V22 = cos( phip );
double theta = getArg( 0 );
double ctheta = cos( theta );
double stheta = sin( theta );
double vcsb = 0.08;
double mchi1 = mchargino;
double mchi2 = mchargino;
//overall scale factor
double g = 1.0;
EvtComplex a1 = mchi1 * ( U11 * ctheta - mb * U12 * stheta /
( sqrt( 2.0 ) * mw * cosbeta ) );
EvtComplex a2 = mchi2 * ( U21 * ctheta - mb * U22 * stheta /
( sqrt( 2.0 ) * mw * cosbeta ) );
EvtComplex b1 = mc * conj( V12 ) * ctheta / ( sqrt( 2.0 ) * mw * sinbeta );
EvtComplex b2 = mc * conj( V22 ) * ctheta / ( sqrt( 2.0 ) * mw * sinbeta );
EvtComplex f1 = -( g * g * V11 * vcsb ) /
( ( p4b - p4c ).mass2() - mchi1 * mchi1 );
EvtComplex f2 = -( g * g * V21 * vcsb ) /
( ( p4b - p4c ).mass2() - mchi1 * mchi2 );
//EvtGenReport(EVTGEN_INFO,"EvtGen") <<g<<" "<<V11<<" "<<FL<<" "<<vcsb<<" "<<mchi1<<endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "f1:"<<f1<<" "<<(p4b-p4c).mass2()<<endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "f2:"<<f2<<" "<<(p4b-p4c).mass2()<<endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "p4sn:"<<p4sn<<endl;
EvtGammaMatrix pslash = p4sn.get( 0 ) * EvtGammaMatrix::g0() -
p4sn.get( 1 ) * EvtGammaMatrix::g1() -
p4sn.get( 2 ) * EvtGammaMatrix::g2() -
p4sn.get( 3 ) * EvtGammaMatrix::g3();
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "pslash:"<<pslash<<endl;
for ( il = 0; il < 2; il++ ) {
for ( ic = 0; ic < 2; ic++ ) {
EvtComplex a = 0.0;
EvtComplex b = 0.0;
if ( charge == -1 ) {
a = charmquark.spParent( ic ) * ( PR * lepton->spParent( il ) );
b = charmquark.spParent( ic ) *
( ( pslash * PR ) * lepton->spParent( il ) );
} else {
a = lepton->spParent( il ) * ( PR * charmquark.spParent( ic ) );
b = lepton->spParent( il ) *
( ( pslash * PR ) * charmquark.spParent( ic ) );
}
//EvtGenReport(EVTGEN_INFO,"EvtGen") <<"pslash*PR:"<<pslash*PR<<endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") <<"sp charm:"<<charmquark.spParent(ic)<<endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") <<"sp lepton:"<<lepton->spParent(il)<<endl;
M[ic][il] = f1 * ( a1 * a + b1 * b ) + f2 * ( a2 * a + b2 * b );
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "Contr1:"<<a1<<" "<<a<<" "<<b1<<" "<<b<<endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "Contr2:"<<a2<<" "<<a<<" "<<b2<<" "<<b<<endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") <<"case1:"<<f1<<" "<<a1<<" "<<b1<<" "<<a<<" "<<b<<endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") <<"case2:"<<f2<<" "<<a2<<" "<<b2<<" "<<a<<" "<<b<<endl;
}
}
double prob = real( M[0][0] * conj( M[0][0] ) + M[1][0] * conj( M[1][0] ) +
M[0][1] * conj( M[0][1] ) + M[1][1] * conj( M[1][1] ) );
//EvtGenReport(EVTGEN_INFO,"EvtGen") <<"prob:"<<prob<<endl;
setProb( prob );
return;
}
diff --git a/src/EvtGenModels/EvtBto2piCPiso.cpp b/src/EvtGenModels/EvtBto2piCPiso.cpp
index 7ba81d4..1360352 100644
--- a/src/EvtGenModels/EvtBto2piCPiso.cpp
+++ b/src/EvtGenModels/EvtBto2piCPiso.cpp
@@ -1,241 +1,221 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBto2piCPiso.cc
-//
-// Description: Routine to decay B -> pi pi with isospin amplitudes
-//
-// Modification history:
-//
-// RYD,NK Febuary 7, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBto2piCPiso.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
std::string EvtBto2piCPiso::getName()
{
return "BTO2PI_CP_ISO";
}
EvtDecayBase* EvtBto2piCPiso::clone()
{
return new EvtBto2piCPiso;
}
void EvtBto2piCPiso::init()
{
// check that there are 10 arguments
checkNArg( 10 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
}
void EvtBto2piCPiso::initProbMax()
{
//added by Lange Jan4,2000
static EvtId PI0 = EvtPDL::getId( "pi0" );
static EvtId PIP = EvtPDL::getId( "pi+" );
static EvtId PIM = EvtPDL::getId( "pi-" );
//this may need to be revised
if ( ( ( getDaugs()[0] == PIP ) && ( getDaugs()[1] == PIM ) ) ||
( ( getDaugs()[0] == PIM ) && ( getDaugs()[1] == PIP ) ) ) {
setProbMax( 4.0 *
( getArg( 2 ) * getArg( 2 ) + getArg( 4 ) * getArg( 4 ) ) );
}
if ( ( getDaugs()[0] == PI0 ) && ( getDaugs()[1] == PI0 ) ) {
setProbMax( 2.0 * ( 4.0 * getArg( 2 ) * getArg( 2 ) +
getArg( 4 ) * getArg( 4 ) ) );
}
if ( ( ( getDaugs()[0] == PIP ) && ( getDaugs()[1] == PI0 ) ) ||
( ( getDaugs()[0] == PI0 ) && ( getDaugs()[1] == PIP ) ) ) {
setProbMax( 6.0 * getArg( 2 ) * getArg( 2 ) );
}
if ( ( ( getDaugs()[0] == PI0 ) && ( getDaugs()[1] == PIM ) ) ||
( ( getDaugs()[0] == PIM ) && ( getDaugs()[1] == PI0 ) ) ) {
setProbMax( 6.0 * getArg( 4 ) * getArg( 4 ) );
}
}
void EvtBto2piCPiso::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
//added by Lange Jan4,2000
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId PI0 = EvtPDL::getId( "pi0" );
static EvtId PIP = EvtPDL::getId( "pi+" );
static EvtId PIM = EvtPDL::getId( "pi-" );
double t;
EvtId other_b;
int charged = 0;
//randomly generate the tag (B0 or B0B)
double tag = EvtRandom::Flat( 0.0, 1.0 );
if ( tag < 0.5 ) {
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 1.0 );
other_b = B0;
} else {
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.0 );
other_b = B0B;
}
EvtComplex amp;
EvtComplex A, Abar;
EvtComplex A2, A2_bar, A0, A0_bar;
A2 = EvtComplex( getArg( 2 ) * cos( getArg( 3 ) ),
getArg( 2 ) * sin( getArg( 3 ) ) );
A2_bar = EvtComplex( getArg( 4 ) * cos( getArg( 5 ) ),
getArg( 4 ) * sin( getArg( 5 ) ) );
A0 = EvtComplex( getArg( 6 ) * cos( getArg( 7 ) ),
getArg( 6 ) * sin( getArg( 7 ) ) );
A0_bar = EvtComplex( getArg( 8 ) * cos( getArg( 9 ) ),
getArg( 8 ) * sin( getArg( 9 ) ) );
//depending on what combination of pi pi we have, there will be different
//A and Abar
if ( ( ( getDaugs()[0] == PIP ) && ( getDaugs()[1] == PI0 ) ) ||
( ( getDaugs()[0] == PI0 ) && ( getDaugs()[1] == PIP ) ) ) {
//pi+ pi0, so just A_2
charged = 1;
A = 3.0 * A2;
}
if ( ( ( getDaugs()[0] == PI0 ) && ( getDaugs()[1] == PIM ) ) ||
( ( getDaugs()[0] == PIM ) && ( getDaugs()[1] == PI0 ) ) ) {
//pi- pi0, so just A2_bar
charged = 1;
A = 3.0 * A2_bar;
}
if ( ( ( getDaugs()[0] == PIP ) && ( getDaugs()[1] == PIM ) ) ||
( ( getDaugs()[0] == PIM ) && ( getDaugs()[1] == PIP ) ) ) {
//pi+ pi-, so A_2 - A_0
charged = 0;
A = sqrt( 2.0 ) * ( A2 - A0 );
Abar = sqrt( 2.0 ) * ( A2_bar - A0_bar );
}
if ( ( getDaugs()[0] == PI0 ) && ( getDaugs()[1] == PI0 ) ) {
//pi0 pi0, so 2*A_2 + A_0
charged = 0;
A = 2.0 * A2 + A0;
Abar = 2.0 * A2_bar + A0_bar;
}
if ( charged == 0 ) {
if ( other_b == B0B ) {
amp = A * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
EvtComplex( cos( -2.0 * getArg( 0 ) ),
sin( -2.0 * getArg( 0 ) ) ) *
EvtComplex( 0.0, 1.0 ) * Abar *
sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
}
if ( other_b == B0 ) {
amp = A *
EvtComplex( cos( 2.0 * getArg( 0 ) ),
sin( 2.0 * getArg( 0 ) ) ) *
EvtComplex( 0.0, 1.0 ) *
sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
Abar * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
}
} else
amp = A;
vertex( amp );
return;
}
std::string EvtBto2piCPiso::getParamName( int i )
{
switch ( i ) {
case 0:
return "weakPhase";
case 1:
return "deltaM";
case 2:
return "A2";
case 3:
return "A2Phase";
case 4:
return "A2bar";
case 5:
return "A2barPhase";
case 6:
return "A0";
case 7:
return "A0Phase";
case 8:
return "A0bar";
case 9:
return "A0barPhase";
default:
return "";
}
}
std::string EvtBto2piCPiso::getParamDefault( int i )
{
switch ( i ) {
case 2:
return "1.0";
case 3:
return "0.0";
case 4:
return "1.0";
case 5:
return "0.0";
case 6:
return "1.0";
case 7:
return "0.0";
case 8:
return "1.0";
case 9:
return "0.0";
default:
return "";
}
}
diff --git a/src/EvtGenModels/EvtBtoKD3P.cpp b/src/EvtGenModels/EvtBtoKD3P.cpp
index a7cd1d3..239df0d 100644
--- a/src/EvtGenModels/EvtBtoKD3P.cpp
+++ b/src/EvtGenModels/EvtBtoKD3P.cpp
@@ -1,219 +1,202 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtBtoKD3P.cpp,v 1.2 2009-04-02 15:22:28 robbep Exp $
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 2003, Colorado State University
-//
-// Module creator:
-// Abi soffer, CSU, 2003
-//-----------------------------------------------------------------------
-#include "EvtGenBase/EvtPatches.hh"
-
-// Decay model that does the decay B+->D0K, D0->3 psudoscalars
+#include "EvtGenModels/EvtBtoKD3P.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDalitzPoint.hh"
#include "EvtGenBase/EvtDecayTable.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
-#include "EvtGenModels/EvtBtoKD3P.hh"
#include "EvtGenModels/EvtPto3P.hh"
#include <assert.h>
using std::endl;
//------------------------------------------------------------------
EvtDecayBase* EvtBtoKD3P::clone()
{
return new EvtBtoKD3P();
}
//------------------------------------------------------------------
std::string EvtBtoKD3P::getName()
{
return "BTOKD3P";
}
//------------------------------------------------------------------
void EvtBtoKD3P::init()
{
checkNArg( 2 ); // r, phase
checkNDaug( 3 ); // K, D0(allowed), D0(suppressed).
// The last two daughters are really one particle
// check that the mother and all daughters are scalars:
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
checkSpinDaughter( 2, EvtSpinType::SCALAR );
// Check that the B dtr types are K D D:
// get the parameters:
_r = getArg( 0 );
double phase = getArg( 1 );
_exp = EvtComplex( cos( phase ), sin( phase ) );
}
//------------------------------------------------------------------
void EvtBtoKD3P::initProbMax()
{
setProbMax( 1 ); // this is later changed in decay()
}
//------------------------------------------------------------------
void EvtBtoKD3P::decay( EvtParticle* p )
{
// tell the subclass that we decay the daughter:
_daugsDecayedByParentModel = true;
// the K is the 1st daughter of the B EvtParticle.
// The decay mode of the allowed D (the one produced in b->c decay) is 2nd
// The decay mode of the suppressed D (the one produced in b->u decay) is 3rd
const int KIND = 0;
const int D1IND = 1;
const int D2IND = 2;
// generate kinematics of daughters (K and D):
EvtId tempDaug[2] = {getDaug( KIND ), getDaug( D1IND )};
p->initializePhaseSpace( 2, tempDaug );
// Get the D daughter particle and the decay models of the allowed
// and suppressed D modes:
EvtParticle* theD = p->getDaug( D1IND );
EvtPto3P* model1 =
(EvtPto3P*)( EvtDecayTable::getInstance()->getDecayFunc( theD ) );
// for the suppressed mode, re-initialize theD as the suppressed D alias:
theD->init( getDaug( D2IND ), theD->getP4() );
EvtPto3P* model2 =
(EvtPto3P*)( EvtDecayTable::getInstance()->getDecayFunc( theD ) );
// on the first call:
if ( false == _decayedOnce ) {
_decayedOnce = true;
// store the D decay model pointers:
_model1 = model1;
_model2 = model2;
// check the decay models of the first 2 daughters and that they
// have the same final states:
std::string name1 = model1->getName();
std::string name2 = model2->getName();
if ( name1 != "PTO3P" ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "D daughters of EvtBtoKD3P decay must decay via the \"PTO3P\" model"
<< endl
<< " but found to decay via " << name1.c_str() << " or "
<< name2.c_str() << ". Will terminate execution!" << endl;
assert( 0 );
}
EvtId* daugs1 = model1->getDaugs();
EvtId* daugs2 = model2->getDaugs();
bool idMatch = true;
int d;
for ( d = 0; d < 2; ++d ) {
if ( daugs1[d] != daugs2[d] ) {
idMatch = false;
}
}
if ( false == idMatch ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "D daughters of EvtBtoKD3P decay must decay to the same final state"
<< endl
<< " particles in the same order (not CP-conjugate order),"
<< endl
<< " but they were found to decay to" << endl;
for ( d = 0; d < model1->getNDaug(); ++d ) {
EvtGenReport( EVTGEN_ERROR, "" )
<< " " << EvtPDL::name( daugs1[d] ).c_str() << " ";
}
EvtGenReport( EVTGEN_ERROR, "" ) << endl;
for ( d = 0; d < model1->getNDaug(); ++d ) {
EvtGenReport( EVTGEN_ERROR, "" )
<< " " << EvtPDL::name( daugs2[d] ).c_str() << " ";
}
EvtGenReport( EVTGEN_ERROR, "" )
<< endl
<< ". Will terminate execution!" << endl;
assert( 0 );
}
// estimate the probmax. Need to know the probmax's of the 2
// models for this:
setProbMax(
model1->getProbMax( 0 ) + _r * _r * model2->getProbMax( 0 ) +
2 * _r * sqrt( model1->getProbMax( 0 ) * model2->getProbMax( 0 ) ) );
} // end of things to do on the first call
// make sure the models haven't changed since the first call:
if ( _model1 != model1 || _model2 != model2 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "D daughters of EvtBtoKD3P decay should have only 1 decay modes, "
<< endl
<< " but a new decay mode was found after the first call" << endl
<< " Will terminate execution!" << endl;
assert( 0 );
}
// get the cover function for each of the models and add them up.
// They are summed with coefficients 1 because we are willing to
// take a small inefficiency (~50%) in order to ensure that the
// cover function is large enough without getting into complications
// associated with the smallness of _r:
EvtPdfSum<EvtDalitzPoint>* pc1 = model1->getPC();
EvtPdfSum<EvtDalitzPoint>* pc2 = model2->getPC();
EvtPdfSum<EvtDalitzPoint> pc;
pc.addTerm( 1.0, *pc1 );
pc.addTerm( 1.0, *pc2 );
// from this combined cover function, generate the Dalitz point:
EvtDalitzPoint x = pc.randomPoint();
// get the aptitude for each of the models on this point and add them up:
EvtComplex amp1 = model1->amplNonCP( x );
EvtComplex amp2 = model2->amplNonCP( x );
EvtComplex amp = amp1 + amp2 * _r * _exp;
// get the value of the cover function for this point and set the
// relative amplitude for this decay:
double comp = sqrt( pc.evaluate( x ) );
vertex( amp / comp );
// Make the daughters of theD:
bool massTreeOK = theD->generateMassTree();
if ( massTreeOK == false ) {
return;
}
// Now generate the p4's of the daughters of theD:
std::vector<EvtVector4R> v = model2->initDaughters( x );
if ( v.size() != theD->getNDaug() ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Number of daughters " << theD->getNDaug() << " != "
<< "Momentum vector size " << v.size() << endl
<< " Terminating execution." << endl;
assert( 0 );
}
// Apply the new p4's to the daughters:
for ( unsigned int i = 0; i < theD->getNDaug(); ++i ) {
theD->getDaug( i )->init( model2->getDaugs()[i], v[i] );
}
}
diff --git a/src/EvtGenModels/EvtBtoKpiCPiso.cpp b/src/EvtGenModels/EvtBtoKpiCPiso.cpp
index 73100a0..0b2598c 100644
--- a/src/EvtGenModels/EvtBtoKpiCPiso.cpp
+++ b/src/EvtGenModels/EvtBtoKpiCPiso.cpp
@@ -1,201 +1,181 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtBtoKpiCPiso.cc
-//
-// Description: Routine to decay B -> K pi with isospin amplitudes
-//
-// Modification history:
-//
-// RYD/NK Febuary 7, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBtoKpiCPiso.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
std::string EvtBtoKpiCPiso::getName()
{
return "BTOKPI_CP_ISO";
}
EvtDecayBase* EvtBtoKpiCPiso::clone()
{
return new EvtBtoKpiCPiso;
}
void EvtBtoKpiCPiso::init()
{
// check that there are 15 arguments
checkNArg( 15 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
}
void EvtBtoKpiCPiso::initProbMax()
{
//this might need to be revised
//added by Lange Jan4,2000
static EvtId PI0 = EvtPDL::getId( "pi0" );
static EvtId PIP = EvtPDL::getId( "pi+" );
static EvtId PIM = EvtPDL::getId( "pi+" );
static EvtId K0 = EvtPDL::getId( "K0" );
static EvtId KB = EvtPDL::getId( "anti-K0" );
static EvtId KP = EvtPDL::getId( "K+" );
static EvtId KM = EvtPDL::getId( "K-" );
if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == KP ) ) ||
( ( getDaug( 0 ) == KP ) && ( getDaug( 1 ) == PI0 ) ) ) {
setProbMax(
2.0 * ( getArg( 2 ) * getArg( 2 ) + getArg( 10 ) * getArg( 10 ) ) );
}
if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == KM ) ) ||
( ( getDaug( 0 ) == KM ) && ( getDaug( 1 ) == PI0 ) ) ) {
setProbMax(
2.0 * ( getArg( 4 ) * getArg( 4 ) + getArg( 12 ) * getArg( 12 ) ) );
}
if ( ( ( getDaug( 0 ) == PIP ) && ( getDaug( 1 ) == K0 ) ) ||
( ( getDaug( 0 ) == K0 ) && ( getDaug( 1 ) == PIP ) ) ) {
setProbMax(
4.0 * ( getArg( 6 ) * getArg( 6 ) + getArg( 10 ) * getArg( 10 ) ) );
}
if ( ( ( getDaug( 0 ) == PIM ) && ( getDaug( 1 ) == KB ) ) ||
( ( getDaug( 0 ) == KB ) && ( getDaug( 1 ) == PIM ) ) ) {
setProbMax(
4.0 * ( getArg( 8 ) * getArg( 8 ) + getArg( 12 ) * getArg( 12 ) ) );
}
if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == K0 ) ) ||
( ( getDaug( 0 ) == K0 ) && ( getDaug( 1 ) == PI0 ) ) ) {
setProbMax(
2.0 * ( getArg( 2 ) * getArg( 2 ) + getArg( 10 ) * getArg( 10 ) ) );
}
if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == KB ) ) ||
( ( getDaug( 0 ) == KB ) && ( getDaug( 1 ) == PI0 ) ) ) {
setProbMax(
2.0 * ( getArg( 4 ) * getArg( 4 ) + getArg( 12 ) * getArg( 12 ) ) );
}
if ( ( ( getDaug( 0 ) == PIM ) && ( getDaug( 1 ) == KP ) ) ||
( ( getDaug( 0 ) == KP ) && ( getDaug( 1 ) == PIM ) ) ) {
setProbMax(
4.0 * ( getArg( 6 ) * getArg( 6 ) + getArg( 10 ) * getArg( 10 ) ) );
}
if ( ( ( getDaug( 0 ) == PIP ) && ( getDaug( 1 ) == KM ) ) ||
( ( getDaug( 0 ) == KM ) && ( getDaug( 1 ) == PIP ) ) ) {
setProbMax(
4.0 * ( getArg( 8 ) * getArg( 8 ) + getArg( 12 ) * getArg( 12 ) ) );
}
}
void EvtBtoKpiCPiso::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
//added by Lange Jan4,2000
static EvtId PI0 = EvtPDL::getId( "pi0" );
static EvtId PIP = EvtPDL::getId( "pi+" );
static EvtId PIM = EvtPDL::getId( "pi+" );
static EvtId K0 = EvtPDL::getId( "K0" );
static EvtId KB = EvtPDL::getId( "anti-K0" );
static EvtId KP = EvtPDL::getId( "K+" );
static EvtId KM = EvtPDL::getId( "K-" );
EvtComplex A;
EvtComplex U, Ubar, V, Vbar, W, Wbar;
U = EvtComplex( getArg( 2 ) * cos( getArg( 3 ) ),
getArg( 2 ) * sin( getArg( 3 ) ) );
Ubar = EvtComplex( getArg( 4 ) * cos( getArg( 5 ) ),
getArg( 4 ) * sin( getArg( 5 ) ) );
V = EvtComplex( getArg( 6 ) * cos( getArg( 7 ) ),
getArg( 6 ) * sin( getArg( 7 ) ) );
Vbar = EvtComplex( getArg( 8 ) * cos( getArg( 9 ) ),
getArg( 8 ) * sin( getArg( 9 ) ) );
W = EvtComplex( getArg( 10 ) * cos( getArg( 11 ) ),
getArg( 10 ) * sin( getArg( 11 ) ) );
Wbar = EvtComplex( getArg( 12 ) * cos( getArg( 13 ) ),
getArg( 12 ) * sin( getArg( 13 ) ) );
//depending on what combination of K pi we have, there will be different
//A and Abar (only A given in comments!)
if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == KP ) ) ||
( ( getDaug( 0 ) == KP ) && ( getDaug( 1 ) == PI0 ) ) ) {
//pi0 K+, so U - W
A = U - W;
}
if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == KM ) ) ||
( ( getDaug( 0 ) == KM ) && ( getDaug( 1 ) == PI0 ) ) ) {
//pi0 K-, so Ubar - Wbar
A = Ubar - Wbar;
}
if ( ( ( getDaug( 0 ) == PIP ) && ( getDaug( 1 ) == K0 ) ) ||
( ( getDaug( 0 ) == K0 ) && ( getDaug( 1 ) == PIP ) ) ) {
//pi+ K0, so V + W
A = sqrt( 2.0 ) * ( V + W );
}
if ( ( ( getDaug( 0 ) == PIM ) && ( getDaug( 1 ) == KB ) ) ||
( ( getDaug( 0 ) == KB ) && ( getDaug( 1 ) == PIM ) ) ) {
//pi- K0bar, so Vbar + Wbar
A = sqrt( 2.0 ) * ( Vbar + Wbar );
}
if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == K0 ) ) ||
( ( getDaug( 0 ) == K0 ) && ( getDaug( 1 ) == PI0 ) ) ) {
//pi0 K0, so U + W
A = U + W;
}
if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == KB ) ) ||
( ( getDaug( 0 ) == KB ) && ( getDaug( 1 ) == PI0 ) ) ) {
A = Ubar + Wbar;
}
if ( ( ( getDaug( 0 ) == PIM ) && ( getDaug( 1 ) == KP ) ) ||
( ( getDaug( 0 ) == KP ) && ( getDaug( 1 ) == PIM ) ) ) {
//pi- K+, so V - W
A = sqrt( 2.0 ) * ( V - W );
}
if ( ( ( getDaug( 0 ) == PIP ) && ( getDaug( 1 ) == KM ) ) ||
( ( getDaug( 0 ) == KM ) && ( getDaug( 1 ) == PIP ) ) ) {
A = sqrt( 2.0 ) * ( Vbar - Wbar );
}
vertex( A );
return;
}
diff --git a/src/EvtGenModels/EvtBtoXsEtap.cpp b/src/EvtGenModels/EvtBtoXsEtap.cpp
index f54cdf2..b206093 100644
--- a/src/EvtGenModels/EvtBtoXsEtap.cpp
+++ b/src/EvtGenModels/EvtBtoXsEtap.cpp
@@ -1,166 +1,144 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtBtoXsEtap.cc
-//
-// Description: Routine to perform two-body non-resonant B->Xs,gluon decays.
-// It generates an X_s mass spectrum based on a parameterisation of the
-// b->s,gluon spectrum of Atwood-Soni. The resultant X_s particles may
-// be decayed by JETSET.
-//
-// Modification history:
-//
-// Adlene Hicheur January 10, 2001 Module created
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBtoXsEtap.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtBtoXsEtap::getName()
{
return "BTOXSETAP";
}
EvtDecayBase* EvtBtoXsEtap::clone()
{
return new EvtBtoXsEtap;
}
void EvtBtoXsEtap::init()
{
// check that there are no arguments
checkNArg( 0 );
}
void EvtBtoXsEtap::initProbMax()
{
noProbMax();
}
void EvtBtoXsEtap::decay( EvtParticle* p )
{
// useless
// if ( p->getNDaug() != 0 ) {
// //Will end up here because maxrate multiplies by 1.2
// EvtGenReport(EVTGEN_DEBUG,"EvtGen") << "In EvtBtoXsEtap: X_s daughters should not be here!"<<endl;
// return;
//}
double m_b;
int i;
p->makeDaughters( getNDaug(), getDaugs() );
EvtParticle* pdaug[MAX_DAUG];
for ( i = 0; i < getNDaug(); i++ ) {
pdaug[i] = p->getDaug( i );
}
static EvtVector4R p4[MAX_DAUG];
static double mass[MAX_DAUG];
m_b = p->mass();
// Prepare for phase space routine.
mass[1] = EvtPDL::getMass( getDaug( 1 ) );
double xbox, ybox, min, max, hichfit;
min = 0.493;
max = 4.3;
const double TwoPi = EvtConst::twoPi;
int Xscode = EvtPDL::getStdHep( getDaug( 0 ) );
// A five parameters fit, the shape is taken from Atwood & Soni
// double par[18];
double par[6];
if ( ( Xscode == 30343 ) || ( Xscode == -30343 ) || ( Xscode == 30353 ) ||
( Xscode == -30353 ) ) { // Xsu or Xsd
min = 0.6373; // Just above K pi threshold for Xsd/u
//min=0.6333; // K pi threshold for neutral Xsd
// par[0]=-2057.2380371094;
par[0] = 2.36816;
// par[1]=2502.2556152344;
par[1] = 0.62325725;
// par[2]=1151.5632324219;
par[2] = 2.2;
// par[3]=0.82431584596634;
par[3] = -0.2109375;
// par[4]=-4110.5234375000;
par[4] = 2.7;
// par[5]=8445.6757812500;
par[5] = 0.54;
// par[6]=-3034.1894531250;
// par[7]=1.1557708978653;
// par[8]=1765.9311523438;
// par[9]=1.3730158805847;
// par[10]=0.51371538639069;
// par[11]=2.0056934356689;
// par[12]=37144.097656250;
// par[13]=-50296.781250000;
// par[14]=27319.095703125;
// par[15]=-7408.0678710938;
// par[16]=1000.8093261719;
// par[17]=-53.834449768066;
} else {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "In EvtBtoXsEtap: Particle with id " << Xscode
<< " is not a Xsd/u particle" << endl;
return;
}
double boxheight = par[5];
double boxwidth = max - min;
mass[0] = 0.0;
while ( ( mass[0] > max ) || ( mass[0] < min ) ) {
xbox = EvtRandom::Flat( boxwidth ) + min;
ybox = EvtRandom::Flat( boxheight );
if ( xbox < par[2] ) {
hichfit = ( 1 / sqrt( TwoPi * par[1] ) ) *
exp( -0.5 * pow( ( xbox - par[0] ) / par[1], 2 ) );
// alifit=par[0]+par[1]*xbox+par[2]*pow(xbox,2);
// } else if (xbox<par[7]) {
// alifit=par[4]+par[5]*xbox+par[6]*pow(xbox,2);
// } else if (xbox<par[11]) {
// alifit=par[8]*exp(-0.5*pow((xbox-par[9])/par[10],2));
} else {
hichfit = par[3] * pow( ( xbox - par[4] ), 2 ) + par[5];
// alifit=par[12]+par[13]*xbox+par[14]*pow(xbox,2)+par[15]*pow(xbox,3)+par[16]*pow(xbox,4)+par[17]*pow(xbox,5);
}
if ( ybox > hichfit ) {
mass[0] = 0.0;
} else {
mass[0] = xbox;
}
}
// debug stuff: EvtGenReport(EVTGEN_INFO,"EvtGen") << "Xscode " << Xscode << " daughter 1 mass " << mass[0] << " daughter 2 mass " << mass[1] << endl;
EvtGenKine::PhaseSpace( getNDaug(), mass, p4, m_b );
for ( i = 0; i < getNDaug(); i++ ) {
pdaug[i]->init( getDaugs()[i], p4[i] );
}
return;
}
diff --git a/src/EvtGenModels/EvtBtoXsgamma.cpp b/src/EvtGenModels/EvtBtoXsgamma.cpp
index 6cde493..2278724 100644
--- a/src/EvtGenModels/EvtBtoXsgamma.cpp
+++ b/src/EvtGenModels/EvtBtoXsgamma.cpp
@@ -1,140 +1,110 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtBtoXsgamma.cc
-//
-// Description: Routine to perform two-body non-resonant B->Xs,gamma decays.
-// Set the first input parameter to 1 to use the Ali-Greub model,
-// or 2 to use the Kagan-Neubert model.
-//
-// Modification history:
-//
-// Mark Ian Williams July 20, 2000 Module created
-// Mark Ian Williams July 21, 2000 Module works
-// Mark Ian Williams July 25, 2000 Works for all Xs modes
-// Mark Ian Williams Aug 09, 2000 New values for mass minima
-// Mark Ian Williams Sept 06, 2000 14 parameter M_Xs function
-// Mark Ian Williams Sept 07, 2000 18 parameter M_Xs function
-// Mark Ian Williams Sept 07, 2000 Tidied up the code
-// Mark Ian Williams Sept 10, 2000 Updated parameters
-// Mark Ian Williams Sept 11, 2000 Finalised code
-// Jane Tinslay March 21, 2001 Re-worked so that you can choose
-// between the Ali-Greub and Kagan-Neubert
-// Modules.
-//------------------------------------------------------------------------
-//
-
#include "EvtGenModels/EvtBtoXsgamma.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtBtoXsgammaAliGreub.hh"
#include "EvtGenModels/EvtBtoXsgammaFixedMass.hh"
#include "EvtGenModels/EvtBtoXsgammaFlatEnergy.hh"
#include "EvtGenModels/EvtBtoXsgammaKagan.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtBtoXsgamma::getName()
{
return "BTOXSGAMMA";
}
EvtDecayBase* EvtBtoXsgamma::clone()
{
return new EvtBtoXsgamma;
}
void EvtBtoXsgamma::init()
{
//Arguments:
// 0: Ali-Greub model = 1, Kagan model = 2
//No more arguments for Ali-Greub model
// 1:
// 2:
// 3:
// check that at least one b->sg model has been selected
if ( getNArg() == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBtoXsgamma generator expected "
<< " at least 1 argument but found: " << getNArg() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
void EvtBtoXsgamma::initProbMax()
{
noProbMax();
}
void EvtBtoXsgamma::decay( EvtParticle* p )
{
//initialize here. -- its too damn slow otherwise.
if ( _model == 0 ) {
if ( getArg( 0 ) == 1 )
_model = std::make_unique<EvtBtoXsgammaAliGreub>();
else if ( getArg( 0 ) == 2 )
_model = std::make_unique<EvtBtoXsgammaKagan>();
else if ( getArg( 0 ) == 3 )
_model = std::make_unique<EvtBtoXsgammaFixedMass>();
else if ( getArg( 0 ) == 4 )
_model = std::make_unique<EvtBtoXsgammaFlatEnergy>();
else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "No valid EvtBtoXsgamma generator model selected "
<< "Set arg(0) to 1 for Ali-Greub model or 2 for "
<< " Kagan model or 3 for a fixed mass" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
_model->init( getNArg(), getArgs() );
}
// if ( p->getNDaug() != 0 ) {
//Will end up here because maxrate multiplies by 1.2
// EvtGenReport(EVTGEN_DEBUG,"EvtGen") << "In EvtBtoXsgamma: X_s daughters should not be here!"<<endl;
// return;
//}
double m_b;
int i;
p->makeDaughters( getNDaug(), getDaugs() );
EvtParticle* pdaug[MAX_DAUG];
for ( i = 0; i < getNDaug(); i++ ) {
pdaug[i] = p->getDaug( i );
}
static EvtVector4R p4[MAX_DAUG];
static double mass[MAX_DAUG];
m_b = p->mass();
mass[1] = EvtPDL::getMass( getDaug( 1 ) );
int Xscode = EvtPDL::getStdHep( getDaug( 0 ) );
mass[0] = _model->GetMass( Xscode );
EvtGenKine::PhaseSpace( getNDaug(), mass, p4, m_b );
for ( i = 0; i < getNDaug(); i++ ) {
pdaug[i]->init( getDaugs()[i], p4[i] );
}
}
diff --git a/src/EvtGenModels/EvtBtoXsgammaAbsModel.cpp b/src/EvtGenModels/EvtBtoXsgammaAbsModel.cpp
index b889001..c22f88d 100644
--- a/src/EvtGenModels/EvtBtoXsgammaAbsModel.cpp
+++ b/src/EvtGenModels/EvtBtoXsgammaAbsModel.cpp
@@ -1,34 +1,14 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtBtoXsgammaAbsModel.cc
-//
-// Description:
-// B->Xs gamma model base class.
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2000 Module Created
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBtoXsgammaAbsModel.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <stdlib.h>
void EvtBtoXsgammaAbsModel::init( int, double* )
{
//This default version of init does nothing;
//A specialized version of this function can be
//supplied for each decay model to do initialization.
return;
}
diff --git a/src/EvtGenModels/EvtBtoXsgammaAliGreub.cpp b/src/EvtGenModels/EvtBtoXsgammaAliGreub.cpp
index 2b5fa42..3b793f3 100644
--- a/src/EvtGenModels/EvtBtoXsgammaAliGreub.cpp
+++ b/src/EvtGenModels/EvtBtoXsgammaAliGreub.cpp
@@ -1,148 +1,116 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtBtoXsgammaAliGreub.cc
-//
-// Description: Routine to perform two-body non-resonant B->Xs,gamma decays.
-// It generates an X_s mass spectrum based on a parameterisation of the
-// b->s,gamma photon spectrum of Ali-Greub. The resultant X_s particles may
-// be decayed by JETSET.
-//
-// Modification history:
-//
-// Mark Ian Williams July 20, 2000 Module created
-// Mark Ian Williams July 21, 2000 Module works
-// Mark Ian Williams July 25, 2000 Works for all Xs modes
-// Mark Ian Williams Aug 09, 2000 New values for mass minima
-// Mark Ian Williams Sept 06, 2000 14 parameter M_Xs function
-// Mark Ian Williams Sept 07, 2000 18 parameter M_Xs function
-// Mark Ian Williams Sept 07, 2000 Tidied up the code
-// Mark Ian Williams Sept 10, 2000 Updated parameters
-// Mark Ian Williams Sept 11, 2000 Finalised code
-// Jane Tinslay March 21, 2000 Separated from EvtBtoXsgamma
-// class to allow choice of input models.
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBtoXsgammaAliGreub.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
using std::endl;
void EvtBtoXsgammaAliGreub::init( int nArg, double* /*args*/ )
{
if ( ( nArg - 1 ) != 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBtoXsgamma generator model "
<< "EvtBtoXsgammaAliGreub expected "
<< "zero arguments but found: " << nArg - 1 << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
double EvtBtoXsgammaAliGreub::GetMass( int Xscode )
{
// The special lineshape for strange hadrons X_s in b -> s gamma:
// An 18 parameter function fitted to the theoretical mass spectrum
// of Ali & Greub for a B meson mass of 5.279 GeV; top quark mass of
// 174.3 GeV; strange quark mass of 0.48 GeV (tuned to give minimum
// M_Xs of 0.64 GeV) and Fermi momentum of 265 MeV for spectator quark
// mass of 150 MeV (from CLEO fit). Truncated at max on high side
// and min (just above K pi or KK thresold) on low side.
double min = 0.64;
double max = 4.5;
double xbox, ybox, alifit;
double mass = 0.0;
double par[18];
if ( ( Xscode == 30343 ) || ( Xscode == -30343 ) || ( Xscode == 30353 ) ||
( Xscode == -30353 ) ) { // Xsu or Xsd
min = 0.6373; // Just above K pi threshold for Xsd/u
//min=0.6333; // K pi threshold for neutral Xsd
par[0] = -2057.2380371094;
par[1] = 2502.2556152344;
par[2] = 1151.5632324219;
par[3] = 0.82431584596634;
par[4] = -4110.5234375000;
par[5] = 8445.6757812500;
par[6] = -3034.1894531250;
par[7] = 1.1557708978653;
par[8] = 1765.9311523438;
par[9] = 1.3730158805847;
par[10] = 0.51371538639069;
par[11] = 2.0056934356689;
par[12] = 37144.097656250;
par[13] = -50296.781250000;
par[14] = 27319.095703125;
par[15] = -7408.0678710938;
par[16] = 1000.8093261719;
par[17] = -53.834449768066;
} else if ( ( Xscode == 30363 ) || ( Xscode == -30363 ) ) {
min = 0.9964; // Just above KK threshold for Xss
par[0] = -32263.908203125;
par[1] = 57186.589843750;
par[2] = -24230.728515625;
par[3] = 1.1155973672867;
par[4] = -12161.131835938;
par[5] = 20162.146484375;
par[6] = -7198.8564453125;
par[7] = 1.3783323764801;
par[8] = 1995.1691894531;
par[9] = 1.4655895233154;
par[10] = 0.48869228363037;
par[11] = 2.1038570404053;
par[12] = 55100.058593750;
par[13] = -75201.703125000;
par[14] = 41096.066406250;
par[15] = -11205.986328125;
par[16] = 1522.4024658203;
par[17] = -82.379623413086;
} else {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "In EvtBtoXsgammaAliGreub: Particle with id " << Xscode
<< " is not a Xss particle" << endl;
return 0;
}
double boxheight = par[8];
double boxwidth = max - min;
while ( ( mass > max ) || ( mass < min ) ) {
xbox = EvtRandom::Flat( boxwidth ) + min;
ybox = EvtRandom::Flat( boxheight );
if ( xbox < par[3] ) {
alifit = par[0] + par[1] * xbox + par[2] * pow( xbox, 2 );
} else if ( xbox < par[7] ) {
alifit = par[4] + par[5] * xbox + par[6] * pow( xbox, 2 );
} else if ( xbox < par[11] ) {
alifit = par[8] * exp( -0.5 * pow( ( xbox - par[9] ) / par[10], 2 ) );
} else {
alifit = par[12] + par[13] * xbox + par[14] * pow( xbox, 2 ) +
par[15] * pow( xbox, 3 ) + par[16] * pow( xbox, 4 ) +
par[17] * pow( xbox, 5 );
}
if ( ybox > alifit ) {
mass = 0.0;
} else {
mass = xbox;
}
}
return mass;
}
diff --git a/src/EvtGenModels/EvtBtoXsgammaFermiUtil.cpp b/src/EvtGenModels/EvtBtoXsgammaFermiUtil.cpp
index b9fc23b..f51d33d 100644
--- a/src/EvtGenModels/EvtBtoXsgammaFermiUtil.cpp
+++ b/src/EvtGenModels/EvtBtoXsgammaFermiUtil.cpp
@@ -1,243 +1,217 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtBtoXsgammaFermiUtil.cc
-//
-// Description:
-// Class to hold various fermi functions and their helper functions. The
-// fermi functions are used in EvtBtoXsgammaKagan.
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module created
-//------------------------------------------------------------------------
-#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenModels/EvtBtoXsgammaFermiUtil.hh"
-//-----------------------
-// This Class's Header --
-//-----------------------
#include "EvtGenBase/EvtConst.hh"
+#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
-#include "EvtGenModels/EvtBtoXsgammaFermiUtil.hh"
#include "EvtGenModels/EvtBtoXsgammaRootFinder.hh"
#include "EvtGenModels/EvtItgFunction.hh"
#include "EvtGenModels/EvtItgTwoCoeffFcn.hh"
-//---------------
-// C++ Headers --
-//---------------
#include <iostream>
#include <math.h>
using std::endl;
double EvtBtoXsgammaFermiUtil::FermiExpFunc( double y,
const std::vector<double>& coeffs )
{
//coeffs: 1 = lambdabar, 2 = a, 3 = lam1, 4 = norm
// EvtGenReport(EVTGEN_INFO,"EvtGen")<<coeffs[4]<<endl;
return ( pow( 1. - ( y / coeffs[1] ), coeffs[2] ) *
exp( ( -3. * pow( coeffs[1], 2. ) / coeffs[3] ) * y / coeffs[1] ) ) /
coeffs[4];
}
double EvtBtoXsgammaFermiUtil::FermiGaussFunc( double y,
const std::vector<double>& coeffs )
{
//coeffs: 1 = lambdabar, 2 = a, 3 = c, 4 = norm
return ( pow( 1. - ( y / coeffs[1] ), coeffs[2] ) *
exp( -pow( coeffs[3], 2. ) * pow( 1. - ( y / coeffs[1] ), 2. ) ) ) /
coeffs[4];
}
double EvtBtoXsgammaFermiUtil::FermiGaussFuncRoot(
double lambdabar, double lam1, double mb, std::vector<double>& gammaCoeffs )
{
std::vector<double> coeffs1 = {0.2, lambdabar, 0.0};
std::vector<double> coeffs2 = {0.2, lambdabar, -lam1 / 3.};
auto lhFunc = EvtItgTwoCoeffFcn{&FermiGaussRootFcnA, -mb, lambdabar,
coeffs1, gammaCoeffs};
auto rhFunc = EvtItgTwoCoeffFcn{&FermiGaussRootFcnB, -mb, lambdabar,
coeffs2, gammaCoeffs};
auto rootFinder = EvtBtoXsgammaRootFinder{};
return rootFinder.GetGaussIntegFcnRoot( &lhFunc, &rhFunc, 1.0e-4, 1.0e-4,
40, 40, -mb, lambdabar, 0.2, 0.4,
1.0e-6 );
}
double EvtBtoXsgammaFermiUtil::FermiGaussRootFcnA(
double y, const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2 )
{
//coeffs1: 0=ap, 1=lambdabar, coeffs2=gamma function coeffs
double cp = Gamma( ( 2.0 + coeffs1[0] ) / 2., coeffs2 ) /
Gamma( ( 1.0 + coeffs1[0] ) / 2., coeffs2 );
return ( y * y ) * pow( ( 1. - ( y / coeffs1[1] ) ), coeffs1[0] ) *
exp( -pow( cp, 2 ) * pow( ( 1. - ( y / coeffs1[1] ) ), 2. ) );
}
double EvtBtoXsgammaFermiUtil::FermiGaussRootFcnB(
double y, const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2 )
{
//coeffs1: 0=ap, 1=lambdabar, coeffs2=gamma function coeffs
double cp = Gamma( ( 2.0 + coeffs1[0] ) / 2., coeffs2 ) /
Gamma( ( 1.0 + coeffs1[0] ) / 2., coeffs2 );
return pow( ( 1. - ( y / coeffs1[1] ) ), coeffs1[0] ) *
exp( -pow( cp, 2 ) * pow( ( 1. - ( y / coeffs1[1] ) ), 2. ) );
}
double EvtBtoXsgammaFermiUtil::Gamma( double z, const std::vector<double>& coeffs )
{
//Lifted from Numerical Recipies in C
double x, y, tmp, ser;
int j;
y = z;
x = z;
tmp = x + 5.5;
tmp = tmp - ( x + 0.5 ) * log( tmp );
ser = 1.000000000190015;
for ( j = 0; j < 6; j++ ) {
y = y + 1.0;
ser = ser + coeffs[j] / y;
}
return exp( -tmp + log( 2.5066282746310005 * ser / x ) );
}
double EvtBtoXsgammaFermiUtil::BesselK1( double x )
{
//Lifted from Numerical Recipies in C : Returns the modified Bessel
//function K_1(x) for positive real x
if ( x < 0.0 )
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "x is negative !" << endl;
double y, ans;
if ( x <= 2.0 ) {
y = x * x / 4.0;
ans = ( log( x / 2.0 ) * BesselI1( x ) ) +
( 1.0 / x ) *
( 1.0 +
y * ( 0.15443144 +
y * ( -0.67278579 +
y * ( -0.18156897 +
y * ( -0.1919402e-1 +
y * ( -0.110404e-2 +
y * ( -0.4686e-4 ) ) ) ) ) ) );
} else {
y = 2.0 / x;
ans = ( exp( -x ) / sqrt( x ) ) *
( 1.25331414 +
y * ( 0.23498619 +
y * ( -0.3655620e-1 +
y * ( 0.1504268e-1 +
y * ( -0.780353e-2 +
y * ( 0.325614e-2 +
y * ( -0.68245e-3 ) ) ) ) ) ) );
}
return ans;
}
double EvtBtoXsgammaFermiUtil::BesselI1( double x )
{
//Lifted from Numerical Recipies in C : Returns the modified Bessel
//function I_1(x) for any real x
double ax, ans;
double y;
ax = fabs( x );
if ( ax < 3.75 ) {
y = x / 3.75;
y *= y;
ans = ax *
( 0.5 + y * ( 0.87890594 +
y * ( 0.51498869 +
y * ( 0.15084934 +
y * ( 0.2658733e-1 +
y * ( 0.301532e-2 +
y * 0.32411e-3 ) ) ) ) ) );
} else {
y = 3.75 / ax;
ans = 0.2282967e-1 +
y * ( -0.2895312e-1 + y * ( 0.1787654e-1 - y * 0.420059e-2 ) );
ans = 0.398914228 +
y * ( -0.3988024e-1 +
y * ( -0.362018e-2 +
y * ( 0.163801e-2 + y * ( -0.1031555e-1 + y * ans ) ) ) );
ans *= ( exp( ax ) / sqrt( ax ) );
}
return x < 0.0 ? -ans : ans;
}
double EvtBtoXsgammaFermiUtil::FermiRomanFuncRoot( double lambdabar, double lam1 )
{
auto lhFunc = EvtItgFunction{&FermiRomanRootFcnA, -1.e-6, 1.e6};
auto rootFinder = EvtBtoXsgammaRootFinder{};
double rhSide = 1.0 - ( lam1 / ( 3.0 * lambdabar * lambdabar ) );
double rho = rootFinder.GetRootSingleFunc( &lhFunc, rhSide, 0.1, 0.4, 1.0e-6 );
//rho=0.250353;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "rho/2 " << rho / 2. << " bessel " << BesselK1( rho / 2. ) << endl;
double pF = lambdabar * sqrt( EvtConst::pi ) /
( rho * exp( rho / 2. ) * BesselK1( rho / 2. ) );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "rho " << rho << " pf " << pF << endl;
return rho;
}
double EvtBtoXsgammaFermiUtil::FermiRomanRootFcnA( double y )
{
return EvtConst::pi * ( 2. + y ) * pow( y, -2. ) * exp( -y ) *
pow( BesselK1( y / 2. ), -2. );
}
double EvtBtoXsgammaFermiUtil::FermiRomanFunc( double y,
const std::vector<double>& coeffs )
{
if ( y == ( coeffs[1] - coeffs[2] ) )
y = 0.99999999 * ( coeffs[1] - coeffs[2] );
//coeffs: 1 = mB, 2=mb, 3=rho, 4=lambdabar, 5=norm
double pF = coeffs[4] * sqrt( EvtConst::pi ) /
( coeffs[3] * exp( coeffs[3] / 2. ) * BesselK1( coeffs[3] / 2. ) );
// EvtGenReport(EVTGEN_INFO,"EvtGen")<<" pf "<<y<<" "<<pF<<" "<<coeffs[1]<<" "<<coeffs[2]<<" "<<coeffs[3]<<" "<<coeffs[4]<<" "<<coeffs[5]<<endl;
//double pF=0.382533;
//EvtGenReport(EVTGEN_INFO,"EvtGen")<<(coeffs[1]-coeffs[2])*(1./(sqrt(EvtConst::pi)*pF))<<endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen")<<(1.-y/(coeffs[1]-coeffs[2]))<<endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen")<<(coeffs[1]-coeffs[2])<<endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen")<<(coeffs[1]-coeffs[2])*(1.-y/(coeffs[1]-coeffs[2]))<<endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen")<<" "<<pF*coeffs[3]/((coeffs[1]-coeffs[2])*(1.-y/(coeffs[1]-coeffs[2])))<<endl;
// EvtGenReport(EVTGEN_INFO,"EvtGen")<<" "<<((coeffs[1]-coeffs[2])/pF)*(1. -y/(coeffs[1]-coeffs[2]))<<endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen")<<"result "<<(coeffs[1]-coeffs[2])*(1./(sqrt(EvtConst::pi)*pF))*exp(-(1./4.)*pow(pF*(coeffs[3]/((coeffs[1]-coeffs[2])*(1.-y/(coeffs[1]-coeffs[2])))) - ((coeffs[1]-coeffs[2])/pF)*(1. -y/(coeffs[1]-coeffs[2])),2.))/coeffs[5];
//EvtGenReport(EVTGEN_INFO,"EvtGen")<<"leaving"<<endl;
return ( coeffs[1] - coeffs[2] ) * ( 1. / ( sqrt( EvtConst::pi ) * pF ) ) *
exp( -( 1. / 4. ) *
pow( pF * ( coeffs[3] /
( ( coeffs[1] - coeffs[2] ) *
( 1. - y / ( coeffs[1] - coeffs[2] ) ) ) ) -
( ( coeffs[1] - coeffs[2] ) / pF ) *
( 1. - y / ( coeffs[1] - coeffs[2] ) ),
2. ) ) /
coeffs[5];
}
diff --git a/src/EvtGenModels/EvtBtoXsgammaFixedMass.cpp b/src/EvtGenModels/EvtBtoXsgammaFixedMass.cpp
index 02366f6..d69f11e 100644
--- a/src/EvtGenModels/EvtBtoXsgammaFixedMass.cpp
+++ b/src/EvtGenModels/EvtBtoXsgammaFixedMass.cpp
@@ -1,56 +1,36 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtBtoXsgammaKagan.cc
-//
-// Description:
-// Routine to perform two-body B->Xs,gamma decays with a fixed hadronic
-// mass. For spectrum measurements.
-// The input parameters are 1: the hadronic mass
-
-// Modification history:
-//
-// Jim Libby October 11 2002
-//------------------------------------------------------------------------
-//
-
#include "EvtGenModels/EvtBtoXsgammaFixedMass.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtBtoXsgamma.hh"
#include <fstream>
#include <stdlib.h>
using std::endl;
using std::fstream;
void EvtBtoXsgammaFixedMass::init( int nArg, double* args )
{
if ( ( nArg ) > 2 || ( nArg > 1 && nArg < 2 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBtoXsgamma generator model "
<< "EvtBtoXsgammaFixedMass expected "
<< "either 1(default config) or two arguments but found: " << nArg
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( nArg == 1 ) {
_mH = 2.0;
} else {
_mH = args[1];
}
}
double EvtBtoXsgammaFixedMass::GetMass( int /*Xscode*/ )
{
return _mH;
}
diff --git a/src/EvtGenModels/EvtBtoXsgammaFlatEnergy.cpp b/src/EvtGenModels/EvtBtoXsgammaFlatEnergy.cpp
index dda3787..7e09d50 100644
--- a/src/EvtGenModels/EvtBtoXsgammaFlatEnergy.cpp
+++ b/src/EvtGenModels/EvtBtoXsgammaFlatEnergy.cpp
@@ -1,73 +1,55 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtBtoXsgammaKagan.cc
-//
-// Description:
-// Routine to perform two-body B->Xs,gamma decays with a fixed hadronic
-// mass. For spectrum measurements.
-// The input parameters are 1: the hadronic mass
-// Modification history:
-//
-// Jim Libby October 11 2002
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBtoXsgammaFlatEnergy.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtBtoXsgamma.hh"
#include <fstream>
#include <stdlib.h>
using std::endl;
using std::fstream;
void EvtBtoXsgammaFlatEnergy::init( int nArg, double* args )
{
if ( ( nArg ) > 3 || ( nArg > 1 && nArg < 3 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBtoXsgamma generator model "
<< "EvtBtoXsgammaFlatEnergy expected "
<< "either 1(default config) or two arguments but found: " << nArg
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
_mB0 = 5.2794;
double mPi = 0.140;
double mK = 0.494;
if ( nArg == 1 ) {
_eMin = 1.7;
//Invariant mass of Xsd must be greater the m_pi+m_K leads to
//Egamma < (m_B**2-(m_pi+m_k)**2)/(2m_B)
_eMax = ( pow( _mB0, 2 ) - pow( mPi + mK, 2 ) ) / ( 2.0 * _mB0 );
} else {
_eMin = args[1];
_eMax = args[2];
}
if ( _eMax > ( pow( _mB0, 2 ) - pow( mPi + mK, 2 ) ) / ( 2.0 * _mB0 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Emax greater than Kinematic limit" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Reset to the kinematic limit" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "(m_B**2-(m_pi+m_k)**2)/(2m_B)" << endl;
_eMax = ( pow( _mB0, 2 ) - pow( mPi + mK, 2 ) ) / ( 2.0 * _mB0 );
}
_eRange = _eMax - _eMin;
}
double EvtBtoXsgammaFlatEnergy::GetMass( int /*Xscode*/ )
{
double eGamma = EvtRandom::Flat( _eRange ) + _eMin;
double mH = sqrt( pow( _mB0, 2 ) - 2.0 * _mB0 * eGamma );
return mH;
}
diff --git a/src/EvtGenModels/EvtBtoXsgammaKagan.cpp b/src/EvtGenModels/EvtBtoXsgammaKagan.cpp
index 8470078..3b450aa 100644
--- a/src/EvtGenModels/EvtBtoXsgammaKagan.cpp
+++ b/src/EvtGenModels/EvtBtoXsgammaKagan.cpp
@@ -1,875 +1,845 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtBtoXsgammaKagan.cc
-//
-// Description:
-// Routine to perform two-body non-resonant B->Xs,gamma decays.
-// The X_s mass spectrum generated is based on the Kagan-Neubert model.
-// See hep-ph/9805303 for the model details and input parameters.
-//
-// The input parameters are 1:fermi_model, 2:mB, 3:mb, 4:mu, 5:lam1,
-// 6:delta, 7:z, 8:nIntervalS, 9:nIntervalmH. Choosing fermi_model=1
-// uses an exponential shape function, fermi_model=2 uses a gaussian
-// shape function and fermi_model=3 a roman shape function. The complete mass
-// spectrum for a given set of input parameters is calculated from
-// scratch in bins of nIntervalmH. The s22, s27 and s28 coefficients are calculated
-// in bins of nIntervalS. As the program includes lots of integration, the
-// theoretical hadronic mass spectra is computed for the first time
-// the init method is called. Then, all the other times (eg if we want to decay a B0
-// as well as an anti-B0) the vector mass info stored the first time is used again.
-//
-// Modification history:
-//
-// Jane Tinslay, Francesca Di Lodovico March 21, 2001 Module created
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBtoXsgammaKagan.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtBtoXsgamma.hh"
#include "EvtGenModels/EvtBtoXsgammaFermiUtil.hh"
#include "EvtGenModels/EvtItgAbsIntegrator.hh"
#include "EvtGenModels/EvtItgFourCoeffFcn.hh"
#include "EvtGenModels/EvtItgFunction.hh"
#include "EvtGenModels/EvtItgPtrFunction.hh"
#include "EvtGenModels/EvtItgSimpsonIntegrator.hh"
#include "EvtGenModels/EvtItgThreeCoeffFcn.hh"
#include "EvtGenModels/EvtItgTwoCoeffFcn.hh"
#include <fstream>
#include <stdlib.h>
#include <string>
using std::endl;
using std::fstream;
bool EvtBtoXsgammaKagan::bbprod = false;
double EvtBtoXsgammaKagan::intervalMH = 0;
void EvtBtoXsgammaKagan::init( int nArg, double* args )
{
if ( ( nArg ) > 12 || ( nArg > 1 && nArg < 10 ) || nArg == 11 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtBtoXsgamma generator model "
<< "EvtBtoXsgammaKagan expected "
<< "either 1(default config) or "
<< "10 (default mass range) or "
<< "12 (user range) arguments but found: " << nArg << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( nArg == 1 ) {
bbprod = true;
getDefaultHadronicMass();
} else {
bbprod = false;
computeHadronicMass( nArg, args );
}
double mHminLimit = 0.6373;
double mHmaxLimit = 4.5;
if ( nArg > 10 ) {
_mHmin = args[10];
_mHmax = args[11];
if ( _mHmin > _mHmax ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Minimum hadronic mass exceeds maximum " << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( _mHmin < mHminLimit ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Minimum hadronic mass below K pi threshold" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Resetting to K pi threshold" << endl;
_mHmin = mHminLimit;
}
if ( _mHmax > mHmaxLimit ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Maximum hadronic mass above 4.5 GeV/c^2" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Resetting to 4.5 GeV/c^2" << endl;
_mHmax = mHmaxLimit;
}
} else {
_mHmin = mHminLimit; // usually just above K pi threshold for Xsd/u
_mHmax = mHmaxLimit;
}
}
void EvtBtoXsgammaKagan::getDefaultHadronicMass()
{
massHad = {0, 0.0625995, 0.125199, 0.187798, 0.250398, 0.312997,
0.375597, 0.438196, 0.500796, 0.563395, 0.625995, 0.688594,
0.751194, 0.813793, 0.876392, 0.938992, 1.00159, 1.06419,
1.12679, 1.18939, 1.25199, 1.31459, 1.37719, 1.43979,
1.50239, 1.56499, 1.62759, 1.69019, 1.75278, 1.81538,
1.87798, 1.94058, 2.00318, 2.06578, 2.12838, 2.19098,
2.25358, 2.31618, 2.37878, 2.44138, 2.50398, 2.56658,
2.62918, 2.69178, 2.75438, 2.81698, 2.87958, 2.94217,
3.00477, 3.06737, 3.12997, 3.19257, 3.25517, 3.31777,
3.38037, 3.44297, 3.50557, 3.56817, 3.63077, 3.69337,
3.75597, 3.81857, 3.88117, 3.94377, 4.00637, 4.06896,
4.13156, 4.19416, 4.25676, 4.31936, 4.38196, 4.44456,
4.50716, 4.56976, 4.63236, 4.69496, 4.75756, 4.82016,
4.88276, 4.94536, 5.00796};
brHad = {0, 1.03244e-09, 3.0239e-08, 1.99815e-07, 7.29392e-07,
1.93129e-06, 4.17806e-06, 7.86021e-06, 1.33421e-05, 2.09196e-05,
3.07815e-05, 4.29854e-05, 5.74406e-05, 7.3906e-05, 9.2003e-05,
0.000111223, 0.000130977, 0.000150618, 0.000169483, 0.000186934,
0.000202392, 0.000215366, 0.000225491, 0.000232496, 0.000236274,
0.000236835, 0.000234313, 0.000228942, 0.000221042, 0.000210994,
0.000199215, 0.000186137, 0.000172194, 0.000157775, 0.000143255,
0.000128952, 0.000115133, 0.000102012, 8.97451e-05, 7.84384e-05,
6.81519e-05, 5.89048e-05, 5.06851e-05, 4.34515e-05, 3.71506e-05,
3.1702e-05, 2.70124e-05, 2.30588e-05, 1.96951e-05, 1.68596e-05,
1.44909e-05, 1.25102e-05, 1.08596e-05, 9.48476e-06, 8.34013e-06,
7.38477e-06, 6.58627e-06, 5.91541e-06, 5.35022e-06, 4.87047e-06,
4.46249e-06, 4.11032e-06, 3.80543e-06, 3.54051e-06, 3.30967e-06,
3.10848e-06, 2.93254e-06, 2.78369e-06, 2.65823e-06, 2.55747e-06,
2.51068e-06, 2.57179e-06, 2.74684e-06, 3.02719e-06, 3.41182e-06,
3.91387e-06, 4.56248e-06, 5.40862e-06, 6.53915e-06, 8.10867e-06,
1.04167e-05};
massHad.resize( 81 );
brHad.resize( 81 );
intervalMH = 80;
}
void EvtBtoXsgammaKagan::computeHadronicMass( int /*nArg*/, double* args )
{
//Input parameters
int fermiFunction = (int)args[1];
_mB = args[2];
_mb = args[3];
_mu = args[4];
_lam1 = args[5];
_delta = args[6];
_z = args[7];
_nIntervalS = args[8];
_nIntervalmH = args[9];
std::vector<double> mHVect( int( _nIntervalmH + 1.0 ) );
massHad.clear();
massHad.resize( int( _nIntervalmH + 1.0 ) );
brHad.clear();
brHad.resize( int( _nIntervalmH + 1.0 ) );
intervalMH = _nIntervalmH;
//Going to have to add a new entry into the data file - takes ages...
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "EvtBtoXsgammaKagan: calculating new hadronic mass spectra. This takes a while..."
<< endl;
//Now need to compute the mHVect vector for
//the current parameters
//A few more parameters
double _mubar = _mu;
_mW = 80.33;
_mt = 175.0;
_alpha = 1. / 137.036;
_lambdabar = _mB - _mb;
_kappabar = 3.382 - 4.14 * ( sqrt( _z ) - 0.29 );
_fz = Fz( _z );
_rer8 = ( 44. / 9. ) - ( 8. / 27. ) * pow( EvtConst::pi, 2. );
_r7 = ( -10. / 3. ) - ( 8. / 9. ) * pow( EvtConst::pi, 2. );
_rer2 = -4.092 + 12.78 * ( sqrt( _z ) - .29 );
_gam77 = 32. / 3.;
_gam27 = 416. / 81.;
_gam87 = -32. / 9.;
_lam2 = .12;
_beta0 = 23. / 3.;
_beta1 = 116. / 3.;
_alphasmZ = .118;
_mZ = 91.187;
_ms = _mb / 50.;
double eGammaMin = 0.5 * _mB * ( 1. - _delta );
double eGammaMax = 0.5 * _mB;
double yMin = 2. * eGammaMin / _mB;
double yMax = 2. * eGammaMax / _mB;
double _CKMrat = 0.976;
double Nsl = 1.0;
//Calculate alpha the various scales
_alphasmW = CalcAlphaS( _mW );
_alphasmt = CalcAlphaS( _mt );
_alphasmu = CalcAlphaS( _mu );
_alphasmubar = CalcAlphaS( _mubar );
//Calculate the Wilson Coefficients and Delta
_etamu = _alphasmW / _alphasmu;
_kSLemmu = ( 12. / 23. ) * ( ( 1. / _etamu ) - 1. );
CalcWilsonCoeffs();
CalcDelta();
//Build s22 and s27 vector - saves time because double
//integration is required otherwise
std::vector<double> s22Coeffs( int( _nIntervalS + 1.0 ) );
std::vector<double> s27Coeffs( int( _nIntervalS + 1.0 ) );
std::vector<double> s28Coeffs( int( _nIntervalS + 1.0 ) );
double dy = ( yMax - yMin ) / _nIntervalS;
double yp = yMin;
std::vector<double> sCoeffs( 1 );
sCoeffs[0] = _z;
//Define s22 and s27 functions
auto mys22Func = EvtItgPtrFunction{&s22Func, 0., yMax + 0.1, sCoeffs};
auto mys27Func = EvtItgPtrFunction{&s27Func, 0., yMax + 0.1, sCoeffs};
//Use a simpson integrator
auto mys22Simp = EvtItgSimpsonIntegrator{mys22Func, 1.0e-4, 20};
auto mys27Simp = EvtItgSimpsonIntegrator{mys27Func, 1.0e-4, 50};
int i;
for ( i = 0; i < int( _nIntervalS + 1.0 ); i++ ) {
s22Coeffs[i] = ( 16. / 27. ) * mys22Simp.evaluate( 1.0e-20, yp );
s27Coeffs[i] = ( -8. / 9. ) * _z * mys27Simp.evaluate( 1.0e-20, yp );
s28Coeffs[i] = -s27Coeffs[i] / 3.;
yp = yp + dy;
}
//Define functions and vectors used to calculate mHVect. Each function takes a set
//of vectors which are used as the function coefficients
std::vector<double> FermiCoeffs( 6 );
std::vector<double> varCoeffs( 3 );
std::vector<double> DeltaCoeffs( 1 );
std::vector<double> s88Coeffs( 2 );
std::vector<double> sInitCoeffs( 3 );
varCoeffs[0] = _mB;
varCoeffs[1] = _mb;
varCoeffs[2] = 0.;
DeltaCoeffs[0] = _alphasmu;
s88Coeffs[0] = _mb;
s88Coeffs[1] = _ms;
sInitCoeffs[0] = _nIntervalS;
sInitCoeffs[1] = yMin;
sInitCoeffs[2] = yMax;
FermiCoeffs[0] = fermiFunction;
FermiCoeffs[1] = 0.0;
FermiCoeffs[2] = 0.0;
FermiCoeffs[3] = 0.0;
FermiCoeffs[4] = 0.0;
FermiCoeffs[5] = 0.0;
//Coefficients for gamma function
std::vector<double> gammaCoeffs( 6 );
gammaCoeffs[0] = 76.18009172947146;
gammaCoeffs[1] = -86.50532032941677;
gammaCoeffs[2] = 24.01409824083091;
gammaCoeffs[3] = -1.231739572450155;
gammaCoeffs[4] = 0.1208650973866179e-2;
gammaCoeffs[5] = -0.5395239384953e-5;
//Calculate quantities for the fermi function to be used
//Distinguish among the different shape functions
if ( fermiFunction == 1 ) {
FermiCoeffs[1] = _lambdabar;
FermiCoeffs[2] = ( -3. * pow( _lambdabar, 2. ) / _lam1 ) - 1.;
FermiCoeffs[3] = _lam1;
FermiCoeffs[4] = 1.0;
auto myNormFunc = std::make_unique<EvtItgPtrFunction>(
&EvtBtoXsgammaFermiUtil::FermiExpFunc, -_mb, _mB - _mb, FermiCoeffs );
auto myNormSimp =
std::make_unique<EvtItgSimpsonIntegrator>( *myNormFunc, 1.0e-4, 40 );
FermiCoeffs[4] = myNormSimp->normalisation();
} else if ( fermiFunction == 2 ) {
double a = EvtBtoXsgammaFermiUtil::FermiGaussFuncRoot( _lambdabar, _lam1,
_mb, gammaCoeffs );
FermiCoeffs[1] = _lambdabar;
FermiCoeffs[2] = a;
FermiCoeffs[3] =
EvtBtoXsgammaFermiUtil::Gamma( ( 2.0 + a ) / 2., gammaCoeffs ) /
EvtBtoXsgammaFermiUtil::Gamma( ( 1.0 + a ) / 2., gammaCoeffs );
FermiCoeffs[4] = 1.0;
auto myNormFunc = std::make_unique<EvtItgPtrFunction>(
&EvtBtoXsgammaFermiUtil::FermiGaussFunc, -_mb, _mB - _mb,
FermiCoeffs );
auto myNormSimp =
std::make_unique<EvtItgSimpsonIntegrator>( *myNormFunc, 1.0e-4, 40 );
FermiCoeffs[4] = myNormSimp->normalisation();
} else if ( fermiFunction == 3 ) {
double rho = EvtBtoXsgammaFermiUtil::FermiRomanFuncRoot( _lambdabar,
_lam1 );
FermiCoeffs[1] = _mB;
FermiCoeffs[2] = _mb;
FermiCoeffs[3] = rho;
FermiCoeffs[4] = _lambdabar;
FermiCoeffs[5] = 1.0;
auto myNormFunc = std::make_unique<EvtItgPtrFunction>(
&EvtBtoXsgammaFermiUtil::FermiRomanFunc, -_mb, _mB - _mb,
FermiCoeffs );
auto myNormSimp =
std::make_unique<EvtItgSimpsonIntegrator>( *myNormFunc, 1.0e-4, 40 );
FermiCoeffs[5] = myNormSimp->normalisation();
}
//Define functions
auto myDeltaFermiFunc = EvtItgThreeCoeffFcn{&DeltaFermiFunc, -_mb,
_mB - _mb, FermiCoeffs,
varCoeffs, DeltaCoeffs};
auto mys88FermiFunc = EvtItgThreeCoeffFcn{&s88FermiFunc, -_mb,
_mB - _mb, FermiCoeffs,
varCoeffs, s88Coeffs};
auto mys77FermiFunc = EvtItgTwoCoeffFcn{&s77FermiFunc, -_mb, _mB - _mb,
FermiCoeffs, varCoeffs};
auto mys78FermiFunc = EvtItgTwoCoeffFcn{&s78FermiFunc, -_mb, _mB - _mb,
FermiCoeffs, varCoeffs};
auto mys22FermiFunc = EvtItgFourCoeffFcn{&sFermiFunc, -_mb,
_mB - _mb, FermiCoeffs,
varCoeffs, sInitCoeffs,
s22Coeffs};
auto mys27FermiFunc = EvtItgFourCoeffFcn{&sFermiFunc, -_mb,
_mB - _mb, FermiCoeffs,
varCoeffs, sInitCoeffs,
s27Coeffs};
auto mys28FermiFunc = EvtItgFourCoeffFcn{&sFermiFunc, -_mb,
_mB - _mb, FermiCoeffs,
varCoeffs, sInitCoeffs,
s28Coeffs};
//Define integrators
auto myDeltaFermiSimp = EvtItgSimpsonIntegrator{myDeltaFermiFunc, 1.0e-4, 40};
auto mys77FermiSimp = EvtItgSimpsonIntegrator{mys77FermiFunc, 1.0e-4, 40};
auto mys88FermiSimp = EvtItgSimpsonIntegrator{mys88FermiFunc, 1.0e-4, 40};
auto mys78FermiSimp = EvtItgSimpsonIntegrator{mys78FermiFunc, 1.0e-4, 40};
auto mys22FermiSimp = EvtItgSimpsonIntegrator{mys22FermiFunc, 1.0e-4, 40};
auto mys27FermiSimp = EvtItgSimpsonIntegrator{mys27FermiFunc, 1.0e-4, 40};
auto mys28FermiSimp = EvtItgSimpsonIntegrator{mys28FermiFunc, 1.0e-4, 40};
//Finally calculate mHVect for the range of hadronic masses
double mHmin = sqrt( _mB * _mB - 2. * _mB * eGammaMax );
double mHmax = sqrt( _mB * _mB - 2. * _mB * eGammaMin );
double dmH = ( mHmax - mHmin ) / _nIntervalmH;
double mH = mHmin;
//Calculating the Branching Fractions
for ( i = 0; i < int( _nIntervalmH + 1.0 ); i++ ) {
double ymH = 1. - ( ( mH * mH ) / ( _mB * _mB ) );
//Need to set ymH as one of the input parameters
myDeltaFermiFunc.setCoeff( 2, 2, ymH );
mys77FermiFunc.setCoeff( 2, 2, ymH );
mys88FermiFunc.setCoeff( 2, 2, ymH );
mys78FermiFunc.setCoeff( 2, 2, ymH );
mys22FermiFunc.setCoeff( 2, 2, ymH );
mys27FermiFunc.setCoeff( 2, 2, ymH );
mys28FermiFunc.setCoeff( 2, 2, ymH );
//Integrate
double deltaResult = myDeltaFermiSimp.evaluate( ( _mB * ymH - _mb ),
_mB - _mb );
double s77Result = mys77FermiSimp.evaluate( ( _mB * ymH - _mb ),
_mB - _mb );
double s88Result = mys88FermiSimp.evaluate( ( _mB * ymH - _mb ),
_mB - _mb );
double s78Result = mys78FermiSimp.evaluate( ( _mB * ymH - _mb ),
_mB - _mb );
double s22Result = mys22FermiSimp.evaluate( ( _mB * ymH - _mb ),
_mB - _mb );
double s27Result = mys27FermiSimp.evaluate( ( _mB * ymH - _mb ),
_mB - _mb );
mys28FermiSimp.evaluate( ( _mB * ymH - _mb ), _mB - _mb );
double py =
( pow( _CKMrat, 2. ) * ( 6. / _fz ) * ( _alpha / EvtConst::pi ) *
( deltaResult * _cDeltatot +
( _alphasmu / EvtConst::pi ) *
( s77Result * pow( _c70mu, 2. ) +
s27Result * _c2mu * ( _c70mu - _c80mu / 3. ) +
s78Result * _c70mu * _c80mu + s22Result * _c2mu * _c2mu +
s88Result * _c80mu * _c80mu ) ) );
mHVect[i] = 2. * ( mH / ( _mB * _mB ) ) * 0.105 * Nsl * py;
massHad[i] = mH;
brHad[i] = 2. * ( mH / ( _mB * _mB ) ) * 0.105 * Nsl * py;
mH = mH + dmH;
}
}
double EvtBtoXsgammaKagan::GetMass( int /*Xscode*/ )
{
// Get hadronic mass for the event according to the hadronic mass spectra computed in computeHadronicMass
double mass = 0.0;
double min = _mHmin;
if ( bbprod )
min = 1.1;
// double max=4.5;
double max = _mHmax;
double xbox( 0 ), ybox( 0 );
double boxheight( 0 );
double trueHeight( 0 );
double boxwidth = max - min;
double wgt( 0. );
for ( int i = 0; i < int( intervalMH + 1.0 ); i++ ) {
if ( brHad[i] > boxheight )
boxheight = brHad[i];
}
while ( ( mass > max ) || ( mass < min ) ) {
xbox = EvtRandom::Flat( boxwidth ) + min;
ybox = EvtRandom::Flat( boxheight );
trueHeight = 0.0;
// Correction by Peter Richardson
for ( int i = 1; i < int( intervalMH + 1.0 ); ++i ) {
if ( ( massHad[i] >= xbox ) && ( 0.0 == trueHeight ) ) {
wgt = ( xbox - massHad[i - 1] ) / ( massHad[i] - massHad[i - 1] );
trueHeight = brHad[i - 1] + wgt * ( brHad[i] - brHad[i - 1] );
}
}
if ( ybox > trueHeight ) {
mass = 0.0;
} else {
mass = xbox;
}
}
return mass;
}
double EvtBtoXsgammaKagan::CalcAlphaS( double scale )
{
double v = 1. - _beta0 * ( _alphasmZ / ( 2. * EvtConst::pi ) ) *
( log( _mZ / scale ) );
return ( _alphasmZ / v ) *
( 1. - ( ( _beta1 / _beta0 ) *
( _alphasmZ / ( 4. * EvtConst::pi ) ) * ( log( v ) / v ) ) );
}
void EvtBtoXsgammaKagan::CalcWilsonCoeffs()
{
double mtatmw = _mt * pow( ( _alphasmW / _alphasmt ), ( 12. / 23. ) ) *
( 1 +
( 12. / 23. ) * ( ( 253. / 18. ) - ( 116. / 23. ) ) *
( ( _alphasmW - _alphasmt ) / ( 4.0 * EvtConst::pi ) ) -
( 4. / 3. ) * ( _alphasmt / EvtConst::pi ) );
double xt = pow( mtatmw, 2. ) / pow( _mW, 2. );
/////LO
_c2mu = .5 * pow( _etamu, ( -12. / 23. ) ) + .5 * pow( _etamu, ( 6. / 23. ) );
double c7mWsm = ( ( 3. * pow( xt, 3. ) - 2. * pow( xt, 2. ) ) /
( 4. * pow( ( xt - 1. ), 4. ) ) ) *
log( xt ) +
( ( -8. * pow( xt, 3. ) - 5. * pow( xt, 2. ) + 7. * xt ) /
( 24. * pow( ( xt - 1. ), 3. ) ) );
double c8mWsm = ( ( -3. * pow( xt, 2. ) ) / ( 4. * pow( ( xt - 1. ), 4. ) ) ) *
log( xt ) +
( ( -pow( xt, 3. ) + 5. * pow( xt, 2. ) + 2. * xt ) /
( 8. * pow( ( xt - 1. ), 3. ) ) );
double c7constmu = ( 626126. / 272277. ) * pow( _etamu, ( 14. / 23. ) ) -
( 56281. / 51730. ) * pow( _etamu, ( 16. / 23. ) ) -
( 3. / 7. ) * pow( _etamu, ( 6. / 23. ) ) -
( 1. / 14. ) * pow( _etamu, ( -12. / 23. ) ) -
.6494 * pow( _etamu, .4086 ) -
.038 * pow( _etamu, -.423 ) -
.0186 * pow( _etamu, -.8994 ) -
.0057 * pow( _etamu, .1456 );
_c70mu = c7mWsm * pow( _etamu, ( 16. / 23. ) ) +
( 8. / 3. ) *
( pow( _etamu, ( 14. / 23. ) ) - pow( _etamu, ( 16. / 23. ) ) ) *
c8mWsm +
c7constmu;
double c8constmu = ( 313063. / 363036. ) * pow( _etamu, ( 14. / 23. ) ) -
.9135 * pow( _etamu, .4086 ) +
.0873 * pow( _etamu, -.423 ) -
.0571 * pow( _etamu, -.8994 ) +
.0209 * pow( _etamu, .1456 );
_c80mu = c8mWsm * pow( _etamu, ( 14. / 23. ) ) + c8constmu;
//Compute the dilogarithm (PolyLog(2,x)) with the Simpson integrator
//The dilogarithm is defined as: Li_2(x)=Int_0^x(-log(1.-z)/z)
//however, Mathematica implements it as Sum[z^k/k^2,{k,1,Infinity}], so, althought the two
//results are similar and both implemented in the program, we prefer to use the
//one closer to the Mathematica implementation as identical to what used by the theorists.
// EvtItgFunction *myDiLogFunc = new EvtItgFunction(&diLogFunc, 0., 1.-1./xt);
//EvtItgAbsIntegrator *myDiLogSimp = new EvtItgSimpsonIntegrator(*myDiLogFunc, 1.0e-4, 50);
//double li2 = myDiLogSimp->evaluate(1.0e-20,1.-1./xt);
double li2 = diLogMathematica( 1. - 1. / xt );
double c7mWsm1 =
( ( -16. * pow( xt, 4. ) - 122. * pow( xt, 3. ) + 80. * pow( xt, 2. ) -
8. * xt ) /
( 9. * pow( ( xt - 1. ), 4. ) ) * li2 +
( 6. * pow( xt, 4. ) + 46. * pow( xt, 3. ) - 28. * pow( xt, 2. ) ) /
( 3. * pow( ( xt - 1. ), 5. ) ) * pow( log( xt ), 2. ) +
( -102. * pow( xt, 5. ) - 588. * pow( xt, 4. ) -
2262. * pow( xt, 3. ) + 3244. * pow( xt, 2. ) - 1364. * xt + 208. ) /
( 81. * pow( ( xt - 1 ), 5. ) ) * log( xt ) +
( 1646. * pow( xt, 4. ) + 12205. * pow( xt, 3. ) -
10740. * pow( xt, 2. ) + 2509. * xt - 436. ) /
( 486. * pow( ( xt - 1 ), 4. ) ) );
double c8mWsm1 =
( ( -4. * pow( xt, 4. ) + 40. * pow( xt, 3. ) + 41. * pow( xt, 2. ) + xt ) /
( 6. * pow( ( xt - 1. ), 4. ) ) * li2 +
( -17. * pow( xt, 3. ) - 31. * pow( xt, 2. ) ) /
( 2. * pow( ( xt - 1. ), 5. ) ) * pow( log( xt ), 2. ) +
( -210. * pow( xt, 5. ) + 1086. * pow( xt, 4. ) +
4893. * pow( xt, 3. ) + 2857. * pow( xt, 2. ) - 1994. * xt + 280. ) /
( 216. * pow( ( xt - 1 ), 5. ) ) * log( xt ) +
( 737. * pow( xt, 4. ) - 14102. * pow( xt, 3. ) -
28209. * pow( xt, 2. ) + 610. * xt - 508. ) /
( 1296. * pow( ( xt - 1 ), 4. ) ) );
double E1 = ( xt * ( 18. - 11. * xt - pow( xt, 2. ) ) /
( 12. * pow( ( 1. - xt ), 3. ) ) +
pow( xt, 2. ) * ( 15. - 16. * xt + 4. * pow( xt, 2. ) ) /
( 6. * pow( ( 1. - xt ), 4. ) ) * log( xt ) -
2. / 3. * log( xt ) );
double e1 = 4661194. / 816831.;
double e2 = -8516. / 2217.;
double e3 = 0.;
double e4 = 0.;
double e5 = -1.9043;
double e6 = -.1008;
double e7 = .1216;
double e8 = .0183;
double f1 = -17.3023;
double f2 = 8.5027;
double f3 = 4.5508;
double f4 = .7519;
double f5 = 2.004;
double f6 = .7476;
double f7 = -.5385;
double f8 = .0914;
double g1 = 14.8088;
double g2 = -10.809;
double g3 = -.874;
double g4 = .4218;
double g5 = -2.9347;
double g6 = .3971;
double g7 = .1600;
double g8 = .0225;
double c71constmu =
( ( e1 * _etamu * E1 + f1 + g1 * _etamu ) * pow( _etamu, ( 14. / 23. ) ) +
( e2 * _etamu * E1 + f2 + g2 * _etamu ) * pow( _etamu, ( 16. / 23. ) ) +
( e3 * _etamu * E1 + f3 + g3 * _etamu ) * pow( _etamu, ( 6. / 23. ) ) +
( e4 * _etamu * E1 + f4 + g4 * _etamu ) * pow( _etamu, ( -12. / 23. ) ) +
( e5 * _etamu * E1 + f5 + g5 * _etamu ) * pow( _etamu, .4086 ) +
( e6 * _etamu * E1 + f6 + g6 * _etamu ) * pow( _etamu, ( -.423 ) ) +
( e7 * _etamu * E1 + f7 + g7 * _etamu ) * pow( _etamu, ( -.8994 ) ) +
( e8 * _etamu * E1 + f8 + g8 * _etamu ) * pow( _etamu, .1456 ) );
double c71pmu =
( ( ( 297664. / 14283. * pow( _etamu, ( 16. / 23. ) ) -
7164416. / 357075. * pow( _etamu, ( 14. / 23. ) ) +
256868. / 14283. * pow( _etamu, ( 37. / 23. ) ) -
6698884. / 357075. * pow( _etamu, ( 39. / 23. ) ) ) *
( c8mWsm ) ) +
37208. / 4761. *
( pow( _etamu, ( 39. / 23. ) ) - pow( _etamu, ( 16. / 23. ) ) ) *
( c7mWsm ) +
c71constmu );
_c71mu = ( _alphasmW / _alphasmu *
( pow( _etamu, ( 16. / 23. ) ) * c7mWsm1 +
8. / 3. *
( pow( _etamu, ( 14. / 23. ) ) -
pow( _etamu, ( 16. / 23. ) ) ) *
c8mWsm1 ) +
c71pmu );
_c7emmu = ( ( 32. / 75. * pow( _etamu, ( -9. / 23. ) ) -
40. / 69. * pow( _etamu, ( -7. / 23. ) ) +
88. / 575. * pow( _etamu, ( 16. / 23. ) ) ) *
c7mWsm +
( -32. / 575. * pow( _etamu, ( -9. / 23. ) ) +
32. / 1449. * pow( _etamu, ( -7. / 23. ) ) +
640. / 1449. * pow( _etamu, ( 14. / 23. ) ) -
704. / 1725. * pow( _etamu, ( 16. / 23. ) ) ) *
c8mWsm -
190. / 8073. * pow( _etamu, ( -35. / 23. ) ) -
359. / 3105. * pow( _etamu, ( -17. / 23. ) ) +
4276. / 121095. * pow( _etamu, ( -12. / 23. ) ) +
350531. / 1009125. * pow( _etamu, ( -9. / 23. ) ) +
2. / 4347. * pow( _etamu, ( -7. / 23. ) ) -
5956. / 15525. * pow( _etamu, ( 6. / 23. ) ) +
38380. / 169533. * pow( _etamu, ( 14. / 23. ) ) -
748. / 8625. * pow( _etamu, ( 16. / 23. ) ) );
// Wilson coefficients values as according to Kagan's program
// _c2mu=1.10566;
//_c70mu=-0.314292;
// _c80mu=-0.148954;
// _c71mu=0.480964;
// _c7emmu=0.0323219;
}
void EvtBtoXsgammaKagan::CalcDelta()
{
double cDelta77 = ( 1. +
( _alphasmu / ( 2. * EvtConst::pi ) ) *
( _r7 - ( 16. / 3. ) + _gam77 * log( _mb / _mu ) ) +
( ( pow( ( 1. - _z ), 4. ) / _fz ) - 1. ) *
( 6. * _lam2 / pow( _mb, 2. ) ) +
( _alphasmubar / ( 2. * EvtConst::pi ) ) * _kappabar ) *
pow( _c70mu, 2. );
double cDelta27 = ( ( _alphasmu / ( 2. * EvtConst::pi ) ) *
( _rer2 + _gam27 * log( _mb / _mu ) ) -
( _lam2 / ( 9. * _z * pow( _mb, 2. ) ) ) ) *
_c2mu * _c70mu;
double cDelta78 = ( _alphasmu / ( 2. * EvtConst::pi ) ) *
( _rer8 + _gam87 * log( _mb / _mu ) ) * _c70mu * _c80mu;
_cDeltatot = cDelta77 + cDelta27 + cDelta78 +
( _alphasmu / ( 2. * EvtConst::pi ) ) * _c71mu * _c70mu +
( _alpha / _alphasmu ) *
( 2. * _c7emmu * _c70mu - _kSLemmu * pow( _c70mu, 2. ) );
}
double EvtBtoXsgammaKagan::Delta( double y, double alphasMu )
{
//Fix for singularity at endpoint
if ( y >= 1.0 )
y = 0.9999999999;
return ( -4. * ( alphasMu / ( 3. * EvtConst::pi * ( 1. - y ) ) ) *
( log( 1. - y ) + 7. / 4. ) *
exp( -2. * ( alphasMu / ( 3. * EvtConst::pi ) ) *
( pow( log( 1. - y ), 2 ) + ( 7. / 2. ) * log( 1. - y ) ) ) );
}
double EvtBtoXsgammaKagan::s77( double y )
{
//Fix for singularity at endpoint
if ( y >= 1.0 )
y = 0.9999999999;
return ( ( 1. / 3. ) *
( 7. + y - 2. * pow( y, 2 ) - 2. * ( 1. + y ) * log( 1. - y ) ) );
}
double EvtBtoXsgammaKagan::s88( double y, double mb, double ms )
{
//Fix for singularity at endpoint
if ( y >= 1.0 )
y = 0.9999999999;
return ( ( 1. / 27. ) * ( ( 2. * ( 2. - 2. * y + pow( y, 2 ) ) / y ) *
( log( 1. - y ) + 2. * log( mb / ms ) ) -
2. * pow( y, 2 ) - y - 8. * ( ( 1. - y ) / y ) ) );
}
double EvtBtoXsgammaKagan::s78( double y )
{
//Fix for singularity at endpoint
if ( y >= 1.0 )
y = 0.9999999999;
return ( ( 8. / 9. ) * ( ( ( 1. - y ) / y ) * log( 1. - y ) + 1. +
( pow( y, 2 ) / 4. ) ) );
}
double EvtBtoXsgammaKagan::ReG( double y )
{
if ( y < 4. )
return -2. * pow( atan( sqrt( y / ( 4. - y ) ) ), 2. );
else {
return 2. * ( pow( log( ( sqrt( y ) + sqrt( y - 4. ) ) / 2. ), 2. ) ) -
( 1. / 2. ) * pow( EvtConst::pi, 2. );
}
}
double EvtBtoXsgammaKagan::ImG( double y )
{
if ( y < 4. )
return 0.0;
else {
return ( -2. * EvtConst::pi * log( ( sqrt( y ) + sqrt( y - 4. ) ) / 2. ) );
}
}
double EvtBtoXsgammaKagan::s22Func( double y, const std::vector<double>& coeffs )
{
//coeffs[0]=z
return ( 1. - y ) *
( ( pow( coeffs[0], 2. ) / pow( y, 2. ) ) *
( pow( ReG( y / coeffs[0] ), 2. ) +
pow( ImG( y / coeffs[0] ), 2. ) ) +
( coeffs[0] / y ) * ReG( y / coeffs[0] ) + ( 1. / 4. ) );
}
double EvtBtoXsgammaKagan::s27Func( double y, const std::vector<double>& coeffs )
{
//coeffs[0] = z
return ( ReG( y / coeffs[0] ) + y / ( 2. * coeffs[0] ) );
}
double EvtBtoXsgammaKagan::DeltaFermiFunc( double y,
const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2,
const std::vector<double>& coeffs3 )
{
//coeffs1=fermi function coeffs, coeffs2[0]=mB, coeffs2[1]=mb,
//coeffs2[2]=ymH, coeffs3[0]=DeltaCoeff (alphasmu)
return FermiFunc( y, coeffs1 ) * ( coeffs2[0] / ( coeffs2[1] + y ) ) *
Delta( ( coeffs2[0] * coeffs2[2] ) / ( coeffs2[1] + y ), coeffs3[0] );
}
double EvtBtoXsgammaKagan::s77FermiFunc( double y,
const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2 )
{
//coeffs1=fermi function coeffs, coeffs2[0]=mB, coeffs2[1]=mb,
//coeffs2[2]=ymH
return FermiFunc( y, coeffs1 ) * ( coeffs2[0] / ( coeffs2[1] + y ) ) *
s77( ( coeffs2[0] * coeffs2[2] ) / ( coeffs2[1] + y ) );
}
double EvtBtoXsgammaKagan::s88FermiFunc( double y,
const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2,
const std::vector<double>& coeffs3 )
{
//coeffs1=fermi function coeffs, coeffs2[0]=mB, coeffs2[1]=mb,
//coeffs2[2]=ymH, coeffs3=s88 coeffs
return FermiFunc( y, coeffs1 ) * ( coeffs2[0] / ( coeffs2[1] + y ) ) *
s88( ( coeffs2[0] * coeffs2[2] ) / ( coeffs2[1] + y ), coeffs3[0],
coeffs3[1] );
}
double EvtBtoXsgammaKagan::s78FermiFunc( double y,
const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2 )
{
//coeffs1=fermi function coeffs, coeffs2[0]=mB, coeffs2[1]=mb,
//coeffs2[2]=ymH
return FermiFunc( y, coeffs1 ) * ( coeffs2[0] / ( coeffs2[1] + y ) ) *
s78( ( coeffs2[0] * coeffs2[2] ) / ( coeffs2[1] + y ) );
}
double EvtBtoXsgammaKagan::sFermiFunc( double y,
const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2,
const std::vector<double>& coeffs3,
const std::vector<double>& coeffs4 )
{
//coeffs1=fermi function coeffs, coeffs2[0]=mB, coeffs2[1]=mb,
//coeffs2[2]=ymH, coeffs3[0]=nIntervals in s22 or s27 array, coeffs3[1]=yMin,
//coeffs3[2]=yMax, coeffs4=s22 or s27 array
return FermiFunc( y, coeffs1 ) * ( coeffs2[0] / ( coeffs2[1] + y ) ) *
GetArrayVal( coeffs2[0] * coeffs2[2] / ( coeffs2[1] + y ),
coeffs3[0], coeffs3[1], coeffs3[2], coeffs4 );
}
double EvtBtoXsgammaKagan::Fz( double z )
{
return ( 1. - 8. * z + 8. * pow( z, 3. ) - pow( z, 4. ) -
12. * pow( z, 2. ) * log( z ) );
}
double EvtBtoXsgammaKagan::GetArrayVal( double xp, double nInterval, double xMin,
double xMax, std::vector<double> array )
{
double dx = ( xMax - xMin ) / nInterval;
int bin1 = int( ( ( xp - xMin ) / ( xMax - xMin ) ) * nInterval );
double x1 = double( bin1 ) * dx + xMin;
if ( xp == x1 )
return array[bin1];
int bin2( 0 );
if ( xp > x1 ) {
bin2 = bin1 + 1;
} else if ( xp < x1 ) {
bin2 = bin1 - 1;
}
if ( bin1 <= 0 ) {
bin1 = 0;
bin2 = 1;
}
//If xp is in the last bin, always interpolate between the last two bins
if ( bin1 == (int)nInterval ) {
bin2 = (int)nInterval;
bin1 = (int)nInterval - 1;
x1 = double( bin1 ) * dx + xMin;
}
double x2 = double( bin2 ) * dx + xMin;
double y1 = array[bin1];
double y2 = array[bin2];
double m = ( y2 - y1 ) / ( x2 - x1 );
double c = y1 - m * x1;
double result = m * xp + c;
return result;
}
double EvtBtoXsgammaKagan::FermiFunc( double y, const std::vector<double>& coeffs )
{
//Fermi shape functions :1=exponential, 2=gaussian, 3=roman
if ( int( coeffs[0] ) == 1 )
return EvtBtoXsgammaFermiUtil::FermiExpFunc( y, coeffs );
if ( int( coeffs[0] ) == 2 )
return EvtBtoXsgammaFermiUtil::FermiGaussFunc( y, coeffs );
if ( int( coeffs[0] ) == 3 )
return EvtBtoXsgammaFermiUtil::FermiRomanFunc( y, coeffs );
return 1.;
}
double EvtBtoXsgammaKagan::diLogFunc( double y )
{
return -log( fabs( 1. - y ) ) / y;
}
double EvtBtoXsgammaKagan::diLogMathematica( double y )
{
double li2( 0 );
for ( int i = 1; i < 1000;
i++ ) { //the value 1000 should actually be Infinite...
li2 += pow( y, i ) / ( i * i );
}
return li2;
}
diff --git a/src/EvtGenModels/EvtBtoXsgammaRootFinder.cpp b/src/EvtGenModels/EvtBtoXsgammaRootFinder.cpp
index 9e3460f..e8a1ad6 100644
--- a/src/EvtGenModels/EvtBtoXsgammaRootFinder.cpp
+++ b/src/EvtGenModels/EvtBtoXsgammaRootFinder.cpp
@@ -1,211 +1,192 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtBtoXsgammaRootFinder.cc
-//
-// Description:
-// Root finders for EvtBtoXsgammaKagan module.
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module created
-//------------------------------------------------------------------------
#include "EvtGenModels/EvtBtoXsgammaRootFinder.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtItgSimpsonIntegrator.hh"
#include "EvtGenModels/EvtItgTwoCoeffFcn.hh"
#include <math.h>
using std::endl;
//-------------
// C Headers --
//-------------
extern "C" {
}
//-----------------------------------------------------------------------
// Local Macros, Typedefs, Structures, Unions and Forward Declarations --
//-----------------------------------------------------------------------
#define EVTITGROOTFINDER_MAXIT 100
#define EVTITGROOTFINDER_RELATIVEPRECISION 1.0e-16
double EvtBtoXsgammaRootFinder::GetRootSingleFunc(
const EvtItgAbsFunction* theFunc, double functionValue, double lowerValue,
double upperValue, double precision )
{
// Use the bisection to find the root.
// Iterates until find root to the accuracy of precision
double xLower = 0.0, xUpper = 0.0;
double root = 0;
double f1 = theFunc->value( lowerValue ) - functionValue;
double f2 = theFunc->value( upperValue ) - functionValue;
if ( f1 * f2 > 0.0 ) {
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "EvtBtoXsgammaRootFinder: No root in specified range !" << endl;
return 0;
}
// Already have root
if ( fabs( f1 ) < precision ) {
root = lowerValue;
return root;
}
if ( fabs( f2 ) < precision ) {
root = upperValue;
return root;
}
// Orient search so that f(xLower) < 0
if ( f1 < 0.0 ) {
xLower = lowerValue;
xUpper = upperValue;
} else {
xLower = upperValue;
xUpper = lowerValue;
}
double rootGuess = 0.5 * ( lowerValue + upperValue );
double dxold = fabs( upperValue - lowerValue );
double dx = dxold;
double f = theFunc->value( rootGuess ) - functionValue;
for ( int j = 0; j < EVTITGROOTFINDER_MAXIT; j++ ) {
dxold = dx;
dx = 0.5 * ( xUpper - xLower );
rootGuess = xLower + dx;
// If change in root is negligible, take it as solution.
if ( fabs( xLower - rootGuess ) < precision ) {
root = rootGuess;
return root;
}
f = theFunc->value( rootGuess ) - functionValue;
if ( f < 0.0 ) {
xLower = rootGuess;
} else {
xUpper = rootGuess;
}
}
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "EvtBtoXsgammaRootFinder: Maximum number of iterations "
<< "in EvtBtoXsgammaRootFinder::foundRoot exceeded!"
<< " Returning false." << endl;
return 0;
}
double EvtBtoXsgammaRootFinder::GetGaussIntegFcnRoot(
EvtItgAbsFunction* theFunc1, EvtItgAbsFunction* theFunc2,
double integ1Precision, double integ2Precision, int maxLoop1, int maxLoop2,
double integLower, double integUpper, double lowerValue, double upperValue,
double precision )
{
// Use the bisection to find the root.
// Iterates until find root to the accuracy of precision
//Need to work with integrators
auto func1Integ = EvtItgSimpsonIntegrator{*theFunc1, integ1Precision,
maxLoop1};
auto func2Integ = EvtItgSimpsonIntegrator{*theFunc2, integ2Precision,
maxLoop2};
//coefficient 1 of the integrators is the root to be found
//need to set this to lower value to start off with
theFunc1->setCoeff( 1, 0, lowerValue );
theFunc2->setCoeff( 1, 0, lowerValue );
double f1 = func1Integ.evaluate( integLower, integUpper ) -
theFunc2->getCoeff( 1, 2 ) *
func2Integ.evaluate( integLower, integUpper );
theFunc1->setCoeff( 1, 0, upperValue );
theFunc2->setCoeff( 1, 0, upperValue );
double f2 = func1Integ.evaluate( integLower, integUpper ) -
theFunc2->getCoeff( 1, 2 ) *
func2Integ.evaluate( integLower, integUpper );
double xLower = 0.0, xUpper = 0.0;
double root = 0;
if ( f1 * f2 > 0.0 ) {
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "EvtBtoXsgammaRootFinder: No root in specified range !" << endl;
return false;
}
// Already have root
if ( fabs( f1 ) < precision ) {
root = lowerValue;
return root;
}
if ( fabs( f2 ) < precision ) {
root = upperValue;
return root;
}
// Orient search so that f(xLower) < 0
if ( f1 < 0.0 ) {
xLower = lowerValue;
xUpper = upperValue;
} else {
xLower = upperValue;
xUpper = lowerValue;
}
double rootGuess = 0.5 * ( lowerValue + upperValue );
double dxold = fabs( upperValue - lowerValue );
double dx = dxold;
theFunc1->setCoeff( 1, 0, rootGuess );
theFunc2->setCoeff( 1, 0, rootGuess );
double f = func1Integ.evaluate( integLower, integUpper ) -
theFunc2->getCoeff( 1, 2 ) *
func2Integ.evaluate( integLower, integUpper );
for ( int j = 0; j < EVTITGROOTFINDER_MAXIT; j++ ) {
dxold = dx;
dx = 0.5 * ( xUpper - xLower );
rootGuess = xLower + dx;
// If change in root is negligible, take it as solution.
if ( fabs( xLower - rootGuess ) < precision ) {
root = rootGuess;
return root;
}
theFunc1->setCoeff( 1, 0, rootGuess );
theFunc2->setCoeff( 1, 0, rootGuess );
f = func1Integ.evaluate( integLower, integUpper ) -
theFunc2->getCoeff( 1, 2 ) *
func2Integ.evaluate( integLower, integUpper );
if ( f < 0.0 ) {
xLower = rootGuess;
} else {
xUpper = rootGuess;
}
}
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "EvtBtoXsgammaRootFinder: Maximum number of iterations "
<< "in EvtBtoXsgammaRootFinder::foundRoot exceeded!"
<< " Returning false." << endl;
return 0;
}
diff --git a/src/EvtGenModels/EvtBtoXsll.cpp b/src/EvtGenModels/EvtBtoXsll.cpp
index 2801aee..b7e9fb5 100644
--- a/src/EvtGenModels/EvtBtoXsll.cpp
+++ b/src/EvtGenModels/EvtBtoXsll.cpp
@@ -1,403 +1,382 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtBtoXsll.cc
-//
-// Description: Routine to generate non-resonant B -> Xs l+ l- decays.
-// It generates a dilepton mass spectrum according to Kruger and Sehgal
-// and then generates the two lepton momenta accoring to Ali et al.
-// The resultant X_s particles may be decayed by JETSET.
-//
-// Modification history:
-//
-// Stephane Willocq Jan 17, 2001 Module created
-// Stephane Willocq Jul 15, 2003 Input model parameters
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtBtoXsll.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtBtoXsllUtil.hh"
#include "EvtGenModels/EvtbTosllAmp.hh"
#include <stdlib.h>
using std::endl;
std::string EvtBtoXsll::getName()
{
return "BTOXSLL";
}
EvtDecayBase* EvtBtoXsll::clone()
{
return new EvtBtoXsll;
}
void EvtBtoXsll::init()
{
// check that there are no arguments
checkNArg( 0, 4, 5 );
checkNDaug( 3 );
// Check that the two leptons are the same type
EvtId lepton1type = getDaug( 1 );
EvtId lepton2type = getDaug( 2 );
int etyp = 0;
int mutyp = 0;
int tautyp = 0;
if ( lepton1type == EvtPDL::getId( "e+" ) ||
lepton1type == EvtPDL::getId( "e-" ) ) {
etyp++;
}
if ( lepton2type == EvtPDL::getId( "e+" ) ||
lepton2type == EvtPDL::getId( "e-" ) ) {
etyp++;
}
if ( lepton1type == EvtPDL::getId( "mu+" ) ||
lepton1type == EvtPDL::getId( "mu-" ) ) {
mutyp++;
}
if ( lepton2type == EvtPDL::getId( "mu+" ) ||
lepton2type == EvtPDL::getId( "mu-" ) ) {
mutyp++;
}
if ( lepton1type == EvtPDL::getId( "tau+" ) ||
lepton1type == EvtPDL::getId( "tau-" ) ) {
tautyp++;
}
if ( lepton2type == EvtPDL::getId( "tau+" ) ||
lepton2type == EvtPDL::getId( "tau-" ) ) {
tautyp++;
}
if ( etyp != 2 && mutyp != 2 && tautyp != 2 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Expect two leptons of the same type in EvtBtoXsll.cc\n";
::abort();
}
// Check that the second and third entries are leptons with positive
// and negative charge, respectively
int lpos = 0;
int lneg = 0;
if ( lepton1type == EvtPDL::getId( "e+" ) ||
lepton1type == EvtPDL::getId( "mu+" ) ||
lepton1type == EvtPDL::getId( "tau+" ) ) {
lpos++;
}
if ( lepton2type == EvtPDL::getId( "e-" ) ||
lepton2type == EvtPDL::getId( "mu-" ) ||
lepton2type == EvtPDL::getId( "tau-" ) ) {
lneg++;
}
if ( lpos != 1 || lneg != 1 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Expect 2nd and 3rd particles to be positive and negative leptons in EvtBtoXsll.cc\n";
::abort();
}
_mb = 4.8;
_ms = 0.2;
_mq = 0.;
_pf = 0.41;
_mxmin = 1.1;
if ( getNArg() == 4 ) {
// b-quark mass
_mb = getArg( 0 );
// s-quark mass
_ms = getArg( 1 );
// spectator quark mass
_mq = getArg( 2 );
// Fermi motion parameter
_pf = getArg( 3 );
}
if ( getNArg() == 5 ) {
_mxmin = getArg( 4 );
}
_calcprob = std::make_unique<EvtBtoXsllUtil>();
double ml = EvtPDL::getMeanMass( getDaug( 1 ) );
// determine the maximum probability density from dGdsProb
int i, j;
int nsteps = 100;
double s = 0.0;
double smin = 4.0 * ml * ml;
double smax = ( _mb - _ms ) * ( _mb - _ms );
double probMax = -10000.0;
double sProbMax = -10.0;
double uProbMax = -10.0;
for ( i = 0; i < nsteps; i++ ) {
s = smin + ( i + 0.002 ) * ( smax - smin ) / (double)nsteps;
double prob = _calcprob->dGdsProb( _mb, _ms, ml, s );
if ( prob > probMax ) {
sProbMax = s;
probMax = prob;
}
}
_dGdsProbMax = probMax;
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "dGdsProbMax = " << probMax << " for s = " << sProbMax << endl;
}
// determine the maximum probability density from dGdsdupProb
probMax = -10000.0;
sProbMax = -10.0;
for ( i = 0; i < nsteps; i++ ) {
s = smin + ( i + 0.002 ) * ( smax - smin ) / (double)nsteps;
double umax = sqrt( ( s - ( _mb + _ms ) * ( _mb + _ms ) ) *
( s - ( _mb - _ms ) * ( _mb - _ms ) ) );
for ( j = 0; j < nsteps; j++ ) {
double u = -umax + ( j + 0.002 ) * ( 2.0 * umax ) / (double)nsteps;
double prob = _calcprob->dGdsdupProb( _mb, _ms, ml, s, u );
if ( prob > probMax ) {
sProbMax = s;
uProbMax = u;
probMax = prob;
}
}
}
_dGdsdupProbMax = 2.0 * probMax;
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "dGdsdupProbMax = " << probMax << " for s = " << sProbMax
<< " and u = " << uProbMax << endl;
}
}
void EvtBtoXsll::initProbMax()
{
noProbMax();
}
void EvtBtoXsll::decay( EvtParticle* p )
{
p->makeDaughters( getNDaug(), getDaugs() );
EvtParticle* xhadron = p->getDaug( 0 );
EvtParticle* leptonp = p->getDaug( 1 );
EvtParticle* leptonn = p->getDaug( 2 );
double mass[3];
findMasses( p, getNDaug(), getDaugs(), mass );
double mB = p->mass();
double ml = mass[1];
double pb( 0. );
int im = 0;
static int nmsg = 0;
double xhadronMass = -999.0;
EvtVector4R p4xhadron;
EvtVector4R p4leptonp;
EvtVector4R p4leptonn;
// require the hadronic system has mass greater than that of a Kaon pion pair
// while (xhadronMass < 0.6333)
// the above minimum value of K+pi mass appears to be too close
// to threshold as far as JETSET is concerned
// (JETSET gets caught in an infinite loop)
// so we choose a lightly larger value for the threshold
while ( xhadronMass < _mxmin ) {
im++;
// Apply Fermi motion and determine effective b-quark mass
// Old BaBar MC parameters
// double pf = 0.25;
// double ms = 0.2;
// double mq = 0.3;
double mb = 0.0;
double xbox, ybox;
while ( mb <= 0.0 ) {
pb = _calcprob->FermiMomentum( _pf );
// effective b-quark mass
mb = mB * mB + _mq * _mq - 2.0 * mB * sqrt( pb * pb + _mq * _mq );
if ( mb > 0. && sqrt( mb ) - _ms < 2.0 * ml )
mb = -10.;
}
mb = sqrt( mb );
// cout << "b-quark momentum = " << pb << " mass = " << mb << endl;
// generate a dilepton invariant mass
double s = 0.0;
double smin = 4.0 * ml * ml;
double smax = ( mb - _ms ) * ( mb - _ms );
while ( s == 0.0 ) {
xbox = EvtRandom::Flat( smin, smax );
ybox = EvtRandom::Flat( _dGdsProbMax );
double prob = _calcprob->dGdsProb( mb, _ms, ml, xbox );
if ( !( prob >= 0.0 ) && !( prob <= 0.0 ) ) {
// EvtGenReport(EVTGEN_INFO,"EvtGen") << "nan from dGdsProb " << prob << " " << mb << " " << _ms << " " << ml << " " << xbox << std::endl;
}
if ( ybox < prob )
s = xbox;
}
// cout << "dGdsProb(s) = " << _calcprob->dGdsProb(mb, _ms, ml, s)
// << " for s = " << s << endl;
// two-body decay of b quark at rest into s quark and dilepton pair:
// b -> s (ll)
EvtVector4R p4sdilep[2];
double msdilep[2];
msdilep[0] = _ms;
msdilep[1] = sqrt( s );
EvtGenKine::PhaseSpace( 2, msdilep, p4sdilep, mb );
// generate dilepton decay with the expected asymmetry: (ll) -> l+ l-
EvtVector4R p4ll[2];
double mll[2];
mll[0] = ml;
mll[1] = ml;
double tmp = 0.0;
while ( tmp == 0.0 ) {
// (ll) -> l+ l- decay in dilepton rest frame
EvtGenKine::PhaseSpace( 2, mll, p4ll, msdilep[1] );
// boost to b-quark rest frame
p4ll[0] = boostTo( p4ll[0], p4sdilep[1] );
p4ll[1] = boostTo( p4ll[1], p4sdilep[1] );
// compute kinematical variable u
EvtVector4R p4slp = p4sdilep[0] + p4ll[0];
EvtVector4R p4sln = p4sdilep[0] + p4ll[1];
double u = p4slp.mass2() - p4sln.mass2();
ybox = EvtRandom::Flat( _dGdsdupProbMax );
double prob = _calcprob->dGdsdupProb( mb, _ms, ml, s, u );
if ( !( prob >= 0.0 ) && !( prob <= 0.0 ) ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "nan from dGdsProb " << prob << " " << mb << " " << _ms
<< " " << ml << " " << s << " " << u << std::endl;
}
if ( prob > _dGdsdupProbMax && nmsg < 20 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "d2gdsdup GT d2gdsdup_max:" << prob << " "
<< _dGdsdupProbMax << " for s = " << s << " u = " << u
<< " mb = " << mb << endl;
nmsg++;
}
if ( ybox < prob ) {
tmp = 1.0;
// cout << "dGdsdupProb(s) = " << prob
// << " for u = " << u << endl;
}
}
// assign 4-momenta to valence quarks inside B meson in B rest frame
double phi = EvtRandom::Flat( EvtConst::twoPi );
double costh = EvtRandom::Flat( -1.0, 1.0 );
double sinth = sqrt( 1.0 - costh * costh );
// b-quark four-momentum in B meson rest frame
EvtVector4R p4b( sqrt( mb * mb + pb * pb ), pb * sinth * sin( phi ),
pb * sinth * cos( phi ), pb * costh );
// B meson in its rest frame
//
// EvtVector4R p4B(mB, 0.0, 0.0, 0.0);
//
// boost B meson to b-quark rest frame
//
// p4B = boostTo(p4B, p4b);
//
// cout << " B meson mass in b-quark rest frame = " << p4B.mass() << endl;
// boost s, l+ and l- to B meson rest frame
// EvtVector4R p4s = boostTo(p4sdilep[0], p4B);
// p4leptonp = boostTo(p4ll[0], p4B);
// p4leptonn = boostTo(p4ll[1], p4B);
EvtVector4R p4s = boostTo( p4sdilep[0], p4b );
p4leptonp = boostTo( p4ll[0], p4b );
p4leptonn = boostTo( p4ll[1], p4b );
// spectator quark in B meson rest frame
EvtVector4R p4q( sqrt( pb * pb + _mq * _mq ), -p4b.get( 1 ),
-p4b.get( 2 ), -p4b.get( 3 ) );
// hadron system in B meson rest frame
p4xhadron = p4s + p4q;
xhadronMass = p4xhadron.mass();
// cout << "Xs mass = " << xhadronMass << " trial " << im << endl;
}
// initialize the decay products
xhadron->init( getDaug( 0 ), p4xhadron );
// For B-bar mesons (i.e. containing a b quark) we have the normal
// order of leptons
if ( p->getId() == EvtPDL::getId( "anti-B0" ) ||
p->getId() == EvtPDL::getId( "B-" ) ) {
leptonp->init( getDaug( 1 ), p4leptonp );
leptonn->init( getDaug( 2 ), p4leptonn );
}
// For B mesons (i.e. containing a b-bar quark) we need to flip the
// role of the positive and negative leptons in order to produce the
// correct forward-backward asymmetry between the two leptons
else {
leptonp->init( getDaug( 1 ), p4leptonn );
leptonn->init( getDaug( 2 ), p4leptonp );
}
return;
}
diff --git a/src/EvtGenModels/EvtBtoXsllUtil.cpp b/src/EvtGenModels/EvtBtoXsllUtil.cpp
index 0ae96ee..197a8d7 100644
--- a/src/EvtGenModels/EvtBtoXsllUtil.cpp
+++ b/src/EvtGenModels/EvtBtoXsllUtil.cpp
@@ -1,640 +1,610 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtBtoXsllUtil.cc
-//
-// Description: Routine to generate non-resonant B -> Xs l+ l- decays.
-// It generates a dilepton mass spectrum according to
-// F.Kruger and L.M.Sehgal, Phys. Lett. B380, 199 (1996)
-// and then generates the two lepton momenta according to
-// A.Ali, G.Hiller, L.T.Handoko and T.Morozumi, Phys. Rev. D55, 4105 (1997).
-// Expressions for Wilson coefficients and power corrections are taken
-// from A.Ali, E.Lunghi, C.Greub and G.Hiller, Phys. Rev. D66, 034002 (2002).
-// Detailed formulae for shat dependence of these coefficients are taken
-// from H.H.Asatryan, H.M.Asatrian, C.Greub and M.Walker, PRD65, 074004 (2002)
-// and C.Bobeth, M.Misiak and J.Urban, Nucl. Phys. B574, 291 (2000).
-// The resultant Xs particles may be decayed by JETSET.
-//
-// Modification history:
-//
-// Stephane Willocq Jan 19, 2001 Module created
-// Stephane Willocq Nov 6, 2003 Update Wilson Coeffs & dG's
-// &Jeff Berryhill
-//
-//------------------------------------------------------------------------
-//
-#include "EvtGenBase/EvtPatches.hh"
-//
+#include "EvtGenModels/EvtBtoXsllUtil.hh"
+
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtDiLog.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
-#include "EvtGenModels/EvtBtoXsllUtil.hh"
-
#include <stdlib.h>
EvtComplex EvtBtoXsllUtil::GetC7Eff0( double sh, bool nnlo )
{
// This function returns the zeroth-order alpha_s part of C7
if ( !nnlo )
return -0.313;
double A7;
// use energy scale of 2.5 GeV as a computational trick (G.Hiller)
// at least for shat > 0.25
A7 = -0.353 + 0.023;
EvtComplex c7eff;
if ( sh > 0.25 ) {
c7eff = A7;
return c7eff;
}
// change energy scale to 5.0 for full NNLO calculation below shat = 0.25
A7 = -0.312 + 0.008;
c7eff = A7;
return c7eff;
}
EvtComplex EvtBtoXsllUtil::GetC7Eff1( double sh, double mbeff, bool nnlo )
{
// This function returns the first-order alpha_s part of C7
if ( !nnlo )
return 0.0;
double logsh;
logsh = log( sh );
EvtComplex uniti( 0.0, 1.0 );
EvtComplex c7eff = 0.0;
if ( sh > 0.25 ) {
return c7eff;
}
// change energy scale to 5.0 for full NNLO calculation below shat = 0.25
double muscale = 5.0;
double alphas = 0.215;
//double A7 = -0.312 + 0.008;
double A8 = -0.148;
//double A9 = 4.174 + (-0.035);
//double A10 = -4.592 + 0.379;
double C1 = -0.487;
double C2 = 1.024;
//double T9 = 0.374 + 0.252;
//double U9 = 0.033 + 0.015;
//double W9 = 0.032 + 0.012;
double Lmu = log( muscale / mbeff );
EvtComplex F71;
EvtComplex f71;
EvtComplex k7100( -0.68192, -0.074998 );
EvtComplex k7101( 0.0, 0.0 );
EvtComplex k7110( -0.23935, -0.12289 );
EvtComplex k7111( 0.0027424, 0.019676 );
EvtComplex k7120( -0.0018555, -0.175 );
EvtComplex k7121( 0.022864, 0.011456 );
EvtComplex k7130( 0.28248, -0.12783 );
EvtComplex k7131( 0.029027, -0.0082265 );
f71 = k7100 + k7101 * logsh + sh * ( k7110 + k7111 * logsh ) +
sh * sh * ( k7120 + k7121 * logsh ) +
sh * sh * sh * ( k7130 + k7131 * logsh );
F71 = ( -208.0 / 243.0 ) * Lmu + f71;
EvtComplex F72;
EvtComplex f72;
EvtComplex k7200( 4.0915, 0.44999 );
EvtComplex k7201( 0.0, 0.0 );
EvtComplex k7210( 1.4361, 0.73732 );
EvtComplex k7211( -0.016454, -0.11806 );
EvtComplex k7220( 0.011133, 1.05 );
EvtComplex k7221( -0.13718, -0.068733 );
EvtComplex k7230( -1.6949, 0.76698 );
EvtComplex k7231( -0.17416, 0.049359 );
f72 = k7200 + k7201 * logsh + sh * ( k7210 + k7211 * logsh ) +
sh * sh * ( k7220 + k7221 * logsh ) +
sh * sh * sh * ( k7230 + k7231 * logsh );
F72 = ( 416.0 / 81.0 ) * Lmu + f72;
EvtComplex F78;
F78 = ( -32.0 / 9.0 ) * Lmu + 8.0 * EvtConst::pi * EvtConst::pi / 27.0 +
( -44.0 / 9.0 ) + ( -8.0 * EvtConst::pi / 9.0 ) * uniti +
( 4.0 / 3.0 * EvtConst::pi * EvtConst::pi - 40.0 / 3.0 ) * sh +
( 32.0 * EvtConst::pi * EvtConst::pi / 9.0 - 316.0 / 9.0 ) * sh * sh +
( 200.0 * EvtConst::pi * EvtConst::pi / 27.0 - 658.0 / 9.0 ) * sh *
sh * sh +
( -8.0 * logsh / 9.0 ) * ( sh + sh * sh + sh * sh * sh );
c7eff = -alphas / ( 4.0 * EvtConst::pi ) * ( C1 * F71 + C2 * F72 + A8 * F78 );
return c7eff;
}
EvtComplex EvtBtoXsllUtil::GetC9Eff0( double sh, double /* mbeff */, bool nnlo,
bool btod )
{
// This function returns the zeroth-order alpha_s part of C9
if ( !nnlo )
return 4.344;
double mch = 0.29;
double A9;
A9 = 4.287 + ( -0.218 );
double C1;
C1 = -0.697;
double C2;
C2 = 1.046;
double T9;
T9 = 0.114 + 0.280;
double U9;
U9 = 0.045 + 0.023;
double W9;
W9 = 0.044 + 0.016;
EvtComplex uniti( 0.0, 1.0 );
EvtComplex hc;
double xarg;
xarg = 4.0 * mch / sh;
hc = -4.0 / 9.0 * log( mch * mch ) + 8.0 / 27.0 + 4.0 * xarg / 9.0;
if ( xarg < 1.0 ) {
hc = hc - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
( log( ( sqrt( 1.0 - xarg ) + 1.0 ) /
( sqrt( 1.0 - xarg ) - 1.0 ) ) -
uniti * EvtConst::pi );
} else {
hc = hc - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
2.0 * atan( 1.0 / sqrt( xarg - 1.0 ) );
}
EvtComplex h1;
xarg = 4.0 / sh;
h1 = 8.0 / 27.0 + 4.0 * xarg / 9.0;
if ( xarg < 1.0 ) {
h1 = h1 - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
( log( ( sqrt( 1.0 - xarg ) + 1.0 ) /
( sqrt( 1.0 - xarg ) - 1.0 ) ) -
uniti * EvtConst::pi );
} else {
h1 = h1 - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
2.0 * atan( 1.0 / sqrt( xarg - 1.0 ) );
}
EvtComplex h0;
h0 = 8.0 / 27.0 - 4.0 * log( 2.0 ) / 9.0 + 4.0 * uniti * EvtConst::pi / 9.0;
// X=V_{ud}^* V_ub / V_{td}^* V_tb * (4/3 C_1 +C_2) * (h(\hat m_c^2, hat s)-
// h(\hat m_u^2, hat s))
EvtComplex Vudstar( 1.0 - 0.2279 * 0.2279 / 2.0, 0.0 );
EvtComplex Vub( ( 0.118 + 0.273 ) / 2.0, -1.0 * ( 0.305 + 0.393 ) / 2.0 );
EvtComplex Vtdstar( 1.0 - ( 0.118 + 0.273 ) / 2.0, ( 0.305 + 0.393 ) / 2.0 );
EvtComplex Vtb( 1.0, 0.0 );
EvtComplex Xd;
Xd = ( Vudstar * Vub / Vtdstar * Vtb ) * ( 4.0 / 3.0 * C1 + C2 ) *
( hc - h0 );
EvtComplex c9eff = 4.344;
if ( sh > 0.25 ) {
c9eff = A9 + T9 * hc + U9 * h1 + W9 * h0;
if ( btod ) {
c9eff += Xd;
}
return c9eff;
}
// change energy scale to 5.0 for full NNLO calculation below shat = 0.25
A9 = 4.174 + ( -0.035 );
C1 = -0.487;
C2 = 1.024;
T9 = 0.374 + 0.252;
U9 = 0.033 + 0.015;
W9 = 0.032 + 0.012;
Xd = ( Vudstar * Vub / Vtdstar * Vtb ) * ( 4.0 / 3.0 * C1 + C2 ) *
( hc - h0 );
c9eff = A9 + T9 * hc + U9 * h1 + W9 * h0;
if ( btod ) {
c9eff += Xd;
}
return c9eff;
}
EvtComplex EvtBtoXsllUtil::GetC9Eff1( double sh, double mbeff, bool nnlo,
bool /*btod*/ )
{
// This function returns the first-order alpha_s part of C9
if ( !nnlo )
return 0.0;
double logsh;
logsh = log( sh );
double mch = 0.29;
EvtComplex uniti( 0.0, 1.0 );
EvtComplex c9eff = 0.0;
if ( sh > 0.25 ) {
return c9eff;
}
// change energy scale to 5.0 for full NNLO calculation below shat = 0.25
double muscale = 5.0;
double alphas = 0.215;
double C1 = -0.487;
double C2 = 1.024;
double A8 = -0.148;
double Lmu = log( muscale / mbeff );
EvtComplex F91;
EvtComplex f91;
EvtComplex k9100( -11.973, 0.16371 );
EvtComplex k9101( -0.081271, -0.059691 );
EvtComplex k9110( -28.432, -0.25044 );
EvtComplex k9111( -0.040243, 0.016442 );
EvtComplex k9120( -57.114, -0.86486 );
EvtComplex k9121( -0.035191, 0.027909 );
EvtComplex k9130( -128.8, -2.5243 );
EvtComplex k9131( -0.017587, 0.050639 );
f91 = k9100 + k9101 * logsh + sh * ( k9110 + k9111 * logsh ) +
sh * sh * ( k9120 + k9121 * logsh ) +
sh * sh * sh * ( k9130 + k9131 * logsh );
F91 = ( -1424.0 / 729.0 + 16.0 * uniti * EvtConst::pi / 243.0 +
64.0 / 27.0 * log( mch ) ) *
Lmu -
16.0 * Lmu * logsh / 243.0 +
( 16.0 / 1215.0 - 32.0 / 135.0 / mch / mch ) * Lmu * sh +
( 4.0 / 2835.0 - 8.0 / 315.0 / mch / mch / mch / mch ) * Lmu * sh * sh +
( 16.0 / 76545.0 - 32.0 / 8505.0 / mch / mch / mch / mch / mch / mch ) *
Lmu * sh * sh * sh -
256.0 * Lmu * Lmu / 243.0 + f91;
EvtComplex F92;
EvtComplex f92;
EvtComplex k9200( 6.6338, -0.98225 );
EvtComplex k9201( 0.48763, 0.35815 );
EvtComplex k9210( 3.3585, 1.5026 );
EvtComplex k9211( 0.24146, -0.098649 );
EvtComplex k9220( -1.1906, 5.1892 );
EvtComplex k9221( 0.21115, -0.16745 );
EvtComplex k9230( -17.12, 15.146 );
EvtComplex k9231( 0.10552, -0.30383 );
f92 = k9200 + k9201 * logsh + sh * ( k9210 + k9211 * logsh ) +
sh * sh * ( k9220 + k9221 * logsh ) +
sh * sh * sh * ( k9230 + k9231 * logsh );
F92 = ( 256.0 / 243.0 - 32.0 * uniti * EvtConst::pi / 81.0 -
128.0 / 9.0 * log( mch ) ) *
Lmu +
32.0 * Lmu * logsh / 81.0 +
( -32.0 / 405.0 + 64.0 / 45.0 / mch / mch ) * Lmu * sh +
( -8.0 / 945.0 + 16.0 / 105.0 / mch / mch / mch / mch ) * Lmu * sh * sh +
( -32.0 / 25515.0 + 64.0 / 2835.0 / mch / mch / mch / mch / mch / mch ) *
Lmu * sh * sh * sh +
512.0 * Lmu * Lmu / 81.0 + f92;
EvtComplex F98;
F98 = 104.0 / 9.0 - 32.0 * EvtConst::pi * EvtConst::pi / 27.0 +
( 1184.0 / 27.0 - 40.0 * EvtConst::pi * EvtConst::pi / 9.0 ) * sh +
( 14212.0 / 135.0 - 32.0 * EvtConst::pi * EvtConst::pi / 3.0 ) * sh *
sh +
( 193444.0 / 945.0 - 560.0 * EvtConst::pi * EvtConst::pi / 27.0 ) *
sh * sh * sh +
16.0 * logsh / 9.0 * ( 1.0 + sh + sh * sh + sh * sh * sh );
c9eff = -alphas / ( 4.0 * EvtConst::pi ) * ( C1 * F91 + C2 * F92 + A8 * F98 );
return c9eff;
}
EvtComplex EvtBtoXsllUtil::GetC10Eff( double /*sh*/, bool nnlo )
{
if ( !nnlo )
return -4.669;
double A10;
A10 = -4.592 + 0.379;
EvtComplex c10eff;
c10eff = A10;
return c10eff;
}
double EvtBtoXsllUtil::dGdsProb( double mb, double ms, double ml, double s )
{
// Compute the decay probability density function given a value of s
// according to Ali-Lunghi-Greub-Hiller's 2002 paper
// Note that the form given below is taken from
// F.Kruger and L.M.Sehgal, Phys. Lett. B380, 199 (1996)
// but the differential rate as a function of dilepton mass
// in this latter paper reduces to Eq.(12) in ALGH's 2002 paper
// for ml = 0 and ms = 0.
bool btod = false;
bool nnlo = true;
double delta, lambda, prob;
double f1, f2, f3, f4;
double msh, mlh, sh;
double mbeff = 4.8;
mlh = ml / mb;
msh = ms / mb;
// set lepton and strange-quark masses to 0 if need to
// be in strict agreement with ALGH 2002 paper
// mlh = 0.0; msh = 0.0;
// sh = s / (mb*mb);
sh = s / ( mbeff * mbeff );
// if sh >1.0 code will return a nan. so just skip it
if ( sh > 1.0 )
return 0.0;
EvtComplex c7eff0 = EvtBtoXsllUtil::GetC7Eff0( sh, nnlo );
EvtComplex c7eff1 = EvtBtoXsllUtil::GetC7Eff1( sh, mbeff, nnlo );
EvtComplex c9eff0 = EvtBtoXsllUtil::GetC9Eff0( sh, mbeff, nnlo, btod );
EvtComplex c9eff1 = EvtBtoXsllUtil::GetC9Eff1( sh, mbeff, nnlo, btod );
EvtComplex c10eff = EvtBtoXsllUtil::GetC10Eff( sh, nnlo );
double alphas = 0.119 /
( 1 + 0.119 * log( pow( 4.8, 2 ) / pow( 91.1867, 2 ) ) *
23.0 / 12.0 / EvtConst::pi );
double omega7 = -8.0 / 3.0 * log( 4.8 / mb ) -
4.0 / 3.0 * EvtDiLog::DiLog( sh ) -
2.0 / 9.0 * EvtConst::pi * EvtConst::pi -
2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
log( 1 - sh ) * ( 8.0 + sh ) / ( 2.0 + sh ) / 3.0 -
2.0 / 3.0 * sh * ( 2.0 - 2.0 * sh - sh * sh ) * log( sh ) /
pow( ( 1.0 - sh ), 2 ) / ( 2.0 + sh ) -
( 16.0 - 11.0 * sh - 17.0 * sh * sh ) / 18.0 /
( 2.0 + sh ) / ( 1.0 - sh );
double eta7 = 1.0 + alphas * omega7 / EvtConst::pi;
double omega79 = -4.0 / 3.0 * log( 4.8 / mb ) -
4.0 / 3.0 * EvtDiLog::DiLog( sh ) -
2.0 / 9.0 * EvtConst::pi * EvtConst::pi -
2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
1.0 / 9.0 * ( 2.0 + 7.0 * sh ) * log( 1.0 - sh ) / sh -
2.0 / 9.0 * sh * ( 3.0 - 2.0 * sh ) * log( sh ) /
pow( ( 1.0 - sh ), 2 ) +
1.0 / 18.0 * ( 5.0 - 9.0 * sh ) / ( 1.0 - sh );
double eta79 = 1.0 + alphas * omega79 / EvtConst::pi;
double omega9 = -2.0 / 9.0 * EvtConst::pi * EvtConst::pi -
4.0 / 3.0 * EvtDiLog::DiLog( sh ) -
2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
( 5.0 + 4.0 * sh ) / ( 3.0 * ( 1.0 + 2.0 * sh ) ) *
log( 1.0 - sh ) -
2.0 * sh * ( 1.0 + sh ) * ( 1.0 - 2.0 * sh ) /
( 3.0 * pow( 1.0 - sh, 2 ) * ( 1.0 + 2.0 * sh ) ) *
log( sh ) +
( 5.0 + 9.0 * sh - 6.0 * sh * sh ) /
( 6.0 * ( 1.0 - sh ) * ( 1.0 + 2.0 * sh ) );
double eta9 = 1.0 + alphas * omega9 / EvtConst::pi;
EvtComplex c7eff = eta7 * c7eff0 + c7eff1;
EvtComplex c9eff = eta9 * c9eff0 + c9eff1;
c10eff *= eta9;
double c7c7 = abs2( c7eff );
double c7c9 = real( ( eta79 * c7eff0 + c7eff1 ) *
conj( eta79 * c9eff0 + c9eff1 ) );
double c9c9plusc10c10 = abs2( c9eff ) + abs2( c10eff );
double c9c9minusc10c10 = abs2( c9eff ) - abs2( c10eff );
// Power corrections according to ALGH 2002
double lambda_1 = -0.2;
double lambda_2 = 0.12;
double C1 = -0.487;
double C2 = 1.024;
double mc = 0.29 * mb;
EvtComplex F;
double r = s / ( 4.0 * mc * mc );
EvtComplex uniti( 0.0, 1.0 );
F = 3.0 / ( 2.0 * r );
if ( r < 1 ) {
F *= 1.0 / sqrt( r * ( 1.0 - r ) ) * atan( sqrt( r / ( 1.0 - r ) ) ) -
1.0;
} else {
F *= 0.5 / sqrt( r * ( r - 1.0 ) ) *
( log( ( 1.0 - sqrt( 1.0 - 1.0 / r ) ) /
( 1.0 + sqrt( 1.0 - 1.0 / r ) ) ) +
uniti * EvtConst::pi ) -
1.0;
}
double G1 = 1.0 + lambda_1 / ( 2.0 * mb * mb ) +
3.0 * ( 1.0 - 15.0 * sh * sh + 10.0 * sh * sh * sh ) /
( ( 1.0 - sh ) * ( 1.0 - sh ) * ( 1.0 + 2.0 * sh ) ) *
lambda_2 / ( 2.0 * mb * mb );
double G2 = 1.0 + lambda_1 / ( 2.0 * mb * mb ) -
3.0 * ( 6.0 + 3.0 * sh - 5.0 * sh * sh * sh ) /
( ( 1.0 - sh ) * ( 1.0 - sh ) * ( 2.0 + sh ) ) * lambda_2 /
( 2.0 * mb * mb );
double G3 = 1.0 + lambda_1 / ( 2.0 * mb * mb ) -
( 5.0 + 6.0 * sh - 7.0 * sh * sh ) /
( ( 1.0 - sh ) * ( 1.0 - sh ) ) * lambda_2 /
( 2.0 * mb * mb );
double Gc = -8.0 / 9.0 * ( C2 - C1 / 6.0 ) * lambda_2 / ( mc * mc ) *
real( F * ( conj( c9eff ) * ( 2.0 + sh ) +
conj( c7eff ) * ( 1.0 + 6.0 * sh - sh * sh ) / sh ) );
// end of power corrections section
// now back to Kruger & Sehgal expressions
double msh2 = msh * msh;
lambda = 1.0 + sh * sh + msh2 * msh2 - 2.0 * ( sh + sh * msh2 + msh2 );
// negative lambda screw up sqrt below!
if ( lambda < 0.0 )
return 0.0;
f1 = pow( 1.0 - msh2, 2 ) - sh * ( 1.0 + msh2 );
f2 = 2.0 * ( 1.0 + msh2 ) * pow( 1.0 - msh2, 2 ) -
sh * ( 1.0 + 14.0 * msh2 + pow( msh, 4 ) ) - sh * sh * ( 1.0 + msh2 );
f3 = pow( 1.0 - msh2, 2 ) + sh * ( 1.0 + msh2 ) - 2.0 * sh * sh +
lambda * 2.0 * mlh * mlh / sh;
f4 = 1.0 - sh + msh2;
delta = ( 12.0 * c7c9 * f1 * G3 + 4.0 * c7c7 * f2 * G2 / sh ) *
( 1.0 + 2.0 * mlh * mlh / sh ) +
c9c9plusc10c10 * f3 * G1 + 6.0 * mlh * mlh * c9c9minusc10c10 * f4 +
Gc;
// avoid negative probs
if ( delta < 0.0 )
delta = 0.;
// negative when sh < 4*mlh*mlh
// s < 4*ml*ml
/// prob = sqrt(lambda*(1.0 - 4.0*mlh*mlh/sh)) * delta;
prob = sqrt( lambda * ( 1.0 - 4.0 * ml * ml / s ) ) * delta;
// if ( !(prob>=0.0) && !(prob<=0.0) ) {
//nan
// std::cout << lambda << " " << mlh << " " << sh << " " << delta << " " << mb << " " << mbeff << std::endl;
// std::cout << 4.0*mlh*mlh/sh << " " << 4.0*ml*ml/s << " " << s-4.0*ml*ml << " " << ml << std::endl;
// std::cout << sh << " " << sh*sh << " " << msh2*msh2 << " " << msh << std::endl;
//std::cout << ( 12.0*c7c9*f1*G3 + 4.0*c7c7*f2*G2/sh ) * (1.0 + 2.0*mlh*mlh/sh)
// <<" " << c9c9plusc10c10*f3*G1
// << " "<< 6.0*mlh*mlh*c9c9minusc10c10*f4
// << " "<< Gc << std::endl;
//std::cout << C2 << " " << C1 << " "<< lambda_2 << " " << mc << " " << real(F*(conj(c9eff)*(2.0+sh)+conj(c7eff)*(1.0 + 6.0*sh - sh*sh)/sh)) << " " << sh << " " << r << std::endl;
//std::cout << c9eff << " " << eta9 << " " <<c9eff0 << " " << c9eff1 << " " << alphas << " " << omega9 << " " << sh << std::endl;
//}
// else{
// if ( sh > 1.0) std::cout << "not a nan \n";
// }
return prob;
}
double EvtBtoXsllUtil::dGdsdupProb( double mb, double ms, double ml, double s,
double u )
{
// Compute the decay probability density function given a value of s and u
// according to Ali-Hiller-Handoko-Morozumi's 1997 paper
// see Appendix E
bool btod = false;
bool nnlo = true;
double prob;
double f1sp, f2sp, f3sp;
double mbeff = 4.8;
// double sh = s / (mb*mb);
double sh = s / ( mbeff * mbeff );
// if sh >1.0 code will return a nan. so just skip it
if ( sh > 1.0 )
return 0.0;
EvtComplex c7eff0 = EvtBtoXsllUtil::GetC7Eff0( sh, nnlo );
EvtComplex c7eff1 = EvtBtoXsllUtil::GetC7Eff1( sh, mbeff, nnlo );
EvtComplex c9eff0 = EvtBtoXsllUtil::GetC9Eff0( sh, mbeff, nnlo, btod );
EvtComplex c9eff1 = EvtBtoXsllUtil::GetC9Eff1( sh, mbeff, nnlo, btod );
EvtComplex c10eff = EvtBtoXsllUtil::GetC10Eff( sh, nnlo );
double alphas = 0.119 /
( 1 + 0.119 * log( pow( 4.8, 2 ) / pow( 91.1867, 2 ) ) *
23.0 / 12.0 / EvtConst::pi );
double omega7 = -8.0 / 3.0 * log( 4.8 / mb ) -
4.0 / 3.0 * EvtDiLog::DiLog( sh ) -
2.0 / 9.0 * EvtConst::pi * EvtConst::pi -
2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
log( 1 - sh ) * ( 8.0 + sh ) / ( 2.0 + sh ) / 3.0 -
2.0 / 3.0 * sh * ( 2.0 - 2.0 * sh - sh * sh ) * log( sh ) /
pow( ( 1.0 - sh ), 2 ) / ( 2.0 + sh ) -
( 16.0 - 11.0 * sh - 17.0 * sh * sh ) / 18.0 /
( 2.0 + sh ) / ( 1.0 - sh );
double eta7 = 1.0 + alphas * omega7 / EvtConst::pi;
double omega79 = -4.0 / 3.0 * log( 4.8 / mb ) -
4.0 / 3.0 * EvtDiLog::DiLog( sh ) -
2.0 / 9.0 * EvtConst::pi * EvtConst::pi -
2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
1.0 / 9.0 * ( 2.0 + 7.0 * sh ) * log( 1.0 - sh ) / sh -
2.0 / 9.0 * sh * ( 3.0 - 2.0 * sh ) * log( sh ) /
pow( ( 1.0 - sh ), 2 ) +
1.0 / 18.0 * ( 5.0 - 9.0 * sh ) / ( 1.0 - sh );
double eta79 = 1.0 + alphas * omega79 / EvtConst::pi;
double omega9 = -2.0 / 9.0 * EvtConst::pi * EvtConst::pi -
4.0 / 3.0 * EvtDiLog::DiLog( sh ) -
2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
( 5.0 + 4.0 * sh ) / ( 3.0 * ( 1.0 + 2.0 * sh ) ) *
log( 1.0 - sh ) -
2.0 * sh * ( 1.0 + sh ) * ( 1.0 - 2.0 * sh ) /
( 3.0 * pow( 1.0 - sh, 2 ) * ( 1.0 + 2.0 * sh ) ) *
log( sh ) +
( 5.0 + 9.0 * sh - 6.0 * sh * sh ) /
( 6.0 * ( 1.0 - sh ) * ( 1.0 + 2.0 * sh ) );
double eta9 = 1.0 + alphas * omega9 / EvtConst::pi;
EvtComplex c7eff = eta7 * c7eff0 + c7eff1;
EvtComplex c9eff = eta9 * c9eff0 + c9eff1;
c10eff *= eta9;
double c7c7 = abs2( c7eff );
double c7c9 = real( ( eta79 * c7eff0 + c7eff1 ) *
conj( eta79 * c9eff0 + c9eff1 ) );
double c7c10 = real( ( eta79 * c7eff0 + c7eff1 ) * conj( eta9 * c10eff ) );
double c9c10 = real( ( eta9 * c9eff0 + c9eff1 ) * conj( eta9 * c10eff ) );
double c9c9plusc10c10 = abs2( c9eff ) + abs2( c10eff );
f1sp = ( pow( mb * mb - ms * ms, 2 ) - s * s ) * c9c9plusc10c10 +
4.0 *
( pow( mb, 4 ) - ms * ms * mb * mb -
pow( ms, 4 ) * ( 1.0 - ms * ms / ( mb * mb ) ) -
8.0 * s * ms * ms - s * s * ( 1.0 + ms * ms / ( mb * mb ) ) ) *
mb * mb * c7c7 /
s
// kludged mass term
* ( 1.0 + 2.0 * ml * ml / s ) -
8.0 * ( s * ( mb * mb + ms * ms ) - pow( mb * mb - ms * ms, 2 ) ) *
c7c9
// kludged mass term
* ( 1.0 + 2.0 * ml * ml / s );
f2sp = 4.0 * s * c9c10 + 8.0 * ( mb * mb + ms * ms ) * c7c10;
f3sp = -( c9c9plusc10c10 ) + 4.0 * ( 1.0 + pow( ms / mb, 4 ) ) * mb * mb *
c7c7 /
s
// kludged mass term
* ( 1.0 + 2.0 * ml * ml / s );
prob = ( f1sp + f2sp * u + f3sp * u * u ) / pow( mb, 3 );
if ( prob < 0.0 )
prob = 0.;
return prob;
}
double EvtBtoXsllUtil::FermiMomentum( double pf )
{
// Pick a value for the b-quark Fermi motion momentum
// according to Ali's Gaussian model
double pb, pbmax, xbox, ybox;
pb = 0.0;
pbmax = 5.0 * pf;
while ( pb == 0.0 ) {
xbox = EvtRandom::Flat( pbmax );
ybox = EvtRandom::Flat();
if ( ybox < FermiMomentumProb( xbox, pf ) ) {
pb = xbox;
}
}
return pb;
}
double EvtBtoXsllUtil::FermiMomentumProb( double pb, double pf )
{
// Compute probability according to Ali's Gaussian model
// the function chosen has a convenient maximum value of 1 for pb = pf
double prsq = ( pb * pb ) / ( pf * pf );
double prob = prsq * exp( 1.0 - prsq );
return prob;
}
diff --git a/src/EvtGenModels/EvtCBTo3piMPP.cpp b/src/EvtGenModels/EvtCBTo3piMPP.cpp
index 3bba2cf..1822ed6 100644
--- a/src/EvtGenModels/EvtCBTo3piMPP.cpp
+++ b/src/EvtGenModels/EvtCBTo3piMPP.cpp
@@ -1,117 +1,95 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtCBTo3piMPP.cc
-//
-// Description: Routine to decay B+/-->pi+ pi- pi+/-
-// and has CP violation.
-//
-// Modification history:
-//
-// MK September, 2016 Reimplementation to C++
-// RYD/Versille May 6, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtCBTo3piMPP.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
std::string EvtCBTo3piMPP::getName()
{
return "CB3PI-MPP";
}
EvtCBTo3piMPP* EvtCBTo3piMPP::clone()
{
return new EvtCBTo3piMPP;
}
void EvtCBTo3piMPP::init()
{
// check that there are 1 argument
checkNArg( 1 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
checkSpinDaughter( 2, EvtSpinType::SCALAR );
EvtVector4R p4[3];
double alpha = getArg( 0 );
int iset( 10000 );
double realA, imgA, realbarA, imgbarA;
generator.Evt3piMPP( alpha, iset, p4[0], p4[1], p4[2], realA, imgA,
realbarA, imgbarA );
}
void EvtCBTo3piMPP::initProbMax()
{
setProbMax( 1.5 );
}
void EvtCBTo3piMPP::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId BP = EvtPDL::getId( "B+" );
EvtParticle *pi1, *pi2, *pi3;
p->makeDaughters( getNDaug(), getDaugs() );
pi1 = p->getDaug( 0 );
pi2 = p->getDaug( 1 );
pi3 = p->getDaug( 2 );
EvtVector4R p4[3];
double alpha = getArg( 0 );
int iset( 0 );
double realA, imgA, realbarA, imgbarA;
generator.Evt3piMPP( alpha, iset, p4[0], p4[1], p4[2], realA, imgA,
realbarA, imgbarA );
pi1->init( getDaug( 0 ), p4[0] );
pi2->init( getDaug( 1 ), p4[1] );
pi3->init( getDaug( 2 ), p4[2] );
EvtComplex A( realA, imgA );
EvtComplex Abar( realbarA, imgbarA );
//amp is filled just to make sure the compiler will
//do its job!! but one has to define amp differently
// if one wants the B+ or the B- to decay to 3pi!
//
EvtComplex amp;
if ( p->getId() == BP ) {
amp = A;
}
if ( p->getId() == BM ) {
amp = Abar;
}
vertex( amp );
return;
}
diff --git a/src/EvtGenModels/EvtCBTo3piP00.cpp b/src/EvtGenModels/EvtCBTo3piP00.cpp
index 2821405..4466a43 100644
--- a/src/EvtGenModels/EvtCBTo3piP00.cpp
+++ b/src/EvtGenModels/EvtCBTo3piP00.cpp
@@ -1,114 +1,92 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtCBTo3piP00.cc
-//
-// Description: Routine to decay B+/-->pi0 pi0 pi+/-
-// and has CP violation.
-//
-// Modification history:
-//
-// MK September, 2016 Reimplementation to C++
-// RYD,Versille May 6, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtCBTo3piP00.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
std::string EvtCBTo3piP00::getName()
{
return "CB3PI-P00";
}
EvtCBTo3piP00* EvtCBTo3piP00::clone()
{
return new EvtCBTo3piP00;
}
void EvtCBTo3piP00::init()
{
// check that there are 1 argument
checkNArg( 1 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
checkSpinDaughter( 2, EvtSpinType::SCALAR );
int iset( 10000 );
double alpha = getArg( 0 );
EvtVector4R pin, p4pi1, p4Gamma11, p4Gamma12;
EvtVector4R p4Gamma21, p4Gamma22;
double realA, imgA, realbarA, imgbarA;
generator.Evt3piP00( alpha, iset, pin, p4Gamma11, p4Gamma12, p4Gamma21,
p4Gamma22, realA, imgA, realbarA, imgbarA );
}
void EvtCBTo3piP00::initProbMax()
{
setProbMax( 1.5 );
}
void EvtCBTo3piP00::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId BP = EvtPDL::getId( "B+" );
EvtParticle *pi1, *pi2, *pi3;
p->makeDaughters( getNDaug(), getDaugs() );
pi1 = p->getDaug( 0 );
pi2 = p->getDaug( 1 );
pi3 = p->getDaug( 2 );
EvtVector4R p4[3];
double alpha = getArg( 0 );
int iset( 0 );
EvtVector4R p4pi1, p4Gamma11, p4Gamma12;
EvtVector4R p4Gamma21, p4Gamma22;
double realA, imgA, realbarA, imgbarA;
generator.Evt3piP00( alpha, iset, p4[0], p4Gamma11, p4Gamma12, p4Gamma21,
p4Gamma22, realA, imgA, realbarA, imgbarA );
p4[1] = p4Gamma11 + p4Gamma12;
p4[2] = p4Gamma21 + p4Gamma22;
pi1->init( getDaug( 0 ), p4[0] );
pi2->init( getDaug( 1 ), p4[1] );
pi3->init( getDaug( 2 ), p4[2] );
EvtComplex A( realA, imgA );
EvtComplex Abar( realbarA, imgbarA );
EvtComplex amp;
if ( p->getId() == BP ) {
amp = A;
}
if ( p->getId() == BM ) {
amp = Abar;
}
vertex( amp );
return;
}
diff --git a/src/EvtGenModels/EvtD0gammaDalitz.cpp b/src/EvtGenModels/EvtD0gammaDalitz.cpp
index 996b709..6819cdf 100644
--- a/src/EvtGenModels/EvtD0gammaDalitz.cpp
+++ b/src/EvtGenModels/EvtD0gammaDalitz.cpp
@@ -1,300 +1,290 @@
-//--------------------------------------------------------------------------
-//
-// Module: EvtD0gammaDalitz.cc
-//
-// Modification history:
-//
-// JGT February 13, 2012 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtD0gammaDalitz.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtDecayTable.hh"
#include "EvtGenBase/EvtFlatte.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtResonance.hh"
#include "EvtGenBase/EvtResonance2.hh"
#include <cmath>
#include <cstdlib>
#include <string>
// Initialize the static variables.
const EvtSpinType::spintype& EvtD0gammaDalitz::_SCALAR = EvtSpinType::SCALAR;
const EvtSpinType::spintype& EvtD0gammaDalitz::_VECTOR = EvtSpinType::VECTOR;
const EvtSpinType::spintype& EvtD0gammaDalitz::_TENSOR = EvtSpinType::TENSOR;
const EvtDalitzReso::CouplingType& EvtD0gammaDalitz::_EtaPic =
EvtDalitzReso::EtaPic;
const EvtDalitzReso::CouplingType& EvtD0gammaDalitz::_PicPicKK =
EvtDalitzReso::PicPicKK;
const EvtDalitzReso::NumType& EvtD0gammaDalitz::_RBW =
EvtDalitzReso::RBW_CLEO_ZEMACH;
const EvtDalitzReso::NumType& EvtD0gammaDalitz::_GS = EvtDalitzReso::GS_CLEO_ZEMACH;
const EvtDalitzReso::NumType& EvtD0gammaDalitz::_KMAT = EvtDalitzReso::K_MATRIX;
const EvtCyclic3::Pair& EvtD0gammaDalitz::_AB = EvtCyclic3::AB;
const EvtCyclic3::Pair& EvtD0gammaDalitz::_AC = EvtCyclic3::AC;
const EvtCyclic3::Pair& EvtD0gammaDalitz::_BC = EvtCyclic3::BC;
std::string EvtD0gammaDalitz::getName()
{
return "D0GAMMADALITZ";
}
EvtDecayBase* EvtD0gammaDalitz::clone()
{
return new EvtD0gammaDalitz;
}
void EvtD0gammaDalitz::init()
{
// check that there are 0 arguments
checkNArg( 0 );
// Check that this model is valid for the specified decay.
checkNDaug( 3 );
checkSpinParent( _SCALAR );
checkSpinDaughter( 0, _SCALAR );
checkSpinDaughter( 1, _SCALAR );
checkSpinDaughter( 2, _SCALAR );
// Get the values of the EvtId objects from the data files.
readPDGValues();
// Get the EvtId of the D0 and its 3 daughters.
getParentId();
EvtId dau[3];
for ( int index = 0; index < 3; index++ ) {
dau[index] = getDaug( index );
}
// Look for K0bar h+ h-. The order will be K[0SL] h+ h-
for ( int index = 0; index < 3; index++ ) {
if ( ( dau[index] == _K0B ) || ( dau[index] == _KS ) ||
( dau[index] == _KL ) ) {
_d1 = index;
} else if ( ( dau[index] == _PIP ) || ( dau[index] == _KP ) ) {
_d2 = index;
} else if ( ( dau[index] == _PIM ) || ( dau[index] == _KM ) ) {
_d3 = index;
} else {
reportInvalidAndExit();
}
}
// Check if we're dealing with Ks pi pi or with Ks K K.
_isKsPiPi = false;
if ( dau[_d2] == _PIP || dau[_d2] == _PIM ) {
_isKsPiPi = true;
}
}
void EvtD0gammaDalitz::initProbMax()
{
setProbMax( 5200. );
}
void EvtD0gammaDalitz::decay( EvtParticle* part )
{
// Check if the D is from a B+- -> D0 K+- decay with the appropriate model.
EvtParticle* parent =
part->getParent(); // If there are no mistakes, should be B+ or B-.
if ( parent != 0 &&
EvtDecayTable::getInstance()->getDecayFunc( parent )->getName() ==
"BTODDALITZCPK" ) {
EvtId parId = parent->getId();
if ( ( parId == _BP ) || ( parId == _BM ) || ( parId == _B0 ) ||
( parId == _B0B ) ) {
_bFlavor = parId;
} else {
reportInvalidAndExit();
}
} else {
reportInvalidAndExit();
}
// Read the D decay parameters from the B decay model.
// Gamma angle in rad.
double gamma = EvtDecayTable::getInstance()->getDecayFunc( parent )->getArg(
0 );
// Strong phase in rad.
double delta = EvtDecayTable::getInstance()->getDecayFunc( parent )->getArg(
1 );
// Ratio between B->D0K and B->D0barK
double rB = EvtDecayTable::getInstance()->getDecayFunc( parent )->getArg( 2 );
// Same structure for all of these decays.
part->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4R pA = part->getDaug( _d1 )->getP4();
EvtVector4R pB = part->getDaug( _d2 )->getP4();
EvtVector4R pC = part->getDaug( _d3 )->getP4();
// Squared invariant masses.
double mSqAB = ( pA + pB ).mass2();
double mSqAC = ( pA + pC ).mass2();
double mSqBC = ( pB + pC ).mass2();
EvtComplex amp( 1.0, 0.0 );
// Direct and conjugated amplitudes.
EvtComplex ampDir;
EvtComplex ampCnj;
if ( _isKsPiPi ) {
// Direct and conjugated Dalitz points.
EvtDalitzPoint pointDir( _mKs, _mPi, _mPi, mSqAB, mSqBC, mSqAC );
EvtDalitzPoint pointCnj( _mKs, _mPi, _mPi, mSqAC, mSqBC, mSqAB );
// Direct and conjugated amplitudes.
ampDir = dalitzKsPiPi( pointDir );
ampCnj = dalitzKsPiPi( pointCnj );
} else {
// Direct and conjugated Dalitz points.
EvtDalitzPoint pointDir( _mKs, _mK, _mK, mSqAB, mSqBC, mSqAC );
EvtDalitzPoint pointCnj( _mKs, _mK, _mK, mSqAC, mSqBC, mSqAB );
// Direct and conjugated amplitudes.
ampDir = dalitzKsKK( pointDir );
ampCnj = dalitzKsKK( pointCnj );
}
if ( _bFlavor == _BP || _bFlavor == _B0 ) {
amp = ampCnj + rB * exp( EvtComplex( 0., delta + gamma ) ) * ampDir;
} else {
amp = ampDir + rB * exp( EvtComplex( 0., delta - gamma ) ) * ampCnj;
}
vertex( amp );
return;
}
EvtComplex EvtD0gammaDalitz::dalitzKsPiPi( const EvtDalitzPoint& point ) const
{
static const EvtDalitzPlot plot( _mKs, _mPi, _mPi, _mD0 );
EvtComplex amp = 0.;
// This corresponds to relativistic Breit-Wigner distributions. Not K-matrix.
// Defining resonances.
static EvtDalitzReso KStarm( plot, _BC, _AC, _VECTOR, 0.893606, 0.0463407,
_RBW );
static EvtDalitzReso KStarp( plot, _BC, _AB, _VECTOR, 0.893606, 0.0463407,
_RBW );
static EvtDalitzReso rho0( plot, _AC, _BC, _VECTOR, 0.7758, 0.1464, _GS );
static EvtDalitzReso omega( plot, _AC, _BC, _VECTOR, 0.78259, 0.00849, _RBW );
static EvtDalitzReso f0_980( plot, _AC, _BC, _SCALAR, 0.975, 0.044, _RBW );
static EvtDalitzReso f0_1370( plot, _AC, _BC, _SCALAR, 1.434, 0.173, _RBW );
static EvtDalitzReso f2_1270( plot, _AC, _BC, _TENSOR, 1.2754, 0.1851, _RBW );
static EvtDalitzReso K0Starm_1430( plot, _BC, _AC, _SCALAR, 1.459, 0.175,
_RBW );
static EvtDalitzReso K0Starp_1430( plot, _BC, _AB, _SCALAR, 1.459, 0.175,
_RBW );
static EvtDalitzReso K2Starm_1430( plot, _BC, _AC, _TENSOR, 1.4256, 0.0985,
_RBW );
static EvtDalitzReso K2Starp_1430( plot, _BC, _AB, _TENSOR, 1.4256, 0.0985,
_RBW );
static EvtDalitzReso sigma( plot, _AC, _BC, _SCALAR, 0.527699, 0.511861,
_RBW );
static EvtDalitzReso sigma2( plot, _AC, _BC, _SCALAR, 1.03327, 0.0987890,
_RBW );
static EvtDalitzReso KStarm_1680( plot, _BC, _AC, _VECTOR, 1.677, 0.205,
_RBW );
// Adding terms to the amplitude with their corresponding amplitude and phase terms.
amp += EvtComplex( .848984, .893618 );
amp += EvtComplex( -1.16356, 1.19933 ) * KStarm.evaluate( point );
amp += EvtComplex( .106051, -.118513 ) * KStarp.evaluate( point );
amp += EvtComplex( 1.0, 0.0 ) * rho0.evaluate( point );
amp += EvtComplex( -.0249569, .0388072 ) * omega.evaluate( point );
amp += EvtComplex( -.423586, -.236099 ) * f0_980.evaluate( point );
amp += EvtComplex( -2.16486, 3.62385 ) * f0_1370.evaluate( point );
amp += EvtComplex( .217748, -.133327 ) * f2_1270.evaluate( point );
amp += EvtComplex( 1.62128, 1.06816 ) * K0Starm_1430.evaluate( point );
amp += EvtComplex( .148802, .0897144 ) * K0Starp_1430.evaluate( point );
amp += EvtComplex( 1.15489, -.773363 ) * K2Starm_1430.evaluate( point );
amp += EvtComplex( .140865, -.165378 ) * K2Starp_1430.evaluate( point );
amp += EvtComplex( -1.55556, -.931685 ) * sigma.evaluate( point );
amp += EvtComplex( -.273791, -.0535596 ) * sigma2.evaluate( point );
amp += EvtComplex( -1.69720, .128038 ) * KStarm_1680.evaluate( point );
return amp;
}
EvtComplex EvtD0gammaDalitz::dalitzKsKK( const EvtDalitzPoint& point ) const
{
static const EvtDalitzPlot plot( _mKs, _mK, _mK, _mD0 );
// Defining resonances.
static EvtDalitzReso a00_980( plot, _AC, _BC, _SCALAR, 0.999, _RBW, .550173,
.324, _EtaPic );
static EvtDalitzReso phi( plot, _AC, _BC, _VECTOR, 1.01943, .00459319, _RBW );
static EvtDalitzReso a0p_980( plot, _AC, _AB, _SCALAR, 0.999, _RBW, .550173,
.324, _EtaPic );
static EvtDalitzReso f0_1370( plot, _AC, _BC, _SCALAR, 1.350, .265, _RBW );
static EvtDalitzReso a0m_980( plot, _AB, _AC, _SCALAR, 0.999, _RBW, .550173,
.324, _EtaPic );
static EvtDalitzReso f0_980( plot, _AC, _BC, _SCALAR, 0.965, _RBW, .695,
.165, _PicPicKK );
static EvtDalitzReso f2_1270( plot, _AC, _BC, _TENSOR, 1.2754, .1851, _RBW );
static EvtDalitzReso a00_1450( plot, _AC, _BC, _SCALAR, 1.474, .265, _RBW );
static EvtDalitzReso a0p_1450( plot, _AC, _AB, _SCALAR, 1.474, .265, _RBW );
static EvtDalitzReso a0m_1450( plot, _AB, _AC, _SCALAR, 1.474, .265, _RBW );
// Adding terms to the amplitude with their corresponding amplitude and phase terms.
EvtComplex amp( 0., 0. ); // Phase space amplitude.
amp += EvtComplex( 1.0, 0.0 ) * a00_980.evaluate( point );
amp += EvtComplex( -.126314, .188701 ) * phi.evaluate( point );
amp += EvtComplex( -.561428, .0135338 ) * a0p_980.evaluate( point );
amp += EvtComplex( .035, -.00110488 ) * f0_1370.evaluate( point );
amp += EvtComplex( -.0872735, .0791190 ) * a0m_980.evaluate( point );
amp += EvtComplex( 0., 0. ) * f0_980.evaluate( point );
amp += EvtComplex( .257341, -.0408343 ) * f2_1270.evaluate( point );
amp += EvtComplex( -.0614342, -.649930 ) * a00_1450.evaluate( point );
amp += EvtComplex( -.104629, .830120 ) * a0p_1450.evaluate( point );
amp += EvtComplex( 0., 0. ) * a0m_1450.evaluate( point );
return 2.8 *
amp; // Multiply by 2.8 in order to reuse the same probmax as Ks pi pi.
}
void EvtD0gammaDalitz::readPDGValues()
{
// Define the EvtIds.
_BP = EvtPDL::getId( "B+" );
_BM = EvtPDL::getId( "B-" );
_B0 = EvtPDL::getId( "B0" );
_B0B = EvtPDL::getId( "anti-B0" );
_D0 = EvtPDL::getId( "D0" );
_D0B = EvtPDL::getId( "anti-D0" );
_KM = EvtPDL::getId( "K-" );
_KP = EvtPDL::getId( "K+" );
_K0 = EvtPDL::getId( "K0" );
_K0B = EvtPDL::getId( "anti-K0" );
_KL = EvtPDL::getId( "K_L0" );
_KS = EvtPDL::getId( "K_S0" );
_PIM = EvtPDL::getId( "pi-" );
_PIP = EvtPDL::getId( "pi+" );
// Read the relevant masses.
_mD0 = EvtPDL::getMass( _D0 );
_mKs = EvtPDL::getMass( _KS );
_mPi = EvtPDL::getMass( _PIP );
_mK = EvtPDL::getMass( _KP );
}
void EvtD0gammaDalitz::reportInvalidAndExit() const
{
EvtGenReport( EVTGEN_ERROR, "EvtD0gammaDalitz" )
<< "EvtD0gammaDalitz: Invalid mode." << std::endl;
exit( 1 );
}
diff --git a/src/EvtGenModels/EvtD0mixDalitz.cpp b/src/EvtGenModels/EvtD0mixDalitz.cpp
index 602084c..73ad862 100644
--- a/src/EvtGenModels/EvtD0mixDalitz.cpp
+++ b/src/EvtGenModels/EvtD0mixDalitz.cpp
@@ -1,367 +1,354 @@
-/*********************************************************************************
- * Project: BaBar detector at the SLAC PEP-II B-factory
- * Package: EvtGenModels
- * File: $Id: EvtD0mixDalitz.cpp,v 1.2 2009-10-19 15:47:44 robbep Exp $
- *
- * Description:
- * The D0mixDalitz model, with many resonances and mixing implemented.
- *
- * Modification history:
- * Jordi Garra Ticó 2008/07/03 File created
- * Jordi Garra Ticó 2015/06/29 Bug solved for negative values of y
- *********************************************************************************/
-
#include "EvtGenModels/EvtD0mixDalitz.hh"
#include "EvtGenBase/EvtDalitzPlot.hh"
#include "EvtGenBase/EvtDalitzReso.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtResonance.hh"
#include <cmath> // for std::fabs
// Initialize the static variables.
const EvtSpinType::spintype& EvtD0mixDalitz::_SCALAR = EvtSpinType::SCALAR;
const EvtSpinType::spintype& EvtD0mixDalitz::_VECTOR = EvtSpinType::VECTOR;
const EvtSpinType::spintype& EvtD0mixDalitz::_TENSOR = EvtSpinType::TENSOR;
const EvtDalitzReso::CouplingType& EvtD0mixDalitz::_EtaPic = EvtDalitzReso::EtaPic;
const EvtDalitzReso::CouplingType& EvtD0mixDalitz::_PicPicKK =
EvtDalitzReso::PicPicKK;
const EvtDalitzReso::NumType& EvtD0mixDalitz::_RBW = EvtDalitzReso::RBW_CLEO_ZEMACH;
const EvtDalitzReso::NumType& EvtD0mixDalitz::_GS = EvtDalitzReso::GS_CLEO_ZEMACH;
const EvtDalitzReso::NumType& EvtD0mixDalitz::_KMAT = EvtDalitzReso::K_MATRIX;
const EvtCyclic3::Pair& EvtD0mixDalitz::_AB = EvtCyclic3::AB;
const EvtCyclic3::Pair& EvtD0mixDalitz::_AC = EvtCyclic3::AC;
const EvtCyclic3::Pair& EvtD0mixDalitz::_BC = EvtCyclic3::BC;
void EvtD0mixDalitz::init()
{
// check that there are 0 arguments
checkNDaug( 3 );
if ( getNArg() ) {
if ( getNArg() == 2 ) {
_x = getArg( 0 );
_y = getArg( 1 );
} else if ( getNArg() == 4 ) {
_x = getArg( 0 );
_y = getArg( 1 );
_qp = EvtComplex( getArg( 2 ), getArg( 3 ) );
} else if ( getNArg() == 5 ) {
_x = getArg( 0 );
_y = getArg( 1 );
_qp = EvtComplex( getArg( 2 ), getArg( 3 ) );
_isRBWmodel = !getArg(
4 ); // RBW by default. If arg4 is set, do K-matrix.
} else {
EvtGenReport( EVTGEN_ERROR, "EvtD0mixDalitz" )
<< "Number of arguments for this model must be 0, 2, 4 or 5:"
<< std::endl
<< "[ x y ][ qp.re qp.im ][ doK-matrix ]" << std::endl
<< "Check your dec file." << std::endl;
exit( 1 );
}
}
checkSpinParent( _SCALAR );
checkSpinDaughter( 0, _SCALAR );
checkSpinDaughter( 1, _SCALAR );
checkSpinDaughter( 2, _SCALAR );
readPDGValues();
// Get the EvtId of the D0 and its (3) daughters.
EvtId parId = getParentId();
EvtId dau[3];
for ( int index = 0; index < 3; index++ )
dau[index] = getDaug( index );
if ( parId == _D0 ) // Look for K0bar h+ h-. The order must be K[0SL] h+ h-
for ( int index = 0; index < 3; index++ )
if ( ( dau[index] == _K0B ) || ( dau[index] == _KS ) ||
( dau[index] == _KL ) )
_d1 = index;
else if ( ( dau[index] == _PIP ) || ( dau[index] == _KP ) )
_d2 = index;
else if ( ( dau[index] == _PIM ) || ( dau[index] == _KM ) )
_d3 = index;
else
reportInvalidAndExit();
else if ( parId == _D0B ) // Look for K0 h+ h-. The order must be K[0SL] h- h+
for ( int index = 0; index < 3; index++ )
if ( ( dau[index] == _K0 ) || ( dau[index] == _KS ) ||
( dau[index] == _KL ) )
_d1 = index;
else if ( ( dau[index] == _PIM ) || ( dau[index] == _KM ) )
_d2 = index;
else if ( ( dau[index] == _PIP ) || ( dau[index] == _KP ) )
_d3 = index;
else
reportInvalidAndExit();
else
reportInvalidAndExit();
// If the D meson is a D0bar, the expressions should use p/q instead of q/p.
if ( parId == _D0B )
_qp = 1.0 / _qp;
// At this point, if parId is D0bar, the amplitude is the D0bar amplitude, the conjugated amplitude
// is the amplitude of the D0 decay, and _qp means p/q, so it is like changing the meaning of
// A <-> Abar, and p <-> q. It is just a trick so after this point the code for D0bar can be the
// same as the code for D0.
// Check if we're dealing with Ks pi pi or with Ks K K.
_isKsPiPi = false;
if ( dau[_d2] == _PIP || dau[_d2] == _PIM )
_isKsPiPi = true;
}
void EvtD0mixDalitz::decay( EvtParticle* part )
{
// Same structure for all of these decays.
part->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4R pA = part->getDaug( _d1 )->getP4();
EvtVector4R pB = part->getDaug( _d2 )->getP4();
EvtVector4R pC = part->getDaug( _d3 )->getP4();
// Squared invariant masses.
double m2AB = ( pA + pB ).mass2();
double m2AC = ( pA + pC ).mass2();
double m2BC = ( pB + pC ).mass2();
// Dalitz amplitudes of the decay of the particle and that of the antiparticle.
EvtComplex ampDalitz;
EvtComplex ampAntiDalitz;
if ( _isKsPiPi ) { // For Ks pi pi
EvtDalitzPoint point( _mKs, _mPi, _mPi, m2AB, m2BC, m2AC );
EvtDalitzPoint antiPoint( _mKs, _mPi, _mPi, m2AC, m2BC, m2AB );
ampDalitz = dalitzKsPiPi( point );
ampAntiDalitz = dalitzKsPiPi( antiPoint );
} else { // For Ks K K
EvtDalitzPoint point( _mKs, _mK, _mK, m2AB, m2BC, m2AC );
EvtDalitzPoint antiPoint( _mKs, _mK, _mK, m2AC, m2BC, m2AB );
ampDalitz = dalitzKsKK( point );
ampAntiDalitz = dalitzKsKK( antiPoint );
}
// Assume there's no direct CP violation.
EvtComplex barAOverA = ampAntiDalitz / ampDalitz;
// CP violation in the interference. _qp implements CP violation in the mixing.
EvtComplex chi = _qp * barAOverA;
// Generate a negative exponential life time. p( gt ) = ( 1 - y ) * e^{ - ( 1 - y ) gt }
double gt = -log( EvtRandom::Flat() ) / ( 1.0 - std::fabs( _y ) );
part->setLifetime( gt / _gamma );
// Compute time dependent amplitude.
EvtComplex amp = 0.5 * ampDalitz * exp( -std::fabs( _y ) * gt / 2.0 ) *
( ( 1.0 + chi ) * h1( gt ) + ( 1.0 - chi ) * h2( gt ) );
vertex( amp );
return;
}
void EvtD0mixDalitz::readPDGValues()
{
// Define the EvtIds.
_D0 = EvtPDL::getId( "D0" );
_D0B = EvtPDL::getId( "anti-D0" );
_KM = EvtPDL::getId( "K-" );
_KP = EvtPDL::getId( "K+" );
_K0 = EvtPDL::getId( "K0" );
_K0B = EvtPDL::getId( "anti-K0" );
_KL = EvtPDL::getId( "K_L0" );
_KS = EvtPDL::getId( "K_S0" );
_PIM = EvtPDL::getId( "pi-" );
_PIP = EvtPDL::getId( "pi+" );
// Read the relevant masses.
_mD0 = EvtPDL::getMass( _D0 );
_mKs = EvtPDL::getMass( _KS );
_mPi = EvtPDL::getMass( _PIP );
_mK = EvtPDL::getMass( _KP );
// Compute the decay rate from the parameter in the evt.pdl file.
_ctau = EvtPDL::getctau( EvtPDL::getId( "D0" ) );
_gamma = 1.0 / _ctau; // ALERT: Gamma is not 1 / tau.
}
EvtComplex EvtD0mixDalitz::dalitzKsPiPi( const EvtDalitzPoint& point )
{
static const EvtDalitzPlot plot( _mKs, _mPi, _mPi, _mD0 );
EvtComplex amp = 0.;
if ( _isRBWmodel ) {
// This corresponds to relativistic Breit-Wigner distributions. Not K-matrix.
// Defining resonances.
static EvtDalitzReso KStarm( plot, _BC, _AC, _VECTOR, 0.893606,
0.0463407, _RBW );
static EvtDalitzReso KStarp( plot, _BC, _AB, _VECTOR, 0.893606,
0.0463407, _RBW );
static EvtDalitzReso rho0( plot, _AC, _BC, _VECTOR, 0.7758, 0.1464, _GS );
static EvtDalitzReso omega( plot, _AC, _BC, _VECTOR, 0.78259, 0.00849,
_RBW );
static EvtDalitzReso f0_980( plot, _AC, _BC, _SCALAR, 0.975, 0.044, _RBW );
static EvtDalitzReso f0_1370( plot, _AC, _BC, _SCALAR, 1.434, 0.173,
_RBW );
static EvtDalitzReso f2_1270( plot, _AC, _BC, _TENSOR, 1.2754, 0.1851,
_RBW );
static EvtDalitzReso K0Starm_1430( plot, _BC, _AC, _SCALAR, 1.459,
0.175, _RBW );
static EvtDalitzReso K0Starp_1430( plot, _BC, _AB, _SCALAR, 1.459,
0.175, _RBW );
static EvtDalitzReso K2Starm_1430( plot, _BC, _AC, _TENSOR, 1.4256,
0.0985, _RBW );
static EvtDalitzReso K2Starp_1430( plot, _BC, _AB, _TENSOR, 1.4256,
0.0985, _RBW );
static EvtDalitzReso sigma( plot, _AC, _BC, _SCALAR, 0.527699, 0.511861,
_RBW );
static EvtDalitzReso sigma2( plot, _AC, _BC, _SCALAR, 1.03327,
0.0987890, _RBW );
static EvtDalitzReso KStarm_1680( plot, _BC, _AC, _VECTOR, 1.677, 0.205,
_RBW );
// Adding terms to the amplitude with their corresponding amplitude and phase terms.
amp += EvtComplex( 0.848984, 0.893618 );
amp += EvtComplex( -1.16356, 1.19933 ) * KStarm.evaluate( point );
amp += EvtComplex( 0.106051, -0.118513 ) * KStarp.evaluate( point );
amp += EvtComplex( 1.0, 0.0 ) * rho0.evaluate( point );
amp += EvtComplex( -0.0249569, 0.0388072 ) * omega.evaluate( point );
amp += EvtComplex( -0.423586, -0.236099 ) * f0_980.evaluate( point );
amp += EvtComplex( -2.16486, 3.62385 ) * f0_1370.evaluate( point );
amp += EvtComplex( 0.217748, -0.133327 ) * f2_1270.evaluate( point );
amp += EvtComplex( 1.62128, 1.06816 ) * K0Starm_1430.evaluate( point );
amp += EvtComplex( 0.148802, 0.0897144 ) * K0Starp_1430.evaluate( point );
amp += EvtComplex( 1.15489, -0.773363 ) * K2Starm_1430.evaluate( point );
amp += EvtComplex( 0.140865, -0.165378 ) * K2Starp_1430.evaluate( point );
amp += EvtComplex( -1.55556, -0.931685 ) * sigma.evaluate( point );
amp += EvtComplex( -0.273791, -0.0535596 ) * sigma2.evaluate( point );
amp += EvtComplex( -1.69720, 0.128038 ) * KStarm_1680.evaluate( point );
} else {
// This corresponds to the complete model (RBW, GS, LASS and K-matrix).
// Defining resonances.
static EvtDalitzReso KStarm( plot, _BC, _AC, _VECTOR, 0.893619,
0.0466508, _RBW );
static EvtDalitzReso KStarp( plot, _BC, _AB, _VECTOR, 0.893619,
0.0466508, _RBW );
static EvtDalitzReso rho0( plot, _AC, _BC, _VECTOR, 0.7758, 0.1464, _GS );
static EvtDalitzReso omega( plot, _AC, _BC, _VECTOR, 0.78259, 0.00849,
_RBW );
static EvtDalitzReso f2_1270( plot, _AC, _BC, _TENSOR, 1.2754, 0.1851,
_RBW );
static EvtDalitzReso K0Starm_1430( plot, _AC, 1.46312, 0.232393, 1.0746,
-1.83214, .803516, 2.32788, 1.0,
-5.31306 ); // LASS
static EvtDalitzReso K0Starp_1430( plot, _AB, 1.46312, 0.232393, 1.0746,
-1.83214, .803516, 2.32788, 1.0,
-5.31306 ); // LASS
static EvtDalitzReso K2Starm_1430( plot, _BC, _AC, _TENSOR, 1.4256,
0.0985, _RBW );
static EvtDalitzReso K2Starp_1430( plot, _BC, _AB, _TENSOR, 1.4256,
0.0985, _RBW );
static EvtDalitzReso KStarm_1680( plot, _BC, _AC, _VECTOR, 1.677, 0.205,
_RBW );
// Defining K-matrix.
static EvtComplex fr12( 1.87981, -0.628378 );
static EvtComplex fr13( 4.3242, 2.75019 );
static EvtComplex fr14( 3.22336, 0.271048 );
static EvtComplex fr15( 0.0, 0.0 );
static EvtDalitzReso Pole1( plot, _BC, "Pole1", _KMAT, fr12, fr13, fr14,
fr15, -0.0694725 );
static EvtDalitzReso Pole2( plot, _BC, "Pole2", _KMAT, fr12, fr13, fr14,
fr15, -0.0694725 );
static EvtDalitzReso Pole3( plot, _BC, "Pole3", _KMAT, fr12, fr13, fr14,
fr15, -0.0694725 );
static EvtDalitzReso Pole4( plot, _BC, "Pole4", _KMAT, fr12, fr13, fr14,
fr15, -0.0694725 );
static EvtDalitzReso kmatrix( plot, _BC, "f11prod", _KMAT, fr12, fr13,
fr14, fr15, -0.0694725 );
// Adding terms to the amplitude with their corresponding amplitude and phase terms.
amp += EvtComplex( -1.31394, 1.14072 ) * KStarm.evaluate( point );
amp += EvtComplex( 0.116239, -0.107287 ) * KStarp.evaluate( point );
amp += EvtComplex( 1.0, 0.0 ) * rho0.evaluate( point );
amp += EvtComplex( -0.0313343, 0.0424013 ) * omega.evaluate( point );
amp += EvtComplex( 0.559412, -0.232336 ) * f2_1270.evaluate( point );
amp += EvtComplex( 7.35400, -3.67637 ) * K0Starm_1430.evaluate( point );
amp += EvtComplex( 0.255913, -0.190459 ) * K0Starp_1430.evaluate( point );
amp += EvtComplex( 1.05397, -0.936297 ) * K2Starm_1430.evaluate( point );
amp += EvtComplex( -0.00760136, -0.0908624 ) *
K2Starp_1430.evaluate( point );
amp += EvtComplex( -1.45336, -0.164494 ) * KStarm_1680.evaluate( point );
amp += EvtComplex( -1.81830, 9.10680 ) * Pole1.evaluate( point );
amp += EvtComplex( 10.1751, 3.87961 ) * Pole2.evaluate( point );
amp += EvtComplex( 23.6569, -4.94551 ) * Pole3.evaluate( point );
amp += EvtComplex( 0.0725431, -9.16264 ) * Pole4.evaluate( point );
amp += EvtComplex( -2.19449, -7.62666 ) * kmatrix.evaluate( point );
amp *= 0.97; // Multiply by a constant in order to use the same maximum as RBW model.
}
return amp;
}
EvtComplex EvtD0mixDalitz::dalitzKsKK( const EvtDalitzPoint& point )
{
static const EvtDalitzPlot plot( _mKs, _mK, _mK, _mD0 );
// Defining resonances.
static EvtDalitzReso a00_980( plot, _AC, _BC, _SCALAR, 0.999, _RBW,
0.550173, 0.324, _EtaPic );
static EvtDalitzReso phi( plot, _AC, _BC, _VECTOR, 1.01943, 0.00459319, _RBW );
static EvtDalitzReso a0p_980( plot, _AC, _AB, _SCALAR, 0.999, _RBW,
0.550173, 0.324, _EtaPic );
static EvtDalitzReso f0_1370( plot, _AC, _BC, _SCALAR, 1.350, 0.265, _RBW );
static EvtDalitzReso a0m_980( plot, _AB, _AC, _SCALAR, 0.999, _RBW,
0.550173, 0.324, _EtaPic );
static EvtDalitzReso f0_980( plot, _AC, _BC, _SCALAR, 0.965, _RBW, 0.695,
0.165, _PicPicKK );
static EvtDalitzReso f2_1270( plot, _AC, _BC, _TENSOR, 1.2754, 0.1851, _RBW );
static EvtDalitzReso a00_1450( plot, _AC, _BC, _SCALAR, 1.474, 0.265, _RBW );
static EvtDalitzReso a0p_1450( plot, _AC, _AB, _SCALAR, 1.474, 0.265, _RBW );
static EvtDalitzReso a0m_1450( plot, _AB, _AC, _SCALAR, 1.474, 0.265, _RBW );
// Adding terms to the amplitude with their corresponding amplitude and phase terms.
EvtComplex amp( 0., 0. ); // Phase space amplitude.
amp += EvtComplex( 1.0, 0.0 ) * a00_980.evaluate( point );
amp += EvtComplex( -0.126314, 0.188701 ) * phi.evaluate( point );
amp += EvtComplex( -0.561428, 0.0135338 ) * a0p_980.evaluate( point );
amp += EvtComplex( 0.035, -0.00110488 ) * f0_1370.evaluate( point );
amp += EvtComplex( -0.0872735, 0.0791190 ) * a0m_980.evaluate( point );
amp += EvtComplex( 0.0, 0.0 ) * f0_980.evaluate( point );
amp += EvtComplex( 0.257341, -0.0408343 ) * f2_1270.evaluate( point );
amp += EvtComplex( -0.0614342, -0.649930 ) * a00_1450.evaluate( point );
amp += EvtComplex( -0.104629, 0.830120 ) * a0p_1450.evaluate( point );
amp += EvtComplex( 0.0, 0.0 ) * a0m_1450.evaluate( point );
return 2.8 *
amp; // Multiply by 2.8 in order to reuse the same probmax as Ks pi pi.
}
// < f | H | D^0 (t) > = 1/2 * [ ( 1 + \chi_f ) * A_f * e_1(gt) + ( 1 - \chi_f ) * A_f * e_2(gt) ]
// < f | H | D^0 (t) > = 1/2 * exp( -gamma t / 2 ) * [ ( 1 + \chi_f ) * A_f * h_1(t) + ( 1 - \chi_f ) * A_f * h_2(t) ]
// e{1,2}( gt ) = exp( -gt / 2 ) * h{1,2}( gt ).
EvtComplex EvtD0mixDalitz::h1( const double& gt ) const
{
return exp( -EvtComplex( _y, _x ) * gt / 2. );
}
EvtComplex EvtD0mixDalitz::h2( const double& gt ) const
{
return exp( EvtComplex( _y, _x ) * gt / 2. );
}
diff --git a/src/EvtGenModels/EvtDDalitz.cpp b/src/EvtGenModels/EvtDDalitz.cpp
index 995e4a5..73ffe65 100644
--- a/src/EvtGenModels/EvtDDalitz.cpp
+++ b/src/EvtGenModels/EvtDDalitz.cpp
@@ -1,886 +1,866 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtDDalitz.cc
-//
-// Description: Routine to handle three-body decays of D0/D0_bar or D+/D-
-//
-// Modification history:
-//
-// NK September 3, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtDDalitz.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtDecayTable.hh"
#include "EvtGenBase/EvtFlatte.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtResonance.hh"
#include "EvtGenBase/EvtResonance2.hh"
#include <algorithm>
#include <stdlib.h>
#include <string>
#include <utility>
#include <vector>
using std::endl;
std::string EvtDDalitz::getName()
{
return "D_DALITZ";
}
EvtDecayBase* EvtDDalitz::clone()
{
return new EvtDDalitz;
}
bool isNeutralKaon( const EvtId& theId )
{
// See if the particle id matches that for a neutral kaon
bool result( false );
static EvtId K0 = EvtPDL::getId( "K0" );
static EvtId KB = EvtPDL::getId( "anti-K0" );
static EvtId KL = EvtPDL::getId( "K_L0" );
static EvtId KS = EvtPDL::getId( "K_S0" );
// Compare EvtId integers, which are unique for each particle type,
// corresponding to the order particles appear in the "evt.pdl" table.
// Aliased particles will have the same ids (but different "alias" values)
if ( theId == KB || theId == K0 || theId == KL || theId == KS ) {
result = true;
}
return result;
}
bool compareIds( const std::pair<EvtId, int>& left,
const std::pair<EvtId, int>& right )
{
// Compare id numbers to achieve the ordering KB/K0/KS/KL, KM, PIM, PI0, PIP, KP, i.e.
// neutral kaon first, then normal PDG id ordering for the other particles.
// The current 12 decay modes do not use two or more neutral kaons. If in the future
// such modes are added, the ordering will be KM, KB, PIM, PI0, KL, PIP, KS, K0, KP
bool result( false );
if ( isNeutralKaon( left.first ) == true &&
isNeutralKaon( right.first ) == false ) {
// Left is a neutral kaon, right is not
result = true;
} else if ( isNeutralKaon( left.first ) == false &&
isNeutralKaon( right.first ) == true ) {
// Right is a neutral kaon, left is not
result = false;
} else {
// Just compare PDG integers to achieve ascending order
int leftPDGid = EvtPDL::getStdHep( left.first );
int rightPDGid = EvtPDL::getStdHep( right.first );
if ( leftPDGid < rightPDGid ) {
result = true;
}
}
return result;
}
void EvtDDalitz::init()
{
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DSP = EvtPDL::getId( "D_s+" );
static EvtId DSM = EvtPDL::getId( "D_s-" );
static EvtId KM = EvtPDL::getId( "K-" );
static EvtId KP = EvtPDL::getId( "K+" );
//static EvtId K0=EvtPDL::getId("K0");
//static EvtId KB=EvtPDL::getId("anti-K0");
//static EvtId KL=EvtPDL::getId("K_L0");
//static EvtId KS=EvtPDL::getId("K_S0");
static EvtId PIM = EvtPDL::getId( "pi-" );
static EvtId PIP = EvtPDL::getId( "pi+" );
static EvtId PI0 = EvtPDL::getId( "pi0" );
static double MPI = EvtPDL::getMeanMass( PI0 );
static double MKP = EvtPDL::getMeanMass( KP );
// check that there are 0 arguments and 3 daughters
checkNArg( 0 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
checkSpinDaughter( 2, EvtSpinType::SCALAR );
EvtId parnum = getParentId();
/*
* To decide which decay we have, we take the list of daughters (or charge
* conjugate of daughters for D-, D0B or Ds-), sort these in the order
* KB/K0/KS/KL, KM, PIM, PI0, PIP, KP, keeping track which daughter is which,
* and at the end have a single if statement picking up the decay and assigning
* the correct order for the daughters (same condition used for charm and anti-charm).
* If we have two or more neutral kaons in the daughter list, then the compareIds()
* ordering will simply follow ascending PDG ids: KM, KB, PIM, PI0, KL, PIP, KS, K0, KP
*/
std::vector<std::pair<EvtId, int>> daughters;
if ( parnum == D0 || parnum == DP || parnum == DSP ) {
for ( int i = 0; i < 3; ++i ) {
daughters.push_back( std::make_pair( getDaug( i ), i ) );
}
} else {
for ( int i = 0; i < 3; ++i ) {
daughters.push_back(
std::make_pair( EvtPDL::chargeConj( getDaug( i ) ), i ) );
}
}
// Sort daughters, they will end up in the order KB/K0/KS/KL, KM, PIM, PI0, PIP, KP
// for the current 12 decay modes
std::sort( daughters.begin(), daughters.end(), compareIds );
/*
std::cout << "DDALITZ sorting: ";
for (int i=0; i<3; ++i ) {
std::cout << EvtPDL::getStdHep(daughters[i].first) << " ";
}
std::cout << std::endl;
*/
_flag = 0;
// D0 or anti-D0 modes. We only need to check the particle modes, since anti-particle
// modes have their ordered daughter ids charged-conjugated above
if ( parnum == D0 || parnum == D0B ) {
// Look for D0 to K- pi+ pi0
if ( daughters[0].first == KM && daughters[1].first == PI0 &&
daughters[2].first == PIP ) {
_flag = 4;
_d1 = daughters[0].second;
_d2 = daughters[2].second;
_d3 = daughters[1].second;
}
// Look for D0 to KB pi- pi+
if ( isNeutralKaon( daughters[0].first ) == true &&
daughters[1].first == PIM && daughters[2].first == PIP ) {
_flag = 3;
_d1 = daughters[0].second;
_d2 = daughters[1].second;
_d3 = daughters[2].second;
}
// Look for D0 to KB K+ K-
if ( isNeutralKaon( daughters[0].first ) == true &&
daughters[1].first == KM && daughters[2].first == KP ) {
_flag = 5;
_d1 = daughters[0].second;
_d2 = daughters[2].second;
_d3 = daughters[1].second;
}
// Look for D0 to pi- pi+ pi0
if ( daughters[0].first == PIM && daughters[1].first == PI0 &&
daughters[2].first == PIP ) {
_flag = 12;
_d1 = daughters[0].second;
_d2 = daughters[2].second;
_d3 = daughters[1].second;
}
}
// D+ (or D-) modes
if ( parnum == DP || parnum == DM ) {
// Look for D+ to KB pi+ pi0
if ( isNeutralKaon( daughters[0].first ) == true &&
daughters[1].first == PI0 && daughters[2].first == PIP ) {
_flag = 2;
_d1 = daughters[0].second;
_d2 = daughters[2].second;
_d3 = daughters[1].second;
}
// Look for D+ to K- pi+ pi+
if ( daughters[0].first == KM && daughters[1].first == PIP &&
daughters[2].first == PIP ) {
_flag = 1;
_d1 = daughters[0].second;
_d2 = daughters[1].second;
_d3 = daughters[2].second;
}
// Look for D+ to K- K+ pi+
if ( daughters[0].first == KM && daughters[1].first == PIP &&
daughters[2].first == KP ) {
_flag = 7;
_d1 = daughters[0].second;
_d2 = daughters[2].second;
_d3 = daughters[1].second;
}
// Look for D+ to pi- pi+ K+
if ( daughters[0].first == PIM && daughters[1].first == PIP &&
daughters[2].first == KP ) {
_flag = 8;
_d1 = daughters[0].second;
_d2 = daughters[1].second;
_d3 = daughters[2].second;
}
// Look for D+ to pi- pi+ pi+
if ( daughters[0].first == PIM && daughters[1].first == PIP &&
daughters[2].first == PIP ) {
_flag = 10;
_d1 = daughters[0].second;
_d2 = daughters[1].second;
_d3 = daughters[2].second;
}
}
// Ds+ (or Ds-) modes
if ( parnum == DSP || parnum == DSM ) {
// Look for Ds+ to K- K+ pi+
if ( daughters[0].first == KM && daughters[1].first == PIP &&
daughters[2].first == KP ) {
_flag = 6;
_d1 = daughters[0].second;
_d2 = daughters[2].second;
_d3 = daughters[1].second;
}
// Look for Ds+ to pi- pi+ K+
if ( daughters[0].first == PIM && daughters[1].first == PIP &&
daughters[2].first == KP ) {
_flag = 9;
_d1 = daughters[0].second;
_d2 = daughters[1].second;
_d3 = daughters[2].second;
}
// Look for Ds+ to pi- pi+ pi+
if ( daughters[0].first == PIM && daughters[1].first == PIP &&
daughters[2].first == PIP ) {
_flag = 11;
_d1 = daughters[0].second;
_d2 = daughters[1].second;
_d3 = daughters[2].second;
}
}
if ( _flag == 6 ) {
_kkpi_params.push_back( EvtFlatteParam( MPI, MPI, 0.406 ) );
_kkpi_params.push_back( EvtFlatteParam( MKP, MKP, 0.800 ) );
}
if ( _flag == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtDDaltiz: Invalid mode." << endl;
assert( 0 );
}
/*
EvtGenReport(EVTGEN_INFO,"EvtGen") << "DDALITZ ordering for " << parnum.getName()
<< " with mode = " << _flag << ": "
<< getDaug(_d1).getName() << " "
<< getDaug(_d2).getName() << " "
<< getDaug(_d3).getName() << std::endl;
*/
}
void EvtDDalitz::initProbMax()
{
// probmax different for different modes!
if ( _flag == 1 ) {
setProbMax( 2500.0 );
}
if ( _flag == 2 ) {
setProbMax( 150.0 );
}
if ( _flag == 3 ) {
setProbMax( 3000.0 );
}
if ( _flag == 4 ) {
setProbMax( 600.0 );
}
if ( _flag == 5 ) {
setProbMax( 2500000.0 );
}
if ( _flag == 6 ) {
setProbMax( 45000.0 );
}
if ( _flag == 7 ) {
setProbMax( 35000.0 );
}
if ( _flag == 8 ) {
setProbMax( 2500.0 );
}
if ( _flag == 9 ) {
setProbMax( 1700.0 );
}
if ( _flag == 10 ) {
setProbMax( 1300.0 );
}
if ( _flag == 11 ) {
setProbMax( 2200.0 );
}
if ( _flag == 12 ) {
setProbMax( 1000.0 );
}
}
void EvtDDalitz::decay( EvtParticle* p )
{
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId D0 = EvtPDL::getId( "D0" );
double oneby2 = 0.707106782;
bool isBToDK = false;
if ( p->getParent() ) {
EvtId parId = p->getParent()->getId();
if ( ( BP == parId ) || ( BM == parId ) || ( B0 == parId ) ||
( B0B == parId ) )
if ( EvtDecayTable::getInstance()
->getDecayFunc( p->getParent() )
->getName() == "BTODDALITZCPK" )
isBToDK = true;
}
//same structure for all of these decays
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4R moms1 = p->getDaug( _d1 )->getP4();
EvtVector4R moms2 = p->getDaug( _d2 )->getP4();
EvtVector4R moms3 = p->getDaug( _d3 )->getP4();
EvtVector4R p4_p;
p4_p.set( p->mass(), 0.0, 0.0, 0.0 );
EvtComplex amp( 1.0, 0.0 );
//now determine which D and which decay
//data from Anjos et al, Phys.Rev.D 1993, v.48,num.1,p.56 (E691 resuls)
//for D+ -> K- pi+ pi+, and from Adler et al, Phys.Lett. B196 (1987), 107
//(Mark III results) for D+ -> K0bar pi+ pi0.
//CLEO results for D0->k-pi+pi0
if ( _flag == 1 ) {
// D+ -> K- pi+ pi+ decay, or charge conjugate
// //Anjos etal e691 - Phys Rev D48, 56 (1993)
// EvtResonance DplusRes11(p4_p,moms1,moms2,0.78,-60.0,0.0498,0.89610,1);
// EvtResonance DplusRes12(p4_p,moms3,moms1,0.78,-60.0,0.0498,0.89610,1);//K*(892)
// EvtResonance DplusRes21(p4_p,moms1,moms2,0.53,132.0,0.287,1.429,0);
// EvtResonance DplusRes22(p4_p,moms3,moms1,0.53,132.0,0.287,1.429,0);//K*(1430)
// EvtResonance DplusRes31(p4_p,moms1,moms2,0.47,-51.0,0.323,1.714,1);
// EvtResonance DplusRes32(p4_p,moms3,moms1,0.47,-51.0,0.323,1.714,1);//K*(1680)
// amp = amp + oneby2*(-DplusRes11.resAmpl()+DplusRes12.resAmpl()) + oneby2*(DplusRes21.resAmpl() + DplusRes22.resAmpl()) + oneby2*(-DplusRes31.resAmpl()+ DplusRes32.resAmpl());
// EvtResonance DplusRes11(p4_p,moms1,moms2,amp,phase,width,mass,L);
//CLEO-c p15,arxiv:0802.4214v2
EvtResonance2 DplusRes11( p4_p, moms1, moms2, 1.0, 0.0, 0.0503, 0.896,
1, true );
EvtResonance2 DplusRes12( p4_p, moms3, moms1, 1.0, 0.0, 0.0503, 0.896,
1, true ); //K*(892)
EvtResonance2 DplusRes21( p4_p, moms1, moms2, 3.0, 49.7 - 180.0, 0.164,
1.463, 0 );
EvtResonance2 DplusRes22( p4_p, moms3, moms1, 3.0, 49.7 - 180.0, 0.164,
1.463, 0 ); //K*(1430)
EvtResonance2 DplusRes31( p4_p, moms1, moms2, 0.96, -29.9 + 180.0,
0.109, 1.4324, 2, true );
EvtResonance2 DplusRes32( p4_p, moms3, moms1, 0.96, -29.9 + 180.0,
0.109, 1.4324, 2, true ); // K*_2(1430)
EvtResonance2 DplusRes41( p4_p, moms1, moms2, 6.5, 29.0, 0.323, 1.717,
1, true );
EvtResonance2 DplusRes42( p4_p, moms3, moms1, 6.5, 29.0, 0.323, 1.717,
1, true ); //K*(1680)
EvtResonance2 DplusRes51( p4_p, moms1, moms2, 5.01, -163.7 + 180.0,
0.470, 0.809, 0 );
EvtResonance2 DplusRes52( p4_p, moms3, moms1, 5.01, -163.7 + 180.0,
0.470, 0.809, 0 ); //kappa(800)
double pi180inv = 1.0 / EvtConst::radToDegrees;
amp = EvtComplex( 7.4 * cos( ( -18.4 + 180.0 ) * pi180inv ),
7.4 * sin( ( -18.4 + 180.0 ) * pi180inv ) ) +
oneby2 * ( -DplusRes11.resAmpl() + DplusRes12.resAmpl() ) +
oneby2 * ( DplusRes21.resAmpl() + DplusRes22.resAmpl() ) +
oneby2 * ( DplusRes31.resAmpl() + DplusRes32.resAmpl() ) +
oneby2 * ( -DplusRes41.resAmpl() + DplusRes42.resAmpl() ) +
oneby2 * ( DplusRes51.resAmpl() + DplusRes52.resAmpl() );
//amp = amp+oneby2*(-DplusRes11.resAmpl()+DplusRes12.resAmpl());
}
if ( _flag == 2 ) {
//have a D+ -> K0bar pi+ pi0 decay
//adler etal MarkIII - Phys Lett B196, 107 (1987)
// Results in this paper:
// Kbar rho+ FitFraction = 68+/-8+/-12 Phase 0
// Kbar* pi+ 19+/-6+/-6 43+/-23
// nonres 13+/-7+/-8 250+/-19
// These numbers below seem not to be exactly the same
// the phases are equiv to -106=254 and 41
//
EvtResonance DplusKpipi0Res1( p4_p, moms2, moms3, 1.00, 0.00, 0.1512,
0.7699, 1 ); //rho+
EvtResonance DplusKpipi0Res2( p4_p, moms3, moms1, 0.8695, 0.7191,
0.0498, 0.89159, 1 ); //K*0
amp = 0.9522 * EvtComplex( cos( -1.8565 ), sin( -1.8565 ) ) +
1.00 * DplusKpipi0Res1.relBrWig( 0 ) +
0.8695 * EvtComplex( cos( 0.7191 ), sin( 0.7191 ) ) *
DplusKpipi0Res2.relBrWig( 1 );
}
if ( _flag == 3 ) {
// D0 -> K0bar pi- pi+ & CC
// If it does not come from a B->DK, decay it as D0 or D0bar separately
// if p4_p is D0, moms1 is K0, moms2 is pi-, moms3 is pi+
// if p4_p is D0bar, moms1 is K0, moms2 is pi+, moms3 is pi-
if ( isBToDK ) {
// Gamma angle in rad.
double gamma = EvtDecayTable::getInstance()
->getDecayFunc( p->getParent() )
->getArg( 0 );
// Strong phase in rad.
double delta = EvtDecayTable::getInstance()
->getDecayFunc( p->getParent() )
->getArg( 1 );
// Ratio between B->D0K and B->D0barK
double A = EvtDecayTable::getInstance()
->getDecayFunc( p->getParent() )
->getArg( 2 );
EvtComplex Factor( fabs( A ) * cos( delta ),
fabs( A ) * sin( delta ) );
if ( ( p->getParent()->getId() == BP ) ||
( p->getParent()->getId() == B0 ) ) {
// the ratio D/Dbar
Factor = Factor * EvtComplex( cos( gamma ), sin( gamma ) );
if ( p->getId() == D0 ) {
// the flavor of the particle has no meaning. But we need
// it to know which daughter is pi+ or pi-
// M( B+ or B0 ) = f(Dbar) + factor * f(D)
// f(Dbar) = amplDtoK0PiPi(pD, K0, pi+, pi-)
// f(D) = amplDtoK0PiPi(pD, K0, pi-, pi+)
// Then ...
amp = amplDtoK0PiPi( p4_p, moms1, moms3, moms2 ) +
Factor * amplDtoK0PiPi( p4_p, moms1, moms2, moms3 );
} else {
amp = amplDtoK0PiPi( p4_p, moms1, moms2, moms3 ) +
Factor * amplDtoK0PiPi( p4_p, moms1, moms3, moms2 );
}
} else if ( ( p->getParent()->getId() == BM ) ||
( p->getParent()->getId() == B0B ) ) {
Factor = Factor * EvtComplex( cos( gamma ), -sin( gamma ) );
// here M( B- or B0bar ) = f(D) + factor * f(Dbar) then ...
if ( p->getId() == D0 ) {
amp = amplDtoK0PiPi( p4_p, moms1, moms2, moms3 ) +
Factor * amplDtoK0PiPi( p4_p, moms1, moms3, moms2 );
} else {
amp = amplDtoK0PiPi( p4_p, moms1, moms3, moms2 ) +
Factor * amplDtoK0PiPi( p4_p, moms1, moms2, moms3 );
}
}
} else {
amp = amplDtoK0PiPi( p4_p, moms1, moms2, moms3 );
}
}
if ( _flag == 4 ) {
// D0 to K- pi+ pi0
EvtResonance2 DKpipi0Res1( p4_p, moms2, moms3, 1.0, 0.0, 0.1507, 0.770,
1 ); //rho
EvtResonance2 DKpipi0Res2( p4_p, moms1, moms2, 0.39, -0.2, 0.0505,
0.8961, 1 ); //k*0
EvtResonance2 DKpipi0Res3( p4_p, moms1, moms3, 0.44, 163.0, 0.050,
0.8915, 1 ); //k*-
EvtResonance2 DKpipi0Res4( p4_p, moms1, moms3, 0.77, 55.5, 0.294, 1.412,
0 ); //k01430-
EvtResonance2 DKpipi0Res5( p4_p, moms1, moms2, 0.85, 166.0, 0.294,
1.412, 0 ); //k01430bar
EvtResonance2 DKpipi0Res6( p4_p, moms2, moms3, 2.5, 171.0, 0.240, 1.700,
1 ); //rho1700
EvtResonance2 DKpipi0Res7( p4_p, moms1, moms3, 2.5, 103.0, 0.322, 1.717,
1 ); //K*1680-
double pi180inv = 1.0 / EvtConst::radToDegrees;
amp = EvtComplex( 1.75 * cos( 31.2 * pi180inv ),
1.75 * sin( 31.2 * pi180inv ) ) +
DKpipi0Res1.resAmpl() + DKpipi0Res2.resAmpl() +
DKpipi0Res3.resAmpl() + DKpipi0Res4.resAmpl() +
DKpipi0Res5.resAmpl() + DKpipi0Res6.resAmpl() +
DKpipi0Res7.resAmpl();
}
if ( _flag == 5 ) {
// D0 -> K0bar K+ K- & CC
// If it does not come from a B->DK, decay it as D0 or D0bar separately
// if p4_p is D0, moms1 is K0, moms2 is pi-, moms3 is pi+
// if p4_p is D0bar, moms1 is K0, moms2 is pi+, moms3 is pi-
if ( isBToDK ) {
// Gamma angle in rad.
double gamma = EvtDecayTable::getInstance()
->getDecayFunc( p->getParent() )
->getArg( 0 );
// Strong phase in rad.
double delta = EvtDecayTable::getInstance()
->getDecayFunc( p->getParent() )
->getArg( 1 );
// Ratio between B->D0K and B->D0barK
double A = EvtDecayTable::getInstance()
->getDecayFunc( p->getParent() )
->getArg( 2 );
EvtComplex Factor( fabs( A ) * cos( delta ),
fabs( A ) * sin( delta ) );
if ( ( p->getParent()->getId() == BP ) ||
( p->getParent()->getId() == B0 ) ) {
// the ratio D/Dbar
Factor = Factor * EvtComplex( cos( gamma ), sin( gamma ) );
if ( p->getId() == D0 ) {
// the flavor of the particle has no meaning. But we need
// it to know which daughter is pi+ or pi-
// M( B+ or B0 ) = f(Dbar) + factor * f(D)
// f(Dbar) = amplDtoK0PiPi(pD, K0, K+, K-)
// f(D) = amplDtoK0PiPi(pD, K0, K-, K+)
// Then ...
amp = amplDtoK0KK( p4_p, moms1, moms3, moms2 ) +
Factor * amplDtoK0KK( p4_p, moms1, moms2, moms3 );
} else {
amp = amplDtoK0KK( p4_p, moms1, moms2, moms3 ) +
Factor * amplDtoK0KK( p4_p, moms1, moms3, moms2 );
}
} else if ( ( p->getParent()->getId() == BM ) ||
( p->getParent()->getId() == B0B ) ) {
Factor = Factor * EvtComplex( cos( gamma ), -sin( gamma ) );
// here M( B- or B0bar ) = f(D) + factor * f(Dbar) then ...
if ( p->getId() == D0 ) {
amp = amplDtoK0KK( p4_p, moms1, moms2, moms3 ) +
Factor * amplDtoK0KK( p4_p, moms1, moms3, moms2 );
} else {
amp = amplDtoK0KK( p4_p, moms1, moms3, moms2 ) +
Factor * amplDtoK0KK( p4_p, moms1, moms2, moms3 );
}
}
} else {
amp = amplDtoK0KK( p4_p, moms1, moms2, moms3 );
}
}
// Ds+ -> K- K+ pi+
//Babar, arxiv:1011.4190
if ( _flag == 6 ) {
EvtResonance2 DsKKpiRes1( p4_p, moms3, moms1, 1.0, 0.0, 0.0455, 0.8944,
1, true ); // K*(892)
EvtResonance2 DsKKpiRes2( p4_p, moms3, moms1, 1.48, 138., 0.290, 1.414,
0 ); // K*_0(1430)
EvtFlatte DsKKpiRes3( p4_p, moms1, moms2, 5.07, 156., 0.965,
_kkpi_params ); // f_0(980)
EvtResonance2 DsKKpiRes4( p4_p, moms1, moms2, 1.15, -10., 0.00426,
1.019455, 1, true ); // phi(1020)
EvtResonance2 DsKKpiRes5( p4_p, moms1, moms2, 1.28, 53., 0.265, 1.350,
0 ); // f_0(1370)
EvtResonance2 DsKKpiRes6( p4_p, moms1, moms2, 1.19, 87., 0.137, 1.724,
0 ); // f_0(1710)
amp = DsKKpiRes1.resAmpl() + DsKKpiRes2.resAmpl() + DsKKpiRes3.resAmpl() +
DsKKpiRes4.resAmpl() + DsKKpiRes5.resAmpl() + DsKKpiRes6.resAmpl();
}
//D+ -> K- K+ pi+
//CLEO PRD 78, 072003 (2008) Fit A
if ( _flag == 7 ) {
EvtResonance2 DpKKpiRes1( p4_p, moms3, moms1, 1.0, 0.0, 0.0503, 0.8960,
1, true ); // K*(892)
EvtResonance2 DpKKpiRes2( p4_p, moms3, moms1, 3.7, 73.0, 0.290, 1.414,
0 ); // K*_0(1430)
EvtResonance2 DpKKpiRes3( p4_p, moms1, moms2, 1.189, -179.0 + 180.0,
0.00426, 1.019455, 1, true ); // phi(1020)
EvtResonance2 DpKKpiRes4( p4_p, moms1, moms2, 1.72, 123., 0.265, 1.474,
0 ); // a_0(1450)
EvtResonance2 DpKKpiRes5( p4_p, moms1, moms2, 1.9, -52.0 + 180.0, 0.15,
1.68, 1, true ); // phi(1680)
EvtResonance2 DpKKpiRes6( p4_p, moms3, moms1, 6.4, 150., 0.109, 1.4324,
2, true ); // K*_2(1430)
double pi180inv = 1.0 / EvtConst::radToDegrees;
amp = EvtComplex( 5.1 * cos( ( 53.0 ) * pi180inv ),
5.1 * sin( ( 53.0 ) * pi180inv ) ) +
DpKKpiRes1.resAmpl() + DpKKpiRes2.resAmpl() + DpKKpiRes3.resAmpl() +
DpKKpiRes4.resAmpl() + DpKKpiRes5.resAmpl() + DpKKpiRes6.resAmpl();
}
//D+ -> pi- pi+ K+ WS (DCS)
//FOCUS PLB 601 10 (2004) ; amplitudes there are individually normalized (although not explicit in the paper)
// thus the magnitudes appearing below come from dividing the ones appearing in the paper by the sqrt of the
// integral over the DP of the corresponding squared amplitude. Writing as pi- pi+ K+ so pipi resonances are (12)
// and Kpi resonances are (31); masses and widths corresponds to PDG 2010
if ( _flag == 8 ) {
EvtResonance2 DpKpipiDCSRes1( p4_p, moms1, moms2, 1.0, 0.0, 0.149,
0.775, 1, true ); // rho(770)
EvtResonance2 DpKpipiDCSRes2( p4_p, moms3, moms1, 1.0971, -167.1,
0.0487, 0.896, 1, true ); // K*(890)
EvtResonance2 DpKpipiDCSRes3( p4_p, moms1, moms2, 0.4738, -134.5, 0.059,
0.972, 0 ); // f0(980) as simple BW
EvtResonance2 DpKpipiDCSRes4( p4_p, moms3, moms1, 2.2688, 54.4, 0.109,
1.432, 2, true ); // K*2(1430)
amp = DpKpipiDCSRes1.resAmpl() + DpKpipiDCSRes2.resAmpl() +
DpKpipiDCSRes3.resAmpl() + DpKpipiDCSRes4.resAmpl();
}
//Ds+ -> pi- pi+ K+ WS (CS)
//FOCUS PLB 601 10 (2004) ; amplitudes there are individually normalized (although not explicit in the paper)
// thus the magnitudes appearing below come from dividing the ones appearing in the paper by the sqrt of the
// integral over the DP of the corresponding squared amplitude. Writing as pi- pi+ K+ so pipi resonances are (12)
// and Kpi resonances are (31); masses and widths corresponds to PDG 2010
// PROBLEM: by simply doing the procedure for D+, the resulting DP and projections do not resemble what is
// in the paper; the best model is by adding 180 to the vector Kpi resonances
if ( _flag == 9 ) {
EvtResonance2 DsKpipiCSRes1( p4_p, moms1, moms2, 1.0, 0.0, 0.149, 0.775,
1, true ); // rho(770)
EvtResonance2 DsKpipiCSRes2( p4_p, moms3, moms1, 0.7236, -18.3, 0.0487,
0.896, 1, true ); // K*(890)
EvtResonance2 DsKpipiCSRes3( p4_p, moms3, moms1, 2.711, 145.2, 0.232,
1.414, 1, true ); // K*(1410)
EvtResonance2 DsKpipiCSRes4( p4_p, moms3, moms1, 1.7549, 59.3, 0.270,
1.425, 0 ); // K*0(1430)
EvtResonance2 DsKpipiCSRes5( p4_p, moms1, moms2, 7.0589, -151.7, 0.400,
1.465, 1, true ); // rho(1450)
double pi180inv = 1.0 / EvtConst::radToDegrees;
amp = EvtComplex( 3.98 * cos( 43.1 * pi180inv ),
3.98 * sin( 43.1 * pi180inv ) ) +
DsKpipiCSRes1.resAmpl() + DsKpipiCSRes2.resAmpl() +
DsKpipiCSRes3.resAmpl() + DsKpipiCSRes4.resAmpl() +
DsKpipiCSRes5.resAmpl();
}
// D+ -> pi- pi+ pi+ from E791 [PRL 86 770 (2001)]
// masses and widths below correspond to what they used; there, the amplitudes were individually normalized
// (although not explicit) so magnitudes here are obtained after correcting for that
// Breit-Wigner has a factor of (-1) there which changes the relative phase of the NR wrt to the resonances
// thus the NR magnitude is set as negative
if ( _flag == 10 ) {
EvtResonance2 DppipipiRes11( p4_p, moms1, moms2, 1.0, 0.0, 0.150, 0.769,
1, true ); // rho(770)
EvtResonance2 DppipipiRes12( p4_p, moms3, moms1, 1.0, 0.0, 0.150, 0.769,
1, true ); // rho(770)
EvtResonance2 DppipipiRes21( p4_p, moms1, moms2, 2.2811, 205.7, 0.324,
0.478, 0 ); // sigma(500)
EvtResonance2 DppipipiRes22( p4_p, moms3, moms1, 2.2811, 205.7, 0.324,
0.478, 0 ); // sigma(500)
EvtResonance2 DppipipiRes31( p4_p, moms1, moms2, 0.4265, 165.0, 0.044,
0.977, 0 ); // f0(980) simple BW
EvtResonance2 DppipipiRes32( p4_p, moms3, moms1, 0.4265, 165.0, 0.044,
0.977, 0 ); // f0(980) simple BW
EvtResonance2 DppipipiRes41( p4_p, moms1, moms2, 2.0321, 57.3, 0.185,
1.275, 2, true ); // f2(1270)
EvtResonance2 DppipipiRes42( p4_p, moms3, moms1, 2.0321, 57.3, 0.185,
1.275, 2, true ); // f2(1270)
EvtResonance2 DppipipiRes51( p4_p, moms1, moms2, 0.7888, 105.4, 0.173,
1.434, 0 ); // f0(1370)
EvtResonance2 DppipipiRes52( p4_p, moms3, moms1, 0.7888, 105.4, 0.173,
1.434, 0 ); // f0(1370)
EvtResonance2 DppipipiRes61( p4_p, moms1, moms2, 0.7363, 319.1, 0.310,
1.465, 1, true ); // rho(1450)
EvtResonance2 DppipipiRes62( p4_p, moms3, moms1, 0.7363, 319.1, 0.310,
1.465, 1, true ); // rho(1450)
double pi180inv = 1.0 / EvtConst::radToDegrees;
amp = EvtComplex( -3.98 * cos( 57.3 * pi180inv ),
-3.98 * sin( 57.3 * pi180inv ) ) +
( DppipipiRes11.resAmpl() - DppipipiRes12.resAmpl() ) //spin1
+ ( DppipipiRes21.resAmpl() + DppipipiRes22.resAmpl() ) +
( DppipipiRes31.resAmpl() + DppipipiRes32.resAmpl() ) +
( DppipipiRes41.resAmpl() + DppipipiRes42.resAmpl() ) +
( DppipipiRes51.resAmpl() + DppipipiRes52.resAmpl() ) +
( DppipipiRes61.resAmpl() - DppipipiRes62.resAmpl() ); //spin1
}
// Ds+ -> pi- pi+ pi+ from E791 [PRL 86 765 (2001)]
// masses and widths below correspond to what they used; there, the amplitudes were individually normalized
// (although not explicit) so magnitudes here are obtained after correcting for that
// Breit-Wigner has a factor of (-1) there which changes the relative phase of the NR wrt to the resonances
// thus the NR magnitude is set as negative
if ( _flag == 11 ) {
EvtResonance2 DspipipiRes11( p4_p, moms1, moms2, 0.288, 109., 0.150,
0.769, 1, true ); // rho(770)
EvtResonance2 DspipipiRes12( p4_p, moms3, moms1, 0.288, 109., 0.150,
0.769, 1, true ); // rho(770)
EvtResonance2 DspipipiRes21( p4_p, moms1, moms2, 1.0, 0.0, 0.044, 0.977,
0 ); // f0(980) simple BW
EvtResonance2 DspipipiRes22( p4_p, moms3, moms1, 1.0, 0.0, 0.044, 0.977,
0 ); // f0(980) simple BW
EvtResonance2 DspipipiRes31( p4_p, moms1, moms2, 1.075, 133., 0.185,
1.275, 2, true ); // f2(1270)
EvtResonance2 DspipipiRes32( p4_p, moms3, moms1, 1.075, 133., 0.185,
1.275, 2, true ); // f2(1270)
EvtResonance2 DspipipiRes41( p4_p, moms1, moms2, 2.225, 198., 0.173,
1.434, 0 ); // f0(1370)
EvtResonance2 DspipipiRes42( p4_p, moms3, moms1, 2.225, 198., 0.173,
1.434, 0 ); // f0(1370)
EvtResonance2 DspipipiRes51( p4_p, moms1, moms2, 1.107, 162., 0.310,
1.465, 1, true ); // rho(1450)
EvtResonance2 DspipipiRes52( p4_p, moms3, moms1, 1.107, 162., 0.310,
1.465, 1, true ); // rho(1450)
double pi180inv = 1.0 / EvtConst::radToDegrees;
amp = EvtComplex( -0.723 * cos( 181. * pi180inv ),
-0.723 * sin( 181. * pi180inv ) ) +
( DspipipiRes11.resAmpl() - DspipipiRes12.resAmpl() ) //spin1
+ ( DspipipiRes21.resAmpl() + DspipipiRes22.resAmpl() ) +
( DspipipiRes31.resAmpl() + DspipipiRes32.resAmpl() ) +
( DspipipiRes41.resAmpl() + DspipipiRes42.resAmpl() ) +
( DspipipiRes51.resAmpl() - DspipipiRes52.resAmpl() ); //spin1
}
//D0 -> pi- pi+ pi0
//PRL 99, 251801 (2007)
//arXiv:hep-ex/0703037
if ( _flag == 12 ) {
EvtResonance2 DpipipiRes1p( p4_p, moms2, moms3, 1.0, 0.0, 0.149, 0.775,
1, true ); //rho+(770)
EvtResonance2 DpipipiRes1( p4_p, moms1, moms2, 0.588, 16.2, 0.149,
0.775, 1, true ); //rho0(770)
EvtResonance2 DpipipiRes1m( p4_p, moms3, moms1, 0.714, -2.0, 0.149,
0.775, 1, true ); //rho-(770)
EvtResonance2 DpipipiRes2p( p4_p, moms2, moms3, 0.21, -146.0, 0.400,
1.465, 1, true ); //rho+(1450)
EvtResonance2 DpipipiRes2( p4_p, moms1, moms2, 0.33, 10.0, 0.400, 1.465,
1, true ); //rho0(1450)
EvtResonance2 DpipipiRes2m( p4_p, moms3, moms1, 0.82, 16.0, 0.400,
1.465, 1, true ); //rho-(1450)
EvtResonance2 DpipipiRes3p( p4_p, moms2, moms3, 2.25, -17.0, 0.250,
1.720, 1, true ); //rho+(1700)
EvtResonance2 DpipipiRes3( p4_p, moms1, moms2, 2.51, -17.0, 0.250,
1.720, 1, true ); //rho0(1700)
EvtResonance2 DpipipiRes3m( p4_p, moms3, moms1, 2.00, -50.0, 0.250,
1.720, 1, true ); //rho-(1700)
EvtResonance2 DpipipiRes4( p4_p, moms1, moms2, 0.015, -59.0, 0.07,
0.980, 0 ); //f0(980)
EvtResonance2 DpipipiRes5( p4_p, moms1, moms2, 0.063, 156.0, 0.350,
1.370, 0 ); //f0(1370)
EvtResonance2 DpipipiRes6( p4_p, moms1, moms2, 0.058, 12.0, 0.109,
1.505, 0 ); //f0(1500)
EvtResonance2 DpipipiRes7( p4_p, moms1, moms2, 0.112, 51.0, 0.135,
1.720, 0 ); //f0(1720)
EvtResonance2 DpipipiRes8( p4_p, moms1, moms2, 1.04, -171.0, 0.185,
1.275, 2, true ); //f2(1270)
EvtResonance2 DpipipiRes9( p4_p, moms1, moms2, 0.069, 8.0, 0.600, 0.400,
0 ); //sigma(400)
double pi180inv = 1.0 / EvtConst::radToDegrees;
amp = EvtComplex( 0.57 * cos( -11.0 * pi180inv ),
0.57 * sin( -11.0 * pi180inv ) ) +
DpipipiRes1p.resAmpl() + DpipipiRes1.resAmpl() +
DpipipiRes1m.resAmpl() + DpipipiRes2p.resAmpl() +
DpipipiRes2.resAmpl() + DpipipiRes2m.resAmpl() +
DpipipiRes3p.resAmpl() + DpipipiRes3.resAmpl() +
DpipipiRes3m.resAmpl() + DpipipiRes4.resAmpl() +
DpipipiRes5.resAmpl() + DpipipiRes6.resAmpl() +
DpipipiRes7.resAmpl() + DpipipiRes8.resAmpl() +
DpipipiRes9.resAmpl();
}
vertex( amp );
return;
}
EvtComplex EvtDDalitz::amplDtoK0PiPi( EvtVector4R p4_p, EvtVector4R moms1,
EvtVector4R moms2, EvtVector4R moms3 )
{
//K*(892)-
EvtResonance2 DK2piRes1( p4_p, moms1, moms2, 1.418, -190.0, 0.0508, 0.89166,
1 );
//K0*(1430)-
EvtResonance2 DK2piRes2( p4_p, moms1, moms2, 1.818, -337.0, 0.294, 1.412, 0 );
//K2*(1430)-
EvtResonance2 DK2piRes3( p4_p, moms1, moms2, 0.909, -5.0, 0.0985, 1.4256, 2 );
//K*(1680)-
EvtResonance2 DK2piRes4( p4_p, moms1, moms2, 5.091, -166.0, 0.322, 1.717, 1 );
//DCS K*(892)+
EvtResonance2 DK2piRes5( p4_p, moms1, moms3, 0.100, -19.0, 0.0508, 0.89166,
1 );
//Rho0
EvtResonance2 DK2piRes6( p4_p, moms3, moms2, 0.909, -340.0, 0.1502, 0.7693,
1 );
//Omega
EvtResonance2 DK2piRes7( p4_p, moms3, moms2, .0336, -226.0, 0.00844,
0.78257, 1 );
//f0(980)
EvtResonance2 DK2piRes8( p4_p, moms3, moms2, 0.309, -152.0, 0.05, 0.977, 0 );
//f0(1370)
EvtResonance2 DK2piRes9( p4_p, moms3, moms2, 1.636, -255.0, 0.272, 1.31, 0 );
//f2(1270)
EvtResonance2 DK2piRes10( p4_p, moms3, moms2, 0.636, -32.0, 0.1851, 1.2754,
2 );
return EvtComplex( 1.0, 0.0 ) + DK2piRes1.resAmpl() + DK2piRes2.resAmpl() +
DK2piRes3.resAmpl() + DK2piRes4.resAmpl() + DK2piRes5.resAmpl() +
DK2piRes6.resAmpl() + DK2piRes7.resAmpl() + DK2piRes8.resAmpl() +
DK2piRes9.resAmpl() + DK2piRes10.resAmpl();
}
//
// BaBar decay amplitudes for D0->Ks K+ K-
//
// p4_p is D0
// moms1 is K0s
// moms2 is K+
// moms3 is K-
// Amplitudes and phases are taken from BaBar hep-ex/0207089
// with convention : Non Resonant = Amp 1. / Phase 0.
EvtComplex EvtDDalitz::amplDtoK0KK( EvtVector4R p4_p, EvtVector4R moms1,
EvtVector4R moms2, EvtVector4R moms3 )
{
//phi
EvtResonance DK0KKRes1( p4_p, moms2, moms3, 113.75, -40.0, 0.0043, 1.019456,
1 );
//a0(980)
EvtResonance DK0KKRes2( p4_p, moms2, moms3, 152.25, 69.0, 0.1196, 0.9847, 0 );
//f0(980)
EvtResonance DK0KKRes3( p4_p, moms2, moms3, 30.5, -201.0, 0.05, 0.980, 0 );
//a0(980)+
EvtResonance DK0KKRes4( p4_p, moms1, moms2, 85.75, -93.0, 0.1196, 0.9847, 0 );
//a0(980)-
EvtResonance DK0KKRes5( p4_p, moms3, moms1, 8., -53.0, 0.1196, 0.9847, 0 );
return EvtComplex( 1.0, 0.0 ) + DK0KKRes1.resAmpl() + DK0KKRes2.resAmpl() +
DK0KKRes3.resAmpl() + DK0KKRes4.resAmpl() + DK0KKRes5.resAmpl();
}
diff --git a/src/EvtGenModels/EvtDMix.cpp b/src/EvtGenModels/EvtDMix.cpp
index 15d8626..0a93f26 100644
--- a/src/EvtGenModels/EvtDMix.cpp
+++ b/src/EvtGenModels/EvtDMix.cpp
@@ -1,96 +1,76 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtDMix.cc
-//
-// Description: Routine to decay a particle according th phase space
-//
-// Modification history:
-//
-// RYD January 8, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtDMix.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
std::string EvtDMix::getName()
{
return "DMIX";
}
EvtDecayBase* EvtDMix::clone()
{
return new EvtDMix;
}
void EvtDMix::init()
{
// check that there are 0 arguments
checkNArg( 3 );
_rd = getArg( 0 );
_xpr = getArg( 1 );
_ypr = getArg( 2 );
}
void EvtDMix::initProbMax()
{
noProbMax();
}
void EvtDMix::decay( EvtParticle* p )
{
//unneeded - lange - may13-02
//if ( p->getNDaug() != 0 ) {
//Will end up here because maxrate multiplies by 1.2
// EvtGenReport(EVTGEN_DEBUG,"EvtGen") << "In EvtDMix: has "
// <<" daugthers should not be here!"<<endl;
// return;
//}
p->initializePhaseSpace( getNDaug(), getDaugs() );
double ctau = EvtPDL::getctau( p->getId() );
if ( ctau == 0. )
return;
double pdf, random, gt, weight;
double maxPdf = _rd + sqrt( _rd ) * _ypr * 50. +
2500.0 * ( _xpr * _xpr + _ypr * _ypr ) / 4.0;
bool keepGoing = true;
while ( keepGoing ) {
random = EvtRandom::Flat();
gt = -log( random );
weight = random;
pdf = _rd + sqrt( _rd ) * _ypr * gt +
gt * gt * ( _xpr * _xpr + _ypr * _ypr ) / 4.0;
pdf *= exp( -1.0 * gt );
pdf /= weight;
if ( pdf > maxPdf )
std::cout << pdf << " " << weight << " " << maxPdf << " " << gt
<< std::endl;
if ( pdf > maxPdf * EvtRandom::Flat() )
keepGoing = false;
}
p->setLifetime( gt * ctau );
return;
}
diff --git a/src/EvtGenModels/EvtDToKpienu.cpp b/src/EvtGenModels/EvtDToKpienu.cpp
index f8997ef..fbc1e5c 100644
--- a/src/EvtGenModels/EvtDToKpienu.cpp
+++ b/src/EvtGenModels/EvtDToKpienu.cpp
@@ -1,518 +1,497 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtDToKpienu.cpp
-//
-// Description: Decay model for D- --> Kpienu decays based on PWA analysis
-// in Phys. Rev. D94 (2016) 0032001
-//
-// Modification history:
-//
-// Liaoyuan Dong Aug 28 2019
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtDToKpienu.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDecayTable.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
std::string EvtDToKpienu::getName()
{
return "DToKpienu";
}
EvtDecayBase* EvtDToKpienu::clone()
{
return new EvtDToKpienu;
}
void EvtDToKpienu::init()
{
checkNArg( 0 );
checkNDaug( 4 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "EvtDToKpienu ==> Initialization !" << std::endl;
nAmps = 2;
rS = -11.57; // S-wave
rS1 = 0.08;
a_delta = 1.94;
b_delta = -0.81;
m0_1430_S = 1.425;
width0_1430_S = 0.270;
type[0] = 0;
mV = 1.81;
mA = 2.61;
V_0 = 1.411;
A1_0 = 1;
A2_0 = 0.788;
m0 = 0.8946; // P-wave K*
width0 = 0.04642;
rBW = 3.07;
rho = 1;
phi = 0;
type[1] = 1;
m0_1410 = 1.414; // P-wave K*(1410)
width0_1410 = 0.232;
rho_1410 = 0.1;
phi_1410 = 0.;
type[2] = 2;
TV_0 = 1; // D-wave K*2(1430)
T1_0 = 1;
T2_0 = 1;
m0_1430 = 1.4324;
width0_1430 = 0.109;
rho_1430 = 15;
phi_1430 = 0;
type[3] = 3;
mD = 1.86962;
mPi = 0.13957;
mK = 0.49368;
Pi = atan2( 0.0, -1.0 );
root2 = sqrt( 2. );
root2d3 = sqrt( 2. / 3 );
root1d2 = sqrt( 0.5 );
root3d2 = sqrt( 1.5 );
}
void EvtDToKpienu::initProbMax()
{
/*
* This piece of code could in principle be used to calculate maximum
* probablity on fly. But as it uses high number of points and model
* deals with single final state, we keep hardcoded number for now rather
* than adapting code to work here.
double maxprob = 0.0;
for(int ir=0;ir<=60000000;ir++){
p->initializePhaseSpace(getNDaug(),getDaugs());
EvtVector4R _K = p->getDaug(0)->getP4();
EvtVector4R _pi = p->getDaug(1)->getP4();
EvtVector4R _e = p->getDaug(2)->getP4();
EvtVector4R _nu = p->getDaug(3)->getP4();
int pid = EvtPDL::getStdHep(p->getDaug(0)->getId());
int charm;
if(pid == -321) charm = 1;
else charm = -1;
double m2, q2, cosV, cosL, chi;
KinVGen(_K, _pi, _e, _nu, charm, m2, q2, cosV, cosL, chi);
double _prob = calPDF(m2, q2, cosV, cosL, chi);
if(_prob>maxprob) {
maxprob=_prob;
EvtGenReport(EVTGEN_INFO,"EvtGen") << "Max PDF = " << ir << " charm= " << charm << " prob= "
<< _prob << std::endl;
}
}
EvtGenReport(EVTGEN_INFO,"EvtGen") << "Max!!!!!!!!!!! " << maxprob<< std::endl;
*/
setProbMax( 22750.0 );
}
void EvtDToKpienu::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4R K = p->getDaug( 0 )->getP4();
EvtVector4R pi = p->getDaug( 1 )->getP4();
EvtVector4R e = p->getDaug( 2 )->getP4();
EvtVector4R nu = p->getDaug( 3 )->getP4();
int pid = EvtPDL::getStdHep( p->getDaug( 0 )->getId() );
int charm;
if ( pid == -321 ) {
charm = 1;
} else {
charm = -1;
}
double m2, q2, cosV, cosL, chi;
KinVGen( K, pi, e, nu, charm, m2, q2, cosV, cosL, chi );
double prob = calPDF( m2, q2, cosV, cosL, chi );
setProb( prob );
return;
}
void EvtDToKpienu::KinVGen( const EvtVector4R& vp4_K, const EvtVector4R& vp4_Pi,
const EvtVector4R& vp4_Lep, const EvtVector4R& vp4_Nu,
const int charm, double& m2, double& q2,
double& cosV, double& cosL, double& chi ) const
{
EvtVector4R vp4_KPi = vp4_K + vp4_Pi;
EvtVector4R vp4_W = vp4_Lep + vp4_Nu;
m2 = vp4_KPi.mass2();
q2 = vp4_W.mass2();
EvtVector4R boost;
boost.set( vp4_KPi.get( 0 ), -vp4_KPi.get( 1 ), -vp4_KPi.get( 2 ),
-vp4_KPi.get( 3 ) );
EvtVector4R vp4_Kp = boostTo( vp4_K, boost );
cosV = vp4_Kp.dot( vp4_KPi ) / ( vp4_Kp.d3mag() * vp4_KPi.d3mag() );
boost.set( vp4_W.get( 0 ), -vp4_W.get( 1 ), -vp4_W.get( 2 ), -vp4_W.get( 3 ) );
EvtVector4R vp4_Lepp = boostTo( vp4_Lep, boost );
cosL = vp4_Lepp.dot( vp4_W ) / ( vp4_Lepp.d3mag() * vp4_W.d3mag() );
EvtVector4R V = vp4_KPi / vp4_KPi.d3mag();
EvtVector4R C = vp4_Kp.cross( V );
C /= C.d3mag();
EvtVector4R D = vp4_Lepp.cross( V );
D /= D.d3mag();
double sinx = C.cross( V ).dot( D );
double cosx = C.dot( D );
chi = sinx > 0 ? acos( cosx ) : -acos( cosx );
if ( charm == -1 )
chi = -chi;
}
double EvtDToKpienu::calPDF( const double m2, const double q2, const double cosV,
const double cosL, const double chi ) const
{
double m = sqrt( m2 );
double q = sqrt( q2 );
// begin to calculate form factor
EvtComplex F10( 0.0, 0.0 );
EvtComplex F11( 0.0, 0.0 );
EvtComplex F21( 0.0, 0.0 );
EvtComplex F31( 0.0, 0.0 );
EvtComplex F12( 0.0, 0.0 );
EvtComplex F22( 0.0, 0.0 );
EvtComplex F32( 0.0, 0.0 );
EvtComplex f10( 0.0, 0.0 );
EvtComplex f11( 0.0, 0.0 );
EvtComplex f21( 0.0, 0.0 );
EvtComplex f31( 0.0, 0.0 );
EvtComplex f12( 0.0, 0.0 );
EvtComplex f22( 0.0, 0.0 );
EvtComplex f32( 0.0, 0.0 );
EvtComplex coef( 0.0, 0.0 );
double amplitude_temp, delta_temp;
for ( int index = 0; index < nAmps; index++ ) {
switch ( type[index] ) {
case 0: // calculate form factor of S wave
{
NRS( m, q, rS, rS1, a_delta, b_delta, mA, m0_1430_S,
width0_1430_S, amplitude_temp, delta_temp, f10 );
F10 = F10 + f10;
break;
}
case 1: // calculate form factor of P wave (K*)
{
ResonanceP( m, q, mV, mA, V_0, A1_0, A2_0, m0, width0, rBW,
amplitude_temp, delta_temp, f11, f21, f31 );
coef = getCoef( rho, phi );
F11 = F11 + coef * f11;
F21 = F21 + coef * f21;
F31 = F31 + coef * f31;
break;
}
case 2: // calculate form factor of P wave (K*(1410))
{
ResonanceP( m, q, mV, mA, V_0, A1_0, A2_0, m0_1410, width0_1410,
rBW, amplitude_temp, delta_temp, f11, f21, f31 );
coef = getCoef( rho_1410, phi_1410 );
F11 = F11 + coef * f11;
F21 = F21 + coef * f21;
F31 = F31 + coef * f31;
break;
}
case 3: // calculate form factor of D wave
{
ResonanceD( m, q, mV, mA, TV_0, T1_0, T2_0, m0_1430, width0_1430,
rBW, amplitude_temp, delta_temp, f12, f22, f32 );
coef = getCoef( rho_1430, phi_1430 );
F12 = F12 + coef * f12;
F22 = F22 + coef * f22;
F32 = F32 + coef * f32;
break;
}
default: {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "No such form factor type!!!" << std::endl;
break;
}
}
}
// begin to calculate pdf value
double I, I1, I2, I3, I4, I5, I6, I7, I8, I9;
double cosV2 = cosV * cosV;
double sinV = sqrt( 1.0 - cosV2 );
double sinV2 = sinV * sinV;
EvtComplex F1 = F10 + F11 * cosV + F12 * ( 1.5 * cosV2 - 0.5 );
EvtComplex F2 = F21 * root1d2 + F22 * cosV * root3d2;
EvtComplex F3 = F31 * root1d2 + F32 * cosV * root3d2;
I1 = 0.25 * ( abs2( F1 ) + 1.5 * sinV2 * ( abs2( F2 ) + abs2( F3 ) ) );
I2 = -0.25 * ( abs2( F1 ) - 0.5 * sinV2 * ( abs2( F2 ) + abs2( F3 ) ) );
I3 = -0.25 * ( abs2( F2 ) - abs2( F3 ) ) * sinV2;
I4 = real( conj( F1 ) * F2 ) * sinV * 0.5;
I5 = real( conj( F1 ) * F3 ) * sinV;
I6 = real( conj( F2 ) * F3 ) * sinV2;
I7 = imag( conj( F2 ) * F1 ) * sinV;
I8 = imag( conj( F3 ) * F1 ) * sinV * 0.5;
I9 = imag( conj( F3 ) * F2 ) * sinV2 * ( -0.5 );
double coschi = cos( chi );
double sinchi = sin( chi );
double sin2chi = 2.0 * sinchi * coschi;
double cos2chi = 1.0 - 2.0 * sinchi * sinchi;
double sinL = sqrt( 1. - cosL * cosL );
double sinL2 = sinL * sinL;
double sin2L = 2.0 * sinL * cosL;
double cos2L = 1.0 - 2.0 * sinL2;
I = I1 + I2 * cos2L + I3 * sinL2 * cos2chi + I4 * sin2L * coschi +
I5 * sinL * coschi + I6 * cosL + I7 * sinL * sinchi +
I8 * sin2L * sinchi + I9 * sinL2 * sin2chi;
return I;
}
void EvtDToKpienu::ResonanceP( const double m, const double q, const double mV,
const double mA, const double V_0,
const double A1_0, const double A2_0,
const double m0, const double width0,
const double rBW, double& amplitude,
double& delta, EvtComplex& F11, EvtComplex& F21,
EvtComplex& F31 ) const
{
double pKPi = getPStar( mD, m, q );
double mD2 = mD * mD;
double m2 = m * m;
double m02 = m0 * m0;
double q2 = q * q;
double mV2 = mV * mV;
double mA2 = mA * mA;
double summDm = mD + m;
double V = V_0 / ( 1.0 - q2 / ( mV2 ) );
double A1 = A1_0 / ( 1.0 - q2 / ( mA2 ) );
double A2 = A2_0 / ( 1.0 - q2 / ( mA2 ) );
double A = summDm * A1;
double B = 2.0 * mD * pKPi / summDm * V;
// construct the helicity form factor
double H0 = 0.5 / ( m * q ) *
( ( mD2 - m2 - q2 ) * summDm * A1 -
4.0 * ( mD2 * pKPi * pKPi ) / summDm * A2 );
double Hp = A - B;
double Hm = A + B;
// calculate alpha
double B_Kstar = 2. / 3.; // B_Kstar = Br(Kstar(892)->k pi)
double pStar0 = getPStar( m0, mPi, mK );
double alpha = sqrt( 3. * Pi * B_Kstar / ( pStar0 * width0 ) );
// construct amplitudes of (non)resonance
double F = getF1( m, m0, mPi, mK, rBW );
double width = getWidth1( m, m0, mPi, mK, width0, rBW );
EvtComplex C( m0 * width0 * F, 0.0 );
double AA = m02 - m2;
double BB = -m0 * width;
EvtComplex amp = C / EvtComplex( AA, BB );
amplitude = abs( amp );
delta = atan2( imag( amp ), real( amp ) );
double alpham2 = alpha * 2.0;
F11 = amp * alpham2 * q * H0 * root2;
F21 = amp * alpham2 * q * ( Hp + Hm );
F31 = amp * alpham2 * q * ( Hp - Hm );
}
void EvtDToKpienu::NRS( const double m, const double q, const double rS,
const double rS1, const double a_delta,
const double b_delta, const double mA, const double m0,
const double width0, double& amplitude, double& delta,
EvtComplex& F10 ) const
{
static const double tmp = ( mK + mPi ) * ( mK + mPi );
double m2 = m * m;
double q2 = q * q;
double mA2 = mA * mA;
double pKPi = getPStar( mD, m, q );
double m_K0_1430 = m0;
double width_K0_1430 = width0;
double m2_K0_1430 = m_K0_1430 * m_K0_1430;
double width = getWidth0( m, m_K0_1430, mPi, mK, width_K0_1430 );
// calculate modul of the amplitude
double x, Pm;
if ( m < m_K0_1430 ) {
x = sqrt( m2 / tmp - 1.0 );
Pm = 1.0 + rS1 * x;
} else {
x = sqrt( m2_K0_1430 / tmp - 1.0 );
Pm = 1.0 + rS1 * x;
Pm *= m_K0_1430 * width_K0_1430 /
sqrt( ( m2_K0_1430 - m2 ) * ( m2_K0_1430 - m2 ) +
m2_K0_1430 * width * width );
}
// calculate phase of the amplitude
double pStar = getPStar( m, mPi, mK );
double delta_bg = atan( 2. * a_delta * pStar /
( 2. + a_delta * b_delta * pStar * pStar ) );
delta_bg = ( delta_bg > 0 ) ? delta_bg : ( delta_bg + Pi );
double delta_K0_1430 = atan( m_K0_1430 * width / ( m2_K0_1430 - m2 ) );
delta_K0_1430 = ( delta_K0_1430 > 0 ) ? delta_K0_1430
: ( delta_K0_1430 + Pi );
delta = delta_bg + delta_K0_1430;
EvtComplex ci( cos( delta ), sin( delta ) );
EvtComplex amp = ci * rS * Pm;
amplitude = rS * Pm;
F10 = amp * pKPi * mD / ( 1. - q2 / mA2 );
}
void EvtDToKpienu::ResonanceD( const double m, const double q, const double mV,
const double mA, const double TV_0,
const double T1_0, const double T2_0,
const double m0, const double width0,
const double rBW, double& amplitude,
double& delta, EvtComplex& F12, EvtComplex& F22,
EvtComplex& F32 ) const
{
double pKPi = getPStar( mD, m, q );
double mD2 = mD * mD;
double m2 = m * m;
double m02 = m0 * m0;
double q2 = q * q;
double mV2 = mV * mV;
double mA2 = mA * mA;
double summDm = mD + m;
double TV = TV_0 / ( 1.0 - q2 / ( mV2 ) );
double T1 = T1_0 / ( 1.0 - q2 / ( mA2 ) );
double T2 = T2_0 / ( 1.0 - q2 / ( mA2 ) );
// construct amplitudes of (non)resonance
double F = getF2( m, m0, mPi, mK, rBW );
double width = getWidth2( m, m0, mPi, mK, width0, rBW );
EvtComplex C( m0 * width0 * F, 0.0 );
double AA = m02 - m2;
double BB = -m0 * width;
EvtComplex amp = C / EvtComplex( AA, BB );
amplitude = abs( amp );
delta = atan2( imag( amp ), real( amp ) );
F12 = amp * mD * pKPi / 3. *
( ( mD2 - m2 - q2 ) * summDm * T1 - mD2 * pKPi * pKPi / summDm * T2 );
F22 = amp * root2d3 * mD * m * q * pKPi * summDm * T1;
F32 = amp * root2d3 * 2. * mD2 * m * q * pKPi * pKPi / summDm * TV;
}
double EvtDToKpienu::getPStar( const double m, const double m1,
const double m2 ) const
{
double s = m * m;
double s1 = m1 * m1;
double s2 = m2 * m2;
double x = s + s1 - s2;
double t = 0.25 * x * x / s - s1;
double p;
if ( t > 0.0 ) {
p = sqrt( t );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " Hello, pstar is less than 0.0" << std::endl;
p = 0.04;
}
return p;
}
double EvtDToKpienu::getF1( const double m, const double m0, const double m_c1,
const double m_c2, const double rBW ) const
{
double pStar = getPStar( m, m_c1, m_c2 );
double pStar0 = getPStar( m0, m_c1, m_c2 );
double rBW2 = rBW * rBW;
double pStar2 = pStar * pStar;
double pStar02 = pStar0 * pStar0;
double B = 1. / sqrt( 1. + rBW2 * pStar2 );
double B0 = 1. / sqrt( 1. + rBW2 * pStar02 );
double F = pStar / pStar0 * B / B0;
return F;
}
double EvtDToKpienu::getF2( const double m, const double m0, const double m_c1,
const double m_c2, const double rBW ) const
{
double pStar = getPStar( m, m_c1, m_c2 );
double pStar0 = getPStar( m0, m_c1, m_c2 );
double rBW2 = rBW * rBW;
double pStar2 = pStar * pStar;
double pStar02 = pStar0 * pStar0;
double B = 1. / sqrt( ( rBW2 * pStar2 - 3. ) * ( rBW2 * pStar2 - 3. ) +
9. * rBW2 * pStar2 );
double B0 = 1. / sqrt( ( rBW2 * pStar02 - 3. ) * ( rBW2 * pStar02 - 3. ) +
9. * rBW2 * pStar02 );
double F = pStar2 / pStar02 * B / B0;
return F;
}
double EvtDToKpienu::getWidth0( const double m, const double m0,
const double m_c1, const double m_c2,
const double width0 ) const
{
double pStar = getPStar( m, m_c1, m_c2 );
double pStar0 = getPStar( m0, m_c1, m_c2 );
double width = width0 * pStar / pStar0 * m0 / m;
return width;
}
double EvtDToKpienu::getWidth1( const double m, const double m0,
const double m_c1, const double m_c2,
const double width0, const double rBW ) const
{
double pStar = getPStar( m, m_c1, m_c2 );
double pStar0 = getPStar( m0, m_c1, m_c2 );
double F = getF1( m, m0, m_c1, m_c2, rBW );
double width = width0 * pStar / pStar0 * m0 / m * F * F;
return width;
}
double EvtDToKpienu::getWidth2( const double m, const double m0,
const double m_c1, const double m_c2,
const double width0, const double rBW ) const
{
double pStar = getPStar( m, m_c1, m_c2 );
double pStar0 = getPStar( m0, m_c1, m_c2 );
double F = getF2( m, m0, m_c1, m_c2, rBW );
double width = width0 * pStar / pStar0 * m0 / m * F * F;
return width;
}
EvtComplex EvtDToKpienu::getCoef( const double rho, const double phi ) const
{
EvtComplex coef( rho * cos( phi ), rho * sin( phi ) );
return coef;
}
diff --git a/src/EvtGenModels/EvtDalitzTable.cpp b/src/EvtGenModels/EvtDalitzTable.cpp
index d813f46..4cbb316 100644
--- a/src/EvtGenModels/EvtDalitzTable.cpp
+++ b/src/EvtGenModels/EvtDalitzTable.cpp
@@ -1,674 +1,654 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtGenericDalitz.hh
-//
-// Description: Model to describe a generic dalitz decay
-//
-// Modification history:
-//
-// DCC 16 December, 2011 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtDalitzTable.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtDalitzPlot.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParserXml.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include <sstream>
#include <stdlib.h>
using std::endl;
using std::fstream;
using std::ifstream;
EvtDalitzTable::EvtDalitzTable()
{
_dalitztable.clear();
_readFiles.clear();
}
EvtDalitzTable::~EvtDalitzTable()
{
_dalitztable.clear();
_readFiles.clear();
}
EvtDalitzTable* EvtDalitzTable::getInstance( const std::string dec_name,
bool verbose )
{
static EvtDalitzTable* theDalitzTable = 0;
if ( theDalitzTable == 0 ) {
theDalitzTable = new EvtDalitzTable();
}
if ( !theDalitzTable->fileHasBeenRead( dec_name ) ) {
theDalitzTable->readXMLDecayFile( dec_name, verbose );
}
return theDalitzTable;
}
bool EvtDalitzTable::fileHasBeenRead( const std::string dec_name )
{
std::vector<std::string>::iterator i = _readFiles.begin();
for ( ; i != _readFiles.end(); i++ ) {
if ( ( *i ).compare( dec_name ) == 0 ) {
return true;
}
}
return false;
}
void EvtDalitzTable::readXMLDecayFile( const std::string dec_name, bool verbose )
{
if ( verbose ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "EvtDalitzTable: Reading in xml parameter file " << dec_name
<< endl;
}
_readFiles.push_back( dec_name );
EvtDalitzDecayInfo* dalitzDecay = 0;
double probMax = 0;
EvtId ipar;
std::string decayParent = "";
std::string daugStr = "";
EvtId daughter[3];
EvtDalitzPlot dp;
EvtComplex cAmp;
std::vector<std::pair<EvtCyclic3::Pair, EvtCyclic3::Pair>> angAndResPairs;
std::string shape( "" );
EvtSpinType::spintype spinType( EvtSpinType::SCALAR );
double mass( 0. ), width( 0. ), FFp( 0. ), FFr( 0. );
std::vector<EvtFlatteParam> flatteParams;
//Nonres parameters
double alpha( 0. );
//LASS parameters
double aLass( 0. ), rLass( 0. ), BLass( 0. ), phiBLass( 0. ), RLass( 0. ),
phiRLass( 0. ), cutoffLass( -1. );
EvtParserXml parser;
parser.open( dec_name );
bool endReached = false;
while ( parser.readNextTag() ) {
//TAGS FOUND UNDER DATA
if ( parser.getParentTagTitle() == "data" ) {
if ( parser.getTagTitle() == "dalitzDecay" ) {
int nDaughters = 0;
decayParent = parser.readAttribute( "particle" );
daugStr = parser.readAttribute( "daughters" );
probMax = parser.readAttributeDouble( "probMax", -1 );
checkParticle( decayParent );
ipar = EvtPDL::getId( decayParent );
std::istringstream daugStream( daugStr );
std::string daugh;
while ( std::getline( daugStream, daugh, ' ' ) ) {
checkParticle( daugh );
daughter[nDaughters++] = EvtPDL::getId( daugh );
}
if ( nDaughters != 3 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Expected to find three daughters for dalitzDecay of "
<< decayParent << " near line "
<< parser.getLineNumber() << ", "
<< "found " << nDaughters << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
double m_d1 = EvtPDL::getMass( daughter[0] ),
m_d2 = EvtPDL::getMass( daughter[1] ),
m_d3 = EvtPDL::getMass( daughter[2] ),
M = EvtPDL::getMass( ipar );
dp = EvtDalitzPlot( m_d1, m_d2, m_d3, M );
dalitzDecay = new EvtDalitzDecayInfo( daughter[0], daughter[1],
daughter[2] );
} else if ( parser.getTagTitle() == "copyDalitz" ) {
int nDaughters = 0;
EvtId daughter[3];
int nCopyDaughters = 0;
EvtId copyDaughter[3];
decayParent = parser.readAttribute( "particle" );
daugStr = parser.readAttribute( "daughters" );
std::string copyParent = parser.readAttribute( "copy" );
std::string copyDaugStr = parser.readAttribute( "copyDaughters" );
checkParticle( decayParent );
ipar = EvtPDL::getId( decayParent );
checkParticle( copyParent );
EvtId copypar = EvtPDL::getId( copyParent );
std::istringstream daugStream( daugStr );
std::istringstream copyDaugStream( copyDaugStr );
std::string daugh;
while ( std::getline( daugStream, daugh, ' ' ) ) {
checkParticle( daugh );
daughter[nDaughters++] = EvtPDL::getId( daugh );
}
while ( std::getline( copyDaugStream, daugh, ' ' ) ) {
checkParticle( daugh );
copyDaughter[nCopyDaughters++] = EvtPDL::getId( daugh );
}
if ( nDaughters != 3 || nCopyDaughters != 3 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Expected to find three daughters for copyDecay of "
<< decayParent << " from " << copyParent
<< " near line " << parser.getLineNumber() << ", "
<< "found " << nDaughters << " and " << nCopyDaughters
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
copyDecay( ipar, daughter, copypar, copyDaughter );
} else if ( parser.getTagTitle() == "/data" ) { //end of data
endReached = true;
parser.close();
break;
}
//TAGS FOUND UNDER DALITZDECAY
} else if ( parser.getParentTagTitle() == "dalitzDecay" ) {
if ( parser.getTagTitle() == "resonance" ) {
flatteParams.clear();
//Amplitude
EvtComplex ampFactor(
parser.readAttributeDouble( "ampFactorReal", 1. ),
parser.readAttributeDouble( "ampFactorImag", 0. ) );
double mag = parser.readAttributeDouble( "mag", -999. );
double phase = parser.readAttributeDouble( "phase", -999. );
double real = parser.readAttributeDouble( "real", -999. );
double imag = parser.readAttributeDouble( "imag", -999. );
if ( ( real != -999. || imag != -999. ) && mag == -999. &&
phase == -999. ) {
if ( real == -999. ) {
real = 0;
}
if ( imag == -999. ) {
imag = 0;
}
mag = sqrt( real * real + imag * imag );
phase = atan2( imag, real ) * EvtConst::radToDegrees;
}
if ( mag == -999. ) {
mag = 1.;
}
if ( phase == -999. ) {
phase = 0.;
}
cAmp = ampFactor *
EvtComplex( cos( phase * 1.0 / EvtConst::radToDegrees ),
sin( phase * 1.0 / EvtConst::radToDegrees ) ) *
mag;
//Resonance particle properties
mass = 0.;
width = 0.;
spinType = EvtSpinType::SCALAR;
std::string particle = parser.readAttribute( "particle" );
if ( particle != "" ) {
EvtId resId = EvtPDL::getId( particle );
if ( resId == EvtId( -1, -1 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unknown particle name:" << particle.c_str()
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
} else {
mass = EvtPDL::getMeanMass( resId );
width = EvtPDL::getWidth( resId );
spinType = EvtPDL::getSpinType( resId );
}
}
width = parser.readAttributeDouble( "width", width );
mass = parser.readAttributeDouble( "mass", mass );
switch ( parser.readAttributeInt( "spin", -1 ) ) {
case -1: //not set here
break;
case 0:
spinType = EvtSpinType::SCALAR;
break;
case 1:
spinType = EvtSpinType::VECTOR;
break;
case 2:
spinType = EvtSpinType::TENSOR;
break;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unsupported spin near line "
<< parser.getLineNumber() << " of XML file." << endl;
::abort();
}
//Shape and form factors
shape = parser.readAttribute( "shape" );
FFp = parser.readAttributeDouble( "BlattWeisskopfFactorParent",
0.0 );
FFr = parser.readAttributeDouble( "BlattWeisskopfFactorResonance",
1.5 );
//Shape specific attributes
if ( shape == "NonRes_Exp" ) {
alpha = parser.readAttributeDouble( "alpha", 0.0 );
}
if ( shape == "LASS" ) {
aLass = parser.readAttributeDouble( "a", 2.07 );
rLass = parser.readAttributeDouble( "r", 3.32 );
BLass = parser.readAttributeDouble( "B", 1.0 );
phiBLass = parser.readAttributeDouble( "phiB", 0.0 );
RLass = parser.readAttributeDouble( "R", 1.0 );
phiRLass = parser.readAttributeDouble( "phiR", 0.0 );
cutoffLass = parser.readAttributeDouble( "cutoff", -1.0 );
}
//Daughter pairs for resonance
angAndResPairs.clear();
std::string resDaugStr = parser.readAttribute( "resDaughters" );
if ( resDaugStr != "" ) {
std::istringstream resDaugStream( resDaugStr );
std::string resDaug;
int nResDaug( 0 );
EvtId resDaughter[2];
while ( std::getline( resDaugStream, resDaug, ' ' ) ) {
checkParticle( resDaug );
resDaughter[nResDaug++] = EvtPDL::getId( resDaug );
}
if ( nResDaug != 2 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Resonance must have exactly 2 daughters near line "
<< parser.getLineNumber() << " of XML file." << endl;
::abort();
}
int nRes = getDaughterPairs( resDaughter, daughter,
angAndResPairs );
if ( nRes == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Resonance daughters must match decay daughters near line "
<< parser.getLineNumber() << " of XML file." << endl;
::abort();
}
if ( parser.readAttributeBool( "normalise", true ) )
cAmp /= sqrt( nRes );
}
if ( angAndResPairs.empty() ) {
switch ( parser.readAttributeInt( "daughterPair" ) ) {
case 1:
angAndResPairs.push_back(
std::make_pair( EvtCyclic3::BC, EvtCyclic3::AB ) );
break;
case 2:
angAndResPairs.push_back(
std::make_pair( EvtCyclic3::CA, EvtCyclic3::BC ) );
break;
case 3:
angAndResPairs.push_back(
std::make_pair( EvtCyclic3::AB, EvtCyclic3::CA ) );
break;
default:
if ( shape ==
"NonRes" ) { //We don't expect a pair for non-resonant terms but add dummy values for convenience
angAndResPairs.push_back( std::make_pair(
EvtCyclic3::AB, EvtCyclic3::AB ) );
break;
}
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Daughter pair must be 1, 2 or 3 near line "
<< parser.getLineNumber() << " of XML file."
<< endl;
::abort();
}
}
if ( parser.isTagInline() ) {
std::vector<std::pair<EvtCyclic3::Pair, EvtCyclic3::Pair>>::iterator
it = angAndResPairs.begin();
for ( ; it != angAndResPairs.end(); it++ ) {
std::pair<EvtCyclic3::Pair, EvtCyclic3::Pair> pairs = *it;
EvtDalitzReso resonance = getResonance(
shape, dp, pairs.first, pairs.second, spinType,
mass, width, FFp, FFr, alpha, aLass, rLass, BLass,
phiBLass, RLass, phiRLass, cutoffLass );
dalitzDecay->addResonance( cAmp, resonance );
}
}
} else if ( parser.getTagTitle() == "/dalitzDecay" ) {
if ( probMax < 0 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "probMax is not defined for " << decayParent
<< " -> " << daugStr << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Will now estimate probMax. This may take a while. Once probMax is calculated, update the XML file to skip this step in future."
<< endl;
probMax = calcProbMax( dp, dalitzDecay );
}
dalitzDecay->setProbMax( probMax );
addDecay( ipar, *dalitzDecay );
delete dalitzDecay;
dalitzDecay = 0;
} else if ( verbose ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Unexpected tag " << parser.getTagTitle()
<< " found in XML decay file near line "
<< parser.getLineNumber() << ". Tag will be ignored."
<< endl;
}
//TAGS FOUND UNDER RESONANCE
} else if ( parser.getParentTagTitle() == "resonance" ) {
if ( parser.getTagTitle() == "flatteParam" ) {
EvtFlatteParam param( parser.readAttributeDouble( "mass1" ),
parser.readAttributeDouble( "mass2" ),
parser.readAttributeDouble( "g" ) );
flatteParams.push_back( param );
} else if ( parser.getTagTitle() == "/resonance" ) {
std::vector<std::pair<EvtCyclic3::Pair, EvtCyclic3::Pair>>::iterator
it = angAndResPairs.begin();
for ( ; it != angAndResPairs.end(); it++ ) {
std::pair<EvtCyclic3::Pair, EvtCyclic3::Pair> pairs = *it;
EvtDalitzReso resonance = getResonance(
shape, dp, pairs.first, pairs.second, spinType, mass,
width, FFp, FFr, alpha, aLass, rLass, BLass, phiBLass,
RLass, phiRLass, cutoffLass );
std::vector<EvtFlatteParam>::iterator flatteIt =
flatteParams.begin();
for ( ; flatteIt != flatteParams.end(); flatteIt++ ) {
resonance.addFlatteParam( ( *flatteIt ) );
}
dalitzDecay->addResonance( cAmp, resonance );
}
}
}
}
if ( !endReached ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Either the decay file ended prematurely or the file is badly formed.\n"
<< "Error occured near line" << parser.getLineNumber() << endl;
::abort();
}
}
void EvtDalitzTable::checkParticle( std::string particle )
{
if ( EvtPDL::getId( particle ) == EvtId( -1, -1 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Unknown particle name:" << particle.c_str() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
void EvtDalitzTable::addDecay( EvtId parent, const EvtDalitzDecayInfo& dec )
{
if ( _dalitztable.find( parent ) != _dalitztable.end() ) {
_dalitztable[parent].push_back( dec );
} else {
_dalitztable[parent].push_back( dec );
}
}
void EvtDalitzTable::copyDecay( EvtId parent, EvtId* daughters, EvtId copy,
EvtId* copyd )
{
EvtDalitzDecayInfo decay( daughters[0], daughters[1], daughters[2] );
std::vector<EvtDalitzDecayInfo> copyTable = getDalitzTable( copy );
std::vector<EvtDalitzDecayInfo>::iterator i = copyTable.begin();
for ( ; i != copyTable.end(); i++ ) {
EvtId daughter1 = ( *i ).daughter1();
EvtId daughter2 = ( *i ).daughter2();
EvtId daughter3 = ( *i ).daughter3();
if ( ( copyd[0] == daughter1 && copyd[1] == daughter2 &&
copyd[2] == daughter3 ) ||
( copyd[0] == daughter1 && copyd[1] == daughter3 &&
copyd[2] == daughter2 ) ||
( copyd[0] == daughter2 && copyd[1] == daughter1 &&
copyd[2] == daughter3 ) ||
( copyd[0] == daughter2 && copyd[1] == daughter3 &&
copyd[2] == daughter1 ) ||
( copyd[0] == daughter3 && copyd[1] == daughter1 &&
copyd[2] == daughter2 ) ||
( copyd[0] == daughter3 && copyd[1] == daughter2 &&
copyd[2] == daughter1 ) ) {
decay.setProbMax( ( *i ).getProbMax() );
std::vector<std::pair<EvtComplex, EvtDalitzReso>>::const_iterator j =
( *i ).getResonances().begin();
for ( ; j != ( *i ).getResonances().end(); j++ ) {
decay.addResonance( ( *j ) );
}
addDecay( parent, decay );
return;
}
}
//if we get here then there was no match
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Did not find dalitz decays for particle:" << copy << "\n";
}
std::vector<EvtDalitzDecayInfo> EvtDalitzTable::getDalitzTable( const EvtId& parent )
{
std::vector<EvtDalitzDecayInfo> table;
if ( _dalitztable.find( parent ) != _dalitztable.end() ) {
table = _dalitztable[parent];
}
if ( table.empty() ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Did not find dalitz decays for particle:" << parent << "\n";
}
return table;
}
EvtDalitzReso EvtDalitzTable::getResonance(
std::string shape, EvtDalitzPlot dp, EvtCyclic3::Pair angPair,
EvtCyclic3::Pair resPair, EvtSpinType::spintype spinType, double mass,
double width, double FFp, double FFr, double alpha, double aLass,
double rLass, double BLass, double phiBLass, double RLass, double phiRLass,
double cutoffLass )
{
if ( shape == "RBW" || shape == "RBW_CLEO" ) {
return EvtDalitzReso( dp, angPair, resPair, spinType, mass, width,
EvtDalitzReso::RBW_CLEO, FFp, FFr );
} else if ( shape == "RBW_CLEO_ZEMACH" ) {
return EvtDalitzReso( dp, angPair, resPair, spinType, mass, width,
EvtDalitzReso::RBW_CLEO_ZEMACH, FFp, FFr );
} else if ( shape == "GS" || shape == "GS_CLEO" ) {
return EvtDalitzReso( dp, angPair, resPair, spinType, mass, width,
EvtDalitzReso::GS_CLEO, FFp, FFr );
} else if ( shape == "GS_CLEO_ZEMACH" ) {
return EvtDalitzReso( dp, angPair, resPair, spinType, mass, width,
EvtDalitzReso::GS_CLEO_ZEMACH, FFp, FFr );
} else if ( shape == "GAUSS" || shape == "GAUSS_CLEO" ) {
return EvtDalitzReso( dp, angPair, resPair, spinType, mass, width,
EvtDalitzReso::GAUSS_CLEO, FFp, FFr );
} else if ( shape == "GAUSS_CLEO_ZEMACH" ) {
return EvtDalitzReso( dp, angPair, resPair, spinType, mass, width,
EvtDalitzReso::GAUSS_CLEO_ZEMACH, FFp, FFr );
} else if ( shape == "Flatte" ) {
return EvtDalitzReso( dp, resPair, mass );
} else if ( shape == "LASS" ) {
return EvtDalitzReso( dp, resPair, mass, width, aLass, rLass, BLass,
phiBLass, RLass, phiRLass, cutoffLass, true );
} else if ( shape == "NonRes" ) {
return EvtDalitzReso();
} else if ( shape == "NonRes_Linear" ) {
return EvtDalitzReso( dp, resPair, EvtDalitzReso::NON_RES_LIN );
} else if ( shape == "NonRes_Exp" ) {
return EvtDalitzReso( dp, resPair, EvtDalitzReso::NON_RES_EXP, alpha );
} else { //NBW
if ( shape != "NBW" )
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "EvtDalitzTable: shape " << shape
<< " is unknown. Defaulting to NBW." << endl;
return EvtDalitzReso( dp, angPair, resPair, spinType, mass, width,
EvtDalitzReso::NBW, FFp, FFr );
}
}
int EvtDalitzTable::getDaughterPairs(
EvtId* resDaughter, EvtId* daughter,
std::vector<std::pair<EvtCyclic3::Pair, EvtCyclic3::Pair>>& angAndResPairs )
{
int n( 0 );
if ( resDaughter[0] == daughter[0] && resDaughter[1] == daughter[1] ) {
angAndResPairs.push_back(
std::make_pair( EvtCyclic3::BC, EvtCyclic3::AB ) );
n++;
} else if ( resDaughter[0] == daughter[1] && resDaughter[1] == daughter[0] ) {
angAndResPairs.push_back(
std::make_pair( EvtCyclic3::CA, EvtCyclic3::AB ) );
n++;
}
if ( resDaughter[0] == daughter[1] && resDaughter[1] == daughter[2] ) {
angAndResPairs.push_back(
std::make_pair( EvtCyclic3::CA, EvtCyclic3::BC ) );
n++;
} else if ( resDaughter[0] == daughter[2] && resDaughter[1] == daughter[1] ) {
angAndResPairs.push_back(
std::make_pair( EvtCyclic3::AB, EvtCyclic3::BC ) );
n++;
}
if ( resDaughter[0] == daughter[2] && resDaughter[1] == daughter[0] ) {
angAndResPairs.push_back(
std::make_pair( EvtCyclic3::AB, EvtCyclic3::CA ) );
n++;
} else if ( resDaughter[0] == daughter[0] && resDaughter[1] == daughter[2] ) {
angAndResPairs.push_back(
std::make_pair( EvtCyclic3::BC, EvtCyclic3::CA ) );
n++;
}
return n;
}
double EvtDalitzTable::calcProbMax( EvtDalitzPlot dp, EvtDalitzDecayInfo* model )
{
double factor = 1.2; //factor to increase our final answer by
int nStep( 1000 ); //number of steps - total points will be 3*nStep*nStep
double maxProb( 0 );
double min( 0 ), max( 0 ), step( 0 ), min2( 0 ), max2( 0 ), step2( 0 );
//first do AB, BC
min = dp.qAbsMin( EvtCyclic3::AB );
max = dp.qAbsMax( EvtCyclic3::AB );
step = ( max - min ) / nStep;
for ( int i = 0; i < nStep; ++i ) {
double qAB = min + i * step;
min2 = dp.qMin( EvtCyclic3::BC, EvtCyclic3::AB, qAB );
max2 = dp.qMax( EvtCyclic3::BC, EvtCyclic3::AB, qAB );
step2 = ( max2 - min2 ) / nStep;
for ( int j = 0; j < nStep; ++j ) {
double qBC = min2 + j * step2;
EvtDalitzCoord coord( EvtCyclic3::AB, qAB, EvtCyclic3::BC, qBC );
EvtDalitzPoint point( dp, coord );
double prob = calcProb( point, model );
if ( prob > maxProb )
maxProb = prob;
}
}
//next do BC, CA
min = dp.qAbsMin( EvtCyclic3::BC );
max = dp.qAbsMax( EvtCyclic3::BC );
step = ( max - min ) / nStep;
for ( int i = 0; i < nStep; ++i ) {
double qBC = min + i * step;
min2 = dp.qMin( EvtCyclic3::CA, EvtCyclic3::BC, qBC );
max2 = dp.qMax( EvtCyclic3::CA, EvtCyclic3::BC, qBC );
step2 = ( max2 - min2 ) / nStep;
for ( int j = 0; j < nStep; ++j ) {
double qCA = min2 + j * step2;
EvtDalitzCoord coord( EvtCyclic3::BC, qBC, EvtCyclic3::CA, qCA );
EvtDalitzPoint point( dp, coord );
double prob = calcProb( point, model );
if ( prob > maxProb )
maxProb = prob;
}
}
//finally do CA, AB
min = dp.qAbsMin( EvtCyclic3::CA );
max = dp.qAbsMax( EvtCyclic3::CA );
step = ( max - min ) / nStep;
for ( int i = 0; i < nStep; ++i ) {
double qCA = min + i * step;
min2 = dp.qMin( EvtCyclic3::AB, EvtCyclic3::CA, qCA );
max2 = dp.qMax( EvtCyclic3::AB, EvtCyclic3::CA, qCA );
step2 = ( max2 - min2 ) / nStep;
for ( int j = 0; j < nStep; ++j ) {
double qAB = min2 + j * step2;
EvtDalitzCoord coord( EvtCyclic3::CA, qCA, EvtCyclic3::AB, qAB );
EvtDalitzPoint point( dp, coord );
double prob = calcProb( point, model );
if ( prob > maxProb )
maxProb = prob;
}
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Largest probability found was " << maxProb << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Setting probMax to " << factor * maxProb << endl;
return factor * maxProb;
}
double EvtDalitzTable::calcProb( EvtDalitzPoint point, EvtDalitzDecayInfo* model )
{
std::vector<std::pair<EvtComplex, EvtDalitzReso>> resonances =
model->getResonances();
EvtComplex amp( 0, 0 );
std::vector<std::pair<EvtComplex, EvtDalitzReso>>::iterator i =
resonances.begin();
for ( ; i != resonances.end(); i++ ) {
std::pair<EvtComplex, EvtDalitzReso> res = ( *i );
amp += res.first * res.second.evaluate( point );
}
return abs2( amp );
}
diff --git a/src/EvtGenModels/EvtEta2MuMuGamma.cpp b/src/EvtGenModels/EvtEta2MuMuGamma.cpp
index 9efc1ce..578fca6 100644
--- a/src/EvtGenModels/EvtEta2MuMuGamma.cpp
+++ b/src/EvtGenModels/EvtEta2MuMuGamma.cpp
@@ -1,107 +1,87 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtPi0Dalitz.cc
-//
-// Description: pi0 -> e+ e- gamma
-//
-// Modification history:
-//
-// DJL/RYD June 30, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtEta2MuMuGamma.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
using std::fstream;
std::string EvtEta2MuMuGamma::getName()
{
return "ETA2MUMUGAMMA";
}
EvtDecayBase* EvtEta2MuMuGamma::clone()
{
return new EvtEta2MuMuGamma;
}
void EvtEta2MuMuGamma::initProbMax()
{
setProbMax( 3.5 );
}
void EvtEta2MuMuGamma::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::DIRAC );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::PHOTON );
}
void EvtEta2MuMuGamma::decay( EvtParticle* p )
{
EvtParticle *ep, *em, *gamma;
setWeight( p->initializePhaseSpace( getNDaug(), getDaugs(), false,
0.00000002, 0, 1 ) );
ep = p->getDaug( 0 );
em = p->getDaug( 1 );
gamma = p->getDaug( 2 );
// the next four lines generates events with a weight such that
// the efficiency for selecting them is good. The parameter below of
// 0.1 is the size of the peak at low q^2 (in arbitrary units).
// The value of 0.1 is appropriate for muons.
// when you use this remember to remove the cut on q^2!
//ep em invariant mass^2
double m2 = ( ep->getP4() + em->getP4() ).mass2();
EvtVector4R q = ep->getP4() + em->getP4();
//Just use the prob summed over spins...
EvtTensor4C w, v;
v = 2.0 * ( gamma->getP4() * q ) *
EvtGenFunctions::directProd( q, gamma->getP4() ) -
( gamma->getP4() * q ) * ( gamma->getP4() * q ) * EvtTensor4C::g() -
m2 * EvtGenFunctions::directProd( gamma->getP4(), gamma->getP4() );
w = 4.0 * ( EvtGenFunctions::directProd( ep->getP4(), em->getP4() ) +
EvtGenFunctions::directProd( em->getP4(), ep->getP4() ) -
EvtTensor4C::g() *
( ep->getP4() * em->getP4() - ep->getP4().mass2() ) );
double prob = ( real( cont( v, w ) ) ) / ( m2 * m2 );
prob *= ( 1.0 / ( ( 0.768 * 0.768 - m2 ) * ( 0.768 * 0.768 - m2 ) +
0.768 * 0.768 * 0.151 * 0.151 ) );
// EvtGenReport(EVTGEN_INFO,"EvtGen") << "prob is "<<prob<<endl;
setProb( prob );
return;
}
diff --git a/src/EvtGenModels/EvtEtaDalitz.cpp b/src/EvtGenModels/EvtEtaDalitz.cpp
index 2f2260b..2aac5c3 100644
--- a/src/EvtGenModels/EvtEtaDalitz.cpp
+++ b/src/EvtGenModels/EvtEtaDalitz.cpp
@@ -1,83 +1,63 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtEtaDalitz.cc
-//
-// Description: Routine to decay eta -> pi+ pi- pi0
-//
-// Modification history:
-//
-// DJL/RYD July 23, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtEtaDalitz.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
std::string EvtEtaDalitz::getName()
{
return "ETA_DALITZ";
}
EvtDecayBase* EvtEtaDalitz::clone()
{
return new EvtEtaDalitz;
}
void EvtEtaDalitz::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
checkSpinDaughter( 2, EvtSpinType::SCALAR );
}
void EvtEtaDalitz::initProbMax()
{
setProbMax( 2.1 );
}
void EvtEtaDalitz::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4R mompi0 = p->getDaug( 2 )->getP4();
double masspip = p->getDaug( 0 )->mass();
double masspim = p->getDaug( 1 )->mass();
double masspi0 = p->getDaug( 2 )->mass();
double m_eta = p->mass();
double y;
//The decay amplitude coems from Layter et al PRD 7 2565 (1973).
y = ( mompi0.get( 0 ) - masspi0 ) *
( 3.0 / ( m_eta - masspip - masspim - masspi0 ) ) -
1.0;
EvtComplex amp( sqrt( 1.0 - 1.07 * y ), 0.0 );
vertex( amp );
return;
}
diff --git a/src/EvtGenModels/EvtFlatQ2.cpp b/src/EvtGenModels/EvtFlatQ2.cpp
index 417c065..897e3b4 100644
--- a/src/EvtGenModels/EvtFlatQ2.cpp
+++ b/src/EvtGenModels/EvtFlatQ2.cpp
@@ -1,142 +1,122 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtFlatQ2.cc
-//
-// Description: B->Xu l nu with flat q2 distribution
-//
-// Modification history:
-//
-// David Cote, U. de Montreal, 11/02/2003 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtFlatQ2.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <fstream>
#include <string>
double lambda( double q, double m1, double m2 )
{
double L( 1.0 );
double mSum = m1 + m2;
double mDiff = m1 - m2;
double qSq = q * q;
if ( qSq > 0.0 ) {
double prodTerm = ( qSq - mSum * mSum ) * ( qSq - mDiff * mDiff );
if ( prodTerm > 0.0 ) {
L = sqrt( prodTerm ) / qSq;
}
}
return L;
}
std::string EvtFlatQ2::getName()
{
return "FLATQ2";
}
EvtDecayBase* EvtFlatQ2::clone()
{
return new EvtFlatQ2;
}
void EvtFlatQ2::initProbMax()
{
setProbMax( 100 );
}
void EvtFlatQ2::init()
{
// check that there are 3 daughters
checkNDaug( 3 );
// We expect B -> X lepton lepton events
checkSpinParent( EvtSpinType::SCALAR );
EvtSpinType::spintype d1type = EvtPDL::getSpinType( getDaug( 1 ) );
EvtSpinType::spintype d2type = EvtPDL::getSpinType( getDaug( 2 ) );
if ( !( d1type == EvtSpinType::DIRAC || d1type == EvtSpinType::NEUTRINO ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtFlatQ2 expects 2nd daughter to "
<< "be a lepton" << std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << std::endl;
::abort();
}
if ( !( d2type == EvtSpinType::DIRAC || d2type == EvtSpinType::NEUTRINO ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtFlatQ2 expects 3rd daughter to "
<< "be a lepton" << std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << std::endl;
::abort();
}
// Specify if we want to use the phase space factor
_usePhsp = false;
if ( getNArg() > 0 ) {
if ( getArg( 0 ) != 0 ) {
_usePhsp = true;
}
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "EvtFlatQ2 usePhsp = " << int( _usePhsp ) << std::endl;
}
void EvtFlatQ2::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4R p4Xu = p->getDaug( 0 )->getP4();
EvtVector4R p4ell1 = p->getDaug( 1 )->getP4();
EvtVector4R p4ell2 = p->getDaug( 2 )->getP4();
double pXu_x2 = p4Xu.get( 1 ) * p4Xu.get( 1 );
double pXu_y2 = p4Xu.get( 2 ) * p4Xu.get( 2 );
double pXu_z2 = p4Xu.get( 3 ) * p4Xu.get( 3 );
double pXu = sqrt( pXu_x2 + pXu_y2 + pXu_z2 );
double prob( 0.0 );
if ( fabs( pXu ) > 0.0 ) {
prob = 1 / pXu;
}
// Include the phase space factor if requested
if ( _usePhsp ) {
// Invariant mass of lepton pair
double q = ( p4ell1 + p4ell2 ).mass();
// Rest masses of the leptons
double m1 = p4ell1.mass();
double m2 = p4ell2.mass();
// Phase space factor, which includes the various square roots
double Lambda = lambda( q, m1, m2 );
if ( Lambda > 0.0 ) {
prob = prob / Lambda;
}
}
if ( pXu > 0.01 ) {
setProb( prob );
}
return;
}
diff --git a/src/EvtGenModels/EvtFlatSqDalitz.cpp b/src/EvtGenModels/EvtFlatSqDalitz.cpp
index 6566f23..ad79dfd 100644
--- a/src/EvtGenModels/EvtFlatSqDalitz.cpp
+++ b/src/EvtGenModels/EvtFlatSqDalitz.cpp
@@ -1,123 +1,102 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtFlatSqDalitz.cc
-//
-// Description: B->3 body flat in square dalitz vairiables
-// the square dalitz is the plane m12 theta12
-//
-// Modification history:
-//
-// Aurelien Martens, LPNHE Paris, 23/06/2012 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtFlatSqDalitz.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
using std::fstream;
EvtFlatSqDalitz::~EvtFlatSqDalitz()
{
}
std::string EvtFlatSqDalitz::getName()
{
return "FLATSQDALITZ";
}
EvtDecayBase* EvtFlatSqDalitz::clone()
{
return new EvtFlatSqDalitz;
}
void EvtFlatSqDalitz::initProbMax()
{
setProbMax( 1. );
}
void EvtFlatSqDalitz::init()
{
// check that there are 0 arguments
checkNArg( 0 );
//check there are 3 daughters
checkNDaug( 3 );
}
void EvtFlatSqDalitz::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
double mB = p->mass();
double m1 = p->getDaug( 0 )->mass();
double m2 = p->getDaug( 1 )->mass();
double m3 = p->getDaug( 2 )->mass();
EvtVector4R p4_1 = p->getDaug( 0 )->getP4();
EvtVector4R p4_2 = p->getDaug( 1 )->getP4();
EvtVector4R p4_3 = p->getDaug( 2 )->getP4();
EvtVector4R p4_12 = p4_1 + p4_2;
EvtVector4R p4_13 = p4_1 + p4_3;
// do not compute p4_23 to avoid breaking p4 conservation ???
EvtVector4R p4_23 = p4_2 + p4_3;
double m12 = p4_12.mass();
double m13 = p4_13.mass();
double m23 = p4_23.mass();
double m12norm = 2 * ( ( m12 - ( m1 + m2 ) ) / ( mB - ( m1 + m2 + m3 ) ) ) -
1;
double mPrime = acos( m12norm ) / EvtConst::pi;
double thPrime = acos( ( m12 * m12 * ( m23 * m23 - m13 * m13 ) -
( m2 * m2 - m1 * m1 ) * ( mB * mB - m3 * m3 ) ) /
( sqrt( pow( m12 * m12 + m1 * m1 - m2 * m2, 2 ) -
4 * m12 * m12 * m1 * m1 ) *
sqrt( pow( -m12 * m12 + mB * mB - m3 * m3, 2 ) -
4 * m12 * m12 * m3 * m3 ) ) ) /
EvtConst::pi;
double p3st = sqrt( pow( mB * mB - m3 * m3 - m12 * m12, 2 ) -
pow( 2 * m12 * m3, 2 ) ) /
( 2 * m12 );
double p1st = sqrt( pow( m2 * m2 - m1 * m1 - m12 * m12, 2 ) -
pow( 2 * m12 * m1, 2 ) ) /
( 2 * m12 );
double jacobian = 2 * pow( EvtConst::pi, 2 ) * sin( EvtConst::pi * mPrime ) *
sin( EvtConst::pi * thPrime ) * p1st * p3st * m12 *
( mB - ( m1 + m2 + m3 ) );
double prob = 1. / jacobian; //pow(1./(jacobian),2);
// std::cout << mB << " " << mPrime << " " << thPrime << " " << prob << std::endl;
setProb( prob );
if ( prob < 1 )
setProb( prob );
else
setProb( 1. );
return;
}
diff --git a/src/EvtGenModels/EvtGenericDalitz.cpp b/src/EvtGenModels/EvtGenericDalitz.cpp
index ab938fc..d9ca1ec 100644
--- a/src/EvtGenModels/EvtGenericDalitz.cpp
+++ b/src/EvtGenModels/EvtGenericDalitz.cpp
@@ -1,129 +1,109 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtGenericDalitz.hh
-//
-// Description: Model to describe a generic dalitz decay
-//
-// Modification history:
-//
-// DCC 16 December, 2011 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtGenericDalitz.hh"
#include "EvtGenBase/EvtDalitzPoint.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenModels/EvtDalitzTable.hh"
std::string EvtGenericDalitz::getName()
{
return "GENERIC_DALITZ";
}
EvtDecayBase* EvtGenericDalitz::clone()
{
return new EvtGenericDalitz();
}
void EvtGenericDalitz::init()
{
checkNArg( 1 );
EvtId parnum = getParentId();
EvtId d1 = getDaug( 0 );
EvtId d2 = getDaug( 1 );
EvtId d3 = getDaug( 2 );
std::vector<EvtDalitzDecayInfo> decays =
EvtDalitzTable::getInstance( getArgStr( 0 ) )->getDalitzTable( parnum );
std::vector<EvtDalitzDecayInfo>::iterator i = decays.begin();
for ( ; i != decays.end(); i++ ) {
EvtId daughter1 = ( *i ).daughter1();
EvtId daughter2 = ( *i ).daughter2();
EvtId daughter3 = ( *i ).daughter3();
if ( d1 == daughter1 && d2 == daughter2 && d3 == daughter3 ) {
_d1 = 0;
_d2 = 1;
_d3 = 2;
} else if ( d1 == daughter1 && d2 == daughter3 && d3 == daughter2 ) {
_d1 = 0;
_d2 = 2;
_d3 = 1;
} else if ( d1 == daughter2 && d2 == daughter1 && d3 == daughter3 ) {
_d1 = 1;
_d2 = 0;
_d3 = 2;
} else if ( d1 == daughter2 && d2 == daughter3 && d3 == daughter1 ) {
_d1 = 1;
_d2 = 2;
_d3 = 0;
} else if ( d1 == daughter3 && d2 == daughter1 && d3 == daughter2 ) {
_d1 = 2;
_d2 = 0;
_d3 = 1;
} else if ( d1 == daughter3 && d2 == daughter2 && d3 == daughter1 ) {
_d1 = 2;
_d2 = 1;
_d3 = 0;
} else {
continue;
}
_resonances = ( *i ).getResonances();
setProbMax( ( *i ).getProbMax() );
return;
}
}
void EvtGenericDalitz::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4R p4_d1 = p->getDaug( _d1 )->getP4();
EvtVector4R p4_d2 = p->getDaug( _d2 )->getP4();
EvtVector4R p4_d3 = p->getDaug( _d3 )->getP4();
double mA = p->getDaug( _d1 )->mass();
double mB = p->getDaug( _d2 )->mass();
double mC = p->getDaug( _d3 )->mass();
double m2AB = ( p4_d1 + p4_d2 ).mass2();
double m2CA = ( p4_d1 + p4_d3 ).mass2();
double m2BC = ( p4_d2 + p4_d3 ).mass2();
EvtDalitzPoint point( mA, mB, mC, m2AB, m2BC, m2CA );
EvtComplex amp( 0, 0 );
std::vector<std::pair<EvtComplex, EvtDalitzReso>>::iterator i =
_resonances.begin();
for ( ; i != _resonances.end(); i++ ) {
std::pair<EvtComplex, EvtDalitzReso> res = ( *i );
amp += res.first * res.second.evaluate( point );
}
vertex( amp );
return;
}
std::string EvtGenericDalitz::getParamName( int i )
{
switch ( i ) {
case 0:
return "xmlFile";
default:
return "";
}
}
diff --git a/src/EvtGenModels/EvtGoityRoberts.cpp b/src/EvtGenModels/EvtGoityRoberts.cpp
index bca46ab..1e521f4 100644
--- a/src/EvtGenModels/EvtGoityRoberts.cpp
+++ b/src/EvtGenModels/EvtGoityRoberts.cpp
@@ -1,487 +1,467 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGoityRoberts.cc
-//
-// Description: Routine to decay vector-> scalar scalar
-//
-// Modification history:
-//
-// RYD November 24, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtGoityRoberts.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
std::string EvtGoityRoberts::getName()
{
return "GOITY_ROBERTS";
}
EvtDecayBase* EvtGoityRoberts::clone()
{
return new EvtGoityRoberts;
}
void EvtGoityRoberts::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 4 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
checkSpinDaughter( 2, EvtSpinType::DIRAC );
checkSpinDaughter( 3, EvtSpinType::NEUTRINO );
}
void EvtGoityRoberts::initProbMax()
{
setProbMax( 3000.0 );
}
void EvtGoityRoberts::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId DST0 = EvtPDL::getId( "D*0" );
static EvtId DSTB = EvtPDL::getId( "anti-D*0" );
static EvtId DSTP = EvtPDL::getId( "D*+" );
static EvtId DSTM = EvtPDL::getId( "D*-" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
EvtId meson = getDaug( 0 );
if ( meson == DST0 || meson == DSTP || meson == DSTM || meson == DSTB ) {
DecayBDstarpilnuGR( p, getDaug( 0 ), getDaug( 2 ), getDaug( 3 ) );
} else {
if ( meson == D0 || meson == DP || meson == DM || meson == D0B ) {
DecayBDpilnuGR( p, getDaug( 0 ), getDaug( 2 ), getDaug( 3 ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Wrong daugther in EvtGoityRoberts!\n";
}
}
return;
}
void EvtGoityRoberts::DecayBDstarpilnuGR( EvtParticle* pb, EvtId ndstar,
EvtId nlep, EvtId /*nnu*/ )
{
pb->initializePhaseSpace( getNDaug(), getDaugs() );
//added by Lange Jan4,2000
static EvtId EM = EvtPDL::getId( "e-" );
static EvtId EP = EvtPDL::getId( "e+" );
static EvtId MUM = EvtPDL::getId( "mu-" );
static EvtId MUP = EvtPDL::getId( "mu+" );
EvtParticle *dstar, *pion, *lepton, *neutrino;
// pb->makeDaughters(getNDaug(),getDaugs());
dstar = pb->getDaug( 0 );
pion = pb->getDaug( 1 );
lepton = pb->getDaug( 2 );
neutrino = pb->getDaug( 3 );
EvtVector4C l1, l2, et0, et1, et2;
EvtVector4R v, vp, p4_pi;
double w;
v.set( 1.0, 0.0, 0.0, 0.0 ); //4-velocity of B meson
vp = ( 1.0 / dstar->getP4().mass() ) * dstar->getP4(); //4-velocity of D*
p4_pi = pion->getP4();
w = v * vp; //four velocity transfere.
EvtTensor4C omega;
double mb = EvtPDL::getMeanMass( pb->getId() ); //B mass
double md = EvtPDL::getMeanMass( ndstar ); //D* mass
EvtComplex dmb( 0.0460, -0.5 * 0.00001 ); // B*-B mass splitting ?
EvtComplex dmd( 0.1421, -0.5 * 0.00006 );
// The last two sets of numbers should
// be correctly calculated from the
// dstar and pion charges.
double g = 0.5; // EvtAmplitude proportional to these coupling constants
double alpha3 = 0.690; // See table I in G&R's paper
double alpha1 = -1.430;
double alpha2 = -0.140;
double f0 = 0.093; // The pion decay constants set to 93 MeV
EvtComplex dmt3( 0.563, -0.5 * 0.191 ); // Mass splitting = dmt - iGamma/2
EvtComplex dmt1( 0.392, -0.5 * 1.040 );
EvtComplex dmt2( 0.709, -0.5 * 0.405 );
double betas = 0.285; // magic number for meson wave function ground state
double betap = 0.280; // magic number for meson wave function state "1"
double betad = 0.260; // magic number for meson wave function state "2"
double betasp = betas * betas + betap * betap;
double betasd = betas * betas + betad * betad;
double lambdabar = 0.750; //M(0-,1-) - mQ From Goity&Roberts's code
// Isgur&Wise fct
double xi = exp( lambdabar * lambdabar * ( 1.0 - w * w ) /
( 4 * betas * betas ) );
double xi1 =
-1.0 * sqrt( 2.0 / 3.0 ) *
( lambdabar * lambdabar * ( w * w - 1.0 ) / ( 4 * betas * betas ) ) *
exp( lambdabar * lambdabar * ( 1.0 - w * w ) / ( 4 * betas * betas ) );
double rho1 = sqrt( 1.0 / 2.0 ) * ( lambdabar / betas ) *
pow( ( 2 * betas * betap / ( betasp ) ), 2.5 ) *
exp( lambdabar * lambdabar * ( 1.0 - w * w ) / ( 2 * betasp ) );
double rho2 = sqrt( 1.0 / 8.0 ) *
( lambdabar * lambdabar / ( betas * betas ) ) *
pow( ( 2 * betas * betad / ( betasd ) ), 3.5 ) *
exp( lambdabar * lambdabar * ( 1.0 - w * w ) / ( 2 * betasd ) );
//EvtGenReport(EVTGEN_INFO,"EvtGen") <<"rho's:"<<rho1<<rho2<<endl;
EvtComplex h1nr, h2nr, h3nr, f1nr, f2nr;
EvtComplex f3nr, f4nr, f5nr, f6nr, knr, g1nr, g2nr, g3nr, g4nr, g5nr;
EvtComplex h1r, h2r, h3r, f1r, f2r, f3r, f4r, f5r, f6r, kr, g1r, g2r, g3r,
g4r, g5r;
EvtComplex h1, h2, h3, f1, f2, f3, f4, f5, f6, k, g1, g2, g3, g4, g5;
// Non-resonance part
h1nr = -g * xi * ( p4_pi * v ) /
( f0 * mb * md * ( EvtComplex( p4_pi * v, 0.0 ) + dmb ) );
h2nr = -g * xi / ( f0 * mb * ( EvtComplex( p4_pi * v, 0.0 ) + dmb ) );
h3nr = -( g * xi / ( f0 * md ) ) *
( 1.0 / ( EvtComplex( p4_pi * v, 0.0 ) + dmb ) -
EvtComplex( ( 1.0 + w ) / ( p4_pi * vp ), 0.0 ) );
f1nr = -( g * xi / ( 2 * f0 * mb ) ) *
( 1.0 / ( EvtComplex( p4_pi * v, 0.0 ) + dmb ) -
1.0 / ( EvtComplex( p4_pi * vp, 0.0 ) + dmd ) );
f2nr = f1nr * mb / md;
f3nr = EvtComplex( 0.0 );
f4nr = EvtComplex( 0.0 );
f5nr = ( g * xi / ( 2 * f0 * mb * md ) ) *
( EvtComplex( 1.0, 0.0 ) +
( p4_pi * v ) / ( EvtComplex( p4_pi * v, 0.0 ) + dmb ) );
f6nr = ( g * xi / ( 2 * f0 * mb ) ) *
( 1.0 / ( EvtComplex( p4_pi * v, 0.0 ) + dmb ) -
EvtComplex( 1.0 / ( p4_pi * vp ), 0.0 ) );
knr = ( g * xi / ( 2 * f0 ) ) *
( ( p4_pi * ( vp - w * v ) ) / ( EvtComplex( p4_pi * v, 0.0 ) + dmb ) +
EvtComplex( ( p4_pi * ( v - w * vp ) ) / ( p4_pi * vp ), 0.0 ) );
g1nr = EvtComplex( 0.0 );
g2nr = EvtComplex( 0.0 );
g3nr = EvtComplex( 0.0 );
g4nr = ( g * xi ) / ( f0 * md * EvtComplex( p4_pi * vp ) );
g5nr = EvtComplex( 0.0 );
// Resonance part (D** removed by hand - alainb)
h1r = -alpha1 * rho1 * ( p4_pi * v ) /
( f0 * mb * md * ( EvtComplex( p4_pi * v, 0.0 ) + dmt1 ) ) +
alpha2 * rho2 * ( p4_pi * ( v + 2.0 * w * v - vp ) ) /
( 3 * f0 * mb * md * ( EvtComplex( p4_pi * v, 0.0 ) + dmt2 ) ) -
alpha3 * xi1 * ( p4_pi * v ) /
( f0 * mb * md * EvtComplex( p4_pi * v, 0.0 ) + dmt3 );
h2r = -alpha2 * ( 1 + w ) * rho2 /
( 3 * f0 * mb * ( EvtComplex( p4_pi * v, 0.0 ) + dmt2 ) ) -
alpha3 * xi1 / ( f0 * mb * ( EvtComplex( p4_pi * v, 0.0 ) + dmt3 ) );
h3r = alpha2 * rho2 * ( 1 + w ) /
( 3 * f0 * md * ( EvtComplex( p4_pi * v, 0.0 ) + dmt2 ) ) -
alpha3 * xi1 / ( f0 * md * ( EvtComplex( p4_pi * v, 0.0 ) + dmt3 ) );
f1r = -alpha2 * rho2 * ( w - 1.0 ) /
( 6 * f0 * mb * ( EvtComplex( p4_pi * v, 0.0 ) + dmt2 ) ) -
alpha3 * xi1 /
( 2 * f0 * mb * ( EvtComplex( p4_pi * v, 0.0 ) + dmt3 ) );
f2r = f1r * mb / md;
f3r = EvtComplex( 0.0 );
f4r = EvtComplex( 0.0 );
f5r = alpha1 * rho1 * ( p4_pi * v ) /
( 2 * f0 * mb * md * ( EvtComplex( p4_pi * v, 0.0 ) + dmt1 ) ) +
alpha2 * rho2 * ( p4_pi * ( vp - v / 3.0 - 2.0 / 3.0 * w * v ) ) /
( 2 * f0 * mb * md * ( EvtComplex( p4_pi * v, 0.0 ) + dmt2 ) ) +
alpha3 * xi1 * ( p4_pi * v ) /
( 2 * f0 * mb * md * ( EvtComplex( p4_pi * v, 0.0 ) + dmt3 ) );
f6r = alpha2 * rho2 * ( w - 1.0 ) /
( 6 * f0 * mb * ( EvtComplex( p4_pi * v, 0.0 ) + dmt2 ) ) +
alpha3 * xi1 /
( 2 * f0 * mb * ( EvtComplex( p4_pi * v, 0.0 ) + dmt3 ) );
kr = -alpha1 * rho1 * ( w - 1.0 ) * ( p4_pi * v ) /
( 2 * f0 * ( EvtComplex( p4_pi * v, 0.0 ) + dmt1 ) ) -
alpha2 * rho2 * ( w - 1.0 ) * ( p4_pi * ( vp - w * v ) ) /
( 3 * f0 * ( EvtComplex( p4_pi * v, 0.0 ) + dmt2 ) ) +
alpha3 * xi1 * ( p4_pi * ( vp - w * v ) ) /
( 2 * f0 * ( EvtComplex( p4_pi * v, 0.0 ) + dmt3 ) );
g1r = EvtComplex( 0.0 );
g2r = EvtComplex( 0.0 );
g3r = -g2r;
g4r = 2.0 * alpha2 * rho2 /
( 3 * f0 * md * ( EvtComplex( p4_pi * v, 0.0 ) + dmt2 ) );
g5r = EvtComplex( 0.0 );
//Sum
h1 = h1nr + h1r;
h2 = h2nr + h2r;
h3 = h3nr + h3r;
f1 = f1nr + f1r;
f2 = f2nr + f2r;
f3 = f3nr + f3r;
f4 = f4nr + f4r;
f5 = f5nr + f5r;
f6 = f6nr + f6r;
k = knr + kr;
g1 = g1nr + g1r;
g2 = g2nr + g2r;
g3 = g3nr + g3r;
g4 = g4nr + g4r;
g5 = g5nr + g5r;
EvtTensor4C g_metric;
g_metric.setdiag( 1.0, -1.0, -1.0, -1.0 );
if ( nlep == EM || nlep == MUM ) {
omega =
EvtComplex( 0.0, 0.5 ) *
dual( h1 * mb * md * EvtGenFunctions::directProd( v, vp ) +
h2 * mb * EvtGenFunctions::directProd( v, p4_pi ) +
h3 * md * EvtGenFunctions::directProd( vp, p4_pi ) ) +
f1 * mb * EvtGenFunctions::directProd( v, p4_pi ) +
f2 * md * EvtGenFunctions::directProd( vp, p4_pi ) +
f3 * EvtGenFunctions::directProd( p4_pi, p4_pi ) +
f4 * mb * mb * EvtGenFunctions::directProd( v, v ) +
f5 * mb * md * EvtGenFunctions::directProd( vp, v ) +
f6 * mb * EvtGenFunctions::directProd( p4_pi, v ) + k * g_metric +
EvtComplex( 0.0, 0.5 ) *
EvtGenFunctions::directProd(
dual( EvtGenFunctions::directProd( vp, p4_pi ) ).cont2( v ),
( g1 * p4_pi + g2 * mb * v ) ) +
EvtComplex( 0.0, 0.5 ) *
EvtGenFunctions::directProd(
( g3 * mb * v + g4 * md * vp + g5 * p4_pi ),
dual( EvtGenFunctions::directProd( vp, p4_pi ) ).cont2( v ) );
l1 = EvtLeptonVACurrent( lepton->spParent( 0 ),
neutrino->spParentNeutrino() );
l2 = EvtLeptonVACurrent( lepton->spParent( 1 ),
neutrino->spParentNeutrino() );
} else {
if ( nlep == EP || nlep == MUP ) {
omega =
EvtComplex( 0.0, -0.5 ) *
dual( h1 * mb * md * EvtGenFunctions::directProd( v, vp ) +
h2 * mb * EvtGenFunctions::directProd( v, p4_pi ) +
h3 * md * EvtGenFunctions::directProd( vp, p4_pi ) ) +
f1 * mb * EvtGenFunctions::directProd( v, p4_pi ) +
f2 * md * EvtGenFunctions::directProd( vp, p4_pi ) +
f3 * EvtGenFunctions::directProd( p4_pi, p4_pi ) +
f4 * mb * mb * EvtGenFunctions::directProd( v, v ) +
f5 * mb * md * EvtGenFunctions::directProd( vp, v ) +
f6 * mb * EvtGenFunctions::directProd( p4_pi, v ) + k * g_metric +
EvtComplex( 0.0, -0.5 ) *
EvtGenFunctions::directProd(
dual( EvtGenFunctions::directProd( vp, p4_pi ) ).cont2( v ),
( g1 * p4_pi + g2 * mb * v ) ) +
EvtComplex( 0.0, -0.5 ) *
EvtGenFunctions::directProd(
( g3 * mb * v + g4 * md * vp + g5 * p4_pi ),
dual( EvtGenFunctions::directProd( vp, p4_pi ) ).cont2( v ) );
l1 = EvtLeptonVACurrent( neutrino->spParentNeutrino(),
lepton->spParent( 0 ) );
l2 = EvtLeptonVACurrent( neutrino->spParentNeutrino(),
lepton->spParent( 1 ) );
} else {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< "42387dfs878w wrong lepton number\n";
}
}
et0 = omega.cont2( dstar->epsParent( 0 ).conj() );
et1 = omega.cont2( dstar->epsParent( 1 ).conj() );
et2 = omega.cont2( dstar->epsParent( 2 ).conj() );
vertex( 0, 0, l1.cont( et0 ) );
vertex( 0, 1, l2.cont( et0 ) );
vertex( 1, 0, l1.cont( et1 ) );
vertex( 1, 1, l2.cont( et1 ) );
vertex( 2, 0, l1.cont( et2 ) );
vertex( 2, 1, l2.cont( et2 ) );
return;
}
void EvtGoityRoberts::DecayBDpilnuGR( EvtParticle* pb, EvtId nd, EvtId nlep,
EvtId /*nnu*/ )
{
//added by Lange Jan4,2000
static EvtId EM = EvtPDL::getId( "e-" );
static EvtId EP = EvtPDL::getId( "e+" );
static EvtId MUM = EvtPDL::getId( "mu-" );
static EvtId MUP = EvtPDL::getId( "mu+" );
EvtParticle *d, *pion, *lepton, *neutrino;
pb->initializePhaseSpace( getNDaug(), getDaugs() );
d = pb->getDaug( 0 );
pion = pb->getDaug( 1 );
lepton = pb->getDaug( 2 );
neutrino = pb->getDaug( 3 );
EvtVector4C l1, l2, et0, et1, et2;
EvtVector4R v, vp, p4_pi;
double w;
v.set( 1.0, 0.0, 0.0, 0.0 ); //4-velocity of B meson
vp = ( 1.0 / d->getP4().mass() ) * d->getP4(); //4-velocity of D
p4_pi = pion->getP4(); //4-momentum of pion
w = v * vp; //four velocity transfer.
double mb = EvtPDL::getMeanMass( pb->getId() ); //B mass
double md = EvtPDL::getMeanMass( nd ); //D* mass
EvtComplex dmb( 0.0460, -0.5 * 0.00001 ); //B mass splitting ?
//The last two numbers should be
//correctly calculated from the
//dstar and pion particle number.
double g = 0.5; // Amplitude proportional to these coupling constants
double alpha3 = 0.690; // See table I in G&R's paper
double alpha1 = -1.430;
double alpha2 = -0.140;
double f0 = 0.093; // The pion decay constant set to 93 MeV
EvtComplex dmt3( 0.563, -0.5 * 0.191 ); // Mass splitting = dmt - iGamma/2
EvtComplex dmt1( 0.392, -0.5 * 1.040 );
EvtComplex dmt2( 0.709, -0.5 * 0.405 );
double betas = 0.285; // magic number for meson wave function ground state
double betap = 0.280; // magic number for meson wave function state "1"
double betad = 0.260; // magic number for meson wave function state "2"
double betasp = betas * betas + betap * betap;
double betasd = betas * betas + betad * betad;
double lambdabar = 0.750; //M(0-,1-) - mQ From Goity&Roberts's code
// Isgur&Wise fct
double xi = exp( lambdabar * lambdabar * ( 1.0 - w * w ) /
( 4 * betas * betas ) );
double xi1 =
-1.0 * sqrt( 2.0 / 3.0 ) *
( lambdabar * lambdabar * ( w * w - 1.0 ) / ( 4 * betas * betas ) ) *
exp( lambdabar * lambdabar * ( 1.0 - w * w ) / ( 4 * betas * betas ) );
double rho1 = sqrt( 1.0 / 2.0 ) * ( lambdabar / betas ) *
pow( ( 2 * betas * betap / ( betasp ) ), 2.5 ) *
exp( lambdabar * lambdabar * ( 1.0 - w * w ) / ( 2 * betasp ) );
double rho2 = sqrt( 1.0 / 8.0 ) *
( lambdabar * lambdabar / ( betas * betas ) ) *
pow( ( 2 * betas * betad / ( betasd ) ), 3.5 ) *
exp( lambdabar * lambdabar * ( 1.0 - w * w ) / ( 2 * betasd ) );
EvtComplex h, a1, a2, a3;
EvtComplex hnr, a1nr, a2nr, a3nr;
EvtComplex hr, a1r, a2r, a3r;
// Non-resonance part (D* and D** removed by hand - alainb)
hnr = g * xi * ( 1.0 / ( EvtComplex( p4_pi * v, 0.0 ) + dmb ) ) /
( 2 * f0 * mb * md );
a1nr = -1.0 * g * xi * ( 1 + w ) *
( 1.0 / ( EvtComplex( p4_pi * v, 0.0 ) + dmb ) ) / ( 2 * f0 );
a2nr = g * xi *
( ( p4_pi * ( v + vp ) ) / ( EvtComplex( p4_pi * v, 0.0 ) + dmb ) ) /
( 2 * f0 * mb );
a3nr = EvtComplex( 0.0, 0.0 );
// Resonance part (D** remove by hand - alainb)
hr = alpha2 * rho2 * ( w - 1 ) *
( 1.0 / ( EvtComplex( p4_pi * v, 0.0 ) + dmt2 ) ) /
( 6 * f0 * mb * md ) +
alpha3 * xi1 * ( 1.0 / ( EvtComplex( p4_pi * v, 0.0 ) + dmt3 ) ) /
( 2 * f0 * mb * md );
a1r = -1.0 * alpha2 * rho2 * ( w * w - 1 ) *
( 1.0 / ( EvtComplex( p4_pi * v, 0.0 ) + dmt2 ) ) / ( 6 * f0 ) -
alpha3 * xi1 * ( 1 + w ) *
( 1.0 / ( EvtComplex( p4_pi * v, 0.0 ) + dmt3 ) ) / ( 2 * f0 );
a2r = alpha1 * rho1 *
( ( p4_pi * v ) / ( EvtComplex( p4_pi * v, 0.0 ) + dmt1 ) ) /
( 2 * f0 * mb ) +
alpha2 * rho2 *
( 0.5 * p4_pi * ( w * vp - v ) + p4_pi * ( vp - w * v ) ) /
( 3 * f0 * mb * ( EvtComplex( p4_pi * v, 0.0 ) + dmt2 ) ) +
alpha3 * xi1 *
( ( p4_pi * ( v + vp ) ) / ( EvtComplex( p4_pi * v, 0.0 ) + dmt3 ) ) /
( 2 * f0 * mb );
a3r = -1.0 * alpha1 * rho1 *
( ( p4_pi * v ) / ( EvtComplex( p4_pi * v, 0.0 ) + dmt1 ) ) /
( 2 * f0 * md ) -
alpha2 * rho2 *
( ( p4_pi * ( vp - w * v ) ) /
( EvtComplex( p4_pi * v, 0.0 ) + dmt2 ) ) /
( 2 * f0 * md );
// Sum
h = hnr + hr;
a1 = a1nr + a1r;
a2 = a2nr + a2r;
a3 = a3nr + a3r;
EvtVector4C omega;
if ( nlep == EM || nlep == MUM ) {
omega = EvtComplex( 0.0, -1.0 ) * h * mb * md *
dual( EvtGenFunctions::directProd( vp, p4_pi ) ).cont2( v ) +
a1 * p4_pi + a2 * mb * v + a3 * md * vp;
l1 = EvtLeptonVACurrent( lepton->spParent( 0 ),
neutrino->spParentNeutrino() );
l2 = EvtLeptonVACurrent( lepton->spParent( 1 ),
neutrino->spParentNeutrino() );
} else {
if ( nlep == EP || nlep == MUP ) {
omega = EvtComplex( 0.0, 1.0 ) * h * mb * md *
dual( EvtGenFunctions::directProd( vp, p4_pi ) ).cont2( v ) +
a1 * p4_pi + a2 * mb * v + a3 * md * vp;
l1 = EvtLeptonVACurrent( neutrino->spParentNeutrino(),
lepton->spParent( 0 ) );
l2 = EvtLeptonVACurrent( neutrino->spParentNeutrino(),
lepton->spParent( 1 ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "42387dfs878w wrong lepton number\n";
}
}
vertex( 0, l1 * omega );
vertex( 1, l2 * omega );
return;
}
diff --git a/src/EvtGenModels/EvtHQET.cpp b/src/EvtGenModels/EvtHQET.cpp
index 6405ebf..d7740cb 100644
--- a/src/EvtGenModels/EvtHQET.cpp
+++ b/src/EvtGenModels/EvtHQET.cpp
@@ -1,107 +1,83 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtHQET.cc
-//
-// Description: Routine to implement semileptonic B->D*lnu decays according
-// to the model HQET
-//
-// Lange Nov9/01 adding Dlnu and possible (w-1)^2 term
-//
-//
-// Modification history:
-//
-// DJL April 20, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtHQET.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
#include "EvtGenModels/EvtHQETFF.hh"
#include <assert.h>
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtHQET::getName()
{
return "HQET";
}
EvtDecayBase* EvtHQET::clone()
{
return new EvtHQET;
}
void EvtHQET::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
calcamp->CalcAmp( p, _amp2, hqetffmodel.get() );
}
void EvtHQET::initProbMax()
{
EvtId parnum, mesnum, lnum, nunum;
parnum = getParentId();
mesnum = getDaug( 0 );
lnum = getDaug( 1 );
nunum = getDaug( 2 );
double mymaxprob = calcamp->CalcMaxProb( parnum, mesnum, lnum, nunum,
hqetffmodel.get() );
setProbMax( mymaxprob );
}
void EvtHQET::init()
{
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be X lepton neutrino
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
EvtSpinType::spintype d1type = EvtPDL::getSpinType( getDaug( 0 ) );
if ( d1type == EvtSpinType::SCALAR ) {
checkNArg( 1, 2 );
if ( getNArg() == 1 )
hqetffmodel = std::make_unique<EvtHQETFF>( getArg( 0 ) );
else
hqetffmodel = std::make_unique<EvtHQETFF>( getArg( 0 ), getArg( 1 ) );
calcamp = std::make_unique<EvtSemiLeptonicScalarAmp>();
} else if ( d1type == EvtSpinType::VECTOR ) {
checkNArg( 3, 4 );
if ( getNArg() == 3 )
hqetffmodel = std::make_unique<EvtHQETFF>( getArg( 0 ), getArg( 1 ),
getArg( 2 ) );
else
hqetffmodel = std::make_unique<EvtHQETFF>( getArg( 0 ), getArg( 1 ),
getArg( 2 ), getArg( 3 ) );
calcamp = std::make_unique<EvtSemiLeptonicVectorAmp>();
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "HQET model handles only scalar and vector meson daughters. Sorry."
<< endl;
::abort();
}
}
diff --git a/src/EvtGenModels/EvtHQET2.cpp b/src/EvtGenModels/EvtHQET2.cpp
index 6488239..ebf6973 100644
--- a/src/EvtGenModels/EvtHQET2.cpp
+++ b/src/EvtGenModels/EvtHQET2.cpp
@@ -1,131 +1,103 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtHQET2.cc
-//
-// Description: Routine to implement semileptonic B->D*lnu & B->Dlnu
-// decays according to the model HQET
-//
-// Lange Nov9/01 adding Dlnu and possible (w-1)^2 term
-//
-//
-// Modification history:
-//
-// Marco Bomben March 10, 2003 Module created
-//
-// Brian Hamilton Feb 12, 2016 Added "extened" functionality
-// <brian.hamilton -=AT=- cern.ch> to include scalar amplitude
-//
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtHQET2.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
#include "EvtGenModels/EvtHQET2FF.hh"
#include <assert.h>
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtHQET2::getName()
{
return "HQET2";
}
EvtDecayBase* EvtHQET2::clone()
{
return new EvtHQET2;
}
void EvtHQET2::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
calcamp->CalcAmp( p, _amp2, hqetffmodel.get() );
}
void EvtHQET2::initProbMax()
{
EvtId parnum, mesnum, lnum, nunum;
parnum = getParentId();
mesnum = getDaug( 0 );
lnum = getDaug( 1 );
nunum = getDaug( 2 );
double mymaxprob = calcamp->CalcMaxProb( parnum, mesnum, lnum, nunum,
hqetffmodel.get() );
setProbMax( mymaxprob );
}
void EvtHQET2::init()
{
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be X lepton neutrino
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
EvtSpinType::spintype d1type = EvtPDL::getSpinType( getDaug( 0 ) );
if ( d1type == EvtSpinType::SCALAR ) {
if ( getNArg() == 2 ) {
hqetffmodel = std::make_unique<EvtHQET2FF>( getArg( 0 ), getArg( 1 ) );
calcamp = std::make_unique<EvtSemiLeptonicScalarAmp>();
} else if ( getNArg() == 3 ) {
hqetffmodel = std::make_unique<EvtHQET2FF>( getArg( 0 ), getArg( 1 ),
getArg( 2 ) );
calcamp = std::make_unique<EvtSemiLeptonicScalarAmp>();
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "HQET2 model for scalar meson daughters needs 2 arguments for normal mode or 3 for extended. Sorry."
<< endl;
::abort();
}
} else if ( d1type == EvtSpinType::VECTOR ) {
if ( getNArg() == 4 ) {
hqetffmodel = std::make_unique<EvtHQET2FF>(
getArg( 0 ), getArg( 1 ), getArg( 2 ), getArg( 3 ) );
calcamp = std::make_unique<EvtSemiLeptonicVectorAmp>();
} else if ( getNArg() == 5 ) {
hqetffmodel = std::make_unique<EvtHQET2FF>( getArg( 0 ), getArg( 1 ),
getArg( 2 ), getArg( 3 ),
getArg( 4 ) );
calcamp = std::make_unique<EvtSemiLeptonicVectorAmp>();
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "HQET2 model for vector meson daughtersneeds 4 arguments for normal mode or 5 for extended. Sorry."
<< endl;
::abort();
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "HQET2 model handles only scalar and vector meson daughters. Sorry."
<< endl;
::abort();
}
}
diff --git a/src/EvtGenModels/EvtHQET2FF.cpp b/src/EvtGenModels/EvtHQET2FF.cpp
index a892ecc..24d41d0 100644
--- a/src/EvtGenModels/EvtHQET2FF.cpp
+++ b/src/EvtGenModels/EvtHQET2FF.cpp
@@ -1,165 +1,147 @@
-//--------------------------------------------------------------------------
-//
-// Module: EvtHQET2FF.cc
-//
-// Description: form factors for B->D*lnu & B->Dlnu according to HQET
-// with dispersive FF
-// Now with added functionality for B->D(*)taunu with FFs
-// as in the 2013 BaBar measurement
-//
-// Modification history:
-//
-// Marco Bomben March 10, 2003 Module created
-//
-// Brian Hamilton Feb 12, 2016 Added "extened" functionality
-// <brian.hamilton -=AT=- cern.ch> to include scalar amplitude
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtHQET2FF.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <math.h>
#include <stdlib.h>
#include <string>
EvtHQET2FF::EvtHQET2FF( double hqetrho2, double hqetha1_1, double hqetr1_1,
double hqetr2_1 )
{
rho2 = hqetrho2;
r1_1 = hqetr1_1;
r2_1 = hqetr2_1;
ha1_1 = hqetha1_1;
extended = false;
}
EvtHQET2FF::EvtHQET2FF( double hqetrho2, double hqetha1_1, double hqetr1_1,
double hqetr2_1, double hqetr0_1 )
{
rho2 = hqetrho2;
r0_1 = hqetr0_1;
r1_1 = hqetr1_1;
r2_1 = hqetr2_1;
ha1_1 = hqetha1_1;
extended = true;
}
EvtHQET2FF::EvtHQET2FF( double hqetrho2, double hqetv1_1 )
{
rho2 = hqetrho2;
v1_1 = hqetv1_1;
extended = false;
}
EvtHQET2FF::EvtHQET2FF( double hqetrho2, double hqetv1_1, double indelta )
{
rho2 = hqetrho2;
v1_1 = hqetv1_1;
delta = indelta;
extended = true;
}
void EvtHQET2FF::getscalarff( EvtId parent, EvtId, double t, double mass,
double* f0p, double* f0m )
{
double mb = EvtPDL::getMeanMass( parent );
double w = ( ( mb * mb ) + ( mass * mass ) - t ) / ( 2.0 * mb * mass );
// Form factors have a general form, with parameters passed in
// from the arguements.
// Use dispersion relation parametrization from
// I.Caprini, L.Lelluch, M.Neubert, Nucl. Phys. B 530,153(1998)
const double z = ( sqrt( w + 1 ) - sqrt( 2. ) ) /
( sqrt( w + 1 ) + sqrt( 2. ) );
double v1 = v1_1 * ( 1. - 8. * rho2 * z + ( 51. * rho2 - 10. ) * z * z -
( 252. * rho2 - 84. ) * z * z * z );
*f0p = v1;
*f0m = 0.0;
if ( extended ) {
//if in extended mode, use helicity-suppressed FF using the result from
//Tanaka and Watanabe, Phys. Rev. D 82 034027 (2010)
double r = mass / mb;
double r1 = r + 1.0;
double s1 = v1 * ( 1 + delta * ( -0.019 + 0.041 * ( w - 1 ) -
0.015 * ( w - 1 ) *
( w - 1 ) ) ); //as in ref
*f0m = s1 * ( w + 1.0 ) * 2.0 * r /
( r1 * r1 ); //convert to convention used by EvtGen with proper relative normalization
}
}
void EvtHQET2FF::getvectorff( EvtId parent, EvtId, double t, double mass,
double* a1f, double* a2f, double* vf, double* a0f )
{
double mb = EvtPDL::getMeanMass( parent );
double w = ( ( mb * mb ) + ( mass * mass ) - t ) / ( 2.0 * mb * mass );
// Form factors have a general form, with parameters passed in
// from the arguements.
double rstar = ( 2.0 * sqrt( mb * mass ) ) / ( mb + mass );
// Use dispersion relation parametrization from
// I.Caprini, L.Lelluch, M.Neubert, Nucl. Phys. B 530,153(1998)
const double z = ( sqrt( w + 1 ) - sqrt( 2. ) ) /
( sqrt( w + 1 ) + sqrt( 2. ) );
double ha1 = ha1_1 * ( 1. - 8. * rho2 * z + ( 53. * rho2 - 15. ) * z * z -
( 231. * rho2 - 91. ) * z * z * z );
double r1 = r1_1 - 0.12 * ( w - 1 ) + 0.05 * ( w - 1 ) * ( w - 1 );
double r2 = r2_1 + 0.11 * ( w - 1 ) - 0.06 * ( w - 1 ) * ( w - 1 );
*a1f = ( 1.0 - ( t / ( ( mb + mass ) * ( mb + mass ) ) ) ) * ha1;
*a1f = ( *a1f ) / rstar;
*a2f = ( r2 / rstar ) * ha1;
*vf = ( r1 / rstar ) * ha1;
*a0f = 0.0;
if ( extended ) {
// Here we use the expectation for R_0(w) from
// Fajfer et al, Phys. Rev. D 85 094025 (2012)
double r0 = r0_1 - 0.11 * ( w - 1 ) + 0.01 * ( w - 1 ) * ( w - 1 );
*a0f = ( r0 / rstar ) * ha1;
}
}
void EvtHQET2FF::gettensorff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :gettensorff in EvtHQET2FF.\n";
::abort();
}
void EvtHQET2FF::getbaryonff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtHQET2FF.\n";
::abort();
}
void EvtHQET2FF::getdiracff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getdiracff in EvtHQET2FF.\n";
::abort();
}
void EvtHQET2FF::getraritaff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double*, double*,
double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtHQET2FF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtHQETFF.cpp b/src/EvtGenModels/EvtHQETFF.cpp
index 675a635..7ba8a47 100644
--- a/src/EvtGenModels/EvtHQETFF.cpp
+++ b/src/EvtGenModels/EvtHQETFF.cpp
@@ -1,119 +1,99 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtHQETFF.cc
-//
-// Description: form factors for B->D*lnu according to HQET
-//
-// Modification history:
-//
-// DJL April 17, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtHQETFF.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <math.h>
#include <stdlib.h>
#include <string>
EvtHQETFF::EvtHQETFF( double hqetrho2, double hqetr1, double hqetr2,
double quadTerm )
{
rho2 = hqetrho2;
r1 = hqetr1;
r2 = hqetr2;
c = quadTerm;
return;
}
EvtHQETFF::EvtHQETFF( double hqetrho2, double quadTerm )
{
rho2 = hqetrho2;
c = quadTerm;
return;
}
void EvtHQETFF::getscalarff( EvtId parent, EvtId, double t, double mass,
double* f0p, double* f0m )
{
double mb = EvtPDL::getMeanMass( parent );
double w = ( ( mb * mb ) + ( mass * mass ) - t ) / ( 2.0 * mb * mass );
// Form factors have a general form, with parameters passed in
// from the arguements.
double ha1 = 1 - rho2 * ( w - 1 ) + c * ( w - 1 ) * ( w - 1 );
*f0p = ha1;
*f0m = 0.0;
return;
}
void EvtHQETFF::getvectorff( EvtId parent, EvtId, double t, double mass,
double* a1f, double* a2f, double* vf, double* a0f )
{
double mb = EvtPDL::getMeanMass( parent );
double w = ( ( mb * mb ) + ( mass * mass ) - t ) / ( 2.0 * mb * mass );
// Form factors have a general form, with parameters passed in
// from the arguements.
double rstar = ( 2.0 * sqrt( mb * mass ) ) / ( mb + mass );
double ha1 = 1 - rho2 * ( w - 1 );
*a1f = ( 1.0 - ( t / ( ( mb + mass ) * ( mb + mass ) ) ) ) * ha1;
*a1f = ( *a1f ) / rstar;
*a2f = ( r2 / rstar ) * ha1;
*vf = ( r1 / rstar ) * ha1;
*a0f = 0.0;
return;
}
void EvtHQETFF::gettensorff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :gettensorff in EvtHQETFF.\n";
::abort();
}
void EvtHQETFF::getbaryonff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtHQETFF.\n";
::abort();
}
void EvtHQETFF::getdiracff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getdiracff in EvtHQETFF.\n";
::abort();
}
void EvtHQETFF::getraritaff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtHQETFF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtHelAmp.cpp b/src/EvtGenModels/EvtHelAmp.cpp
index 5ecf7c9..29a8769 100644
--- a/src/EvtGenModels/EvtHelAmp.cpp
+++ b/src/EvtGenModels/EvtHelAmp.cpp
@@ -1,201 +1,179 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtHelAmp.cc
-//
-// Description: Decay model for implementation of generic 2 body
-// decay specified by the helicity amplitudes
-//
-//
-// Modification history:
-//
-// RYD March 14, 1999 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtHelAmp.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtEvalHelAmp.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <string>
#include <vector>
using std::endl;
std::string EvtHelAmp::getName()
{
return "HELAMP";
}
EvtDecayBase* EvtHelAmp::clone()
{
return new EvtHelAmp;
}
void EvtHelAmp::init()
{
checkNDaug( 2 );
//find out how many states each particle have
int _nA = EvtSpinType::getSpinStates( EvtPDL::getSpinType( getParentId() ) );
int _nB = EvtSpinType::getSpinStates( EvtPDL::getSpinType( getDaug( 0 ) ) );
int _nC = EvtSpinType::getSpinStates( EvtPDL::getSpinType( getDaug( 1 ) ) );
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "_nA,_nB,_nC:" << _nA << "," << _nB << "," << _nC << endl;
}
//find out what 2 times the spin is
int _JA2 = EvtSpinType::getSpin2( EvtPDL::getSpinType( getParentId() ) );
int _JB2 = EvtSpinType::getSpin2( EvtPDL::getSpinType( getDaug( 0 ) ) );
int _JC2 = EvtSpinType::getSpin2( EvtPDL::getSpinType( getDaug( 1 ) ) );
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "_JA2,_JB2,_JC2:" << _JA2 << "," << _JB2 << "," << _JC2 << endl;
}
//allocate memory
std::vector<int> _lambdaA2( _nA );
std::vector<int> _lambdaB2( _nB );
std::vector<int> _lambdaC2( _nC );
EvtComplexPtr* _HBC = new EvtComplexPtr[_nB];
for ( int ib = 0; ib < _nB; ib++ ) {
_HBC[ib] = new EvtComplex[_nC];
}
int i;
//find the allowed helicities (actually 2*times the helicity!)
fillHelicity( _lambdaA2.data(), _nA, _JA2, getParentId() );
fillHelicity( _lambdaB2.data(), _nB, _JB2, getDaug( 0 ) );
fillHelicity( _lambdaC2.data(), _nC, _JC2, getDaug( 1 ) );
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Helicity states of particle A:" << endl;
for ( i = 0; i < _nA; i++ ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << _lambdaA2[i] << endl;
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Helicity states of particle B:" << endl;
for ( i = 0; i < _nB; i++ ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << _lambdaB2[i] << endl;
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Helicity states of particle C:" << endl;
for ( i = 0; i < _nC; i++ ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << _lambdaC2[i] << endl;
}
}
//now read in the helicity amplitudes
int argcounter = 0;
for ( int ib = 0; ib < _nB; ib++ ) {
for ( int ic = 0; ic < _nC; ic++ ) {
_HBC[ib][ic] = 0.0;
if ( abs( _lambdaB2[ib] - _lambdaC2[ic] ) <= _JA2 )
argcounter += 2;
}
}
checkNArg( argcounter );
argcounter = 0;
for ( int ib = 0; ib < _nB; ib++ ) {
for ( int ic = 0; ic < _nC; ic++ ) {
if ( abs( _lambdaB2[ib] - _lambdaC2[ic] ) <= _JA2 ) {
_HBC[ib][ic] = getArg( argcounter ) *
exp( EvtComplex( 0.0, getArg( argcounter + 1 ) ) );
;
argcounter += 2;
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "_HBC[" << ib << "][" << ic << "]=" << _HBC[ib][ic]
<< endl;
}
}
}
}
_evalHelAmp = std::make_unique<EvtEvalHelAmp>( getParentId(), getDaug( 0 ),
getDaug( 1 ), _HBC );
// Note: these are not class data members but local variables.
for ( int ib = 0; ib < _nB; ib++ ) {
delete[] _HBC[ib];
}
delete[] _HBC; // _HBC is copied in ctor of EvtEvalHelAmp above.
}
void EvtHelAmp::initProbMax()
{
double maxprob = _evalHelAmp->probMax();
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Calculated probmax" << maxprob << endl;
}
setProbMax( maxprob );
}
void EvtHelAmp::decay( EvtParticle* p )
{
//first generate simple phase space
p->initializePhaseSpace( getNDaug(), getDaugs() );
_evalHelAmp->evalAmp( p, _amp2 );
}
void EvtHelAmp::fillHelicity( int* lambda2, int n, int J2, EvtId id )
{
int i;
//photon is special case!
if ( n == 2 && J2 == 2 ) {
lambda2[0] = 2;
lambda2[1] = -2;
return;
}
//and so is the neutrino!
if ( n == 1 && J2 == 1 ) {
if ( EvtPDL::getStdHep( id ) > 0 ) {
//particle i.e. lefthanded
lambda2[0] = -1;
} else {
//anti particle i.e. righthanded
lambda2[0] = 1;
}
return;
}
assert( n == J2 + 1 );
for ( i = 0; i < n; i++ ) {
lambda2[i] = n - i * 2 - 1;
}
return;
}
diff --git a/src/EvtGenModels/EvtHypNonLepton.cpp b/src/EvtGenModels/EvtHypNonLepton.cpp
index 5d0861b..dfe9479 100644
--- a/src/EvtGenModels/EvtHypNonLepton.cpp
+++ b/src/EvtGenModels/EvtHypNonLepton.cpp
@@ -1,183 +1,169 @@
-//-----------------------------------------------------------------------------------------------
-//
-// Module: EvtHypNonLepton.cpp
-//
-// Desription: Routine to implement Hyperon(s=1/2) -> Baryon(s=1/2) + Scalar decays accroding to
-// Review Of Particle Physics 2004, Phys.Lett.B, Vol.592, p.864
-//
-// Modification history:
-//
-// 09/02/2009 PR Corrected Delta sign
-// 20/02/2005 PR Module created according to PHSP and Lb2Lll model
-//
-//-----------------------------------------------------------------------------------------------
-
#include "EvtGenModels/EvtHypNonLepton.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGammaMatrix.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
EvtDecayBase* EvtHypNonLepton::clone()
{
return new EvtHypNonLepton;
}
std::string EvtHypNonLepton::getName()
{
return "HypNonLepton";
}
void EvtHypNonLepton::init()
{
if ( getNArg() < 2 || getNArg() > 3 ) { // alpha phi gamma delta
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtHypNonLepton generator expected 2 or 3 arguments but found: "
<< getNArg() << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " 1. Decay asymmetry parameter - alpha" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " 2. Parameter phi - in degrees (not radians)" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " 3. Note on every x-th decay" << std::endl;
::abort();
}
if ( getNDaug() != 2 ) { // Check that there are 2 daughters only
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtHypNonLepton generator expected 2 daughters but found: "
<< getNDaug() << std::endl;
::abort();
}
// Check particles spins
if ( EvtSpinType::getSpin2( EvtPDL::getSpinType( getParentId() ) ) != 1 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtHypNonLepton generator expected dirac parent particle, but found "
<< EvtSpinType::getSpin2( EvtPDL::getSpinType( getParentId() ) )
<< " spin degrees of freedom" << std::endl;
::abort();
}
if ( EvtSpinType::getSpin2( EvtPDL::getSpinType( getDaug( 0 ) ) ) != 1 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtHypNonLepton generator expected the first child to be dirac particle, but found "
<< EvtSpinType::getSpin2( EvtPDL::getSpinType( getDaug( 0 ) ) )
<< " spin degrees of freedom" << std::endl;
::abort();
}
if ( EvtSpinType::getSpin2( EvtPDL::getSpinType( getDaug( 1 ) ) ) != 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtHypNonLepton generator expected the second child to be scalar particle, but found "
<< EvtSpinType::getSpin2( EvtPDL::getSpinType( getDaug( 1 ) ) )
<< " spin degrees of freedom" << std::endl;
::abort();
}
// Read all parameters
m_alpha = getArg( 0 );
m_phi = getArg( 1 ) * EvtConst::pi / 180;
if ( getNArg() == 3 )
m_noTries = static_cast<long>( getArg( 2 ) );
else
m_noTries = 0;
// calculate additional parameters
double p, M, m1, m2;
double p_to_s, beta, delta, gamma;
M = EvtPDL::getMass( getParentId() );
m1 = EvtPDL::getMass( getDaug( 0 ) );
m2 = EvtPDL::getMass( getDaug( 1 ) );
if ( m1 + m2 >= M ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtHypNonLepton found impossible decay: " << M
<< " --> " << m1 << " + " << m2 << " GeV\n"
<< std::endl;
::abort();
}
p = sqrt( M * M - ( m1 + m2 ) * ( m1 + m2 ) ) *
sqrt( M * M - ( m1 - m2 ) * ( m1 - m2 ) ) / 2. / M;
beta = sqrt( 1. - m_alpha * m_alpha ) * sin( m_phi );
delta = -atan2( beta, m_alpha );
gamma = sqrt( 1. - m_alpha * m_alpha - beta * beta );
p_to_s = sqrt( ( 1. - gamma ) / ( 1. + gamma ) );
m_B_to_A = p_to_s * ( m1 + sqrt( p * p + m1 * m1 ) ) / p *
EvtComplex( cos( delta ), sin( delta ) );
}
void EvtHypNonLepton::initProbMax()
{
double maxProb, m1, m2, M, p;
M = EvtPDL::getMass( getParentId() );
m1 = EvtPDL::getMass( getDaug( 0 ) );
m2 = EvtPDL::getMass( getDaug( 1 ) );
if ( m1 + m2 >= M ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtHypNonLepton found impossible decay: " << M
<< " --> " << m1 << " + " << m2 << " GeV\n"
<< std::endl;
::abort();
}
p = sqrt( M * M - ( m1 + m2 ) * ( m1 + m2 ) ) *
sqrt( M * M - ( m1 - m2 ) * ( m1 - m2 ) ) / 2 / M;
maxProb = 16 * M *
( sqrt( p * p + m1 * m1 ) + m1 +
abs( m_B_to_A ) * abs( m_B_to_A ) *
( sqrt( p * p + m1 * m1 ) - m1 ) );
//maxProb *= G_F*M_pi*M_pi;
setProbMax( maxProb );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtHypNonLepton set up maximum probability to " << maxProb
<< std::endl;
}
void EvtHypNonLepton::decay( EvtParticle* parent )
{
parent->initializePhaseSpace( getNDaug(), getDaugs() );
calcAmp( &_amp2, parent );
}
void EvtHypNonLepton::calcAmp( EvtAmp* amp, EvtParticle* parent )
{
static long noTries = 0;
int i;
EvtComplex Matrix[2][2];
//G_F = 1.16637e-5;
//M_pi = 0.13957;
for ( i = 0; i < 4; i++ ) {
//std::cout << "--------------------------------------------------" << std::endl;
Matrix[i / 2][i % 2] = EvtLeptonSCurrent(
parent->sp( i / 2 ), parent->getDaug( 0 )->spParent( i % 2 ) );
//std::cout << "Matrix = " << Matrix[i/2][i%2] << std::endl;
Matrix[i / 2][i % 2] -=
m_B_to_A *
EvtLeptonPCurrent( parent->sp( i / 2 ),
parent->getDaug( 0 )->spParent( i % 2 ) );
//std::cout << "Matrix = " << Matrix[i/2][i%2] << std::endl;
//Matrix[i/2][i%2] *= G_F*M_pi*M_pi;
//std::cout << "Matrix = " << Matrix[i/2][i%2] << std::endl;
//std::cout << "--------------------------------------------------" << std::endl;
amp->vertex( i / 2, i % 2, Matrix[i / 2][i % 2] );
}
if ( m_noTries > 0 )
if ( !( ( ++noTries ) % m_noTries ) )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< " EvtHypNonLepton already finished " << noTries
<< " matrix element calculations" << std::endl;
}
diff --git a/src/EvtGenModels/EvtISGW.cpp b/src/EvtGenModels/EvtISGW.cpp
index 8c62dc1..1620234 100644
--- a/src/EvtGenModels/EvtISGW.cpp
+++ b/src/EvtGenModels/EvtISGW.cpp
@@ -1,83 +1,62 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtISGW.cc
-//
-// Description: Routine to implement semileptonic decays according
-// to the model ISGW
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtISGW.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicTensorAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
#include "EvtGenModels/EvtISGWFF.hh"
#include <stdlib.h>
#include <string>
std::string EvtISGW::getName()
{
return "ISGW";
}
EvtDecayBase* EvtISGW::clone()
{
return new EvtISGW;
}
void EvtISGW::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
calcamp->CalcAmp( p, _amp2, isgwffmodel.get() );
}
void EvtISGW::init()
{
checkNArg( 0 );
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be X lepton neutrino
EvtSpinType::spintype mesontype = EvtPDL::getSpinType( getDaug( 0 ) );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
isgwffmodel = std::make_unique<EvtISGWFF>();
switch ( mesontype ) {
case EvtSpinType::SCALAR:
calcamp = std::make_unique<EvtSemiLeptonicScalarAmp>();
break;
case EvtSpinType::VECTOR:
calcamp = std::make_unique<EvtSemiLeptonicVectorAmp>();
break;
case EvtSpinType::TENSOR:
calcamp = std::make_unique<EvtSemiLeptonicTensorAmp>();
break;
default:;
}
}
diff --git a/src/EvtGenModels/EvtISGW2.cpp b/src/EvtGenModels/EvtISGW2.cpp
index d8c09c0..ffdc593 100644
--- a/src/EvtGenModels/EvtISGW2.cpp
+++ b/src/EvtGenModels/EvtISGW2.cpp
@@ -1,735 +1,714 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtISGW2.cc
-//
-// Description: Routine to implement semileptonic decays according
-// to the model ISGW2
-//
-// Modification history:
-//
-// DJL/RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtISGW2.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicTensorAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
#include "EvtGenModels/EvtISGW2FF.hh"
#include <stdlib.h>
#include <string>
std::string EvtISGW2::getName()
{
return "ISGW2";
}
EvtDecayBase* EvtISGW2::clone()
{
return new EvtISGW2;
}
void EvtISGW2::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
calcamp->CalcAmp( p, _amp2, isgw2ffmodel.get() );
}
void EvtISGW2::initProbMax()
{
//added by Lange Jan4,2000
static EvtId EM = EvtPDL::getId( "e-" );
static EvtId EP = EvtPDL::getId( "e+" );
static EvtId MUM = EvtPDL::getId( "mu-" );
static EvtId MUP = EvtPDL::getId( "mu+" );
static EvtId TAUM = EvtPDL::getId( "tau-" );
static EvtId TAUP = EvtPDL::getId( "tau+" );
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId BS0 = EvtPDL::getId( "B_s0" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
static EvtId BCP = EvtPDL::getId( "B_c+" );
static EvtId BCM = EvtPDL::getId( "B_c-" );
static EvtId DST0 = EvtPDL::getId( "D*0" );
static EvtId DSTB = EvtPDL::getId( "anti-D*0" );
static EvtId DSTP = EvtPDL::getId( "D*+" );
static EvtId DSTM = EvtPDL::getId( "D*-" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId D1P1P = EvtPDL::getId( "D_1+" );
static EvtId D1P1N = EvtPDL::getId( "D_1-" );
static EvtId D1P10 = EvtPDL::getId( "D_10" );
static EvtId D1P1B = EvtPDL::getId( "anti-D_10" );
static EvtId D3P2P = EvtPDL::getId( "D_2*+" );
static EvtId D3P2N = EvtPDL::getId( "D_2*-" );
static EvtId D3P20 = EvtPDL::getId( "D_2*0" );
static EvtId D3P2B = EvtPDL::getId( "anti-D_2*0" );
static EvtId D3P1P = EvtPDL::getId( "D'_1+" );
static EvtId D3P1N = EvtPDL::getId( "D'_1-" );
static EvtId D3P10 = EvtPDL::getId( "D'_10" );
static EvtId D3P1B = EvtPDL::getId( "anti-D'_10" );
static EvtId D3P0P = EvtPDL::getId( "D_0*+" );
static EvtId D3P0N = EvtPDL::getId( "D_0*-" );
static EvtId D3P00 = EvtPDL::getId( "D_0*0" );
static EvtId D3P0B = EvtPDL::getId( "anti-D_0*0" );
static EvtId D21S0P = EvtPDL::getId( "D(2S)+" );
static EvtId D21S0N = EvtPDL::getId( "D(2S)-" );
static EvtId D21S00 = EvtPDL::getId( "D(2S)0" );
static EvtId D21S0B = EvtPDL::getId( "anti-D(2S)0" );
static EvtId D23S1P = EvtPDL::getId( "D*(2S)+" );
static EvtId D23S1N = EvtPDL::getId( "D*(2S)-" );
static EvtId D23S10 = EvtPDL::getId( "D*(2S)0" );
static EvtId D23S1B = EvtPDL::getId( "anti-D*(2S)0" );
static EvtId RHO2S0 = EvtPDL::getId( "rho(2S)0" );
static EvtId RHO2SP = EvtPDL::getId( "rho(2S)+" );
static EvtId RHO2SM = EvtPDL::getId( "rho(2S)-" );
static EvtId OMEG2S = EvtPDL::getId( "omega(2S)" );
static EvtId ETA2S = EvtPDL::getId( "eta(2S)" );
static EvtId PI2S0 = EvtPDL::getId( "pi(2S)0" );
static EvtId PI2SP = EvtPDL::getId( "pi(2S)+" );
static EvtId PI2SM = EvtPDL::getId( "pi(2S)-" );
static EvtId PIP = EvtPDL::getId( "pi+" );
static EvtId PIM = EvtPDL::getId( "pi-" );
static EvtId PI0 = EvtPDL::getId( "pi0" );
static EvtId RHOP = EvtPDL::getId( "rho+" );
static EvtId RHOM = EvtPDL::getId( "rho-" );
static EvtId RHO0 = EvtPDL::getId( "rho0" );
static EvtId A2P = EvtPDL::getId( "a_2+" );
static EvtId A2M = EvtPDL::getId( "a_2-" );
static EvtId A20 = EvtPDL::getId( "a_20" );
static EvtId A1P = EvtPDL::getId( "a_1+" );
static EvtId A1M = EvtPDL::getId( "a_1-" );
static EvtId A10 = EvtPDL::getId( "a_10" );
static EvtId A0P = EvtPDL::getId( "a_0+" );
static EvtId A0M = EvtPDL::getId( "a_0-" );
static EvtId A00 = EvtPDL::getId( "a_00" );
static EvtId B1P = EvtPDL::getId( "b_1+" );
static EvtId B1M = EvtPDL::getId( "b_1-" );
static EvtId B10 = EvtPDL::getId( "b_10" );
static EvtId H1 = EvtPDL::getId( "h_1" );
static EvtId H1PR = EvtPDL::getId( "h'_1" );
static EvtId F1 = EvtPDL::getId( "f_1" );
static EvtId F1PR = EvtPDL::getId( "f'_1" );
static EvtId F0 = EvtPDL::getId( "f_0" );
static EvtId F0PR = EvtPDL::getId( "f'_0" );
static EvtId F2 = EvtPDL::getId( "f_2" );
static EvtId F2PR = EvtPDL::getId( "f'_2" );
static EvtId ETA = EvtPDL::getId( "eta" );
static EvtId ETAPR = EvtPDL::getId( "eta'" );
static EvtId OMEG = EvtPDL::getId( "omega" );
static EvtId KP = EvtPDL::getId( "K+" );
static EvtId KM = EvtPDL::getId( "K-" );
static EvtId K0 = EvtPDL::getId( "K0" );
static EvtId KB = EvtPDL::getId( "anti-K0" );
static EvtId K0S = EvtPDL::getId( "K_S0" );
static EvtId K0L = EvtPDL::getId( "K_L0" );
static EvtId KSTP = EvtPDL::getId( "K*+" );
static EvtId KSTM = EvtPDL::getId( "K*-" );
static EvtId KST0 = EvtPDL::getId( "K*0" );
static EvtId KSTB = EvtPDL::getId( "anti-K*0" );
static EvtId K1P = EvtPDL::getId( "K_1+" );
static EvtId K1M = EvtPDL::getId( "K_1-" );
static EvtId K10 = EvtPDL::getId( "K_10" );
static EvtId K1B = EvtPDL::getId( "anti-K_10" );
static EvtId K1STP = EvtPDL::getId( "K'_1+" );
static EvtId K1STM = EvtPDL::getId( "K'_1-" );
static EvtId K1ST0 = EvtPDL::getId( "K'_10" );
static EvtId K1STB = EvtPDL::getId( "anti-K'_10" );
static EvtId K2STP = EvtPDL::getId( "K_2*+" );
static EvtId K2STM = EvtPDL::getId( "K_2*-" );
static EvtId K2ST0 = EvtPDL::getId( "K_2*0" );
static EvtId K2STB = EvtPDL::getId( "anti-K_2*0" );
static EvtId PHI = EvtPDL::getId( "phi" );
static EvtId DSP = EvtPDL::getId( "D_s+" );
static EvtId DSM = EvtPDL::getId( "D_s-" );
static EvtId DSSTP = EvtPDL::getId( "D_s*+" );
static EvtId DSSTM = EvtPDL::getId( "D_s*-" );
static EvtId DS1P = EvtPDL::getId( "D_s1+" );
static EvtId DS1M = EvtPDL::getId( "D_s1-" );
static EvtId DS0STP = EvtPDL::getId( "D_s0*+" );
static EvtId DS0STM = EvtPDL::getId( "D_s0*-" );
static EvtId DPS1P = EvtPDL::getId( "D'_s1+" );
static EvtId DPS1M = EvtPDL::getId( "D'_s1-" );
static EvtId DS2STP = EvtPDL::getId( "D_s2*+" );
static EvtId DS2STM = EvtPDL::getId( "D_s2*-" );
EvtId parnum, mesnum, lnum;
parnum = getParentId();
mesnum = getDaug( 0 );
lnum = getDaug( 1 );
if ( parnum == BP || parnum == BM || parnum == B0 || parnum == B0B ||
parnum == BS0 || parnum == BSB ) {
if ( mesnum == DST0 || mesnum == DSTP || mesnum == DSTB ||
mesnum == DSTM || mesnum == DSSTP || mesnum == DSSTM ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 10000.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 7000.0 );
return;
}
}
if ( mesnum == D0 || mesnum == DP || mesnum == D0B || mesnum == DM ||
mesnum == DSP || mesnum == DSM ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 4000.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 3500.0 );
return;
}
}
if ( mesnum == D1P1P || mesnum == D1P1N || mesnum == D1P10 ||
mesnum == D1P1B || mesnum == DS1P || mesnum == DS1M ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 1300.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 480.0 );
return;
}
}
if ( mesnum == D3P1P || mesnum == D3P1N || mesnum == D3P10 ||
mesnum == D3P1B || mesnum == DS0STP || mesnum == DS0STM ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 450.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 73.0 ); //???
return;
}
}
if ( mesnum == D3P0P || mesnum == D3P0N || mesnum == D3P00 ||
mesnum == D3P0B || mesnum == DPS1P || mesnum == DPS1M ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 200.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 90.0 );
return;
}
}
if ( mesnum == D3P2P || mesnum == D3P2N || mesnum == D3P20 ||
mesnum == D3P2B || mesnum == DS2STP || mesnum == DS2STM ) {
if ( mesnum == DS2STP || mesnum == DS2STM ) {
setProbMax( 550.0 );
return;
}
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 400.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 220.0 );
return;
}
}
if ( mesnum == D21S0P || mesnum == D21S0N || mesnum == D21S00 ||
mesnum == D21S0B ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 16.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 3.0 );
return;
}
}
if ( mesnum == D23S1P || mesnum == D23S1N || mesnum == D23S10 ||
mesnum == D23S1B ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 500.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 250.0 );
return;
}
}
if ( mesnum == RHOP || mesnum == RHOM || mesnum == RHO0 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 6500.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 6000.0 );
return;
}
}
if ( mesnum == OMEG ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 6800.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 6000.0 );
return;
}
}
if ( mesnum == PIP || mesnum == PIM || mesnum == PI0 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 1200.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 1150.0 );
return;
}
}
if ( mesnum == ETA ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 1800.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 1900.0 );
return;
}
}
if ( mesnum == ETAPR ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 3000.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 3000.0 );
return;
}
}
if ( mesnum == B1P || mesnum == B1M || mesnum == B10 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 2500.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 1700.0 );
return;
}
}
if ( mesnum == A0P || mesnum == A0M || mesnum == A00 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 80.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 62.0 );
return;
}
}
if ( mesnum == A1P || mesnum == A1M || mesnum == A10 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 4500.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 3500.0 );
return;
}
}
if ( mesnum == A2P || mesnum == A2M || mesnum == A20 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 1200.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 1000.0 );
return;
}
}
if ( mesnum == H1 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 2600.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 2900.0 );
return;
}
}
if ( mesnum == H1PR ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 1400.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 1500.0 );
return;
}
}
if ( mesnum == F2 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 1100.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 1100.0 );
return;
}
}
if ( mesnum == F2PR ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 804.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 600.0 );
return;
}
}
if ( mesnum == F1 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 2500.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 2000.0 );
return;
}
}
if ( mesnum == F1PR ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 2400.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 1700.0 );
return;
}
}
if ( mesnum == F0 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 80.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 63.0 );
return;
}
}
if ( mesnum == F0PR ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 120.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 120.0 );
return;
}
}
if ( mesnum == RHO2SP || mesnum == RHO2SM || mesnum == RHO2S0 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 2400.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 2000.0 );
return;
}
}
if ( mesnum == OMEG2S ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 1600.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 1400.0 );
return;
}
}
if ( mesnum == PI2SP || mesnum == PI2SM || mesnum == PI2S0 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 500.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 300.0 );
return;
}
}
if ( mesnum == ETA2S ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 344.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 300.0 );
return;
}
}
if ( mesnum == KP || mesnum == KM || mesnum == K1P || mesnum == K1M ||
mesnum == K1STP || mesnum == K1STM ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 2000.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 1000.0 );
return;
}
}
if ( mesnum == KSTP || mesnum == KSTM ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 10000.0 );
return;
}
if ( lnum == TAUP || lnum == TAUM ) {
setProbMax( 7000.0 );
return;
}
}
}
if ( parnum == D0 || parnum == DP || parnum == DM || parnum == D0B ) {
if ( mesnum == RHOP || mesnum == RHOM || mesnum == RHO0 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 110.0 );
return;
}
}
if ( mesnum == OMEG ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 75.0 );
return;
}
}
if ( mesnum == PIP || mesnum == PIM || mesnum == PI0 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 40.0 );
return;
}
}
if ( mesnum == ETA ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 65.0 );
return;
}
}
if ( mesnum == ETAPR ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 60.0 );
return;
}
}
if ( mesnum == KP || mesnum == KM || mesnum == K0 || mesnum == K0S ||
mesnum == K0L || mesnum == KB ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 70.0 );
return;
}
}
if ( mesnum == K1STP || mesnum == K1STM || mesnum == K1ST0 ||
mesnum == K1STB ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 3.3 );
return;
}
}
if ( mesnum == K1P || mesnum == K1M || mesnum == K10 || mesnum == K1B ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 100.0 );
return;
}
}
if ( mesnum == KSTP || mesnum == KSTM || mesnum == KST0 ||
mesnum == KSTB ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 135.0 );
return;
}
}
if ( mesnum == K2STP || mesnum == K2STM || mesnum == K2ST0 ||
mesnum == K2STB ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
//Lange - Oct 26,2001 - increasing from 0.75 to
//accomodate
setProbMax( 9.0 );
// setProbMax( 0.75);
return;
}
}
if ( mesnum == F0 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 1.0 );
return;
}
}
}
if ( parnum == DSP || parnum == DSM ) {
if ( mesnum == PHI ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 90.0 );
return;
}
}
if ( mesnum == ETA ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 75.0 );
return;
}
}
if ( mesnum == ETAPR ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 80.0 );
return;
}
}
if ( mesnum == KST0 || mesnum == KSTB ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 100.0 );
return;
}
}
if ( mesnum == K0 || mesnum == KB || mesnum == K0S || mesnum == K0L ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 45.0 );
return;
}
}
if ( mesnum == F0 ) {
if ( lnum == EP || lnum == EM || lnum == MUP || lnum == MUM ) {
setProbMax( 1.0 );
return;
}
}
}
if ( parnum == BCP || parnum == BCM ) {
setProbMax( 1000.0 );
return;
}
//This is a real cludge.. (ryd)
setProbMax( 0.0 );
}
void EvtISGW2::init()
{
checkNArg( 0 );
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be X lepton neutrino
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
EvtSpinType::spintype mesontype = EvtPDL::getSpinType( getDaug( 0 ) );
isgw2ffmodel = std::make_unique<EvtISGW2FF>();
switch ( mesontype ) {
case EvtSpinType::SCALAR:
calcamp = std::make_unique<EvtSemiLeptonicScalarAmp>();
break;
case EvtSpinType::VECTOR:
calcamp = std::make_unique<EvtSemiLeptonicVectorAmp>();
break;
case EvtSpinType::TENSOR:
calcamp = std::make_unique<EvtSemiLeptonicTensorAmp>();
;
break;
default:;
}
}
diff --git a/src/EvtGenModels/EvtISGW2FF.cpp b/src/EvtGenModels/EvtISGW2FF.cpp
index e85690b..266d54c 100644
--- a/src/EvtGenModels/EvtISGW2FF.cpp
+++ b/src/EvtGenModels/EvtISGW2FF.cpp
@@ -1,1797 +1,1776 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtISGW2FF.cc
-//
-// Description: Routine to implement semileptonic form factors
-// according to the model ISGW2
-//
-// Modification history:
-//
-// DJL April 17, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtISGW2FF.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <math.h>
#include <stdlib.h>
#include <string>
using std::endl;
void EvtISGW2FF::getscalarff( EvtId parent, EvtId daught, double t, double mass,
double* fpf, double* f0f )
{
//added by Lange Jan4,2000
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId D3P0P = EvtPDL::getId( "D_0*+" );
static EvtId D3P0N = EvtPDL::getId( "D_0*-" );
static EvtId D3P00 = EvtPDL::getId( "D_0*0" );
static EvtId D3P0B = EvtPDL::getId( "anti-D_0*0" );
static EvtId D21S0P = EvtPDL::getId( "D(2S)+" );
static EvtId D21S0N = EvtPDL::getId( "D(2S)-" );
static EvtId D21S00 = EvtPDL::getId( "D(2S)0" );
static EvtId D21S0B = EvtPDL::getId( "anti-D(2S)0" );
static EvtId ETA2S = EvtPDL::getId( "eta(2S)" );
static EvtId PI2S0 = EvtPDL::getId( "pi(2S)0" );
static EvtId PI2SP = EvtPDL::getId( "pi(2S)+" );
static EvtId PI2SM = EvtPDL::getId( "pi(2S)-" );
static EvtId PIP = EvtPDL::getId( "pi+" );
static EvtId PIM = EvtPDL::getId( "pi-" );
static EvtId PI0 = EvtPDL::getId( "pi0" );
static EvtId A0P = EvtPDL::getId( "a_0+" );
static EvtId A0M = EvtPDL::getId( "a_0-" );
static EvtId A00 = EvtPDL::getId( "a_00" );
static EvtId F0 = EvtPDL::getId( "f_0" );
static EvtId F0PR = EvtPDL::getId( "f'_0" );
static EvtId ETA = EvtPDL::getId( "eta" );
static EvtId ETAPR = EvtPDL::getId( "eta'" );
static EvtId KP = EvtPDL::getId( "K+" );
static EvtId KM = EvtPDL::getId( "K-" );
static EvtId K0 = EvtPDL::getId( "K0" );
static EvtId KB = EvtPDL::getId( "anti-K0" );
static EvtId K0S = EvtPDL::getId( "K_S0" );
static EvtId K0L = EvtPDL::getId( "K_L0" );
static EvtId K0STP = EvtPDL::getId( "K_0*+" );
static EvtId K0STM = EvtPDL::getId( "K_0*-" );
static EvtId K0ST0 = EvtPDL::getId( "K_0*0" );
static EvtId K0STB = EvtPDL::getId( "anti-K_0*0" );
static EvtId DSP = EvtPDL::getId( "D_s+" );
static EvtId DSM = EvtPDL::getId( "D_s-" );
static EvtId D3P0SP = EvtPDL::getId( "D_s0*+" );
static EvtId D3P0SN = EvtPDL::getId( "D_s0*-" );
double fmf;
double mb = EvtPDL::getMeanMass( parent );
if ( daught == PI0 || daught == PIP || daught == PIM || daught == ETA ||
daught == ETAPR || daught == D0 || daught == D0B || daught == DP ||
daught == DM || daught == KP || daught == KM || daught == K0 ||
daught == K0S || daught == K0L || daught == KB || daught == DSP ||
daught == DSM ) {
EvtISGW2FF1S0( parent, daught, t, mass, fpf, &fmf );
}
if ( daught == PI2S0 || daught == PI2SP || daught == PI2SM ||
daught == ETA2S || daught == D21S0P || daught == D21S0B ||
daught == D21S0N || daught == D21S00 ) {
EvtISGW2FF21S0( parent, daught, t, mass, fpf, &fmf );
}
if ( daught == A00 || daught == A0P || daught == A0M || daught == F0 ||
daught == F0PR || daught == D3P0P || daught == D3P00 ||
daught == D3P0B || daught == D3P0N || daught == K0STM ||
daught == K0STB || daught == K0STP || daught == D3P0SP ||
daught == D3P0SN || daught == K0ST0 ) {
EvtISGW2FF3P0( parent, daught, t, mass, fpf, &fmf );
}
*f0f = ( fmf / ( ( mb * mb - mass * mass ) / t ) ) + ( *fpf );
return;
}
void EvtISGW2FF::gettensorff( EvtId parent, EvtId daught, double t, double mass,
double* hf, double* kf, double* bpf, double* bmf )
{
//added by Lange Jan4,2000
EvtISGW2FF3P2( parent, daught, t, mass, hf, kf, bpf, bmf );
return;
}
void EvtISGW2FF::getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf, double* a0f )
{
double ff, gf, apf, amf;
//added by Lange Jan4,2000
static EvtId DST0 = EvtPDL::getId( "D*0" );
static EvtId DSTB = EvtPDL::getId( "anti-D*0" );
static EvtId DSTP = EvtPDL::getId( "D*+" );
static EvtId DSTM = EvtPDL::getId( "D*-" );
static EvtId D1P1P = EvtPDL::getId( "D_1+" );
static EvtId D1P1N = EvtPDL::getId( "D_1-" );
static EvtId D1P10 = EvtPDL::getId( "D_10" );
static EvtId D1P1B = EvtPDL::getId( "anti-D_10" );
static EvtId D3P1P = EvtPDL::getId( "D'_1+" );
static EvtId D3P1N = EvtPDL::getId( "D'_1-" );
static EvtId D3P10 = EvtPDL::getId( "D'_10" );
static EvtId D3P1B = EvtPDL::getId( "anti-D'_10" );
static EvtId D23S1P = EvtPDL::getId( "D*(2S)+" );
static EvtId D23S1N = EvtPDL::getId( "D*(2S)-" );
static EvtId D23S10 = EvtPDL::getId( "D*(2S)0" );
static EvtId D23S1B = EvtPDL::getId( "anti-D*(2S)0" );
static EvtId RHO2S0 = EvtPDL::getId( "rho(2S)0" );
static EvtId RHO2SP = EvtPDL::getId( "rho(2S)+" );
static EvtId RHO2SM = EvtPDL::getId( "rho(2S)-" );
static EvtId OMEG2S = EvtPDL::getId( "omega(2S)" );
static EvtId RHOP = EvtPDL::getId( "rho+" );
static EvtId RHOM = EvtPDL::getId( "rho-" );
static EvtId RHO0 = EvtPDL::getId( "rho0" );
static EvtId A1P = EvtPDL::getId( "a_1+" );
static EvtId A1M = EvtPDL::getId( "a_1-" );
static EvtId A10 = EvtPDL::getId( "a_10" );
static EvtId B1P = EvtPDL::getId( "b_1+" );
static EvtId B1M = EvtPDL::getId( "b_1-" );
static EvtId B10 = EvtPDL::getId( "b_10" );
static EvtId H1 = EvtPDL::getId( "h_1" );
static EvtId H1PR = EvtPDL::getId( "h'_1" );
static EvtId F1 = EvtPDL::getId( "f_1" );
static EvtId F1PR = EvtPDL::getId( "f'_1" );
static EvtId OMEG = EvtPDL::getId( "omega" );
static EvtId KSTP = EvtPDL::getId( "K*+" );
static EvtId KSTM = EvtPDL::getId( "K*-" );
static EvtId KST0 = EvtPDL::getId( "K*0" );
static EvtId KSTB = EvtPDL::getId( "anti-K*0" );
static EvtId K1P = EvtPDL::getId( "K_1+" );
static EvtId K1M = EvtPDL::getId( "K_1-" );
static EvtId K10 = EvtPDL::getId( "K_10" );
static EvtId K1B = EvtPDL::getId( "anti-K_10" );
static EvtId K1STP = EvtPDL::getId( "K'_1+" );
static EvtId K1STM = EvtPDL::getId( "K'_1-" );
static EvtId K1ST0 = EvtPDL::getId( "K'_10" );
static EvtId K1STB = EvtPDL::getId( "anti-K'_10" );
static EvtId PHI = EvtPDL::getId( "phi" );
static EvtId D1P1SP = EvtPDL::getId( "D_s1+" );
static EvtId D1P1SN = EvtPDL::getId( "D_s1-" );
static EvtId D3P1SP = EvtPDL::getId( "D'_s1+" );
static EvtId D3P1SN = EvtPDL::getId( "D'_s1-" );
static EvtId DSSTP = EvtPDL::getId( "D_s*+" );
static EvtId DSSTM = EvtPDL::getId( "D_s*-" );
if ( daught == DST0 || daught == DSTP || daught == DSTM || daught == DSTB ||
daught == OMEG || daught == RHO0 || daught == RHOM || daught == RHOP ||
daught == KSTP || daught == KSTM || daught == KST0 || daught == KSTB ||
daught == PHI || daught == DSSTP || daught == DSSTM ) {
EvtISGW2FF3S1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
}
if ( daught == B10 || daught == B1P || daught == B1M || daught == H1 ||
daught == H1PR || daught == D1P1P || daught == D1P10 || daught == D1P1B ||
daught == D1P1SP || daught == D1P1SN || daught == D1P1N ||
daught == K10 || daught == K1B || daught == K1P || daught == K1M ) {
EvtISGW2FF1P1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
}
if ( daught == RHO2S0 || daught == RHO2SP || daught == RHO2SM ||
daught == OMEG2S || daught == D23S1P || daught == D23S1B ||
daught == D23S1N || daught == D23S10 ) {
EvtISGW2FF23S1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
}
if ( daught == A10 || daught == A1P || daught == A1M || daught == F1 ||
daught == F1PR || daught == D3P1P || daught == D3P10 ||
daught == D3P1B || daught == D3P1N || daught == K1STM ||
daught == K1STB || daught == K1STP || daught == D3P1SP ||
daught == D3P1SN || daught == K1ST0 ) {
EvtISGW2FF3P1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
}
// Need to stuff in some factors to make these the ffs that
// is used elsewhere...
double mb = EvtPDL::getMeanMass( parent );
*vf = ( gf ) * ( mb + mass );
*a1f = ( ff ) / ( mb + mass );
*a2f = -1.0 * ( apf ) * ( mb + mass );
double a3f = ( ( mb + mass ) / ( 2.0 * mass ) ) * ( *a1f ) -
( ( mb - mass ) / ( 2.0 * mass ) ) * ( *a2f );
*a0f = a3f + ( ( t * amf ) / ( 2.0 * mass ) );
return;
}
void EvtISGW2FF::EvtISGW2FF1S0( EvtId parent, EvtId daugt, double t,
double mass, double* fpf, double* fmf )
{
double mtb, mbb( 0.0 );
double msd( 0.0 ), mx, mb, nf( 0.0 ), nfp( 0.0 );
double msq( 0.0 ), bx2( 0.0 ), mbx( 0.0 ), mtx;
double zji, cji, gammaji, chiji, betaji_fppfm;
double rfppfm, rfpmfm, f3fppfm, f3fpmfm, fppfm, fpmfm, ai, f3;
double mqm, msb( 0.0 ), bb2( 0.0 ), mup, bbx2, tm, r2, betaji_fpmfm;
EvtId prnt = parent;
EvtId dgt = daugt;
//added by Lange Jan4,2000
static EvtIdSet theB( "B+", "B-", "B0", "anti-B0" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId PIP = EvtPDL::getId( "pi+" );
static EvtId PIM = EvtPDL::getId( "pi-" );
static EvtId PI0 = EvtPDL::getId( "pi0" );
static EvtId ETA = EvtPDL::getId( "eta" );
static EvtId ETAPR = EvtPDL::getId( "eta'" );
static EvtId KP = EvtPDL::getId( "K+" );
static EvtId KM = EvtPDL::getId( "K-" );
static EvtId K0 = EvtPDL::getId( "K0" );
static EvtId KB = EvtPDL::getId( "anti-K0" );
static EvtId K0S = EvtPDL::getId( "K_S0" );
static EvtId K0L = EvtPDL::getId( "K_L0" );
static EvtId DSP = EvtPDL::getId( "D_s+" );
static EvtId DSM = EvtPDL::getId( "D_s-" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
static EvtId BS0 = EvtPDL::getId( "B_s0" );
if ( theB.contains( prnt ) ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.431 * 0.431;
mbb = 5.31;
nf = 4.0;
if ( dgt == PI0 || dgt == PIP || dgt == PIM || dgt == ETA ||
dgt == ETAPR ) {
msq = 0.33;
bx2 = 0.406 * 0.406;
mbx = 0.75 * 0.770 + 0.25 * 0.14;
nfp = 0.0;
} else {
if ( dgt == D0 || dgt == D0B || dgt == DP || dgt == DM ) {
msq = 1.82;
bx2 = 0.45 * 0.45;
mbx = 0.75 * 2.01 + 0.25 * 1.87;
nfp = 3.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt:" << daugt.getId()
<< " in get_isgw_ff_1S0.\n";
}
}
} else {
if ( prnt == D0 || prnt == D0B || prnt == DP || prnt == DM ) {
msb = 1.82;
msd = 0.33;
bb2 = 0.45 * 0.45;
mbb = 1.963;
nf = 3.0;
if ( dgt == PIP || dgt == PIM || dgt == PI0 || dgt == ETA ||
dgt == ETAPR ) {
msq = 0.33;
bx2 = 0.406 * 0.406;
mbx = 0.75 * 0.770 + 0.25 * 0.14;
nfp = 0.0;
} else {
if ( dgt == K0 || dgt == K0S || dgt == K0L || dgt == KB ||
dgt == KP || dgt == KM ) {
msq = 0.55;
bx2 = 0.44 * 0.44;
mbx = 0.75 * 0.892 + 0.25 * 0.49767;
nfp = 2.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt:" << daugt.getId()
<< " in get_isgw_ff_1S0.\n";
}
}
} else {
if ( prnt == DSP || prnt == DSM ) {
msb = 1.82;
msd = 0.55;
bb2 = 0.56 * 0.56;
mbb = 1.968;
nf = 3.0;
if ( dgt == K0 || dgt == K0S || dgt == K0L || dgt == KB ) {
msq = 0.33;
bx2 = 0.44 * 0.44;
mbx = 0.75 * 0.770 + 0.25 * 0.14;
nfp = 0.0;
} else {
if ( dgt == PI0 || dgt == ETA || dgt == ETAPR ) {
msq = 0.33;
bx2 = 0.53 * 0.53;
mbx = 0.75 * 0.892 + 0.25 * 0.49767;
nfp = 0.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt:" << daugt.getId()
<< " in get_isgw_ff_1S0.\n";
}
}
} else {
//BS -> cs constants added by djl on Jan. 21,1998
if ( prnt == BS0 || prnt == BSB ) {
msb = 5.2;
msd = 0.55;
bb2 = 0.54 * 0.54;
mbb = 5.38;
nf = 4.0;
if ( dgt == DSP || dgt == DSM ) {
msq = 1.82;
bx2 = 0.56 * 0.56;
mbx = 0.75 * 2.11 + 0.25 * 1.97;
nfp = 3.0;
} else if ( dgt == KP || dgt == KM ) {
msq = 0.55;
bx2 = 0.44 * 0.44;
mbx = 0.75 * 0.892 + 0.25 * 0.49767;
nfp = 2.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt:" << daugt.getId()
<< " in get_isgw_ff_1S0.\n";
}
}
else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_isgw_ff_1S0.\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Parent:" << parent.getId() << endl;
}
}
}
}
mtb = msb + msd;
mtx = msq + msd;
mb = EvtPDL::getMeanMass( parent );
mx = mass;
mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
bbx2 = 0.5 * ( bb2 + bx2 );
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
mqm = 0.1;
r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
log( EvtGetas( mqm, mqm ) / EvtGetas( msq, msq ) );
f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 1.5 ) /
( ( 1.0 + r2 * ( tm - t ) / 12.0 ) * ( 1.0 + r2 * ( tm - t ) / 12.0 ) );
// for w use wt def with physical masses.
// EvtGenReport(EVTGEN_ERROR,"EvtGen") << "before w\n";
ai = -1.0 * ( 6.0 / ( 33.0 - 2.0 * nf ) );
cji = pow( ( EvtGetas( msb, msb ) / EvtGetas( msq, msq ) ), ai );
zji = msq / msb;
gammaji = EvtGetGammaji( zji );
chiji = -1.0 - ( gammaji / ( 1 - zji ) );
betaji_fppfm = gammaji - ( 2.0 / 3.0 ) * chiji;
betaji_fpmfm = gammaji + ( 2.0 / 3.0 ) * chiji;
rfppfm = cji * ( 1.0 + betaji_fppfm * EvtGetas( msq, sqrt( msb * msq ) ) /
EvtConst::pi );
rfpmfm = cji * ( 1.0 + betaji_fpmfm * EvtGetas( msq, sqrt( msb * msq ) ) /
EvtConst::pi );
f3fppfm = f3 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), 0.5 );
f3fpmfm = f3 * pow( ( mbb / mtb ), 0.5 ) * pow( ( mbx / mtx ), -0.5 );
fppfm = f3fppfm * rfppfm *
( 2.0 - ( ( mtx / msq ) * ( 1 - ( ( msd * msq * bb2 ) /
( 2.0 * mup * mtx * bbx2 ) ) ) ) );
fpmfm = f3fpmfm * rfpmfm * ( mtb / msq ) *
( 1 - ( ( msd * msq * bb2 ) / ( 2.0 * mup * mtx * bbx2 ) ) );
*fpf = ( fppfm + fpmfm ) / 2.0;
*fmf = ( fppfm - fpmfm ) / 2.0;
return;
} //get_ff_isgw_1s0
void EvtISGW2FF::EvtISGW2FF3S1( EvtId parent, EvtId daugt, double t, double mass,
double* f, double* g, double* ap, double* am )
{
//added by Lange Jan4,2000
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId DST0 = EvtPDL::getId( "D*0" );
static EvtId DSTB = EvtPDL::getId( "anti-D*0" );
static EvtId DSTP = EvtPDL::getId( "D*+" );
static EvtId DSTM = EvtPDL::getId( "D*-" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId RHOP = EvtPDL::getId( "rho+" );
static EvtId RHOM = EvtPDL::getId( "rho-" );
static EvtId RHO0 = EvtPDL::getId( "rho0" );
static EvtId OMEG = EvtPDL::getId( "omega" );
static EvtId KSTP = EvtPDL::getId( "K*+" );
static EvtId KSTM = EvtPDL::getId( "K*-" );
static EvtId KST0 = EvtPDL::getId( "K*0" );
static EvtId KSTB = EvtPDL::getId( "anti-K*0" );
static EvtId PHI = EvtPDL::getId( "phi" );
static EvtId DSP = EvtPDL::getId( "D_s+" );
static EvtId DSM = EvtPDL::getId( "D_s-" );
static EvtId DSSTP = EvtPDL::getId( "D_s*+" );
static EvtId DSSTM = EvtPDL::getId( "D_s*-" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
static EvtId BS0 = EvtPDL::getId( "B_s0" );
double cf( 0.0 ), mtb, wt, msd( 0.0 ), mup, f3f, msq( 0.0 ), bb2( 0.0 ),
mum, mtx, bbx2, f3g;
double cji, bx2( 0.0 ), f3appam, msb( 0.0 ), tm, mbb( 0.0 ), mbx( 0.0 );
double f3apmam, appam, apmam, mb, mx, f3;
double r_f, r_g, r_apmam, betaji_f, betaji_g;
double betaji_appam, betaji_apmam;
double mqm, r2, chiji, zji, ai, nf( 0.0 ), nfp( 0.0 ), gammaji;
EvtId prnt = parent;
EvtId dgt = daugt;
if ( parent == B0 || parent == B0B || parent == BP || parent == BM ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.431 * 0.431;
mbb = 5.31;
nf = 4.0;
if ( dgt == DST0 || dgt == DSTP || dgt == DSTM || dgt == DSTB ) {
cf = 0.989;
msq = 1.82;
bx2 = 0.38 * 0.38;
mbx = 0.75 * 2.01 + 0.25 * 1.87;
nfp = 3.0;
} else {
if ( dgt == OMEG || dgt == RHO0 || dgt == RHOM || dgt == RHOP ) {
cf = 0.905;
msq = 0.33;
bx2 = 0.299 * 0.299;
mbx = 0.75 * 0.770 + 0.25 * 0.14;
nfp = 0.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt:" << daugt.getId()
<< " in get_isgw_ff_3S1.\n";
}
}
} else {
if ( prnt == D0 || prnt == D0B || prnt == DP || prnt == DM ) {
msb = 1.82;
msd = 0.33;
bb2 = 0.45 * 0.45;
mbb = 1.963;
nf = 3.0;
if ( dgt == KSTP || dgt == KSTM || dgt == KST0 || dgt == KSTB ) {
cf = 0.928;
msq = 0.55;
bx2 = 0.33 * 0.33;
mbx = 0.75 * 0.892 + 0.25 * 0.494;
nfp = 2.0;
} else {
if ( dgt == RHO0 || dgt == OMEG || dgt == RHOM || dgt == RHOP ) {
cf = 0.889;
msq = 0.33;
bx2 = 0.299 * 0.299;
mbx = 0.75 * 0.770 + 0.25 * 0.14;
nfp = 0.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt:" << daugt.getId()
<< " in get_isgw_ff_3S1.\n";
}
}
} else {
if ( prnt == DSP || prnt == DSM ) {
msb = 1.82;
msd = 0.55;
bb2 = 0.56 * 0.56;
mbb = 1.968;
nf = 3.0;
if ( dgt == KSTB || dgt == KST0 ) {
cf = 0.8731;
msq = 0.55;
bx2 = 0.33 * 0.33;
mbx = 0.87;
nfp = 2.0;
} else {
if ( dgt == PHI ) {
cf = 0.911;
msq = 0.55;
bx2 = 0.37 * 0.37;
mbx = 0.97;
nfp = 2.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt:" << daugt.getId()
<< " in get_isgw_ff_3S1.\n";
}
}
} else {
//BS -> cs constants added by djl on Jan. 21,1998
if ( prnt == BS0 || prnt == BSB ) {
msb = 5.2;
msd = 0.55;
bb2 = 0.54 * 0.54;
mbb = 5.38;
nf = 4.0;
if ( dgt == DSSTP || dgt == DSSTM ) {
cf = 0.984;
msq = 1.82;
bx2 = 0.49 * 0.49;
mbx = 0.75 * 2.11 + 0.25 * 1.97;
nfp = 3.0;
} else if ( dgt == KSTP || dgt == KSTM || dgt == KST0 ||
dgt == KSTB ) {
cf = 0.928;
msq = 0.55;
bx2 = 0.33 * 0.33;
mbx = 0.75 * 0.892 + 0.25 * 0.494;
nfp = 2.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt:" << daugt.getId()
<< " in get_isgw_ff_1S0.\n";
}
}
else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_isgw2_ff_3S1.\n";
}
}
}
}
mtb = msb + msd;
mtx = msq + msd;
mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
bbx2 = 0.5 * ( bb2 + bx2 );
mb = EvtPDL::getMeanMass( parent );
mx = mass;
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
wt = 1.0 + ( tm - t ) / ( 2.0 * mbb * mbx );
mqm = 0.1;
r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
log( EvtGetas( mqm, mqm ) / EvtGetas( msq, msq ) );
ai = -1.0 * ( 6.0 / ( 33.0 - 2.0 * nf ) );
cji = pow( ( EvtGetas( msb, msb ) / EvtGetas( msq, msq ) ), ai );
zji = msq / msb;
gammaji = EvtGetGammaji( zji );
chiji = -1.0 - ( gammaji / ( 1 - zji ) );
betaji_g = ( 2.0 / 3.0 ) + gammaji;
betaji_f = ( -2.0 / 3.0 ) + gammaji;
betaji_appam = -1.0 - chiji + ( 4.0 / ( 3.0 * ( 1.0 - zji ) ) ) +
( 2.0 * ( 1 + zji ) * gammaji /
( 3.0 * ( 1.0 - zji ) * ( 1.0 - zji ) ) );
betaji_apmam = ( 1.0 / 3.0 ) - chiji - ( 4.0 / ( 3.0 * ( 1.0 - zji ) ) ) -
( 2.0 * ( 1 + zji ) * gammaji /
( 3.0 * ( 1.0 - zji ) * ( 1.0 - zji ) ) ) +
gammaji;
r_g = cji * ( 1 + ( betaji_g * EvtGetas( msq, sqrt( mb * msq ) ) /
( EvtConst::pi ) ) );
r_f = cji * ( 1 + ( betaji_f * EvtGetas( msq, sqrt( mb * msq ) ) /
( EvtConst::pi ) ) );
r_apmam = cji * ( 1 + ( betaji_apmam * EvtGetas( msq, sqrt( mb * msq ) ) /
( EvtConst::pi ) ) );
f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 1.5 ) /
( ( 1.0 + r2 * ( tm - t ) / 12.0 ) * ( 1.0 + r2 * ( tm - t ) / 12.0 ) );
f3f = sqrt( mbx * mbb / ( mtx * mtb ) ) * f3;
f3g = sqrt( mtx * mtb / ( mbx * mbb ) ) * f3;
f3appam = sqrt( mtb * mtb * mtb * mbx / ( mbb * mbb * mbb * mtx ) ) * f3;
f3apmam = sqrt( mtx * mtb / ( mbx * mbb ) ) * f3;
*f = cf * mtb * ( 1 + wt + msd * ( wt - 1 ) / ( 2 * mup ) ) * f3f * r_f;
*g = 0.5 * ( 1 / msq - msd * bb2 / ( 2 * mum * mtx * bbx2 ) ) * f3g * r_g;
appam = cji *
( msd * bx2 * ( 1 - msd * bx2 / ( 2 * mtb * bbx2 ) ) /
( ( 1 + wt ) * msq * msb * bbx2 ) -
betaji_appam * EvtGetas( msq, sqrt( msq * mb ) ) /
( mtb * EvtConst::pi ) ) *
f3appam;
apmam = -1.0 *
( mtb / msb - msd * bx2 / ( 2 * mup * bbx2 ) +
wt * msd * mtb * bx2 * ( 1 - msd * bx2 / ( 2 * mtb * bbx2 ) ) /
( ( wt + 1 ) * msq * msb * bbx2 ) ) *
f3apmam * r_apmam / mtx;
*ap = 0.5 * ( appam + apmam );
*am = 0.5 * ( appam - apmam );
return;
}
void EvtISGW2FF::EvtISGW2FF21S0( EvtId parent, EvtId daugt, double t,
double mass, double* fppf, double* fpmf )
{
//added by Lange Jan4,2000
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId D21S0P = EvtPDL::getId( "D(2S)+" );
static EvtId D21S0N = EvtPDL::getId( "D(2S)-" );
static EvtId D21S00 = EvtPDL::getId( "D(2S)0" );
static EvtId D21S0B = EvtPDL::getId( "anti-D(2S)0" );
static EvtId ETA2S = EvtPDL::getId( "eta(2S)" );
static EvtId PI2S0 = EvtPDL::getId( "pi(2S)0" );
static EvtId PI2SP = EvtPDL::getId( "pi(2S)+" );
static EvtId PI2SM = EvtPDL::getId( "pi(2S)-" );
double mtb, mbb( 0.0 );
double msd( 0.0 ), mx, mb, nfp( 0.0 );
double msq( 0.0 ), bx2( 0.0 ), mbx( 0.0 ), mtx;
double f3fppfm, f3fpmfm, fppfm, fpmfm, f3;
double mqm, msb( 0.0 );
double r2, wt, tm, bb2( 0.0 ), bbx2;
double tau, udef, vdef;
EvtId prnt = parent;
EvtId dgt = daugt;
if ( prnt == B0 || prnt == B0B || prnt == BP || prnt == BM ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.431 * 0.431;
mbb = 0.75 * 5.325 + 0.25 * 5.279;
if ( dgt == PI2S0 || dgt == PI2SP || dgt == PI2SM || dgt == ETA2S ) {
msq = 0.33;
bx2 = 0.406 * 0.406;
mbx = 0.75 * 1.45 + 0.25 * 1.300;
nfp = 0.0;
} else {
if ( dgt == D21S0P || dgt == D21S0B || dgt == D21S0N ||
dgt == D21S00 ) {
msq = 1.82;
bx2 = 0.45 * 0.45;
mbx = 0.75 * 2.64 + 0.25 * 2.58;
nfp = 3.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_EvtISGW2_ff_21S0.\n";
}
}
} else {
if ( prnt == D0 || prnt == D0B || prnt == DP || prnt == DM ) {
msb = 1.82;
msd = 0.33;
bb2 = 0.45 * 0.45;
mbb = 1.963;
if ( dgt == PI2SP || dgt == PI2SM || dgt == PI2S0 || dgt == ETA2S ) {
msq = 0.33;
bx2 = 0.406 * 0.406;
mbx = 0.75 * 1.45 + 0.25 * 1.300;
nfp = 0.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_EvtISGW2_ff_21S0.\n";
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_EvtISGW2_ff_21S0.\n";
}
}
mtb = msb + msd;
mtx = msq + msd;
mb = EvtPDL::getMeanMass( parent );
mx = mass;
bbx2 = 0.5 * ( bb2 + bx2 );
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
wt = 1.0 + ( tm - t ) / ( 2.0 * mbb * mbx );
mqm = 0.1;
r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
log( EvtGetas( mqm ) / EvtGetas( msq ) );
f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 3.0 / 2.0 ) /
( pow( ( 1.0 + r2 * ( tm - t ) / 24.0 ), 4.0 ) );
f3fppfm = f3 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), 0.5 );
f3fpmfm = f3 * pow( ( mbb / mtb ), 0.5 ) * pow( ( mbx / mtx ), -0.5 );
tau = msd * msd * bx2 * ( wt - 1 ) / ( bb2 * bbx2 );
udef = ( ( bb2 - bx2 ) / ( 2.0 * bbx2 ) ) +
( ( bb2 * tau ) / ( 3.0 * bbx2 ) );
vdef = ( bb2 * ( 1.0 + ( msq / msb ) ) / ( 6.0 * bbx2 ) ) *
( 7.0 - ( ( bb2 / bbx2 ) * ( 5 + tau ) ) );
fppfm = f3fppfm * sqrt( 1.5 ) *
( ( 1.0 - ( msd / msq ) ) * udef - ( msd * vdef / msq ) );
fpmfm = f3fpmfm * sqrt( 1.5 ) * ( mtb / msq ) *
( udef + ( msd * vdef / mtx ) );
*fppf = ( fppfm + fpmfm ) / 2.0;
*fpmf = ( fppfm - fpmfm ) / 2.0;
return;
} //get_ff_isgw_21s0
void EvtISGW2FF::EvtISGW2FF23S1( EvtId parent, EvtId daugt, double t,
double mass, double* fpf, double* gpf,
double* appf, double* apmf )
{
//added by Lange Jan4,2000
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId D23S1P = EvtPDL::getId( "D*(2S)+" );
static EvtId D23S1N = EvtPDL::getId( "D*(2S)-" );
static EvtId D23S10 = EvtPDL::getId( "D*(2S)0" );
static EvtId D23S1B = EvtPDL::getId( "anti-D*(2S)0" );
static EvtId RHO2S0 = EvtPDL::getId( "rho(2S)0" );
static EvtId RHO2SP = EvtPDL::getId( "rho(2S)+" );
static EvtId RHO2SM = EvtPDL::getId( "rho(2S)-" );
static EvtId OMEG2S = EvtPDL::getId( "omega(2S)" );
double mtb, mbb( 0.0 );
double msd( 0.0 ), mx, mb, nfp( 0.0 );
double msq( 0.0 ), bx2( 0.0 ), mbx( 0.0 ), mtx;
double f3appam, f3apmam, f3, appam, apmam, f3fp, f3gp;
double udef, tau, mum, bb2( 0.0 ), bbx2, tm, wt, mqm, r2, msb( 0.0 );
double cfp( 0.0 );
EvtId prnt = parent;
EvtId dgt = daugt;
if ( prnt == B0 || prnt == B0B || prnt == BP || prnt == BM ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.431 * 0.431;
mbb = 0.75 * 5.325 + 0.25 * 5.279;
if ( dgt == RHO2S0 || dgt == RHO2SP || dgt == RHO2SM || dgt == OMEG2S ) {
cfp = 0.776;
msq = 0.33;
bx2 = 0.299 * 0.299;
mbx = 0.75 * 1.45 + 0.25 * 1.300;
nfp = 0.0;
} else {
if ( dgt == D23S1N || dgt == D23S1P || dgt == D23S1B ||
dgt == D23S10 ) {
cfp = 0.929;
msq = 1.82;
bx2 = 0.38 * 0.38;
mbx = 0.75 * 2.64 + 0.25 * 2.58;
nfp = 3.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_isgw_ff_23P1.\n";
}
}
} else {
if ( prnt == D0 || prnt == D0B || prnt == DP || prnt == DM ) {
msb = 1.82;
msd = 0.33;
bb2 = 0.45 * 0.45;
mbb = 1.963;
if ( dgt == RHO2S0 || dgt == RHO2SP || dgt == RHO2SM ||
dgt == OMEG2S ) {
cfp = 0.74;
msq = 0.33;
bx2 = 0.299 * 0.299;
mbx = 0.75 * 1.45 + 0.25 * 1.300;
nfp = 0.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_isgw_ff_23P1.\n";
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_isgw_ff_23P1.\n";
}
}
mtb = msb + msd;
mtx = msq + msd;
mb = EvtPDL::getMeanMass( parent );
mx = mass;
mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
bbx2 = 0.5 * ( bb2 + bx2 );
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
wt = 1.0 + ( tm - t ) / ( 2.0 * mbb * mbx );
mqm = 0.1;
r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
log( EvtGetas( mqm ) / EvtGetas( msq ) );
f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 3.0 / 2.0 ) /
( pow( ( 1.0 + r2 * ( tm - t ) / 24.0 ), 4.0 ) );
f3fp = f3 * pow( ( mbb / mtb ), 0.5 ) * pow( ( mbx / mtx ), 0.5 );
f3gp = f3 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), -0.5 );
f3appam = f3 * pow( ( mbb / mtb ), -1.5 ) * pow( ( mbx / mtx ), 0.5 );
f3apmam = f3 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), -0.5 );
tau = msd * msd * bx2 * ( wt - 1.0 ) / ( bb2 * bbx2 );
udef = ( ( bb2 - bx2 ) / ( 2.0 * bbx2 ) );
udef = udef + ( ( bb2 * tau ) / ( 3.0 * bbx2 ) );
*fpf = cfp * sqrt( 1.5 ) * mtb * ( 1.0 + wt ) * udef * f3fp;
*gpf = sqrt( 3.0 / 8.0 ) * f3gp *
( ( ( 1.0 / msq ) - ( ( msd * bb2 ) / ( 2.0 * mum * mtx * bbx2 ) ) ) *
udef +
( ( msd * bb2 * bx2 ) / ( 3.0 * mum * mtx * bbx2 * bbx2 ) ) );
appam = f3appam * sqrt( 2.0 / 3.0 ) * ( bb2 / ( msq * msb * bbx2 ) ) *
( ( -7.0 * msd * msd * bx2 * bx2 * ( 1.0 + ( tau / 7.0 ) ) /
( 8.0 * mtb * bbx2 * bbx2 ) ) +
( 5.0 * msd * bx2 * ( 1.0 + ( tau / 5.0 ) ) / ( 4.0 * bbx2 ) ) +
( 3.0 * msd * msd * bx2 * bx2 / ( 8.0 * mtb * bb2 * bbx2 ) ) -
( 3.0 * msd * bx2 / ( 4.0 * bb2 ) ) );
apmam =
f3apmam * sqrt( 3.0 / 2.0 ) * ( mtb / ( msb * mtx ) ) *
( 1.0 - ( bb2 * ( 1.0 + ( tau / 7.0 ) ) / bbx2 ) -
( msd * bx2 *
( 1.0 - ( 5.0 * bb2 * ( 1.0 + ( tau / 5.0 ) ) / ( 3.0 * bbx2 ) ) ) /
( 2.0 * mtb * bbx2 ) ) -
( 7.0 * msd * msd * bb2 * bx2 / ( 12.0 * msq * mtb * bbx2 * bbx2 ) ) *
( 1.0 - ( bx2 / bbx2 ) + ( bb2 * tau / ( 7.0 * bbx2 ) ) ) );
*appf = ( appam + apmam ) / 2.0;
*apmf = ( appam - apmam ) / 2.0;
return;
} //get_ff_isgw_23s1
void EvtISGW2FF::EvtISGW2FF1P1( EvtId parent, EvtId daugt, double t, double mass,
double* rf, double* vf, double* spf, double* smf )
{
//added by Lange Jan4,2000
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId D1P1P = EvtPDL::getId( "D_1+" );
static EvtId D1P1N = EvtPDL::getId( "D_1-" );
static EvtId D1P10 = EvtPDL::getId( "D_10" );
static EvtId D1P1B = EvtPDL::getId( "anti-D_10" );
static EvtId B1P = EvtPDL::getId( "b_1+" );
static EvtId B1M = EvtPDL::getId( "b_1-" );
static EvtId B10 = EvtPDL::getId( "b_10" );
static EvtId H1 = EvtPDL::getId( "h_1" );
static EvtId H1PR = EvtPDL::getId( "h'_1" );
static EvtId K1P = EvtPDL::getId( "K_1+" );
static EvtId K1M = EvtPDL::getId( "K_1-" );
static EvtId K10 = EvtPDL::getId( "K_10" );
static EvtId K1B = EvtPDL::getId( "anti-K_10" );
static EvtId D1P1SP = EvtPDL::getId( "D_s1+" );
static EvtId D1P1SN = EvtPDL::getId( "D_s1-" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
static EvtId BS0 = EvtPDL::getId( "B_s0" );
double mtb, mbb( 0.0 );
double msd( 0.0 ), mx, mb, nfp( 0.0 );
double msq( 0.0 ), bx2( 0.0 ), mbx( 0.0 ), mtx, f5;
double f5sppsm, f5spmsm;
double f5v, f5r, mup, mum, vv, rr, spmsm, sppsm;
double mqm, msb( 0.0 ), bb2( 0.0 ), bbx2, tm, wt, r2;
EvtId prnt = parent;
EvtId dgt = daugt;
if ( prnt == B0 || prnt == B0B || prnt == BP || prnt == BM ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.431 * 0.431;
mbb = 5.31;
if ( dgt == B10 || dgt == B1P || dgt == B1M || dgt == H1 || dgt == H1PR ) {
msq = 0.33;
bx2 = 0.275 * 0.275;
mbx = ( 3.0 * 1.123 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
nfp = 0.0;
} else {
if ( dgt == D1P1P || dgt == D1P10 || dgt == D1P1B || dgt == D1P1N ) {
msq = 1.82;
bx2 = 0.33 * 0.33;
mbx = ( 5.0 * 2.46 + 3.0 * 2.42 ) / 8.0;
nfp = 3.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_isgw_ff_1P1.\n";
}
}
} else {
if ( prnt == DM || prnt == DP || prnt == D0B || prnt == D0 ) {
msb = 1.82;
msd = 0.33;
bb2 = 0.45 * 0.45;
mbb = 1.963;
if ( dgt == B10 || dgt == B1P || dgt == B1M || dgt == H1 ||
dgt == H1PR ) {
msq = 0.33;
bx2 = 0.275 * 0.275;
mbx = ( 3.0 * 1.123 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
nfp = 0.0;
} else {
if ( dgt == K10 || dgt == K1B || dgt == K1P || dgt == K1M ) {
msq = 0.55;
bx2 = 0.30 * 0.30;
mbx = ( 3.0 * 1.27 + 1.43 + 5.0 * 1.43 + 3.0 * 1.4 ) / 12.0;
nfp = 2.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_isgw_ff_1P1.\n";
}
}
} else {
//BS -> cs constants added by djl on Jan. 21,1998
if ( prnt == BS0 || prnt == BSB ) {
msb = 5.2;
msd = 0.55;
bb2 = 0.54 * 0.54;
mbb = 5.38;
if ( dgt == D1P1SP || dgt == D1P1SN ) {
msq = 1.82;
bx2 = 0.41 * 0.41;
mbx = ( 5.0 * 2.61 + 3.0 * 2.54 ) / 8.0;
nfp = 3.0;
} else if ( dgt == K10 || dgt == K1B || dgt == K1P ||
dgt == K1M ) {
msq = 0.55;
bx2 = 0.30 * 0.30;
mbx = ( 3.0 * 1.27 + 1.43 + 5.0 * 1.43 + 3.0 * 1.4 ) / 12.0;
nfp = 2.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt:" << daugt.getId()
<< " in get_isgw_ff_1S0.\n";
}
}
else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_isgw_ff_1P1.\n";
}
}
}
mtb = msb + msd;
mtx = msq + msd;
mb = EvtPDL::getMeanMass( parent );
mx = mass;
mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
bbx2 = 0.5 * ( bb2 + bx2 );
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
wt = 1.0 + ( tm - t ) / ( 2.0 * mbb * mbx );
mqm = 0.1;
r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
log( EvtGetas( mqm, mqm ) / EvtGetas( msq, msq ) );
f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) /
( pow( ( 1.0 + r2 * ( tm - t ) / 18.0 ), 3.0 ) );
f5v = f5 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), -0.5 );
f5r = f5 * pow( ( mbb / mtb ), 0.5 ) * pow( ( mbx / mtx ), 0.5 );
f5sppsm = f5 * pow( ( mbb / mtb ), -1.5 ) * pow( ( mbx / mtx ), 0.5 );
f5spmsm = f5 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), -0.5 );
if ( msq == msd ) {
vv = f5v *
( ( ( mtb * sqrt( bb2 ) ) / ( 4.0 * sqrt( 2.0 ) * msb * msq * mtx ) ) +
( ( ( wt - 1 ) * msd ) / ( 6.0 * sqrt( 2.0 * bb2 ) * mtx ) ) );
rr = f5r * mtb * sqrt( bb2 / 2 ) *
( ( 1.0 / mup ) + ( ( msd * mtx * ( wt - 1 ) * ( wt - 1 ) ) /
( 3.0 * msq * bb2 ) ) );
sppsm = msd * f5sppsm / ( sqrt( 2.0 * bb2 ) * mtb ) *
( 1.0 - ( msd / msq ) + ( ( msd * bb2 ) / ( 2.0 * mup * bbx2 ) ) );
spmsm = msd * f5spmsm / ( sqrt( 2.0 * bb2 ) * msq ) *
( ( ( 4 - wt ) / 3.0 ) -
( ( msd * msq * bb2 ) / ( 2.0 * mtx * mup * bbx2 ) ) );
} else {
vv = -1.0 * msd * f5v / ( 2.0 * sqrt( 3.0 * bb2 ) * mtx ) *
( ( wt + 1 ) / 2.0 + bb2 * mtb / ( 2.0 * msd * msq * msb ) );
rr = -2.0 * mtb * sqrt( bb2 / 3.0 ) * f5r *
( 1.0 / msq + mtx * msd * ( wt - 1 ) / ( 2.0 * bb2 ) *
( ( wt + 1 ) / ( 2.0 * msq ) -
msd * bb2 / ( 2.0 * mum * mtx * bbx2 ) ) );
sppsm = -1.0 * sqrt( 3.0 ) * msd * f5sppsm / ( 2.0 * sqrt( bb2 ) * mtb ) *
( 1 - msd / ( 3.0 * msq ) -
msd * bb2 / ( 3.0 * bbx2 ) *
( 1.0 / ( 2.0 * mum ) - 1.0 / mup ) );
spmsm = -1.0 * msd * f5spmsm / ( 2.0 * sqrt( 3.0 * bb2 ) * mtx ) *
( ( 2 - wt ) * mtx / msq +
msd * bb2 / bbx2 * ( 1.0 / ( 2.0 * mum ) - 1.0 / mup ) );
}
//smooth out the mass(meson) dependence a little
double parMass = EvtPDL::getMeanMass( prnt );
double q2max = parMass * parMass + mass * mass - 2.0 * parMass * mass;
double massNom = EvtPDL::getMeanMass( dgt );
double q2maxNom = parMass * parMass + massNom * massNom -
2.0 * parMass * massNom;
double q2maxin = sqrt( q2maxNom / q2max );
if ( q2maxin > 1000. )
q2maxin = 1000.;
vv *= q2maxin;
rr *= q2maxin;
sppsm *= q2maxin;
spmsm *= q2maxin;
*vf = vv;
*rf = rr;
*spf = ( sppsm + spmsm ) / 2.0;
*smf = ( sppsm - spmsm ) / 2.0;
return;
} //get_ff_isgw_1p1
void EvtISGW2FF::EvtISGW2FF3P1( EvtId parent, EvtId daugt, double t, double mass,
double* lf, double* qf, double* cpf, double* cmf )
{
//added by Lange Jan4,2000
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId D3P1P = EvtPDL::getId( "D'_1+" );
static EvtId D3P1N = EvtPDL::getId( "D'_1-" );
static EvtId D3P10 = EvtPDL::getId( "D'_10" );
static EvtId D3P1B = EvtPDL::getId( "anti-D'_10" );
static EvtId A1P = EvtPDL::getId( "a_1+" );
static EvtId A1M = EvtPDL::getId( "a_1-" );
static EvtId A10 = EvtPDL::getId( "a_10" );
static EvtId F1 = EvtPDL::getId( "f_1" );
static EvtId F1PR = EvtPDL::getId( "f'_1" );
static EvtId K1STP = EvtPDL::getId( "K'_1+" );
static EvtId K1STM = EvtPDL::getId( "K'_1-" );
static EvtId K1ST0 = EvtPDL::getId( "K'_10" );
static EvtId K1STB = EvtPDL::getId( "anti-K'_10" );
static EvtId D3P1SP = EvtPDL::getId( "D'_s1+" );
static EvtId D3P1SN = EvtPDL::getId( "D'_s1-" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
static EvtId BS0 = EvtPDL::getId( "B_s0" );
double mtb, mbb( 0.0 );
double msd( 0.0 ), mx, mb, nfp( 0.0 );
double msq( 0.0 ), bx2( 0.0 ), mbx( 0.0 ), mtx;
double f5cppcm, f5cpmcm, f5, ql, ll, cppcm, cpmcm, f5q, f5l;
double mqm, msb( 0.0 ), bb2( 0.0 ), mum, bbx2, tm, wt, r2;
EvtId prnt = parent;
EvtId dgt = daugt;
if ( prnt == B0 || prnt == B0B || prnt == BP || prnt == BM ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.431 * 0.431;
mbb = 5.31;
if ( dgt == A10 || dgt == A1P || dgt == A1M || dgt == F1 || dgt == F1PR ) {
msq = 0.33;
bx2 = 0.275 * 0.275;
mbx = ( 3.0 * 1.23 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
nfp = 0.0;
} else {
if ( dgt == D3P1P || dgt == D3P1N || dgt == D3P10 || dgt == D3P1B ) {
msq = 1.82;
bx2 = 0.33 * 0.33;
mbx = ( 3.0 * 2.49 + 2.40 ) / 4.0;
nfp = 3.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt:" << daugt.getId()
<< " in get_isgw_ff_3P1.\n";
}
}
} else {
if ( prnt == D0 || prnt == D0B || prnt == DP || prnt == DM ) {
msb = 1.82;
msd = 0.33;
bb2 = 0.45 * 0.45;
mbb = 1.963;
if ( dgt == F1 || dgt == F1PR || dgt == A10 || dgt == A1P ||
dgt == A1M ) {
msq = 0.33;
bx2 = 0.275 * 0.275;
mbx = ( 3.0 * 1.23 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
nfp = 0.0;
} else {
if ( dgt == K1STM || dgt == K1STB || dgt == K1STP ||
dgt == K1ST0 ) {
msq = 0.55;
bx2 = 0.30 * 0.30;
mbx = ( 3.0 * 1.40 + 1.43 + 5.0 * 1.43 + 3.0 * 1.27 ) / 12.0;
nfp = 2.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt:" << daugt.getId()
<< " in get_isgw_ff_3P1.\n";
}
}
} else {
//BS -> cs constants added by djl on Jan. 21,1998
if ( prnt == BS0 || prnt == BSB ) {
msb = 5.2;
msd = 0.55;
bb2 = 0.54 * 0.54;
mbb = 5.38;
if ( dgt == D3P1SP || dgt == D3P1SN ) {
msq = 1.82;
bx2 = 0.41 * 0.41;
mbx = ( 3.0 * 2.54 + 2.46 ) / 4.0;
nfp = 3.0;
} else if ( dgt == K1STM || dgt == K1STB || dgt == K1STP ||
dgt == K1ST0 ) {
msq = 0.55;
bx2 = 0.30 * 0.30;
mbx = ( 3.0 * 1.40 + 1.43 + 5.0 * 1.43 + 3.0 * 1.27 ) / 12.0;
nfp = 2.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt:" << daugt.getId()
<< " in get_isgw_ff_1S0.\n";
}
}
else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_isgw_ff_3P1.\n";
}
}
}
mtb = msb + msd;
mtx = msq + msd;
mb = EvtPDL::getMeanMass( parent );
mx = mass;
mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
bbx2 = 0.5 * ( bb2 + bx2 );
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
wt = 1.0 + ( tm - t ) / ( 2.0 * mbb * mbx );
mqm = 0.1;
r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
log( EvtGetas( mqm ) / EvtGetas( msq ) );
f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) /
( pow( ( 1.0 + r2 * ( tm - t ) / 18.0 ), 3.0 ) );
f5q = f5 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), -0.5 );
f5l = f5 * pow( ( mbb / mtb ), 0.5 ) * pow( ( mbx / mtx ), 0.5 );
f5cppcm = f5 * pow( ( mbb / mtb ), -1.5 ) * pow( ( mbx / mtx ), 0.5 );
f5cpmcm = f5 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), -0.5 );
if ( msq == msd ) {
ql = -1.0 *
( msd * ( 5.0 + wt ) * f5q / ( 2.0 * mtx * sqrt( bb2 ) * 6.0 ) );
ll = -1.0 * mtb * sqrt( bb2 ) * f5l *
( 1 / mum + ( ( msd * mtx * ( wt - 1 ) / bb2 ) *
( ( 5.0 + wt ) / ( 6.0 * msq ) -
( msd * bb2 ) / ( 2.0 * mum * mtx * bbx2 ) ) ) );
cppcm = ( -1.0 *
( msd * mtx * f5cppcm / ( 2.0 * msq * mtb * sqrt( bb2 ) ) ) *
( 1 - ( msd * msq * bb2 ) / ( 2.0 * mtx * mum * bbx2 ) ) );
cpmcm = 1.0 *
( msd * mtx * f5cpmcm / ( 2.0 * msq * mtb * sqrt( bb2 ) ) ) *
( ( ( wt + 2.0 ) / 3.0 ) -
( msd * msq * bb2 ) / ( 2.0 * mtx * mum * bbx2 ) ) *
( mtb / mtx );
} else {
ql = f5q * sqrt( 1.0 / 6.0 ) * msd / ( sqrt( bb2 ) * mtx ) *
( 1.0 - bb2 * mtb / ( 4.0 * msd * msq * msb ) );
ll = f5l * sqrt( 2.0 / 3.0 ) * mtb * sqrt( bb2 ) *
( 1.0 / ( 2.0 * msq ) - 3.0 / ( 2.0 * msb ) +
msd * mtx * ( wt - 1 ) / bb2 *
( 1.0 / msq - msd * bb2 / ( 2.0 * mum * mtx * bbx2 ) ) );
cppcm = msd * msd * bx2 * f5cppcm /
( sqrt( 6.0 ) * mtb * msq * sqrt( bb2 ) * bbx2 );
cpmcm = -sqrt( 2.0 / 3.0 ) * msd * f5cpmcm / ( sqrt( bb2 ) * mtx ) *
( 1 + msd * bx2 / ( 2.0 * msq * bbx2 ) );
}
//smooth out the mass(meson) dependence a little
double parMass = EvtPDL::getMeanMass( prnt );
double q2max = parMass * parMass + mass * mass - 2.0 * parMass * mass;
double massNom = EvtPDL::getMeanMass( dgt );
double q2maxNom = parMass * parMass + massNom * massNom -
2.0 * parMass * massNom;
double q2maxin = sqrt( q2maxNom / q2max );
if ( q2maxin > 1000. )
q2maxin = 1000.;
ql *= q2maxin;
ll *= q2maxin;
cppcm *= q2maxin;
cpmcm *= q2maxin;
*qf = ql;
*lf = ll;
*cpf = ( cppcm + cpmcm ) / 2.0;
*cmf = ( cppcm - cpmcm ) / 2.0;
return;
} //get_ff_isgw_3p1
void EvtISGW2FF::EvtISGW2FF3P0( EvtId parent, EvtId daugt, double t,
double mass, double* upf, double* umf )
{
//added by Lange Jan4,2000
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId D3P0P = EvtPDL::getId( "D_0*+" );
static EvtId D3P0N = EvtPDL::getId( "D_0*-" );
static EvtId D3P00 = EvtPDL::getId( "D_0*0" );
static EvtId D3P0B = EvtPDL::getId( "anti-D_0*0" );
static EvtId D3P0SP = EvtPDL::getId( "D_s0*+" );
static EvtId D3P0SN = EvtPDL::getId( "D_s0*-" );
static EvtId A0P = EvtPDL::getId( "a_0+" );
static EvtId A0M = EvtPDL::getId( "a_0-" );
static EvtId A00 = EvtPDL::getId( "a_00" );
static EvtId F0 = EvtPDL::getId( "f_0" );
static EvtId F0PR = EvtPDL::getId( "f'_0" );
static EvtId K0STP = EvtPDL::getId( "K_0*+" );
static EvtId K0STM = EvtPDL::getId( "K_0*-" );
static EvtId K0ST0 = EvtPDL::getId( "K_0*0" );
static EvtId K0STB = EvtPDL::getId( "anti-K_0*0" );
static EvtId DSP = EvtPDL::getId( "D_s+" );
static EvtId DSM = EvtPDL::getId( "D_s-" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
static EvtId BS0 = EvtPDL::getId( "B_s0" );
double mtb, mbb( 0.0 );
double msd( 0.0 ), mx, mb, nfp( 0.0 );
double msq( 0.0 ), bx2( 0.0 ), mbx( 0.0 ), mtx;
double f5uppum, f5upmum, uppum, upmum, f5;
double mqm, r2, bb2( 0.0 ), bbx2, msb( 0.0 ), tm;
EvtId prnt = parent;
EvtId dgt = daugt;
if ( prnt == B0 || prnt == B0B || prnt == BP || prnt == BM ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.431 * 0.431;
mbb = 5.31;
if ( dgt == A00 || dgt == A0P || dgt == A0M || dgt == F0 || dgt == F0PR ) {
msq = 0.33;
bx2 = 0.275 * 0.275;
mbx = ( 3.0 * 1.23 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
nfp = 0.0;
} else {
if ( dgt == D3P0P || dgt == D3P0N || dgt == D3P00 || dgt == D3P0B ) {
msq = 1.82;
bx2 = 0.33 * 0.33;
mbx = ( 3.0 * 2.49 + 2.40 ) / 4.0;
nfp = 3.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_EvtISGW2_ff_3P0.\n";
}
}
} else {
if ( prnt == D0 || prnt == D0B || prnt == DP || prnt == DM ) {
msb = 1.82;
msd = 0.33;
bb2 = 0.45 * 0.45;
mbb = 1.963;
if ( dgt == F0 || dgt == F0PR || dgt == A00 || dgt == A0P ||
dgt == A0M ) {
msq = 0.33;
bx2 = 0.275 * 0.275;
mbx = ( 3.0 * 1.23 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
nfp = 0.0;
} else {
if ( dgt == K0STM || dgt == K0STB || dgt == K0STP ||
dgt == K0ST0 ) {
msq = 0.55;
bx2 = 0.30 * 0.30;
mbx = ( 3.0 * 1.40 + 1.43 + 5.0 * 1.43 + 3.0 * 1.27 ) / 12.0;
nfp = 2.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_EvtISGW2_ff_3P0.\n";
}
}
} else {
if ( prnt == DSP || prnt == DSM ) {
msb = 1.82;
msd = 0.55;
bb2 = 0.56 * 0.56;
mbb = 1.968;
if ( dgt == F0 || dgt == F0PR || dgt == A00 || dgt == A0P ||
dgt == A0M ) {
msq = 0.55;
bx2 = 0.33 * 0.33;
mbx = ( 3.0 * 1.40 + 1.43 + 5.0 * 1.43 + 3.0 * 1.27 ) / 12.0;
nfp = 2.0;
} else {
if ( dgt == K0STM || dgt == K0STB || dgt == K0STP ||
dgt == K0ST0 ) {
msq = 0.33;
bx2 = 0.30 * 0.30;
mbx = ( 3.0 * 1.23 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) /
12.0;
nfp = 0.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_EvtISGW2_ff_3P0.\n";
}
}
} else {
//BS -> cs constants added by djl on Jan. 21,1998
if ( prnt == BS0 || prnt == BSB ) {
msb = 5.2;
msd = 0.55;
bb2 = 0.54 * 0.54;
mbb = 5.38;
if ( dgt == D3P0SP || dgt == D3P0SN ) {
msq = 1.82;
bx2 = 0.41 * 0.41;
mbx = ( 3.0 * 2.54 + 2.46 ) / 4.0;
nfp = 3.0;
} else if ( dgt == K0STM || dgt == K0STB || dgt == K0STP ||
dgt == K0ST0 ) {
msq = 0.55;
bx2 = 0.30 * 0.30;
mbx = ( 3.0 * 1.40 + 1.43 + 5.0 * 1.43 + 3.0 * 1.27 ) /
12.0;
nfp = 2.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt:" << daugt.getId()
<< " in get_isgw_ff_1S0.\n";
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_EvtISGW2_ff_3P0.\n";
}
}
}
}
mtb = msb + msd;
mtx = msq + msd;
mb = EvtPDL::getMeanMass( parent );
mx = mass;
bbx2 = 0.5 * ( bb2 + bx2 );
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
mqm = 0.1;
r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
log( EvtGetas( mqm ) / EvtGetas( msq ) );
f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) /
( pow( ( 1.0 + r2 * ( tm - t ) / 18.0 ), 3.0 ) );
f5uppum = f5 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), 0.5 );
f5upmum = f5 * pow( ( mbb / mtb ), 0.5 ) * pow( ( mbx / mtx ), -0.5 );
uppum = -1.0 * f5uppum * sqrt( 2.0 / ( 3.0 * bb2 ) ) * msd;
upmum = 1.0 * f5upmum * sqrt( 2.0 / ( 3.0 * bb2 ) ) * msd * mtb / mtx;
*upf = ( uppum + upmum ) / 2.0;
*umf = ( uppum - upmum ) / 2.0;
return;
}
void EvtISGW2FF::EvtISGW2FF3P2( EvtId parent, EvtId daugt, double t, double mass,
double* hf, double* kf, double* bpf, double* bmf )
{
//added by Lange Jan4,2000
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId D3P2P = EvtPDL::getId( "D_2*+" );
static EvtId D3P2N = EvtPDL::getId( "D_2*-" );
static EvtId D3P20 = EvtPDL::getId( "D_2*0" );
static EvtId D3P2B = EvtPDL::getId( "anti-D_2*0" );
static EvtId A2P = EvtPDL::getId( "a_2+" );
static EvtId A2M = EvtPDL::getId( "a_2-" );
static EvtId A20 = EvtPDL::getId( "a_20" );
static EvtId F2 = EvtPDL::getId( "f_2" );
static EvtId F2PR = EvtPDL::getId( "f'_2" );
static EvtId K2STP = EvtPDL::getId( "K_2*+" );
static EvtId K2STM = EvtPDL::getId( "K_2*-" );
static EvtId K2ST0 = EvtPDL::getId( "K_2*0" );
static EvtId K2STB = EvtPDL::getId( "anti-K_2*0" );
static EvtId D3P2SP = EvtPDL::getId( "D_s2*+" );
static EvtId D3P2SN = EvtPDL::getId( "D_s2*-" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
static EvtId BS0 = EvtPDL::getId( "B_s0" );
double mtb, mbb( 0.0 );
double msd( 0.0 ), mx, mb, nfp( 0.0 );
double msq( 0.0 ), bx2( 0.0 ), mbx( 0.0 ), mtx, f5;
double f5h, f5k, f5bppbm, f5bpmbm, bppbm, bpmbm;
double mqm, mum, mup, tm, wt, r2, bb2( 0.0 ), bbx2;
double msb( 0.0 );
EvtId prnt = parent;
EvtId dgt = daugt;
if ( prnt == B0 || prnt == B0B || prnt == BP || prnt == BM ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.431 * 0.431;
mbb = 5.31;
if ( dgt == A20 || dgt == A2P || dgt == A2M || dgt == F2 || dgt == F2PR ) {
msq = 0.33;
bx2 = 0.275 * 0.275;
mbx = ( 3.0 * 1.23 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
nfp = 0.0;
}
else {
if ( dgt == D3P2P || dgt == D3P2N || dgt == D3P20 || dgt == D3P2B ) {
msq = 1.82;
bx2 = 0.33 * 0.33;
mbx = ( 5.0 * 2.46 + 3.0 * 2.42 ) / 8.0;
nfp = 3.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_isgw_ff_3P2.\n";
}
}
} else {
if ( prnt == D0 || prnt == D0B || prnt == DP || prnt == DM ) {
msb = 1.82;
msd = 0.33;
bb2 = 0.45 * 0.45;
mbb = 1.963;
if ( dgt == F2 || dgt == F2PR || dgt == A20 || dgt == A2P ||
dgt == A2M ) {
msq = 0.33;
bx2 = 0.275 * 0.275;
mbx = ( 3.0 * 1.23 + 0.98 + 5.0 * 1.32 + 3.0 * 1.26 ) / 12.0;
nfp = 0.0;
} else {
if ( dgt == K2STM || dgt == K2STB || dgt == K2STP ||
dgt == K2ST0 ) {
msq = 0.55;
bx2 = 0.30 * 0.30;
mbx = ( 3.0 * 1.40 + 1.43 + 5.0 * 1.43 + 3.0 * 1.27 ) / 12.0;
nfp = 2.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_isgw_ff_3P2.\n";
}
}
} else {
//BS -> cs constants added by djl on Jan. 21,1998
if ( prnt == BS0 || prnt == BSB ) {
msb = 5.2;
msd = 0.55;
bb2 = 0.54 * 0.54;
mbb = 5.38;
if ( dgt == D3P2SP || dgt == D3P2SN ) {
msq = 1.82;
bx2 = 0.41 * 0.41;
mbx = ( 5.0 * 2.61 + 3.0 * 2.54 ) / 8.0;
nfp = 3.0;
} else if ( dgt == K2STM || dgt == K2STB || dgt == K2STP ||
dgt == K2ST0 ) {
msq = 0.55;
bx2 = 0.30 * 0.30;
mbx = ( 3.0 * 1.40 + 1.43 + 5.0 * 1.43 + 3.0 * 1.27 ) / 12.0;
nfp = 2.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt:" << daugt.getId()
<< " in get_isgw_ff_1S0.\n";
}
}
else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_isgw_ff_3P2.\n";
}
}
}
mtb = msb + msd;
mtx = msq + msd;
mb = EvtPDL::getMeanMass( parent );
mx = mass;
mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
bbx2 = 0.5 * ( bb2 + bx2 );
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
wt = 1.0 + ( tm - t ) / ( 2.0 * mbb * mbx );
mqm = 0.1;
r2 = 3.0 / ( 4.0 * msb * msq ) + 3 * msd * msd / ( 2 * mbb * mbx * bbx2 ) +
( 16.0 / ( mbb * mbx * ( 33.0 - 2.0 * nfp ) ) ) *
log( EvtGetas( mqm ) / EvtGetas( msq ) );
f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) /
( pow( ( 1.0 + r2 * ( tm - t ) / 18.0 ), 3.0 ) );
f5h = f5 * pow( ( mbb / mtb ), -1.5 ) * pow( ( mbx / mtx ), -0.5 );
f5k = f5 * pow( ( mbb / mtb ), -0.5 ) * pow( ( mbx / mtx ), 0.5 );
f5bppbm = f5 * pow( ( mbb / mtb ), -2.5 ) * pow( ( mbx / mtx ), 0.5 );
f5bpmbm = f5 * pow( ( mbb / mtb ), -1.5 ) * pow( ( mbx / mtx ), -0.5 );
*hf = f5h * ( msd / ( sqrt( 8.0 * bb2 ) * mtb ) ) *
( ( 1.0 / msq ) - ( msd * bb2 / ( 2.0 * mum * mtx * bbx2 ) ) );
*kf = f5k * ( msd / ( sqrt( 2.0 * bb2 ) ) ) * ( 1.0 + wt );
bppbm = ( ( msd * msd * f5bppbm * bx2 ) /
( sqrt( 32.0 * bb2 ) * msq * msb * mtb * bbx2 ) ) *
( 1.0 - ( msd * bx2 / ( 2.0 * mtb * bbx2 ) ) );
bpmbm = -1.0 * ( msd * f5bpmbm / ( sqrt( 2.0 * bb2 ) * msb * mtx ) ) *
( 1.0 - ( ( msd * msb * bx2 ) / ( 2.0 * mup * mtb * bbx2 ) ) +
( ( msd * bx2 * ( 1.0 - ( ( msd * bx2 ) / ( 2.0 * mtb * bbx2 ) ) ) ) /
( 4.0 * msq * bbx2 ) ) );
*bpf = ( bppbm + bpmbm ) / 2.0;
*bmf = ( bppbm - bpmbm ) / 2.0;
return;
} //get_ff_isgw_1p1
double EvtISGW2FF::EvtGetGammaji( double z )
{
double temp;
temp = 2 + ( ( 2.0 * z ) / ( 1 - z ) ) * log( z );
temp = -1.0 * temp;
return temp;
} //EvtGetGammaji
double EvtISGW2FF::EvtGetas( double massq, double massx )
{
double lqcd2 = 0.04;
double nflav = 4;
double temp = 0.6;
if ( massx > 0.6 ) {
if ( massq < 1.85 ) {
nflav = 3.0;
}
temp = 12.0 * EvtConst::pi / ( 33.0 - 2.0 * nflav ) /
log( massx * massx / lqcd2 );
}
return temp;
} //EvtGetas
double EvtISGW2FF::EvtGetas( double mass )
{
double lqcd2 = 0.04;
double nflav = 4;
double temp = 0.6;
if ( mass > 0.6 ) {
if ( mass < 1.85 ) {
nflav = 3.0;
}
temp = 12.0 * EvtConst::pi / ( 33.0 - 2.0 * nflav ) /
log( mass * mass / lqcd2 );
}
return temp;
} //EvtGetas
void EvtISGW2FF::getbaryonff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtISGW2FF.\n";
::abort();
}
void EvtISGW2FF::getdiracff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getdiracff in EvtISGW2FF.\n";
::abort();
}
void EvtISGW2FF::getraritaff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double*, double*,
double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtISGW2FF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtISGWFF.cpp b/src/EvtGenModels/EvtISGWFF.cpp
index df72560..09fdfe6 100644
--- a/src/EvtGenModels/EvtISGWFF.cpp
+++ b/src/EvtGenModels/EvtISGWFF.cpp
@@ -1,912 +1,891 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtISGWFF.cc
-//
-// Description: Routine to implement semileptonic form factors
-// according to the model ISGW
-//
-// Modification history:
-//
-// DJL April 17, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtISGWFF.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <math.h>
#include <stdlib.h>
#include <string>
using std::endl;
void EvtISGWFF::getscalarff( EvtId parent, EvtId daught, double t, double mass,
double* fpf, double* f0f )
{
//added by Lange Jan4,2000
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId D3P0P = EvtPDL::getId( "D_0*+" );
static EvtId D3P0N = EvtPDL::getId( "D_0*-" );
static EvtId D3P00 = EvtPDL::getId( "D_0*0" );
static EvtId D3P0B = EvtPDL::getId( "anti-D_0*0" );
static EvtId D21S0P = EvtPDL::getId( "hi" );
static EvtId D21S0N = EvtPDL::getId( "hi" );
static EvtId D21S00 = EvtPDL::getId( "hi" );
static EvtId D21S0B = EvtPDL::getId( "hi" );
static EvtId ETA2S = EvtPDL::getId( "eta(2S)" );
static EvtId PI2S0 = EvtPDL::getId( "pi(2S)0" );
static EvtId PI2SP = EvtPDL::getId( "pi(2S)+" );
static EvtId PI2SM = EvtPDL::getId( "pi(2S)-" );
static EvtId PIP = EvtPDL::getId( "pi+" );
static EvtId PIM = EvtPDL::getId( "pi-" );
static EvtId PI0 = EvtPDL::getId( "pi0" );
static EvtId A0P = EvtPDL::getId( "a_0+" );
static EvtId A0M = EvtPDL::getId( "a_0-" );
static EvtId A00 = EvtPDL::getId( "a_00" );
static EvtId F0 = EvtPDL::getId( "f_0" );
static EvtId F0PR = EvtPDL::getId( "f'_0" );
static EvtId ETA = EvtPDL::getId( "eta" );
static EvtId ETAPR = EvtPDL::getId( "eta'" );
static EvtId KP = EvtPDL::getId( "K+" );
static EvtId KM = EvtPDL::getId( "K-" );
static EvtId K0 = EvtPDL::getId( "K0" );
static EvtId KB = EvtPDL::getId( "anti-K0" );
static EvtId K0S = EvtPDL::getId( "K_S0" );
static EvtId K0L = EvtPDL::getId( "K_L0" );
static EvtId K0STP = EvtPDL::getId( "K_0*+" );
static EvtId K0STM = EvtPDL::getId( "K_0*-" );
static EvtId K0ST0 = EvtPDL::getId( "K_0*0" );
static EvtId K0STB = EvtPDL::getId( "anti-K_0*0" );
static EvtId DSP = EvtPDL::getId( "D_s+" );
static EvtId DSM = EvtPDL::getId( "D_s-" );
static EvtId D3P0SP = EvtPDL::getId( "D_s0*+" );
static EvtId D3P0SN = EvtPDL::getId( "D_s0*-" );
double fmf;
double mb = EvtPDL::getMeanMass( parent );
if ( daught == PI0 || daught == PIP || daught == PIM || daught == ETA ||
daught == ETAPR || daught == D0 || daught == D0B || daught == DP ||
daught == DM || daught == KP || daught == KM || daught == K0 ||
daught == K0L || daught == KB || daught == DSP || daught == DSM ||
daught == K0S ) {
EvtISGW1FF1S0( parent, daught, t, mass, fpf, &fmf );
}
if ( daught == PI2S0 || daught == PI2SP || daught == PI2SM ||
daught == ETA2S || daught == D21S0P || daught == D21S0B ||
daught == D21S0N || daught == D21S00 ) {
EvtISGW1FF21S0( parent, daught, t, mass, fpf, &fmf );
}
if ( daught == A00 || daught == A0P || daught == A0M || daught == F0 ||
daught == F0PR || daught == D3P0P || daught == D3P00 ||
daught == D3P0B || daught == D3P0N || daught == K0STM ||
daught == K0STB || daught == K0STP || daught == D3P0SP ||
daught == D3P0SN || daught == K0ST0 ) {
EvtISGW1FF3P0( parent, daught, t, mass, fpf, &fmf );
}
*f0f = ( fmf / ( ( mb * mb - mass * mass ) / t ) ) + ( *fpf );
return;
}
void EvtISGWFF::gettensorff( EvtId parent, EvtId daught, double t, double mass,
double* hf, double* kf, double* bpf, double* bmf )
{
//added by Lange Jan4,2000
EvtISGW1FF3P2( parent, daught, t, mass, hf, kf, bpf, bmf );
return;
}
void EvtISGWFF::getvectorff( EvtId parent, EvtId daught, double t, double mass,
double* a1f, double* a2f, double* vf, double* a0f )
{
//added by Lange Jan4,2000
static EvtId DST0 = EvtPDL::getId( "D*0" );
static EvtId DSTB = EvtPDL::getId( "anti-D*0" );
static EvtId DSTP = EvtPDL::getId( "D*+" );
static EvtId DSTM = EvtPDL::getId( "D*-" );
static EvtId D1P1P = EvtPDL::getId( "D_1+" );
static EvtId D1P1N = EvtPDL::getId( "D_1-" );
static EvtId D1P10 = EvtPDL::getId( "D_10" );
static EvtId D1P1B = EvtPDL::getId( "anti-D_10" );
static EvtId D3P1P = EvtPDL::getId( "D'_1+" );
static EvtId D3P1N = EvtPDL::getId( "D'_1-" );
static EvtId D3P10 = EvtPDL::getId( "D'_10" );
static EvtId D3P1B = EvtPDL::getId( "anti-D'_10" );
static EvtId D23S1P = EvtPDL::getId( "hi" );
static EvtId D23S1N = EvtPDL::getId( "hi" );
static EvtId D23S10 = EvtPDL::getId( "hi" );
static EvtId D23S1B = EvtPDL::getId( "hi" );
static EvtId RHO2S0 = EvtPDL::getId( "rho(2S)0" );
static EvtId RHO2SP = EvtPDL::getId( "rho(2S)+" );
static EvtId RHO2SM = EvtPDL::getId( "rho(2S)-" );
static EvtId OMEG2S = EvtPDL::getId( "omega(2S)" );
static EvtId RHOP = EvtPDL::getId( "rho+" );
static EvtId RHOM = EvtPDL::getId( "rho-" );
static EvtId RHO0 = EvtPDL::getId( "rho0" );
static EvtId A1P = EvtPDL::getId( "a_1+" );
static EvtId A1M = EvtPDL::getId( "a_1-" );
static EvtId A10 = EvtPDL::getId( "a_10" );
static EvtId B1P = EvtPDL::getId( "b_1+" );
static EvtId B1M = EvtPDL::getId( "b_1-" );
static EvtId B10 = EvtPDL::getId( "b_10" );
static EvtId H1 = EvtPDL::getId( "h_1" );
static EvtId H1PR = EvtPDL::getId( "h'_1" );
static EvtId F1 = EvtPDL::getId( "f_1" );
static EvtId F1PR = EvtPDL::getId( "f'_1" );
static EvtId OMEG = EvtPDL::getId( "omega" );
static EvtId KSTP = EvtPDL::getId( "K*+" );
static EvtId KSTM = EvtPDL::getId( "K*-" );
static EvtId KST0 = EvtPDL::getId( "K*0" );
static EvtId KSTB = EvtPDL::getId( "anti-K*0" );
static EvtId K1P = EvtPDL::getId( "K_1+" );
static EvtId K1M = EvtPDL::getId( "K_1-" );
static EvtId K10 = EvtPDL::getId( "K_10" );
static EvtId K1B = EvtPDL::getId( "anti-K_10" );
static EvtId K1STP = EvtPDL::getId( "K'_1+" );
static EvtId K1STM = EvtPDL::getId( "K'_1-" );
static EvtId K1ST0 = EvtPDL::getId( "K'_10" );
static EvtId K1STB = EvtPDL::getId( "anti-K'_10" );
static EvtId PHI = EvtPDL::getId( "phi" );
static EvtId D1P1SP = EvtPDL::getId( "D_s1+" );
static EvtId D1P1SN = EvtPDL::getId( "D_s1-" );
static EvtId D3P1SP = EvtPDL::getId( "D'_s1*+" );
static EvtId D3P1SN = EvtPDL::getId( "D'_s1*-" );
static EvtId DSSTP = EvtPDL::getId( "D_s*+" );
static EvtId DSSTM = EvtPDL::getId( "D_s*-" );
double ff, gf, apf, amf;
if ( daught == DST0 || daught == DSTP || daught == DSTM || daught == DSTB ||
daught == OMEG || daught == RHO0 || daught == RHOM || daught == RHOP ||
daught == KSTP || daught == KSTM || daught == KST0 || daught == KSTB ||
daught == PHI || daught == DSSTP || daught == DSSTM ) {
EvtISGW1FF3S1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
}
if ( daught == B10 || daught == B1P || daught == B1M || daught == H1 ||
daught == H1PR || daught == D1P1P || daught == D1P10 || daught == D1P1B ||
daught == D1P1SP || daught == D1P1SN || daught == D1P1N ||
daught == K10 || daught == K1B || daught == K1P || daught == K1M ) {
EvtISGW1FF1P1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
}
if ( daught == RHO2S0 || daught == RHO2SP || daught == RHO2SM ||
daught == OMEG2S || daught == D23S1P || daught == D23S1B ||
daught == D23S1N || daught == D23S10 ) {
EvtISGW1FF23S1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
}
if ( daught == A10 || daught == A1P || daught == A1M || daught == F1 ||
daught == F1PR || daught == D3P1P || daught == D3P10 ||
daught == D3P1B || daught == D3P1N || daught == K1STM ||
daught == K1STB || daught == K1STP || daught == D3P1SP ||
daught == D3P1SN || daught == K1ST0 ) {
EvtISGW1FF3P1( parent, daught, t, mass, &ff, &gf, &apf, &amf );
}
// Need to stuff in some factors to make these the ffs that
// is used elsewhere...
double mb = EvtPDL::getMeanMass( parent );
*vf = ( gf ) * ( mb + mass );
*a1f = ( ff ) / ( mb + mass );
*a2f = -1.0 * ( apf ) * ( mb + mass );
double a3f = ( ( mb + mass ) / ( 2.0 * mass ) ) * ( *a1f ) -
( ( mb - mass ) / ( 2.0 * mass ) ) * ( *a2f );
*a0f = a3f - ( ( t * amf ) / ( 2.0 * mass ) );
return;
}
void EvtISGWFF::EvtISGW1FF3P2( EvtId parent, EvtId daugt, double t, double mass,
double* hf, double* kf, double* bpf, double* bmf )
{
//added by Lange Jan4,2000
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId D3P2P = EvtPDL::getId( "D_2*+" );
static EvtId D3P2N = EvtPDL::getId( "D_2*-" );
static EvtId D3P20 = EvtPDL::getId( "D_2*0" );
static EvtId D3P2B = EvtPDL::getId( "anti-D_2*0" );
static EvtId A2P = EvtPDL::getId( "a_2+" );
static EvtId A2M = EvtPDL::getId( "a_2-" );
static EvtId A20 = EvtPDL::getId( "a_20" );
static EvtId F2 = EvtPDL::getId( "f_2" );
static EvtId F2PR = EvtPDL::getId( "f'_2" );
double mtb;
double msd( 0.0 ), mx( 0.0 ), mb( 0.0 );
double msq( 0.0 ), bx2( 0.0 ), mtx, f5;
double mum, mup, tm, bb2( 0.0 ), bbx2;
double msb( 0.0 ), kap;
if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.41 * 0.41;
if ( daugt == A20 || daugt == A2P || daugt == A2M || daugt == F2 ||
daugt == F2PR ) {
msq = 0.33;
bx2 = 0.27 * 0.27;
} else {
if ( daugt == D3P2P || daugt == D3P2N || daugt == D3P2B ||
daugt == D3P20 ) {
msq = 1.82;
bx2 = 0.34 * 0.34;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_isgw_ff_3P1.\n";
}
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_isgw_ff_3P1.\n";
}
mtb = msb + msd;
mtx = msq + msd;
mb = EvtPDL::getMeanMass( parent );
mx = mass;
mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
bbx2 = 0.5 * ( bb2 + bx2 );
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
kap = 0.7 * 0.7;
f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) *
exp( -1.0 *
( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
*hf = f5 * ( msd / ( sqrt( 8.0 * bb2 ) * mtb ) ) *
( ( 1.0 / msq ) - ( msd * bb2 / ( 2.0 * mum * mtx * bbx2 ) ) );
*kf = f5 * msd * sqrt( 2.0 / bb2 );
*bpf = ( -1.0 * f5 * msd / ( sqrt( 8.0 * bb2 ) * msb * mtx ) ) *
( 1.0 - ( msd * msb * bx2 / ( 2.0 * mup * mtb * bbx2 ) ) +
( msd * msb * bx2 * ( 1.0 - ( msd * bx2 / ( 2.0 * mtb * bbx2 ) ) ) /
( 4.0 * mtb * mum * bbx2 ) ) );
*bmf = 0.0;
return;
} //get_ff_isgw_1p1
void EvtISGWFF::EvtISGW1FF1S0( EvtId parent, EvtId daugt, double t, double mass,
double* fpf, double* fmf )
{
//added by Lange Jan4,2000
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId PIP = EvtPDL::getId( "pi+" );
static EvtId PIM = EvtPDL::getId( "pi-" );
static EvtId PI0 = EvtPDL::getId( "pi0" );
static EvtId ETA = EvtPDL::getId( "eta" );
static EvtId ETAPR = EvtPDL::getId( "eta'" );
double mtb;
double msd( 0.0 ), mx( 0.0 ), mb( 0.0 );
double msq( 0.0 ), bx2( 0.0 ), mtx;
double f3, kap;
double msb( 0.0 ), bb2( 0.0 ), mup, mum, bbx2, tm;
if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.41 * 0.41;
if ( daugt == PIP || daugt == PIM || daugt == PI0 || daugt == ETA ||
daugt == ETAPR ) {
msq = 0.33;
bx2 = 0.31 * 0.31;
} else {
if ( daugt == D0 || daugt == DP || daugt == DM || daugt == D0B ) {
msq = 1.82;
bx2 = 0.39 * 0.39;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_isgw_ff_1S0.\n";
}
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_isgw_ff_1S0.\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Parent:" << parent.getId() << endl;
}
mtb = msb + msd;
mtx = msq + msd;
mb = EvtPDL::getMeanMass( parent );
mx = mass;
mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
bbx2 = 0.5 * ( bb2 + bx2 );
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
kap = 0.7 * 0.7;
f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 3.0 / 2.0 ) *
exp( -1.0 *
( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
*fpf = f3 * ( 1 + ( msb / ( 2.0 * mum ) ) -
( msb * msq * msd * bb2 / ( 4.0 * mup * mum * mtx * bbx2 ) ) );
*fmf = f3 * ( 1.0 - ( mtb + mtx ) *
( 0.5 / msq -
( msd * bb2 / ( 4.0 * mup * mtx * bbx2 ) ) ) );
return;
} //get_ff_isgw_1s0
void EvtISGWFF::EvtISGW1FF3S1( EvtId parent, EvtId daugt, double t, double mass,
double* f, double* g, double* ap, double* am )
{
//added by Lange Jan4,2000
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId DST0 = EvtPDL::getId( "D*0" );
static EvtId DSTB = EvtPDL::getId( "anti-D*0" );
static EvtId DSTP = EvtPDL::getId( "D*+" );
static EvtId DSTM = EvtPDL::getId( "D*-" );
static EvtId RHOP = EvtPDL::getId( "rho+" );
static EvtId RHOM = EvtPDL::getId( "rho-" );
static EvtId RHO0 = EvtPDL::getId( "rho0" );
static EvtId OMEG = EvtPDL::getId( "omega" );
double msd( 0.0 ), msq( 0.0 ), bb2( 0.0 ), mum, mtx, bbx2;
double bx2( 0.0 ), msb( 0.0 ), tm;
double mb, mx, f3, kap;
if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.41 * 0.41;
if ( daugt == DSTP || daugt == DSTM || daugt == DSTB || daugt == DST0 ) {
msq = 1.82;
bx2 = 0.39 * 0.39;
} else {
if ( daugt == RHOP || daugt == RHOM || daugt == RHO0 ||
daugt == OMEG ) {
msq = 0.33;
bx2 = 0.31 * 0.31;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_isgw_ff_3S1.\n";
}
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_isgw_ff_3S1.\n";
}
double mtb;
mtb = msb + msd;
mtx = msq + msd;
mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
bbx2 = 0.5 * ( bb2 + bx2 );
mb = EvtPDL::getMeanMass( parent );
mx = mass;
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
kap = 0.7 * 0.7;
f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 3.0 / 2.0 ) *
exp( -1.0 *
( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
*f = 2.0 * mtb * f3;
*g = 0.5 * f3 * ( ( 1 / msq ) - ( msd * bb2 / ( 2.0 * mum * mtx * bbx2 ) ) );
*ap = ( -1.0 * f3 / ( 2.0 * mtx ) ) *
( 1.0 + ( msd * ( bb2 - bx2 ) / ( msb * ( bb2 + bx2 ) ) ) -
( msd * msd * bx2 * bx2 / ( 4.0 * mum * mtb * bbx2 * bbx2 ) ) );
*am = 0.0;
}
void EvtISGWFF::EvtISGW1FF23S1( EvtId parent, EvtId daugt, double t,
double mass, double* fpf, double* gpf,
double* appf, double* apmf )
{
//added by Lange Jan4,2000
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId D23S1P = EvtPDL::getId( "hi" );
static EvtId D23S1N = EvtPDL::getId( "hi" );
static EvtId D23S10 = EvtPDL::getId( "hi" );
static EvtId D23S1B = EvtPDL::getId( "hi" );
static EvtId RHO2S0 = EvtPDL::getId( "rho(2S)0" );
static EvtId RHO2SP = EvtPDL::getId( "rho(2S)+" );
static EvtId RHO2SM = EvtPDL::getId( "rho(2S)-" );
static EvtId OMEG2S = EvtPDL::getId( "omega(2S)" );
double mtb;
double msd( 0.0 ), mx( 0.0 ), mb( 0.0 );
double msq( 0.0 ), bx2( 0.0 ), mtx;
double f3, f5, tt;
double mum, bb2( 0.0 ), bbx2, tm, msb( 0.0 );
if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.41 * 0.41;
if ( daugt == RHO2SP || daugt == RHO2SM || daugt == RHO2S0 ||
daugt == OMEG2S ) {
msq = 0.33;
bx2 = 0.31 * 0.31;
} else {
if ( daugt == D23S1N || daugt == D23S10 || daugt == D23S1P ||
daugt == D23S1B ) {
msq = 1.82;
bx2 = 0.39 * 0.39;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_isgw_ff_23P1.\n";
}
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_isgw_ff_23P1.\n";
}
mtb = msb + msd;
mtx = msq + msd;
mb = EvtPDL::getMeanMass( parent );
mx = mass;
mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
bbx2 = 0.5 * ( bb2 + bx2 );
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
double kap = 0.7 * 0.7;
f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 3.0 / 2.0 ) *
exp( -1.0 *
( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) *
exp( -1.0 *
( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
*fpf = sqrt( 6.0 ) * f3 * mtb *
( ( ( bb2 - bx2 ) / ( bb2 + bx2 ) ) +
( ( msd * msd * bx2 * ( tm - t ) ) /
( 6.0 * mtx * mtb * bbx2 * kap * bbx2 ) ) );
*gpf = sqrt( 3.0 / 8.0 ) * f3 *
( ( ( ( ( bb2 - bx2 ) / ( bb2 + bx2 ) ) +
( ( msd * msd * bx2 * ( tm - t ) ) /
( 6.0 * mtx * mtb * bbx2 * kap * bbx2 ) ) ) *
( ( 1.0 / msq ) - ( ( msd * bb2 ) / ( 2.0 * mum * mtx * bbx2 ) ) ) ) +
( ( msd * bb2 * bx2 ) / ( 3.0 * mum * mtx * bbx2 * bbx2 ) ) );
tt = ( msd * msd * bx2 * ( tm - t ) ) / ( mtx * mtb * bb2 * kap * bbx2 );
*appf = ( f5 / ( sqrt( 6.0 ) * mtx ) ) *
( ( ( 3.0 * mtb * bbx2 / ( 2.0 * msb * sqrt( bb2 * bx2 ) ) ) *
( 1.0 - ( ( msd * msd * msb * bx2 * bx2 ) /
( 4.0 * mtb * mtb * mum * bbx2 * bbx2 ) ) ) ) -
( ( 3.0 * msd * sqrt( bx2 / bb2 ) ) / ( 2.0 * msb ) ) +
( ( 5.0 * msd * sqrt( bx2 * bb2 ) * ( 1.0 + 0.1 * tt ) ) /
( 2.0 * msb * bbx2 ) ) -
( ( 3.0 * mtb * sqrt( bb2 / bx2 ) * ( 1.0 + ( tt / 6.0 ) ) ) /
( 2.0 * msb ) ) +
( ( 7.0 * msd * msd * sqrt( bb2 / bx2 ) * bx2 * bx2 *
( 1.0 + ( tt / 14.0 ) ) ) /
( 8.0 * mtb * mum * bbx2 * bbx2 ) ) );
*apmf = 0.0;
return;
} //get_ff_isgw_23s1
void EvtISGWFF::EvtISGW1FF3P1( EvtId parent, EvtId daugt, double t, double mass,
double* lf, double* qf, double* cpf, double* cmf )
{
//added by Lange Jan4,2000
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId D3P1P = EvtPDL::getId( "D'_1+" );
static EvtId D3P1N = EvtPDL::getId( "D'_1-" );
static EvtId D3P10 = EvtPDL::getId( "D'_10" );
static EvtId D3P1B = EvtPDL::getId( "anti-D'_10" );
static EvtId A1P = EvtPDL::getId( "a_1+" );
static EvtId A1M = EvtPDL::getId( "a_1-" );
static EvtId A10 = EvtPDL::getId( "a_10" );
static EvtId F1 = EvtPDL::getId( "f_1" );
static EvtId F1PR = EvtPDL::getId( "f'_1" );
double mtb;
double msd( 0.0 ), mx( 0.0 ), mb( 0.0 );
double msq( 0.0 ), bx2( 0.0 ), mtx, f5;
double msb( 0.0 ), bb2( 0.0 ), mum, bbx2, tm;
double kap;
if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.41 * 0.41;
if ( daugt == A10 || daugt == A1P || daugt == A1M || daugt == F1 ||
daugt == F1PR ) {
msq = 0.33;
bx2 = 0.27 * 0.27;
} else {
if ( daugt == D3P1P || daugt == D3P1N || daugt == D3P1B ||
daugt == D3P10 ) {
msq = 1.82;
bx2 = 0.34 * 0.34;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_isgw_ff_3P1.\n";
}
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_isgw_ff_3P1.\n";
}
mtb = msb + msd;
mtx = msq + msd;
mb = EvtPDL::getMeanMass( parent );
mx = mass;
mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
bbx2 = 0.5 * ( bb2 + bx2 );
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
kap = 0.7 * 0.7;
f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) *
exp( -1.0 *
( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
*qf = ( f5 * msd ) / ( 2.0 * mtx * sqrt( bb2 ) );
*lf = -1.0 * mtb * sqrt( bb2 ) * f5 *
( 1 / mum + ( msd * ( tm - t ) / ( 2.0 * mtb * kap * bb2 ) ) *
( ( 1.0 / msq ) -
( 1.0 * msd * bb2 / ( 2.0 * mum * mtx * bbx2 ) ) ) );
*cpf = ( f5 * msd * msb / ( 4.0 * mtb * sqrt( bb2 ) * mum ) ) *
( 1.0 - ( msd * msq * bb2 / ( 2.0 * mtx * mum * bbx2 ) ) );
*cmf = 0.0;
return;
} //get_ff_isgw_3p1
void EvtISGWFF::EvtISGW1FF3P0( EvtId parent, EvtId daugt, double t, double mass,
double* upf, double* umf )
{
//added by Lange Jan4,2000
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId D3P0P = EvtPDL::getId( "D_0*+" );
static EvtId D3P0N = EvtPDL::getId( "D_0*-" );
static EvtId D3P00 = EvtPDL::getId( "D_0*0" );
static EvtId D3P0B = EvtPDL::getId( "anti-D_0*0" );
static EvtId A0P = EvtPDL::getId( "a_0+" );
static EvtId A0M = EvtPDL::getId( "a_0-" );
static EvtId A00 = EvtPDL::getId( "a_00" );
static EvtId F0 = EvtPDL::getId( "f_0" );
static EvtId F0PR = EvtPDL::getId( "f'_0" );
double mtb;
double msd( 0.0 ), mx( 0.0 ), mb( 0.0 );
double msq( 0.0 ), bx2( 0.0 ), mtx;
double f5;
double mum, bb2( 0.0 ), bbx2, msb( 0.0 ), tm;
if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.41 * 0.41;
if ( daugt == A00 || daugt == A0P || daugt == A0M || daugt == F0 ||
daugt == F0PR ) {
msq = 0.33;
bx2 = 0.27 * 0.27;
} else {
if ( daugt == D3P0P || daugt == D3P0N || daugt == D3P0B ||
daugt == D3P00 ) {
msq = 1.82;
bx2 = 0.34 * 0.34;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_isgw_ff_3P0.\n";
}
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_isgw_ff_3P0.\n";
}
mtb = msb + msd;
mtx = msq + msd;
mb = EvtPDL::getMeanMass( parent );
mx = mass;
mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
bbx2 = 0.5 * ( bb2 + bx2 );
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
double kap = 0.7 * 0.7;
f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) *
exp( -1.0 *
( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
*upf = f5 * msd * msq * msb / ( sqrt( 6.0 * bb2 ) * mtx * mum );
*umf = 0.0;
return;
} //get_ff_isgw_3p0
void EvtISGWFF::EvtISGW1FF1P1( EvtId parent, EvtId daugt, double t, double mass,
double* vf, double* rf, double* spf, double* smf )
{
//added by Lange Jan4,2000
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId D1P1P = EvtPDL::getId( "D_1+" );
static EvtId D1P1N = EvtPDL::getId( "D_1-" );
static EvtId D1P10 = EvtPDL::getId( "D_10" );
static EvtId D1P1B = EvtPDL::getId( "anti-D_10" );
static EvtId B1P = EvtPDL::getId( "b_1+" );
static EvtId B1M = EvtPDL::getId( "b_1-" );
static EvtId B10 = EvtPDL::getId( "b_10" );
static EvtId H1 = EvtPDL::getId( "h_1" );
static EvtId H1PR = EvtPDL::getId( "h'_1" );
double mtb;
double msd( 0.0 ), mx( 0.0 ), mb( 0.0 );
double msq( 0.0 ), bx2( 0.0 ), mtx, f5;
double mup, mum, kap;
double msb( 0.0 ), bb2( 0.0 ), bbx2, tm;
if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.41 * 0.41;
if ( daugt == H1 || daugt == H1PR || daugt == B10 || daugt == B1P ||
daugt == B1M ) {
msq = 0.33;
bx2 = 0.27 * 0.27;
} else {
if ( daugt == D1P1P || daugt == D1P1N || daugt == D1P10 ||
daugt == D1P1B ) {
msq = 1.82;
bx2 = 0.34 * 0.34;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_isgw_ff_3P1.\n";
}
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_isgw_ff_3P1.\n";
}
mtb = msb + msd;
mtx = msq + msd;
mb = EvtPDL::getMeanMass( parent );
mx = mass;
mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
bbx2 = 0.5 * ( bb2 + bx2 );
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
kap = 0.7 * 0.7;
f5 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 5.0 / 2.0 ) *
exp( -1.0 *
( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
*vf = f5 *
( ( ( mtb * sqrt( bb2 ) ) / ( 4.0 * sqrt( 2.0 ) * msb * msq * mtx ) ) );
*rf = f5 * mtb * sqrt( bb2 / 2 ) * ( ( 1.0 / mup ) );
*spf = ( f5 * msd / ( sqrt( 2.0 * bb2 ) * mtb ) ) *
( 1.0 + ( msb / ( 2.0 * mum ) ) -
( msb * msq * msd * bb2 / ( 4.0 * mup * mum * mtx * bbx2 ) ) );
*smf = 0.0;
return;
//get_ff_isgw_1p1
}
void EvtISGWFF::EvtISGW1FF21S0( EvtId parent, EvtId daugt, double t,
double mass, double* fppf, double* fpmf )
{
//added by Lange Jan4,2000
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId D21S0P = EvtPDL::getId( "hi" );
static EvtId D21S0N = EvtPDL::getId( "hi" );
static EvtId D21S00 = EvtPDL::getId( "hi" );
static EvtId D21S0B = EvtPDL::getId( "hi" );
static EvtId ETA2S = EvtPDL::getId( "eta(2S)" );
static EvtId PI2S0 = EvtPDL::getId( "pi(2S)0" );
static EvtId PI2SP = EvtPDL::getId( "pi(2S)+" );
static EvtId PI2SM = EvtPDL::getId( "pi(2S)-" );
double mtb;
double msd( 0.0 ), mx( 0.0 ), mb( 0.0 );
double msq( 0.0 ), bx2( 0.0 ), mtx;
double f3;
double msb( 0.0 );
double mum, mup, tm, bb2( 0.0 ), bbx2;
if ( parent == BM || parent == BP || parent == B0 || parent == B0B ) {
msb = 5.2;
msd = 0.33;
bb2 = 0.41 * 0.41;
if ( daugt == PI2S0 || daugt == PI2SP || daugt == PI2SM ||
daugt == ETA2S ) {
msq = 0.33;
bx2 = 0.31 * 0.31;
} else {
if ( daugt == D21S00 || daugt == D21S0P || daugt == D21S0N ||
daugt == D21S0B ) {
msq = 1.82;
bx2 = 0.39 * 0.39;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented daugt in get_isgw1_ff_21S0.\n";
}
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented parent in get_isgw1_ff_21S0.\n";
}
mtb = msb + msd;
mtx = msq + msd;
mb = EvtPDL::getMeanMass( parent );
mx = mass;
mup = 1.0 / ( 1.0 / msq + 1.0 / msb );
mum = 1.0 / ( 1.0 / msq - 1.0 / msb );
bbx2 = 0.5 * ( bb2 + bx2 );
tm = ( mb - mx ) * ( mb - mx );
if ( t > tm )
t = 0.99 * tm;
double kap = 0.7 * 0.7;
f3 = sqrt( mtx / mtb ) * pow( sqrt( bx2 * bb2 ) / bbx2, 3.0 / 2.0 ) *
exp( -1.0 *
( ( msd * msd * ( tm - t ) / ( 4.0 * mtb * mtx * kap * bbx2 ) ) ) );
*fppf = f3 * sqrt( 3.0 / 8.0 ) * ( msb / mup ) *
( ( ( bb2 - bx2 ) / ( bb2 + bx2 ) ) +
( ( ( msq * msd * bb2 ) / ( 3.0 * mum * mtx * bbx2 ) ) *
( ( 7.0 * bx2 - 3.0 * bb2 ) / ( 4.0 * bbx2 ) ) ) +
( ( ( msd * msd * bx2 * ( tm - t ) ) /
( 6.0 * mtx * mtb * bbx2 * kap * bbx2 ) ) *
( 1.0 - ( ( msq * msd * bb2 ) / ( 2.0 * mum * mtx * bbx2 ) ) ) ) );
*fpmf = 0.0;
return;
} //get_ff_isgw_21s0
void EvtISGWFF::getbaryonff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtISGWFF.\n";
::abort();
}
void EvtISGWFF::getdiracff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getdiracff in EvtISGWFF.\n";
::abort();
}
void EvtISGWFF::getraritaff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtISGWFF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtItgAbsFunction.cpp b/src/EvtGenModels/EvtItgAbsFunction.cpp
index ca443b0..951c733 100644
--- a/src/EvtGenModels/EvtItgAbsFunction.cpp
+++ b/src/EvtGenModels/EvtItgAbsFunction.cpp
@@ -1,56 +1,34 @@
-//--------------------------------------------------------------------------
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtItgAbsFunction.hh
-//
-// Description:
-// Abstraction of a generic function for use in integration methods elsewhere
-// in this package. (Stolen and modified from the BaBar IntegrationUtils package
-// - author: Phil Strother).
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module adapted for use in
-// EvtGen
-//
-//------------------------------------------------------------------------
#include "EvtGenModels/EvtItgAbsFunction.hh"
#include "EvtGenBase/EvtPatches.hh"
//-------------
// C Headers --
//-------------
extern "C" {
}
#include "EvtGenBase/EvtReport.hh"
#include "assert.h"
using std::endl;
EvtItgAbsFunction::EvtItgAbsFunction( double lowerRange, double upperRange ) :
_upperRange( upperRange ), _lowerRange( lowerRange )
{
}
double EvtItgAbsFunction::value( double x ) const
{
if ( x >= _lowerRange && x <= _upperRange )
return myFunction( x );
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Error in EvtItgAbsFunction::value. Given co-ordinate " << x
<< " is outside of allowed range [" << _lowerRange << ", "
<< _upperRange << "]. Returning 0.0" << endl;
return 0.0; // Never get here
}
double EvtItgAbsFunction::operator()( double x ) const
{
return myFunction( x );
}
diff --git a/src/EvtGenModels/EvtItgAbsIntegrator.cpp b/src/EvtGenModels/EvtItgAbsIntegrator.cpp
index 7330dc9..d039f5d 100644
--- a/src/EvtGenModels/EvtItgAbsIntegrator.cpp
+++ b/src/EvtGenModels/EvtItgAbsIntegrator.cpp
@@ -1,110 +1,89 @@
-//--------------------------------------------------------------------------
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtItgIntegrator.cc
-//
-// Description:
-// Simpson integrator (Stolen and modified from
-// the BaBar IntegrationUtils package - author: Phil Strother).
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module adapted for use in
-// EvtGen
-//
-//------------------------------------------------------------------------
#include "EvtGenModels/EvtItgAbsIntegrator.hh"
#include "EvtGenBase/EvtPatches.hh"
//-------------
// C Headers --
//-------------
extern "C" {
}
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtItgAbsFunction.hh"
#include <iostream>
#include <math.h>
using std::endl;
EvtItgAbsIntegrator::EvtItgAbsIntegrator( const EvtItgAbsFunction& theFunction ) :
_myFunction( theFunction )
{
}
double EvtItgAbsIntegrator::normalisation() const
{
return evaluateIt( _myFunction.lowerRange(), _myFunction.upperRange() );
}
double EvtItgAbsIntegrator::evaluate( double lower, double upper ) const
{
double newLower( lower ), newUpper( upper );
boundsCheck( newLower, newUpper );
return evaluateIt( newLower, newUpper );
}
double EvtItgAbsIntegrator::trapezoid( double lower, double higher, int n,
double& result ) const
{
if ( n == 1 )
return 0.5 * ( higher - lower ) *
( _myFunction( lower ) + _myFunction( higher ) );
int it, j;
for ( it = 1, j = 1; j < n - 1; j++ )
it <<= 1;
double itDouble( it );
double sum( 0.0 );
double deltaX( ( higher - lower ) / itDouble );
double x( lower + 0.5 * deltaX );
for ( j = 1; j <= it; j++ ) {
sum += _myFunction( x );
x += deltaX;
}
result = 0.5 * ( result + ( higher - lower ) * sum / itDouble );
return result;
}
void EvtItgAbsIntegrator::boundsCheck( double& lower, double& upper ) const
{
if ( lower < _myFunction.lowerRange() ) {
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "Warning in EvtItgAbsIntegrator::evaluate. Lower bound "
<< lower << " of integral "
<< " is less than lower bound " << _myFunction.lowerRange()
<< " of function. No contribution from this range will be counted."
<< endl;
lower = _myFunction.lowerRange();
}
if ( upper > _myFunction.upperRange() ) {
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "Warning in EvtItgAbsIntegrator::evaluate. Upper bound "
<< upper << " of integral "
<< " is greater than upper bound " << _myFunction.upperRange()
<< " of function. No contribution from this range will be counted."
<< endl;
upper = _myFunction.upperRange();
}
}
diff --git a/src/EvtGenModels/EvtItgFourCoeffFcn.cpp b/src/EvtGenModels/EvtItgFourCoeffFcn.cpp
index 00778c1..d5b7971 100644
--- a/src/EvtGenModels/EvtItgFourCoeffFcn.cpp
+++ b/src/EvtGenModels/EvtItgFourCoeffFcn.cpp
@@ -1,77 +1,58 @@
-//--------------------------------------------------------------------------
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtItgFourCoeffFcn.cc
-//
-// Description:
-// Class describing a function with four vectors of coefficients.
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenModels/EvtItgFourCoeffFcn.hh"
#include "EvtGenBase/EvtPatches.hh"
//-------------
// C Headers --
//-------------
extern "C" {
}
EvtItgFourCoeffFcn::EvtItgFourCoeffFcn(
double ( *theFunction )( double, const std::vector<double>&,
const std::vector<double>&,
const std::vector<double>&,
const std::vector<double>& ),
double lowerRange, double upperRange, const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2, const std::vector<double>& coeffs3,
const std::vector<double>& coeffs4 ) :
EvtItgAbsFunction( lowerRange, upperRange ),
_myFunction( theFunction ),
_coeffs1( coeffs1 ),
_coeffs2( coeffs2 ),
_coeffs3( coeffs3 ),
_coeffs4( coeffs4 )
{
}
double EvtItgFourCoeffFcn::myFunction( double x ) const
{
return _myFunction( x, _coeffs1, _coeffs2, _coeffs3, _coeffs4 );
}
void EvtItgFourCoeffFcn::setCoeff( int vect, int which, double value )
{
if ( vect == 1 )
_coeffs1[which] = value;
else if ( vect == 2 )
_coeffs2[which] = value;
else if ( vect == 3 )
_coeffs3[which] = value;
else if ( vect == 4 )
_coeffs4[which] = value;
}
double EvtItgFourCoeffFcn::getCoeff( int vect, int which )
{
if ( vect == 1 )
return _coeffs1[which];
else if ( vect == 2 )
return _coeffs2[which];
else if ( vect == 3 )
return _coeffs3[which];
else if ( vect == 4 )
return _coeffs4[which];
else {
return 0;
}
}
diff --git a/src/EvtGenModels/EvtItgFunction.cpp b/src/EvtGenModels/EvtItgFunction.cpp
index 8121158..5f3d6ec 100644
--- a/src/EvtGenModels/EvtItgFunction.cpp
+++ b/src/EvtGenModels/EvtItgFunction.cpp
@@ -1,45 +1,23 @@
-//--------------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtItgFunction.cpp,v 1.4 2009-03-16 15:47:39 robbep Exp $
-//
-// Description:
-// Class EvtItgFunction
-// Implementation for the EvtItgFunction class. Defines the bounds
-// checked value() function and the non-bounds checked operator()
-//
-// Environment:
-// Software developed for the BaBar Detector at the SLAC B-Factory.
-//
-// Author List:
-// Phil Strother Originator
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 LBNL
-//
-//------------------------------------------------------------------------
-#include "EvtGenBase/EvtPatches.hh"
-
-//-----------------------
-// This Class's Header --
-//-----------------------
#include "EvtGenModels/EvtItgFunction.hh"
+#include "EvtGenBase/EvtPatches.hh"
+
//-------------
// C Headers --
//-------------
extern "C" {
}
//----------------
// Constructors --
//----------------
EvtItgFunction::EvtItgFunction( double ( *theFunction )( double ),
double lowerRange, double upperRange ) :
EvtItgAbsFunction( lowerRange, upperRange ), _myFunction( theFunction )
{
}
double EvtItgFunction::myFunction( double x ) const
{
return _myFunction( x );
}
diff --git a/src/EvtGenModels/EvtItgPtrFunction.cpp b/src/EvtGenModels/EvtItgPtrFunction.cpp
index e98449d..f7c6e25 100644
--- a/src/EvtGenModels/EvtItgPtrFunction.cpp
+++ b/src/EvtGenModels/EvtItgPtrFunction.cpp
@@ -1,62 +1,41 @@
-//--------------------------------------------------------------------------
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtItgPtrFunction.hh
-//
-// Description:
-// Class describing a function with one vector of coefficients. (Stolen and
-// modified from the BaBar IntegrationUtils package - author: Phil Strother).
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module adapted for use in
-// EvtGen
-//
-//------------------------------------------------------------------------
#include "EvtGenModels/EvtItgPtrFunction.hh"
#include "EvtGenBase/EvtPatches.hh"
//-------------
// C Headers --
//-------------
extern "C" {
}
//----------------
// Constructors --
//----------------
EvtItgPtrFunction::EvtItgPtrFunction(
double ( *theFunction )( double, const std::vector<double>& ),
double lowerRange, double upperRange, const std::vector<double>& coeffs1 ) :
EvtItgAbsFunction( lowerRange, upperRange ),
_myFunction( theFunction ),
_coeffs1( coeffs1 )
{
}
double EvtItgPtrFunction::myFunction( double x ) const
{
return _myFunction( x, _coeffs1 );
}
void EvtItgPtrFunction::setCoeff( int vect, int which, double value )
{
if ( vect == 1 )
_coeffs1[which] = value;
}
double EvtItgPtrFunction::getCoeff( int vect, int which )
{
if ( vect == 1 )
return _coeffs1[which];
else {
return 0;
}
}
diff --git a/src/EvtGenModels/EvtItgSimpsonIntegrator.cpp b/src/EvtGenModels/EvtItgSimpsonIntegrator.cpp
index 3e4a890..89dd8e3 100644
--- a/src/EvtGenModels/EvtItgSimpsonIntegrator.cpp
+++ b/src/EvtGenModels/EvtItgSimpsonIntegrator.cpp
@@ -1,95 +1,72 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtItgSimpsonIntegrator.hh
-//
-// Description:
-// Abstraction of a generic function for use in integration methods elsewhere
-// in this package. (Stolen and modified from
-// the BaBar IntegrationUtils package - author: Phil Strother).
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module adapted for use in
-// EvtGen
-//
-//------------------------------------------------------------------------
#include "EvtGenModels/EvtItgSimpsonIntegrator.hh"
#include "EvtGenBase/EvtPatches.hh"
//-------------
// C Headers --
//-------------
extern "C" {
}
//---------------
// C++ Headers --
//---------------
#include <math.h>
//-------------------------------
// Collaborating Class Headers --
//-------------------------------
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtItgAbsFunction.hh"
using std::endl;
EvtItgSimpsonIntegrator::EvtItgSimpsonIntegrator(
const EvtItgAbsFunction& theFunction, double precision, int maxLoop ) :
EvtItgAbsIntegrator( theFunction ),
_precision( precision ),
_maxLoop( maxLoop )
{
}
double EvtItgSimpsonIntegrator::evaluateIt( double lower, double higher ) const
{
// EvtGenReport(EVTGEN_INFO,"EvtGen")<<"in evaluate"<<endl;
int j;
double result( 0.0 );
double s, st, ost( 0.0 );
for ( j = 1; j < 4; j++ ) {
st = trapezoid( lower, higher, j, result );
s = ( 4.0 * st - ost ) / 3.0;
ost = st;
}
double olds( s );
st = trapezoid( lower, higher, j, result );
s = ( 4.0 * st - ost ) / 3.0;
if ( fabs( s - olds ) < _precision * fabs( olds ) ||
( s == 0.0 && olds == 0.0 ) )
return s;
ost = st;
for ( j = 5; j < _maxLoop; j++ ) {
st = trapezoid( lower, higher, j, result );
s = ( 4.0 * st - ost ) / 3.0;
if ( fabs( s - olds ) < _precision * fabs( olds ) ||
( s == 0.0 && olds == 0.0 ) )
return s;
olds = s;
ost = st;
}
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Severe error in EvtItgSimpsonIntegrator. Failed to converge after loop with 2**"
<< _maxLoop << " calls to the integrand in." << endl;
return 0.0;
}
diff --git a/src/EvtGenModels/EvtItgThreeCoeffFcn.cpp b/src/EvtGenModels/EvtItgThreeCoeffFcn.cpp
index acd2f37..bf20e54 100644
--- a/src/EvtGenModels/EvtItgThreeCoeffFcn.cpp
+++ b/src/EvtGenModels/EvtItgThreeCoeffFcn.cpp
@@ -1,71 +1,51 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtItgThreeCoeffFcn.cc
-//
-// Description:
-// Class describing a function with three vectors of coefficients.
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenModels/EvtItgThreeCoeffFcn.hh"
#include "EvtGenBase/EvtPatches.hh"
//-------------
// C Headers --
//-------------
extern "C" {
}
EvtItgThreeCoeffFcn::EvtItgThreeCoeffFcn(
double ( *theFunction )( double, const std::vector<double>&,
const std::vector<double>&,
const std::vector<double>& ),
double lowerRange, double upperRange, const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2, const std::vector<double>& coeffs3 ) :
EvtItgAbsFunction( lowerRange, upperRange ),
_myFunction( theFunction ),
_coeffs1( coeffs1 ),
_coeffs2( coeffs2 ),
_coeffs3( coeffs3 )
{
}
double EvtItgThreeCoeffFcn::myFunction( double x ) const
{
return _myFunction( x, _coeffs1, _coeffs2, _coeffs3 );
}
void EvtItgThreeCoeffFcn::setCoeff( int vect, int which, double value )
{
if ( vect == 1 )
_coeffs1[which] = value;
else if ( vect == 2 )
_coeffs2[which] = value;
else if ( vect == 3 )
_coeffs3[which] = value;
}
double EvtItgThreeCoeffFcn::getCoeff( int vect, int which )
{
if ( vect == 1 )
return _coeffs1[which];
else if ( vect == 2 )
return _coeffs2[which];
else if ( vect == 3 )
return _coeffs3[which];
else {
return 0;
}
}
diff --git a/src/EvtGenModels/EvtItgTwoCoeffFcn.cpp b/src/EvtGenModels/EvtItgTwoCoeffFcn.cpp
index d213a04..208f97f 100644
--- a/src/EvtGenModels/EvtItgTwoCoeffFcn.cpp
+++ b/src/EvtGenModels/EvtItgTwoCoeffFcn.cpp
@@ -1,65 +1,45 @@
-//--------------------------------------------------------------------------
-//
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Module: EvtItgTwoCoeffFcn.cc
-//
-// Description:
-// Class describing a function with two vectors of coefficients.
-//
-// Modification history:
-//
-// Jane Tinslay March 21, 2001 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenModels/EvtItgTwoCoeffFcn.hh"
#include "EvtGenBase/EvtPatches.hh"
//-------------
// C Headers --
//-------------
extern "C" {
}
EvtItgTwoCoeffFcn::EvtItgTwoCoeffFcn(
double ( *theFunction )( double, const std::vector<double>&,
const std::vector<double>& ),
double lowerRange, double upperRange, const std::vector<double>& coeffs1,
const std::vector<double>& coeffs2 ) :
EvtItgAbsFunction( lowerRange, upperRange ),
_myFunction( theFunction ),
_coeffs1( coeffs1 ),
_coeffs2( coeffs2 )
{
}
double EvtItgTwoCoeffFcn::myFunction( double x ) const
{
return _myFunction( x, _coeffs1, _coeffs2 );
}
void EvtItgTwoCoeffFcn::setCoeff( int vect, int which, double value )
{
if ( vect == 1 )
_coeffs1[which] = value;
else if ( vect == 2 )
_coeffs2[which] = value;
}
double EvtItgTwoCoeffFcn::getCoeff( int vect, int which )
{
if ( vect == 1 )
return _coeffs1[which];
else if ( vect == 2 )
return _coeffs2[which];
else {
return 0;
}
}
diff --git a/src/EvtGenModels/EvtKKLambdaC.cpp b/src/EvtGenModels/EvtKKLambdaC.cpp
index 5672744..b682800 100644
--- a/src/EvtGenModels/EvtKKLambdaC.cpp
+++ b/src/EvtGenModels/EvtKKLambdaC.cpp
@@ -1,83 +1,62 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSLPole.cc
-//
-// Description: Routine to implement semileptonic decays according
-// to light cone sum rules
-//
-// Modification history:
-//
-// DJL April 23, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtKKLambdaC.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicBaryonAmp.hh"
#include "EvtGenModels/EvtKKLambdaCFF.hh"
#include <stdlib.h>
#include <string>
std::string EvtKKLambdaC::getName()
{
return "KK_LAMBDAC_SL";
}
EvtDecayBase* EvtKKLambdaC::clone()
{
return new EvtKKLambdaC;
}
void EvtKKLambdaC::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
_calcamp->CalcAmp( p, _amp2, _ffmodel.get() );
}
void EvtKKLambdaC::initProbMax()
{
EvtId parnum, mesnum, lnum, nunum;
parnum = getParentId();
mesnum = getDaug( 0 );
lnum = getDaug( 1 );
nunum = getDaug( 2 );
//double mymaxprob = _calcamp->CalcMaxProb(parnum,mesnum,
// lnum,nunum,_ffmodel);
double mymaxprob = 100.;
setProbMax( mymaxprob );
}
void EvtKKLambdaC::init()
{
checkNDaug( 3 );
//We expect the parent to be a dirac
//and the daughters to be dirac lepton neutrino
checkSpinParent( EvtSpinType::DIRAC );
checkSpinDaughter( 0, EvtSpinType::DIRAC );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
_ffmodel = std::make_unique<EvtKKLambdaCFF>( getNArg(), getArgs() );
_calcamp = std::make_unique<EvtSemiLeptonicBaryonAmp>();
}
diff --git a/src/EvtGenModels/EvtKKLambdaCFF.cpp b/src/EvtGenModels/EvtKKLambdaCFF.cpp
index c0f3505..2d777e5 100644
--- a/src/EvtGenModels/EvtKKLambdaCFF.cpp
+++ b/src/EvtGenModels/EvtKKLambdaCFF.cpp
@@ -1,91 +1,70 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSLPoleFF.cc
-//
-// Description: Routine to implement semileptonic form factors
-// according to the model SLPoles
-//
-// Modification history:
-//
-// DJL April 17,1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtKKLambdaCFF.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <math.h>
#include <stdlib.h>
#include <string>
EvtKKLambdaCFF::EvtKKLambdaCFF( int numarg, double* arglist )
{
_nargs = numarg;
for ( int i = 0; i < numarg; i++ ) {
_args[i] = arglist[i];
}
return;
}
void EvtKKLambdaCFF::getbaryonff( EvtId /*parent*/, EvtId /*daught*/, double t,
double /*mass*/, double* f1v, double* f1a,
double* f2v, double* f2a )
{
*f1v = ( _args[0] ) / ( 1.0 - ( t / ( _args[1] * _args[1] ) ) );
*f2v = 0.;
*f2a = 0.;
*f1a = -1.0 * ( *f1v );
}
void EvtKKLambdaCFF::getscalarff( EvtId, EvtId, double, double, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getscalarff in EvtKKLambdaCFF.\n";
::abort();
}
void EvtKKLambdaCFF::getvectorff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getvectorff in EvtKKLambdaCFF.\n";
::abort();
}
void EvtKKLambdaCFF::gettensorff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :gettensorff in EvtKKLambdaCFF.\n";
::abort();
}
void EvtKKLambdaCFF::getdiracff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getdiracff in EvtKKLambdaCFF.\n";
::abort();
}
void EvtKKLambdaCFF::getraritaff( EvtId, EvtId, double, double, double*,
double*, double*, double*, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtKKLambdaCFF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtKStopizmumu.cpp b/src/EvtGenModels/EvtKStopizmumu.cpp
index 216764b..9672244 100644
--- a/src/EvtGenModels/EvtKStopizmumu.cpp
+++ b/src/EvtGenModels/EvtKStopizmumu.cpp
@@ -1,178 +1,158 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtKStopizmumu.cc
-//
-// Description: Routine to implement KS -> pi0 mu mu; see JHEP08(1998)004.
-//
-// Modification history:
-//
-// Veronika Chobanova, Diego Martinez Santos November 25,2015 Module created
-// With the assistance of Jeremy Dalseno
-// LHCb collaboration
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtKStopizmumu.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector3R.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
void EvtKStopizmumu::init()
{
// 5 arguments
checkNArg( 5 );
// Only 3 daughters
checkNDaug( 3 );
// Spin-0 parent
checkSpinParent( EvtSpinType::SCALAR );
// Spin-0 daughters
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::DIRAC );
// KS parent
const EvtId p = getParentId();
if ( p != EvtPDL::getId( "K_S0" ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtKStopizmumu: Parent must be K_S0" << std::endl;
assert( 0 );
}
// Daughter types and ordering
const EvtId d1 = getDaug( 0 );
const EvtId d2 = getDaug( 1 );
const EvtId d3 = getDaug( 2 );
if ( !( d1 == EvtPDL::getId( "pi0" ) && d2 == EvtPDL::getId( "mu+" ) &&
d3 == EvtPDL::getId( "mu-" ) ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtKStopizmumu: Daughter sequence should be pi0, mu+, mu-"
<< std::endl;
assert( 0 );
}
}
void EvtKStopizmumu::decay( EvtParticle* p )
{
const double Mpiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
const double MKS = EvtPDL::getMass( EvtPDL::getId( "K_S0" ) );
const double MKS_Sq = MKS * MKS;
const double rpisq = Mpiz * Mpiz / MKS_Sq;
const double z0 = 1.0 / 3.0 + rpisq;
// Generate 4-vectors in phase space
p->initializePhaseSpace( getNDaug(), getDaugs() );
// Daughter momenta
const EvtVector4R p4piz = p->getDaug( 0 )->getP4();
// Input parameters
const double as = getArg( 0 );
// bs value from G8/30GF in here: http://arxiv.org/pdf/hep-ph/0404136.pdf would be 0.017
const double bs = getArg( 1 );
const double b2 = getArg( 2 ) * 1e-8;
const double d2 = getArg( 3 ) * 1e-8;
const double rvsq = getArg( 4 );
const double GF = EvtConst::Fermi;
const double alpha_s = 4.0 * b2 / 3.0;
const double beta_s = -8.0 * d2 / 3.0;
// Calculate p4KS momentum
EvtVector4R p4KS( MKS, 0.0, 0.0, 0.0 );
const EvtVector4R q = p4KS - p4piz;
const double z = ( q.get( 0 ) * q.get( 0 ) - q.get( 1 ) * q.get( 1 ) -
q.get( 2 ) * q.get( 2 ) - q.get( 3 ) * q.get( 3 ) ) /
MKS_Sq;
// Calculate line shape
const EvtComplex line_shape = GF * MKS_Sq * Wpol_z( z, as, bs ) +
Wpipi_z( z, alpha_s, beta_s, rvsq, rpisq, z0 );
// Calculate spin
const EvtVector4R mom_sum = p4KS + p4piz;
EvtVector4C l11, l12, l21, l22;
l11 = EvtLeptonVCurrent( p->getDaug( 1 )->spParent( 0 ),
p->getDaug( 2 )->spParent( 0 ) );
l21 = EvtLeptonVCurrent( p->getDaug( 1 )->spParent( 0 ),
p->getDaug( 2 )->spParent( 1 ) );
l12 = EvtLeptonVCurrent( p->getDaug( 1 )->spParent( 1 ),
p->getDaug( 2 )->spParent( 0 ) );
l22 = EvtLeptonVCurrent( p->getDaug( 1 )->spParent( 1 ),
p->getDaug( 2 )->spParent( 1 ) );
vertex( 0, 0, mom_sum * l11 * line_shape );
vertex( 0, 1, mom_sum * l12 * line_shape );
vertex( 1, 0, mom_sum * l21 * line_shape );
vertex( 1, 1, mom_sum * l22 * line_shape );
}
double EvtKStopizmumu::F_z( const double& z, const double& rvsq )
{
double F_z = 1.0 + ( z / rvsq );
return F_z;
}
EvtComplex EvtKStopizmumu::G_z( const double& z )
{
EvtComplex G_z;
if ( z <= 4.0 ) {
G_z = sqrt( ( 4.0 / z ) - 1.0 ) * asin( sqrt( z ) / 2.0 );
} else {
double z4 = 4.0 / z;
G_z = -0.5 * sqrt( 1.0 - z4 ) *
( log( ( 1.0 - sqrt( 1.0 - z4 ) ) / ( 1.0 + sqrt( 1.0 + z4 ) ) ) +
EvtComplex( 0, EvtConst::pi ) );
}
return G_z;
}
EvtComplex EvtKStopizmumu::chi_z( const double& z, const double& rpisq )
{
double z_prime = z / rpisq;
EvtComplex chi = 4.0 / 9.0 - 4.0 * rpisq / ( 3.0 * z ) -
( 1.0 - 4.0 * rpisq / z ) * G_z( z_prime ) / 3.0;
return chi;
}
double EvtKStopizmumu::Wpol_z( const double& z, const double& as,
const double& bs )
{
double Wpol = ( as + bs * z );
return Wpol;
}
EvtComplex EvtKStopizmumu::Wpipi_z( const double& z, const double& alpha_s,
const double& beta_s, const double& rvsq,
const double& rpisq, const double& z0 )
{
EvtComplex Wpipi = ( alpha_s + beta_s * ( z - z0 ) / rpisq ) *
F_z( z, rvsq ) * chi_z( z, rpisq ) / rpisq;
return Wpipi;
}
diff --git a/src/EvtGenModels/EvtKstarnunu.cpp b/src/EvtGenModels/EvtKstarnunu.cpp
index 254cbb3..12e3b14 100644
--- a/src/EvtGenModels/EvtKstarnunu.cpp
+++ b/src/EvtGenModels/EvtKstarnunu.cpp
@@ -1,145 +1,114 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtKstarnunu.cc
-//
-// Description: B ==> K* nu nubar
-//
-// Modification history:
-//
-// RYD September 29, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
-// Package: EVT
-// Module: EvtKstarnunu
-//
-//
-// Implementation:
-//
-//
-// Author: RYD
-// Created: Sept. 29 1997
-//
-//
#include "EvtGenModels/EvtKstarnunu.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <iostream>
#include <stdlib.h>
#include <string>
std::string EvtKstarnunu::getName()
{
return "KSTARNUNU";
}
EvtDecayBase* EvtKstarnunu::clone()
{
return new EvtKstarnunu;
}
void EvtKstarnunu::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be K neutrino netrino
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::NEUTRINO );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
}
void EvtKstarnunu::decay( EvtParticle* p )
{
static EvtId NUE = EvtPDL::getId( "nu_e" );
static EvtId NUM = EvtPDL::getId( "nu_mu" );
static EvtId NUT = EvtPDL::getId( "nu_tau" );
static EvtId NUEB = EvtPDL::getId( "anti-nu_e" );
static EvtId NUMB = EvtPDL::getId( "anti-nu_mu" );
static EvtId NUTB = EvtPDL::getId( "anti-nu_tau" );
p->initializePhaseSpace( getNDaug(), getDaugs() );
double m_b = p->mass();
EvtParticle *meson, *neutrino1, *neutrino2;
meson = p->getDaug( 0 );
neutrino1 = p->getDaug( 1 );
neutrino2 = p->getDaug( 2 );
EvtVector4R momnu1 = neutrino1->getP4();
EvtVector4R momnu2 = neutrino2->getP4();
EvtVector4R momkstar = meson->getP4();
double v0_0, a1_0, a2_0;
double m2v0, a1_b, a2_b;
v0_0 = 0.47;
a1_0 = 0.37;
a2_0 = 0.40;
m2v0 = 5. * 5.;
a1_b = -0.023;
a2_b = 0.034;
EvtVector4R q = momnu1 + momnu2;
double q2 = q.mass2();
double v0, a1, a2;
v0 = v0_0 / ( 1 - q2 / m2v0 );
a1 = a1_0 * ( 1 + a1_b * q2 );
a2 = a2_0 * ( 1 + a2_b * q2 );
EvtVector4R p4b;
p4b.set( m_b, 0., 0., 0. ); // Do calcs in mother rest frame
double m_k = meson->mass();
EvtTensor4C tds = ( -2 * v0 / ( m_b + m_k ) ) *
dual( EvtGenFunctions::directProd( p4b, momkstar ) ) -
EvtComplex( 0.0, 1.0 ) *
( ( m_b + m_k ) * a1 * EvtTensor4C::g() -
( a2 / ( m_b + m_k ) ) *
EvtGenFunctions::directProd( p4b - momkstar,
p4b + momkstar ) );
EvtVector4C l;
if ( getDaug( 1 ) == NUE || getDaug( 1 ) == NUM || getDaug( 1 ) == NUT ) {
l = EvtLeptonVACurrent( neutrino1->spParentNeutrino(),
neutrino2->spParentNeutrino() );
}
if ( getDaug( 1 ) == NUEB || getDaug( 1 ) == NUMB || getDaug( 1 ) == NUTB ) {
l = EvtLeptonVACurrent( neutrino2->spParentNeutrino(),
neutrino1->spParentNeutrino() );
}
EvtVector4C et0, et1, et2;
et0 = tds.cont1( meson->epsParent( 0 ).conj() );
et1 = tds.cont1( meson->epsParent( 1 ).conj() );
et2 = tds.cont1( meson->epsParent( 2 ).conj() );
vertex( 0, l * et0 );
vertex( 1, l * et1 );
vertex( 2, l * et2 );
return;
}
diff --git a/src/EvtGenModels/EvtKstarstargamma.cpp b/src/EvtGenModels/EvtKstarstargamma.cpp
index 9312fb5..d6657c5 100644
--- a/src/EvtGenModels/EvtKstarstargamma.cpp
+++ b/src/EvtGenModels/EvtKstarstargamma.cpp
@@ -1,178 +1,158 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2002 Caltech
-//
-// Module: EvtKstarstargamma.cc
-//
-// Description: Routine for the decau B->K**gamma
-//
-// Modification history:
-//
-// Ryd November 15, 2002 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtKstarstargamma.hh"
#include "EvtGenBase/EvtEvalHelAmp.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtPhotonParticle.hh"
#include "EvtGenBase/EvtPropBreitWignerRel.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtTensorParticle.hh"
#include "EvtGenBase/EvtTwoBodyVertex.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenBase/EvtVectorParticle.hh"
#include <stdlib.h>
#include <string>
std::string EvtKstarstargamma::getName()
{
return "KSTARSTARGAMMA";
}
EvtDecayBase* EvtKstarstargamma::clone()
{
return new EvtKstarstargamma;
}
void EvtKstarstargamma::init()
{
// check that there are 0 arguments
checkNArg( 0 );
// check that there are 3 daughters
checkNDaug( 3 );
// check the parent and daughter spins
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
checkSpinDaughter( 2, EvtSpinType::PHOTON );
}
void EvtKstarstargamma::initProbMax()
{
//setProbMax(1.0);
}
void EvtKstarstargamma::decay( EvtParticle* /*p*/ )
{
/*
The EvtEvalHelAmp is completely broken...
p->initializePhaseSpace(getNDaug(),getDaugs());
EvtParticle* kaon = p->getDaug(0);
EvtParticle* pion = p->getDaug(1);
EvtParticle* photon = p->getDaug(2);
EvtComplexPtrPtr Hd1=new EvtComplexPtr[5];
Hd1[0]=new EvtComplex[2];
Hd1[1]=new EvtComplex[2];
Hd1[2]=new EvtComplex[2];
Hd1[3]=new EvtComplex[2];
Hd1[4]=new EvtComplex[2];
Hd1[0][0]=0.0;
Hd1[0][1]=0.0;
Hd1[1][0]=0.0;
Hd1[1][1]=0.0;
Hd1[2][0]=0.0;
Hd1[2][1]=0.0;
Hd1[3][0]=0.0;
Hd1[3][1]=1.0;
Hd1[4][0]=0.0;
Hd1[4][1]=0.0;
EvtEvalHelAmp d1(EvtSpinType::SCALAR,EvtSpinType::TENSOR,
EvtSpinType::PHOTON,Hd1);
EvtScalarParticle theB;
theB.init(p->getId(),p->getP4Restframe());
EvtVector4R theKstarP4=kaon->getP4()+pion->getP4();
EvtTensorParticle theKstar;
theKstar.init(EvtPDL::getId(std::string("K_2*0")),theKstarP4);
EvtPhotonParticle thePhoton;
thePhoton.init(EvtPDL::getId(std::string("K_2*0")),photon->getP4());
theKstar.addDaug(&theB);
thePhoton.addDaug(&theB);
EvtAmp amp1;
d1.evalAmp(&theB,amp1);
EvtComplexPtrPtr Hd2=new EvtComplexPtr[1];
Hd2[0]=new EvtComplex[1];
Hd2[0][0]=1.0;
EvtEvalHelAmp d2(EvtSpinType::TENSOR,EvtSpinType::SCALAR,
EvtSpinType::SCALAR,Hd2);
EvtVector4R theKstarP4boost(theKstarP4.get(0),-theKstarP4.get(1),-theKstarP4.get(2),-theKstarP4.get(3));
EvtScalarParticle theKaon;
theKaon.init(EvtPDL::getId(std::string("K+")),boostTo(kaon->getP4(),theKstarP4boost));
EvtScalarParticle thePion;
thePion.init(EvtPDL::getId(std::string("pi+")),boostTo(pion->getP4(),theKstarP4boost));
theKaon.addDaug(&theKstar);
thePion.addDaug(&theKstar);
// Calculate the propagator
double m = theKstarP4.mass();
EvtTwoBodyVertex v(0.5,0.14,1.4,2);
EvtTwoBodyKine v1(0.5,0.14,m);
EvtPropBreitWignerRel prop(1.4,0.2);
// Mass-dependent width correction and amplitude calculation
double width = prop.g0() * v.widthFactor(v1);
prop.set_g0(width);
EvtComplex bwamp = prop.evaluate(m);
EvtAmp amp2;
d2.evalAmp(&theKstar,amp2);
vertex(0,bwamp*(amp1._amp[0]*amp2._amp[0]+
amp1._amp[1]*amp2._amp[1]+
amp1._amp[2]*amp2._amp[2]+
amp1._amp[3]*amp2._amp[3]+
amp1._amp[4]*amp2._amp[4]));
vertex(1,bwamp*(amp1._amp[5]*amp2._amp[0]+
amp1._amp[6]*amp2._amp[1]+
amp1._amp[7]*amp2._amp[2]+
amp1._amp[8]*amp2._amp[3]+
amp1._amp[9]*amp2._amp[4]));
*/
return;
}
diff --git a/src/EvtGenModels/EvtLNuGamma.cpp b/src/EvtGenModels/EvtLNuGamma.cpp
index 2808508..849a1c1 100644
--- a/src/EvtGenModels/EvtLNuGamma.cpp
+++ b/src/EvtGenModels/EvtLNuGamma.cpp
@@ -1,164 +1,143 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2001 Caltech
-//
-// Module: EvtLNuGamma.cc
-//
-// Description: B+ -> l+ nu gamma
-//
-//
-// Modification history:
-//
-// Edward Chen April 24, 2001 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtLNuGamma.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <iostream>
#include <stdlib.h>
#include <string>
std::string EvtLNuGamma::getName()
{
return "LNUGAMMA";
}
EvtDecayBase* EvtLNuGamma::clone()
{
return new EvtLNuGamma;
}
void EvtLNuGamma::init()
{
// check that there are 3 or 4 arguments
checkNArg( 3, 4 );
checkNDaug( 3 );
if ( getNArg() == 4 ) {
// Argv[3] is a flag set to 0 if abs(f_a/f_v) is 1
// and not set to 0 if f_a/f_v is set to 0.
if ( getArg( 3 ) > 0 ) {
_fafvzero = true;
} else {
_fafvzero = false;
}
} else {
_fafvzero = false;
}
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::DIRAC );
checkSpinDaughter( 1, EvtSpinType::NEUTRINO );
checkSpinDaughter( 2, EvtSpinType::PHOTON );
}
void EvtLNuGamma::initProbMax()
{
setProbMax( 7000.0 );
}
void EvtLNuGamma::decay( EvtParticle* p )
{
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId DM = EvtPDL::getId( "D-" );
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtComplex myI( 0, 1 );
EvtParticle *lept, *neut, *phot;
lept = p->getDaug( 0 );
neut = p->getDaug( 1 );
phot = p->getDaug( 2 );
EvtVector4C lept1, lept2, photon1, photon2;
if ( p->getId() == BM || p->getId() == DM ) {
lept1 = EvtLeptonVACurrent( lept->spParent( 0 ),
neut->spParentNeutrino() );
lept2 = EvtLeptonVACurrent( lept->spParent( 1 ),
neut->spParentNeutrino() );
} else {
lept1 = EvtLeptonVACurrent( neut->spParentNeutrino(),
lept->spParent( 0 ) );
lept2 = EvtLeptonVACurrent( neut->spParentNeutrino(),
lept->spParent( 1 ) );
}
EvtVector4R photp = phot->getP4(); // Photon 4-momentum in parent rest frame
double photE = photp.get( 0 ); // Photon energy in parent rest frame
EvtVector4C photone1 = phot->epsParentPhoton( 0 ).conj();
EvtVector4C photone2 = phot->epsParentPhoton( 1 ).conj();
EvtVector4R parVelocity( 1, 0, 0, 0 ); // Parent velocity in parent rest-frame
double fv, fa;
fv = getFormFactor( photE );
if ( _fafvzero ) {
fa = 0.0;
} else if ( p->getId() == BM || p->getId() == DM ) {
fa = -fv;
} else {
fa = fv;
}
EvtVector4C temp1a =
dual( EvtGenFunctions::directProd( parVelocity, photp ) ).cont2( photone1 );
EvtVector4C temp2a =
dual( EvtGenFunctions::directProd( parVelocity, photp ) ).cont2( photone2 );
EvtVector4C temp1b = ( photone1 ) * ( parVelocity * photp );
EvtVector4C temp1c = ( photp ) * ( photone1 * parVelocity );
EvtVector4C temp2b = ( photone2 ) * ( parVelocity * photp );
EvtVector4C temp2c = ( photp ) * ( photone2 * parVelocity );
photon1 = ( temp1a * fv ) + ( myI * fa * ( temp1b - temp1c ) );
photon2 = ( temp2a * fv ) + ( myI * fa * ( temp2b - temp2c ) );
vertex( 0, 0, lept1.cont( photon1 ) );
vertex( 0, 1, lept1.cont( photon2 ) );
vertex( 1, 0, lept2.cont( photon1 ) );
vertex( 1, 1, lept2.cont( photon2 ) );
return;
}
double EvtLNuGamma::getFormFactor( double photonEnergy )
{
// Arg[0] = photon mass cutoff (GeV)
// Arg[1] = R (GeV^(-1))
// Arg[2] = m_b (GeV)
// Using Korchemsky et al. Phy Rev D 61 (2000) 114510
// Up to a constant
double formFactor = 0;
double qu = 2. / 3.;
double qb = -1. / 3.;
if ( photonEnergy > getArg( 0 ) ) {
formFactor = ( 1 / photonEnergy ) *
( ( qu * getArg( 1 ) ) - ( qb / getArg( 2 ) ) );
}
return formFactor;
}
diff --git a/src/EvtGenModels/EvtLambdaP_BarGamma.cpp b/src/EvtGenModels/EvtLambdaP_BarGamma.cpp
index eab710b..f2489de 100644
--- a/src/EvtGenModels/EvtLambdaP_BarGamma.cpp
+++ b/src/EvtGenModels/EvtLambdaP_BarGamma.cpp
@@ -1,155 +1,135 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech
-//
-// Module: EvtGen/EvtRadiativeBaryonicPenguins.hh
-//
-// Description:Implementation of the decay B- -> lambda p_bar gamma according to
-// Cheng, Yang; hep-ph/0201015
-//
-// Modification history:
-//
-// JFS December 16th, 2003 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenModels/EvtLambdaP_BarGamma.hh"
#include "EvtGenBase/EvtDiracParticle.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGammaMatrix.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtPhotonParticle.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include <stdlib.h>
using std::cout;
using std::endl;
EvtLambdaP_BarGamma::EvtLambdaP_BarGamma() :
_mLambdab( 5.624 ), // Lambda_b mass
_mLambda0( 1.115684 ), // Lambda0 mass
_c7Eff( -0.31 ), // Wilson coefficient
_mb( 4.4 ), // running b mass
_mV( 5.42 ), // pole mass vector current
_mA( 5.86 ), // pole mass axial current
_GF( 1.166E-5 ), // Fermi constant
_gLambdab( 16 ), // coupling constant Lambda_b -> B- p
_e0( 1 ), // electromagnetic coupling (+1)
_g1( 0.64 ), // heavy-light form factors at q_mSqare
_g2( -0.10 ),
_f1( 0.64 ),
_f2( -0.31 ),
_VtbVtsStar( 0.038 ) // |V_tb V_ts^*|
{
}
std::string EvtLambdaP_BarGamma::getName()
{
return "B_TO_LAMBDA_PBAR_GAMMA";
}
EvtDecayBase* EvtLambdaP_BarGamma::clone()
{
return new EvtLambdaP_BarGamma;
}
void EvtLambdaP_BarGamma::init()
{
// no arguments, daughter lambda p_bar gamma
checkNArg( 0 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::DIRAC );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::PHOTON );
}
// initialize phasespace and calculate the amplitude
void EvtLambdaP_BarGamma::decay( EvtParticle* p )
{
EvtComplex I( 0, 1 );
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtDiracParticle* theLambda = static_cast<EvtDiracParticle*>(
p->getDaug( 0 ) );
EvtVector4R lambdaMomentum = theLambda->getP4Lab();
EvtDiracParticle* theAntiP = static_cast<EvtDiracParticle*>( p->getDaug( 1 ) );
EvtPhotonParticle* thePhoton = static_cast<EvtPhotonParticle*>(
p->getDaug( 2 ) );
EvtVector4R photonMomentum =
thePhoton->getP4Lab(); // get momentum in the same frame
// loop over all possible spin states
for ( int i = 0; i < 2; ++i ) {
EvtDiracSpinor lambdaPol = theLambda->spParent( i );
for ( int j = 0; j < 2; ++j ) {
EvtDiracSpinor antiP_Pol = theAntiP->spParent( j );
for ( int k = 0; k < 2; ++k ) {
EvtVector4C photonPol = thePhoton->epsParentPhoton(
k ); // one of two possible polarization states
EvtGammaMatrix photonGamma; // sigma[mu][nu] * epsilon[mu] * k[nu] (watch lower indices)
for ( int mu = 0; mu < 4; ++mu )
for ( int nu = 0; nu < 4; ++nu )
photonGamma += EvtGammaMatrix::sigmaLower( mu, nu ) *
photonPol.get( mu ) *
photonMomentum.get( nu );
EvtComplex amp = -I * _gLambdab * lambdaPol.adjoint() *
( ( constA() * EvtGammaMatrix::id() +
constB() * EvtGammaMatrix::g5() ) *
photonGamma *
( EvtGenFunctions::slash( lambdaMomentum ) +
EvtGenFunctions::slash( photonMomentum ) +
_mLambdab * EvtGammaMatrix::id() ) /
( ( lambdaMomentum + photonMomentum ) *
( lambdaMomentum + photonMomentum ) -
_mLambdab * _mLambdab ) *
EvtGammaMatrix::g5() * antiP_Pol );
// use of parentheses so I do not have to define EvtDiracSpinor*EvtGammaMatrix, which shouldn't be defined to prevent errors in indexing
vertex( i, j, k, amp );
}
}
}
}
void EvtLambdaP_BarGamma::initProbMax()
{
// setProbMax(1);
setProbMax( 9.0000E-13 ); // found by trial and error
}
// form factors at 0
double EvtLambdaP_BarGamma::f0( double fqm, int n ) const
{
return fqm * pow( 1 - pow( _mLambdab - _mLambda0, 2 ) / ( _mV * _mV ), n );
}
double EvtLambdaP_BarGamma::g0( double gqm, int n ) const
{
return gqm * pow( 1 - pow( _mLambdab - _mLambda0, 2 ) / ( _mA * _mA ), n );
}
double EvtLambdaP_BarGamma::constA() const
{
return _GF / sqrt( 2. ) * _e0 / ( 8 * EvtConst::pi * EvtConst::pi ) * 2 *
_c7Eff * _mb * _VtbVtsStar * ( f0( _f1 ) - f0( _f2 ) );
}
double EvtLambdaP_BarGamma::constB() const
{
return _GF / sqrt( 2. ) * _e0 / ( 8 * EvtConst::pi * EvtConst::pi ) * 2 *
_c7Eff * _mb * _VtbVtsStar *
( g0( _g1 ) - ( _mLambdab - _mLambda0 ) / ( _mLambdab + _mLambda0 ) *
g0( _g2 ) );
}
diff --git a/src/EvtGenModels/EvtLambdacPHH.cpp b/src/EvtGenModels/EvtLambdacPHH.cpp
index 2cc68f4..af51538 100644
--- a/src/EvtGenModels/EvtLambdacPHH.cpp
+++ b/src/EvtGenModels/EvtLambdacPHH.cpp
@@ -1,677 +1,661 @@
-//--------------------------------------------------------------------------
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtLambdacPHH.cpp
-//
-// Description: Decay model for Lambda_c -> K- pi+ p using amplitudes
-// from the Fermilab E791 analysis: arXiv:hep-ex/9912003v1
-//
-// Modification history:
-//
-// Elisabeth Niel (elisabeth.maria.niel@cern.ch) and
-// Patrick Robbe (robbe@lal.in2p3.fr) Jan 2019 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtLambdacPHH.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtdFunction.hh"
#include <algorithm>
#include <cmath>
#include <utility>
EvtLambdacPHH::EvtLambdacPHH() :
_d1( 0 ),
_d2( 1 ),
_d3( 3 ),
_Nplusplus( 0.46 ),
_Nplusminus( 1.0 ),
_Nminusplus( 0.18 ),
_Nminusminus( 0.94 ),
_phiNplusplus( 3.48 ),
_phiNplusminus( 0.00 ),
_phiNminusplus( 0.75 ),
_phiNminusminus( 1.13 ),
_E1( 0.52 ),
_phiE1( -1.01 ),
_E2( 0.20 ),
_phiE2( 2.35 ),
_E3( 0.21 ),
_phiE3( 3.46 ),
_E4( 0.16 ),
_phiE4( 5.29 ),
_F1( 0.17 ),
_phiF1( 4.98 ),
_F2( 0.38 ),
_phiF2( 4.88 ),
_H1( 0.18 ),
_phiH1( 5.93 ),
_H2( 0.20 ),
_phiH2( -0.06 ),
_NRNorm( 1.0 ),
_KstarNorm( 1.0 ),
_DeltaNorm( 1.0 ),
_LambdaNorm( 1.0 ),
_KstarM( 0.890 ),
_KstarW( 0.0498 ),
_KstarR( 3.40 ),
_DeltaM( 1.232 ),
_DeltaW( 0.1120 ),
_DeltaR( 5.22 ),
_LambdaM( 1.520 ),
_LambdaW( 0.0156 ),
_LambdaR( 6.29 ),
_Lambda_cR( 5.07 ),
_zprime(),
_p4_Lambda_c(),
_zpMag( 0.0 ),
_p4_Lambdac_Mag( 0.0 )
{
// Fermilab E791 values from MINUIT fit arXiv:hep-ex/9912003v1
}
std::string EvtLambdacPHH::getName()
{
return "LAMBDAC_PHH";
}
EvtDecayBase* EvtLambdacPHH::clone()
{
return new EvtLambdacPHH;
}
bool compareId( const std::pair<EvtId, int>& left,
const std::pair<EvtId, int>& right )
{
// Compare id numbers to achieve the ordering K-, pi+ and p
bool result( false );
int leftPDGid = EvtPDL::getStdHep( left.first );
int rightPDGid = EvtPDL::getStdHep( right.first );
if ( leftPDGid < rightPDGid ) {
result = true;
}
return result;
}
void EvtLambdacPHH::init()
{
static EvtId KM = EvtPDL::getId( "K-" );
static EvtId PIP = EvtPDL::getId( "pi+" );
static EvtId LAMBDAC = EvtPDL::getId( "Lambda_c+" );
static EvtId LAMBDACB = EvtPDL::getId( "anti-Lambda_c-" );
static EvtId PROTON = EvtPDL::getId( "p+" );
// check that there are 0 or 1 arguments and 3 daughters
checkNArg( 0, 1 );
checkNDaug( 3 );
EvtId parnum = getParentId();
checkSpinParent( EvtSpinType::DIRAC );
checkSpinDaughter( 0, EvtSpinType::DIRAC );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
checkSpinDaughter( 2, EvtSpinType::SCALAR );
std::vector<std::pair<EvtId, int>> daughters;
if ( parnum == LAMBDAC ) {
for ( int i = 0; i < 3; ++i ) {
daughters.push_back( std::make_pair( getDaug( i ), i ) );
}
} else {
for ( int i = 0; i < 3; ++i ) {
daughters.push_back(
std::make_pair( EvtPDL::chargeConj( getDaug( i ) ), i ) );
}
}
// Sort daughters, they will end up in the order KM, PIP and PROTON
std::sort( daughters.begin(), daughters.end(), compareId );
if ( parnum == LAMBDAC || parnum == LAMBDACB ) {
if ( daughters[0].first == KM && daughters[1].first == PIP &&
daughters[2].first == PROTON ) {
_d1 = daughters[0].second;
_d2 = daughters[1].second;
_d3 = daughters[2].second;
}
}
// Find resonance dynamics normalisations
calcNormalisations();
// Print out expected fit fractions
getFitFractions();
}
void EvtLambdacPHH::calcNormalisations()
{
// Generate events uniform in the Lambda_c Dalitz plot and find the
// normalisation integrals of the Breit-Wigner lineshapes
// Lambda_c -> K- pi+ p
int nDaug( 3 );
EvtVector4R p4Daug[3];
double mDaug[3] = {EvtPDL::getMeanMass( EvtPDL::getId( "K-" ) ),
EvtPDL::getMeanMass( EvtPDL::getId( "pi+" ) ),
EvtPDL::getMeanMass( EvtPDL::getId( "p+" ) )};
double norm[3] = {0.0, 0.0, 0.0};
// sample size
int N( 100000 );
for ( int i = 0; i < N; i++ ) {
double mParent = EvtPDL::getMass( EvtPDL::getId( "Lambda_c+" ) );
EvtVector4R p0( mParent, 0.0, 0.0, 0.0 );
// Generate uniform 4 momenta
EvtGenKine::PhaseSpace( nDaug, mDaug, p4Daug, mParent );
EvtResonance2 LambdacpKpi1( p0, p4Daug[0], p4Daug[1], 1.0, 0.0, _KstarW,
_KstarM, 1, true, _KstarR,
_Lambda_cR ); // K*0 -> K- and pi+; L = 1
EvtResonance2 LambdacpKpi2( p0, p4Daug[2], p4Daug[1], 1.0, 0.0, _DeltaW,
_DeltaM, 1, true, _DeltaR,
_Lambda_cR ); // Delta++ -> p and pi+; L = 1
EvtResonance2 LambdacpKpi3(
p0, p4Daug[2], p4Daug[0], 1.0, 0.0, _LambdaW, _LambdaM, 2, true,
_LambdaR, _Lambda_cR ); // Lambda(1520) -> K- and p; L = 2
// Sum amplitude magnitude squared
norm[0] += abs2( LambdacpKpi1.resAmpl() );
norm[1] += abs2( LambdacpKpi2.resAmpl() );
norm[2] += abs2( LambdacpKpi3.resAmpl() );
}
// Set normalisation lineshape multiplication factors
double N0( N * 1.0 );
// Scale NR to get sensible relative fit fractions
_NRNorm = 1.0 / 3.0;
// Set this using a decay file parameter if required
if ( getNArg() > 1 ) {
_NRNorm = getArg( 1 );
}
if ( norm[0] > 0.0 ) {
_KstarNorm = sqrt( N0 / norm[0] );
}
if ( norm[1] > 0.0 ) {
_DeltaNorm = sqrt( N0 / norm[1] );
}
if ( norm[2] > 0.0 ) {
_LambdaNorm = sqrt( N0 / norm[2] );
}
}
void EvtLambdacPHH::getFitFractions()
{
// Generate events uniform in the Lambda_c Dalitz plot and find the
// fit fractions for each resonance
// Lambda_c -> K- pi+ p
int nDaug( 3 );
EvtVector4R p4Daug[3];
double mDaug[3] = {EvtPDL::getMeanMass( EvtPDL::getId( "K-" ) ),
EvtPDL::getMeanMass( EvtPDL::getId( "pi+" ) ),
EvtPDL::getMeanMass( EvtPDL::getId( "p+" ) )};
double FitFracTop[4] = {0.0, 0.0, 0.0, 0.0};
double FitFracDenom = 0.0;
// sample size
int N( 100000 );
for ( int i = 0; i < N; i++ ) {
double mParent = EvtPDL::getMass( EvtPDL::getId( "Lambda_c+" ) );
EvtVector4R p0( mParent, 0.0, 0.0, 0.0 );
// Generate uniform 4 momenta
EvtGenKine::PhaseSpace( nDaug, mDaug, p4Daug, mParent );
EvtResonance2 LambdacpKpi0( p0, p4Daug[0], p4Daug[1], 1.0, 0.0, 0.0, 0.0,
0, true, 0.0, 0.0 ); // Non resonant (NR)
EvtResonance2 LambdacpKpi1( p0, p4Daug[0], p4Daug[1], 1.0, 0.0, _KstarW,
_KstarM, 1, true, _KstarR,
_Lambda_cR ); // K*0 -> K- and pi+; L = 1
EvtResonance2 LambdacpKpi2( p0, p4Daug[2], p4Daug[1], 1.0, 0.0, _DeltaW,
_DeltaM, 1, true, _DeltaR,
_Lambda_cR ); // Delta++ -> p and pi+; L = 1
EvtResonance2 LambdacpKpi3(
p0, p4Daug[2], p4Daug[0], 1.0, 0.0, _LambdaW, _LambdaM, 2, true,
_LambdaR, _Lambda_cR ); // Lambda(1520) -> K- and p; L = 2
std::vector<EvtComplex> ampNonRes =
calcResAmpTerms( EvtLambdacPHH::NonReson, LambdacpKpi0, _NRNorm );
std::vector<EvtComplex> ampKstar =
calcResAmpTerms( EvtLambdacPHH::Kstar, LambdacpKpi1, _KstarNorm );
std::vector<EvtComplex> ampDelta =
calcResAmpTerms( EvtLambdacPHH::Delta, LambdacpKpi2, _DeltaNorm );
std::vector<EvtComplex> ampLambda =
calcResAmpTerms( EvtLambdacPHH::Lambda, LambdacpKpi3, _LambdaNorm );
// Combine resonance amplitudes for a given spin configuration
EvtComplex amp00 = ampNonRes[0] + ampKstar[0] + ampDelta[0] +
ampLambda[0];
EvtComplex amp01 = ampNonRes[1] + ampKstar[1] + ampDelta[1] +
ampLambda[1];
EvtComplex amp10 = ampNonRes[2] + ampKstar[2] + ampDelta[2] +
ampLambda[2];
EvtComplex amp11 = ampNonRes[3] + ampKstar[3] + ampDelta[3] +
ampLambda[3];
// Fit fraction numerator terms
FitFracTop[0] += abs2( ampNonRes[0] ) + abs2( ampNonRes[1] ) +
abs2( ampNonRes[2] ) + abs2( ampNonRes[3] );
FitFracTop[1] += abs2( ampKstar[0] ) + abs2( ampKstar[1] ) +
abs2( ampKstar[2] ) + abs2( ampKstar[3] );
FitFracTop[2] += abs2( ampDelta[0] ) + abs2( ampDelta[1] ) +
abs2( ampDelta[2] ) + abs2( ampDelta[3] );
FitFracTop[3] += abs2( ampLambda[0] ) + abs2( ampLambda[1] ) +
abs2( ampLambda[2] ) + abs2( ampLambda[3] );
// Fit fraction common denominator
FitFracDenom += abs2( amp00 ) + abs2( amp01 ) + abs2( amp10 ) +
abs2( amp11 );
}
EvtGenReport( EVTGEN_INFO, "EvtLambdacPHH" )
<< "FitFracs: NR = " << FitFracTop[0] / FitFracDenom
<< ", K* = " << FitFracTop[1] / FitFracDenom
<< ", Del = " << FitFracTop[2] / FitFracDenom
<< ", Lam = " << FitFracTop[3] / FitFracDenom << std::endl;
}
void EvtLambdacPHH::initProbMax()
{
// Default value
setProbMax( 10.0 );
// Set probability using decay file parameter
if ( getNArg() > 0 ) {
setProbMax( getArg( 0 ) );
}
}
void EvtLambdacPHH::decay( EvtParticle* p )
{
// Daughter order: 1 = K-, 2 = pi+, 3 = p
p->initializePhaseSpace( getNDaug(), getDaugs() );
// 4-momenta in the rest frame of the Lambda_c
EvtVector4R p4_p( p->mass(), 0.0, 0.0, 0.0 );
EvtVector4R moms1 = p->getDaug( _d1 )->getP4();
EvtVector4R moms2 = p->getDaug( _d2 )->getP4();
EvtVector4R moms3 = p->getDaug( _d3 )->getP4();
// Lambda_c decay mode resonances. Spin L values from strong decay parity conservation:
// parity(resonance) = parity(daug1)*parity(daug2)*(-1)^L
EvtResonance2 LambdacpKpi0( p4_p, moms1, moms2, 1.0, 0.0, 0.0, 0.0, 0, true,
0.0, 0.0 ); // Non-resonant L = 0
EvtResonance2 LambdacpKpi1( p4_p, moms1, moms2, 1.0, 0.0, _KstarW, _KstarM,
1, true, _KstarR,
_Lambda_cR ); // K*0 -> K- and pi+; L = 1
EvtResonance2 LambdacpKpi2( p4_p, moms3, moms2, 1.0, 0.0, _DeltaW, _DeltaM,
1, true, _DeltaR,
_Lambda_cR ); // Delta++ -> p and pi+; L = 1
EvtResonance2 LambdacpKpi3( p4_p, moms3, moms1, 1.0, 0.0, _LambdaW,
_LambdaM, 2, true, _LambdaR,
_Lambda_cR ); // Lambda(1520) -> K- and p; L = 2
// Define the "beam" direction, used in Fig 1 of hep-ex/9912003v1
EvtVector4R beam( 0.0, 0.0, 0.0, 1.0 );
EvtParticle* parent = p->getParent();
if ( parent ) {
// If non prompt, the beam is along the direction of the mother
EvtVector4R p4_Lambda_c_mother = parent->getP4Lab();
p4_Lambda_c_mother.applyBoostTo( p->getP4Lab() );
beam = p4_Lambda_c_mother;
}
_p4_Lambda_c = p->getP4Lab();
_p4_Lambdac_Mag = _p4_Lambda_c.d3mag();
// Define the unit vector denoting the "z" axis in Fig 1
_zprime = -1.0 * _p4_Lambda_c.cross( beam );
_zprime.applyBoostTo( _p4_Lambda_c, true ); // From lab frame to Lambda_c
_zpMag = _zprime.d3mag();
// Check if zprime magnitude is non-zero
if ( _zpMag > 0.0 ) {
// Normalise
_zprime /= _zpMag;
} else {
// Set as the z direction
_zprime.set( 0.0, 0.0, 0.0, 1.0 );
}
// Update normalised |z'|
_zpMag = 1.0;
// Get the amplitudes: non-resonant, K*, Delta and Lambda
std::vector<EvtComplex> ampNonRes = calcResAmpTerms( EvtLambdacPHH::NonReson,
LambdacpKpi0, _NRNorm );
std::vector<EvtComplex> ampKstar =
calcResAmpTerms( EvtLambdacPHH::Kstar, LambdacpKpi1, _KstarNorm );
std::vector<EvtComplex> ampDelta =
calcResAmpTerms( EvtLambdacPHH::Delta, LambdacpKpi2, _DeltaNorm );
std::vector<EvtComplex> ampLambda =
calcResAmpTerms( EvtLambdacPHH::Lambda, LambdacpKpi3, _LambdaNorm );
// Combine resonance amplitudes for a given spin configuration
EvtComplex amp00 = ampNonRes[0] + ampKstar[0] + ampDelta[0] + ampLambda[0];
EvtComplex amp01 = ampNonRes[1] + ampKstar[1] + ampDelta[1] + ampLambda[1];
EvtComplex amp10 = ampNonRes[2] + ampKstar[2] + ampDelta[2] + ampLambda[2];
EvtComplex amp11 = ampNonRes[3] + ampKstar[3] + ampDelta[3] + ampLambda[3];
// Set the amplitude components
vertex( 0, 0, amp00 );
vertex( 0, 1, amp01 );
vertex( 1, 0, amp10 );
vertex( 1, 1, amp11 );
}
std::vector<EvtComplex> EvtLambdacPHH::calcResAmpTerms(
EvtLambdacPHH::LcResLabel resIndex, const EvtResonance2& res, double norm ) const
{
// Initialise the resonance and daughter theta and phi angles
double thetaRes( 0.0 ), phiRes( 0.0 ), phiPrimeDaug( 0.0 ),
thetaPrimeDaug( 0.0 );
// Initialise beta rotation angle
double beta_res( 0.0 );
EvtVector4R res_atproton( 0.0, 0.0, 0.0, 0.0 ),
Lc_atproton( 0.0, 0.0, 0.0, 0.0 );
// Initialise Amplitude terms
EvtComplex term1( 0.0 ), term2( 0.0 ), term3( 0.0 ), term4( 0.0 );
// Normalised dynamical amplitude
EvtComplex resAmp( norm, 0.0 );
// Angles are not needed for the non-resonant amplitude
if ( resIndex != EvtLambdacPHH::NonReson ) {
resAmp = res.resAmpl() * norm;
// Resonance and daughter 4 momenta
EvtVector4R p4d1 = res.p4_d1();
EvtVector4R p4d2 = res.p4_d2();
EvtVector4R p4Res = p4d1 + p4d2;
EvtVector4R p4_d3 = res.p4_p() - p4Res;
double p4ResMag = p4Res.d3mag();
// 4-momenta for theta' and phi' angles
EvtVector4R yRes = -1.0 * p4_d3.cross( _zprime );
EvtVector4R res_d1 = p4d1;
res_d1.applyBoostTo( p4Res, true );
double res_d1_Mag = res_d1.d3mag();
EvtVector4R res_d3 = -1.0 * p4_d3;
double res_d3_Mag = res_d3.d3mag();
thetaPrimeDaug = getACos( res_d1.dot( res_d3 ), res_d1_Mag * res_d3_Mag );
res_atproton = p4Res;
res_atproton.applyBoostTo( p4d1, true );
double res_atproton_mag = res_atproton.d3mag();
Lc_atproton = res.p4_p();
Lc_atproton.applyBoostTo( p4d1, true );
double Lc_atproton_mag = Lc_atproton.d3mag();
// Check that the momentum of the Lambda_c is not zero, as well as a valid zprime vector
if ( _p4_Lambdac_Mag > 0.0 && _zpMag > 0.0 ) {
thetaRes = getACos( -1.0 * p4Res.dot( _zprime ), p4ResMag );
phiRes = getASin( -1.0 * p4Res.dot( _p4_Lambda_c ),
sin( thetaRes ) * _p4_Lambdac_Mag * p4ResMag );
phiPrimeDaug = getASin( res_d1.dot( yRes ), sin( thetaPrimeDaug ) *
res_d1_Mag *
yRes.d3mag() );
} else {
// Use randomised angles with flat probability distributions
thetaRes = EvtRandom::Flat( 0.0, EvtConst::pi );
phiRes = EvtRandom::Flat( 0.0, EvtConst::twoPi );
phiPrimeDaug = EvtRandom::Flat( 0.0, EvtConst::twoPi );
}
if ( res_atproton_mag > 0.0 && Lc_atproton_mag > 0.0 ) {
// Extra rotation to go to the proton helicity frame for the two resonances Delta++ and Lambda.
// No rotation is needed for K*. Use the momenta boosted to the proton restframe
beta_res = getACos( res_atproton.dot( Lc_atproton ),
res_atproton_mag * Lc_atproton_mag );
} else {
beta_res = EvtRandom::Flat( 0.0, EvtConst::pi );
}
}
// Find the spin-dependent amplitudes
if ( resIndex == EvtLambdacPHH::NonReson ||
resIndex == EvtLambdacPHH::Kstar ) {
term1 = resAmp * DecayAmp3( resIndex, 1, 1, thetaRes, phiRes,
thetaPrimeDaug, phiPrimeDaug );
term2 = resAmp * DecayAmp3( resIndex, 1, -1, thetaRes, phiRes,
thetaPrimeDaug, phiPrimeDaug );
term3 = resAmp * DecayAmp3( resIndex, -1, 1, thetaRes, phiRes,
thetaPrimeDaug, phiPrimeDaug );
term4 = resAmp * DecayAmp3( resIndex, -1, -1, thetaRes, phiRes,
thetaPrimeDaug, phiPrimeDaug );
} else {
double rotate_00 = EvtdFunction::d( 1, 1, 1, beta_res );
double rotate_10 = EvtdFunction::d( 1, -1, 1, beta_res );
double rotate_11 = EvtdFunction::d( 1, -1, -1, beta_res );
double rotate_01 = EvtdFunction::d( 1, 1, -1, beta_res );
// Delta and Lambda need to be rotated before summing over the proton helicity axis
EvtComplex termA = resAmp * DecayAmp3( resIndex, 1, 1, thetaRes, phiRes,
thetaPrimeDaug, phiPrimeDaug );
EvtComplex termB = resAmp * DecayAmp3( resIndex, 1, -1, thetaRes, phiRes,
thetaPrimeDaug, phiPrimeDaug );
EvtComplex termC = resAmp * DecayAmp3( resIndex, -1, 1, thetaRes, phiRes,
thetaPrimeDaug, phiPrimeDaug );
EvtComplex termD = resAmp * DecayAmp3( resIndex, -1, -1, thetaRes, phiRes,
thetaPrimeDaug, phiPrimeDaug );
term1 = rotate_00 * termA + rotate_10 * termB;
term2 = rotate_01 * termA + rotate_11 * termB;
term3 = rotate_00 * termC + rotate_10 * termD;
term4 = rotate_01 * termC + rotate_11 * termD;
}
// Return the spin amplitudes as a vector
std::vector<EvtComplex> ampVect;
ampVect.push_back( term1 );
ampVect.push_back( term2 );
ampVect.push_back( term3 );
ampVect.push_back( term4 );
return ampVect;
}
EvtComplex EvtLambdacPHH::DecayAmp3( EvtLambdacPHH::LcResLabel resonance, int m,
int mprime, double theta_res, double phi_res,
double theta_prime_daughter_res,
double phi_prime_daughter_res ) const
{
// Find the amplitudes given in Tables 3 to 6 in the paper.
// Wigner d-functions use 2*spin, e.g. d(1/2, 1/2, 1/2) -> d(1, 1, 1)
EvtComplex term1( 0.0, 0.0 ), term2( 0.0, 0.0 );
if ( resonance == EvtLambdacPHH::NonReson ) {
// Non-resonant: table 6
if ( m == 1 && mprime == 1 ) {
term1 = _Nplusplus *
EvtComplex( cos( _phiNplusplus ), sin( _phiNplusplus ) );
} else if ( m == 1 && mprime == -1 ) {
term1 = _Nplusminus *
EvtComplex( cos( _phiNplusminus ), sin( _phiNplusminus ) );
} else if ( m == -1 && mprime == 1 ) {
term1 = _Nminusplus *
EvtComplex( cos( _phiNminusplus ), sin( _phiNminusplus ) );
} else if ( m == -1 && mprime == -1 ) {
term1 = _Nminusminus * EvtComplex( cos( _phiNminusminus ),
sin( _phiNminusminus ) );
}
} else if ( resonance == EvtLambdacPHH::Kstar ) {
// K*0(1-) resonance: table 3
if ( m == 1 && mprime == 1 ) {
term1 = fampl3( _E1, _phiE1, 1, 1, 1, theta_res, 2, 2, 0,
theta_prime_daughter_res, phi_prime_daughter_res );
term2 = fampl3( _E2, _phiE2, 1, 1, -1, theta_res, 2, 0, 0,
theta_prime_daughter_res, phi_res );
} else if ( m == 1 && mprime == -1 ) {
term1 = fampl3( _E3, _phiE3, 1, 1, 1, theta_res, 2, 0, 0,
theta_prime_daughter_res, 0.0 );
term2 = fampl3( _E4, _phiE4, 1, 1, -1, theta_res, 2, -2, 0,
theta_prime_daughter_res,
phi_res - phi_prime_daughter_res );
} else if ( m == -1 && mprime == 1 ) {
term1 = fampl3( _E1, _phiE1, 1, -1, 1, theta_res, 2, 2, 0,
theta_prime_daughter_res,
-( phi_res - phi_prime_daughter_res ) );
term2 = fampl3( _E2, _phiE2, 1, -1, -1, theta_res, 2, 0, 0,
theta_prime_daughter_res, 0.0 );
} else if ( m == -1 && mprime == -1 ) {
term1 = fampl3( _E3, _phiE3, 1, -1, 1, theta_res, 2, 0, 0,
theta_prime_daughter_res, -phi_res );
term2 = fampl3( _E4, _phiE4, 1, -1, -1, theta_res, 2, -2, 0,
theta_prime_daughter_res, -phi_prime_daughter_res );
}
} else if ( resonance == EvtLambdacPHH::Delta ) {
// Delta++(3/2+) resonance: table 4
if ( m == 1 && mprime == 1 ) {
term1 = fampl3( _F1, _phiF1, 1, 1, 1, theta_res, 3, 1, 1,
theta_prime_daughter_res, 0.0 );
term2 = fampl3( _F2, _phiF2, 1, 1, -1, theta_res, 3, -1, 1,
theta_prime_daughter_res,
phi_res - phi_prime_daughter_res );
} else if ( m == 1 && mprime == -1 ) {
term1 = fampl3( _F1, _phiF1, 1, 1, 1, theta_res, 3, 1, -1,
theta_prime_daughter_res, phi_prime_daughter_res );
term2 = fampl3( _F2, _phiF2, 1, 1, -1, theta_res, 3, -1, -1,
theta_prime_daughter_res, phi_res );
} else if ( m == -1 && mprime == 1 ) {
term1 = fampl3( _F1, _phiF1, 1, -1, 1, theta_res, 3, 1, 1,
theta_prime_daughter_res, -phi_res );
term2 = fampl3( _F2, _phiF2, 1, -1, -1, theta_res, 3, -1, 1,
theta_prime_daughter_res, -phi_prime_daughter_res );
} else if ( m == -1 && mprime == -1 ) {
term1 = fampl3( _F1, _phiF1, 1, -1, 1, theta_res, 3, 1, -1,
theta_prime_daughter_res,
-( phi_res - phi_prime_daughter_res ) );
term2 = fampl3( _F2, _phiF2, 1, -1, -1, theta_res, 3, -1, -1,
theta_prime_daughter_res, 0.0 );
}
} else if ( resonance == EvtLambdacPHH::Lambda ) {
// Lambda(1520)(3/2-) resonance: table 5
if ( m == 1 && mprime == 1 ) {
term1 = fampl3( _H1, _phiH1, 1, 1, 1, theta_res, 3, 1, 1,
theta_prime_daughter_res, 0.0 );
term2 = fampl3( _H2, _phiH2, 1, 1, -1, theta_res, 3, -1, 1,
theta_prime_daughter_res,
phi_res - phi_prime_daughter_res );
} else if ( m == 1 && mprime == -1 ) {
term1 = -1.0 * fampl3( _H1, _phiH1, 1, 1, 1, theta_res, 3, 1, -1,
theta_prime_daughter_res,
phi_prime_daughter_res );
term2 = -1.0 * fampl3( _H2, _phiH2, 1, 1, -1, theta_res, 3, -1, -1,
theta_prime_daughter_res, phi_res );
} else if ( m == -1 && mprime == 1 ) {
term1 = fampl3( _H1, _phiH1, 1, -1, 1, theta_res, 3, 1, 1,
theta_prime_daughter_res, -phi_res );
term2 = fampl3( _H2, _phiH2, 1, -1, -1, theta_res, 3, -1, 1,
theta_prime_daughter_res, -phi_prime_daughter_res );
} else if ( m == -1 && mprime == -1 ) {
term1 = -1.0 * fampl3( _H1, _phiH1, 1, -1, 1, theta_res, 3, 1, -1,
theta_prime_daughter_res,
-( phi_res - phi_prime_daughter_res ) );
term2 = -1.0 * fampl3( _H2, _phiH2, 1, -1, -1, theta_res, 3, -1, -1,
theta_prime_daughter_res, 0.0 );
}
}
EvtComplex Amplitude = term1 + term2;
return Amplitude;
}
EvtComplex EvtLambdacPHH::fampl3( double amplitude_res, double phi_res,
int spinMother, int m_spinMother,
int m_prime_spinMother, double theta_res,
float spin_res, float m_spin_res,
float m_prime_spin_res,
double theta_daughter_res,
double phi_prime_daughter_res ) const
{
double dTerm1 = EvtdFunction::d( spinMother, m_spinMother,
m_prime_spinMother, theta_res );
double dTerm2 = EvtdFunction::d( spin_res, m_spin_res, m_prime_spin_res,
theta_daughter_res );
EvtComplex amp_phase1 = EvtComplex( cos( phi_res ), sin( phi_res ) );
EvtComplex amp_phase2 = EvtComplex( cos( phi_prime_daughter_res ),
sin( phi_prime_daughter_res ) );
EvtComplex partial_amp = amplitude_res * amp_phase1 * dTerm1 * amp_phase2 *
dTerm2;
return partial_amp;
}
double EvtLambdacPHH::getACos( double num, double denom ) const
{
// Find inverse cosine, checking ratio is within +- 1
double angle( 0.0 ), ratio( 0.0 );
if ( fabs( denom ) > 0.0 ) {
ratio = num / denom;
}
if ( fabs( ratio ) <= 1.0 ) {
angle = acos( ratio );
}
return angle;
}
double EvtLambdacPHH::getASin( double num, double denom ) const
{
// Find inverse sine, checking ratio is within +- 1
double angle( 0.0 ), ratio( 0.0 );
if ( fabs( denom ) > 0.0 ) {
ratio = num / denom;
}
if ( fabs( ratio ) <= 1.0 ) {
angle = asin( ratio );
}
return angle;
}
diff --git a/src/EvtGenModels/EvtLb2Baryonlnu.cpp b/src/EvtGenModels/EvtLb2Baryonlnu.cpp
index 7de9289..868d113 100644
--- a/src/EvtGenModels/EvtLb2Baryonlnu.cpp
+++ b/src/EvtGenModels/EvtLb2Baryonlnu.cpp
@@ -1,228 +1,205 @@
-
-
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtLb2Baryonlnu.cc
-//
-// Description: Routine to implement Lb->N*+ l nu semileptonic decays using form factor predictions based on the quark model. The form factors are from W. Roberts, M. Pervin, S. Chapstick, (2011). arXiv:nucl-th/0503030v1. The model can be used for decays to all N*+ states with J^{P} = 1/2^{+}, 1/2^{-}, 3/2^{+}, 3/2^{-} and, in addition, decays to p, Lc+, Lc(2593)+, Lc(2625)+
-//
-//
-// Modification history:
-//
-// William Sutcliffe 21/11/2013 Module created
-//
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtLb2Baryonlnu.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtLb2BaryonlnuFF.hh"
#include <stdlib.h>
#include <string>
using namespace std;
#ifdef D0
#undef D0
#endif
EvtLb2Baryonlnu::EvtLb2Baryonlnu() : ffmodel( 0 ), calcamp( 0 )
{
}
EvtLb2Baryonlnu::~EvtLb2Baryonlnu()
{
delete ffmodel;
ffmodel = 0;
delete calcamp;
calcamp = 0;
}
std::string EvtLb2Baryonlnu::getName()
{
return "Lb2Baryonlnu";
}
EvtDecayBase* EvtLb2Baryonlnu::clone()
{
return new EvtLb2Baryonlnu;
}
void EvtLb2Baryonlnu::decay( EvtParticle* p )
{
//This is a kludge to avoid warnings because the K_2* mass becomes to large.
static EvtIdSet regenerateMasses( "K_2*+", "K_2*-", "K_2*0", "anti-K_2*0",
"K_1+", "K_1-", "K_10", "anti-K_10",
"D'_1+", "D'_1-", "D'_10", "anti-D'_10" );
if ( regenerateMasses.contains( getDaug( 0 ) ) ) {
p->resetFirstOrNot();
}
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtComplex r00( getArg( 0 ), 0.0 );
EvtComplex r01( getArg( 1 ), 0.0 );
EvtComplex r10( getArg( 2 ), 0.0 );
EvtComplex r11( getArg( 3 ), 0.0 );
calcamp->CalcAmp( p, _amp2, ffmodel, r00, r01, r10, r11 );
}
void EvtLb2Baryonlnu::initProbMax()
{
static EvtId LAMB = EvtPDL::getId( "Lambda_b0" );
static EvtId LAMBB = EvtPDL::getId( "anti-Lambda_b0" );
static EvtId PRO = EvtPDL::getId( "p+" );
static EvtId PROB = EvtPDL::getId( "anti-p-" );
static EvtId N1440 = EvtPDL::getId( "N(1440)+" );
static EvtId N1440B = EvtPDL::getId( "anti-N(1440)-" );
static EvtId N1535 = EvtPDL::getId( "N(1535)+" );
static EvtId N1535B = EvtPDL::getId( "anti-N(1535)-" );
static EvtId N1520 = EvtPDL::getId( "N(1520)+" );
static EvtId N1520B = EvtPDL::getId( "anti-N(1520)-" );
static EvtId N1720 = EvtPDL::getId( "N(1720)+" );
static EvtId N1720B = EvtPDL::getId( "anti-N(1720)-" );
static EvtId N1650 = EvtPDL::getId( "N(1650)+" );
static EvtId N1650B = EvtPDL::getId( "anti-N(1650)-" );
static EvtId N1700 = EvtPDL::getId( "N(1700)+" );
static EvtId N1700B = EvtPDL::getId( "anti-N(1700)-" );
static EvtId N1710 = EvtPDL::getId( "N(1710)+" );
static EvtId N1710B = EvtPDL::getId( "anti-N(1710)-" );
static EvtId N1875 = EvtPDL::getId( "N(1875)+" );
static EvtId N1875B = EvtPDL::getId( "anti-N(1875)-" );
static EvtId N1900 = EvtPDL::getId( "N(1900)+" );
static EvtId N1900B = EvtPDL::getId( "anti-N(1900)-" );
static EvtId LAMCP = EvtPDL::getId( "Lambda_c+" );
static EvtId LAMCM = EvtPDL::getId( "anti-Lambda_c-" );
static EvtId LAMC1P = EvtPDL::getId( "Lambda_c(2593)+" );
static EvtId LAMC1M = EvtPDL::getId( "anti-Lambda_c(2593)-" );
static EvtId LAMC2P = EvtPDL::getId( "Lambda_c(2625)+" );
static EvtId LAMC2M = EvtPDL::getId( "anti-Lambda_c(2625)-" );
EvtId parnum, barnum;
parnum = getParentId();
barnum = getDaug( 0 );
if ( ( parnum == LAMB && barnum == PRO ) ||
( parnum == LAMBB && barnum == PROB ) ||
( parnum == LAMB && barnum == N1440 ) ||
( parnum == LAMBB && barnum == N1440B ) ||
( parnum == LAMB && barnum == N1520 ) ||
( parnum == LAMBB && barnum == N1520B ) ||
( parnum == LAMB && barnum == N1535 ) ||
( parnum == LAMBB && barnum == N1535B ) ||
( parnum == LAMB && barnum == N1720 ) ||
( parnum == LAMBB && barnum == N1720B ) ||
( parnum == LAMB && barnum == N1650 ) ||
( parnum == LAMBB && barnum == N1650B ) ||
( parnum == LAMB && barnum == N1700 ) ||
( parnum == LAMBB && barnum == N1700B ) ||
( parnum == LAMB && barnum == N1710 ) ||
( parnum == LAMBB && barnum == N1710B ) ||
( parnum == LAMB && barnum == N1875 ) ||
( parnum == LAMBB && barnum == N1875B ) ||
( parnum == LAMB && barnum == N1900 ) ||
( parnum == LAMBB && barnum == N1900B ) ||
( parnum == LAMB && barnum == LAMCP ) ||
( parnum == LAMBB && barnum == LAMCM ) ||
( parnum == LAMB && barnum == LAMC1P ) ||
( parnum == LAMBB && barnum == LAMC1M ) ||
( parnum == LAMB && barnum == LAMC2P ) ||
( parnum == LAMBB && barnum == LAMC2M ) ) {
setProbMax( 22000.0 );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Decay does not have acceptable final state baryon for this model setting ProbMax = 0 "
<< endl;
setProbMax( 0.0 );
}
}
void EvtLb2Baryonlnu::init()
{
if ( getNArg() != 4 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtLb2Baryonlnu generator expected "
<< " 4 arguments but found:" << getNArg() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( getNDaug() != 3 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Wrong number of daughters in EvtLb2plnu.cc "
<< " 3 daughters expected but found: " << getNDaug() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
//We expect the parent to be a dirac particle
//and the daughters to be X lepton neutrino
EvtSpinType::spintype parenttype = EvtPDL::getSpinType( getParentId() );
EvtSpinType::spintype baryontype = EvtPDL::getSpinType( getDaug( 0 ) );
EvtSpinType::spintype leptontype = EvtPDL::getSpinType( getDaug( 1 ) );
EvtSpinType::spintype neutrinotype = EvtPDL::getSpinType( getDaug( 2 ) );
if ( parenttype != EvtSpinType::DIRAC ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtLb2Baryonlnu generator expected "
<< " a DIRAC parent, found:" << EvtPDL::name( getParentId() )
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( leptontype != EvtSpinType::DIRAC ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtLb2Baryonlnu generator expected "
<< " a DIRAC 2nd daughter, found:" << EvtPDL::name( getDaug( 1 ) )
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( neutrinotype != EvtSpinType::NEUTRINO ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtLb2Baryonlnu generator expected "
<< " a NEUTRINO 3rd daughter, found:" << EvtPDL::name( getDaug( 2 ) )
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
//set ffmodel
ffmodel = new EvtLb2BaryonlnuFF;
if ( baryontype == EvtSpinType::DIRAC ||
baryontype == EvtSpinType::RARITASCHWINGER ) {
calcamp = new EvtSLBaryonAmp;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Wrong baryon spin type in EvtLb2Baryonlnu.cc "
<< "Expected spin type " << EvtSpinType::DIRAC
<< ", found spin type " << baryontype << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
diff --git a/src/EvtGenModels/EvtLb2BaryonlnuFF.cpp b/src/EvtGenModels/EvtLb2BaryonlnuFF.cpp
index 1bb1c1c..70be3a3 100644
--- a/src/EvtGenModels/EvtLb2BaryonlnuFF.cpp
+++ b/src/EvtGenModels/EvtLb2BaryonlnuFF.cpp
@@ -1,433 +1,413 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtLb2BaryonlnuFF.cc
-//
-// Description: Module for computation of Lb->N*+ and Lb->Lc*+ form factors. Uses predictions based from W. Roberts, M. Pervin, S. Chapstick, (2011). arXiv:nucl-th/0503030v1
-//
-// Modification history:
-//
-// William Sutcliffe November 21, 2013 Module created
-//
-//
-//--------------------------------------------------------------------------
#include "EvtGenModels/EvtLb2BaryonlnuFF.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <math.h>
#include <stdlib.h>
#include <string>
using std::endl;
void EvtLb2BaryonlnuFF::getdiracff( EvtId parent, EvtId daught, double q2,
double /* mass */, double* f1, double* f2,
double* f3, double* g1, double* g2,
double* g3 )
{
// Define Event IDs for Lb and p, N+ and Lc+ states
static EvtId LAMB = EvtPDL::getId( "Lambda_b0" );
static EvtId LAMBB = EvtPDL::getId( "anti-Lambda_b0" );
static EvtId PRO = EvtPDL::getId( "p+" );
static EvtId PROB = EvtPDL::getId( "anti-p-" );
static EvtId N1440 = EvtPDL::getId( "N(1440)+" );
static EvtId N1440B = EvtPDL::getId( "anti-N(1440)-" );
static EvtId N1535 = EvtPDL::getId( "N(1535)+" );
static EvtId N1535B = EvtPDL::getId( "anti-N(1535)-" );
static EvtId N1650 = EvtPDL::getId( "N(1650)+" );
static EvtId N1650B = EvtPDL::getId( "anti-N(1650)-" );
static EvtId N1710 = EvtPDL::getId( "N(1710)+" );
static EvtId N1710B = EvtPDL::getId( "anti-N(1710)-" );
static EvtId LAMCP = EvtPDL::getId( "Lambda_c+" );
static EvtId LAMCM = EvtPDL::getId( "anti-Lambda_c-" );
static EvtId LAMC1P = EvtPDL::getId( "Lambda_c(2593)+" );
static EvtId LAMC1M = EvtPDL::getId( "anti-Lambda_c(2593)-" );
double F1, F2, F3, G1, G2, G3;
if ( ( parent == LAMB && daught == PRO ) ||
( parent == LAMBB && daught == PROB ) ||
( parent == LAMB && daught == LAMCP ) ||
( parent == LAMBB && daught == LAMCM ) ) {
// Parameters needed in the calculation;
double mQ = 5.28;
double aL = 0.59;
double md = 0.40;
double MLamB = EvtPDL::getMass( parent );
double MLamq = EvtPDL::getMass( daught );
double mq = md;
double aLp = 0.48;
//set mq and aLp based on whether Lb->Lc* or Lb->N*
if ( ( parent == LAMB && daught == LAMCP ) ||
( parent == LAMBB && daught == LAMCM ) ) {
mq = 1.89;
aLp = 0.55;
}
double aL2 = aL * aL;
double aLp2 = aLp * aLp;
double aLLp2 = 0.5 * ( aL2 + aLp2 );
// relativistic correction factor
double k2 = 1.0;
double rho2 = 3. * md * md / ( 2. * k2 * aLLp2 );
// w = scalar product of the 4 velocities of the Lb and Lc.
double w = 0.5 * ( MLamB * MLamB + MLamq * MLamq - q2 ) / MLamB / MLamq;
double I = pow( aL * aLp / aLLp2, 1.5 ) * exp( -rho2 * ( w * w - 1. ) );
// Calculate the form factors
F1 = I * ( 1.0 + ( md / aLLp2 ) * ( ( aLp2 / mq ) + ( aL2 / mQ ) ) );
F2 = -I * ( ( md / mq ) * ( aLp2 / aLLp2 ) -
aL2 * aLp2 / ( 4. * aLLp2 * mq * mQ ) );
F3 = -I * md * aL2 / ( mQ * aLLp2 );
G1 = I * ( 1.0 - ( aL2 * aLp2 ) / ( 12. * aLLp2 * mq * mQ ) );
G2 = -I * ( md * aLp2 / ( mq * aLLp2 ) +
( aL2 * aLp2 ) / ( 12. * aLLp2 * mq * mQ ) *
( 1. + 12. * md * md / aLLp2 ) );
G3 = I * ( md * aL2 / ( mQ * aLLp2 ) +
md * md * aL2 * aLp2 / ( mq * mQ * aLLp2 * aLLp2 ) );
// Set form factors to be passed to the amplitude calc.
*f1 = F1;
*f2 = F2;
*f3 = F3;
*g1 = G1;
*g2 = G2;
*g3 = G3;
} else if ( ( parent == LAMB && daught == N1440 ) ||
( parent == LAMBB && daught == N1440B ) ||
( parent == LAMB && daught == N1710 ) ||
( parent == LAMBB && daught == N1710B ) ) {
// Parameters needed in the calculation;
double mQ = 5.28;
double md = 0.40;
double mq = md;
double MLamB = EvtPDL::getMass( parent );
double MLamq = EvtPDL::getMass( daught );
double aL = 0.59;
double aLp = 0.48;
double aL2 = aL * aL;
double aLp2 = aLp * aLp;
double aLLp2 = 0.5 * ( aL2 + aLp2 );
// relativistic correction factor
double k2 = 1.0;
double rho2 = 3. * md * md / ( 2. * k2 * aLLp2 );
// w = scalar product of the 4 velocities of the Lb and Lc.
double w = 0.5 * ( MLamB * MLamB + MLamq * MLamq - q2 ) / MLamB / MLamq;
double I = sqrt( 1.5 ) * pow( aL * aLp / aLLp2, 1.5 ) *
exp( -rho2 * ( w * w - 1. ) );
// Calculate the form factors
F1 = ( I / ( 2. * aLLp2 ) ) *
( ( aL2 - aLp2 ) - ( md / ( 3. * aLLp2 ) ) *
( ( aLp2 / mq ) * ( 7. * aL2 - 3. * aLp2 ) +
( aL2 / mQ ) * ( 7. * aLp2 - 3. * aL2 ) ) );
F2 = -I * ( aLp2 / ( 6. * mq * aLLp2 * aLLp2 ) ) *
( 7. * aL2 - 3. * aLp2 ) * ( md - ( aL2 / ( 4. * mQ ) ) );
F3 = I * ( aL2 * md / ( 6. * mQ * aLLp2 * aLLp2 ) ) *
( 7. * aLp2 - 3. * aL2 );
G1 = I * ( ( aL2 - aLp2 ) / ( 2 * aLLp2 ) -
( aL2 * aLp2 * ( 7. * aL2 - 3. * aLp2 ) ) /
( 72. * aLLp2 * aLLp2 * mq * mQ ) );
G2 = -I * ( aLp2 / ( 6. * mq * aLLp2 * aLLp2 ) ) *
( ( 7. * aL2 - 3. * aLp2 ) * ( md + ( aL2 / ( 6. * mQ ) ) ) +
( 7. * md * md * aL2 * ( aL2 - aLp2 ) / ( mQ * aLLp2 ) ) );
G3 = -I * ( aL2 * md / ( 6. * mQ * aLLp2 * aLLp2 ) ) *
( ( 7. * aLp2 - 3. * aL2 ) -
( 7 * md * aLp2 * ( aL2 - aLp2 ) / ( mq * aLLp2 ) ) );
// Set form factors to be passed to the amplitude calc.
*f1 = F1;
*f2 = F2;
*f3 = F3;
*g1 = G1;
*g2 = G2;
*g3 = G3;
} else if ( ( parent == LAMB && daught == N1535 ) ||
( parent == LAMBB && daught == N1535B ) ||
( parent == LAMB && daught == N1650 ) ||
( parent == LAMBB && daught == N1650B ) ||
( parent == LAMB && daught == LAMC1P ) ||
( parent == LAMBB && daught == LAMC1M ) ) {
double mQ = 5.28;
double md = 0.40;
double aL = 0.59;
double MLamB = EvtPDL::getMass( parent );
double MLamq = EvtPDL::getMass( daught );
double mq = md;
double aLp = 0.37;
//set mq and aLp based on whether Lb->Lc* or Lb->N*
if ( ( parent == LAMB && daught == LAMC1P ) ||
( parent == LAMBB && daught == LAMC1M ) ) {
mq = 1.89;
aLp = 0.47;
}
double aL2 = aL * aL;
double aLp2 = aLp * aLp;
double aLLp2 = 0.5 * ( aL2 + aLp2 );
// relativistic correction factor
double k2 = 1.0;
double rho2 = 3. * md * md / ( 2. * k2 * aLLp2 );
// w = scalar product of the 4 velocities of the Lb and Lc.
double w = 0.5 * ( MLamB * MLamB + MLamq * MLamq - q2 ) / MLamB / MLamq;
double I = pow( aL * aLp / aLLp2, 2.5 ) * exp( -rho2 * ( w * w - 1. ) );
// Calculate the form factors
F1 = I * aL / 6.0 * ( 3.0 / mq - 1.0 / mQ );
F2 = -I * ( 2.0 * md / aL - aL / ( 2.0 * mq ) +
2. * md * md * aL / ( mQ * aLLp2 ) -
( md * aL / ( 6. * mq * mQ * aLLp2 ) ) *
( 3. * aL2 - 2. * aLp2 ) );
F3 = I * 2. * md * md * aL / ( mQ * aLLp2 );
G1 = I * ( 2.0 * md / aL - aL / ( 6. * mQ ) +
( md * aL / ( 6. * mq * mQ * aLLp2 ) ) *
( 3. * aL2 - 2. * aLp2 ) );
G2 = I * ( -2. * md / aL + aL / ( 2. * mq ) + aL / ( 3. * mQ ) );
G3 = I * aL / ( 3. * mQ ) *
( 1.0 - ( md / ( 2. * mq * aLLp2 ) ) * ( 3. * aL2 - 2. * aLp2 ) );
// Set form factors to be passed to the amplitude calc.
*f1 = F1;
*f2 = F2;
*f3 = F3;
*g1 = G1;
*g2 = G2;
*g3 = G3;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Only Lb -> N*+ transitions allowed in EvtLb2BaryonlnuFF.\n";
::abort();
}
return;
}
void EvtLb2BaryonlnuFF::getraritaff( EvtId parent, EvtId daught, double q2,
double, double* f1, double* f2, double* f3,
double* f4, double* g1, double* g2,
double* g3, double* g4 )
{
static EvtId LAMB = EvtPDL::getId( "Lambda_b0" );
static EvtId LAMBB = EvtPDL::getId( "anti-Lambda_b0" );
static EvtId N1520 = EvtPDL::getId( "N(1520)+" );
static EvtId N1520B = EvtPDL::getId( "anti-N(1520)-" );
static EvtId N1720 = EvtPDL::getId( "N(1720)+" );
static EvtId N1720B = EvtPDL::getId( "anti-N(1720)-" );
static EvtId N1700 = EvtPDL::getId( "N(1700)+" );
static EvtId N1700B = EvtPDL::getId( "anti-N(1700)-" );
static EvtId N1900 = EvtPDL::getId( "N(1900)+" );
static EvtId N1900B = EvtPDL::getId( "anti-N(1900)-" );
static EvtId N1875 = EvtPDL::getId( "N(1875)+" );
static EvtId N1875B = EvtPDL::getId( "anti-N(1875)-" );
static EvtId LAMC2P = EvtPDL::getId( "Lambda_c(2625)+" );
static EvtId LAMC2M = EvtPDL::getId( "anti-Lambda_c(2625)-" );
double F1, F2, F3, F4, G1, G2, G3, G4;
// 3/2 - case
if ( ( parent == LAMB && daught == N1520 ) ||
( parent == LAMBB && daught == N1520B ) ||
( parent == LAMB && daught == N1700 ) ||
( parent == LAMBB && daught == N1700B ) ||
( parent == LAMB && daught == N1875 ) ||
( parent == LAMBB && daught == N1875B ) ||
( parent == LAMB && daught == LAMC2P ) ||
( parent == LAMBB && daught == LAMC2M ) ) {
double mQ = 5.28;
double md = 0.40;
double aL = 0.59;
double MLamB = EvtPDL::getMass( parent );
double MLamq = EvtPDL::getMass( daught );
double mq = md;
double aLp = 0.37;
//set mq and aLp based on whether Lb->Lc* or Lb->N*
if ( ( parent == LAMB && daught == LAMC2P ) ||
( parent == LAMBB && daught == LAMC2M ) ) {
mq = 1.89;
aLp = 0.47;
}
double aL2 = aL * aL;
double aLp2 = aLp * aLp;
double aLLp2 = 0.5 * ( aL2 + aLp2 );
// relativistic correction factor
double k2 = 1.0;
double rho2 = 3. * md * md / ( 2. * k2 * aLLp2 );
// w = scalar product of the 4 velocities of the Lb and Lc.
double w = 0.5 * ( MLamB * MLamB + MLamq * MLamq - q2 ) / MLamB / MLamq;
double I = -( 1. / sqrt( 3. ) ) * pow( aL * aLp / aLLp2, 2.5 ) *
exp( -rho2 * ( w * w - 1. ) );
// Calculate the form factors
F1 = I * 3.0 * md / aL *
( 1.0 + ( md / aLLp2 ) * ( ( aLp2 / mq ) + ( aL2 / mQ ) ) );
F2 = -I * ( ( 3. * md * md / mq ) * ( aLp2 / ( aLLp2 * aL2 ) ) -
5. * aL * aLp2 * md / ( 4. * aLLp2 * mq * mQ ) );
F3 = -I * ( 3. * md * md * aL / ( mQ * aLLp2 ) + aL / ( 2. * mQ ) );
F4 = I * aL / mQ;
G1 = I * ( 3.0 * md / aL -
( aL / ( 2. * mQ ) ) *
( 1. + 3. * md * aLp2 / ( 2. * aLLp2 * mq ) ) );
G2 = -I * ( ( 3. * md * md / mq ) * ( aLp2 / ( aLLp2 * aL ) ) +
aL * aLp2 * md / ( 4. * aLLp2 * aLLp2 * mq * mQ ) *
( aLLp2 + 12. * md * md ) );
G3 = I * aL / ( mQ * aLLp2 ) *
( aLLp2 / 2. + 3. * md * md +
aLp2 * md / ( mq * aLLp2 ) * ( aLLp2 + 6. * md * md ) );
G4 = -I * ( aL / mQ + md / ( mq * mQ ) * aLp2 * aL / aLLp2 );
// Set form factors to be passed to the amplitude calc.
*f1 = F1;
*f2 = F2;
*f3 = F3;
*f4 = F4;
*g1 = G1;
*g2 = G2;
*g3 = G3;
*g4 = G4;
}
// 3/2 + case
else if ( ( parent == LAMB && daught == N1720 ) ||
( parent == LAMBB && daught == N1720B ) ||
( parent == LAMB && daught == N1900 ) ||
( parent == LAMBB && daught == N1900B )
) {
double mQ = 5.28;
double md = 0.40;
double mq = md;
double MLamB = EvtPDL::getMass( parent );
double MLamq = EvtPDL::getMass( daught );
double aL = 0.59;
double aLp = 0.35;
double aL2 = aL * aL;
double aLp2 = aLp * aLp;
double aLLp2 = 0.5 * ( aL2 + aLp2 );
// relativistic correction factor
double k2 = 1.0;
double rho2 = 3. * md * md / ( 2. * k2 * aLLp2 );
// w = scalar product of the 4 velocities of the Lb and Lc.
double w = 0.5 * ( MLamB * MLamB + MLamq * MLamq - q2 ) / MLamB / MLamq;
double I = ( 1. / sqrt( 5. ) ) * pow( aL * aLp / aLLp2, 3.5 ) *
exp( -rho2 * ( w * w - 1. ) );
// Calculate the form factors
F1 = -I * ( md / 2. ) * ( ( 5. / mq ) - ( 3. / mQ ) );
F2 = I * ( md / aL ) *
( ( 6. * md / aL ) - ( 5 * aL / ( 2. * mq ) ) +
( 6. * md * md * aL ) / ( aLLp2 * mQ ) -
( md * aL * ( aL2 - 2. * aLp2 ) ) / ( 2 * aLLp2 * mq * mQ ) );
F3 = -I * ( md / mQ ) * ( 1 + ( 6. * md * md ) / aLLp2 );
F4 = I * ( 2. * md / mQ );
G1 = -I *
( ( 6. * md * md / aL2 ) - md / ( 2. * mQ ) +
md * md * ( 11. * aL2 - 6. * aLp2 ) / ( 6. * aLLp2 * mq * mQ ) );
G2 = I * ( 6 * md * md / aL2 - 5 * md / ( 2.0 * mq ) - ( 2 * md ) / mQ +
5 * aL2 / ( 12.0 * mq * mQ ) -
( 2 * md * md * aL2 ) / ( 3.0 * aLLp2 * mq * mQ ) );
G3 = -I *
( ( md / ( 2. * mQ ) ) - 5 * aL2 / ( 24.0 * mq * mQ ) -
md * md * ( 5 * aL2 - 2 * aLp2 ) / ( 4.0 * mq * mQ * aLLp2 ) );
G4 = -I * 5. * aL2 / ( 6. * mq * mQ );
// Set form factors to be passed to the amplitude calc.
*f1 = F1;
*f2 = F2;
*f3 = F3;
*f4 = F4;
*g1 = G1;
*g2 = G2;
*g3 = G3;
*g4 = G4;
}
else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Only Lb -> N*+ transitions allowed in EvtLb2BaryonlnuFF.\n";
::abort();
}
return;
}
void EvtLb2BaryonlnuFF::getscalarff( EvtId, EvtId, double, double, double*,
double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getscalarff in EvtLb2BaryonlnuFF.\n";
::abort();
}
void EvtLb2BaryonlnuFF::getvectorff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getvectorff in EvtLb2BaryonlnuFF.\n";
::abort();
}
void EvtLb2BaryonlnuFF::gettensorff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :gettensorff in EvtLb2BaryonlnuFF.\n";
::abort();
}
void EvtLb2BaryonlnuFF::getbaryonff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtLb2BaryonlnuFF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtLb2Lll.cpp b/src/EvtGenModels/EvtLb2Lll.cpp
index 7a2628e..d30cc11 100644
--- a/src/EvtGenModels/EvtLb2Lll.cpp
+++ b/src/EvtGenModels/EvtLb2Lll.cpp
@@ -1,905 +1,883 @@
-//----------------------------------------------------------------------------------
-//
-// Module: EvtLb2Lll.cpp
-//
-// Desription: Routine to implement Lambda_b0 -> Lambda_0 l+ l- decays accroding to
-// several models: Chen. Geng.
-// Aliev. Ozpineci. Savci.
-//
-// Modification history:
-//
-// 10/07/2012 MK Fix calculation of N1, N2; based on hep-ph/021144
-// 09/02/2009 PR Commented check for (anti-)Lambda0 names
-// 15/09/2004 PR Module created according to PHSP model
-// 20/02/2005 PR Added parameters, created matrix element (without polarization)
-// 04/03/2005 PR LD contrib., corrected WC eff. according to Chen. Geng.
-//
-// Todo list:
-//
-// - Properly handle antiparticles, needs change of u, ubar to v, vbar in
-// hadronic current, or other way of putting that in
-//----------------------------------------------------------------------------------
-
#include "EvtGenModels/EvtLb2Lll.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracParticle.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGammaMatrix.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <stdio.h>
#include <string.h>
EvtDecayBase* EvtLb2Lll::clone()
{
return new EvtLb2Lll;
}
std::string EvtLb2Lll::getName()
{
return "Lb2Lll";
}
void EvtLb2Lll::init()
{
if ( getNArg() > 8 ) { // Decay parameters
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtLb2Lll generator expected max. 8 arguments but found: "
<< getNArg() << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " 1. Lambda_b0 polarization - zero is default" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " 2. Model type - \"SM\" for Standard Model is default"
<< std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " 3. Form-Factors - \"HQET\" is used by default" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " 4. How to set polarization - \"ModifiedSpinors\" is default"
<< std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " 5. Include long distance (LD) effects - \"SD\" (no) is default"
<< std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " 6. NonFactorizable contribution (omega) to b->sg decay at q2=0 "
<< std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " 7. Note on every x-th decay" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " 8. Maximum probability - automatic by default" << std::endl;
::abort();
}
if ( getNDaug() != 3 ) { // Check that there are 3 daughters only
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtLb2Lll generator expected 3 daughters but found: "
<< getNDaug() << std::endl;
::abort();
}
EvtId LbID = EvtPDL::getId( std::string( "Lambda_b0" ) );
EvtId aLbID = EvtPDL::getId( std::string( "anti-Lambda_b0" ) );
EvtId eID = EvtPDL::getId( std::string( "e-" ) );
EvtId aeID = EvtPDL::getId( std::string( "e+" ) );
EvtId muID = EvtPDL::getId( std::string( "mu-" ) );
EvtId amuID = EvtPDL::getId( std::string( "mu+" ) );
EvtId tauID = EvtPDL::getId( std::string( "tau-" ) );
EvtId atauID = EvtPDL::getId( std::string( "tau+" ) );
// TODO: better check based on spin and falvour is needed to allow usage of aliases !
if ( getParentId() == LbID ) { // Check daughters of Lambda_b0
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll generator found Lambda_b0" << std::endl;
//if(EvtPDL::name(getDaug(0))!="Lambda0"){
// EvtGenReport(EVTGEN_ERROR,"EvtGen") << " ERROR: EvtLb2Lll generator expected Lambda0 daughter but found: " << EvtPDL::name(getDaug(0)) << std::endl;
// ::abort();
//}
if ( getDaug( 1 ) == eID && getDaug( 2 ) == aeID ) {
m_decayName = "Lambda_b0 -> Lambda0 e- e+";
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll generator found decay: Lambda_b0 -> Lambda0 e- e+"
<< std::endl;
} else if ( getDaug( 1 ) == muID && getDaug( 2 ) == amuID ) {
m_decayName = "Lambda_b0 -> Lambda0 mu- mu+";
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll generator found decay: Lambda_b0 -> Lambda0 mu- mu+"
<< std::endl;
} else if ( getDaug( 1 ) == tauID && getDaug( 2 ) == atauID ) {
m_decayName = "Lambda_b0 -> Lambda0 tau- tau+";
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll generator found decay: Lambda_b0 -> Lambda0 tau- tau+"
<< std::endl;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtLb2Lll generator expected lepton pair daughters but found: "
<< EvtPDL::name( getDaug( 1 ) ) << " "
<< EvtPDL::name( getDaug( 2 ) ) << std::endl;
::abort();
}
//TODO: The model is known not to work correctly for anti-Lambda_b0 (A_FB does not change its sign)
} else if ( getParentId() == aLbID ) { // Check daughters of anti-Lambda_b0
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll generator found anti-Lambda_b0" << std::endl;
//if(EvtPDL::name(getDaug(0))!="anti-Lambda0"){
// EvtGenReport(EVTGEN_ERROR,"EvtGen") << " ERROR: EvtLb2Lll generator expected anti-Lambda0 daughter but found: " << EvtPDL::name(getDaug(0)) << std::endl;
// ::abort();
//}
if ( getDaug( 1 ) == aeID && getDaug( 2 ) == eID ) {
m_decayName = "anti-Lambda_b0 -> anti-Lambda0 e+ e-";
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll generator found decay: anti-Lambda_b0 -> anti-Lambda0 e+ e-"
<< std::endl;
} else if ( getDaug( 1 ) == amuID && getDaug( 2 ) == muID ) {
m_decayName = "anti-Lambda_b0 -> anti-Lambda0 mu+ mu-";
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll generator found decay: anti-Lambda_b0 -> anti-Lambda0 mu+ mu-"
<< std::endl;
} else if ( getDaug( 1 ) == atauID && getDaug( 2 ) == tauID ) {
m_decayName = "anti-Lambda_b0 -> anti-Lambda0 tau+ tau-";
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll generator found decay: anti-Lambda_b0 -> anti-Lambda0 tau+ tau-"
<< std::endl;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtLb2Lll generator expected lepton pair daughters but found: "
<< EvtPDL::name( getDaug( 1 ) ) << " "
<< EvtPDL::name( getDaug( 2 ) ) << std::endl;
::abort();
}
} else { // This model is not intended for decay of anything else than (anti-)Lambda_b0
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtLb2Lll generator expected (anti-)Lambda_b0 parent but found: "
<< EvtPDL::name( getParentId() ) << std::endl;
::abort();
}
// Read and check all parameters
if ( getNArg() > 0 ) {
if ( getArg( 0 ) > 1. || getArg( 0 ) < -1. ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtLb2Lll expects polarization to be in interval <-1,1>, not "
<< getArg( 0 ) << std::endl;
::abort();
}
m_polarizationLambdab0 = getArg( 0 );
} else {
m_polarizationLambdab0 = 0;
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll set Lambda_b0 polarization to " << m_polarizationLambdab0
<< std::endl;
if ( getNArg() > 1 ) {
if ( getArgStr( 1 ).substr( 1, getArgStr( 1 ).size() - 2 ) != "SM" &&
getArgStr( 1 ).substr( 1, getArgStr( 1 ).size() - 2 ) != "-C7_SM" &&
getArgStr( 1 ).substr( 1, getArgStr( 1 ).size() - 2 ) !=
"SUSY-ChenGeng" ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtLb2Lll doesn't know this physics model: "
<< getArgStr( 1 ) << std::endl;
::abort();
}
m_HEPmodel = getArgStr( 1 ).substr( 1, getArgStr( 1 ).size() - 2 );
} else {
m_HEPmodel = "SM";
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll will use this physics model: " << m_HEPmodel << std::endl;
if ( getNArg() > 2 ) {
if ( getArgStr( 2 ).substr( 1, getArgStr( 2 ).size() - 2 ) != "HQET" &&
getArgStr( 2 ).substr( 1, getArgStr( 2 ).size() - 2 ) != "HQET-noF2" &&
getArgStr( 2 ).substr( 1, 11 ) != "HQET-delta=" ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtLb2Lll doesn't know this Form-Factors model: "
<< getArgStr( 2 ) << std::endl;
::abort();
}
m_FFtype = getArgStr( 2 ).substr( 1, getArgStr( 2 ).size() - 2 );
} else {
m_FFtype = "HQET";
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll will use this Form-Factors model: " << m_FFtype
<< std::endl;
if ( getNArg() > 3 ) {
if ( getArgStr( 3 ).substr( 1, getArgStr( 3 ).size() - 2 ) !=
"Unpolarized" ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtLb2Lll doesn't know kind of introducing polarization: "
<< getArgStr( 3 ) << std::endl;
::abort();
}
m_polarizationIntroduction =
getArgStr( 3 ).substr( 1, getArgStr( 3 ).size() - 2 );
} else {
m_polarizationIntroduction = "Unpolarized";
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll will use this kind of introducing polarization: "
<< m_polarizationIntroduction << std::endl;
if ( getNArg() > 4 ) {
if ( getArgStr( 4 ).substr( 1, getArgStr( 4 ).size() - 2 ) != "SD" &&
getArgStr( 4 ).substr( 1, getArgStr( 4 ).size() - 2 ) != "LD" ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtLb2Lll didn't find SD or LD parameter: "
<< getArgStr( 4 ) << std::endl;
::abort();
}
m_effectContribution = getArgStr( 5 ).substr( 1, getArgStr( 4 ).size() -
2 );
} else {
m_effectContribution = "SD";
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll will include contribution from these effects: "
<< m_effectContribution << std::endl;
if ( getNArg() > 5 ) {
if ( fabs( getArg( 5 ) ) > 0.15 ) {
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< " WARNING: EvtLb2Lll found very high contribution to b->sg decay at q2=0: "
<< getArg( 5 ) << std::endl;
}
m_omega = getArg( 5 );
} else {
m_omega = 0;
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll will use this contribution to b->sg decay at q2=0: "
<< m_omega << std::endl;
if ( getNArg() > 6 )
m_noTries = (long)( getArg( 6 ) );
else
m_noTries = 0;
if ( getNArg() > 7 ) {
if ( getArg( 7 ) < 0. ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtLb2Lll expects positive maximum probability not : "
<< getArg( 7 ) << std::endl;
::abort();
}
m_maxProbability = getArg( 7 );
} else {
m_maxProbability = 0.;
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll maximum probability was set to " << m_maxProbability
<< std::endl;
m_poleSize = 0;
// Initialize Wilson coefficients by Buras and Munz
// TODO: should have common W.C. source for all decays in EvtGen
m_WC.CalculateAllCoefficients();
}
void EvtLb2Lll::initProbMax()
{
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll is finding maximum probability ... " << std::endl;
if ( m_maxProbability == 0 ) {
EvtDiracParticle* parent = new EvtDiracParticle;
parent->noLifeTime();
parent->init( getParentId(),
EvtVector4R( EvtPDL::getMass( getParentId() ), 0, 0, 0 ) );
parent->setDiagonalSpinDensity();
EvtAmp amp;
EvtId daughters[3] = {getDaug( 0 ), getDaug( 1 ), getDaug( 2 )};
amp.init( getParentId(), 3, daughters );
parent->makeDaughters( 3, daughters );
EvtParticle* lambda = parent->getDaug( 0 );
EvtParticle* lep1 = parent->getDaug( 1 );
EvtParticle* lep2 = parent->getDaug( 2 );
lambda->noLifeTime();
lep1->noLifeTime();
lep2->noLifeTime();
EvtSpinDensity rho;
rho.setDiag( parent->getSpinStates() );
double M0 = EvtPDL::getMass( getParentId() );
double mL = EvtPDL::getMass( getDaug( 0 ) );
double m1 = EvtPDL::getMass( getDaug( 1 ) );
double m2 = EvtPDL::getMass( getDaug( 2 ) );
double q2, pstar, elambda, theta;
double q2min = ( m1 + m2 ) * ( m1 + m2 );
double q2max = ( M0 - mL ) * ( M0 - mL );
EvtVector4R p4lambda, p4lep1, p4lep2, boost;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll is probing whole phase space ..." << std::endl;
int i, j;
double prob = 0;
for ( i = 0; i <= 100; i++ ) {
q2 = q2min + i * ( q2max - q2min ) / 100.;
elambda = ( M0 * M0 + mL * mL - q2 ) / 2 / M0;
if ( i == 0 )
pstar = 0;
else
pstar = sqrt( q2 - ( m1 + m2 ) * ( m1 + m2 ) ) *
sqrt( q2 - ( m1 - m2 ) * ( m1 - m2 ) ) / 2 / sqrt( q2 );
boost.set( M0 - elambda, 0, 0, +sqrt( elambda * elambda - mL * mL ) );
if ( i != 100 ) {
p4lambda.set( elambda, 0, 0,
-sqrt( elambda * elambda - mL * mL ) );
} else {
p4lambda.set( mL, 0, 0, 0 );
}
for ( j = 0; j <= 45; j++ ) {
theta = j * EvtConst::pi / 45;
p4lep1.set( sqrt( pstar * pstar + m1 * m1 ), 0,
+pstar * sin( theta ), +pstar * cos( theta ) );
p4lep2.set( sqrt( pstar * pstar + m2 * m2 ), 0,
-pstar * sin( theta ), -pstar * cos( theta ) );
if ( i != 100 ) // At maximal q2 we are already in correct frame as Lambda and W/Zvirtual are at rest
{
p4lep1 = boostTo( p4lep1, boost );
p4lep2 = boostTo( p4lep2, boost );
}
calcAmp( &amp, parent );
prob = rho.normalizedProb( amp.getSpinDensity() );
//std::cout << "q2: " << q2 << " \t theta: " << theta << " \t prob: " << prob << std::endl;
//std::cout << "p1: " << p4lep1 << " p2: " << p4lep2 << " q2-q2min: " << q2-(m1+m2)*(m1+m2) << std::endl;
if ( prob > m_maxProbability ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " - probability " << prob << " found at q2 = " << q2
<< " (" << 100 * ( q2 - q2min ) / ( q2max - q2min )
<< " %) and theta = " << theta * 180 / EvtConst::pi
<< std::endl;
m_maxProbability = prob;
}
}
//::abort();
}
//m_poleSize = 0.04*q2min;
m_maxProbability *= 1.2;
delete parent;
}
setProbMax( m_maxProbability );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtLb2Lll set up maximum probability to " << m_maxProbability
<< std::endl;
}
void EvtLb2Lll::decay( EvtParticle* parent )
{
//setWeight(parent->initializePhaseSpace(getNDaug(),getDaugs(),m_poleSize,1,2));
parent->initializePhaseSpace( getNDaug(), getDaugs() );
calcAmp( &_amp2, parent );
}
void EvtLb2Lll::calcAmp( EvtAmp* amp, EvtParticle* parent )
{
static long noTries = 0;
static double delta = 0;
EvtComplex Matrix[2][2][2][2];
EvtComplex i1( 0, 1 );
int i, j, spins[4];
char ch;
double r, M_L, M_Lb, M_s, M_c, M_b, q2, alpha, M_W, M_t;
double M_psi[2] = {0, 0}, Gamma_psi[2] = {0, 0}, k_psi[2] = {0, 0};
double F0_1, F0_2, a_F1, a_F2, b_F1, b_F2, F1, F2;
double f_1, f_2, f_3, g_1, g_2, g_3, f_1T, f_2T, f_3T, g_1T, g_2T, g_3T,
f_TV, f_TS, g_TV( 0.0 ), g_TS, f_T, g_T;
EvtComplex A1, A2, A3, B1, B2, B3, D1, D2, D3, E1, E2, E3, N1, N2, H1, H2;
EvtComplex C_SL, C_BR, C_LLtot, C_LRtot, C_LL, C_LR, C_RL, C_RR, C_LRLR,
C_RLLR, C_LRRL, C_RLRL, C_T, C_TE;
EvtComplex Yld, C_7eff, C_9eff;
EvtComplex V_ts, V_tb;
EvtVector4C lbar_Gmu_l[2][2], lbar_GmuG5_l[2][2], hbar_GmuPlusG5_h[2][2],
hbar_GmuMinusG5_h[2][2], hbar_Gmu_h[2][2];
EvtComplex lbar_l[2][2], lbar_G5_l[2][2], hbar_1PlusG5_h[2][2],
hbar_1MinusG5_h[2][2], hbar_G5_h[2][2], hbar_h[2][2];
EvtTensor4C lbar_Smunu_l[2][2], lbar_ESmunu_l[2][2],
hbar_SmunuPlusG5_h[2][2], hbar_SmunuMinusG5_h[2][2], hbar_Smunu_h[2][2];
EvtVector4R q_mu, P_mu;
EvtDiracSpinor parent__spParent[2];
M_Lb = parent->mass();
M_L = parent->getDaug( 0 )->mass();
M_s = 0.13;
M_c = 1.35;
M_b = 4.8;
alpha = 1. / 137.036;
M_W = 80.425;
M_t = 174.3;
M_psi[0] = 3.096916;
M_psi[1] = 3.686093;
if ( m_decayName == "Lambda_b0 -> Lambda0 e- e+" ||
m_decayName == "anti-Lambda_b0 -> anti-Lambda0 e+ e-" ) {
Gamma_psi[0] = 5.40;
Gamma_psi[1] = 2.12;
}
if ( m_decayName == "Lambda_b0 -> Lambda0 mu- mu+" ||
m_decayName == "anti-Lambda_b0 -> anti-Lambda0 mu+ mu-" ) {
Gamma_psi[0] = 5.35;
Gamma_psi[1] = 2.05;
}
if ( m_decayName == "Lambda_b0 -> Lambda0 tau- tau+" ||
m_decayName == "anti-Lambda_b0 -> anti-Lambda0 tau+ tau-" ) {
Gamma_psi[0] = 0.00;
Gamma_psi[1] = 0.79;
}
if ( m_effectContribution == "LD" ) {
k_psi[0] = 1.65;
k_psi[1] = 1.65;
}
//G_F = 1.16637e-5;
//V_tb = sqrt(1-pow(0.0413,2))*sqrt(1-pow(0.0037,2));
//V_ts = -sqrt(1-pow(0.2243,2))*0.0413-0.2243*sqrt(1-pow(0.0413,2))*0.0037*(cos(60*EvtConst::pi/180)+i1*sin(60*EvtConst::pi/180));
P_mu = parent->getP4Restframe() + parent->getDaug( 0 )->getP4();
q_mu = parent->getP4Restframe() - parent->getDaug( 0 )->getP4();
q2 = q_mu.mass2();
if ( m_noTries > 0 )
if ( !( ( ++noTries ) % m_noTries ) )
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< " EvtLb2Lll already finished " << noTries
<< " matrix element calculations" << std::endl;
if ( m_FFtype == "HQET" ) {
r = M_L * M_L / M_Lb / M_Lb;
F0_1 = +0.462;
F0_2 = -0.077;
a_F1 = -0.0182;
a_F2 = -0.0685;
b_F1 = -0.000176;
b_F2 = +0.001460;
F1 = F0_1 / ( 1.0 - ( q2 / M_Lb / M_Lb ) *
( a_F1 - b_F1 * ( q2 / M_Lb / M_Lb ) ) );
F2 = F0_2 / ( 1.0 - ( q2 / M_Lb / M_Lb ) *
( a_F2 - b_F2 * ( q2 / M_Lb / M_Lb ) ) );
g_1 = f_1 = f_2T = g_2T = F1 + sqrt( r ) * F2;
//std::cout << " F1: " << F1 << " F2: " << F2 << " r: " << r << " M_L: " << M_L << " M_Lb: " << M_Lb << std::endl;
//std::cout << " sqrt(q2): " << sqrt(q2) << " q2: " << q2 << " M_Lb^2" << M_Lb*M_Lb << std::endl;
g_2 = f_2 = g_3 = f_3 = g_TV = f_TV = F2 / M_Lb;
g_TS = f_TS = 0;
g_1T = f_1T = F2 / M_Lb * q2;
g_3T = +F2 / M_Lb * ( M_Lb + M_L );
f_3T = -F2 / M_Lb * ( M_Lb - M_L );
f_T = f_2T - f_TS * q2;
g_T = g_2T - g_TS * q2;
} else if ( strstr( m_FFtype.c_str(), "HQET-delta=" ) == m_FFtype.c_str() ) {
//EvtGenReport(EVTGEN_WARNING,"EvtGen") << " WARNING: HQET-delta FF model should be checked for correctness" << std::endl;
if ( delta == 0 )
sscanf( m_FFtype.c_str(), "%c%c%c%c%c%c%c%c%c%c%c%lf", &ch, &ch,
&ch, &ch, &ch, &ch, &ch, &ch, &ch, &ch, &ch, &delta );
r = M_L * M_L / M_Lb / M_Lb;
F0_1 = +0.462;
F0_2 = -0.077;
a_F1 = -0.0182;
a_F2 = -0.0685;
b_F1 = -0.000176;
b_F2 = +0.001460;
F1 = F0_1 / ( 1.0 - ( q2 / M_Lb / M_Lb ) *
( a_F1 - b_F1 * ( q2 / M_Lb / M_Lb ) ) );
F2 = F0_2 / ( 1.0 - ( q2 / M_Lb / M_Lb ) *
( a_F2 - b_F2 * ( q2 / M_Lb / M_Lb ) ) );
g_1 = f_1 = f_2T = g_2T = F1 + sqrt( r ) * F2;
g_1 += delta * g_1;
f_1 -= delta * f_1;
g_2 = f_2 = g_3 = f_3 = g_TV = f_TV = F2 / M_Lb;
g_TS = f_TS = 0;
g_1T = f_1T = F2 / M_Lb * q2;
g_3T = +F2 / M_Lb * ( M_Lb + M_L );
f_3T = -F2 / M_Lb * ( M_Lb - M_L );
f_T = f_2T - f_TS * q2;
g_T = g_2T - g_TS * q2;
} else if ( m_FFtype == "HQET-noF2" ) {
//EvtGenReport(EVTGEN_WARNING,"EvtGen") << " WARNING: HQET-noF2 FF model should be checked for correctness" << std::endl;
r = M_L * M_L / M_Lb / M_Lb;
F0_1 = +0.462;
a_F1 = -0.0182;
b_F1 = -0.000176;
F1 = F0_1 / ( 1.0 - ( q2 / M_Lb / M_Lb ) *
( a_F1 - b_F1 * ( q2 / M_Lb / M_Lb ) ) );
g_1 = f_1 = f_2T = g_2T = F1;
g_2 = f_2 = g_3 = f_3 = g_TV = f_TV = 0;
g_TS = f_TS = 0;
g_1T = f_1T = 0;
g_3T = 0;
f_3T = 0;
f_T = f_2T - f_TS * q2;
g_T = g_2T - g_TS * q2;
} else { // general relations for Form-Factors
f_1 = f_2 = f_3 = g_1 = g_2 = g_3 = f_3T = g_3T = f_TS = g_TS = f_T =
g_T = f_TV = 0;
f_2T = f_T + f_TS * q2;
f_1T = ( f_TV + f_TS * ( M_L + M_Lb ) ) * q2;
f_1T = -q2 / ( M_Lb - M_L ) * f_3T;
g_2T = g_T + g_TS * q2;
g_1T = ( g_TV - g_TS * ( M_L - M_Lb ) ) * q2;
g_1T = +q2 / ( M_Lb + M_L ) * g_3T;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtLb2Lll - unknown Form-Factors model: " << m_FFtype
<< " - this should never happen !" << std::endl;
::abort();
}
if ( m_HEPmodel == "SM" ) {
C_LL = C_LR = C_RL = C_RR = C_LRLR = C_RLLR = C_LRRL = C_RLRL = C_T =
C_TE = EvtComplex( 0, 0 );
Yld = m_WC.Yld( q2, k_psi, Gamma_psi, M_psi, 2, m_WC.GetC1(),
m_WC.GetC2(), m_WC.GetC3(), m_WC.GetC4(), m_WC.GetC5(),
m_WC.GetC6(), 1. / alpha );
C_7eff = m_WC.GetC7eff0() +
m_WC.C7b2sg( m_WC.GetStrongCouplingConst(), m_WC.GetEta(),
m_WC.GetC2(), M_t, M_W ) +
m_omega *
( m_WC.hzs( M_c / M_b, q2 / M_b / M_b, M_b, M_b ) + Yld );
C_9eff = Yld +
m_WC.C9efftilda( M_c / M_b, q2 / M_b / M_b,
m_WC.GetStrongCouplingConst(), m_WC.GetC1(),
m_WC.GetC2(), m_WC.GetC3(), m_WC.GetC4(),
m_WC.GetC5(), m_WC.GetC6(), m_WC.GetC9tilda(),
m_WC.GetRenormSchemePar() );
C_SL = -2 * M_s * C_7eff;
C_BR = -2 * M_b * C_7eff;
C_LLtot = C_9eff - m_WC.GetC10tilda() + C_LL;
C_LRtot = C_9eff + m_WC.GetC10tilda() + C_LR;
//std::cout << "Yld: " << Yld << " C7eff: " << C_7eff << " C_9eff: " << C_9eff << " Diff7: " << C_7eff-m_WC.GetC7eff0() << " Diff9: " << C_9eff-m_WC.GetC9tilda() << std::endl;
} else if ( m_HEPmodel == "-C7_SM" ) {
C_LL = C_LR = C_RL = C_RR = C_LRLR = C_RLLR = C_LRRL = C_RLRL = C_T =
C_TE = EvtComplex( 0, 0 );
Yld = m_WC.Yld( q2, k_psi, Gamma_psi, M_psi, 2, m_WC.GetC1(),
m_WC.GetC2(), m_WC.GetC3(), m_WC.GetC4(), m_WC.GetC5(),
m_WC.GetC6(), 1. / alpha );
C_7eff = m_WC.GetC7eff0() +
m_WC.C7b2sg( m_WC.GetStrongCouplingConst(), m_WC.GetEta(),
m_WC.GetC2(), M_t, M_W ) +
m_omega *
( m_WC.hzs( M_c / M_b, q2 / M_b / M_b, M_b, M_b ) + Yld );
C_9eff = Yld +
m_WC.C9efftilda( M_c / M_b, q2 / M_b / M_b,
m_WC.GetStrongCouplingConst(), m_WC.GetC1(),
m_WC.GetC2(), m_WC.GetC3(), m_WC.GetC4(),
m_WC.GetC5(), m_WC.GetC6(), m_WC.GetC9tilda(),
m_WC.GetRenormSchemePar() );
C_SL = +2 * M_s * C_7eff;
C_BR = +2 * M_b * C_7eff;
C_LLtot = C_9eff - m_WC.GetC10tilda() + C_LL;
C_LRtot = C_9eff + m_WC.GetC10tilda() + C_LR;
//std::cout << "Yld: " << Yld << " C7eff: " << C_7eff << " C_9eff: " << C_9eff << " Diff7: " << C_7eff-m_WC.GetC7eff0() << " Diff9: " << C_9eff-m_WC.GetC9tilda() << std::endl;
} else if ( m_HEPmodel == "SUSY-ChenGeng" ) {
//EvtGenReport(EVTGEN_WARNING,"EvtGen") << " WARNING: SUSY-ChenGeng model should be checked for correctness" << std::endl;
C_LL = C_LR = C_RL = C_RR = C_LRLR = C_RLLR = C_LRRL = C_RLRL = C_T =
C_TE = EvtComplex( 0, 0 );
EvtComplex d_u23LL = 0.1;
EvtComplex d_u33RL = 0.65;
EvtComplex d_d23LR = 0.03 * exp( i1 * EvtConst::pi * 2 / 5 );
EvtComplex d_u23LR = -0.8 * exp( i1 * EvtConst::pi / 4 );
EvtComplex C_7susy = -1.75 * d_u23LL - 0.25 * d_u23LR - 10.3 * d_d23LR;
EvtComplex C_9susy = 0.82 * d_u23LR;
EvtComplex C_10susy = -9.37 * d_u23LR + 1.4 * d_u23LR * d_u33RL +
2.7 * d_u23LL;
Yld = m_WC.Yld( q2, k_psi, Gamma_psi, M_psi, 2, m_WC.GetC1(),
m_WC.GetC2(), m_WC.GetC3(), m_WC.GetC4(), m_WC.GetC5(),
m_WC.GetC6(), 1. / alpha );
C_7eff = m_WC.GetC7eff0() + C_7susy * pow( m_WC.GetEta(), 16. / 23. ) +
m_WC.C7b2sg( m_WC.GetStrongCouplingConst(), m_WC.GetEta(),
m_WC.GetC2(), M_t, M_W ) +
m_omega *
( m_WC.hzs( M_c / M_b, q2 / M_b / M_b, M_b, M_b ) + Yld );
C_9eff = Yld + m_WC.C9efftilda( M_c / M_b, q2 / M_b / M_b,
m_WC.GetStrongCouplingConst(),
m_WC.GetC1(), m_WC.GetC2(), m_WC.GetC3(),
m_WC.GetC4(), m_WC.GetC5(), m_WC.GetC6(),
m_WC.GetC9tilda() + C_9susy,
m_WC.GetRenormSchemePar() );
C_SL = -2 * M_s * C_7eff;
C_BR = -2 * M_b * C_7eff;
C_LLtot = C_9eff - m_WC.GetC10tilda() - C_10susy + C_LL;
C_LRtot = C_9eff + m_WC.GetC10tilda() + C_10susy + C_LR;
//std::cout << "Yld: " << Yld << " C7eff: " << C_7eff << " C_9eff: " << C_9eff << " Diff7: " << C_7eff-m_WC.GetC7eff0() << " Diff9: " << C_9eff-m_WC.GetC9tilda() << std::endl;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtLb2Lll - unknown physics model: " << m_HEPmodel
<< " - this should never happen !" << std::endl;
::abort();
}
A1 = ( f_1T - g_1T ) * C_SL / q2 + ( f_1T + g_1T ) * C_BR / q2 +
0.5 * ( f_1 - g_1 ) * ( C_LLtot + C_LRtot ) +
0.5 * ( f_1 + g_1 ) * ( C_RL + C_RR );
//std::cout << "f_1T: " << f_1T << " g_1T: " << g_1T << " C_SL: " << C_SL << " C_BR: " << C_BR << " f_1: " << f_1 << " g_1: " << g_1 << " C_LLtot: " << C_LLtot << " C_LRtot: " << C_LRtot << " C_RL: " << C_RL << " C_RR: " << C_RR << std::endl;
A2 = ( f_2T - g_2T ) * C_SL / q2 + ( f_2T + g_2T ) * C_BR / q2 +
0.5 * ( f_2 - g_2 ) * ( C_LLtot + C_LRtot ) +
0.5 * ( f_2 + g_2 ) * ( C_RL + C_RR );
A3 = ( f_3T - g_3T ) * C_SL / q2 + ( f_3T + g_3T ) * C_BR / q2 +
0.5 * ( f_3 - g_3 ) * ( C_LLtot + C_LRtot ) +
0.5 * ( f_3 + g_3 ) * ( C_RL + C_RR );
B1 = ( f_1T + g_1T ) * C_SL / q2 + ( f_1T - g_1T ) * C_BR / q2 +
0.5 * ( f_1 + g_1 ) * ( C_LLtot + C_LRtot ) +
0.5 * ( f_1 - g_1 ) * ( C_RL + C_RR );
B2 = ( f_2T + g_2T ) * C_SL / q2 + ( f_2T - g_2T ) * C_BR / q2 +
0.5 * ( f_2 + g_2 ) * ( C_LLtot + C_LRtot ) +
0.5 * ( f_2 - g_2 ) * ( C_RL + C_RR );
B3 = ( f_3T + g_3T ) * C_SL / q2 + ( f_3T - g_3T ) * C_BR / q2 +
0.5 * ( f_3 + g_3 ) * ( C_LLtot + C_LRtot ) +
0.5 * ( f_3 - g_3 ) * ( C_RL + C_RR );
D1 = 0.5 * ( C_RR - C_RL ) * ( f_1 + g_1 ) +
0.5 * ( C_LRtot - C_LLtot ) * ( f_1 - g_1 );
D2 = 0.5 * ( C_RR - C_RL ) * ( f_2 + g_2 ) +
0.5 * ( C_LRtot - C_LLtot ) * ( f_2 - g_2 );
D3 = 0.5 * ( C_RR - C_RL ) * ( f_3 + g_3 ) +
0.5 * ( C_LRtot - C_LLtot ) * ( f_3 - g_3 );
E1 = 0.5 * ( C_RR - C_RL ) * ( f_1 - g_1 ) +
0.5 * ( C_LRtot - C_LLtot ) * ( f_1 + g_1 );
E2 = 0.5 * ( C_RR - C_RL ) * ( f_2 - g_2 ) +
0.5 * ( C_LRtot - C_LLtot ) * ( f_2 + g_2 );
E3 = 0.5 * ( C_RR - C_RL ) * ( f_3 - g_3 ) +
0.5 * ( C_LRtot - C_LLtot ) * ( f_3 + g_3 );
N1 = ( f_1 * ( M_Lb - M_L ) + f_3 * q2 ) / M_b *
( C_LRLR + C_RLLR + C_LRRL + C_RLRL ); // Should be mLb - mL
N2 = ( f_1 * ( M_Lb - M_L ) + f_3 * q2 ) / M_b *
( C_LRLR + C_RLLR - C_LRRL - C_RLRL );
H1 = ( g_1 * ( M_Lb + M_L ) - g_3 * q2 ) / M_b *
( C_LRLR - C_RLLR + C_LRRL - C_RLRL );
H2 = ( g_1 * ( M_Lb + M_L ) - g_3 * q2 ) / M_b *
( C_LRLR - C_RLLR - C_LRRL + C_RLRL );
for ( i = 0; i < 4; i++ ) {
lbar_Gmu_l[i / 2][i % 2] =
EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( i / 2 ),
parent->getDaug( 2 )->spParent( i % 2 ) );
lbar_GmuG5_l[i / 2][i % 2] =
EvtLeptonACurrent( parent->getDaug( 1 )->spParent( i / 2 ),
parent->getDaug( 2 )->spParent( i % 2 ) );
lbar_l[i / 2][i % 2] =
EvtLeptonSCurrent( parent->getDaug( 1 )->spParent( i / 2 ),
parent->getDaug( 2 )->spParent( i % 2 ) );
lbar_G5_l[i / 2][i % 2] =
EvtLeptonPCurrent( parent->getDaug( 1 )->spParent( i / 2 ),
parent->getDaug( 2 )->spParent( i % 2 ) );
lbar_Smunu_l[i / 2][i % 2] =
EvtLeptonTCurrent( parent->getDaug( 1 )->spParent( i / 2 ),
parent->getDaug( 2 )->spParent( i % 2 ) );
lbar_ESmunu_l[i / 2][i % 2] = dual(
EvtLeptonTCurrent( parent->getDaug( 1 )->spParent( i / 2 ),
parent->getDaug( 2 )->spParent( i % 2 ) ) );
}
// TODO: polarization not yet introduced
if ( m_polarizationIntroduction == "SpinDensityMatrix" ) {
//parent->setSpinDensityForward();
parent__spParent[0] = parent->sp( 0 );
parent__spParent[1] = parent->sp( 1 );
} else if ( m_polarizationIntroduction == "ModifiedSpinors" ) {
parent__spParent[0] = parent->sp( 0 );
parent__spParent[1] = parent->sp( 1 );
} else if ( m_polarizationIntroduction == "Unpolarized" ) {
parent__spParent[0] = parent->sp( 0 );
parent__spParent[1] = parent->sp( 1 );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: EvtLb2Lll - unknown polarization: "
<< m_polarizationIntroduction << " - this should never happen !"
<< std::endl;
::abort();
}
for ( i = 0; i < 4; i++ ) {
hbar_GmuPlusG5_h[i / 2][i % 2] =
EvtLeptonVCurrent( parent->getDaug( 0 )->spParent( i / 2 ),
parent__spParent[i % 2] ) +
EvtLeptonACurrent( parent->getDaug( 0 )->spParent( i / 2 ),
parent__spParent[i % 2] );
hbar_GmuMinusG5_h[i / 2][i % 2] = EvtLeptonVACurrent(
parent->getDaug( 0 )->spParent( i / 2 ), parent__spParent[i % 2] );
hbar_SmunuPlusG5_h[i / 2][i % 2] =
EvtLeptonTCurrent( parent->getDaug( 0 )->spParent( i / 2 ),
parent__spParent[i % 2] ) +
EvtLeptonTG5Current( parent->getDaug( 0 )->spParent( i / 2 ),
parent__spParent[i % 2] );
hbar_SmunuMinusG5_h[i / 2][i % 2] =
EvtLeptonTCurrent( parent->getDaug( 0 )->spParent( i / 2 ),
parent__spParent[i % 2] ) -
EvtLeptonTG5Current( parent->getDaug( 0 )->spParent( i / 2 ),
parent__spParent[i % 2] );
hbar_1PlusG5_h[i / 2][i % 2] =
EvtLeptonSCurrent( parent->getDaug( 0 )->spParent( i / 2 ),
parent__spParent[i % 2] ) +
EvtLeptonPCurrent( parent->getDaug( 0 )->spParent( i / 2 ),
parent__spParent[i % 2] );
hbar_1MinusG5_h[i / 2][i % 2] =
EvtLeptonSCurrent( parent->getDaug( 0 )->spParent( i / 2 ),
parent__spParent[i % 2] ) -
EvtLeptonPCurrent( parent->getDaug( 0 )->spParent( i / 2 ),
parent__spParent[i % 2] );
hbar_G5_h[i / 2][i % 2] = EvtLeptonPCurrent(
parent->getDaug( 0 )->spParent( i / 2 ), parent__spParent[i % 2] );
hbar_h[i / 2][i % 2] = EvtLeptonSCurrent(
parent->getDaug( 0 )->spParent( i / 2 ), parent__spParent[i % 2] );
hbar_Smunu_h[i / 2][i % 2] = EvtLeptonTCurrent(
parent->getDaug( 0 )->spParent( i / 2 ), parent__spParent[i % 2] );
hbar_Gmu_h[i / 2][i % 2] = EvtLeptonVCurrent(
parent->getDaug( 0 )->spParent( i / 2 ), parent__spParent[i % 2] );
}
for ( i = 0; i < 4; i++ )
for ( j = 0; j < 4; j++ ) {
//std::cout << "--------------------------------------------------" << std::endl;
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
Matrix[j / 2][j % 2][i / 2][i % 2] +=
lbar_Gmu_l[i / 2][i % 2] *
( A1 * hbar_GmuPlusG5_h[j / 2][j % 2] +
B1 * hbar_GmuMinusG5_h[j / 2][j % 2] );
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
//std::cout << "A1: " << A1 << " B1: " << B1 << " lbar_Gmu_l: " << lbar_Gmu_l[i/2][i%2] <<
// " hbar_GmuPlusG5_h: " << hbar_GmuPlusG5_h[j/2][j%2] << " hbar_GmuMinusG5_h: " << hbar_GmuMinusG5_h[j/2][j%2] <<
// " sp1: " << parent->getDaug(1)->spParent(i/2) << " sp2: " << parent->getDaug(1)->spParent(i%2) << std::endl;
Matrix[j / 2][j % 2][i / 2][i % 2] +=
lbar_Gmu_l[i / 2][i % 2] *
( i1 * A2 * ( hbar_SmunuPlusG5_h[j / 2][j % 2].cont2( q_mu ) ) +
B2 * ( hbar_SmunuMinusG5_h[j / 2][j % 2].cont2( q_mu ) ) );
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
Matrix[j / 2][j % 2][i / 2][i % 2] +=
lbar_Gmu_l[i / 2][i % 2] *
( ( A3 * hbar_1PlusG5_h[j / 2][j % 2] +
B3 * hbar_1MinusG5_h[j / 2][j % 2] ) *
q_mu );
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
Matrix[j / 2][j % 2][i / 2][i % 2] +=
lbar_GmuG5_l[i / 2][i % 2] *
( D1 * hbar_GmuPlusG5_h[j / 2][j % 2] +
E1 * hbar_GmuMinusG5_h[j / 2][j % 2] );
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
Matrix[j / 2][j % 2][i / 2][i % 2] +=
lbar_GmuG5_l[i / 2][i % 2] *
( i1 * D2 * ( hbar_SmunuPlusG5_h[j / 2][j % 2].cont2( q_mu ) ) +
E2 * ( hbar_SmunuMinusG5_h[j / 2][j % 2].cont2( q_mu ) ) );
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
Matrix[j / 2][j % 2][i / 2][i % 2] +=
lbar_GmuG5_l[i / 2][i % 2] *
( ( D3 * hbar_1PlusG5_h[j / 2][j % 2] +
E3 * hbar_1MinusG5_h[j / 2][j % 2] ) *
q_mu );
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
Matrix[j / 2][j % 2][i / 2][i % 2] +=
lbar_l[i / 2][i % 2] *
( N1 * hbar_h[j / 2][j % 2] + H1 * hbar_G5_h[j / 2][j % 2] );
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
Matrix[j / 2][j % 2][i / 2][i % 2] +=
lbar_G5_l[i / 2][i % 2] *
( N2 * hbar_h[j / 2][j % 2] + H2 * hbar_G5_h[j / 2][j % 2] );
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
Matrix[j / 2][j % 2][i / 2][i % 2] +=
cont( lbar_Smunu_l[i / 2][i % 2],
4 * C_T * f_T * hbar_Smunu_h[j / 2][j % 2] );
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
Matrix[j / 2][j % 2][i / 2][i % 2] += cont(
lbar_Smunu_l[i / 2][i % 2],
-4 * C_T * f_TV * i1 *
( EvtGenFunctions::directProd( q_mu, hbar_Gmu_h[j / 2][j % 2] ) -
EvtGenFunctions::directProd( hbar_Gmu_h[j / 2][j % 2],
q_mu ) ) );
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
Matrix[j / 2][j % 2][i / 2][i % 2] +=
cont( lbar_Smunu_l[i / 2][i % 2],
-4 * C_T * f_TS * i1 *
( EvtGenFunctions::directProd( P_mu, q_mu ) -
EvtGenFunctions::directProd( q_mu, P_mu ) ) *
hbar_h[j / 2][j % 2] );
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
Matrix[j / 2][j % 2][i / 2][i % 2] +=
cont( lbar_ESmunu_l[i / 2][i % 2],
4 * C_TE * f_T * i1 * hbar_Smunu_h[j / 2][j % 2] );
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
Matrix[j / 2][j % 2][i / 2][i % 2] += cont(
lbar_ESmunu_l[i / 2][i % 2],
4 * C_TE * f_TV *
( EvtGenFunctions::directProd( q_mu, hbar_Gmu_h[j / 2][j % 2] ) -
EvtGenFunctions::directProd( hbar_Gmu_h[j / 2][j % 2],
q_mu ) ) );
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
Matrix[j / 2][j % 2][i / 2][i % 2] +=
cont( lbar_ESmunu_l[i / 2][i % 2],
4 * C_TE * f_TS *
( EvtGenFunctions::directProd( P_mu, q_mu ) -
EvtGenFunctions::directProd( q_mu, P_mu ) ) *
hbar_h[j / 2][j % 2] );
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
//Matrix[j/2][j%2][i/2][i%2] *= G_F*alpha/4/sqrt(2)/EvtConst::pi*V_tb*conj(V_ts);
//std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl;
//std::cout << "--------------------------------------------------" << std::endl;
spins[0] = j % 2;
spins[1] = j / 2;
spins[2] = i / 2;
spins[3] = i % 2;
amp->vertex( spins, Matrix[j / 2][j % 2][i / 2][i % 2] );
}
//std::cout << "==================================================" << std::endl;
//std::cout << "Lambda_b0: " << parent->getP4Restframe() << std::endl;
//std::cout << "Lambda0: " << parent->getDaug(0)->getP4() << std::endl;
//std::cout << "mu-: " << parent->getDaug(1)->getP4() << std::endl;
//std::cout << "mu+: " << parent->getDaug(2)->getP4() << std::endl;
//std::cout << "P_mu: " << P_mu << std::endl;
//std::cout << "q_mu: " << q_mu << std::endl;
//std::cout << "q2: " << q2 << std::endl;
//std::cout << "==================================================" << std::endl;
return;
}
EvtTensor4C EvtLb2Lll::EvtLeptonTG5Current( const EvtDiracSpinor& d,
const EvtDiracSpinor& dp )
{
// <u|sigma^munu*gamma^5|v>
EvtTensor4C temp;
temp.zero();
EvtComplex i2( 0, 0.5 );
static EvtGammaMatrix mat01 = EvtGammaMatrix::g0() *
( EvtGammaMatrix::g0() * EvtGammaMatrix::g1() -
EvtGammaMatrix::g1() * EvtGammaMatrix::g0() ) *
EvtGammaMatrix::g5();
static EvtGammaMatrix mat02 = EvtGammaMatrix::g0() *
( EvtGammaMatrix::g0() * EvtGammaMatrix::g2() -
EvtGammaMatrix::g2() * EvtGammaMatrix::g0() ) *
EvtGammaMatrix::g5();
static EvtGammaMatrix mat03 = EvtGammaMatrix::g0() *
( EvtGammaMatrix::g0() * EvtGammaMatrix::g3() -
EvtGammaMatrix::g3() * EvtGammaMatrix::g0() ) *
EvtGammaMatrix::g5();
static EvtGammaMatrix mat12 = EvtGammaMatrix::g0() *
( EvtGammaMatrix::g1() * EvtGammaMatrix::g2() -
EvtGammaMatrix::g2() * EvtGammaMatrix::g1() ) *
EvtGammaMatrix::g5();
static EvtGammaMatrix mat13 = EvtGammaMatrix::g0() *
( EvtGammaMatrix::g1() * EvtGammaMatrix::g3() -
EvtGammaMatrix::g3() * EvtGammaMatrix::g1() ) *
EvtGammaMatrix::g5();
static EvtGammaMatrix mat23 = EvtGammaMatrix::g0() *
( EvtGammaMatrix::g2() * EvtGammaMatrix::g3() -
EvtGammaMatrix::g3() * EvtGammaMatrix::g2() ) *
EvtGammaMatrix::g5();
temp.set( 0, 1, i2 * ( d * ( mat01 * dp ) ) );
temp.set( 1, 0, -temp.get( 0, 1 ) );
temp.set( 0, 2, i2 * ( d * ( mat02 * dp ) ) );
temp.set( 2, 0, -temp.get( 0, 2 ) );
temp.set( 0, 3, i2 * ( d * ( mat03 * dp ) ) );
temp.set( 3, 0, -temp.get( 0, 3 ) );
temp.set( 1, 2, i2 * ( d * ( mat12 * dp ) ) );
temp.set( 2, 1, -temp.get( 1, 2 ) );
temp.set( 1, 3, i2 * ( d * ( mat13 * dp ) ) );
temp.set( 3, 1, -temp.get( 1, 3 ) );
temp.set( 2, 3, i2 * ( d * ( mat23 * dp ) ) );
temp.set( 3, 2, -temp.get( 2, 3 ) );
return temp;
}
diff --git a/src/EvtGenModels/EvtLb2plnuLCSR.cpp b/src/EvtGenModels/EvtLb2plnuLCSR.cpp
index c0a6357..cbe0217 100644
--- a/src/EvtGenModels/EvtLb2plnuLCSR.cpp
+++ b/src/EvtGenModels/EvtLb2plnuLCSR.cpp
@@ -1,180 +1,155 @@
-
-
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtLb2plnuLCSR.cc
-//
-// Description: Routine to implement Lb->p l nu semileptonic decays using form factor
-// predictions form Light Cone Sum Rules. The form factors are from
-// A. Khodjamirian, C. Klein, T. Mannel and Y.-M. Wang, arXiv.1108.2971 (2011)
-//
-//
-// Modification history:
-//
-// William Sutcliffe 27/07/2013 Module created
-//
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtLb2plnuLCSR.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtLb2plnuLCSRFF.hh"
#include <stdlib.h>
#include <string>
using namespace std;
#ifdef D0
#undef D0
#endif
EvtLb2plnuLCSR::EvtLb2plnuLCSR() : ffmodel( 0 ), calcamp( 0 )
{
}
EvtLb2plnuLCSR::~EvtLb2plnuLCSR()
{
delete ffmodel;
ffmodel = 0;
delete calcamp;
calcamp = 0;
}
std::string EvtLb2plnuLCSR::getName()
{
return "Lb2plnuLCSR";
}
EvtDecayBase* EvtLb2plnuLCSR::clone()
{
return new EvtLb2plnuLCSR;
}
void EvtLb2plnuLCSR::decay( EvtParticle* p )
{
//This is a kludge to avoid warnings because the K_2* mass becomes to large.
static EvtIdSet regenerateMasses( "K_2*+", "K_2*-", "K_2*0", "anti-K_2*0",
"K_1+", "K_1-", "K_10", "anti-K_10",
"D'_1+", "D'_1-", "D'_10", "anti-D'_10" );
if ( regenerateMasses.contains( getDaug( 0 ) ) ) {
p->resetFirstOrNot();
}
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtComplex r00( getArg( 0 ), 0.0 );
EvtComplex r01( getArg( 1 ), 0.0 );
EvtComplex r10( getArg( 2 ), 0.0 );
EvtComplex r11( getArg( 3 ), 0.0 );
calcamp->CalcAmp( p, _amp2, ffmodel, r00, r01, r10, r11 );
}
void EvtLb2plnuLCSR::initProbMax()
{
static EvtId LAMB = EvtPDL::getId( "Lambda_b0" );
static EvtId LAMBB = EvtPDL::getId( "anti-Lambda_b0" );
static EvtId PRO = EvtPDL::getId( "p+" );
static EvtId PROB = EvtPDL::getId( "anti-p-" );
EvtId parnum, barnum;
parnum = getParentId();
barnum = getDaug( 0 );
if ( ( parnum == LAMB && barnum == PRO ) ||
( parnum == LAMBB && barnum == PROB ) ) {
setProbMax( 22000.0 );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Decay does not have Lb->p setting ProbMax = 0 " << endl;
setProbMax( 0.0 );
}
}
void EvtLb2plnuLCSR::init()
{
if ( getNArg() != 4 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtLb2plnuLCSR generator expected "
<< " 4 arguments but found:" << getNArg() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( getNDaug() != 3 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Wrong number of daughters in EvtLb2plnu.cc "
<< " 3 daughters expected but found: " << getNDaug() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
//We expect the parent to be a dirac particle
//and the daughters to be X lepton neutrino
EvtSpinType::spintype parenttype = EvtPDL::getSpinType( getParentId() );
EvtSpinType::spintype baryontype = EvtPDL::getSpinType( getDaug( 0 ) );
EvtSpinType::spintype leptontype = EvtPDL::getSpinType( getDaug( 1 ) );
EvtSpinType::spintype neutrinotype = EvtPDL::getSpinType( getDaug( 2 ) );
if ( parenttype != EvtSpinType::DIRAC ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtLb2plnuLCSR generator expected "
<< " a DIRAC parent, found:" << EvtPDL::name( getParentId() )
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( leptontype != EvtSpinType::DIRAC ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtLb2plnuLCSR generator expected "
<< " a DIRAC 2nd daughter, found:" << EvtPDL::name( getDaug( 1 ) )
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( neutrinotype != EvtSpinType::NEUTRINO ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtLb2plnuLCSR generator expected "
<< " a NEUTRINO 3rd daughter, found:" << EvtPDL::name( getDaug( 2 ) )
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
//set ffmodel
ffmodel = new EvtLb2plnuLCSRFF;
if ( baryontype == EvtSpinType::DIRAC ) {
calcamp = new EvtSLBaryonAmp;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Wrong baryon spin type in EvtLb2plnuLCSR.cc "
<< "Expected spin type " << EvtSpinType::DIRAC
<< ", found spin type " << baryontype << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
diff --git a/src/EvtGenModels/EvtLb2plnuLCSRFF.cpp b/src/EvtGenModels/EvtLb2plnuLCSRFF.cpp
index 7cdc83b..08a2159 100644
--- a/src/EvtGenModels/EvtLb2plnuLCSRFF.cpp
+++ b/src/EvtGenModels/EvtLb2plnuLCSRFF.cpp
@@ -1,137 +1,116 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtLb2plnuLCSRFF.cc
-//
-// Description: Routine to implement Lb->p l nu form factors
-// according to predictions from LCSR
-//
-// Modification history:
-//
-// William Sutcliffe 27/07/2013 Module created
-//
-//
-//--------------------------------------------------------------------------
#include "EvtGenModels/EvtLb2plnuLCSRFF.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <math.h>
#include <stdlib.h>
#include <string>
using std::endl;
void EvtLb2plnuLCSRFF::getdiracff( EvtId parent, EvtId daught, double q2,
double /* mass */, double* f1, double* f2,
double* f3, double* g1, double* g2, double* g3 )
{
// Define Event IDs for Lb and p
static EvtId LAMB = EvtPDL::getId( "Lambda_b0" );
static EvtId LAMBB = EvtPDL::getId( "anti-Lambda_b0" );
static EvtId PRO = EvtPDL::getId( "p+" );
static EvtId PROB = EvtPDL::getId( "anti-p-" );
if ( ( parent == LAMB && daught == PRO ) ||
( parent == LAMBB && daught == PROB ) ) {
// Calculate Lb->p form factors based on LCSR predictions
// Predictions taken from A. Khodjamirian, C. Klein, T. Mannel and Y.-M. Wang, arXiv.1108.2971 (2011)
double MLamB = EvtPDL::getMass( parent );
double MPro = EvtPDL::getMass( daught );
double tplus = ( MLamB + MPro ) * ( MLamB + MPro );
double tminus = ( MLamB - MPro ) * ( MLamB - MPro );
double t0 = tplus - sqrt( tplus - tminus ) * sqrt( tplus + 6 );
double z = ( sqrt( tplus - q2 ) - sqrt( tplus - t0 ) ) /
( sqrt( tplus - q2 ) + sqrt( tplus - t0 ) );
double z0 = ( sqrt( tplus ) - sqrt( tplus - t0 ) ) /
( sqrt( tplus ) + sqrt( tplus - t0 ) );
// FF parameters
double f10 = 0.14;
double bf1 = -1.49;
double f20 = -0.054;
double bf2 = -14.0;
double g10 = 0.14;
double bg1 = -4.05;
double g20 = -0.028;
double bg2 = -20.2;
//FF paramterisation
double F1 = ( f10 / ( 1.0 - q2 / ( 5.325 * 5.325 ) ) ) *
( 1.0 + bf1 * ( z - z0 ) );
double F2 = ( f20 / ( 1.0 - q2 / ( 5.325 * 5.325 ) ) ) *
( 1.0 + bf2 * ( z - z0 ) );
double G1 = ( g10 / ( 1.0 - q2 / ( 5.723 * 5.723 ) ) ) *
( 1.0 + bg1 * ( z - z0 ) );
double G2 = ( g20 / ( 1.0 - q2 / ( 5.723 * 5.723 ) ) ) *
( 1.0 + bg2 * ( z - z0 ) );
*f1 = F1 - ( MLamB + MPro ) * F2 / MLamB;
*f2 = F2;
*f3 = MPro * ( F2 ) / MLamB;
*g1 = G1 - ( MLamB - MPro ) * G2 / MLamB;
*g2 = -G2;
*g3 = -MPro * G2 / MLamB;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Only Lb -> p transitions allowed in EvtLb2plnuLCSRFF.\n";
::abort();
}
return;
}
void EvtLb2plnuLCSRFF::getraritaff( EvtId, EvtId, double, double, double*,
double*, double*, double*, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtLb2plnuLCSRFF.\n";
::abort();
}
void EvtLb2plnuLCSRFF::getscalarff( EvtId, EvtId, double, double, double*,
double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getscalarff in EvtLb2plnuLCSRFF.\n";
::abort();
}
void EvtLb2plnuLCSRFF::getvectorff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getvectorff in EvtLb2plnuLCSRFF.\n";
::abort();
}
void EvtLb2plnuLCSRFF::gettensorff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :gettensorff in EvtLb2plnuLCSRFF.\n";
::abort();
}
void EvtLb2plnuLCSRFF::getbaryonff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtLb2plnuLCSRFF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtLb2plnuLQCD.cpp b/src/EvtGenModels/EvtLb2plnuLQCD.cpp
index 4f88758..7f45adc 100644
--- a/src/EvtGenModels/EvtLb2plnuLQCD.cpp
+++ b/src/EvtGenModels/EvtLb2plnuLQCD.cpp
@@ -1,180 +1,155 @@
-
-
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtLb2plnuLQCD.cc
-//
-// Description: Routine to implement Lb->p l nu semileptonic decays using form factor predictions from LQCD.
-// The form factors are from:
-// W. Detmold, C-J. Lin, S. Meinel and M.Wingate, arXiv:1306.0446 (2013)
-//
-//
-// Modification history:
-//
-// William Sutcliffe 27/07/2013 Module created
-//
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtLb2plnuLQCD.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtLb2plnuLQCDFF.hh"
#include <stdlib.h>
#include <string>
using namespace std;
#ifdef D0
#undef D0
#endif
EvtLb2plnuLQCD::EvtLb2plnuLQCD() : ffmodel( 0 ), calcamp( 0 )
{
}
EvtLb2plnuLQCD::~EvtLb2plnuLQCD()
{
delete ffmodel;
ffmodel = 0;
delete calcamp;
calcamp = 0;
}
std::string EvtLb2plnuLQCD::getName()
{
return "Lb2plnuLQCD";
}
EvtDecayBase* EvtLb2plnuLQCD::clone()
{
return new EvtLb2plnuLQCD;
}
void EvtLb2plnuLQCD::decay( EvtParticle* p )
{
//This is a kludge to avoid warnings because the K_2* mass becomes to large.
static EvtIdSet regenerateMasses( "K_2*+", "K_2*-", "K_2*0", "anti-K_2*0",
"K_1+", "K_1-", "K_10", "anti-K_10",
"D'_1+", "D'_1-", "D'_10", "anti-D'_10" );
if ( regenerateMasses.contains( getDaug( 0 ) ) ) {
p->resetFirstOrNot();
}
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtComplex r00( getArg( 0 ), 0.0 );
EvtComplex r01( getArg( 1 ), 0.0 );
EvtComplex r10( getArg( 2 ), 0.0 );
EvtComplex r11( getArg( 3 ), 0.0 );
calcamp->CalcAmp( p, _amp2, ffmodel, r00, r01, r10, r11 );
}
void EvtLb2plnuLQCD::initProbMax()
{
static EvtId LAMB = EvtPDL::getId( "Lambda_b0" );
static EvtId LAMBB = EvtPDL::getId( "anti-Lambda_b0" );
static EvtId PRO = EvtPDL::getId( "p+" );
static EvtId PROB = EvtPDL::getId( "anti-p-" );
EvtId parnum, barnum;
parnum = getParentId();
barnum = getDaug( 0 );
if ( ( parnum == LAMB && barnum == PRO ) ||
( parnum == LAMBB && barnum == PROB ) ) {
setProbMax( 22000.0 );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Decay does not have Lb->p setting ProbMax = 0 " << endl;
setProbMax( 0.0 );
}
}
void EvtLb2plnuLQCD::init()
{
if ( getNArg() != 4 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtLb2plnuLQCD generator expected "
<< " 4 arguments but found:" << getNArg() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( getNDaug() != 3 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Wrong number of daughters in EvtLb2plnu.cc "
<< " 3 daughters expected but found: " << getNDaug() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
//We expect the parent to be a dirac particle
//and the daughters to be X lepton neutrino
EvtSpinType::spintype parenttype = EvtPDL::getSpinType( getParentId() );
EvtSpinType::spintype baryontype = EvtPDL::getSpinType( getDaug( 0 ) );
EvtSpinType::spintype leptontype = EvtPDL::getSpinType( getDaug( 1 ) );
EvtSpinType::spintype neutrinotype = EvtPDL::getSpinType( getDaug( 2 ) );
if ( parenttype != EvtSpinType::DIRAC ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtLb2plnuLQCD generator expected "
<< " a DIRAC parent, found:" << EvtPDL::name( getParentId() )
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( leptontype != EvtSpinType::DIRAC ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtLb2plnuLQCD generator expected "
<< " a DIRAC 2nd daughter, found:" << EvtPDL::name( getDaug( 1 ) )
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( neutrinotype != EvtSpinType::NEUTRINO ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtLb2plnuLQCD generator expected "
<< " a NEUTRINO 3rd daughter, found:" << EvtPDL::name( getDaug( 2 ) )
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
//set ffmodel
ffmodel = new EvtLb2plnuLQCDFF;
if ( baryontype == EvtSpinType::DIRAC ) {
calcamp = new EvtSLBaryonAmp;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Wrong baryon spin type in EvtLb2plnuLQCD.cc "
<< "Expected spin type " << EvtSpinType::DIRAC
<< ", found spin type " << baryontype << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
diff --git a/src/EvtGenModels/EvtLb2plnuLQCDFF.cpp b/src/EvtGenModels/EvtLb2plnuLQCDFF.cpp
index 2433721..88c029d 100644
--- a/src/EvtGenModels/EvtLb2plnuLQCDFF.cpp
+++ b/src/EvtGenModels/EvtLb2plnuLQCDFF.cpp
@@ -1,121 +1,100 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtLb2plnuLQCD.cc
-//
-// Description: Routine to implement Lb->p l nu form factors
-// according to predictions from LQCD
-//
-// Modification history:
-//
-// William Sutcliffe 27/07/2013 Module created
-//
-//
-//--------------------------------------------------------------------------
#include "EvtGenModels/EvtLb2plnuLQCDFF.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <math.h>
#include <stdlib.h>
#include <string>
using std::endl;
void EvtLb2plnuLQCDFF::getdiracff( EvtId parent, EvtId daught, double q2,
double /* mass */, double* f1, double* f2,
double* f3, double* g1, double* g2, double* g3 )
{
// Define Event IDs for Lb and p
static EvtId LAMB = EvtPDL::getId( "Lambda_b0" );
static EvtId LAMBB = EvtPDL::getId( "anti-Lambda_b0" );
static EvtId PRO = EvtPDL::getId( "p+" );
static EvtId PROB = EvtPDL::getId( "anti-p-" );
if ( ( parent == LAMB && daught == PRO ) ||
( parent == LAMBB && daught == PROB ) ) {
// Calculate Lb->p form factors based on LQCD predictions
// Predictions taken from W. Detmold, C-J. Lin, S. Meinel and M.Wingate, arXiv:1306.0446 (2013)
double MLamB = EvtPDL::getMass( parent );
double MPro = EvtPDL::getMass( daught );
double Y1 = 2.97;
double X1 = 1.36;
double Y2 = -0.28;
double X2 = 0.81;
double EnMn = ( MLamB * MLamB + MPro * MPro - q2 ) / ( 2.0 * MLamB ) -
MPro;
double F1 = Y1 / ( ( X1 + EnMn ) * ( X1 + EnMn ) );
double F2 = Y2 / ( ( X2 + EnMn ) * ( X2 + EnMn ) );
double pi = atan( 1.0 ) * 4.0;
double alphas = 0.214;
double cv = 2.0 / 3.0 * alphas / pi;
double cgam = 1.0 - ( alphas / pi ) * ( 4.0 / 3.0 );
*f1 = cgam * ( F1 - F2 );
*f2 = cv * F1 + ( 2.0 * cgam + cv ) * F2;
*f3 = 0.0;
*g1 = cgam * ( F1 + F2 );
*g2 = -cv * F1 + ( 2.0 * cgam + cv ) * F2;
*g3 = 0.0;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Only Lb -> p transitions allowed in EvtLb2plnuLQCDFF.\n";
::abort();
}
return;
}
void EvtLb2plnuLQCDFF::getraritaff( EvtId, EvtId, double, double, double*,
double*, double*, double*, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtLb2plnuLQCDFF.\n";
::abort();
}
void EvtLb2plnuLQCDFF::getscalarff( EvtId, EvtId, double, double, double*,
double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getscalarff in EvtLb2plnuLQCDFF.\n";
::abort();
}
void EvtLb2plnuLQCDFF::getvectorff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getvectorff in EvtLb2plnuLQCDFF.\n";
::abort();
}
void EvtLb2plnuLQCDFF::gettensorff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :gettensorff in EvtLb2plnuLQCDFF.\n";
::abort();
}
void EvtLb2plnuLQCDFF::getbaryonff( EvtId, EvtId, double, double, double*,
double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtLb2plnuLQCDFF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtLi2Spence.cpp b/src/EvtGenModels/EvtLi2Spence.cpp
index cb79515..f48a89c 100644
--- a/src/EvtGenModels/EvtLi2Spence.cpp
+++ b/src/EvtGenModels/EvtLi2Spence.cpp
@@ -1,145 +1,144 @@
-
#include <math.h>
const double a1 = -0.250000000000000;
const double a2 = -0.111111111111111;
const double a3 = -0.010000000000000;
const double a4 = -0.017006802721088;
const double a5 = -0.019444444444444;
const double a6 = -0.020661157024793;
const double a7 = -0.021417300648069;
const double a8 = -0.021948866377231;
const double a9 = -0.022349233811171;
const double a10 = -0.022663689135191;
const double zeta2 = 1.644934066848226;
double li2spence( double x )
{
double result = 0;
double xr = x;
double xi = 0;
double r2 = xr * xr + xi * xi;
double y, z, z2, sp;
if ( r2 > 1. && ( xr / r2 ) > 0.5 ) {
y = ( x - 1.0 ) / x;
z = -log( 1.0 - y );
z2 = z * z;
sp =
z * ( 1.0 +
a1 * z *
( 1.0 +
a2 * z *
( 1.0 +
a3 * z2 *
( 1.0 +
a4 * z2 *
( 1.0 +
a5 * z2 *
( 1.0 +
a6 * z2 *
( 1.0 +
a7 * z2 *
( 1.0 +
a8 * z2 *
( 1.0 +
a9 * z2 *
( 1.0 +
a10 * z2 ) ) ) ) ) ) ) ) ) ) +
zeta2 - log( x ) * log( 1.0 - x ) + 0.5 * log( x ) * log( x );
result = sp;
} else if ( r2 > 1 && ( xr / r2 ) <= 0.5 ) {
y = 1.0 / x;
z = -log( 1.0 - y );
z2 = z * z;
sp =
-z *
( 1.0 +
a1 * z *
( 1.0 +
a2 * z *
( 1.0 +
a3 * z2 *
( 1.0 +
a4 * z2 *
( 1.0 +
a5 * z2 *
( 1.0 +
a6 * z2 *
( 1.0 +
a7 * z2 *
( 1.0 +
a8 * z2 *
( 1.0 +
a9 * z2 *
( 1.0 +
a10 * z2 ) ) ) ) ) ) ) ) ) ) +
zeta2 - 0.5 * log( -x ) * log( -x );
result = sp;
} else if ( r2 == 1 && xi == 0 ) {
sp = zeta2;
result = sp;
} else if ( r2 <= 1 && xr > 0.5 ) {
y = 1.0 - x;
z = -log( 1.0 - y );
z2 = z * z;
sp =
-z *
( 1.0 +
a1 * z *
( 1.0 +
a2 * z *
( 1.0 +
a3 * z2 *
( 1.0 +
a4 * z2 *
( 1.0 +
a5 * z2 *
( 1.0 +
a6 * z2 *
( 1.0 +
a7 * z2 *
( 1.0 +
a8 * z2 *
( 1.0 +
a9 * z2 *
( 1.0 +
a10 * z2 ) ) ) ) ) ) ) ) ) ) +
zeta2 - log( x ) * log( 1.0 - x );
result = sp;
} else if ( r2 <= 1 && xr <= 0.5 ) {
y = x;
z = -log( 1.0 - y );
z2 = z * z;
sp =
z *
( 1.0 +
a1 * z *
( 1.0 +
a2 * z *
( 1.0 +
a3 * z2 *
( 1.0 +
a4 * z2 *
( 1.0 +
a5 * z2 *
( 1.0 +
a6 * z2 *
( 1.0 +
a7 * z2 *
( 1.0 +
a8 * z2 *
( 1.0 +
a9 * z2 *
( 1.0 +
a10 * z2 ) ) ) ) ) ) ) ) ) );
result = sp;
}
return result;
}
diff --git a/src/EvtGenModels/EvtMelikhov.cpp b/src/EvtGenModels/EvtMelikhov.cpp
index 2aedaab..f9b5f79 100644
--- a/src/EvtGenModels/EvtMelikhov.cpp
+++ b/src/EvtGenModels/EvtMelikhov.cpp
@@ -1,68 +1,47 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtMelikhov.cc
-//
-// Description: Routine to implement semileptonic B->D*lnu decays according
-// to the model HQET
-//
-// Modification history:
-//
-// DJL April 20, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtMelikhov.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
#include "EvtGenModels/EvtMelikhovFF.hh"
#include <stdlib.h>
#include <string>
std::string EvtMelikhov::getName()
{
return "MELIKHOV";
}
EvtDecayBase* EvtMelikhov::clone()
{
return new EvtMelikhov;
}
void EvtMelikhov::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
calcamp->CalcAmp( p, _amp2, Melikhovffmodel.get() );
}
void EvtMelikhov::init()
{
checkNArg( 1 );
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be X lepton neutrino
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
Melikhovffmodel = std::make_unique<EvtMelikhovFF>( getArg( 0 ) );
calcamp = std::make_unique<EvtSemiLeptonicVectorAmp>();
}
diff --git a/src/EvtGenModels/EvtMelikhovFF.cpp b/src/EvtGenModels/EvtMelikhovFF.cpp
index a069333..6aa42c6 100644
--- a/src/EvtGenModels/EvtMelikhovFF.cpp
+++ b/src/EvtGenModels/EvtMelikhovFF.cpp
@@ -1,146 +1,126 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtMelikhovFF.cc
-//
-// Description: form factors for B->D*lnu according to HQET
-//
-// Modification history:
-//
-// DJL April 17, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtMelikhovFF.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <cmath>
#include <cstdlib>
#include <string>
EvtMelikhovFF::EvtMelikhovFF( double arg1 )
{
whichfit = int( arg1 + 0.1 );
}
void EvtMelikhovFF::getvectorff( EvtId parent, EvtId, double t, double mass,
double* a1f, double* a2f, double* vf,
double* a0f )
{
double ma1( 0.0 ), ra1( 0.0 ), na1( 0.0 );
double ma2( 0.0 ), ra2( 0.0 ), na2( 0.0 );
double mv( 0.0 ), rv( 0.0 ), nv( 0.0 );
if ( whichfit == 1 ) {
ma1 = 7.07;
ra1 = 0.27;
na1 = 2.65;
ma2 = 6.13;
ra2 = 0.25;
na2 = 2.17;
mv = 6.28;
rv = 0.30;
nv = 2.36;
}
if ( whichfit == 2 ) {
ma1 = 6.78;
ra1 = 0.20;
na1 = 2.65;
ma2 = 6.00;
ra2 = 0.19;
na2 = 2.34;
mv = 6.22;
rv = 0.20;
nv = 2.46;
}
if ( whichfit == 3 ) {
ma1 = 6.50;
ra1 = 0.21;
na1 = 2.70;
ma2 = 5.90;
ra2 = 0.20;
na2 = 2.45;
mv = 5.90;
rv = 0.21;
nv = 2.35;
}
if ( whichfit == 4 ) {
ma1 = 5.68;
ra1 = 0.29;
na1 = 1.67;
ma2 = 5.36;
ra2 = 0.28;
na2 = 1.67;
mv = 5.46;
rv = 0.29;
nv = 1.73;
}
double mb = EvtPDL::getMeanMass( parent );
//double w = ((mb*mb)+(mass*mass)-t)/(2.0*mb*mass);
double melr = mass / mb;
double mely = t / ( mb * mb );
*a1f = ( ( 1.0 + melr * melr - mely ) / ( 1 + melr ) ) * ra1 /
pow( 1.0 - ( t / ( ma1 * ma1 ) ), na1 );
*a2f = ( 1 + melr ) *
( ( 1.0 - melr * melr - mely ) /
( ( 1 + melr ) * ( 1 + melr ) - mely ) ) *
ra2 / pow( 1.0 - ( t / ( ma2 * ma2 ) ), na2 );
*vf = ( 1 + melr ) * rv / pow( 1.0 - ( t / ( mv * mv ) ), nv );
*a0f = 0.0;
return;
}
void EvtMelikhovFF::getscalarff( EvtId, EvtId, double, double, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getvectorff in EvtMelikhovFF.\n";
::abort();
}
void EvtMelikhovFF::gettensorff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :gettensorff in EvtMelikhovFF.\n";
::abort();
}
void EvtMelikhovFF::getbaryonff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtMelikhovFF.\n";
::abort();
}
void EvtMelikhovFF::getdiracff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getdiracff in EvtMelikhovFF.\n";
::abort();
}
void EvtMelikhovFF::getraritaff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double*, double*,
double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtMelikhovFF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtModelReg.cpp b/src/EvtGenModels/EvtModelReg.cpp
index 400a689..640c545 100644
--- a/src/EvtGenModels/EvtModelReg.cpp
+++ b/src/EvtGenModels/EvtModelReg.cpp
@@ -1,339 +1,319 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtModel.cc
-//
-// Description:
-//
-// Modification history:
-//
-// RYD September 25, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtModelReg.hh"
#include "EvtGenBase/EvtModel.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenModels/EvtBBScalar.hh"
#include "EvtGenModels/EvtBHadronic.hh"
#include "EvtGenModels/EvtBLLNuL.hh"
#include "EvtGenModels/EvtBTo3piCP.hh"
#include "EvtGenModels/EvtBTo4piCP.hh"
#include "EvtGenModels/EvtBToDDalitzCPK.hh"
#include "EvtGenModels/EvtBToDiBaryonlnupQCD.hh"
#include "EvtGenModels/EvtBToKpipiCP.hh"
#include "EvtGenModels/EvtBToPlnuBK.hh"
#include "EvtGenModels/EvtBToVlnuBall.hh"
#include "EvtGenModels/EvtBaryonPCR.hh"
#include "EvtGenModels/EvtBcBsNPi.hh"
#include "EvtGenModels/EvtBcBsStarNPi.hh"
#include "EvtGenModels/EvtBcPsiNPi.hh"
#include "EvtGenModels/EvtBcSMuNu.hh"
#include "EvtGenModels/EvtBcTMuNu.hh"
#include "EvtGenModels/EvtBcToNPi.hh"
#include "EvtGenModels/EvtBcVHad.hh"
#include "EvtGenModels/EvtBcVMuNu.hh"
#include "EvtGenModels/EvtBcVNpi.hh"
#include "EvtGenModels/EvtBsMuMuKK.hh"
#include "EvtGenModels/EvtBsquark.hh"
#include "EvtGenModels/EvtBto2piCPiso.hh"
#include "EvtGenModels/EvtBtoKD3P.hh"
#include "EvtGenModels/EvtBtoKpiCPiso.hh"
#include "EvtGenModels/EvtBtoXsEtap.hh"
#include "EvtGenModels/EvtBtoXsgamma.hh"
#include "EvtGenModels/EvtBtoXsll.hh"
#include "EvtGenModels/EvtCBTo3piMPP.hh"
#include "EvtGenModels/EvtCBTo3piP00.hh"
#include "EvtGenModels/EvtD0gammaDalitz.hh"
#include "EvtGenModels/EvtD0mixDalitz.hh"
#include "EvtGenModels/EvtDDalitz.hh"
#include "EvtGenModels/EvtDMix.hh"
#include "EvtGenModels/EvtDToKpienu.hh"
#include "EvtGenModels/EvtEta2MuMuGamma.hh"
#include "EvtGenModels/EvtEtaDalitz.hh"
#include "EvtGenModels/EvtFlatQ2.hh"
#include "EvtGenModels/EvtFlatSqDalitz.hh"
#include "EvtGenModels/EvtGenericDalitz.hh"
#include "EvtGenModels/EvtGoityRoberts.hh"
#include "EvtGenModels/EvtHQET.hh"
#include "EvtGenModels/EvtHQET2.hh"
#include "EvtGenModels/EvtHelAmp.hh"
#include "EvtGenModels/EvtHypNonLepton.hh"
#include "EvtGenModels/EvtISGW.hh"
#include "EvtGenModels/EvtISGW2.hh"
#include "EvtGenModels/EvtKKLambdaC.hh"
#include "EvtGenModels/EvtKStopizmumu.hh"
#include "EvtGenModels/EvtKstarnunu.hh"
#include "EvtGenModels/EvtKstarstargamma.hh"
#include "EvtGenModels/EvtLNuGamma.hh"
#include "EvtGenModels/EvtLambdaB2LambdaV.hh"
#include "EvtGenModels/EvtLambdaP_BarGamma.hh"
#include "EvtGenModels/EvtLambdacPHH.hh"
#include "EvtGenModels/EvtLb2Baryonlnu.hh"
#include "EvtGenModels/EvtLb2Lll.hh"
#include "EvtGenModels/EvtLb2plnuLCSR.hh"
#include "EvtGenModels/EvtLb2plnuLQCD.hh"
#include "EvtGenModels/EvtMelikhov.hh"
#include "EvtGenModels/EvtMultibody.hh"
#include "EvtGenModels/EvtOmegaDalitz.hh"
#include "EvtGenModels/EvtPVVCPLH.hh"
#include "EvtGenModels/EvtPartWave.hh"
#include "EvtGenModels/EvtPhiDalitz.hh"
#include "EvtGenModels/EvtPhsp.hh"
#include "EvtGenModels/EvtPhspFlatLifetime.hh"
#include "EvtGenModels/EvtPi0Dalitz.hh"
#include "EvtGenModels/EvtPropSLPole.hh"
#include "EvtGenModels/EvtPsi2JpsiPiPi.hh"
#include "EvtGenModels/EvtPto3P.hh"
#include "EvtGenModels/EvtRareLbToLll.hh"
#include "EvtGenModels/EvtSLBKPole.hh"
#include "EvtGenModels/EvtSLN.hh"
#include "EvtGenModels/EvtSLPole.hh"
#include "EvtGenModels/EvtSSDCP.hh"
#include "EvtGenModels/EvtSSD_DirectCP.hh"
#include "EvtGenModels/EvtSSSCP.hh"
#include "EvtGenModels/EvtSSSCPT.hh"
#include "EvtGenModels/EvtSSSCPpng.hh"
#include "EvtGenModels/EvtSTS.hh"
#include "EvtGenModels/EvtSTSCP.hh"
#include "EvtGenModels/EvtSVP.hh"
#include "EvtGenModels/EvtSVPCP.hh"
#include "EvtGenModels/EvtSVPHelAmp.hh"
#include "EvtGenModels/EvtSVPHelCPMix.hh"
#include "EvtGenModels/EvtSVS.hh"
#include "EvtGenModels/EvtSVSCP.hh"
#include "EvtGenModels/EvtSVSCPLH.hh"
#include "EvtGenModels/EvtSVSCPiso.hh"
#include "EvtGenModels/EvtSVSNONCPEIGEN.hh"
#include "EvtGenModels/EvtSVVCP.hh"
#include "EvtGenModels/EvtSVVCPLH.hh"
#include "EvtGenModels/EvtSVVHelAmp.hh"
#include "EvtGenModels/EvtSVVHelCPMix.hh"
#include "EvtGenModels/EvtSVVNONCPEIGEN.hh"
#include "EvtGenModels/EvtSingleParticle.hh"
#include "EvtGenModels/EvtSll.hh"
#include "EvtGenModels/EvtTSS.hh"
#include "EvtGenModels/EvtTVP.hh"
#include "EvtGenModels/EvtTVSPwave.hh"
#include "EvtGenModels/EvtTauHadnu.hh"
#include "EvtGenModels/EvtTauScalarnu.hh"
#include "EvtGenModels/EvtTauVectornu.hh"
#include "EvtGenModels/EvtTaulnunu.hh"
#include "EvtGenModels/EvtVPHOtoVISRHi.hh"
#include "EvtGenModels/EvtVSPPwave.hh"
#include "EvtGenModels/EvtVSS.hh"
#include "EvtGenModels/EvtVSSBMixCPT.hh"
#include "EvtGenModels/EvtVSSMix.hh"
#include "EvtGenModels/EvtVVP.hh"
#include "EvtGenModels/EvtVVPIPI_WEIGHTED.hh"
#include "EvtGenModels/EvtVVSPwave.hh"
#include "EvtGenModels/EvtVVpipi.hh"
#include "EvtGenModels/EvtVectorIsr.hh"
#include "EvtGenModels/EvtVll.hh"
#include "EvtGenModels/EvtVtoSll.hh"
#include "EvtGenModels/EvtVub.hh"
#include "EvtGenModels/EvtVubBLNP.hh"
#include "EvtGenModels/EvtVubBLNPHybrid.hh"
#include "EvtGenModels/EvtVubHybrid.hh"
#include "EvtGenModels/EvtVubNLO.hh"
#include "EvtGenModels/EvtXPsiGamma.hh"
#include "EvtGenModels/EvtY3SToY1SpipiMoxhay.hh"
#include "EvtGenModels/EvtYmSToYnSpipiCLEO.hh"
#include "EvtGenModels/EvtbTosllAli.hh"
#include "EvtGenModels/EvtbTosllBall.hh"
#include "EvtGenModels/EvtbTosllMS.hh"
#include "EvtGenModels/EvtbTosllMSExt.hh"
#include "EvtGenModels/Evtbs2llGammaISRFSR.hh"
#include "EvtGenModels/Evtbs2llGammaMNT.hh"
#include "EvtGenModels/EvtbsToLLLL.hh"
#include "EvtGenModels/EvtbsToLLLLHyperCP.hh"
#include <assert.h>
#include <ctype.h>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <stdlib.h>
using std::cout;
using std::endl;
using std::fstream;
EvtModelReg::EvtModelReg( const std::list<EvtDecayBase*>* extraModels )
{
EvtModel& modelist = EvtModel::instance();
if ( extraModels ) {
for ( std::list<EvtDecayBase*>::const_iterator it = extraModels->begin();
it != extraModels->end(); ++it ) {
modelist.registerModel( *it );
}
}
modelist.registerModel( new EvtBBScalar );
modelist.registerModel( new EvtLambdaP_BarGamma );
modelist.registerModel( new EvtFlatQ2 );
modelist.registerModel( new EvtTauHadnu );
modelist.registerModel( new EvtTauVectornu );
modelist.registerModel( new EvtVVP );
modelist.registerModel( new EvtSLN );
modelist.registerModel( new EvtISGW2 );
modelist.registerModel( new EvtMelikhov );
modelist.registerModel( new EvtSLPole );
modelist.registerModel( new EvtPropSLPole );
modelist.registerModel( new EvtSLBKPole );
modelist.registerModel( new EvtHQET );
modelist.registerModel( new EvtHQET2 );
modelist.registerModel( new EvtISGW );
modelist.registerModel( new EvtBHadronic );
modelist.registerModel( new EvtVSS );
modelist.registerModel( new EvtVSSMix );
modelist.registerModel( new EvtVSSBMixCPT );
modelist.registerModel( new EvtVSPPwave );
modelist.registerModel( new EvtGoityRoberts );
modelist.registerModel( new EvtSVS );
modelist.registerModel( new EvtTSS );
modelist.registerModel( new EvtTVSPwave );
modelist.registerModel( new EvtSVVHelAmp );
modelist.registerModel( new EvtSVPHelAmp );
modelist.registerModel( new EvtSVPCP );
modelist.registerModel( new EvtVVSPwave );
modelist.registerModel( new EvtDDalitz );
modelist.registerModel( new EvtOmegaDalitz );
modelist.registerModel( new EvtEtaDalitz );
modelist.registerModel( new EvtPhsp );
modelist.registerModel( new EvtBtoXsgamma );
modelist.registerModel( new EvtBtoXsll );
modelist.registerModel( new EvtBtoXsEtap );
modelist.registerModel( new EvtSSSCP );
modelist.registerModel( new EvtSSSCPpng );
modelist.registerModel( new EvtSTSCP );
modelist.registerModel( new EvtSTS );
modelist.registerModel( new EvtSSSCPT );
modelist.registerModel( new EvtSVSCP );
modelist.registerModel( new EvtSSDCP );
modelist.registerModel( new EvtSVSNONCPEIGEN );
modelist.registerModel( new EvtSVVNONCPEIGEN );
modelist.registerModel( new EvtSVVCP );
modelist.registerModel( new EvtSVVCPLH );
modelist.registerModel( new EvtSVSCPLH );
modelist.registerModel( new EvtSll );
modelist.registerModel( new EvtVll );
modelist.registerModel( new EvtTaulnunu );
modelist.registerModel( new EvtTauScalarnu );
modelist.registerModel( new EvtKstarnunu );
modelist.registerModel( new EvtbTosllBall );
modelist.registerModel( new EvtBto2piCPiso );
modelist.registerModel( new EvtBtoKpiCPiso );
modelist.registerModel( new EvtSVSCPiso );
modelist.registerModel( new EvtSingleParticle );
modelist.registerModel( new EvtVectorIsr );
modelist.registerModel( new EvtPi0Dalitz );
modelist.registerModel( new EvtHelAmp );
modelist.registerModel( new EvtPartWave );
modelist.registerModel( new EvtVVpipi );
modelist.registerModel( new EvtY3SToY1SpipiMoxhay );
modelist.registerModel( new EvtYmSToYnSpipiCLEO );
modelist.registerModel( new EvtBsquark );
modelist.registerModel( new EvtPhiDalitz );
modelist.registerModel( new EvtBToPlnuBK );
modelist.registerModel( new EvtBToVlnuBall );
modelist.registerModel( new EvtVVPIPI_WEIGHTED );
modelist.registerModel( new EvtVPHOtoVISRHi );
modelist.registerModel( new EvtBTo4piCP );
modelist.registerModel( new EvtBTo3piCP );
modelist.registerModel( new EvtCBTo3piP00 );
modelist.registerModel( new EvtCBTo3piMPP );
modelist.registerModel( new EvtBToKpipiCP );
modelist.registerModel( new EvtLb2Lll );
modelist.registerModel( new EvtRareLbToLll );
modelist.registerModel( new EvtHypNonLepton );
modelist.registerModel( new EvtSVVHelCPMix );
modelist.registerModel( new EvtSVPHelCPMix );
modelist.registerModel( new EvtLNuGamma );
modelist.registerModel( new EvtKstarstargamma );
modelist.registerModel( new EvtVub );
modelist.registerModel( new EvtVubHybrid );
modelist.registerModel( new EvtVubNLO );
modelist.registerModel( new EvtVubBLNP );
modelist.registerModel( new EvtVubBLNPHybrid );
modelist.registerModel( new EvtPto3P );
modelist.registerModel( new EvtBtoKD3P );
modelist.registerModel( new EvtKKLambdaC );
modelist.registerModel( new EvtMultibody );
modelist.registerModel( new EvtDMix );
modelist.registerModel( new EvtD0mixDalitz );
modelist.registerModel( new EvtD0gammaDalitz );
modelist.registerModel( new EvtEta2MuMuGamma );
modelist.registerModel( new EvtbTosllAli );
modelist.registerModel( new EvtBaryonPCR );
modelist.registerModel( new EvtBToDDalitzCPK );
modelist.registerModel( new EvtLambdaB2LambdaV );
modelist.registerModel( new EvtLambda2PPiForLambdaB2LambdaV );
modelist.registerModel( new EvtV2VpVmForLambdaB2LambdaV );
modelist.registerModel( new EvtPVVCPLH );
modelist.registerModel( new EvtSSD_DirectCP );
modelist.registerModel( new EvtBcToNPi( true ) ); // true = print author info
modelist.registerModel( new EvtBcPsiNPi );
modelist.registerModel( new EvtBcBsNPi );
modelist.registerModel( new EvtBcBsStarNPi );
modelist.registerModel( new EvtBcSMuNu );
modelist.registerModel( new EvtBcVMuNu );
modelist.registerModel( new EvtBcTMuNu );
modelist.registerModel( new EvtBcVNpi );
modelist.registerModel( new EvtSVP );
modelist.registerModel( new EvtTVP );
modelist.registerModel( new EvtXPsiGamma );
modelist.registerModel( new EvtbsToLLLL );
modelist.registerModel( new EvtbsToLLLLHyperCP );
modelist.registerModel( new EvtBLLNuL );
modelist.registerModel( new EvtKStopizmumu );
modelist.registerModel( new EvtVtoSll );
modelist.registerModel( new EvtBsMuMuKK );
modelist.registerModel( new EvtGenericDalitz() );
modelist.registerModel( new EvtBcVHad );
modelist.registerModel( new Evtbs2llGammaMNT );
modelist.registerModel( new Evtbs2llGammaISRFSR );
modelist.registerModel( new EvtbTosllMS );
modelist.registerModel( new EvtbTosllMSExt );
modelist.registerModel( new EvtLb2plnuLQCD );
modelist.registerModel( new EvtLb2plnuLCSR );
modelist.registerModel( new EvtLb2Baryonlnu );
modelist.registerModel( new EvtBToDiBaryonlnupQCD );
modelist.registerModel( new EvtFlatSqDalitz );
modelist.registerModel( new EvtPhspFlatLifetime );
modelist.registerModel( new EvtLambdacPHH );
modelist.registerModel( new EvtDToKpienu );
modelist.registerModel( new EvtPsi2JpsiPiPi );
}
diff --git a/src/EvtGenModels/EvtOmegaDalitz.cpp b/src/EvtGenModels/EvtOmegaDalitz.cpp
index 928cfd9..f11030f 100644
--- a/src/EvtGenModels/EvtOmegaDalitz.cpp
+++ b/src/EvtGenModels/EvtOmegaDalitz.cpp
@@ -1,93 +1,73 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtOmegaDalitz.cc
-//
-// Description: Routine to decay omega -> pi pi pi0
-//
-// Modification history:
-//
-// RYD November 24, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtOmegaDalitz.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector3R.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
std::string EvtOmegaDalitz::getName()
{
return "OMEGA_DALITZ";
}
EvtDecayBase* EvtOmegaDalitz::clone()
{
return new EvtOmegaDalitz;
}
void EvtOmegaDalitz::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
checkSpinDaughter( 2, EvtSpinType::SCALAR );
}
void EvtOmegaDalitz::initProbMax()
{
setProbMax( 1.0 );
}
void EvtOmegaDalitz::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4C ep[3];
ep[0] = p->eps( 0 );
ep[1] = p->eps( 1 );
ep[2] = p->eps( 2 );
EvtVector4R mompi1 = p->getDaug( 0 )->getP4();
EvtVector4R mompi2 = p->getDaug( 1 )->getP4();
EvtVector3R p1( mompi1.get( 1 ), mompi1.get( 2 ), mompi1.get( 3 ) );
EvtVector3R p2( mompi2.get( 1 ), mompi2.get( 2 ), mompi2.get( 3 ) );
EvtVector3R q = cross( p2, p1 );
EvtVector3C e1( ep[0].get( 1 ), ep[0].get( 2 ), ep[0].get( 3 ) );
EvtVector3C e2( ep[1].get( 1 ), ep[1].get( 2 ), ep[1].get( 3 ) );
EvtVector3C e3( ep[2].get( 1 ), ep[2].get( 2 ), ep[2].get( 3 ) );
//This is an approximate formula of the maximum value that
//|q| can have.
double norm = 1.14 / ( p->mass() * p->mass() / 9.0 - mompi1.mass2() );
vertex( 0, norm * e1 * q );
vertex( 1, norm * e2 * q );
vertex( 2, norm * e3 * q );
return;
}
diff --git a/src/EvtGenModels/EvtPFermi.cpp b/src/EvtGenModels/EvtPFermi.cpp
index 4ba97e9..1a8665f 100644
--- a/src/EvtGenModels/EvtPFermi.cpp
+++ b/src/EvtGenModels/EvtPFermi.cpp
@@ -1,97 +1,70 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-//
-// Description:
-// DFN model:
-// F(k+) = N (1-x)^a exp((1+a)x) ,x=k+/(mB-mb)
-// the fermi motion distribution according to
-// hep-ph/9905351 v2
-// BLNP model:
-// F(wtilde,Lambda,b) = pow(_b,_b)/(tgamma(_b)*_Lambda)*pow(wtilde/_Lambda,_b-1)*
-// exp(-_b*wtilde/Lambda);
-// the leading order shape function (exp) (hep-ph/0504071)
-// Environment:
-// Software developed for the BaBar Detector at the SLAC B-Factory.
-//
-// Author List:
-// Sven Menke (DFN model)
-// Alexei Volk (BLNP model)
-//-----------------------------------------------------------------------
-//-----------------------
-// This Class's Header --
-//-----------------------
#include "EvtGenModels/EvtPFermi.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
-//---------------
-// C Headers --
-//---------------
+
#include <math.h>
#include <stdlib.h>
//----------------
// Constructors --
//----------------
//for DFN model
EvtPFermi::EvtPFermi( const double& a, const double& mB, const double& mb )
{
_a = a;
_mb = mb;
_mB = mB;
}
// for BLNP modell
EvtPFermi::EvtPFermi( const double& Lambda, const double& b )
{
_Lambda = Lambda;
_b = b;
}
//-----------
// Methods --
//-----------
double EvtPFermi::getFPFermi( const double& kplus )
{
double FKplus;
double x = kplus / ( _mB - _mb );
if ( x >= 1 )
return 0;
if ( kplus <= -_mb )
return 0;
FKplus = pow( 1 - x, _a ) * exp( ( 1 + _a ) * x );
return FKplus;
}
// get value for the leading order exponential SF
double EvtPFermi::getSFBLNP( const double& what )
{
double SF;
double massB = 5.2792;
if ( what > massB )
return 0;
if ( what < 0 )
return 0;
#if defined( __SUNPRO_CC )
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The tgamma function is not available on this platform\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Presumably, you are getting the wrong answer, so I abort..";
::abort();
#else
SF = pow( _b, _b ) / ( tgamma( _b ) * _Lambda ) *
pow( what / _Lambda, _b - 1 ) * exp( -_b * what / _Lambda );
#endif
return SF;
}
diff --git a/src/EvtGenModels/EvtPVVCPLH.cpp b/src/EvtGenModels/EvtPVVCPLH.cpp
index c95aa3d..50024ae 100644
--- a/src/EvtGenModels/EvtPVVCPLH.cpp
+++ b/src/EvtGenModels/EvtPVVCPLH.cpp
@@ -1,202 +1,174 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1999 Caltech, UCSB
-//
-// Module: EvtPVVCPLH.cc
-//
-// Description: The decay of a scalar to two vector particles are
-// performed with CP violation and different widths for
-// the CP-even and CP-odd states. E.g. Bs->J/psi phi.
-//
-// Modification history:
-//
-// RYD November 5, 1999 Module EvtSVVCPLH created
-//
-// DUPREE October 10, 2006 Large modification: EvtSVVCPLH->EvtPVVCPLH
-// Time-dependence correctly
-//
-// COWAN June 10, 2009 Modified to use the new EvtCPUtils class.
-// EvtIncoherentMixing removed.
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtPVVCPLH.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtSVVHelAmp.hh"
#include <stdlib.h>
#include <string>
std::string EvtPVVCPLH::getName()
{
return "PVV_CPLH";
}
EvtDecayBase* EvtPVVCPLH::clone()
{
return new EvtPVVCPLH;
}
void EvtPVVCPLH::init()
{
// check that there are 8 arguments (deltaMs no argument anymore)
checkNArg( 8 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::VECTOR );
}
void EvtPVVCPLH::initProbMax()
{
//This is probably not quite right, but it should do as a start...
//Anders
setProbMax( 2 * ( getArg( 2 ) * getArg( 2 ) + getArg( 4 ) * getArg( 4 ) +
getArg( 6 ) * getArg( 6 ) ) );
}
void EvtPVVCPLH::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId BS0 = EvtPDL::getId( "B_s0" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
//This is only to get tag-ID
//Mixing is not relevant
//Lifetime is made correctly later
//Tristan
EvtId other_b;
double t;
// To generate integrated CP asymmetry, EvtGen uses the "flipping".
// CP-asymmetry in this channel very small, since:
// deltaMs large ..and..
// CPV-phase small
EvtCPUtil::getInstance()->OtherB( p, t, other_b );
//Here we're gonna generate and set the "envelope" lifetime
//So we take the longest living component (for positive deltaGamma: tauH)
//The double exponent will be taken care of later, by the amplitudes
//Tristan
static double Gamma = EvtConst::c / ( EvtPDL::getctau( BS0 ) );
static double deltaGamma = EvtCPUtil::getInstance()->getDeltaGamma( BS0 );
static double ctauLong = EvtConst::c / ( Gamma - fabs( deltaGamma ) / 2 );
// if dG>0: tauLong=tauH(CP-odd) is then largest
//This overrules the lifetimes made in OtherB
t = -log( EvtRandom::Flat() ) *
( ctauLong ); //ctauLong has same dimensions as t
if ( isBsMixed( p ) ) {
p->getParent()->setLifetime( t );
} else {
p->setLifetime( t );
}
//These should be filled with the transversity amplitudes at t=0 //Tristan
EvtComplex G0P, G1P, G1M;
G1P = EvtComplex( getArg( 2 ) * cos( getArg( 3 ) ),
getArg( 2 ) * sin( getArg( 3 ) ) );
G0P = EvtComplex( getArg( 4 ) * cos( getArg( 5 ) ),
getArg( 4 ) * sin( getArg( 5 ) ) );
G1M = EvtComplex( getArg( 6 ) * cos( getArg( 7 ) ),
getArg( 6 ) * sin( getArg( 7 ) ) );
EvtComplex lambda_km =
EvtComplex( cos( 2 * getArg( 0 ) ),
sin( 2 * getArg( 0 ) ) ); //was een min in oude versie
//deltaMs is no argument anymore
//Tristan
static double deltaMs = EvtCPUtil::getInstance()->getDeltaM( BS0 );
EvtComplex cG0P, cG1P, cG1M;
double mt = exp( -std::max( 0., deltaGamma ) * t / ( 2 * EvtConst::c ) );
double pt = exp( +std::min( 0., deltaGamma ) * t / ( 2 * EvtConst::c ) );
EvtComplex gplus =
( mt * EvtComplex( cos( deltaMs * t / ( 2 * EvtConst::c ) ),
sin( deltaMs * t / ( 2 * EvtConst::c ) ) ) +
pt * EvtComplex( cos( deltaMs * t / ( 2 * EvtConst::c ) ),
sin( -deltaMs * t / ( 2 * EvtConst::c ) ) ) ) /
2;
EvtComplex gminus =
( mt * EvtComplex( cos( deltaMs * t / ( 2 * EvtConst::c ) ),
sin( deltaMs * t / ( 2 * EvtConst::c ) ) ) -
pt * EvtComplex( cos( deltaMs * t / ( 2 * EvtConst::c ) ),
sin( -deltaMs * t / ( 2 * EvtConst::c ) ) ) ) /
2;
;
if ( other_b == BSB ) {
//These are the right equations for the transversity formalism
//cGOP is de 0-component, CP-even, so lives shorter: mainly lifetime tauL
//cG1P is the //-component, also CP-even, also mainly smaller exponent
//cG1M is the transverse component, CP-odd, so has mainly longer lifetime tauH
//Tristan
cG0P = G0P * ( gplus + lambda_km * gminus );
cG1P = G1P * ( gplus + lambda_km * gminus );
cG1M = G1M * ( gplus - lambda_km * gminus );
} else if ( other_b == BS0 ) {
//The equations for BsBar
//Note the minus-sign difference
//Tristan
cG0P = G0P * ( gplus + ( 1.0 / lambda_km ) * gminus );
cG1P = G1P * ( gplus + ( 1.0 / lambda_km ) * gminus );
cG1M = -G1M * ( gplus - ( 1.0 / lambda_km ) * gminus );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "other_b was not BSB or BS0!" << std::endl;
::abort();
}
EvtComplex A0, AP, AM;
//Converting the transversity amplitudes
//to helicity amplitudes
//(to plug them into SVVHelAmp)
A0 = cG0P;
AP = ( cG1P + cG1M ) / sqrt( 2.0 );
AM = ( cG1P - cG1M ) / sqrt( 2.0 );
EvtSVVHelAmp::SVVHel( p, _amp2, getDaug( 0 ), getDaug( 1 ), AP, A0, AM );
return;
}
bool EvtPVVCPLH::isBsMixed( EvtParticle* p )
{
if ( !( p->getParent() ) )
return false;
static EvtId BS0 = EvtPDL::getId( "B_s0" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
if ( ( p->getId() != BS0 ) && ( p->getId() != BSB ) )
return false;
if ( ( p->getParent()->getId() == BS0 ) || ( p->getParent()->getId() == BSB ) )
return true;
return false;
}
diff --git a/src/EvtGenModels/EvtPartWave.cpp b/src/EvtGenModels/EvtPartWave.cpp
index bcc2ff7..cc48a0d 100644
--- a/src/EvtGenModels/EvtPartWave.cpp
+++ b/src/EvtGenModels/EvtPartWave.cpp
@@ -1,292 +1,269 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtHelAmp.cc
-//
-// Description: Decay model for implementation of generic 2 body
-// decay specified by the partial wave amplitudes
-//
-//
-// Modification history:
-//
-// fkw February 2, 2001 changes to satisfy KCC
-// RYD September 7, 2000 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtPartWave.hh"
#include "EvtGenBase/EvtCGCoefSingle.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <algorithm>
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtPartWave::getName()
{
return "PARTWAVE";
}
EvtDecayBase* EvtPartWave::clone()
{
return new EvtPartWave;
}
void EvtPartWave::init()
{
checkNDaug( 2 );
//find out how many states each particle have
int _nA = EvtSpinType::getSpinStates( EvtPDL::getSpinType( getParentId() ) );
int _nB = EvtSpinType::getSpinStates( EvtPDL::getSpinType( getDaug( 0 ) ) );
int _nC = EvtSpinType::getSpinStates( EvtPDL::getSpinType( getDaug( 1 ) ) );
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "_nA,_nB,_nC:" << _nA << "," << _nB << "," << _nC << endl;
}
//find out what 2 times the spin is
int _JA2 = EvtSpinType::getSpin2( EvtPDL::getSpinType( getParentId() ) );
int _JB2 = EvtSpinType::getSpin2( EvtPDL::getSpinType( getDaug( 0 ) ) );
int _JC2 = EvtSpinType::getSpin2( EvtPDL::getSpinType( getDaug( 1 ) ) );
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "_JA2,_JB2,_JC2:" << _JA2 << "," << _JB2 << "," << _JC2 << endl;
}
//allocate memory
int* _lambdaA2 = new int[_nA];
int* _lambdaB2 = new int[_nB];
int* _lambdaC2 = new int[_nC];
EvtComplexPtr* _HBC = new EvtComplexPtr[_nB];
int ib, ic;
for ( ib = 0; ib < _nB; ib++ ) {
_HBC[ib] = new EvtComplex[_nC];
}
int i;
//find the allowed helicities (actually 2*times the helicity!)
fillHelicity( _lambdaA2, _nA, _JA2 );
fillHelicity( _lambdaB2, _nB, _JB2 );
fillHelicity( _lambdaC2, _nC, _JC2 );
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Helicity states of particle A:" << endl;
for ( i = 0; i < _nA; i++ ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << _lambdaA2[i] << endl;
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Helicity states of particle B:" << endl;
for ( i = 0; i < _nB; i++ ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << _lambdaB2[i] << endl;
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Helicity states of particle C:" << endl;
for ( i = 0; i < _nC; i++ ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << _lambdaC2[i] << endl;
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Will now figure out the valid (M_LS) states:" << endl;
}
int Lmin = std::max( _JA2 - _JB2 - _JC2,
std::max( _JB2 - _JA2 - _JC2, _JC2 - _JA2 - _JB2 ) );
if ( Lmin < 0 )
Lmin = 0;
//int Lmin=_JA2-_JB2-_JC2;
int Lmax = _JA2 + _JB2 + _JC2;
int L;
int _nPartialWaveAmp = 0;
int _nL[50];
int _nS[50];
for ( L = Lmin; L <= Lmax; L += 2 ) {
int Smin = abs( L - _JA2 );
if ( Smin < abs( _JB2 - _JC2 ) )
Smin = abs( _JB2 - _JC2 );
int Smax = L + _JA2;
if ( Smax > abs( _JB2 + _JC2 ) )
Smax = abs( _JB2 + _JC2 );
int S;
for ( S = Smin; S <= Smax; S += 2 ) {
_nL[_nPartialWaveAmp] = L;
_nS[_nPartialWaveAmp] = S;
_nPartialWaveAmp++;
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "M[" << L << "][" << S << "]" << endl;
}
}
}
checkNArg( _nPartialWaveAmp * 2 );
int argcounter = 0;
EvtComplex _M[50];
double partampsqtot = 0.0;
for ( i = 0; i < _nPartialWaveAmp; i++ ) {
_M[i] = getArg( argcounter ) *
exp( EvtComplex( 0.0, getArg( argcounter + 1 ) ) );
;
argcounter += 2;
partampsqtot += abs2( _M[i] );
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "M[" << _nL[i] << "][" << _nS[i] << "]=" << _M[i] << endl;
}
}
//Now calculate the helicity amplitudes
double helampsqtot = 0.0;
for ( ib = 0; ib < _nB; ib++ ) {
for ( ic = 0; ic < _nC; ic++ ) {
_HBC[ib][ic] = 0.0;
if ( abs( _lambdaB2[ib] - _lambdaC2[ic] ) <= _JA2 ) {
for ( i = 0; i < _nPartialWaveAmp; i++ ) {
int L = _nL[i];
int S = _nS[i];
int lambda2 = _lambdaB2[ib];
int lambda3 = _lambdaC2[ic];
int s1 = _JA2;
int s2 = _JB2;
int s3 = _JC2;
int m1 = lambda2 - lambda3;
EvtCGCoefSingle c1( s2, s3 );
EvtCGCoefSingle c2( L, S );
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "s2,lambda2:" << s2 << " " << lambda2 << endl;
}
//fkw changes to satisfy KCC
double fkwTmp = ( L + 1.0 ) / ( s1 + 1.0 );
if ( S >= abs( m1 ) ) {
EvtComplex tmp = sqrt( fkwTmp ) *
c1.coef( S, m1, s2, s3, lambda2,
-lambda3 ) *
c2.coef( s1, m1, L, S, 0, m1 ) * _M[i];
_HBC[ib][ic] += tmp;
}
}
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "_HBC[" << ib << "][" << ic << "]=" << _HBC[ib][ic]
<< endl;
}
}
helampsqtot += abs2( _HBC[ib][ic] );
}
}
if ( fabs( helampsqtot - partampsqtot ) / ( helampsqtot + partampsqtot ) >
1e-6 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "In EvtPartWave for decay " << EvtPDL::name( getParentId() )
<< " -> " << EvtPDL::name( getDaug( 0 ) ) << " "
<< EvtPDL::name( getDaug( 1 ) ) << std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "With arguments: " << std::endl;
for ( i = 0; i * 2 < getNArg(); i++ ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "M(" << _nL[i] << "," << _nS[i]
<< ")="
// <<getArg(2*i)<<" "<<getArg(2*i+1)<<std::endl;
<< _M[i] << std::endl;
}
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The total probability in the partwave basis is: " << partampsqtot
<< std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The total probability in the helamp basis is: " << helampsqtot
<< std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Most likely this is because the specified partwave amplitudes "
<< std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "project onto unphysical helicities of photons or neutrinos. "
<< std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Seriously consider if your specified amplitudes are correct. "
<< std::endl;
}
_evalHelAmp = std::make_unique<EvtEvalHelAmp>( getParentId(), getDaug( 0 ),
getDaug( 1 ), _HBC );
}
void EvtPartWave::initProbMax()
{
double maxprob = _evalHelAmp->probMax();
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Calculated probmax" << maxprob << endl;
}
setProbMax( maxprob );
}
void EvtPartWave::decay( EvtParticle* p )
{
//first generate simple phase space
p->initializePhaseSpace( getNDaug(), getDaugs() );
_evalHelAmp->evalAmp( p, _amp2 );
return;
}
void EvtPartWave::fillHelicity( int* lambda2, int n, int J2 )
{
int i;
//photon is special case!
if ( n == 2 && J2 == 2 ) {
lambda2[0] = 2;
lambda2[1] = -2;
return;
}
assert( n == J2 + 1 );
for ( i = 0; i < n; i++ ) {
lambda2[i] = n - i * 2 - 1;
}
return;
}
diff --git a/src/EvtGenModels/EvtPhsp.cpp b/src/EvtGenModels/EvtPhsp.cpp
index 59dafb1..3229d2a 100644
--- a/src/EvtGenModels/EvtPhsp.cpp
+++ b/src/EvtGenModels/EvtPhsp.cpp
@@ -1,66 +1,46 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtPhsp.cc
-//
-// Description: Routine to decay a particle according th phase space
-//
-// Modification history:
-//
-// RYD January 8, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtPhsp.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
std::string EvtPhsp::getName()
{
return "PHSP";
}
EvtDecayBase* EvtPhsp::clone()
{
return new EvtPhsp;
}
void EvtPhsp::init()
{
// check that there are 0 arguments
checkNArg( 0 );
}
void EvtPhsp::initProbMax()
{
noProbMax();
}
void EvtPhsp::decay( EvtParticle* p )
{
//unneeded - lange - may13-02
//if ( p->getNDaug() != 0 ) {
//Will end up here because maxrate multiplies by 1.2
// EvtGenReport(EVTGEN_DEBUG,"EvtGen") << "In EvtPhsp: has "
// <<" daugthers should not be here!"<<endl;
// return;
//}
p->initializePhaseSpace( getNDaug(), getDaugs() );
return;
}
diff --git a/src/EvtGenModels/EvtPhspFlatLifetime.cpp b/src/EvtGenModels/EvtPhspFlatLifetime.cpp
index bc2f451..4ae035c 100644
--- a/src/EvtGenModels/EvtPhspFlatLifetime.cpp
+++ b/src/EvtGenModels/EvtPhspFlatLifetime.cpp
@@ -1,80 +1,58 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtPhspFlatlifetime.cc
-//
-// Description: Routine to decay a particle according to phase space,
-// with a flat lifetime distribution
-//
-// Modification history:
-//
-// RYD January 8, 1997 Module created
-// PR July 10, 2013 Add flat lifetime generation
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtPhspFlatLifetime.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
//==============================================================================
// Return the name of the model
//==============================================================================
std::string EvtPhspFlatLifetime::getName()
{
return "PHSPFLATLIFETIME";
}
//==============================================================================
// Copy the model
//==============================================================================
EvtDecayBase* EvtPhspFlatLifetime::clone()
{
return new EvtPhspFlatLifetime;
}
//==============================================================================
// Initialize the model
//==============================================================================
void EvtPhspFlatLifetime::init()
{
// check that there is 1 argument in the decay file
checkNArg( 1 );
// this argument is the lifetime upper edge (in ps)
m_maxLifetime = getArg( 0 );
}
//==============================================================================
// Compute the maximum probability (max of the pdf)
//==============================================================================
void EvtPhspFlatLifetime::initProbMax()
{
noProbMax();
}
//==============================================================================
// Decay the particle according to the model
//==============================================================================
void EvtPhspFlatLifetime::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
// generate the lifetime flat between 0 and max
double l = EvtRandom::Flat( 0., m_maxLifetime );
// modify the lifetime of the particle (in mm)
p->setLifetime( l * EvtConst::c * 1.e-12 );
}
diff --git a/src/EvtGenModels/EvtPi0Dalitz.cpp b/src/EvtGenModels/EvtPi0Dalitz.cpp
index 903314b..0229671 100644
--- a/src/EvtGenModels/EvtPi0Dalitz.cpp
+++ b/src/EvtGenModels/EvtPi0Dalitz.cpp
@@ -1,107 +1,87 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtPi0Dalitz.cc
-//
-// Description: pi0 -> e+ e- gamma
-//
-// Modification history:
-//
-// DJL/RYD June 30, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtPi0Dalitz.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
using std::fstream;
std::string EvtPi0Dalitz::getName()
{
return "PI0_DALITZ";
}
EvtDecayBase* EvtPi0Dalitz::clone()
{
return new EvtPi0Dalitz;
}
void EvtPi0Dalitz::initProbMax()
{
setProbMax( 3.5 );
}
void EvtPi0Dalitz::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::DIRAC );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::PHOTON );
}
void EvtPi0Dalitz::decay( EvtParticle* p )
{
EvtParticle *ep, *em, *gamma;
setWeight( p->initializePhaseSpace( getNDaug(), getDaugs(), false,
0.00000002, 0, 1 ) );
ep = p->getDaug( 0 );
em = p->getDaug( 1 );
gamma = p->getDaug( 2 );
// the next four lines generates events with a weight such that
// the efficiency for selecting them is good. The parameter below of
// 0.1 is the size of the peak at low q^2 (in arbitrary units).
// The value of 0.1 is appropriate for muons.
// when you use this remember to remove the cut on q^2!
//ep em invariant mass^2
double m2 = ( ep->getP4() + em->getP4() ).mass2();
EvtVector4R q = ep->getP4() + em->getP4();
//Just use the prob summed over spins...
EvtTensor4C w, v;
v = 2.0 * ( gamma->getP4() * q ) *
EvtGenFunctions::directProd( q, gamma->getP4() ) -
( gamma->getP4() * q ) * ( gamma->getP4() * q ) * EvtTensor4C::g() -
m2 * EvtGenFunctions::directProd( gamma->getP4(), gamma->getP4() );
w = 4.0 * ( EvtGenFunctions::directProd( ep->getP4(), em->getP4() ) +
EvtGenFunctions::directProd( em->getP4(), ep->getP4() ) -
EvtTensor4C::g() *
( ep->getP4() * em->getP4() - ep->getP4().mass2() ) );
double prob = ( real( cont( v, w ) ) ) / ( m2 * m2 );
prob *= ( 1.0 / ( ( 0.768 * 0.768 - m2 ) * ( 0.768 * 0.768 - m2 ) +
0.768 * 0.768 * 0.151 * 0.151 ) );
// EvtGenReport(EVTGEN_INFO,"EvtGen") << "prob is "<<prob<<endl;
setProb( prob );
return;
}
diff --git a/src/EvtGenModels/EvtPropSLPole.cpp b/src/EvtGenModels/EvtPropSLPole.cpp
index 2d35373..e4ac8bf 100644
--- a/src/EvtGenModels/EvtPropSLPole.cpp
+++ b/src/EvtGenModels/EvtPropSLPole.cpp
@@ -1,560 +1,539 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtPropSLPole.cc
-//
-// Description: Routine to implement semileptonic decays according
-// to light cone sum rules
-//
-// Modification history:
-//
-// DJL April 23, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtPropSLPole.hh"
#include "EvtGenBase/EvtAmpPdf.hh"
#include "EvtGenBase/EvtDecayTable.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtIntervalFlatPdf.hh"
#include "EvtGenBase/EvtMassAmp.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtPropBreitWignerRel.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicTensorAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtTensorParticle.hh"
#include "EvtGenBase/EvtTwoBodyVertex.hh"
#include "EvtGenBase/EvtVectorParticle.hh"
#include "EvtGenModels/EvtSLPoleFF.hh"
#include <stdlib.h>
#include <string>
std::string EvtPropSLPole::getName()
{
return "PROPSLPOLE";
}
EvtDecayBase* EvtPropSLPole::clone()
{
return new EvtPropSLPole;
}
void EvtPropSLPole::decay( EvtParticle* p )
{
if ( !_isProbMaxSet ) {
EvtId parnum, mesnum, lnum, nunum;
parnum = getParentId();
mesnum = getDaug( 0 );
lnum = getDaug( 1 );
nunum = getDaug( 2 );
double mymaxprob = calcMaxProb( parnum, mesnum, lnum, nunum,
SLPoleffmodel.get() );
setProbMax( mymaxprob );
_isProbMaxSet = true;
}
double minKstMass = EvtPDL::getMinMass( p->getDaug( 0 )->getId() );
double maxKstMass = EvtPDL::getMaxMass( p->getDaug( 0 )->getId() );
EvtIntervalFlatPdf flat( minKstMass, maxKstMass );
EvtPdfGen<EvtPoint1D> gen( flat );
EvtPoint1D point = gen();
double massKst = point.value();
p->getDaug( 0 )->setMass( massKst );
p->initializePhaseSpace( getNDaug(), getDaugs() );
// EvtVector4R p4meson = p->getDaug(0)->getP4();
calcamp->CalcAmp( p, _amp2, SLPoleffmodel.get() );
EvtParticle* mesonPart = p->getDaug( 0 );
double meson_BWAmp = calBreitWigner( mesonPart, point );
int list[2];
list[0] = 0;
list[1] = 0;
_amp2.vertex( 0, 0, _amp2.getAmp( list ) * meson_BWAmp );
list[0] = 0;
list[1] = 1;
_amp2.vertex( 0, 1, _amp2.getAmp( list ) * meson_BWAmp );
list[0] = 1;
list[1] = 0;
_amp2.vertex( 1, 0, _amp2.getAmp( list ) * meson_BWAmp );
list[0] = 1;
list[1] = 1;
_amp2.vertex( 1, 1, _amp2.getAmp( list ) * meson_BWAmp );
list[0] = 2;
list[1] = 0;
_amp2.vertex( 2, 0, _amp2.getAmp( list ) * meson_BWAmp );
list[0] = 2;
list[1] = 1;
_amp2.vertex( 2, 1, _amp2.getAmp( list ) * meson_BWAmp );
return;
}
void EvtPropSLPole::initProbMax()
{
_isProbMaxSet = false;
return;
}
void EvtPropSLPole::init()
{
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be X lepton neutrino
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
EvtSpinType::spintype mesontype = EvtPDL::getSpinType( getDaug( 0 ) );
SLPoleffmodel = std::make_unique<EvtSLPoleFF>( getNArg(), getArgs() );
switch ( mesontype ) {
case EvtSpinType::SCALAR:
calcamp = std::make_unique<EvtSemiLeptonicScalarAmp>();
break;
case EvtSpinType::VECTOR:
calcamp = std::make_unique<EvtSemiLeptonicVectorAmp>();
break;
case EvtSpinType::TENSOR:
calcamp = std::make_unique<EvtSemiLeptonicTensorAmp>();
break;
default:;
}
}
double EvtPropSLPole::calBreitWignerBasic( double maxMass )
{
if ( _width < 0.0001 )
return 1.0;
//its not flat - but generated according to a BW
double mMin = _massMin;
double mMax = _massMax;
if ( maxMass > -0.5 && maxMass < mMax )
mMax = maxMass;
double massGood = EvtRandom::Flat( mMin, mMax );
double ampVal = sqrt(
1.0 / ( pow( massGood - _mass, 2.0 ) + pow( _width, 2.0 ) / 4.0 ) );
return ampVal;
}
double EvtPropSLPole::calBreitWigner( EvtParticle* pmeson, EvtPoint1D point )
{
EvtId mesnum = pmeson->getId();
_mass = EvtPDL::getMeanMass( mesnum );
_width = EvtPDL::getWidth( mesnum );
_maxRange = EvtPDL::getMaxRange( mesnum );
EvtSpinType::spintype mesontype = EvtPDL::getSpinType( mesnum );
_includeDecayFact = true;
_includeBirthFact = true;
_spin = mesontype;
_blatt = 3.0;
double maxdelta = 15.0 * _width;
if ( _maxRange > 0.00001 ) {
_massMax = _mass + maxdelta;
_massMin = _mass - _maxRange;
} else {
_massMax = _mass + maxdelta;
_massMin = _mass - 15.0 * _width;
}
_massMax = _mass + maxdelta;
if ( _massMin < 0. )
_massMin = 0.;
EvtParticle* par = pmeson->getParent();
double maxMass = -1.;
if ( par != 0 ) {
if ( par->hasValidP4() )
maxMass = par->mass();
for ( size_t i = 0; i < par->getNDaug(); i++ ) {
EvtParticle* tDaug = par->getDaug( i );
if ( pmeson != tDaug )
maxMass -= EvtPDL::getMinMass( tDaug->getId() );
}
}
EvtId* dauId = 0;
double* dauMasses = 0;
size_t nDaug = pmeson->getNDaug();
if ( nDaug > 0 ) {
dauId = new EvtId[nDaug];
dauMasses = new double[nDaug];
for ( size_t j = 0; j < nDaug; j++ ) {
dauId[j] = pmeson->getDaug( j )->getId();
dauMasses[j] = pmeson->getDaug( j )->mass();
}
}
EvtId* parId = 0;
EvtId* othDaugId = 0;
EvtParticle* tempPar = pmeson->getParent();
if ( tempPar ) {
parId = new EvtId( tempPar->getId() );
if ( tempPar->getNDaug() == 2 ) {
if ( tempPar->getDaug( 0 ) == pmeson )
othDaugId = new EvtId( tempPar->getDaug( 1 )->getId() );
else
othDaugId = new EvtId( tempPar->getDaug( 0 )->getId() );
}
}
if ( nDaug != 2 )
return calBreitWignerBasic( maxMass );
if ( _width < 0.00001 )
return 1.0;
//first figure out L - take the lowest allowed.
EvtSpinType::spintype spinD1 = EvtPDL::getSpinType( dauId[0] );
EvtSpinType::spintype spinD2 = EvtPDL::getSpinType( dauId[1] );
int t1 = EvtSpinType::getSpin2( spinD1 );
int t2 = EvtSpinType::getSpin2( spinD2 );
int t3 = EvtSpinType::getSpin2( _spin );
int Lmin = -10;
// allow for special cases.
if ( Lmin < -1 ) {
//There are some things I don't know how to deal with
if ( t3 > 4 )
return calBreitWignerBasic( maxMass );
if ( t1 > 4 )
return calBreitWignerBasic( maxMass );
if ( t2 > 4 )
return calBreitWignerBasic( maxMass );
//figure the min and max allowwed "spins" for the daughters state
Lmin = std::max( t3 - t2 - t1, std::max( t2 - t3 - t1, t1 - t3 - t2 ) );
if ( Lmin < 0 )
Lmin = 0;
assert( Lmin == 0 || Lmin == 2 || Lmin == 4 );
}
//double massD1=EvtPDL::getMeanMass(dauId[0]);
//double massD2=EvtPDL::getMeanMass(dauId[1]);
double massD1 = dauMasses[0];
double massD2 = dauMasses[1];
// I'm not sure how to define the vertex factor here - so retreat to nonRel code.
if ( ( massD1 + massD2 ) > _mass )
return calBreitWignerBasic( maxMass );
//parent vertex factor not yet implemented
double massOthD = -10.;
double massParent = -10.;
int birthl = -10;
if ( othDaugId ) {
EvtSpinType::spintype spinOth = EvtPDL::getSpinType( *othDaugId );
EvtSpinType::spintype spinPar = EvtPDL::getSpinType( *parId );
int tt1 = EvtSpinType::getSpin2( spinOth );
int tt2 = EvtSpinType::getSpin2( spinPar );
int tt3 = EvtSpinType::getSpin2( _spin );
//figure the min and max allowwed "spins" for the daughters state
if ( ( tt1 <= 4 ) && ( tt2 <= 4 ) ) {
birthl = std::max( tt3 - tt2 - tt1,
std::max( tt2 - tt3 - tt1, tt1 - tt3 - tt2 ) );
if ( birthl < 0 )
birthl = 0;
massOthD = EvtPDL::getMeanMass( *othDaugId );
massParent = EvtPDL::getMeanMass( *parId );
}
}
double massM = _massMax;
if ( ( maxMass > -0.5 ) && ( maxMass < massM ) )
massM = maxMass;
//special case... if the parent mass is _fixed_ we can do a little better
//and only for a two body decay as that seems to be where we have problems
// Define relativistic propagator amplitude
EvtTwoBodyVertex vd( massD1, massD2, _mass, Lmin / 2 );
vd.set_f( _blatt );
EvtPropBreitWignerRel bw( _mass, _width );
EvtMassAmp amp( bw, vd );
// if ( _fixMassForMax) amp.fixUpMassForMax();
// else std::cout << "problem problem\n";
if ( _includeDecayFact ) {
amp.addDeathFact();
amp.addDeathFactFF();
}
if ( massParent > -1. ) {
if ( _includeBirthFact ) {
EvtTwoBodyVertex vb( _mass, massOthD, massParent, birthl / 2 );
amp.setBirthVtx( vb );
amp.addBirthFact();
amp.addBirthFactFF();
}
}
EvtAmpPdf<EvtPoint1D> pdf( amp );
double ampVal = sqrt( pdf.evaluate( point ) );
if ( parId )
delete parId;
if ( othDaugId )
delete othDaugId;
if ( dauId )
delete[] dauId;
if ( dauMasses )
delete[] dauMasses;
return ampVal;
}
double EvtPropSLPole::calcMaxProb( EvtId parent, EvtId meson, EvtId lepton,
EvtId nudaug, EvtSemiLeptonicFF* FormFactors )
{
//This routine takes the arguements parent, meson, and lepton
//number, and a form factor model, and returns a maximum
//probability for this semileptonic form factor model. A
//brute force method is used. The 2D cos theta lepton and
//q2 phase space is probed.
//Start by declaring a particle at rest.
//It only makes sense to have a scalar parent. For now.
//This should be generalized later.
EvtScalarParticle* scalar_part;
EvtParticle* root_part;
scalar_part = new EvtScalarParticle;
//cludge to avoid generating random numbers!
scalar_part->noLifeTime();
EvtVector4R p_init;
p_init.set( EvtPDL::getMass( parent ), 0.0, 0.0, 0.0 );
scalar_part->init( parent, p_init );
root_part = (EvtParticle*)scalar_part;
// root_part->set_type(EvtSpinType::SCALAR);
root_part->setDiagonalSpinDensity();
EvtParticle *daughter, *lep, *trino;
EvtAmp amp;
EvtId listdaug[3];
listdaug[0] = meson;
listdaug[1] = lepton;
listdaug[2] = nudaug;
amp.init( parent, 3, listdaug );
root_part->makeDaughters( 3, listdaug );
daughter = root_part->getDaug( 0 );
lep = root_part->getDaug( 1 );
trino = root_part->getDaug( 2 );
EvtDecayBase* decayer;
decayer = EvtDecayTable::getInstance()->getDecayFunc( daughter );
if ( decayer ) {
daughter->makeDaughters( decayer->nRealDaughters(), decayer->getDaugs() );
for ( int ii = 0; ii < decayer->nRealDaughters(); ii++ ) {
daughter->getDaug( ii )->setMass(
EvtPDL::getMeanMass( daughter->getDaug( ii )->getId() ) );
}
}
//cludge to avoid generating random numbers!
daughter->noLifeTime();
lep->noLifeTime();
trino->noLifeTime();
//Initial particle is unpolarized, well it is a scalar so it is
//trivial
EvtSpinDensity rho;
rho.setDiag( root_part->getSpinStates() );
double mass[3];
double m = root_part->mass();
EvtVector4R p4meson, p4lepton, p4nu, p4w;
double q2max;
double q2, elepton, plepton;
int i, j;
double erho, prho, costl;
double maxfoundprob = 0.0;
double prob = -10.0;
int massiter;
for ( massiter = 0; massiter < 3; massiter++ ) {
mass[0] = EvtPDL::getMeanMass( meson );
mass[1] = EvtPDL::getMeanMass( lepton );
mass[2] = EvtPDL::getMeanMass( nudaug );
if ( massiter == 1 ) {
mass[0] = EvtPDL::getMinMass( meson );
}
if ( massiter == 2 ) {
mass[0] = EvtPDL::getMaxMass( meson );
if ( ( mass[0] + mass[1] + mass[2] ) > m )
mass[0] = m - mass[1] - mass[2] - 0.00001;
}
q2max = ( m - mass[0] ) * ( m - mass[0] );
//loop over q2
for ( i = 0; i < 25; i++ ) {
q2 = ( ( i + 0.5 ) * q2max ) / 25.0;
erho = ( m * m + mass[0] * mass[0] - q2 ) / ( 2.0 * m );
prho = sqrt( erho * erho - mass[0] * mass[0] );
p4meson.set( erho, 0.0, 0.0, -1.0 * prho );
p4w.set( m - erho, 0.0, 0.0, prho );
//This is in the W rest frame
elepton = ( q2 + mass[1] * mass[1] ) / ( 2.0 * sqrt( q2 ) );
plepton = sqrt( elepton * elepton - mass[1] * mass[1] );
double probctl[3];
for ( j = 0; j < 3; j++ ) {
costl = 0.99 * ( j - 1.0 );
//These are in the W rest frame. Need to boost out into
//the B frame.
p4lepton.set( elepton, 0.0, plepton * sqrt( 1.0 - costl * costl ),
plepton * costl );
p4nu.set( plepton, 0.0,
-1.0 * plepton * sqrt( 1.0 - costl * costl ),
-1.0 * plepton * costl );
EvtVector4R boost( ( m - erho ), 0.0, 0.0, 1.0 * prho );
p4lepton = boostTo( p4lepton, boost );
p4nu = boostTo( p4nu, boost );
//Now initialize the daughters...
daughter->init( meson, p4meson );
lep->init( lepton, p4lepton );
trino->init( nudaug, p4nu );
calcamp->CalcAmp( root_part, amp, FormFactors );
EvtPoint1D* point = new EvtPoint1D( mass[0] );
double meson_BWAmp = calBreitWigner( daughter, *point );
int list[2];
list[0] = 0;
list[1] = 0;
amp.vertex( 0, 0, amp.getAmp( list ) * meson_BWAmp );
list[0] = 0;
list[1] = 1;
amp.vertex( 0, 1, amp.getAmp( list ) * meson_BWAmp );
list[0] = 1;
list[1] = 0;
amp.vertex( 1, 0, amp.getAmp( list ) * meson_BWAmp );
list[0] = 1;
list[1] = 1;
amp.vertex( 1, 1, amp.getAmp( list ) * meson_BWAmp );
list[0] = 2;
list[1] = 0;
amp.vertex( 2, 0, amp.getAmp( list ) * meson_BWAmp );
list[0] = 2;
list[1] = 1;
amp.vertex( 2, 1, amp.getAmp( list ) * meson_BWAmp );
//Now find the probability at this q2 and cos theta lepton point
//and compare to maxfoundprob.
//Do a little magic to get the probability!!
prob = rho.normalizedProb( amp.getSpinDensity() );
probctl[j] = prob;
}
//probclt contains prob at ctl=-1,0,1.
//prob=a+b*ctl+c*ctl^2
double a = probctl[1];
double b = 0.5 * ( probctl[2] - probctl[0] );
double c = 0.5 * ( probctl[2] + probctl[0] ) - probctl[1];
prob = probctl[0];
if ( probctl[1] > prob )
prob = probctl[1];
if ( probctl[2] > prob )
prob = probctl[2];
if ( fabs( c ) > 1e-20 ) {
double ctlx = -0.5 * b / c;
if ( fabs( ctlx ) < 1.0 ) {
double probtmp = a + b * ctlx + c * ctlx * ctlx;
if ( probtmp > prob )
prob = probtmp;
}
}
//EvtGenReport(EVTGEN_DEBUG,"EvtGen") << "prob,probctl:"<<prob<<" "
// << probctl[0]<<" "
// << probctl[1]<<" "
// << probctl[2]<<endl;
if ( prob > maxfoundprob ) {
maxfoundprob = prob;
}
}
if ( EvtPDL::getWidth( meson ) <= 0.0 ) {
//if the particle is narrow dont bother with changing the mass.
massiter = 4;
}
}
root_part->deleteTree();
maxfoundprob *= 1.1;
return maxfoundprob;
}
diff --git a/src/EvtGenModels/EvtPsi2JpsiPiPi.cpp b/src/EvtGenModels/EvtPsi2JpsiPiPi.cpp
index 28da078..3eb6c12 100644
--- a/src/EvtGenModels/EvtPsi2JpsiPiPi.cpp
+++ b/src/EvtGenModels/EvtPsi2JpsiPiPi.cpp
@@ -1,167 +1,154 @@
-//--------------------------------------------------------------------------
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtPsi2JpsiPiPi.cpp
-//
-// Description: Source file for the model "PSI2JPSIPIPI" which generates
-// psi2S -> J/psi pi+ pi- decays based on hep-ph/1507.07985
-//
-// Modification history: A Luchinsky Nov 2019 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtPsi2JpsiPiPi.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <cmath>
EvtPsi2JpsiPiPi::EvtPsi2JpsiPiPi() :
tree( false ),
phi( 0.0 ),
cosPhi( 1.0 ),
cos2Phi( 1.0 ),
sinPhi( 0.0 ),
sin2Phi( 0.0 )
{
this->setNLOArrays();
}
void EvtPsi2JpsiPiPi::setNLOArrays()
{
// Parameters for NLO corrections obtained by fitting distributions
// shown in Fig 2 of the article
c0[0] = 1.21214;
c0[1] = -2.517;
c0[2] = 4.66947;
c0[3] = 15.0853;
c0[4] = -49.7381;
c0[5] = 35.5604;
c1[0] = -6.74237;
c1[1] = 84.2391;
c1[2] = -389.74;
c1[3] = 823.902;
c1[4] = -808.538;
c1[5] = 299.1;
c2[0] = -1.25073;
c2[1] = 16.2666;
c2[2] = -74.6453;
c2[3] = 156.789;
c2[4] = -154.185;
c2[5] = 57.5711;
s1[0] = -8.01579;
s1[1] = 93.9513;
s1[2] = -451.713;
s1[3] = 1049.67;
s1[4] = -1162.9;
s1[5] = 492.364;
s2[0] = 3.04459;
s2[1] = -26.0901;
s2[2] = 81.1557;
s2[3] = -112.875;
s2[4] = 66.0432;
s2[5] = -10.0446;
}
std::string EvtPsi2JpsiPiPi::getName()
{
return "PSI2JPSIPIPI";
}
EvtDecayBase* EvtPsi2JpsiPiPi::clone()
{
return new EvtPsi2JpsiPiPi;
}
void EvtPsi2JpsiPiPi::initProbMax()
{
// Should be OK for all phi values
setProbMax( 1.1 );
}
void EvtPsi2JpsiPiPi::init()
{
checkNArg( 0, 1 );
if ( getNArg() == 0 ) {
tree = true;
phi = 0.0;
} else {
tree = false;
phi = getArg( 0 ); // LO vs NLO mixing angle in radians
}
double twoPhi = 2.0 * phi;
cosPhi = cos( phi );
cos2Phi = cos( twoPhi );
sinPhi = sin( phi );
sin2Phi = sin( twoPhi );
}
void EvtPsi2JpsiPiPi::decay( EvtParticle* root )
{
root->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4R p4 =
root->getDaug( 0 )->getP4(); // J-psi momentum in psi2 rest frame
EvtVector4R k1 = root->getDaug( 1 )->getP4(); // pi+ momentum in psi2 rest frame
double mPiSq = k1.mass2(); // squared pion mass
EvtVector4R k2 = root->getDaug( 2 )->getP4(); // pi- momentum in psi2 rest frame
EvtVector4R tq = k1 - k2;
EvtVector4R p3 = k1 + k2;
double p3Sq = p3.mass2();
double mpipi = p3.mass();
double corr( 1.0 );
if ( !tree ) {
// Calculate NLO corrections
corr = 0.0;
for ( int iq = 0; iq < nQ; ++iq ) {
corr += ( c0[iq] + c1[iq] * cosPhi + c2[iq] * cos2Phi +
s1[iq] * sinPhi + s2[iq] * sin2Phi ) *
std::pow( mpipi, iq );
}
}
double mSqTerm = 2.0 * mPiSq / p3Sq;
EvtTensor4C p3Prod = EvtGenFunctions::directProd( p3, p3 );
// Eq 14 from the article
EvtTensor4C L = EvtGenFunctions::directProd( tq, tq ) +
( ( 1.0 - 2.0 * mSqTerm ) / 3.0 ) *
( p3Sq * EvtTensor4C::g() - p3Prod );
EvtTensor4C T = ( 2.0 / 3.0 ) * ( 1.0 + mSqTerm ) * p3Prod - L;
for ( int iPsi2 = 0; iPsi2 < 5; ++iPsi2 ) {
EvtTensor4C epsX = root->epsTensor(
iPsi2 ); // psi2 polarization tensor in psi2 rest frame
EvtTensor4C epsXT = cont22( epsX, T );
for ( int iPsi = 0; iPsi < 3; ++iPsi ) {
EvtVector4C epsPsi = root->getDaug( 0 )->epsParent(
iPsi ); // Jpsi polarization vector in psi2 rest frame
EvtTensor4C epeps = dual( EvtGenFunctions::directProd( epsPsi, p4 ) );
EvtTensor4C ttt = cont22( epeps, epsXT );
// Eq 13 from the article
EvtComplex amp = ttt.trace();
// NLO corrections
amp *= corr;
// Set vertex amplitude component
vertex( iPsi2, iPsi, amp );
}
}
}
diff --git a/src/EvtGenModels/EvtPto3P.cpp b/src/EvtGenModels/EvtPto3P.cpp
index 3d3b0e0..d43c2d5 100644
--- a/src/EvtGenModels/EvtPto3P.cpp
+++ b/src/EvtGenModels/EvtPto3P.cpp
@@ -1,106 +1,91 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-// $Id: EvtPto3P.cpp,v 1.4 2009-03-16 15:46:31 robbep Exp $
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module creator:
-// Alexei Dvoretskii, Caltech, 2001-2002.
-//-----------------------------------------------------------------------
#include "EvtGenModels/EvtPto3P.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtPto3PAmpFactory.hh"
using namespace EvtCyclic3;
EvtDalitzPlot EvtPto3P::dp()
{
// There must be 3 daughters. All particles must be pseudoscalars.
// Charge must be conserved. Number of arguments must be non-zero.
EvtId parent = getParentId();
assert( getNDaug() == 3 );
EvtId dau0 = getDaug( 0 );
EvtId dau1 = getDaug( 1 );
EvtId dau2 = getDaug( 2 );
assert( EvtPDL::getSpinType( parent ) == EvtSpinType::SCALAR );
assert( EvtPDL::getSpinType( dau0 ) == EvtSpinType::SCALAR );
assert( EvtPDL::getSpinType( dau1 ) == EvtSpinType::SCALAR );
assert( EvtPDL::getSpinType( dau2 ) == EvtSpinType::SCALAR );
assert( EvtPDL::chg3( parent ) ==
EvtPDL::chg3( dau0 ) + EvtPDL::chg3( dau1 ) + EvtPDL::chg3( dau2 ) );
assert( getNArg() > 0 );
return EvtDalitzPlot( EvtPDL::getMass( dau0 ), EvtPDL::getMass( dau1 ),
EvtPDL::getMass( dau2 ), EvtPDL::getMass( parent ) );
}
EvtAmpFactory<EvtDalitzPoint>* EvtPto3P::createFactory(
const EvtMultiChannelParser& parser )
{
// Compute the interval size
EvtDalitzPlot plot = dp();
EvtAmpFactory<EvtDalitzPoint>* fact = new EvtPto3PAmpFactory( plot );
fact->build( parser, 10000 );
return fact;
}
std::vector<EvtVector4R> EvtPto3P::initDaughters( const EvtDalitzPoint& x ) const
{
std::vector<EvtVector4R> v;
assert( x.isValid() );
// Calculate in the r.f. of AB
double eA = x.e( A, AB );
double eB = x.e( B, AB );
double eC = x.e( C, AB );
double pA = x.p( A, AB );
double pC = x.p( C, AB );
double cos = x.cosTh( CA, AB );
double sin = sqrt( 1.0 - cos * cos );
EvtVector4R vA( eA, 0, 0, pA );
EvtVector4R vB( eB, 0, 0, -pA );
EvtVector4R vC( eC, 0, pC * sin, pC * cos );
// Boost from rest frame of AB to rest-frame of decaying particle
// vboost is the 4-momentum of frame being boosted from in the frame
// being boosted into.
EvtVector4R vboost = vA + vB + vC;
vboost.set( 1, -vboost.get( 1 ) );
vboost.set( 2, -vboost.get( 2 ) );
vboost.set( 3, -vboost.get( 3 ) );
vA.applyBoostTo( vboost );
vB.applyBoostTo( vboost );
vC.applyBoostTo( vboost );
// Rotate
double alpha = EvtRandom::Flat( EvtConst::twoPi );
double beta = acos( EvtRandom::Flat( -1.0, 1.0 ) );
double gamma = EvtRandom::Flat( EvtConst::twoPi );
vA.applyRotateEuler( alpha, beta, gamma );
vB.applyRotateEuler( alpha, beta, gamma );
vC.applyRotateEuler( alpha, beta, gamma );
// Fill vector
assert( v.size() == 0 );
v.push_back( vA );
v.push_back( vB );
v.push_back( vC );
return v;
}
diff --git a/src/EvtGenModels/EvtRareLbToLll.cpp b/src/EvtGenModels/EvtRareLbToLll.cpp
index 40238f1..0f5ced5 100644
--- a/src/EvtGenModels/EvtRareLbToLll.cpp
+++ b/src/EvtGenModels/EvtRareLbToLll.cpp
@@ -1,490 +1,467 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech, UCSB
-//
-// Module: EvtRareLbToLll
-//
-// Description:
-// Implements the rare Lb --> Lambda^(*) ell ell models described in
-// http://arxiv.org/pdf/1108.6129.pdf
-//
-// Modification history:
-//
-// T. Blake November 2013 Created module
-//
-//------------------------------------------------------------------------
-//
-
#include "EvtGenModels/EvtRareLbToLll.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracParticle.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtRaritaSchwinger.hh"
#include "EvtGenBase/EvtSpinDensity.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtRareLbToLllFF.hh"
#include "EvtGenModels/EvtRareLbToLllFFGutsche.hh"
#include "EvtGenModels/EvtRareLbToLllFFlQCD.hh"
#include <stdlib.h>
// The module name specification
std::string EvtRareLbToLll::getName()
{
return "RareLbToLll";
}
// The implementation of the clone() method
EvtDecayBase* EvtRareLbToLll::clone()
{
return new EvtRareLbToLll;
}
void EvtRareLbToLll::init()
{
checkNArg( 1 );
// check that there are 3 daughters
checkNDaug( 3 );
// Parent should be spin 1/2 Lambda_b0
const EvtSpinType::spintype spin = EvtPDL::getSpinType( getDaug( 0 ) );
if ( !( spin == EvtSpinType::DIRAC || spin == EvtSpinType::RARITASCHWINGER ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " EvtRareLbToLll expects DIRAC or RARITASWINGER daughter "
<< std::endl;
}
// We expect that the second and third daughters
// are the ell+ and ell-
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::DIRAC );
std::string model = getArgStr( 0 );
if ( model == "Gutsche" ) {
ffmodel_ = std::make_unique<EvtRareLbToLllFFGutsche>();
} else if ( model == "LQCD" ) {
ffmodel_ = std::make_unique<EvtRareLbToLllFFlQCD>();
} else if ( model == "MR" ) {
ffmodel_ = std::make_unique<EvtRareLbToLllFF>();
} else {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " Unknown form-factor model, valid options are MR, LQCD, Gutsche."
<< std::endl;
::abort();
}
wcmodel_ = std::make_unique<EvtRareLbToLllWC>();
ffmodel_->init();
return;
}
void EvtRareLbToLll::initProbMax()
{
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtRareLbToLll is finding maximum probability ... " << std::endl;
m_maxProbability = 0;
if ( m_maxProbability == 0 ) {
EvtDiracParticle parent{};
parent.noLifeTime();
parent.init( getParentId(),
EvtVector4R( EvtPDL::getMass( getParentId() ), 0, 0, 0 ) );
parent.setDiagonalSpinDensity();
EvtAmp amp;
EvtId daughters[3] = {getDaug( 0 ), getDaug( 1 ), getDaug( 2 )};
amp.init( getParentId(), 3, daughters );
parent.makeDaughters( 3, daughters );
EvtParticle* lambda = parent.getDaug( 0 );
EvtParticle* lep1 = parent.getDaug( 1 );
EvtParticle* lep2 = parent.getDaug( 2 );
lambda->noLifeTime();
lep1->noLifeTime();
lep2->noLifeTime();
EvtSpinDensity rho;
rho.setDiag( parent.getSpinStates() );
double M0 = EvtPDL::getMass( getParentId() );
double mL = EvtPDL::getMass( getDaug( 0 ) );
double m1 = EvtPDL::getMass( getDaug( 1 ) );
double m2 = EvtPDL::getMass( getDaug( 2 ) );
double q2, pstar, elambda, theta;
double q2min = ( m1 + m2 ) * ( m1 + m2 );
double q2max = ( M0 - mL ) * ( M0 - mL );
EvtVector4R p4lambda, p4lep1, p4lep2, boost;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtRareLbToLll is probing whole phase space ..." << std::endl;
int i, j;
double prob = 0;
for ( i = 0; i <= 100; i++ ) {
q2 = q2min + i * ( q2max - q2min ) / 100.;
elambda = ( M0 * M0 + mL * mL - q2 ) / 2 / M0;
if ( i == 0 )
pstar = 0;
else
pstar = sqrt( q2 - ( m1 + m2 ) * ( m1 + m2 ) ) *
sqrt( q2 - ( m1 - m2 ) * ( m1 - m2 ) ) / 2 / sqrt( q2 );
boost.set( M0 - elambda, 0, 0, +sqrt( elambda * elambda - mL * mL ) );
if ( i != 100 ) {
p4lambda.set( elambda, 0, 0,
-sqrt( elambda * elambda - mL * mL ) );
} else {
p4lambda.set( mL, 0, 0, 0 );
}
for ( j = 0; j <= 45; j++ ) {
theta = j * EvtConst::pi / 45;
p4lep1.set( sqrt( pstar * pstar + m1 * m1 ), 0,
+pstar * sin( theta ), +pstar * cos( theta ) );
p4lep2.set( sqrt( pstar * pstar + m2 * m2 ), 0,
-pstar * sin( theta ), -pstar * cos( theta ) );
//std::cout << "p1: " << p4lep1 << " p2: " << p4lep2 << " pstar: " << pstar << std::endl;
if ( i != 100 ) // At maximal q2 we are already in correct frame as Lambda and W/Zvirtual are at rest
{
p4lep1 = boostTo( p4lep1, boost );
p4lep2 = boostTo( p4lep2, boost );
}
lambda->init( getDaug( 0 ), p4lambda );
lep1->init( getDaug( 1 ), p4lep1 );
lep2->init( getDaug( 2 ), p4lep2 );
calcAmp( amp, &parent );
prob = rho.normalizedProb( amp.getSpinDensity() );
//std::cout << "q2: " << q2 << " \t theta: " << theta << " \t prob: " << prob << std::endl;
//std::cout << "p1: " << p4lep1 << " p2: " << p4lep2 << " q2-q2min: " << q2-(m1+m2)*(m1+m2) << std::endl;
if ( prob > m_maxProbability ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " - probability " << prob << " found at q2 = " << q2
<< " (" << 100 * ( q2 - q2min ) / ( q2max - q2min )
<< " %) and theta = " << theta * 180 / EvtConst::pi
<< std::endl;
m_maxProbability = prob;
}
}
//::abort();
}
//m_poleSize = 0.04*q2min;
m_maxProbability *= 1.2;
}
setProbMax( m_maxProbability );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtRareLbToLll set up maximum probability to " << m_maxProbability
<< std::endl;
}
void EvtRareLbToLll::decay( EvtParticle* parent )
{
parent->initializePhaseSpace( getNDaug(), getDaugs() );
calcAmp( _amp2, parent );
}
bool EvtRareLbToLll::isParticle( EvtParticle* parent ) const
{
static EvtIdSet partlist( "Lambda_b0" );
return partlist.contains( parent->getId() );
}
void EvtRareLbToLll::calcAmp( EvtAmp& amp, EvtParticle* parent )
{
//parent->setDiagonalSpinDensity();
EvtParticle* lambda = parent->getDaug( 0 );
static EvtIdSet leptons( "e-", "mu-", "tau-" );
const bool isparticle = isParticle( parent );
EvtParticle* lp = 0;
EvtParticle* lm = 0;
if ( leptons.contains( parent->getDaug( 1 )->getId() ) ) {
lp = parent->getDaug( 1 );
lm = parent->getDaug( 2 );
} else {
lp = parent->getDaug( 2 );
lm = parent->getDaug( 1 );
}
EvtVector4R P;
P.set( parent->mass(), 0.0, 0.0, 0.0 );
EvtVector4R q = lp->getP4() + lm->getP4();
double qsq = q.mass2();
// Leptonic currents
EvtVector4C LV[2][2]; // \bar{\ell} \gamma^{\mu} \ell
EvtVector4C LA[2][2]; // \bar{\ell} \gamma^{\mu} \gamma^{5} \ell
for ( int i = 0; i < 2; ++i ) {
for ( int j = 0; j < 2; ++j ) {
if ( isparticle ) {
LV[i][j] = EvtLeptonVCurrent( lp->spParent( i ),
lm->spParent( j ) );
LA[i][j] = EvtLeptonACurrent( lp->spParent( i ),
lm->spParent( j ) );
} else {
LV[i][j] = EvtLeptonVCurrent( lp->spParent( 1 - i ),
lm->spParent( 1 - j ) );
LA[i][j] = EvtLeptonACurrent( lp->spParent( 1 - i ),
lm->spParent( 1 - j ) );
}
}
}
EvtRareLbToLllFF::FormFactors FF;
//F, G, FT and GT
ffmodel_->getFF( parent, lambda, FF );
EvtComplex C7eff = wcmodel_->GetC7Eff( qsq );
EvtComplex C9eff = wcmodel_->GetC9Eff( qsq );
EvtComplex C10eff = wcmodel_->GetC10Eff( qsq );
EvtComplex AC[4];
EvtComplex BC[4];
EvtComplex DC[4];
EvtComplex EC[4];
// check to see if particle is same or opposite parity to Lb
const int parity = ffmodel_->isNatural( lambda ) ? 1 : -1;
// Lambda spin type
const EvtSpinType::spintype spin = EvtPDL::getSpinType( lambda->getId() );
static const double mb = 5.209;
// Eq. 48 + 49
for ( unsigned int i = 0; i < 4; ++i ) {
if ( parity > 0 ) {
AC[i] = -2. * mb * C7eff * FF.FT_[i] / qsq + C9eff * FF.F_[i];
BC[i] = -2. * mb * C7eff * FF.GT_[i] / qsq - C9eff * FF.G_[i];
DC[i] = C10eff * FF.F_[i];
EC[i] = -C10eff * FF.G_[i];
} else {
AC[i] = -2. * mb * C7eff * FF.GT_[i] / qsq - C9eff * FF.G_[i];
BC[i] = -2. * mb * C7eff * FF.FT_[i] / qsq + C9eff * FF.F_[i];
DC[i] = -C10eff * FF.G_[i];
EC[i] = C10eff * FF.F_[i];
}
}
// handle particle -> antiparticle in Hadronic currents
const double cv = ( isparticle > 0 ) ? 1.0 : -1.0 * parity;
const double ca = ( isparticle > 0 ) ? 1.0 : +1.0 * parity;
const double cs = ( isparticle > 0 ) ? 1.0 : +1.0 * parity;
const double cp = ( isparticle > 0 ) ? 1.0 : -1.0 * parity;
if ( EvtSpinType::DIRAC == spin ) {
EvtVector4C H1[2][2]; // vector current
EvtVector4C H2[2][2]; // axial-vector
EvtVector4C T[6];
// Hadronic currents
for ( int i = 0; i < 2; ++i ) {
for ( int j = 0; j < 2; ++j ) {
HadronicAmp( parent, lambda, T, i, j );
H1[i][j] = ( cv * AC[0] * T[0] + ca * BC[0] * T[1] +
cs * AC[1] * T[2] + cp * BC[1] * T[3] +
cs * AC[2] * T[4] + cp * BC[2] * T[5] );
H2[i][j] = ( cv * DC[0] * T[0] + ca * EC[0] * T[1] +
cs * DC[1] * T[2] + cp * EC[1] * T[3] +
cs * DC[2] * T[4] + cp * EC[2] * T[5] );
}
}
// Spin sums
int spins[4];
for ( int i = 0; i < 2; ++i ) {
for ( int ip = 0; ip < 2; ++ip ) {
for ( int j = 0; j < 2; ++j ) {
for ( int jp = 0; jp < 2; ++jp ) {
spins[0] = i;
spins[1] = ip;
spins[2] = j;
spins[3] = jp;
EvtComplex M = H1[i][ip] * LV[j][jp] +
H2[i][ip] * LA[j][jp];
amp.vertex( spins, M );
}
}
}
}
} else if ( EvtSpinType::RARITASCHWINGER == spin ) {
EvtVector4C T[8];
EvtVector4C H1[2][4]; // vector current // swaped
EvtVector4C H2[2][4]; // axial-vector
// Build hadronic amplitude
for ( int i = 0; i < 2; ++i ) {
for ( int j = 0; j < 4; ++j ) {
H1[i][j] = ( cv * AC[0] * T[0] + ca * BC[0] * T[1] +
cs * AC[1] * T[2] + cp * BC[1] * T[3] +
cs * AC[2] * T[4] + cp * BC[2] * T[5] +
cs * AC[3] * T[6] + cp * BC[3] * T[7] );
H2[i][j] = ( cv * DC[0] * T[0] + ca * EC[0] * T[1] +
cs * DC[1] * T[2] + cp * EC[1] * T[3] +
cs * DC[2] * T[4] + cp * EC[2] * T[5] +
cs * DC[3] * T[6] + cp * EC[3] * T[7] );
}
}
// Spin sums
int spins[4];
for ( int i = 0; i < 2; ++i ) {
for ( int ip = 0; ip < 4; ++ip ) {
for ( int j = 0; j < 2; ++j ) {
for ( int jp = 0; jp < 2; ++jp ) {
spins[0] = i;
spins[1] = ip;
spins[2] = j;
spins[3] = jp;
EvtComplex M = H1[i][ip] * LV[j][jp] +
H2[i][ip] * LA[j][jp];
amp.vertex( spins, M );
}
}
}
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " EvtRareLbToLll expects DIRAC or RARITASWINGER daughter "
<< std::endl;
}
return;
}
// spin 1/2 daughters
void EvtRareLbToLll::HadronicAmp( EvtParticle* parent, EvtParticle* lambda,
EvtVector4C* T, const int i, const int j )
{
const EvtDiracSpinor Sfinal = lambda->spParent( j );
const EvtDiracSpinor Sinit = parent->sp( i );
const EvtVector4R L = lambda->getP4();
EvtVector4R P;
P.set( parent->mass(), 0.0, 0.0, 0.0 );
const double Pm = parent->mass();
const double Lm = lambda->mass();
// \bar{u} \gamma^{\mu} u
T[0] = EvtLeptonVCurrent( Sfinal, Sinit );
// \bar{u} \gamma^{\mu}\gamma^{5} u
T[1] = EvtLeptonACurrent( Sfinal, Sinit );
// \bar{u} v^{\mu} u
T[2] = EvtLeptonSCurrent( Sfinal, Sinit ) * ( P / Pm );
// \bar{u} v^{\mu} \gamma^{5} u
T[3] = EvtLeptonPCurrent( Sfinal, Sinit ) * ( P / Pm );
// \bar{u} v^{\prime\mu} u
T[4] = EvtLeptonSCurrent( Sfinal, Sinit ) * ( L / Lm );
// \bar{u} v^{\prime\mu} \gamma^{5}
T[5] = EvtLeptonPCurrent( Sfinal, Sinit ) * ( L / Lm );
// Where:
// v = p_{\Lambda_b}/m_{\Lambda_b}
// v^{\prime} = p_{\Lambda}/m_{\Lambda}
return;
}
// spin 3/2 daughters
void EvtRareLbToLll::HadronicAmpRS( EvtParticle* parent, EvtParticle* lambda,
EvtVector4C* T, const int i, const int j )
{
const EvtRaritaSchwinger Sfinal = lambda->spRSParent( j );
const EvtDiracSpinor Sinit = parent->sp( i );
EvtVector4R P;
P.set( parent->mass(), 0.0, 0.0, 0.0 );
const EvtVector4R L = lambda->getP4();
EvtTensor4C ID;
ID.setdiag( 1.0, 1.0, 1.0, 1.0 );
EvtDiracSpinor Sprime;
for ( int i = 0; i < 4; i++ ) {
Sprime.set_spinor( i, Sfinal.getVector( i ) * P );
}
const double Pmsq = P.mass2();
const double Pm = parent->mass();
const double PmLm = Pm * lambda->mass();
EvtVector4C V1, V2;
for ( int i = 0; i < 4; i++ ) {
V1.set( i, EvtLeptonSCurrent( Sfinal.getSpinor( i ), Sinit ) );
V2.set( i, EvtLeptonPCurrent( Sfinal.getSpinor( i ), Sinit ) );
}
// \bar{u}_{alpha} v^{\alpha} \gamma^{\mu} u
T[0] = EvtLeptonVCurrent( Sprime, Sinit ) * ( 1 / Pm );
// \bar{u}_{alpha} v^{\alpha} \gamma^{\mu} \gamma^{5} u
T[1] = EvtLeptonACurrent( Sprime, Sinit ) * ( 1 / Pm );
// \bar{u}_{\alpha} v^{\alpha} v^{\mu} u
T[2] = EvtLeptonSCurrent( Sprime, Sinit ) * ( P / Pmsq );
// \bar{u}_{\alpha} v^{\alpha} v^{\mu} \gamma^{5} u
T[3] = EvtLeptonPCurrent( Sprime, Sinit ) * ( P / Pmsq );
// \bar{u}_{\alpha} v^{\alpha} v^{\prime \mu} u
T[4] = EvtLeptonSCurrent( Sprime, Sinit ) * ( L / PmLm );
// \bar{u}_{\alpha} v^{\alpha} v^{\prime \mu} \gamma^{5} u
T[5] = EvtLeptonPCurrent( Sprime, Sinit ) * ( L / PmLm );
// \bar{u}_{\alpha} g^{\alpha\mu} u
T[6] = ID.cont2( V1 );
// \bar{u}_{\alpha} g^{\alpha\mu} \gamma^{5} u
T[7] = ID.cont2( V2 );
// Where:
// v = p_{\Lambda_b}/m_{\Lambda_b}
// v^{\prime} = p_{\Lambda}/m_{\Lambda}
return;
}
diff --git a/src/EvtGenModels/EvtRareLbToLllFF.cpp b/src/EvtGenModels/EvtRareLbToLllFF.cpp
index ee2e1c8..13e5a9a 100644
--- a/src/EvtGenModels/EvtRareLbToLllFF.cpp
+++ b/src/EvtGenModels/EvtRareLbToLllFF.cpp
@@ -1,295 +1,291 @@
-// Include files
-
-// local
-
#include "EvtGenModels/EvtRareLbToLllFF.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtVector4R.hh"
//-----------------------------------------------------------------------------
// Implementation file for class : EvtRareLbToLllFF
//
// 2013-11-25 : Thomas Blake
//-----------------------------------------------------------------------------
//=============================================================================
// Standard constructor, initializes variables
//=============================================================================
EvtRareLbToLllFF::FormFactorDependence::FormFactorDependence() :
a0_( 0 ), a2_( 0 ), a4_( 0 ), al_( 0 ), ap_( 0 )
{
}
EvtRareLbToLllFF::FormFactorDependence::FormFactorDependence( const double al,
const double ap ) :
a0_( 0 ), a2_( 0 ), a4_( 0 ), al_( al ), ap_( ap )
{
}
EvtRareLbToLllFF::FormFactorDependence::FormFactorDependence( const double a0,
const double a2,
const double a4,
const double al,
const double ap ) :
a0_( a0 ), a2_( a2 ), a4_( a4 ), al_( al ), ap_( ap )
{
}
EvtRareLbToLllFF::FormFactorDependence::FormFactorDependence(
const EvtRareLbToLllFF::FormFactorDependence& other ) :
a0_( other.a0_ ),
a2_( other.a2_ ),
a4_( other.a4_ ),
al_( other.al_ ),
ap_( other.ap_ )
{
}
EvtRareLbToLllFF::FormFactorDependence*
EvtRareLbToLllFF::FormFactorDependence::clone() const
{
return new EvtRareLbToLllFF::FormFactorDependence( a0_, a2_, a4_, al_, ap_ );
}
EvtRareLbToLllFF::FormFactorSet::FormFactorSet()
{
}
EvtRareLbToLllFF::FormFactorSet::FormFactorSet(
const EvtRareLbToLllFF::FormFactorSet& other ) :
F1( other.F1 ),
F2( other.F2 ),
F3( other.F3 ),
F4( other.F4 ),
G1( other.G1 ),
G2( other.G2 ),
G3( other.G3 ),
G4( other.G4 ),
H1( other.H1 ),
H2( other.H2 ),
H3( other.H3 ),
H4( other.H4 ),
H5( other.H5 ),
H6( other.H6 )
{
}
void EvtRareLbToLllFF::FormFactorDependence::param( const double al,
const double ap )
{
al_ = al;
ap_ = ap;
}
void EvtRareLbToLllFF::FormFactorDependence::param( const double a0,
const double a2,
const double a4,
const double al,
const double ap )
{
a0_ = a0;
a2_ = a2;
a4_ = a4;
al_ = al;
ap_ = ap;
}
void EvtRareLbToLllFF::init()
{
// Parameters for Lambda0
auto L1115 = std::make_unique<EvtRareLbToLllFF::FormFactorSet>();
L1115->F1.param( 1.21, 0.319, -0.0177, 0.387, 0.372 );
L1115->F2.param( -0.202, -0.219, 0.0103, 0.387, 0.372 );
L1115->F3.param( -0.0615, 0.00102, -0.00139, 0.387, 0.372 );
L1115->F4.param( 0.387, 0.372 );
L1115->G1.param( 0.927, 0.104, -0.00553, 0.387, 0.372 );
L1115->G2.param( -0.236, -0.233, 0.0110, 0.387, 0.372 );
L1115->G3.param( 0.0756, 0.0195, -0.00115, 0.387, 0.372 );
L1115->G4.param( 0.387, 0.372 );
L1115->H1.param( 0.936, 0.0722, -0.00643, 0.387, 0.372 );
L1115->H2.param( 0.227, 0.265, -0.0101, 0.387, 0.372 );
L1115->H3.param( -0.0757, -0.0195, 0.00116, 0.387, 0.372 );
L1115->H4.param( -0.0174, -0.00986, -0.000524, 0.387, 0.372 );
L1115->H5.param( 0.387, 0.372 );
L1115->H6.param( 0.387, 0.372 );
// Parameters for Lambda(Lambda(1520)0)
auto L1520 = std::make_unique<EvtRareLbToLllFF::FormFactorSet>();
L1520->F1.param( -1.66, -0.295, 0.00924, 0.333, 0.308 );
L1520->F2.param( 0.544, 0.194, -0.00420, 0.333, 0.308 );
L1520->F3.param( 0.126, 0.00799, -0.000635, 0.333, 0.308 );
L1520->F4.param( -0.0330, -0.00977, 0.00211, 0.303, 0.308 );
L1520->G1.param( -0.964, -0.100, 0.00264, 0.333, 0.308 );
L1520->G2.param( 0.625, 0.219, -0.00508, 0.333, 0.308 );
L1520->G3.param( -0.183, -0.0380, 0.00351, 0.333, 0.308 );
L1520->G4.param( 0.0530, 0.0161, -0.00221, 0.333, 0.308 );
L1520->H1.param( -1.08, -0.0732, 0.00464, 0.333, 0.308 );
L1520->H2.param( -0.507, -0.246, 0.00309, 0.333, 0.308 );
L1520->H3.param( 0.187, 0.0295, -0.00107, 0.333, 0.308 );
L1520->H4.param( 0.0772, 0.0267, -0.00217, 0.333, 0.308 );
L1520->H5.param( -0.0517, -0.0173, 0.00259, 0.333, 0.308 );
L1520->H6.param( 0.0206, 0.00679, -0.000220, 0.333, 0.308 );
FFMap_[EvtPDL::getId( "Lambda0" ).getId()] = L1115.get();
FFMap_[EvtPDL::getId( "anti-Lambda0" ).getId()] = L1115.get();
FFMap_[EvtPDL::getId( "Lambda(1520)0" ).getId()] = L1520.get();
FFMap_[EvtPDL::getId( "anti-Lambda(1520)0" ).getId()] = L1520.get();
FF_ = {std::move( L1115 ), std::move( L1520 )};
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtRareLbToLll is using form factors from arXiv:1108.6129 "
<< std::endl;
}
//=============================================================================
double EvtRareLbToLllFF::func( const double p,
EvtRareLbToLllFF::FormFactorDependence& dep )
{
static const double mq = 0.2848;
static const double mtilde = 1.122;
const double asq = 0.5 * ( dep.al_ * dep.al_ + dep.ap_ * dep.ap_ );
const double psq = p * p;
return ( dep.a0_ + dep.a2_ * psq + dep.a4_ * psq * psq ) *
exp( -( 3. * mq * mq * psq ) / ( 2. * mtilde * mtilde * asq ) );
}
void EvtRareLbToLllFF::DiracFF( EvtParticle* parent, EvtParticle* lambda,
EvtRareLbToLllFF::FormFactorSet& dep,
EvtRareLbToLllFF::FormFactors& FF )
{
const double M = lambda->mass();
const double MB = parent->mass();
const double vdotv = calculateVdotV( parent, lambda );
const double p = lambda->getP4().d3mag();
FF.F_[0] = func( p, dep.F1 );
FF.F_[1] = func( p, dep.F2 );
FF.F_[2] = func( p, dep.F3 );
FF.G_[0] = func( p, dep.G1 );
FF.G_[1] = func( p, dep.G2 );
FF.G_[2] = func( p, dep.G3 );
const double H1 = func( p, dep.H1 );
const double H2 = func( p, dep.H2 );
const double H3 = func( p, dep.H3 );
const double H4 = func( p, dep.H4 );
if ( isNatural( lambda ) ) {
FF.FT_[0] = -( MB + M ) * H1 - ( MB - M * vdotv ) * H2 -
( MB * vdotv - M ) * H3;
FF.FT_[1] = MB * H1 + ( MB - M ) * H2 + ( MB * vdotv - M ) * H4;
FF.FT_[2] = M * H1 + ( MB - M ) * H3 - ( MB - M * vdotv ) * H4;
FF.GT_[0] = ( MB - M ) * H1 - M * ( 1. - vdotv ) * H2 -
MB * ( 1. - vdotv ) * H3;
FF.GT_[1] = MB * H1 - M * H2 - MB * H3;
FF.GT_[2] = M * H1 + M * H2 + MB * H3;
} else {
FF.FT_[0] = ( MB - M ) * H1 - ( MB - M * vdotv ) * H2 -
( MB * vdotv - M ) * H3;
FF.FT_[1] = MB * H1 - ( MB + M ) * H2 + ( MB * vdotv - M ) * H4;
FF.FT_[2] = M * H1 - ( MB + M ) * H3 - ( MB - M * vdotv ) * H4;
FF.GT_[0] = -( MB + M ) * H1 + M * ( 1. + vdotv ) * H2 +
MB * ( 1. + vdotv ) * H3;
FF.GT_[1] = MB * H1 - M * H2 - MB * H3;
FF.GT_[2] = M * H1 - M * H2 - MB * H3;
}
}
void EvtRareLbToLllFF::RaritaSchwingerFF( EvtParticle* parent,
EvtParticle* lambda,
EvtRareLbToLllFF::FormFactorSet& FFset,
EvtRareLbToLllFF::FormFactors& FF )
{
const double M = lambda->mass();
const double MB = parent->mass();
const double vdotv = calculateVdotV( parent, lambda );
const double p = lambda->getP4().d3mag();
FF.F_[0] = func( p, FFset.F1 );
FF.F_[1] = func( p, FFset.F2 );
FF.F_[2] = func( p, FFset.F3 );
FF.F_[3] = func( p, FFset.F4 );
FF.G_[0] = func( p, FFset.G1 );
FF.G_[1] = func( p, FFset.G2 );
FF.G_[2] = func( p, FFset.G3 );
FF.G_[3] = func( p, FFset.G4 );
const double H1 = func( p, FFset.H1 );
const double H2 = func( p, FFset.H2 );
const double H3 = func( p, FFset.H3 );
const double H4 = func( p, FFset.H4 );
const double H5 = func( p, FFset.H5 );
const double H6 = func( p, FFset.H6 );
if ( isNatural( lambda ) ) {
FF.FT_[0] = -( MB + M ) * H1 - ( MB - M * vdotv ) * H2 -
( MB * vdotv - M ) * H3 - MB * H5;
FF.FT_[1] = MB * H1 + ( MB - M ) * H2 + ( MB * vdotv - M ) * H4 - MB * H6;
FF.FT_[2] = M * H1 + ( MB - M ) * H3 - ( MB - M * vdotv ) * H4;
FF.FT_[3] = ( MB - M ) * H5 + ( MB - M * vdotv ) * H6;
FF.GT_[0] = ( MB - M ) * H1 - M * ( 1. - vdotv ) * H2 -
MB * ( 1. - vdotv ) * H3 + MB * H5 + M * H6;
FF.GT_[1] = MB * H1 - M * H2 - MB * H3;
FF.GT_[2] = M * H1 + M * H2 + MB * H3 - M * H6;
FF.GT_[3] = ( MB + M ) * H5 + M * ( 1. + vdotv ) * H6;
} else {
FF.FT_[0] = ( MB - M ) * H1 - ( MB - M * vdotv ) * H2 -
( MB * vdotv - M ) * H3 - MB * H5;
FF.FT_[1] = MB * H1 - ( MB + M ) * H2 + ( MB * vdotv - M ) * H4 - MB * H6;
FF.FT_[2] = M * H1 - ( MB + M ) * H3 - ( MB - M * vdotv ) * H4;
FF.FT_[3] = -( MB + M ) * H5 + ( MB - M * vdotv ) * H6;
FF.GT_[0] = -( MB + M ) * H1 + M * ( 1. + vdotv ) * H2 +
MB * ( 1. + vdotv ) * H3 + MB * H5 + M * H6;
FF.GT_[1] = MB * H1 - M * H2 - MB * H3;
FF.GT_[2] = M * H1 - M * H2 - MB * H3 - M * H6;
FF.GT_[3] = -( MB - M ) * H5 - M * ( 1. - vdotv ) * H6;
}
}
void EvtRareLbToLllFF::getFF( EvtParticle* parent, EvtParticle* lambda,
EvtRareLbToLllFF::FormFactors& FF )
{
// Find the FF information for this particle, start by setting all to zero
FF.areZero();
// Are the FF's for the particle known?
auto it = FFMap_.find( lambda->getId().getId() );
if ( it == FFMap_.end() ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " EvtRareLbToLll does not contain FF for " << lambda->getId()
<< std::endl;
return;
}
// Split by spin 1/2, spin 3/2
const int spin = EvtPDL::getSpinType( lambda->getId() );
if ( EvtSpinType::DIRAC == spin ) {
DiracFF( parent, lambda, *( it->second ), FF );
} else if ( spin == EvtSpinType::RARITASCHWINGER ) {
RaritaSchwingerFF( parent, lambda, *( it->second ), FF );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " EvtRareLbToLll expects DIRAC or RARITASWINGER daughter "
<< std::endl; // should add a warning here
return;
}
return;
}
diff --git a/src/EvtGenModels/EvtRareLbToLllFFGutsche.cpp b/src/EvtGenModels/EvtRareLbToLllFFGutsche.cpp
index 20752ff..ec8aeb6 100644
--- a/src/EvtGenModels/EvtRareLbToLllFFGutsche.cpp
+++ b/src/EvtGenModels/EvtRareLbToLllFFGutsche.cpp
@@ -1,137 +1,133 @@
-// Include files
-
-// local
-
#include "EvtGenModels/EvtRareLbToLllFFGutsche.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtVector4R.hh"
//-----------------------------------------------------------------------------
// Implementation file for class : EvtRareLbToLllFFGutsche
//
// 2014-10-21 : Michal Kreps
//-----------------------------------------------------------------------------
//=============================================================================
// Standard constructor, initializes variables
//=============================================================================
EvtIdSet EvtRareLbToLllFFGutsche::fParents( "Lambda_b0", "anti-Lambda_b0" );
EvtIdSet EvtRareLbToLllFFGutsche::fDaughters( "Lambda0", "anti-Lambda0" );
void EvtRareLbToLllFFGutsche::init()
{
fVconsts[0][0] = 0.107;
fVconsts[0][1] = 2.27;
fVconsts[0][2] = 1.367;
fVconsts[1][0] = 0.043;
fVconsts[1][1] = 2.411;
fVconsts[1][2] = 1.531;
fVconsts[2][0] = -0.003;
fVconsts[2][1] = 2.815;
fVconsts[2][2] = 2.041;
fAconsts[0][0] = 0.104;
fAconsts[0][1] = 2.232;
fAconsts[0][2] = 1.328;
fAconsts[1][0] = -0.003;
fAconsts[1][1] = 2.955;
fAconsts[1][2] = 3.620;
fAconsts[2][0] = -0.052;
fAconsts[2][1] = 2.437;
fAconsts[2][2] = 1.559;
fTVconsts[0][0] = -0.043;
fTVconsts[0][1] = 2.411;
fTVconsts[0][2] = 1.531;
fTVconsts[1][0] = -0.105;
fTVconsts[1][1] = 2.27118;
fTVconsts[1][2] = 1.36776;
fTVconsts[2][0] = 0; // Not used anywhere
fTVconsts[2][1] = 0;
fTVconsts[2][2] = 0;
fTAconsts[0][0] = 0.003;
fTAconsts[0][1] = 2.955;
fTAconsts[0][2] = 3.620;
fTAconsts[1][0] = -0.105;
fTAconsts[1][1] = 2.233;
fTAconsts[1][2] = 1.328;
fTAconsts[2][0] = 0; // Not used anywhere
fTAconsts[2][1] = 0;
fTAconsts[2][2] = 0;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtRareLbToLll is using form factors from arXiv:1301.3737 "
<< std::endl;
}
//=============================================================================
void EvtRareLbToLllFFGutsche::getFF( EvtParticle* parent, EvtParticle* lambda,
EvtRareLbToLllFFBase::FormFactors& FF )
{
// Find the FF information for this particle, start by setting all to zero
FF.areZero();
/*
if ( ! ( fParents.contains(parent->getId()) &&
fDaughters.contains(lambda->getId()) ) )
{
EvtGenReport(EVTGEN_ERROR,"EvtGen") << " EvtRareLbToLllFFGutsche: Unknown mother and/or daughter. " << std::endl;
return;
}
*/
double m1 = parent->getP4().mass();
double m2 = lambda->getP4().mass();
EvtVector4R p4parent;
p4parent.set( parent->mass(), 0, 0, 0 );
double q2 = ( p4parent - lambda->getP4() ).mass2();
double m21 = m2 / m1;
double shat = q2 / m1 / m1;
double fV[3];
double fA[3];
for ( int i = 0; i <= 2; ++i ) {
fV[i] = formFactorParametrization( shat, fVconsts[i][0], fVconsts[i][1],
fVconsts[i][2] );
fA[i] = formFactorParametrization( shat, fAconsts[i][0], fAconsts[i][1],
fAconsts[i][2] );
}
double fTV[2];
double fTA[2];
for ( int i = 0; i <= 1; ++i ) {
fTV[i] = formFactorParametrization( shat, fTVconsts[i][0],
fTVconsts[i][1], fTVconsts[i][2] );
fTA[i] = formFactorParametrization( shat, fTAconsts[i][0],
fTAconsts[i][1], fTAconsts[i][2] );
}
// Both v^2==v'^2==1 by definition
FF.F_[0] = fV[0] + fV[1] * ( 1 + m21 );
FF.F_[1] = fV[2] - fV[1];
FF.F_[2] = -m21 * ( fV[1] + fV[2] );
FF.G_[0] = fA[0] - fA[1] * ( 1 - m21 );
FF.G_[1] = fA[2] - fA[1];
FF.G_[2] = -m21 * ( +fA[1] + fA[2] );
FF.FT_[0] = fTV[1] * ( m1 + m2 ) + fTV[0] * ( q2 / m1 );
FF.FT_[1] = +fTV[0] * ( m2 - m1 ) - fTV[1] * m1;
FF.FT_[2] = m2 * ( fTV[0] - fTV[1] ) - fTV[0] * m21 * m2;
FF.GT_[0] = -fTA[1] * ( m1 - m2 ) + fTA[0] * ( q2 / m1 );
FF.GT_[1] = -fTA[1] * m1 + fTA[0] * ( m1 + m2 );
FF.GT_[2] = -fTA[0] * m2 * m21 - m2 * ( fTA[0] + fTA[1] );
return;
}
double EvtRareLbToLllFFGutsche::formFactorParametrization( double s, double f0,
double a, double b )
{
return f0 / ( 1 - a * s + b * s * s );
}
diff --git a/src/EvtGenModels/EvtRareLbToLllFFlQCD.cpp b/src/EvtGenModels/EvtRareLbToLllFFlQCD.cpp
index 34d36b5..ecc5cd1 100644
--- a/src/EvtGenModels/EvtRareLbToLllFFlQCD.cpp
+++ b/src/EvtGenModels/EvtRareLbToLllFFlQCD.cpp
@@ -1,182 +1,178 @@
-// Include files
-
-// local
-
#include "EvtGenModels/EvtRareLbToLllFFlQCD.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtWilsonCoefficients.hh"
#include <cmath>
#include <stdlib.h>
//-----------------------------------------------------------------------------
// Implementation file for class : EvtRareLbToLllFFlQCD
//
// 2016-04-19 : Michal Kreps
// 2014-10-22 : Michal Kreps
//-----------------------------------------------------------------------------
void EvtRareLbToLllFFlQCD::init()
{
EvtId LbID = EvtPDL::getId( std::string( "Lambda_b0" ) );
EvtId LID = EvtPDL::getId( std::string( "Lambda0" ) );
EvtId BID = EvtPDL::getId( std::string( "B+" ) );
EvtId KID = EvtPDL::getId( std::string( "K-" ) );
double m1 = EvtPDL::getMass( LbID );
double m2 = EvtPDL::getMass( LID );
double mB = EvtPDL::getMass( BID );
double mK = EvtPDL::getMass( KID );
t0 = ( m1 - m2 ) * ( m1 - m2 );
tplus = ( mB + mK ) * ( mB + mK );
fconsts[0][0] = 0.4221;
fconsts[0][1] = -1.1386;
fconsts[0][2] = 5.416;
fconsts[1][0] = 0.5182;
fconsts[1][1] = -1.3495;
fconsts[1][2] = 5.416;
fconsts[2][0] = 0.3725;
fconsts[2][1] = -0.9389;
fconsts[2][2] = 5.711;
gconsts[0][0] = 0.3563;
gconsts[0][1] = -1.0612;
gconsts[0][2] = 5.750;
gconsts[1][0] = 0.3563;
gconsts[1][1] = -1.1357;
gconsts[1][2] = 5.750;
gconsts[2][0] = 0.4028;
gconsts[2][1] = -1.0290;
gconsts[2][2] = 5.367;
hconsts[0][0] = 0.4960;
hconsts[0][1] = -1.1275;
hconsts[0][2] = 5.416;
hconsts[1][0] = 0.3876;
hconsts[1][1] = -0.9623;
hconsts[1][2] = 5.416;
hconsts[2][0] = 0;
hconsts[2][1] = 0;
hconsts[2][2] = 0;
htildaconsts[0][0] = 0.3403;
htildaconsts[0][1] = -0.7697;
htildaconsts[0][2] = 5.750;
htildaconsts[1][0] = 0.3403;
htildaconsts[1][1] = -0.8008;
htildaconsts[1][2] = 5.750;
htildaconsts[2][0] = 0;
htildaconsts[2][1] = 0;
htildaconsts[2][2] = 0;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtRareLbToLll is using form factors from arXiv:1602.01399 "
<< std::endl;
}
//=============================================================================
void EvtRareLbToLllFFlQCD::getFF( EvtParticle* parent, EvtParticle* lambda,
EvtRareLbToLllFFBase::FormFactors& FF )
{
// Find the FF information for this particle, start by setting all to zero
FF.areZero();
double m1 = parent->getP4().mass();
double m2 = lambda->getP4().mass();
// double m21=m2/m1;
EvtVector4R p4parent;
p4parent.set( parent->mass(), 0, 0, 0 );
double q2 = ( p4parent - lambda->getP4() ).mass2();
double massSum = m1 + m2;
double massDiff = m1 - m2;
double massSumSq = massSum * massSum;
double massDiffSq = massDiff * massDiff;
double q2Sum = q2 - massSumSq;
double q2Diff = q2 - massDiffSq;
double f[3];
double g[3];
double h[2];
double htilda[2];
for ( int i = 0; i <= 2; ++i ) {
f[i] = formFactorParametrization( q2, fconsts[i][0], fconsts[i][1],
fconsts[i][2] );
g[i] = formFactorParametrization( q2, gconsts[i][0], gconsts[i][1],
gconsts[i][2] );
}
for ( int i = 0; i <= 1; ++i ) {
h[i] = formFactorParametrization( q2, hconsts[i][0], hconsts[i][1],
hconsts[i][2] );
htilda[i] = formFactorParametrization( q2, htildaconsts[i][0],
htildaconsts[i][1],
htildaconsts[i][2] );
}
// Both v^2==v'^2==1 by definition
FF.F_[0] = f[1];
FF.F_[1] = m1 *
( ( f[1] - f[0] ) * massSum +
massDiff *
( q2 * ( f[2] - f[1] ) - ( f[2] - f[0] ) * massSumSq ) /
q2 ) /
q2Sum;
FF.F_[2] = -m2 *
( massSum * ( f[0] - f[1] ) +
massDiff *
( q2 * ( f[2] - f[1] ) - massSumSq * ( f[2] - f[0] ) ) /
q2 ) /
q2Sum;
FF.G_[0] = g[1];
FF.G_[1] = m1 / q2Diff *
( massDiff * ( g[0] - g[1] ) +
massSum *
( q2 * ( g[1] - g[2] ) + massDiffSq * ( g[2] - g[0] ) ) /
q2 );
FF.G_[2] = -m2 / q2Diff *
( massDiff * ( g[1] - g[0] ) +
massSum *
( q2 * ( g[1] - g[2] ) + massDiffSq * ( g[2] - g[0] ) ) /
q2 );
FF.FT_[0] = -massSum * h[1];
FF.FT_[1] = -m1 / q2Sum *
( 2 * h[1] * m2 * massSum - h[0] * ( q2 - massSum * massDiff ) );
FF.FT_[2] = -m2 / q2Sum *
( 2 * h[1] * m1 * massSum - h[0] * ( q2 + massSum * massDiff ) );
FF.GT_[0] = massDiff * htilda[1];
FF.GT_[1] = m1 / q2Diff *
( 2 * htilda[1] * massDiff * m2 +
htilda[0] * ( q2 - massSum * massDiff ) );
FF.GT_[2] = m2 / q2Diff *
( -2 * htilda[1] * massDiff * m1 +
htilda[0] * ( q2 + massSum * massDiff ) );
return;
}
double EvtRareLbToLllFFlQCD::formFactorParametrization( double q2, double a0,
double a1, double pole )
{
double z = zvar( q2 );
return 1. / ( 1. - q2 / ( pole * pole ) ) * ( a0 + a1 * z );
}
double EvtRareLbToLllFFlQCD::zvar( double q2 )
{
double a = std::sqrt( tplus - q2 );
double b = std::sqrt( tplus - t0 );
return ( a - b ) / ( a + b );
}
diff --git a/src/EvtGenModels/EvtRareLbToLllWC.cpp b/src/EvtGenModels/EvtRareLbToLllWC.cpp
index 554db10..b6d9ef5 100644
--- a/src/EvtGenModels/EvtRareLbToLllWC.cpp
+++ b/src/EvtGenModels/EvtRareLbToLllWC.cpp
@@ -1,283 +1,279 @@
-// Include files
-
-// local
-
#include "EvtGenModels/EvtRareLbToLllWC.hh"
//-----------------------------------------------------------------------------
// Implementation file for class : EvtRareLbToLllWC
//
// 2013-11-27 : Thomas Blake
//-----------------------------------------------------------------------------
EvtComplex EvtRareLbToLllWC::GetC7Eff( const double q2 ) const
{
static double mbeff = 4.8;
double shat = q2 / mbeff / mbeff;
double logshat;
logshat = log( shat );
double muscale;
muscale = 2.5;
double alphas;
alphas = 0.267;
double A7;
A7 = -0.353 + 0.023;
double A8;
A8 = -0.164;
double C1;
C1 = -0.697;
double C2;
C2 = 1.046;
double Lmu;
Lmu = log( muscale / mbeff );
EvtComplex uniti( 0.0, 1.0 );
EvtComplex c7eff;
if ( shat > 0.25 ) {
c7eff = A7;
return c7eff;
}
// change energy scale to 5.0 for full NNLO calculation below shat = 0.25
muscale = 5.0;
alphas = 0.215;
A7 = -0.312 + 0.008;
A8 = -0.148;
C1 = -0.487;
C2 = 1.024;
Lmu = log( muscale / mbeff );
EvtComplex F71;
EvtComplex f71;
EvtComplex k7100( -0.68192, -0.074998 );
EvtComplex k7101( 0.0, 0.0 );
EvtComplex k7110( -0.23935, -0.12289 );
EvtComplex k7111( 0.0027424, 0.019676 );
EvtComplex k7120( -0.0018555, -0.175 );
EvtComplex k7121( 0.022864, 0.011456 );
EvtComplex k7130( 0.28248, -0.12783 );
EvtComplex k7131( 0.029027, -0.0082265 );
f71 = k7100 + k7101 * logshat + shat * ( k7110 + k7111 * logshat ) +
shat * shat * ( k7120 + k7121 * logshat ) +
shat * shat * shat * ( k7130 + k7131 * logshat );
F71 = ( -208.0 / 243.0 ) * Lmu + f71;
EvtComplex F72;
EvtComplex f72;
EvtComplex k7200( 4.0915, 0.44999 );
EvtComplex k7201( 0.0, 0.0 );
EvtComplex k7210( 1.4361, 0.73732 );
EvtComplex k7211( -0.016454, -0.11806 );
EvtComplex k7220( 0.011133, 1.05 );
EvtComplex k7221( -0.13718, -0.068733 );
EvtComplex k7230( -1.6949, 0.76698 );
EvtComplex k7231( -0.17416, 0.049359 );
f72 = k7200 + k7201 * logshat + shat * ( k7210 + k7211 * logshat ) +
shat * shat * ( k7220 + k7221 * logshat ) +
shat * shat * shat * ( k7230 + k7231 * logshat );
F72 = ( 416.0 / 81.0 ) * Lmu + f72;
EvtComplex F78;
F78 = ( -32.0 / 9.0 ) * Lmu + 8.0 * EvtConst::pi * EvtConst::pi / 27.0 +
( -44.0 / 9.0 ) + ( -8.0 * EvtConst::pi / 9.0 ) * uniti +
( 4.0 / 3.0 * EvtConst::pi * EvtConst::pi - 40.0 / 3.0 ) * shat +
( 32.0 * EvtConst::pi * EvtConst::pi / 9.0 - 316.0 / 9.0 ) * shat *
shat +
( 200.0 * EvtConst::pi * EvtConst::pi / 27.0 - 658.0 / 9.0 ) * shat *
shat * shat +
( -8.0 * logshat / 9.0 ) * ( shat + shat * shat + shat * shat * shat );
c7eff = A7 - alphas / ( 4.0 * EvtConst::pi ) *
( C1 * F71 + C2 * F72 + A8 * F78 );
return c7eff;
}
EvtComplex EvtRareLbToLllWC::GetC9Eff( const double q2, const bool btod ) const
{
static double mbeff = 4.8;
double shat = q2 / mbeff / mbeff;
double logshat;
logshat = log( shat );
double mchat = 0.29;
double muscale;
muscale = 2.5;
double alphas;
alphas = 0.267;
double A8;
A8 = -0.164;
double A9;
A9 = 4.287 + ( -0.218 );
double C1;
C1 = -0.697;
double C2;
C2 = 1.046;
double T9;
T9 = 0.114 + 0.280;
double U9;
U9 = 0.045 + 0.023;
double W9;
W9 = 0.044 + 0.016;
double Lmu;
Lmu = log( muscale / mbeff );
EvtComplex uniti( 0.0, 1.0 );
EvtComplex hc;
double xarg;
xarg = 4.0 * mchat / shat;
hc = -4.0 / 9.0 * log( mchat * mchat ) + 8.0 / 27.0 + 4.0 * xarg / 9.0;
if ( xarg < 1.0 ) {
hc = hc - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
( log( fabs( ( sqrt( 1.0 - xarg ) + 1.0 ) /
( sqrt( 1.0 - xarg ) - 1.0 ) ) ) -
uniti * EvtConst::pi );
} else {
hc = hc - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
2.0 * atan( 1.0 / sqrt( xarg - 1.0 ) );
}
EvtComplex h1;
xarg = 4.0 / shat;
h1 = 8.0 / 27.0 + 4.0 * xarg / 9.0;
if ( xarg < 1.0 ) {
h1 = h1 - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
( log( fabs( ( sqrt( 1.0 - xarg ) + 1.0 ) /
( sqrt( 1.0 - xarg ) - 1.0 ) ) ) -
uniti * EvtConst::pi );
} else {
h1 = h1 - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
2.0 * atan( 1.0 / sqrt( xarg - 1.0 ) );
}
EvtComplex h0;
h0 = 8.0 / 27.0 - 4.0 * log( 2.0 ) / 9.0 + 4.0 * uniti * EvtConst::pi / 9.0;
// X=V_{ud}^* V_ub / V_{td}^* V_tb * (4/3 C_1 +C_2) * (h(\hat m_c^2, hat s)-
// h(\hat m_u^2, hat s))
EvtComplex Vudstar( 1.0 - 0.2279 * 0.2279 / 2.0, 0.0 );
EvtComplex Vub( ( 0.118 + 0.273 ) / 2.0, -1.0 * ( 0.305 + 0.393 ) / 2.0 );
EvtComplex Vtdstar( 1.0 - ( 0.118 + 0.273 ) / 2.0, ( 0.305 + 0.393 ) / 2.0 );
EvtComplex Vtb( 1.0, 0.0 );
EvtComplex Xd;
Xd = ( Vudstar * Vub / Vtdstar * Vtb ) * ( 4.0 / 3.0 * C1 + C2 ) *
( hc - h0 );
EvtComplex c9eff = 4.344;
if ( shat > 0.25 ) {
c9eff = A9 + T9 * hc + U9 * h1 + W9 * h0;
if ( btod ) {
c9eff += Xd;
}
return c9eff;
}
// change energy scale to 5.0 for full NNLO calculation below shat = 0.25
muscale = 5.0;
alphas = 0.215;
A9 = 4.174 + ( -0.035 );
C1 = -0.487;
C2 = 1.024;
A8 = -0.148;
T9 = 0.374 + 0.252;
U9 = 0.033 + 0.015;
W9 = 0.032 + 0.012;
Lmu = log( muscale / mbeff );
EvtComplex F91;
EvtComplex f91;
EvtComplex k9100( -11.973, 0.16371 );
EvtComplex k9101( -0.081271, -0.059691 );
EvtComplex k9110( -28.432, -0.25044 );
EvtComplex k9111( -0.040243, 0.016442 );
EvtComplex k9120( -57.114, -0.86486 );
EvtComplex k9121( -0.035191, 0.027909 );
EvtComplex k9130( -128.8, -2.5243 );
EvtComplex k9131( -0.017587, 0.050639 );
f91 = k9100 + k9101 * logshat + shat * ( k9110 + k9111 * logshat ) +
shat * shat * ( k9120 + k9121 * logshat ) +
shat * shat * shat * ( k9130 + k9131 * logshat );
F91 = ( -1424.0 / 729.0 + 16.0 * uniti * EvtConst::pi / 243.0 +
64.0 / 27.0 * log( mchat ) ) *
Lmu -
16.0 * Lmu * logshat / 243.0 +
( 16.0 / 1215.0 - 32.0 / 135.0 / mchat / mchat ) * Lmu * shat +
( 4.0 / 2835.0 - 8.0 / 315.0 / mchat / mchat / mchat / mchat ) * Lmu *
shat * shat +
( 16.0 / 76545.0 -
32.0 / 8505.0 / mchat / mchat / mchat / mchat / mchat / mchat ) *
Lmu * shat * shat * shat -
256.0 * Lmu * Lmu / 243.0 + f91;
EvtComplex F92;
EvtComplex f92;
EvtComplex k9200( 6.6338, -0.98225 );
EvtComplex k9201( 0.48763, 0.35815 );
EvtComplex k9210( 3.3585, 1.5026 );
EvtComplex k9211( 0.24146, -0.098649 );
EvtComplex k9220( -1.1906, 5.1892 );
EvtComplex k9221( 0.21115, -0.16745 );
EvtComplex k9230( -17.12, 15.146 );
EvtComplex k9231( 0.10552, -0.30383 );
f92 = k9200 + k9201 * logshat + shat * ( k9210 + k9211 * logshat ) +
shat * shat * ( k9220 + k9221 * logshat ) +
shat * shat * shat * ( k9230 + k9231 * logshat );
F92 = ( 256.0 / 243.0 - 32.0 * uniti * EvtConst::pi / 81.0 -
128.0 / 9.0 * log( mchat ) ) *
Lmu +
32.0 * Lmu * logshat / 81.0 +
( -32.0 / 405.0 + 64.0 / 45.0 / mchat / mchat ) * Lmu * shat +
( -8.0 / 945.0 + 16.0 / 105.0 / mchat / mchat / mchat / mchat ) *
Lmu * shat * shat +
( -32.0 / 25515.0 +
64.0 / 2835.0 / mchat / mchat / mchat / mchat / mchat / mchat ) *
Lmu * shat * shat * shat +
512.0 * Lmu * Lmu / 81.0 + f92;
EvtComplex F98;
F98 = 104.0 / 9.0 - 32.0 * EvtConst::pi * EvtConst::pi / 27.0 +
( 1184.0 / 27.0 - 40.0 * EvtConst::pi * EvtConst::pi / 9.0 ) * shat +
( 14212.0 / 135.0 - 32.0 * EvtConst::pi * EvtConst::pi / 3.0 ) *
shat * shat +
( 193444.0 / 945.0 - 560.0 * EvtConst::pi * EvtConst::pi / 27.0 ) *
shat * shat * shat +
16.0 * logshat / 9.0 *
( 1.0 + shat + shat * shat + shat * shat * shat );
Xd = ( Vudstar * Vub / Vtdstar * Vtb ) * ( 4.0 / 3.0 * C1 + C2 ) *
( hc - h0 );
c9eff = A9 + T9 * hc + U9 * h1 + W9 * h0 -
alphas / ( 4.0 * EvtConst::pi ) * ( C1 * F91 + C2 * F92 + A8 * F98 );
if ( btod ) {
c9eff += Xd;
}
return c9eff;
}
/*
Calculate C10 coefficient
C10 is scale (and q^2) independent
*/
EvtComplex EvtRareLbToLllWC::GetC10Eff( double /*q2*/ ) const
{
double A10;
A10 = -4.592 + 0.379;
EvtComplex c10eff;
c10eff = A10;
return c10eff;
}
//=============================================================================
diff --git a/src/EvtGenModels/EvtSLBKPole.cpp b/src/EvtGenModels/EvtSLBKPole.cpp
index d9e09cd..fe955df 100644
--- a/src/EvtGenModels/EvtSLBKPole.cpp
+++ b/src/EvtGenModels/EvtSLBKPole.cpp
@@ -1,101 +1,80 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSLBKPole.cc
-//
-// Description: Routine to implement semileptonic decays according
-// to light cone sum rules
-//
-// Modification history:
-//
-// liheng October 20, 2005 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSLBKPole.hh" //modified
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicTensorAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
#include "EvtGenModels/EvtSLBKPoleFF.hh" //modified
#include <stdlib.h>
#include <string>
std::string EvtSLBKPole::getName()
{
return "SLBKPOLE"; //modified
}
EvtDecayBase* EvtSLBKPole::clone()
{ //modified
return new EvtSLBKPole;
}
void EvtSLBKPole::decay( EvtParticle* p )
{ //modified
p->initializePhaseSpace( getNDaug(), getDaugs() );
calcamp->CalcAmp( p, _amp2, SLBKPoleffmodel.get() ); //modified
return;
}
void EvtSLBKPole::initProbMax()
{
EvtId parnum, mesnum, lnum, nunum;
parnum = getParentId();
mesnum = getDaug( 0 );
lnum = getDaug( 1 );
nunum = getDaug( 2 );
double mymaxprob = calcamp->CalcMaxProb( parnum, mesnum, lnum, nunum,
SLBKPoleffmodel.get() ); //modified
setProbMax( mymaxprob );
}
void EvtSLBKPole::init()
{ //modified
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be X lepton neutrino
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
EvtSpinType::spintype mesontype = EvtPDL::getSpinType( getDaug( 0 ) );
SLBKPoleffmodel = std::make_unique<EvtSLBKPoleFF>( getNArg(),
getArgs() ); //modified
switch ( mesontype ) {
case EvtSpinType::SCALAR:
calcamp = std::make_unique<EvtSemiLeptonicScalarAmp>();
break;
case EvtSpinType::VECTOR:
calcamp = std::make_unique<EvtSemiLeptonicVectorAmp>();
break;
case EvtSpinType::TENSOR:
calcamp = std::make_unique<EvtSemiLeptonicTensorAmp>();
break;
default:;
}
}
diff --git a/src/EvtGenModels/EvtSLBKPoleFF.cpp b/src/EvtGenModels/EvtSLBKPoleFF.cpp
index 98c8671..828aafe 100644
--- a/src/EvtGenModels/EvtSLBKPoleFF.cpp
+++ b/src/EvtGenModels/EvtSLBKPoleFF.cpp
@@ -1,271 +1,250 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSLBKPoleFF.cc
-//
-// Description: Routine to implement semileptonic form factors
-// according to the model SLBKPoles
-//
-// Modification history:
-//
-// liheng October 20,2005 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSLBKPoleFF.hh" //modified
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <math.h>
#include <stdlib.h>
#include <string>
EvtSLBKPoleFF::EvtSLBKPoleFF( int numarg, double* arglist )
{ //modified
numSLBKPoleargs = numarg; //modified
for ( int i = 0; i < numarg; i++ ) {
SLBKPoleargs[i] = arglist[i];
} //modified
return;
}
void EvtSLBKPoleFF::getscalarff( EvtId parent, EvtId daught, double t,
double /*mass*/, double* fpf, double* f0f )
{
// Form factors have a general form, with parameters passed in
// from the arguments.
if ( numSLBKPoleargs != 4 ) { //modified
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Problem in EvtSLBKPoleFF::getscalarff\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "wrong number of arguments!\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "number args:" << numSLBKPoleargs << " (expected 4)\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Parent:" << EvtPDL::name( parent ) << "\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Daughter:" << EvtPDL::name( daught ) << "\n";
}
double f0, af, powf;
//double a_0, a_1, a_2, a_3, a_4, a_5, a_6, a_7;
f0 = SLBKPoleargs[0]; //f0
af = SLBKPoleargs[1]; //alpha
//bf = SLBKPoleargs[2];
double mass_star2 = SLBKPoleargs[3] * SLBKPoleargs[3];
powf = 1.0;
*fpf = f0 / ( pow( 1.0 - ( 1.0 + af ) * ( t / mass_star2 ) +
( af * ( ( t / mass_star2 ) * ( t / mass_star2 ) ) ),
powf ) ); //modified
f0 = SLBKPoleargs[0]; //f0
af = SLBKPoleargs[2]; //beta
//bf = SLBKPoleargs[6];
powf = 1.0;
*f0f = f0 / ( pow( 1.0 - ( t / mass_star2 / af ), powf ) ); //modified
return;
}
void EvtSLBKPoleFF::getvectorff( EvtId parent, EvtId /*daught*/, double t,
double /*mass*/, double* a1f, double* a2f,
double* vf, double* a0f )
{
if ( numSLBKPoleargs != 8 ) { //modified
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Problem in EvtSLBKPoleFF::getvectorff\n"; //modified
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "wrong number of arguements!!!\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< numSLBKPoleargs << "\n"; //modified
// printf("\n*********************%d*********************",numSLBKPoleargs);
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Check the implementation of EvtSLBKPoleFF::getvectorff()!\n";
double mb = EvtPDL::getMeanMass( parent );
double mb2 = mb * mb;
//modified-begin
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId BP = EvtPDL::getId( "B+" );
static EvtId BM = EvtPDL::getId( "B-" );
static EvtId BS0 = EvtPDL::getId( "B_s0" );
static EvtId B0S = EvtPDL::getId( "B*0" );
static EvtId BPMS = EvtPDL::getId( "B*+" );
static EvtId BS0S = EvtPDL::getId( "B_s*0" );
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId DSP = EvtPDL::getId( "D_s+" );
static EvtId DSM = EvtPDL::getId( "D_s-" );
static EvtId D0S = EvtPDL::getId( "D*0" );
static EvtId DPMS = EvtPDL::getId( "D*+" );
static EvtId DSPMS = EvtPDL::getId( "D_s*+" );
double mass_star = 0.0;
double mass_star2 = 0.0;
if ( parent == B0 || parent == B0B ) {
mass_star = EvtPDL::getMeanMass( B0S );
mass_star2 = mass_star * mass_star;
}
if ( parent == BP || parent == BM ) {
mass_star = EvtPDL::getMeanMass( BPMS );
mass_star2 = mass_star * mass_star;
}
if ( parent == BS0 ) {
mass_star = EvtPDL::getMeanMass( BS0S );
mass_star2 = mass_star * mass_star;
}
if ( parent == D0 || parent == D0B ) {
mass_star = EvtPDL::getMeanMass( D0S );
mass_star2 = mass_star * mass_star;
}
if ( parent == DP || parent == DM ) {
mass_star = EvtPDL::getMeanMass( DPMS );
mass_star2 = mass_star * mass_star;
}
if ( parent == DSP || parent == DSM ) {
mass_star = EvtPDL::getMeanMass( DSPMS );
mass_star2 = mass_star * mass_star;
}
//modified-end
double f0, af, bf, powf;
f0 = SLBKPoleargs[2]; //A1
af = SLBKPoleargs[6]; //b'
bf = 0; //0
powf = 1.0; //1.0
*a1f = f0 / ( pow( 1.0 - af * t / mass_star2, powf ) ); //modified
f0 = SLBKPoleargs[3]; //A2
af = SLBKPoleargs[6]; //b'
bf = SLBKPoleargs[7]; //b''==0
powf = 1.0; //1.0
*a2f = f0 /
( pow( 1.0 - ( af + bf ) * ( t / mass_star2 ) +
( af * bf ) * ( ( t / mass_star2 ) * ( t / mass_star2 ) ),
powf ) ); //modified
f0 = SLBKPoleargs[0]; //V0
af = SLBKPoleargs[4]; //a
bf = 0; //0
powf = 1.0; //1.0
*vf = f0 / ( pow( 1.0 - ( 1.0 + af ) * ( t / mass_star2 ) +
af * ( t / mass_star2 ) * ( t / mass_star2 ),
powf ) ); //modified
f0 = SLBKPoleargs[1]; //A0
af = SLBKPoleargs[5]; //a'
bf = 0; //0
powf = 1.0; //1.0
*a0f = f0 / ( pow( 1.0 - ( 1.0 + af ) * ( t / mb2 ) +
af * ( ( t / mb2 ) * ( t / mb2 ) ),
powf ) ); //modified
return;
}
void EvtSLBKPoleFF::gettensorff( EvtId parent, EvtId /*daught*/, double t,
double /*mass*/, double* hf, double* kf,
double* bpf, double* bmf )
{
if ( numSLBKPoleargs != 16 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Problem in EvtSLBKPoleFF::gettensorff\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "wrong number of arguements!!!\n";
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Check the implementation of EvtSLBKPoleFF::gettensorff()!\n";
double mb = EvtPDL::getMeanMass( parent );
double mb2 = mb * mb;
double f0, af, bf, powf;
f0 = SLBKPoleargs[0];
af = SLBKPoleargs[1];
bf = SLBKPoleargs[2];
powf = SLBKPoleargs[3];
*hf = f0 /
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
powf ) );
f0 = SLBKPoleargs[4];
af = SLBKPoleargs[5];
bf = SLBKPoleargs[6];
powf = SLBKPoleargs[7];
*kf = f0 /
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
powf ) );
f0 = SLBKPoleargs[8];
af = SLBKPoleargs[9];
bf = SLBKPoleargs[10];
powf = SLBKPoleargs[11];
*bpf = f0 /
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
powf ) );
f0 = SLBKPoleargs[12];
af = SLBKPoleargs[13];
bf = SLBKPoleargs[14];
powf = SLBKPoleargs[15];
*bmf = f0 /
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
powf ) );
return;
}
void EvtSLBKPoleFF::getbaryonff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtSLBKPoleFF.\n";
::abort();
}
void EvtSLBKPoleFF::getdiracff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getdiracff in EvtSLBKPoleFF.\n";
::abort();
}
void EvtSLBKPoleFF::getraritaff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double*, double*,
double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtSLBKPoleFF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtSLBaryonAmp.cpp b/src/EvtGenModels/EvtSLBaryonAmp.cpp
index e151019..10349f8 100644
--- a/src/EvtGenModels/EvtSLBaryonAmp.cpp
+++ b/src/EvtGenModels/EvtSLBaryonAmp.cpp
@@ -1,851 +1,829 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSLBaryonAmp.cc
-//
-// Description: Routine to implement semileptonic decays of Dirac baryons
-//
-// Modification history:
-//
-// R.J. Tesarek May 28, 2004 Module created
-// Karen Gibson 1/20/2006 Module updated for 1/2+->1/2+,
-// 1/2+->1/2-, 1/2+->3/2- Lambda decays
-//
-//--------------------------------------------------------------------------
-
#include "EvtGenModels/EvtSLBaryonAmp.hh"
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtDiracParticle.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGammaMatrix.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRaritaSchwinger.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicFF.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
using std::endl;
EvtSLBaryonAmp::~EvtSLBaryonAmp()
{
}
void EvtSLBaryonAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtSemiLeptonicFF* FormFactors )
{
static EvtId EM = EvtPDL::getId( "e-" );
static EvtId MUM = EvtPDL::getId( "mu-" );
static EvtId TAUM = EvtPDL::getId( "tau-" );
static EvtId EP = EvtPDL::getId( "e+" );
static EvtId MUP = EvtPDL::getId( "mu+" );
static EvtId TAUP = EvtPDL::getId( "tau+" );
//Add the lepton and neutrino 4 momenta to find q2
EvtVector4R q = parent->getDaug( 1 )->getP4() + parent->getDaug( 2 )->getP4();
double q2 = ( q.mass2() );
double f1v, f1a, f2v, f2a;
double m_meson = parent->getDaug( 0 )->mass();
FormFactors->getbaryonff( parent->getId(), parent->getDaug( 0 )->getId(),
q2, m_meson, &f1v, &f1a, &f2v, &f2a );
EvtVector4R p4b;
p4b.set( parent->mass(), 0.0, 0.0, 0.0 );
EvtVector4C temp_00_term1;
EvtVector4C temp_00_term2;
EvtVector4C temp_01_term1;
EvtVector4C temp_01_term2;
EvtVector4C temp_10_term1;
EvtVector4C temp_10_term2;
EvtVector4C temp_11_term1;
EvtVector4C temp_11_term2;
EvtDiracSpinor p0 = parent->sp( 0 );
EvtDiracSpinor p1 = parent->sp( 1 );
EvtDiracSpinor d0 = parent->getDaug( 0 )->spParent( 0 );
EvtDiracSpinor d1 = parent->getDaug( 0 )->spParent( 1 );
temp_00_term1.set( 0, f1v * ( d0 * ( EvtGammaMatrix::g0() * p0 ) ) );
temp_00_term2.set(
0,
f1a * ( d0 * ( ( EvtGammaMatrix::g0() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_01_term1.set( 0, f1v * ( d0 * ( EvtGammaMatrix::g0() * p1 ) ) );
temp_01_term2.set(
0,
f1a * ( d0 * ( ( EvtGammaMatrix::g0() * EvtGammaMatrix::g5() ) * p1 ) ) );
temp_10_term1.set( 0, f1v * ( d1 * ( EvtGammaMatrix::g0() * p0 ) ) );
temp_10_term2.set(
0,
f1a * ( d1 * ( ( EvtGammaMatrix::g0() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_11_term1.set( 0, f1v * ( d1 * ( EvtGammaMatrix::g0() * p1 ) ) );
temp_11_term2.set(
0,
f1a * ( d1 * ( ( EvtGammaMatrix::g0() * EvtGammaMatrix::g5() ) * p1 ) ) );
temp_00_term1.set( 1, f1v * ( d0 * ( EvtGammaMatrix::g1() * p0 ) ) );
temp_00_term2.set(
1,
f1a * ( d0 * ( ( EvtGammaMatrix::g1() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_01_term1.set( 1, f1v * ( d0 * ( EvtGammaMatrix::g1() * p1 ) ) );
temp_01_term2.set(
1,
f1a * ( d0 * ( ( EvtGammaMatrix::g1() * EvtGammaMatrix::g5() ) * p1 ) ) );
temp_10_term1.set( 1, f1v * ( d1 * ( EvtGammaMatrix::g1() * p0 ) ) );
temp_10_term2.set(
1,
f1a * ( d1 * ( ( EvtGammaMatrix::g1() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_11_term1.set( 1, f1v * ( d1 * ( EvtGammaMatrix::g1() * p1 ) ) );
temp_11_term2.set(
1,
f1a * ( d1 * ( ( EvtGammaMatrix::g1() * EvtGammaMatrix::g5() ) * p1 ) ) );
temp_00_term1.set( 2, f1v * ( d0 * ( EvtGammaMatrix::g2() * p0 ) ) );
temp_00_term2.set(
2,
f1a * ( d0 * ( ( EvtGammaMatrix::g2() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_01_term1.set( 2, f1v * ( d0 * ( EvtGammaMatrix::g2() * p1 ) ) );
temp_01_term2.set(
2,
f1a * ( d0 * ( ( EvtGammaMatrix::g2() * EvtGammaMatrix::g5() ) * p1 ) ) );
temp_10_term1.set( 2, f1v * ( d1 * ( EvtGammaMatrix::g2() * p0 ) ) );
temp_10_term2.set(
2,
f1a * ( d1 * ( ( EvtGammaMatrix::g2() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_11_term1.set( 2, f1v * ( d1 * ( EvtGammaMatrix::g2() * p1 ) ) );
temp_11_term2.set(
2,
f1a * ( d1 * ( ( EvtGammaMatrix::g2() * EvtGammaMatrix::g5() ) * p1 ) ) );
temp_00_term1.set( 3, f1v * ( d0 * ( EvtGammaMatrix::g3() * p0 ) ) );
temp_00_term2.set(
3,
f1a * ( d0 * ( ( EvtGammaMatrix::g3() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_01_term1.set( 3, f1v * ( d0 * ( EvtGammaMatrix::g3() * p1 ) ) );
temp_01_term2.set(
3,
f1a * ( d0 * ( ( EvtGammaMatrix::g3() * EvtGammaMatrix::g5() ) * p1 ) ) );
temp_10_term1.set( 3, f1v * ( d1 * ( EvtGammaMatrix::g3() * p0 ) ) );
temp_10_term2.set(
3,
f1a * ( d1 * ( ( EvtGammaMatrix::g3() * EvtGammaMatrix::g5() ) * p0 ) ) );
temp_11_term1.set( 3, f1v * ( d1 * ( EvtGammaMatrix::g3() * p1 ) ) );
temp_11_term2.set(
3,
f1a * ( d1 * ( ( EvtGammaMatrix::g3() * EvtGammaMatrix::g5() ) * p1 ) ) );
EvtVector4C l1, l2;
EvtId l_num = parent->getDaug( 1 )->getId();
if ( l_num == EM || l_num == MUM || l_num == TAUM ) {
l1 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParentNeutrino() );
l2 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParentNeutrino() );
} else {
if ( l_num == EP || l_num == MUP || l_num == TAUP ) {
l1 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 0 ) );
l2 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 1 ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Wrong lepton number" << endl;
}
}
amp.vertex( 0, 0, 0, l1.cont( temp_00_term1 + temp_00_term2 ) );
amp.vertex( 0, 0, 1, l2.cont( temp_00_term1 + temp_00_term2 ) );
amp.vertex( 0, 1, 0, l1.cont( temp_01_term1 + temp_01_term2 ) );
amp.vertex( 0, 1, 1, l2.cont( temp_01_term1 + temp_01_term2 ) );
amp.vertex( 1, 0, 0, l1.cont( temp_10_term1 + temp_10_term2 ) );
amp.vertex( 1, 0, 1, l2.cont( temp_10_term1 + temp_10_term2 ) );
amp.vertex( 1, 1, 0, l1.cont( temp_11_term1 + temp_11_term2 ) );
amp.vertex( 1, 1, 1, l2.cont( temp_11_term1 + temp_11_term2 ) );
return;
}
double EvtSLBaryonAmp::CalcMaxProb( EvtId parent, EvtId baryon, EvtId lepton,
EvtId nudaug, EvtSemiLeptonicFF* FormFactors,
EvtComplex r00, EvtComplex r01,
EvtComplex r10, EvtComplex r11 )
{
//This routine takes the arguements parent, baryon, and lepton
//number, and a form factor model, and returns a maximum
//probability for this semileptonic form factor model. A
//brute force method is used. The 2D cos theta lepton and
//q2 phase space is probed.
//Start by declaring a particle at rest.
//It only makes sense to have a scalar parent. For now.
//This should be generalized later.
// EvtScalarParticle *scalar_part;
// scalar_part=new EvtScalarParticle;
EvtDiracParticle* dirac_part;
EvtParticle* root_part;
dirac_part = new EvtDiracParticle;
//cludge to avoid generating random numbers!
// scalar_part->noLifeTime();
dirac_part->noLifeTime();
EvtVector4R p_init;
p_init.set( EvtPDL::getMass( parent ), 0.0, 0.0, 0.0 );
// scalar_part->init(parent,p_init);
// root_part=(EvtParticle *)scalar_part;
// root_part->set_type(EvtSpinType::SCALAR);
dirac_part->init( parent, p_init );
root_part = (EvtParticle*)dirac_part;
root_part->setDiagonalSpinDensity();
EvtParticle *daughter, *lep, *trino;
EvtAmp amp;
EvtId listdaug[3];
listdaug[0] = baryon;
listdaug[1] = lepton;
listdaug[2] = nudaug;
amp.init( parent, 3, listdaug );
root_part->makeDaughters( 3, listdaug );
daughter = root_part->getDaug( 0 );
lep = root_part->getDaug( 1 );
trino = root_part->getDaug( 2 );
//cludge to avoid generating random numbers!
daughter->noLifeTime();
lep->noLifeTime();
trino->noLifeTime();
//Initial particle is unpolarized, well it is a scalar so it is
//trivial
EvtSpinDensity rho;
rho.setDiag( root_part->getSpinStates() );
double mass[3];
double m = root_part->mass();
EvtVector4R p4baryon, p4lepton, p4nu, p4w;
double q2max;
double q2, elepton, plepton;
int i, j;
double erho, prho, costl;
double maxfoundprob = 0.0;
double prob = -10.0;
int massiter;
for ( massiter = 0; massiter < 3; massiter++ ) {
mass[0] = EvtPDL::getMass( baryon );
mass[1] = EvtPDL::getMass( lepton );
mass[2] = EvtPDL::getMass( nudaug );
if ( massiter == 1 ) {
mass[0] = EvtPDL::getMinMass( baryon );
}
if ( massiter == 2 ) {
mass[0] = EvtPDL::getMaxMass( baryon );
}
q2max = ( m - mass[0] ) * ( m - mass[0] );
//loop over q2
for ( i = 0; i < 25; i++ ) {
q2 = ( ( i + 0.5 ) * q2max ) / 25.0;
erho = ( m * m + mass[0] * mass[0] - q2 ) / ( 2.0 * m );
prho = sqrt( erho * erho - mass[0] * mass[0] );
p4baryon.set( erho, 0.0, 0.0, -1.0 * prho );
p4w.set( m - erho, 0.0, 0.0, prho );
//This is in the W rest frame
elepton = ( q2 + mass[1] * mass[1] ) / ( 2.0 * sqrt( q2 ) );
plepton = sqrt( elepton * elepton - mass[1] * mass[1] );
double probctl[3];
for ( j = 0; j < 3; j++ ) {
costl = 0.99 * ( j - 1.0 );
//These are in the W rest frame. Need to boost out into
//the B frame.
p4lepton.set( elepton, 0.0, plepton * sqrt( 1.0 - costl * costl ),
plepton * costl );
p4nu.set( plepton, 0.0,
-1.0 * plepton * sqrt( 1.0 - costl * costl ),
-1.0 * plepton * costl );
EvtVector4R boost( ( m - erho ), 0.0, 0.0, 1.0 * prho );
p4lepton = boostTo( p4lepton, boost );
p4nu = boostTo( p4nu, boost );
//Now initialize the daughters...
daughter->init( baryon, p4baryon );
lep->init( lepton, p4lepton );
trino->init( nudaug, p4nu );
CalcAmp( root_part, amp, FormFactors, r00, r01, r10, r11 );
//Now find the probability at this q2 and cos theta lepton point
//and compare to maxfoundprob.
//Do a little magic to get the probability!!
prob = rho.normalizedProb( amp.getSpinDensity() );
probctl[j] = prob;
}
//probclt contains prob at ctl=-1,0,1.
//prob=a+b*ctl+c*ctl^2
double a = probctl[1];
double b = 0.5 * ( probctl[2] - probctl[0] );
double c = 0.5 * ( probctl[2] + probctl[0] ) - probctl[1];
prob = probctl[0];
if ( probctl[1] > prob )
prob = probctl[1];
if ( probctl[2] > prob )
prob = probctl[2];
if ( fabs( c ) > 1e-20 ) {
double ctlx = -0.5 * b / c;
if ( fabs( ctlx ) < 1.0 ) {
double probtmp = a + b * ctlx + c * ctlx * ctlx;
if ( probtmp > prob )
prob = probtmp;
}
}
//EvtGenReport(EVTGEN_DEBUG,"EvtGen") << "prob,probctl:"<<prob<<" "
// << probctl[0]<<" "
// << probctl[1]<<" "
// << probctl[2]<<std::endl;
if ( prob > maxfoundprob ) {
maxfoundprob = prob;
}
}
if ( EvtPDL::getWidth( baryon ) <= 0.0 ) {
//if the particle is narrow dont bother with changing the mass.
massiter = 4;
}
}
root_part->deleteTree();
maxfoundprob *= 1.1;
return maxfoundprob;
}
void EvtSLBaryonAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtSemiLeptonicFF* FormFactors, EvtComplex r00,
EvtComplex r01, EvtComplex r10, EvtComplex r11 )
{
// Leptons
static EvtId EM = EvtPDL::getId( "e-" );
static EvtId MUM = EvtPDL::getId( "mu-" );
static EvtId TAUM = EvtPDL::getId( "tau-" );
// Anti-Leptons
static EvtId EP = EvtPDL::getId( "e+" );
static EvtId MUP = EvtPDL::getId( "mu+" );
static EvtId TAUP = EvtPDL::getId( "tau+" );
// Baryons
static EvtId LAMCP = EvtPDL::getId( "Lambda_c+" );
static EvtId LAMC1P = EvtPDL::getId( "Lambda_c(2593)+" );
static EvtId LAMC2P = EvtPDL::getId( "Lambda_c(2625)+" );
static EvtId LAMB = EvtPDL::getId( "Lambda_b0" );
static EvtId PRO = EvtPDL::getId( "p+" );
static EvtId N1440 = EvtPDL::getId( "N(1440)+" );
static EvtId N1520 = EvtPDL::getId( "N(1520)+" );
static EvtId N1535 = EvtPDL::getId( "N(1535)+" );
static EvtId N1720 = EvtPDL::getId( "N(1720)+" );
static EvtId N1650 = EvtPDL::getId( "N(1650)+" );
static EvtId N1700 = EvtPDL::getId( "N(1700)+" );
static EvtId N1710 = EvtPDL::getId( "N(1710)+" );
static EvtId N1875 = EvtPDL::getId( "N(1875)+" );
static EvtId N1900 = EvtPDL::getId( "N(1900)+" );
// Anti-Baryons
static EvtId LAMCM = EvtPDL::getId( "anti-Lambda_c-" );
static EvtId LAMC1M = EvtPDL::getId( "anti-Lambda_c(2593)-" );
static EvtId LAMC2M = EvtPDL::getId( "anti-Lambda_c(2625)-" );
static EvtId LAMBB = EvtPDL::getId( "anti-Lambda_b0" );
static EvtId PROB = EvtPDL::getId( "anti-p-" );
static EvtId N1440B = EvtPDL::getId( "anti-N(1440)-" );
static EvtId N1520B = EvtPDL::getId( "anti-N(1520)-" );
static EvtId N1535B = EvtPDL::getId( "anti-N(1535)-" );
static EvtId N1720B = EvtPDL::getId( "anti-N(1720)-" );
static EvtId N1650B = EvtPDL::getId( "anti-N(1650)-" );
static EvtId N1700B = EvtPDL::getId( "anti-N(1700)-" );
static EvtId N1710B = EvtPDL::getId( "anti-N(1710)-" );
static EvtId N1875B = EvtPDL::getId( "anti-N(1875)-" );
static EvtId N1900B = EvtPDL::getId( "anti-N(1900)-" );
// Set the spin density matrix of the parent baryon
EvtSpinDensity rho;
rho.setDim( 2 );
rho.set( 0, 0, r00 );
rho.set( 0, 1, r01 );
rho.set( 1, 0, r10 );
rho.set( 1, 1, r11 );
EvtVector4R vector4P = parent->getP4Lab();
double pmag = vector4P.d3mag();
double cosTheta = vector4P.get( 3 ) / pmag;
double theta = acos( cosTheta );
double phi = atan2( vector4P.get( 2 ), vector4P.get( 1 ) );
parent->setSpinDensityForwardHelicityBasis( rho, phi, theta, 0.0 );
//parent->setSpinDensityForward(rho);
// Set the four momentum of the parent baryon in it's rest frame
EvtVector4R p4b;
p4b.set( parent->mass(), 0.0, 0.0, 0.0 );
// Get the four momentum of the daughter baryon in the parent's rest frame
EvtVector4R p4daught = parent->getDaug( 0 )->getP4();
// Add the lepton and neutrino 4 momenta to find q (q^2)
EvtVector4R q = parent->getDaug( 1 )->getP4() + parent->getDaug( 2 )->getP4();
double q2 = q.mass2();
EvtId l_num = parent->getDaug( 1 )->getId();
EvtId bar_num = parent->getDaug( 0 )->getId();
EvtId par_num = parent->getId();
double baryonmass = parent->getDaug( 0 )->mass();
// Handle spin-1/2 daughter baryon Dirac spinor cases
if ( EvtPDL::getSpinType( parent->getDaug( 0 )->getId() ) ==
EvtSpinType::DIRAC ) {
// Set the form factors
double f1, f2, f3, g1, g2, g3;
FormFactors->getdiracff( par_num, bar_num, q2, baryonmass, &f1, &f2,
&f3, &g1, &g2, &g3 );
const double form_fact[6] = {f1, f2, f3, g1, g2, g3};
EvtVector4C b11, b12, b21, b22, l1, l2;
// Lepton Current
if ( l_num == EM || l_num == MUM || l_num == TAUM ) {
l1 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParentNeutrino() );
l2 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParentNeutrino() );
} else if ( l_num == EP || l_num == MUP || l_num == TAUP ) {
l1 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 0 ) );
l2 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 1 ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Wrong lepton number \n";
::abort();
}
// Baryon current
// Flag for particle/anti-particle parent, daughter with same/opp. parity
// pflag = 0 => particle, same parity parent, daughter
// pflag = 1 => particle, opp. parity parent, daughter
// pflag = 2 => anti-particle, same parity parent, daughter
// pflag = 3 => anti-particle, opp. parity parent, daughter
int pflag = 0;
// Handle 1/2+ -> 1/2+ first
if ( ( par_num == LAMB && bar_num == LAMCP ) ||
( par_num == LAMBB && bar_num == LAMCM ) ||
( par_num == LAMB && bar_num == PRO ) ||
( par_num == LAMBB && bar_num == PROB ) ||
( par_num == LAMB && bar_num == N1440 ) ||
( par_num == LAMBB && bar_num == N1440B ) ||
( par_num == LAMB && bar_num == N1710 ) ||
( par_num == LAMBB && bar_num == N1710B )
) {
// Set particle/anti-particle flag
if ( bar_num == LAMCP || bar_num == PRO || bar_num == N1440 ||
bar_num == N1710 )
pflag = 0;
else if ( bar_num == LAMCM || bar_num == PROB ||
bar_num == N1440B || bar_num == N1710B )
pflag = 2;
b11 = EvtBaryonVACurrent( parent->getDaug( 0 )->spParent( 0 ),
parent->sp( 0 ), p4b, p4daught, form_fact,
pflag );
b21 = EvtBaryonVACurrent( parent->getDaug( 0 )->spParent( 0 ),
parent->sp( 1 ), p4b, p4daught, form_fact,
pflag );
b12 = EvtBaryonVACurrent( parent->getDaug( 0 )->spParent( 1 ),
parent->sp( 0 ), p4b, p4daught, form_fact,
pflag );
b22 = EvtBaryonVACurrent( parent->getDaug( 0 )->spParent( 1 ),
parent->sp( 1 ), p4b, p4daught, form_fact,
pflag );
}
// Handle 1/2+ -> 1/2- second
else if ( ( par_num == LAMB && bar_num == LAMC1P ) ||
( par_num == LAMBB && bar_num == LAMC1M ) ||
( par_num == LAMB && bar_num == N1535 ) ||
( par_num == LAMBB && bar_num == N1535B ) ||
( par_num == LAMB && bar_num == N1650 ) ||
( par_num == LAMBB && bar_num == N1650B ) ) {
// Set particle/anti-particle flag
if ( bar_num == LAMC1P || bar_num == N1535 || bar_num == N1650 )
pflag = 1;
else if ( bar_num == LAMC1M || bar_num == N1535B || bar_num == N1650B )
pflag = 3;
b11 = EvtBaryonVACurrent( ( parent->getDaug( 0 )->spParent( 0 ) ),
( EvtGammaMatrix::g5() * parent->sp( 0 ) ),
p4b, p4daught, form_fact, pflag );
b21 = EvtBaryonVACurrent( ( parent->getDaug( 0 )->spParent( 0 ) ),
( EvtGammaMatrix::g5() * parent->sp( 1 ) ),
p4b, p4daught, form_fact, pflag );
b12 = EvtBaryonVACurrent( ( parent->getDaug( 0 )->spParent( 1 ) ),
( EvtGammaMatrix::g5() * parent->sp( 0 ) ),
p4b, p4daught, form_fact, pflag );
b22 = EvtBaryonVACurrent( ( parent->getDaug( 0 )->spParent( 1 ) ),
( EvtGammaMatrix::g5() * parent->sp( 1 ) ),
p4b, p4daught, form_fact, pflag );
}
else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Dirac semilep. baryon current "
<< "not implemented for this decay sequence." << std::endl;
::abort();
}
amp.vertex( 0, 0, 0, l1 * b11 );
amp.vertex( 0, 0, 1, l2 * b11 );
amp.vertex( 1, 0, 0, l1 * b21 );
amp.vertex( 1, 0, 1, l2 * b21 );
amp.vertex( 0, 1, 0, l1 * b12 );
amp.vertex( 0, 1, 1, l2 * b12 );
amp.vertex( 1, 1, 0, l1 * b22 );
amp.vertex( 1, 1, 1, l2 * b22 );
}
// Need special handling for the spin-3/2 daughter baryon
// Rarita-Schwinger spinor cases
else if ( EvtPDL::getSpinType( parent->getDaug( 0 )->getId() ) ==
EvtSpinType::RARITASCHWINGER ) {
// Set the form factors
double f1, f2, f3, f4, g1, g2, g3, g4;
FormFactors->getraritaff( par_num, bar_num, q2, baryonmass, &f1, &f2,
&f3, &f4, &g1, &g2, &g3, &g4 );
const double form_fact[8] = {f1, f2, f3, f4, g1, g2, g3, g4};
EvtId l_num = parent->getDaug( 1 )->getId();
EvtVector4C b11, b12, b21, b22, b13, b23, b14, b24, l1, l2;
// Lepton Current
if ( l_num == EM || l_num == MUM || l_num == TAUM ) {
// Lepton Current
l1 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParentNeutrino() );
l2 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParentNeutrino() );
} else if ( l_num == EP || l_num == MUP || l_num == TAUP ) {
l1 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 0 ) );
l2 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
parent->getDaug( 1 )->spParent( 1 ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Wrong lepton number \n";
}
// Baryon Current
// Declare particle, anti-particle flag, same/opp. parity
// pflag = 0 => particle
// pflag = 1 => anti-particle
int pflag = 0;
// Handle cases of 1/2+ -> 3/2- or 3/2+
if ( ( par_num == LAMB && bar_num == LAMC2P ) ||
( par_num == LAMB && bar_num == N1720 ) ||
( par_num == LAMB && bar_num == N1520 ) ||
( par_num == LAMB && bar_num == N1700 ) ||
( par_num == LAMB && bar_num == N1875 ) ||
( par_num == LAMB && bar_num == N1900 ) ) {
// Set flag for particle case
pflag = 0;
} else if ( ( par_num == LAMBB && bar_num == LAMC2M ) ||
( par_num == LAMBB && bar_num == N1520B ) ||
( par_num == LAMBB && bar_num == N1700B ) ||
( par_num == LAMBB && bar_num == N1875B ) ) {
// Set flag for anti-particle opposite parity case
pflag = 1;
}
// Handle anti-particle case for 1/2+ -> 3/2+
else if ( ( par_num == LAMBB && bar_num == N1720B ) ||
( par_num == LAMBB && bar_num == N1900B ) ) {
pflag = 2;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Rarita-Schwinger semilep. baryon current "
<< "not implemented for this decay sequence." << std::endl;
::abort();
}
// Baryon current
b11 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 0 ),
parent->sp( 0 ), p4b, p4daught,
form_fact, pflag );
b21 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 0 ),
parent->sp( 1 ), p4b, p4daught,
form_fact, pflag );
b12 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 1 ),
parent->sp( 0 ), p4b, p4daught,
form_fact, pflag );
b22 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 1 ),
parent->sp( 1 ), p4b, p4daught,
form_fact, pflag );
b13 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 2 ),
parent->sp( 0 ), p4b, p4daught,
form_fact, pflag );
b23 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 2 ),
parent->sp( 1 ), p4b, p4daught,
form_fact, pflag );
b14 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 3 ),
parent->sp( 0 ), p4b, p4daught,
form_fact, pflag );
b24 = EvtBaryonVARaritaCurrent( parent->getDaug( 0 )->spRSParent( 3 ),
parent->sp( 1 ), p4b, p4daught,
form_fact, pflag );
amp.vertex( 0, 0, 0, l1 * b11 );
amp.vertex( 0, 0, 1, l2 * b11 );
amp.vertex( 1, 0, 0, l1 * b21 );
amp.vertex( 1, 0, 1, l2 * b21 );
amp.vertex( 0, 1, 0, l1 * b12 );
amp.vertex( 0, 1, 1, l2 * b12 );
amp.vertex( 1, 1, 0, l1 * b22 );
amp.vertex( 1, 1, 1, l2 * b22 );
amp.vertex( 0, 2, 0, l1 * b13 );
amp.vertex( 0, 2, 1, l2 * b13 );
amp.vertex( 1, 2, 0, l1 * b23 );
amp.vertex( 1, 2, 1, l2 * b23 );
amp.vertex( 0, 3, 0, l1 * b14 );
amp.vertex( 0, 3, 1, l2 * b14 );
amp.vertex( 1, 3, 0, l1 * b24 );
amp.vertex( 1, 3, 1, l2 * b24 );
}
}
EvtVector4C EvtSLBaryonAmp::EvtBaryonVACurrent( const EvtDiracSpinor& Bf,
const EvtDiracSpinor& Bi,
EvtVector4R parent,
EvtVector4R daught,
const double* ff, int pflag )
{
// flag == 0 => particle
// flag == 1 => particle, opposite parity
// flag == 2 => anti-particle, same parity
// flag == 3 => anti-particle, opposite parity
// particle
EvtComplex cv = EvtComplex( 1.0, 0. );
EvtComplex ca = EvtComplex( 1.0, 0. );
EvtComplex cg0 = EvtComplex( 1.0, 0. );
EvtComplex cg5 = EvtComplex( 1.0, 0. );
// antiparticle- same parity parent & daughter
if ( pflag == 2 ) {
cv = EvtComplex( -1.0, 0. );
ca = EvtComplex( 1.0, 0. );
cg0 = EvtComplex( 1.0, 0.0 );
// Changed cg5 from -i to -1 as appears to fix particle - anti-particle discrepency
cg5 = EvtComplex( -1.0, 0.0 );
}
// antiparticle- opposite parity parent & daughter
else if ( pflag == 3 ) {
cv = EvtComplex( 1.0, 0. );
ca = EvtComplex( -1.0, 0. );
// Changed cg0 from -i to -1 as appears to fix particle - anti-particle discrepency
cg0 = EvtComplex( -1.0, 0.0 );
cg5 = EvtComplex( 1.0, 0.0 );
}
EvtVector4C t[6];
// Term 1 = \bar{u}(p',s')*(F_1(q^2)*\gamma_{mu})*u(p,s)
t[0] = cv * EvtLeptonVCurrent( Bf, Bi );
// Term 2 = \bar{u}(p',s')*(F_2(q^2)*(p_{mu}/m_{\Lambda_Q}))*u(p,s)
t[1] = cg0 * EvtLeptonSCurrent( Bf, Bi ) * ( parent / parent.mass() );
// Term 3 = \bar{u}(p',s')*(F_3(q^2)*(p'_{mu}/m_{\Lambda_q}))*u(p,s)
t[2] = cg0 * EvtLeptonSCurrent( Bf, Bi ) * ( daught / daught.mass() );
// Term 4 = \bar{u}(p',s')*(G_1(q^2)*\gamma_{mu}*\gamma_5)*u(p,s)
t[3] = ca * EvtLeptonACurrent( Bf, Bi );
// Term 5 = \bar{u}(p',s')*(G_2(q^2)*(p_{mu}/m_{\Lambda_Q})*\gamma_5)*u(p,s)
t[4] = cg5 * EvtLeptonPCurrent( Bf, Bi ) * ( parent / parent.mass() );
// Term 6 = \bar{u}(p',s')*(G_3(q^2)*(p'_{mu}/m_{\Lambda_q})*\gamma_5)*u(p,s)
t[5] = cg5 * EvtLeptonPCurrent( Bf, Bi ) * ( daught / daught.mass() );
// Sum the individual terms
EvtVector4C current = ( ff[0] * t[0] + ff[1] * t[1] + ff[2] * t[2] -
ff[3] * t[3] - ff[4] * t[4] - ff[5] * t[5] );
return current;
}
EvtVector4C EvtSLBaryonAmp::EvtBaryonVARaritaCurrent(
const EvtRaritaSchwinger& Bf, const EvtDiracSpinor& Bi, EvtVector4R parent,
EvtVector4R daught, const double* ff, int pflag )
{
// flag == 0 => particle
// flag == 1 => anti-particle
// particle
EvtComplex cv = EvtComplex( 1.0, 0. );
EvtComplex ca = EvtComplex( 1.0, 0. );
EvtComplex cg0 = EvtComplex( 1.0, 0. );
EvtComplex cg5 = EvtComplex( 1.0, 0. );
// antiparticle opposite parity
if ( pflag == 1 ) {
cv = EvtComplex( -1.0, 0. );
ca = EvtComplex( 1.0, 0. );
cg0 = EvtComplex( 1.0, 0.0 );
cg5 = EvtComplex( -1.0, 0.0 );
}
// antiparticle same parity
else if ( pflag == 2 ) {
cv = EvtComplex( 1.0, 0. );
ca = EvtComplex( -1.0, 0. );
cg0 = EvtComplex( -1.0, 0.0 );
cg5 = EvtComplex( 1.0, 0.0 );
}
EvtVector4C t[8];
EvtTensor4C id;
id.setdiag( 1.0, 1.0, 1.0, 1.0 );
EvtDiracSpinor tmp;
for ( int i = 0; i < 4; i++ ) {
tmp.set_spinor( i, Bf.getVector( i ) * parent );
}
EvtVector4C v1, v2;
for ( int i = 0; i < 4; i++ ) {
v1.set( i, EvtLeptonSCurrent( Bf.getSpinor( i ), Bi ) );
v2.set( i, EvtLeptonPCurrent( Bf.getSpinor( i ), Bi ) );
}
// Term 1 = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(F_1(q^2)*\gamma_{mu})*u(p,s)
t[0] = ( cv / parent.mass() ) * EvtLeptonVCurrent( tmp, Bi );
// Term 2
// = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(F_2(q^2)*(p_{mu}/m_{\Lambda_Q}))*u(p,s)
t[1] = ( ( cg0 / parent.mass() ) * EvtLeptonSCurrent( tmp, Bi ) ) *
( parent / parent.mass() );
// Term 3
// = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(F_3(q^2)*(p'_{mu}/m_{\Lambda_q}))*u(p,s)
t[2] = ( ( cg0 / parent.mass() ) * EvtLeptonSCurrent( tmp, Bi ) ) *
( daught / daught.mass() );
// Term 4 = \bar{u}^{\alpha}(p',s')*(F_4(q^2)*g_{\alpha,\mu})*u(p,s)
t[3] = cg0 * ( id.cont2( v1 ) );
// Term 5
// = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(G_1(q^2)*\gamma_{mu}*\gamma_5)*u(p,s)
t[4] = ( ca / parent.mass() ) * EvtLeptonACurrent( tmp, Bi );
// Term 6
// = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})
// *(G_2(q^2)*(p_{mu}/m_{\Lambda_Q})*\gamma_5)*u(p,s)
t[5] = ( ( cg5 / parent.mass() ) * EvtLeptonPCurrent( tmp, Bi ) ) *
( parent / parent.mass() );
// Term 7
// = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})
// *(G_3(q^2)*(p'_{mu}/m_{\Lambda_q})*\gamma_5)*u(p,s)
t[6] = ( ( cg5 / parent.mass() ) * EvtLeptonPCurrent( tmp, Bi ) ) *
( daught / daught.mass() );
// Term 8 = \bar{u}^{\alpha}(p',s')*(G_4(q^2)*g_{\alpha,\mu}*\gamma_5))*u(p,s)
t[7] = cg5 * ( id.cont2( v2 ) );
// Sum the individual terms
EvtVector4C current = ( ff[0] * t[0] + ff[1] * t[1] + ff[2] * t[2] +
ff[3] * t[3] - ff[4] * t[4] - ff[5] * t[5] -
ff[6] * t[6] - ff[7] * t[7] );
return current;
}
diff --git a/src/EvtGenModels/EvtSLDiBaryonAmp.cpp b/src/EvtGenModels/EvtSLDiBaryonAmp.cpp
index 1fb7343..4414de0 100644
--- a/src/EvtGenModels/EvtSLDiBaryonAmp.cpp
+++ b/src/EvtGenModels/EvtSLDiBaryonAmp.cpp
@@ -1,440 +1,415 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSLDiBaryonAmp.cc
-//
-// Description: Routine to implement semileptonic decays to dibaryonic final
-// state. Details of amplitude calculation to be found in arXiv:1107.0801.
-//
-// Modification history:
-//
-// Mark Smith July 18, 2017 Module created
-// Heavily adapted from the EvtSLBaryonAmp module
-// Ryan Newcombe May 2018 Added capability for Rarita-Schwinger
-// daughters. Indexing convention follows EvtSLBaryonAmp
-// John B Oct 2018 Optimise amplitude calculation
-//
-//--------------------------------------------------------------------------
-
#include "EvtGenModels/EvtSLDiBaryonAmp.hh"
#include "EvtGenBase/EvtGammaMatrix.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRaritaSchwinger.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
EvtSLDiBaryonAmp::EvtSLDiBaryonAmp( const EvtBToDiBaryonlnupQCDFF& formFactors ) :
ffModel_( formFactors )
{
}
void EvtSLDiBaryonAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp ) const
{
static EvtId EM = EvtPDL::getId( "e-" );
static EvtId MUM = EvtPDL::getId( "mu-" );
static EvtId TAUM = EvtPDL::getId( "tau-" );
static EvtId EP = EvtPDL::getId( "e+" );
static EvtId MUP = EvtPDL::getId( "mu+" );
static EvtId TAUP = EvtPDL::getId( "tau+" );
// The amplitude assumes B- -> p+ p- l- nubar ordering
// i.e. the B- decay is the "particle" mode
// B charge (x3) to check for antiparticle mode and baryon daughter ordering
EvtId BId = parent->getId();
int qB3 = EvtPDL::chg3( BId );
bool particleMode( true );
// Check if we have B+ instead (antiparticle mode)
if ( qB3 > 0 ) {
particleMode = false;
}
// The baryon, charged lepton and neutrino daughters
// Make sure the first baryon has a charge opposite to the B, since the
// amplitude expressions assume this order
EvtParticle* baryon1 = parent->getDaug( 0 );
EvtParticle* baryon2 = parent->getDaug( 1 );
// Check if we need to reverse the baryon ordering
if ( EvtPDL::chg3( baryon1->getId() ) == qB3 ) {
baryon1 = parent->getDaug( 1 );
baryon2 = parent->getDaug( 0 );
}
EvtParticle* lepton = parent->getDaug( 2 );
EvtParticle* neutrino = parent->getDaug( 3 );
// 4-momenta in B rest frame
EvtVector4R p0( parent->mass(), 0.0, 0.0, 0.0 );
EvtVector4R p1 = baryon1->getP4();
EvtVector4R p2 = baryon2->getP4();
EvtVector4R pSum = p1 + p2;
EvtVector4R p = p0 - pSum;
EvtVector4R pDiff = p2 - p1;
// Particle id's: retrieve 1st baryon again in case order has changed
EvtId Id1 = baryon1->getId();
EvtId Id2 = baryon2->getId();
EvtId l_num = lepton->getId();
EvtSpinType::spintype type1 = EvtPDL::getSpinType( Id1 );
EvtSpinType::spintype type2 = EvtPDL::getSpinType( Id2 );
// Parity of B+- = -1. Check if the parity of the dibaryon state is the same.
// If so, set the sameParity integer to 1. Otherwise set it to -1,
// i.e. the dibaryon system has opposite parity to the B meson
int J1 = EvtSpinType::getSpin2( type1 );
int J2 = EvtSpinType::getSpin2( type2 );
int sameParity = this->checkDibaryonParity( Id1, Id2, J1, J2 );
// Number of chiral components of the baryon spinors
int N1 = EvtSpinType::getSpinStates( type1 );
int N2 = EvtSpinType::getSpinStates( type2 );
// Invariant mass of the two baryon particle system
double m_dibaryon = sqrt( pSum.mass2() );
// Complex number i
EvtComplex I( 0, 1 );
// Lepton currents, same for all baryon options
EvtVector4C l1, l2;
if ( l_num == EM || l_num == MUM || l_num == TAUM ) {
// B-
l1 = EvtLeptonVACurrent( lepton->spParent( 0 ),
neutrino->spParentNeutrino() );
l2 = EvtLeptonVACurrent( lepton->spParent( 1 ),
neutrino->spParentNeutrino() );
} else if ( l_num == EP || l_num == MUP || l_num == TAUP ) {
// B+
l1 = EvtLeptonVACurrent( neutrino->spParentNeutrino(),
lepton->spParent( 0 ) );
l2 = EvtLeptonVACurrent( neutrino->spParentNeutrino(),
lepton->spParent( 1 ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtSLDiBaryonAmp" )
<< "Wrong lepton number" << std::endl;
}
// Parity multiplication factors for the antiparticle mode hadronic currents
double sign1 = ( particleMode == true ) ? 1.0 : 1.0 * sameParity;
double sign2 = ( particleMode == true ) ? 1.0 : 1.0 * sameParity;
double sign3 = ( particleMode == true ) ? 1.0 : -1.0 * sameParity;
double sign4 = ( particleMode == true ) ? 1.0 : -1.0 * sameParity;
double sign5 = ( particleMode == true ) ? 1.0 : -1.0 * sameParity;
double sign6 = ( particleMode == true ) ? 1.0 : 1.0 * sameParity;
// Define form factor coeff variables
double f1( 0.0 ), f2( 0.0 ), f3( 0.0 ), f4( 0.0 ), f5( 0.0 );
double g1( 0.0 ), g2( 0.0 ), g3( 0.0 ), g4( 0.0 ), g5( 0.0 );
// Handle case of two Dirac-type daughters, e.g. p pbar, p N(1440)
if ( type1 == EvtSpinType::DIRAC && type2 == EvtSpinType::DIRAC ) {
// Form factor parameters
EvtBToDiBaryonlnupQCDFF::FormFactors FF;
ffModel_.getDiracFF( parent, m_dibaryon, FF );
if ( sameParity == 1 ) {
f1 = FF.F1;
f2 = FF.F2;
f3 = FF.F3;
f4 = FF.F4;
f5 = FF.F5;
g1 = FF.G1;
g2 = FF.G2;
g3 = FF.G3;
g4 = FF.G4;
g5 = FF.G5;
} else {
// Swap coeffs: f_i <--> g_i
f1 = FF.G1;
f2 = FF.G2;
f3 = FF.G3;
f4 = FF.G4;
f5 = FF.G5;
g1 = FF.F1;
g2 = FF.F2;
g3 = FF.F3;
g4 = FF.F4;
g5 = FF.F5;
}
EvtVector4R gMtmTerms = g3 * p + g4 * pSum + g5 * pDiff;
EvtVector4R fMtmTerms = f3 * p + f4 * pSum + f5 * pDiff;
// First baryon
for ( int i = 0; i < N1; i++ ) {
// Get the baryon spinor in the B rest frame. Also just use u and not i*u,
// since the imaginary constant factor is not needed for the probability
EvtDiracSpinor u = baryon1->spParent( i );
// Second baryon
for ( int j = 0; j < N2; j++ ) {
EvtDiracSpinor v = baryon2->spParent( j );
// Hadronic currents
std::vector<EvtVector4C> hadCurrents =
this->getHadronicCurrents( u, v, p, gMtmTerms, fMtmTerms );
// First amplitude terms: 3rd current already has the form factor coeffs applied (gMtmTerms)
EvtVector4C amp1 = g1 * sign1 * hadCurrents[0] +
g2 * sign2 * hadCurrents[1] +
sign3 * hadCurrents[2];
// Second amplitude terms: 6th current already has the form factor coeffs applied (fMtmTerms)
EvtVector4C amp2 = f1 * sign4 * hadCurrents[3] +
f2 * sign5 * hadCurrents[4] +
sign6 * hadCurrents[5];
EvtVector4C hadAmp;
if ( sameParity == 1 ) {
hadAmp = amp1 - amp2;
} else {
hadAmp = amp2 - amp1;
}
amp.vertex( i, j, 0, l1 * hadAmp );
amp.vertex( i, j, 1, l2 * hadAmp );
} // j
} // i
} else if ( ( type1 == EvtSpinType::DIRAC &&
type2 == EvtSpinType::RARITASCHWINGER ) ||
( type1 == EvtSpinType::RARITASCHWINGER &&
type2 == EvtSpinType::DIRAC ) ) {
// Handle the case of one Dirac-type daughter (not including the leptons), e.g. one proton, and one
// Rarita-Schwinger-type (spin 3/2) daughter e.g. B -> p N(1520) l nu
// Form factor parameters
EvtBToDiBaryonlnupQCDFF::FormFactors FF;
ffModel_.getRaritaFF( parent, m_dibaryon, FF );
if ( sameParity == 1 ) {
f1 = FF.F1;
f2 = FF.F2;
f3 = FF.F3;
f4 = FF.F4;
f5 = FF.F5;
g1 = FF.G1;
g2 = FF.G2;
g3 = FF.G3;
g4 = FF.G4;
g5 = FF.G5;
} else {
// Swap coeffs: f_i <--> g_i
f1 = FF.G1;
f2 = FF.G2;
f3 = FF.G3;
f4 = FF.G4;
f5 = FF.G5;
g1 = FF.F1;
g2 = FF.F2;
g3 = FF.F3;
g4 = FF.F4;
g5 = FF.F5;
}
EvtVector4R gMtmTerms = g3 * p + g4 * pSum + g5 * pDiff;
EvtVector4R fMtmTerms = f3 * p + f4 * pSum + f5 * pDiff;
if ( type1 == EvtSpinType::DIRAC ) {
// First baryon is Dirac
for ( int i = 0; i < N1; i++ ) {
// Get the baryon spinor in the B rest frame. Also just use u and not i*u,
// since the imaginary constant factor is not needed for the probability
EvtDiracSpinor u = baryon1->spParent( i );
// Second baryon is RS-type
for ( int j = 0; j < N2; j++ ) {
EvtRaritaSchwinger vRS = baryon2->spRSParent( j );
EvtDiracSpinor v;
for ( int k = 0; k < 4; k++ ) {
v.set_spinor( k, vRS.getVector( k ) * p0 );
}
// Hadronic currents
std::vector<EvtVector4C> hadCurrents =
this->getHadronicCurrents( u, v, p, gMtmTerms, fMtmTerms );
// First amplitude terms: 3rd current already has the form factor coeffs applied (gMtmTerms)
EvtVector4C amp1 = g1 * sign1 * hadCurrents[0] +
g2 * sign2 * hadCurrents[1] +
sign3 * hadCurrents[2];
// Second amplitude terms: 6th current already has the form factor coeffs applied (fMtmTerms)
EvtVector4C amp2 = f1 * sign4 * hadCurrents[3] +
f2 * sign5 * hadCurrents[4] +
sign6 * hadCurrents[5];
EvtVector4C hadAmp;
if ( sameParity == 1 ) {
hadAmp = amp1 - amp2;
} else {
hadAmp = amp2 - amp1;
}
amp.vertex( i, j, 0, l1 * hadAmp );
amp.vertex( i, j, 1, l2 * hadAmp );
} // j
} // i
} else if ( type2 == EvtSpinType::DIRAC ) {
// Same as before, but where the first daughter is RS-type, e.g. B -> N(1520) p l nu
// First baryon is RS
for ( int i = 0; i < N1; i++ ) {
// Get the baryon spinor in the B rest frame
EvtRaritaSchwinger uRS = baryon1->spRSParent( i );
EvtDiracSpinor u;
for ( int k = 0; k < 4; k++ ) {
u.set_spinor( k, uRS.getVector( k ) * p0 );
}
// Second baryon is Dirac
for ( int j = 0; j < N2; j++ ) {
EvtDiracSpinor v = baryon2->spParent( j );
// Hadronic currents
std::vector<EvtVector4C> hadCurrents =
this->getHadronicCurrents( u, v, p, gMtmTerms, fMtmTerms );
// First amplitude terms: 3rd current already has the form factor coeffs applied (gMtmTerms)
EvtVector4C amp1 = g1 * sign1 * hadCurrents[0] +
g2 * sign2 * hadCurrents[1] +
sign3 * hadCurrents[2];
// Second amplitude terms: 6th current already has the form factor coeffs applied (fMtmTerms)
EvtVector4C amp2 = f1 * sign4 * hadCurrents[3] +
f2 * sign5 * hadCurrents[4] +
sign6 * hadCurrents[5];
EvtVector4C hadAmp;
if ( sameParity == 1 ) {
hadAmp = amp1 - amp2;
} else {
hadAmp = amp2 - amp1;
}
amp.vertex( i, j, 0, l1 * hadAmp );
amp.vertex( i, j, 1, l2 * hadAmp );
} // j
} // i
} // RS daughter check
} // Have Dirac and RS baryons
}
std::vector<EvtVector4C> EvtSLDiBaryonAmp::getHadronicCurrents(
const EvtDiracSpinor& u, const EvtDiracSpinor& v, const EvtVector4R& p,
const EvtVector4R& gMtmTerms, const EvtVector4R& fMtmTerms ) const
{
// Store the currents used in Eq 6 (in order of appearance)
std::vector<EvtVector4C> currents;
currents.reserve( 6 );
EvtDiracSpinor g5v = EvtGammaMatrix::g5() * v;
// ubar*gamma*gamma5*v
EvtVector4C current1 = EvtLeptonACurrent( u, v );
currents.push_back( current1 );
// ubar*sigma*p*gamma5*v -> [ubar*sigma*(gamma5*v)]*p
EvtTensor4C TC1 = EvtLeptonTCurrent( u, g5v );
// Contract tensor with 4-momentum
EvtVector4C current2 = TC1.cont2( p );
currents.push_back( current2 );
// ubar*p*gamma5*v; "p" = p, pSum and pDiff
EvtComplex PC1 = EvtLeptonPCurrent( u, v );
EvtVector4C current3 = PC1 * gMtmTerms;
currents.push_back( current3 );
// ubar*gamma*v
EvtVector4C current4 = EvtLeptonVCurrent( u, v );
currents.push_back( current4 );
// ubar*sigma*p*v -> [ubar*sigma*v]*p
EvtTensor4C TC2 = EvtLeptonTCurrent( u, v );
// Contract tensor with 4-momentum
EvtVector4C current5 = TC2.cont2( p );
currents.push_back( current5 );
// ubar*p*v; "p" = p, pSum and pDiff
EvtComplex S1 = EvtLeptonSCurrent( u, v );
EvtVector4C current6 = S1 * fMtmTerms;
currents.push_back( current6 );
return currents;
}
int EvtSLDiBaryonAmp::checkDibaryonParity( const EvtId& id1, const EvtId& id2,
const int J1, const int J2 ) const
{
// Get intrisic parities of the two baryons, then multiply by (-1)^|J1 - J2|.
// Note here that the J1 and J2 function arguments = 2*spin
int par1 = this->getBaryonParity( id1 );
int par2 = this->getBaryonParity( id2 );
// mult should be either 0 or 1 for allowed Dirac/RS baryon pairs
int mult = static_cast<int>( pow( -1.0, 0.5 * fabs( J1 - J2 ) ) );
int dbParity = par1 * par2 * mult;
// Initialise result to 1, i.e. dibaryon parity = B parity = -1
int result( 1 );
// Dibaryon parity is opposite to the negative B parity
if ( dbParity > 0 ) {
result = -1;
}
return result;
}
int EvtSLDiBaryonAmp::getBaryonParity( const EvtId& id ) const
{
// Initialise parity to +1
int parity( 1 );
// List of baryons with parity = +1
static EvtIdSet posParity( "p+", "Delta+", "Lambda_c+",
"anti-Lambda_c(2593)-", "anti-Lambda_c(2625)-",
"N(1440)+", "anti-N(1520)-", "anti-N(1535)-",
"anti-N(1650)-", "anti-N(1700)-", "N(1710)+",
"N(1720)+" );
// If the baryon id is not in the list, set the parity to -1
if ( !posParity.contains( id ) ) {
parity = -1;
}
return parity;
}
diff --git a/src/EvtGenModels/EvtSLN.cpp b/src/EvtGenModels/EvtSLN.cpp
index d8b7537..e0947b1 100644
--- a/src/EvtGenModels/EvtSLN.cpp
+++ b/src/EvtGenModels/EvtSLN.cpp
@@ -1,96 +1,76 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSLN.cc
-//
-// Description: B ==> tau + nu
-//
-// Modification history:
-//
-// RYD/SHY April 23, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSLN.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <iostream>
#include <stdlib.h>
#include <string>
std::string EvtSLN::getName()
{
return "SLN";
}
EvtDecayBase* EvtSLN::clone()
{
return new EvtSLN;
}
void EvtSLN::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::DIRAC );
checkSpinDaughter( 1, EvtSpinType::NEUTRINO );
}
void EvtSLN::initProbMax()
{
double M = EvtPDL::getMeanMass( getParentId() );
double m = EvtPDL::getMeanMass( getDaug( 0 ) );
double probMax = 8.0 * ( M * M - m * m ) * m * m;
setProbMax( probMax );
}
void EvtSLN::decay( EvtParticle* p )
{
static EvtId EM = EvtPDL::getId( "e-" );
static EvtId MUM = EvtPDL::getId( "mu-" );
static EvtId TAUM = EvtPDL::getId( "tau-" );
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle *l, *nul;
l = p->getDaug( 0 );
nul = p->getDaug( 1 );
EvtVector4R p4_p;
p4_p.set( p->mass(), 0.0, 0.0, 0.0 );
EvtVector4C l1, l2;
if ( getDaug( 0 ) == TAUM || getDaug( 0 ) == MUM || getDaug( 0 ) == EM ) {
l1 = EvtLeptonVACurrent( l->spParent( 0 ), nul->spParentNeutrino() );
l2 = EvtLeptonVACurrent( l->spParent( 1 ), nul->spParentNeutrino() );
} else {
l1 = EvtLeptonVACurrent( nul->spParentNeutrino(), l->spParent( 0 ) );
l2 = EvtLeptonVACurrent( nul->spParentNeutrino(), l->spParent( 1 ) );
}
vertex( 0, p4_p * l1 );
vertex( 1, p4_p * l2 );
return;
}
diff --git a/src/EvtGenModels/EvtSLPole.cpp b/src/EvtGenModels/EvtSLPole.cpp
index 4ea5b61..72dc653 100644
--- a/src/EvtGenModels/EvtSLPole.cpp
+++ b/src/EvtGenModels/EvtSLPole.cpp
@@ -1,100 +1,79 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSLPole.cc
-//
-// Description: Routine to implement semileptonic decays according
-// to light cone sum rules
-//
-// Modification history:
-//
-// DJL April 23, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSLPole.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicTensorAmp.hh"
#include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
#include "EvtGenModels/EvtSLPoleFF.hh"
#include <stdlib.h>
#include <string>
std::string EvtSLPole::getName()
{
return "SLPOLE";
}
EvtDecayBase* EvtSLPole::clone()
{
return new EvtSLPole;
}
void EvtSLPole::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs(), _resetDaughterTree );
calcamp->CalcAmp( p, _amp2, SLPoleffmodel.get() );
}
void EvtSLPole::initProbMax()
{
EvtId parnum, mesnum, lnum, nunum;
parnum = getParentId();
mesnum = getDaug( 0 );
lnum = getDaug( 1 );
nunum = getDaug( 2 );
double mymaxprob = calcamp->CalcMaxProb( parnum, mesnum, lnum, nunum,
SLPoleffmodel.get() );
setProbMax( mymaxprob );
}
void EvtSLPole::init()
{
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be X lepton neutrino
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
EvtSpinType::spintype mesontype = EvtPDL::getSpinType( getDaug( 0 ) );
SLPoleffmodel = std::make_unique<EvtSLPoleFF>( getNArg(), getArgs() );
switch ( mesontype ) {
case EvtSpinType::SCALAR:
calcamp = std::make_unique<EvtSemiLeptonicScalarAmp>();
break;
case EvtSpinType::VECTOR:
calcamp = std::make_unique<EvtSemiLeptonicVectorAmp>();
break;
case EvtSpinType::TENSOR:
calcamp = std::make_unique<EvtSemiLeptonicTensorAmp>();
break;
default:;
}
_resetDaughterTree = false;
if ( getArgStr( getNArg() - 1 ) == "true" )
_resetDaughterTree = true;
}
diff --git a/src/EvtGenModels/EvtSLPoleFF.cpp b/src/EvtGenModels/EvtSLPoleFF.cpp
index 5f49697..71cf421 100644
--- a/src/EvtGenModels/EvtSLPoleFF.cpp
+++ b/src/EvtGenModels/EvtSLPoleFF.cpp
@@ -1,209 +1,188 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSLPoleFF.cc
-//
-// Description: Routine to implement semileptonic form factors
-// according to the model SLPoles
-//
-// Modification history:
-//
-// DJL April 17,1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSLPoleFF.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <math.h>
#include <stdlib.h>
#include <string>
EvtSLPoleFF::EvtSLPoleFF( int numarg, double* arglist )
{
//arg - maybe ignore the last argument - if odd ... Sigh
numSLPoleargs = numarg - ( numarg % 2 );
for ( int i = 0; i < numSLPoleargs; i++ ) {
SLPoleargs[i] = arglist[i];
}
return;
}
void EvtSLPoleFF::getscalarff( EvtId parent, EvtId, double t, double,
double* fpf, double* f0f )
{
// Form factors have a general form, with parameters passed in
// from the arguements.
if ( numSLPoleargs != 8 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Problem in EvtSLPoleFF::getscalarff\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "wrong number of arguements!!!\n";
}
double mb = EvtPDL::getMeanMass( parent );
double mb2 = mb * mb;
double f0, af, bf, powf;
f0 = SLPoleargs[0];
af = SLPoleargs[1];
bf = SLPoleargs[2];
powf = SLPoleargs[3];
*fpf = f0 /
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
powf ) );
f0 = SLPoleargs[4];
af = SLPoleargs[5];
bf = SLPoleargs[6];
powf = SLPoleargs[7];
*f0f = f0 /
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
powf ) );
return;
}
void EvtSLPoleFF::getvectorff( EvtId parent, EvtId, double t, double,
double* a1f, double* a2f, double* vf, double* a0f )
{
if ( numSLPoleargs != 16 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Problem in EvtSLPoleFF::getvectorff\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "wrong number of arguements!!!\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << numSLPoleargs << "\n";
}
double mb = EvtPDL::getMeanMass( parent );
double mb2 = mb * mb;
double f0, af, bf, powf;
f0 = SLPoleargs[0];
af = SLPoleargs[1];
bf = SLPoleargs[2];
powf = SLPoleargs[3];
*a1f = f0 /
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
powf ) );
f0 = SLPoleargs[4];
af = SLPoleargs[5];
bf = SLPoleargs[6];
powf = SLPoleargs[7];
*a2f = f0 /
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
powf ) );
f0 = SLPoleargs[8];
af = SLPoleargs[9];
bf = SLPoleargs[10];
powf = SLPoleargs[11];
*vf = f0 /
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
powf ) );
f0 = SLPoleargs[12];
af = SLPoleargs[13];
bf = SLPoleargs[14];
powf = SLPoleargs[15];
*a0f = f0 /
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
powf ) );
return;
}
void EvtSLPoleFF::gettensorff( EvtId parent, EvtId, double t, double,
double* hf, double* kf, double* bpf, double* bmf )
{
if ( numSLPoleargs != 16 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Problem in EvtSLPoleFF::gettensorff\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "wrong number of arguements!!!\n";
}
double mb = EvtPDL::getMeanMass( parent );
double mb2 = mb * mb;
double f0, af, bf, powf;
f0 = SLPoleargs[0];
af = SLPoleargs[1];
bf = SLPoleargs[2];
powf = SLPoleargs[3];
*hf = f0 /
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
powf ) );
f0 = SLPoleargs[4];
af = SLPoleargs[5];
bf = SLPoleargs[6];
powf = SLPoleargs[7];
*kf = f0 /
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
powf ) );
f0 = SLPoleargs[8];
af = SLPoleargs[9];
bf = SLPoleargs[10];
powf = SLPoleargs[11];
*bpf = f0 /
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
powf ) );
f0 = SLPoleargs[12];
af = SLPoleargs[13];
bf = SLPoleargs[14];
powf = SLPoleargs[15];
*bmf = f0 /
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
powf ) );
return;
}
void EvtSLPoleFF::getbaryonff( EvtId, EvtId, double, double, double*, double*,
double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getbaryonff in EvtSLPoleFF.\n";
::abort();
}
void EvtSLPoleFF::getdiracff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getdiracff in EvtSLPoleFF.\n";
::abort();
}
void EvtSLPoleFF::getraritaff( EvtId, EvtId, double, double, double*, double*,
double*, double*, double*, double*, double*,
double* )
{
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Not implemented :getraritaff in EvtSLPoleFF.\n";
::abort();
}
diff --git a/src/EvtGenModels/EvtSSDCP.cpp b/src/EvtGenModels/EvtSSDCP.cpp
index ac98551..86b9efb 100644
--- a/src/EvtGenModels/EvtSSDCP.cpp
+++ b/src/EvtGenModels/EvtSSDCP.cpp
@@ -1,366 +1,346 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2001 Caltech
-//
-// Module: EvtSSDCP.cc
-//
-// Description: See EvtSSDCP.hh
-//
-// Modification history:
-//
-// RYD August 12, 2001 Module created
-// F. Sandrelli, Fernando M-V March 1, 2002 Debugged and added z parameter (CPT violation)
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSSDCP.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtIncoherentMixing.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtSSDCP::getName()
{
return "SSD_CP";
}
EvtDecayBase* EvtSSDCP::clone()
{
return new EvtSSDCP;
}
void EvtSSDCP::init()
{
// check that there are 8 or 12 or 14 arguments
checkNArg( 14, 12, 8 );
checkNDaug( 2 );
EvtSpinType::spintype d1type = EvtPDL::getSpinType( getDaug( 0 ) );
EvtSpinType::spintype d2type = EvtPDL::getSpinType( getDaug( 1 ) );
// Check it is a B0 or B0s
if ( ( getParentId() != EvtPDL::getId( "B0" ) ) &&
( getParentId() != EvtPDL::getId( "anti-B0" ) ) &&
( getParentId() != EvtPDL::getId( "B_s0" ) ) &&
( getParentId() != EvtPDL::getId( "anti-B_s0" ) ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtSSDCP only decays B0 and B0s" << std::endl;
::abort();
}
if ( ( !( d1type == EvtSpinType::SCALAR || d2type == EvtSpinType::SCALAR ) ) ||
( !( ( d2type == EvtSpinType::SCALAR ) ||
( d2type == EvtSpinType::VECTOR ) ||
( d2type == EvtSpinType::TENSOR ) ) ) ||
( !( ( d1type == EvtSpinType::SCALAR ) ||
( d1type == EvtSpinType::VECTOR ) ||
( d1type == EvtSpinType::TENSOR ) ) ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtSSDCP generator expected "
<< "one of the daugters to be a scalar, the other either scalar, vector, or tensor, found:"
<< EvtPDL::name( getDaug( 0 ) ).c_str() << " and "
<< EvtPDL::name( getDaug( 1 ) ).c_str() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
_dm = getArg( 0 ) / EvtConst::c; //units of 1/mm
_dgog = getArg( 1 );
_qoverp = getArg( 2 ) * EvtComplex( cos( getArg( 3 ) ), sin( getArg( 3 ) ) );
_poverq = 1.0 / _qoverp;
_A_f = getArg( 4 ) * EvtComplex( cos( getArg( 5 ) ), sin( getArg( 5 ) ) );
_Abar_f = getArg( 6 ) * EvtComplex( cos( getArg( 7 ) ), sin( getArg( 7 ) ) );
if ( getNArg() >= 12 ) {
_eigenstate = false;
_A_fbar = getArg( 8 ) *
EvtComplex( cos( getArg( 9 ) ), sin( getArg( 9 ) ) );
_Abar_fbar = getArg( 10 ) *
EvtComplex( cos( getArg( 11 ) ), sin( getArg( 11 ) ) );
} else {
//I'm somewhat confused about this. For a CP eigenstate set the
//amplitudes to the same. For a non CP eigenstate CPT invariance
//is enforced. (ryd)
if ( ( getDaug( 0 ) == EvtPDL::chargeConj( getDaug( 0 ) ) &&
getDaug( 1 ) == EvtPDL::chargeConj( getDaug( 1 ) ) ) ||
( getDaug( 0 ) == EvtPDL::chargeConj( getDaug( 1 ) ) &&
getDaug( 1 ) == EvtPDL::chargeConj( getDaug( 0 ) ) ) ) {
_eigenstate = true;
} else {
_eigenstate = false;
_A_fbar = conj( _Abar_f );
_Abar_fbar = conj( _A_f );
}
}
//FS: new check for z
if ( getNArg() == 14 ) { //FS Set _z parameter if provided else set it 0
_z = EvtComplex( getArg( 12 ), getArg( 13 ) );
} else {
_z = EvtComplex( 0.0, 0.0 );
}
// FS substituted next 2 lines...
//
// _gamma=EvtPDL::getctau(EvtPDL::getId("B0")); //units of 1/mm
//_dgamma=_gamma*0.5*_dgog;
//
// ...with:
if ( ( getParentId() == EvtPDL::getId( "B0" ) ) ||
( getParentId() == EvtPDL::getId( "anti-B0" ) ) ) {
_gamma = 1. / EvtPDL::getctau( EvtPDL::getId( "B0" ) ); //gamma/c (1/mm)
} else {
_gamma = 1. / EvtPDL::getctau( EvtPDL::getId( "B_s0" ) );
}
_dgamma = _gamma * _dgog; //dgamma/c (1/mm)
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "SSD_CP will generate CP/CPT violation:" << endl
<< endl
<< " " << EvtPDL::name( getParentId() ).c_str() << " --> "
<< EvtPDL::name( getDaug( 0 ) ).c_str() << " + "
<< EvtPDL::name( getDaug( 1 ) ).c_str() << endl
<< endl
<< "using parameters:" << endl
<< endl
<< " delta(m) = " << _dm << " hbar/ps" << endl
<< "dGamma = " << _dgamma << " ps-1" << endl
<< " q/p = " << _qoverp << endl
<< " z = " << _z << endl
<< " tau = " << 1. / _gamma << " ps" << endl;
}
}
void EvtSSDCP::initProbMax()
{
double theProbMax = abs( _A_f ) * abs( _A_f ) +
abs( _Abar_f ) * abs( _Abar_f ) +
abs( _A_fbar ) * abs( _A_fbar ) +
abs( _Abar_fbar ) * abs( _Abar_fbar );
if ( _eigenstate )
theProbMax *= 2;
EvtSpinType::spintype d2type = EvtPDL::getSpinType( getDaug( 1 ) );
EvtSpinType::spintype d1type = EvtPDL::getSpinType( getDaug( 0 ) );
if ( d1type == EvtSpinType::TENSOR || d2type == EvtSpinType::TENSOR )
theProbMax *= 10;
setProbMax( theProbMax );
}
void EvtSSDCP::decay( EvtParticle* p )
{
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
static EvtId B0s = EvtPDL::getId( "B_s0" );
static EvtId B0Bs = EvtPDL::getId( "anti-B_s0" );
double t;
EvtId other_b;
EvtId daugs[2];
int flip = 0;
if ( !_eigenstate ) {
if ( EvtRandom::Flat( 0.0, 1.0 ) < 0.5 )
flip = 1;
}
if ( !flip ) {
daugs[0] = getDaug( 0 );
daugs[1] = getDaug( 1 );
} else {
daugs[0] = EvtPDL::chargeConj( getDaug( 0 ) );
daugs[1] = EvtPDL::chargeConj( getDaug( 1 ) );
}
EvtParticle* d;
p->initializePhaseSpace( 2, daugs );
EvtComplex amp;
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.5 ); // t is c*Dt (mm)
// EvtIncoherentMixing::OtherB( p , t , other_b , 0.5 ) ;
//if (flip) t=-t;
//FS We assume DGamma=GammaLow-GammaHeavy and Dm=mHeavy-mLow
EvtComplex expH = exp( -EvtComplex( -0.25 * _dgamma * t, 0.5 * _dm * t ) );
EvtComplex expL = exp( EvtComplex( -0.25 * _dgamma * t, 0.5 * _dm * t ) );
//FS Definition of gp and gm
EvtComplex gp = 0.5 * ( expL + expH );
EvtComplex gm = 0.5 * ( expL - expH );
//FS Calculation os sqrt(1-z^2)
EvtComplex sqz = sqrt( abs( 1 - _z * _z ) ) *
exp( EvtComplex( 0, arg( 1 - _z * _z ) / 2 ) );
//EvtComplex BB=0.5*(expL+expH); // <B0|B0(t)>
//EvtComplex barBB=_qoverp*0.5*(expL-expH); // <B0bar|B0(t)>
//EvtComplex BbarB=_poverq*0.5*(expL-expH); // <B0|B0bar(t)>
//EvtComplex barBbarB=BB; // <B0bar|B0bar(t)>
// FS redefinition of these guys... (See BAD #188 eq.35 for ref.)
// q/p is taken as in the BaBar Phys. Book (opposite sign wrt ref.)
EvtComplex BB = gp + _z * gm; // <B0|B0(t)>
EvtComplex barBB = sqz * _qoverp * gm; // <B0bar|B0(t)>
EvtComplex BbarB = sqz * _poverq * gm; // <B0|B0bar(t)>
EvtComplex barBbarB = gp - _z * gm; // <B0bar|B0bar(t)>
if ( !flip ) {
if ( other_b == B0B || other_b == B0Bs ) {
//at t=0 we have a B0
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "B0B"<<endl;
amp = BB * _A_f + barBB * _Abar_f;
//std::cout << "noflip B0B tag:"<<amp<<std::endl;
//amp=0.0;
}
if ( other_b == B0 || other_b == B0s ) {
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "B0"<<endl;
amp = BbarB * _A_f + barBbarB * _Abar_f;
}
} else {
if ( other_b == B0 || other_b == B0s ) {
amp = BbarB * _A_fbar + barBbarB * _Abar_fbar;
//std::cout << "flip B0 tag:"<<amp<<std::endl;
//amp=0.0;
}
if ( other_b == B0B || other_b == B0Bs ) {
amp = BB * _A_fbar + barBB * _Abar_fbar;
}
}
EvtVector4R p4_parent = p->getP4Restframe();
double m_parent = p4_parent.mass();
EvtSpinType::spintype d2type = EvtPDL::getSpinType( getDaug( 1 ) );
EvtVector4R momv;
EvtVector4R moms;
if ( d2type == EvtSpinType::SCALAR ) {
d2type = EvtPDL::getSpinType( getDaug( 0 ) );
d = p->getDaug( 0 );
momv = d->getP4();
moms = p->getDaug( 1 )->getP4();
} else {
d = p->getDaug( 1 );
momv = d->getP4();
moms = p->getDaug( 0 )->getP4();
}
if ( d2type == EvtSpinType::SCALAR ) {
vertex( amp );
}
if ( d2type == EvtSpinType::VECTOR ) {
double norm = momv.mass() / ( momv.d3mag() * p->mass() );
//std::cout << amp << " " << norm << " " << p4_parent << d->getP4()<< std::endl;
// std::cout << EvtPDL::name(d->getId()) << " " << EvtPDL::name(p->getDaug(0)->getId()) <<
// " 1and2 " << EvtPDL::name(p->getDaug(1)->getId()) << std::endl;
//std::cout << d->eps(0) << std::endl;
//std::cout << d->epsParent(0) << std::endl;
vertex( 0, amp * norm * p4_parent * ( d->epsParent( 0 ) ) );
vertex( 1, amp * norm * p4_parent * ( d->epsParent( 1 ) ) );
vertex( 2, amp * norm * p4_parent * ( d->epsParent( 2 ) ) );
}
if ( d2type == EvtSpinType::TENSOR ) {
double norm = d->mass() * d->mass() /
( m_parent * d->getP4().d3mag() * d->getP4().d3mag() );
vertex( 0, amp * norm * d->epsTensorParent( 0 ).cont1( p4_parent ) *
p4_parent );
vertex( 1, amp * norm * d->epsTensorParent( 1 ).cont1( p4_parent ) *
p4_parent );
vertex( 2, amp * norm * d->epsTensorParent( 2 ).cont1( p4_parent ) *
p4_parent );
vertex( 3, amp * norm * d->epsTensorParent( 3 ).cont1( p4_parent ) *
p4_parent );
vertex( 4, amp * norm * d->epsTensorParent( 4 ).cont1( p4_parent ) *
p4_parent );
}
return;
}
std::string EvtSSDCP::getParamName( int i )
{
switch ( i ) {
case 0:
return "deltaM";
case 1:
return "deltaGammaOverGamma";
case 2:
return "qOverP";
case 3:
return "qOverPPhase";
case 4:
return "Af";
case 5:
return "AfPhase";
case 6:
return "Abarf";
case 7:
return "AbarfPhase";
case 8:
return "Afbar";
case 9:
return "AfbarPhase";
case 10:
return "Abarfbar";
case 11:
return "AbarfbarPhase";
case 12:
return "Z";
case 13:
return "ZPhase";
default:
return "";
}
}
std::string EvtSSDCP::getParamDefault( int i )
{
switch ( i ) {
case 3:
return "0.0";
case 4:
return "1.0";
case 5:
return "0.0";
case 6:
return "1.0";
case 7:
return "0.0";
default:
return "";
}
}
diff --git a/src/EvtGenModels/EvtSSD_DirectCP.cpp b/src/EvtGenModels/EvtSSD_DirectCP.cpp
index c6d4f78..766f2f1 100644
--- a/src/EvtGenModels/EvtSSD_DirectCP.cpp
+++ b/src/EvtGenModels/EvtSSD_DirectCP.cpp
@@ -1,193 +1,190 @@
-// Generation of direct CP violation in hadronic environment
-// Patrick Robbe, LHCb, 08 Nov 2006
-//
#include "EvtGenModels/EvtSSD_DirectCP.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
std::string EvtSSD_DirectCP::getName()
{
return "SSD_DirectCP";
}
EvtDecayBase* EvtSSD_DirectCP::clone()
{
return new EvtSSD_DirectCP;
}
void EvtSSD_DirectCP::init()
{
// check that there is 1 argument and 2-body decay
checkNArg( 1 );
checkNDaug( 2 );
EvtSpinType::spintype d1type = EvtPDL::getSpinType( getDaug( 0 ) );
EvtSpinType::spintype d2type = EvtPDL::getSpinType( getDaug( 1 ) );
if ( ( !( d1type == EvtSpinType::SCALAR || d2type == EvtSpinType::SCALAR ) ) ||
( !( ( d2type == EvtSpinType::SCALAR ) ||
( d2type == EvtSpinType::VECTOR ) ||
( d2type == EvtSpinType::TENSOR ) ) ) ||
( !( ( d1type == EvtSpinType::SCALAR ) ||
( d1type == EvtSpinType::VECTOR ) ||
( d1type == EvtSpinType::TENSOR ) ) ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtSSD_DirectCP generator expected "
<< "one of the daugters to be a scalar, "
<< "the other either scalar, vector, or tensor, "
<< "found:" << EvtPDL::name( getDaug( 0 ) ).c_str() << " and "
<< EvtPDL::name( getDaug( 1 ) ).c_str() << std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << std::endl;
::abort();
}
_acp = getArg( 0 ); // A_CP defined as A_CP = (BR(fbar)-BR(f))/(BR(fbar)+BR(f))
}
void EvtSSD_DirectCP::initProbMax()
{
double theProbMax = 1.;
EvtSpinType::spintype d2type = EvtPDL::getSpinType( getDaug( 1 ) );
EvtSpinType::spintype d1type = EvtPDL::getSpinType( getDaug( 0 ) );
if ( d1type == EvtSpinType::TENSOR || d2type == EvtSpinType::TENSOR )
theProbMax *= 10;
setProbMax( theProbMax );
}
void EvtSSD_DirectCP::decay( EvtParticle* p )
{
bool flip = false;
EvtId daugs[2];
// decide it is B or Bbar:
if ( EvtRandom::Flat( 0., 1. ) < ( ( 1. - _acp ) / 2. ) ) {
// it is a B
if ( EvtPDL::getStdHep( getParentId() ) < 0 )
flip = true;
} else {
// it is a Bbar
if ( EvtPDL::getStdHep( getParentId() ) > 0 )
flip = true;
}
if ( flip ) {
if ( ( isB0Mixed( p ) ) || ( isBsMixed( p ) ) ) {
p->getParent()->setId( EvtPDL::chargeConj( p->getParent()->getId() ) );
p->setId( EvtPDL::chargeConj( p->getId() ) );
} else {
p->setId( EvtPDL::chargeConj( p->getId() ) );
}
}
if ( !flip ) {
daugs[0] = getDaug( 0 );
daugs[1] = getDaug( 1 );
} else {
daugs[0] = EvtPDL::chargeConj( getDaug( 0 ) );
daugs[1] = EvtPDL::chargeConj( getDaug( 1 ) );
}
EvtParticle* d;
p->initializePhaseSpace( 2, daugs );
EvtVector4R p4_parent = p->getP4Restframe();
double m_parent = p4_parent.mass();
EvtSpinType::spintype d2type = EvtPDL::getSpinType( getDaug( 1 ) );
EvtVector4R momv;
EvtVector4R moms;
if ( d2type == EvtSpinType::SCALAR ) {
d2type = EvtPDL::getSpinType( getDaug( 0 ) );
d = p->getDaug( 0 );
momv = d->getP4();
moms = p->getDaug( 1 )->getP4();
} else {
d = p->getDaug( 1 );
momv = d->getP4();
moms = p->getDaug( 0 )->getP4();
}
if ( d2type == EvtSpinType::SCALAR ) {
vertex( 1. );
}
if ( d2type == EvtSpinType::VECTOR ) {
double norm = momv.mass() / ( momv.d3mag() * p->mass() );
vertex( 0, norm * p4_parent * ( d->epsParent( 0 ) ) );
vertex( 1, norm * p4_parent * ( d->epsParent( 1 ) ) );
vertex( 2, norm * p4_parent * ( d->epsParent( 2 ) ) );
}
if ( d2type == EvtSpinType::TENSOR ) {
double norm = d->mass() * d->mass() /
( m_parent * d->getP4().d3mag() * d->getP4().d3mag() );
vertex( 0, norm * d->epsTensorParent( 0 ).cont1( p4_parent ) * p4_parent );
vertex( 1, norm * d->epsTensorParent( 1 ).cont1( p4_parent ) * p4_parent );
vertex( 2, norm * d->epsTensorParent( 2 ).cont1( p4_parent ) * p4_parent );
vertex( 3, norm * d->epsTensorParent( 3 ).cont1( p4_parent ) * p4_parent );
vertex( 4, norm * d->epsTensorParent( 4 ).cont1( p4_parent ) * p4_parent );
}
}
bool EvtSSD_DirectCP::isB0Mixed( EvtParticle* p )
{
if ( !( p->getParent() ) )
return false;
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
if ( ( p->getId() != B0 ) && ( p->getId() != B0B ) )
return false;
if ( ( p->getParent()->getId() == B0 ) || ( p->getParent()->getId() == B0B ) )
return true;
return false;
}
bool EvtSSD_DirectCP::isBsMixed( EvtParticle* p )
{
if ( !( p->getParent() ) )
return false;
static EvtId BS0 = EvtPDL::getId( "B_s0" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
if ( ( p->getId() != BS0 ) && ( p->getId() != BSB ) )
return false;
if ( ( p->getParent()->getId() == BS0 ) || ( p->getParent()->getId() == BSB ) )
return true;
return false;
}
std::string EvtSSD_DirectCP::getParamName( int i )
{
switch ( i ) {
case 0:
return "ACP";
default:
return "";
}
}
diff --git a/src/EvtGenModels/EvtSSSCP.cpp b/src/EvtGenModels/EvtSSSCP.cpp
index e8b9d31..360ac3f 100644
--- a/src/EvtGenModels/EvtSSSCP.cpp
+++ b/src/EvtGenModels/EvtSSSCP.cpp
@@ -1,139 +1,119 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSSSCP.cc
-//
-// Description: Routine to decay scalar -> 2 scalars
-//
-// Modification history:
-//
-// RYD November 24, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSSSCP.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
std::string EvtSSSCP::getName()
{
return "SSS_CP";
}
EvtDecayBase* EvtSSSCP::clone()
{
return new EvtSSSCP;
}
void EvtSSSCP::init()
{
// check that there are 7 arguments
checkNArg( 7 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
}
void EvtSSSCP::initProbMax()
{
//This is probably not quite right, but it should do as a start...
//Anders
setProbMax( 2 * ( getArg( 3 ) * getArg( 3 ) + getArg( 5 ) * getArg( 5 ) ) );
}
void EvtSSSCP::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
double t;
EvtId other_b;
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.5 );
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtComplex amp;
EvtComplex A, Abar;
A = EvtComplex( getArg( 3 ) * cos( getArg( 4 ) ),
getArg( 3 ) * sin( getArg( 4 ) ) );
Abar = EvtComplex( getArg( 5 ) * cos( getArg( 6 ) ),
getArg( 5 ) * sin( getArg( 6 ) ) );
if ( other_b == B0B ) {
amp = A * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
EvtComplex( cos( -2.0 * getArg( 0 ) ), sin( -2.0 * getArg( 0 ) ) ) *
getArg( 2 ) * EvtComplex( 0.0, 1.0 ) * Abar *
sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
}
if ( other_b == B0 ) {
amp = A * EvtComplex( cos( 2.0 * getArg( 0 ) ), sin( 2.0 * getArg( 0 ) ) ) *
EvtComplex( 0.0, 1.0 ) *
sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
getArg( 2 ) * Abar * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
}
vertex( amp );
return;
}
std::string EvtSSSCP::getParamName( int i )
{
switch ( i ) {
case 0:
return "weakPhase";
case 1:
return "deltaM";
case 2:
return "finalStateCP";
case 3:
return "Af";
case 4:
return "AfPhase";
case 5:
return "Abarf";
case 6:
return "AbarfPhase";
default:
return "";
}
}
std::string EvtSSSCP::getParamDefault( int i )
{
switch ( i ) {
case 3:
return "1.0";
case 4:
return "0.0";
case 5:
return "1.0";
case 6:
return "0.0";
default:
return "";
}
}
diff --git a/src/EvtGenModels/EvtSSSCPT.cpp b/src/EvtGenModels/EvtSSSCPT.cpp
index 554ecad..1331376 100644
--- a/src/EvtGenModels/EvtSSSCPT.cpp
+++ b/src/EvtGenModels/EvtSSSCPT.cpp
@@ -1,95 +1,75 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSSSCPT.cc
-//
-// Description: Routine to decay scalar -> 2 scalars (CPT)
-//
-// Modification history:
-//
-// SHY April 28, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSSSCPT.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
std::string EvtSSSCPT::getName()
{
return "SSS_CPT";
}
EvtDecayBase* EvtSSSCPT::clone()
{
return new EvtSSSCPT;
}
void EvtSSSCPT::init()
{
// check that there are 8 arguments
checkNArg( 8 );
checkNDaug( 2 );
}
void EvtSSSCPT::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
double t;
EvtId other_b;
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.5 );
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtComplex amp;
EvtComplex A, Abar;
EvtComplex P, Q, D, Im;
P = EvtComplex( cos( -getArg( 0 ) ), sin( -getArg( 0 ) ) );
Q = EvtComplex( cos( getArg( 0 ) ), sin( getArg( 0 ) ) );
D = EvtComplex( getArg( 6 ) * cos( getArg( 7 ) ),
getArg( 6 ) * sin( getArg( 7 ) ) );
Im = EvtComplex( 0.0, 1.0 );
A = EvtComplex( getArg( 2 ) * cos( getArg( 3 ) ),
getArg( 2 ) * sin( getArg( 3 ) ) );
Abar = EvtComplex( getArg( 4 ) * cos( getArg( 5 ) ),
getArg( 4 ) * sin( getArg( 5 ) ) );
if ( other_b == B0B ) {
amp = A * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
Im * sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) *
( Q / P * A + 2.0 * D * Abar );
}
if ( other_b == B0 ) {
amp = Abar * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
Im * sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) *
( P / Q * A - 2.0 * D * Abar );
}
vertex( amp );
return;
}
diff --git a/src/EvtGenModels/EvtSSSCPpng.cpp b/src/EvtGenModels/EvtSSSCPpng.cpp
index 42fdcd7..f3942bd 100644
--- a/src/EvtGenModels/EvtSSSCPpng.cpp
+++ b/src/EvtGenModels/EvtSSSCPpng.cpp
@@ -1,164 +1,143 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSSSCPpng.cc
-//
-// Description: Routine to decay B -> 2 scalars taking into account penguin
-// contributions (assuming single quark dominance for penguins)
-//
-// Modification history:
-//
-// RYD/NK December 3, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSSSCPpng.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
std::string EvtSSSCPpng::getName()
{
return "SSS_CP_PNG";
}
EvtDecayBase* EvtSSSCPpng::clone()
{
return new EvtSSSCPpng;
}
void EvtSSSCPpng::init()
{
// check that there are 7 arguments
checkNArg( 7 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
}
void EvtSSSCPpng::initProbMax()
{
setProbMax( getArg( 5 ) * getArg( 5 ) * ( 1 + getArg( 6 ) * getArg( 6 ) ) );
}
void EvtSSSCPpng::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
double t;
EvtId other_b;
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtComplex amp;
EvtComplex A, Abar;
//EvtComplex ACC, AbarCC;
// assume single (top) quark dominance for the penguin.
// old: a0=alpha, a1=dm, a2=1, a3=1, a4=0, a5=1, a6=0
// new: a0=beta, a1=gamma, a2=delta, a3=dm, a4=1, a5=1=A_{T}, a6=A_{P}/A_{T}
// e.g., for B -> pi pi
// A_{T} = |V_{ub} V_{ud}| T
// A_{P} = |V_{tb} V_{td}| P
// P and T are purely hadronic matrix elements
// P/T = 0.055, A_{P}/A_{T} = 0.2 (see Marrocchesi and Paver, hep-ph/9702353)
// A = A_{T}( exp(i(beta+gamma)) + (A_{P}/A_{T}) exp(i(delta))
// A_bar = same, except for the sign of the weak phases
// here, delta = delta_{p}-delta_{t} (rel. strong phase)
A = getArg( 5 ) *
( EvtComplex( cos( -getArg( 0 ) - getArg( 1 ) ),
sin( -getArg( 0 ) - getArg( 1 ) ) ) +
getArg( 6 ) * EvtComplex( cos( getArg( 2 ) ), sin( getArg( 2 ) ) ) );
Abar = getArg( 5 ) * ( EvtComplex( cos( getArg( 0 ) + getArg( 1 ) ),
sin( getArg( 0 ) + getArg( 1 ) ) ) +
getArg( 6 ) * EvtComplex( cos( getArg( 2 ) ),
sin( getArg( 2 ) ) ) );
// get fraction of B0 tags with these amplitudes
//double xd = 0.65;
double ratio = 1 / ( 1 + 0.65 * 0.65 );
EvtComplex rf, rbarf;
rf = EvtComplex( cos( 2.0 * getArg( 0 ) ), sin( 2.0 * getArg( 0 ) ) ) *
Abar / A;
rbarf = EvtComplex( 1.0 ) / rf;
double A2 = real( A ) * real( A ) + imag( A ) * imag( A );
double Abar2 = real( Abar ) * real( Abar ) + imag( Abar ) * imag( Abar );
double rf2 = real( rf ) * real( rf ) + imag( rf ) * imag( rf );
double rbarf2 = real( rbarf ) * real( rbarf ) + imag( rbarf ) * imag( rbarf );
//fraction of B0 _tags_
double fract = ( Abar2 * ( 1 + rbarf2 + ( 1 - rbarf2 ) * ratio ) ) /
( Abar2 * ( 1 + rbarf2 + ( 1 - rbarf2 ) * ratio ) +
A2 * ( 1 + rf2 + ( 1 - rf2 ) * ratio ) );
EvtCPUtil::getInstance()->OtherB( p, t, other_b, fract );
//this method works just as well -- NK
//randomly generate the tag (B0 or B0B)
// double tag = EvtRandom::Flat(0.0,1.0);
// if (tag < 0.5) {
//
// EvtCPUtil::OtherB(p,t,other_b,1.0);
// other_b = B0;
// }
// else {
//
// EvtCPUtil::OtherB(p,t,other_b,0.0);
// other_b = B0B;
// }
//mixing angle = -beta
if ( other_b == B0B ) {
amp = A * cos( getArg( 3 ) * t / ( 2 * EvtConst::c ) ) +
EvtComplex( cos( 2.0 * getArg( 0 ) ), sin( 2.0 * getArg( 0 ) ) ) *
getArg( 4 ) * EvtComplex( 0.0, 1.0 ) * Abar *
sin( getArg( 3 ) * t / ( 2 * EvtConst::c ) );
}
if ( other_b == B0 ) {
amp = A *
EvtComplex( cos( -2.0 * getArg( 0 ) ),
sin( -2.0 * getArg( 0 ) ) ) *
EvtComplex( 0.0, 1.0 ) *
sin( getArg( 3 ) * t / ( 2 * EvtConst::c ) ) +
getArg( 4 ) * Abar * cos( getArg( 3 ) * t / ( 2 * EvtConst::c ) );
}
vertex( amp );
return;
}
diff --git a/src/EvtGenModels/EvtSTS.cpp b/src/EvtGenModels/EvtSTS.cpp
index 2c3e264..b12f9d3 100644
--- a/src/EvtGenModels/EvtSTS.cpp
+++ b/src/EvtGenModels/EvtSTS.cpp
@@ -1,86 +1,65 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSTS.cc
-//
-// Description: Routine to decay scalar -> tensor scalar.
-//
-//
-// Modification history:
-//
-// RYD Aug 21, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSTS.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
std::string EvtSTS::getName()
{
return "STS";
}
EvtDecayBase* EvtSTS::clone()
{
return new EvtSTS;
}
void EvtSTS::initProbMax()
{
setProbMax( 20.0 );
}
void EvtSTS::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::TENSOR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
}
void EvtSTS::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle* t1 = p->getDaug( 0 );
EvtVector4R momt = t1->getP4();
EvtVector4R moms = p->getDaug( 1 )->getP4();
double masst = t1->mass();
EvtVector4R p4_parent = momt + moms;
double m_parent = p4_parent.mass();
double norm = masst * masst / ( m_parent * momt.d3mag() * momt.d3mag() );
vertex( 0, norm * t1->epsTensorParent( 0 ).cont1( p4_parent ) * p4_parent );
vertex( 1, norm * t1->epsTensorParent( 1 ).cont1( p4_parent ) * p4_parent );
vertex( 2, norm * t1->epsTensorParent( 2 ).cont1( p4_parent ) * p4_parent );
vertex( 3, norm * t1->epsTensorParent( 3 ).cont1( p4_parent ) * p4_parent );
vertex( 4, norm * t1->epsTensorParent( 4 ).cont1( p4_parent ) * p4_parent );
return;
}
diff --git a/src/EvtGenModels/EvtSTSCP.cpp b/src/EvtGenModels/EvtSTSCP.cpp
index c8b83c7..83ea4a8 100644
--- a/src/EvtGenModels/EvtSTSCP.cpp
+++ b/src/EvtGenModels/EvtSTSCP.cpp
@@ -1,166 +1,145 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSTSCP.cc
-//
-// Description: Routine to decay scalar -> tensor scalar
-// and has CP violation.
-//
-// Modification history:
-//
-// RYD June 19, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSTSCP.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
std::string EvtSTSCP::getName()
{
return "STS_CP";
}
void EvtSTSCP::initProbMax()
{
//This is probably not quite right, but it should do as a start...
//Anders
setProbMax( 20 * ( getArg( 3 ) * getArg( 3 ) + getArg( 5 ) * getArg( 5 ) ) );
}
EvtDecayBase* EvtSTSCP::clone()
{
return new EvtSTSCP;
}
void EvtSTSCP::init()
{
// check that there are 7 arguments
checkNArg( 7 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::TENSOR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
}
void EvtSTSCP::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
double t;
EvtId other_b;
EvtParticle* t1;
p->initializePhaseSpace( getNDaug(), getDaugs() );
t1 = p->getDaug( 0 );
EvtVector4R momt = t1->getP4();
EvtVector4R moms = p->getDaug( 1 )->getP4();
double masst = t1->mass();
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.5 );
double m_parent = p->mass();
EvtComplex amp;
EvtComplex A, Abar;
A = EvtComplex( getArg( 3 ) * cos( getArg( 4 ) ),
getArg( 3 ) * sin( getArg( 4 ) ) );
Abar = EvtComplex( getArg( 5 ) * cos( getArg( 6 ) ),
getArg( 5 ) * sin( getArg( 6 ) ) );
if ( other_b == B0B ) {
amp = A * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
EvtComplex( cos( -2.0 * getArg( 0 ) ), sin( -2.0 * getArg( 0 ) ) ) *
getArg( 2 ) * EvtComplex( 0.0, 1.0 ) * Abar *
sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
}
if ( other_b == B0 ) {
amp = A * EvtComplex( cos( 2.0 * getArg( 0 ) ), sin( 2.0 * getArg( 0 ) ) ) *
EvtComplex( 0.0, 1.0 ) *
sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
getArg( 2 ) * Abar * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
}
EvtVector4R p4_parent;
p4_parent = momt + moms;
double norm = masst * masst / ( m_parent * momt.d3mag() * momt.d3mag() );
vertex( 0, amp * norm * t1->epsTensorParent( 0 ).cont1( p4_parent ) *
p4_parent );
vertex( 1, amp * norm * t1->epsTensorParent( 1 ).cont1( p4_parent ) *
p4_parent );
vertex( 2, amp * norm * t1->epsTensorParent( 2 ).cont1( p4_parent ) *
p4_parent );
vertex( 3, amp * norm * t1->epsTensorParent( 3 ).cont1( p4_parent ) *
p4_parent );
vertex( 4, amp * norm * t1->epsTensorParent( 4 ).cont1( p4_parent ) *
p4_parent );
return;
}
std::string EvtSTSCP::getParamName( int i )
{
switch ( i ) {
case 0:
return "weakPhase";
case 1:
return "deltaM";
case 2:
return "finalStateCP";
case 3:
return "Af";
case 4:
return "AfPhase";
case 5:
return "Abarf";
case 6:
return "AbarfPhase";
default:
return "";
}
}
std::string EvtSTSCP::getParamDefault( int i )
{
switch ( i ) {
case 3:
return "1.0";
case 4:
return "0.0";
case 5:
return "1.0";
case 6:
return "0.0";
default:
return "";
}
}
diff --git a/src/EvtGenModels/EvtSVP.cpp b/src/EvtGenModels/EvtSVP.cpp
index 71668ea..898948a 100644
--- a/src/EvtGenModels/EvtSVP.cpp
+++ b/src/EvtGenModels/EvtSVP.cpp
@@ -1,190 +1,167 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSVP.cc
-//
-// Description: Routine to implement radiative decay
-// chi_c0 -> psi gamma
-// chi_c0 -> psi ell ell
-//
-// Modification history:
-// AVL Jul 6, 2012: chi_c0 -> gamma psi mode created
-// AVL Oct 10, 2017: chi_c0 -> psi mu mu mode created
-// AVL Nov 9 2017: models joined
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSVP.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <cmath>
std::string EvtSVP::getName()
{
return "SVP";
}
EvtDecayBase* EvtSVP::clone()
{
return new EvtSVP;
}
void EvtSVP::decay_2body( EvtParticle* root )
{
root->initializePhaseSpace( getNDaug(), getDaugs() );
// Photon is the first particle and psi is the second
// to ensure decay file backwards compatibility
EvtParticle* photon = root->getDaug( 0 );
EvtParticle* psi = root->getDaug( 1 );
EvtVector4R p = psi->getP4(), // psi momentum
k = photon->getP4(); // Photon momentum
bool validAmp( true );
double kp = k * p;
if ( fabs( kp ) < 1e-10 ) {
validAmp = false;
}
for ( int iPsi = 0; iPsi < 3; iPsi++ ) {
EvtVector4C epsPsi = psi->epsParent( iPsi ).conj();
for ( int iGamma = 0; iGamma < 2; iGamma++ ) {
EvtVector4C epsGamma = photon->epsParentPhoton( iGamma ).conj();
EvtComplex amp( 0.0, 0.0 );
if ( validAmp ) {
amp = ( epsPsi * epsGamma ) -
( epsPsi * k ) * ( epsGamma * p ) / kp;
}
vertex( iGamma, iPsi, amp );
}
}
}
void EvtSVP::decay_3body( EvtParticle* root )
{
root->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle* psi = root->getDaug( 0 );
EvtParticle* mup = root->getDaug( 1 );
EvtParticle* mum = root->getDaug( 2 );
EvtVector4R p = psi->getP4(), // psi momentum
k1 = mup->getP4(), // mu+ momentum
k2 = mum->getP4(), // mu- momentum
k = k1 + k2; // photon momentum
double kSq = k * k;
// The decay amplitude needs four-vector products. Make sure we have
// valid values for these, otherwise set the amplitude to zero.
// We need to set _amp2 (EvtDecayAmp) via the vertex() function call
// even when the amplitude is zero, otherwise the amplitude from the
// previous accepted event will be used, potentially leading to biases
// Selection on k^2 to avoid inefficient generation for the electron modes
bool validAmp( true );
if ( kSq < 1e-3 ) {
validAmp = false;
}
// Extra checks to make sure we are not dividing by zero
double kp = k * p;
if ( fabs( kp ) < 1e-10 ) {
validAmp = false;
}
double dSq = delta * delta;
double dSqDenom = dSq - kSq;
if ( fabs( dSqDenom ) < 1e-10 ) {
validAmp = false;
}
double factor( 1.0 );
if ( validAmp ) {
factor = dSq / ( dSqDenom * kSq );
}
// Calculate the amplitude terms, looping over the psi and lepton states
for ( int iPsi = 0; iPsi < 3; iPsi++ ) {
EvtVector4C epsPsi = psi->epsParent( iPsi ).conj();
for ( int iMplus = 0; iMplus < 2; iMplus++ ) {
EvtDiracSpinor spMplus = mup->spParent( iMplus );
for ( int iMminus = 0; iMminus < 2; iMminus++ ) {
EvtDiracSpinor spMminus = mum->spParent( iMminus );
EvtVector4C epsGamma = EvtLeptonVCurrent( spMplus, spMminus );
EvtComplex amp( 0.0, 0.0 );
if ( validAmp ) {
amp = ( epsPsi * epsGamma ) -
( epsPsi * k ) * ( epsGamma * p ) / kp;
}
amp *= factor;
// Set the amplitude matrix element using the vertex function
vertex( iPsi, iMplus, iMminus, amp );
}
}
}
}
void EvtSVP::decay( EvtParticle* root )
{
if ( getNDaug() == 2 ) {
decay_2body( root );
} else if ( getNDaug() == 3 ) {
decay_3body( root );
}
}
void EvtSVP::init()
{
checkSpinParent( EvtSpinType::SCALAR );
if ( getNDaug() == 2 ) { // chi -> gamma psi radiative mode
checkNArg( 0 );
checkNDaug( 2 );
checkSpinDaughter( 0, EvtSpinType::PHOTON );
checkSpinDaughter( 1, EvtSpinType::VECTOR );
} else if ( getNDaug() == 3 ) { // chi -> psi lepton lepton
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::DIRAC );
checkNArg( 1 );
delta = getArg( 0 );
}
}
void EvtSVP::initProbMax()
{
if ( getNDaug() == 2 ) {
setProbMax( 2.2 );
} else if ( getNDaug() == 3 ) {
const EvtId daugId = getDaug( 1 );
if ( daugId == EvtPDL::getId( "mu+" ) ||
daugId == EvtPDL::getId( "mu-" ) ) {
setProbMax( 130.0 );
} else if ( daugId == EvtPDL::getId( "e+" ) ||
daugId == EvtPDL::getId( "e-" ) ) {
setProbMax( 4100.0 );
}
}
}
diff --git a/src/EvtGenModels/EvtSVPCP.cpp b/src/EvtGenModels/EvtSVPCP.cpp
index 85123bf..2cb6697 100644
--- a/src/EvtGenModels/EvtSVPCP.cpp
+++ b/src/EvtGenModels/EvtSVPCP.cpp
@@ -1,205 +1,185 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtSVPCP.cc
-//
-// Description: Routine to decay scalar -> vectors+photon
-// including CP violation effects
-//
-// Modification history:
-//
-// Maurizio pierini Nov 11, 2003 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSVPCP.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor3C.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <stdlib.h>
#include <string>
std::string EvtSVPCP::getName()
{
return "SVP_CP";
}
EvtDecayBase* EvtSVPCP::clone()
{
return new EvtSVPCP;
}
void EvtSVPCP::initProbMax()
{
setProbMax( 2 * ( getArg( 3 ) * getArg( 3 ) + getArg( 5 ) * getArg( 5 ) ) );
}
void EvtSVPCP::init()
{
// check that there are 7 arguments
checkNArg( 7 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::PHOTON );
}
void EvtSVPCP::decay( EvtParticle* p )
{
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
double t;
EvtId other_b;
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.5 );
EvtComplex G1P, G1M, G1_T_even, G1_T_odd;
double norm = getArg( 3 ) * getArg( 3 ) + getArg( 5 ) * getArg( 5 );
G1P = EvtComplex( getArg( 3 ) * cos( getArg( 4 ) ) / norm,
getArg( 3 ) * sin( getArg( 4 ) ) / norm );
G1M = EvtComplex( getArg( 5 ) * cos( getArg( 6 ) ) / norm,
getArg( 5 ) * sin( getArg( 6 ) ) / norm );
G1_T_even = ( G1P + G1M ) / sqrt( 2.0 );
G1_T_odd = ( G1P - G1M ) / sqrt( 2.0 );
EvtComplex lambda_km = EvtComplex( cos( -2 * getArg( 0 ) ),
sin( -2 * getArg( 0 ) ) );
double cdmt = cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
double sdmt = sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
EvtComplex cG1_T_even, cG1_T_odd;
if ( other_b == B0B ) {
cG1_T_even = G1_T_even *
( cdmt + lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
cG1_T_odd = G1_T_odd *
( cdmt - lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
}
if ( other_b == B0 ) {
cG1_T_even = G1_T_even *
( cdmt + ( 1.0 / lambda_km ) *
EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
cG1_T_odd = -G1_T_odd *
( cdmt - ( 1.0 / lambda_km ) *
EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
}
EvtComplex hp, hm, h0;
// This part is adopted from EvtSVVHel and since there is
// a photon that can not have helicity 0 this is put in by
// setting the h0 amplitude to 0.
hm = ( cG1_T_even - cG1_T_odd ) / sqrt( 2.0 );
hp = ( cG1_T_even + cG1_T_odd ) / sqrt( 2.0 );
h0 = EvtComplex( 0.0, 0.0 );
EvtParticle *v1, *ph;
p->initializePhaseSpace( getNDaug(), getDaugs() );
v1 = p->getDaug( 0 );
ph = p->getDaug( 1 );
EvtVector4R momv1 = v1->getP4();
EvtVector4R momph = ph->getP4();
EvtTensor4C d, g;
g.setdiag( 1.0, -1.0, -1.0, -1.0 );
EvtVector4R v, vp;
v = momv1 / momv1.d3mag();
vp = ( momv1 + momph ) / ( momv1 + momph ).mass();
d = ( ( 1.0 / sqrt( 3.0 ) ) * ( h0 - ( hp + hm ) ) * ( -1.0 / sqrt( 3.0 ) ) ) *
g +
( ( 1.0 / sqrt( 2.0 ) ) * ( hp - hm ) * EvtComplex( 0.0, 1.0 ) *
( sqrt( 1.0 / 2.0 ) ) ) *
dual( EvtGenFunctions::directProd( v, vp ) ) +
( sqrt( 2.0 / 3.0 ) * ( h0 + 0.5 * ( hp + hm ) ) * sqrt( 3.0 / 2.0 ) ) *
( EvtGenFunctions::directProd( v, v ) + ( 1.0 / 3.0 ) * g );
EvtVector4C ep0, ep1, ep2;
ep0 = d.cont1( v1->eps( 0 ).conj() );
ep1 = d.cont1( v1->eps( 1 ).conj() );
ep2 = d.cont1( v1->eps( 2 ).conj() );
EvtVector4C ep20, ep21, ep22;
ep20 = ph->epsParentPhoton( 0 ).conj();
ep21 = ph->epsParentPhoton( 1 ).conj();
vertex( 0, 0, ep0 * ep20 );
vertex( 0, 1, ep0 * ep21 );
vertex( 1, 0, ep1 * ep20 );
vertex( 1, 1, ep1 * ep21 );
vertex( 2, 0, ep2 * ep20 );
vertex( 2, 1, ep2 * ep21 );
return;
}
std::string EvtSVPCP::getParamName( int i )
{
switch ( i ) {
case 0:
return "weakPhase";
case 1:
return "deltaM";
case 2:
return "finalStateCP";
case 3:
return "Af";
case 4:
return "AfPhase";
case 5:
return "Abarf";
case 6:
return "AbarfPhase";
default:
return "";
}
}
std::string EvtSVPCP::getParamDefault( int i )
{
switch ( i ) {
case 3:
return "1.0";
case 4:
return "0.0";
case 5:
return "1.0";
case 6:
return "0.0";
default:
return "";
}
}
diff --git a/src/EvtGenModels/EvtSVPHelAmp.cpp b/src/EvtGenModels/EvtSVPHelAmp.cpp
index 56ee4d6..a324d7c 100644
--- a/src/EvtGenModels/EvtSVPHelAmp.cpp
+++ b/src/EvtGenModels/EvtSVPHelAmp.cpp
@@ -1,132 +1,110 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSVPHelAmp.cc
-//
-// Description: Routine to decay scalar -> vector + photon
-// by specifying the helicity amplitudes
-//
-// Modification history:
-//
-// RYD July 26, 1997 Module created
-// Clara Remon (Clara.Remon@ific.uv.es) September 24, 2015 Function SVPHel created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSVPHelAmp.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor3C.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector3C.hh"
#include "EvtGenBase/EvtVector3R.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
std::string EvtSVPHelAmp::getName()
{
return "SVP_HELAMP";
}
EvtDecayBase* EvtSVPHelAmp::clone()
{
return new EvtSVPHelAmp;
}
void EvtSVPHelAmp::initProbMax()
{
setProbMax( 2.0 * ( getArg( 0 ) * getArg( 0 ) + getArg( 2 ) * getArg( 2 ) ) );
}
void EvtSVPHelAmp::init()
{
// check that there are 4 arguments
checkNArg( 4 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::PHOTON );
}
void EvtSVPHelAmp::decay( EvtParticle* p )
{
SVPHel( p, _amp2, getDaug( 0 ), getDaug( 1 ),
EvtComplex( getArg( 0 ) * cos( getArg( 1 ) ),
getArg( 0 ) * sin( getArg( 1 ) ) ),
EvtComplex( getArg( 2 ) * cos( getArg( 3 ) ),
getArg( 2 ) * sin( getArg( 3 ) ) ) );
return;
}
void EvtSVPHelAmp::SVPHel( EvtParticle* parent, EvtAmp& amp, EvtId n_v1,
EvtId n_v2, const EvtComplex& hp, const EvtComplex& hm )
{
// Routine to decay a vector into a vector and scalar. Started
// by ryd on Oct 17, 1996.
// This routine is adopted from EvtSVVHel and since there is
// a photon that can not have helicity 0 this is put in by
// setting the h0 amplitude to 0.
EvtComplex h0 = EvtComplex( 0.0, 0.0 );
int tndaug = 2;
EvtId tdaug[2];
tdaug[0] = n_v1;
tdaug[1] = n_v2;
parent->initializePhaseSpace( tndaug, tdaug );
EvtParticle *v1, *v2;
v1 = parent->getDaug( 0 );
v2 = parent->getDaug( 1 );
EvtVector4R momv1 = v1->getP4();
EvtVector3R v1dir( momv1.get( 1 ), momv1.get( 2 ), momv1.get( 3 ) );
v1dir = v1dir / v1dir.d3mag();
EvtComplex a = -0.5 * ( hp + hm );
EvtComplex b = EvtComplex( 0.0, 0.5 ) * ( hp - hm );
EvtComplex c = h0 + 0.5 * ( hp + hm );
EvtTensor3C M = a * EvtTensor3C::id() + b * EvtGenFunctions::eps( v1dir ) +
c * EvtGenFunctions::directProd( v1dir, v1dir );
EvtVector3C t0 = M.cont1( v1->eps( 0 ).vec().conj() );
EvtVector3C t1 = M.cont1( v1->eps( 1 ).vec().conj() );
EvtVector3C t2 = M.cont1( v1->eps( 2 ).vec().conj() );
EvtVector3C eps0 = v2->epsParentPhoton( 0 ).vec().conj();
EvtVector3C eps1 = v2->epsParentPhoton( 1 ).vec().conj();
amp.vertex( 0, 0, t0 * eps0 );
amp.vertex( 0, 1, t0 * eps1 );
//amp.vertex(0,2,t1*eps0*0.);
amp.vertex( 1, 0, t1 * eps0 );
amp.vertex( 1, 1, t1 * eps1 );
//amp.vertex(1,2,t1*eps0*0.);
amp.vertex( 2, 0, t2 * eps0 );
amp.vertex( 2, 1, t2 * eps1 );
//amp.vertex(2,2,t1*eps0*0.);
return;
}
diff --git a/src/EvtGenModels/EvtSVPHelCPMix.cpp b/src/EvtGenModels/EvtSVPHelCPMix.cpp
index 4d15298..8ac35b8 100644
--- a/src/EvtGenModels/EvtSVPHelCPMix.cpp
+++ b/src/EvtGenModels/EvtSVPHelCPMix.cpp
@@ -1,159 +1,132 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1999 Caltech, UCSB
-//
-// Module: EvtSVPHelCPMix.cpp
-//
-// Description: The decay of a scalar Bs meson to a vector particle and a photon is
-// performed with CP violation and different widths for
-// the heavy and light states (DeltaGamma_s =! 0). E.g. Bs->phi gamma.
-//
-// Modification history:
-//
-// Clara Remon (Clara.Remon@ific.uv.es) September 24, 2015 Module EvtSVPHelCPMix created
-//
-//------------------------------------------------------------------------
-//
-// Model input arguments:
-// |H+| arg|H+| |H-| arg|H-| beta_s
-// H+ and H- don't need to be normalized.
-// beta_s in radians.
-
#include "EvtGenModels/EvtSVPHelCPMix.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtSVPHelAmp.hh"
#include <iostream>
#include <stdlib.h>
std::string EvtSVPHelCPMix::getName()
{
return "SVPHELCPMIX";
}
EvtDecayBase* EvtSVPHelCPMix::clone()
{
return new EvtSVPHelCPMix;
}
void EvtSVPHelCPMix::init()
{
// check that there are 5 arguments
checkNArg( 5 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::PHOTON );
}
void EvtSVPHelCPMix::initProbMax()
{
setProbMax( 2.0 * ( getArg( 0 ) * getArg( 0 ) + getArg( 2 ) * getArg( 2 ) ) );
}
void EvtSVPHelCPMix::decay( EvtParticle* p )
{
static EvtId BS0 = EvtPDL::getId( "B_s0" );
//static EvtId BSB = EvtPDL::getId("anti-B_s0");
//Flavour tagging of the initial state. Note that flavour mixing has already been applied out of this model
//Initial_state == 0 (Bs at the initial state) and Initial_state == 1 (Anti-Bs in the initial state)
int Initial_state( -1 );
if ( EvtCPUtil::getInstance()->isBsMixed(
p ) ) { //The decaying particle has suffered flavour mixing, thus the initial state is its antiparticle
if ( p->getId() == BS0 ) {
Initial_state = 1;
} else {
Initial_state = 0;
}
} else { //The decaying particle has NOT suffered flavour mixing, thus the initial state is itself
if ( p->getId() == BS0 ) {
Initial_state = 0;
} else {
Initial_state = 1;
}
}
static EvtId BSH = EvtPDL::getId( "B_s0H" );
static double ctauH = EvtPDL::getctau( BSH );
static double gammaH = 1.0 / ctauH;
static double deltaGamma = EvtCPUtil::getInstance()->getDeltaGamma( BS0 );
//Here we're gonna generate and set the "envelope" lifetime, so we take the longest living component (for positive deltaGamma: tauH)
//t is initialized following a e^(gammaH*t) lifetime distribution. When computing the amplitudes a factor e^(gammaH*t/2) should be substracted.
double t = -log( EvtRandom::Flat() ) *
( 1.0 / gammaH ); //This overrules the lifetimes made by the program performing the mixing (CPUtil)
if ( EvtCPUtil::getInstance()->isBsMixed( p ) ) {
p->getParent()->setLifetime( t );
} else {
p->setLifetime( t );
}
static double deltaMs = EvtCPUtil::getInstance()->getDeltaM( BS0 );
double mt = exp( -std::max( 0.0, deltaGamma ) * t / ( 2.0 * EvtConst::c ) );
double pt = exp( +std::min( 0.0, deltaGamma ) * t / ( 2.0 * EvtConst::c ) );
//Using the same sign convention as in J.P. Silva, hep-ph/0410351 (2004)
EvtComplex qp = EvtComplex( cos( -2.0 * getArg( 4 ) ),
sin( -2.0 * getArg( 4 ) ) ); // q/p=e^(-2*beta_s)
EvtComplex gplus =
( mt * EvtComplex( cos( deltaMs * t / ( 2.0 * EvtConst::c ) ),
sin( deltaMs * t / ( 2.0 * EvtConst::c ) ) ) +
pt * EvtComplex( cos( deltaMs * t / ( 2.0 * EvtConst::c ) ),
sin( -deltaMs * t / ( 2.0 * EvtConst::c ) ) ) ) /
2.0;
EvtComplex gminus =
( +mt * EvtComplex( cos( deltaMs * t / ( 2.0 * EvtConst::c ) ),
sin( deltaMs * t / ( 2.0 * EvtConst::c ) ) ) -
pt * EvtComplex( cos( deltaMs * t / ( 2.0 * EvtConst::c ) ),
sin( -deltaMs * t / ( 2.0 * EvtConst::c ) ) ) ) /
2.0;
//These should be filled with the helicity amplitudes at t=0
EvtComplex arg_hm, arg_hp;
arg_hp = EvtComplex( getArg( 0 ) * cos( getArg( 1 ) ),
getArg( 0 ) * sin( getArg( 1 ) ) );
arg_hm = EvtComplex( getArg( 2 ) * cos( getArg( 3 ) ),
getArg( 2 ) * sin( getArg( 3 ) ) );
//Time-dependent amplitudes H+(t) and H-(t) are computed for a Bs and Anti-Bs in the initial state
EvtComplex hp, hm;
if ( Initial_state == 0 ) { //These are the equations for Bs
hp = arg_hp * gplus + qp * conj( arg_hm ) * gminus;
hm = arg_hm * gplus + qp * conj( arg_hp ) * gminus;
} else if ( Initial_state == 1 ) { //The equations for Anti-Bs
hp = conj( arg_hm ) * gplus + ( 1.0 / qp ) * arg_hp * gminus;
hm = conj( arg_hp ) * gplus + ( 1.0 / qp ) * arg_hm * gminus;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Initial state was not BSB or BS0!" << std::endl;
::abort();
}
//Compute the decay amplitudes from the time-dependent helicity amplitudes
EvtSVPHelAmp::SVPHel( p, _amp2, getDaug( 0 ), getDaug( 1 ), hp, hm );
return;
}
diff --git a/src/EvtGenModels/EvtSVS.cpp b/src/EvtGenModels/EvtSVS.cpp
index 69f9f16..4818940 100644
--- a/src/EvtGenModels/EvtSVS.cpp
+++ b/src/EvtGenModels/EvtSVS.cpp
@@ -1,79 +1,59 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSVS.cc
-//
-// Description: Routine to decay scalar -> vector + scalar
-//
-// Modification history:
-//
-// RYD November 24, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSVS.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
std::string EvtSVS::getName()
{
return "SVS";
}
EvtDecayBase* EvtSVS::clone()
{
return new EvtSVS;
}
void EvtSVS::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
}
void EvtSVS::initProbMax()
{
setProbMax( 1.0 );
}
void EvtSVS::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle* v;
v = p->getDaug( 0 );
double massv = v->mass();
EvtVector4R momv = v->getP4();
EvtVector4R moms = p->getDaug( 1 )->getP4();
double m_parent = p->mass();
EvtVector4R p4_parent = momv + moms;
double norm = massv / ( momv.d3mag() * m_parent );
p4_parent = norm * p4_parent;
vertex( 0, p4_parent * ( v->epsParent( 0 ) ) );
vertex( 1, p4_parent * ( v->epsParent( 1 ) ) );
vertex( 2, p4_parent * ( v->epsParent( 2 ) ) );
return;
}
diff --git a/src/EvtGenModels/EvtSVSCP.cpp b/src/EvtGenModels/EvtSVSCP.cpp
index e48ccb1..ec2f408 100644
--- a/src/EvtGenModels/EvtSVSCP.cpp
+++ b/src/EvtGenModels/EvtSVSCP.cpp
@@ -1,154 +1,133 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSVSCP.cc
-//
-// Description: Routine to decay scalar -> vectors scalar
-// and has CP violation.
-//
-// Modification history:
-//
-// RYD Febuary 10, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSVSCP.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
std::string EvtSVSCP::getName()
{
return "SVS_CP";
}
EvtDecayBase* EvtSVSCP::clone()
{
return new EvtSVSCP;
}
void EvtSVSCP::init()
{
// check that there are 7 arguments
checkNArg( 7 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
}
void EvtSVSCP::initProbMax()
{
//This is probably not quite right, but it should do as a start...
//Anders
setProbMax( 2 * ( getArg( 3 ) * getArg( 3 ) + getArg( 5 ) * getArg( 5 ) ) );
}
void EvtSVSCP::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
EvtParticle* v;
p->initializePhaseSpace( getNDaug(), getDaugs() );
v = p->getDaug( 0 );
EvtVector4R momv = v->getP4();
EvtVector4R moms = p->getDaug( 1 )->getP4();
double massv = v->mass();
double t;
EvtId other_b;
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.5 );
EvtComplex amp;
EvtComplex A, Abar;
A = EvtComplex( getArg( 3 ) * cos( getArg( 4 ) ),
getArg( 3 ) * sin( getArg( 4 ) ) );
Abar = EvtComplex( getArg( 5 ) * cos( getArg( 6 ) ),
getArg( 5 ) * sin( getArg( 6 ) ) );
if ( other_b == B0B ) {
amp = A * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
EvtComplex( cos( -2.0 * getArg( 0 ) ), sin( -2.0 * getArg( 0 ) ) ) *
getArg( 2 ) * EvtComplex( 0.0, 1.0 ) * Abar *
sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
}
if ( other_b == B0 ) {
amp = A * EvtComplex( cos( 2.0 * getArg( 0 ) ), sin( 2.0 * getArg( 0 ) ) ) *
EvtComplex( 0.0, 1.0 ) *
sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
getArg( 2 ) * Abar * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
}
EvtVector4R p4_parent;
p4_parent = momv + moms;
double norm = massv / ( momv.d3mag() * p4_parent.mass() );
vertex( 0, amp * norm * p4_parent * ( v->epsParent( 0 ) ) );
vertex( 1, amp * norm * p4_parent * ( v->epsParent( 1 ) ) );
vertex( 2, amp * norm * p4_parent * ( v->epsParent( 2 ) ) );
return;
}
std::string EvtSVSCP::getParamName( int i )
{
switch ( i ) {
case 0:
return "weakPhase";
case 1:
return "deltaM";
case 2:
return "finalStateCP";
case 3:
return "Af";
case 4:
return "AfPhase";
case 5:
return "Abarf";
case 6:
return "AbarfPhase";
default:
return "";
}
}
std::string EvtSVSCP::getParamDefault( int i )
{
switch ( i ) {
case 3:
return "1.0";
case 4:
return "0.0";
case 5:
return "1.0";
case 6:
return "0.0";
default:
return "";
}
}
diff --git a/src/EvtGenModels/EvtSVSCPLH.cpp b/src/EvtGenModels/EvtSVSCPLH.cpp
index 7d462a2..b79e338 100644
--- a/src/EvtGenModels/EvtSVSCPLH.cpp
+++ b/src/EvtGenModels/EvtSVSCPLH.cpp
@@ -1,143 +1,121 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2001 Caltech, UCSB
-//
-// Module: EvtSVSCPLH.cc
-//
-// Description: The decay of a scalar to a scalar and a vector particle are
-// performed with CP violation and different widths for
-// the cp even and odd states. E.g. B->J/psi K_S.
-//
-// Modification history:
-//
-// Ryd March 29, 2001 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSVSCPLH.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtSVSCPLH::getName()
{
return "SVS_CPLH";
}
EvtDecayBase* EvtSVSCPLH::clone()
{
return new EvtSVSCPLH;
}
void EvtSVSCPLH::init()
{
// check that there are 8 arguments
checkNArg( 8 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
static double ctau = EvtPDL::getctau( EvtPDL::getId( "B0" ) );
// hbar/s
_dm = getArg( 0 );
_dgamma = EvtConst::c * getArg( 1 ) / ctau;
_qop = getArg( 2 ) * exp( EvtComplex( 0.0, getArg( 3 ) ) );
_poq = 1.0 / _qop;
_Af = getArg( 4 ) * exp( EvtComplex( 0.0, getArg( 5 ) ) );
_Abarf = getArg( 6 ) * exp( EvtComplex( 0.0, getArg( 7 ) ) );
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << ":EvtSVSCPLH:dm=" << _dm << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< ":EvtSVSCPLH:dGamma=" << _dgamma << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< ":EvtSVSCPLH:q/p=" << _qop << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << ":EvtSVSCPLH:Af=" << _Af << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< ":EvtSVSCPLH:Abarf=" << _Abarf << endl;
}
}
void EvtSVSCPLH::initProbMax()
{
//This is probably not quite right, but it should do as a start...
//Anders
setProbMax( 4.0 * ( getArg( 4 ) * getArg( 4 ) + getArg( 6 ) * getArg( 6 ) ) );
}
void EvtSVSCPLH::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
double t;
EvtId other_b;
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.5 );
//convert time from mm to seconds
t /= EvtConst::c;
//sign convention is dm=Mheavy-Mlight
// dGamma=Gammalight-Gammaheavy
//such that in the standard model both of these are positive.
EvtComplex gp = 0.5 *
( exp( EvtComplex( 0.25 * t * _dgamma, -0.5 * t * _dm ) ) +
exp( EvtComplex( -0.25 * t * _dgamma, 0.5 * t * _dm ) ) );
EvtComplex gm = 0.5 *
( exp( EvtComplex( 0.25 * t * _dgamma, -0.5 * t * _dm ) ) -
exp( EvtComplex( -0.25 * t * _dgamma, 0.5 * t * _dm ) ) );
EvtComplex amp;
if ( other_b == B0B ) {
amp = gp * _Af + _qop * gm * _Abarf;
} else if ( other_b == B0 ) {
amp = gp * _Abarf + _poq * gm * _Af;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "other_b was not B0 or B0B!" << endl;
::abort();
}
EvtVector4R p4_parent = p->getP4Restframe();
;
double norm = p->getDaug( 0 )->mass() /
( p->getDaug( 0 )->getP4().d3mag() * p4_parent.mass() );
EvtParticle* v = p->getDaug( 0 );
vertex( 0, amp * norm * ( p4_parent * ( v->epsParent( 0 ) ) ) );
vertex( 1, amp * norm * ( p4_parent * ( v->epsParent( 1 ) ) ) );
vertex( 2, amp * norm * ( p4_parent * ( v->epsParent( 2 ) ) ) );
return;
}
diff --git a/src/EvtGenModels/EvtSVSCPiso.cpp b/src/EvtGenModels/EvtSVSCPiso.cpp
index 416c146..851ded8 100644
--- a/src/EvtGenModels/EvtSVSCPiso.cpp
+++ b/src/EvtGenModels/EvtSVSCPiso.cpp
@@ -1,325 +1,302 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSVSCPiso.cc
-//
-// Description: Routine to decay scalar -> vectors scalar
-// with CP violation and isospin amplitudes.
-// More specifically, it is indended to handle
-// decays like B->rho pi and B->a1 pi.
-//
-// Modification history:
-//
-// RYD/NK Febuary 16, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSVSCPiso.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
std::string EvtSVSCPiso::getName()
{
return "SVS_CP_ISO";
}
EvtDecayBase* EvtSVSCPiso::clone()
{
return new EvtSVSCPiso;
}
void EvtSVSCPiso::init()
{
// check that there are 27 arguments
checkNArg( 27 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
}
void EvtSVSCPiso::initProbMax()
{
//this might need some revision..
if ( ( EvtPDL::chg3( getDaug( 0 ) ) > 0 ) &&
( EvtPDL::chg3( getDaug( 1 ) ) == 0 ) ) {
setProbMax( 2.0 * ( getArg( 3 ) * getArg( 3 ) +
4.0 * getArg( 23 ) * getArg( 23 ) ) );
}
if ( ( EvtPDL::chg3( getDaug( 0 ) ) < 0 ) &&
( EvtPDL::chg3( getDaug( 1 ) ) == 0 ) ) {
setProbMax( 2.0 * ( getArg( 5 ) * getArg( 5 ) +
4.0 * getArg( 25 ) * getArg( 25 ) ) );
}
if ( ( EvtPDL::chg3( getDaug( 0 ) ) == 0 ) &&
( EvtPDL::chg3( getDaug( 1 ) ) > 0 ) ) {
setProbMax( 2.0 * ( getArg( 7 ) * getArg( 7 ) +
4.0 * getArg( 23 ) * getArg( 23 ) ) );
}
if ( ( EvtPDL::chg3( getDaug( 0 ) ) == 0 ) &&
( EvtPDL::chg3( getDaug( 1 ) ) < 0 ) ) {
setProbMax( 2.0 * ( getArg( 9 ) * getArg( 9 ) +
4.0 * getArg( 25 ) * getArg( 25 ) ) );
}
if ( ( EvtPDL::chg3( getDaug( 0 ) ) > 0 ) &&
( EvtPDL::chg3( getDaug( 1 ) ) < 0 ) ) {
setProbMax(
2.0 * ( getArg( 11 ) * getArg( 11 ) + getArg( 23 ) * getArg( 23 ) +
getArg( 19 ) * getArg( 19 ) + getArg( 13 ) * getArg( 13 ) +
getArg( 25 ) * getArg( 25 ) + getArg( 21 ) * getArg( 21 ) ) );
}
if ( ( EvtPDL::chg3( getDaug( 0 ) ) < 0 ) &&
( EvtPDL::chg3( getDaug( 1 ) ) > 0 ) ) {
setProbMax(
2.0 * ( getArg( 15 ) * getArg( 15 ) + getArg( 23 ) * getArg( 23 ) +
getArg( 19 ) * getArg( 19 ) + getArg( 17 ) * getArg( 17 ) +
getArg( 25 ) * getArg( 25 ) + getArg( 21 ) * getArg( 21 ) ) );
}
if ( ( EvtPDL::chg3( getDaug( 0 ) ) == 0 ) &&
( EvtPDL::chg3( getDaug( 1 ) ) == 0 ) ) {
setProbMax(
2.0 * ( getArg( 7 ) * getArg( 7 ) + getArg( 3 ) * getArg( 3 ) +
getArg( 11 ) * getArg( 11 ) + getArg( 15 ) * getArg( 15 ) +
4.0 * getArg( 19 ) * getArg( 19 ) +
getArg( 9 ) * getArg( 9 ) + getArg( 5 ) * getArg( 5 ) +
getArg( 13 ) * getArg( 13 ) + getArg( 17 ) * getArg( 17 ) +
4.0 * getArg( 21 ) * getArg( 21 ) ) );
}
}
void EvtSVSCPiso::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
double t;
EvtId other_b;
int charged( 0 );
int first_time = 0;
int flip = 0;
EvtId ds[2];
//randomly generate the tag (B0 or B0B)
double tag = EvtRandom::Flat( 0.0, 1.0 );
if ( tag < 0.5 ) {
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 1.0 );
other_b = B0;
} else {
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.0 );
other_b = B0B;
}
if ( p->getNDaug() == 0 )
first_time = 1;
if ( first_time ) {
if ( EvtRandom::Flat( 0.0, 1.0 ) < getArg( 2 ) )
flip = 1;
} else {
if ( getDaug( 0 ) != p->getDaug( 0 )->getId() )
flip = 1;
}
if ( !flip ) {
ds[0] = getDaug( 0 );
ds[1] = getDaug( 1 );
} else {
ds[0] = EvtPDL::chargeConj( getDaug( 0 ) );
ds[1] = EvtPDL::chargeConj( getDaug( 1 ) );
}
p->initializePhaseSpace( getNDaug(), ds );
EvtParticle *v, *s;
v = p->getDaug( 0 );
s = p->getDaug( 1 );
EvtComplex amp;
EvtComplex A_f, Abar_f;
EvtComplex A_fbar, Abar_fbar;
EvtComplex Apm, Apm_bar, Amp, Amp_bar;
EvtComplex Tp0, Tp0_bar, T0p, T0p_bar, Tpm, Tpm_bar, Tmp, Tmp_bar;
EvtComplex P1, P1_bar, P0, P0_bar;
Tp0 = EvtComplex( getArg( 3 ) * cos( getArg( 4 ) ),
getArg( 3 ) * sin( getArg( 4 ) ) );
Tp0_bar = EvtComplex( getArg( 5 ) * cos( getArg( 6 ) ),
getArg( 5 ) * sin( getArg( 6 ) ) );
T0p = EvtComplex( getArg( 7 ) * cos( getArg( 8 ) ),
getArg( 7 ) * sin( getArg( 8 ) ) );
T0p_bar = EvtComplex( getArg( 9 ) * cos( getArg( 10 ) ),
getArg( 9 ) * sin( getArg( 10 ) ) );
Tpm = EvtComplex( getArg( 11 ) * cos( getArg( 12 ) ),
getArg( 11 ) * sin( getArg( 12 ) ) );
Tpm_bar = EvtComplex( getArg( 13 ) * cos( getArg( 14 ) ),
getArg( 13 ) * sin( getArg( 14 ) ) );
Tmp = EvtComplex( getArg( 15 ) * cos( getArg( 16 ) ),
getArg( 15 ) * sin( getArg( 16 ) ) );
Tmp_bar = EvtComplex( getArg( 17 ) * cos( getArg( 18 ) ),
getArg( 17 ) * sin( getArg( 18 ) ) );
P0 = EvtComplex( getArg( 19 ) * cos( getArg( 20 ) ),
getArg( 19 ) * sin( getArg( 20 ) ) );
P0_bar = EvtComplex( getArg( 21 ) * cos( getArg( 22 ) ),
getArg( 21 ) * sin( getArg( 22 ) ) );
P1 = EvtComplex( getArg( 23 ) * cos( getArg( 24 ) ),
getArg( 23 ) * sin( getArg( 24 ) ) );
P1_bar = EvtComplex( getArg( 25 ) * cos( getArg( 26 ) ),
getArg( 25 ) * sin( getArg( 26 ) ) );
//***********************charged modes****************************
if ( ( EvtPDL::chg3( getDaug( 0 ) ) > 0 ) &&
( EvtPDL::chg3( getDaug( 1 ) ) == 0 ) ) {
//V+ S0, so T+0 + 2 P1
charged = 1;
A_f = Tp0 + 2.0 * P1;
}
if ( ( EvtPDL::chg3( getDaug( 0 ) ) < 0 ) &&
( EvtPDL::chg3( getDaug( 1 ) ) == 0 ) ) {
//V- S0, so T+0_bar + 2P1_bar
charged = 1;
A_f = Tp0_bar + 2.0 * P1_bar;
}
if ( ( EvtPDL::chg3( getDaug( 0 ) ) == 0 ) &&
( EvtPDL::chg3( getDaug( 1 ) ) > 0 ) ) {
//V0 S+, so T0+ - 2 P1
charged = 1;
A_f = T0p - 2.0 * P1;
}
if ( ( EvtPDL::chg3( getDaug( 0 ) ) == 0 ) &&
( EvtPDL::chg3( getDaug( 1 ) ) < 0 ) ) {
//V0 S-, so T0+_bar - 2 P1_bar
charged = 1;
A_f = T0p_bar - 2.0 * P1_bar;
}
//***********************neutral modes***************************
//V+ S-, so Af = T+- + P1 + P0
Apm = Tpm + P1 + P0;
Apm_bar = Tpm_bar + P1_bar + P0_bar;
//V- S+, so Af = T-+ - P1 + P0
Amp = Tmp - P1 + P0;
Amp_bar = Tmp_bar - P1_bar + P0;
if ( ( EvtPDL::chg3( getDaug( 0 ) ) > 0 ) &&
( EvtPDL::chg3( getDaug( 1 ) ) < 0 ) ) {
//V+ S-
charged = 0;
A_f = Apm;
Abar_f = Apm_bar;
A_fbar = Amp;
Abar_fbar = Amp_bar;
}
if ( ( EvtPDL::chg3( getDaug( 0 ) ) < 0 ) &&
( EvtPDL::chg3( getDaug( 1 ) ) > 0 ) ) {
//V- S+
charged = 0;
A_f = Amp;
Abar_f = Amp_bar;
A_fbar = Apm;
Abar_fbar = Apm_bar;
}
if ( ( EvtPDL::chg3( getDaug( 0 ) ) == 0 ) &&
( EvtPDL::chg3( getDaug( 1 ) ) == 0 ) ) {
//V0 S0
charged = 0;
A_f = T0p + Tp0 - Tpm - Tmp - 2.0 * P0;
Abar_f = T0p_bar + Tp0_bar - Tpm_bar - Tmp_bar - 2.0 * P0_bar;
A_fbar = A_f;
Abar_fbar = Abar_f;
}
if ( charged == 0 ) {
if ( !flip ) {
if ( other_b == B0B ) {
amp = A_f * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
EvtComplex( cos( -2.0 * getArg( 0 ) ),
sin( -2.0 * getArg( 0 ) ) ) *
EvtComplex( 0.0, 1.0 ) * Abar_f *
sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
}
if ( other_b == B0 ) {
amp = A_f *
EvtComplex( cos( 2.0 * getArg( 0 ) ),
sin( 2.0 * getArg( 0 ) ) ) *
EvtComplex( 0.0, 1.0 ) *
sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
Abar_f * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
}
} else {
if ( other_b == B0B ) {
amp = A_fbar * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
EvtComplex( cos( -2.0 * getArg( 0 ) ),
sin( -2.0 * getArg( 0 ) ) ) *
EvtComplex( 0.0, 1.0 ) * Abar_fbar *
sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
}
if ( other_b == B0 ) {
amp = A_fbar *
EvtComplex( cos( 2.0 * getArg( 0 ) ),
sin( 2.0 * getArg( 0 ) ) ) *
EvtComplex( 0.0, 1.0 ) *
sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) ) +
Abar_fbar * cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
}
}
} else
amp = A_f;
EvtVector4R p4_parent;
p4_parent = v->getP4() + s->getP4();
double norm = 1.0 / v->getP4().d3mag();
vertex( 0, amp * norm * p4_parent * ( v->epsParent( 0 ) ) );
vertex( 1, amp * norm * p4_parent * ( v->epsParent( 1 ) ) );
vertex( 2, amp * norm * p4_parent * ( v->epsParent( 2 ) ) );
return;
}
diff --git a/src/EvtGenModels/EvtSVSNONCPEIGEN.cpp b/src/EvtGenModels/EvtSVSNONCPEIGEN.cpp
index 5a74eb4..fd951ef 100644
--- a/src/EvtGenModels/EvtSVSNONCPEIGEN.cpp
+++ b/src/EvtGenModels/EvtSVSNONCPEIGEN.cpp
@@ -1,149 +1,128 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSVSNONCPEIGEN.cc
-//
-// Description: Routine to decay scalar -> vectors scalar
-// and has CP violation.
-//
-// Modification history:
-//
-// RYD April 26, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSVSNONCPEIGEN.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
std::string EvtSVSNONCPEIGEN::getName()
{
return "SVS_NONCPEIGEN";
}
EvtDecayBase* EvtSVSNONCPEIGEN::clone()
{
return new EvtSVSNONCPEIGEN;
}
void EvtSVSNONCPEIGEN::init()
{
// check that there are 11 arguments
checkNArg( 11, 7 );
checkNDaug( 2 );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
_dm = getArg( 1 );
_phickm = 2 * getArg( 0 ) + getArg( 2 );
_A_f = EvtComplex( getArg( 3 ) * cos( getArg( 4 ) ),
getArg( 3 ) * sin( getArg( 4 ) ) );
_Abar_f = EvtComplex( getArg( 5 ) * cos( getArg( 6 ) ),
getArg( 5 ) * sin( getArg( 6 ) ) );
_A_fbar = _Abar_f;
_Abar_fbar = _A_f;
if ( getNArg() == 11 ) {
_A_fbar = EvtComplex( getArg( 7 ) * cos( getArg( 8 ) ),
getArg( 7 ) * sin( getArg( 8 ) ) );
_Abar_fbar = EvtComplex( getArg( 9 ) * cos( getArg( 10 ) ),
getArg( 9 ) * sin( getArg( 10 ) ) );
}
}
void EvtSVSNONCPEIGEN::initProbMax()
{
double theProbMax = abs( _A_f ) * abs( _A_f ) +
abs( _Abar_f ) * abs( _Abar_f ) +
abs( _A_fbar ) * abs( _A_fbar ) +
abs( _Abar_fbar ) * abs( _Abar_fbar );
setProbMax( theProbMax );
}
void EvtSVSNONCPEIGEN::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
double t;
EvtId other_b;
EvtId daugs[2];
// MB: flip selects the final of the decay
int flip = ( ( p->getId() == B0 ) ? 0 : 1 );
daugs[0] = getDaug( 0 );
daugs[1] = getDaug( 1 );
p->initializePhaseSpace( 2, daugs );
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.5 );
EvtComplex amp;
double dmt2 = ( _dm * t ) / ( 2 * EvtConst::c );
EvtComplex ePlusIPhi( cos( _phickm ), sin( _phickm ) );
EvtComplex eMinusIPhi( cos( -_phickm ), -sin( _phickm ) );
// flip == 0 : D-rho+
// flip == 1 : D+rho-
if ( !flip ) {
if ( other_b == B0B ) {
// At t=0 we have a B0
amp = cos( dmt2 ) * _A_f +
eMinusIPhi * EvtComplex( 0.0, sin( dmt2 ) ) * _Abar_f;
}
if ( other_b == B0 ) {
// At t=0 we have a B0bar
amp = ePlusIPhi * EvtComplex( 0.0, sin( dmt2 ) ) * _A_f +
cos( dmt2 ) * _Abar_f;
}
} else {
if ( other_b == B0B ) {
// At t=0 we have a B0
amp = cos( dmt2 ) * _A_fbar +
eMinusIPhi * EvtComplex( 0.0, sin( dmt2 ) ) * _Abar_fbar;
}
if ( other_b == B0 ) {
// At t=0 we have a B0bar
amp = ePlusIPhi * EvtComplex( 0.0, sin( dmt2 ) ) * _A_fbar +
cos( dmt2 ) * _Abar_fbar;
}
}
EvtParticle* v;
v = p->getDaug( 0 );
EvtVector4R momv = p->getDaug( 0 )->getP4();
EvtVector4R moms = p->getDaug( 1 )->getP4();
EvtVector4R p4_parent = momv + moms;
double norm = momv.mass() / ( momv.d3mag() * p->mass() );
vertex( 0, amp * norm * p4_parent * ( v->epsParent( 0 ) ) );
vertex( 1, amp * norm * p4_parent * ( v->epsParent( 1 ) ) );
vertex( 2, amp * norm * p4_parent * ( v->epsParent( 2 ) ) );
return;
}
diff --git a/src/EvtGenModels/EvtSVVCP.cpp b/src/EvtGenModels/EvtSVVCP.cpp
index 7f4d1d4..ea2d992 100644
--- a/src/EvtGenModels/EvtSVVCP.cpp
+++ b/src/EvtGenModels/EvtSVVCP.cpp
@@ -1,166 +1,145 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSVVCP.cc
-//
-// Description: The decay of a scalar to two vector particles are
-// performed with CP violation. E.g. B->J/psi K*.
-//
-// Modification history:
-//
-// RYD January 19, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSVVCP.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtSVVHelAmp.hh"
#include <stdlib.h>
#include <string>
std::string EvtSVVCP::getName()
{
return "SVV_CP";
}
EvtDecayBase* EvtSVVCP::clone()
{
return new EvtSVVCP;
}
void EvtSVVCP::init()
{
// check that there are 9 arguments
checkNArg( 9 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::VECTOR );
}
void EvtSVVCP::initProbMax()
{
//This is probably not quite right, but it should do as a start...
//Anders
setProbMax( 2 * ( getArg( 3 ) * getArg( 3 ) + getArg( 5 ) * getArg( 5 ) +
getArg( 7 ) * getArg( 7 ) ) );
}
void EvtSVVCP::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
double t;
EvtId other_b;
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.5 );
EvtComplex G0P, G1P, G1M;
G1P = EvtComplex( getArg( 3 ) * cos( getArg( 4 ) ),
getArg( 3 ) * sin( getArg( 4 ) ) );
G0P = EvtComplex( getArg( 5 ) * cos( getArg( 6 ) ),
getArg( 5 ) * sin( getArg( 6 ) ) );
G1M = EvtComplex( getArg( 7 ) * cos( getArg( 8 ) ),
getArg( 7 ) * sin( getArg( 8 ) ) );
EvtComplex lambda_km = EvtComplex( cos( -2 * getArg( 0 ) ),
sin( -2 * getArg( 0 ) ) );
double cdmt = cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
double sdmt = sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
EvtComplex cG0P, cG1P, cG1M;
if ( other_b == B0B ) {
cG0P = G0P * ( cdmt + lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
cG1P = G1P * ( cdmt + lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
cG1M = G1M * ( cdmt - lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
}
if ( other_b == B0 ) {
cG0P = G0P * ( cdmt + ( 1.0 / lambda_km ) *
EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
cG1P = G1P * ( cdmt + ( 1.0 / lambda_km ) *
EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
cG1M = -G1M * ( cdmt - ( 1.0 / lambda_km ) *
EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
}
EvtComplex A0, AP, AM;
A0 = cG0P / sqrt( 2.0 );
AP = ( cG1P + cG1M ) / sqrt( 2.0 );
AM = ( cG1P - cG1M ) / sqrt( 2.0 );
EvtSVVHelAmp::SVVHel( p, _amp2, getDaug( 0 ), getDaug( 1 ), AP, A0, AM );
return;
}
std::string EvtSVVCP::getParamName( int i )
{
switch ( i ) {
case 0:
return "weakPhase";
case 1:
return "deltaM";
case 2:
return "eta";
case 3:
return "G1Plus";
case 4:
return "G1PlusPhase";
case 5:
return "G0Plus";
case 6:
return "G0PlusPhase";
case 7:
return "G1Minus";
case 8:
return "G1MinusPhase";
default:
return "";
}
}
std::string EvtSVVCP::getParamDefault( int i )
{
switch ( i ) {
case 3:
return "1.0";
case 4:
return "0.0";
case 5:
return "1.0";
case 6:
return "0.0";
case 7:
return "1.0";
case 8:
return "0.0";
default:
return "";
}
}
diff --git a/src/EvtGenModels/EvtSVVCPLH.cpp b/src/EvtGenModels/EvtSVVCPLH.cpp
index 58c447a..5fa7f01 100644
--- a/src/EvtGenModels/EvtSVVCPLH.cpp
+++ b/src/EvtGenModels/EvtSVVCPLH.cpp
@@ -1,139 +1,117 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1999 Caltech, UCSB
-//
-// Module: EvtSVVCPLH.cc
-//
-// Description: The decay of a scalar to two vector particles are
-// performed with CP violation and different widths for
-// the cpe even and od states. E.g. Bs->J/psi phi.
-//
-// Modification history:
-//
-// RYD November 5, 1999 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSVVCPLH.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtSVVHelAmp.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtSVVCPLH::getName()
{
return "SVV_CPLH";
}
EvtDecayBase* EvtSVVCPLH::clone()
{
return new EvtSVVCPLH;
}
void EvtSVVCPLH::init()
{
// check that there are 9 arguments
checkNArg( 9 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::VECTOR );
}
void EvtSVVCPLH::initProbMax()
{
//This is probably not quite right, but it should do as a start...
//Anders
setProbMax( 2 * ( getArg( 3 ) * getArg( 3 ) + getArg( 5 ) * getArg( 5 ) +
getArg( 7 ) * getArg( 7 ) ) );
}
void EvtSVVCPLH::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId BS0 = EvtPDL::getId( "B_s0" );
static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
double t;
EvtId other_b;
EvtCPUtil::getInstance()->OtherB( p, t, other_b );
EvtComplex G0P, G1P, G1M;
G1P = EvtComplex( getArg( 3 ) * cos( getArg( 4 ) ),
getArg( 3 ) * sin( getArg( 4 ) ) );
G0P = EvtComplex( getArg( 5 ) * cos( getArg( 6 ) ),
getArg( 5 ) * sin( getArg( 6 ) ) );
G1M = EvtComplex( getArg( 7 ) * cos( getArg( 8 ) ),
getArg( 7 ) * sin( getArg( 8 ) ) );
EvtComplex lambda_km = EvtComplex( cos( 2 * getArg( 0 ) ),
sin( 2 * getArg( 0 ) ) );
double cdmt = cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
double sdmt = sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
EvtComplex cG0P, cG1P, cG1M;
static double ctauL = EvtPDL::getctau( EvtPDL::getId( "B_s0L" ) );
static double ctauH = EvtPDL::getctau( EvtPDL::getId( "B_s0H" ) );
//I'm not sure if the fabs() is right when t can be
//negative as in the case of Bs produced coherently.
double pt = 1;
double mt = exp( -fabs( t * ( ctauL - ctauH ) / ( ctauL * ctauH ) ) );
if ( other_b == BSB ) {
cG0P = pt * G0P *
( cdmt + lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
cG1P = pt * G1P *
( cdmt + lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
cG1M = mt * G1M *
( cdmt - lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
} else if ( other_b == BS0 ) {
cG0P = pt * G0P *
( cdmt +
( 1.0 / lambda_km ) * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
cG1P = pt * G1P *
( cdmt +
( 1.0 / lambda_km ) * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
cG1M = -mt * G1M *
( cdmt -
( 1.0 / lambda_km ) * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "other_b was not BSB or BS0!" << endl;
::abort();
}
EvtComplex A0, AP, AM;
A0 = cG0P / sqrt( 2.0 );
AP = ( cG1P + cG1M ) / sqrt( 2.0 );
AM = ( cG1P - cG1M ) / sqrt( 2.0 );
EvtSVVHelAmp::SVVHel( p, _amp2, getDaug( 0 ), getDaug( 1 ), AP, A0, AM );
return;
}
diff --git a/src/EvtGenModels/EvtSVVHelAmp.cpp b/src/EvtGenModels/EvtSVVHelAmp.cpp
index bca15c1..42baabd 100644
--- a/src/EvtGenModels/EvtSVVHelAmp.cpp
+++ b/src/EvtGenModels/EvtSVVHelAmp.cpp
@@ -1,172 +1,151 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSVVHelAmp.cc
-//
-// Description: Routine to decay scalar -> 2 vectors
-// by specifying the helicity amplitudes
-//
-// Modification history:
-//
-// RYD November 24, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSVVHelAmp.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor3C.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector3C.hh"
#include "EvtGenBase/EvtVector3R.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
std::string EvtSVVHelAmp::getName()
{
return "SVV_HELAMP";
}
EvtDecayBase* EvtSVVHelAmp::clone()
{
return new EvtSVVHelAmp;
}
void EvtSVVHelAmp::init()
{
// check that there are 6 arguments
checkNArg( 6 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::VECTOR );
}
void EvtSVVHelAmp::initProbMax()
{
setProbMax( getArg( 0 ) * getArg( 0 ) + getArg( 2 ) * getArg( 2 ) +
getArg( 4 ) * getArg( 4 ) );
}
void EvtSVVHelAmp::decay( EvtParticle* p )
{
SVVHel( p, _amp2, getDaug( 0 ), getDaug( 1 ),
EvtComplex( getArg( 0 ) * cos( getArg( 1 ) ),
getArg( 0 ) * sin( getArg( 1 ) ) ),
EvtComplex( getArg( 2 ) * cos( getArg( 3 ) ),
getArg( 2 ) * sin( getArg( 3 ) ) ),
EvtComplex( getArg( 4 ) * cos( getArg( 5 ) ),
getArg( 4 ) * sin( getArg( 5 ) ) ) );
return;
}
void EvtSVVHelAmp::SVVHel( EvtParticle* parent, EvtAmp& amp, EvtId n_v1,
EvtId n_v2, const EvtComplex& hp,
const EvtComplex& h0, const EvtComplex& hm )
{
// Routine to decay a vector into a vector and scalar. Started
// by ryd on Oct 17, 1996.
int tndaug = 2;
EvtId tdaug[2];
tdaug[0] = n_v1;
tdaug[1] = n_v2;
parent->initializePhaseSpace( tndaug, tdaug );
EvtParticle *v1, *v2;
v1 = parent->getDaug( 0 );
v2 = parent->getDaug( 1 );
EvtVector4R momv1 = v1->getP4();
//EvtVector4R momv2 = v2->getP4();
EvtVector3R v1dir( momv1.get( 1 ), momv1.get( 2 ), momv1.get( 3 ) );
v1dir = v1dir / v1dir.d3mag();
EvtComplex a = -0.5 * ( hp + hm );
EvtComplex b = EvtComplex( 0.0, 0.5 ) * ( hp - hm );
EvtComplex c = h0 + 0.5 * ( hp + hm );
EvtTensor3C M = a * EvtTensor3C::id() + b * EvtGenFunctions::eps( v1dir ) +
c * EvtGenFunctions::directProd( v1dir, v1dir );
EvtVector3C t0 = M.cont1( v1->eps( 0 ).vec().conj() );
EvtVector3C t1 = M.cont1( v1->eps( 1 ).vec().conj() );
EvtVector3C t2 = M.cont1( v1->eps( 2 ).vec().conj() );
EvtVector3C eps0 = v2->eps( 0 ).vec().conj();
EvtVector3C eps1 = v2->eps( 1 ).vec().conj();
EvtVector3C eps2 = v2->eps( 2 ).vec().conj();
amp.vertex( 0, 0, t0 * eps0 );
amp.vertex( 0, 1, t0 * eps1 );
amp.vertex( 0, 2, t0 * eps2 );
amp.vertex( 1, 0, t1 * eps0 );
amp.vertex( 1, 1, t1 * eps1 );
amp.vertex( 1, 2, t1 * eps2 );
amp.vertex( 2, 0, t2 * eps0 );
amp.vertex( 2, 1, t2 * eps1 );
amp.vertex( 2, 2, t2 * eps2 );
return;
}
std::string EvtSVVHelAmp::getParamName( int i )
{
switch ( i ) {
case 0:
return "plusHelAmp";
case 1:
return "plusHelAmpPhase";
case 2:
return "zeroHelAmp";
case 3:
return "zeroHelAmpPhase";
case 4:
return "minusHelAmp";
case 5:
return "minusHelAmpPhase";
default:
return "";
}
}
std::string EvtSVVHelAmp::getParamDefault( int i )
{
switch ( i ) {
case 0:
return "1.0";
case 1:
return "0.0";
case 2:
return "1.0";
case 3:
return "0.0";
case 4:
return "1.0";
case 5:
return "0.0";
default:
return "";
}
}
diff --git a/src/EvtGenModels/EvtSVVHelCPMix.cpp b/src/EvtGenModels/EvtSVVHelCPMix.cpp
index 2d64f63..6390f22 100644
--- a/src/EvtGenModels/EvtSVVHelCPMix.cpp
+++ b/src/EvtGenModels/EvtSVVHelCPMix.cpp
@@ -1,318 +1,284 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSVVHelCPMix.cc
-//
-// Description: Routine to decay scalar -> 2 vectors
-// by specifying the helicity amplitudes, taking appropriate
-// weak phases into account to get mixing and CP violation through
-// interference. Based on EvtSVVHelAmp. Particularly appropriate for
-// Bs->J/Psi+Phi
-//
-// Modification history:
-//
-// RYD November 24, 1996 EvtSVVHelAmp Module
-// CATMORE March 2004 Modified to EvtSVVHelCPMix
-//
-// Model takes the following as user-specified arguments:
-// deltaM, averageM - mass diference and average of light and heavy mass eigenstates (real scalars)
-// gamma, deltagamma - average width and width difference of the l and h eigenstates (real scalars)
-// delta1, delta2 - strong phases (real scalars)
-// direct weak phase (real scalar) (for Bs->JPsiPhi this will be zero)
-// weak mixing phase (real scalar) (this is equal to 2*arg(Vts Vtb) for Bs->JPsiPhi)
-// Magnitudes of helicity amplitudes as in SVV_HELAMP
-// See Phys Rev D 34 p1404 - p1417 and chapters 5 and 7 of Physics Reports 370 p537-680 for more details
-//------------------------------------------------------------------------
-//
-
#include "EvtGenModels/EvtSVVHelCPMix.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor3C.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector3C.hh"
#include "EvtGenBase/EvtVector3R.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <ctype.h>
#include <fstream>
#include <iostream>
#include <stdlib.h>
#include <string>
std::string EvtSVVHelCPMix::getName()
{
return "SVVHELCPMIX";
}
EvtDecayBase* EvtSVVHelCPMix::clone()
{
return new EvtSVVHelCPMix;
}
void EvtSVVHelCPMix::init()
{
// check that there are 12 arguments
checkNArg( 12 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::VECTOR );
hp = EvtComplex( getArg( 0 ) * cos( getArg( 1 ) ),
getArg( 0 ) * sin( getArg( 1 ) ) );
h0 = EvtComplex( getArg( 2 ) * cos( getArg( 3 ) ),
getArg( 2 ) * sin( getArg( 3 ) ) );
hm = EvtComplex( getArg( 4 ) * cos( getArg( 5 ) ),
getArg( 4 ) * sin( getArg( 5 ) ) );
averageM = getArg( 6 );
deltaM = getArg( 7 );
gamma = getArg( 8 );
deltagamma = getArg( 9 );
weakmixingphase = EvtComplex( cos( getArg( 10 ) ), sin( getArg( 10 ) ) );
weakdirectphase = EvtComplex( cos( getArg( 11 ) ), sin( getArg( 11 ) ) );
}
void EvtSVVHelCPMix::initProbMax()
{
setProbMax( getArg( 0 ) * getArg( 0 ) + getArg( 2 ) * getArg( 2 ) +
getArg( 4 ) * getArg( 4 ) );
}
void EvtSVVHelCPMix::decay( EvtParticle* p )
{
EvtParticle* parent = p;
EvtAmp& amp = _amp2;
EvtId n_v1 = getDaug( 0 );
EvtId n_v2 = getDaug( 1 );
// Routine to decay a vector into a vector and scalar. Started
// by ryd on Oct 17, 1996.
// Modified by J.Catmore to take account of CP-violation and mixing
int tndaug = 2;
EvtId tdaug[2];
EvtId Bs = EvtPDL::getId( "B_s0" );
EvtId antiBs = EvtPDL::getId( "anti-B_s0" );
tdaug[0] = n_v1;
tdaug[1] = n_v2;
// Phase space and kinematics
parent->initializePhaseSpace( tndaug, tdaug );
EvtParticle *v1, *v2;
v1 = parent->getDaug( 0 );
v2 = parent->getDaug( 1 );
EvtVector4R momv1 = v1->getP4();
EvtVector3R v1dir( momv1.get( 1 ), momv1.get( 2 ), momv1.get( 3 ) );
v1dir = v1dir / v1dir.d3mag();
// Definition of quantities used in construction of complex amplitudes:
EvtTensor3C M; // Tensor as defined in EvtGen manual, equ 117
EvtComplex a, b,
c; // Helicity amplitudes; EvtGen manual eqns 126-128, also see Phys Lett B 369 p144-150 eqn 15
//EvtComplex deltamu = EvtComplex(deltaM, -0.5*deltagamma); // See Phys Rev D 34 p1404
// conversion from times in mm/c to natural units [GeV]^-1
double t = ( ( parent->getLifetime() ) / 2.998e11 ) * 6.58e-25;
// The following two quantities defined in Phys Rev D 34 p1404
EvtComplex fplus = EvtComplex( cos( averageM * t ),
-1. * sin( averageM * t ) ) *
exp( -( gamma / 2.0 ) * t ) *
( cos( 0.5 * deltaM * t ) * cosh( 0.25 * deltagamma * t ) +
EvtComplex( 0.0, sin( 0.5 * deltaM * t ) *
sinh( 0.25 * deltagamma * t ) ) );
EvtComplex fminus =
EvtComplex( cos( averageM * t ), -1. * sin( averageM * t ) ) *
exp( -( gamma / 2.0 ) * t ) * EvtComplex( 0.0, 1.0 ) *
( sin( 0.5 * deltaM * t ) * cosh( 0.25 * deltagamma * t ) -
EvtComplex( 0.0, 1.0 ) * sinh( 0.25 * deltagamma * t ) *
cos( 0.5 * deltaM * t ) );
// See EvtGen manual pp 106-107
a = -0.5 * ( hp + hm );
b = EvtComplex( 0.0, 0.5 ) * ( hp - hm );
c = ( h0 + 0.5 * ( hp + hm ) );
M = a * EvtTensor3C::id() + b * EvtGenFunctions::eps( v1dir ) +
c * EvtGenFunctions::directProd( v1dir, v1dir );
EvtVector3C t0 = M.cont1( v1->eps( 0 ).vec().conj() );
EvtVector3C t1 = M.cont1( v1->eps( 1 ).vec().conj() );
EvtVector3C t2 = M.cont1( v1->eps( 2 ).vec().conj() );
EvtVector3C eps0 = v2->eps( 0 ).vec().conj();
EvtVector3C eps1 = v2->eps( 1 ).vec().conj();
EvtVector3C eps2 = v2->eps( 2 ).vec().conj();
// We need two sets of equations, one for mesons which were in the Bs state at t=0, and another
// for those which were in the antiBs state. Each equation consists of a sum of amplitudes - mod-squaring gives the interference terms.
EvtComplex amplSum00, amplSum01, amplSum02;
EvtComplex amplSum10, amplSum11, amplSum12;
EvtComplex amplSum20, amplSum21, amplSum22;
// First the Bs state:
if ( parent->getId() == Bs ) {
amplSum00 = ( fplus * weakdirectphase * t0 * eps0 ) +
( fminus * ( 1.0 / weakdirectphase ) * weakmixingphase *
t0 * eps0 );
amplSum01 = ( fplus * weakdirectphase * t0 * eps1 ) +
( fminus * ( 1.0 / weakdirectphase ) * weakmixingphase *
t0 * eps1 );
amplSum02 = ( fplus * weakdirectphase * t0 * eps2 ) +
( fminus * ( 1.0 / weakdirectphase ) * weakmixingphase *
t0 * eps2 );
amplSum10 = ( fplus * weakdirectphase * t1 * eps0 ) +
( fminus * ( 1.0 / weakdirectphase ) * weakmixingphase *
t1 * eps0 );
amplSum11 = ( fplus * weakdirectphase * t1 * eps1 ) +
( fminus * ( 1.0 / weakdirectphase ) * weakmixingphase *
t1 * eps1 );
amplSum12 = ( fplus * weakdirectphase * t1 * eps2 ) +
( fminus * ( 1.0 / weakdirectphase ) * weakmixingphase *
t1 * eps2 );
amplSum20 = ( fplus * weakdirectphase * t2 * eps0 ) +
( fminus * ( 1.0 / weakdirectphase ) * weakmixingphase *
t2 * eps0 );
amplSum21 = ( fplus * weakdirectphase * t2 * eps1 ) +
( fminus * ( 1.0 / weakdirectphase ) * weakmixingphase *
t2 * eps1 );
amplSum22 = ( fplus * weakdirectphase * t2 * eps2 ) +
( fminus * ( 1.0 / weakdirectphase ) * weakmixingphase *
t2 * eps2 );
}
// Now the anti-Bs state:
if ( parent->getId() == antiBs ) {
amplSum00 = ( fminus * weakdirectphase * ( 1.0 / weakmixingphase ) *
t0 * eps0 ) +
( fplus * ( 1.0 / weakdirectphase ) * t0 * eps0 );
amplSum01 = ( fminus * weakdirectphase * ( 1.0 / weakmixingphase ) *
t0 * eps1 ) +
( fplus * ( 1.0 / weakdirectphase ) * t0 * eps1 );
amplSum02 = ( fminus * weakdirectphase * ( 1.0 / weakmixingphase ) *
t0 * eps2 ) +
( fplus * ( 1.0 / weakdirectphase ) * t0 * eps2 );
amplSum10 = ( fminus * weakdirectphase * ( 1.0 / weakmixingphase ) *
t1 * eps0 ) +
( fplus * ( 1.0 / weakdirectphase ) * t1 * eps0 );
amplSum11 = ( fminus * weakdirectphase * ( 1.0 / weakmixingphase ) *
t1 * eps1 ) +
( fplus * ( 1.0 / weakdirectphase ) * t1 * eps1 );
amplSum12 = ( fminus * weakdirectphase * ( 1.0 / weakmixingphase ) *
t1 * eps2 ) +
( fplus * ( 1.0 / weakdirectphase ) * t1 * eps2 );
amplSum20 = ( fminus * weakdirectphase * ( 1.0 / weakmixingphase ) *
t2 * eps0 ) +
( fplus * ( 1.0 / weakdirectphase ) * t2 * eps0 );
amplSum21 = ( fminus * weakdirectphase * ( 1.0 / weakmixingphase ) *
t2 * eps1 ) +
( fplus * ( 1.0 / weakdirectphase ) * t2 * eps1 );
amplSum22 = ( fminus * weakdirectphase * ( 1.0 / weakmixingphase ) *
t2 * eps2 ) +
( fplus * ( 1.0 / weakdirectphase ) * t2 * eps2 );
}
// Now set the amplitude
amp.vertex( 0, 0, amplSum00 );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "00: " << amplSum00 << std::endl;
amp.vertex( 0, 1, amplSum01 );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "01: " << amplSum01 << std::endl;
amp.vertex( 0, 2, amplSum02 );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "02: " << amplSum02 << std::endl;
amp.vertex( 1, 0, amplSum10 );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "10: " << amplSum10 << std::endl;
amp.vertex( 1, 1, amplSum11 );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "11: " << amplSum11 << std::endl;
amp.vertex( 1, 2, amplSum12 );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "12: " << amplSum12 << std::endl;
amp.vertex( 2, 0, amplSum20 );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "20: " << amplSum20 << std::endl;
amp.vertex( 2, 1, amplSum21 );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "21: " << amplSum21 << std::endl;
amp.vertex( 2, 2, amplSum22 );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "22: " << amplSum22 << std::endl;
return;
}
std::string EvtSVVHelCPMix::getParamName( int i )
{
switch ( i ) {
case 0:
return "plusHelAmp";
case 1:
return "plusHelAmpPhase";
case 2:
return "zeroHelAmp";
case 3:
return "zeroHelAmpPhase";
case 4:
return "minusHelAmp";
case 5:
return "minusHelAmpPhase";
case 6:
return "averageM";
case 7:
return "deltaM";
case 8:
return "gamma";
case 9:
return "deltaGamma";
case 10:
return "weakMixPhase";
case 11:
return "weakDirectPhase";
default:
return "";
}
}
std::string EvtSVVHelCPMix::getParamDefault( int i )
{
switch ( i ) {
case 0:
return "1.0";
case 1:
return "0.0";
case 2:
return "1.0";
case 3:
return "0.0";
case 4:
return "1.0";
case 5:
return "0.0";
default:
return "";
}
}
diff --git a/src/EvtGenModels/EvtSVVNONCPEIGEN.cpp b/src/EvtGenModels/EvtSVVNONCPEIGEN.cpp
index a3d70bf..9429e2e 100644
--- a/src/EvtGenModels/EvtSVVNONCPEIGEN.cpp
+++ b/src/EvtGenModels/EvtSVVNONCPEIGEN.cpp
@@ -1,296 +1,240 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2001 Royal Holloway, University of London
-//
-// Module: EvtSVVNONCPEIGEN.cc
-//
-// Description: Routine to decay scalar -> vector vector
-// and has CP violation.
-//
-// This model does all the ckm-suppressed decays and mixing for you. It randomly 'overwrites'
-// any reco or tagging state as set in the Y(4S) decay model (VSS_(B)MIX) with its own generated states.
-//
-// As such, the corresponding dec file requires only one decay-mode description, for example:
-// Decay MyB0
-// 1.000 rho+ MyD*- SVV_NONCPEIGEN dm beta gamma 0.322 0.31 0.941 0 0.107 1.42 0.02 0 0.02 0 0.02 0 ;
-// EndDecay
-// and furthermore Y(4S) only needs to decay to B0's (or B0bar's).
-// The decay above should be a CKM-favored mode (eg. B0->D*-rho+ or B0bar->D*+rho-).
-// All ckm-suppressed decays and the mixing are derived from this line in the ::Decay function.
-//
-// There are 15 or 27 arguments. The first three are dm, phase1
-// and phase2. dm is the B0-B0bar mass difference. Phases 1
-// and 2 are the CKM weak phases relevant for the particular mode,
-// eg for B-->DstRho phase1 is beta and phase2 is gamma.
-//
-// The next arguments are the 2 amplitudes (= 12 input parameters)
-// in the order: A_f, Abar_f. In the example above, the 'A_f' amplitude now
-// stands for the ckm-favored decay 'B0->D*-rho+', and 'Abar_f' stands for 'B0bar->D*-rho+'
-//
-// Each amplitude has its 3 helicity states in the order +, 0, -, which are each
-// specified by a magnitude and a strong phase.
-//
-// The last 2 arguments A_fbar and Abar_fbar (=12 input parameters) are not necessary,
-// but can included if one wants to set them differently from A_f, Abar_f.
-//
-// Mind you that Hbar_+- = H_-+ (ignoring the weak phase, which flips sign).
-// It is custumary to select one set of helicity states (eg H_+-) and to adopt these for
-// the CP-conjugate decays as well (ie. depict Hbar_-+ with H_+-), which is the interpretation
-// we use for the input-parameters above.
-// However, the angular decay in EvtGen is just a formula in which helicity amplitudes are 'plugged' in,
-// making no difference between B0 or B0bar decays. In the model below we (thus) account for the +-
-// flipping between B0 and B0bar.
-//
-//
-// Modification history:
-// Ajit Kurup 9 March 2001 Module created (from EvtSVSNONCPEIGEN)
-// Max Baak 01/16/2004 Fix of Helicity amplitude ordering.
-// Decay also works for B0bar decays.
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSVVNONCPEIGEN.hh"
#include "EvtGenBase/EvtCPUtil.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenModels/EvtSVVHelAmp.hh"
#include <stdlib.h>
#include <string>
std::string EvtSVVNONCPEIGEN::getName()
{
return "SVV_NONCPEIGEN";
}
EvtDecayBase* EvtSVVNONCPEIGEN::clone()
{
return new EvtSVVNONCPEIGEN;
}
void EvtSVVNONCPEIGEN::init()
{
// check that there are 27 arguments
checkNArg( 27, 15 );
checkNDaug( 2 );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::VECTOR );
// The ordering of A_f is :
// A_f[0-2] = A_f
// A_f[3-5] = Abar_f
// A_f[6-8] = A_fbar
// A_f[9-11] = Abar_fbar
//
// Each of the 4 amplitudes include the 3 different helicity states in
// the order +, 0, -. See more about helicity amplitude ordering in ::decay
int i = 0;
int j = ( getNArg() - 3 ) / 2;
for ( i = 0; i < j; ++i ) {
_A_f[i] = getArg( ( 2 * i ) + 3 ) *
EvtComplex( cos( getArg( ( 2 * i ) + 4 ) ),
sin( getArg( ( 2 * i ) + 4 ) ) );
}
// If only 6 amplitudes are specified, calculate the last 6 from the first 6:
if ( 6 == j ) {
for ( i = 0; i < 3; ++i ) {
_A_f[6 + i] = _A_f[3 + i];
_A_f[9 + i] = _A_f[i];
}
}
}
void EvtSVVNONCPEIGEN::initProbMax()
{
double probMax = 0;
for ( int i = 0; i < 12; ++i ) {
double amp = abs( _A_f[i] );
probMax += amp * amp;
}
setProbMax( probMax );
}
void EvtSVVNONCPEIGEN::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
double t;
EvtId other_b;
EvtId daugs[2];
// MB: flip selects the final of the decay
int flip = ( ( p->getId() == B0 ) ? 0 : 1 );
daugs[0] = getDaug( 0 );
daugs[1] = getDaug( 1 );
p->initializePhaseSpace( 2, daugs );
EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.5 );
EvtComplex amp[3];
double dmt2 = getArg( 0 ) * t / ( 2 * EvtConst::c );
double phiCKM = ( 2.0 * getArg( 1 ) + getArg( 2 ) ); // 2b+g
EvtComplex ePlusIPhi( cos( phiCKM ), sin( phiCKM ) );
EvtComplex eMinusIPhi( cos( -phiCKM ), sin( -phiCKM ) );
// flip == 0 : D*-rho+
// flip == 1 : D*+rho-
if ( !flip ) {
if ( other_b == B0B ) {
// At t=0 we have a B0
for ( int i = 0; i < 3; ++i ) {
amp[i] = _A_f[i] * cos( dmt2 ) +
eMinusIPhi * EvtComplex( 0.0, sin( dmt2 ) ) *
_A_f[i + 3];
}
}
if ( other_b == B0 ) {
// At t=0 we have a B0bar
for ( int i = 0; i < 3; ++i ) {
amp[i] = _A_f[i] * ePlusIPhi * EvtComplex( 0.0, sin( dmt2 ) ) +
_A_f[i + 3] * cos( dmt2 );
}
}
} else {
if ( other_b == B0B ) {
// At t=0 we have a B0
// M.Baak 01/16/2004
// Note: \bar{H}+- = H-+
// If one wants to use the correct helicities for B0 and B0bar decays but the same formula-notation (as done in EvtSVV_HelAmp),
// count the B0bar helicities backwards. (Equivalently, one could flip the chi angle.)
for ( int i = 0; i < 3; ++i ) {
amp[i] = _A_f[8 - i] * cos( dmt2 ) +
eMinusIPhi * EvtComplex( 0.0, sin( dmt2 ) ) *
_A_f[11 - i];
}
}
if ( other_b == B0 ) {
// At t=0 we have a B0bar
for ( int i = 0; i < 3; ++i ) {
amp[i] = _A_f[8 - i] * ePlusIPhi * EvtComplex( 0.0, sin( dmt2 ) ) +
_A_f[11 - i] * cos( dmt2 );
}
}
}
EvtSVVHelAmp::SVVHel( p, _amp2, daugs[0], daugs[1], amp[0], amp[1], amp[2] );
return;
}
std::string EvtSVVNONCPEIGEN::getParamName( int i )
{
switch ( i ) {
case 0:
return "deltaM";
case 1:
return "weakPhase1";
case 2:
return "weakPhase2";
case 3:
return "AfPlusHelAmp";
case 4:
return "AfPlusHelAmpPhase";
case 5:
return "AfZeroHelAmp";
case 6:
return "AfZeroHelAmpPhase";
case 7:
return "AfMinusHelAmp";
case 8:
return "AfMinusHelAmpPhase";
case 9:
return "AbarfPlusHelAmp";
case 10:
return "AbarfPlusHelAmpPhase";
case 11:
return "AbarfZeroHelAmp";
case 12:
return "AbarfZeroHelAmpPhase";
case 13:
return "AbarfMinusHelAmp";
case 14:
return "AbarfMinusHelAmpPhase";
case 15:
return "AfbarPlusHelAmp";
case 16:
return "AfbarPlusHelAmpPhase";
case 17:
return "AfbarZeroHelAmp";
case 18:
return "AfbarZeroHelAmpPhase";
case 19:
return "AfbarMinusHelAmp";
case 20:
return "AfbarMinusHelAmpPhase";
case 21:
return "AbarfbarPlusHelAmp";
case 22:
return "AbarfbarPlusHelAmpPhase";
case 23:
return "AbarfbarZeroHelAmp";
case 24:
return "AbarfbarZeroHelAmpPhase";
case 25:
return "AbarfbarMinusHelAmp";
case 26:
return "AbarfbarMinusHelAmpPhase";
default:
return "";
}
}
std::string EvtSVVNONCPEIGEN::getParamDefault( int i )
{
switch ( i ) {
case 3:
return "1.0";
case 4:
return "0.0";
case 5:
return "1.0";
case 6:
return "0.0";
case 7:
return "1.0";
case 8:
return "0.0";
case 9:
return "1.0";
case 10:
return "0.0";
case 11:
return "1.0";
case 12:
return "0.0";
case 13:
return "1.0";
case 14:
return "0.0";
default:
return "";
}
}
diff --git a/src/EvtGenModels/EvtSingleParticle.cpp b/src/EvtGenModels/EvtSingleParticle.cpp
index ef2e9d8..c0f89c5 100644
--- a/src/EvtGenModels/EvtSingleParticle.cpp
+++ b/src/EvtGenModels/EvtSingleParticle.cpp
@@ -1,141 +1,121 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSingleParticle.cc
-//
-// Description: Special model to generate single particles.
-//
-// Modification history:
-//
-// RYD Febuary 17,1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSingleParticle.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtSingleParticle::getName()
{
return "SINGLE";
}
EvtDecayBase* EvtSingleParticle::clone()
{
return new EvtSingleParticle();
}
void EvtSingleParticle::init()
{
//turn off checks for charge conservation
disableCheckQ();
if ( ( getNArg() == 6 ) || ( getNArg() == 4 ) || ( getNArg() == 2 ) ) {
if ( getNArg() == 6 ) {
//copy the arguments into eaiser to remember names!
pmin = getArg( 0 );
pmax = getArg( 1 );
cthetamin = getArg( 2 );
cthetamax = getArg( 3 );
phimin = getArg( 4 );
phimax = getArg( 5 );
}
if ( getNArg() == 4 ) {
//copy the arguments into eaiser to remember names!
pmin = getArg( 0 );
pmax = getArg( 1 );
cthetamin = getArg( 2 );
cthetamax = getArg( 3 );
phimin = 0.0;
phimax = EvtConst::twoPi;
}
if ( getNArg() == 2 ) {
//copy the arguments into eaiser to remember names!
pmin = getArg( 0 );
pmax = getArg( 1 );
cthetamin = -1.0;
cthetamax = 1.0;
phimin = 0.0;
phimax = EvtConst::twoPi;
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtSingleParticle generator expected "
<< " 6, 4, or 2 arguments but found:" << getNArg() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "The single particle generator has been configured:" << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << pmax << " > p > " << pmin << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< cthetamax << " > costheta > " << cthetamin << endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< phimax << " > phi > " << phimin << endl;
}
void EvtSingleParticle::decay( EvtParticle* p )
{
EvtParticle* d;
EvtVector4R p4;
double mass = EvtPDL::getMass( getDaug( 0 ) );
p->makeDaughters( getNDaug(), getDaugs() );
d = p->getDaug( 0 );
//generate flat distribution in p
//we are now in the parents restframe! This means the
//restframe of the e+e- collison.
double pcm = EvtRandom::Flat( pmin, pmax );
//generate flat distribution in phi.
double phi = EvtRandom::Flat( phimin, phimax );
double cthetalab;
do {
//generate flat distribution in costheta
double ctheta = EvtRandom::Flat( cthetamin, cthetamax );
double stheta = sqrt( 1.0 - ctheta * ctheta );
p4.set( sqrt( mass * mass + pcm * pcm ), pcm * cos( phi ) * stheta,
pcm * sin( phi ) * stheta, pcm * ctheta );
d->init( getDaug( 0 ), p4 );
//get 4 vector in the lab frame!
EvtVector4R p4lab = d->getP4Lab();
cthetalab = p4lab.get( 3 ) / p4lab.d3mag();
} while ( cthetalab > cthetamax || cthetalab < cthetamin );
return;
}
diff --git a/src/EvtGenModels/EvtSll.cpp b/src/EvtGenModels/EvtSll.cpp
index bc9366a..2eb1593 100644
--- a/src/EvtGenModels/EvtSll.cpp
+++ b/src/EvtGenModels/EvtSll.cpp
@@ -1,82 +1,60 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtSll.cc
-//
-// Description: The decay of a scalar meson to two leptons,
-// or generally, two spin 1/2 particles.
-// E.g., B0 -> tau+ tau-
-//
-// Modification history:
-//
-// SHY April 23, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtSll.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <iostream>
#include <stdlib.h>
#include <string>
std::string EvtSll::getName()
{
return "SLL";
}
EvtDecayBase* EvtSll::clone()
{
return new EvtSll;
}
void EvtSll::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::SCALAR );
checkSpinDaughter( 0, EvtSpinType::DIRAC );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
}
void EvtSll::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle *l1, *l2;
l1 = p->getDaug( 0 );
l2 = p->getDaug( 1 );
EvtVector4R p4_p;
p4_p.set( p->mass(), 0.0, 0.0, 0.0 );
EvtVector4C l11, l12, l21, l22;
l11 = EvtLeptonVACurrent( l1->spParent( 0 ), l2->spParent( 0 ) );
l12 = EvtLeptonVACurrent( l1->spParent( 0 ), l2->spParent( 1 ) );
l21 = EvtLeptonVACurrent( l1->spParent( 1 ), l2->spParent( 0 ) );
l22 = EvtLeptonVACurrent( l1->spParent( 1 ), l2->spParent( 1 ) );
vertex( 0, 0, p4_p * l11 );
vertex( 0, 1, p4_p * l12 );
vertex( 1, 0, p4_p * l21 );
vertex( 1, 1, p4_p * l22 );
return;
}
diff --git a/src/EvtGenModels/EvtTSS.cpp b/src/EvtGenModels/EvtTSS.cpp
index 852b40d..32ee570 100644
--- a/src/EvtGenModels/EvtTSS.cpp
+++ b/src/EvtGenModels/EvtTSS.cpp
@@ -1,83 +1,62 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtTSS.cc
-//
-// Description: Routine to decay tensor-> scalar scalar
-//
-// Modification history:
-//
-// RYD November 24, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
-//
#include "EvtGenModels/EvtTSS.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
std::string EvtTSS::getName()
{
return "TSS";
}
EvtDecayBase* EvtTSS::clone()
{
return new EvtTSS;
}
void EvtTSS::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::TENSOR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
}
void EvtTSS::initProbMax()
{
setProbMax( 1.0 );
}
void EvtTSS::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4R moms1 = p->getDaug( 0 )->getP4();
double norm = 1.0 / ( moms1.d3mag() * moms1.d3mag() );
vertex( 0, norm * ( p->epsTensor( 0 ).cont1( EvtVector4C( moms1 ) ) *
( moms1 ) ) );
vertex( 1, norm * ( p->epsTensor( 1 ).cont1( EvtVector4C( moms1 ) ) *
( moms1 ) ) );
vertex( 2, norm * ( p->epsTensor( 2 ).cont1( EvtVector4C( moms1 ) ) *
( moms1 ) ) );
vertex( 3, norm * ( p->epsTensor( 3 ).cont1( EvtVector4C( moms1 ) ) *
( moms1 ) ) );
vertex( 4, norm * ( p->epsTensor( 4 ).cont1( EvtVector4C( moms1 ) ) *
( moms1 ) ) );
return;
}
diff --git a/src/EvtGenModels/EvtTVP.cpp b/src/EvtGenModels/EvtTVP.cpp
index 39d19ea..1de10d7 100644
--- a/src/EvtGenModels/EvtTVP.cpp
+++ b/src/EvtGenModels/EvtTVP.cpp
@@ -1,222 +1,196 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtTVP.cc
-//
-// Description: Routine to implement radiative decay chi_c2 -> psi gamma
-// matrix element from [S.P Baranov et al, PRD 85, 014034 (2012)]
-//
-// Description: Routine to implement radiative decay
-// chi_c2 -> psi gamma
-// chi_c2 -> psi ell ell
-//
-// Modification history:
-// AVL Jul 6, 2012: chi_c2 -> gamma psi mode created
-// AVL Oct 10, 2017: chi_c2 -> psi mu mu mode created
-// AVL Nov 9 2017: models joined
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtTVP.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <cmath>
std::string EvtTVP::getName()
{
return "TVP";
}
EvtDecayBase* EvtTVP::clone()
{
return new EvtTVP;
}
void EvtTVP::decay( EvtParticle* root )
{
if ( getNDaug() == 2 ) {
decay_2body( root );
} else if ( getNDaug() == 3 ) {
decay_3body( root );
}
}
void EvtTVP::init()
{
checkSpinParent( EvtSpinType::TENSOR );
if ( getNDaug() == 2 ) { // chi -> gamma psi radiative mode
checkNArg( 0 );
checkSpinDaughter( 0, EvtSpinType::PHOTON );
checkSpinDaughter( 1, EvtSpinType::VECTOR );
} else if ( getNDaug() == 3 ) { // chi -> psi lepton lepton
checkNDaug( 3 );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::DIRAC );
checkNArg( 1 );
delta = getArg( 0 );
}
}
void EvtTVP::initProbMax()
{
if ( getNDaug() == 2 ) {
const EvtId parId = getParentId();
if ( parId == EvtPDL::getId( "chi_b2" ) ) {
setProbMax( 15.0 );
} else {
setProbMax( 2.0 );
}
} else if ( getNDaug() == 3 ) {
double dSq = delta * delta;
double denom = dSq - 0.2;
double ratio( 1.0 );
if ( fabs( denom ) > 1e-10 ) {
ratio = dSq / denom;
}
double ffCor = ratio * ratio;
const EvtId daugId = getDaug( 1 );
const EvtId parId = getParentId();
if ( daugId == EvtPDL::getId( "mu+" ) ||
daugId == EvtPDL::getId( "mu-" ) ) {
if ( parId == EvtPDL::getId( "chi_c2" ) ) {
setProbMax( ffCor * 85.0 ); // tested on 1e6 events
} else if ( parId == EvtPDL::getId( "chi_b2" ) ) {
setProbMax( ffCor * 750.0 ); // tested on 1e6 events
}
} else if ( daugId == EvtPDL::getId( "e+" ) ||
daugId == EvtPDL::getId( "e-" ) ) {
if ( parId == EvtPDL::getId( "chi_c2" ) ) {
setProbMax( ffCor * 3.5e3 ); // tested on 1e5 events
} else if ( parId == EvtPDL::getId( "chi_b2" ) ) {
setProbMax( ffCor * 2.6e4 );
}
}
}
}
void EvtTVP::decay_2body( EvtParticle* root )
{
root->initializePhaseSpace( getNDaug(), getDaugs() );
// Photon is the first particle and psi is the second
// to ensure decay file backwards compatibility
EvtParticle* photon = root->getDaug( 0 );
EvtParticle* psi = root->getDaug( 1 );
EvtVector4R p = psi->getP4(), // psi momentum
k = photon->getP4(); // Photon momentum
for ( int iPsi = 0; iPsi < 3; iPsi++ ) {
EvtVector4C epsPsi = psi->epsParent( iPsi ).conj();
for ( int iGamma = 0; iGamma < 2; iGamma++ ) {
EvtVector4C epsGamma = photon->epsParentPhoton( iGamma ).conj();
for ( int iChi = 0; iChi < 5; iChi++ ) {
EvtTensor4C epsChi = root->epsTensor( iChi );
// Baranov PRD 85,014034 (2012), Eq 11
// amp = p^mu epsPsi^a epsChi_{a b} [k_mu epsGamma_b - k_b epsGamma_mu]
EvtVector4C eee = epsChi.cont1( epsPsi );
EvtVector4C vvv = ( p * k ) * eee - ( k * eee ) * p;
EvtComplex amp = vvv * epsGamma;
vertex( iChi, iGamma, iPsi, amp );
}
}
}
}
void EvtTVP::decay_3body( EvtParticle* root )
{
root->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle* psi = root->getDaug( 0 );
EvtParticle* mup = root->getDaug( 1 );
EvtParticle* mum = root->getDaug( 2 );
EvtVector4R p = psi->getP4(), // psi momentum
k1 = mup->getP4(), // mu+ momentum
k2 = mum->getP4(), // mu- momentum
k = k1 + k2; // photon momentum
double kSq = k * k;
// The decay amplitude needs four-vector products. Make sure we have
// valid values for these, otherwise set the amplitude to zero.
// We need to set _amp2 (EvtDecayAmp) via the vertex() function call
// even when the amplitude is zero, otherwise the amplitude from the
// previous accepted event will be used, potentially leading to biases
// Selection on k^2 to avoid inefficient generation for the electron modes
bool validAmp( true );
if ( kSq < 1e-3 ) {
validAmp = false;
}
double dSq = delta * delta;
double dSqDenom = dSq - kSq;
if ( fabs( dSqDenom ) < 1e-10 ) {
validAmp = false;
}
double factor( 1.0 );
if ( validAmp ) {
factor = dSq / ( dSqDenom * kSq );
}
// Calculate the amplitude terms, looping over the psi and lepton states
int iPols[4] = {0, 0, 0, 0};
for ( int iChi = 0; iChi < 5; iChi++ ) {
iPols[0] = iChi;
EvtTensor4C epsChi = root->epsTensor( iChi );
for ( int iPsi = 0; iPsi < 3; iPsi++ ) {
iPols[1] = iPsi;
EvtVector4C epsPsi = psi->epsParent( iPsi ).conj();
for ( int iMplus = 0; iMplus < 2; iMplus++ ) {
iPols[2] = iMplus;
EvtDiracSpinor spMplus = mup->spParent( iMplus );
for ( int iMminus = 0; iMminus < 2; iMminus++ ) {
iPols[3] = iMminus;
EvtDiracSpinor spMminus = mum->spParent( iMminus );
EvtVector4C epsGamma = EvtLeptonVCurrent( spMplus, spMminus );
// Based on Baranov PRD 85,014034 (2012), Eq 11
// amp = p^mu epsPsi^a epsChi_{a b} [k_mu epsGamma_b - k_b epsGamma_mu]/k^2
EvtVector4C eee = epsChi.cont1( epsPsi );
EvtVector4C vvv = ( p * k ) * eee - ( k * eee ) * p;
EvtComplex amp( 0.0, 0.0 );
if ( validAmp ) {
amp = vvv * epsGamma;
}
amp *= factor;
// Set the amplitude matrix element using the vertex function
vertex( iPols, amp );
}
}
}
}
}
diff --git a/src/EvtGenModels/EvtTVSPwave.cpp b/src/EvtGenModels/EvtTVSPwave.cpp
index 40a70c5..c6a188c 100644
--- a/src/EvtGenModels/EvtTVSPwave.cpp
+++ b/src/EvtGenModels/EvtTVSPwave.cpp
@@ -1,171 +1,150 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtTVSPwave.cc
-//
-// Description: Routine to decay tensor-> vector scalar
-// by specifying the partial waves
-//
-// Modification history:
-//
-// DJL/RYD August 11, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtTVSPwave.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
std::string EvtTVSPwave::getName()
{
return "TVS_PWAVE";
}
EvtDecayBase* EvtTVSPwave::clone()
{
return new EvtTVSPwave;
}
void EvtTVSPwave::init()
{
// check that there are 6 arguments
checkNArg( 6 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::TENSOR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
}
void EvtTVSPwave::initProbMax()
{
setProbMax( 0.5 );
}
void EvtTVSPwave::decay( EvtParticle* p )
{
EvtComplex ap( getArg( 0 ) * cos( getArg( 1 ) ),
getArg( 0 ) * sin( getArg( 1 ) ) );
EvtComplex ad( getArg( 2 ) * cos( getArg( 3 ) ),
getArg( 2 ) * sin( getArg( 3 ) ) );
EvtComplex af( getArg( 4 ) * cos( getArg( 5 ) ),
getArg( 4 ) * sin( getArg( 5 ) ) );
if ( ap != EvtComplex( 0.0, 0.0 ) || af != EvtComplex( 0.0, 0.0 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "dfslkh8945wqh:In EvtTensorToVectorScalar.c\n";
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "P or F wave not yet implemented!! (ryd) \n";
}
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle* v;
v = p->getDaug( 0 );
EvtVector4R momv = v->getP4();
double massv = v->mass();
EvtComplex temp;
temp = ad;
double m_parent = p->mass();
EvtVector4R p_parent;
p_parent.set( m_parent, 0.0, 0.0, 0.0 );
EvtVector4C pep0, pep1, pep2, pep3, pep4;
EvtTensor4C pdual;
EvtVector4C epsdual0, epsdual1, epsdual2;
double norm = massv /
( m_parent * momv.get( 0 ) * momv.d3mag() * momv.d3mag() );
pdual = dual( EvtGenFunctions::directProd( norm * p_parent, momv ) );
epsdual0 = pdual.cont1( v->epsParent( 0 ).conj() );
epsdual1 = pdual.cont1( v->epsParent( 1 ).conj() );
epsdual2 = pdual.cont1( v->epsParent( 2 ).conj() );
pep0 = p->epsTensor( 0 ).cont1( momv );
pep1 = p->epsTensor( 1 ).cont1( momv );
pep2 = p->epsTensor( 2 ).cont1( momv );
pep3 = p->epsTensor( 3 ).cont1( momv );
pep4 = p->epsTensor( 4 ).cont1( momv );
vertex( 0, 0, pep0 * epsdual0 );
vertex( 1, 0, pep1 * epsdual0 );
vertex( 2, 0, pep2 * epsdual0 );
vertex( 3, 0, pep3 * epsdual0 );
vertex( 4, 0, pep4 * epsdual0 );
vertex( 0, 1, pep0 * epsdual1 );
vertex( 1, 1, pep1 * epsdual1 );
vertex( 2, 1, pep2 * epsdual1 );
vertex( 3, 1, pep3 * epsdual1 );
vertex( 4, 1, pep4 * epsdual1 );
vertex( 0, 2, pep0 * epsdual2 );
vertex( 1, 2, pep1 * epsdual2 );
vertex( 2, 2, pep2 * epsdual2 );
vertex( 3, 2, pep3 * epsdual2 );
vertex( 4, 2, pep4 * epsdual2 );
return;
}
std::string EvtTVSPwave::getParamName( int i )
{
switch ( i ) {
case 0:
return "PWave";
case 1:
return "PWavePhase";
case 2:
return "DWave";
case 3:
return "DWavePhase";
case 4:
return "FWave";
case 5:
return "FWavePhase";
default:
return "";
}
}
std::string EvtTVSPwave::getParamDefault( int i )
{
switch ( i ) {
case 0:
return "0.0";
case 1:
return "0.0";
case 2:
return "1.0";
case 3:
return "0.0";
case 4:
return "0.0";
case 5:
return "0.0";
default:
return "";
}
}
diff --git a/src/EvtGenModels/EvtTauHadnu.cpp b/src/EvtGenModels/EvtTauHadnu.cpp
index 6cf5295..76ddba8 100644
--- a/src/EvtGenModels/EvtTauHadnu.cpp
+++ b/src/EvtGenModels/EvtTauHadnu.cpp
@@ -1,267 +1,246 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtTauHadnu.cc
-//
-// Description: The leptonic decay of the tau meson.
-// E.g., tau- -> e- nueb nut
-//
-// Modification history:
-//
-// RYD January 17, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtTauHadnu.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
std::string EvtTauHadnu::getName()
{
return "TAUHADNU";
}
EvtDecayBase* EvtTauHadnu::clone()
{
return new EvtTauHadnu;
}
void EvtTauHadnu::init()
{
// check that there are 0 arguments
checkSpinParent( EvtSpinType::DIRAC );
//the last daughter should be a neutrino
checkSpinDaughter( getNDaug() - 1, EvtSpinType::NEUTRINO );
int i;
for ( i = 0; i < ( getNDaug() - 1 ); i++ ) {
checkSpinDaughter( i, EvtSpinType::SCALAR );
}
bool validndaug = false;
if ( getNDaug() == 4 ) {
//pipinu
validndaug = true;
checkNArg( 7 );
_beta = getArg( 0 );
_mRho = getArg( 1 );
_gammaRho = getArg( 2 );
_mRhopr = getArg( 3 );
_gammaRhopr = getArg( 4 );
_mA1 = getArg( 5 );
_gammaA1 = getArg( 6 );
}
if ( getNDaug() == 3 ) {
//pipinu
validndaug = true;
checkNArg( 5 );
_beta = getArg( 0 );
_mRho = getArg( 1 );
_gammaRho = getArg( 2 );
_mRhopr = getArg( 3 );
_gammaRhopr = getArg( 4 );
}
if ( getNDaug() == 2 ) {
//pipinu
validndaug = true;
checkNArg( 0 );
}
if ( !validndaug ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Have not yet implemented this final state in TAUHADNUKS model"
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Ndaug=" << getNDaug() << endl;
int id;
for ( id = 0; id < ( getNDaug() - 1 ); id++ )
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Daug " << id << " " << EvtPDL::name( getDaug( id ) ).c_str()
<< endl;
}
}
void EvtTauHadnu::initProbMax()
{
if ( getNDaug() == 2 )
setProbMax( 90.0 );
if ( getNDaug() == 3 )
setProbMax( 2500.0 );
if ( getNDaug() == 4 )
setProbMax( 30000.0 );
}
void EvtTauHadnu::decay( EvtParticle* p )
{
static EvtId TAUM = EvtPDL::getId( "tau-" );
EvtIdSet thePis( "pi+", "pi-", "pi0" );
EvtIdSet theKs( "K+", "K-" );
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle* nut;
nut = p->getDaug( getNDaug() - 1 );
p->getDaug( 0 )->getP4();
//get the leptonic current
EvtVector4C tau1, tau2;
if ( p->getId() == TAUM ) {
tau1 = EvtLeptonVACurrent( nut->spParentNeutrino(), p->sp( 0 ) );
tau2 = EvtLeptonVACurrent( nut->spParentNeutrino(), p->sp( 1 ) );
} else {
tau1 = EvtLeptonVACurrent( p->sp( 0 ), nut->spParentNeutrino() );
tau2 = EvtLeptonVACurrent( p->sp( 1 ), nut->spParentNeutrino() );
}
EvtVector4C hadCurr;
bool foundHadCurr = false;
if ( getNDaug() == 2 ) {
hadCurr = p->getDaug( 0 )->getP4();
foundHadCurr = true;
}
if ( getNDaug() == 3 ) {
//pi pi0 nu with rho and rhopr resonance
if ( thePis.contains( getDaug( 0 ) ) && thePis.contains( getDaug( 1 ) ) ) {
EvtVector4R q1 = p->getDaug( 0 )->getP4();
EvtVector4R q2 = p->getDaug( 1 )->getP4();
double m1 = q1.mass();
double m2 = q2.mass();
hadCurr = Fpi( ( q1 + q2 ).mass2(), m1, m2 ) * ( q1 - q2 );
foundHadCurr = true;
}
}
if ( getNDaug() == 4 ) {
if ( thePis.contains( getDaug( 0 ) ) && thePis.contains( getDaug( 1 ) ) &&
thePis.contains( getDaug( 2 ) ) ) {
//figure out which is the different charged pi
//want it to be q3
int diffPi( 0 ), samePi1( 0 ), samePi2( 0 );
if ( getDaug( 0 ) == getDaug( 1 ) ) {
diffPi = 2;
samePi1 = 0;
samePi2 = 1;
}
if ( getDaug( 0 ) == getDaug( 2 ) ) {
diffPi = 1;
samePi1 = 0;
samePi2 = 2;
}
if ( getDaug( 1 ) == getDaug( 2 ) ) {
diffPi = 0;
samePi1 = 1;
samePi2 = 2;
}
EvtVector4R q1 = p->getDaug( samePi1 )->getP4();
EvtVector4R q2 = p->getDaug( samePi2 )->getP4();
EvtVector4R q3 = p->getDaug( diffPi )->getP4();
double m1 = q1.mass();
double m2 = q2.mass();
double m3 = q3.mass();
EvtVector4R Q = q1 + q2 + q3;
double Q2 = Q.mass2();
double _mA12 = _mA1 * _mA1;
double _gammaA1X = _gammaA1 * gFunc( Q2, samePi1 ) /
gFunc( _mA12, samePi1 );
EvtComplex denBW_A1( _mA12 - Q2, -1. * _mA1 * _gammaA1X );
EvtComplex BW_A1 = _mA12 / denBW_A1;
hadCurr = BW_A1 *
( ( ( q1 - q3 ) - ( Q * ( Q * ( q1 - q3 ) ) / Q2 ) ) *
Fpi( ( q1 + q3 ).mass2(), m1, m3 ) +
( ( q2 - q3 ) - ( Q * ( Q * ( q2 - q3 ) ) / Q2 ) ) *
Fpi( ( q2 + q3 ).mass2(), m2, m3 ) );
foundHadCurr = true;
}
}
if ( !foundHadCurr ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Have not yet implemented this final state in TAUHADNUKS model"
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Ndaug=" << getNDaug() << endl;
int id;
for ( id = 0; id < ( getNDaug() - 1 ); id++ )
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Daug " << id << " " << EvtPDL::name( getDaug( id ) ).c_str()
<< endl;
}
vertex( 0, tau1 * hadCurr );
vertex( 1, tau2 * hadCurr );
return;
}
double EvtTauHadnu::gFunc( double Q2, int dupD )
{
double mpi = EvtPDL::getMeanMass( getDaug( dupD ) );
double mpi2 = pow( mpi, 2. );
if ( Q2 < pow( _mRho + mpi, 2. ) ) {
double arg = Q2 - 9. * mpi2;
return 4.1 * pow( arg, 3. ) * ( 1. - 3.3 * arg + 5.8 * pow( arg, 2. ) );
} else
return Q2 * ( 1.623 + 10.38 / Q2 - 9.32 / pow( Q2, 2. ) +
0.65 / pow( Q2, 3. ) );
}
EvtComplex EvtTauHadnu::Fpi( double s, double xm1, double xm2 )
{
EvtComplex BW_rho = BW( s, _mRho, _gammaRho, xm1, xm2 );
EvtComplex BW_rhopr = BW( s, _mRhopr, _gammaRhopr, xm1, xm2 );
return ( BW_rho + _beta * BW_rhopr ) / ( 1. + _beta );
}
EvtComplex EvtTauHadnu::BW( double s, double m, double gamma, double xm1,
double xm2 )
{
double m2 = pow( m, 2. );
if ( s > pow( xm1 + xm2, 2. ) ) {
double qs = sqrt( fabs( ( s - pow( xm1 + xm2, 2. ) ) *
( s - pow( xm1 - xm2, 2. ) ) ) ) /
sqrt( s );
double qm = sqrt( fabs( ( m2 - pow( xm1 + xm2, 2. ) ) *
( m2 - pow( xm1 - xm2, 2. ) ) ) ) /
m;
gamma *= m2 / s * pow( qs / qm, 3. );
} else
gamma = 0.;
EvtComplex denBW( m2 - s, -1. * sqrt( s ) * gamma );
return m2 / denBW;
}
diff --git a/src/EvtGenModels/EvtTauScalarnu.cpp b/src/EvtGenModels/EvtTauScalarnu.cpp
index 189b807..30128d2 100644
--- a/src/EvtGenModels/EvtTauScalarnu.cpp
+++ b/src/EvtGenModels/EvtTauScalarnu.cpp
@@ -1,86 +1,65 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtTauScalarnu.cc
-//
-// Description: The leptonic decay of the tau meson.
-// E.g., tau- -> e- nueb nut
-//
-// Modification history:
-//
-// RYD January 17, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtTauScalarnu.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <iostream>
#include <stdlib.h>
#include <string>
std::string EvtTauScalarnu::getName()
{
return "TAUSCALARNU";
}
EvtDecayBase* EvtTauScalarnu::clone()
{
return new EvtTauScalarnu;
}
void EvtTauScalarnu::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::DIRAC );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::NEUTRINO );
}
void EvtTauScalarnu::initProbMax()
{
setProbMax( 90.0 );
}
void EvtTauScalarnu::decay( EvtParticle* p )
{
static EvtId TAUM = EvtPDL::getId( "tau-" );
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle* nut;
nut = p->getDaug( 1 );
EvtVector4R momscalar = p->getDaug( 0 )->getP4();
EvtVector4C tau1, tau2;
if ( p->getId() == TAUM ) {
tau1 = EvtLeptonVACurrent( nut->spParentNeutrino(), p->sp( 0 ) );
tau2 = EvtLeptonVACurrent( nut->spParentNeutrino(), p->sp( 1 ) );
} else {
tau1 = EvtLeptonVACurrent( p->sp( 0 ), nut->spParentNeutrino() );
tau2 = EvtLeptonVACurrent( p->sp( 1 ), nut->spParentNeutrino() );
}
vertex( 0, tau1 * momscalar );
vertex( 1, tau2 * momscalar );
return;
}
diff --git a/src/EvtGenModels/EvtTauVectornu.cpp b/src/EvtGenModels/EvtTauVectornu.cpp
index 145c0bb..d65c204 100644
--- a/src/EvtGenModels/EvtTauVectornu.cpp
+++ b/src/EvtGenModels/EvtTauVectornu.cpp
@@ -1,92 +1,71 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtTauVectornu.cc
-//
-// Description: The vector decay of the tau meson.
-// E.g., tau- -> rho- + nut
-//
-// Modification history:
-//
-// RYD/SHY April 23, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtTauVectornu.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <iostream>
#include <stdlib.h>
#include <string>
std::string EvtTauVectornu::getName()
{
return "TAUVECTORNU";
}
EvtDecayBase* EvtTauVectornu::clone()
{
return new EvtTauVectornu;
}
void EvtTauVectornu::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::DIRAC );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::NEUTRINO );
}
void EvtTauVectornu::initProbMax()
{
setProbMax( 55.0 );
}
void EvtTauVectornu::decay( EvtParticle* p )
{
static EvtId TAUM = EvtPDL::getId( "tau-" );
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle *v, *nut;
v = p->getDaug( 0 );
nut = p->getDaug( 1 );
double mvec = v->mass();
EvtVector4C tau1, tau2;
if ( p->getId() == TAUM ) {
tau1 = EvtLeptonVACurrent( nut->spParentNeutrino(), p->sp( 0 ) );
tau2 = EvtLeptonVACurrent( nut->spParentNeutrino(), p->sp( 1 ) );
} else {
tau1 = EvtLeptonVACurrent( p->sp( 0 ), nut->spParentNeutrino() );
tau2 = EvtLeptonVACurrent( p->sp( 1 ), nut->spParentNeutrino() );
}
double norm = mvec * sqrt( mvec );
vertex( 0, 0, norm * tau1 * ( v->epsParent( 0 ).conj() ) );
vertex( 0, 1, norm * tau1 * ( v->epsParent( 1 ).conj() ) );
vertex( 0, 2, norm * tau1 * ( v->epsParent( 2 ).conj() ) );
vertex( 1, 0, norm * tau2 * ( v->epsParent( 0 ).conj() ) );
vertex( 1, 1, norm * tau2 * ( v->epsParent( 1 ).conj() ) );
vertex( 1, 2, norm * tau2 * ( v->epsParent( 2 ).conj() ) );
return;
}
diff --git a/src/EvtGenModels/EvtTaulnunu.cpp b/src/EvtGenModels/EvtTaulnunu.cpp
index 0a95223..4f81ea7 100644
--- a/src/EvtGenModels/EvtTaulnunu.cpp
+++ b/src/EvtGenModels/EvtTaulnunu.cpp
@@ -1,97 +1,76 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtTaulnunu.cc
-//
-// Description: The leptonic decay of the tau meson.
-// E.g., tau- -> e- nueb nut
-//
-// Modification history:
-//
-// RYD January 17, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtTaulnunu.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <iostream>
#include <stdlib.h>
#include <string>
std::string EvtTaulnunu::getName()
{
return "TAULNUNU";
}
EvtDecayBase* EvtTaulnunu::clone()
{
return new EvtTaulnunu;
}
void EvtTaulnunu::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::DIRAC );
checkSpinDaughter( 0, EvtSpinType::DIRAC );
checkSpinDaughter( 1, EvtSpinType::NEUTRINO );
checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
}
void EvtTaulnunu::initProbMax()
{
setProbMax( 650.0 );
}
void EvtTaulnunu::decay( EvtParticle* p )
{
static EvtId TAUM = EvtPDL::getId( "tau-" );
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle *l, *nul, *nut;
l = p->getDaug( 0 );
nul = p->getDaug( 1 );
nut = p->getDaug( 2 );
EvtVector4C l1, l2, tau1, tau2;
if ( p->getId() == TAUM ) {
tau1 = EvtLeptonVACurrent( nut->spParentNeutrino(), p->sp( 0 ) );
tau2 = EvtLeptonVACurrent( nut->spParentNeutrino(), p->sp( 1 ) );
l1 = EvtLeptonVACurrent( l->spParent( 0 ), nul->spParentNeutrino() );
l2 = EvtLeptonVACurrent( l->spParent( 1 ), nul->spParentNeutrino() );
} else {
tau1 = EvtLeptonVACurrent( p->sp( 0 ), nut->spParentNeutrino() );
tau2 = EvtLeptonVACurrent( p->sp( 1 ), nut->spParentNeutrino() );
l1 = EvtLeptonVACurrent( nul->spParentNeutrino(), l->spParent( 0 ) );
l2 = EvtLeptonVACurrent( nul->spParentNeutrino(), l->spParent( 1 ) );
}
vertex( 0, 0, tau1 * l1 );
vertex( 0, 1, tau1 * l2 );
vertex( 1, 0, tau2 * l1 );
vertex( 1, 1, tau2 * l2 );
return;
}
diff --git a/src/EvtGenModels/EvtVPHOtoV.cpp b/src/EvtGenModels/EvtVPHOtoV.cpp
index 23ac5c8..09c8072 100644
--- a/src/EvtGenModels/EvtVPHOtoV.cpp
+++ b/src/EvtGenModels/EvtVPHOtoV.cpp
@@ -1,82 +1,62 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2004 Cornell
-//
-// Module: EvtVPHOtoV.cc
-//
-// Description: Routine to decay vpho -> vector
-//
-// Modification history:
-//
-// Ryd March 9, 2004 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVPHOtoV.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <stdlib.h>
#include <string>
std::string EvtVPHOtoV::getName()
{
return "VPHOTOV";
}
EvtDecayBase* EvtVPHOtoV::clone()
{
return new EvtVPHOtoV;
}
void EvtVPHOtoV::init()
{
// check that there are 0 arguments
checkNArg( 0 );
// check that there are 1 daughters
checkNDaug( 1 );
// check the parent and daughter spins
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
}
void EvtVPHOtoV::initProbMax()
{
setProbMax( 1.0 );
}
void EvtVPHOtoV::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle* d = p->getDaug( 0 );
d->setP4( p->getP4Restframe() );
vertex( 0, 0, p->eps( 0 ) * p->epsParent( 0 ).conj() );
vertex( 1, 0, p->eps( 1 ) * p->epsParent( 0 ).conj() );
vertex( 2, 0, p->eps( 2 ) * p->epsParent( 0 ).conj() );
vertex( 0, 1, p->eps( 0 ) * p->epsParent( 1 ).conj() );
vertex( 1, 1, p->eps( 1 ) * p->epsParent( 1 ).conj() );
vertex( 2, 1, p->eps( 2 ) * p->epsParent( 1 ).conj() );
vertex( 0, 2, p->eps( 0 ) * p->epsParent( 2 ).conj() );
vertex( 1, 2, p->eps( 1 ) * p->epsParent( 2 ).conj() );
vertex( 2, 2, p->eps( 2 ) * p->epsParent( 2 ).conj() );
return;
}
diff --git a/src/EvtGenModels/EvtVPHOtoVISR.cpp b/src/EvtGenModels/EvtVPHOtoVISR.cpp
index f71f0d3..9d012f3 100644
--- a/src/EvtGenModels/EvtVPHOtoVISR.cpp
+++ b/src/EvtGenModels/EvtVPHOtoVISR.cpp
@@ -1,194 +1,174 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2004 Cornell
-//
-// Module: EvtVPHOtoVISR.cc
-//
-// Description: Routine to decay vpho -> vector ISR photon
-//
-// Modification history:
-//
-// Ryd March 20, 2004 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVPHOtoVISR.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <stdlib.h>
#include <string>
std::string EvtVPHOtoVISR::getName()
{
return "VPHOTOVISR";
}
EvtDecayBase* EvtVPHOtoVISR::clone()
{
return new EvtVPHOtoVISR;
}
void EvtVPHOtoVISR::init()
{
// check that there are 0 or 2 arguments
checkNArg( 0, 2 );
// check that there are 2 daughters
checkNDaug( 2 );
// check the parent and daughter spins
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::PHOTON );
}
void EvtVPHOtoVISR::initProbMax()
{
//setProbMax(100000.0);
}
void EvtVPHOtoVISR::decay( EvtParticle* p )
{
//take photon along z-axis, either forward or backward.
//Implement this as generating the photon momentum along
//the z-axis uniformly
double w = p->mass();
double s = w * w;
double L = 2.0 * log( w / 0.000511 );
double alpha = 1 / 137.0;
double beta = ( L - 1 ) * 2.0 * alpha / EvtConst::pi;
//This uses the fact that there is a daughter of the
//psi(3770)
assert( p->getDaug( 0 )->getDaug( 0 ) != 0 );
double md = EvtPDL::getMeanMass( p->getDaug( 0 )->getDaug( 0 )->getId() );
static double mD0 = EvtPDL::getMeanMass( EvtPDL::getId( "D0" ) );
static double mDp = EvtPDL::getMeanMass( EvtPDL::getId( "D+" ) );
double pgmax = ( s - 4.0 * md * md ) / ( 2.0 * w );
assert( pgmax > 0.0 );
double pgz = 0.99 * pgmax * exp( log( EvtRandom::Flat( 1.0 ) ) / beta );
if ( EvtRandom::Flat( 1.0 ) < 0.5 )
pgz = -pgz;
double k = fabs( pgz );
EvtVector4R p4g( k, 0.0, 0.0, pgz );
EvtVector4R p4res = p->getP4Restframe() - p4g;
double mres = p4res.mass();
double ed = mres / 2.0;
assert( ed > md );
double pd = sqrt( ed * ed - md * md );
//std::cout << "k, mres, w, md, ed, pd:"<<k<<" "<<mres<<" "<<w<<" "<<md<<" "<<ed<<" "<<pd<<std::endl;
p->getDaug( 0 )->init( getDaug( 0 ), p4res );
p->getDaug( 1 )->init( getDaug( 1 ), p4g );
double sigma =
beta * pow( 2 / w, beta ) *
( 1 + alpha * ( 1.5 * L - 2.0 + EvtConst::pi * EvtConst::pi / 3.0 ) /
EvtConst::pi );
double m = EvtPDL::getMeanMass( p->getDaug( 0 )->getId() );
double Gamma = EvtPDL::getWidth( p->getDaug( 0 )->getId() );
//mres is the energy of the psi(3770)
double p0 = 0.0;
if ( ed > mD0 )
p0 = sqrt( ed * ed - mD0 * mD0 );
double pp = 0.0;
if ( ed > mDp )
pp = sqrt( ed * ed - mDp * mDp );
double p0norm = sqrt( 0.25 * m * m - mD0 * mD0 );
double ppnorm = sqrt( 0.25 * m * m - mDp * mDp );
double r0 = 12.7;
double rp = 12.7;
if ( getNArg() == 2 ) {
r0 = getArg( 0 );
rp = getArg( 1 );
}
double GammaTot =
Gamma *
( pp * pp * pp / ( 1 + pp * pp * rp * rp ) +
p0 * p0 * p0 / ( 1 + p0 * p0 * r0 * r0 ) ) /
( ppnorm * ppnorm * ppnorm / ( 1 + ppnorm * ppnorm * rp * rp ) +
p0norm * p0norm * p0norm / ( 1 + p0norm * p0norm * r0 * r0 ) );
sigma *= pd * pd * pd /
( ( mres - m ) * ( mres - m ) + 0.25 * GammaTot * GammaTot );
assert( sigma > 0.0 );
static double sigmax = sigma;
if ( sigma > sigmax ) {
sigmax = sigma;
}
static int count = 0;
count++;
//if (count%10000==0){
// std::cout << "sigma :"<<sigma<<std::endl;
// std::cout << "sigmax:"<<sigmax<<std::endl;
//}
double norm = sqrt( sigma );
vertex( 0, 0, 0, norm * p->eps( 0 ) * p->epsParent( 0 ).conj() );
vertex( 1, 0, 0, norm * p->eps( 1 ) * p->epsParent( 0 ).conj() );
vertex( 2, 0, 0, norm * p->eps( 2 ) * p->epsParent( 0 ).conj() );
vertex( 0, 1, 0, norm * p->eps( 0 ) * p->epsParent( 1 ).conj() );
vertex( 1, 1, 0, norm * p->eps( 1 ) * p->epsParent( 1 ).conj() );
vertex( 2, 1, 0, norm * p->eps( 2 ) * p->epsParent( 1 ).conj() );
vertex( 0, 2, 0, norm * p->eps( 0 ) * p->epsParent( 2 ).conj() );
vertex( 1, 2, 0, norm * p->eps( 1 ) * p->epsParent( 2 ).conj() );
vertex( 2, 2, 0, norm * p->eps( 2 ) * p->epsParent( 2 ).conj() );
vertex( 0, 0, 1, norm * p->eps( 0 ) * p->epsParent( 0 ).conj() );
vertex( 1, 0, 1, norm * p->eps( 1 ) * p->epsParent( 0 ).conj() );
vertex( 2, 0, 1, norm * p->eps( 2 ) * p->epsParent( 0 ).conj() );
vertex( 0, 1, 1, norm * p->eps( 0 ) * p->epsParent( 1 ).conj() );
vertex( 1, 1, 1, norm * p->eps( 1 ) * p->epsParent( 1 ).conj() );
vertex( 2, 1, 1, norm * p->eps( 2 ) * p->epsParent( 1 ).conj() );
vertex( 0, 2, 1, norm * p->eps( 0 ) * p->epsParent( 2 ).conj() );
vertex( 1, 2, 1, norm * p->eps( 1 ) * p->epsParent( 2 ).conj() );
vertex( 2, 2, 1, norm * p->eps( 2 ) * p->epsParent( 2 ).conj() );
return;
}
diff --git a/src/EvtGenModels/EvtVPHOtoVISRHi.cpp b/src/EvtGenModels/EvtVPHOtoVISRHi.cpp
index fc274a0..a4a5aac 100644
--- a/src/EvtGenModels/EvtVPHOtoVISRHi.cpp
+++ b/src/EvtGenModels/EvtVPHOtoVISRHi.cpp
@@ -1,330 +1,310 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2004 Cornell
-//
-// Module: EvtVPHOtoVISR.cc
-//
-// Description: Routine to decay vpho -> (DDx) + ISR photon from 3.9 to 4.3 GeV, using CLEO-c data (Brian Lang)
-//
-// Modification history:
-//
-// Ryd March 20, 2004 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVPHOtoVISRHi.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtVPHOtoVISRHi::getName()
{
return "VPHOTOVISRHI";
}
EvtDecayBase* EvtVPHOtoVISRHi::clone()
{
return new EvtVPHOtoVISRHi;
}
void EvtVPHOtoVISRHi::init()
{
// check that there are 0 or 1 arguments
checkNArg( 0, 1 );
// check that there are 2 daughters
checkNDaug( 2 );
// check the parent and daughter spins
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::PHOTON );
}
void EvtVPHOtoVISRHi::initProbMax()
{
setProbMax( 20.0 );
}
void EvtVPHOtoVISRHi::decay( EvtParticle* p )
{
//take photon along z-axis, either forward or backward.
//Implement this as generating the photon momentum along
//the z-axis uniformly
double power = 1;
if ( getNArg() == 1 )
power = getArg( 0 );
// define particle names
static EvtId D0 = EvtPDL::getId( "D0" );
static EvtId D0B = EvtPDL::getId( "anti-D0" );
static EvtId DP = EvtPDL::getId( "D+" );
static EvtId DM = EvtPDL::getId( "D-" );
static EvtId DSM = EvtPDL::getId( "D_s-" );
static EvtId DSP = EvtPDL::getId( "D_s+" );
static EvtId DSMS = EvtPDL::getId( "D_s*-" );
static EvtId DSPS = EvtPDL::getId( "D_s*+" );
static EvtId D0S = EvtPDL::getId( "D*0" );
static EvtId D0BS = EvtPDL::getId( "anti-D*0" );
static EvtId DPS = EvtPDL::getId( "D*+" );
static EvtId DMS = EvtPDL::getId( "D*-" );
// setup some parameters
double w = p->mass();
double s = w * w;
double L = 2.0 * log( w / 0.000511 );
double alpha = 1 / 137.0;
double beta = ( L - 1 ) * 2.0 * alpha / EvtConst::pi;
// make sure only 2 or 3 body are present
assert( p->getDaug( 0 )->getNDaug() == 2 || p->getDaug( 0 )->getNDaug() == 3 );
// determine minimum rest mass of parent
double md1 = EvtPDL::getMeanMass( p->getDaug( 0 )->getDaug( 0 )->getId() );
double md2 = EvtPDL::getMeanMass( p->getDaug( 0 )->getDaug( 1 )->getId() );
double minResMass = md1 + md2;
if ( p->getDaug( 0 )->getNDaug() == 3 ) {
double md3 = EvtPDL::getMeanMass( p->getDaug( 0 )->getDaug( 2 )->getId() );
minResMass = minResMass + md3;
}
// calculate the maximum energy of the ISR photon
double pgmax = ( s - minResMass * minResMass ) / ( 2.0 * w );
double pgz = 0.99 * pgmax *
exp( log( EvtRandom::Flat( 1.0 ) ) / ( beta * power ) );
if ( EvtRandom::Flat( 1.0 ) < 0.5 )
pgz = -pgz;
double k = fabs( pgz );
// print of ISR energy
// std::cout << "Energy ISR :"<< k <<std::endl;
EvtVector4R p4g( k, 0.0, 0.0, pgz );
EvtVector4R p4res = p->getP4Restframe() - p4g;
double mres = p4res.mass();
// set masses
p->getDaug( 0 )->init( getDaug( 0 ), p4res );
p->getDaug( 1 )->init( getDaug( 1 ), p4g );
// determine XS - langbw
// very crude way of determining XS just a simple straight line Approx.
// this was determined by eye.
// lots of cout statements to make plots to check that things are working as expected
double sigma = 9.0;
if ( mres <= 3.9 )
sigma = 0.00001;
bool sigmacomputed( false );
// DETERMINE XS FOR D*D*
if ( p->getDaug( 0 )->getNDaug() == 2 &&
( ( p->getDaug( 0 )->getDaug( 0 )->getId() == D0S &&
p->getDaug( 0 )->getDaug( 1 )->getId() == D0BS ) ||
( p->getDaug( 0 )->getDaug( 0 )->getId() == DPS &&
p->getDaug( 0 )->getDaug( 1 )->getId() == DMS ) ) ) {
if ( mres > 4.18 ) {
sigma *= 5. / 9. *
( 1. - 1. * sqrt( ( 4.18 - mres ) * ( 4.18 - mres ) ) /
( 4.3 - 4.18 ) );
} else if ( mres > 4.07 && mres <= 4.18 ) {
sigma *= 5. / 9.;
} else if ( mres <= 4.07 && mres > 4.03 ) {
sigma *= ( 5. / 9. - 1.5 / 9. *
sqrt( ( 4.07 - mres ) * ( 4.07 - mres ) ) /
( 4.07 - 4.03 ) );
} else if ( mres <= 4.03 && mres >= 4.013 ) {
sigma *= ( 3.5 / 9. - 3.5 / 9. *
sqrt( ( 4.03 - mres ) * ( 4.03 - mres ) ) /
( 4.03 - 4.013 ) );
} else {
sigma = 0.00001;
}
sigmacomputed = true;
// std::cout << "DSDSXS "<<sigma<< " " << mres<<std::endl;
}
// DETERMINE XS FOR D*D
if ( p->getDaug( 0 )->getNDaug() == 2 &&
( ( p->getDaug( 0 )->getDaug( 0 )->getId() == D0S &&
p->getDaug( 0 )->getDaug( 1 )->getId() == D0B ) ||
( p->getDaug( 0 )->getDaug( 0 )->getId() == DPS &&
p->getDaug( 0 )->getDaug( 1 )->getId() == DM ) ||
( p->getDaug( 0 )->getDaug( 0 )->getId() == D0BS &&
p->getDaug( 0 )->getDaug( 1 )->getId() == D0 ) ||
( p->getDaug( 0 )->getDaug( 0 )->getId() == DMS &&
p->getDaug( 0 )->getDaug( 1 )->getId() == DP ) ) ) {
if ( mres >= 4.2 ) {
sigma *= 1.5 / 9.;
} else if ( mres > 4.06 && mres < 4.2 ) {
sigma *= ( ( 1.5 / 9. + 2.5 / 9. *
sqrt( ( 4.2 - mres ) * ( 4.2 - mres ) ) /
( 4.2 - 4.06 ) ) );
} else if ( mres >= 4.015 && mres < 4.06 ) {
sigma *= ( ( 4. / 9. +
3. / 9. * sqrt( ( 4.06 - mres ) * ( 4.06 - mres ) ) /
( 4.06 - 4.015 ) ) );
} else if ( mres < 4.015 && mres >= 3.9 ) {
sigma *= ( ( 7. / 9. -
7 / 9. * sqrt( ( 4.015 - mres ) * ( 4.015 - mres ) ) /
( 4.015 - 3.9 ) ) );
} else {
sigma = 0.00001;
}
sigmacomputed = true;
// std::cout << "DSDXS "<<sigma<< " " << mres<<std::endl;
}
// DETERMINE XS FOR Ds*Ds*
if ( ( ( p->getDaug( 0 )->getDaug( 0 )->getId() == DSPS &&
p->getDaug( 0 )->getDaug( 1 )->getId() == DSMS ) ) ) {
if ( mres > ( 2.112 + 2.112 ) ) {
sigma = 0.4;
} else {
// sigma=0.4;
// sigma = 0 surely below Ds*Ds* threshold? - ponyisi
sigma = 0.00001;
}
sigmacomputed = true;
// std::cout << "DsSDsSXS "<<sigma<< " " << mres<<std::endl;
}
// DETERMINE XS FOR Ds*Ds
if ( p->getDaug( 0 )->getNDaug() == 2 &&
( ( p->getDaug( 0 )->getDaug( 0 )->getId() == DSPS &&
p->getDaug( 0 )->getDaug( 1 )->getId() == DSM ) ||
( p->getDaug( 0 )->getDaug( 0 )->getId() == DSMS &&
p->getDaug( 0 )->getDaug( 1 )->getId() == DSP ) ) ) {
if ( mres > 4.26 ) {
sigma = 0.05;
} else if ( mres > 4.18 && mres <= 4.26 ) {
sigma *= 1. / 9. *
( 0.05 + 0.95 * sqrt( ( 4.26 - mres ) * ( 4.26 - mres ) ) /
( 4.26 - 4.18 ) );
} else if ( mres > 4.16 && mres <= 4.18 ) {
sigma *= 1 / 9.;
} else if ( mres <= 4.16 && mres > 4.08 ) {
sigma *= 1 / 9. *
( 1 - sqrt( ( 4.16 - mres ) * ( 4.16 - mres ) ) /
( 4.16 - 4.08 ) );
} else if ( mres <= ( 4.08 ) ) {
sigma = 0.00001;
}
sigmacomputed = true;
// std::cout << "DsSDsXS "<<sigma<< " " << mres<<std::endl;
}
// DETERMINE XS FOR DD
if ( p->getDaug( 0 )->getNDaug() == 2 &&
( ( p->getDaug( 0 )->getDaug( 0 )->getId() == D0 &&
p->getDaug( 0 )->getDaug( 1 )->getId() == D0B ) ||
( p->getDaug( 0 )->getDaug( 0 )->getId() == DP &&
p->getDaug( 0 )->getDaug( 1 )->getId() == DM ) ) ) {
sigma *= 0.4 / 9.;
sigmacomputed = true;
// std::cout << "DDXS "<<sigma<< " " << mres<<std::endl;
}
// DETERMINE XS FOR DsDs
if ( p->getDaug( 0 )->getNDaug() == 2 &&
( ( p->getDaug( 0 )->getDaug( 0 )->getId() == DSP &&
p->getDaug( 0 )->getDaug( 1 )->getId() == DSM ) ) ) {
sigma *= 0.2 / 9.;
sigmacomputed = true;
// std::cout << "DsDsXS "<<sigma<< " " << mres<<std::endl;
}
// DETERMINE XS FOR MULTIBODY
if ( p->getDaug( 0 )->getNDaug() == 3 ) {
if ( mres > 4.03 ) {
sigma *= 0.5 / 9.;
} else {
sigma = 0.00001;
}
sigmacomputed = true;
// std::cout << "DSDpiXS "<<sigma<< " " << mres<<std::endl;
}
if ( !sigmacomputed ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "VPHOTOVISRHI: This model requires daughters to be listed in a particular order."
<< endl
<< "The following are acceptable:" << endl
<< "D0 anti-D0" << endl
<< "D+ D-" << endl
<< "D*0 anti-D0" << endl
<< "anti-D*0 D0" << endl
<< "D*+ D-" << endl
<< "D*- D+" << endl
<< "D*0 anti-D*0" << endl
<< "D*+ D*-" << endl
<< "D_s+ D_s-" << endl
<< "D_s*+ D_s-" << endl
<< "D_s*- D_s+" << endl
<< "D_s*+ D_s*-" << endl
<< "(D* D pi can be in any order)" << endl
<< "Aborting..." << endl;
assert( 0 );
}
if ( sigma < 0 )
sigma = 0.0;
// static double sigmax=sigma;
// if (sigma>sigmax){
// sigmax=sigma;
// }
static int count = 0;
count++;
// if (count%10000==0){
// std::cout << "sigma :"<<sigma<<std::endl;
// std::cout << "sigmax:"<<sigmax<<std::endl;
// }
double norm = sqrt( sigma );
// EvtParticle* d=p->getDaug(0);
vertex( 0, 0, 0, norm * p->eps( 0 ) * p->epsParent( 0 ).conj() );
vertex( 1, 0, 0, norm * p->eps( 1 ) * p->epsParent( 0 ).conj() );
vertex( 2, 0, 0, norm * p->eps( 2 ) * p->epsParent( 0 ).conj() );
vertex( 0, 1, 0, norm * p->eps( 0 ) * p->epsParent( 1 ).conj() );
vertex( 1, 1, 0, norm * p->eps( 1 ) * p->epsParent( 1 ).conj() );
vertex( 2, 1, 0, norm * p->eps( 2 ) * p->epsParent( 1 ).conj() );
vertex( 0, 2, 0, norm * p->eps( 0 ) * p->epsParent( 2 ).conj() );
vertex( 1, 2, 0, norm * p->eps( 1 ) * p->epsParent( 2 ).conj() );
vertex( 2, 2, 0, norm * p->eps( 2 ) * p->epsParent( 2 ).conj() );
vertex( 0, 0, 1, norm * p->eps( 0 ) * p->epsParent( 0 ).conj() );
vertex( 1, 0, 1, norm * p->eps( 1 ) * p->epsParent( 0 ).conj() );
vertex( 2, 0, 1, norm * p->eps( 2 ) * p->epsParent( 0 ).conj() );
vertex( 0, 1, 1, norm * p->eps( 0 ) * p->epsParent( 1 ).conj() );
vertex( 1, 1, 1, norm * p->eps( 1 ) * p->epsParent( 1 ).conj() );
vertex( 2, 1, 1, norm * p->eps( 2 ) * p->epsParent( 1 ).conj() );
vertex( 0, 2, 1, norm * p->eps( 0 ) * p->epsParent( 2 ).conj() );
vertex( 1, 2, 1, norm * p->eps( 1 ) * p->epsParent( 2 ).conj() );
vertex( 2, 2, 1, norm * p->eps( 2 ) * p->epsParent( 2 ).conj() );
return;
}
diff --git a/src/EvtGenModels/EvtVSPPwave.cpp b/src/EvtGenModels/EvtVSPPwave.cpp
index eda0752..18a6722 100644
--- a/src/EvtGenModels/EvtVSPPwave.cpp
+++ b/src/EvtGenModels/EvtVSPPwave.cpp
@@ -1,105 +1,85 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVSPPwave.cc
-//
-// Description: Routine to decay vector-> scalar photon in P-wave
-//
-// Modification history:
-//
-// RYD November 24, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVSPPwave.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
std::string EvtVSPPwave::getName()
{
return "VSP_PWAVE";
}
EvtDecayBase* EvtVSPPwave::clone()
{
return new EvtVSPPwave;
}
void EvtVSPPwave::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::PHOTON );
}
void EvtVSPPwave::initProbMax()
{
setProbMax( 1 );
}
void EvtVSPPwave::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle* gamma;
gamma = p->getDaug( 1 );
double m_p = p->mass();
EvtVector4R momgamma = gamma->getP4();
//work in the parent ,p, rest frame.
EvtVector4R p4_p;
p4_p.set( m_p, 0.0, 0.0, 0.0 );
// Put phase space results into the daughters.
EvtTensor4C tds;
double norm = 1 / ( m_p * momgamma.d3mag() );
tds = dual( EvtGenFunctions::directProd( norm * p4_p, momgamma ) );
vertex(
0, 0,
( tds.cont1( p->eps( 0 ) ) ).cont( gamma->epsParentPhoton( 0 ).conj() ) );
vertex(
0, 1,
( tds.cont1( p->eps( 0 ) ) ).cont( gamma->epsParentPhoton( 1 ).conj() ) );
vertex(
1, 0,
( tds.cont1( p->eps( 1 ) ) ).cont( gamma->epsParentPhoton( 0 ).conj() ) );
vertex(
1, 1,
( tds.cont1( p->eps( 1 ) ) ).cont( gamma->epsParentPhoton( 1 ).conj() ) );
vertex(
2, 0,
( tds.cont1( p->eps( 2 ) ) ).cont( gamma->epsParentPhoton( 0 ).conj() ) );
vertex(
2, 1,
( tds.cont1( p->eps( 2 ) ) ).cont( gamma->epsParentPhoton( 1 ).conj() ) );
return;
}
diff --git a/src/EvtGenModels/EvtVSS.cpp b/src/EvtGenModels/EvtVSS.cpp
index 149b572..9b4da4b 100644
--- a/src/EvtGenModels/EvtVSS.cpp
+++ b/src/EvtGenModels/EvtVSS.cpp
@@ -1,75 +1,55 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVSS.cc
-//
-// Description: Routine to decay vector-> scalar scalar
-//
-// Modification history:
-//
-// RYD November 24, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVSS.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include <stdlib.h>
#include <string>
std::string EvtVSS::getName()
{
return "VSS";
}
EvtDecayBase* EvtVSS::clone()
{
return new EvtVSS;
}
void EvtVSS::init()
{
// check that there are 0 arguments
checkNArg( 0 );
// check that there are 2 daughters
checkNDaug( 2 );
// check the parent and daughter spins
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
}
void EvtVSS::initProbMax()
{
setProbMax( 1.0 );
}
void EvtVSS::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtVector4R pDaug = p->getDaug( 0 )->getP4();
double norm = 1.0 / pDaug.d3mag();
for ( int i = 0; i < 3; i++ )
vertex( i, norm * pDaug * ( p->eps( i ) ) );
return;
}
diff --git a/src/EvtGenModels/EvtVSSBMixCPT.cpp b/src/EvtGenModels/EvtVSSBMixCPT.cpp
index 2f6b8a6..acb2d37 100644
--- a/src/EvtGenModels/EvtVSSBMixCPT.cpp
+++ b/src/EvtGenModels/EvtVSSBMixCPT.cpp
@@ -1,392 +1,369 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2002 INFN-Pisa
-//
-// Module: EvtVSSBMixCPT.cc
-//
-// Description:
-// Routine to decay vector-> scalar scalar with coherent BB-like mixing
-// including CPT effects
-// Based on VSSBMIX
-//
-// Modification history:
-//
-// F. Sandrelli, Fernando M-V March 03, 2002
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVSSBMixCPT.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtVSSBMixCPT::getName()
{
return "VSS_BMIX";
}
EvtDecayBase* EvtVSSBMixCPT::clone()
{
return new EvtVSSBMixCPT;
}
void EvtVSSBMixCPT::init()
{
if ( getNArg() > 4 )
checkNArg( 14, 12, 8 );
if ( getNArg() < 1 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVSSBMix generator expected "
<< " at least 1 argument (deltam) but found:" << getNArg() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
// check that we are asked to produced exactly 2 daughters
//4 are allowed if they are aliased..
checkNDaug( 2, 4 );
if ( getNDaug() == 4 ) {
if ( getDaug( 0 ) != getDaug( 2 ) || getDaug( 1 ) != getDaug( 3 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVSSBMixCPT generator allows "
<< " 4 daughters only if 1=3 and 2=4"
<< " (but 3 and 4 are aliased " << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
// check that we are asked to decay a vector particle into a pair
// of scalar particles
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
// check that our daughter particles are charge conjugates of each other
if ( !( EvtPDL::chargeConj( getDaug( 0 ) ) == getDaug( 1 ) ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVSSBMixCPT generator expected daughters "
<< "to be charge conjugate." << endl
<< " Found " << EvtPDL::name( getDaug( 0 ) ).c_str() << " and "
<< EvtPDL::name( getDaug( 1 ) ).c_str() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
// check that both daughter particles have the same lifetime
if ( EvtPDL::getctau( getDaug( 0 ) ) != EvtPDL::getctau( getDaug( 1 ) ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVSSBMixCPT generator expected daughters "
<< "to have the same lifetime." << endl
<< " Found ctau = " << EvtPDL::getctau( getDaug( 0 ) )
<< " mm and " << EvtPDL::getctau( getDaug( 1 ) ) << " mm" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
// precompute quantities that will be used to generate events
// and print out a summary of parameters for this decay
// mixing frequency in hbar/mm
_freq = getArg( 0 ) / EvtConst::c;
// deltaG
double gamma = 1 / EvtPDL::getctau( getDaug( 0 ) ); // gamma/c (1/mm)
_dGamma = 0.0;
double dgog = 0.0;
if ( getNArg() > 1 ) {
dgog = getArg( 1 );
_dGamma = dgog * gamma;
}
// q/p
_qoverp = EvtComplex( 1.0, 0.0 );
if ( getNArg() > 2 ) {
_qoverp = EvtComplex( getArg( 2 ), 0.0 );
}
if ( getNArg() > 3 ) {
_qoverp = getArg( 2 ) *
EvtComplex( cos( getArg( 3 ) ), sin( getArg( 3 ) ) );
}
_poverq = 1.0 / _qoverp;
// decay amplitudes
_A_f = EvtComplex( 1.0, 0.0 );
_Abar_f = EvtComplex( 0.0, 0.0 );
_A_fbar = _Abar_f; // CPT conservation
_Abar_fbar = _A_f; // CPT conservation
if ( getNArg() > 4 ) {
_A_f = getArg( 4 ) *
EvtComplex( cos( getArg( 5 ) ),
sin( getArg( 5 ) ) ); // this allows for DCSD
_Abar_f = getArg( 6 ) *
EvtComplex( cos( getArg( 7 ) ),
sin( getArg( 7 ) ) ); // this allows for DCSD
if ( getNArg() > 8 ) {
// CPT violation in decay
_A_fbar = getArg( 8 ) *
EvtComplex( cos( getArg( 9 ) ), sin( getArg( 9 ) ) );
_Abar_fbar = getArg( 10 ) *
EvtComplex( cos( getArg( 11 ) ), sin( getArg( 11 ) ) );
} else {
// CPT conservation in decay
_A_fbar = _Abar_f;
_Abar_fbar = _A_f;
}
}
// CPT violation in mixing
_z = EvtComplex( 0.0, 0.0 );
if ( getNArg() > 12 ) {
_z = EvtComplex( getArg( 12 ), getArg( 13 ) );
}
// some printout
double tau = 1e12 * EvtPDL::getctau( getDaug( 0 ) ) / EvtConst::c; // in ps
double dm = 1e-12 * getArg( 0 ); // B0/anti-B0 mass difference in hbar/ps
double x = dm * tau;
double y = dgog * 0.5; //y=dgamma/(2*gamma)
double qop2 = abs( _qoverp * _qoverp );
_chib0_b0bar = qop2 * ( x * x + y * y ) /
( qop2 * ( x * x + y * y ) + 2 + x * x -
y * y ); // does not include CPT in mixing
_chib0bar_b0 = ( 1 / qop2 ) * ( x * x + y * y ) /
( ( 1 / qop2 ) * ( x * x + y * y ) + 2 + x * x -
y * y ); // does not include CPT in mixing
if ( verbose() ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "VSS_BMIXCPT will generate mixing and CPT/CP effects in mixing:"
<< endl
<< endl
<< " " << EvtPDL::name( getParentId() ).c_str() << " --> "
<< EvtPDL::name( getDaug( 0 ) ).c_str() << " + "
<< EvtPDL::name( getDaug( 1 ) ).c_str() << endl
<< endl
<< "using parameters:" << endl
<< endl
<< " delta(m) = " << dm << " hbar/ps" << endl
<< " _freq = " << _freq << " hbar/mm" << endl
<< " dgog = " << dgog << endl
<< " dGamma = " << _dGamma << " hbar/mm" << endl
<< " q/p = " << _qoverp << endl
<< " z = " << _z << endl
<< " tau = " << tau << " ps" << endl
<< " x = " << x << endl
<< " chi(B0->B0bar) = " << _chib0_b0bar << endl
<< " chi(B0bar->B0) = " << _chib0bar_b0 << endl
<< " Af = " << _A_f << endl
<< " Abarf = " << _Abar_f << endl
<< " Afbar = " << _A_fbar << endl
<< " Abarfbar = " << _Abar_fbar << endl
<< endl;
}
}
void EvtVSSBMixCPT::initProbMax()
{
// this value is ok for reasonable values of all the parameters
setProbMax( 4.0 );
}
void EvtVSSBMixCPT::decay( EvtParticle* p )
{
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
// generate a final state according to phase space
double rndm = EvtRandom::random();
if ( getNDaug() == 4 ) {
EvtId tempDaug[2];
if ( rndm < 0.5 ) {
tempDaug[0] = getDaug( 0 );
tempDaug[1] = getDaug( 3 );
} else {
tempDaug[0] = getDaug( 2 );
tempDaug[1] = getDaug( 1 );
}
p->initializePhaseSpace( 2, tempDaug );
} else { //nominal case.
p->initializePhaseSpace( 2, getDaugs() );
}
EvtParticle *s1, *s2;
s1 = p->getDaug( 0 );
s2 = p->getDaug( 1 );
//delete any daughters - if there are daughters, they
//are from the initialization and will be redone later
if ( s1->getNDaug() > 0 ) {
s1->deleteDaughters();
}
if ( s2->getNDaug() > 0 ) {
s2->deleteDaughters();
}
EvtVector4R p1 = s1->getP4();
EvtVector4R p2 = s2->getP4();
// throw a random number to decide if this final state should be mixed
rndm = EvtRandom::random();
int mixed = ( rndm < 0.5 ) ? 1 : 0;
// if this decay is mixed, choose one of the 2 possible final states
// with equal probability (re-using the same random number)
if ( mixed == 1 ) {
EvtId mixedId = ( rndm < 0.25 ) ? getDaug( 0 ) : getDaug( 1 );
EvtId mixedId2 = mixedId;
if ( getNDaug() == 4 && rndm < 0.25 )
mixedId2 = getDaug( 2 );
if ( getNDaug() == 4 && rndm > 0.25 )
mixedId2 = getDaug( 3 );
s1->init( mixedId, p1 );
s2->init( mixedId2, p2 );
}
// if this decay is unmixed, choose one of the 2 possible final states
// with equal probability (re-using the same random number)
if ( mixed == 0 ) {
EvtId unmixedId = ( rndm < 0.75 ) ? getDaug( 0 ) : getDaug( 1 );
EvtId unmixedId2 = ( rndm < 0.75 ) ? getDaug( 1 ) : getDaug( 0 );
if ( getNDaug() == 4 && rndm < 0.75 )
unmixedId2 = getDaug( 3 );
if ( getNDaug() == 4 && rndm > 0.75 )
unmixedId2 = getDaug( 2 );
s1->init( unmixedId, p1 );
s2->init( unmixedId2, p2 );
}
// choose a decay time for each final state particle using the
// lifetime (which must be the same for both particles) in pdt.table
// and calculate the lifetime difference for this event
s1->setLifetime();
s2->setLifetime();
double dct = s1->getLifetime() - s2->getLifetime(); // in mm
// Convention: _dGamma=GammaLight-GammaHeavy
EvtComplex exp1( -0.25 * _dGamma * dct, 0.5 * _freq * dct );
/*
//Find the flavor of the B that decayed first.
EvtId firstDec = (dct > 0 ) ? s2->getId() : s1->getId();
//This tags the flavor of the other particle at that time.
EvtId stateAtDeltaTeq0 = ( firstDec==B0 ) ? B0B : B0;
*/
EvtId stateAtDeltaTeq0 = ( s2->getId() == B0 ) ? B0B : B0;
// calculate the oscillation amplitude, based on wether this event is mixed or not
EvtComplex osc_amp;
//define some useful functions: (see BAD #188 eq. 39 for ref.)
EvtComplex gp = 0.5 * ( exp( -1.0 * exp1 ) + exp( exp1 ) );
EvtComplex gm = 0.5 * ( exp( -1.0 * exp1 ) - exp( exp1 ) );
EvtComplex sqz = sqrt( abs( 1 - _z * _z ) ) *
exp( EvtComplex( 0, arg( 1 - _z * _z ) / 2 ) );
EvtComplex BB = gp + _z * gm; // <B0|B0(t)>
EvtComplex barBB = -sqz * _qoverp * gm; // <B0bar|B0(t)>
EvtComplex BbarB = -sqz * _poverq * gm; // <B0|B0bar(t)>
EvtComplex barBbarB = gp - _z * gm; // <B0bar|B0bar(t)>
//
if ( !mixed && stateAtDeltaTeq0 == B0 ) {
osc_amp = BB * _A_f + barBB * _Abar_f;
}
if ( !mixed && stateAtDeltaTeq0 == B0B ) {
osc_amp = barBbarB * _Abar_fbar + BbarB * _A_fbar;
}
if ( mixed && stateAtDeltaTeq0 == B0 ) {
osc_amp = barBB * _Abar_fbar + BB * _A_fbar;
}
if ( mixed && stateAtDeltaTeq0 == B0B ) {
osc_amp = BbarB * _A_f + barBbarB * _Abar_f;
}
// store the amplitudes for each parent spin basis state
double norm = 1.0 / p1.d3mag();
vertex( 0, norm * osc_amp * p1 * ( p->eps( 0 ) ) );
vertex( 1, norm * osc_amp * p1 * ( p->eps( 1 ) ) );
vertex( 2, norm * osc_amp * p1 * ( p->eps( 2 ) ) );
return;
}
std::string EvtVSSBMixCPT::getParamName( int i )
{
switch ( i ) {
case 0:
return "deltaM";
case 1:
return "deltaGammaOverGamma";
case 2:
return "qOverP";
case 3:
return "qOverPPhase";
case 4:
return "Af";
case 5:
return "AfPhase";
case 6:
return "Abarf";
case 7:
return "AbarfPhase";
case 8:
return "Afbar";
case 9:
return "AfbarPhase";
case 10:
return "Abarfbar";
case 11:
return "AbarfbarPhase";
case 12:
return "Z";
case 13:
return "ZPhase";
default:
return "";
}
}
std::string EvtVSSBMixCPT::getParamDefault( int i )
{
switch ( i ) {
case 3:
return "0.0";
case 4:
return "1.0";
case 5:
return "0.0";
case 6:
return "1.0";
case 7:
return "0.0";
default:
return "";
}
}
diff --git a/src/EvtGenModels/EvtVSSMix.cpp b/src/EvtGenModels/EvtVSSMix.cpp
index 6dd5acd..4541305 100644
--- a/src/EvtGenModels/EvtVSSMix.cpp
+++ b/src/EvtGenModels/EvtVSSMix.cpp
@@ -1,118 +1,98 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVSSMix.cc
-//
-// Description: Routine to decay vector-> scalar scalar
-//
-// Modification history:
-//
-// RYD November 24, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVSSMix.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
std::string EvtVSSMix::getName()
{
return "VSS_MIX";
}
EvtDecayBase* EvtVSSMix::clone()
{
return new EvtVSSMix;
}
void EvtVSSMix::init()
{
// check that there are 1 arguments
checkNArg( 1 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
}
void EvtVSSMix::initProbMax()
{
setProbMax( 0.5 );
}
void EvtVSSMix::decay( EvtParticle* p )
{
//added by Lange Jan4,2000
static EvtId B0 = EvtPDL::getId( "B0" );
static EvtId B0B = EvtPDL::getId( "anti-B0" );
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle *s1, *s2;
s1 = p->getDaug( 0 );
s2 = p->getDaug( 1 );
EvtVector4R s1mom = s1->getP4();
double t1, t2, dm;
s1->setLifetime();
s2->setLifetime();
t1 = s1->getLifetime();
t2 = s2->getLifetime();
//dm should probably be a parameter to this model.
dm = getArg( 0 ) / EvtConst::c;
EvtId d1, d2;
d1 = s1->getId();
d2 = s2->getId();
double mix_amp = 0.;
if ( d1 == B0 && d2 == B0B )
mix_amp = cos( 0.5 * dm * ( t1 - t2 ) );
if ( d1 == B0B && d2 == B0 )
mix_amp = cos( 0.5 * dm * ( t1 - t2 ) );
if ( d1 == B0 && d2 == B0 )
mix_amp = sin( 0.5 * dm * ( t1 - t2 ) );
if ( d1 == B0B && d2 == B0B )
mix_amp = sin( 0.5 * dm * ( t1 - t2 ) );
double norm = 1.0 / s1mom.d3mag();
vertex( 0, norm * mix_amp * s1mom * ( p->eps( 0 ) ) );
vertex( 1, norm * mix_amp * s1mom * ( p->eps( 1 ) ) );
vertex( 2, norm * mix_amp * s1mom * ( p->eps( 2 ) ) );
return;
}
std::string EvtVSSMix::getParamName( int i )
{
switch ( i ) {
case 0:
return "deltaM";
default:
return "";
}
}
diff --git a/src/EvtGenModels/EvtVVP.cpp b/src/EvtGenModels/EvtVVP.cpp
index 516b775..43ae262 100644
--- a/src/EvtGenModels/EvtVVP.cpp
+++ b/src/EvtGenModels/EvtVVP.cpp
@@ -1,200 +1,176 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVVP.cc
-//
-// Description: Routine to implement radiative decay
-// chi_c1 -> psi gamma
-// chi_c1 -> psi ell ell
-//
-//
-// Modification history:
-// RYD September 5, 1997 Module created
-// AVL Oct 10, 2017: chi_c0 -> psi mu mu mode created
-// AVL Nov 9 2017: models joined
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVVP.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <cmath>
std::string EvtVVP::getName()
{
return "VVP";
}
EvtDecayBase* EvtVVP::clone()
{
return new EvtVVP;
}
void EvtVVP::init()
{
checkSpinParent( EvtSpinType::VECTOR );
if ( getNDaug() == 2 ) { // chi -> gamma psi radiative mode
// This model needs 0 parameters, but previously was defined as requiring 8!
// Check for 0 or 8 parameters in the decay file for backwards compatibility
checkNArg( 0, 8 );
checkNDaug( 2 );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::PHOTON );
} else if ( getNDaug() == 3 ) { // chi -> psi lepton lepton
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::DIRAC );
checkNArg( 1 );
delta = getArg( 0 );
}
}
void EvtVVP::initProbMax()
{
if ( getNDaug() == 2 ) {
setProbMax( 2.0 );
} else if ( getNDaug() == 3 ) {
const EvtId daugId = getDaug( 1 );
if ( daugId == EvtPDL::getId( "mu+" ) ||
daugId == EvtPDL::getId( "mu-" ) ) {
setProbMax( 15.0 );
} else if ( daugId == EvtPDL::getId( "e+" ) ||
daugId == EvtPDL::getId( "e-" ) ) {
setProbMax( 600.0 );
}
}
}
void EvtVVP::decay( EvtParticle* root )
{
if ( getNDaug() == 2 ) {
decay_2body( root );
} else if ( getNDaug() == 3 ) {
decay_3body( root );
}
}
void EvtVVP::decay_2body( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
// Vector is first particle, photon is the second
EvtParticle *v, *ph;
v = p->getDaug( 0 );
ph = p->getDaug( 1 );
EvtVector3C epsp[3];
EvtVector3C epsv[3];
EvtVector3C epsph[2];
epsp[0] = p->eps( 0 ).vec();
epsp[1] = p->eps( 1 ).vec();
epsp[2] = p->eps( 2 ).vec();
epsv[0] = v->eps( 0 ).vec().conj();
epsv[1] = v->eps( 1 ).vec().conj();
epsv[2] = v->eps( 2 ).vec().conj();
epsph[0] = ph->epsParentPhoton( 0 ).vec().conj();
epsph[1] = ph->epsParentPhoton( 1 ).vec().conj();
int i, j, k;
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ ) {
for ( k = 0; k < 2; k++ ) {
vertex( i, j, k, epsp[i].cross( epsv[j] ) * epsph[k] );
}
}
}
}
void EvtVVP::decay_3body( EvtParticle* root )
{
root->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle* psi = root->getDaug( 0 );
EvtParticle* mup = root->getDaug( 1 );
EvtParticle* mum = root->getDaug( 2 );
EvtVector4R k1 = mup->getP4(), // mu+ momentum
k2 = mum->getP4(), // mu- momentum
k = k1 + k2; // photon momentum
double kSq = k * k;
// The decay amplitude needs four-vector products. Make sure we have
// valid values for these, otherwise set the amplitude to zero.
// We need to set _amp2 (EvtDecayAmp) via the vertex() function call
// even when the amplitude is zero, otherwise the amplitude from the
// previous accepted event will be used, potentially leading to biases
// Selection on k^2 to avoid inefficient generation for the electron modes
bool validAmp( true );
if ( kSq < 1e-3 ) {
validAmp = false;
}
// Extra checks to make sure we are not dividing by zero
double dSq = delta * delta;
double dSqDenom = dSq - kSq;
if ( fabs( dSqDenom ) < 1e-10 ) {
validAmp = false;
}
double factor( 1.0 );
if ( validAmp ) {
factor = dSq / ( dSqDenom * kSq );
}
int iPols[4] = {0, 0, 0, 0};
// Calculate the amplitude terms, looping over the chi, psi and lepton states
for ( int iChi = 0; iChi < 3; iChi++ ) {
iPols[0] = iChi;
EvtVector4C epsChi = root->epsParent( iChi );
for ( int iPsi = 0; iPsi < 3; iPsi++ ) {
iPols[1] = iPsi;
EvtVector4C epsPsi = psi->epsParent( iPsi ).conj();
for ( int iMplus = 0; iMplus < 2; iMplus++ ) {
iPols[2] = iMplus;
EvtDiracSpinor spMplus = mup->spParent( iMplus );
for ( int iMminus = 0; iMminus < 2; iMminus++ ) {
iPols[3] = iMminus;
EvtDiracSpinor spMminus = mum->spParent( iMminus );
EvtVector4C epsGamma =
EvtLeptonVCurrent( spMplus, spMminus ).conj();
// Based on Baranov PRD 85,014034 (2012), Eq 10
// amp = e_{mu nu alpha beta} epsChi^mu epsPsi^nu epsGamma^alpha k^beta/k^2
EvtComplex amp( 0.0, 0.0 );
if ( validAmp ) {
amp = k * dual( EvtGenFunctions::directProd( epsChi,
epsPsi ) )
.cont1( epsGamma );
}
amp *= factor;
// Set the amplitude matrix element using the vertex function
vertex( iPols, amp );
}
}
}
}
}
diff --git a/src/EvtGenModels/EvtVVPIPI_WEIGHTED.cpp b/src/EvtGenModels/EvtVVPIPI_WEIGHTED.cpp
index 4d33286..347e0ff 100644
--- a/src/EvtGenModels/EvtVVPIPI_WEIGHTED.cpp
+++ b/src/EvtGenModels/EvtVVPIPI_WEIGHTED.cpp
@@ -1,127 +1,106 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVVSPwave.cc
-//
-// Description: Routine to decay vector-> vector pi pi where the
-// decay is S-wave dominated.
-//
-// Modification history:
-//
-// Jim Hunt June 4, 2008 Module Created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVVPIPI_WEIGHTED.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtVVPIPI_WEIGHTED::getName()
{
return "VVPIPI_WEIGHTED";
}
EvtDecayBase* EvtVVPIPI_WEIGHTED::clone()
{
return new EvtVVPIPI_WEIGHTED;
}
void EvtVVPIPI_WEIGHTED::init()
{
static EvtId PIP = EvtPDL::getId( "pi+" );
static EvtId PIM = EvtPDL::getId( "pi-" );
static EvtId PI0 = EvtPDL::getId( "pi0" );
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
if ( ( !( getDaug( 1 ) == PIP && getDaug( 2 ) == PIM ) ) &&
( !( getDaug( 1 ) == PI0 && getDaug( 2 ) == PI0 ) ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVVPIPI_WEIGHTED generator expected "
<< " pi+ and pi- (or pi0 and pi0) "
<< "as 2nd and 3rd daughter. " << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
void EvtVVPIPI_WEIGHTED::initProbMax()
{
//Hard coded... should not be hard to calculate...
setProbMax( 0.08 * 1.13 );
}
double reweight_event( double pipi_mass )
{
pipi_mass *= 1000.0;
return sqrt( -3.6911336508223251 + 0.019119831948029617 * pipi_mass +
-1.8962883732377376e-05 * pipi_mass * pipi_mass );
}
void EvtVVPIPI_WEIGHTED::decay( EvtParticle* psi_prime )
{
psi_prime->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle *jpsi, *pi1, *pi2;
jpsi = psi_prime->getDaug( 0 );
pi1 = psi_prime->getDaug( 1 );
pi2 = psi_prime->getDaug( 2 );
// Put phase space results into the daughters.
EvtVector4C ep0, ep1, ep2;
ep0 = psi_prime->eps( 0 );
ep1 = psi_prime->eps( 1 );
ep2 = psi_prime->eps( 2 );
EvtVector4C e0, e1, e2;
e0 = jpsi->epsParent( 0 );
e1 = jpsi->epsParent( 1 );
e2 = jpsi->epsParent( 2 );
double mass2 = ( pi1->getP4() + pi2->getP4() ).mass2();
double fac = mass2 - 4 * pi1->mass() * pi2->mass();
fac *= reweight_event( sqrt( mass2 ) );
vertex( 0, 0, fac * ( ep0 * e0.conj() ) );
vertex( 0, 1, fac * ( ep0 * e1.conj() ) );
vertex( 0, 2, fac * ( ep0 * e2.conj() ) );
vertex( 1, 0, fac * ( ep1 * e0.conj() ) );
vertex( 1, 1, fac * ( ep1 * e1.conj() ) );
vertex( 1, 2, fac * ( ep1 * e2.conj() ) );
vertex( 2, 0, fac * ( ep2 * e0.conj() ) );
vertex( 2, 1, fac * ( ep2 * e1.conj() ) );
vertex( 2, 2, fac * ( ep2 * e2.conj() ) );
return;
}
diff --git a/src/EvtGenModels/EvtVVSPwave.cpp b/src/EvtGenModels/EvtVVSPwave.cpp
index 7a6496a..2595f86 100644
--- a/src/EvtGenModels/EvtVVSPwave.cpp
+++ b/src/EvtGenModels/EvtVVSPwave.cpp
@@ -1,115 +1,93 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVVSPwave.cc
-//
-// Description: Routine to decay vector-> vector scalar in Partial-wave
-// Routine to decay a vector into a vector and scalar. Started
-// by ryd on Aug 20, 1996.
-//
-// Modification history:
-//
-// RYD November 24, 1996 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVVSPwave.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtVVSPwave::getName()
{
return "VVS_PWAVE";
}
EvtDecayBase* EvtVVSPwave::clone()
{
return new EvtVVSPwave;
}
void EvtVVSPwave::init()
{
// check that there are 6 arguments
checkNArg( 6 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::SCALAR );
}
void EvtVVSPwave::initProbMax()
{
//probmax is 1.0 for all possible decays I think!
setProbMax( 1.0 );
}
void EvtVVSPwave::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtComplex as( getArg( 0 ) * cos( getArg( 1 ) ),
getArg( 0 ) * sin( getArg( 1 ) ) );
EvtComplex ap( getArg( 2 ) * cos( getArg( 3 ) ),
getArg( 2 ) * sin( getArg( 3 ) ) );
EvtComplex ad( getArg( 4 ) * cos( getArg( 5 ) ),
getArg( 4 ) * sin( getArg( 5 ) ) );
if ( ap != EvtComplex( 0.0, 0.0 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "In EvtVectorToVectorScalar.cc" << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "P wave not yet implemented!!" << endl;
::abort();
}
EvtParticle* v;
v = p->getDaug( 0 );
EvtTensor4C d, g;
g.setdiag( 1.0, -1.0, -1.0, -1.0 );
d = ad * ( ( 1.0 / ( v->getP4().d3mag() * v->getP4().d3mag() ) ) *
EvtGenFunctions::directProd( v->getP4(), v->getP4() ) +
( 1 / 3.0 ) * g ) +
as * g;
EvtVector4C ep0, ep1, ep2;
ep0 = d.cont1( p->eps( 0 ) );
ep1 = d.cont1( p->eps( 1 ) );
ep2 = d.cont1( p->eps( 2 ) );
vertex( 0, 0, ep0.cont( v->eps( 0 ).conj() ) );
vertex( 0, 1, ep0.cont( v->eps( 1 ).conj() ) );
vertex( 0, 2, ep0.cont( v->eps( 2 ).conj() ) );
vertex( 1, 0, ep1.cont( v->eps( 0 ).conj() ) );
vertex( 1, 1, ep1.cont( v->eps( 1 ).conj() ) );
vertex( 1, 2, ep1.cont( v->eps( 2 ).conj() ) );
vertex( 2, 0, ep2.cont( v->eps( 0 ).conj() ) );
vertex( 2, 1, ep2.cont( v->eps( 1 ).conj() ) );
vertex( 2, 2, ep2.cont( v->eps( 2 ).conj() ) );
return;
}
diff --git a/src/EvtGenModels/EvtVVpipi.cpp b/src/EvtGenModels/EvtVVpipi.cpp
index 8481288..bb35a4e 100644
--- a/src/EvtGenModels/EvtVVpipi.cpp
+++ b/src/EvtGenModels/EvtVVpipi.cpp
@@ -1,111 +1,90 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVVSPwave.cc
-//
-// Description: Routine to decay vector-> vector pi pi where the
-// decay is S-wave dominated.
-//
-// Modification history:
-//
-// RYD December 11, 1999 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVVpipi.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtVVpipi::getName()
{
return "VVPIPI";
}
EvtDecayBase* EvtVVpipi::clone()
{
return new EvtVVpipi;
}
void EvtVVpipi::init()
{
static EvtId PIP = EvtPDL::getId( "pi+" );
static EvtId PIM = EvtPDL::getId( "pi-" );
static EvtId PI0 = EvtPDL::getId( "pi0" );
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
if ( ( !( getDaug( 1 ) == PIP && getDaug( 2 ) == PIM ) ) &&
( !( getDaug( 1 ) == PI0 && getDaug( 2 ) == PI0 ) ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVVpipi generator expected "
<< " pi+ and pi- (or pi0 and pi0) "
<< "as 2nd and 3rd daughter. " << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
void EvtVVpipi::initProbMax()
{
//Hard coded... should not be hard to calculate...
setProbMax( 0.08 );
}
void EvtVVpipi::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle *v, *s1, *s2;
v = p->getDaug( 0 );
s1 = p->getDaug( 1 );
s2 = p->getDaug( 2 );
// Put phase space results into the daughters.
EvtVector4C ep0, ep1, ep2;
ep0 = p->eps( 0 );
ep1 = p->eps( 1 );
ep2 = p->eps( 2 );
double fac = ( s1->getP4() + s2->getP4() ).mass2() -
4 * s1->mass() * s2->mass();
vertex( 0, 0, fac * ( ep0 * v->epsParent( 0 ).conj() ) );
vertex( 0, 1, fac * ( ep0 * v->epsParent( 1 ).conj() ) );
vertex( 0, 2, fac * ( ep0 * v->epsParent( 2 ).conj() ) );
vertex( 1, 0, fac * ( ep1 * v->epsParent( 0 ).conj() ) );
vertex( 1, 1, fac * ( ep1 * v->epsParent( 1 ).conj() ) );
vertex( 1, 2, fac * ( ep1 * v->epsParent( 2 ).conj() ) );
vertex( 2, 0, fac * ( ep2 * v->epsParent( 0 ).conj() ) );
vertex( 2, 1, fac * ( ep2 * v->epsParent( 1 ).conj() ) );
vertex( 2, 2, fac * ( ep2 * v->epsParent( 2 ).conj() ) );
return;
}
diff --git a/src/EvtGenModels/EvtVectorIsr.cpp b/src/EvtGenModels/EvtVectorIsr.cpp
index 2054b4d..1af64dc 100644
--- a/src/EvtGenModels/EvtVectorIsr.cpp
+++ b/src/EvtGenModels/EvtVectorIsr.cpp
@@ -1,434 +1,409 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVectorIsr.cc
-//
-// Description:
-// This is a special decay model to generate e+e- -> phi gamma + soft gammas
-// using soft collinear ISR calculation from AfkQed
-// This is implemented as a decay of the VPHO.
-//
-// Modification history:
-//
-// Joe Izen Oct, 2005 Soft Colinear Photons (secondary ISR) ported from AfkQed
-// Joe Izen Dec 16, 2002 Fix cos_theta distribution - prevents boom at cos_theta=+/-1
-// RYD/Adriano June 16, 1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVectorIsr.hh"
#include "EvtGenBase/EvtAbsLineShape.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtPhotonParticle.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <iomanip>
#include <iostream>
#include <math.h>
#include <sstream>
#include <stdlib.h>
#include <string>
std::string EvtVectorIsr::getName()
{
return "VECTORISR";
}
EvtDecayBase* EvtVectorIsr::clone()
{
return new EvtVectorIsr;
}
void EvtVectorIsr::init()
{
// check that there are 2 arguments
checkNDaug( 2 );
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
checkSpinDaughter( 1, EvtSpinType::PHOTON );
int narg = getNArg();
if ( narg > 4 )
checkNArg( 4 );
csfrmn = 1.;
csbkmn = 1.;
fmax = 1.2;
firstorder = false;
if ( narg > 0 )
csfrmn = getArg( 0 );
if ( narg > 1 )
csbkmn = getArg( 1 );
if ( narg > 2 )
fmax = getArg( 2 );
if ( narg > 3 )
firstorder = true;
}
void EvtVectorIsr::initProbMax()
{
noProbMax();
}
void EvtVectorIsr::decay( EvtParticle* p )
{
//the elctron mass
double electMass = EvtPDL::getMeanMass( EvtPDL::getId( "e-" ) );
static EvtId gammaId = EvtPDL::getId( "gamma" );
EvtParticle* phi;
EvtParticle* gamma;
//4-mom of the two colinear photons to the decay of the vphoton
EvtVector4R p4softg1( 0., 0., 0., 0. );
EvtVector4R p4softg2( 0., 0., 0., 0. );
//get pointers to the daughters set
//get masses/initial phase space - will overwrite the
//p4s below to get the kinematic distributions correct
p->initializePhaseSpace( getNDaug(), getDaugs() );
phi = p->getDaug( 0 );
gamma = p->getDaug( 1 );
//Generate soft colinear photons and the electron and positron energies after emission.
//based on method of AfkQed and notes of Vladimir Druzhinin.
//
//function ckhrad(eb,q2m,r1,r2,e01,e02,f_col)
//eb: energy of incoming electrons in CM frame
//q2m: minimum invariant mass of the virtual photon after soft colinear photon emission
//returned arguments
//e01,e02: energies of e+ and e- after soft colinear photon emission
//fcol: weighting factor for Born cross section for use in an accept/reject test.
double wcm = p->mass();
double eb = 0.5 * wcm;
//TO guarantee the collinear photons are softer than the ISR photon, require q2m > m*wcm
double q2m = phi->mass() * wcm;
double f_col( 0. );
double e01( 0. );
double e02( 0. );
double ebeam = eb;
double wcm_new = wcm;
double s_new = wcm * wcm;
double fran = 1.;
double f = 0;
int m = 0;
double largest_f =
0; //only used when determining max weight for this vector particle mass
if ( !firstorder ) {
while ( fran > f ) {
m++;
int n = 0;
while ( f_col == 0. ) {
n++;
ckhrad( eb, q2m, e01, e02, f_col );
if ( n > 10000 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "EvtVectorIsr is having problems. Called ckhrad 10000 times.\n";
assert( 0 );
}
}
//Effective beam energy after soft photon emission (neglecting electron mass)
ebeam = sqrt( e01 * e02 );
wcm_new = 2 * ebeam;
s_new = wcm_new * wcm_new;
//The Vector mass should never be greater than wcm_new
if ( phi->mass() > wcm_new ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "EvtVectorIsr finds Vector mass=" << phi->mass()
<< " > Weff=" << wcm_new << ". Should not happen\n";
assert( 0 );
}
//Determine Born cross section @ wcm_new for e+e- -> gamma V. We aren't interested in the absolute normalization
//Just the functional dependence. Assuming a narrow resonance when determining cs_Born
double cs_Born = 1.;
if ( EvtPDL::getMaxRange( phi->getId() ) > 0. ) {
double x0 = 1 - EvtPDL::getMeanMass( phi->getId() ) *
EvtPDL::getMeanMass( phi->getId() ) / s_new;
//L = log(s/(electMass*electMass)
double L = 2. * log( wcm_new / electMass );
// W(x0) is actually 2*alpha/pi times the following
double W = ( L - 1. ) * ( 1. - x0 + 0.5 * x0 * x0 );
//Born cross section is actually 12*pi*pi*Gammaee/EvtPDL::getMeanMass(phi->getId()) times the following
//(we'd need the full W(x0) as well)
cs_Born = W / s_new;
}
f = cs_Born * f_col;
//if fmax was set properly, f should NEVER be larger than fmax
if ( f > fmax && fmax > 0. ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "EvtVectorIsr finds a problem with fmax, the maximum weight setting\n"
<< "fmax is the third decay argument in the .dec file. VectorIsr attempts to set it reasonably if it wasn't provided\n"
<< "To determine a more appropriate value, build GeneratorQAApp, and set the third argument for this decay <0.\n"
<< "If you haven't been providing the first 2 arguments, set them to be 1. 1.). The program will report\n"
<< "the largest weight it finds. You should set fmax to be slightly larger.\n"
<< "Alternatively try the following values for various vector particles: "
<< "phi->1.15 J/psi-psi(4415)->0.105\n"
<< "The current value of f and fmax for "
<< EvtPDL::name( phi->getId() ) << " are " << f << " "
<< fmax << "\n"
<< "Will now assert\n";
assert( 0 );
}
if ( fmax > 0. ) {
fran = fmax * EvtRandom::Flat( 0.0, 1.0 );
}
else {
//determine max weight for this vector particle mass
if ( f > largest_f ) {
largest_f = f;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< m << " " << EvtPDL::name( phi->getId() ) << " "
<< "vector_mass "
<< " " << EvtPDL::getMeanMass( phi->getId() )
<< " fmax should be at least " << largest_f
<< ". f_col cs_B = " << f_col << " " << cs_Born
<< std::endl;
}
if ( m % 10000 == 0 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< m << " " << EvtPDL::name( phi->getId() ) << " "
<< "vector_mass "
<< " " << EvtPDL::getMeanMass( phi->getId() )
<< " fmax should be at least " << largest_f
<< ". f_col cs_B = " << f_col << " " << cs_Born
<< std::endl;
}
f_col = 0.;
f = 0.;
//determine max weight for this vector particle mass
}
if ( m > 100000 ) {
if ( fmax > 0. )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "EvtVectorIsr is having problems. Check the fmax value - the 3rd argument in the .dec file\n"
<< "Recommended values for various vector particles: "
<< "phi->1.15 J/psi-psi(4415)->0.105 "
<< "Upsilon(1S,2S,3S)->0.14\n";
assert( 0 );
}
} //while (fran > f)
} //if (firstorder)
//Compute parameters for boost to/from the system after colinear radiation
double bet_l;
double gam_l;
double betgam_l;
double csfrmn_new;
double csbkmn_new;
if ( firstorder ) {
bet_l = 0.;
gam_l = 1.;
betgam_l = 0.;
csfrmn_new = csfrmn;
csbkmn_new = csbkmn;
} else {
double xx = e02 / e01;
double sq_xx = sqrt( xx );
bet_l = ( 1. - xx ) / ( 1. + xx );
gam_l = ( 1. + xx ) / ( 2. * sq_xx );
betgam_l = ( 1. - xx ) / ( 2. * sq_xx );
//Boost photon cos_theta limits in lab to limits in the system after colinear rad
csfrmn_new = ( csfrmn - bet_l ) / ( 1. - bet_l * csfrmn );
csbkmn_new = ( csbkmn - bet_l ) / ( 1. - bet_l * csbkmn );
}
// //generate kinematics according to Bonneau-Martin article
// //Nucl. Phys. B27 (1971) 381-397
// For backward compatibility with .dec files before SP5, the backward cos limit for
//the ISR photon is actually given as *minus* the actual limit. Sorry, this wouldn't be
//my choice. -Joe
//gamma momentum in the vpho restframe *after* soft colinear radiation
double pg = ( s_new - phi->mass() * phi->mass() ) / ( 2. * wcm_new );
//calculate the beta of incoming electrons after colinear rad in the frame where e= and e- have equal momentum
double beta = electMass / ebeam; //electMass/Ebeam = 1/gamma
beta = sqrt( 1. - beta * beta ); //sqrt (1 - (1/gamma)**2)
double ymax = log( ( 1. + beta * csfrmn_new ) / ( 1. - beta * csfrmn_new ) );
double ymin = log( ( 1. - beta * csbkmn_new ) / ( 1. + beta * csbkmn_new ) );
// photon theta distributed as 2*beta/(1-beta**2*cos(theta)**2)
double y = ( ymax - ymin ) * EvtRandom::Flat( 0.0, 1.0 ) + ymin;
double cs = exp( y );
cs = ( cs - 1. ) / ( cs + 1. ) / beta;
double sn = sqrt( 1 - cs * cs );
double fi = EvtRandom::Flat( EvtConst::twoPi );
//four-vector for the phi
double phi_p0 = sqrt( phi->mass() * phi->mass() + pg * pg );
double phi_p3 = -pg * cs;
//boost back to frame before colinear radiation.
EvtVector4R p4phi( gam_l * phi_p0 + betgam_l * phi_p3, -pg * sn * cos( fi ),
-pg * sn * sin( fi ), betgam_l * phi_p0 + gam_l * phi_p3 );
double isr_p0 = pg;
double isr_p3 = -phi_p3;
EvtVector4R p4gamma( gam_l * isr_p0 + betgam_l * isr_p3, -p4phi.get( 1 ),
-p4phi.get( 2 ), betgam_l * isr_p0 + gam_l * isr_p3 );
//four-vectors of the collinear photons
if ( !firstorder ) {
p4softg1.set( 0, eb - e02 );
p4softg1.set( 3, e02 - eb );
p4softg2.set( 0, eb - e01 );
p4softg2.set( 3, eb - e01 );
}
//save momenta for particles
phi->init( getDaug( 0 ), p4phi );
gamma->init( getDaug( 1 ), p4gamma );
//add the two colinear photons as vphoton daughters
EvtPhotonParticle* softg1 = new EvtPhotonParticle;
;
EvtPhotonParticle* softg2 = new EvtPhotonParticle;
;
softg1->init( gammaId, p4softg1 );
softg2->init( gammaId, p4softg2 );
softg1->addDaug( p );
softg2->addDaug( p );
//try setting the spin density matrix of the phi
//get polarization vector for phi in its parents restframe.
EvtVector4C phi0 = phi->epsParent( 0 );
EvtVector4C phi1 = phi->epsParent( 1 );
EvtVector4C phi2 = phi->epsParent( 2 );
//get polarization vector for a photon in its parents restframe.
EvtVector4C gamma0 = gamma->epsParentPhoton( 0 );
EvtVector4C gamma1 = gamma->epsParentPhoton( 1 );
EvtComplex r1p = phi0 * gamma0;
EvtComplex r2p = phi1 * gamma0;
EvtComplex r3p = phi2 * gamma0;
EvtComplex r1m = phi0 * gamma1;
EvtComplex r2m = phi1 * gamma1;
EvtComplex r3m = phi2 * gamma1;
EvtComplex rho33 = r3p * conj( r3p ) + r3m * conj( r3m );
EvtComplex rho22 = r2p * conj( r2p ) + r2m * conj( r2m );
EvtComplex rho11 = r1p * conj( r1p ) + r1m * conj( r1m );
EvtComplex rho13 = r3p * conj( r1p ) + r3m * conj( r1m );
EvtComplex rho12 = r2p * conj( r1p ) + r2m * conj( r1m );
EvtComplex rho23 = r3p * conj( r2p ) + r3m * conj( r2m );
EvtComplex rho31 = conj( rho13 );
EvtComplex rho32 = conj( rho23 );
EvtComplex rho21 = conj( rho12 );
EvtSpinDensity rho;
rho.setDim( 3 );
rho.set( 0, 0, rho11 );
rho.set( 0, 1, rho12 );
rho.set( 0, 2, rho13 );
rho.set( 1, 0, rho21 );
rho.set( 1, 1, rho22 );
rho.set( 1, 2, rho23 );
rho.set( 2, 0, rho31 );
rho.set( 2, 1, rho32 );
rho.set( 2, 2, rho33 );
setDaughterSpinDensity( 0 );
phi->setSpinDensityForward( rho );
return;
}
double EvtVectorIsr::ckhrad1( double xx, double a, double b )
{
//port of AfkQed/ckhrad.F function ckhrad1
double yy = xx * xx;
double zz = 1. - 2 * xx + yy;
return 0.5 * ( 1. + yy + zz / ( a - 1. ) +
0.25 * b * ( -0.5 * ( 1. + 3 * yy ) * log( xx ) ) - zz );
}
void EvtVectorIsr::ckhrad( const double& e_beam, const double& q2_min,
double& e01, double& e02, double& f )
{
//port of AfkQed/ckhrad.F subroutine ckhrad
const double adp = 1. / 137.0359895 / EvtConst::pi;
const double pi2 = EvtConst::pi * EvtConst::pi;
// const double dme = 0.00051099906;
const double dme = EvtPDL::getMeanMass( EvtPDL::getId( "e-" ) );
double r1 = EvtRandom::Flat(); //Generates Flat from 0 - 1
double r2 = EvtRandom::Flat();
double sss = 4. * e_beam * e_beam;
double biglog = log( sss / ( dme * dme ) );
double beta = 2. * adp * ( biglog - 1. );
double betae_lab = beta;
double p3 = adp * ( pi2 / 3. - 0.5 );
double p12 = adp * adp * ( 11. / 8. - 2. * pi2 / 3. );
double coefener = 1. + 0.75 * betae_lab + p3;
double coef1 = coefener + 0.125 * pi2 * beta * beta;
double coef2 = p12 * biglog * biglog;
double facts = coef1 + coef2;
double y1_min = 0;
double e1min = 0.25 * q2_min / e_beam;
double y1_max = pow( 1. - e1min / e_beam, 0.5 * beta );
double y1 = y1_min + r1 * ( y1_max - y1_min );
e01 = e_beam * ( 1. - pow( y1, 2. / beta ) );
double y2_min = 0.;
double e2min = 0.25 * q2_min / e01;
double y2_max = pow( 1. - e2min / e_beam, 0.5 * beta );
double y2 = y2_min + r2 * ( y2_max - y2_min );
e02 = e_beam * ( 1. - pow( y2, 2. / beta ) );
double xx1 = e01 / e_beam;
double xx2 = e02 / e_beam;
f = y1_max * y2_max * ckhrad1( xx1, biglog, betae_lab ) *
ckhrad1( xx2, biglog, betae_lab ) * facts;
return;
}
diff --git a/src/EvtGenModels/EvtVll.cpp b/src/EvtGenModels/EvtVll.cpp
index 8ca86e5..fe10f9c 100644
--- a/src/EvtGenModels/EvtVll.cpp
+++ b/src/EvtGenModels/EvtVll.cpp
@@ -1,105 +1,83 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVll.cc
-//
-// Description: The decay of a vector meson to two leptons,
-// or generally, two spin 1/2 particles.
-// E.g., J/psi -> e+ e-
-//
-// Modification history:
-//
-// RYD January 17, 1997 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVll.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <iostream>
#include <stdlib.h>
#include <string>
std::string EvtVll::getName()
{
return "VLL";
}
EvtDecayBase* EvtVll::clone()
{
return new EvtVll;
}
void EvtVll::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::DIRAC );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
}
void EvtVll::initProbMax()
{
setProbMax( 1.0 );
}
void EvtVll::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle *l1, *l2;
l1 = p->getDaug( 0 );
l2 = p->getDaug( 1 );
EvtVector4C l11, l12, l21, l22;
l11 = EvtLeptonVCurrent( l1->spParent( 0 ), l2->spParent( 0 ) );
l12 = EvtLeptonVCurrent( l1->spParent( 0 ), l2->spParent( 1 ) );
l21 = EvtLeptonVCurrent( l1->spParent( 1 ), l2->spParent( 0 ) );
l22 = EvtLeptonVCurrent( l1->spParent( 1 ), l2->spParent( 1 ) );
EvtVector4C eps0 = p->eps( 0 );
EvtVector4C eps1 = p->eps( 1 );
EvtVector4C eps2 = p->eps( 2 );
double M2 = p->mass();
M2 *= M2;
double m2 = l1->mass();
m2 *= m2;
double norm = 1.0 / sqrt( 2 * M2 + 4 * m2 - 4 * m2 * m2 / M2 );
vertex( 0, 0, 0, norm * ( eps0 * l11 ) );
vertex( 0, 0, 1, norm * ( eps0 * l12 ) );
vertex( 0, 1, 0, norm * ( eps0 * l21 ) );
vertex( 0, 1, 1, norm * ( eps0 * l22 ) );
vertex( 1, 0, 0, norm * ( eps1 * l11 ) );
vertex( 1, 0, 1, norm * ( eps1 * l12 ) );
vertex( 1, 1, 0, norm * ( eps1 * l21 ) );
vertex( 1, 1, 1, norm * ( eps1 * l22 ) );
vertex( 2, 0, 0, norm * ( eps2 * l11 ) );
vertex( 2, 0, 1, norm * ( eps2 * l12 ) );
vertex( 2, 1, 0, norm * ( eps2 * l21 ) );
vertex( 2, 1, 1, norm * ( eps2 * l22 ) );
return;
}
diff --git a/src/EvtGenModels/EvtVtoSll.cpp b/src/EvtGenModels/EvtVtoSll.cpp
index 70a8938..0159cff 100644
--- a/src/EvtGenModels/EvtVtoSll.cpp
+++ b/src/EvtGenModels/EvtVtoSll.cpp
@@ -1,113 +1,91 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVll.cc
-//
-// Description: The decay of a vector meson to a scalar and a
-// lepton pair. E.g. D_s*+ -> D_s+ e+ e-
-//
-//
-// Modification history:
-//
-// RYD February 28, 2009 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVtoSll.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <iostream>
#include <stdlib.h>
#include <string>
std::string EvtVtoSll::getName()
{
return "VTOSLL";
}
EvtDecayBase* EvtVtoSll::clone()
{
return new EvtVtoSll;
}
void EvtVtoSll::init()
{
// check that there are 0 arguments
checkNArg( 0 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::SCALAR );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::DIRAC );
}
void EvtVtoSll::initProbMax()
{
//setProbMax(1.0);
}
void EvtVtoSll::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle *l1, *l2;
l1 = p->getDaug( 1 );
l2 = p->getDaug( 2 );
EvtVector4C l11, l12, l21, l22;
l11 = EvtLeptonVCurrent( l1->spParent( 0 ), l2->spParent( 0 ) );
l12 = EvtLeptonVCurrent( l1->spParent( 0 ), l2->spParent( 1 ) );
l21 = EvtLeptonVCurrent( l1->spParent( 1 ), l2->spParent( 0 ) );
l22 = EvtLeptonVCurrent( l1->spParent( 1 ), l2->spParent( 1 ) );
EvtVector4C eps0 = p->eps( 0 );
EvtVector4C eps1 = p->eps( 1 );
EvtVector4C eps2 = p->eps( 2 );
EvtVector4R P = p->getP4Restframe();
EvtVector4R k = l1->getP4() + l2->getP4();
double k2 = k * k;
EvtTensor4C T( dual( EvtGenFunctions::directProd( P, ( 1.0 / k2 ) * k ) ) );
double M2 = p->mass();
M2 *= M2;
double m2 = l1->mass();
m2 *= m2;
double norm = 1.0 / sqrt( 2 * M2 + 4 * m2 - 4 * m2 * m2 / M2 );
vertex( 0, 0, 0, norm * ( eps0 * T.cont2( l11 ) ) );
vertex( 0, 0, 1, norm * ( eps0 * T.cont2( l12 ) ) );
vertex( 0, 1, 0, norm * ( eps0 * T.cont2( l21 ) ) );
vertex( 0, 1, 1, norm * ( eps0 * T.cont2( l22 ) ) );
vertex( 1, 0, 0, norm * ( eps1 * T.cont2( l11 ) ) );
vertex( 1, 0, 1, norm * ( eps1 * T.cont2( l12 ) ) );
vertex( 1, 1, 0, norm * ( eps1 * T.cont2( l21 ) ) );
vertex( 1, 1, 1, norm * ( eps1 * T.cont2( l22 ) ) );
vertex( 2, 0, 0, norm * ( eps2 * T.cont2( l11 ) ) );
vertex( 2, 0, 1, norm * ( eps2 * T.cont2( l12 ) ) );
vertex( 2, 1, 0, norm * ( eps2 * T.cont2( l21 ) ) );
vertex( 2, 1, 1, norm * ( eps2 * T.cont2( l22 ) ) );
return;
}
diff --git a/src/EvtGenModels/EvtVub.cpp b/src/EvtGenModels/EvtVub.cpp
index 45ea26a..0c42ee9 100644
--- a/src/EvtGenModels/EvtVub.cpp
+++ b/src/EvtGenModels/EvtVub.cpp
@@ -1,406 +1,386 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVub.cc
-//
-// Description: Routine to decay a particle according th phase space
-//
-// Modification history:
-//
-// Sven Menke January 17, 2001 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVub.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtPFermi.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtVub::getName()
{
return "VUB";
}
EvtDecayBase* EvtVub::clone()
{
return new EvtVub;
}
void EvtVub::init()
{
// check that there are at least 6 arguments
if ( getNArg() < 6 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVub generator expected "
<< " at least 6 arguments (mb,a,alpha_s,Nbins,m1,w1,...) but found: "
<< getNArg() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
_mb = getArg( 0 );
_a = getArg( 1 );
_alphas = getArg( 2 );
_nbins = abs( (int)getArg( 3 ) );
_storeQplus = ( getArg( 3 ) < 0 ? 1 : 0 );
_masses = std::vector<double>( _nbins );
_weights = std::vector<double>( _nbins );
if ( getNArg() - 4 != 2 * _nbins ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVub generator expected " << _nbins
<< " masses and weights but found: " << ( getNArg() - 4 ) / 2
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
int i, j = 4;
double maxw = 0.;
for ( i = 0; i < _nbins; i++ ) {
_masses[i] = getArg( j++ );
if ( i > 0 && _masses[i] <= _masses[i - 1] ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVub generator expected "
<< " mass bins in ascending order!"
<< "Will terminate execution!" << endl;
::abort();
}
_weights[i] = getArg( j++ );
if ( _weights[i] < 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVub generator expected "
<< " weights >= 0, but found: " << _weights[i] << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( _weights[i] > maxw )
maxw = _weights[i];
}
if ( maxw == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVub generator expected at least one "
<< " weight > 0, but found none! "
<< "Will terminate execution!" << endl;
::abort();
}
for ( i = 0; i < _nbins; i++ )
_weights[i] /= maxw;
// the maximum dGamma*p2 value depends on alpha_s only:
const double dGMax0 = 3.;
_dGMax = 0.21344 + 8.905 * _alphas;
if ( _dGMax < dGMax0 )
_dGMax = dGMax0;
// for the Fermi Motion we need a B-Meson mass - but it's not critical
// to get an exact value; in order to stay in the phase space for
// B+- and B0 use the smaller mass
EvtId BP = EvtPDL::getId( "B+" );
EvtId B0 = EvtPDL::getId( "B0" );
double mB0 = EvtPDL::getMaxMass( B0 );
double mBP = EvtPDL::getMaxMass( BP );
double mB = ( mB0 < mBP ? mB0 : mBP );
const double xlow = -_mb;
const double xhigh = mB - _mb;
const int aSize = 10000;
EvtPFermi pFermi( _a, mB, _mb );
// pf is the cumulative distribution
// normalized to 1.
_pf.resize( aSize );
for ( i = 0; i < aSize; i++ ) {
double kplus = xlow + (double)( i + 0.5 ) / ( (double)aSize ) *
( xhigh - xlow );
if ( i == 0 )
_pf[i] = pFermi.getFPFermi( kplus );
else
_pf[i] = _pf[i - 1] + pFermi.getFPFermi( kplus );
}
for ( size_t index = 0; index < _pf.size(); index++ ) {
_pf[index] /= _pf[_pf.size() - 1];
}
// static EvtHepRandomEngine myEngine;
// _pFermi = new RandGeneral(myEngine,pf,aSize,0);
_dGamma = std::make_unique<EvtVubdGamma>( _alphas );
// check that there are 3 daughters
checkNDaug( 3 );
}
void EvtVub::initProbMax()
{
noProbMax();
}
void EvtVub::decay( EvtParticle* p )
{
int j;
// B+ -> u-bar specflav l+ nu
EvtParticle *xuhad( 0 ), *lepton( 0 ), *neutrino( 0 );
EvtVector4R p4;
// R. Faccini 21/02/03
// move the reweighting up , before also shooting the fermi distribution
double x, z, p2;
double sh = 0.0;
double mB, ml, xlow, xhigh, qplus;
double El = 0.0;
double Eh = 0.0;
double kplus;
const double lp2epsilon = -10;
bool rew( true );
while ( rew ) {
p->initializePhaseSpace( getNDaug(), getDaugs() );
xuhad = p->getDaug( 0 );
lepton = p->getDaug( 1 );
neutrino = p->getDaug( 2 );
mB = p->mass();
ml = lepton->mass();
xlow = -_mb;
xhigh = mB - _mb;
// Fermi motion does not need to be computed inside the
// tryit loop as m_b in Gamma0 does not need to be replaced by (m_b+kplus).
// The difference however should be of the Order (lambda/m_b)^2 which is
// beyond the considered orders in the paper anyway ...
// for alpha_S = 0 and a mass cut on X_u not all values of kplus are
// possible. The maximum value is mB/2-_mb + sqrt(mB^2/4-_masses[0]^2)
kplus = 2 * xhigh;
while ( kplus >= xhigh || kplus <= xlow ||
( _alphas == 0 &&
kplus >= mB / 2 - _mb +
sqrt( mB * mB / 4 - _masses[0] * _masses[0] ) ) ) {
kplus = findPFermi(); //_pFermi->shoot();
kplus = xlow + kplus * ( xhigh - xlow );
}
qplus = mB - _mb - kplus;
if ( ( mB - qplus ) / 2. <= ml )
continue;
int tryit = 1;
while ( tryit ) {
x = EvtRandom::Flat();
z = EvtRandom::Flat( 0, 2 );
p2 = EvtRandom::Flat();
p2 = pow( 10.0, lp2epsilon * p2 );
El = x * ( mB - qplus ) / 2;
if ( El > ml && El < mB / 2 ) {
Eh = z * ( mB - qplus ) / 2 + qplus;
if ( Eh > 0 && Eh < mB ) {
sh = p2 * pow( mB - qplus, 2 ) +
2 * qplus * ( Eh - qplus ) + qplus * qplus;
if ( sh > _masses[0] * _masses[0] &&
mB * mB + sh - 2 * mB * Eh > ml * ml ) {
double xran = EvtRandom::Flat();
double y = _dGamma->getdGdxdzdp( x, z, p2 ) / _dGMax * p2;
if ( y > 1 )
EvtGenReport( EVTGEN_WARNING, "EvtGen" )
<< "EvtVub decay probability > 1 found: " << y
<< endl;
if ( y >= xran )
tryit = 0;
}
}
}
}
// reweight the Mx distribution
if ( _nbins > 0 ) {
double xran1 = EvtRandom::Flat();
double m = sqrt( sh );
j = 0;
while ( j < _nbins && m > _masses[j] )
j++;
double w = _weights[j - 1];
if ( w >= xran1 )
rew = false;
} else {
rew = false;
}
}
// o.k. we have the three kineamtic variables
// now calculate a flat cos Theta_H [-1,1] distribution of the
// hadron flight direction w.r.t the B flight direction
// because the B is a scalar and should decay isotropic.
// Then chose a flat Phi_H [0,2Pi] w.r.t the B flight direction
// and and a flat Phi_L [0,2Pi] in the W restframe w.r.t the
// W flight direction.
double ctH = EvtRandom::Flat( -1, 1 );
double phH = EvtRandom::Flat( 0, 2 * EvtConst::pi );
double phL = EvtRandom::Flat( 0, 2 * EvtConst::pi );
// now compute the four vectors in the B Meson restframe
double ptmp, sttmp;
// calculate the hadron 4 vector in the B Meson restframe
sttmp = sqrt( 1 - ctH * ctH );
ptmp = sqrt( Eh * Eh - sh );
double pHB[4] = {Eh, ptmp * sttmp * cos( phH ), ptmp * sttmp * sin( phH ),
ptmp * ctH};
p4.set( pHB[0], pHB[1], pHB[2], pHB[3] );
xuhad->init( getDaug( 0 ), p4 );
if ( _storeQplus ) {
// cludge to store the hidden parameter q+ with the decay;
// the lifetime of the Xu is abused for this purpose.
// tau = 1 ps corresponds to ctau = 0.3 mm -> in order to
// stay well below BaBars sensitivity we take q+/(10000 GeV) which
// goes up to 0.0005 in the most extreme cases as ctau in mm.
// To extract q+ back from the StdHepTrk its necessary to get
// delta_ctau = Xu->anyDaughter->getVertexTime()-Xu->getVertexTime()
// where these pseudo calls refere to the StdHep time stored at
// the production vertex in the lab for each particle. The boost
// has to be reversed and the result is:
//
// q+ = delta_ctau * 10000 GeV/mm * Mass_Xu/Energy_Xu
//
xuhad->setLifetime( qplus / 10000. );
}
// calculate the W 4 vector in the B Meson restrframe
double apWB = ptmp;
double pWB[4] = {mB - Eh, -pHB[1], -pHB[2], -pHB[3]};
// first go in the W restframe and calculate the lepton and
// the neutrino in the W frame
double mW2 = mB * mB + sh - 2 * mB * Eh;
double beta = ptmp / pWB[0];
double gamma = pWB[0] / sqrt( mW2 );
double pLW[4];
ptmp = ( mW2 - ml * ml ) / 2 / sqrt( mW2 );
pLW[0] = sqrt( ml * ml + ptmp * ptmp );
double ctL = ( El - gamma * pLW[0] ) / beta / gamma / ptmp;
if ( ctL < -1 )
ctL = -1;
if ( ctL > 1 )
ctL = 1;
sttmp = sqrt( 1 - ctL * ctL );
// eX' = eZ x eW
double xW[3] = {-pWB[2], pWB[1], 0};
// eZ' = eW
double zW[3] = {pWB[1] / apWB, pWB[2] / apWB, pWB[3] / apWB};
double lx = sqrt( xW[0] * xW[0] + xW[1] * xW[1] );
for ( j = 0; j < 2; j++ )
xW[j] /= lx;
// eY' = eZ' x eX'
double yW[3] = {-pWB[1] * pWB[3], -pWB[2] * pWB[3],
pWB[1] * pWB[1] + pWB[2] * pWB[2]};
double ly = sqrt( yW[0] * yW[0] + yW[1] * yW[1] + yW[2] * yW[2] );
for ( j = 0; j < 3; j++ )
yW[j] /= ly;
// p_lep = |p_lep| * ( sin(Theta) * cos(Phi) * eX'
// + sin(Theta) * sin(Phi) * eY'
// + cos(Theta) * eZ')
for ( j = 0; j < 3; j++ )
pLW[j + 1] = sttmp * cos( phL ) * ptmp * xW[j] +
sttmp * sin( phL ) * ptmp * yW[j] + ctL * ptmp * zW[j];
double apLW = ptmp;
// boost them back in the B Meson restframe
double appLB = beta * gamma * pLW[0] + gamma * ctL * apLW;
ptmp = sqrt( El * El - ml * ml );
double ctLL = appLB / ptmp;
if ( ctLL > 1 )
ctLL = 1;
if ( ctLL < -1 )
ctLL = -1;
double pLB[4] = {El, 0, 0, 0};
double pNB[4] = {pWB[0] - El, 0, 0, 0};
for ( j = 1; j < 4; j++ ) {
pLB[j] = pLW[j] + ( ctLL * ptmp - ctL * apLW ) / apWB * pWB[j];
pNB[j] = pWB[j] - pLB[j];
}
p4.set( pLB[0], pLB[1], pLB[2], pLB[3] );
lepton->init( getDaug( 1 ), p4 );
p4.set( pNB[0], pNB[1], pNB[2], pNB[3] );
neutrino->init( getDaug( 2 ), p4 );
return;
}
double EvtVub::findPFermi()
{
double ranNum = EvtRandom::Flat();
double oOverBins = 1.0 / ( float( _pf.size() ) );
int nBinsBelow = 0; // largest k such that I[k] is known to be <= rand
int nBinsAbove = _pf.size(); // largest k such that I[k] is known to be > rand
int middle;
while ( nBinsAbove > nBinsBelow + 1 ) {
middle = ( nBinsAbove + nBinsBelow + 1 ) >> 1;
if ( ranNum >= _pf[middle] ) {
nBinsBelow = middle;
} else {
nBinsAbove = middle;
}
}
double bSize = _pf[nBinsAbove] - _pf[nBinsBelow];
// binMeasure is always aProbFunc[nBinsBelow],
if ( bSize == 0 ) {
// rand lies right in a bin of measure 0. Simply return the center
// of the range of that bin. (Any value between k/N and (k+1)/N is
// equally good, in this rare case.)
return ( nBinsBelow + .5 ) * oOverBins;
}
double bFract = ( ranNum - _pf[nBinsBelow] ) / bSize;
return ( nBinsBelow + bFract ) * oOverBins;
}
diff --git a/src/EvtGenModels/EvtVubAC.cpp b/src/EvtGenModels/EvtVubAC.cpp
index d4b1dd7..93d5262 100644
--- a/src/EvtGenModels/EvtVubAC.cpp
+++ b/src/EvtGenModels/EvtVubAC.cpp
@@ -1,51212 +1,51203 @@
-
-//////////////////////////////////////////////////////////////////////
-//
-// Module: EvtVubAC.cc
-// Analytic Coupling Model (based on hep-ph/0608047 by Aglietti, Ferrera and Ricciardi)
-// Author: Michael Sigamani May 2008
-//
-///////////////////////////////////////////////////////////////
-
#include "EvtGenModels/EvtVubAC.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtPFermi.hh"
#include <stdlib.h>
#include <string>
using std::cout;
using std::endl;
std::string EvtVubAC::getName()
{
return "VUB_AC";
}
EvtDecayBase* EvtVubAC::clone()
{
return new EvtVubAC;
}
void EvtVubAC::init()
{
// get parameters (declared in the header file)
// B Meson mass
mB = 5.2792;
// Perturbative quantities
CF = 4.0 / 3.0;
CA = 3.0;
double nf = 3.0;
//Constants
alphaSmZ = getArg( 0 );
c = 0.04;
q = 0.01;
k = 0.02;
beta0 = ( 11.0 / 3.0 * CA - 2.0 / 3.0 * nf ) / ( 4 * M_PI );
alphaSmB = 0.22 * alphaSmZ / 0.1189;
gvars.push_back( 0.0 ); // 0
gvars.push_back( 0.0 ); // 1
gvars.push_back( 0.0 ); // 2
gvars.push_back( alphaSmB ); // 3
gvars.push_back( alphaSmZ ); // 4
gvars.push_back( mB ); // 5
gvars.push_back( beta0 ); // 6
gvars.push_back( c ); // 7
gvars.push_back( q ); // 8
gvars.push_back( k ); // 9
// check that there are 3 daughters and 1 argument
checkNDaug( 3 );
checkNArg( 1 );
}
void EvtVubAC::initProbMax()
{
noProbMax();
}
void EvtVubAC::decay( EvtParticle* Bmeson )
{
int j;
EvtParticle *xuhad, *lepton, *neutrino;
EvtVector4R p4;
double u, w, xb, Pp, Pm, pdf, ml, PX( 0.0 ), EX( 0.0 ), sh( 0.0 ), El( 0.0 );
Bmeson->initializePhaseSpace( getNDaug(), getDaugs() );
xuhad = Bmeson->getDaug( 0 );
lepton = Bmeson->getDaug( 1 );
neutrino = Bmeson->getDaug( 2 );
ml = lepton->mass();
bool tryit = true;
while ( tryit ) {
double mpi = 0.14;
u = EvtRandom::Flat( 0.0, 1.0 );
w = EvtRandom::Flat( 0.0, 2.0 );
xb = EvtRandom::Flat( 0.0, 1.0 );
EX = w * mB / 2.0;
PX = EX * ( 1.0 - u ) / ( u + 1.0 );
El = ( 1.0 - xb ) * mB / 2.0;
Pp = ( EX - PX );
Pm = ( EX + PX );
sh = Pm * Pp;
if ( ( ( w * u ) / ( 1.0 + u ) < xb ) && ( xb < w / ( 1.0 + u ) ) &&
( max( 0, w - 1.0 ) < u ) && ( sh > 4.0 * mpi * mpi ) &&
( El > ml ) ) {
pdf = rate( u, w, xb );
double testRan = EvtRandom::Flat( 0.0, 24.2 );
if ( pdf >= testRan )
tryit = false;
}
}
// o.k. we have the three kinemtic variables
// now calculate a flat cos Theta_H [-1,1] distribution of the
// hadron flight direction w.r.t the B flight direction
// because the B is a scalar and should decay isotropic.
// Then chose a flat Phi_H [0,2Pi] w.r.t the B flight direction
// and and a flat Phi_L [0,2Pi] in the W restframe w.r.t the
// W flight direction.
double ctH = EvtRandom::Flat( -1, 1 );
double phH = EvtRandom::Flat( 0, 2 * M_PI );
double phL = EvtRandom::Flat( 0, 2 * M_PI );
// now compute the four vectors in the B Meson restframe
double ptmp, sttmp;
// calculate the hadron 4 vector in the B Meson restframe
sttmp = sqrt( 1 - ctH * ctH );
ptmp = sqrt( EX * EX - sh );
double pHB[4] = {EX, ptmp * sttmp * cos( phH ), ptmp * sttmp * sin( phH ),
ptmp * ctH};
p4.set( pHB[0], pHB[1], pHB[2], pHB[3] );
xuhad->init( getDaug( 0 ), p4 );
// calculate the W 4 vector in the B Meson restrframe
double apWB = ptmp;
double pWB[4] = {mB - EX, -pHB[1], -pHB[2], -pHB[3]};
// first go in the W restframe and calculate the lepton and
// the neutrino in the W frame
double mW2 = mB * mB + sh - 2 * mB * EX;
double beta = ptmp / pWB[0];
double gamma = pWB[0] / sqrt( mW2 );
double pLW[4];
ptmp = ( mW2 - ml * ml ) / 2 / sqrt( mW2 );
pLW[0] = sqrt( ml * ml + ptmp * ptmp );
double ctL = ( El - gamma * pLW[0] ) / beta / gamma / ptmp;
if ( ctL < -1 )
ctL = -1;
if ( ctL > 1 )
ctL = 1;
sttmp = sqrt( 1 - ctL * ctL );
// eX' = eZ x eW
double xW[3] = {-pWB[2], pWB[1], 0};
// eZ' = eW
double zW[3] = {pWB[1] / apWB, pWB[2] / apWB, pWB[3] / apWB};
double lx = sqrt( xW[0] * xW[0] + xW[1] * xW[1] );
for ( j = 0; j < 2; j++ )
xW[j] /= lx;
// eY' = eZ' x eX'
double yW[3] = {-pWB[1] * pWB[3], -pWB[2] * pWB[3],
pWB[1] * pWB[1] + pWB[2] * pWB[2]};
double ly = sqrt( yW[0] * yW[0] + yW[1] * yW[1] + yW[2] * yW[2] );
for ( j = 0; j < 3; j++ )
yW[j] /= ly;
// p_lep = |p_lep| * ( sin(Theta) * cos(Phi) * eX'
// + sin(Theta) * sin(Phi) * eY'
// + cos(Theta) * eZ')
for ( j = 0; j < 3; j++ )
pLW[j + 1] = sttmp * cos( phL ) * ptmp * xW[j] +
sttmp * sin( phL ) * ptmp * yW[j] + ctL * ptmp * zW[j];
double apLW = ptmp;
// boost them back in the B Meson restframe
double appLB = beta * gamma * pLW[0] + gamma * ctL * apLW;
ptmp = sqrt( El * El - ml * ml );
double ctLL = appLB / ptmp;
if ( ctLL > 1 )
ctLL = 1;
if ( ctLL < -1 )
ctLL = -1;
double pLB[4] = {El, 0, 0, 0};
double pNB[4] = {pWB[0] - El, 0, 0, 0};
for ( j = 1; j < 4; j++ ) {
pLB[j] = pLW[j] + ( ctLL * ptmp - ctL * apLW ) / apWB * pWB[j];
pNB[j] = pWB[j] - pLB[j];
}
p4.set( pLB[0], pLB[1], pLB[2], pLB[3] );
lepton->init( getDaug( 1 ), p4 );
p4.set( pNB[0], pNB[1], pNB[2], pNB[3] );
neutrino->init( getDaug( 2 ), p4 );
return;
}
double EvtVubAC::rate( double u, double w, double xb )
{
std::vector<double> vars( 11 );
vars[0] = u;
vars[1] = w;
vars[2] = xb;
double dGam = Coeff( u, w, xb ) * Sigma( wreg( w / ( 1 + u ) ), ularge( u ) ) +
d( u, w, xb );
return dGam;
}
double EvtVubAC::PolyLog( double v, double z )
{
if ( z >= 1 )
cout << "Error in EvtVubAC: 2nd argument to PolyLog is >= 1." << endl;
double sum = 0.0;
for ( int k = 1; k < 101; k++ ) {
sum = sum + pow( z, k ) / pow( k, v );
}
return sum;
}
double EvtVubAC::max( double ub, double lb )
{
if ( ub > lb )
return ub;
else
return lb;
}
double EvtVubAC::wreg( double w )
{
std::vector<double> vars( 11 );
vars[1] = w;
for ( int j = 3; j < 11; j++ ) {
vars[j] = gvars[j];
}
double K = ( 1 + c ) / ( 1 + c + pow( c, 2 ) );
return K * ( c + pow( w, 2 ) / ( w + c ) );
}
double EvtVubAC::ureg( double u )
{
std::vector<double> vars( 11 );
vars[0] = u;
for ( int j = 3; j < 11; j++ ) {
vars[j] = gvars[j];
}
return q + u * u / ( u + q );
}
double EvtVubAC::ularge( double u )
{
std::vector<double> vars( 11 );
vars[0] = u;
for ( int j = 3; j < 11; j++ ) {
vars[j] = gvars[j];
}
return u - k * u * u;
}
double EvtVubAC::alphaS( double Q )
{
std::vector<double> vars( 11 );
for ( int j = 3; j < 11; j++ ) {
vars[j] = gvars[j];
}
double a = 1.0 / ( log( Q * Q / FindRoot( alphaSmZ ) ) );
double b = FindRoot( alphaSmZ ) / ( FindRoot( alphaSmZ ) - Q * Q );
double ans = 1.0 / beta0 * ( a + b );
return ans;
}
double EvtVubAC::Coeff( double u, double w, double xb )
{
std::vector<double> vars( 11 );
vars[0] = u;
vars[1] = w;
vars[2] = xb;
for ( int j = 3; j < 11; j++ ) {
vars[j] = gvars[j];
}
double coeff = Coeff0( w, xb ) +
alphaS( mB * wreg( w / ( 1 + u ) ) ) * Coeff1( w, xb );
return coeff;
}
double EvtVubAC::Coeff0( double w, double xb )
{
std::vector<double> vars( 11 );
vars[1] = w;
vars[2] = xb;
for ( int j = 3; j < 11; j++ ) {
vars[j] = gvars[j];
}
return 12.0 * ( 1 + xb - w ) * ( w - xb );
}
double EvtVubAC::Coeff1( double w, double xb )
{
std::vector<double> vars( 11 );
vars[1] = w;
vars[2] = xb;
for ( int j = 3; j < 11; j++ ) {
vars[j] = gvars[j];
}
double a = 1 + xb - w;
double b = -PolyLog( 2, 1 - w ) - 3.0 / 2.0 * log( wreg( w ) ) -
1.0 / 2.0 * w * f( w ) - 35.0 / 8.0 + ( M_PI * M_PI ) / 6.0;
double c = 1.0 / 2.0 * xb * f( wreg( w ) );
double ans = 12.0 * CF / M_PI * ( w - xb ) * ( ( a * b ) + c );
return ans;
}
double EvtVubAC::d( double u, double w, double xb )
{
std::vector<double> vars( 11 );
vars[0] = u;
vars[1] = w;
vars[2] = xb;
for ( int j = 3; j < 11; j++ ) {
vars[j] = gvars[j];
}
return alphaS( mB * wreg( w / ( 1.0 + u ) ) ) * CF / M_PI * d1( u, w, xb );
}
double EvtVubAC::d1( double u, double w, double xb )
{
std::vector<double> vars( 11 );
vars[0] = u;
vars[1] = w;
vars[2] = xb;
for ( int j = 3; j < 11; j++ ) {
vars[j] = gvars[j];
}
double a = 3 * pow( w, 4 ) * ( 24 + 3 * w - 8 * xb ) /
( 4 * pow( 1 + u, 5 ) );
double b = 9 * pow( w, 4 ) * ( 24 + 3 * w - 8 * xb ) /
( 8 * pow( 1 + u, 4 ) );
double c = 9 * ( -12 + w ) * pow( -2 + w, 2 ) * pow( w - 2 * xb, 2 ) /
( 16 * pow( 1 - u, 3 ) );
double cc = 9 * ( -12 + w ) * pow( -2 + w, 2 ) * pow( w - 2 * xb, 2 ) /
( 32 * pow( 1 - u, 2 ) );
double d = 3 * pow( w, 2 ) *
( 32 - 47 * w - 8 * w * w + 16 * xb + 20 * w * xb + w * w * xb +
8 * xb * xb - 3 * w * xb * xb ) /
( 8 * pow( 1 + u, 2 ) );
double e = 1 / ( 8 * pow( 1 + u, 3 ) ) *
( 3 * w * w *
( -64 + 94 * w + 40 * w * w + 3 * pow( w, 3 ) - 32 * xb -
40 * xb * w - 10 * w * w * xb - 16 * xb * xb +
6 * w * xb * xb ) );
double f = 1 / ( 64 * ( 1 + u ) ) *
( 3 * ( 640 * w - 368 * w * w - 200 * w * w * w -
16 * pow( w, 4 ) + 3 * pow( w, 5 ) - 384 * xb +
320 * w * xb + 528 * w * w * xb + 112 * pow( w, 3 ) * xb -
16 * pow( w, 4 ) * xb - 256 * xb * xb -
48 * w * xb * xb - 224 * pow( w, 2 ) * pow( xb, 2 ) +
24 * pow( w, 3 ) * pow( xb, 2 ) ) );
double g = 1 / ( 64 * ( 1 - u ) ) *
( 3 * ( -256 * w + 528 * w * w - 200 * pow( w, 3 ) -
16 * pow( w, 4 ) + 3 * pow( w, 5 ) + 512 * xb -
1472 * w * xb + 528 * pow( w, 2 ) * xb +
112 * pow( w, 3 ) * xb - 16 * pow( w, 4 ) * xb +
640 * xb * xb - 48 * w * xb * xb -
224 * pow( w, 2 ) * pow( xb, 2 ) +
24 * pow( w, 3 ) * pow( xb, 2 ) ) );
double h = 9 * pow( w, 5 ) * log( ureg( u ) ) / ( 4 * pow( 1 + u, 6 ) );
double i = 9 * pow( w, 5 ) * log( ureg( u ) ) / ( 2 * pow( 1 + u, 5 ) );
double ii = 9 * ( -12 + w ) * pow( -2 + w, 2 ) * pow( w - 2 * xb, 2 ) *
log( ureg( u ) ) / ( 16 * pow( 1 - u, 4 ) );
double j = 9 * ( -12 + w ) * pow( -2 + w, 2 ) * pow( w - 2 * xb, 2 ) *
log( ureg( u ) ) / ( 16 * pow( 1 - u, 3 ) );
double k = ( 3 * pow( w, 3 ) *
( -10 + 16 * w + pow( w, 2 ) + 8 * xb - 2 * w * xb -
2 * pow( xb, 2 ) ) *
log( ureg( u ) ) ) /
( 8 * pow( 1 + u, 3 ) );
double l = ( 3 * pow( w, 3 ) *
( -10 + 16 * w + 7 * pow( w, 2 ) + 8 * xb - 2 * w * xb -
2 * pow( xb, 2 ) ) *
log( ureg( u ) ) ) /
( 8 * pow( 1 + u, 4 ) );
double m = 1 / ( 64 * pow( 1 + u, 2 ) ) *
( 3 * w *
( -144 * w + 208 * pow( w, 2 ) + 16 * pow( w, 3 ) +
pow( w, 4 ) - 64 * xb - 80 * w * xb - 16 * pow( w, 2 ) * xb -
8 * pow( w, 3 ) * xb + 48 * xb * xb - 96 * w * xb * xb +
16 * pow( w, 2 ) * pow( xb, 2 ) ) *
log( ureg( u ) ) );
double n = 1 / ( 64 * pow( 1 - u, 2 ) ) *
( 3 *
( -256 * w + 624 * pow( w, 2 ) - 304 * pow( w, 3 ) +
16 * pow( w, 4 ) + pow( w, 5 ) + 512 * xb - 1856 * w * xb +
944 * pow( w, 2 ) * xb - 16 * pow( w, 3 ) * xb -
8 * pow( w, 4 ) * xb + 1024 * xb * xb - 464 * w * xb * xb -
96 * pow( w, 2 ) * pow( xb, 2 ) +
16 * pow( w, 3 ) * pow( xb, 2 ) ) *
log( ureg( u ) ) );
double rem = -a + b - c + cc - d - e + f + g - h + i - ii + j + k - l - m + n;
return rem;
}
double EvtVubAC::f( double w )
{
std::vector<double> vars( 11 );
vars[1] = w;
for ( int j = 3; j < 11; j++ ) {
vars[j] = gvars[j];
}
if ( w != 1 )
return log( w ) / ( 1 - w );
else
return -1;
}
double EvtVubAC::Lambda2( double x, const double alphaSmZ )
{
std::vector<double> vars( 11 );
for ( int j = 3; j < 11; j++ ) {
vars[j] = gvars[j];
}
double alphaSmB = 0.22 * alphaSmZ / 0.1189;
double func = ( 1 / beta0 ) *
( 1 / log( mB * mB / x ) + x / ( x - mB * mB ) ) -
alphaSmB;
return func;
}
double EvtVubAC::FindRoot( const double alphaSmZ )
{
std::vector<double> vars( 11 );
for ( int j = 3; j < 11; j++ ) {
vars[j] = gvars[j];
}
double root;
const double precision = 1e-8;
Bisect( 0.0, 1.0, precision, root, alphaSmZ );
return root;
}
int EvtVubAC::Bisect( double x1, double x2, double precision, double& root,
const double alphaSmZ )
{
std::vector<double> vars( 11 );
for ( int j = 3; j < 11; j++ ) {
vars[j] = gvars[j];
}
if ( Lambda2( x1, alphaSmZ ) * Lambda2( x2, alphaSmZ ) > 0 ) {
root = 0;
return 0;
} else {
double x = 0.5 * ( x1 + x2 );
if ( fabs( Lambda2( x, alphaSmZ ) ) < precision ) {
root = x;
return 1;
} else {
if ( Lambda2( x1, alphaSmZ ) * Lambda2( x, alphaSmZ ) < 0 ) {
return Bisect( x1, x, precision, root, alphaSmZ );
} else {
return Bisect( x, x2, precision, root, alphaSmZ );
}
}
}
}
//Bi-Linear interpolation function for sigma()
double EvtVubAC::Sigma( double x1, double x2 )
{
double ans;
int j = 0;
int k = 0;
int JMAX = 20;
int KMAX = 6282;
if ( ( x1 < 0.04 ) | ( x1 > 1.0 ) | ( x2 > 0.9981306360766614 ) ) {
cout << "Input variables are not in range" << endl;
return 0;
}
else {
double sigma[6283][21] = {
{1.4165575231667025e-6, 2.367068423885654e-6, 3.010516455581869e-6,
3.5037825936986625e-6, 3.929518324374288e-6, 4.306057170491293e-6,
4.670305737607004e-6, 5.03601978363166e-6, 5.38081382734055e-6,
5.706111094422232e-6, 6.01592741932564e-6, 6.312683745642994e-6,
6.599149887344445e-6, 6.876589598409881e-6, 7.146140172115845e-6,
7.408228896739411e-6, 7.66381903520912e-6, 7.914216132923142e-6,
8.158375083092094e-6, 8.387923687779773e-6, 8.609047991600152e-6},
{1.4242950283096505e-6, 2.3821813865451333e-6,
3.0321094979724177e-6, 3.531463105585163e-6,
3.963281819193405e-6, 4.345928764350666e-6,
4.716578534159503e-6, 5.0891092458471885e-6,
5.440882358124266e-6, 5.773300334146699e-6,
6.090393611799158e-6, 6.394582544259559e-6,
6.6886559040585555e-6, 6.973876196346317e-6,
7.251379536127028e-6, 7.521582534359883e-6,
7.78545760383978e-6, 8.044322886507219e-6,
8.297093782815202e-6, 8.535252273580483e-6,
8.76506526572483e-6},
{1.432085473265309e-6, 2.397426211753438e-6, 3.053927960769999e-6,
3.559478172452427e-6, 3.997507657500483e-6, 4.386409405362107e-6,
4.763630567689123e-6, 5.143175144213434e-6, 5.5021483329791995e-6,
5.841932217571044e-6, 6.166572855026258e-6, 6.478490721190443e-6,
6.780495077370961e-6, 7.073848449513044e-6, 7.359687275376904e-6,
7.638419489154442e-6, 7.911031108690893e-6, 8.178859267303823e-6,
8.440787940213002e-6, 8.688163613340468e-6, 8.92736042107122e-6},
{1.439929354714352e-6, 2.41280463514272e-6, 3.0759756040991857e-6,
3.5878345116181944e-6, 4.0322066625519e-6, 4.427515357355928e-6,
4.811485212210924e-6, 5.198250042510372e-6, 5.564655974117598e-6,
5.912066071547593e-6, 6.244545266975116e-6, 6.5645198876533405e-6,
6.874832084123841e-6, 7.176767831207023e-6, 7.471508054632459e-6,
7.759532156090581e-6, 8.04198240629201e-6, 8.32045326864888e-6,
8.594180689511984e-6, 8.854977185824032e-6, 9.110250789357704e-6},
{1.4478271762507601e-6, 2.4283184286282795e-6,
3.098256291022933e-6, 3.6165390675423683e-6,
4.067390102434151e-6, 4.469263755477156e-6,
4.860167832347213e-6, 5.254372135627978e-6,
5.6284672051347425e-6, 5.9838160854326365e-6,
6.3245497730126735e-6, 6.653205576198729e-6,
6.972878946209313e-6, 7.285309002010701e-6,
7.592510371689441e-6, 7.896411617922357e-6,
8.20063859130551e-6, 8.510772078503667e-6,
8.832168193219429e-6, 9.165813151304237e-6,
9.53285861473224e-6},
{1.4557794485384492e-6, 2.4439694016732532e-6,
3.1207739929456703e-6, 3.6455990425662466e-6,
4.103069949395984e-6, 4.511674486770287e-6,
4.9097162595434805e-6, 5.31163173249103e-6,
5.693833505594434e-6, 6.057899920792941e-6,
6.40853743177932e-6, 6.749486714584406e-6,
7.086268724196642e-6, 7.425114172566452e-6,
7.775933736046638e-6, 8.153858881648055e-6,
8.583979262125893e-6, 9.104919794810385e-6,
9.771190049418475e-6, 0.000010655316056335114,
0.000011879449548606903},
{1.4637866894434715e-6, 2.4597594026488963e-6,
3.1435328023270215e-6, 3.675022094200968e-6,
4.139261015606768e-6, 4.554785482753721e-6,
4.960261093796092e-6, 5.370505023603311e-6,
5.762353786846746e-6, 6.139117526304596e-6,
6.509469970691759e-6, 6.885255799616473e-6,
7.287458092501649e-6, 7.749887299160317e-6,
8.32885760857551e-6, 9.113946680584014e-6,
0.000010246567374771375, 0.000011937444274020002,
0.000014487810062278417, 0.000018317257226721972,
0.000024019460747614908},
{1.4718494242154426e-6, 2.47569032092263e-6,
3.1665369954244623e-6, 3.704817540595162e-6,
4.1759933558943466e-6, 4.598735271412134e-6,
5.0124291131193585e-6, 5.433421718923075e-6,
5.842081003357196e-6, 6.25081174384318e-6,
6.687863486666798e-6, 7.203370086561662e-6,
7.888130624783698e-6, 8.895491964923852e-6,
0.000010474854356656637, 0.000013013790895360114,
0.000017103162658690718, 0.000023594388998758814,
0.000033675540649204326, 0.0000489743631710715,
0.00007167123447469805},
{1.4799681856124983e-6, 2.4917640930821483e-6,
3.189791331459303e-6, 3.7350018542235523e-6,
4.213364439714587e-6, 4.6440845681077435e-6,
5.068808179491631e-6, 5.510100074518286e-6,
5.963880470002839e-6, 6.478624017039391e-6,
7.15653839638677e-6, 8.186319369076682e-6,
9.901211792269553e-6, 0.00001285388168746797,
0.00001791473813352924, 0.000026395814832379054,
0.00004023796628984912, 0.00006215097225704537,
0.00009581181745663649, 0.00014613963204180726,
0.00021950361737713158},
{1.4881435141358186e-6, 2.5079827251928324e-6,
3.2133022065365606e-6, 3.7656181018241744e-6,
4.251709132603763e-6, 4.692789471300035e-6,
5.138092460064064e-6, 5.631736014247149e-6,
6.222486583756952e-6, 7.074460431913035e-6,
8.516847254554029e-6, 0.000011146675936698287,
0.00001598487036709448, 0.000024676371711528723,
0.00003973100609228614, 0.00006482027286305135,
0.00010522951047594253, 0.00016812223653460108,
0.0002629574390857122, 0.0004020922351741092,
0.0006010848384153264},
{1.4963759583151903e-6, 2.5243483687339437e-6,
3.237081297203293e-6, 3.7967920233725075e-6,
4.292052792747759e-6, 4.750619410688871e-6,
5.244743138386107e-6, 5.882169800577362e-6,
6.861806219944362e-6, 8.661389866449539e-6,
0.000012201247096758813, 0.000019102025579797836,
0.00003204800713762135, 0.00005523761951074777,
0.00009488701985136956, 0.00015983464774662793,
0.0002624903756946114, 0.0004192081140389302,
0.0006510290476882939, 0.0009848304741404048,
0.001453606151783205},
{1.5046660751362809e-6, 2.5408635441916518e-6,
3.2611553025151935e-6, 3.828869434733319e-6,
4.337140997577745e-6, 4.832296391723187e-6,
5.448304652803628e-6, 6.456759953337761e-6,
8.427640167753178e-6, 0.000012582140894959107,
0.000021189631492341075, 0.00003812415991730859,
0.00006961051442979106, 0.00012511009513628465,
0.0002182386548602159, 0.00036784253513290593,
0.0005997802091285906, 0.0009472266290232328,
0.001451824037624317, 0.002165658547709524,
0.003151169272603568},
{1.513014431349342e-6, 2.5575317180811684e-6,
3.285588677838592e-6, 3.862711264004167e-6,
4.393497785977758e-6, 4.971131108182325e-6,
5.877560126916229e-6, 7.760928857782783e-6,
0.000012010321954462888, 0.000021425611998560057,
0.00004103962752813721, 0.00007918737669843748,
0.00014888249214427865, 0.00026937365623495315,
0.0004676234374684211, 0.0007800133940380605,
0.0012554029868658135, 0.001954878490320336,
0.002953326775520852, 0.004342592761282795,
0.006230305880813369},
{1.5214216061560787e-6, 2.5743586303033982e-6,
3.3105310719671444e-6, 3.900262214432865e-6,
4.475130527383932e-6, 5.235335812545794e-6,
6.785170800407953e-6, 0.000010559617886456428,
0.00001959432925507232, 0.00003974849574067812,
0.00008123032330758901, 0.00016046128193448512,
0.00030239231008775475, 0.0005429844586595434,
0.0009313282559741494, 0.0015320746067456524,
0.002430327191761932, 0.0037298539621533943,
0.005555001710404613, 0.008055488664119443,
0.01140294234277542},
{1.5298881979199149e-6, 2.5913550650337333e-6,
3.3363075201731546e-6, 3.945553070358598e-6,
4.609645375882153e-6, 5.7534035948277485e-6,
8.6281322961162e-6, 0.00001618613002467588,
0.000034522566143361974, 0.00007498638814380939,
0.0001567741933120429, 0.0003099190887628005,
0.0005788872417090989, 0.0010261999496239762,
0.0017351191486051154, 0.0028127793397316565,
0.00439758309482629, 0.006654203181386234,
0.009775650207394033, 0.01399031690947417,
0.019554413524984018},
{1.5384148382146062e-6, 2.6085421793093757e-6,
3.363577051101362e-6, 4.006339805182163e-6,
4.847635588501795e-6, 6.750895084216383e-6,
0.000012178274838076293, 0.000026814440475319445,
0.00006207145889058571, 0.00013852515797848467,
0.0002900125142959978, 0.0005680779911740601,
0.0010471718093499022, 0.0018295202476562482,
0.003048049240517677, 0.004870014942795054,
0.007507693594407426, 0.011207634535357707,
0.016252610920484533, 0.02297179206027768,
0.031726572263536444},
{1.5470022202746443e-6, 2.625961058099045e-6,
3.393593730788004e-6, 4.096619277841392e-6,
5.276235380016173e-6, 8.600649651365437e-6,
0.00001866526609039772, 0.00004579370650498204,
0.00011012121621194627, 0.0002468829467558532,
0.0005124817585587294, 0.0009906612725140323,
0.0017995423134806174, 0.003097653379464161,
0.005086410631528326, 0.008013830177211499,
0.012189442172874584, 0.017964254744995103,
0.025732289616612326, 0.0359451506759231,
0.049088007204468306},
{1.5556511529974288e-6, 2.6436888489316735e-6,
3.428612625232792e-6, 4.240286293950054e-6,
6.037684078780381e-6, 0.00001188786644943293,
0.000029952375228572037, 0.0000780381800097773,
0.0001898952986365243, 0.0004229387305311314,
0.0008667252713783584, 0.0016509728967638818,
0.0029545141743473613, 0.005012119898817954,
0.008115414359872444, 0.012616030573221951,
0.018945843767181895, 0.027583041317612942,
0.03905299426271493, 0.053949040565240185,
0.07289464072278114},
{1.5643626575619947e-6, 2.661864627406368e-6,
3.472490974068608e-6, 4.476206333080683e-6,
7.353619437601509e-6, 0.0000174907416164655,
0.000048742896083762044, 0.0001304607158223583,
0.00031673552439171794, 0.0006971361661801552,
0.0014079258419505507, 0.0026417999567848118,
0.004658608360065678, 0.007792253539476956,
0.012448421899341575, 0.019106349412464467,
0.028345669898428426, 0.040792937698607125,
0.05712172284835164, 0.07808215030146379,
0.10444452670068657},
{1.5731381324804837e-6, 2.6807290253159536e-6,
3.531541305119222e-6, 4.8649702111799365e-6,
9.555624553184329e-6, 0.000026676480446206257,
0.00007881286473782216, 0.00021243409469498412,
0.0005108749161733128, 0.0011085914132178266,
0.00220524825673807, 0.004076699453691786,
0.007087049343137447, 0.011694503122693831,
0.018443774719382196, 0.027965500589675465,
0.04101123894422824, 0.05837384431341115,
0.08088689418191775, 0.10946642015864853,
0.14503063237367791},
{1.5819796233174533e-6, 2.7006825788205983e-6,
3.615697665826625e-6, 5.497571021125409e-6,
0.00001312230620976001, 0.00004121161014650627,
0.0001252637547419822, 0.000336261747196805,
0.0007981694308872648, 0.0017060397687879017,
0.003342803139736269, 0.006090575798958407,
0.010443316278806748, 0.017010077375662024,
0.026499451431750184, 0.03971563580682796,
0.05760340210312129, 0.08113495270602172,
0.11130907157712167, 0.1492095346815254,
0.19589494697472482},
{1.5908902467656185e-6, 2.7223686756563747e-6,
3.7400581318526452e-6, 6.506201216066848e-6,
0.000018722903529551973, 0.00006348467562846283,
0.00019478733818076391, 0.0005176382740173991,
0.001210751772414234, 0.0025485667487520126,
0.004920170614283094, 0.008839507283719138,
0.01495757117327545, 0.024061086223362955,
0.037045913731879855, 0.054908857746228355,
0.0788047458184871, 0.1098918705586729,
0.14933157753069337, 0.19836902191140696,
0.25818658760673646},
{1.5998748349206745e-6, 2.7467878521353687e-6,
3.9268660021259425e-6, 8.077311274611309e-6,
0.000027267135497694697, 0.00009663866887322153,
0.0002959339418981737, 0.0007760803428767021,
0.0017875749703394415, 0.0037060829882311153,
0.007052451153447449, 0.012499828175607113,
0.020884056084937964, 0.03319541365801124,
0.050537581282805076, 0.07411449109468546,
0.10530201609807366, 0.14544385913470914,
0.19585260984783984, 0.2579197842095138,
0.33292581430934315},
{1.6089408845521025e-6, 2.775450963087429e-6,
4.207988518549997e-6, 0.000010467004494302723,
0.00003996071386953883, 0.00014470996503643152,
0.0004393749225142152, 0.0011353099177503084,
0.0025748196041515767, 0.0052595174015571755,
0.009869838652396812, 0.017266514453751353,
0.02849760259020349, 0.04478060774811892,
0.06744340697077848, 0.09790579938281328,
0.1377686781877481, 0.1885522983748533,
0.25170011318565394, 0.32872634798699013,
0.42097512633915835},
{1.6180999172731557e-6, 2.8105793766022044e-6,
4.627945658011284e-6, 0.000014018769074988644,
0.000058365690910508656, 0.00021277014030094841,
0.0006381502992380369, 0.0016235740885920734,
0.0036261457447241937, 0.007300718057476648,
0.013516735263679908, 0.023350953490892404,
0.038089430212364696, 0.05919709546893173,
0.08823701624932946, 0.1268467748111016,
0.17684838467332908, 0.23992124906046522,
0.3176102871985929, 0.41152060640718635,
0.5230179563326538},
{1.6273693804122808e-6, 2.855360797529371e-6,
5.247532792144956e-6, 0.000019183472767551977,
0.0000844645923773722, 0.0003070668353328971,
0.0009078930528013489, 0.0022738887382825535,
0.0050027782235240225, 0.009932064129121497,
0.01815044765682786, 0.030978200608503186,
0.049962427485205324, 0.07683102853864204,
0.11338683755307183, 0.16147953728360048,
0.22313996065307376, 0.30018072778057464,
0.3942102603538536, 0.5068853787387089,
0.6395449424185938},
{1.636775244060925e-6, 2.9142695658625987e-6,
6.148070169032893e-6, 0.000026541470795600193,
0.0001207271140014269, 0.00043515979775103945,
0.0012670225338663058, 0.0031241966325865414,
0.006773421187495087, 0.013265804337086176,
0.02393951953561076, 0.0403838387407838,
0.06442611216073588, 0.09806704685407008,
0.1433465947327181, 0.2023127722750932,
0.2771843452525808, 0.36987307125145374,
0.4820051499420347, 0.6152437418990134,
0.77084735101487},
{1.6463554766156158e-6, 2.9934602948803937e-6,
7.436299704187155e-6, 0.0000368266078389977,
0.00017017803936847343, 0.0006060483703664685,
0.0017369006277964632, 0.004217434000333606,
0.009014004646002967, 0.017423147089353726,
0.031061765435179054, 0.051810562479880445,
0.08179145866470951, 0.12328121393767191,
0.17854646570697147, 0.24981152647307434,
0.3394537681346465, 0.4494425558533846,
0.5813694753732749, 0.7368538091850017,
0.9170169397458557},
{1.6561646094463662e-6, 3.101243497508421e-6,
9.249935982086615e-6, 0.00005095183233053057,
0.00023646496981230873, 0.0008302869649920055,
0.0023419456979765613, 0.005601503077080781,
0.01180727158580235, 0.02253313486303838,
0.03970207637059566, 0.06550460593462343,
0.10236576424242672, 0.15283433900199833,
0.21938514101834938, 0.3043885738416842,
0.4103432966012716, 0.5392282633159137,
0.6925426966468282, 0.871808434198278,
1.0779513761570778},
{1.6662796291530785e-6, 3.248651399327714e-6,
0.000011763864179311934, 0.00007003608826513491,
0.0003239244410258876, 0.0011200854462643946,
0.0031097007874790416, 0.0073291512543889464,
0.015242219056297324, 0.028731340301421836,
0.050050069401871976, 0.08171212664928128,
0.1264477031142238, 0.1870658569722358,
0.2662229469947146, 0.36639746851802635,
0.49016476819093696, 0.6394600464784137,
0.81562851035087, 1.020039194937652,
1.2533642448113806},
{1.6768074642004043e-6, 3.450101463604055e-6,
0.000015196963336252628, 0.00009543210752470049,
0.000437645032519839, 0.001489391816684247,
0.004070854021038824, 0.009457760292878214,
0.019413410342837716, 0.03615842419287224,
0.06229765132801591, 0.10067564679838144,
0.1543226928051347, 0.22628839435166356,
0.3193761344415018, 0.4361273180751109,
0.579143027070741, 0.750257348654081,
0.9505974456858588, 1.1813239516757859,
1.4427986630375897},
{1.6878943592810031e-6, 3.724164272234494e-6,
0.000019819519483496416, 0.00012875469517094985,
0.0005835261491133876, 0.0019539551141900453,
0.005259210552151588, 0.012049051447434213,
0.024420177959613536, 0.04495859622765939,
0.07663656227026278, 0.12263063936487077,
0.18625867061712828, 0.27078310756786955,
0.37911237753290733, 0.5137992426180706,
0.6774143095590336, 0.8716305628193793,
1.0972922550783324, 1.3552972596266903,
1.6456435652831634},
{1.6997374562267799e-6, 4.0944413418394495e-6,
0.00002596117998884592, 0.00017190908143148808,
0.0007683312615735998, 0.0025313669804751197,
0.0067116166944380905, 0.015168714281241717,
0.03036573877209292, 0.05527801851693259,
0.09325595857299802, 0.14780233219488534,
0.22250235251373585, 0.32079584301998637,
0.4456474800330532, 0.5995644320047545,
0.7850265729161433, 1.0034845779533896,
1.2554355797234755, 1.5414629412441154,
1.861151791182954},
{1.7125989232531552e-6, 4.590557232809274e-6,
0.00003401938847369127, 0.0002271189068948933,
0.0009997345290974683, 0.0032410809085330855,
0.008467838027103932, 0.018885968405629856,
0.0373562432072745, 0.06726318964423804,
0.11234008689352205, 0.1764027876596308,
0.26327602260144733, 0.37653413542572084,
0.5191432475103421, 0.6935036743480036,
0.9019415294161868, 1.145624144250621,
1.4246393819194252, 1.7392081723351958,
2.088459209360414},
{1.7268229944793185e-6, 5.249268960566631e-6,
0.00004446822902939401, 0.00029695341107025377,
0.0012863598822313311, 0.004104408711919929,
0.010570394249099675, 0.023273068391832786,
0.045499780357335706, 0.08105934383417208,
0.1340660931327884, 0.20862830088381978,
0.3087748796642574, 0.4381650336874999,
0.5997064545493007, 0.7956282024343809,
1.0280381316036096, 1.2977606915926798,
1.6044156661621023, 1.9478185018058252,
2.3266042167331467},
{1.7428562985195568e-6, 6.115694278465046e-6,
0.000057867599452833204, 0.00038435340793581516,
0.0016378118140554672, 0.005144494260192542,
0.013064354364333734, 0.028404762691855268,
0.05490535996846512, 0.0968088959694796,
0.15860200144370878, 0.24465714566131336,
0.35916494827197254, 0.5058137214119519,
0.6873888144460659, 0.9058816890469097,
1.1631172514408488, 1.4595202519494945,
1.7941880534971448, 2.166493299333181,
2.574547063458953},
{1.7612718682976486e-6, 7.244658899339143e-6,
0.00007487262594500909, 0.0004926556542219411,
0.0020646973035499915, 0.006386264983020308,
0.015997096409090007, 0.034357717622638666,
0.06568189097257313, 0.11464995893529739,
0.1861048903081845, 0.28464768463733053,
0.4145815460279591, 0.579562882197691,
0.7821878445845453, 1.024143215568575,
1.3069073028316045, 1.6304521622188552,
1.9933038235040392, 2.394361202834716,
2.8311885607058933},
{1.7827972331899367e-6, 8.702161194235611e-6,
0.00009624322625289425, 0.0006256152456106687,
0.002578638472249533, 0.007856362051253054,
0.019418036388055535, 0.04120991736085751,
0.07793717449946062, 0.13471495534431105,
0.216719284873248, 0.32873684931106395,
0.47512828554947634, 0.6594527474383086,
0.8840485126003002, 1.1502310388677732,
1.4590705711138292, 1.810038255973099,
2.2010460915016106, 2.63049521402331,
3.0953878281660367},
{1.8083469991446894e-6, 0.0000105669513807526,
0.00012285372459434343, 0.0007874257113905942,
0.00319227574866122, 0.009583050491657303,
0.02337833137797358, 0.049040050517828684,
0.0917769273236488, 0.15712934128412706,
0.2505757775733864, 0.37703898600273744,
0.5408765796505841, 0.7454817561460553,
0.9928655454928005, 1.2839069876543716,
1.619210032270365, 1.9977022878759618,
2.416645842060658, 2.8739271626343323,
3.3659788282097716},
{1.8390603233390369e-6, 0.000012932220719373853,
0.00015570241984984182, 0.000982736518022948,
0.00391926148035256, 0.011596110780777314,
0.02793056190267554, 0.05792689326799081,
0.10730384956159388, 0.18201045547242564,
0.28778988266320255, 0.42964505614359183,
0.611865610700175, 0.8376077516109677,
1.108486285026126, 1.4248813297549814,
1.7868764668912749, 2.1928193709750126,
2.639293591470906, 3.1236613261552035,
3.6417855125388785},
{1.8763436845386128e-6, 0.000015907394801250078,
0.00019592100835682667, 0.001216667735185885,
0.004774244087885632, 0.013926713692415197,
0.0331283986973674, 0.067948698240848,
0.12461674823355219, 0.20946650321365776,
0.3284611247074697, 0.486622173027098,
0.6881027199775471, 0.9357496379861163,
1.2307139771248388, 1.572817964804059,
1.961575697793186, 2.394725243016916,
2.8681504999172827, 3.3786870509783,
3.9216354747685696},
{1.9219193422115544e-6, 0.00001962002365623808,
0.0002447837640876234, 0.0014948216629415776,
0.005772842995430481, 0.01660728034438593,
0.03902625888197475, 0.07918259750215656,
0.14380972611577056, 0.23959568089775865,
0.37267235634405865, 0.5480134523990445,
0.7695641697396964, 1.0397894205703424,
1.3593113896896334, 1.727339811609785,
2.142775804446394, 2.602725212186531,
3.1023587978219638, 3.6379902723580413,
4.204372058803245},
{1.9778798634336966e-6, 0.000024217760156956277,
0.0003037163818904775, 0.0018232912645627945,
0.006931614698225729, 0.019671329506747902,
0.04567895637173074, 0.0917040269877877,
0.16497144319314258, 0.27248544351336607,
0.42048929673391544, 0.6138381508271357,
0.856196229336863, 1.1495745561253057,
1.494004661603642, 1.8880342750586145,
2.32991419106622, 2.816102664432689,
3.3410514295942964, 3.9005638743665223,
4.488864918838052},
{2.046749078630776e-6, 0.000029870417058514958,
0.00037430439367192416, 0.002208665295235165,
0.008268010436046849, 0.023153314299916024,
0.05314135108606831, 0.10558617875020963,
0.18818445602575015, 0.30821191478918875,
0.4719602790003972, 0.684092063524917,
0.9479165367634753, 1.2649205435475264,
1.6344872950666178, 2.054458693183248,
2.522404407731999, 3.03412704331903,
3.5833608517273383, 4.165416867514862,
4.77401906324545},
{2.131549805149105e-6, 0.000036772092006842, 0.0004583010727221925,
0.002658030061464078, 0.009800326034001688, 0.02708845043191853,
0.061468001191189614, 0.12089948636450976, 0.21352463849769826,
0.3468394371330045, 0.5271161925794761, 0.7587481520516848,
1.044615688227576, 1.3856136902110838, 1.7804242132819685,
2.2261456804128175, 2.719642644758184, 3.2560612388762675,
3.828426950859771, 4.43158239135674, 5.058782442554723},
{2.235878651352517e-6, 0.000045143348981988094,
0.0005576347476672142, 0.003178967788784169,
0.0115476445473435, 0.03151253810493502,
0.07071282224296754, 0.13771114784448563,
0.24106068574506692, 0.3884202564995707,
0.5859706046831058, 0.8377573719125164,
1.1461590104056392, 1.511413994955464,
1.9314558155329236, 2.4026082976696435,
2.9210138394819185, 3.4811683441657504,
4.075404071328584, 4.69812457285889,
5.342152162309612},
{2.363988183975109e-6, 0.00005523344391956286,
0.0006744154545854206, 0.003779551615714256,
0.013529772405985675, 0.03646177966768815,
0.0809287566990027, 0.15608468946053752,
0.27085370157399347, 0.4329943356673241,
0.6485200439452222, 0.9210496703909153,
1.252388472793057, 1.642058094726733,
2.0872019715109813, 2.5833449936103605,
3.1258973515108526, 3.708717757261682,
4.323467161225994, 4.964144289314129,
5.623179415884988},
{2.5208767085088327e-6, 0.00006732258168101166, 0.00081094086349395,
0.004468337269336546, 0.015767169797758405, 0.0419725950077701,
0.09216745685402603, 0.17607957294604765, 0.30295686838449964,
0.4805892881125399, 0.7147444286964327, 1.0085351258217226,
1.3631247007652825, 1.777262228053621, 2.247265906172521,
2.7678442737641578, 3.333672177258427, 3.9379906222843233,
4.571817061463749, 5.228783897803231, 5.900973241389064},
{2.7123858761366235e-6, 0.00008172419111788278,
0.0009697014235115882, 0.0052543515120334755,
0.018280876058161304, 0.04808143657187347,
0.1044789838320383, 0.1977508477394313,
0.3374151975091562, 0.531220423707208,
0.784607622123798, 1.1001052008279897,
1.4781690534621235, 1.9167251746670722,
2.411237935234477, 2.9555890655078954,
3.5437216873233663, 4.168284616194183,
4.819684974288922, 5.491231002380123,
6.174703211519616},
{2.945306291934964e-6, 0.00009878720469670687,
0.0011533846793970344, 0.006147077479579734,
0.021092430849582774, 0.054824605777216304,
0.11791152485068139, 0.2211488491431043,
0.3742653569518169, 0.5848908967992326,
0.8580580967440996, 1.1956340836905877,
1.5973057342578452, 2.060131136509264,
2.578699019569, 3.1460607567083727,
3.75543788104267, 4.398918098550114,
5.066336156542348, 5.750721335917189,
6.443601166529902},
{3.2274912584201617e-6, 0.00011889832901725516,
0.0013648787206953943, 0.007156437057773553,
0.024223791915963, 0.062238072438853466,
0.1325111305658921, 0.24631894259294124,
0.413535572760673, 0.6415919468255633,
0.9350296910854496, 1.2949800938960951,
1.720303905268134, 2.2071525310201032,
2.749224114156461, 3.338742894472579,
3.968225161496663, 4.629233649621342,
5.311072889144023, 6.006540836505358,
6.70696209903809},
{3.567978745837606e-6, 0.00014248429255694223,
0.0016072747332691478, 0.008292770468076372,
0.0276972501910117, 0.07035729868932013,
0.14832147391401887, 0.27330131362440324,
0.45524559967958667, 0.7013032214257535,
1.0154424421718227, 1.3979871299336881,
1.846919780980958, 2.357452672861386,
2.9223852938781962, 3.5331245378277356,
4.181503641527339, 4.858601028407002,
5.553236778243849, 6.258026998997093,
6.9641442959263005},
{3.97712163686946e-6, 0.00017001405710587872,
0.0018838686314283193, 0.009566813252313802,
0.03153534302071044, 0.07921706871297328,
0.16538363149910074, 0.30213080259413927,
0.4994067562782764, 0.7639931720316397,
1.0992034782832825, 1.5044861395154412,
1.9768986796115864, 2.510688325092997,
3.0977546442747204, 3.7287032643776024,
4.394711997114919, 5.086419586530759,
5.792210445571864, 6.50456958118505,
7.214568837568747},
{4.4667262485760555e-6, 0.00020200097960946004,
0.0021981617571079615, 0.010989670862447672,
0.03576076623530181, 0.08885132546082886,
0.18373588822854275, 0.33283678276647727,
0.5460220194507918, 0.8296195120766913,
1.186207957472949, 1.614296594519023,
2.1099770141202785, 2.6665121052247085,
3.2749069104824233, 3.924987836138029,
4.607309888913038, 5.312120176901776,
6.027418666102737, 6.745610741637275,
7.457718548558833},
{5.050199089211643e-6, 0.00023900491149709497,
0.0025538606404726895, 0.012572791073915783,
0.04039628577358547, 0.09929301535552645,
0.20341356558350993, 0.3654430799994458,
0.5950861729779234, 0.8981297282667862,
1.2763400384183374, 1.7272279550508651,
2.2458842079573063, 2.8245747355216055,
3.453421901927604, 4.121500533940025,
4.818779976038078, 5.535166597706631,
6.258329010519336, 6.980644682713785,
7.693136487348965},
{5.742701762545684e-6, 0.0002816342230420727, 0.002954875823895166,
0.014327934450190873, 0.04546464952437262, 0.11057394184268463,
0.2244488736226273, 0.39996793196039304, 0.6465860047579916,
0.9694616357561009, 1.3694738713338521, 1.8430811090649017,
2.384344523489757, 2.984527130444146, 3.632886654047261,
4.317779173102899, 5.028629548502632, 5.755056612937493,
6.484452048385349, 7.209216868065593, 7.920424055077852},
{6.561313886951662e-6, 0.0003305477408503642, 0.0034053197583853484,
0.016267143092270165, 0.050988500007564004, 0.12272462849630848,
0.24687078655979025, 0.43642398456181175, 0.70050054730757,
1.0435439685534695, 1.4654745978428951, 1.9616497759192049,
2.5250787937040027, 3.146022317168911, 3.8128973513738993,
4.513378815623068, 5.236391806126671, 5.971322590465048,
6.705341165646005, 7.4309228792117965, 8.139238796580317},
{7.525203852720613e-6, 0.0003864565872120583, 0.003909503788200477,
0.01840270790998426, 0.056990288471592536, 0.13577419224362913,
0.27070494152917307, 0.47481832312811784, 0.7568013562056572,
1.1202969970249195, 1.5641993498776152, 2.0827218640897853,
2.6678060501616194, 3.3087171877839676, 3.993061018822896,
4.7078731959929065, 5.441626812490052, 6.183531797801723,
6.9205920472638365, 7.645406970804442, 8.349291959342168},
{8.655807197277706e-6, 0.00045012591075155393, 0.004471934245500436,
0.020747134652545383, 0.06349219093591733, 0.1497502271399693,
0.29597355995239183, 0.515152535678096, 0.8154528212889774,
1.1996331649385674, 1.6654982388216957, 2.2060807749735845,
2.812245042315975, 3.472274084009265, 4.1729969900130435,
4.90085587905015, 5.643922152630543, 6.39128639432174,
7.129841872625941, 7.852360379085913, 8.550345869120536},
{9.977012336592213e-6, 0.0005223764985732926, 0.0050973076825059326,
0.02331310893391988, 0.07051602665774662, 0.16467869899784116,
0.3226953907532952, 0.5574228056297611, 0.8764125055909663,
1.2814577391028947, 1.7692153272211149, 2.3315066462924743,
2.958115645178471, 3.636362217186945, 4.352338162990574,
5.09194116904754, 5.842893322853896, 6.594223156937879,
7.332768267965903, 8.051519432947824, 8.742211174203582},
{0.00001151535335003009, 0.0006040862609084039,
0.0057905052736519315, 0.026113460484629827,
0.07808317945200816, 0.1805838510570673,
0.35088567452372327, 0.6016200311987453,
0.939631507242008, 1.365669465265045,
1.8751895764472406, 2.4587775300526022,
3.1051401539675267, 3.800658927849608,
4.530732054868918, 5.280764789502754,
6.03818388030398, 6.792012974189812,
7.529088056537134, 8.242663512011584,
8.924744003906175},
{0.000013300209477933532, 0.0006961915801122782,
0.0065565864246978495, 0.02916112685574591,
0.08621452224347625, 0.19748812077469416,
0.3805561276272206, 0.6477299687625382,
1.0050548398043166, 1.4521612245510134,
1.9832557646972935, 2.587670501317847,
3.2530444657932875, 3.9648507904381813,
4.707841667692766, 5.46698435341146,
6.229465378927234, 6.9843601414674845,
7.718555843743673, 8.425612891343613,
9.097843080938524},
{0.00001536401095438285, 0.0007996885167356382,
0.007400781629659105, 0.03246911679336877,
0.09493034518048923, 0.21541206771501017,
0.41171494513533063, 0.6957333974957152,
1.0726218267931058, 1.540820685335167,
2.0932453706527805, 2.717962695224509,
3.4015591496415007, 4.128634569736366,
4.883346178334211, 5.6502796431451,
6.416437117230115, 7.171001487751344,
7.900962470948756, 8.60022650784579,
9.26144682176249},
{0.00001774245076330275, 0.0009156338662820706,
0.008328484619773643, 0.036050473493034266,
0.10425028759139052, 0.23437431243114804,
0.444366821420869, 0.7456063026407906,
1.1422665064291084, 1.631530946014962,
2.204987418983226, 2.8494322707007047,
3.550420406937189, 4.291718036346076,
5.056941465475291, 5.830352718865776,
6.598825721833447, 7.351705361860989,
8.0761333682944, 8.766399679060667,
9.415530453889803},
{0.000020474701874779712, 0.0010451460611641296,
0.009345243851517837, 0.03991823793348292,
0.11419327401809734, 0.25439148615044516,
0.47851298718248475, 0.7973200748610026,
1.213918042969774, 1.7241711647322553,
2.3183092846784463, 2.981859300264289,
3.6993709258094283, 4.4538206490769126,
5.228340486766185, 6.006927873623149,
6.776384589326739, 7.526270503815944,
8.24392683361686, 8.92406180112423,
9.560103173954039},
{0.000023603639488443777, 0.0011894059132723544,
0.010456753382964909, 0.0440854124782827,
0.12477745451641936, 0.275478191005771,
0.5141512616429179, 0.8508417232209672,
1.2875011412722228, 1.8186171726207316,
2.433037453917406, 3.1150265860641793,
3.848160632859224, 4.614674112489761,
5.397273519107923, 6.179751452495013,
6.948893207362638, 7.694524824565314,
8.404232261461715, 9.073174048893764,
9.695205364885},
{0.000027176067784673232, 0.0013496571934654227,
0.011668843189551754, 0.048564924922117336,
0.13602014937017853, 0.29764697049410294,
0.551276118647666, 0.9061340994550051,
1.3629364615456148, 1.9147420676664473,
2.5489982398361364, 3.2487204030095946,
3.996547346769693, 4.774022818045228,
5.563488274725538, 6.348591552231044,
7.11615637434286, 7.85632411506812,
8.556968343307744, 9.213727097826787,
9.820905884870784},
{0.00003124295066050733, 0.0015272070451730103, 0.01298746897161347,
0.05336959314633247, 0.14793779832603596, 0.3209082897914093,
0.5898787653894122, 0.9631561313076462, 1.4401410315504473,
2.0124167867432763, 2.6660184521434305, 3.382731170408279,
4.144297338507386, 4.931624177385609, 5.726749905301188,
6.5132376168897945, 7.278003335462065, 8.011550703526067,
8.702081257412537, 9.345738883785069, 9.937299436151072},
{0.00003585964590584466, 0.00172342623016697, 0.014418701506890837,
0.05851209053571732, 0.16054591441837746, 0.34527052550893167,
0.62994723249468, 1.0218630628633123, 1.5190286537940407,
2.1115106538255914, 2.783926020053362, 3.516854054016363,
4.291185803160429, 5.087248856244657, 5.886840905951866,
6.673499943947906, 7.434286851318154, 8.160112077501214,
8.839542864199709, 9.469252413281165, 10.044504019173985},
{0.0000410861422574937, 0.0019397492053954098, 0.015968715601636343,
0.0640049122956891, 0.17385904241873235, 0.3707399644398084,
0.6714664742310625, 1.082206699919896, 1.5995103055529498,
2.211891902786541, 2.90255056846175, 3.650889500797962,
4.436997248657812, 5.240680917352807, 6.043560930285215,
6.829209114330676, 7.584882213785059, 8.301939485704422,
8.969348920808988, 9.584333632836962, 10.142658477444227},
{0.00004698729875331076, 0.002177674030587262, 0.017643778693979283,
0.0698603427961305, 0.1878907219120749, 0.39732081081613485,
0.7144184776243944, 1.1441356586015021, 1.6814945298220925,
2.3134281735615843, 3.0217239476927023, 3.7846437090100142,
4.581525806727148, 5.3917178805025525, 6.196726527168323,
6.980215358781542, 7.729686222391055, 8.436986532422477,
9.091517326257454, 9.691069362768145, 10.231920139691086},
{0.00005363308579574229, 0.0024387621071122467, 0.01945023916288316,
0.07609042405527429, 0.20265345497300352, 0.4250152015744955,
0.758782379313881, 1.2075956155470795, 1.764887815545775,
2.4159869807942522, 3.1412807174856265, 3.917929036475186,
4.7245754714885, 5.540170707675592, 6.346170809214499,
7.126387871970017, 7.868616133062066, 8.565227775866159,
9.206086406429392, 9.78956529866598, 10.312462567615972},
{0.00006109882732515358, 0.0027246377493252505,
0.021394514395376242, 0.08270692546431976,
0.21815867838818742, 0.4538232291121957,
0.8045345890180944, 1.2725295581523115,
1.8495949657263113, 2.51943615438518,
3.2610585861861603, 4.0505643500908945,
4.865960271059574, 5.685863720822524,
6.491743062345377, 7.267614084744333,
8.001608589782446, 8.686657340166855,
9.313113245663903, 9.87994408341131,
10.384473418470318},
{0.00006946544349547538, 0.0030369875903275717,
0.023483078663788695, 0.08972131484099663,
0.2344167403476035, 0.4837429710063182,
0.8516489185346398, 1.3388780334805697,
1.9355194522311774, 2.6236442516377427,
3.3808988063509338, 4.182375319752621,
5.005504377473678, 5.828634459539606,
6.6333083051318456, 7.403798903975768,
8.128618548500043, 8.801287549308729,
9.412672069222664, 9.962343453344685,
10.448152431569254},
{0.0000788196932410421, 0.0033775598247402423, 0.025722450863517266,
0.09714473088816798, 0.25143688150586635, 0.5147705261628097,
0.9000967152500008, 1.4065793945937262, 2.022563756328936,
2.7284809409353494, 3.500646528179474, 4.313194659951556,
5.143042160094539, 5.968333485514904, 6.770746805966239,
7.534863928522645, 8.24961820145958, 8.909147589883064,
9.50485267891886, 10.03691446348716, 10.50370954652221},
{0.00008925441612177298, 0.0037481632917061645, 0.02811918216039635,
0.10498795712182106, 0.2692272202963194, 0.5469000568625121,
0.9498469991926339, 1.4755700431843015, 2.110629694177771,
2.8338173570984777, 3.620151112351191, 4.442862322346694,
5.27841818756013, 6.10482414022708, 6.903953565478097,
7.660746648968983, 8.364595909090063, 9.010282208055429,
9.589758943146153, 10.103819797745315, 10.551363158720662},
{0.00010086877283454961, 0.004150666401912074, 0.03067984359510355,
0.11326139732151932, 0.2877947423643951, 0.5801238361749043,
1.0008666027208275, 1.5457846675159492, 2.1996187266682155,
2.939526428755468, 3.7392664039749732, 4.57122564261545,
5.411487183107729, 6.237982261981173, 7.032837770982137,
7.781399637968186, 8.47355514559653, 9.10475044449397,
9.66750734254751, 10.163232170390629, 10.591338514856512},
{0.00011376848378235013, 0.004586995912954483, 0.033411013690206263,
0.12197505254561593, 0.3071452939729278, 0.6144323002177989,
1.0531203119963957, 1.6171564747991023, 2.289432253184011,
3.0454831782217755, 3.857850969457035, 4.698139444860032,
5.54211393793106, 6.36769586796328, 7.157322229145036,
7.896789737248678, 8.576513463509366, 9.192624409416208,
9.738225573297688, 10.215332824633563, 10.62386624834682},
{0.00012806606509814219, 0.005059135557858308, 0.03631926610348282,
0.13113849974328115, 0.327283579220504, 0.6498141047518871,
1.1065710094552546, 1.689617417242311, 2.3799718889923867,
3.151564994519672, 3.975768298162853, 4.823466106794145,
5.6701731870031, 6.4938648065953215, 7.277342782480586,
8.006897246616525, 8.673501481604667, 9.273988098727697,
9.802051210951673, 10.260310132910762, 10.649181051841225},
{0.00014388106152844475, 0.005569124531997961, 0.03941115736905817,
0.1407608719857387, 0.34821316090439475, 0.6862561856123838,
1.1611798165456877, 1.7630984111270689, 2.4711397261079227,
3.257651880286184, 4.092886970794608, 4.947075588860333,
5.795549451569645, 6.616400385076071, 7.392847714733441,
8.111715119620078, 8.764561899759599, 9.348936251704632,
9.85913043859302, 10.298358301794623, 10.667520481731485},
{0.00016134027559187394, 0.006119055844066801, 0.04269321476570071,
0.15085084033000593, 0.3699364648519724, 0.7237438224956836,
1.2169062360641398, 1.8375295483545178, 2.56283857759318,
3.363626673412919, 4.2090807964292685, 5.0688454303363235,
5.918136852283062, 6.735224976608918, 7.503797149691751,
8.211248169922628, 8.849748543364965, 9.417573250811406,
9.909616843327534, 10.329676182481661, 10.679123887891533},
{0.00018057799243936695, 0.006711074537090623, 0.04617192434935825,
0.1614165973199549, 0.392454787538663, 0.7622607056365219,
1.2737082934762864, 1.9128403000064316, 2.654972205365286,
3.469375244339503, 4.3242289201675606, 5.188660715382855,
6.037838896706733, 6.850271611443245, 7.610162447479718,
8.305512291859788, 8.929125438893685, 9.480012064820995,
9.953670284924735, 10.354466185858023, 10.684231460727306},
{0.00020173619985727482, 0.007347375785789343, 0.04985371918468593,
0.17246584212162455, 0.4157683068062038, 0.801789004930238,
1.331542676667473, 1.9889597115500444, 2.747445531671075,
3.574786669983968, 4.438215903332713, 5.306414011868284,
6.154568244680917, 6.961483555496627, 7.7119256019228315,
8.394533698132767, 9.002765921280822, 9.536373237109949,
9.991455839670891, 10.372933299358323, 10.683083386885736},
{0.00022496480286947633, 0.008030202876855198, 0.05374496780795888,
0.18400576728242568, 0.43987609549219603, 0.8423094410750995,
1.390364873621149, 2.0658165893969525, 2.840164834475388,
3.6797533853403794, 4.550931778132702, 5.422005285680046,
6.268246454803159, 7.068813879981234, 7.809078642151377,
8.478348177084921, 9.070751773128825, 9.586783921561075,
10.023142821404294, 10.385284201343872, 10.675919104548564},
{0.000250421832412249, 0.00876184507893913, 0.05785196295138337,
0.1960430470972076, 0.4647761377804623, 0.8838013583308983,
1.4501293075764177, 2.143339678600383, 2.9330379270780407,
3.784171313807854, 4.66227207866279, 5.535341793101712,
6.378803715042654, 7.172225025130703, 7.90162304121144,
8.55700037147703, 9.133172395539127, 9.631376968757849,
10.048903880423541, 10.391726467584702, 10.662976649062372},
{0.0002782736475738849, 0.009544635409321026, 0.062180910556439796,
0.20858382755804936, 0.4904653480814488, 0.926242798511946,
1.510789469266024, 2.221457831542951, 3.0259743223360327,
3.887939977337154, 4.77213785007843, 5.646337953699343,
6.48617856028002, 7.271688360814241, 7.989569134086237,
8.630543080075075, 9.190124010562101, 9.67029006504182,
10.068914179647777, 10.392467863648639, 10.644492079722422},
{0.00030869513091102307, 0.010380948304384298, 0.06673791910152214,
0.22163371785912403, 0.5169395922527235, 0.9696105758549204,
1.5722980458839528, 2.3001001675286594, 3.1188853819190823,
3.990962587492832, 4.880435637713838, 5.754915206023719,
6.590317579342981, 7.367183746533161, 8.072935547193511,
8.699036582725665, 9.241708895704685, 9.703664926560158,
10.083350646186458, 10.387715716569808, 10.620698978830731},
{0.0003418698763747321, 0.011273197201123467, 0.07152898926679332,
0.23519778342302042, 0.544193710971369, 1.0138803524245106,
1.6346070464771314, 2.3791962232487323, 3.2116844510696465,
4.0931461185314415, 4.9870774578602965, 5.861001848297318,
6.6911751138955715, 7.458699093021549, 8.15174864111485,
8.762547989034594, 9.288034651449975, 9.731646549740896,
10.092391295427985, 10.377676359063305, 10.591828014666778},
{0.00037799036940129284, 0.012223832036988302, 0.07656000395687275,
0.24928054041048558, 0.5722215450727208, 1.0590267137423417,
1.6976679234985688, 2.4586760941410986, 3.304286979373818,
4.19440136359113, 5.091980751852005, 5.964532866118204,
6.788712951334626, 7.54622992741741, 8.226041968024779,
8.821150610410903, 9.329213503163611, 9.754382518801576,
10.0962146239266, 10.362554639713455, 10.55810656069756},
{0.000417258158745886, 0.013235336675407137, 0.08183671869970957,
0.26388595167164863, 0.6010159626732547, 1.1050232443469752,
1.7614316902994351, 2.5384705667082046, 3.3966106280774504,
4.294642975075617, 5.195068325037162, 6.065449749077883,
6.882900013652652, 7.629778963732892, 8.295855745001175,
8.874923355155161, 9.365361638984766, 9.77202237002226,
10.094999066768448, 10.342553492885601, 10.519758364151436},
{0.0004598840196607803, 0.014310226264342696, 0.08736475243779485,
0.27901742409338043, 0.6305688878994978, 1.1518426030148234,
1.8258490343752487, 2.618511241897748, 3.4885753645034896,
4.393789490297601, 5.29626827213912, 6.163700298058101,
6.9737120440416644, 7.709355680131855, 8.36123634408234,
8.923950146431107, 9.396598585289555, 9.78471701167827,
10.088922514722917, 10.317873562487913, 10.477003257926755},
{0.0005060881080442444, 0.015451044535213792, 0.09314957872572663,
0.2946778072945096, 0.6608713310494708, 1.1994565973934004,
1.8908704262164038, 2.6987306496860732, 3.580103544142175,
4.491763343423511, 5.395513890437943, 6.259238424842882,
7.061131292837895, 7.784975904319541, 8.422235799574022,
8.968319363272723, 9.423046621086913, 9.792618197789249,
10.078161886309866, 10.288712874075166, 10.430056910644455},
{0.0005561001052114192, 0.0166603610494688, 0.09919651734607157,
0.3108693936181343, 0.6919134200182949, 1.2478362578193931,
1.9564462236458322, 2.7790623550346774, 3.671119980996231,
4.588490864734368, 5.4927435821271455, 6.352023945557554,
7.145146204242847, 7.856661408161748, 8.478911332734791,
9.00812330513274, 9.44483023230949, 9.795878053234492,
10.06289274990574, 10.255266550128932, 10.379130610442406},
{0.0006101593529635083, 0.017940768400025533, 0.10551072635347664,
0.32759391936819754, 0.7236844328251818, 1.2969519101144196,
2.022526771556643, 2.8594410554168825, 3.7615520067689396,
4.683902268186779, 5.587900747124603, 6.442022369326559,
7.225751105101862, 7.924439512478893, 8.531324893654299,
9.043457680776429, 9.462075606457283, 9.794648647325017,
10.043288991137254, 10.217726563689846, 10.324431078819243},
{0.0006685149786575614, 0.019294879374695546, 0.11209719455507147,
0.3448525672358427, 0.7561728310849463, 1.3467732471711125,
2.089062496990338, 2.939802670134555, 3.8513295194846457,
4.777931628224801, 5.680933667541528, 6.529204683426822,
7.302945896877068, 7.988342702802522, 8.579542719956626,
9.074421122503106, 9.474910167500907, 9.789081612610671,
10.019522521037405, 10.176281525881832, 10.266160311451914},
{0.0007314260100048595, 0.020725324088594763, 0.11896073443337518,
0.3626459698597577, 0.7893662942734111, 1.3972693991610676,
2.156003999521498, 3.020084421663869, 3.9403850221291337,
4.870516846757679, 5.771795384938787, 6.613547136103532,
7.376735751816968, 8.048408256731904, 8.623634911940268,
9.101114726711348, 9.48346215040747, 9.779327805523858,
9.991763020737592, 10.131116503268006, 10.204515443429354},
{0.0007991614793519137, 0.02223474709240474, 0.12610597551618002,
0.3809742144637805, 0.8232517546425417, 1.4484090022143925,
2.223302136938039, 3.1002249092851777, 4.028653651892119,
4.96159961118137, 5.860443571427042, 6.695031018110757,
7.447130814200037, 8.104677883372826, 8.6636750238899,
9.123641621717903, 9.487860214155518, 9.765537005403884,
9.960177718827373, 10.082412861410731, 10.139688636768478},
{0.0008720005172242144, 0.02382580446319509, 0.13353735819623497,
0.39983684851440976, 0.8578154326477939, 1.500160265437897,
2.290908106227125, 3.180164175264953, 4.11607320058601,
5.0511253442832675, 5.946840395595874, 6.773642443940166,
7.514145907413852, 8.157197375160587, 8.699739671509192,
9.14210656351965, 9.48823309168222, 9.747857648485779,
9.924931197916456, 10.030348131458346, 10.071866988416055},
{0.0009502324349386163, 0.025501160884347077, 0.14125912800198734,
0.41923288634052863, 0.8930428727569352, 1.5524910361554272,
2.3587735198957853, 3.2598437638679734, 4.202584126804638,
5.139043146830458, 6.030952384187795, 6.849372133607449,
7.577800247524414, 8.206016272162042, 8.731908155665423,
9.156615559888463, 9.484709274870399, 9.72643659355401,
9.886185227352733, 9.975095897028503, 10.001232457201967},
{0.0010341567961161537, 0.02726348672093295, 0.14927533031917367,
0.43916081665760576, 0.928918979516464, 1.6053688632694518,
2.4268504776723794, 3.3392067734856883, 4.28812956037319,
5.225305733602305, 6.112750280366235, 6.922215195778028,
7.638117163891909, 8.251187538742132, 8.760262102848086,
9.16727552284749, 9.477416732439247, 9.701418916134426,
9.844098619437823, 9.916825699083287, 9.92796180840875},
{0.001124083476952434, 0.029115455096709507, 0.1575898055616696,
0.4596186109388181, 0.9654280537586514, 1.6587610586577137,
2.4950916336502065, 3.4181979021721194, 4.372655299626327,
5.30986936358849, 6.192208899362019, 6.992170912930604,
7.695123827298813, 8.292767252311332, 8.784885122886761,
9.174193949227591, 9.466482658446775, 9.672947728308694,
9.79882710679809, 9.855702956878087, 9.852226574770112},
{0.0012203327151281162, 0.03105973897867494, 0.16620618478872023,
0.4806037325759631, 1.0025538288391294, 1.712634756532613,
2.5634502589481216, 3.4967634868820756, 4.456109802035792,
5.39269376503431, 6.269306982221006, 7.059242529179752,
7.7488509859734505, 8.330814303780214, 8.805862484529563,
9.177478628671482, 9.452033249036266, 9.641164021468995,
9.750523238803238, 9.791888903404852, 9.774193032819287},
{0.0013232351472666206, 0.033099008274920724, 0.17512788576447272,
0.5021131467736625, 1.0402795068018145, 1.7669569707039805,
2.631880299974845, 3.5748515367080627, 4.538444168692067,
5.473742055976078, 6.344027048316469, 7.123437041306265,
7.799332709814927, 8.365390109350177, 8.823280809452521,
9.177237378159381, 9.43419350505194, 9.606206529574253,
9.699336295093351, 9.725540534035797, 9.694022193585596},
{0.001433131834870927, 0.03523592695128471, 0.18435810945462153,
0.5241433311211486, 1.078587794374749, 1.8216946496980118,
2.700336432394057, 3.6524117604121886, 4.619612123126813,
5.552980660871055, 6.416355247233252, 7.184764993476599,
7.846606143048303, 8.396558333355497, 8.837227785163673,
9.173577801886074, 9.413087058197553, 9.568211610712352,
9.645412214408546, 9.656810567306005, 9.61186980669319},
{0.0015503742786945065, 0.037473150172077946, 0.19389983695395016,
0.5466902867869198, 1.1174609387071406, 1.8768147296964282,
2.7687741108962873, 3.7293955885478263, 4.6995699849444295,
5.630379223888978, 6.486281210577248, 7.24324027607017,
7.8907112654522304, 8.424384622011942, 8.847791897102868,
9.166607075129875, 9.388836018504138, 9.52731314500849,
9.588893537040937, 9.585847416955772, 9.5278863769557},
{0.0016753244215256511, 0.03981332146992191, 0.20375582683761795,
0.5697495502826598, 1.156880762764454, 1.93228418527045,
2.837149614891283, 3.8057561904630752, 4.7782766387121445,
5.705910519395619, 6.553797904212908, 7.2988799289752935,
7.931690662197903, 8.448936348086505, 8.855062180040724,
9.156431750620671, 9.36156084099718, 9.483642447142884,
9.529919359364206, 9.512795174491925, 9.442217192590538},
{0.001808354639386255, 0.04225906994948851, 0.2139286129281755,
0.5933162057440643, 1.1968287003048232, 1.988070077893797,
2.9054200902409084, 3.88144848647402, 4.8556934985386455,
5.779550360123308, 6.618901481383404, 7.351703949661,
7.969589302222021, 8.470282366648927, 8.859127988667545,
9.143157585832673, 9.33138020959848, 9.43732819195007,
9.468625299047321, 9.437793601627696, 9.35500236419992},
{0.0019498477211688332, 0.04481300752969241, 0.2244205024695195,
0.6173848976775898, 1.2372858303663303, 2.04413960222793,
2.973543587157978, 3.9564291554909428, 4.931784468751922,
5.851277503489095, 6.681591137122911, 7.4017351062827075,
8.00445432494639, 8.488492782174939, 8.860078787053416,
9.126889389593321, 9.298410936456015, 9.388496351771769,
9.405143469723532, 9.360978132031056, 9.266376873686342},
{0.0021001968367566296, 0.04747772622863723, 0.23523357469829512,
0.6419498441235865, 1.2782329112007516, 2.1004601301809136,
3.0414790944006285, 4.030656638374891, 5.006515901067349,
5.921073556488121, 6.741868964327805, 7.448998756034428,
8.036334835075412, 8.503638727331461, 8.858003956466764,
9.107730886405253, 9.262767875057332, 9.337270144431594,
9.339602464055234, 9.282479881857006, 9.176470632289588},
{0.0022598054936922196, 0.05025579549536978, 0.2463696798026231,
0.6670048501878191, 1.319650413595254, 2.1569992527487547,
3.109186569895147, 4.104091137295401, 5.079856548617604,
5.9889228795578795, 6.799739811813732, 7.493522668918589,
8.065281705167855, 8.5157921537816, 8.852992620869829,
9.085784596916605, 9.224563845643862, 9.283769990888088,
9.272127344301389, 9.20242566856771, 9.085408546952303},
{0.002429087482480256, 0.05314975959224931, 0.2578304382574816,
0.6925433218949948, 1.3615185535292054, 2.213724819654946,
3.1766269679226258, 4.1766946113532475, 5.1517775171967655,
6.054812489778689, 6.85521114464804, 7.535336857066725,
8.091347385696116, 8.525025635307632, 8.84513348927129,
9.06115173303871, 9.183909571600173, 9.228113481784522,
9.202839639647767, 9.120938037559531, 8.993310594242388},
{0.0026084668106287076, 0.05616213503149189, 0.2696172405255769,
0.718558280319574, 1.4038173241186784, 2.2706049768100804,
3.243762263006416, 4.248430768724303, 5.222252214051838,
6.118731963746451, 6.908292907012304, 7.574473409708471,
8.114585722367035, 8.531412183471835, 8.834514714010428,
9.033932106292545, 9.140913625640206, 9.170415352229842,
9.131857349696386, 9.038135296122979, 8.90029190108366},
{0.002798377625551821, 0.05929540806920505, 0.2817312471121212,
0.7450423759508699, 1.4465265268065004, 2.3276082016189967,
3.310555470638279, 4.319265055572715, 5.291256294536293,
6.180673340426111, 6.958997387817106, 7.6109663338500715,
8.135051780568098, 8.53502507592981, 8.82122376397387,
9.004224048060463, 9.095682384750166, 9.110787464208688,
9.059294953624892, 8.9541315542637, 8.80646283157135},
{0.002999264126474818, 0.06255203225998605, 0.29417338896157325,
0.7719879032511663, 1.4896258017606194, 2.38470333616789,
3.376970664981392, 4.3891646419731565, 5.358767606921905,
6.240631024267612, 7.007339089261041, 7.6448514006810955,
8.152801676902236, 8.535937697390299, 8.805347311702793,
8.972124340521917, 9.048319992973846, 9.049338796038539,
8.985263424618804, 8.86903677191216, 8.711929079176109},
{0.0032115804654979387, 0.06593442607491663, 0.3069443681840949,
0.7993868153673924, 1.5330946574483961, 2.4418596183283054,
3.442972993688022, 4.458098405073352, 5.424766135647286,
6.298601688841318, 7.053334598497992, 7.67616599767575,
8.167892417867412, 8.534223393090281, 8.786971133332257,
8.93772815715778, 8.998928331239473, 8.986175438288155,
8.909870249249987, 8.78295681204902, 8.616791763669351},
{0.0034357906379925774, 0.06944497058555357, 0.3200446590992381,
0.827230738958673, 1.5769124993588728, 2.499046710818821,
3.5085286899688515, 4.5260369097193, 5.489233943264232,
6.354584181225925, 7.097002462550789, 7.70494898629474,
8.180381745810143, 8.529955334532685, 8.766180020311397,
8.90112901181278, 8.947606993528805, 8.921400595562664,
8.833219451525705, 8.695993499273614, 8.521147532133261},
{0.003672368362517589, 0.07308600721628145, 0.3334745095841777,
0.8555109891038826, 1.6210586578494197, 2.5562347282687354,
3.573605082049597, 4.592952386756721, 5.552155111326135,
6.4085794273595935, 7.138363066585536, 7.7312405651343,
8.190327992328083, 8.523206397123163, 8.743057701879072,
8.86241871540812, 8.894453268778275, 8.855114593561861,
8.755411621366605, 8.60824468334492, 8.425088663450584},
{0.003921796950458142, 0.07685983556716836, 0.34723394271366514,
0.8842185842551511, 1.6655124150971516, 2.613394262331001,
3.638170600148804, 4.658818709213274, 5.6135156804464765,
6.460590338543813, 7.17743851563885, 7.755082138322778,
8.197789939313328, 8.514049049246525, 8.71768677731051,
8.82168733949339, 8.83956212798002, 8.78741489083659,
8.676543947292611, 8.519804307229059, 8.32870317570222},
{0.004184569165602675, 0.0807687113092442, 0.3613227586787845,
0.9133442612050585, 1.7102530311393578, 2.6704964048943087,
3.702194781108626, 4.723611366557157, 5.673303589739749,
6.5106217192696745, 7.2142525198701675, 7.7765161889423045,
8.202826687816597, 8.502555252244948, 8.69014865700244,
8.779023185918243, 8.783026216018417, 8.718396094704456,
8.596710253105515, 8.430762479194483, 8.23207493593374},
{0.004461187073886047, 0.08481484415390583, 0.3757405369715353,
0.9428784900370573, 1.7552597689907656, 2.727512769446329,
3.7656482708079464, 4.78730743721876, 5.731508615842114,
6.558680176517511, 7.24883028339275, 7.795586157257666,
8.205497534877395, 8.488796370700388, 8.66052351152399,
8.73451276198798, 8.724935847836875, 8.648149980837276,
8.516001038359565, 8.341205548505688, 8.13528377178574},
{0.004752161883538802, 0.08900039589794274, 0.3904866388222578,
0.9728114890304117, 1.8005119188288035, 2.7844155106419914,
3.8285028244844805, 4.8498855595531625, 5.7881223116945915,
6.6047740306634175, 7.28119839672016, 7.812336323564874,
8.205861858412096, 8.472843092381765, 8.628890227824783,
8.68824076054375, 8.66537900858531, 8.576765516092852,
8.434503522408267, 8.251216184278466, 8.038405584516175},
{0.005058013775892916, 0.09332747854547492, 0.4055602098769427,
1.003133239492683, 1.8459888212411808, 2.841177342132111,
3.8907313050895813, 4.9113259014125505, 5.843137945257788,
6.648913228109733, 7.311384732849166, 7.826811695521148,
8.203979010187098, 8.454765357193116, 8.595326371858553,
8.640290044476682, 8.604441357455991, 8.504328884227181,
8.352301691809956, 8.160873457074093, 7.941512462976242},
{0.005379271727105, 0.09779815250789675, 0.42096018310152405,
1.0338335004944912, 1.8916698895330255, 2.8977715527088774,
3.9523076797962875, 4.971610128488969, 5.896550438313936,
6.691109255741382, 7.339418346984238, 7.839057899877206,
8.199908216833638, 8.43463229444973, 8.559908156947078,
8.590741635246545, 8.542206234974381, 8.430923514185094,
8.269476350867484, 8.070252922826201, 7.844672798133807},
{0.005716473321066714, 0.10241442488273071, 0.436685281900353,
1.0649018234829228, 1.9375346310935289, 2.9541720208255478,
4.01320701477788, 5.030721371579416, 5.94835630549938,
6.731375057295688, 7.365329379890205, 7.8491210785922485,
8.193708488789431, 8.41251216781326, 8.522710417274642,
8.539674705029286, 8.478754673563628, 8.356630110723023,
8.1861051750701, 7.979426708711842, 7.747951397770475},
{0.006070164553780578, 0.10717824781211133, 0.4527340234361663,
1.0963275667515773, 1.983562667824563, 3.010353227548318,
4.073405468370681, 5.088644192916973, 5.9985535936986825,
6.769724951720081, 7.389148964836166, 7.857047789364786,
8.185438536984403, 8.388472327232103, 8.483806585965839,
8.487166572165268, 8.414165411233881, 8.281526687165877,
8.10226276719926, 7.888463600597531, 7.651409601009789},
{0.006440899629487213, 0.11209151692144413, 0.4691047221390225,
1.1280999097467923, 2.0297337556360686, 3.0662902679986996,
4.132880282731398, 5.1453645517036435, 6.047141821920114,
6.806174553579885, 7.410909138064961, 7.862884910652201,
8.175156697026628, 8.362579167257213, 8.443268677258656,
8.433292699620614, 8.348514908254682, 8.20568860013847,
8.018020715855473, 7.797429131710996, 7.555105392365073},
{0.006829240748836763, 0.11715606983861282, 0.48579549339184136,
1.1602078671910891, 2.0760278030150974, 3.121958861344829,
4.191609774095465, 5.200869768972634, 6.094121921761417,
6.840740695566948, 7.43064275269135, 7.866679551276683,
8.162920860591466, 8.334898091134274, 8.401167272339597,
8.378126696209353, 8.281877366651832, 8.129188586141417,
7.933447656160086, 7.706385672210095, 7.459093515025198},
{0.007235757889403351, 0.12237368479394889, 0.5028042573803944,
1.1926403030063455, 2.1224248886774233, 3.1773353594001503,
4.249573321739366, 5.255148491900334, 6.139496178564676,
6.8734413531495475, 7.448383395904717, 7.868478964723679,
8.148788413674295, 8.305493480108858, 8.357571508458333,
8.321740320354296, 8.214324752339028, 8.052096799862317,
7.848609332385394, 7.615392519341389, 7.363425583125621},
{0.007661028578846914, 0.12774607930102033, 0.520128743095797,
1.2253859440205759, 2.168905278312322, 3.2323967538875467,
4.306751355745962, 5.308190657680702, 6.183268173349215,
6.904295571394189, 7.464165309333392, 7.868330468232584,
8.132816181333876, 8.274428667419679, 8.312549070985028,
8.264203486189691, 8.145926819659936, 7.97448085412592,
7.763568662267573, 7.52450598790199, 7.268150192778248},
{0.008105637661031171, 0.1332749089181486, 0.5377664924778021,
1.2584333934435579, 2.215449440432818, 3.287120682426672,
4.363125343668196, 5.359987457067759, 6.225442725602548,
6.933323393981159, 7.478023312422429, 7.86628136676055,
8.11506037853072, 8.241765916495739, 8.266166188114907,
8.205584271830588, 8.076751138088527, 7.896405861394179,
7.678385802760267, 7.433779500739381, 7.173313031658245},
{0.008570177055410763, 0.13896176609042388, 0.5557148646874341,
1.291771144097814, 2.2620380613450854, 3.3414854333016066,
4.418677776182728, 5.41053129768492, 6.266025837000684,
6.960545794427536, 7.4899927286851415, 7.8623788818716065,
8.095576566651058, 8.207566402913857, 8.218487627961348,
8.145948929651523, 8.00686312081949, 7.817934476729087,
7.593118216991954, 7.343263679044937, 7.078956986967636},
{0.009055245510003704, 0.14480817907185328, 0.5739710404977859,
1.3253875913927016, 2.3086520592520685, 3.3954699490652844,
4.473392151821327, 5.459815767193354, 6.305024636121096,
6.985984609523909, 7.5001093147097535, 7.8566700855682985,
8.074419615301835, 8.171890199713747, 8.169576697811381,
8.085361898432478, 7.93632605497929, 7.739126942129876,
7.507820742196994, 7.253006432217855, 6.985122251615357},
{0.00956144834826796, 0.15081561092715048, 0.5925320267920583,
1.3592710460305246, 2.3552725975074735, 3.4490538290362815,
4.527252960864039, 5.507835596405073, 6.342447324203988,
7.0096624749842915, 7.508409191832115, 7.849201839044225,
8.05164366896421, 8.134796265706786, 8.119495245345814,
8.023885817242203, 7.8652011332003, 7.66004113215234,
7.42254565839857, 7.1630530470966365, 6.891846428471387},
{0.010089397210202772, 0.1569854586125576, 0.6113946611582338,
1.3934097464347255, 2.401881097037409, 3.5022173307426687,
4.580245668474536, 5.554586622420472, 6.378303122010552,
7.031602763302548, 7.514928780419654, 7.8400207362966405,
8.027302118101565, 8.096342436452208, 8.068303661651246,
7.961581540939618, 7.7935474863227805, 7.580732600713312,
7.337342757631274, 7.073446276375411, 6.79916463256947},
{0.010639709787997444, 0.16331905213497364, 0.6305556165700577,
1.427791870891269, 2.4484592479477736, 3.5549413703665613,
4.632356697154334, 5.600065751864089, 6.412602217820101,
7.051829523802813, 7.519704736745596, 7.829173052499846,
8.00144757433131, 8.05658541760954, 8.016060885872363,
7.898508157182391, 7.72142221701869, 7.501254628977658,
7.252259413501515, 6.984226426040938, 6.707109591148621},
{0.011213009556550019, 0.16981765378856306, 0.6500114061443162,
1.46240554939538, 2.4949890203363454, 3.607207522241927,
4.683573408588984, 5.644270924286783, 6.445355716601901,
7.070367424865412, 7.522773892462934, 7.81670469700512,
7.974131849287158, 8.015580780408804, 7.9628244113715025,
7.834723004839658, 7.648880434163486, 7.421658274220032,
7.167340650895062, 6.895431441683586, 6.615711741438835},
{0.011809925499179546, 0.17648245746791447, 0.6697583879647157,
1.4972388751967562, 2.541452674329179, 3.658998017457023,
4.733884084955854, 5.687201075797243, 6.476575590391674,
7.08724169830251, 7.524173196711605, 7.802661170801874,
7.945405936819018, 7.973382959010089, 7.908650293277981,
7.770281693714779, 7.57597528781451, 7.341992419549036,
7.082629215652855, 6.807096993551251, 6.5249993261108985},
{0.012431091828854813, 0.18331458805672865, 0.6897927699629741,
1.5322799160373182, 2.58783276936147, 3.710295741611593,
4.783277909759591, 5.72885610298054, 6.5062746298973995,
7.102478085847889, 7.52393966090847, 7.787087528248529,
7.915319998199695, 7.930045249551459, 7.8535931573229245,
7.705238125497239, 7.502758004684428, 7.26230382437767,
6.998165644048301, 6.719256560229428, 6.434998486324134},
{0.013077147705261612, 0.19031510089093, 0.7101106148480713,
1.5675167250764521, 2.6341121727235706, 3.7610842317776747,
4.831744948258028, 5.769236827156655, 6.534466397354055,
7.1161027877127685, 7.522110306277724, 7.7700283428609955,
7.883923350031464, 7.88561981070871, 7.797706209866537,
7.6396445158808906, 7.429277924024537, 7.182637175521558,
6.9139883319118915, 6.631941510843683, 6.345733352319335},
{0.013748736948029593, 0.19748498129501202, 0.730707845074916,
1.6029373514995353, 2.680274067393167, 3.8113476727115523,
4.879276127537974, 5.808344959027307, 6.561165180642315,
7.128142413145194, 7.518722114179257, 7.751527676930907,
7.851264454569428, 7.840157665612896, 7.741041249033922,
7.573551417804305, 7.355582533854185, 7.103035138805095,
6.830133603261717, 6.545181185692769, 6.2572261315166395},
{0.01444650774643788, 0.2048251441903592, 0.7515802478440317,
1.638529850806367, 2.726301959174994, 3.8610708923630224,
4.9258632162971585, 5.846183063755012, 6.586385948681986,
7.138623932916954, 7.513811979285632, 7.731629054735506,
7.817390912202813, 7.793708704990742, 7.68364867688347,
7.50700774578097, 7.281717507489392, 7.023538411055665,
6.746635778311171, 6.459002975231916, 6.16949719409},
{0.015171112365915871, 0.21233643377421205, 0.7727234801241603,
1.6742822947768365, 2.772179683169596, 3.910239356726713,
4.971498804385385, 5.882754526514117, 6.610144308106887,
7.147574633651195, 7.5074166656455885, 7.710375439095234,
7.782349455858759, 7.746321691410561, 7.625577512537965,
7.440060801286847, 7.207726740335605, 6.94418577236715,
6.663527240737269, 6.373432397336457, 6.08256515600076},
{0.015923206851654225, 0.22001962326788793, 0.7941330736900479,
1.7101827811119712, 2.8178914095929, 3.958839164078899,
5.016176282155093, 5.918063518549745, 6.632456461224522,
7.155022073899194, 7.4995727656554045, 7.687809211033933,
7.746185947116148, 7.698044264531461, 7.566875406214165,
7.372756299159909, 7.13365238691764, 6.865014138516368,
6.580838504104859, 6.288493172786404, 5.9964469594831655},
{0.016703450729636606, 0.2278754147328065, 0.8158044401679613,
1.7462194427490985, 2.8634216489683135, 4.006857038641694,
5.0598898196683795, 5.952114963776704, 6.653339165260216,
7.160994041875837, 7.49031666193972, 7.663972152298516,
7.708945373838427, 7.648922947266387, 7.507588654090579,
7.305138394943459, 7.0595348981239, 6.786058613419148,
6.498598277352324, 6.204207298922202, 5.911157950983876},
{0.017512506705400277, 0.23590443895282176, 0.8377328760818371,
1.7823804568505957, 2.90875525671322, 4.0542803237152105,
5.10263434580493, 5.984914505947093, 6.67280969288263,
7.165518514771647, 7.479684492122874, 7.638905430500751,
7.670671849154885, 7.5990031527812745, 7.447762213957004,
7.237249713079157, 6.985413058643671, 6.707352541517147,
6.416833529254633, 6.120595121431629, 5.826711956566334},
{0.01835104036082964, 0.24410725538131597, 0.8599135678932731,
1.8186540534662594, 2.953877437141568, 4.101096974316773,
5.14440552731238, 6.016468476411923, 6.690885794004667,
7.168623619572265, 7.467712116450775, 7.612649586651584,
7.631408611638753, 7.54832919226194, 7.38743972159217,
7.169131375831408, 6.911324024575491, 6.628927559991427,
6.3355695517882875, 6.037675404236693, 5.74312135479858},
{0.01921971984928231, 0.25248435215146536, 0.8823415970288832,
1.8550285238699302, 2.998773746904257, 4.1472955493648485,
5.185199747838109, 6.046783862498966, 6.7075856588511416,
7.170337595333317, 7.454435088203243, 7.585244524868581,
7.591198026547873, 7.496944283388681, 7.3266635078182185,
7.1008230328071775, 6.837303361182432, 6.550813650704658,
6.254830022331264, 5.9554653974579965, 5.660397147150223},
{0.02011921558934349, 0.2610361461480595, 0.9050119448888636,
1.8914922285715638, 3.0434300978888236, 4.192865203444006,
5.225014086978904, 6.0758682765262355, 6.722927882282562,
7.170688756877244, 7.439888626818422, 7.556729504048602,
7.550081588009729, 7.444890559465547, 7.265474616182909,
7.032362890926316, 6.763385080767112, 6.4730391917801295,
6.17463706463892, 5.873980903442195, 5.578549025930482},
{0.021050199957499356, 0.26976298313921326, 0.9279194978309111,
1.928033605006426, 3.0878327595997623, 4.23779567818571,
5.263846299382445, 6.103729925467562, 6.7369314293619516,
7.1697054598966865, 7.424107593634384, 7.52714313131044,
7.508099922046976, 7.392209079156946, 7.203912821221938,
6.963787744697207, 6.689601680635561, 6.395631008732218,
6.095011308544162, 5.793236340845497, 5.497585439804543},
{0.02201334698001519, 0.2786651379662953, 0.9510590521239528,
1.9646411749036237, 3.1319683610406184, 4.282077293298493,
5.30169479393233, 6.130377581284459, 6.749615602150062,
7.167416067465773, 7.4071264701394055, 7.496523357025567,
7.465292790352708, 7.338939836789256, 7.142016647255456,
6.895133006660423, 6.615984181115548, 6.318614425069693,
6.015971948337538, 5.713244806773243, 5.41751365693022},
{0.023009332024298623, 0.28774281479036334, 0.9744253188664289,
2.001303551336569, 3.1758238921186424, 4.325700937279529,
5.338558613045947, 6.155820551935729, 6.761000007712328,
7.163848917973583, 7.388979338610921, 7.464907471268514,
7.421699094736115, 7.28512177317894, 7.0798233876739225,
6.826432737876634, 6.542562163591362, 6.242013312299425,
5.937536799789602, 5.634018136981558, 5.338339825760464},
{0.02403883149002341, 0.29699614739338387, 0.9980129288641731,
2.0380094454584605, 3.2193867045926297, 4.368658057838404,
5.374437412112525, 6.1800686530743025, 6.7711045273191175,
7.159032294504036, 7.369699865014871, 7.432332101532388,
7.377356882169667, 7.230792786952122, 7.017369124669827,
6.757719678352641, 6.46936380851415, 6.1658501392643466,
5.859722355784707, 5.555566964152858, 5.260069033560648},
{0.025102522500282796, 0.3064251995324974, 1.0218164374632244,
2.0747476729262195, 3.262644512584121, 4.4109406520624965,
5.409331439096515, 6.20313218043857, 6.779949286818309,
7.152994395691915, 7.3493212840310385, 7.398833211568195,
7.33230335037785, 7.175989746323193, 6.954688749372753,
6.689025277318717, 6.39641593334437, 6.090146020755293,
5.782543840541693, 5.477900774261793, 5.182705362691829},
{0.026201082593036135, 0.3160299653455754, 1.0458303293331592,
2.111507160016685, 3.3055853926718717, 4.452541256352041,
5.443241514329518, 6.225021882943549, 6.787554628155474,
7.145763308086417, 7.327876386066435, 7.364446101219796,
7.28657485391541, 7.120748501302152, 6.8918159823463805,
6.620379723289749, 6.32374403038105, 6.014920765341764,
5.7060152624030005, 5.401027961052701, 5.106251944713158},
{0.02733518941310599, 0.3258103698063159, 1.0700490231968462,
2.1482769494392393, 3.3481977835891015, 4.493452936151757,
5.476169010512163, 6.245748936475445, 6.793941082012045,
7.137366980051947, 7.3053975061176075, 7.329205407138931,
7.240206910690027, 7.065103896302278, 6.828783394407178,
6.5518119738610165, 6.251372304431647, 5.940192922372276,
5.6301494651796515, 5.324955878653565, 5.030711012358087},
{0.028505520404977284, 0.33576626922710745, 1.094466876502751,
2.1850462058493028, 3.390470485542626, 4.533669275504564,
5.508115832945399, 6.2653249183914435, 6.79912934152561,
7.127833197230915, 7.281916514343159, 7.293145104276316,
7.193234208890055, 7.0090897831209915, 6.765622427726246,
6.483349785205285, 6.179323710275793, 5.865979828099802,
5.554958178044754, 5.249690892354941, 4.956083949439894},
{0.02971275250664291, 0.3458974518079029, 1.1190781900362041,
2.2218042210674533, 3.432392659172613, 4.573184366451803,
5.539084400009174, 6.283761782725109, 6.803140237050192,
7.117189559586215, 7.257464808210305, 7.256298508056228,
7.145690614283305, 6.9527390342680135, 6.70236341717952,
6.415019741251517, 6.107619989876811, 5.792297650893166,
5.480452063973463, 5.1752384275855405, 4.882371338742832},
{0.030957561844734482, 0.3562036382293357, 1.1438772124662886,
2.258540419009171, 3.4739538241712173, 4.611992798303058,
5.569077623904632, 6.301071836096202, 6.80599471190895,
7.105463460032009, 7.2320733060828815, 7.218698277152127,
7.097609177856883, 6.89608355661581, 6.639035611918639,
6.346847282536004, 6.036281709295666, 5.7191614354999425,
5.406640766731752, 5.101603017118643, 4.809573007955438},
{0.03224062343117005, 0.36668448228832284, 1.168858144825242,
2.2952443603304453, 3.515143857577974, 4.650089646797644,
5.5980988916745895, 6.317267714322558, 6.8077137990882095,
7.092682064651623, 7.205772442123191, 7.180376416790442,
7.049022143771921, 6.839154305348034, 6.575667197144658,
6.2788567347247595, 5.96532829526353, 5.646585146331462,
5.333532956420797, 5.028788346545969, 4.7376880737026905},
{0.033562610861543336, 0.37733957157440035, 1.1940151449175163,
2.3319057467946953, 3.55595299176935, 4.68747046317858,
5.62615204651551, 6.332362359730295, 6.80831859882098,
7.078872294490788, 7.178592162385867, 7.141364282518396,
6.999960957610011, 6.7819812981823215, 6.512285316076776,
6.211071336811353, 5.8947780713708, 5.574581709745049,
5.261136373587402, 4.9567972980574115, 4.6667149837335264},
{0.03492419601547355, 0.3881684281850508, 1.2193423316558591,
2.368514425366636, 3.596371812159406, 4.724131263198856,
5.6532413693928145, 6.346368999157706, 6.807830257010367,
7.064060808904079, 7.1505619219884435, 7.1016925843796095,
6.950456274890669, 6.724593629844326, 6.448916092113851,
6.143513268997675, 5.824648293832251, 5.503163055303368,
5.189457871914498, 4.885631992566547, 4.596651557319964},
{0.03632604875912666, 0.3991705094782935, 1.2448337893220107,
2.4050603920389038, 3.636391254628074, 4.760068516078708,
5.679371560970108, 6.3593011226469764, 6.806269944448216,
7.048273990422444, 7.121710683250234, 7.061391391448439,
6.900537969841293, 6.6670194867703225, 6.385584651185518,
6.076203680266441, 5.754955186790059, 5.4323401559950275,
5.118503459508625, 4.815293830222989, 4.527495023923574},
{0.037768836650112936, 0.41034520886081866, 1.2704835717498084,
2.4415337953973917, 3.6760026026930657, 4.79527913343155,
5.704547723861581, 6.371172462817075, 6.803658836791558,
7.031537931100354, 7.092066914698406, 7.020490136680292,
6.850235144402706, 6.609286162016097, 6.322315144281284,
6.00916271565436, 5.685713977118538, 5.362123067404819,
5.048278338804001, 4.745783529353396, 4.459242060184489},
{0.039253224644958354, 0.4216918566099683, 1.2962857064287256,
2.4779249399313645, 3.71519748444099, 4.829760458175272,
5.728775345215761, 6.381996974910275, 6.800018095268266,
7.013878420293094, 7.061658590847507, 6.979017622040983,
6.799576137454789, 6.5514200703503, 6.259130770132801,
5.942409543233798, 5.61693892869674, 5.292520965825961,
4.978786945105033, 4.677101163873526, 4.391888825287451},
{0.04077987480934057, 0.43320972072788017, 1.3222341985260395,
2.5142242890945563, 3.753967869232759, 4.863510253444616,
5.752060279637619, 6.391788817504034, 6.795368848092567,
6.995320933807391, 7.030513192666088, 6.9370020238831716,
6.748588534247812, 6.493446763510754, 6.196053798008725,
5.8759623808091, 5.548643376117382, 5.223542185310412,
4.9100329837909715, 4.609246199213923, 4.325430994758629},
{0.042349446031273226, 0.4448980078261362, 1.3483230348260442,
2.5504224681235197, 3.7923060641979256, 4.896526691519418,
5.7744087324550435, 6.400562333879243, 6.789732172580457,
6.975890624362948, 6.998657708651327, 6.89447089854233,
6.697299176025943, 6.435390945602655, 6.1331055905672045,
5.8098385223316, 5.480839757803095, 5.15519425365674,
4.842019466207997, 4.542217526801885, 4.259863792746115},
{0.043962593737414984, 0.45675586403926893, 1.374546187584878,
2.5865102666195665, 3.8302047105320725, 4.928808342782569,
5.795827243334658, 6.408332034035241, 6.783129077963393,
6.9556123132976255, 6.966118636439548, 6.851451188128601,
6.645734169829962, 6.3772764886179685, 6.070306626699644,
5.74405436403496, 5.413539648503557, 5.08748392733819,
4.774748744275349, 4.476013497142189, 4.195182022836065},
{0.045619969612673554, 0.46878237596551614, 1.4008976182997506,
2.6224786409007375, 3.867656779610982, 4.960354164720785,
5.816322670251149, 6.4151125773415405, 6.775580488905903,
6.9345104834459015, 6.9329219848875, 6.807969226494273,
6.593918898467005, 6.319126448055782, 6.007676524293082,
5.67862543029024, 5.346753791149829, 5.020417225376567,
4.708222543833211, 4.410631951538835, 4.131380097455584},
{0.047322221323267064, 0.4809765716332258, 1.4273712813914883,
2.6583187161302146, 3.9046555689347797, 4.991163490980296,
5.835902173813256, 6.420918755815558, 6.767107229738198,
6.912609273117812, 6.8990932765654716, 6.764050745359405,
6.541878030635248, 6.260963078623769, 5.945234062836881,
5.613566399177464, 5.280492128044891, 4.953999462169973,
4.642441996761009, 4.346070252499544, 4.068452065912379},
{0.049069992243398725, 0.4933374214913434, 1.453961127799496,
2.694021788227673, 3.9411946979148182, 5.021236020488868,
5.854573201948896, 6.425765478015377, 6.7577300094185695,
6.889932471104576, 6.864657550609598, 6.719720880580658,
6.489635531191951, 6.202807850001469, 5.882997205802685,
5.548891127768376, 5.214763831372232, 4.888235279284942,
4.57740767189552, 4.282325312864321, 4.006391641120212},
{0.05086392118569389, 0.5058638394224481, 1.4806611084883983,
2.7295793255700573, 3.977268103515626, 5.050571806654799,
5.872343474951109, 6.429667753536115, 6.747469407242464,
6.866503512636994, 6.829639365886358, 6.675004178550525,
6.437214671553454, 6.144681462646525, 5.820983122733515,
5.4846126771128745, 5.149577333007127, 4.823128676225444,
4.513119604778914, 4.219393623698797, 3.9451922250581535},
{0.05270464213554132, 0.5185546837768145, 1.5074651778657508,
2.7649829704882594, 4.012870035763752, 5.079171246652693,
5.889220970885719, 6.432640678097981, 6.736345859315083,
6.842345476223345, 6.794062804427463, 6.629924602715763,
6.384638040215857, 6.086603863625555, 5.75920821098723,
5.420743336919725, 5.084940353618001, 4.75868304019308,
4.449577326267232, 4.157271280992391, 3.8848469330104725},
{0.05459278398947413, 0.5314087584260283, 1.534367297110375,
2.8002245405661967, 4.047995053134942, 5.107035070805235,
5.905213911361108, 6.434699419213606, 6.7243796458033955,
6.817481081295079, 6.75795147509841, 6.584505540205469,
6.33192755338529, 6.028594262451968, 5.6976881170906655,
5.35729464992062, 5.020859931047979, 4.6949011748543805,
4.386779890030246, 4.095954011200663, 3.825348616632993},
{0.05652897029771912, 0.5444248138346939, 1.561361437410992,
2.8352960297487226, 4.08263801783062, 5.134164332069422,
5.920330747659726, 6.435859202421109, 6.711590878980682,
6.791932686590659, 6.721328517468195, 6.5387698085603425,
6.279104465706789, 5.97067114691349, 5.63643775767209,
5.294277435905313, 4.95734244796933, 4.631785328132372,
4.324725898973767, 4.0354371956705135, 3.766689885890514},
{0.05851381901103543, 0.5576015481488104, 1.5884415831149612,
2.870189609264795, 4.116794090954187, 5.160560395635053,
5.934580147230489, 6.436135298067739, 6.697999492073319,
6.765722289210488, 6.684216605851956, 6.492739662555623,
6.226189381080847, 5.912852298872875, 5.575471339950696,
5.2317018154146675, 4.894393658805963, 4.569337219040835,
4.263413530615524, 3.9757158939860413, 3.7088631299088175},
{0.060547942231959084, 0.5709376082994315, 1.6156017347870597,
2.9048976283722863, 4.150458727597306, 5.186224928642731,
5.947970980540662, 6.435543008626884, 6.68362522891523,
6.738871524278971, 6.6466379535018865, 6.44643680111113,
6.173202263556863, 5.855154810025841, 5.514802381772059,
5.169577233077891, 4.832018715921563, 4.5075580635804915,
4.202840561445689, 3.9167848662722182, 3.6518605367836363},
{0.06263194597056108, 0.5844315911202399, 1.64283591217836,
2.9394126149307533, 4.1836276718458665, 5.211159890027962,
5.960512308285344, 6.434097656528524, 6.668487634410721,
6.71140166515303, 6.608614316925095, 6.399882374282311,
6.120162448292796, 5.79759509760098, 5.454443731187338,
5.107912480579994, 4.770222195073085, 4.446448599717246,
4.14300439030289, 3.858638594492589, 3.595674112387761},
{0.06476642990482158, 0.5980820444777124, 1.6701381571053409,
2.973727275808426, 4.216296951714913, 5.235367520497384,
5.972213368952196, 6.431814572480693, 6.652606045801417,
6.683333624119918, 6.570167000310007, 6.3530969903267245,
6.067088652570363, 5.740188919986926, 5.3944075855812805,
5.046715719245568, 4.709008120131308, 4.386009111463106,
4.08390206079622, 3.8012713027764966, 3.540295698216319},
{0.06695198714571599, 0.611887468412579, 1.697502536239513,
3.007834497129609, 4.248462874021444, 5.258850332642619,
5.983083566738642, 6.428709084257314, 6.635999584728111,
6.6546879535308845, 6.531316860045587, 6.306100722840804,
6.013998986855336, 5.682951392272927, 5.334705510359913,
4.9859945022253855, 4.6483799870721665, 4.3262394520809035,
4.025530282803402, 3.744676976810417, 3.4857169883091315},
{0.06918920400710293, 0.6258463162913142, 1.7249231438079267,
3.041727344368626, 4.280122019203648, 5.281611101196769,
5.993132459818464, 6.424796505926529, 6.618687150073537,
6.6254848473210615, 6.492084309319945, 6.258913117961971,
5.960910965892599, 5.625897001689877, 5.275348457212951,
4.925755796273053, 4.588340787244133, 4.267139066434238,
3.967885453074765, 3.688849382327259, 3.431929545287855},
{0.07147865978049701, 0.6399569959664279, 1.75239410420499,
3.0753990622963174, 4.31127123609463, 5.303652853437991,
6.00236974895422, 6.4200921274932465, 6.600687411567497,
6.595744142869482, 6.452489322786872, 6.211553201631308,
5.907841519825706, 5.569039622940798, 5.216346781968632,
4.866006003099554, 4.528893029918499, 4.2087070125041794,
3.9109636749721366, 3.6337820827265253, 3.3789248155444764},
{0.07382092651480383, 0.6542178709443647, 1.77990957451617,
3.108843074785062, 4.341907636658476, 5.324978859744205,
6.010805266451732, 6.414611204930757, 6.5820188041317635,
6.565485323157125, 6.412551441290742, 6.164039486912266,
5.854807005330969, 5.512392533413519, 5.157710262060147,
4.806750980294896, 4.470038764130777, 4.150941982094501,
3.8547607773712667, 3.579468455857517, 3.3266941436166144},
{0.07621656880108911, 0.6686272615598414, 1.8074637469541854,
3.1420529844781697, 4.372028590696003, 5.3455926243025,
6.018448965452553, 6.408368950578277, 6.562699522938508,
6.534727519184274, 6.372289776641609, 6.116389981360781,
5.8018232167561905, 5.4559684282737475, 5.099448113623171,
4.747996061806887, 4.411779599822664, 4.0938423207471315,
3.7992723327556845, 3.5259017099968566, 3.275228785783917},
{0.07866614356244701, 0.6831834461555035, 1.835050851208396,
3.1750225723293806, 4.401631720527301, 5.36549787597638,
6.025310909560001, 6.401380523884519, 6.542747519152913,
6.503489512612065, 6.331723016433746, 6.0686221944423435,
5.748905397254423, 5.39977943544289, 5.04156900824342,
4.689746077968565, 4.354116728295001, 4.037406046889575,
3.7444936745293553, 3.4730748990507903, 3.224519922918739},
{0.08117019984902749, 0.6978846622657947, 1.8626651567081633,
3.2077457970181538, 4.430714895657728, 5.384698559333623,
6.031401262794204, 6.393661022481091, 6.522180496328084,
6.471789738596458, 6.290869428901917, 6.020753144991493,
5.696068249903351, 5.343837130469415, 4.98408108937196,
4.632005375066987, 4.2970509419831675, 3.981630870236072,
3.690419913574813, 3.420980937011917, 3.1745586726231894},
{0.08372927863827745, 0.7127291078039861, 1.8903009748010358,
3.2402167942462667, 4.459276227433797, 5.403198825837098,
6.036730279871356, 6.3852254735739455, 6.501015907418445,
6.439646288786031, 6.2497468678107255, 5.972799368709243,
5.643325948801126, 5.2881525513038055, 4.926991988424419,
4.574777834447458, 4.2405826535670705, 3.9265142094641083,
3.637045954082821, 3.369612611699173, 3.1253361006835547},
{0.08634391264044353, 0.7277149422513318, 1.9179526608466424,
3.272429875921174, 4.487314063694965, 5.421003025200567,
6.041308296802111, 6.37608882564528, 6.479270952376199,
6.407076914457952, 6.208372777372985, 5.924776925693847,
5.590692150129773, 5.232736212984186, 4.870308840578141,
4.518066891148632, 4.18471191442856, 3.8720532091878397,
3.584366508678952, 3.3189625978090516, 3.076843231871998},
{0.08901462610938064, 0.7428402878473563, 1.945614616227284,
3.3043795292314355, 4.514826983427118, 5.438115696911135,
6.045145721804062, 6.366265940462617, 6.456962576294651,
6.374099029769386, 6.166764197193968, 5.87670140800039,
5.538180003177536, 5.177598122233386, 4.8140383002794005,
4.461875552065208, 4.129438432469703, 3.8182447562498685,
3.532376112871844, 3.2690234693052616, 3.0290710601244544},
{0.09174193465870402, 0.7581032307803157, 1.973281290276223,
3.3360604156194453, 4.541813791423164, 5.454541561919714,
6.048253026522858, 6.355771585395449, 6.434107468061605,
6.340729715104119, 6.124937767238649, 5.82858794722451,
5.485802161311833, 5.122747791959566, 4.75818655647058,
4.406206413636228, 4.074761589305743, 3.7650854953525297,
3.481069138847232, 3.219787711173219, 2.9820105581225427},
{0.09452634508331753, 0.7735018223768984, 2.0009471821247455,
3.3674673696565174, 4.5682735129559, 5.470285514500519,
6.050640737556642, 6.344620426043088, 6.410722059486019,
6.306985720496625, 6.082909732819696, 5.780451222105673,
5.433570792894819, 5.0681942556435216, 4.702759347545167,
4.351061679058249, 4.02068045684693, 3.712571844049676,
3.4304398086312373, 3.1712477305649416, 2.9356526863063537},
{0.09736835518634665, 0.7890340802902706, 2.028606842469114,
3.3985953978253334, 4.594205388468027, 5.485352614280378,
6.052319428278129, 6.332827019179821, 6.386822524861423,
6.27288346911806, 6.040695949604174, 5.732305466145254,
5.381497592133825, 5.013946081587824, 4.64776197603661,
4.296443175023767, 3.9671938132837243, 3.660700007119589,
3.380482206645738, 3.123395867359166, 2.8899884013439783},
{0.10026845361149887, 0.8046979896856085, 2.0562548752585674,
3.4294396772145843, 4.61960886828391, 5.499748078438363,
6.053299710948794, 6.320405806025268, 6.362424780930351,
6.238439060810614, 5.998311888637243, 5.684164475234771,
5.32959378985931, 4.960011386996928, 4.593199323045262,
4.24235236798641, 3.9143001584900547, 3.6094659903393587,
3.331190291678077, 3.0762244041607163, 2.8450086640826715},
{0.10322711968086967, 0.8204915044222755, 2.083885939305551,
3.4599955541305354, 4.644483607347368, 5.51347727407592,
6.053592229119332, 6.307371105848769, 6.337544487214818,
6.203668275658592, 5.955772641381262, 5.63604161528951,
5.2778701642232555, 4.906397851854106, 4.539075862406158,
4.188790379955402, 3.861997728859381, 3.5588656136805987,
3.282557908286678, 3.029725575762362, 2.8007044470056215},
{0.10624482323820844, 0.8364125482318537, 2.111494749819436,
3.490258542630142, 4.668829459989649, 5.526545710757597,
6.053207650310687, 6.293737109917064, 6.312197046679244,
6.1685865775861695, 5.913092924768929, 5.587949829882882,
5.226337051311307, 4.853112732560479, 4.485395674599112,
4.135758003822767, 3.810284511588488, 3.508894523946063,
3.2345787976636036, 2.9838915780916904, 2.757066741217388},
{0.10932202449765273, 0.8524590158912543, 2.139076079864953,
3.5202243229801695, 4.692646474731342, 5.538959033222043,
6.052156658969761, 6.279517875794057, 6.286397606693472,
6.133209117973328, 5.870287086269055, 5.539901647876762,
5.175004355662264, 4.800162875303066, 4.432162460401533,
4.083255718227581, 3.759158258423849, 3.4595482068661827,
3.18724660797444, 2.938714576664748, 2.714086562980149},
{0.1124591738979366, 0.8686287743901758, 2.1666247617466734,
3.5498887400467196, 4.7159348891218515, 5.550723014262958,
6.050449949693943, 6.26472732200066, 6.260161060265141,
6.097550739282788, 5.82736910896375, 5.4919091910431685,
5.123881560688925, 4.747554729122626, 4.379379554283478,
4.031283701962358, 3.708616498885406, 3.4108219986741384,
3.1405549041953367, 2.894186714567466, 2.6717549598221084},
{0.11565671196207221, 0.884919664092193, 2.194135688320806,
3.5792478016193527, 4.738695124619751, 5.561843547779255,
6.048098220718518, 6.249379223041294, 6.233502047512186,
6.0616259786919215, 5.784352616635645, 5.443984181672592,
5.072977738994525, 4.695294358657028, 4.327049937543897,
3.9798418479273376, 3.6586565529824555, 3.3627110971775664,
3.0944971774663905, 2.8503001199851803, 2.6300630162384597},
{0.11891506916250343, 0.9013294998888128, 2.2216038142357024,
3.608297676673992, 4.76092778151724, 5.572326641993759,
6.0451121676610935, 6.233487204802026, 6.20643495734819,
6.025449071724742, 5.741250878863972, 5.396137950164487,
5.0223015625795195, 4.643387456541809, 4.27517625118653,
3.928929776639147, 3.6092755434362838, 3.3152105723445904,
3.0490668539801056, 2.8070469132998728, 2.589001859004644},
{0.12223466579172167, 0.9178560723458382, 2.2490241571023795,
3.6370346935785385, 4.7826336339115105, 5.582178412839358,
6.041502477516915, 6.217064740323239, 6.178973929354797,
5.989033955879904, 5.698076816128082, 5.348381442595269,
4.971861312933636, 4.591839355455616, 4.2237608085336165,
3.8785468493007214, 3.5604704074238818, 3.2683153764212647,
3.0042573034229405, 2.7644192137740218, 2.5485626621206867},
{0.12561591183833418, 0.9344971488414241, 2.2763917985964697,
3.665455338245113, 4.8038136247258345, 5.591405077511539,
6.037279822898924, 6.200125145947707, 6.151132855817368,
5.952394274251486, 5.654843004917075, 5.3007252282595,
4.921664891008539, 4.540655039804294, 4.17280560757547,
3.8286921804399903, 3.5122379078570045, 3.2220203535971477,
2.9600618469875366, 2.7224091458393187, 2.5087366514047624},
{0.12905920686856934, 0.9512504746952427, 2.3037018854929667,
3.6935562522326744, 4.824468860782858, 5.600012948186026,
6.032454856515911, 6.182681577842763, 6.122925383901779,
5.915543379140064, 5.611561682844122, 5.253179507179807,
4.871719827066826, 4.489839157042829, 4.122312343053992,
3.779364650125151, 3.4645746442105505, 3.1763202492351863,
2.9164737649726264, 2.6810088450078307, 2.469515108753324},
{0.13256493991320004, 0.9681137742881842, 2.33094963063518,
3.7213342308036386, 4.8446006079324135, 5.608008425900094,
6.027038205881579, 6.164747028892956, 6.09436491795202,
5.878494335652055, 5.568244753763956, 5.20575411758132,
4.822033290403283, 4.439396028639236, 4.0722824182782285,
3.730562915764761, 3.417477062914103, 3.131209718681608,
2.8734863039870504, 2.640210463422554, 2.430889376084421},
{0.1361334893598638, 0.9850847521720697, 2.358130313839309,
3.7487862209380296, 4.864210286236067, 5.615397994596038,
6.021040468246436, 6.146334325957647, 6.065464621889918,
5.841259925285972, 5.524903792892028, 5.158458543326468,
4.772612098934818, 4.389329660688517, 4.022716956670343,
3.682285423501161, 3.370941467320245, 3.0866833356711187,
2.831092683773896, 2.6000061750636667, 2.392850858980193},
{0.13976522285075357, 1.0021610941688608, 2.385239282736043,
3.7759093193085613, 4.883299465210307, 5.622188215325155,
6.014472205743527, 6.127456127485801, 6.03623742170008,
5.803852649504501, 5.481550051923667, 5.111301921306084,
4.7234627286557, 4.3396437541880655, 3.9736168130406107,
3.634530419205979, 3.3249640272630603, 3.0427356003421564,
2.789286103670138, 2.5603881806261968, 2.3553910300437564},
{0.14346049718565063, 1.0193404684588896, 2.4122719535506243,
3.8027007702199342, 4.901869859130229, 5.628385720610446,
6.00734394073796, 6.108124921478509, 6.006696007984581,
5.766284733291765, 5.438194464151569, 5.064293048782921,
4.67459132295514, 4.290341714988258, 3.924982584590327,
3.5872959590866684, 3.279540788220081, 2.999360946876594,
2.7480597487167606, 2.5213487120842077, 2.318501431985159},
{0.14721965823026886, 1.0366205266576523, 2.4392238118228002,
3.8291579635155286, 4.919923322395364, 5.633997208966276,
5.999666151369377, 6.088353023788069, 5.976852838573612,
5.72856812869539, 5.394847649579905, 5.017440390683821,
4.626003701794598, 4.2414266634336295, 3.8768146216419885,
3.540579919913205, 3.2346676800906615, 2.956553750777813,
2.7074067954338012, 2.4828800369560557, 2.2821736804503607},
{0.15104304082987416, 1.0539989048807323, 2.46609041306808,
3.8552784324545417, 4.937461844959123, 5.639029439572929,
5.9914492672758835, 6.068152576740984, 5.94672014117958,
5.690714518353191, 5.351519920033164, 4.970752086836829,
4.577705370742496, 4.192901443710935, 3.829113038096355,
3.494380008874123, 3.1903405256035926, 2.914308335800619,
2.6673204172742784, 2.4449744622846703, 2.2463994666066527},
{0.15493096872814288, 1.071473224796462, 2.4928673833817574,
3.881059851562552, 4.9544875478232715, 5.643489227104178,
5.982703665487797, 6.047535548071045, 5.916309916083655,
5.65273531900455, 5.308221284257989, 4.924235959149869,
4.529701529864387, 4.144768632920779, 3.781877721616548,
3.4486937730712253, 3.146555048366511, 2.8726189805461257,
2.6277937897705335, 2.407624338346323, 2.2111705594973277},
{0.15888375449121872, 1.0890410946659168, 2.5195504199870826,
3.906500034458311, 4.971002678598569, 5.647383436705671,
5.973439666479742, 6.0265137301475615, 5.885633938844878,
5.614641684986563, 5.264961453015985, 4.877899518727521,
4.481997082466886, 4.097030549889303, 3.735108343539663,
3.4035186086622504, 3.1033068805693764, 2.831479924734267,
2.588820095385997, 2.3708220621007547, 2.1764788081778303},
{0.16290169943692406, 1.1067001103699126, 2.5461352917290716,
3.931596931659554, 4.987009607132732, 5.650718979122042,
5.963667530370327, 6.005098739483127, 5.854703763023252,
5.57644451171531, 5.221749844165658, 4.831749972922813,
4.434596643693987, 4.049689263735887, 3.6888043685168475,
3.3588517696608844, 3.060591570354068, 2.7908853751662477,
2.5503925280850166, 2.334560080395091, 2.1423161436451053},
{0.16698509356908234, 1.1244478564226457, 2.572617839515323,
3.956348628370404, 5.002510821206593, 5.653502805970521,
5.953397453259711, 5.983302016504599, 5.823530722909235,
5.538154439152456, 5.178595587731457, 4.785794232320916,
4.387504548974614, 4.002746602211963, 3.6429650638831674,
3.3146903764033877, 3.0184045888618, 2.750829511388845,
2.512504297632861, 2.298830892933409, 2.108674580571324},
{0.17113421551690297, 1.1422819069716874, 2.598993976705319,
3.9807533422529753, 5.017508922299414, 5.6557419051587905,
5.942639563696786, 5.961134825570725, 5.792125936253136,
5.499781855257666, 5.135507530957968, 4.74003891765192,
4.340724862320859, 3.9562041598249866, 3.597589508759057,
3.2710314236911806, 2.976741336969816, 2.711306491072104,
2.4751486336376773, 2.2636270550234063, 2.075546218852677},
{0.17534933247937737, 1.1601998267840177, 2.6252596894495857,
4.0048094211855245, 5.032006621423893, 5.657443296444736,
5.931403919269262, 5.938608255219485, 5.760500306988744,
5.461336899427035, 5.0924942433472085, 4.694490366629944,
4.294261384477234, 3.910063305760372, 3.552676602885417,
3.227871788618541, 2.9355971517284623, 2.6723104551116093,
2.4383187893456753, 2.2289411801110943, 2.042923244983405},
{0.17963070017463673, 1.1781991722178498, 2.651411036980158,
4.028515341009564, 5.046006735031664, 5.658614027135841,
5.9197005033118915, 5.915733218628364, 5.728664527946467,
5.422829465918067, 5.049564021677069, 4.6491546407160484,
4.24811766092355, 3.864325191612964, 3.5082250751949333,
3.185208238094597, 2.894967312509455, 2.633835532466168,
2.4020080452004655, 2.1947659421140386, 2.010797933264841},
{0.18397856279421498, 1.1962774921799872, 2.677444151853761,
4.051869703268133, 5.059512180989661, 5.6592611679257425,
5.907539221729676, 5.892520454270821, 5.696629083551935,
5.38426920726142, 5.006724894998837, 4.604037531802541,
4.202296989736756, 3.8189907589382424, 3.4642334921224167,
3.1430374360686293, 2.8548470468758325, 2.595875844741397,
2.366209712177067, 2.1610940775632175, 1.979162646858718},
{0.18839315296216164, 1.2144323290684778, 2.703355240149078,
4.07487123293736, 5.07252597462779, 5.659391808865602,
5.894929899934786, 5.868980526752446, 5.664404252506707,
5.345665537659732, 4.963984629611798, 4.559144568816441,
4.156802429320252, 3.774060746632225, 3.420700265657326,
3.1013559504675845, 2.815231536183739, 2.558425510529332,
2.330917134900679, 2.127918387563121, 1.9480098386936135},
{0.1928746916989477, 1.2326612197003737, 2.7291405816195424,
4.09751877615343, 5.085051224858255, 5.6590130554678675,
5.881882279897504, 5.845123827810801, 5.63200011044847,
5.307027636373856, 4.921350734013012, 4.514481024240066,
4.111636806011469, 3.7295356981478016, 3.377623661141996,
3.0601602598546167, 2.7761159209259234, 2.5214786495139285,
2.29612369456001, 2.095231739579373, 1.917332052232987},
{0.19742338839010204, 1.2509616962243872, 2.754796529803004,
4.119811297936858, 5.0970911303666995, 5.658132024939913,
5.868406017312804, 5.820960577463313, 5.599426532588412,
5.268364451096597, 4.878830463820153, 4.470051920546757,
4.06680272157883, 3.6854159685539805, 3.3350018048192203,
3.0194467598172197, 2.7374953058264584, 2.485029386351886,
2.2618228116245005, 2.063027069062686, 1.8871219221128415},
{0.2020394407595202, 1.2693312870182825, 2.7803195120896573,
4.141747879915981, 5.108648975875357, 5.656755842545187,
5.854510678885484, 5.7965008252882075, 5.566693196324246,
5.229684701314171, 4.8364308266655955, 4.425862036550049,
4.022302560617678, 3.641701731443582, 3.2928326911332353,
2.9792117690934505, 2.699364764695933, 2.4490718543380305,
2.2280079483744983, 2.031297380917661, 1.8573721746567},
{0.2067230348473808, 1.2877675175708447, 2.8057060297495946,
4.163327718051476, 5.1197281284782274, 5.654891638089313,
5.840205739737554, 5.771754451824174, 5.533809583827527,
5.190996881655443, 4.79415858705981, 4.3819159136646455,
3.97813849785124, 3.5983929856938808, 3.2511141897882774,
2.939451535444497, 2.661719345056042, 2.4136001988640796,
2.1946726112530595, 2.000035750824511, 1.8280756282752109},
{0.21147434499260528, 1.3062679113482898, 2.8309526579213133,
4.184550120363573, 5.130332034048288, 5.652546542528703,
5.825500580942186, 5.746731170074963, 5.500784984604445,
5.152309265228911, 4.752020271222155, 4.338217862077777,
3.9343125053378087, 3.5554895620838045, 3.2098440525691014,
2.9001622412816865, 2.6245540725422103, 2.378608580679387,
2.1618103530477186, 1.9692353264214906, 1.7992251937573192},
{0.21629353381979569, 1.3248299906449903, 2.856056045562515,
4.205414504663639, 5.140464213716616, 5.649727684699195,
5.8104044871889355, 5.721440527106077, 5.467628498029515,
5.113629906947453, 4.710022171877306, 4.2947719668296225,
3.8908263595803065, 3.5129911297706475, 3.1690199199280333,
2.8613400090558674, 2.587863955092603, 2.3440911789619117,
2.129414774910259, 1.9388893283554347, 1.7708138744596595},
{0.22118075223058417, 1.3434512774184229, 2.8810129153645065,
4.225920396291666, 5.150128260423325, 5.6464421881622195,
5.794926644584965, 5.6958919057213, 5.434349035851937,
5.07496664684065, 4.668170353015531, 4.2515820938017255,
3.8476816485293974, 3.47089720262853, 3.1286393273432624,
2.8229809064169498, 2.551643986931622, 2.3100421942074356,
2.0974795282221876, 1.9089910512075117, 1.7428347664004635},
{0.2261361393993247, 1.3621292941082337, 2.9058200636314915,
4.246067425861144, 5.15932783554003, 5.642697168166055,
5.77907613859686, 5.670094526207638, 5.400955324674553,
5.0363271133545435, 4.626470654615088, 4.208651895612408,
3.804879778467417, 3.429207145450334, 3.088699711453198,
2.7850809511511887, 2.515889152355673, 2.2764558509447017,
2.0659983163133115, 1.8795338643009707, 1.7152810582639864},
{0.23115982277305855, 1.3808615644393576, 2.930474360126005,
4.265855327012721, 5.1680666655635825, 5.638499728719614,
5.76286195213727, 5.644057448138051, 5.367455908405604,
4.997718726638531, 4.584928697325078, 4.165984817418387,
3.7624219807577344, 3.3879201800143868, 3.0491984159718326,
2.747636115903685, 2.480594429328767, 2.2433264002839364,
2.0349648960405355, 1.8505112123973528, 1.688146031321158},
{0.23625191807568421, 1.3996456142091362, 2.9549727478817758,
4.28528393417801, 5.176348538880785, 5.633856959776417,
5.746292963800129, 5.617789572222127, 5.333859150683641,
4.9591487018191645, 4.543549887107195, 4.123584102622003,
3.720309318442951, 3.3470353910168607, 3.010132697390128,
2.7106423326934452, 2.4457547928952903, 2.210648122305942,
2.004373079233699, 1.8219166162873814, 1.661423059271902},
{0.24141252931625862, 1.4184789720583693, 2.9793122429851793,
4.304353180354759, 5.184177302603615, 5.628775934526194,
5.729377946247425, 5.591299642195488, 5.300173237276011,
4.920624052260394, 4.502339419834794, 4.08145279848348,
3.678542692675324, 3.306551731870507, 2.9714997304684903,
2.6740954972281337, 2.411365218416956, 2.178415328298663,
1.9742167340149888, 1.7937436732824046, 1.635105608014257},
{0.2466417488013595, 1.4373591702262876, 3.0034899343265433,
4.323063094894629, 5.191556859474589, 5.623263706791735,
5.71212556474987, 5.564596246739727, 5.266406178451584,
4.882151592809909, 4.461302285847811, 4.039593761637926,
3.637122848964246, 3.2664680303702096, 2.9332966135254543,
2.6379914730255654, 2.3774206846408106, 2.146622362847908,
1.9444897859982078, 1.7659860576120672, 1.6091872353452181},
{0.2519396571514355, 1.45628374528942, 3.027502983322418,
4.341413801304687, 5.1984911648417285, 5.617327308528551,
5.6945443758829155, 5.537687821425093, 5.23256581132831,
4.843737943031079, 4.420443274462168, 3.99800966351676,
3.596050383227659, 3.226782994225706, 2.8955203735277517,
2.6023260953488014, 2.3439161766048735, 2.1152636057886873,
1.9151862193739322, 1.7386375207335771, 1.583661590597955},
{0.2573063233210707, 1.4752502388843456, 3.0513486236100062,
4.359405515063698, 5.204984223702674, 5.610973747424963,
5.676642826378642, 5.510582650669108, 5.198659802196411,
4.805389530420007, 4.379766978432313, 3.956702995673446,
3.5553257476371676, 3.1874952164617194, 2.8581679709869006,
2.567095174961567, 2.3108466883878207, 2.0843334740233477,
1.8863000778863115, 1.7116918915577164, 1.5585224142198197},
{0.26274180462308927, 1.4942561984143377, 3.0750241607148183,
4.377038541454203, 5.211040087817277, 5.604210004600189,
5.658429252133263, 5.4832888697047775, 5.164695648817941,
4.767112593607103, 4.339277798365599, 3.9156760750134008,
3.5149492562497042, 3.148603180685726, 2.821236304667477,
2.532294501710493, 2.2782072257088535, 2.053826423212483,
1.8578254657070414, 1.685143076596486, 1.5337635372953449},
{0.26824614675642683, 1.5132991777399154, 3.0985269716926975,
4.394313273411354, 5.216662852888167, 5.597043032398127,
5.639911877369028, 5.4558144665528205, 5.130680682703522,
4.72891318554263, 4.298979947087369, 3.874931048928151,
3.4749210904219425, 3.1101052662236293, 2.7847222161122374,
2.4979198479406004, 2.2459928083837504, 2.0237369493443937,
1.8297565482118159, 1.6589850600370681, 1.5093788810182127},
{0.2738193838376915, 1.5323767378533357, 3.1218545047472315,
4.411230189389402, 5.221856655808577, 5.589479752274448,
5.621098813948493, 5.428167283992875, 5.096622071367092,
4.690797176665609, 4.258877453955597, 3.8344699003337137,
3.4352413040066954, 3.071999753123608, 2.7486224939891946,
2.4639669717501795, 2.2141984726428534, 1.994059590188622,
1.802087552664322, 1.6332119037465564, 1.4853624561159693},
{0.27946153843634214, 1.5514864475370593, 3.145004278823614,
4.427789851246639, 5.226625671976814, 5.581527052774739,
5.601998060838313, 5.400355021529273, 5.062526820559461,
4.652770258055412, 4.2189741691240386, 3.794294452613364,
3.3959098283335716, 3.034284827028529, 2.7129338782657304,
2.430431620091081, 2.1828192733165777, 1.9647889266389063,
1.7748127688126412, 1.6078177472117015, 1.461708362231072},
{0.28517262161340456, 1.5706258840062313, 3.167973883179938,
4.443992902149638, 5.230974112676621, 5.573191787601336,
5.582617503718935, 5.372385237347417, 5.0284017764814735,
4.614837944565392, 4.179273767752929, 3.754406374464933,
3.356926476978628, 2.996958583917361, 2.6776530642147978,
2.3973095317202384, 2.1518502858938113, 1.935919583950689,
1.747926549402693, 1.5827968074177097, 1.4384107872616458},
{0.2909526329636536, 1.5897926335352526, 3.1907609769369336,
4.459840064497464, 5.234906222522748, 5.564480773766639,
5.562964914735993, 5.344265350257408, 4.994253627977602,
4.577005577937888, 4.13977975416633, 3.714807184652867,
3.318290950329972, 2.9600190347161974, 2.6427767062581893,
2.3645964400080635, 2.1212866084584454, 1.9074462328781172,
1.7214233106131873, 1.5581433786699626, 1.4154640066651831},
{0.2968015606611806, 1.60898429206849, 3.2133632886070562,
4.475332137866561, 5.238426276970944, 5.555400789830559,
5.543047952388407, 5.31600264162193, 4.960088908710653,
4.539278329899876, 4.100495465955264, 3.6754982566652767,
3.2800028399579446, 2.923464109779556, 2.6083014216517757,
2.3322880756091493, 2.0911233635090243, 1.8793635907152613,
1.6952975324163226, 1.5338518323623043, 1.392862382728211},
{0.30271938150827526, 1.6281984658152218, 3.2357786156039134,
4.490469996976998, 5.2415385798916345, 5.545958574219805,
5.522874161547929, 5.287604257265942, 4.925913999318417,
4.501661205238613, 4.061424078025954, 3.636480823276365,
3.2420616327998686, 2.8872916632428303, 2.574223794017613,
2.30038016900058, 2.0613556996664215, 1.8516664222461658,
1.6695437588683182, 1.50991661669541, 1.3706003638048294},
{0.3087060609875388, 1.6474327718288724, 3.258004823732843,
4.505254589680559, 5.244247461206419, 5.5361608236264095,
5.502450973604095, 5.259077209365956, 4.8917351295528,
4.464159044856487, 4.022568606592368, 3.5977559810145188,
3.2044667151700925, 2.8514994772468025, 2.5405403767276264,
2.268868452892881, 2.0319787932741824, 1.8243495406080508,
1.644156598333643, 1.4863322563485328, 1.3486724835268167},
{0.3147615533171593, 1.666684838570672, 3.2800398466636143,
4.519686934971341, 5.246557274586667, 5.5260141914829495,
5.4817857067285365, 5.23042837831724, 4.8575583804022555,
4.4267765288044645, 3.9839319131125737, 3.5593246945365746,
3.167217376606752, 2.816085266035392, 2.5072476961436454,
2.237748664518587, 2.0029878498961184, 1.7974078080719338,
1.6191307236466979, 1.463093352107815, 1.3270733599879068},
{0.3208858015092655, 1.6859523064577908, 3.3018816853860113,
4.533768121019254, 5.248472395213285, 5.515525286511307,
5.460885566251954, 5.20166451457745, 4.823389686197927,
4.389518179293327, 3.945516708168247, 3.5211878009086823,
3.130312813566632, 2.781046679927822, 2.4743422547183247,
2.2070165478030916, 1.97437810571549, 1.7708361367446763,
1.5944608722144629, 1.4401945804541443, 1.3057976949046552},
{0.3270787374312895, 1.7052328283961038, 3.3235284076491833,
4.547499303226978, 5.249997217596882, 5.504700671341798,
5.439757645147191, 5.172792240485608, 4.789234836704217,
4.352388363682072, 3.907325555286959, 3.4833460137943795,
3.0937521329796054, 2.7463813091666243, 2.441820533961528,
2.176667855422427, 1.9461448288400267, 1.7446294891963663,
1.5701418460635366, 1.4176306931134306, 1.284840272756212},
{0.33334028187025727, 1.724524070297666, 3.3449781473855316,
4.560881702310725, 5.251136153457437, 5.493546861198885,
5.418408924611339, 5.143818052055513, 4.75509947919417,
4.315391297442738, 3.869360874706756, 3.4457999275504276,
3.057534355673632, 2.712086687642962, 2.409678997276546,
2.1466983507523034, 1.9182833205168381, 1.7187828790167328,
1.546168511834793, 1.3953965165719997, 1.2641959599051544},
{0.33967034459993223, 1.7438237115830308, 3.366229104119913,
4.573916602405241, 5.25189362966258, 5.482070322649578,
5.396846274740096, 5.114748320743013, 4.720989120510173,
4.278531047100971, 3.831624947082769, 3.408550021231137,
3.021658419680884, 2.6781602965009026, 2.377914092670478,
2.1171038097127273, 1.8907889162611669, 1.6932913713041917,
1.5225358007287488, 1.3734869515596981, 1.2438597037014483},
{0.34606882445073683, 1.763129445668544, 3.387279542364921,
4.586605349193344, 5.252274086223651, 5.470277472410212,
5.375076455287229, 5.085589295186706, 4.686909129110356,
4.241811533151685, 3.7941199171355637, 3.3715966625018776,
2.9861231834348914, 2.6445995676223806, 2.3465222553429665,
2.0878800225122505, 1.8636569869027446, 1.6681500830909315,
1.4992387084046004, 1.3518969725031393, 1.2238265315714647},
{0.3525356093823777, 1.7824389804387395, 3.4081277910029817,
4.59894934806038, 5.25228197434861, 5.458174676207322,
5.353106116502352, 5.0563471029218805, 4.652864737101083,
4.20523653294914, 3.756847797241096, 3.3349401114626276,
2.9509274288678418, 2.6114018869947118, 2.3154999101573925,
2.05902279529584, 1.8368829395534323, 1.64335418370734,
1.4762722948357532, 1.3306216269514377, 1.2040915500938763},
{0.3590705765590936, 1.8017500387039709, 3.4287722426559517,
4.610950062273799, 5.251921754550899, 5.445768247688181,
5.3309418000400575, 5.0270277520676405, 4.618861042255788,
4.1688096835708, 3.719810470962113, 3.298580524382358,
2.9160698644163747, 2.578564597962572, 2.2848434739984955,
2.0305279517001544, 1.8104622184996217, 1.6188988950889036,
1.4536316841245123, 1.3096560349766082, 1.1846499440641511},
{0.3656735924274595, 1.82106035864344, 3.4492113530429465,
4.622609011188156, 5.2511978948133775, 5.433064447376805,
5.308589939933771, 4.997637132987317, 4.5849030100204615,
4.132534484654363, 3.683009696521007, 3.26251795734524,
2.8815491279434067, 2.5460850043665113, 2.2545493580203315,
2.0023913343199333, 1.7843903060228243, 1.5947794920286125,
1.4313120642785258, 1.288995388550742, 1.1654969755492637},
{0.372344512796664, 1.8403676942337464, 3.4694436403270377,
4.633927768475709, 5.250114868806378, 5.420069481671456,
5.286056863627726, 4.968181019922424, 4.550995475505995,
4.096414301207339, 3.6464471102141025, 3.226752369809598,
2.8473637895826474, 2.5139603735700864, 2.22461396978835,
1.9746088060890303, 1.7586627231516712, 1.5709913023777549,
1.4093086869513989, 1.2686349509019366, 1.1466279829341441},
{0.37908318292119236, 1.8596698156631324, 3.489467684451489,
4.644907960382838, 5.248677154159018, 5.406789501880163,
5.263348793060782, 4.938665072600475, 4.517143145467534,
4.06045236638864, 3.610124229767441, 3.191283628080679,
2.8135123545116927, 2.4821879393778077, 2.1950337153193127,
1.9471762515795241, 1.7332750303484818, 1.5475297071978606,
1.3876168671498166, 1.2485700558508452, 1.1280383799612939},
{0.3858894375858379, 1.8789645097315704, 3.5092821264661733,
4.655551264012413, 5.24688923078281, 5.393230603291127,
5.240471845795958, 4.909094837817129, 4.483350600271016,
4.024651784261591, 3.574042457634197, 3.1561115086982974,
2.7799932656587685, 2.4507649048461606, 2.1658050010226924,
1.9200895782222225, 1.7082228281334189, 1.5243901408664688,
1.3662319829094136, 1.228796107129651, 1.109723654764921},
{0.39276310119296853, 1.8982495802368524, 3.5288856678447766,
4.665859405632246, 5.244755579246682, 5.379398824275689,
5.217432036189848, 4.879475750993148, 4.449622295846957,
3.989015532517857, 3.538203084233808, 3.1212357017404995,
2.7468049063474846, 2.419688444989962, 2.136924235547077,
1.8933447174517304, 1.683501757649131, 1.5015680911392209,
1.3451494749414685, 1.2093085776851196, 1.0916793689008482},
{0.3997039878519785, 1.9175228483468583, 3.548277069793385,
4.675834159009758, 5.24228067920246, 5.365300145421975,
5.1942352765963715, 4.849813137706783, 4.415962565631556,
3.953546465171783, 3.502607291133044, 3.0866558140445655,
2.7139456028832534, 2.388955709386431, 2.108387831535087,
1.8669376257791785, 1.6591075011686813, 1.4790590991707422,
1.3243648462524666, 1.190103008967353, 1.0739011563733816},
{0.40671190147084973, 1.9367821529581533, 3.5674551525510667,
4.685477343772883, 5.239469007859918, 5.350940488698116,
5.170887378599534, 4.820112215202181, 4.382375622495143,
3.9182473152246544, 3.4672561541691533, 3.0523713723469985,
2.681413627084413, 2.358563824679322, 2.0801922072901693,
1.8408642857955764, 1.6350357825494446, 1.4568587594966023,
1.303873661738431, 1.1711750102057252, 1.0563847226602563},
{0.41378663584975367, 1.9560253510411028, 3.5864187946829897,
4.694790823797343, 5.236325038510484, 5.336325716644544,
5.147394054270314, 4.790378093874549, 4.34886556065797,
3.8831206972984695, 3.432150646515339, 3.018381826345105,
2.6492071987605352, 2.3285098969855422, 2.0523337883586064,
1.815120707108663, 1.6112823676355728, 1.4349627199786,
1.2836715477558538, 1.1525202576734528, 1.0391258437366862},
{0.42092797477662236, 1.9752503179716756, 3.6051669323666444,
4.7037765056202465, 5.232853239098648, 5.32146163159545,
5.123760917442883, 4.760615778732665, 4.315436357593309,
3.8481691102387523, 3.397291641688776, 2.984686551684042,
2.617324488139877, 2.2987910142066665, 2.0248090090299455,
1.789702927216023, 1.587843064611505, 1.4133666817154797,
1.2637541916709543, 1.134134493942123, 1.0221203650995052},
{0.4281356921246165, 1.994454947850103, 3.62369855867172,
4.71243633688009, 5.229058070840222, 5.306353974930122,
5.09999348500591, 4.730830170839625, 4.282091875917785,
3.8133949396860736, 3.3626799165014134, 2.951284852874917,
2.5857636182475217, 2.269404248247788, 1.9976143137590157,
1.7646070123171387, 1.564713724308911, 1.3920663989211186,
1.2441173413889228, 1.1160135271274685, 1.0053642007922954},
{0.4354095519514241, 2.0136371538065845, 3.6420127228341204,
4.7207723047831, 5.224943986886459, 5.291008426355258,
5.076097178204759, 4.701026068732376, 4.248835865268869,
3.7788004606158587, 3.3283161539538346, 2.9181759661508697,
2.5545226672353305, 2.2403466571461395, 1.970746158512552,
1.7398290580669624, 1.5418902404693757, 1.3710576787721105,
1.224756804864704, 1.0981532301275752, 0.9888533324323608},
{0.4427493086003167, 2.0327948682942196, 3.660108529524696,
4.7287864345959285, 5.220515431033229, 5.2754306032198715,
5.052077323950977, 4.671208169820931, 4.215671964169426,
3.7443878398462043, 3.294200946072476, 2.885359062268888,
2.5235996706645643, 2.211615287111942, 1.9442010120434263,
1.7153651902734952, 1.519368549965019, 1.3503363812266203,
1.2056684495968302, 1.0805495398546716, 0.9725838082403363},
{0.4501547068029002, 2.0519260433693525, 3.677985138113135,
4.7364807881646405, 5.215776836474271, 5.259626059864645,
5.027939156135449, 4.641381071767912, 4.182603701879189,
3.710159138513355, 3.2603347966904876, 2.8528332492647883,
2.4929926237417015, 2.183207174483902, 1.9179753570953195,
1.6912115655417765, 1.4971446329791829, 1.3298984188162541,
1.1868482021056956, 1.063198456461548, 0.9565517420731628},
{0.45762548178348655, 2.0710286509594993, 3.6956417619275164,
4.743857462459904, 5.210732624597657, 5.243600287007823,
5.003687816942151, 4.6115492738492, 4.149634500232997,
3.6761163145145854, 3.2267181241725726, 2.820597575167528,
2.46269948350778, 2.1551193476017767, 1.8920656915406255,
1.667364371866601, 1.4752145131492138, 1.3097397564126525,
1.1682920473976384, 1.0460960425636276, 0.9407533124611236},
{0.46516135936502556, 2.090100683119072, 3.7130776675100137,
4.75091858814836, 5.205387203824595, 5.227358711169915,
4.97932835815957, 4.5817171782964, 4.116767675465671,
3.6422612249182453, 3.193351264084157, 2.7886510306768897,
2.4327181709814276, 2.127348828598436, 1.866468529454261,
1.6438198291761992, 1.453574257673297, 1.289856410970409,
1.1499960284160897, 1.0292384224576299, 0.9251847616495723},
{0.47276205607652577, 2.109140152273073, 3.730292173869188,
4.757666328190022, 5.1997449684896635, 5.210906694139519,
4.954865742487193, 4.551889091621823, 4.084006440023336,
3.6085956283407277, 3.1602344718052757, 2.756992551805894,
2.403046573255588, 2.09989263511378, 1.8411804021259606,
1.6205741898290411, 1.432219977383216, 1.270244451247858,
1.1319562454810042, 1.012621781337707, 0.9098423946459471},
{0.4804272792619021, 2.1281450914489333, 3.747284651729321,
4.764102876461599, 5.193810297761622, 5.194249532482503,
4.930304844834651, 4.522069225926679, 4.051353904360976,
3.5751211872901747, 3.127367925089546, 2.725621022486501,
2.3736825455478368, 2.072747781932885, 1.8161978590135537,
1.5976237390658332, 1.41114782678484, 1.2508999975071933,
1.1141688557177263, 0.996242364509908, 0.8947225782726127},
{0.4881567271901863, 2.147113554496733, 3.7640545227772555,
4.770230456405669, 5.187587554603925, 5.177392457096789,
4.905650453611474, 4.492261700193162, 4.018813078726114,
3.5418394704767855, 3.0947517265686955, 2.694535277134591,
2.344623913204158, 2.0459112825507195, 1.7915174686396182,
1.5749647954187307, 1.3903540040680664, 1.231819221195324,
1.0966300724763696, 0.9800964766057424, 0.8798217402260432},
{0.4959500891670331, 2.166043616297939, 3.7806012589071045,
4.776051319705485, 5.181081084774088, 5.1603406328147186,
4.880907272005544, 4.462470541561043, 3.9863868749283102,
3.5087519550895294, 3.0623859062030645, 2.6637341031680517,
2.315868473655947, 2.019380150665712, 1.7671358194338178,
1.5525937110796768, 1.3698347510878612, 1.212998344606797,
1.0793361647427457, 0.964180480795585, 0.865136368142804},
{0.503807045647464, 2.1849333729629024, 3.796924381463331,
4.781567744985346, 5.174295215861045, 5.143099158054911,
4.856079919248586, 4.432699686589407, 3.95407810809436,
3.475860029039236, 3.030270423678599, 2.633216243470357,
2.2874139983300426, 1.9931514016044587, 1.743049520523151,
1.5305068722297588, 1.3495863533180017, 1.1944336405300628,
1.0622834565418215, 0.9484907980026184, 0.8506630086727714},
{0.5117272683497828, 2.2037809420172696, 3.8130234604824986,
4.786782036536276, 5.1672342563596665, 5.125673064525091,
4.831172931867277, 4.402952982504118, 3.921889498408926,
3.443164993167892, 2.9984051707508046, 2.6029803987911437,
2.2592582345115373, 1.9672220536797658, 1.7192552024722418,
1.5087006993313383, 1.3296051397790198, 1.176121431878287,
1.0454683263346178, 0.9330239061179472, 0.8363982665599684},
{0.5197104203706034, 2.2225844625775326, 3.8288981139341725,
4.791696523066931, 5.159902494781596, 5.108067316977303,
4.806190764918714, 4.373234188431567, 3.8898236728404174,
3.4106680634241786, 2.9667899735362298, 2.5730252300752534,
2.231398907159207, 1.9415891294842595, 1.695749517975727,
1.487171647384723, 1.309887482941822, 1.1580580913058738,
1.028887206409435, 0.9177763392175047, 0.8223388037313952},
{0.5277561563009309, 2.2413420955158827, 3.844548006961305,
4.796313556479492, 5.1523041988016, 5.090286813016471,
4.781137793209191, 4.343546976619238, 3.8578831668519062,
3.3783703730051786, 2.9354245947520377, 2.54334936071211,
2.2038337206733374, 1.9162496571216765, 1.6725291425047226,
1.465916206151024, 1.2904297986083593, 1.14024004081179,
1.0125365822682253, 0.9027446867813074, 0.8084813383941696},
{0.535864122343233, 2.260052023614593, 3.859972851120476,
4.800635510670345, 5.144443614438601, 5.072336382962977,
4.756018312495375, 4.313894933643601, 3.8260704260968383,
3.346272974464272, 2.904308735904245, 2.513951378698259,
2.176560360615863, 1.8912006713779532, 1.6495907749092682,
1.4449309003427977, 1.2712285457707027, 1.1226637513307438,
0.9964129920088921, 0.8879255929155931, 0.7948226441412837},
{0.5440339564294492, 2.278712451710093, 3.875172403622369,
4.8046647803553935, 5.136324965270602, 5.054220789769695,
4.730836540667194, 4.2842815616057885, 3.7943878080993696,
3.314376841785281, 2.8734420394252376, 2.484829838707219,
2.149576495382716, 1.866439214834174, 1.6269311379785734,
1.424212289784041, 1.2522802264497814, 1.1053257423132077,
0.9805130257042584, 0.8733157555783265, 0.7813595490662473},
{0.5522652883398721, 2.2973216068269493, 3.8901464665728067,
4.808403779919726, 5.1279524516827, 5.035944728993488,
4.70559661891179, 4.2547102793155025, 3.7628375839190684,
3.282682872422914, 2.84282409076122, 2.45598326406227,
2.1228797778283623, 1.8419623389233815, 1.6045469789608306,
1.4037569695409968, 1.2335813855150168, 1.0882225812952355,
0.9648333247783923, 0.858911925808539, 0.7680889348868601},
{0.5605577398228528, 2.3158777383019404, 3.9048948862147026,
4.811854942291489, 5.119330250147417, 5.017512828820924,
4.680302612858156, 4.225184423463573, 3.731421939799831,
3.251191889309611, 2.8124544204102317, 2.427410148609452,
2.0964678468426006, 1.817767104933212, 1.5824350700442869,
1.3835615700252197, 1.215128610486021, 1.0713508834589742,
0.9493705813809571, 0.8447109069599273, 0.755007736078338},
{0.5689109247152679, 2.3343791178984095, 3.9194175521712444,
4.815020717839655, 5.110462512536569, 4.998929650147639,
4.654958513702078, 4.195707249783521, 3.700142978802753,
3.2199046428289115, 2.782332505911415, 2.399108958489653,
2.070338328879687, 1.7938505849562516, 1.560592208801195,
1.3636227570702713, 1.1969185313174664, 1.0547073111847203,
0.9341215377601836, 0.830709553939096, 0.7421129390159801},
{0.5773244490636978, 2.3528240399111136, 3.933714396690639,
4.81790357329555, 5.101353365463926, 4.98019968671054,
4.62956823931121, 4.16628193420253, 3.6690027224228214,
3.1888218127554953, 2.7524577737862366, 2.371078133810221,
2.0444888394400054, 1.77020986278998, 1.5390152185962358,
1.3439372319833665, 1.17894782016821, 1.0382885735953484,
0.91908298563508, 0.8169047724488314, 0.7294015811275683},
{0.5857979112462582, 2.3712108212617165, 3.94778539389271,
4.820505990697786, 5.092006909657878, 4.961327365271664,
4.604135635310133, 4.1369115739820925, 3.638003112189166,
3.157944010162029, 2.7228296014323585, 2.3433160902178916,
2.018916984504491, 1.7468420347880738, 1.5177009489608875,
1.324501731573241, 1.1612131911556798, 1.0220914260938636,
0.9042517655673884, 0.8032935182367235, 0.7168707500556296},
{0.5943309020950365, 2.389537801585164, 3.961630559017662,
4.822830466360467, 5.08242721936341, 4.942317045852397,
4.578664476145412, 4.107599188848667, 3.607146011248762,
3.1272717792930047, 2.6934473189708865, 2.315821220376109,
1.9936203619221362, 1.723744210664835, 1.496646275935227,
1.3053130281554586, 1.1437114000965043, 1.0061126698948304,
0.8896247663338347, 0.7898727963494615, 0.7045175828297158},
{0.6029230050190761, 2.4078033433070996, 3.9752499476772867,
4.824879509864309, 5.0726183417726345, 4.92317302201642,
4.553158466130673, 4.078347722114602, 3.5764332059333386,
3.096805599405763, 2.664310211047729, 2.2885918953507858,
1.9685965627509474, 1.7009135142544285, 1.475848102378549,
1.2863679295363308, 1.1264392442343119, 0.9903491515503606,
0.8751989242991366, 0.77663966039309, 0.6923392650488054},
{0.611573796127863, 2.4260058317125224, 3.9886436551089104,
4.826655643070511, 5.062584296483164, 4.903899521199649,
4.527621240471902, 4.049160041789593, 3.5458664073093873,
3.066545886578869, 2.635417518589821, 2.261626465909385,
1.9438431725527912, 1.6783470842265995, 1.4553033582501542,
1.2676632789765727, 1.1093935619555977, 0.9747977624713227,
0.860971222790234, 0.7635912117994833, 0.6803330300739232},
{0.6202828443552579, 2.444143675005871, 4.001811815432309,
4.82816139915704, 5.052329074983618, 4.884500705085144,
4.502056366273069, 4.020038941682855, 3.5154472527110587,
3.036492995488046, 2.6067684405169578, 2.234923263738806,
1.919357772642613, 1.6560420747604663, 1.4350090008616119,
1.249195955135766, 1.0925712324944936, 0.9594554384444057,
0.8469386914721603, 0.7507245990992886, 0.6684961582310691},
{0.6290497115838308, 2.4622153043627253, 4.01475460090992,
4.829399321677105, 5.041856640165589, 4.8649806700209695,
4.476467343522431, 3.990987142496253, 3.485177307255836,
3.0066472211498807, 2.5783621354099853, 2.2084806025879606,
1.895137941292609, 1.6339956561779798, 1.4149620151017464,
1.2309628719986756, 1.075969175627262, 0.944319159145621,
0.8330984057259586, 0.7380370172015528, 0.6568259760245134},
{0.6378739527695452, 2.480219173973303, 4.027472221210512,
4.830371963639551, 5.0311709258613435, 4.845343447478694,
4.450857606059754, 3.9620072929085297, 3.4550580653428127,
2.9770088006334787, 2.5501977231361557, 2.182296779341171,
1.871181254891917, 1.612205015538591, 1.3951594136355523,
1.212960978784394, 1.0595843513572771, 0.9293859476508035,
0.819447486029014, 0.7255257066802371, 0.6453198553605127},
{0.6467551160667475, 2.498153761077946, 4.039964922676637,
4.831081886610861, 5.020275836406631, 4.825593004550276,
4.425230522524825, 3.9331019706508252, 3.4250909521334787,
2.947577914740315, 2.522274286432356, 2.156370075028565,
1.8474852890625186, 1.590667357196625, 1.3755982370782158,
1.195187259839283, 1.0434137595912336, 0.9146528699436541,
0.8059830973381488, 0.7131879530678016, 0.63397521278149},
{0.6556927429534127, 2.5160175659947677, 4.052232987596054,
4.831531659838556, 5.009175246227911, 4.805733244480896,
4.3995893972876505, 3.9042736835735763, 3.395277325014855,
2.9183546896524555, 2.49459087244704, 2.130698755779618,
1.8240476197320217, 1.5693799033228484, 1.3562755541453442,
1.177638734514606, 1.0274544398072838, 0.9001170344218085,
0.7927024484758047, 0.7010210861560198, 0.6227895087106926},
{0.6646863683566026, 2.5338091121396578, 4.064276733477335,
4.831723859395644, 4.997872999453343, 4.785768007235276,
4.373937471360729, 3.875524870704956, 3.3656184750448936,
2.889339198549402, 2.4671464942415886, 2.1052810737257817,
1.8008658241640778, 1.5483398943916573, 1.337188461780502,
1.1603124570297358, 1.0117034707157682, 0.8857755914014248,
0.7796027915196196, 0.6890224793041785, 0.6117602467073567},
{0.6737355207780901, 2.5515269460388, 4.076096512329912,
4.831661067345867, 4.986372909546934, 4.765701070095044,
4.348277923293851, 3.8468579033009296, 3.336115628380021,
2.860531463193758, 2.4399401322518863, 2.0801152678578965,
1.7779374819472065, 1.5275445896352937, 1.3183340852610868,
1.1432055163217807, 0.9961579699131811, 0.8716257326207256,
0.7666814211956791, 0.6771895487547891, 0.6008849727323696},
{0.6828397224201094, 2.5691696373339212, 4.087692709948733,
4.8313458709295105, 4.97467875896519, 4.7455361482846,
4.322613870051907, 3.8182750858870254, 3.3067699476847694,
2.831931455485962, 2.41297073571091, 2.055199564843741,
1.7552601759428395, 1.506991267466465, 1.2997095782835577,
1.1263150358824137, 0.9808150935299746, 0.8576646907429286,
0.7539356742756982, 0.6655197529569257, 0.5901612744244288},
{0.6919984893111837, 2.586735778780397, 4.099065745203727,
4.830780861769379, 4.962794298835646, 4.725276895623006,
4.296948367876131, 3.789778657291859, 3.277582533523353,
2.803539098988316, 2.386237224033033, 2.0305321798106744,
1.7328314931934048, 1.4866772258706653, 1.2813121230289675,
1.1096381735826937, 0.9656720358727748, 0.8438897388589526,
0.7413629289783862, 0.6540105918972983, 0.5795867803866761},
{0.701211331431993, 2.604223986238432, 4.1102160693342995,
4.82996863509677, 4.950723248656703, 4.7049269051994385,
4.271284413129303, 3.7613707916725003, 3.248554425733184,
2.775354270418545, 2.359738488160866, 2.00611131709793,
1.7106490257913367, 1.4665997827695187, 1.2631389302097524,
1.0931721214866041, 0.95072602906156, 0.8302981899902879,
0.7289606043752077, 0.6426596064391421, 0.5691591594837833},
{0.7104777528412402, 2.621632898657473, 4.121144165248984,
4.828911788997077, 4.938469296018123, 4.6844897100697445,
4.2456249431254065, 3.7330535995317176, 3.2196866047802324,
2.7473768011131607, 2.3334733918753625, 1.9819351709826707,
1.6887103717098784, 1.4467562763563664, 1.245187239098661,
1.0769141056540228, 0.9359743426623321, 0.8168873965923804,
0.71672615980076, 0.6314643776690082, 0.5588761201494568},
{0.7197972518014758, 2.638961178054019, 4.1318505468304885,
4.827612923674793, 4.926036096341634, 4.663968783971739,
4.219972836944214, 3.7048291287271025, 3.190979993096188,
2.719606478460876, 2.30744077306995, 1.9580019263834643,
1.6670131355965825, 1.4271440654053122, 1.2274543175406991,
1.0608613859337999, 0.9214142833157611, 0.8036547500588649,
0.7046570942679469, 0.6204225262515134, 0.5487354097043156},
{0.7291693209048361, 2.656207509483004, 4.142335758246217,
4.826074640737552, 4.913427272640926, 4.6433675420568665,
4.194330916231299, 3.676699365472114, 3.1624354563973744,
2.6920430473063246, 2.281639444989408, 1.9343097595443934,
1.6455549295304148, 1.4077605295548714, 1.20993746194891,
1.045011255747579, 0.9070431943622838, 0.7905976802269546,
0.6927509458881242, 0.609531711792102, 0.5387348136840898},
{0.7385934471986689, 2.6733706010029312, 4.1526003732645105,
4.824299542499014, 4.900646415300499, 4.622689341636037,
4.168701945984018, 3.648666235329067, 3.13405380498542,
2.6646862113244083, 2.256068197434285, 1.9108568387026357,
1.6243333737434065, 1.3886030695673708, 1.192633997284814,
1.0293610418650085, 0.8928584554641082, 0.7777136548842971,
0.6810052912963924, 0.5987896322078712, 0.5288721551780969},
{0.7480691123109954, 2.6904491836348963, 4.162644994576682,
4.822290231300214, 4.887697081872489, 4.601937482937395,
4.143088635323894, 3.6207316041940136, 3.1058357950296074,
2.637535634365516, 2.2307257979315107, 1.8876413247418486,
1.6033460973077576, 1.369669107565134, 1.1755412770242508,
1.0139081041709037, 0.8788574822245324, 0.7650001792775541,
0.6694177450821582, 0.5881940231064771, 0.5191452941779133},
{0.7575957925757839, 2.707442011315708, 4.172470253125049,
4.820049308849165, 4.87458279689082, 4.5811152098739605,
4.11749363825594, 3.5928972792735747, 3.077782129830979,
2.6105909417719544, 2.205610992872, 1.8646613718334168,
1.5825907387893625, 1.3509560872445285, 1.1586566831094016,
0.9986498354249619, 0.8650377258050065, 0.7524547956229848,
0.6579859592251254, 0.577742657173164, 0.5095521269361949},
{0.7671729591579901, 2.7243478608452123, 4.182076807437021,
4.817579375578351, 4.861307051701629, 4.560225710819109,
4.091919554415363, 3.5651650100536423, 3.0498934610680872,
2.5838517216658707, 2.1807225086158963, 1.8419151280671646,
1.5620649468686612, 1.3324614740688263, 1.1419776258876717,
0.9835836610145415, 0.8513966725402908, 0.7400750826192558,
0.6467076225368134, 0.5674333435659152, 0.500090585335554},
{0.7768000781783352, 2.741165531828031, 4.191465342965443,
4.814883030019889, 4.847873304309069, 4.539272119388023,
4.0663689298021435, 3.537536489259974, 3.0221703900245105,
2.557317526209003, 2.1560590525662113, 1.819400736072881,
1.5417663809297824, 1.314182755440861, 1.1255015440381506,
0.9687070387010521, 0.8379318435520986, 0.7278586549627211,
0.6355804601077257, 0.5572639273187402, 0.490758636267427},
{0.7864766108377873, 2.757893846609848, 4.200636571435272,
4.8119628681980195, 4.83428497923532, 4.5182575152232705,
4.040844257503958, 3.510013353810639, 2.994613468798077,
2.5309878728346042, 2.131619314211521, 1.7971163336336662,
1.5216927116189047, 1.2961174408563774, 1.1092259044862964,
0.954017458360434, 0.8246407943615537, 0.7158031628653772,
0.6246022327602653, 0.5472322887530997, 0.4815542810208488},
{0.7962020135417096, 2.7745316502083957, 4.209591230196694,
4.808821483038708, 4.820545467393585, 4.49718492478282,
4.015347978407851, 3.4825971857602704, 2.9672232014918682,
2.504862245451842, 2.1074019661384202, 1.7750600542918564,
1.501841621372757, 1.278263062038949, 1.0931482023074788,
0.939512441718204, 0.8115211145007867, 0.7039062915756866,
0.6137707365074716, 0.5373363428974472, 0.47247555468103636},
{0.8059757380236483, 2.7910778102393112, 4.218330081584812,
4.805461463795961, 4.806658125972848, 4.476057322128894,
3.989882481901144, 3.4552895132361168, 2.9400000453870283,
2.4789400956230696, 2.0834056650144093, 1.7532300279480515,
1.482210804918205, 1.260617173057309, 1.0772659606200055,
0.9251895420795316, 0.7985704271239894, 0.6921657609024662,
0.6030838020176758, 0.5275740389148917, 0.46352052553770906},
{0.8157972314687226, 2.807531216836996, 4.226853912285962,
4.8018853954947005, 4.792626278332992, 4.454877629716128,
3.964450106561949, 3.428091811365805, 2.912944412097431,
2.4532208437142824, 2.059629052541869, 1.731624381453546,
1.46279796974381, 1.2431773504258894, 1.0615767304682031,
0.911046344054758, 0.7857863886182044, 0.6805793247419963,
0.5925392940851235, 0.5179433595389406, 0.4546872945030345},
{0.825665936636594, 2.8238907825706505, 4.235163532710808,
4.798095858389815, 4.778453213909037, 4.4336487191777,
3.9390531408397416, 3.401005503196832, 2.8860566687062748,
2.4277038800191635, 2.0360707563837916, 1.7102412391963147,
1.4436008365442947, 1.2259411931893431, 1.046078090696134,
0.8970804632807883, 0.7731666882141364, 0.6691447706085256,
0.5821351111066336, 0.5084423205173094, 0.4459739945391148},
{0.8355812919839793, 2.8401554423556146, 4.24325977637422,
4.794095427441173, 4.764142188123135, 4.412373412108075,
3.913693823726351, 3.3740319606076867, 2.8593371388846927,
2.4023885658570707, 2.0127293910619164, 1.6890787236805351,
1.424617139638792, 1.2089063229917874, 1.030767647812476,
0.8832895461387411, 0.7607090475972427, 0.657859919168306,
0.5718691845643441, 0.4990689700637621, 0.437378790094911},
{0.8455427317866796, 2.8563241533601555, 4.251143499282094,
4.789886671804254, 4.749696422303114, 4.391054480841209,
3.8883743454177577, 3.3471725052105854, 2.832786103992428,
2.3772742346453435, 1.9896035588278684, 1.6681349560994925,
1.4058446273637575, 1.1920703841314635, 1.0156430358470958,
0.8696712694682258, 0.7484112205193391, 0.6467226237772966,
0.5617394785145744, 0.4898213883179373, 0.4288998765524956},
{0.8555496862610993, 2.872395894907869, 4.2588155793251135,
4.7854721543361975, 4.735119103606458, 4.369694649223099,
3.86309684796704, 3.3204284092457623, 2.8064038041607096,
2.3523601929463203, 1.9666918505079816, 1.647408056901643,
1.3872810624414265, 1.175431043601513, 1.000701916199812,
0.8562233402786152, 0.7362709924109687, 0.6357307700226668,
0.5517439890828559, 0.48069768681312924, 0.42053547968254334},
{0.8656015816852278, 2.888369668375815, 4.266276915679586,
4.780854431116921, 4.720413384948753, 4.348296593377714,
3.837863425928863, 3.293800896467278, 2.7801904393574315,
2.327645721489468, 1.9439928463223828, 1.6268961463495057,
1.3689242223246605, 1.1589859911174978, 0.9859419774818301,
0.8429434954576472, 0.724286179994739, 0.624882275268209,
0.5418807439651449, 0.47169600795197064, 0.41228385510894267},
{0.8756978405190545, 2.904244497088531, 4.273528428215343,
4.776036050985086, 4.705582384935726, 4.326862942465354,
3.8126761269957647, 3.2672911430202687, 2.7541461704347086,
2.3031300761689852, 1.921505116678995, 1.6065973450709798,
1.3507718995190074, 1.1427329391322991, 0.9713609353503023,
0.8298295014776729, 0.7124546308998363, 0.6141750882037665,
0.5321478019352426, 0.46281452448996396, 0.40414328778242137},
{0.8858378815243938, 2.920019426208069, 4.280571056910824,
4.7710195550886, 4.690629187798305, 4.305396279432685,
3.787536952626617, 3.2409002783096286, 2.728271120158995,
2.2788124890173114, 1.8992272229432388, 1.5865097746026837,
1.3328219018828258, 1.1266696228389956, 0.9569565323364645,
0.8168791540998736, 0.7007742232779148, 0.6036071883987749,
0.5225432523584398, 0.4540514390268161, 0.39611209146308585},
{0.8960211198840964, 2.9356935226201704, 4.287405761275333,
4.76580747644941, 4.67555684333019, 4.283899141753638,
3.762447858667518, 3.214629385860032, 2.7025653742238176,
2.254692169154909, 1.8771577181845096, 1.566631557924819,
1.3150720529062367, 1.110793800162282, 0.9427265376677622,
0.8040902780767177, 0.6892428654205299, 0.5931765858599989,
0.5130652147113819, 0.4454049835055023, 0.38818860821174633},
{0.9062469673206183, 2.9512658748167446, 4.29403351977857,
4.760402339542333, 4.660368366827739, 4.262374022160653,
3.737410755965427, 3.1884795041672995, 2.6770289822453304,
2.230768303716763, 1.8552951479011237, 1.5469608199871137,
1.2975201919697303, 1.095103251739002, 0.9286687470843826,
0.7914607268529614, 0.677858495378305, 0.582881320593555,
0.5037118381081763, 0.4368734187190184, 0.38037120788993556},
{0.9165148322139334, 2.9667355927747483, 4.300455329287414,
4.754806659887609, 4.645066739032099, 4.240823369365578,
3.71242751097478, 3.162451627541011, 2.6516619587407546,
2.2070400587559456, 1.8336380507261405, 1.5274956882253252,
1.280164174583154, 1.0795957808883045, 0.9147809826505744,
0.7789883822654349, 0.6666190805819724, 0.5727194621712802,
0.49448130083272296, 0.4284550338247419, 0.3726582876684438},
{0.9268241197187519, 2.982101807831606, 4.306672204510042,
4.749022943656962, 4.629654906073694, 4.219249588769803,
3.687499946357352, 3.1365467069383546, 2.6264642840898778,
2.1835065801246953, 1.8121849591173007, 1.5082342930678376,
1.2630018726058485, 1.0642692135719385, 0.9010610925611281,
0.7666711542418684, 0.6555226174654469, 0.5626891093015125,
0.4853718098772634, 0.4201481458663367, 0.3650482715432979},
{0.9371742318810402, 2.9973636725573085, 4.3126851774473645,
4.743053687292889, 4.6141357794194375, 4.197655043163212,
3.6626298415756082, 3.110765650789161, 2.601435905479741,
2.160166994333393, 1.7909344000348784, 1.4891747684318863,
1.2460311744486463, 1.049121398345188, 0.8875069509433849,
0.7545069804990127, 0.644567131091076, 0.5527883894043498,
0.47638160048714606, 0.41195109930314217, 0.35753960985145494},
{0.94756456775381, 3.0125203606233044, 4.318495296851859,
4.736901377140925, 4.598512235823112, 4.176042053411577,
3.637818933479753, 3.0851093258120796, 2.576576737832628,
2.1370204093878384, 1.769884895611432, 1.470315252208938,
1.2292499852584304, 1.034150206298899, 0.8741164576550986,
0.7424938262402532, 0.6337506747771833, 0.5430154581914229,
0.46750893571177615, 0.4038622655469622, 0.35013077875491627},
{0.9579945235121539, 3.027571066668287, 4.3241036276937415,
4.730568489094608, 4.582787117279504, 4.154412899132106,
3.613068916888685, 3.059578557821852, 2.551886664717517,
2.114065915605228, 1.7490349638171367, 1.4516538867388205,
1.212656227085928, 1.0193535309930648, 0.8608875380784916,
0.730629683852951, 0.623071329728043, 0.5333684992502365,
0.4587521059617394, 0.3958800425061893, 0.3428202796171492},
{0.9684634925675245, 3.0425150061610506, 4.32951125063458,
4.724057488252948, 4.5669632309831085, 4.13276981935697,
3.5883814451650857, 3.0341741325276796, 2.5273655392451166,
2.0913025864092525, 1.7283831191236152, 1.433188819272196,
1.1962478390374067, 1.0047292883824004, 0.8478181429108173,
0.7189125726057068, 0.6125272046663893, 0.5238457236331163,
0.4501094285720757, 0.38800285413718605, 0.3356066381491185},
{0.9789708656812134, 3.0573514152604595, 4.334719261508263,
4.717370828590055, 4.551043349292124, 4.111115013184538,
3.563758130784754, 3.0088967963226, 2.5030131849466137,
2.06872947910467, 1.7079278731680192, 1.4149182024210016,
1.1800227774108834, 0.9902754167343228, 0.8349062479517112,
0.7073405383457324, 0.602116435468562, 0.5144453694507841,
0.44157924737166454, 0.38022915000284335, 0.32848840318760186},
{0.9895160310770346, 3.07207955067271, 4.339728770809402,
4.7105109526368, 4.535030209698704, 4.089450640418288,
3.5392005459004383, 2.9837472570638828, 2.4788293966362756,
2.0463456356317997, 1.6876677354177734, 1.396840194596548,
1.1639790158174963, 0.9759898765397429, 0.8221498538876336,
0.6959116531965235, 0.5918371848024014, 0.5051657014706031,
0.4331599322587049, 0.37255740483824556, 0.3214641450048971},
{1.0000983745531808, 3.0866986895059654, 4.344540903189158,
4.703480291174146, 4.5189265148064015, 4.067778822193283,
3.514710222900264, 2.958726184844411, 2.4548139412580476,
2.02415008330129, 1.6676012138349738, 1.3789529604349664,
1.1481145452886143, 0.9618706504170569, 0.809546986073664,
0.6846240152559921, 0.5816876417679615, 0.4960050107195003,
0.4248498787822412, 0.3649861181233495, 0.31453245312791656},
{1.0107172795932415, 3.101208129122483, 4.349156796958438,
4.696281262938013, 4.502734932315733, 4.046101641590168,
3.490288654960931, 2.9338342127550163, 2.4309665587162588,
2.002141835509572, 1.6477268155381124, 1.3612546712097542,
1.1324273743692905, 0.947915743009706, 0.7970956943129106,
0.673475748295229, 0.5716660215411453, 0.4869616140915933,
0.41664750772970854, 0.35751381366261137, 0.3076919337394377},
{1.0213721274763607, 3.115607186988332, 4.353577603598501,
4.688916274335337, 4.486458095018858, 4.024421144236706,
3.465937296595798, 2.9090719376377305, 2.4072869626905833,
1.980319892435365, 1.6280430474577046, 1.3437435052312063,
1.1169155291986232, 0.9341231808776669, 0.7847940526337733,
0.6624650014580437, 0.5617705650203215, 0.478033853960528,
0.40855126472045156, 0.3501390391714669, 0.30094120681672304},
{1.032062297386534, 3.129895200520838, 4.3578044872789885,
4.681387719171199, 4.470098600804335, 4.002739338896926,
3.441657564198006, 2.884439920829992, 2.383774841435414,
1.958683241717645, 1.6085484169816033, 1.3264176482325554,
1.1015770535775995, 0.9204910123832194, 0.7726401590653084,
0.6515899489614275, 0.5519995384760071, 0.46922009779653956,
0.40055961980517724, 0.34286036586959057, 0.294278903214493},
{1.042787166521004, 3.1440715269338195, 4.36183862438326,
4.673697978386679, 4.453659012672815, 3.981058198047891,
3.4174508365787073, 2.8599386888997125, 2.3604298585637404,
1.9372308591154135, 1.5892414325852595, 1.3092752937426706,
1.086410009024962, 0.907017307571317, 0.7606321354109051,
0.6408487897970765, 0.5423512332036695, 0.46051873778823754,
0.3926710670712959, 0.3356763880808472, 0.28770366191428065},
{1.053546110197767, 3.158135543080754, 4.36568120304115,
4.665849419807296, 4.437141858764606, 3.959379658444273,
3.393318455500567, 2.835568734371267, 2.337251653815716,
1.9159617091496735, 1.5701206044420577, 1.2923146434452266,
1.071412474821647, 0.8937001580448828, 0.7487681270204898,
0.6302397474340952, 0.5328239651797086, 0.45192819046911525,
0.3848841242541006, 0.32858572283984694, 0.28121412764439524},
{1.0643385019621596, 3.17208664529595, 4.369333422669025,
4.657844397901758, 4.420549632399849, 3.937705621670821,
3.3692617262065725, 2.811330516442353, 2.314239843812042,
1.894874745727965, 1.5511844450089547, 1.2755339075242742,
1.056582548044316, 0.8805376768353405, 0.7370463025614681,
0.6197610695230094, 0.5234160747206794, 0.4434468963487826,
0.37719733235374203, 0.32158700950502866, 0.27480894903342196},
{1.0751637136925165, 3.185924249233842, 4.372796493517156,
4.649685253550811, 4.403884792132059, 3.9160379546828783,
3.3452819179442774, 2.787224461691729, 2.291394022792303,
1.8739689127518282, 1.5324314695830297, 1.258931304996173,
1.0419183435885093, 0.8675279982686741, 0.7254648537885935,
0.6094110276011988, 0.5141259261457957, 0.43507331954891737,
0.3696092552579477, 0.3146789093781835, 0.26848677740610616},
{1.0860211157048936, 3.1996477897064906, 4.37607163622439,
4.641374313825982, 4.387149761815651, 3.894378490335169,
3.321380264485547, 2.763250964777838, 2.268713763338428,
1.8532431447075464, 1.5138601968251129, 1.2425050640279038,
1.0274179941819004, 0.8546692778272929, 0.7140219953129383,
0.5991879167998441, 0.5049519074427531, 0.4268059474439139,
0.3621184793704228, 0.3078601053303223, 0.26224626627334646},
{1.0969100768568296, 3.2132567205193836, 4.3791600813800535,
4.632913891777952, 4.370346930688011, 3.872729027898985,
3.2975579646418613, 2.7394103891282975, 2.246198617083402,
1.8326963672405345, 1.4954691492473602, 1.2262534222417798,
1.0130796503881636, 0.8419596920079847, 0.7027159643701576,
0.5890900555525068, 0.495892429936926, 0.4186432903062347,
0.35472361324489793, 0.301129301433821, 0.2560860715151351},
{1.107829964650154, 3.226750514305654, 4.382063069093106,
4.624306286234429, 4.353478653466558, 3.851091333568084,
3.273816182775272, 2.7157030676202973, 2.2238481154054153,
1.8123274977137143, 1.4772568536624224, 1.2101746270066327,
0.998901480601913, 0.8293974381762147, 0.6915450205882042,
0.5791157853054166, 0.48694592796395353, 0.4105838809564329,
0.3474232872247503, 0.2944852226007381, 0.25000485221111146},
{1.1187801453328132, 3.240128662358765, 4.38478184856846,
4.615553781607211, 4.336547250461158, 3.8294671409534162,
3.2501560493050383, 2.6921293032518676, 2.201661770107587,
1.7921354457502154, 1.4592218415926619, 1.1942669357155626,
0.9848816710351754, 0.8169807344170199, 0.6805074457546517,
0.5692634702295624, 0.47811085854575797, 0.40262627441783483,
0.340216153088154, 0.28792661422708976, 0.2440012720402785},
{1.1297599839997159, 3.253390674463792, 4.387317677690459,
4.606658647708305, 4.3195550077021165, 3.807858151567013,
3.2265786612100085, 2.6686893698040723, 2.179639074083431,
1.772119113760756, 1.4413626496386667, 1.1785286160503639,
0.9710184256958364, 0.8047078193827424, 0.6696015435837833,
0.5595314969346659, 0.4693857010700136, 0.394769047575864,
0.3331008836986982, 0.2814522418412917, 0.23807400114957844},
{1.1407688446925814, 3.2665360787273543, 4.389671822613466,
4.597623139574862, 4.302504177083935, 3.7862660352952378,
3.2030850825267927, 2.6453835124941114, 2.1577795019682418,
1.7522773974560124, 1.4236778198070845, 1.1629579462327768,
0.9573099663584861, 0.7925769521378326, 0.6588256394835854,
0.5499182741851106, 0.46076895697308895, 0.3870107988419766,
0.32607617266141403, 0.2750608907467606, 0.23222171837962188},
{1.1518060904987848, 3.2795644214063056, 4.391845557359518,
4.588449497302736, 4.2853969765248685, 3.7646924308616723,
3.1796763448437573, 2.6222119486193747, 2.136082510776563,
1.7326091863443387, 1.4061658997984696, 1.1475532152627297,
0.9437545325280707, 0.780586412000947, 0.6481780803227866,
0.5404222326179003, 0.4522591494264859, 0.3793501478221922,
0.31914073398415543, 0.2687513656262699, 0.22644311373328066},
{1.1628710836491944, 3.292475266735264, 4.39384016342301,
4.579139945888478, 4.268235590142268, 3.7431389462799154,
3.1563534477908917, 2.5991748681924567, 2.1145475405259124,
1.713113364215123, 1.3888254432564553, 1.1323127231437466,
0.9303503813967426, 0.7687344983845519, 0.637657234198066,
0.5310418244627072, 0.4438548230267787, 0.3717857349901838,
0.3122933017442673, 0.2625224900409648, 0.2207368909771751},
{1.173963185614981, 3.30526819675304, 4.395656929382345,
4.56969669507953, 4.251022168443534, 3.7216071592965383,
3.1331173595255475, 2.576272434567149, 2.093174014846944,
1.6937888096081182, 1.371655009980074, 1.1172347810957322,
0.9170957877942782, 0.7570195306322333, 0.6272614902015611,
0.5217755232640712, 0.43555454348907774, 0.36431622136490316,
0.30553262976048534, 0.2563731057279645, 0.2151017702754082},
{1.1850817572034043, 3.3179428111280727, 4.397297150518528,
4.560121939232486, 4.23375882853252, 3.7000986178244983,
3.109969017214117, 2.5535047850554613, 2.0719613415802236,
1.674634396269065, 1.3546531661014642, 1.1023177117553549,
0.9039890441324333, 0.7454398478539237, 0.6169892581887896,
0.5126218236058119, 0.4273568973440195, 0.3569402881927147,
0.2988574912700101, 0.2503020715985998, 0.20953649076746367},
{1.196226158652563, 3.330498726982926, 4.398762128440622,
4.55041785717918, 4.216447654331068, 3.678614840367276,
3.0869093275096273, 2.5308720315356856, 2.0509089133598075,
1.6556489935918899, 1.3378184842315237, 1.087559849364248,
0.8910284603435555, 0.7339938087592115, 0.6068389685470905,
0.5035792408376909, 0.4192604916382841, 0.3496566366339941,
0.29226667861068095, 0.24430826237252107, 0.20403981301646848},
{1.2073957497251038, 3.3429355787179484, 4.400053170718048,
4.540586612100432, 4.199090696815305, 3.6571573164340005,
3.0639391670253113, 2.5083742610515376, 2.030016108183799,
1.6368314670478048, 1.3211495435762994, 1.0729595399452947,
0.8782123638138057, 0.7226797914889376, 0.5968090719647025,
0.4946463108043883, 0.4112639536386556, 0.34246398745417206,
0.2857590029082059, 0.23839056684206025, 0.19861052126892276},
{1.2185898898008796, 3.3552530178341358, 4.40117159051965,
4.530630351407279, 4.181689974266265, 3.63572750694587,
3.041059382804126, 2.486011536402419, 2.009282289972083,
1.618180678601586, 1.3046449300270395, 1.0585151414672371,
0.8655390993112746, 0.7114961934452289, 0.5868980392005628,
0.485821589576821, 0.4033659305396108, 0.3353610807191763,
0.2793332937683673, 0.2325478858277173, 0.19324742548148427},
{1.229807937968558, 3.367450712755306, 4.402118706259474,
4.520551206629498, 4.164247472534357, 3.614326844634121,
3.0182707927842696, 2.4637838967248453, 1.9887068091114146,
1.5996954871153328, 1.2883032362269211, 1.0442250239978907,
0.8530070289093059, 0.7004414311201503, 0.5771043608549338,
0.47710365318585035, 0.3955650891744444, 0.3283466754952419,
0.27298839897415256, 0.22677912994185717, 0.18794936308398463},
{1.2410492531161683, 3.379528348649619, 4.40289584124922,
4.510351293311231, 4.146765145317114, 3.5929567344298206,
2.9955741862606837, 2.441691358065068, 1.9682890029880704,
1.5813747487399903, 1.272123061617445, 1.030087569846234,
0.8406145319052989, 0.6895139399231254, 0.5674265471409383,
0.46849109735841643, 0.3878601157299238, 0.3214195495530527,
0.26672318418774504, 0.22108321731243016, 0.18271520046001052},
{1.2523131940205843, 3.3914856272505487, 4.403504323357295,
4.500032710913571, 4.129244914449607, 3.5716185538457648,
2.9729703243425396, 2.4197339139429532, 1.9480281965082298,
1.563217317294912, 1.2561030124674386, 1.0161011736936516,
0.8283600047352568, 0.678712174007275, 0.5578631276570896,
0.45998253725612104, 0.3802497154644617, 0.3145784990761716,
0.2605365326573086, 0.21545907142846388, 0.17754383413696329},
{1.26359911943594, 3.4033222666773404, 4.403945484674395,
4.489597542723899, 4.111688670206932, 3.5503136533507536,
2.950459940406742, 2.3979115359071703, 1.9279237026063054,
1.5452220446357408, 1.2402417018875274, 1.0022642427146342,
0.8162418608843447, 0.6680346060948265, 0.5484126511608948,
0.4515766072163027, 0.37273261242980715, 0.30782233837372425,
0.2544273449285072, 0.20990561925693355, 0.17243419168641336},
{1.274906388180975, 3.41503800125504, 4.404220661185602,
4.479047855771837, 4.094098271618045, 3.5290433567364796,
2.928043740547415, 2.376224174081728, 1.9079748227414028,
1.5273877810108787, 1.2245377498327545, 0.9885751966872097,
0.8042585307936859, 0.6574797273017181, 0.5390736853436051,
0.44327196049561324, 0.3653075491962322, 0.30114989959729155,
0.248394538560693, 0.20442178975238, 0.16738523234278063},
{1.2862343592252998, 3.4266325813341627, 4.404331192448878,
4.468385700751628, 4.076475546790279, 3.507808961477341,
2.9057224040214122, 2.3546717577039478, 1.8881808473821082,
1.5097133754068157, 1.208989783095894, 0.9750324680934149,
0.7924084617636376, 0.6470460469615434, 0.5298448166061812,
0.43506726901613313, 0.3579732865812134, 0.29456003246197404,
0.24243704784770279, 0.19900651284337287, 0.16239594735405302},
{1.2975823917745875, 3.4381057731100313, 4.404278421279932,
4.4576131119507725, 4.058822293243782, 3.486611739083362,
2.8834965836897997, 2.333254195653903, 1.8685410564797944,
1.4921976758825597, 1.1935964352937893, 0.9616345022101025,
0.7806901178537613, 0.6367320924489525, 0.5207246498365419,
0.4269612231140369, 0.35072860338158657, 0.28805160397158386,
0.23655382354319987, 0.19365871893992642, 0.15746536008247647},
{1.3089498453546782, 3.4494573584418884, 4.404063693443373,
4.446732107184804, 4.041140278255179, 3.46545293544654,
2.8613669064553604, 2.311971376975418, 1.8490547199306404,
1.4748395298934456, 1.1783563468488536, 0.9483797571903756,
0.7691019797796944, 0.62653640900263, 0.5117118081881535,
0.41895253129082705, 0.3435722961091605, 0.28162349814792226,
0.23074383259049716, 0.18837733896820816, 0.15259252587611782},
{1.3203360798946058, 3.4606871346718058, 4.403688357350119,
4.4357446877379925, 4.023431239209661, 3.4443337711808217,
2.839333973696078, 2.290823171388685, 1.8297210980265806,
1.4576377846045585, 1.1632681649676586, 0.9352667041359678,
0.7576425448071316, 0.6164575595479729, 0.5028049328600219,
0.411039919967157, 0.33650317872977575, 0.275274615764101,
0.22500605785680133, 0.18316130490657637, 0.1477765317340831},
{1.3317404558085344, 3.4717949144434757, 4.403153763760942,
4.424652838309853, 4.005696883960781, 3.423255441955946,
2.8173983616946177, 2.2698094297945657, 1.8105394418953362,
1.4405912871940267, 1.1483305436183067, 0.9222938271608401,
0.7463103266430916, 0.6064941245195615, 0.49400268287813226,
0.40322213323924627, 0.3295200824057828, 0.2690038740818614,
0.21933949787181312, 0.1780095507718112, 0.14301649578911776},
{1.3431623340766106, 3.4827805255209174, 4.40246126549614,
4.4134585269673074, 3.9879388911971576, 3.402219118825402,
2.7955606220637885, 2.2489299847706605, 1.7915089939297606,
1.423698885146414, 1.133542143508085, 0.9094596234463215,
0.7351038553246642, 0.5966447016835409, 0.4853037348783953,
0.3954979326379033, 0.32262185524192705, 0.2628102065928481,
0.2137431665706087, 0.17292101398689227, 0.13831156663153063},
{1.354601076324724, 3.4936438106071646, 4.4016122171512375,
4.402163705102329, 3.9701589108153756, 3.3812259485487046,
2.773821282167985, 2.228184651059202, 1.7726289882066697,
1.4069594265364533, 1.1189016320626852, 0.896762603288065,
0.7240216771053993, 0.5869079059600001, 0.4767067828911359,
0.38786609689016266, 0.31580736203461185, 0.25669256276379304,
0.20821609304044061, 0.16789463705138008, 0.13366092249797693},
{1.3660560449031809, 3.5043846271629904, 4.400607974818641,
4.390770307394943, 3.952358564298295, 3.360277053908221,
2.7521808455405976, 2.207573226046877, 1.7538986508953625,
1.390371760303364, 1.104407683408073, 0.8842012901351319,
0.7130623543395176, 0.5772823692454576, 0.4682105381271832,
0.3803254216835477, 0.30907548402452845, 0.2506499077855703,
0.2027573212688296, 0.1629293694315131, 0.12906377034777866},
{1.3775266029642883, 3.5150028472257167, 4.399449895815216,
4.379280251781433, 3.9345394450980473, 3.3393735340207473,
2.7306397922973975, 2.1870954902366133, 1.7353172006560078,
1.3739347365159595, 1.0900589783558952, 0.8717742206214805,
0.702224465364084, 0.5677667402355233, 0.4598137287655818,
0.3728747194329515, 0.3024251186526164, 0.2446812223260666,
0.1973659098813879, 0.15802416958829218, 0.12451934484824101},
{1.3890121145388428, 3.525498357228142, 4.398139338415673,
4.367695439427607, 3.916703119022991, 3.3185164646440293,
2.709198579545871, 2.166751207711433, 1.7168838490280924,
1.3576472066287797, 1.0758542043931445, 0.8594799445901437,
0.6915066043793023, 0.5583596842478327, 0.45151509974297127,
0.3655128190501441, 0.2958551793193359, 0.23878550228682832,
0.19204093183845683, 0.15317800706691298, 0.12002690728897925},
{1.4005119446115384, 3.5358710578176824, 4.396677661591742,
4.356017754706999, 3.8988511246279387, 3.2977068984784528,
2.6878576417905147, 2.1465401265904394, 1.6985978008091271,
1.3415080237294683, 1.0617920556766414, 0.847317025110397,
0.6809073813270823, 0.5490598830453319, 0.4433134125446695,
0.35823856571590884, 0.2893645951472295, 0.2329617585634399,
0.18678147403477968, 0.1483898645786739, 0.1155857444436585},
{1.4120254591952761, 3.5461208636757124, 4.395066224757013,
4.344249065183845, 3.8809849736069206, 3.2769458654640466,
2.666617391334073, 2.1264619794770008, 1.680458254423776,
1.3255160427776043, 1.0478712330327227, 0.8352840384881686,
0.6704254217680038, 0.5398660346599907, 0.43520744499748565,
0.3510508206548031, 0.2829523107467434, 0.22720901680958785,
0.18158663672997138, 0.14365874001591583, 0.11119516739585},
{1.4235520254043883, 3.556247703337198, 4.393306387517424,
4.332391221600733, 3.863106151187871, 3.256234373073021,
2.6454782186747186, 2.1065164838992128, 1.6624644022836124,
1.3096701208351949, 1.0340904439624112, 0.8233795742699839,
0.6600593667568211, 0.5307768532170104, 0.42719599106429196,
0.3439484609125383, 0.27661728598528085, 0.22152631720476273,
0.17645553274182268, 0.13898364835076693, 0.10685451034397658},
{1.4350910115267794, 3.566251519010651, 4.3913995094272975,
4.320446057870755, 3.8452161165285643, 3.235573406597986,
2.6244404928991645, 2.0867033427427133, 1.6446154311376702,
1.2939691172890464, 1.0204484026522136, 0.8116022352407037,
0.6498078727166304, 0.5217910687595996, 0.419277860640384,
0.33693037913598184, 0.2703584957594643, 0.2159127142255559,
0.17138728636188266, 0.13436362337879637, 0.10256312939861244},
{1.4466417870949722, 3.5761322663984414, 4.389346949750852,
4.30841539107408, 3.8273163031131934, 3.2149639294360246,
2.6035045620717123, 2.067022244675902, 1.6269105224139762,
1.2784118940651972, 1.0069438299905717, 0.7999506374153142,
0.639669611311817, 0.5129074270743837, 0.4114518793516444,
0.3299954833557649, 0.2641749297705721, 0.21036727642050357,
0.1663810319954788, 0.1297977192786006, 0.09832040138373763},
{1.458203722956076, 3.5858899145175194, 4.387150067229144,
4.296301021458786, 3.8094081191489857, 3.1944068833687913,
2.5826707536192144, 2.0474728645676517, 1.6093488525522355,
1.2629973158356298, 0.9935754535899186, 0.7884234100250338,
0.6296432693199059, 0.5041246895175042, 0.4037168883545385,
0.3231426967714966, 0.25806559230312487, 0.20488908618843166,
0.16143591257420536, 0.12528501196751526, 0.09412572265195684},
{1.4697761913406708, 3.5955244455205846, 4.384810219852354,
4.284104732445833, 3.7914929479623263, 3.1739031888387688,
2.561939374711967, 2.0280548638975797, 1.5919295933278568,
1.2477242502174377, 0.9803420078142013, 0.7770191954979803,
0.6197275485024256, 0.4954416328414735, 0.3960717441379606,
0.31637095753957617, 0.25202950200659263, 0.19947723956026192,
0.15655107782690303, 0.120824600241852, 0.08997850792221043},
{1.4813585659306054, 3.605035854517727, 4.38232876463731,
4.271828290638062, 3.7735721483937943, 3.153453745221827,
2.541310712640501, 2.0087678911589224, 1.5746519121674678,
1.2325915679646413, 0.9672422338116459, 0.765736649434633,
0.6099211654748818, 0.4868570490228294, 0.3885153183269383,
0.30967921856358543, 0.2460656916801883, 0.19413084598422417,
0.15172568251856067, 0.11641560669714657, 0.08587818914709533},
{1.4929502219257311, 3.6144241493986304, 4.379707057410298,
4.259473445833139, 3.7556470551916905, 3.133059431096271,
2.520785035188321, 1.9896115822541227, 1.5575149724561295,
1.2175981431528577, 0.9542748795525222, 0.7545744405783462,
0.6002228515759632, 0.47836974509065844, 0.38104649748822556,
0.30306644728726356, 0.24017320806072476, 0.1888490281144396,
0.14695888477356348, 0.11205717842990381, 0.08182421441566447},
{1.5045505361095408, 3.6236893506552863, 4.376946452594909,
4.247041931040221, 3.7377189794034753, 3.1127211045084167,
2.500362591000508, 1.9705855608831542, 1.5405179338363644,
1.2027428533569646, 0.9414386998715666, 0.7435312507811053,
0.5906313527360519, 0.46997854295601477, 0.37366418293777853,
0.29653162549003786, 0.23435111161349487, 0.1836309216028206,
0.14224984459191553, 0.10774848752718595, 0.07781604689638567},
{1.5161588869137543, 3.632831491205348, 4.374048303005022,
4.234535462500364, 3.719789208764762, 3.0924396032349315,
2.4800436099482717, 1.9516894389246777, 1.5236599524992231,
1.1880245798219802, 0.9287324565147279, 0.7326057749647752,
0.5811454293451558, 0.46168227924229605, 0.3663672905501404,
0.2900737490851079, 0.22859847632615107, 0.1784756748942478,
0.13759772264838466, 0.10348873135423287, 0.07385316382391564},
{1.5277746544818258, 3.6418506162160913, 4.371013959642749,
4.221955739710467, 3.701859008085384, 3.07221574504196,
2.45982830348939, 1.932922816810088, 1.5069401814675047,
1.1734422076273054, 0.9161549181898498, 0.7217967210780312,
0.5717638561203364, 0.4534798051166152, 0.3591547505697389,
0.2836918279200708, 0.22291438950555348, 0.17338244902498126,
0.13300167943936012, 0.09927713265320443, 0.06993505553240423},
{1.5393972207313826, 3.6507467829290503, 4.3678447715013045,
4.209304445450661, 3.683929619632172, 3.0520503279412154,
2.4397168650245566, 1.9142852838905164, 1.4903577708713183,
1.1589946258445043, 0.9037048606208771, 0.711102810049178,
0.5624854219727261, 0.44536998612220075, 0.35202550742410066,
0.27738488558005875, 0.21729795157754603, 0.16835041742425247,
0.1284608748146812, 0.09511293946816149, 0.06606122453720646},
{1.5510259694156094, 3.6595200604853484, 4.36454208537275,
4.196583245815084, 3.6660022635080733, 3.0319441304431187,
2.4197094702496535, 1.8957764187968662, 1.4739118682161403,
1.1446807276888047, 0.8913810666051843, 0.700522775735061,
0.553308929874216, 0.43735170201187257, 0.34497851953899583,
0.27115195919339524, 0.21174827588964157, 0.16337876571900345,
0.12397446790516846, 0.09099542491275267, 0.062231184666181674},
{1.5626602861835728, 3.668170529751762, 4.361107245660488,
4.1837937902458675, 3.6480781380272758, 3.0118979118070754,
2.3998062775039157, 1.8773957897929334, 1.4576016186435126,
1.1304994106644544, 0.8791823260735863, 0.6900553648662471,
0.5442331967238887, 0.4294238465826172, 0.3380127591555115,
0.2649920992397319, 0.20626448851657117, 0.15846669154172144,
0.11954161743321799, 0.08692388679775129, 0.05844446024110181},
{1.5742995586394861, 3.6766982831475294, 4.357541594196504,
4.170937711570268, 3.630158420086028, 2.991912412289013,
2.380007428114015, 1.8591429551217038, 1.4414261651845468,
1.1164495767041198, 0.8671074361526033, 0.6796993369886699,
0.5352570532142762, 0.4215853275112987, 0.3311272121490584,
0.25890436936066397, 0.200845728068674, 0.15361340434132711,
0.11516148237499475, 0.08289764713579387, 0.05470058530917244},
{1.585943176400935, 3.685103424471981, 4.353846470063248,
4.158016626040872, 3.6122442655288993, 2.9719883533862617,
2.3603130467340794, 1.8410174633448835, 1.4253846490063904,
1.102530132302473, 0.8551552012285739, 0.6694534644019272,
0.526379343697519, 0.41383506619153876, 0.32432087785032016,
0.2528878461728032, 0.1954911455030937, 0.14881812519707546,
0.11083322292894521, 0.0789160515404464, 0.050999102924203},
{1.5975905311560472, 3.6933860687329347, 4.35002320942005,
4.145032133378687, 3.594336809510172, 2.95212643807983,
2.340723241681601, 1.8230188536757297, 1.4094762096517743,
1.0887399886441103, 0.8433244330131612, 0.6593165320943896,
0.5175989260514781, 0.40617199757178, 0.31759276886813065,
0.24694161908328546, 0.1901999039377445, 0.1440800866354233,
0.10655600173643143, 0.07497846853617587, 0.04733956447658298},
{1.609241016719631, 3.701546341975989, 4.34607314533413,
4.131985816819141, 3.5764371668502224, 2.9323273510742287,
2.3212381052693076, 1.8051466563052798, 1.3936999852718337,
1.0750780617259779, 0.8316139506098839, 0.6492873376753261,
0.5089146715458918, 0.39859506999457356, 0.31094191091429874,
0.24106479010770293, 0.18497117846802233, 0.13939853244982067,
0.10232898529583678, 0.07108428879501526, 0.043721529070922874},
{1.6208940290882745, 3.709584381114647, 4.341997607615954,
4.118879243160776, 3.5585464323865876, 2.91259175903484,
2.301857714132944, 1.787400392722014, 1.3780551128522989,
1.0615432724744207, 0.8200225805812383, 0.6393646913041892,
0.5003254647086137, 0.3911032450370973, 0.30436734263035914,
0.2352564736904324, 0.17980415598621838, 0.13477271752336106,
0.09815134551076843, 0.06723292431473651, 0.040144562950000406},
{1.6325489664944102, 3.7175003337613455, 4.33779792265902,
4.105713962816652, 3.540665681319623, 2.89292031082295,
2.2825821295550015, 1.7697795760250616, 1.3625407284332312,
1.0481345468570211, 0.8085491570160555, 0.6295474156172527,
0.49183020319201, 0.38369549735293607, 0.29786811541626007,
0.22951579652734552, 0.17469803500361034, 0.13020190765388936,
0.09402226131521305, 0.06342380755225854, 0.036608238963516976},
{1.6442052294593683, 3.7252943580594176, 4.3334754132839395,
4.092491509868279, 3.522795969552562, 2.8733136377285127,
2.2634113977844095, 1.7522837112310143, 1.34715596732243,
1.034850815989361, 0.7971925215967245, 0.6198343456517654,
0.4834277976395694, 0.376370814515145, 0.291443293260983,
0.22384189739088395, 0.16965202547519864, 0.1256853793791163,
0.08994092032293327, 0.059656390524854164, 0.03311213608009271},
{1.655862220845396, 3.7329666225159763, 4.329031398586733,
4.079213402122058, 3.50493833402582, 2.8537723537006734,
2.2443455503521736, 1.7349122955744143, 1.3318999643026417,
1.0216910162368402, 0.7859515236659239, 0.6102243287677711,
0.475117171552771, 0.36912819686059944, 0.285091952575081,
0.21823392695746902, 0.1646653486270473, 0.12122241979233744,
0.0859065204542501, 0.055930143890518286, 0.02965583894085279},
{1.6675193459066675, 3.740517305835771, 4.324467193791323,
4.0658811411680915, 3.487093793045473, 2.8342970555761564,
2.225384604382994, 1.7176648188020074, 1.3167718538327173,
1.0086540893116909, 0.7748250202925588, 0.600716224567778,
0.466897261158278, 0.3619666573356673, 0.2788131820251424,
0.2126910476372374, 0.15973723678620752, 0.11681232632568636,
0.08191827150011573, 0.052244556017668295, 0.026238937452897324},
{1.6791760123392925, 3.747946596756031, 4.319784110106111,
4.052496212441331, 3.4692633466057887, 2.8148883233055213,
2.2065285629028573, 1.7005407634608396, 1.3017707702428383,
0.9957389823653188, 0.7638118763365778, 0.5913089048144126,
0.45876701527549024, 0.3548852213431996, 0.2726060823701636,
0.20721243340607, 0.15486693321318182, 0.11245440646115602,
0.07797539659044497, 0.048599132053166336, 0.02286102642084284},
{1.6908316303303144, 3.755254693882318, 4.314983454584612,
4.03906008528492, 3.451447976705755, 2.7955467201773985,
2.1877774151426395, 1.6835396051802758, 1.2868958479239514,
0.9829446480760986, 0.752910964512405, 0.5820012533462215,
0.4507253951845154, 0.3478829265908658, 0.2664697662998296,
0.20179726963990016, 0.15005369193690335, 0.10814797731868234,
0.07407713354071918, 0.04499339299653185, 0.019521705214514684},
{1.702485612605716, 3.7624418055253916, 4.310066529990034,
4.0255742130156715, 3.4336486476595143, 2.776272793040679,
2.1691311368376973, 1.6666608129480116, 1.2721462215115256,
0.970270044732748, 0.7421211654507135, 0.5727921659917657,
0.44277137449459564, 0.34095882294084023, 0.2604033582746929,
0.1964447529512785, 0.14529677759219436, 0.10389236507297422,
0.0702227360575813, 0.04142687478712678, 0.016220577470747483},
{1.7141373744774329, 3.7695081495391287, 4.305034634663784,
4.0120400329915995, 3.4158663064007126, 2.7570670725247775,
2.1505896905234976, 1.6499038493801803, 1.2575210260637695,
0.9577141363134083, 0.7314413677583076, 0.5636805504821429,
0.43490393901303614, 0.3341119722608496, 0.2544059943682421,
0.19115409102816908, 0.1405954652596732, 0.09968690416814388,
0.06641147479030177, 0.037899127410095386, 0.012957250827139877},
{1.7257863338893906, 3.7764539531595114, 4.299889062397829,
3.9984589666813632, 3.3981018827807143, 2.7379300732579557,
2.1321530258272863, 1.633268170985624, 1.2430193972344257,
0.9452758925605493, 0.7208704680758975, 0.5546653263620848,
0.42712208661467543, 0.32734144827659606, 0.24847682211085298,
0.18592450247495912, 0.1359490403080781, 0.09553093632711752,
0.06264263822051033, 0.03440971402589826, 0.009731336685530403},
{1.7374319114625543, 3.7832794528446763, 4.294631102310797,
3.9848324197355267, 3.380356289860657, 2.7188622940837623,
2.113821079755794, 1.6167532284244117, 1.228640471440256,
0.9329542890518107, 0.71040737113356, 0.5457454248997404,
0.4194248271119314, 0.32064633642555795, 0.2426150003356076,
0.18075521665565472, 0.13135679823897276, 0.09142380938386191,
0.05891553338737279, 0.030958210127423415, 0.006542450002919472},
{1.749073530539015, 3.789984894116078, 4.289262038727833,
3.9711617820594816, 3.3626304241973886, 2.699864218275631,
2.095593776979035, 1.600358466760691, 1.2143833860233464,
0.9207483072669097, 0.7000509898037195, 0.536919788995289,
0.41181118212546325, 0.31402573371217823, 0.23681969902597513,
0.17564547353924423, 0.12681804453380607, 0.08736487599355637,
0.055229486449435324, 0.027544202727872058, 0.0033902091075560664},
{1.7607106172251108, 3.7965705314007487, 4.283783151064084,
3.9574484278878805, 3.3449251661232844, 2.6809363137496587,
2.0774710301101833, 1.5840833257099665, 1.200247279408344,
0.9086569346507487, 0.6898002451514907, 0.5281873730884865,
0.4042801849554865, 0.3074787485644524, 0.23109009916534645,
0.17059452354720728, 0.12233209450329416, 0.08335349229426807,
0.05158384308769124, 0.02416728958191083, 0.00027423553795543655},
{1.7723426004335912, 3.803036627874697, 4.27819571371179,
3.9436937158603866, 3.3272413800199714, 2.6620790332755955,
2.05945273998156, 1.5679272398808726, 1.1862312912547324,
0.8966791646729311, 0.6796540664822405, 0.5195471430652611,
0.3968308804537611, 0.30100450069190965, 0.22542539258840097,
0.16560162740314052, 0.11789827313908857, 0.07938901660155938,
0.04797796875705282, 0.0208270784419453, -0.002805846097317483},
{1.7839689119248316, 3.8093834553074433, 4.27250099593089,
3.929898989098514, 3.3095799145860205, 2.6432928146860863,
2.0415387959167486, 1.55188963901154, 1.172334562604269,
0.8848139968840569, 0.6696113913862581, 0.5109980761634654,
0.38946232489630006, 0.2946021209450041, 0.21982478183430612,
0.16066605598448627, 0.11351591496770719, 0.075470808215332,
0.04441124879544026, 0.017523186350812233, -0.005850408241154598},
{1.7955889863471024, 3.8156112939076934, 4.2667002617431,
3.91606557528331, 3.291941603098624, 2.624578081084155,
2.0237290759988618, 1.5359699482006286, 1.1585562360236807,
0.873060436969446, 0.6596711657804276, 0.5025391608778783,
0.38217358585680944, 0.28827075117590917, 0.21428748000172818,
0.15578709017633133, 0.1091843639066885, 0.07159822640808496,
0.04088308840115377, 0.014255238971690686, -0.00885982049263629},
{1.8072022612759036, 3.821720432170203, 4.260794769829404,
3.9021947867336544, 3.2743272636693654, 2.605935241049004,
2.0060234473349676, 1.520167588133123, 1.1448954557427362,
0.8614174968012932, 0.6498323439468203, 0.4941693968645579,
0.3749637420808994, 0.2820095441007238, 0.20881271060564321,
0.1509640207272591, 0.10490297312294479, 0.06777062964834142,
0.03739291249016672, 0.011022869955599802, -0.011834449696782462},
{1.818808177252378, 3.827711166723809, 4.25478577343089,
3.8882879204848293, 3.256737699494124, 2.5873646888401076,
1.9884217663167243, 1.5044819753009744, 1.1313513677877989,
0.8498841944906563, 0.6400938885681465, 0.485887794844631,
0.3678318833610886, 0.2758176631630934, 0.2033997074359439,
0.1461961481072349, 0.10067110489328415, 0.06398737509494276,
0.03394016544554094, 0.00782572034648491, -0.014774660020975959},
{1.8304061778207905, 3.833583802180643, 4.248674520252865,
3.87434625836711, 3.239173699097185, 2.568866804599637,
1.970923878877216, 1.48891252221866, 1.117923120110951,
0.8384595544409538, 0.630454770759999, 0.4776933765075964,
0.3607771104126186, 0.2696942823992384, 0.1980477144178123,
0.14148278236748885, 0.09648813046706298, 0.060247818379511736,
0.03052431077135525, 0.004663438023561761, -0.01768081301956774},
{1.8419957095651036, 3.8393386509865577,
4.242462252372206, 3.860371067084031,
3.2216360365696555, 2.550441954553229,
1.9535296207440314, 1.4734586376337648,
1.1046098627148115, 0.827142607404834,
0.6209139700998655, 0.4695851744142314,
0.3537985347501116, 0.263638586304401,
0.19275598547386227, 0.1368232430023894,
0.09235342993095091, 0.0565513136773739,
0.027144830663475443, 0.0015356771803379191,
-0.020553267688015076},
{1.8535762221446417, 3.8449760332727516, 4.236150206147888,
3.8463635982900723, 3.2041254718022887, 2.53209049120912,
1.9362388176886085, 1.4581197267326516, 1.0914107477731259,
0.8159323905461888, 0.6114704746528754, 0.4615622318991618,
0.3468952785650807, 0.25764976970070097, 0.18752378438802478,
0.1322168588132706, 0.0882663920757676, 0.05289721405269383,
0.02380122550917092, -0.0015579021605066044, -0.02339238050777607},
{1.865147168328861, 3.850496276708626, 4.229739612134616,
3.8323250886674227, 3.1866427507127773, 2.513812753555656,
1.9190512857718671, 1.4428951913413162, 1.0783249297472435,
0.8048279475088237, 0.6021232809942696, 0.4536236029731732,
0.34006647460432127, 0.25172703760640297, 0.18235038467116807,
0.12766296777419886, 0.08422641426536912, 0.049284872052126914,
0.02049301332709781, -0.004617634597348426, -0.026198505483034765},
{1.8767080040312234, 3.8558997163558613,
4.223231694999507, 3.818256760001565,
3.1691886054676544, 2.495609067257179,
1.9019668315861602, 1.4277844301215061,
1.0653515654985626, 0.7938283284928435,
0.5928713942285958, 0.4457683522253245,
0.3333112660491943, 0.24586960510659367,
0.17723506942843553, 0.12316091689965043,
0.08023290230755024, 0.04571364051306598,
0.017219729158551397, -0.007643849766056969,
-0.028971994170216495},
{1.88825818834219, 3.8611866945237225, 4.216627673441795,
3.80415981925545, 3.1517637546988806, 2.4774797448483263,
1.8849852524935673, 1.4127868387621834, 1.0524898143970491,
0.7829325903392091, 0.5837138280056328, 0.43799555472492097,
0.32662880639582303, 0.24007669722526623, 0.17217713122828973,
0.11871006211408303, 0.07628527032693871, 0.04218287354743855,
0.013980924420176694, -0.010636872723779259, -0.03171319570112527},
{1.899797183561342, 3.866357560625632, 4.209928760115456,
3.7900354586420004, 3.134368903715255, 2.45942508592673,
1.8681063368605673, 1.3979018101664176, 1.0397388384259163,
0.7721397966222827, 0.5746496045330681, 0.43030429592341046,
0.3200182593362159, 0.23434754879880526, 0.16717587197324377,
0.11430976812337193, 0.07238294063984754, 0.03869192765960159,
0.010776166227539036, -0.013597024301276442, -0.03442245680045021},
{1.9113244552286235, 3.8714126710369623,
4.20313616155473, 3.7758848556947875,
3.117004744708723, 2.441445377344132,
1.851329864289112, 1.3831287346337875,
1.0270978022825508, 0.7614490177495109,
0.5656777545859522, 0.4226936715562449,
0.31347879864032724, 0.22868140435087272,
0.16223060277226498, 0.10995940828809056,
0.06852534363105849, 0.03524016295681942,
0.0076050366981605475, -0.016524621425028006,
-0.037100121798290524},
{1.9228394721547388, 3.8763523889541185, 4.196251078102497,
3.7617091733367474, 3.0996719569557483, 2.4235408933959355,
1.8346556058441454, 1.368467000038379, 1.014565873475783,
0.7508593310668252, 0.5567973175129658, 0.4151627875447666,
0.3070096080390742, 0.22307751796868597, 0.15734064381483817,
0.10565836449861284, 0.06471191763251065, 0.031826944412518196,
0.004467132241796351, -0.019419977410366183, -0.03974653263827362},
{1.9343417064506914, 3.881177084254857,
4.189274703841406, 3.747509559946801,
3.082371207013821, 2.405711896009176,
1.818083324277583, 1.3539159920024482,
1.0021422224195828, 0.7403698209678272,
0.5480073412395496, 0.40771075989816147,
0.30060988110831843, 0.21753515318069003,
0.1525053242466742, 0.10140602705201762,
0.06094210880385799, 0.028451643145599476,
0.0013620628449180997, -0.022283402226961242,
-0.042362028881776134},
{1.9458306335564708, 3.8858871333598843,
4.182208226527739, 3.733287149424356,
3.065103148913236, 2.387958634928931,
1.8016127742487986, 1.3394750940658382,
0.9898260225232631, 0.7299795790044659,
0.5393068822679333, 0.4003367146155183,
0.2942788211538196, 0.2120535828356078,
0.14772398204703902, 0.09720179453076314,
0.057215371014717, 0.025113637683053608,
-0.0017105486444363126, -0.025115202738057407,
-0.04494694770871785},
{1.9573057322689191, 3.8904829190957284,
4.1750528275279715, 3.71904306125169,
3.047868424344283, 2.370281347903186,
1.7852437025416505, 1.325143687851227,
0.977616450278285, 0.7196877039967061,
0.5306950056741364, 0.393039787588047,
0.2880156410971812, 0.20663208898287358,
0.14299596390770142, 0.09304507368312284,
0.053531165727496874, 0.021812315177653495,
-0.0047510672260324665, -0.027915682914919637,
-0.04750162391532768},
{1.968766484768761, 3.894964830558893, 4.167809681757931,
3.7047784005542406, 3.0306676628399405, 2.352680260866131,
1.7689758482780733, 1.3109211532252791, 0.9655126853417327,
0.7094933021385768, 0.5221707851019852, 0.3858191245014785,
0.28181956336278213, 0.20126996275443493, 0.1383206251134705,
0.08893527930534685, 0.04988896187613392, 0.018547072557233944,
-0.007759846446356335, -0.03068514402804269, -0.05002638990927324},
{1.9802123766468123, 3.8993332629812785, 4.160479957624541,
3.6904942581588815, 3.0135014819541994, 2.3351555881199157,
1.7528089431282765, 1.2968068684557805, 0.9535139106165481,
0.6993954870980438, 0.5137333027542229, 0.37867388073869424,
0.27568981976571466, 0.1959665042479189, 0.1336973294243145,
0.08487183412553492, 0.04628823572817862, 0.015317317586801162,
-0.010737229083076658, -0.03342388481670513, -0.05252157570248835},
{1.9916428969293853, 3.9035886175969052,
4.153064816970091, 3.6761917106503543,
2.9963704874361627, 2.3177075325148615,
1.7367427115175837, 1.282800210364839,
0.941619312328602, 0.6893933801083079,
0.5053816493807783, 0.3716032212826163,
0.2696256514007307, 0.19072102241115793,
0.12912544895904407, 0.08085416868919716,
0.04272847070658073, 0.012122469829241903,
-0.013683547811684644, -0.036132201638497105,
-0.054987508902024675},
{2.003057538102885, 3.907731301509915, 4.145565415018971,
3.661871820425975, 2.979275273400019, 2.3003362856281284,
1.7207768708299438, 1.2689005544782124, 0.9298280801006756,
0.679486110048354, 0.4971149242642663, 0.36460632061938614,
0.2636263085321995, 0.1855328349280631, 0.12460436408054008,
0.07688172124647877, 0.039209157137966855, 0.008961961494612333,
-0.016599125851524534, -0.03881038860044081, -0.05742451469921587},
{2.01445579613761, 3.9117617275638628,
4.137982900326835, 3.647535635748856,
2.962216422491009, 2.283042027940837,
1.7049111316081473, 1.2551072751708474,
0.9181394070234323, 0.6696728135108985,
0.488932235202797, 0.357682362641867,
0.257691050485088, 0.18040126810583973,
0.12013346328251516, 0.0729539376410293,
0.03572979189164495, 0.005835238171770502,
-0.019484277588962633, -0.041458737673300015,
-0.05983291585743359},
{2.0258371705107687, 3.9156803142123024,
4.1303184147321295, 3.6331841907998577,
2.9451945060475224, 2.2658249290136503,
1.6891451977507812, 1.2414197458087002,
0.9065524897234466, 0.659952634856225,
0.4808326984901706, 0.35083054055349433,
0.25181914553696205, 0.1753256567635361,
0.115712143077787, 0.0690702712004919,
0.032289877880693554, 0.0027417594394633007,
-0.022339309175921432, -0.044077538790628576,
-0.062213032698686804},
{2.037201164228718, 3.9194874853906656,
4.122573093309961, 3.61881850572855,
2.928210084259435, 2.2486851476608276,
1.6734787667059576, 1.2278373388869053,
0.8950665284283713, 0.650324726250777,
0.47281543889353883, 0.34405005677250317,
0.2460098708110155, 0.1703053441219144,
0.11133980788805195, 0.0652301826285941,
0.028888923412106172, -0.000319000643162308,
-0.025164519102439123, -0.046667079934029354,
-0.06456518308930406},
{2.0485472838484355, 3.923183670389449, 4.11474806432825,
3.6044395867034607, 2.9112637063228117, 2.2316228321227354,
1.6579115296618558, 1.2143594261643806, 0.8836807270293139,
0.6407882476897535, 0.4648795896286219, 0.33734012283656084,
0.24026251217013217, 0.16533968169464175, 0.10701586993514152,
0.06143313989881715, 0.025526441393101604, -0.003347553164261838,
-0.027960198742302177, -0.04922764720601709, -0.06688968242492146},
{2.0598750394982184, 3.9267693037286726, 4.106844449206096,
3.5900484259619003, 2.8943559105910683, 2.2146381202368164,
1.6424431717340795, 1.2009853787949116, 0.872394293140477,
0.6313423670033165, 0.4570242923325512, 0.33069995930781787,
0.23457636411197547, 0.16042802918078125, 0.1027397491337416,
0.05767861814962261, 0.022201948420773047, -0.006344394100891855,
-0.030726632871138276, -0.05175952489177626, -0.06918684361497959},
{2.071183944897637, 3.9302448250336455, 4.098863362474336,
3.575646001859686, 2.87748722472273, 2.1977311396070305,
1.6270733721498984, 1.1877145674548033, 0.8612064381561529,
0.621986259846376, 0.44924869703443415, 0.3241287956784142,
0.22895072966511582, 0.1555697543585852, 0.0985108729855654,
0.053966099581216564, 0.01891496379839032, -0.00931000416866552,
-0.033464100156661694, -0.05426299551100759, -0.07145697706692299},
{2.08247351737675, 3.9336106789120517, 4.0908059117382685,
3.561233278921112, 2.8606581658259156, 2.180902007771763,
1.6118018044293858, 1.174546362467167, 0.8501163773051236,
0.6127191096722292, 0.44155196212372333, 0.31762587027645056,
0.22338492028619159, 0.15076423298057112, 0.09432867647495716,
0.05029507335382846, 0.01566500853169437, -0.012244848772467279,
-0.03617287362101874, -0.056738339860953266, -0.0737003906702831},
{2.0937432778945673, 3.9368673148322895, 4.08267319764245,
3.5468112078894336, 2.843869240599594, 2.1641508323701895,
1.5966281365634674, 1.1614801339228984, 0.8391233297025358,
0.603540107690599, 0.4339332543164681, 0.3111904301724484,
0.21787825575810318, 0.14601084866987527, 0.09019260196591246,
0.04666503548748469, 0.012451604361844268, -0.015149378050406982,
-0.03885322107541307, -0.05918583705159017, -0.07591738978079975},
{2.1049927510567943, 3.9400151870031355, 4.0744663138375365,
3.532380725778225, 2.8271209454717954, 2.147477711307109,
1.5815520311889448, 1.148515251798417, 0.8282265183993175,
0.5944484528108778, 0.4263917486195463, 0.30482173108632205,
0.21243006408924642, 0.14130899281787537, 0.08610209910050277,
0.04307548876326055, 0.00927427288890859, -0.018024027002675445,
-0.041505405527376395, -0.06160576453388945, -0.07810827720473927},
{2.1162214651328575, 3.9430547542547028, 4.066186346949177,
3.517942755923944, 2.810413766734847, 2.1308827329162505,
1.5665731457604941, 1.13565108607024, 0.8174251704291982,
0.5854433515715559, 0.41892662829294997, 0.29851903729487056,
0.20703968141377455, 0.13665806448306603, 0.08205662469868076,
0.039525942625979936, 0.006132534832311501, -0.020869215696673597,
-0.044129685561218726, -0.06399839812195052, -0.08027335318354449},
{2.127428952072214, 3.9459864799206774, 4.057834376548828,
3.5034982080399586, 2.7937481806777376, 2.1143659761220355,
1.5516911327196763, 1.1228870068264383, 0.8067185168533912,
0.576524018056985, 0.411537084810217, 0.29228162153981896,
0.2017064518928997, 0.13205747029118237, 0.0780556426594578,
0.036015913088357734, 0.0030259094641187055, -0.023685349539731414,
-0.04672631569231874, -0.0663640120097336, -0.08241291537893765},
{2.1386147475199606, 3.948810831721858,
4.049411475126524, 3.4890479782723767,
2.777124653715712, 2.09792751059981,
1.5369056396609948, 1.110222384375051,
0.7961057928030011, 0.5676896738027304,
0.40422231781708784, 0.28610876493641263,
0.19642972761721933, 0.12750662433655768,
0.07409862386343168, 0.03254492263654874,
-0.00004608576097675683, -0.026472819610823053,
-0.04929554669601772, -0.06870287878304344,
-0.0845272588585941},
{2.1497783908317443, 3.951528281650984,
4.040918708065517, 3.474592949257936,
2.760543642517217, 2.0815673969345427,
1.5222163094950127, 1.0976565893495114,
0.7855862375192154, 0.5589395476908525,
0.39698153508847306, 0.27999975688258744,
0.19120886851007654, 0.12300494808470566,
0.0701850460766525, 0.029112500137097937,
-0.0030839353672151414, -0.02923200304293165,
-0.05183762591194687, -0.07101526942733527,
-0.08661667608248123},
{2.1609194250879913, 3.9541393058588477, 4.032357133618759,
3.4601339901842247, 2.7440055941282697, 2.0652856867779934,
1.5076227806085762, 1.085188992811153, 0.7751590943913377,
0.550272875836505, 0.38981395248381256, 0.27395389496872713,
0.18604324223194396, 0.1185518702761148, 0.06631439385580754,
0.025718180745259445, -0.006088125810377176, -0.03196326344806849,
-0.0543527975246576, -0.07330145333186242, -0.0886814568899602},
{2.172037397107453, 3.9566443845416863, 4.023727802887194,
3.4456719568524714, 2.7275109460943483, 2.049082423004333,
1.4931246870221522, 1.07281896634884, 0.7648236109927185,
0.5416889014672315, 0.3827187939009081, 0.26797048488802105,
0.18093222408583454, 0.11414682683124852, 0.062486158454712754,
0.022361505814679168, -0.009059145230591169, -0.0346669513773571,
-0.05684130282142387, -0.07556169829060431, -0.09072188848771899},
{2.1831318574600918, 3.9590440018298776, 4.015031759799817,
3.431207691743139, 2.7110601265799157, 2.0329576398642595,
1.478721658544328, 1.0605458821758071, 0.7545790391146421,
0.5331868747963614, 0.3756952912283096, 0.2620488403474376,
0.1758751969237327, 0.10978926075673295, 0.058699837732093946,
0.01904202280840807, -0.011997483022259517, -0.03734340480910979,
-0.05930338042812018, -0.07779627050038296, -0.09273825543861342},
{2.194202360479287, 3.961338645677881, 4.006270041095433,
3.4167420240844937, 2.6946535544856367, 2.0169113631375413,
1.4644133209234764, 1.0483691132237287, 0.7444246347982159,
0.5247660528918364, 0.36874268429632723, 0.25618828297931673,
0.17087155105404067, 0.10547862205272603, 0.05495493606063761,
0.015759285211235322, -0.014903629243726882, -0.03999294965831235,
-0.06173926652406826, -0.08000543455651189, -0.09473083965147225},
{2.2052484642734043, 3.9635288077554796, 3.9974436763061183,
3.402275769924349, 2.6782916395633865, 2.0009436102840654,
1.4501992959966343, 1.0362880332341142, 0.7343596583643242,
0.5164256995417758, 0.36186022082675307, 0.2503881422536025,
0.16592068415004146, 0.10121436762145454, 0.05125096423730267,
0.012512852443322363, -0.01777807389306258, -0.04261590030150032,
-0.0641491950367878, -0.08218945344628467, -0.09669992037191243},
{2.2162697307367227, 3.965614983340294, 3.9885536877423555,
3.387809732205138, 2.6619747825291706, 1.9850543905933378,
1.4360792018356232, 1.0243020168470562, 0.7243833744417006,
0.5081650851180088, 0.35504715638136686, 0.24464775539072356,
0.1610220011593722, 0.09699596117691166, 0.04758743939487511,
0.009302289775116119, -0.02062130607829546, -0.045212560111543794,
-0.06653339781761874, -0.08434858854058397, -0.09864577417421144},
{2.2272657255597004, 3.9675976712115397, 3.9796010904797106,
3.3733447008424116, 2.645703375173945, 1.9692437053324476,
1.422052652890411, 1.0124104396873939, 0.7144950519931503,
0.4999834864387081, 0.34830275430928564, 0.23896646727512005,
0.1561749142144998, 0.09282287315569498, 0.043963884914745004,
0.006127168243524004, -0.02343381311088897, -0.047783221997414485,
-0.06889210479922894, -0.0864830995838494, -0.10056867495426378},
{2.238236018238643, 3.9694773735450712, 3.970586892347149,
3.358881452806888, 2.629477800472527, 1.9535115478925167,
1.4081192601297832, 1.0006126784483538, 0.7046939643400014,
0.49188018663120453, 0.34162628569324566, 0.23334363036944528,
0.15137884254420061, 0.08869458062898472, 0.040379830340900674,
0.002987064569336697, -0.026216079550449974, -0.05032816894453467,
-0.0712255441360671, -0.08859324468263288, -0.10246889392364932},
{2.2491801820847357, 3.97125459580969,
3.9615120939168658, 3.34442075221015,
2.6132984326906032, 1.9378579039336132,
1.3942786311793274, 0.988908110972709,
0.6949793891848107, 0.4838544749959396,
0.3350170292948691, 0.22777860462943222,
0.14663321238603388, 0.08461056721564109,
0.03683481129511424, -0.0001184389241269991,
-0.028968586226948125, -0.052847674551829545,
-0.07353394232886096, -0.09067928029294096,
-0.10434669960483549},
{2.260097794232453, 3.9729298466646705,
3.9523776884955923, 3.3299633503939665,
2.597165637489898, 1.9222827515281342,
1.3805303704567515, 0.9772961163315106,
0.6853506086323786, 0.47590564687242276,
0.32847427149898134, 0.2222707574194415,
0.1419374568998057, 0.08057032299641476,
0.033328369393311345, -0.003189754391162458,
-0.031691809264306495, -0.05534200356208578,
-0.07581752433427932, -0.09274146120654711,
-0.10620235782751475},
{2.270988435647397, 3.9745036378585836,
3.94318466211742, 3.315509986023383,
2.5810797720316443, 1.9067860613026766,
1.3668740793046037, 0.9657760749004533,
0.6758069092091288, 0.46803300350798416,
0.3219973062570495, 0.21681946342869887,
0.1372910160820166, 0.07657334442925719,
0.029860052163105104, -0.006227288542632083,
-0.034386219126404584, -0.05781141238269601,
-0.07807651366090321, -0.0947800405364525,
-0.10803613172609772},
{2.2818516911335025, 3.975976484129323, 3.933933993538006,
3.3010613851834822, 2.5650411850783397, 1.8913677965783724,
1.3533093561203715, 0.9543473684339058, 0.6663475818808814,
0.4602358519299789, 0.31558543502978814, 0.21142410458822095,
0.1326933366812871, 0.07261913426571974, 0.026429412962482718,
-0.009231442723745724, -0.03705227970345137, -0.060256149594280425,
-0.08031113245261823, -0.09679526970165217, -0.10984828173834758},
{2.292687149339686, 3.9773489031054092, 3.9246266542302215,
3.286618261479869, 2.549050217093919, 1.876027913509718,
1.33983579648404, 0.9430093801366775, 0.6569719220690844,
0.45251350482203945, 0.3092379667289986, 0.20608406998844483,
0.12814387211475478, 0.06870720146842908, 0.02303601089962777,
-0.01220261299072299, -0.03969044745356398, -0.06267645644510136,
-0.08252160156054276, -0.09878739841135559, -0.11163906560516498},
{2.3034944027658866, 3.97862141520848, 3.9152636083811174,
3.272181316142807, 2.5331072003423647, 1.8607663612218628,
1.3264529932830906, 0.9317614947335434, 0.6476792296655238,
0.4448652804048569, 0.30295421765868813, 0.20079875579755707,
0.12364208238543334, 0.06483706112962886, 0.019679410753863376,
-0.015141190186733343, -0.04230117061131368, -0.06507256732953408,
-0.08470814060454572, -0.10075667464880819, -0.11340873837150448},
{2.3142730477685705, 3.979794543557067, 3.9058458128902735,
3.2577512381349893, 2.5172124589848397, 1.84558308194641,
1.3131605368350185, 0.9206030985366024, 0.6384688090455808,
0.4372905023219033, 0.29673351145552906, 0.1955675651805337,
0.11918743400053157, 0.06100823439077423, 0.01635918289770432,
-0.01804756001906474, -0.04488488847208457, -0.06744471024920567,
-0.0868709680253704, -0.10270334465484078, -0.11515755238841363},
{2.3250226845656368, 3.980868813871537,
3.8963742173694094, 3.243328704262833,
2.5013663091753986, 1.830478011155687,
1.2999580150073644, 0.9095335795104921,
0.6293399690800552, 0.4297884995304043,
0.2905751790287076, 0.19038990821889426,
0.11477939989071875, 0.05722024836316994,
0.013074903220000603, -0.020922103143575253,
-0.047442030758411455, -0.06979310725571945,
-0.08901030112831439, -0.1046276529112767,
-0.11688575731618167},
{2.33574291724079, 3.981844754380296, 3.886849764143276,
3.2289143792912354, 2.4855690591553063, 1.815451077695505,
1.2868450133353015, 0.8985523273355218, 0.6202920231456119,
0.4223586061978151, 0.2844785584992081, 0.18526520183116874,
0.11041745933033442, 0.053472636049638506, 0.009826153050160548,
-0.02376519526928782, -0.049973017072038155, -0.07211797487414275,
-0.0911263561193457, -0.10652984212431091, -0.11859360012857188},
{2.3464333537473583, 3.9827228957271714,
3.8772733882517882, 3.21450891606168,
2.4698210093460555, 1.8005022039164262,
1.2738211151368186, 0.8876587334687559,
0.6113242891338813, 0.4150001616039655,
0.2784429951385946, 0.18019286969408865,
0.10610109785853039, 0.0497649362672092,
0.006612519083436836, -0.026577207303330547,
-0.052478256433307925, -0.07441952450670371,
-0.09321934813447787, -0.10841015320797416,
-0.12028132511812166},
{2.3570936059115764, 3.983503770880021, 3.867646017453366,
3.20011295561359, 2.454122452441127, 1.7856313058035211,
1.2608859016255214, 0.8768521912031039, 0.6024360894592588,
0.4077125100489871, 0.27246784130732943, 0.17517234216449787,
0.10182980720134027, 0.04609669357081345, 0.0034335933072644365,
-0.02935850556078049, -0.054958146907671986, -0.07669796281633778,
-0.09528949126314055, -0.11026882526777979, -0.12194917390248154},
{2.3677232894353284, 3.9841879150405166, 3.8579685722294306,
3.1857271273087533, 2.4384736734964916, 1.7708382931046203,
1.2480389520210735, 0.866132095724446, 0.5936267510654328,
0.4004950007670599, 0.2665524563926837, 0.17020305620198736,
0.09760308519466593, 0.042467458177977827, 0.00028897292863350535,
-0.03210945206273526, -0.05741307531755503, -0.07895349208992901,
-0.09733699856622519, -0.11210609558465377, -0.12359738543176775},
{2.378322023898379, 3.9847758655551417, 3.8482419657900824,
3.1713520489587443, 2.4228749500199958, 1.7561230694570864,
1.2352798436573442, 0.8554978441668555, 0.5848956054306962,
0.39334698784598854, 0.26069620674629357, 0.16528445529226207,
0.09342043570817654, 0.038876785894503066, -0.0028217396975137483,
-0.03483040493863036, -0.0598434170365648, -0.0811863105812614,
-0.0993620820894186, -0.11392219959923018, -0.1252261959969026},
{2.3888894327600765, 3.9852681618273524, 3.838467104080864,
3.1569883269551378, 2.4073265520595695, 1.7414855325130854,
1.2226081520882475, 0.8449488356659343, 0.5762419885720527,
0.38626783015253746, 0.25489846562140006, 0.16041598937122784,
0.0892813685701071, 0.03532423804111583, -0.00589893713887844,
-0.03752171893707805, -0.062249535862026056, -0.0833966128338235,
-0.10136495287236455, -0.1157173708965975, -0.12683583923890585},
{2.399425143360562, 3.9856653452309394, 3.828644885790633,
3.142636556402383, 2.3918287422903917, 1.7269255740633789,
1.210023451191347, 0.8344844714103319, 0.5676652410481793,
0.37925689126344647, 0.24915861310983745, 0.15559711474981547,
0.08518539949295356, 0.03180938138108487, -0.008943006955404502,
-0.04018374603599978, -0.06463178396105748, -0.08558458998375934,
-0.10334582095415269, -0.11749184119156564, -0.12842654615911434},
{2.4099287869214607, 3.985967959024526, 3.8187762023604814,
3.128297321253148, 2.3763817761009847, 1.71244308015963,
1.1975253132692274, 0.8241041546914581, 0.5591647079612605,
0.3723135394019833, 0.24347603607880292, 0.1508272940395294,
0.08113205000005269, 0.02833178804878706, -0.011954331767895903,
-0.042816836130257066, -0.06699050188485901, -0.08775043004333549,
-0.10530489537556596, -0.1192458403145211, -0.1299985451302889},
{2.420399998546102, 3.986176548267269, 3.808861937993705,
3.1139711944460036, 2.36098590167832, 1.698037931235244,
1.1851133091486894, 0.8138072909514555, 0.5507397389577411,
0.36543714737988114, 0.2378501281074654, 0.14610599607872982,
0.07712084735304148, 0.024891035479216842, -0.014933289325664095,
-0.045421337765341324, -0.06932601864550177, -0.08989431816540547,
-0.10724238417848275, -0.12097959619792824, -0.13155206190858015},
{2.43083841721923, 3.9862916597356732, 3.798902969666757,
3.099658738045204, 2.3456413600919475, 1.683710002224724,
1.1727870082777805, 0.8035932878294471, 0.5423896882280206,
0.3586270925444629, 0.23228028942345347, 0.1414326958596423,
0.07315132448018379, 0.021486706338420564, -0.017880252573222333,
-0.04799759888003243, -0.0716386518493176, -0.09201643688940868,
-0.1091584944027888, -0.12269333486353054, -0.13308731964631618},
{2.441243685806258, 3.986313841841594, 3.7889001671412004,
3.0853605033824554, 2.330348385377203, 1.6694591626815791,
1.1605459788207104, 0.7934615552061169, 0.5341139145051348,
0.3518827567307549, 0.22676592683927374, 0.1368068744560998,
0.0692230199055634, 0.018118388454855583, -0.02079558971603464,
-0.05054596751941727, -0.0739287078808986, -0.09411696636948645,
-0.11105343208111003, -0.12438728041029846, -0.13460453890558088},
{2.451615451052048, 3.986243644551354, 3.778854392976605,
3.0710770312004287, 2.3151072046175116, 1.6552852768947663,
1.148389787750673, 0.783411505246648, 0.5259117810624432,
0.34520352621835076, 0.22130645368869498, 0.13222801895201292,
0.06533547767912729, 0.014785674751651618, -0.02367966428533519,
-0.0530667924818389, -0.07619648213176763, -0.09619608458533538,
-0.11292740223165874, -0.12606165500316013, -0.13610393767254117},
{2.4619533635792155, 3.986081619306002, 3.768766502544376,
3.0568088517978684, 2.2999180380258237, 1.6411882040036778,
1.1363180009406086, 0.7734425524420562, 0.5177826557103604,
0.3385887916927894, 0.21590128976314507, 0.12769562237056759,
0.06148824730757625, 0.011488163179770755, -0.026532835202032506,
-0.055560423868338295, -0.07844225926790595, -0.09825396753641708,
-0.11478060884944265, -0.12771667886255272, -0.13758573137249605},
{2.472257077885994, 3.985828318942689, 3.75863734404247,
3.0425564851760836, 2.2847810990252126, 1.6271677981116852,
1.124330183251941, 0.7635541136489584, 0.5097259107921613,
0.33203794821119637, 0.21054986124815844, 0.12320918360415013,
0.05768088368609484, 0.008225456652054836, -0.0293554568397057,
-0.058027213510004935, -0.08066631353053198, -0.10029078942015471,
-0.11661325489607577, -0.1293525702548181, -0.13905013288560325},
{2.4825262523436504, 3.9854842976171856, 3.7484677585110178,
3.028320441186666, 2.2696965943286793, 1.6132239083982516,
1.11242589862133, 0.7537456081278141, 0.501740923178891,
0.3255503951719308, 0.20525160065991319, 0.11876820734499814,
0.053912947030908764, 0.004997162978145234, -0.03214787908671103,
-0.06046751525642299, -0.08286890906478511, -0.10230672279474765,
-0.11842554228838939, -0.1309695454834678, -0.14049735256325474},
{2.4927605491934495, 3.9850501107274745, 3.738258579848762,
3.0141012196802115, 2.2546647240181477, 1.5993563792295973,
1.1006047101454475, 0.7440164575796613, 0.49382707426340205,
0.31912553628796864, 0.200005946781891, 0.11437220401657264,
0.05018400281266703, 0.0018028948002696034, -0.0349104474074067,
-0.06288168511626974, -0.0850503002712743, -0.10430193872724032,
-0.12021767188603415, -0.1325678188813375, -0.14192759824506557},
{2.5029596345431955, 3.9845263148384706,
3.7280106348303605, 2.9998993106559024,
2.2396856816227326, 1.585565050267951,
1.0888661801638366, 0.7343660861813978,
0.4859837499535574, 0.31276277956376825,
0.19481234460169647, 0.11002068970565489,
0.04649362169063706, -0.0013577304701179096,
-0.037643502902511505, -0.06527008124851158,
-0.08721073217577312, -0.10627660692750515,
-0.12198984347822783, -0.13414760280363683,
-0.143341075276437},
{2.51312317836335, 3.983913467607829,
3.717724743124472, 2.985715194411739,
2.2247596541962666, 1.5718497565793812,
1.077209870339872, 0.7247939206196266,
0.4782103406646192, 0.3064615372753437,
0.18967024524806486, 0.1057131860951582,
0.042841379447705524, -0.0044850907148545165,
-0.04034738236860591, -0.0676330638091062,
-0.08935044081270416, -0.10823089586881685,
-0.12374225576979779, -0.1357091076219083,
-0.14473798652666411},
{2.523250854482729, 3.9832121277128376, 3.707401717312634,
2.971549341695253, 2.209886822394105, 1.5582103287402145,
1.0656353417398459, 0.7152993901231085, 0.47050624131085106,
0.30022122595329254, 0.18457910592808766, 0.10144922039765812,
0.03922685692617983, -0.007579559170750359, -0.04302241835678909,
-0.06997099466343118, -0.09146965361840632, -0.11016497289573081,
-0.12547510636664339, -0.13725254171889523, -0.14611853240755043},
{2.5333423405837725, 3.9824228547783704, 3.6970423629088884,
2.957402213854527, 2.1950673605492694, 1.544646592942049,
1.0541421549102303, 0.7058819264938453, 0.4628708512963635,
0.2940412663685153, 0.1795383898646866, 0.09722832528963565,
0.03564963996437735, -0.010641504490450447, -0.045668939230505655,
-0.07228423697872709, -0.09356858983054332, -0.11207900432000599,
-0.1271885917607373, -0.13877811148432462, -0.147482910892502},
{2.5433973181974423, 3.9815462093059466, 3.6866474783801664,
2.9432742629893656, 2.1803014367478974, 1.53115837109538,
1.0427298699531296, 0.6965409641368329, 0.45530357450522846,
0.28792108352037854, 0.17454756623435544, 0.09305003884642966,
0.03210931933400012, -0.013671290802481504, -0.048287269222549084,
-0.07457315471366714, -0.09564746089036666, -0.11397315550532688,
-0.12888290731475985, -0.1402860213115959, -0.14883131753606235},
{2.553415472697695, 3.9805827526038153, 3.676217855167372,
2.929165932102421, 2.1655892129040666, 1.5177454809318323,
1.0313980465999641, 0.6872759400885102, 0.44780381929088364,
0.28186010662707484, 0.1696061101051993, 0.08891390447789774,
0.028605490678281675, -0.016669277770498245, -0.05087772849125718,
-0.07683811202385418, -0.09770647084489206, -0.11584759094160949,
-0.1305582472464692, -0.14177647359537185, -0.15016394549386303},
{2.5633964932955786, 3.9795330467181125, 3.6657542777071557,
2.91507765525014, 2.150930844833977, 1.5044077361050128,
1.0201462442834095, 0.6780862940439335, 0.44037099846485345,
0.2758577691179418, 0.16471350237528593, 0.08481947086477941,
0.025137754450902987, -0.019635820651736198, -0.053440633175910274,
-0.07907947260273386, -0.09974581674638434, -0.11770247430966599,
-0.13221480461288257, -0.143249668730065, -0.1514809855429543},
{2.573340073032941, 3.9783976543650543, 3.6552575234543867,
2.901009857693377, 2.1363264823295176, 1.4911449462900002,
1.0089740222076227, 0.66897146838271, 0.43300452928481387,
0.2699135086275152, 0.15986922971133422, 0.08076629189575864,
0.02170571585566726, -0.022571270354681303, -0.05597629545134071,
-0.08129759897725718, -0.10176568904686428, -0.11953796853700396,
-0.1338527712943552, -0.14470580510919998, -0.15278262610248594},
{2.583245908775766, 3.9771771388641692, 3.6447283629052447,
2.8869629560474914, 2.121776269231244, 1.4779569172814624,
0.9978809394167961, 0.659930908193717, 0.4257038334420198,
0.2640267669910937, 0.155072784487755, 0.07675392660522444,
0.018308984786924477, -0.025475973495968834, -0.05848502358176781,
-0.08349285177681282, -0.10376627198565025, -0.12135423584552762,
-0.13547233797862646, -0.14614507912564745, -0.15406905325471654},
{2.5931137012071352, 3.975872064072553, 3.634167559620976,
2.8729373584318423, 2.1072803435007694, 1.464843451090432,
0.9868665548620473, 0.650964061298635, 0.41846833704811953,
0.2581969902416098, 0.1503236647260583, 0.07278193911172019,
0.014947175770741662, -0.02835027245651829, -0.06096712197386822,
-0.0856655889926227, -0.10574774396823308, -0.12315143779186015,
-0.1370736941449015, -0.14756768517270707, -0.1553404507663142},
{2.6029431548198323, 3.9744829943201503, 3.623575870252233,
2.8589334646184796, 2.092838837292584, 1.4518043460397256,
0.9759304274666948, 0.6420703782743222, 0.41129747062137917,
0.25242362860760376, 0.14562137403464553, 0.06884989855708418,
0.011619907906807251, -0.03119450543691564, -0.06342289122909159,
-0.08781616524313272, -0.10771027793503818, -0.12492973530100064,
-0.13865702804803734, -0.14897381564602435, -0.15659700010992644},
{2.612733977908586, 3.973010494346035, 3.6129540445640322,
2.8449516661799596, 2.0784518770253224, 1.4388393968580389,
0.9650721161899386, 0.6332493124740624, 0.4041906690723388,
0.24670613651211798, 0.14096542154899677, 0.06495737904627129,
0.00832680481106397, -0.03400900651205171, -0.06585262819523267,
-0.08994493105902847, -0.10965404171887681, -0.12668928869396456,
-0.1402225267028885, -0.15036366094632084, -0.15783888048599312},
{2.62248588256197, 3.971455129235709, 3.6023028254612743,
2.8309923466361187, 2.0641195834524786, 1.4259483947727083,
0.9542911800889742, 0.6245003200477072, 0.39714737168891917,
0.24104397257233007, 0.1363553218722644, 0.06110395958785359,
0.00506749455906238, -0.03679410568502648, -0.06825662601727137,
-0.09205223219952177, -0.11157919839010791, -0.12843025771002792,
-0.14177037586887564, -0.15173740948291625, -0.15906626884477418},
{2.6321985846539584, 3.96981746435937, 3.5916229490148144,
2.8170558815996998, 2.0498420717326016, 1.4131311276011609,
0.9435871783795755, 0.6158228599607427, 0.3901670221210049,
0.2354365995997595, 0.13179059501628723, 0.05728922403519844,
0.0018416096300257982, -0.03955012894033006, -0.07063517418748881,
-0.09413840900952822, -0.11348590658873316, -0.13015280152415032,
-0.14330076003483097, -0.15309524767802468, -0.16027933990857518},
{2.6418718038351328, 3.968098065311187,
3.5809151444880833, 2.803142638920737,
2.0356194514989503, 1.4003873798410529,
0.9329596704951607, 0.6072163940123043,
0.38324906836451617, 0.2298834846008937,
0.12727076634302797, 0.053512761028311595,
-0.0013512131483791653, -0.042277398296306216,
-0.0729885585948727, -0.09620379582539297,
-0.11537432084283322, -0.13185707876008848,
-0.14481386240416838, -0.1544373599717943,
-0.16147826619413364},
{2.6515052635235867, 3.9662974978495305,
3.5701801343642163, 2.7892529788295617,
2.02145182692865, 1.3877169327591157,
0.9224082161443871, 0.5986803868521697,
0.3763929627449981, 0.22438409877808416,
0.12279536650644932, 0.049774163936349314,
-0.004511332654575633, -0.044976231856912706,
-0.07531706157381986, -0.0982487204349705,
-0.11724459187291422, -0.13354324749969113,
-0.1463098648804338, -0.15576392882807655,
-0.16266321803516243},
{2.661098690895477, 3.9644163278381903,
3.55941863437369, 2.7753872540783684,
2.0073392968113386, 1.3751195644787115,
0.9119323753672862, 0.5902143059967461,
0.3695981619007387, 0.2189379175305814,
0.11836393139483056, 0.046073030800789255,
-0.007639103526920207, -0.047646943862782225,
-0.07762096195214667, -0.10027350359613929,
-0.11909686688188625, -0.13521146528879752,
-0.1477889480532733, -0.15707513474089033,
-0.16383436360501102},
{2.6706518168752824, 3.962455121188538, 3.5486313535224463,
2.7615458100812114, 1.9932819546173088, 1.3625950500661181,
0.9015317085899737, 0.5818176218440886, 0.36286412676543944,
0.213544420455584, 0.1139760020735332, 0.04240896427925592,
-0.010734876216864309, -0.05028984474159651, -0.07990053509843151,
-0.10227845861628136, -0.12093128983051502, -0.13686188914013248,
-0.14925129118486463, -0.158371156241563, -0.16499186893943424},
{2.680164376125733, 3.9604144438026334, 3.5378189941204705,
2.747728985052379, 1.9792798885651788, 1.3501431616155368,
0.8912057766779621, 0.5734898076879603, 0.35619032255045363,
0.20820309134918308, 0.1096311247282208, 0.03878157158999667,
-0.013798997041443165, -0.05290524115778229, -0.08215605296885463,
-0.10426389099389288, -0.12274800169832051, -0.13849467553355513,
-0.15069707219685216, -0.1596521699065183, -0.16613589795944572},
{2.6896361070374475, 3.9582948615172864, 3.526982251810836,
2.7339371101430423, 1.9653331816890591, 1.3377636683328564,
0.8809541409880949, 0.5652303397309687, 0.349576218726613,
0.20291341820710349, 0.1053288506085382, 0.03519046445700258,
-0.01683180823509665, -0.05549343606153593, -0.08438778415442295,
-0.10623009812228457, -0.12454714072997966, -0.1401099804139652,
-0.1521264676578165, -0.16091835036568858, -0.16726661249423833},
{2.6990667517182674, 3.956096940049043, 3.5161218155991705,
2.7201705095761213, 1.951441911905263, 1.325456336618168,
0.8707763634191359, 0.557038697096795, 0.343021289005657,
0.1976748932251394, 0.10106873597225294, 0.031635259055768715,
-0.019833648000832663, -0.05805472873718792, -0.08659599393156768,
-0.10817736905433034, -0.1263288426673872, -0.14170795918715925,
-0.153539652771313, -0.16216987031152377, -0.16838417230415165},
{2.7084560559823, 3.95382124494009, 3.5052383678835524,
2.706429500779298, 1.9376061520785368, 1.3132209301470483,
0.8606720064610353, 0.5489143618415414, 0.33652501132128254,
0.1924870127992031, 0.0968503420298646, 0.0281155759596887,
-0.02280485056073922, -0.060589414850914694, -0.08878094432298489,
-0.11010598432638137, -0.12809324096760066, -0.14328876671387702,
-0.1549368013645021, -0.16340690050856882, -0.16948873510366957},
{2.7178037693386807, 3.9514683415050866, 3.494332584484805,
2.6927143945161145, 1.9238259700878246, 1.3010572099506237,
0.8506406332428943, 0.540856818964219, 0.33008686780983354,
0.18734927752490552, 0.09267323488968124, 0.024631040087079566,
-0.025745746205850677, -0.06309778649780393, -0.09094289418038964,
-0.11201621583877545, -0.129840467006959, -0.14485255730227034,
-0.15631808587740179, -0.1646296098035846, -0.17058045658443105},
{2.7271096449800396, 3.949038794778886, 3.483405134677174,
2.679025495015089, 1.9101014288915803, 1.2889649344944234,
0.8406818075796633, 0.5328655564163941, 0.32370634479064186,
0.18226119219659973, 0.08853698550337101, 0.021181280648827155,
-0.028656661345381994, -0.06558013224829048, -0.09308209930468046,
-0.11390832678985979, -0.13157065027172346, -0.1463994846989992,
-0.15768367735278588, -0.16583816513619262, -0.17165949043824608},
{2.736373439770719, 3.9465331694651637, 3.4724566812193878,
2.665363100096837, 1.896432586592616, 1.2769438597560392,
0.8307950940175836, 0.5249400651110218, 0.31738293274603646,
0.17722226580582565, 0.0844411696119843, 0.017765931096652997,
-0.031537918555329655, -0.06803673719395709, -0.09519881261995958,
-0.11578257166002101, -0.13328391853561805, -0.14792970207911643,
-0.15903374542672605, -0.16703273155000087, -0.17272598838008257},
{2.745594914234696, 3.9439520298859336, 3.461487880386066,
2.6517275012991015, 1.8828194965025062, 1.2649937393015986,
0.8209800578784086, 0.5170798389304793, 0.3111161263010394,
0.17223201153910003, 0.08038536769245401, 0.014384629071990982,
-0.03438983662645418, -0.07046788299272275, -0.0972932844151354,
-0.11763919624196886, -0.13498039802469802, -0.14944336203492897,
-0.16036845831982233, -0.16821347220420743, -0.17378010017103554},
{2.7547738325432647, 3.9412959399319325, 3.450499381999478,
2.638118983999706, 1.8692622072055372, 1.253114324361067,
0.8112362653024199, 0.5092843747338256, 0.30490542420275785,
0.16728994677500544, 0.07636916490457134, 0.011037016355472943,
-0.03721273061164788, -0.07287384791341772, -0.09936576266075509,
-0.11947843771332171, -0.1366602135699786, -0.15094061656395977,
-0.16168798282910626, -0.16938054838563743, -0.17482197364124352},
{2.763909962502445, 3.9385654630138878, 3.4394918294616272,
2.6245378275373623, 1.855760762622212, 1.241305363902394,
0.8015632832902658, 0.501553172363305, 0.29875032929949197,
0.16239559308053772, 0.07239215103843902, 0.0077227388170148705,
-0.040006911872694104, -0.07525490687975497, -0.10141649340064099,
-0.12130052474746679, -0.1383234887482719, -0.15242161705615268,
-0.16299248432063887, -0.1705341195211983, -0.17585175471275138},
{2.7730030755401605, 3.9357611620146513, 3.4284658597866633,
2.6109843053303203, 1.842315202072327, 1.2295666047045117,
0.7919606797436483, 0.4938857346501151, 0.29265034851956834,
0.15754847620667406, 0.06845392046240448, 0.004441446366498647,
-0.042772688126430224, -0.07761133151371108, -0.1034457212094192,
-0.12310567765866189, -0.13997034601168287, -0.1538865142804447,
-0.16428212672280879, -0.17167434319072813, -0.17686958742230435},
{2.782052946693145, 3.9328835992421545, 3.4174221036335735,
2.59745868499283, 1.8289255603375825, 1.217897791429194,
0.7824280235048638, 0.4862815674194558, 0.28660499284991514,
0.15274812608313668, 0.06455407207146888, 0.0011927929050445148,
-0.04551036349031524, -0.07994339017831498, -0.10545368969952448,
-0.12489410857738571, -0.14160090680619913, -0.15533545837080787,
-0.16555707252032245, -0.17280137514020982, -0.1778756139440591},
{2.7910593545936373, 3.9299333363832516, 3.4063611853391884,
2.5839612284494047, 1.8155918677237826, 1.2062986666918036,
0.772964884395248, 0.47874017949488396, 0.2806137773143927,
0.1479940768123259, 0.06069220923617784, -0.002023563723133283,
-0.04822023852741468, -0.08225134801986367, -0.10744064205578699,
-0.1266660216520638, -0.14321529167982158, -0.1567685988118768,
-0.16681748274890343, -0.1739153692953301, -0.178869974612207},
{2.800022081455819, 3.926910934458361, 3.3952837229514476,
2.5704921920468604, 1.8023141501225823, 1.1947689711309208,
0.7635708332525157, 0.4712610827019861, 0.2746762209518874,
0.1432858666624049, 0.05686793975198866, -0.0052079617782897075,
-0.05090261029080523, -0.08453546700956271, -0.10940682157265712,
-0.1284216132734266, -0.1448136203806657, -0.15818608442424706,
-0.16806351699068017, -0.17501647777536045, -0.17985280794349207},
{2.8089409130620435, 3.923816953776962, 3.38419032826294,
2.557051826664135, 1.7890924290728076, 1.1833084434768815,
0.7542454419670407, 0.4638437918713913, 0.2687918467941919,
0.13862303805952386, 0.05308087578911639, -0.008360735672141552,
-0.0535577723674095, -0.08679600598460459, -0.11135247216854544,
-0.13016107231794427, -0.14639601194548701, -0.15958806334953665,
-0.16929533337027214, -0.17610485090733632, -0.18082425065961957},
{2.8178156387488134, 3.9206519538938776, 3.373081606844678,
2.5436403778198593, 1.7759267218213388, 1.171916820619222,
0.7449882835170853, 0.45648782484113953, 0.26296018184367065,
0.13400513757917132, 0.04933063384285907, -0.011482216014291193,
-0.05618601492126775, -0.08903322068869271, -0.11327783885332009,
-0.13188458040697565, -0.14796258477908586, -0.16097468303529544,
-0.17051308855156252, -0.17718063724051478, -0.18178443770954547},
{2.8266460513925886, 3.9174164935664155, 3.3619581580801454,
2.530258085777717, 1.7628170413835729, 1.1605938376730616,
0.7357989320030001, 0.4491927024584268, 0.2571807570507344,
0.12943171593665184, 0.04561683468439745, -0.014572729658089908,
-0.05878762473624953, -0.0912473638120148, -0.11518316812821827,
-0.13359231217848494, -0.14951345672506638, -0.16234609021982344,
-0.17171693773514704, -0.17824398356108873, -0.18273350229163499},
{2.8354319473953247, 3.914111130712246, 3.350820575199528,
2.516905185649534, 1.7497633966034376, 1.1493392280444048,
0.7266769626804167, 0.44195794858073856, 0.2514531072911272,
0.12490232797668217, 0.04193910331207303, -0.017632599745944368,
-0.06136288525821941, -0.09343868503067776, -0.11706870830173224,
-0.13528443556840808, -0.15104874512843786, -0.16370243091697328,
-0.17290703465645405, -0.17929503490713813, -0.1836715758756867},
{2.844173126669844, 3.9107364223681285, 3.339669445314199,
2.5035819074961716, 1.7367657922129953, 1.138152723494408,
0.7176219519924553, 0.43478309007639104, 0.24577677134304118,
0.12041653266211538, 0.03829706890314094, -0.020662145754073546,
-0.06391207663665464, -0.09560743104560675, -0.11893470970989824,
-0.13696111209897702, -0.15256856689056314, -0.165043850400986,
-0.17408353158452208, -0.18033393458379654, -0.18459878822481146},
{2.8528693926249984, 3.907292924649396, 3.328505349451388,
2.490288476426173, 1.7238242288916015, 1.1270340542025952,
0.7086334776009585, 0.427667656824501, 0.2401512918640701,
0.11597389306179268, 0.03469036476599651, -0.023661683536720778,
-0.06643547576572895, -0.09775384562091856, -0.1207814248343786,
-0.13862249717154435, -0.1540730385169713, -0.16637049319141214,
-0.17524657932142013, -0.18136082417861585, -0.18551526741715935},
{2.8615205521506093, 3.903781192710207, 3.317328862589046,
2.477025112692203, 1.7109387033246464, 1.1159829488290438,
0.699711118416783, 0.4206111817143902, 0.23457621536800943,
0.11157397633753102, 0.03111862829287543, -0.02663152536982795,
-0.06893335632486769, -0.09987816962177706, -0.12260910831643307,
-0.14026874036168469, -0.15556227615854776, -0.16768250303816976,
-0.17639632720230508, -0.18237584357711276, -0.1864211398674934},
{2.8701264156022623, 3.900201780704593, 3.3061405536909017,
2.4637920317853, 1.6981092082618603, 1.1049991345755537,
0.690854454629155, 0.4136132006444506, 0.2290510922015163,
0.10721635373026105, 0.027581500913025234, -0.02957197999417581,
-0.07140598881877393, -0.10198064105173332, -0.12441801686906387,
-0.1418999857145549, -0.1570363956466226, -0.16898002290676278,
-0.17753292309608934, -0.18337913097847353, -0.1873165303485937},
{2.8786867967858685, 3.896555241748232, 3.294940985741687,
2.4505894445269285, 1.6853357325752, 1.094082337245801,
0.6820630677341162, 0.4066732525204791, 0.22357547652063822,
0.10290060054532373, 0.02407862804634667, -0.03248335265799892,
-0.0738536406169455, -0.10406149508956417, -0.12620840909316294,
-0.14351637203873632, -0.15849551252246447, -0.17026319496371575,
-0.17865651340671754, -0.18437082291140694, -0.1882015620124999},
{2.8872015129420734, 3.892842127880991, 3.283730715782515,
2.437417557158876, 1.6726182613162965, 1.0832322813044903,
0.6733365405620763, 0.3997908792534983, 0.21814892626721927,
0.09862629613694174, 0.020609659057504368, -0.03536594515907597,
-0.07627657599267536, -0.10612096412560937, -0.12798054520626356,
-0.1451180331969632, -0.15993974206167083, -0.17153216056223744,
-0.17976724307502262, -0.18535105425012427, -0.18907635641157386},
{2.8956703847304763, 3.889062990030208, 3.2725102949464193,
2.4242765714310073, 1.65995677577348, 1.0724486899355201,
0.6646744573044877, 0.3929656257570804, 0.21277100314519617,
0.09439302389188561, 0.017174247210503285, -0.0382200558863071,
-0.07867505616155071, -0.108159277797618, -0.12973468669456772,
-0.14670509839235385, -0.1613691992939294, -0.1727870602281519,
-0.1808652555811526, -0.18631995823043088, -0.18994103351938604},
{2.9040932362136824, 3.885218377974696, 3.2612802684940365,
2.4111666846868895, 1.6473512535283816, 1.061731285099158,
0.6560764035396647, 0.3861970399441848, 0.20744127259678882,
0.09020037121234706, 0.013772049623732343, -0.04104597986077964,
-0.08104933931945496, -0.11017666302610989, -0.13147109590024664,
-0.14827769244894157, -0.16278399901860252, -0.1740280336461256,
-0.18195069294754865, -0.18727766646591837, -0.1907957117514188},
{2.912469894841189, 3.8813088403094924, 3.2500411758494185,
2.3980880899473376, 1.6348016685120956, 1.0510797875882498,
0.64754196625776, 0.3794846727235292, 0.20215930377860006,
0.08604792949804593, 0.010402727225468074, -0.04384400877633047,
-0.08339968068007825, -0.11217334404925929, -0.13319003555673553,
-0.14983593608546675, -0.16418425581655816, -0.1752552196462085,
-0.18302369574245717, -0.18822430896423903, -0.19164050798558452},
{2.920800191433102, 3.877334924411301, 3.238793550635961,
2.3850409759918683, 1.622307991060925, 1.040493917083458,
0.6390707338849164, 0.3728280779955003, 0.19692466953762772,
0.0819352941275856, 0.007065944709842821, -0.046614431039608294,
-0.08572633251194275, -0.11414954245730659, -0.13489176828489105,
-0.1513799461815626, -0.16557008405863466, -0.1764687561907172,
-0.18408440308395596, -0.1891600141434495, -0.19247553758254984},
{2.9290839601636955, 3.873297176404651, 3.2275379207124537,
2.372025527438129, 1.6098701879716892, 1.029973392207547,
0.6306622963066117, 0.3662268126476243, 0.1917369463872003,
0.07786206443908435, 0.0037613704932711566, -0.04935753180964303,
-0.08802954417494889, -0.11610547722650245, -0.1365765560626019,
-0.1529098360356054, -0.16694159791110902, -0.17766878036147726,
-0.18513295264447255, -0.1900849088484099, -0.19330091440586844},
{2.937321038544835, 3.869196141128775, 3.21627480820924,
2.359041924819315, 1.5974882225566094, 1.0195179305787248,
0.6223162448902143, 0.3596804365496101, 0.18659571448284662,
0.07382784371010409, 0.0004886766713323651, -0.05207359303692742,
-0.09030956215644838, -0.11804136475259572, -0.13824465967979607,
-0.15442571561363838, -0.1682989113385036, -0.17885542834745016,
-0.1861694806557864, -0.19099911836722872, -0.194116750841917},
{2.94551126740922, 3.865032362105139,
3.2050047295644517, 2.346090344659587,
1.585162054697756, 1.0091272488630345,
0.6140321725067591, 0.35318851254797007,
0.1815005575980999, 0.06983223913689618,
-0.0027524610238902937, -0.0547628935020162,
-0.09256663010685368, -0.11995741888386725,
-0.13989633818987773, -0.15592769178891108,
-0.16964213810402756, -0.18002883543276071,
-0.18719412191448392, -0.1919027664477357,
-0.19492315781962954},
{2.9536544908935176, 3.8608063815057028, 3.1937281955603636,
2.3331709595475734, 1.5728916409010794, 0.9988010628258354,
0.6058096735519699, 0.34675060646024547, 0.17645106310025535,
0.06587486181299892, -0.005962363266018142, -0.057425708853649386,
-0.09480098887478318, -0.121853850953717, -0.14153184836753707,
-0.15741586857166706, -0.17097139176794066, -0.1811891359851434,
-0.1882070097878568, -0.1927959753139798, -0.19572024483003514},
{2.961750556421323, 3.856518740121807, 3.1824457113597897,
2.3202839382079197, 1.5606769343499935, 0.9885390873823409,
0.5976483439665328, 0.34036628706883393, 0.17144682192608654,
0.06195532670719948, -0.009141347176136015, -0.06006231164640364,
-0.09701287654175386, -0.12373086981281171, -0.1431514441816721,
-0.15889034732893792, -0.1722867856840763, -0.18233646344482635,
-0.1892082762202183, -0.19367886568273143, -0.1965081199455883},
{2.9697993146860138, 3.852169977333772, 3.171157776542582,
2.3074294455709894, 1.5485178849585457, 0.978341036647261,
0.5895477812556462, 0.3340351261144415, 0.16648742855756068,
0.05807325264089545, -0.012289726364102246, -0.06267297137787654,
-0.09920252845642429, -0.12558868186079694, -0.144755376290905,
-0.16035122699417237, -0.17358843299475277, -0.18347095031386254,
-0.19019805173962137, -0.19455155677998492, -0.1972868898392929},
{2.97780061963345, 3.84776063108113, 3.1598648851421762,
2.2946076428406976, 1.5364144394241412, 0.9682066239835332,
0.5815075845078497, 0.3277566982891674, 0.16157248099763963,
0.05422826226487803, -0.0154078109694128, -0.06525795452541137,
-0.10137017726839434, -0.12742749107758064, -0.1463438915679191,
-0.16179860426662343, -0.17487644662427404, -0.18459272814592864,
-0.19117646546495848, -0.19541416635744893, -0.19805665980362278},
{2.9857543284445662, 3.8432912378335113, 3.1485675256821906,
2.281818687560543, 1.5243665412798448, 0.9581355620501574,
0.5735273544131647, 0.3215305812292328, 0.15670158074634624,
0.05041998203556107, -0.01849590770162323, -0.06781752458236641,
-0.10351605296156877, -0.1292474990541954, -0.14791723265761741,
-0.16323257380048245, -0.17615093927119638, -0.1857019275366006,
-0.19214364511342824, -0.1962668107090145, -0.19881753376923106},
{2.9936603015178203, 3.8387623325621867, 3.1372661812130835,
2.269062733677871, 1.5123741309462455, 0.9481275628491478,
0.5656066932805395, 0.31535635550736546, 0.15187433277742737,
0.04664804219068645, -0.021554319880329922, -0.07035194209393142,
-0.10564038288708705, -0.13104890502324262, -0.14947563757293886,
-0.16465322838381014, -0.17741202339952342, -0.18679867811411588,
-0.193099717008345, -0.19710960468719682, -0.1995696143234524},
{3.0015184024515436, 3.834174448712227, 3.125961329348838,
2.256339931606386, 1.500437145782891, 0.9381823377716041,
0.5577452050546323, 0.30923360462485316, 0.14709034551609834,
0.04291207672452722, -0.02458334747471324, -0.07286146469250333,
-0.10774339179583074, -0.13283190588892757, -0.15101933933109982,
-0.1660606591073737, -0.17865981122897018, -0.18788310853063628,
-0.1940448060872796, -0.1979426617195333, -0.20031300272859515},
{3.0093284980261656, 3.82952811817531, 3.1146534423036925,
2.243650428286987, 1.4885555201392915, 0.9282995976429143,
0.5499424953319361, 0.3031619150032733, 0.14234923081853312,
0.039211723362617315, -0.02758328714264617, -0.07534634713261501,
-0.10982530187050502, -0.13459669625668635, -0.15254856563203842,
-0.1674549555235431, -0.17989441472442325, -0.18895534645401335,
-0.19497903591050528, -0.19876609382493765, -0.20104779894001987},
{3.0170904581863276, 3.824823871263133, 3.103342986928884,
2.230994367246917, 1.4767291854054836, 0.9184790527670991,
0.5421981713762547, 0.29714087597591377, 0.13765060395387946,
0.03554662353603415, -0.030554432269369894, -0.07780684132543396,
-0.11188633275730875, -0.13634346846241419, -0.15406353857997707,
-0.16883620579544067, -0.1811159455847134, -0.19001551856006293,
-0.19590252866974026, -0.19958001162999733, -0.20177410162400936},
{3.0248041560229, 3.820062236681453, 3.092030424749424,
2.2183718886573147, 1.464958070062168, 0.9087204129703043,
0.5345118421335626, 0.2911700797788911, 0.1329940835896346,
0.03191642235525564, -0.03349707300574049, -0.08024319637282895,
-0.11392670159719605, -0.13807241260130199, -0.15556447444824323,
-0.17020449683657976, -0.1823245152308029, -0.1910637505253646,
-0.1968154051971663, -0.20038452438521182, -0.20249200817542853},
{3.0324694677548782, 3.8152437415047005, 3.0807162120008638,
2.20578312938916, 1.4532420997304039, 0.8990233876434438,
0.5268831182462347, 0.2852491215419784, 0.128379291781198,
0.028320768583622855, -0.03641149630604897, -0.08265565860100949,
-0.11594662305672743, -0.13978371655627897, -0.1570515834868309,
-0.17155991444123683, -0.18352023479347418, -0.19210016702056754,
-0.19771778497470144, -0.2011797399811579, -0.20320161473516785},
{3.0400862727112097, 3.8103689111512367, 3.069400799666103,
2.1932282230676936, 1.441581197220882, 0.8893876857840267,
0.5193116120666839, 0.279377599279155, 0.12380585396629179,
0.024759314610427838, -0.03929798596541799, -0.08504447159374845,
-0.11794630935853073, -0.14147756602607858, -0.15852506977163627,
-0.17290254340585565, -0.18470321510061125, -0.19312489170423153,
-0.19860978614352404, -0.2019657649645845, -0.2039030162073818},
{3.0476544533124823, 3.805438269359159, 3.0580846335121525,
2.1807073001253117, 1.4299752825827503, 0.8798130160371389,
0.5117969376704026, 0.2735551138788809, 0.11927339896475561,
0.02123171642365415, -0.042156822656777324, -0.08740987622518605,
-0.11992597031135893, -0.14315414455293693, -0.15998513109382936,
-0.17423246764176048, -0.1858735666641357, -0.19413804721717615,
-0.19949152551381508, -0.20274270455442145, -0.2045963062765106},
{3.0551738950525764, 3.800452338162716, 3.0467681541269296,
2.1682204878530094, 1.4184242731520118, 0.8702990867356307,
0.5043387108684286, 0.26778126909411654, 0.1147815589839731,
0.01773763358239591, -0.04498828396742222, -0.08975211069222573,
-0.12188581333976513, -0.14481363355006324, -0.16143195888747383,
-0.17554977027949914, -0.18703139966667914, -0.19513975517735713,
-0.20036311857471872, -0.20351066265770376, -0.205281577424094},
{3.0626444864801754, 3.7954116378692766, 3.035451796956008,
2.1557679104503755, 1.406928083599488, 0.8608456059394826,
0.49693654921924657, 0.2620556715320832, 0.11032996962990463,
0.014276729188973207, -0.047792644435156934, -0.09207141054652482,
-0.12382604351339316, -0.1464562123295073, -0.16286573819320715,
-0.17685453376511936, -0.18817682394804058, -0.1961301361752585,
-0.20122467950449718, -0.2042697418854022, -0.20595892094537546},
{3.070066119180232, 3.7903166870368823, 3.0241359923393736,
2.1433496890742165, 1.3954866259783403, 0.8514522814743861,
0.4895900720401355, 0.25637793064378744, 0.10591826992342115,
0.010848669860774627, -0.05057017558402639, -0.09436800872608378,
-0.1257468635758856, -0.14808205813235922, -0.1642866476555927,
-0.17814683994867722, -0.18930994899149317, -0.19710930976979588,
-0.20207632118086855, -0.2050200435681566, -0.20662842696569372},
{3.0774386877553437, 3.78516800245236, 3.0128211655481514,
2.130965941885813, 1.3840998097711692, 0.8421188209695372,
0.48229890041797385, 0.2507476587133073, 0.10154610232135534,
0.007453125701842596, -0.05332114595964238, -0.09664213558644438,
-0.127648473973425, -0.1496913461655792, -0.1656948595516099,
-0.1794267701652893, -0.19043088390998927, -0.19807739448473202,
-0.2029181551915158, -0.20576166777190788, -0.2072901844566701},
{3.0847620898070334, 3.7799660991099677, 3.0015077368212775,
2.1186167840968646, 1.3727675419366645, 0.832844931894646,
0.4750626572195177, 0.2451644708468546, 0.09721311274145406,
0.004089770274228174, -0.056045821164100194, -0.09889401893149277,
-0.129531072882899, -0.15128424965266346, -0.1670905398476566,
-0.18069440530901182, -0.19153973743230593, -0.19903450780559026,
-0.20375029184474613, -0.2064947133134205, -0.20794428125218387},
{3.092036225916985, 3.774711490190605, 2.99019612140217,
2.106302328014156, 1.3614897269558253, 0.8236303215961908,
0.46788096710115684, 0.2396279849616217, 0.09291895059022376,
0.0007582805691341704, -0.0587444638904973, -0.10112388404388224,
-0.13139485623970537, -0.15286093990785515, -0.1684738482824123,
-0.18194982589984893, -0.19263661788918396, -0.19998076617706378,
-0.20457284018029612, -0.20721927777569524, -0.20859080406414104},
{3.099260999628191, 3.769404687041558,
2.9788867295753376, 2.09402268308299,
1.3502662668777548, 0.8144746973329057,
0.4607534565181698, 0.2341378217744183,
0.08866326879251771, -0.0025416630221352515,
-0.06141733395705064, -0.1033319537150745,
-0.13324001776519745, -0.15442158644456114,
-0.16984493847290494, -0.1831931121441859,
-0.1937216331994937, -0.20091628500091466,
-0.20538590798026546, -0.20793545752326859,
-0.20922983849804042},
{3.1064363174260445, 3.764046199156778, 2.9675799667029494,
2.081777955929407, 1.3390970613650004, 0.8053777663105284,
0.45367975373347796, 0.22869360479010942, 0.08444572382164055,
-0.005810376737395456, -0.06406468834082206, -0.10551844827500738,
-0.13506674899377535, -0.15596635712750806, -0.17120395804117763,
-0.18442434398894292, -0.1947948908564741, -0.20184117863434944,
-0.2061896017801692, -0.20864334771739146, -0.20986146906833245},
{3.11356208871936, 3.758636534157666, 2.9562762332613484,
2.069568250401243, 1.3279820077384807, 0.7963392357158048,
0.4466594888259164, 0.22329496028985954, 0.08026597572871023,
-0.009048173472960983, -0.06668678121104941, -0.1076835856213925,
-0.13687523929962686, -0.1574954183750007, -0.1725510487590071,
-0.1856436011697692, -0.1958564979140758, -0.2027555603888633,
-0.20698402688009584, -0.20934304233109033, -0.21048577921357606},
{3.1206382258213337, 3.753176197774397, 2.9449759248775136,
2.0573936676080633, 1.3169210010219627, 0.7873588127497706,
0.4396922936980317, 0.21794151731919334, 0.07612368817004692,
-0.012255362813160173, -0.06928386396208874, -0.10982758124864693,
-0.13866567592312212, -0.1590089354130221, -0.1738863467082276,
-0.18685096325358838, -0.1969065609734463, -0.20365954252954227,
-0.20776928735595532, -0.21003463416409723, -0.211102851311391},
{3.1276646439304683, 3.7476656938277526, 2.9336794323654627,
2.0452543059599857, 1.3059139339861128, 0.7784362046603172,
0.43277780208341443, 0.21263290767588028, 0.07201852843142183,
-0.015432251059973062, -0.07185618524597287, -0.1119506482764654,
-0.1404382439968683, -0.16050707257773586, -0.17520998245433084,
-0.18804650967583064, -0.1979451861695921, -0.20455323627481264,
-0.20854548607081858, -0.2107182148576595, -0.21171276669321343},
{3.1346412611114083, 3.742105524211426, 2.9223871417625773,
2.033150261205455, 1.2949606971921095, 0.7695711187740413,
0.4259156495535795, 0.20736876589764647, 0.06795016744809762,
-0.018579141262778983, -0.07440399100458775, -0.1140529974780389,
-0.1421931265714297, -0.16198999365799902, -0.17652208123112084,
-0.18923031977269084, -0.19897247915824479, -0.20543675179662968,
-0.20931272468632472, -0.2113938749092126, -0.21231560565884863},
{3.141567998275769, 3.7364961888748773, 2.9110994343658776,
2.0210816264679967, 1.2840611790348304, 0.7607632625274109,
0.41910547352440375, 0.2021487292497285, 0.06391827981973194,
-0.02169633324819285, -0.07692752450147017, -0.11613483730791939,
-0.14393050464071366, -0.16345786226548298, -0.17782276313435025,
-0.1904024728087427, -0.19998854510296146, -0.20631019822108626,
-0.21007110367415446, -0.21206170368692787, -0.2129114474908287},
{3.148444779162874, 3.730838185806623, 2.899816686768204,
2.0090484922819614, 1.273215265785596, 0.7520123434972316,
0.4123469132621261, 0.19697243771226722, 0.05992254381935157,
-0.024784123649981785, -0.07942702635323157, -0.11819637392954244,
-0.14565055716703043, -0.1649108422172898, -0.17911214332240108,
-0.1915630480002642, -0.20099348866248118, -0.20717368362943853,
-0.21082072232755816, -0.2127217894441219, -0.21350037046857542},
{3.155271530320489, 3.725132011018048, 2.8885392708943334,
1.997050946627332, 1.262422841634495, 0.7433180694304431,
0.4056396098889315, 0.1918395339675572, 0.05596264139577489,
-0.027842805939043695, -0.08190273456060881, -0.12023781124240301,
-0.14735346110583045, -0.16634909791468494, -0.18039033222221262,
-0.19271212453459946, -0.20198741397835632, -0.20802731505952698,
-0.21156167877292534, -0.21337421933352838, -0.21408245188236344},
{3.162048181085493, 3.719378158527671, 2.877267554037002,
1.9850890749635903, 1.2516837887322636, 0.7346801482732475,
0.39898320638811247, 0.18674966338715185, 0.05203825816902026,
-0.03087267045343379, -0.08435488453914862, -0.12225935090889849,
-0.1490393914301199, -0.16777279470167905, -0.18165743573880916,
-0.1938497815858971, -0.20297042466288212, -0.20887119850758604,
-0.21229406998139375, -0.21401907942143614, -0.21465776804709724},
{3.1687746635645095, 3.7135771203458954, 2.8660018988928555,
1.9731629602626952, 1.2409979872317491, 0.7260982881995781,
0.39237734760883414, 0.18170247401883463, 0.04814908341839774,
-0.03387400442842756, -0.08678370914952632, -0.12426119238083605,
-0.15070852115456554, -0.16918209918846216, -0.18291355546691995,
-0.1949760983275419, -0.2039426237873317, -0.20970543893042765,
-0.21301799178048617, -0.21465645470168368, -0.2152263943158924},
{3.175450912614521, 3.707729386460207, 2.8547426635982895,
1.9612726830412022, 1.2303653153289291, 0.7175721976389225,
0.3858216802704976, 0.1766976165734602, 0.0442948100631456,
-0.03684709202660188, -0.08918943872750493, -0.1262435329256118,
-0.1523610213592864, -0.1705771795268198, -0.18415878890332452,
-0.19609115394158583, -0.20490411387051433, -0.21053014024798583,
-0.2137335388657649, -0.21528642910951684, -0.21578840509347258},
{3.182076865823431, 3.701835444820841, 2.843490201765214,
1.9494183213915466, 1.2197856493035149, 0.7091015853035094,
0.3793158529667208, 0.17173474441167416, 0.04047513463561187,
-0.03979221436792163, -0.09157230111353647, -0.12820656765206723,
-0.15399706121334225, -0.17195820562738107, -0.1853932296586963,
-0.19719502762547195, -0.2058549968676624, -0.21134540534620821,
-0.21444080481250244, -0.21590908553530233, -0.2163438738493756},
{3.188652463490617, 3.6958957813268944, 2.8322448625167103,
1.9375999510125301, 1.2092588635591204, 0.7006861602148662,
0.37285951616894153, 0.1668135135305158, 0.03668975724711874,
-0.042709649559816876, -0.0939325216820081, -0.13015048953602137,
-0.1556168079979139, -0.17332534931151697, -0.18661696766783573,
-0.19828779859632067, -0.206795374159655, -0.21215133608028125,
-0.21513988208735266, -0.21652450583809765, -0.21689287313097497},
{3.1951776486074412, 3.6899108798128837, 2.8210069905225854,
1.9258176452390348, 1.1987848306630038, 0.6923256317297626,
0.36645232222964913, 0.16193358254991055, 0.03293838154676416,
-0.04559967272723191, -0.09627032337013967, -0.13207548944548836,
-0.15722042712919115, -0.1746787843937412, -0.18783008939733106,
-0.19936954609303725, -0.20772534654258598, -0.21294803327817352,
-0.21583086206002258, -0.217132770859079, -0.2174354745763187},
{3.201652366837747, 3.6838812220357315, 2.8097769260348273,
1.9140714750709904, 1.1883634213853855, 0.6840197095655405,
0.3600939253852626, 0.15709461269905672, 0.0292207146735094,
-0.04846255604264067, -0.09858592670653382, -0.13398175616558416,
-0.1588080821809646, -0.17601868669331852, -0.18903267804978052,
-0.20044034937647803, -0.2086450142176824, -0.21373559674449313,
-0.2165138350149374, -0.21773396043482565, -0.21797174892678778},
{3.2080765664983315, 3.677807287662203, 2.7985550049229473,
1.9023615092016348, 1.1779945047383416, 0.6757681038248549,
0.3537839817586502, 0.15229626780271516, 0.025536467202003088,
-0.05129856875600082, -0.10087954983938155, -0.13586947642312044,
-0.16037993490692412, -0.1773452339763591, -0.19022481376383493,
-0.20150028772788098, -0.2095544767815716, -0.21451412526463126,
-0.2171888901628869, -0.2183281534104552, -0.21850176603957228},
{3.2144501985394025, 3.671689554256745, 2.7873415587092163,
1.890687814045075, 1.1676779480142716, 0.6675705250198173,
0.3475221493613102, 0.14753821426740255, 0.021885353082637993,
-0.054107977224642556, -0.10315140856433047, -0.1377388349108984,
-0.1619361452626763, -0.17865860583187657, -0.19140657380942114,
-0.2025494404457766, -0.21045383321691039, -0.21528371660919332,
-0.2178561156526554, -0.21891542765261937, -0.2190255948999732},
{3.2207732165250156, 3.6655284972697557, 2.7761369146037707,
1.8790504537632036, 1.1574136168239468, 0.6594266840955662,
0.34130808809521573, 0.1428201210674985, 0.01826708957641149,
-0.05689104494307176, -0.10540171635201445, -0.13959001431169624,
-0.16347687142747297, -0.1799589834870438, -0.1925780327775964,
-0.20358788684153983, -0.21134318188336382, -0.21604446753869305,
-0.21851559858262093, -0.21949586006234845, -0.21954330363352545},
{3.2270455766135027, 3.659324590026266, 2.7649413955396254,
1.8674494902919603, 1.147201375134132, 0.6513362924532693,
0.3351414597543312, 0.1381416597312698, 0.014681397185180061,
-0.059648032572673704, -0.10763068437525146, -0.1414231953219627,
-0.1650022698256641, -0.1812465495682372, -0.1937392627645897,
-0.20461570623375916, -0.21222262050895718, -0.21679647380850364,
-0.219167425012327, -0.22006952658775297, -0.22005495951794965},
{3.2332672375378904, 3.6530783037150325, 2.7537553202075475,
1.855884983367006, 1.1370410853047979, 0.6432990619725623,
0.3290219280258131, 0.1335025043268147, 0.011127999577931622,
-0.06237919797130794, -0.10983852153591292, -0.14323855667521665,
-0.166512495147877, -0.18252148781537572, -0.19489033354964827,
-0.20563297794156768, -0.2130922461817825, -0.21753983017405407,
-0.21981167997401577, -0.22063650223658057, -0.22056062899493312},
{3.2394381605863107, 3.646790107378014, 2.742579003090811,
1.8443569905487909, 1.1269326081259041, 0.6353147050334418,
0.3229491584908965, 0.1289023314479374, 0.007606623513709578,
-0.06508479622277327, -0.11202543449146532, -0.14503627516515272,
-0.16800770037191734, -0.1837839827576105, -0.19603131276640073,
-0.2066397812770582, -0.21395215534207504, -0.2182746303962499,
-0.22044844748411785, -0.22119686108862288, -0.22106037768173675},
{3.245558309582401, 3.6404604679002635, 2.731412754499828,
1.8328655672470722, 1.1168758028537715, 0.6273829345376128,
0.3169228186254765, 0.12434082019995032, 0.004116998761816048,
-0.06776507966613966, -0.11419162768119284, -0.14681652566846778,
-0.1694880367834117, -0.1850342193586447, -0.19716226606750656,
-0.2076361955369147, -0.21480244377465746, -0.2190009672471206,
-0.22107781055470133, -0.22175067630798226, -0.2215542703826421},
{3.251627650865706, 3.634089850000192, 2.720256880606648,
1.8214107667448936, 1.10687052724704, 0.6195034639293093,
0.3109425778003981, 0.11981765218541757, 0.0006588580199232245,
-0.07042029792492607, -0.116337303352097, -0.14857948116739464,
-0.17095365399617446, -0.18627238263988413, -0.19828325728242407,
-0.2086222999933533, -0.21564320660175, -0.21971893251566366,
-0.2216998512048629, -0.22229802015518654, -0.22204237110022368},
{3.257646153272082, 3.6276787162202258, 2.7091116834793305,
1.809992640222044, 1.0969166376022081, 0.6116760072155907,
0.30500810728145206, 0.11533251148983721, -0.0027680631693076177,
-0.07305069793611707, -0.11846266158448518, -0.15032531277196293,
-0.17240469997232244, -0.18749865728934037, -0.19939434856819904,
-0.20959817388447488, -0.21647453827615395, -0.22042861701388983,
-0.22231465047207022, -0.2228389639991643, -0.22252474304646686},
{3.263613788114099, 3.621227526917838, 2.697977461116177,
1.7986112367780245, 1.0870139887887666, 0.6039002789861238,
0.29911908022909317, 0.11088508466726855, -0.006164026502517836,
-0.07565652397901004, -0.12056790031724435, -0.15205418974198218,
-0.17384132104212757, -0.1887132272637202, -0.20049560055320317,
-0.21056389640411308, -0.21729653257480214, -0.22113011058305096,
-0.22292228842344364, -0.2233735783290723, -0.2230014486537168},
{3.2695305291614423, 3.6147367402569484, 2.6868545074798282,
1.7872666034545392, 1.0771624342839146, 0.5961759944324604,
0.2932751716978791, 0.10647506072591223, -0.009529291000303296,
-0.07823801770387682, -0.12265321537280824, -0.15376627950875033,
-0.17526366192361598, -0.1899162753905446, -0.20158707247381888,
-0.21151954669124876, -0.2181092825926835, -0.2218235021000382,
-0.2235228441669776, -0.22390193276597958, -0.2234725495854737},
{3.2753963526213274, 3.6082068121996866, 2.675743112531231,
1.7759587852575354, 1.0673618262068738, 0.5885028693668207,
0.2874760586356453, 0.10210213111364116, -0.012864113091712676,
-0.08079541816043748, -0.12471880048182066, -0.15546174769649523,
-0.1766718657419195, -0.19110798297644233, -0.20266882230409586,
-0.212465203819064, -0.2189128807371374, -0.22250887948394535,
-0.22411639586269472, -0.22442409607440897, -0.22393810674702846},
{3.2812112371189266, 3.6016381964985347, 2.6646435622634517,
1.76468782517881, 1.057612015352795, 0.5808806202403886,
0.28172141988241645, 0.09776598970349341, -0.016168746698110102,
-0.08332896182613038, -0.1267648473074927, -0.15714075814354686,
-0.17806607404837246, -0.19228852942701502, -0.20374090687843208,
-0.21340094678369315, -0.21970741872251448, -0.22318632970277932,
-0.22470302073373113, -0.2249401361737321, -0.22439818029594216},
{3.2869751636777926, 3.5950313446887905, 2.6535561387353543,
1.7534537642172012, 1.0479128512262526, 0.5733089641611295,
0.2760109361690637, 0.09346633277912689, -0.019443443315968777,
-0.08583888263417636, -0.12879154546966648, -0.15880347292324834,
-0.17944642683937043, -0.19345809188291602, -0.20480338200738785,
-0.21432685449272307, -0.22049298756521066, -0.22385593878031437,
-0.2252827950773525, -0.22545012014942536, -0.22485282965237255},
{3.2926881157003174, 3.5883867060814203, 2.6424811201051397,
1.7422566413993839, 1.0382641820743508, 0.5657876189111377,
0.27034429011571576, 0.08920285902023709, -0.02268845209819807,
-0.08832541200143128, -0.13079908256858505, -0.16045005236460988,
-0.1808130625749889, -0.19461684487601835, -0.20585630258674012,
-0.21524300575350486, -0.22126967757906651, -0.2245177918030805,
-0.22585579427589592, -0.22595411426418383, -0.22530211350925314},
{3.298350078948171, 3.5817047277562137, 2.6314187806637137,
1.731096493800281, 1.0286658549194085, 0.5583163029635203,
0.2647211662299255, 0.08497526948795117, -0.025904019933642365,
-0.09078877885601261, -0.13278764420836417, -0.16208065507269806,
-0.1821661181973561, -0.1957649600087943, -0.20689972269991683,
-0.21614947926129752, -0.2220375783711293, -0.2251719729274668,
-0.2264220928076308, -0.22645218396889152, -0.22574608984231506},
{3.303961041522798, 3.5749858545553113, 2.620369390867936,
1.7199733565631228, 1.0191177155912656, 0.5508947354988326,
0.2591412509046027, 0.08078326761018936, -0.02909039152444653,
-0.09322920966470535, -0.13475741402018532, -0.16369543794878325,
-0.18350572914880103, -0.1969026056593578, -0.2079336957139867,
-0.2170463535873126, -0.2227967788377813, -0.22581856538694667,
-0.22698176425754674, -0.22694439391345736, -0.22618481591997291},
{3.309520993845907, 3.5682305290770535, 2.609333217373698,
1.7088872629191578, 1.0096196087591816, 0.5435226364210625,
0.25360423241571917, 0.07662655916701008, -0.03224780946100697,
-0.09564692846013345, -0.13670857368519682, -0.16529455621022635,
-0.18483202938976304, -0.1980299467139341, -0.20895827436936287,
-0.2179337071666709, -0.22354736716122003, -0.2264576514994001,
-0.22753488132805444, -0.2274308079575047, -0.22661834831305228},
{3.3150299286399765, 3.5614391916701384, 2.598310523068831,
1.6978382442070257, 1.0001713779633343, 0.5361997263731835,
0.24810980091978696, 0.07250485227593279, -0.03537651429427718,
-0.09804215686769663, -0.13864130295713717, -0.16687816341012432,
-0.1861451514164747, -0.19914714432795094, -0.20997351086342345,
-0.21881161828632242, -0.2242894308062996, -0.22708931267453306,
-0.22808151584960537, -0.22791148918092954, -0.2270467429043861},
{3.3204878409088154, 3.5546122804281404, 2.5873015671058863,
1.6868263298918278, 0.9907728656459424, 0.5289257267522739,
0.24265764845112434, 0.0684178573772446, -0.03847674460523499,
-0.1004151141322705, -0.14055577968468003, -0.16844641145671033,
-0.18744522627842236, -0.20025435571639874, -0.21097945692824321,
-0.2196801650729523, -0.225023056517717, -0.22771362942138812,
-0.2286217387912273, -0.22838649989431672, -0.22747005489826028},
{3.325894727918111, 3.5477502311843145, 2.5763066049347074,
1.6758515475838973, 0.9814239131819803, 0.5217003597242187,
0.23724746891890688, 0.06436528721929835, -0.04154873707134473,
-0.10276601714466295, -0.14245217983350347, -0.1699994506325129,
-0.18873238359557837, -0.20135173397362707, -0.2119761639026428,
-0.2205394254809034, -0.2257483303175475, -0.22833068135592932,
-0.2291556202709692, -0.22885590164922467, -0.2278883388297292},
{3.331250589176019, 3.5408534775067197, 2.5653258883348333,
1.6649139230572678, 0.9721243609095123, 0.5145233482379916,
0.23187895810401263, 0.06034685684379777, -0.04459272652989811,
-0.10509508046782799, -0.14433067750808937, -0.1715374296132779,
-0.1900067515754209, -0.2024394279223481, -0.21296368279876685,
-0.22138947728013977, -0.22646533750311737, -0.22894054720870194,
-0.2296832295662627, -0.2293197552483307, -0.2283016485737836},
{3.3365554264138044, 3.533922450693679, 2.554359665447717,
1.6540134802678992, 0.9628740481596467, 0.5073944160395406,
0.2265518136556723, 0.05636228357107998, -0.04760894603813081,
-0.10740251636283221, -0.14619144497325345, -0.17306049548665384,
-0.1912684570297296, -0.20351758199124462, -0.21394206436339022,
-0.22223039804427702, -0.2271741626452091, -0.22954330483255633,
-0.230204635124186, -0.2297781207554457, -0.2287100373543919},
{3.3418092435664586, 3.5269575797694896, 2.54340818080869,
1.6431502413716117, 0.9536728132860913, 0.5003132876852652,
0.2212657350879177, 0.05241128698539416, -0.05059762693005763,
-0.10968853481457277, -0.1480346526754089, -0.17456879377064521,
-0.1925176253911729, -0.20458633612030275, -0.2149113591341646,
-0.22306226513869892, -0.22787488958659852, -0.23013903121042523,
-0.2307199045716419, -0.23023105750539377, -0.229113557753402},
{3.347012046753409, 3.5199592914804905, 2.532471675378727,
1.6323242267417983, 0.9445204936943407, 0.4932796885551077,
0.21602042377584746, 0.04849358892017862, -0.053558998869990285,
-0.11195334355725044, -0.14986046926357183, -0.1760624684318411,
-0.19375438072968437, -0.2056458256927382, -0.21587161749099762,
-0.22388515570879072, -0.22856760144090857, -0.23072780246315908,
-0.23122910472544222, -0.23067862411376294, -0.2295122617193159},
{3.352163844259217, 3.512928010291382, 2.521550386575915,
1.6215354549868908, 0.9354169258704771, 0.4862933448652594,
0.21081558295170658, 0.04460891344334522, -0.05649328990271952,
-0.11419714809958781, -0.15166906161010404, -0.1775416619034107,
-0.19497884576862543, -0.20669618149218733, -0.21682288970275734,
-0.224699146668289, -0.2292523805917793, -0.23130969385739777,
-0.23173230160229522, -0.23112087848652343, -0.22990620057593109},
{3.357264646514344, 3.505864158381869, 2.5106445483066304,
1.6107839429676063, 0.9263619454095994, 0.47935398368049015,
0.20565091770078525, 0.040756986842565006, -0.0594007265003834,
-0.1164201517498033, -0.15346059483120406, -0.1790065151028828,
-0.19619114190075257, -0.20773752968370204, -0.21776522596949804,
-0.22550431468778975, -0.22992930869234554, -0.23188477981348532,
-0.23222956042870152, -0.23155787782951812, -0.2302954250308556},
{3.3623144660759223, 3.4987681556435652, 2.4997543909963698,
1.6000697058139786, 0.9173553870438735, 0.472461332926105,
0.2005261349571493, 0.036937537610565764, -0.06228153360604185,
-0.11862255564032954, -0.15523523230714148, -0.18045716744969795,
-0.1973913892039692, -0.20876999181695716, -0.2186986764603881,
-0.2263007361834087, -0.2305984666650076, -0.23245313391341313,
-0.23272094565075263, -0.2319896786578239, -0.23067998518389696},
{3.367313317608593, 3.4916404196772075, 2.4888801416202044,
1.5893927569421897, 0.9083970846702117, 0.4656151213995438,
0.1954409434991959, 0.033150296430439465, -0.06513593467401671,
-0.12080455875228512, -0.15699313570224543, -0.18189375688254883,
-0.19857970645689008, -0.2097936848500314, -0.2196232913475437,
-0.22708848730562692, -0.2312599347015017, -0.2330148289087907,
-0.23320652094383254, -0.23241633680498722, -0.23105993053532786},
{3.372261217865369, 3.484481365790139, 2.478022023732803,
1.578753108071209, 0.8994868713775862, 0.4588150787816172,
0.19039505394505207, 0.029394996160963135, -0.06796415170705748,
-0.12296635793969869, -0.15873446498464502, -0.18331641987650235,
-0.19975621115420067, -0.21080872119206176, -0.22053912083595634,
-0.2278676439283259, -0.23191379226324665, -0.23356993672883772,
-0.2336863492222245, -0.2328379074321359, -0.2314353099940266},
{3.3771581856685486, 3.4772914069940746, 2.4671802574979793,
1.5681507692392522, 0.890624579473971, 0.4520609356474008,
0.18538817874781163, 0.025671371821937832, -0.07076640529041266,
-0.12510814795347847, -0.16045937844576635, -0.1847252914599098,
-0.20092101952182562, -0.2118152087630665, -0.22144621518971913,
-0.22863828163802752, -0.2325601180819671, -0.23411852848838902,
-0.2341604926486178, -0.23325444503696227, -0.23180617188550065},
{3.3820042418906584, 3.470070954003149, 2.456355059717709,
1.5575857488200577, 0.8818100405129214, 0.44535242347677684,
0.1804200321906138, 0.02197916057954281, -0.0735429146229025,
-0.12723012146514162, -0.16216803271959118, -0.18612050523111082,
-0.20207424653194156, -0.2128132510692464, -0.22234462475476074,
-0.22940047572335506, -0.23319899016058493, -0.2346606744959136,
-0.23462901264351776, -0.23366600346259067, -0.23217256395978836},
{3.3867994094354557, 3.4628204152322404, 2.445546643860572,
1.5470580535390137, 0.8730430853197964, 0.4386892746646487,
0.17549033038158182, 0.01831810173171442, -0.07629389754508589,
-0.12933246909028992, -0.1638605828016739, -0.18750219337492574,
-0.20321600591801117, -0.21380294729208366, -0.22323439997829128,
-0.23015430116471958, -0.23383048577436416, -0.23519644426153447,
-0.23509196989455522, -0.2340726359063151, -0.23253453339924512},
{3.3915437132189696, 3.4555401967955595, 2.434755220089564,
1.5365676884891115, 0.8643235440176092, 0.4320712225308204,
0.17059879124860777, 0.01468793669354711, -0.0790195705646393,
-0.13141537941184306, -0.16553718206792967, -0.18887048667894749,
-0.20434641019054914, -0.21478439238962754, -0.22411559142518642,
-0.23089983262425415, -0.23445468147230805, -0.2357259065050537,
-0.2355494243657004, -0.23447439492822417, -0.23289212682621396},
{3.396237180150599, 3.4482307025055388, 2.4239809952892255,
1.526114657146765, 0.8556512460525395, 0.4254980013295518,
0.1657451345340031, 0.011088408982717426, -0.08172014887906089,
-0.13347903900302882, -0.16719798229318628, -0.190225514549631,
-0.20546557065541166, -0.21575767720839284, -0.22498824979151197,
-0.23163714443599992, -0.2350716530787938, -0.23624912916397137,
-0.23600143530637593, -0.2348713324597032, -0.23324539031058183},
{3.4008798391142387, 3.4408923338719526, 2.4132241730920434,
1.5156989613874778, 0.8470260202190726, 0.41896934625879584,
0.160929081789009, 0.007519264204938914, -0.08439584639582003,
-0.13552363245012716, -0.16884313366951037, -0.19156740502818337,
-0.20657359743803683, -0.21672288860437314, -0.22585242591541502,
-0.23236631059635518, -0.2356814756954419, -0.2367661794014998,
-0.23644806126047085, -0.23526349981182026, -0.23359436937722616},
{3.4054717209494836, 3.433525490101353, 2.4024849539040862,
1.505320601501382, 0.8384476946848034, 0.4124849934691275,
0.15615035636817676, 0.003980250039444116, -0.08704687575008357,
-0.13754934237497662, -0.17047278482430772, -0.19289628480626023,
-0.2076705995188374, -0.21768010957174805, -0.2267081707855898,
-0.23308740475480078, -0.23628422370320423, -0.2372771236145641,
-0.2368893600752558, -0.23565094768359673, -0.23393910901334813},
{3.41001285843286, 3.426130568096741, 2.3917635349298165,
1.494979576208647, 0.8299160970148818, 0.40604468007236,
0.1514086834236215, 0.000471116224498868, -0.08967344832013677,
-0.13955634945723747, -0.17208708283819804, -0.19421227924146311,
-0.20875668478619747, -0.21862941937793476, -0.22755553554751323,
-0.233800500204905, -0.236879970764668, -0.23778202744178778,
-0.2373253889101981, -0.23603372617016075, -0.23427965367569945},
{3.414503286259125, 3.4187079624575296, 2.3810601101960667,
1.484675882674767, 0.8214310541961142, 0.3996481441498698,
0.14670378989914892, -0.0030083854570473467, -0.09227577424064178,
-0.14154483245641802, -0.17368617326267224, -0.19551551237264986,
-0.20983196011381466, -0.21957089370373528, -0.22839457150767262,
-0.2345056698756186, -0.23746878982656175, -0.23828095577145963,
-0.23775620424567862, -0.23641188477078887, -0.2346160472977006},
{3.4189430410226267, 3.4112580654797786, 2.3703748705751435,
1.4744095165257374, 0.8129923926607292, 0.39329512476061934,
0.14203540452426827, -0.006458501192181372, -0.0948540624138553,
-0.14351496823366683, -0.17527020013753244, -0.19680610693505768,
-0.21089653146814866, -0.22050460478739914, -0.22922533013595406,
-0.23520298632286848, -0.23805075312246413, -0.23877397274948287,
-0.23818186189161278, -0.236785472396839, -0.2349483332964581},
{3.4233321611986818, 3.4037812671566643, 2.359708003807009,
1.4641804718631104, 0.8045999383097874, 0.38698536194889427,
0.13740325780808288, -0.009879475152104309, -0.09740852051893915,
-0.14546693177332592, -0.17683930600811454, -0.19808418437523337,
-0.21195050404966312, -0.22143062157151983, -0.23004786306638036,
-0.23589252172144126, -0.23862593217569256, -0.2392611417872898,
-0.23860241699596457, -0.23715453737956357, -0.23527655457966976},
{3.4276706871250724, 3.396277955179273, 2.3490596945206006,
1.4539887412789616, 0.7962535165362715, 0.3807185967517584,
0.13280708203307393, -0.013271549506573197, -0.09993935501949536,
-0.1474008962042569, -0.17839363194230407, -0.19934986486578754,
-0.2129939824687521, -0.22234900985177067, -0.2308622220963734,
-0.23657434785717738, -0.23919439780237714, -0.2397425255697388,
-0.2390179240531714, -0.23751912747782533, -0.23560075355243704},
{3.4319586609835344, 3.3887485149376033, 2.338430124254173,
1.443834315870741, 0.78795295224783, 0.3744945712062273,
0.12824661124877487, -0.016634964438200717, -0.10244677116944557,
-0.14931703282092953, -0.17993331754733619, -0.20060326731996048,
-0.21402707095410803, -0.22325983242656114, -0.23166845918468473,
-0.23724853611945443, -0.2397562201147011, -0.24021818606297168,
-0.23942843691246413, -0.23787928988569387, -0.23592097212396962},
{3.4361961267813665, 3.3811933295218894, 2.327819471474775,
1.4337171852560489, 0.7796980698891941, 0.3683130283561767,
0.1237215812653403, -0.01996995815671295, -0.10493097301739236,
-0.1512155111042865, -0.18145850098639543, -0.20184450940601328,
-0.2150498735883708, -0.22416314924679487, -0.2324666264481592,
-0.23791515749398084, -0.24031146852430874, -0.24068818452224283,
-0.23983400878609282, -0.2382350712399442, -0.23623725171419685},
{3.4403831303330437, 3.373612779724145, 2.317227911596781,
1.4236373375872968, 0.7714886934642632, 0.3621737122589738,
0.11923172964701703, -0.023276766913166352, -0.10739216340957437,
-0.15309649874237868, -0.18296931899500707, -0.20307370756144041,
-0.2160624945634551, -0.22505901756497354, -0.23325677615744655,
-0.2385742825558816, -0.24086021174586322, -0.24115258149970858,
-0.24023469225745459, -0.23858651762744454, -0.23654963326027456},
{3.444519719241932, 3.3660072440399906, 2.306655616999544,
1.413594759566305, 0.7633246465578654, 0.3560763679918549,
0.11477679570551534, -0.02655562501411368, -0.10983054399153899,
-0.15496016165077453, -0.18446590689722936, -0.20429097700700732,
-0.2170650384462431, -0.2259474920829799, -0.23403896073180103,
-0.2392259814630812, -0.2414025178007546, -0.24161143685217887,
-0.24063053928912087, -0.23893367459244272, -0.2368581572230045},
{3.448605942882049, 3.3583770986707546, 2.2961027570441797,
1.4035894364588053, 0.7552057523571984, 0.350020741658041,
0.11035652049328731, -0.02980676483573034, -0.11224631520865201,
-0.1568066639927494, -0.18594839862164844, -0.20549643176061835,
-0.21805761044444977, -0.22682862509794838, -0.23481323273307336,
-0.23987032394997984, -0.24193845402094732, -0.24206480974882894,
-0.2410216012307748, -0.2392765871437504, -0.23716286359315092},
{3.452641852379898, 3.35072271752582, 2.2855694980895063,
1.393621352108872, 0.7471318336729508, 0.344006580392604,
0.10597064679671601, -0.033030416837886545, -0.1146396763055462,
-0.15863616819924767, -0.18741692671717153, -0.20669018465101033,
-0.21904031666232335, -0.22770246664568877, -0.23557964485899086,
-0.24050737932141558, -0.24246808705295544, -0.242512758678866,
-0.2414079288270463, -0.23961529976182275, -0.23746379189767058},
{3.4566275005963405, 3.34304447222522, 2.275056003507181,
1.3836904889532686, 0.7391027129600997, 0.3380336323680873,
0.1016189191292172, -0.03622680957817383, -0.11701082532462583,
-0.16044883498862875, -0.18887162236863395, -0.20787234733128082,
-0.22001326433645638, -0.2285690646412101, -0.23633824993583225,
-0.24113721644691288, -0.2429914828619464, -0.24295534145915035,
-0.24178957222525402, -0.23994985640574246, -0.23776098120584555},
{3.4605629421085804, 3.3353427321025277, 2.2645624336960877,
1.3737968280357356, 0.7311182123384067, 0.3321016467998787,
0.09730108372425661, -0.03939616972588035, -0.11935995910372743,
-0.16224482338619725, -0.19031261541220829, -0.20904303029225277,
-0.22097656204305363, -0.22942846501594666, -0.23708910091056556,
-0.24175990375521236, -0.24350870673596037, -0.2433926152417718,
-0.24216658098305371, -0.240280300520101, -0.23805447013533096},
{3.464448233192169, 3.3276178642079572, 2.2540889460960027,
1.3639403490211985, 0.7231781536125972, 0.32621037395135266,
0.09301688852829008, -0.042538722075911854, -0.12168727327303151,
-0.16402429074351116, -0.191740034350629, -0.21020234287566988,
-0.22193031986951883, -0.23028071185134294, -0.23783225084253118,
-0.24237550922907358, -0.24401982329023938, -0.24382463652157543,
-0.24253900407599113, -0.2406066750417874, -0.23834429685811026},
{3.468283431803097, 3.319870233311738, 2.2436356952006173,
1.3541210302099134, 0.715282358292235, 0.32035956513877356,
0.08876608319361988, -0.04565468956266372, -0.12399296225132667,
-0.1657873927574818, -0.1931540063682296, -0.2113503932872377,
-0.22287464954492403, -0.231125847508515, -0.23856775289473353,
-0.242984100400353, -0.24452489647166128, -0.24425146114363638,
-0.24290688990495926, -0.24092902240667452, -0.2386304991063635},
{3.4720685975599648, 3.3121002019077377, 2.2332028325699653,
1.344338848551553, 0.7074306476112986, 0.31454897273597426,
0.0845484190711847, -0.048744293273834505, -0.12627721924170793,
-0.16753428348925795, -0.1945546573457941, -0.21248728860949814,
-0.2238096645257092, -0.23196391275374878, -0.23929566032479754,
-0.24358574434534824, -0.24502398956326807, -0.24467314431068313,
-0.24327028630356665, -0.24124738455621697, -0.23891311417825092},
{3.4758037917262046, 3.3043081302173216, 2.222790506842314,
1.334593779659225, 0.6996228425474512, 0.3087783501788137,
0.08036364920327276, -0.05180775246418667, -0.12854023622679794,
-0.1692651153829005, -0.19594211187523045, -0.21361313481455318,
-0.2247354800347366, -0.23279494687964813, -0.2400160264756527,
-0.24418050768040495, -0.24551716518888742, -0.24508974059046817,
-0.2436292405454092, -0.24156180294395194, -0.23919217894361167},
{3.4794890771923814, 3.296494376193448, 2.212398863745597,
1.3248857978234314, 0.6918587638410201, 0.3030474519694064,
0.07621152831616812, -0.054845284569250544, -0.1307822039635728,
-0.17098003928385025, -0.1973164932740611, -0.21472803677662894,
-0.22565221305344163, -0.23361898782178112, -0.2407289047659799,
-0.2447684565577873, -0.24600448531783778, -0.24550130392308192,
-0.24398379935125353, -0.24187231854190758, -0.23946772984957607},
{3.4831245184585677, 3.2886592955250116, 2.202028046108452,
1.315214876025982, 0.6841382320136836, 0.2973560336801473,
0.07209181281273554, -0.05785710521896906, -0.1330033119778618,
-0.17267920445718543, -0.1986779235997382, -0.2158320982844885,
-0.22655998226828444, -0.23443607227071436, -0.24143434868046915,
-0.2453496566618023, -0.24648601126971093, -0.24590788762821203,
-0.2443340088961287, -0.24217897184692252, -0.23973980292609992},
{3.4867101816167714, 3.2808032416413964, 2.1916781938709335,
1.3055809859538325, 0.676461067386865, 0.2917038519575165,
0.0680042607649334, -0.060843428251288, -0.1352037485585996,
-0.17436275860567804, -0.20002652366378637, -0.21692542205369317,
-0.22745890797394178, -0.23524623577935933, -0.24213241175993042,
-0.2459241732051768, -0.24696180371922938, -0.24630954441234498,
-0.24467991481632592, -0.24248180288687476, -0.24000843379141457},
{3.490246134333475, 3.2729265657172824, 2.181349444094976,
1.2959840980128892, 0.6688270900998481, 0.28609066452568566,
0.06394863190627813, -0.06380446572568103, -0.13738370075188788,
-0.1760308478876445, -0.20136241304576735, -0.2180081097387148,
-0.2283491119366638, -0.23604951286558642, -0.2428231475912783,
-0.2464920709256851, -0.24743192270116715, -0.24670632637590892,
-0.24502156221631077, -0.24278085122682058, -0.24027365765739975},
{3.4937324458322028, 3.265029616677641, 2.171041930974682,
1.2864241813417503, 0.661236120127603, 0.2805162301899185,
0.05992468762424279, -0.06674042793661873, -0.1395433543549369,
-0.17768361693459517, -0.20268571010708117, -0.21908026194489913,
-0.2292307172219886, -0.23684593711008842, -0.24350660979743854,
-0.2470534140830183, -0.24789642761533592, -0.24709828502035835,
-0.2453589956755462, -0.2430761559750489, -0.24053550933487544},
{3.497169186876194, 3.2571127412029632, 2.1607557858465007,
1.2769012038253957, 0.6536879772983373, 0.2749803088397703,
0.055932190952605494, -0.06965152342697646, -0.1416828939099389,
-0.17932120886868602, -0.20399653200459347, -0.22014197824028642,
-0.2301038479915281, -0.2376355412495015, -0.24418285202718482,
-0.24760826645590192, -0.24835537723162507, -0.24748547125519596,
-0.24569225925522828, -0.24336775578904732, -0.24079402323881896},
{3.5005564297511422, 3.249176283734691, 2.1504911371993893,
1.2674151321088356, 0.6461824813107687, 0.2694826614520988,
0.0519709065637452, -0.07253795900137698, -0.14380250269792846,
-0.1809437653199707, -0.2052949947041016, -0.2211933571672869,
-0.2309686292738575, -0.23841835726481744, -0.2448519279449491,
-0.24815669133944707, -0.24880882969509682, -0.2478679354049394,
-0.24602139650493451, -0.2436556888813848, -0.24104923339350512},
{3.503894248248003, 3.2412205864808428, 2.1402481106849938,
1.2579659316106981, 0.6387194517511279, 0.26402305009387966,
0.04804060076088573, -0.07539993973947443, -0.14590236273268017,
-0.1825514264434584, -0.20658121299363483, -0.22223449625421426,
-0.23182518671467736, -0.23919441646513173, -0.24551389122061254,
-0.24869875154273682, -0.2492568425311231, -0.24824572721601884,
-0.24634645046918538, -0.24393999302551048, -0.2413011734375705},
{3.50718271764589, 3.2332459894218455, 2.1300268291279654,
1.2485535665367824, 0.6312987081098903, 0.25860123792483747,
0.044141041470296793, -0.07823766900917163, -0.14798265475468317,
-0.18414433093597538, -0.20785530049659204, -0.2232654920266804,
-0.23267364631139156, -0.23996374956679808, -0.24616879551930324,
-0.2492345093866471, -0.24969947265056755, -0.24861889586361807,
-0.24666746369392153, -0.24422070556146858, -0.24154987662900654},
{3.510421914695039, 3.22525283031654, 2.1198274125364374,
1.2391779998935584, 0.6239200697982409, 0.2532169891998985,
0.04027199823344721, -0.08105134847977201, -0.15004355822524185,
-0.1857226160528339, -0.20911736968472178, -0.22428644001884998,
-0.23351413413708924, -0.24072638676806968, -0.2468166944912264,
-0.24976402670188957, -0.25013677635500464, -0.2489874899584499,
-0.24698447823289568, -0.24449786340153504, -0.24179537585007793},
{3.513611917599848, 3.2172414447083755, 2.1096499781127545,
1.2298391935016115, 0.6165833561642697, 0.24787006927145255,
0.036433242199115735, -0.0838411781350734, -0.1520852513207382,
-0.18728641762431497, -0.2103675318909446, -0.22529743478456296,
-0.23434677605866272, -0.24148235781932573, -0.24745764176152618,
-0.2502873648272821, -0.25056880934197007, -0.24935155755346786,
-0.24729753565398033, -0.24477150303576925, -0.2420377036121686},
{3.516752806002021, 3.209212165931785, 2.09949464026452,
1.220537108009066, 0.609288386508919, 0.24256024459145456,
0.032624546115467244, -0.08660735628638676, -0.1541079109270822,
-0.18883587007195402, -0.21160589732201898, -0.22629856990831743,
-0.23517169745345273, -0.24223169208898312, -0.24809169092021763,
-0.2508045846082416, -0.2509956267102456, -0.2497111461505189,
-0.24760667704539663, -0.2450416605374927, -0.2422768920605636},
{3.519844660963736, 3.201165325118695, 2.0893615106159875,
1.2112717029049316, 0.6020349801016551, 0.23728728271334165,
0.02884568432208274, -0.08935007958549629, -0.15611171263439563,
-0.1903711064246473, -0.21283257507105452, -0.22728993801612393,
-0.23598902292842036, -0.24297441862521402, -0.24871889551218102,
-0.25131574639548415, -0.25141728296516214, -0.2500663027069229,
-0.24791194302185443, -0.2453083715686858, -0.24251297297915314},
{3.5228875649509646, 3.1931012512052375, 2.079250698019907,
1.2020429365324385, 0.5948229561959008, 0.23205095229379005,
0.025096432741961647, -0.09206954303754869, -0.15809683073194428,
-0.1918922583345674, -0.2140476731298736, -0.2282716307862256,
-0.23679887604542277, -0.2437105662135872, -0.24933930902724707,
-0.2518209100439435, -0.2518338320239278, -0.25041707364199833,
-0.2482133737306181, -0.24557167138530794, -0.24274597779507592},
{3.525881601816802, 3.185020270938574, 2.069162308569828,
1.1928507661022951, 0.5876521340441986, 0.22685102309430397,
0.02137656887348487, -0.09476594001387577, -0.1600634382033489,
-0.19339945609289647, -0.21525129840122403, -0.22924373895969116,
-0.23760137905571221, -0.24444016343076497, -0.24995298489037895,
-0.2523201349118929, -0.25224532722097476, -0.2507635048435124,
-0.24851100885748617, -0.24583159484254474, -0.24297593758329106},
{3.528826856784937, 3.176922708883889, 2.0590964456129393,
1.1836951477059325, 0.5805223329131349, 0.22168726598264446,
0.01768587178235164, -0.09743946226475098, -0.1620117067221003,
-0.19489282864537769, -0.21644355671084317, -0.23020635235087883,
-0.23839665264633983, -0.24516323869438902, -0.25055997645196254,
-0.2528134798602735, -0.2526518213133173, -0.25110564167407623,
-0.2488048876326983, -0.24608817639997735, -0.24320288307108523},
{3.531723416433153, 3.1688088874315015, 2.049053209763476,
1.1745760363286795, 0.573433372098006, 0.21655945293409803,
0.014024122093483853, -0.10009029993207419, -0.16394180664738975,
-0.19637250360768604, -0.21762455281937745, -0.2311595598577754,
-0.2391848157006869, -0.24587982030928673, -0.25116033697821705,
-0.253301003252214, -0.25305336648592264, -0.2514435289774662,
-0.2490950488367562, -0.24634145012668113, -0.24342684464251746},
{3.5345713686769473, 3.1606791268041063, 2.039032698916747,
1.165493385862907, 0.5663850709372436, 0.21146735703259337,
0.010391101982903272, -0.10271864156199248, -0.1658539070202795,
-0.1978386072806201, -0.21879439043415722, -0.23210344947220962,
-0.2399659850749368, -0.2465899365101426, -0.2517541196417357,
-0.2537827629527501, -0.25345001435708925, -0.2517772110848871,
-0.24938153080617242, -0.2465914497062496, -0.24364785234279351},
{3.5373708027532187, 3.152533745064148, 2.029035008263807,
1.156447149121131, 0.5593772488265941, 0.2064107524716655,
0.006786595169585831, -0.10532467411744467, -0.16774817556022084,
-0.19929126466511582, -0.21995317222083008, -0.23303810828994348,
-0.2407402753918795, -0.24729361550076068, -0.2523413775121623,
-0.2542588163287277, -0.25384181598382943, -0.2521067318211643,
-0.24966437143914266, -0.24683820844174986, -0.24386593588258657},
{3.540121809204034, 3.144373058121296, 2.0190602303068172,
1.1474372778490594, 0.5524097252330539, 0.20138941455527382,
0.0032103869072901622, -0.10790858299064351, -0.16962477866193826,
-0.20073059947708652, -0.22110099981485545, -0.23396362252064096,
-0.24150779885307894, -0.24799088549006149, -0.2529221635470196,
-0.25472922024889083, -0.25422882186725393, -0.2524321345108745,
-0.2499436082011369, -0.24708175926060477, -0.24408112464228726},
{3.5428244798604824, 3.136197379740015,
2.0091084548751086, 1.1384637227386025,
0.5454823197085633, 0.1964031196984694,
-0.00033773602363376676, -0.11047055201548256,
-0.17148388139268653, -0.20215673416208768,
-0.22223797383285737, -0.2348800774977201,
-0.24226866507008488, -0.24868177472493286,
-0.2534965305826845, -0.2551940310841477,
-0.254611081957954, -0.2527534619844081,
-0.25021927813042194, -0.24732213471940623,
-0.2442934476761982},
{3.5454789078266136, 3.1280070215472526, 1.9991797691419966,
1.1295264334408412, 0.5385948519034665, 0.191451645427929,
-0.00385798532445571, -0.11301076347987504, -0.173325647489887,
-0.2035697899098104, -0.2233641938838446, -0.23578755768808318,
-0.24302298091505825, -0.249366311520067, -0.2540645313255344,
-0.2556533047080096, -0.25498864566138335, -0.2530707565839693,
-0.25049141784350626, -0.2475593670086648, -0.2445029337166662},
{3.5480851874634634, 3.119802293040203, 1.9892742576423392,
1.1206253585789414, 0.5317471415797297, 0.18653477038234076,
-0.007350571186296199, -0.1155293981380211, -0.17515023935915514,
-0.20496988666840465, -0.22447975858029406, -0.23668614670173246,
-0.24377085039090976, -0.25004452428489854, -0.2546262183432557,
-0.2561070964971963, -0.2553615618432306, -0.25338406016950793,
-0.2507600635405119, -0.24779348795748318, -0.24470961117815676},
{3.5506434143731567, 3.111583501594155, 1.979392002290876,
1.1117604457610362, 0.5249390086239316, 0.18165227431266137,
-0.010815702298369746, -0.1180266352226044, -0.17695781807271688,
-0.20635714315863218, -0.22558476554910095, -0.23757592730127117,
-0.24451237452080085, -0.25071644154776646, -0.2551816440563268,
-0.25655546133240514, -0.2557298788347837, -0.2536934141245873,
-0.2510252510104762, -0.24802452903817448, -0.24491350816126814},
{3.5531536853830916, 3.103350952470413, 1.9695330824013446,
1.1029316415930464, 0.5181702730600132, 0.17680393808223893,
-0.01425358585624692, -0.12050265245691551, -0.1787485433682226,
-0.20773167688785404, -0.22667931144239883, -0.23845698141128735,
-0.24524765125666076, -0.2513820919774165, -0.2557308607296874,
-0.25699845359923656, -0.256093644438285, -0.2539988593621895,
-0.2512870156365793, -0.24825252137080422, -0.24511465245669264},
{3.555616098530232, 3.09510494882429, 1.9596975747064012,
1.0941388916914705, 0.5114407550618015, 0.17198954366680036,
-0.017664427570125832, -0.12295762606690731, -0.1805225736479574,
-0.20909360416385225, -0.22776349194824785, -0.23932939012763088,
-0.24597677540618287, -0.2520415044019628, -0.25627392046458386,
-0.2574361271892706, -0.256452905932271, -0.25430043633045024,
-0.2515453924013023, -0.24847749572767616, -0.24531307154911458},
{3.5580307530454522, 3.0868457917131535, 1.949885553378329,
1.0853821406961197, 0.5047502749653058, 0.16720887415432,
-0.021048431673114737, -0.12539173079317445, -0.1822800659784479,
-0.21044304010848638, -0.2288374018011966, -0.2401932337265749,
-0.24669983857762656, -0.2526947078254285, -0.2568108751906136,
-0.25786853550129146, -0.2568077100769002, -0.2545981850183361,
-0.25180041589151764, -0.24869948253775165, -0.2455087926210604},
{3.560397749337996, 3.0785737801045383, 1.9400970900505496,
1.076661332282808, 0.4980986532807819, 0.16246171374475504,
-0.02440580092952859, -0.12780513990286385, -0.18402117609046667,
-0.21178009867119038, -0.2299011347927173, -0.24104859167386974,
-0.24741692914162625, -0.25334173144199046, -0.25734177665795765,
-0.2582957314426491, -0.2571581031192612, -0.2548921449612516,
-0.25205212030350665, -0.24891851189100536, -0.2457018425566888},
{3.5627171889800056, 3.0702892108842885, 1.9303322538399335,
1.0679764091759958, 0.49148571070457986, 0.1577478477496672,
-0.027736736643187456, -0.13019802520150986, -0.1857460583794291,
-0.2131048926423056, -0.23095478378151188, -0.24189554263369045,
-0.24812813220911817, -0.2539826046480507, -0.2578666764298103,
-0.2587177674307613, -0.2575041307986619, -0.2551823552465848,
-0.2523005394479138, -0.2491346135427227, -0.24589224794553},
{3.564989174691144, 3.0619923788647587, 1.920591111369896,
1.0593273131613845, 0.484911268130758, 0.15306706259172137,
-0.03104143866572527, -0.13257055704479928, -0.18745486590618024,
-0.2144175336662574, -0.23199844070370165, -0.2427341644774728,
-0.24883352962442234, -0.2546173570522654, -0.2583856258750163,
-0.25913469539474066, -0.2578458383519004, -0.2554688545191892,
-0.25254570675462773, -0.24934781691773214, -0.2460800350861692},
{3.567213810323294, 3.053683576793032, 1.9108737267942746,
1.0507139850984628, 0.4783751466624824, 0.14841914580406584,
-0.03432010540490375, -0.13492290435026316, -0.18914775039817,
-0.21571813225457379, -0.2330321965828864, -0.24356453429265015,
-0.24953319997247245, -0.25524601848366096, -0.25889867616090273,
-0.25954656677715077, -0.2581832705185109, -0.2557516809868017,
-0.2527876552776038, -0.24955815111458368, -0.24626522998988115},
{3.5693912008453683, 3.045363095359183, 1.9011801618219835,
1.0421363649330082, 0.47187716762320714, 0.1438038860296049,
-0.0375729338329272, -0.1372552346088948, -0.19082486225101036,
-0.21700679779874846, -0.23405614154009075, -0.24438672839128256,
-0.25022721859914376, -0.2558686189979689, -0.2594058782463244,
-0.2599534325358807, -0.2585164715459888, -0.25603087242539807,
-0.2530264176996158, -0.24976564490966324, -0.24644785838421232},
{3.571521452328182, 3.0370312232045586, 1.8915104757424148,
1.0335943917095294, 0.46541715256763366, 0.13922107302015285,
-0.04080011949476288, -0.1395677138966968, -0.19248635053040714,
-0.21828363858294939, -0.2350703648035849, -0.2452008223185841,
-0.25091565764362694, -0.25648518888230804, -0.25990728287491294,
-0.2603553431461309, -0.25884548519498773, -0.2563064661844847,
-0.2532620263369427, -0.24997032676125236, -0.24662794571650928},
{3.57360467192942, 3.028688246930066, 1.88186472545158,
1.0250880035836674, 0.45899492329245845, 0.13467049763548547,
-0.044001856516460144, -0.14186050688615234, -0.19413236297445843,
-0.21954876179657612, -0.2360749547185908, -0.24600689086134822,
-0.2515985860817791, -0.2570957586583449, -0.2604029405685364,
-0.26075234860251434, -0.25917035474449085, -0.2565784991923281,
-0.25349451314399746, -0.2501722248135293, -0.2468055171574002},
{3.5756409678786927, 3.020334451104484, 1.8722429654789643,
1.0166171378345399, 0.45261030184690204, 0.13015195184228276,
-0.04717833761347101, -0.14413377685762568, -0.1957630459963223,
-0.22080227354666349, -0.23706999875687312, -0.24680500805627517,
-0.2522760697794087, -0.25770035908406, -0.26089290162097306,
-0.26114449842125576, -0.259491122996955, -0.2568470079611235,
-0.2537239097178836, -0.25037136690051454, -0.24698059760421823},
{3.5776304494626925, 3.0119701182727923, 1.8626452480151,
1.0081817308770442, 0.44626311054303713, 0.125665228712972,
-0.050329754098961094, -0.14638768571068428, -0.19737854468722615,
-0.22204427887013614, -0.23805558352620765, -0.24759524719819578,
-0.2529481715544519, -0.2582990211542361, -0.26137721609179,
-0.26153184164249105, -0.25980783228342047, -0.25711202859209764,
-0.25395024730289745, -0.25056778054995765, -0.24715321168436918},
{3.579573227010414, 3.00359552896447, 1.853071622939771,
0.99978171827409, 0.4399531719658888, 0.1212101224244577,
-0.05345629589213442, -0.14862239397535953, -0.1989790028198416,
-0.22327488174592405, -0.23903179477975275, -0.24837768084820663,
-0.25361495124705524, -0.2588917760998038, -0.26185593380045086,
-0.26191442683267124, -0.26012052446860356, -0.2573735967805604,
-0.2541735567949697, -0.2507614929871803, -0.24732338375864937},
{3.5814694118784867, 2.9952109617018294, 1.8435221378509046,
0.9914170347487924, 0.433680308983344, 0.11678642825676534,
-0.056558151526536954, -0.1508380608233221, -0.2005645628519797,
-0.22449418510691962, -0.23999871742529197, -0.2491523808417007,
-0.25427646579657115, -0.2594786553861329, -0.26232910432062634,
-0.2622923020870412, -0.26042924095594094, -0.2576317478208843,
-0.25439386874603953, -0.2509525311388509, -0.2474911379244912},
{3.5833191164365767, 2.986816693008321, 1.833996838094057,
0.9830876141966113, 0.42744434475585047, 0.11239394259158339,
-0.059635508158363035, -0.1530348440789875, -0.20213536593062192,
-0.22570229085179655, -0.24095643553437543, -0.2499194182963046,
-0.2549327693245584, -0.2600596907103945, -0.2627967769747257,
-0.2626655150322131, -0.2607340226926123, -0.25788651661143025,
-0.2546112133683754, -0.2511409216367168, -0.24765649801915282},
{3.585122454052889, 2.9784129974168314, 1.8244957667924966,
0.9747933896974297, 0.421245102745909, 0.10803246291071296,
-0.06268855157475389, -0.15521290023055007, -0.20369155189627078,
-0.22689929985668572, -0.24190503235135175, -0.25067886361972463,
-0.2555839132228928, -0.26063491399808614, -0.2632590008286501,
-0.2630341128288173, -0.2610349101745263, -0.25813793765941023,
-0.2548256205388321, -0.2513266908212799, -0.24781948762284134},
{3.586879539079763, 2.9700001474779816, 1.8150189648778516,
0.9665342935275816, 0.4150824067273661, 0.10370178779441976,
-0.0657174662020878, -0.15737238444094423, -0.20523325928761016,
-0.22808531198670948, -0.2428445903022907, -0.25143078651749856,
-0.2562299462461572, -0.26120435739881587, -0.2637158246867601,
-0.26339814217423096, -0.26133194345127236, -0.2583860450856954,
-0.2550371198030556, -0.25150986474542225, -0.2479801300617763},
{3.588590486839336, 2.9615784137683856, 1.8055664711212789,
0.9583102571718237, 0.4089560807945085, 0.09940171691970373,
-0.06872243511426203, -0.15951345055872823, -0.20676062534646555,
-0.22926042610737543, -0.24377519100380413, -0.2521752560006561,
-0.25687091460751815, -0.26176805328142905, -0.2641672970870643,
-0.2637576493053786, -0.2616251621310364, -0.2586308726295583,
-0.2552457403796252, -0.25169046917798127, -0.2481384484111929},
{3.5902554136093237, 2.953148064898912, 1.7961383221651344,
0.9501212113352451, 0.40286594937095854, 0.0951320510584736,
-0.07170364004096538, -0.16163625112890057, -0.20827378602305582,
-0.23042474009583247, -0.24469691527175794, -0.2529123403932895,
-0.2575068620773555, -0.26232603422855827, -0.2646134662966253,
-0.26411268000159693, -0.26191460538548367, -0.2588724536533652,
-0.2554515111641416, -0.2518685296072743, -0.24829446549828854},
{3.5918744366088617, 2.9447093675229, 1.7867345525551048,
0.9419670859551297, 0.39681183721837743, 0.09089259207564111,
-0.07466126137593847, -0.1637409374036371, -0.2097728759815211,
-0.23157835085198972, -0.2456098431298851, -0.25364210734004744,
-0.2581378300839612, -0.2628783330306706, -0.2650543803071782,
-0.26446327958756927, -0.26220031195460003, -0.25911082114720174,
-0.25565446073326065, -0.25204407124457406, -0.2484482039051228},
{3.59344767398447, 2.9362625863443714, 1.7773551947727706,
0.9338478102127521, 0.3907935694449753, 0.0866831429271325,
-0.07759547818522365, -0.1658276593529595, -0.21125802860572773,
-0.2327213543095011, -0.24651405381829786, -0.2543646238136317,
-0.2587638578156676, -0.2634249826796759, -0.26549008683096853,
-0.2648094929363137, -0.262482320151501, -0.25934600773344996,
-0.2558546173486669, -0.25221711902753846, -0.24859968597147075},
{3.5949752447960655, 2.9278079841261895, 1.7680002792685583,
0.9257633125451151, 0.3848109715138231, 0.08250350765781038,
-0.08050646821540025, -0.16789656567532857, -0.21272937600532638,
-0.2338538454466162, -0.2474096258018954, -0.25507995612259865,
-0.25938498232382534, -0.26396601636215516, -0.26592063329679233,
-0.2651513644722302, -0.2627606678671982, -0.2595780456712988,
-0.2560520089609998, -0.25238769762358604, -0.24874893379763396},
{3.596457269003105, 2.9193458216982133, 1.758669834495067,
0.917713520656636, 0.3788638692509891, 0.07835349139932662,
-0.0833944079018075, -0.16994780380816568, -0.21418704902206515,
-0.23497591829689846, -0.2482966367786806, -0.25578816992030134,
-0.26000123862609825, -0.26450146745227066, -0.26634606684625084,
-0.26548893817420177, -0.26303539257533176, -0.2598069668612099,
-0.25624666321372225, -0.2525558314332357, -0.24889596924722723},
{3.5978938674507863, 2.910876357965393, 1.7493638869407053,
0.9096983615307589, 0.3729520888534777, 0.07423290036788917,
-0.08625947237675163, -0.17198151993830033, -0.2156311772363382,
-0.23608766595981323, -0.24917516368797332, -0.25648933021665266,
-0.26061265980957815, -0.26503136950439266, -0.2667664343302004,
-0.2658222575787369, -0.2633065313368602, -0.26003280284931746,
-0.25643860744693586, -0.252721544593386, -0.24904081394992728},
{3.59928516185636, 2.902399849915853, 1.740082461163632,
0.9017177614415207, 0.3670754568969931, 0.07014154186195841,
-0.08910183547769872, -0.17399785901234482, -0.2170618889739667,
-0.23718918061118677, -0.2500452827185319, -0.25718350139542123,
-0.2612192771332942, -0.26555575624550276, -0.26718178230540324,
-0.26615136578316634, -0.26357412080471215, -0.26025558483177696,
-0.25662786870114673, -0.25288486098056295, -0.24918348930420292},
{3.600631274795522, 2.893916552628924, 1.7308255798259469,
0.8937716459650468, 0.3612338003435168, 0.0660792242598702,
-0.09192166975544909, -0.175996964746998, -0.21847931131319592,
-0.23828055351353752, -0.2509070693165798, -0.25787074724068076,
-0.2618211201297064, -0.26607466156739834, -0.2675921570313703,
-0.2664763054488746, -0.26383819722839924, -0.2604753436590632,
-0.25681447372097943, -0.25304580421411405, -0.24932401648002459},
{3.60193232968889, 2.8854267192831395, 1.7215932637281006,
0.8858599399909829, 0.3554269465487029, 0.06204575701738131,
-0.09471914648229578, -0.1779789796392753, -0.219883570091905,
-0.23936187502628237, -0.2517605981937373, -0.25855113097651145,
-0.2624182167048396, -0.2665881195187437, -0.2679976044673896,
-0.2667971188045711, -0.26409879645858697, -0.2606921098402044,
-0.25699844895883717, -0.25320439765935876, -0.2494624164215526},
{3.6031884507885836, 2.8769306011641973, 1.7123855318435004,
0.8779825677338726, 0.34965472326910446, 0.05804095066515347,
-0.09749443566016226, -0.1799440449766649, -0.22127478991501068,
-0.24043323461581598, -0.2526059433348641, -0.25922471532391245,
-0.26301059323674036, -0.2670961642969912, -0.2683981702697382,
-0.2671138476495994, -0.26435595395162553, -0.26090591354697357,
-0.25717982057851746, -0.2533606644307012, -0.24959870984981156},
{3.6043997631648845, 2.868428447672878, 1.7032024013532623,
0.8701394527444611, 0.34391695866921745, 0.054064616806160294,
-0.10024770602872637, -0.18189230084721683, -0.2226530941620673,
-0.24149472086546986, -0.25344317800581045, -0.25989156257808826,
-0.26359827467197966, -0.2675988302402072, -0.2687938997890726,
-0.2674265333572755, -0.26460970477404155, -0.26111678461801985,
-0.2573586144587742, -0.2535146273946931, -0.24973291726535202},
{3.605566392692991, 2.8599205063329216, 1.694043887681078,
0.8623305179209433, 0.3382134813283596, 0.05011656811303607,
-0.10297912507351817, -0.18382388614955267, -0.2240186049950377,
-0.24254642148534766, -0.25427237476107756, -0.2605517347079277,
-0.2641812846199672, -0.26809615181882035, -0.2691848380679858,
-0.26773521687825597, -0.2648600836069857, -0.26132475256294935,
-0.25753485619683397, -0.25366630917306066, -0.24986505895089156},
{3.6066884660398526, 2.8514070227988593, 1.6849100045281793,
0.8545556855201399, 0.33254412024737406, 0.046196618325356306,
-0.10568885903400091, -0.18573893860280916, -0.22537144336623943,
-0.24358842332203998, -0.25509360545139215, -0.2612052934778222,
-0.2647596454448612, -0.26858816362731724, -0.2695710298387379,
-0.2680399387439309, -0.2651071247506391, -0.26152984656635364,
-0.25770857111185985, -0.25381573214568326, -0.2499951549739411},
{3.607766110651118, 2.8428882408638185, 1.675800763908347,
0.8468148771686136, 0.3269087048551651, 0.0423045822468536,
-0.10837707291163011, -0.18763759475650904, -0.22671172902645131,
-0.24462081236822408, -0.25590694123119156, -0.26185230059020664,
-0.2653333783549138, -0.26907490037591114, -0.26995251952114496,
-0.26834073906984635, -0.26535086212858305, -0.2617320954917893,
-0.257879784248376, -0.253962918453539, -0.2501232251894241},
{3.6087994547381346, 2.8343644024672536, 1.6667161761829372,
0.8391080138737157, 0.321307065015072, 0.03844027574257684,
-0.11104393047789017, -0.18951999000035863, -0.22803958053316709,
-0.2456436737721414, -0.2567124525660263, -0.26249281784553163,
-0.26590250348908556, -0.2695563968821877, -0.27032935122062796,
-0.2686376575591411, -0.26559132929212154, -0.26193152788570445,
-0.2580485203796395, -0.254107890001602, -0.2502492892422655},
{3.6097886272650865, 2.825835747702677, 1.6576562500959104,
0.8314350160345647, 0.3157390310310787, 0.03460351573598626,
-0.11368959428230807, -0.19138625857397598, -0.22935511525899555,
-0.2466570918469621, -0.2575102092398737, -0.26312690731504246,
-0.2664670400008281, -0.2700326880627553, -0.27070156872641427,
-0.26893073350600366, -0.2658285594245629, -0.262128171981314,
-0.25821480401096764, -0.2542506684617067, -0.2503733665699712},
{3.6107337579361647, 2.817302514825297, 1.6486209928087994,
0.82379580345296, 0.31020443365386174, 0.030794120205994244,
-0.11631422566044458, -0.19323653357654713, -0.2306584494001886,
-0.2476611500800342, -0.2583002803623693, -0.26375463152074063,
-0.26702700613892794, -0.27050380892490955, -0.2710692155098886,
-0.26922000579914757, -0.26606258534546334, -0.26232205570242784,
-0.2583786593830223, -0.25439127527536876, -0.250495476405182},
{3.6116349771828897, 2.808764940259659, 1.639610409935627,
0.81619029534423, 0.3047031040866849, 0.0270119081839516,
-0.11891798474185995, -0.1950709469764104, -0.23194969798529746,
-0.24865593114201928, -0.25908273437595836, -0.2643760536163841,
-0.2675824193253411, -0.27096979455832154, -0.2714323347230912,
-0.269505512925297, -0.2662934395148216, -0.2625132066672277,
-0.25854011047504355, -0.2545297316565682, -0.250615637778208},
{3.6124924161514675, 2.800223258607214, 1.6306245055777093,
0.8086184103480037, 0.2992348739911267, 0.023256699750571375,
-0.12150103045805709, -0.19688962962057363, -0.23322897488394337,
-0.24964151689591707, -0.2598576390629591, -0.26499123756325055,
-0.26813329622997134, -0.271430680126767, -0.2717909691973569,
-0.26978729297268694, -0.2665211540372395, -0.2627016521919975,
-0.25869918100804945, -0.2546660585944971, -0.2507338695195394},
{3.6133062066902673, 2.791677702653852, 1.6216632823583295,
0.8010800665389209, 0.29379957549266866, 0.019528316032809228,
-0.12406352055039699, -0.19869271124415688, -0.23449639281569407,
-0.25061798840598026, -0.260625061552553, -0.26560024829465434,
-0.2686796528423534, -0.2718865008599027, -0.272145161442095,
-0.27006538363457094, -0.2667457606660357, -0.2628874192948049,
-0.258855894447984, -0.25480027685626544, -0.2508501902623284},
{3.6140764813373902, 2.7831285033774065, 1.6127267414572712,
0.7935751814372674, 0.28839704118612136, 0.015826579200684938,
-0.12660561157799033, -0.20048032047976966, -0.23575206335904406,
-0.25158542594651867, -0.261385068327688, -0.26620315186376975,
-0.26922150454022514, -0.2723372920451002, -0.27249495364370374,
-0.27033982221273717, -0.26696729080731674, -0.2630705346991343,
-0.25901027400882565, -0.25493240698957564, -0.2509646184448486},
{3.6148033733082983, 2.7745758899550887, 1.6038148826451508,
0.7861036720195437, 0.28302710414090876, 0.012151312464057946,
-0.1291274589255613, -0.20225258486681144, -0.23699609696048152,
-0.2525439090105954, -0.26213772523190754, -0.26680001557010036,
-0.2697588661549897, -0.27278308901934417, -0.2728403876646138,
-0.27061064562102666, -0.26718577552400913, -0.26325102483747415,
-0.2591623426556528, -0.2550624693253558, -0.2510771723129217},
{3.6154870164835686, 2.766020089770913, 1.594927704317555,
0.7786654547289609, 0.2776895979062036, 0.008502340069355071,
-0.13162921681128625, -0.20400963086071072, -0.2382286029436458,
-0.25349351631862016, -0.2628830974761006, -0.2673909080608844,
-0.27029175203407946, -0.27322392716120764, -0.27318150504246663,
-0.27087789038885934, -0.26740124553984757, -0.26342891585485745,
-0.25931212310766943, -0.25519048398035943, -0.2511878699223163},
{3.616127545396707, 2.757461328423057, 1.5860652035289422,
0.7712604454858646, 0.2723843565159137, 0.00487948729624638,
-0.13411103829460197, -0.20575158384208836, -0.23944968951856013,
-0.2544343258268323, -0.26362124964517214, -0.26797589940470723,
-0.2708201761002451, -0.27365984188290204, -0.2735183469894167,
-0.2711415926647586, -0.2676137312433231, -0.2636042336123572,
-0.25945963784118864, -0.25531647085973025, -0.25129672914111467},
{3.616725095222073, 2.748899829731196, 1.57722737602629,
0.7638885596980907, 0.2671112144935357, 0.0012825804542809308,
-0.1365730752839885, -0.20747856812585508, -0.2406594637909399,
-0.25536641473568594, -0.26435224570464166, -0.26855506113564,
-0.27134415190780564, -0.2740908686224221, -0.27385095439155477,
-0.2714017882198774, -0.2678232626915849, -0.2637770036905345,
-0.25960490909257533, -0.25544044965953133, -0.2514037676520474},
{3.6172798017628813, 2.7403358157437983, 1.568414216282467,
0.7565497122712428, 0.2618700068568618, -0.0022885531205267436,
-0.13901547854472232, -0.20919070697024073, -0.24185803177156356,
-0.2562898594981272, -0.2650761490071633, -0.269128466267165,
-0.2718636926959067, -0.2745170428357756, -0.2741793678084561,
-0.27165851245152095, -0.2680298696143077, -0.26394725139284536,
-0.25974795886115004, -0.2555624398692412, -0.25150900295479545},
{3.61779180143929, 2.7317695067453696, 1.559625717529304,
0.749243817618903, 0.25666056912255286, -0.00583408506914853,
-0.14143839770660224, -0.21088812258574985, -0.2430454983857087,
-0.25720473582777376, -0.2657930222989713, -0.2696961892760677,
-0.27237881143883724, -0.27493839998931835, -0.2745036274728405,
-0.2719118003866668, -0.26823358141751036, -0.2641150017490005,
-0.2598888089120567, -0.25568246077421664, -0.2516124523682607},
{3.6182612312765827, 2.723201121263679, 1.550861871790347,
0.7419707896727685, 0.25148273731057835, -0.009354186013037075,
-0.14384198127164194, -0.21257093614405687, -0.24422196748264086,
-0.25811111870699305, -0.2665029277262559, -0.27025830605724077,
-0.2728895208934618, -0.275354975552189, -0.2748237732903559,
-0.27216168668548024, -0.2684344271873382, -0.2642802795182815,
-0.2600274807790807, -0.2558005314581162, -0.2517141330327942},
{3.6186882288934474, 2.7146308760769418, 1.5421226699132753,
0.7347305418927103, 0.24633634794851345, -0.012849025557665079,
-0.14622637662173743, -0.21423926778682698, -0.24538754184515582,
-0.25900908239488313, -0.26720592684146055, -0.2708148938510272,
-0.27339583364384595, -0.2757668049888526, -0.2751398448394613,
-0.2724082056448233, -0.26863243569380063, -0.26444310919281544,
-0.2601639957674463, -0.25591667080530023, -0.25181406191240213},
{3.61907293249032, 2.706058986220957, 1.5334081016019603,
0.7275229872767642, 0.24122123807571905, -0.016318772296095033,
-0.14859173002630122, -0.21589323663447277, -0.24654232319916342,
-0.2598987004351548, -0.267902080609514, -0.27136603114525193,
-0.2738977621431377, -0.2761739237517602, -0.27545188137143206,
-0.2726513912017565, -0.2688276353944717, -0.2646035150008079,
-0.2602983749565594, -0.25603089750318647, -0.2519122557969075},
{3.6194154808378376, 2.6974856649962327, 1.5247181554481546,
0.7203480383710413, 0.23613724524738308, -0.01976359381259626,
-0.15093818664986547, -0.21753296079484177, -0.24768641222331814,
-0.26078004566391694, -0.2685914494139842, -0.27191179755451284,
-0.2743953187527763, -0.276576367274121, -0.2757599218104625,
-0.27289127693703086, -0.26902005443814464, -0.2647615209097296,
-0.2604306392027257, -0.25614323004457423, -0.2520087313040823},
{3.6197160132653736, 2.68891112397506, 1.5160528189627918,
0.7132056072795706, 0.23108420753844208, -0.023183656686289994,
-0.15326589055965734, -0.21915855737183704, -0.2488199085586792,
-0.2616531902173705, -0.26927409306316885, -0.2724522736795869,
-0.2748885157791254, -0.2769741709627978, -0.2760640047538757,
-0.27312789607856897, -0.26920972066845106, -0.2649171506294656,
-0.26056080914182633, -0.25625368672993054, -0.2521035048817425},
{3.619974669649652, 2.680335573008566, 1.5074120786068783,
0.7060956056740616, 0.22606196354737743, -0.02657912649483206,
-0.15557498473313874, -0.22077014247397309, -0.24994291081840447,
-0.2625182055394028, -0.26995007079611205, -0.2729875409499867,
-0.27537736550759295, -0.2773673701913274, -0.2763641684724316,
-0.2733612815049375, -0.26939666162743386, -0.2650704276154219,
-0.2606889051919575, -0.25636228566962926, -0.25219659280980966},
{3.620191590403466, 2.671759220233744, 1.498795919821977,
0.6990179448035935, 0.22107035239988157, -0.029950167818134907,
-0.15786561106551888, -0.22236783122286352, -0.2510555165974706,
-0.2633751623890979, -0.2706194412885537, -0.27351768145278554,
-0.2758618802343344, -0.2777560002930661, -0.2766604509107369,
-0.27359146574880505, -0.26958090455908645, -0.2652213750715924,
-0.26081494755603696, -0.25646904478615706, -0.2522880112023425},
{3.6203669164644596, 2.66318227208043, 1.4902043270602443,
0.6919725355042292, 0.21610921375241915, -0.0332969442421121,
-0.16013791037722735, -0.22395173776164135, -0.2521578224824096,
-0.2642241308481448, -0.27128226265881217, -0.27404277775081914,
-0.2763420722956248, -0.27814009655446637, -0.2769528896877437,
-0.2738184810003865, -0.26976247641284695, -0.26537001595358356,
-0.26093895622437635, -0.2565739818162703, -0.25237777600952316},
{3.620500789284029, 2.65460493327829, 1.4816372838140446,
0.6849592882085516, 0.21117838779565562, -0.036619618362465675,
-0.16239202242136422, -0.2255219752633181, -0.2532499240610658,
-0.2650651803281656, -0.27193859247359925, -0.27456291269330274,
-0.27681795409497767, -0.27851969420848904, -0.2772415220973473,
-0.2740423591108749, -0.26994140384705545, -0.26551637297160463,
-0.2610609509772148, -0.2566771143131102, -0.25246590301963},
{3.6205933508162724, 2.646027406863743, 1.4730947726450918,
0.6779781129551267, 0.2062777152577826, -0.03991835178849491,
-0.1646280858911113, -0.22707865593907198, -0.25433191593235643,
-0.26589837957794843, -0.27258848775376765, -0.2750781692217624,
-0.2772895381281088, -0.27889482842814955, -0.27752638510906863,
-0.2742631315958565, -0.27011771323237, -0.26566046859341236,
-0.26118095138722675, -0.2567784596482794, -0.25255240786095895},
{3.6206447435070683, 2.637449894186889, 1.4645767752131396,
0.6710289193978889, 0.20140703740772384, -0.043193305146936464,
-0.1668462384271086, -0.22862189104647362, -0.25540389171603894,
-0.2667237966905933, -0.27323200497999506, -0.2755886301740019,
-0.2777568370058145, -0.2792655343201972, -0.2778075153688191,
-0.2744808296387071, -0.27029143065514233, -0.26580232504722034,
-0.26129897682198183, -0.2568780350138701, -0.25263730600371803},
{3.6206551102831908, 2.628872594918396, 1.4560832723041846,
0.6641116168154472, 0.19656619605822268, -0.04644463808583882,
-0.1690466166248029, -0.23015179089764834, -0.25646594406247675,
-0.2675414991105736, -0.2738692000984027, -0.2760943780886205,
-0.27821986347486194, -0.2796318469189441, -0.2780849491997592,
-0.2746954840939766, -0.27046258192076034, -0.2659419643245733,
-0.26141504644638913, -0.25697585742447177, -0.252720612761902},
{3.620624594541571, 2.6202957070563824, 1.4476142438582094,
0.6572261141203227, 0.1917550335688355, -0.04967250927845505,
-0.1712293560417611, -0.23166846486737191, -0.25751816466239896,
-0.2683515536407125, -0.27450012852611083, -0.276595495012352,
-0.2786786304369601, -0.27999380118023043, -0.27835872260323086,
-0.2749071254907548, -0.2706311925569455, -0.26607940818318027,
-0.2615291792251003, -0.2570719437191325, -0.2528023432951194},
{3.620553340138583, 2.611719426933257, 1.439169668996409,
0.6503723198680952, 0.1869733928488031, -0.05287707642716793,
-0.17339459120494394, -0.23317202140110202, -0.2585606442566428,
-0.2691540264490673, -0.2751248451567291, -0.27709206231224953,
-0.2791331509658869, -0.28035143197552825, -0.2786288712597639,
-0.2751157840360115, -0.27079728781701556, -0.26621467814970984,
-0.26164139392487556, -0.2571663105632965, -0.25288251261040434},
{3.6204414913794665, 2.6031439492225643, 1.4307495260479448,
0.6435501422664882, 0.18222111735982538, -0.056058496267438446,
-0.17554245561795595, -0.2346625680229489, -0.2595934726458815,
-0.26994898307574317, -0.2757434043657874, -0.2775841604944912,
-0.27958343832285587, -0.2807047740862011, -0.2788954305301675,
-0.2753214896179279, -0.27096089268310686, -0.26634779552255383,
-0.2617517091169321, -0.25725897445072515, -0.2529611355639855},
{3.620289193007801, 2.594569466945794, 1.4223537925761827,
0.6367594891843666, 0.1774980511187312, -0.059216924571772314,
-0.17767308176824992, -0.2361402113435765, -0.2606167387003271,
-0.2707364884396098, -0.2763558600161027, -0.2780718690313229,
-0.28002950597017834, -0.281053862197897, -0.27915843545668173,
-0.27552427180919814, -0.27112203186935896, -0.26647878137454667,
-0.26186014317924233, -0.2573499517053801, -0.25303822686303734},
{3.620096590195074, 2.5859961714791804, 1.4139824454044245,
0.6300002681606579, 0.17280403870003633, -0.06235251615372356,
-0.17978660113430509, -0.23760505706804802, -0.2616305303694033,
-0.27151660684495116, -0.2769622654630852, -0.2785552661974086,
-0.28047136758330843, -0.2813987308950982, -0.2794179207642081,
-0.27572415987031984, -0.2712807298250672, -0.2666076565556617,
-0.26196671429882606, -0.2574392584833121, -0.25311380106740217},
{3.619863828530358, 2.577424252560498, 1.4056354606411408,
0.6232723864132024, 0.16813892523841795, -0.06546542487190377,
-0.1818831441927662, -0.23905721000360408, -0.2626349346913869,
-0.27228940198802465, -0.2775626735599876, -0.2790344289166128,
-0.2809090370613278, -0.2817394146558119, -0.27967392086160053,
-0.2759211827528557, -0.27143701073779003, -0.26673444169565874,
-0.2620714404739871, -0.2575269107745155, -0.253187872591276},
{3.6195910540100282, 2.5688538982958207, 1.3973128137046724,
0.6165757508475141, 0.16350255643107564, -0.06855580363402514,
-0.18396284042554728, -0.24049677406737968, -0.2636300378030061,
-0.27305493696354505, -0.27815713666309, -0.2795094326200269,
-0.2813425285359454, -0.28207594784641116, -0.27992646984302133,
-0.27611536910267653, -0.27159089853642426, -0.266859157206707,
-0.26217433951653774, -0.25761292440478323, -0.2532604557048784},
{3.6192784130276032, 2.5602852951662953, 1.389014479347425,
0.6099102680654767, 0.15889477854000644, -0.07162380440095648,
-0.18602581832690435, -0.24192385229405788, -0.2646159249489964,
-0.2738132742710908, -0.27874570663682846, -0.2799803511158374,
-0.2817718563790892, -0.2824083647166243, -0.28017560148935866,
-0.2763067472631843, -0.2717424168942432, -0.26698182328596864,
-0.26227542905398743, -0.25769731503754956, -0.2533315645360951},
{3.618926052363648, 2.5517186280348776, 1.3807404316795389,
0.6032758443739519, 0.154315438394184, -0.07466957819079892,
-0.18807220541046588, -0.24333854684346398, -0.26559268049160906,
-0.2745644758214317, -0.2793284348588674, -0.28044725647142854,
-0.282197035209151, -0.2827366993946706, -0.28042134926969947,
-0.27649534527850717, -0.271891589231897, -0.26710245991815035,
-0.26237472653169913, -0.25778009817571856, -0.2534012130720859},
{3.6185341191757754, 2.5431540801530836, 1.3724906441920433,
0.5966723857933147, 0.1497643833916325, -0.07769327508298511,
-0.19010212821623443, -0.24474095900809817, -0.266560387920066,
-0.2753086029427816, -0.2799053722251108, -0.2809102189079647,
-0.2826180798959745, -0.283060985882547, -0.2806637463428629,
-0.2766811908966776, -0.2720384387203815, -0.26722108687802226,
-0.2624722492150281, -0.257861289163496, -0.25346941516088395},
{3.6181027609887098, 2.534591833167713, 1.3642650897794806,
0.59009979806591, 0.14524146150142928, -0.08069504422238888,
-0.19211571231754798, -0.2461311892206041, -0.26751912985995563,
-0.27604571638697645, -0.2804765691546599, -0.28136930670750526,
-0.28303500556465006, -0.2833812580514599, -0.28090282555897866,
-0.2768643115727826, -0.2721829882839631, -0.26733772373290177,
-0.2625680141914214, -0.2579409031882003, -0.2535361845129558},
{3.6176321256844726, 2.5260320671275793, 1.3560637407620186,
0.5835579866644282, 0.1407465212656007, -0.08367503382345778,
-0.1941130823280064, -0.2475093370611824, -0.2684689880825746,
-0.276775876335576, -0.28104207559471456, -0.28182458613260697,
-0.28344782759819853, -0.28369754963740734, -0.28113861946112506,
-0.27704473447209366, -0.27232526060307977, -0.26745238984510916,
-0.2626620383724934, -0.25801895528207663, -0.25360153470274954},
{3.617122361492598, 2.5174749604902247, 1.347886568907029,
0.577046856800207, 0.1362794118009419, -0.08663339117435578,
-0.19609436190836405, -0.24887550126493715, -0.2694100435141944,
-0.2774991424058944, -0.2816019410254161, -0.28227612135820146,
-0.283856561639221, -0.28400989423690515, -0.28137116028700526,
-0.277222486473169, -0.2724652781171968, -0.2675651043743855,
-0.26275433849607777, -0.2580954603240942, -0.2536654791702148},
{3.616573616980484, 2.508920690128637, 1.3397335454501569,
0.5705663134314529, 0.13183998280074724, -0.0895702626411223,
-0.19805967377338132, -0.250229779729169, -0.27034237624527496,
-0.2782155736569583, -0.282156214464641, -0.28272397441548547,
-0.2842612235905894, -0.2843183253028633, -0.28160047997067594,
-0.2773975941709314, -0.2726030630276334, -0.26767588628028294,
-0.26284493112824414, -0.25817043304173803, -0.2537280312222991},
{3.6159860410437843, 2.500369431337953, 1.3316046411158626,
0.5641162612713854, 0.12742808453644686, -0.09248579367184975,
-0.20000913969864556, -0.2515722695206037, -0.27126606553959504,
-0.2789252285953932, -0.28270494447273514, -0.28316820514741614,
-0.28466182961525416, -0.28462287614060167, -0.28182661014431376,
-0.2775700838797275, -0.27273863730035497, -0.26778475432452564,
-0.2629338326653008, -0.25824388801278986, -0.2537892040344338},
{3.6153597828969204, 2.4918213578421744, 1.3234998261374555,
0.5576966047963031, 0.12304356785917739, -0.09538012880086702,
-0.20194288052735168, -0.252903066882566, -0.2721811898433192,
-0.2796281651812409, -0.2832481791572004, -0.28360887117538325,
-0.28505839613525, -0.2849235799040192, -0.28204958214002623,
-0.27773998163635577, -0.2728720226687295, -0.26789172707333325,
-0.2630210593357572, -0.2583158396670959, -0.25384901065198145},
{3.6146949920636344, 2.483276641800867, 1.3154190702766,
0.5513072482535685, 0.11868628420125524, -0.09825341165294152,
-0.20386101617704508, -0.25422226724209035, -0.27308782679398597,
-0.28032444083370406, -0.28378596617732166, -0.2840460278765303,
-0.2854509398299541, -0.28522046959189745, -0.2822694269916987,
-0.2779073132030693, -0.27300324063625425, -0.2679968228997226,
-0.2631066272022732, -0.258386302288327, -0.2539074639916822},
{3.613991818367654, 2.474735453815864, 1.3073623428423218,
0.5449480956695203, 0.11435608557758105, -0.10110578494748874,
-0.20576366564633397, -0.2555299652169759, -0.2739860532294173,
-0.2810141124368272, -0.2843183527487494, -0.2844797283711779,
-0.2858394776336875, -0.2855135780443514, -0.28248617543687465,
-0.2780721040705577, -0.27313231247924263, -0.2681000599857717,
-0.2631905521635741, -0.25845529001571144, -0.25396457684306617},
{3.613250411923433, 2.466197962937978, 1.2993296127095006,
0.5386190508573064, 0.11005282458696536, -0.10393739050279328,
-0.2076509470215585, -0.25682625462278297, -0.27487594519655467,
-0.2816972363451063, -0.2848453856480256, -0.2849100235197517,
-0.2862240267327091, -0.2858029379394183, -0.28269985791867486,
-0.27823437946089885, -0.2732592592494833, -0.2682014563248596,
-0.2632728499563417, -0.25852281684576733, -0.25402036186984994},
{3.612470923126966, 2.457664336673701, 1.291320848336862,
0.5323200174246366, 0.10577635441336229, -0.10674836924024403,
-0.2095229774834265, -0.258111228479772, -0.27575757796021017,
-0.28237386838903494, -0.2853671112170599, -0.285336961928607,
-0.28660460456167597, -0.28608858178978974, -0.2829105045877436,
-0.2783941643304884, -0.2733841017768687, -0.2683010297238747,
-0.2633535361570894, -0.2585888966340082, -0.254074831611321},
{3.61165350264668, 2.449134740991915, 1.28333601778446,
0.5260508987814599, 0.10152652882705167, -0.10953886118857101,
-0.21137987331360966, -0.2593849790197838, -0.2766310260117367,
-0.2830440638805799, -0.28588357536755754, -0.28576058996410597,
-0.2869812287996184, -0.28637054193967443, -0.28311814530422785,
-0.2785514833729416, -0.2735068606719865, -0.268398797805397,
-0.2634326261840006, -0.258653543096636, -0.2541279984836961},
{3.610798301414436, 2.440609340330607, 1.2753750887306812,
0.5198115981475618, 0.09730320218572759, -0.11230900548810097,
-0.21322174990130605, -0.2606475976930659, -0.27749636307761794,
-0.283707877618598, -0.286394823585396, -0.28618095177432656,
-0.2873539173654975, -0.28664885056180517, -0.283322809639779,
-0.27870636102196805, -0.2736275563286779, -0.26849477800984733,
-0.26351013529875056, -0.25871676981220854, -0.25417987478146475},
{3.6099054706165563, 2.4320882976035763, 1.2674380284887379,
0.5136020185600875, 0.0931062294355248, -0.11505894039501142,
-0.2150487217497654, -0.26189917517503786, -0.27835366212797324,
-0.28436536389418493, -0.28690090093495607, -0.2865980893177494,
-0.28772268841338544, -0.2869235396545778, -0.28352452687958835,
-0.27885882145422525, -0.2737462089265777, -0.2685889875976154,
-0.2635860786083075, -0.25877859022329797, -0.254230472678715},
{3.608975161684985, 2.423571774207156, 1.259524804022691,
0.5074220628809862, 0.08893546611197538, -0.11778880328559467,
-0.21686090248277085, -0.2631398013729953, -0.27920299538497273,
-0.28501657649595846, -0.2874018520633942, -0.2870120423983006,
-0.2880875603273151, -0.28719464103931513, -0.28372332602443084,
-0.27900888859213496, -0.2738628384335979, -0.2686814436511489,
-0.26366047106669527, -0.2588390176381115, -0.25427980423044183},
{3.608007526288506, 2.4150599300269464, 1.2516353819629895,
0.5012716338043778, 0.08479076834088131, -0.12049873066053435,
-0.21865840485109442, -0.2643695654327459, -0.2800444343311791,
-0.28566156871528786, -0.2878977212048838, -0.2874228487061356,
-0.2884485517158596, -0.28746218635768284, -0.2839192357927539,
-0.27915658610669053, -0.2739774646084116, -0.26877216307703455,
-0.2637333274767572, -0.25889806523211323, -0.2543278813738418},
{3.607002716324028, 2.4065529234445338, 1.243769728621531,
0.4951506338638446, 0.08067199283913787, -0.12318885814917989,
-0.22044134073890714, -0.2655885557451274, -0.28087804971779645,
-0.28630039335145346, -0.2883885521847954, -0.2878305438635432,
-0.28880568140645635, -0.28772620706921603, -0.2841122846227603,
-0.27930193742021925, -0.2740901070028807, -0.2688611626080311,
-0.2638046624918725, -0.2589557460495977, -0.2543747159295834},
{3.605960883907974, 2.3980509113442356, 1.235927810006261,
0.489058965439639, 0.0765789969154762, -0.1258593205138308,
-0.22220982117015084, -0.2667968599523447, -0.2817039115728306,
-0.28693310271674793, -0.2888743884238363, -0.28823516147540557,
-0.28915896843953065, -0.28798673444898865, -0.28430250067452945,
-0.27944496570913435, -0.27420078496447015, -0.26894845880509105,
-0.2638744906176708, -0.2590120730052658, -0.2544203196030743},
{3.6048821813677296, 2.3895540491198437, 1.2281095918353078,
0.4829965307658275, 0.0725116384711459, -0.1285102516540254,
-0.22396395631488428, -0.26799456495399826, -0.2825220892091733,
-0.2875597486415211, -0.28935527294214386, -0.2886367331836338,
-0.2895084320624428, -0.28824379958540874, -0.2844899118321454,
-0.2795856939066485, -0.27430951763862066, -0.26903406805934904,
-0.26394282621370957, -0.25906705888575815, -0.25446470398569865},
{3.60376676123317, 2.3810624906813693, 1.2203150395506606,
0.4769632319373456, 0.06846977600053765, -0.13114178461082832,
-0.22570385549557542, -0.26918175691259005, -0.2833326512325928,
-0.28818038247915634, -0.28983124836333096, -0.28903528872505513,
-0.2898540917232894, -0.2884974333781348, -0.28467454570583706,
-0.2797241447054677, -0.27441632397109894, -0.2691180065940856,
-0.26400968349513704, -0.2591207163511781, -0.2545078805560498},
{3.602614776228284, 2.3725763884618187, 1.2125441183314056,
0.47095897091698463, 0.06445326859172637, -0.13375405157113204,
-0.22742962719337081, -0.2703585212582697, -0.2841356655496421,
-0.28879505511100234, -0.29030235691848927, -0.28943085599223844,
-0.2901959670645886, -0.28874766653612916, -0.2848564296341428,
-0.2798603405604558, -0.27452122271032076, -0.2692002904666684,
-0.264075076534335, -0.25917305793658507, -0.25454986068114},
{3.6014263792628523, 2.364095893423943, 1.2047967931065147,
0.46498364954229926, 0.06046197592697152, -0.13634718387195038,
-0.22914137905432128, -0.2715249426924758, -0.2849311993754853,
-0.2894038169512373, -0.2907686404501504, -0.289823461096763,
-0.2905340779168692, -0.28899452957582544, -0.2850355906860787,
-0.27999430369127815, -0.27462423240963724, -0.2692809355704688,
-0.26413901926253647, -0.25922409605346636, -0.2545906556176044},
{3.600201723424211, 2.355621155067035, 1.1970730285672022,
0.45903716953243584, 0.056495758283144015, -0.13892131200472163,
-0.23083921789556677, -0.27268110519012395, -0.28571931924163196,
-0.2900067179516744, -0.291230140416192, -0.2902131284344893,
-0.2908684442921825, -0.28923805281941534, -0.28521205566331564,
-0.28012605608500796, -0.27472537142959785, -0.2693599576367437,
-0.26420152547141673, -0.2592738429911835, -0.2546302765128786},
{3.5989409619691033, 2.3471523214337062, 1.1893727891788584,
0.4531194324948942, 0.05255447653209833, -0.1414765656196099,
-0.23252324971149552, -0.27382709199998395, -0.2865000910035942,
-0.2906038076065222, -0.29168689789371943, -0.29059988075240184,
-0.29119908637756703, -0.2894782663932648, -0.28538585110237474,
-0.2802556194987208, -0.2748246579401904, -0.2694373722365131,
-0.26426260881467784, -0.2593223109184032, -0.25466873440637816},
{3.597644248315585, 2.338689539116687, 1.1816960391925588,
0.447230339932206, 0.04863799214099265, -0.14401307352980638,
-0.2341935796798527, -0.27496298564289157, -0.28727357984845575,
-0.2911951349570767, -0.2921389535828841, -0.2909837392166127,
-0.2915260245284655, -0.28971520022642866, -0.2855570032768157,
-0.28038301546204575, -0.27492210992303756, -0.2695131947823878,
-0.26432228280957965, -0.2593695118844905, -0.25470604023064036},
{3.596311736035026, 2.3302329532656367, 1.1740427426561637,
0.44136979324854037, 0.044746167172530174, -0.1465309637158373,
-0.23585031216782115, -0.27608886790753523, -0.2880398503023597,
-0.29178074859637126, -0.29258634781067605, -0.29136472348118336,
-0.29184927926212595, -0.2899488840492942, -0.28572553819945107,
-0.28050826527971073, -0.27501774517358685, -0.26958744053039907,
-0.26438056083847666, -0.2594154578208994, -0.2547422048124785},
{3.5949435788441764, 2.321782707593961, 1.1664128634250157,
0.43553769375623835, 0.040878864285172026, -0.14903036332986427,
-0.23749355073806164, -0.27720481984359185, -0.2887989662379128,
-0.29236069667376047, -0.2930291205346653, -0.291742851757391,
-0.29216887125098906, -0.29017934739231505, -0.2858914816245463,
-0.280631390034043, -0.27511158130325414, -0.2696601245817855,
-0.26443745615030306, -0.25946016054251897, -0.25477723887410497},
{3.593539930597318, 2.313338944385645, 1.1588063651722378,
0.4297339426822638, 0.0370359467332736, -0.15151139869999186,
-0.2391233981547141, -0.27831092175213645, -0.2895509908815082,
-0.29293502689946077, -0.29346731134670595, -0.2921181408831579,
-0.2924848213160761, -0.2904066195848639, -0.2860548590500364,
-0.2807524105874531, -0.27520363574155304, -0.26973126188477037,
-0.2644929818620363, -0.25950363174901625, -0.254811153034244},
{3.5921009452784753, 2.304901804502093, 1.1512232113986451,
0.42395844117459186, 0.033217278367179345, -0.15397419533456685,
-0.24073995638936818, -0.27940725317332044, -0.29029598682056695,
-0.29350378654903253, -0.2939009594765988, -0.29249060639232777,
-0.2927971504203925, -0.2906307297541788, -0.2862156957197416,
-0.28087134758489596, -0.27529392573819617, -0.26980086723630603,
-0.26454715096013914, -0.2595458830261472, -0.25484395780923913},
{3.5906267769937132, 2.2964714273889753, 1.1436633654422748,
0.41821109030851433, 0.029422723633264255, -0.15641887792647935,
-0.24234332662698838, -0.28049389287145815, -0.2910340160106979,
-0.2940670224678109, -0.29433010379571245, -0.2928602625835521,
-0.29310587966234647, -0.2908517068244045, -0.2863740166255821,
-0.28098822145629415, -0.2753824683651602, -0.2698689552837999,
-0.26459997630195664, -0.25958692584704385, -0.2548756636141324},
{3.5891175799635042, 2.2880479510831, 1.1361267904875443,
0.41249179109287487, 0.025652147573907935, -0.15884557035746566,
-0.2439336092718077, -0.2815709188177485, -0.29176513978277874,
-0.29462478107528955, -0.2947547828205665, -0.2932271225885373,
-0.29341103026920284, -0.29106957951573215, -0.2865298465097996,
-0.2811030524189497, -0.2754692805187405, -0.26993554052682495,
-0.26465147061710703, -0.25962677157349556, -0.2549062807637501},
{3.5875735085151788, 2.2796315122192885, 1.1286134495740463,
0.40680044447623287, 0.02190541582744207, -0.1612543957024023,
-0.2455109039531853, -0.2826384081709743, -0.29248941884995816,
-0.2951771083694498, -0.295175034716376, -0.29359119843943915,
-0.2937126235905684, -0.2912843763436263, -0.28668320986717083,
-0.28121586047991937, -0.27555437892156864, -0.2700006373187958,
-0.26470164650882544, -0.2596654314571886, -0.25493581947376},
{3.585994717075427, 2.2712222460372553, 1.1211233056049794,
0.40113695135294686, 0.018182394628027756, -0.163645476233602,
-0.2470753095314195, -0.28369643725658306, -0.2932069133145798,
-0.2957240499310387, -0.29559089730055427, -0.2939525011352294,
-0.294010681091923, -0.29149612561813676, -0.28683413094722954,
-0.2813266654383726, -0.275637780124609, -0.2700642598686345,
-0.2647505164553005, -0.259702916640948, -0.2549642898617233},
{3.5843813601628987, 2.26282028638851, 1.1136563213552433,
0.3955012125691946, 0.014482950805495238, -0.16601893342510368,
-0.2486269241035367, -0.2847450815446379, -0.2939176826750268,
-0.29626565092780566, -0.2960024080461802, -0.29431104070684205,
-0.29430522434819634, -0.29170485544329505, -0.28698263375647615,
-0.2814354868879177, -0.2757195005091322, -0.2701264222424077,
-0.26479809281098704, -0.25973923815993916, -0.2549917019481332},
{3.58273359238086, 2.254425765743275, 1.1062124594791822,
0.38989312892891653, 0.010806951785138859, -0.16837488795695887,
-0.25016584500903066, -0.28578441562715623, -0.294621785832492,
-0.2968019561186783, -0.2964096040854264, -0.29466682628097796,
-0.2945962750374005, -0.29191059371658684, -0.28712874206058936,
-0.2815423442189049, -0.2757995562886579, -0.27018713836494646,
-0.26484438780788866, -0.25977440694286574, -0.25501806565743895},
{3.581051568409932, 2.246038815197399, 1.0987916825180004,
0.384312601199684, 0.007154265587444298, -0.17071345971951732,
-0.25169216883557277, -0.2868145131953752, -0.2953192810976716,
-0.29733300985790423, -0.29681252221294935, -0.2950198661424193,
-0.2948838549343188, -0.2921133681285087, -0.28727247938663847,
-0.2816472566207079, -0.275877963510881, -0.2702464220214463,
-0.26488941355685097, -0.25980843381314384, -0.25504339081906335},
{3.5793354430008906, 2.237659564479297, 1.0913939529068533,
0.3787595301185041, 0.003524760827799761, -0.17303476781770202,
-0.25320599142468486, -0.28783544701749736, -0.2960102261973816,
-0.29785885609913254, -0.29721119888924674, -0.2953701677947531,
-0.29516798590425897, -0.2923132061621901, -0.2874138690252806,
-0.281750243083978, -0.2759547380595693, -0.27030428685904645,
-0.2649331820488159, -0.25984132949005534, -0.2550676871684052},
{3.577585370967545, 2.22928814195689,
1.0840192329816172, 0.37323381639754066,
-0.00008169328386348901, -0.17533893057528682,
-0.25470740787737045, -0.28884728891744654,
-0.2966946782811041, -0.2983795383994572,
-0.2976056702439735, -0.2957177380194003,
-0.29544868989686884, -0.2925101350930875,
-0.287552934032959, -0.28185132240286975,
-0.27602989565643543, -0.2703607463883826,
-0.26497570515608265, -0.2598731045898868,
-0.2550909643478273},
{3.57580150717969, 2.2209246746445688, 1.0766674849853612,
0.3677353607297779, -0.0036652269434583745, -0.1776260655391625,
-0.25619651255972, -0.2898501097551331, -0.29737269392745647,
-0.29889509992341323, -0.29799597207925194, -0.296062582932886,
-0.295725988940026, -0.2927041819887552, -0.28768969723409893,
-0.28195051317724795, -0.27610345186299323, -0.2704158139851333,
-0.2650169946335608, -0.259903769627054, -0.2551132319076379},
{3.5739840065561266, 2.2125692882101626, 1.0693386710745072,
0.36226406379460613, -0.007225969753173477, -0.17989628948359576,
-0.2576733991084664, -0.29084397940869944, -0.2980443291505869,
-0.2994055834469212, -0.2983821398730458, -0.2964047080422698,
-0.29599990513379615, -0.2928953737086708, -0.2878241812232856,
-0.2820478338148694, -0.2761754220823822, -0.2704695028915327,
-0.2650570621200051, -0.25993333501520083, -0.255134499307061},
{3.572133024057744, 2.2042221069819146, 1.0620327533247016,
0.35681982626333597, -0.010764050721964576, -0.18214971841449185,
-0.2591381604365147, -0.29182896675915, -0.298709639406503,
-0.2999110313611947, -0.298764208782876, -0.2967441182986957,
-0.2962704606444689, -0.29308373690413386, -0.28795640836744696,
-0.28214330253353725, -0.2762458215611734, -0.270521826217874,
-0.2650959191392611, -0.25996181106829375, -0.2551547759151875},
{3.570248714680689, 2.195883253955479, 1.0547496937364043,
0.35140254880464883, -0.014279598266062116, -0.18438646757363955,
-0.26059088873843367, -0.2928051396777193, -0.2993686795993251,
-0.300411485676601, -0.2991422136504906, -0.2970808181490195,
-0.2965376776986691, -0.2932692980182197, -0.2880864008080175,
-0.28223693736323435, -0.27631466539115557, -0.2705727969439898,
-0.26513357710149527, -0.25998920800168945, -0.2551740710119281},
{3.5683312334495914, 2.1875528508009183, 1.0474894542401971,
0.34601213208996817, -0.017772740209537508, -0.18660665144295696,
-0.26203167549590317, -0.29377256501626914, -0.3000215040874699,
-0.3009069880264727, -0.2995161890086004, -0.29741481158548516,
-0.2968015785775541, -0.2934520832857992, -0.28821418046310326,
-0.2823287561482317, -0.2763819685110928, -0.27062242792071195,
-0.2651700473044262, -0.2600155359331967, -0.2551923937889463},
{3.566380735410861, 2.1792310178697205, 1.0402519967018236,
0.3406484767987733, -0.02124360378490159, -0.1888103837487264,
-0.2634606114831408, -0.294731308600939, -0.3006681666897653,
-0.3013975796708862, -0.2998861690913655, -0.29774610219343084,
-0.2970621856110847, -0.2936321187336104, -0.2883397690296293,
-0.2824187765491709, -0.27644774570846287, -0.27067073187132107,
-0.2652053409345551, -0.26004080488411413, -0.25520975335058166},
{3.564397375626062, 2.170917874201821, 1.033037282926971,
0.3353114836238383, -0.024692315633735685, -0.19099777746581736,
-0.2648777867722755, -0.29568143522921064, -0.30130872069149384,
-0.30188330150038456, -0.30025218785077223, -0.29807469319701935,
-0.29731952117238863, -0.2938094301803916, -0.2884631879854824,
-0.28250701604512835, -0.27651201162117833, -0.27071772139296557,
-0.26523946906838425, -0.26006502478026255, -0.2552261587147649},
{3.5623813091653442, 2.162613537532638, 1.0258452746657898,
0.3300010532763995, -0.028119001807384043, -0.19316894482191624,
-0.2662832907387002, -0.29662300867048785, -0.30194321885037223,
-0.3023641940396733, -0.30061427898129534, -0.2984005875029963,
-0.297573607672207, -0.29398404323706695, -0.28858445859164156,
-0.2825934919356533, -0.27657478073927844, -0.27076340895807466,
-0.26527244267363914, -0.2600882054529962, -0.25524161881392177},
{3.5603326911009496, 2.154318124300113, 1.018675933617174,
0.3247170864912641, -0.0315237877676524, -0.19532399730172917,
-0.26767721206637973, -0.2975560916702227, -0.30257171340246014,
-0.30284029745126123, -0.3009724759551484, -0.29872378774246916,
-0.29782446755342923, -0.2941559833069851, -0.28870360189429856,
-0.2826782213427806, -0.2766360674066061, -0.27080780691574546,
-0.2653042726104857, -0.26011035664020254, -0.25525614249586687},
{3.558251676500788, 2.1460317496517693, 1.011529221432802,
0.31945948403183977, -0.03490679838756817, -0.1974630456511913,
-0.2690596387531221, -0.29848074595757085, -0.30319425606800166,
-0.30331165153906636, -0.30132681207001444, -0.2990442963107425,
-0.2980721232857173, -0.294325275586209, -0.28882063872696717,
-0.2827612212130238, -0.27669588582245913, -0.27085092749311657,
-0.26533496963273434, -0.26013148798729024, -0.25526973852468654},
{3.5561384204220743, 2.1377545274517717, 1.0044050997209382,
0.31422814669510957, -0.03826815795216275, -0.19958619988165893,
-0.27043065811582756, -0.29939703225651404, -0.30381089805720507,
-0.30377829575198506, -0.30167732051046936, -0.2993621154052095,
-0.2983165973602244, -0.2944919450638598, -0.28893558971258254,
-0.28284250831934776, -0.27675425004322785, -0.27089278279672513,
-0.26536454438905177, -0.26015160904816376, -0.2552824155816131},
{3.5539930779050315, 2.129486570287999, 0.9973035300500174,
0.30902297531653006, -0.04160799015928579, -0.2016935692740921,
-0.27179035679568225, -0.3003050103003243, -0.3044216900759498,
-0.30424026918740854, -0.3020240344233913, -0.299677247061341,
-0.29855791228440104, -0.29465601652249895, -0.28904847526558025,
-0.28292209926310785, -0.27681117398400223, -0.27093338481384227,
-0.26539300742414823, -0.2601707292861783, -0.25529418226588485},
{3.5518158039666776, 2.121227989479127, 0.9902244739520119,
0.3038438707748702, -0.04492641812047564, -0.20378526238323547,
-0.27313882076333534, -0.30120473884922727, -0.3050266823314369,
-0.304697610594717, -0.3023669870067335, -0.2999896931867979,
-0.29879609057690004, -0.2948175145385747, -0.28915931559397995,
-0.28300001047598455, -0.2768666714201712, -0.27097274541379823,
-0.2654203691799715, -0.26018885807509695, -0.25530504709560553},
{3.549606753594648, 2.112978895081708, 0.9831678929255776,
0.2986907339969802, -0.04822356436183306, -0.20586138704178022,
-0.2744761353240286, -0.30209627571106457, -0.30562592453777027,
-0.30515035837872095, -0.3027062116100715, -0.3002994555936917,
-0.29903115476257375, -0.29497646348289436, -0.28926813070143625,
-0.28307625822187743, -0.27692075598899063, -0.2710108763492865,
-0.2654466399968858, -0.2602060047000193, -0.25531501850858207},
{3.547366081741118, 2.1047393958972815, 0.9761337484390111,
0.29356346596249355, -0.05149955082495267, -0.20792205036452366,
-0.275802385122695, -0.30297967776475493, -0.3062194659214742,
-0.3055985506030683, -0.30304174184455396, -0.300606536029054,
-0.2992631273675687, -0.2951328875211587, -0.289374940389294,
-0.2831508585987906, -0.27697344119113715, -0.27104778925765044,
-0.2654718301148361, -0.2602221783583111, -0.25532410486316287},
{3.5450939433167634, 2.0965095994794685, 0.9691220019329992,
0.2884619677084726, -0.054754498867871454, -0.20996735875251155,
-0.27711765414902817, -0.3038550009863031, -0.30680735522695385,
-0.30604222499361766, -0.30337361169924415, -0.3009109362035311,
-0.29949203091451626, -0.29528681061452944, -0.2894797642586165,
-0.28322382754069036, -0.2770247403922468, -0.2710834956621607,
-0.26549594967451334, -0.2602373881605135, -0.25533231443906207},
{3.5427904931848038, 2.088289612141087, 0.9621326148231836,
0.28338614033398035, -0.057988529266047625, -0.21199741789717222,
-0.27842202574250574, -0.3047223004771138, -0.30738964072188363,
-0.3064814189417652, -0.30370185566042046, -0.3012126578183651,
-0.29971788791782117, -0.29543825652024064, -0.2895826217122113,
-0.28329518081934063, -0.2770746668244238, -0.2711180069732675,
-0.26551900871849576, -0.26025164313124516, -0.25533965543817233},
{3.540455886155097, 2.0800795389612654, 0.9551655485025388,
0.2783358850045925, -0.06120176221339092, -0.2140123327844459,
-0.2797155825973866, -0.30558163049434506, -0.30796637020254675,
-0.30691616950774636, -0.30402650883022186, -0.3015117025907081,
-0.29994072087905266, -0.295587248792253, -0.289683531956635,
-0.28336493404612506, -0.277123233587743, -0.27115133448984957,
-0.2655410171923872, -0.2602649522100975, -0.25534613598537503},
{3.53809027697831, 2.0718794837925705, 0.9482207643435763,
0.2733111029568468, -0.06439431732329273, -0.2160122076988925,
-0.28099840676767457, -0.30643304448302344, -0.3085375909990991,
-0.3073465134238874, -0.3043476070410087, -0.3018080722772983,
-0.30016055228242455, -0.2957338107819432, -0.28978251400418414,
-0.28343310267383376, -0.2771704536517217, -0.27118348940042997,
-0.26556198494593247, -0.2602773242525063, -0.25535176412933547},
{3.5356938203401485, 2.063689549268134, 0.9412982237003741,
0.2683116955026241, -0.06756631362971109, -0.21799714622779748,
-0.28227057967203745, -0.3072765951096628, -0.3091033499807905,
-0.307772487097834, -0.30466518696203054, -0.3021017686965796,
-0.300377404590391, -0.29587796563883967, -0.28987958667488306,
-0.28349970199844615, -0.27721633985678595, -0.2712144827843981,
-0.26558192173413425, -0.26028876803062956, -0.25535654784329453},
{3.5332666708556517, 2.0555098368087936, 0.9343978879104476,
0.2633375640334746, -0.07071786958826942, -0.21996725126525998,
-0.28353218209870784, -0.3081123342970944, -0.309663693561108,
-0.30819412661573437, -0.30497928619529496, -0.3023927937492812,
-0.30059130023932507, -0.2960197363113832, -0.28997476859843674,
-0.28356474716087804, -0.2772609049157069, -0.27124432561319867,
-0.2656008372183383, -0.26029929223419934, -0.25536049502584185},
{3.5308089830635354, 2.04734044663022, 0.927519718296455,
0.258388610024875, -0.07384910307737987, -0.22192262501626828,
-0.2847832942103328, -0.30894031326026605, -0.310218667702872,
-0.30861146774538784, -0.3052899433579964, -0.3026811494375324,
-0.3008022616353103, -0.29615914554772943, -0.29006807821618624,
-0.28362825314871626, -0.27730416141502323, -0.27127302875151327,
-0.2656187409673124, -0.26030890547137325, -0.2553636135016905},
{3.528320911420632, 2.039181477750076, 0.9206636761677562,
0.2534647350404268, -0.07696013139942058, -0.22386336900077347,
-0.28602399554880487, -0.30976058254273525, -0.3107683179232727,
-0.30902454593936923, -0.3055971981493725, -0.30296683788256246,
-0.3010103111500283, -0.2962962158965921, -0.29015953378304593,
-0.28369023479793465, -0.27734612181645224, -0.2713006029584297,
-0.26563564245831695, -0.26031761626957506, -0.2553659110224404},
{3.5258026102963558, 2.031033027995151, 0.9138297228218251,
0.24856584073599605, -0.08005107128190149, -0.22578958405773494,
-0.2872543650400496, -0.3105731920536099, -0.31131268929884265,
-0.30943339633810474, -0.3059010914003898, -0.3032498613410193,
-0.3012154711167452, -0.2964309697081039, -0.2902491533694183,
-0.2837507067945833, -0.27738679845827563, -0.2713270588885953,
-0.26565155107814825, -0.2603254330763192, -0.25536739526732855},
{3.5232542339672532, 2.0228951940085182, 0.9070178195455151,
0.2436918288637825, -0.08312203887869038, -0.22770137034917015,
-0.2884744809987789, -0.3113781911047095, -0.3118518264703791,
-0.3098380537729217, -0.3062016651052224, -0.30353022221998466,
-0.30141776382640517, -0.296563429134722, -0.2903369548631031,
-0.2838096836764639, -0.2774262035567101, -0.2713524070933505,
-0.26566647612417116, -0.2603323642600346, -0.25536807384397575},
{3.5206759366116063, 2.0147680712566873, 0.9002279276161994,
0.23884260127633983, -0.08617314977124203, -0.22959882736417894,
-0.2896844211332238, -0.3121756284477092, -0.3123857736478045,
-0.3102385527690656, -0.30649896243402164, -0.3038079230907174,
-0.3016172115238152, -0.2966936161321603, -0.2904229559711848,
-0.2838671798347786, -0.2774643492072615, -0.271376658021856,
-0.2656804268053405, -0.260338418110868, -0.25536795428912235},
{3.5180678723040986, 2.0066517540367586, 0.8934600083027744,
0.2340180599305318, -0.08920451896985435, -0.2314820539229568,
-0.2908842625498131, -0.31296555231107065, -0.312914574614971,
-0.31063492754867683, -0.3067930277269477, -0.3040829667011825,
-0.30181383640394277, -0.29682155246034525, -0.29050717422190697,
-0.283923209515772, -0.2775012473860673, -0.27139982202220386,
-0.26569341224320187, -0.26034360284149294, -0.25536704406935884},
{3.5154301950105475, 1.9985463354835808, 0.8867140228665413,
0.2292181068914242, -0.09221626091497155, -0.23335114818080555,
-0.29207408175783955, -0.3137480104365614, -0.31343827273441455,
-0.3110272120337461, -0.3070839064699114, -0.30435535598741786,
-0.3020076606083021, -0.29694725968441066, -0.29058962696653357,
-0.283977786822338, -0.2775369099512106, -0.2714219093425122,
-0.265705441472877, -0.2603479265878946, -0.25536535058184234},
{3.5127630585826806, 1.9904519075769096, 0.879989932561971,
0.22444264433612646, -0.09520848947847801, -0.23520620763211658,
-0.29325395467408105, -0.3145230501151836, -0.3139569109520465,
-0.3114154398490264, -0.3073716452528165, -0.30462509408377536,
-0.3021987062214475, -0.29707075917570624, -0.2906703313811877,
-0.28403092571561894, -0.2775713486440315, -0.2714429301320088,
-0.2657165234440347, -0.2603513974101533, -0.25536288115500944},
{3.5100666167529946, 1.982368561148566, 0.8732876986373533,
0.21969157455756338, -0.0981813179650418, -0.2370473291143515,
-0.2944239566273859, -0.3152907182223565, -0.3144705318017968,
-0.31179964432491974, -0.3076562917114381, -0.3048921843320907,
-0.30238699526756396, -0.297192072112844, -0.29074930446868424,
-0.2840826400165834, -0.2776045750904123, -0.2714628944421042,
-0.26572666702185077, -0.2603540232932205, -0.2553596430492847},
{3.5073410231296567, 1.974296385889594, 0.8666072823353383,
0.21496479996820167, -0.10113485911346672, -0.2388746088120028,
-0.29558416236324403, -0.31605106125220306, -0.3149791774101982,
-0.31217985850033, -0.30793789445431974, -0.30515663028981826,
-0.30257254970715836, -0.2973112194827585, -0.29082656306033833,
-0.284132943407581, -0.277636600802051, -0.2714818122274421,
-0.2657358809879453, -0.26035581214767894, -0.25535564345776973},
{3.5045864311914756, 1.966235470357423, 0.8599486448933773,
0.21026222310371023, -0.10406922509806191, -0.24068814226053942,
-0.29673464604829874, -0.3168041253508163, -0.3154828895009201,
-0.3125561151254856, -0.30821650297625164, -0.3054184357371737,
-0.3027553914338492, -0.2974282220818003, -0.29090212381776387,
-0.2841818494338866, -0.2776674371777213, -0.27149969334695034,
-0.26574417404130785, -0.260356771810505, -0.2553508895069384},
{3.5018029942829214, 1.9581859019830197, 0.8533117475440578,
0.20558374662656398, -0.10698452753006091, -0.24248802435034988,
-0.2978754812748499, -0.3175499563483919, -0.3159817093992492,
-0.3129284466647307, -0.3084921675600412, -0.3056776046833265,
-0.3029355422712496, -0.2975431005168394, -0.29097600323465156,
-0.28422937150521704, -0.2776970955045111, -0.2715165475648631,
-0.26575155479920837, -0.26035691004581, -0.25534538825731007},
{3.4989908656092132, 1.9501477670780465, 0.8466965515153543,
0.20092927332959643, -0.10988087745902361, -0.24427434933065545,
-0.29900674106531433, -0.31828859979012936, -0.316475678036516,
-0.31329688529928734, -0.3087649391683476, -0.30593414137167896,
-0.3031130239699562, -0.29765587520640113, -0.29104821763853705,
-0.2842755228972391, -0.2777255869590519, -0.2715323845517367,
-0.265758031798096, -0.26035623454558193, -0.2553391467041284},
{3.496150198231461, 1.9421211508420144, 0.8401030180307814,
0.1962987061394861, -0.11275838537428882, -0.24604721081342176,
-0.3001284978766461, -0.31902010096581884, -0.31696483595446817,
-0.31366146292998454, -0.3090348693273912, -0.30618805028427104,
-0.303287858204625, -0.29776656638181515, -0.29111878319254453,
-0.28432031675305325, -0.27775292260872814, -0.2715472138854509,
-0.2657636134944776, -0.26035475293041827, -0.25533217177802425},
{3.4932811450618675, 1.934106137369435, 0.8335311083094673,
0.19169194812019957, -0.11561716120643273, -0.24780670177724992,
-0.30124082360474946, -0.3197445049380495, -0.317449223309601,
-0.31402221117996487, -0.3093020100043462, -0.3064393361453574,
-0.30346006657115393, -0.2978751940883859, -0.29118771589712855,
-0.28436376608466163, -0.27777911341287803, -0.2715610450521876,
-0.2657683082657891, -0.2603524727502459, -0.2553244703456757},
{3.490383858858977, 1.9261028096569632, 0.8269807835661445,
0.18710890247637, -0.11845731432874013, -0.24955291457124926,
-0.30234378958882785, -0.32046185656897735, -0.3179288798774205,
-0.31437916139734884, -0.30956641348014113, -0.30668800392418133,
-0.3036296705839474, -0.29798177818657373, -0.2912550315917775,
-0.28440588377441844, -0.27780417022396975, -0.2715738874473903,
-0.2657721244112455, -0.26034940148503805, -0.2553160492104545},
{3.487458492223006, 1.9181112496105457, 0.8204520050110654,
0.18254947255662335, -0.12127895355872395, -0.25128594091890943,
-0.3034374666157313, -0.32117220054562334, -0.31840384505667607,
-0.3147323446578881, -0.30982813221937816, -0.30693405883701236,
-0.3037966916732856, -0.2980863383532066, -0.2913207459567294,
-0.28444668257646605, -0.27782810378877604, -0.27158575037671384,
-0.26577507015268353, -0.2603455465455203, -0.25530691511307324},
{3.4845051975911976, 1.9101315380525565, 0.813944733849844,
0.17801356185685446, -0.1240821871596243, -0.25300587192194063,
-0.30452192492425223, -0.3218755814036524, -0.3188741578735263,
-0.31508179176757384, -0.3100872187389223, -0.30717750634845764,
-0.3039611511827788, -0.29818889408269217, -0.29138487451464573,
-0.28448617511814833, -0.27785092474952394, -0.27159664305694514,
-0.2657771536353921, -0.26034091527387027, -0.2552970747322205},
{3.4815241272332544, 1.9021637547289325, 0.8074589312832311,
0.1735010740234387, -0.12686712284195945, -0.25471279806411273,
-0.30559723420939566, -0.32257204354963703, -0.3193398569856651,
-0.3154275332652263, -0.3103437254766396, -0.30741835217212,
-0.3041230703669189, -0.298289464688251, -0.29144743263228745,
-0.2845243739014134, -0.2778726436450337, -0.2716065746169112,
-0.26577838292891987, -0.2603355149444077, -0.2552865346851883},
{3.4785154332468253, 1.8942079783162993, 0.8009945585068253,
0.16901191285640466, -0.12963386776507205, -0.25640680921506914,
-0.3066634636266248, -0.32326163128177304, -0.3198009806863946,
-0.31576959942505334, -0.3105977046616221, -0.3076566022706226,
-0.3042824703887193, -0.2983880693031661, -0.291508435522166,
-0.2845612913041924, -0.2778932709118459, -0.27161555409836846,
-0.26577876602788497, -0.26032935276428043, -0.2552753015284977},
{3.475479267553041, 1.8862642864290957, 0.7945515767107222,
0.16454598231254378, -0.13238252853869453, -0.25808799463412974,
-0.3077206817960655, -0.32394438880907067, -0.32025756690865037,
-0.316108020259181, -0.31084920818710077, -0.30789226285505655,
-0.3044393723174394, -0.29848472688203687, -0.2915678982441777,
-0.2845969395817689, -0.27791281688533115, -0.271623590456869,
-0.26577831085275755, -0.2603224358741387, -0.2552633817585066},
{3.472415781892109, 1.8783327556266893, 0.7881299470791087,
0.16010318650847072, -0.13511321122455536, -0.2597564429740829,
-0.3087689568066876, -0.32462036026900976, -0.32070965322898276,
-0.31644282552016195, -0.3110982874871223, -0.3081253403838931,
-0.3045937971264083, -0.29857945620205467, -0.29162583570723344,
-0.2846313308681318, -0.2779312918007947, -0.2716306925626274,
-0.2657770252506469, -0.26031477134880643, -0.25525078181202915},
{3.469325127818954, 1.87041346142048, 0.7817296307897998,
0.15568342972363403, -0.13782602133796376, -0.2614122422849524,
-0.3098083562204522, -0.3252895897436856, -0.3211572768714821,
-0.31677404470344783, -0.3113449934179136, -0.30835584156139,
-0.30474576569092265, -0.298672275864276, -0.29168226267085656,
-0.28466447717730364, -0.2779487057945518, -0.2716368692013511,
-0.2657749169960588, -0.26030636619794045, -0.2552375080669259},
{3.466207456698937, 1.862506478281007, 0.7753505890137325,
0.15128661640326896, -0.14052106384944543, -0.2630554800177608,
-0.31083894707642723, -0.3259521212744721, -0.321600474711668,
-0.31710170704984597, -0.31158937614473387, -0.3085837733355602,
-0.3048952987862444, -0.29876320429492154, -0.29173719374678025,
-0.28469639040466577, -0.2779650689050093, -0.27164212907508367,
-0.2657719937916588, -0.26029722736668803, -0.25522356684270886},
{3.4630629197035923, 1.8546118796450337, 0.7689927829144046,
0.14691265116131075, -0.1431984431863681, -0.2646862430282634,
-0.3118607958948785, -0.326607998875215, -0.3220392832803211,
-0.31742584154794157, -0.3118314850348767, -0.308809142895708,
-0.3050424170856636, -0.2988522597466663, -0.2917906434005163,
-0.28472708232825433, -0.27798039107371664, -0.2716464808030204,
-0.2657682632690108, -0.26028736173633, -0.2552089644011202},
{3.4598916678064544, 1.846729737922636, 0.7626561736472793,
0.14256143878324845, -0.14585826323458687, -0.26630461758067575,
-0.3128739686813223, -0.32725726654400833, -0.32247373876727525,
-0.31774647693649344, -0.3120713685573569, -0.3090319576696055,
-0.30518714115866413, -0.29893946029995105, -0.2918426259529142,
-0.2847565646100503, -0.27799468214641654, -0.2716499329223235,
-0.2657637329893122, -0.2602767761249257, -0.2551937069467188},
{3.4566938517789048, 1.8388601245042702, 0.7563407223591407,
0.13823288422893285, -0.1485006273401282, -0.26791068935138834,
-0.3138785309305558, -0.3278999682735843, -0.32290387702516615,
-0.31806364170681556, -0.31230907418971593, -0.30925222532032764,
-0.3053294914691575, -0.29902482386429563, -0.29189315558171147,
-0.28478484879725474, -0.27800795187407584, -0.27165249388893425,
-0.2657584104441208, -0.26026547728794264, -0.255177800627457},
{3.453469622186107, 1.831003109767844, 0.7500463901874193,
0.13392689263533822, -0.15112563831084883, -0.2695045434326519,
-0.3148745476306553, -0.3285361480603571, -0.32332973357312894,
-0.31837736410512063, -0.3125446483322356, -0.30946995374278374,
-0.3054694883738042, -0.29910836817961983, -0.2919422463230532,
-0.28481194632354023, -0.27802020991391035, -0.27165417207837567,
-0.26575230305606407, -0.2602534719188857, -0.25516125153524505},
{3.4502191293829574, 1.8231587630857584, 0.7437731382594776,
0.1296433693192676, -0.15373339841814096, -0.27108626433626337,
-0.31586208326693666, -0.32916584991217196, -0.32375134360045327,
-0.31868767213484267, -0.31277813622978534, -0.30968515105998407,
-0.305607152120408, -0.29919011081756564, -0.2919899120730093,
-0.2848378685102959, -0.2780314658303863, -0.27165497578655284,
-0.26574541817954367, -0.26024076664991463, -0.25514406570651743},
{3.4469425235101183, 1.8153271528319608, 0.7375209276918684,
0.12538221978002076, -0.15632400939863522, -0.27265593599722254,
-0.3168412018259054, -0.3297891178548052, -0.3241687419701977,
-0.3189945935589392, -0.3130095819014156, -0.309897825619072,
-0.30574250284638865, -0.299270069182831, -0.29203616658906995,
-0.28486262656785094, -0.27804172909622316, -0.2716549132305526,
-0.2657377631014304, -0.2602273680524585, -0.2551262491227835},
{3.443639954490084, 1.8075083463889667, 0.7312897195895629,
0.12114334970201134, -0.15889757245590802, -0.27421364177737545,
-0.3178119667991544, -0.3304059959372692, -0.3245819632227558,
-0.31929815590216293, -0.3132390280777281, -0.3101079859871489,
-0.3058755605773398, -0.29934826051450275, -0.29208102349162735,
-0.2848862315966926, -0.27805100909337693, -0.2716539925494431,
-0.2657293450417505, -0.2602132826378233, -0.2551078077111861},
{3.440311572023304, 1.799702410154879, 0.72507947504515,
0.11692666495733199, -0.16145418826223376, -0.2757594644690511,
-0.318774441187251, -0.33101652823597494, -0.3249910415793818,
-0.3195983864533139, -0.31346651614597854, -0.31031564094692005,
-0.30600634522564263, -0.2994247018873951, -0.2921244962654443,
-0.28490869458865864, -0.27805931511401016, -0.2716522218050685,
-0.26572017115435564, -0.26019851685778866, -0.2550887473450375},
{3.4369575255843614, 1.7919094095503962, 0.7188901551380169,
0.11273207160828509, -0.16399395696031105, -0.2772934862986684,
-0.319728687503588, -0.331620758857804, -0.32539601094567566,
-0.3198953122674673, -0.31369208610282434, -0.31052079949218997,
-0.3061348765891704, -0.29949941021338905, -0.2921665982611011,
-0.28493002642812415, -0.27806665636145333, -0.2716496089828434,
-0.2657102485275976, -0.2601830771052031, -0.2550690738443591},
{3.4335779644181934, 1.7841294090257998, 0.7127217209335025,
0.1085594759098545, -0.16651697816502836, -0.2788157889303357,
-0.3206747677781967, -0.3322187319421471, -0.3257969049150188,
-0.3201889601681726, -0.3139157765145282, -0.3107234708232265,
-0.3062611743500547, -0.29957240224277665, -0.2922073426964371,
-0.2849502378931703, -0.27807304195115723, -0.2716461619925533,
-0.26569958418498, -0.26016696971457354, -0.2550487929764187},
{3.4301730375363677, 1.7763624720679345, 0.7065741334820385,
0.10440878431214579, -0.1690233509652257, -0.2803264534694299,
-0.3216127435615544, -0.33281049166196564, -0.3261937567719746,
-0.3204793567496368, -0.3141376244844305, -0.31092366434201446,
-0.30638525807352135, -0.29964369456560186, -0.2922467426579678,
-0.28496933965673826, -0.27807848091162524, -0.27164188866914196,
-0.26568818508581177, -0.2601502009626389, -0.25502791045624695},
{3.426742893713419, 1.768608661207174, 0.70044735381827,
0.10027990346277763, -0.1715131739254657, -0.2818255604661587,
-0.32254267592833896, -0.3333960822239315, -0.3265865994956481,
-0.32076652837888153, -0.3143576656274259, -0.3111213896474278,
-0.3065071472068012, -0.29971330361301, -0.2922848111022954,
-0.284987342287775, -0.27808298218534716, -0.2716367967735089,
-0.2656760581258504, -0.260132777068955, -0.2550064319471668},
{3.423287681483201, 1.7608680380243646, 0.6943413429601598,
0.0961727402092248, -0.17398654508783912, -0.28331318991911186,
-0.3234646254811701, -0.33397554786769973, -0.32697546576299724,
-0.3210505011978728, -0.31457593405116374, -0.311316656530323,
-0.3066268610780992, -0.29978124565858755, -0.2923215608574972,
-0.2850042562523584, -0.27808655462970866, -0.2716308939933001,
-0.26566321013793137, -0.260114704196453, -0.25498436306130234},
{3.419807549135326, 1.7531406631577624, 0.688256061908084,
0.09208720160112832, -0.17644356197374564, -0.28478942127878804,
-0.32437865235431973, -0.3345489328643713, -0.32736038795211414,
-0.32133130112563724, -0.31479246234365654, -0.3115094749685763,
-0.30674441889563575, -0.29984753681971127, -0.29235700462450326,
-0.28502009191481004, -0.278089207017899, -0.27162418794369225,
-0.2656496478925975, -0.26009598845200776, -0.25496170936008855},
{3.4163026447116365, 1.7454265963099527, 0.6821914716439176,
0.08802319489255206, -0.17888432158571538, -0.2862543334511118,
-0.3252848162173846, -0.33511628151420053, -0.3277413981454577,
-0.321608953860348, -0.3150072815669667, -0.311699855122088,
-0.30685983974674735, -0.29991219305888867, -0.29239115497845986,
-0.28503485953880464, -0.27809094803980294, -0.2716166861681833,
-0.265635378098717, -0.26007663588699076, -0.25493847635477573},
{3.412773116002724, 1.7377258962547482, 0.6761475331301079,
0.08398062754420917, -0.18130892040922192, -0.2877080048009303,
-0.326183176278953, -0.3356776381435985, -0.32811852813305387,
-0.321883484881392, -0.3152204212566255, -0.31188780732774946,
-0.30697314259705466, -0.2999752301851036, -0.292424024370078,
-0.28504856928845024, -0.27809178630288683, -0.2716083961393738,
-0.26562040740409704, -0.26005665249782395, -0.25491466950692665},
{3.409219110544496, 1.730038620844076, 0.6701242073087457,
0.07995940722564024, -0.1837174544145006, -0.28915051315549006,
-0.3270737912902164, -0.3362330471014886, -0.3284918094156481,
-0.3221549194514149, -0.315431909426409, -0.3120733420943965,
-0.3070843462896867, -0.30003666385515415, -0.29245562512696516,
-0.2850612312293689, -0.27809173033306855, -0.271599325259743,
-0.26560474239608295, -0.2600360442265206, -0.2548902942289067},
{3.405640775614792, 1.7223648270148464, 0.6641214551006263,
0.07595944181735098, -0.1861100190584059, -0.2905819358079077,
-0.3279567195485783, -0.3367825527550639, -0.32886127320783043,
-0.3224232826183441, -0.3156417725781303, -0.3122564700977549,
-0.3071934695445715, -0.30009650957499207, -0.29248596945494626,
-0.28507285532975635, -0.2780907885755803, -0.2715894808624212,
-0.26558838960216, -0.2600148169612258, -0.25486535588437476},
{3.4020382582300517, 1.7147045707958006, 0.6581392374043157,
0.071980639412916, -0.18848670928623595, -0.29200234952061144,
-0.32883201890121966, -0.3373261994849965, -0.3292269504411142,
-0.3226885992173898, -0.3158500357160532, -0.3124372021753871,
-0.3073005309577791, -0.3001547827010612, -0.29251506943936767,
-0.2850834514614338, -0.27808896939582095, -0.27157887021196014,
-0.265571355490542, -0.259992976536748, -0.2548398597887596},
{3.398411705142024, 1.707057907314344, 0.652177515095206,
0.06802290832103097, -0.1908476195336007, -0.293411830528776,
-0.32969974674864055, -0.33786403168014895, -0.32958887176697743,
-0.3229508938730257, -0.31605672236558163, -0.3126155493216475,
-0.30740554900093153, -0.30021149844162615, -0.29254293704638923,
-0.28509302940088777, -0.27808628108019984, -0.27156750050509126,
-0.26555364647075386, -0.25997052873508947, -0.2548138112097406},
{3.3947612628345203, 1.6994248908033591, 0.6462362490245785,
0.06408615706753928, -0.19319284372827605, -0.29481045454373256,
-0.3305599600481855, -0.3383960937318312, -0.3299470675598739,
-0.3232101910009475, -0.3162618545958468, -0.3127915226826564,
-0.3075085420206632, -0.30026667185810246, -0.29256958412426043,
-0.28510159883029007, -0.27808273183696486, -0.2715553788714816,
-0.26553526889420753, -0.2599474792859615, -0.25478721536771526},
{3.391087077520225, 1.6918055746080038, 0.6403154000186658,
0.06017029439741406, -0.19552247529206646, -0.2961982967563646,
-0.33141271531752386, -0.3389224300276551, -0.3303015679201972,
-0.32346651481001115, -0.3164654530458402, -0.31296513355129174,
-0.30760952823814103, -0.3003203178663814, -0.2925950224045829,
-0.28510916933851493, -0.2780783297970258, -0.2715425123744767,
-0.2655162290547763, -0.25992383386730633, -0.2547600774362634},
{3.387389295137537, 1.684200011192482, 0.6344149288777149,
0.056275229276694635, -0.19783660714270004, -0.29757543184049356,
-0.33225806863812135, -0.339443084945023, -0.33065240267721907,
-0.3237198893041531, -0.3166675369537507, -0.3131363933622174,
-0.3077085257486419, -0.30037245123815337, -0.2926192635035666,
-0.28511575042214127, -0.27807308301477063, -0.27152890801184754,
-0.26549653318935684, -0.2598995981058061, -0.2547324025426161},
{3.383668061347473, 1.6766082521467998, 0.6285347963750606,
0.052400870894402145, -0.20013533169569234, -0.2989419339562328,
-0.3330960756586728, -0.3399581028442966, -0.33099960139198137,
-0.3239703382842829, -0.3168681241891531, -0.3133053136869265,
-0.3078055525211763, -0.3004230866022195, -0.2926423189232527,
-0.2851213514864363, -0.2780669994688621, -0.27151457271651025,
-0.2654761874784218, -0.259874777577384, -0.25470419576809844},
{3.3799235215306025, 1.6690303481935034, 0.6226749632561979,
0.04854712866439527, -0.2024187408662525, -0.300297876753345,
-0.3339267915985117, -0.34046752806168734, -0.3313431933601651,
-0.32421788535016816, -0.31706723128773845, -0.31347190622884724,
-0.30790062639818044, -0.30047223844580906, -0.2926642000527518,
-0.28512598184634336, -0.278060087063035, -0.2714995133572591,
-0.26545519804658263, -0.25984937780771095, -0.2546754621485938},
{3.376155820784035, 1.6614663491943906, 0.6168353902378677,
0.04471391222720947, -0.20468692607117212, -0.3016433333745594,
-0.3347502712510015, -0.34097140490190053, -0.33168320761490977,
-0.32446255390228773, -0.3172648734882598, -0.3136361828184594,
-0.30799376509523835, -0.30051992111587805, -0.29268491816944164,
-0.2851296507274359, -0.2780523536268793, -0.27148373673947024,
-0.26543357096312326, -0.25982340427269124, -0.25464620667497895},
{3.3723651039184452, 1.653916304157206, 0.611016038007149,
0.04090113145184938, -0.2069399782307212, -0.30297837645888925,
-0.33556656898688636, -0.3414697776305754, -0.33201967292960827,
-0.32470436714366924, -0.3174610647714015, -0.31379815540847583,
-0.3080849862008737, -0.30056614882041216, -0.2927044844401643,
-0.2851323672668799, -0.27804380691661323, -0.27146724960580815,
-0.2654113122425453, -0.25979686239896066, -0.254616434293567},
{3.368551515455153, 1.6463802612423108, 0.6052168672205576,
0.03710869643754047, -0.2091779877705776, -0.3043030781449293,
-0.3363757387576325, -0.3419626904665578, -0.3323526178206671,
-0.32494334808171504, -0.31765581790029057, -0.3139578360690608,
-0.3081743071763756, -0.3006109356297244, -0.29272290992241634,
-0.28513414051437513, -0.27803445461585174, -0.2714500586369215,
-0.26538842784510375, -0.259769757564362, -0.2545861499065476},
{3.364715199623231, 1.6388582677693335, 0.5994378385031608,
0.033336517515457575, -0.2114010446237199, -0.30561751007412663,
-0.3371778340987293, -0.34245018757402834, -0.33268207055022736,
-0.32517951952999813, -0.31784914446237045, -0.31411523698309357,
-0.30826174535567824, -0.300654295477738, -0.29274020556550784,
-0.2851349794330892, -0.2780243043363608, -0.27143217045212475,
-0.2653649236773289, -0.2597420950984275, -0.254555358372413},
{3.3608563003566827, 1.6313503702238017, 0.5936789124477018,
0.02958450525039899, -0.21360923823236566, -0.30692174339405065,
-0.3379729081329729, -0.3429323130545296, -0.3330080591288565,
-0.32541290411004514, -0.31804105491239393, -0.3142703704414921,
-0.30834731794528064, -0.30069624216327095, -0.29275638221172817,
-0.2851348929005748, -0.278013363618805, -0.2714135916100725,
-0.26534080559255463, -0.25971388028285425, -0.2545240645063893},
{3.3569749612916246, 1.6238566142637403, 0.587940049613734,
0.025852570442443705, -0.21580265754988648, -0.3082158487616308,
-0.3387610135737281, -0.3434091109389104, -0.33333061131820735,
-0.3256435242531038, -0.3182315586162891, -0.3144232488385776,
-0.3084310420242079, -0.3007367893513105, -0.2927714505974847,
-0.28513388970968245, -0.2780016399334882, -0.2713943286094238,
-0.2653160793914299, -0.2596851183519663, -0.25449227308085187},
{3.3530713257635494, 1.616377044726258, 0.5822212105267767,
0.022140624128562304, -0.21798139104273195, -0.3094998963463805,
-0.3395422027281519, -0.3438806251792226, -0.3336497546336394,
-0.32587140220188404, -0.3184206638956853, -0.31457388466750025,
-0.30851293454401785, -0.3007759505742803, -0.292785421354436,
-0.2851319785694613, -0.27798914068108244, -0.27137438788949664,
-0.26529075082243375, -0.25965581449318725, -0.25445998882574994},
{3.349145536804606, 1.6089117056341067, 0.5765223556774768,
0.01844857758419153, -0.22014552669238505, -0.31077395583361844,
-0.3403165275004085, -0.3443468996405938, -0.3339655163468173,
-0.32609656001229337, -0.3186083780728721, -0.31472229051571865,
-0.3085930123288372, -0.3008137392333044, -0.29279830501061066,
-0.285129168106046, -0.2779758731933515, -0.27135377583091286,
-0.265264825582379, -0.25962597384748975, -0.2544272164290144},
{3.345197737140933, 1.6014606402022118, 0.570843445520791,
0.014776342324781852, -0.22229515199727995, -0.3120380964276505,
-0.34108403939484866, -0.3448079780930984, -0.33427792348826757,
-0.3263190195551436, -0.31879470751603, -0.3148684790605297,
-0.30867129207543853, -0.3008501685994552, -0.29281011199151125,
-0.2851254668635355, -0.2779618447338615, -0.2713324987562292,
-0.26523830931691234, -0.2595956015098524, -0.25439396053696595},
{3.3412280691900365, 1.59402389084419, 0.5651844404751865,
0.011123830107298179, -0.22443035397476233, -0.3132923868549528,
-0.34184478951916103, -0.34526390420365227, -0.3345870028499116,
-0.3265388025178442, -0.31897965768451714, -0.31501246306466796,
-0.3087477903533546, -0.300885251815005, -0.29282085262121177,
-0.28512088330486407, -0.27794706249868706, -0.2713105629305662,
-0.2652112076210116, -0.2595647025297121, -0.2543602257547228},
{3.337236675058194, 1.5866014991788306, 0.5595453009218516,
0.007490952931699615, -0.22655121916302584, -0.31453689536732754,
-0.34259882858751883, -0.34571472152794835, -0.3348927809875615,
-0.3267559304060842, -0.31916323317408285, -0.31515425537194813,
-0.30882252360501516, -0.3009190018946618, -0.29283053712343715,
-0.2851154258126532, -0.27793153361711, -0.27128797456221593,
-0.26518352603947054, -0.25953328191140107, -0.25432601664659515},
{3.333223696537917, 1.5791935060365605, 0.553925987203935,
0.003877623042376613, -0.22865783362305964, -0.31577168974504155,
-0.3433462069236747, -0.34616047350245627, -0.33519528422338996,
-0.3269704245454891, -0.3193454377618343, -0.3152938689029837,
-0.30889550814592437, -0.3009514317267997, -0.2928391756226324,
-0.28510910269006623, -0.27791526515230586, -0.27126473980325655,
-0.2651552700673918, -0.2595013446145929, -0.2542913377364833},
{3.329189275105445, 1.5717999514658794,
0.5483264596257929, 0.00028375292955120507,
-0.23075028294061953, -0.31699683729996075,
-0.34408697446405634, -0.34660120343650663,
-0.3354945386483704, -0.32718230608326654,
-0.31952627445083553, -0.3154313166509532,
-0.30896676016486113, -0.30098255407468466,
-0.2928467781450231, -0.28510192216164354,
-0.2778982641020258, -0.2712408647501369,
-0.26512644515065875, -0.25946889555473207,
-0.25425619350826995},
{3.325133551918282, 1.5644208747397725,
0.5427466784522625, -0.0032907446693455737,
-0.23282865222816704, -0.31821240487864966,
-0.34482118076082297, -0.3470369545044637,
-0.33579057012468067, -0.3273915959898329,
-0.3197057455142021, -0.31556661167742783,
-0.30903629572410574, -0.30101238157768434,
-0.2928533546196575, -0.2850938923741288,
-0.27788053739926655, -0.27121635544426703,
-0.2650970566864112, -0.2594359396034669,
-0.25422058840620265},
{3.3210566678127726, 1.5570563143620977, 0.5371866039079551,
-0.006845956768345946, -0.23489302612684299, -0.3194184588654666,
-0.34554887498489806, -0.3474677697380181, -0.33608340428808536,
-0.32759831506042814, -0.31988385253859075, -0.31569976710827186,
-0.30910413075969834, -0.3010409267524764, -0.29285891487944404,
-0.2850850213972909, -0.27786209191294153, -0.271191217872597,
-0.26506711002352, -0.25940248158907125, -0.25418452683527765},
{3.3169587633017126, 1.5497063080739397, 0.5316461961765643,
-0.010381970131635547, -0.23694348880842547, -0.3206150651856383,
-0.3462701059289939, -0.34789369201860443, -0.3363730665502849,
-0.32780248391670797, -0.3200605964669836, -0.31583079612959103,
-0.3091702810817144, -0.30106820199424733, -0.2928634686621702,
-0.28507531722472895, -0.27784293444853136, -0.2711654579681793,
-0.26503661046304694, -0.25936852629687035, -0.25414801316162144},
{3.312839978572017, 1.542370892859954, 0.5261254154002045,
-0.01389887127228705, -0.2389801239772871, -0.32180228930831123,
-0.3469849220105906, -0.34831476406995293, -0.3366595821012345,
-0.32800412300832654, -0.3202359776406652, -0.31595971198375616,
-0.3092347623745707, -0.3010942195778801, -0.2928670256115167,
-0.28506478777467503, -0.2778230717487341, -0.2711390816107282,
-0.2650055632587067, -0.2593340784696545, -0.2541110517128595},
{3.308700453482403, 1.5350501049546665, 0.5206242216787613,
-0.017396746451023945, -0.24100301487238124, -0.3229801962496024,
-0.34769337127491096, -0.3487310284507981, -0.3369429759114412,
-0.3282032526145036, -0.3204099958403331, -0.31608652796548253,
-0.3092975901973463, -0.3011189916591347, -0.2928695952780561,
-0.2850534408907845, -0.27780251049410853, -0.2711120946271733,
-0.26497397361732067, -0.25929914280808963, -0.2540736467784927},
{3.3045403275611256, 1.5277439798487553, 0.5151425750692733,
-0.02087568167501586, -0.24301224426919532, -0.32414885057561316,
-0.348395501397861, -0.34914252754774455, -0.3372232727342232,
-0.3283998928455695, -0.3205826503262616, -0.31621125741797235,
-0.3093587799841286, -0.30114253027582255, -0.29287118712023963,
-0.28504128434291076, -0.2777812573036994, -0.2710845027921951,
-0.2649418466992681, -0.25926372397112607, -0.254035802610257},
{3.300359740003754, 1.5204525522953076, 0.5096804355853267,
-0.02433576269671413, -0.2450078944817351, -0.3253083164054433,
-0.3490913596889472, -0.3495493035683028, -0.33750049710795155,
-0.32859406364450466, -0.3207539398774596, -0.316333913729129,
-0.30941834704438276, -0.301164847348968, -0.29287181050537775,
-0.2850283258278869, -0.27775931873566234, -0.2710563118287622,
-0.26490918761893445, -0.2592278265764037, -0.253997523422493},
{3.2961588296709756, 1.5131758563160438, 0.5042377631964828,
-0.02777707501270774, -0.24699004736449082, -0.32645865741417573,
-0.34978099309418337, -0.34995139853410134, -0.3377746733582577,
-0.32878578478845555, -0.3209238628297775, -0.31645451032782657,
-0.30947630656333086, -0.30118595468396026, -0.2928714747106023,
-0.2850145729702794, -0.27773670128786904, -0.2710275274086532,
-0.2648760014451479, -0.2591914552006478, -0.25395881339249754},
{3.2919377350864463, 1.505913925207514, 0.4988145178277222,
-0.031199703862620158, -0.24895878431440593, -0.32759993683585004,
-0.3504644481989555, -0.3503488542742882, -0.3380458256002153,
-0.328975075890242, -0.3210924171129163, -0.31657306068025176,
-0.3095326736023584, -0.3012058639717032, -0.2928701889238223,
-0.28500003332314555, -0.2777134113985048, -0.27099815515297393,
-0.2648422932016185, -0.2591546143800654, -0.253919676660881},
{3.287696594434672, 1.4986667915472751, 0.49341065935891304,
-0.03460373422804104, -0.25091418627287326, -0.3287322174664229,
-0.3511417712308839, -0.3507417124191223, -0.3383139777405016,
-0.32916195639984813, -0.32125960028630773, -0.31668957828630906,
-0.30958746309943663, -0.30122458678975067, -0.29286796224467404,
-0.28498471436878076, -0.2776894554466599, -0.2709682006326702,
-0.26480806786737116, -0.25911730861073623, -0.2538801173319222},
{3.2834355455589392, 1.4914344872000276, 0.48802614762431007,
-0.037989250831477965, -0.2528563337276906, -0.32985556166670216,
-0.3518130080626486, -0.35113001439375646, -0.3385791534795197,
-0.3293464456058952, -0.3214254095738319, -0.3168040766760835,
-0.3096406898695556, -0.30124213460342975, -0.2928648036854465,
-0.28496862351944907, -0.27766483975289324, -0.2709376693690205,
-0.26477333037717077, -0.25907954234899655, -0.25384013947390693},
{3.27915472595926, 1.4842170433237358, 0.48266094241206603,
-0.04135633813535867, -0.2547853067150571, -0.33097003136527775,
-0.3524782042147961, -0.35151380141223204, -0.33884137631351235,
-0.32952856263710717, -0.32158984189735745, -0.31691656940638835,
-0.30969236860518723, -0.30125851876696624, -0.29286072217201137,
-0.2849517681181194, -0.2776395705798022, -0.2709065668341417,
-0.2647380856219493, -0.2590413200118261, -0.25379974711948167},
{3.2748542727903853, 1.4770144903757096, 0.47731500346377925,
-0.04470508034104276, -0.25670118482154136, -0.3320756880614176,
-0.3531374048585323, -0.3518931144716674, -0.33910066953663237,
-0.32970832646375636, -0.3217528939090809, -0.31702707005735326,
-0.30974251387674717, -0.30127375052458766, -0.29285572654473124,
-0.28493415543917544, -0.2776136541325685, -0.2708748984514683,
-0.26470233844922203, -0.25900264597722145, -0.2537589442659838},
{3.270534322859819, 1.4698268581186666, 0.47198829047406177,
-0.04803556138788161, -0.25860404718605423, -0.33317259282796274,
-0.3537906548184793, -0.3522679943466615, -0.3393570562429999,
-0.3298857558990944, -0.3219145620226628, -0.3171355922291006,
-0.3097911401330864, -0.301287841011625, -0.2928498255593637,
-0.28491579268913264, -0.2775870965594955, -0.2708426695962342,
-0.26466609366350197, -0.25896352458457406, -0.2537177348757821},
{3.266195012625895, 1.462654175626757, 0.46668076309012596,
-0.0513478649523067, -0.2604939725018524, -0.3342608063142029,
-0.35443799857542374, -0.3526384815839095, -0.33961055932873224,
-0.3300608696007781, -0.3220748424431528, -0.3172421495384764,
-0.30983826170199075, -0.3013008012556051, -0.2928430278879543,
-0.2848966870073411, -0.27755990395254404, -0.2708098855959491,
-0.26462935602671256, -0.2589239601350377, -0.25367612287661007},
{3.261836478195871, 1.455496471291564, 0.46139238091140844,
-0.05464207444693638, -0.2623710390184909, -0.3353403887487261,
-0.3550794802690376, -0.3530046164970208, -0.3398612014939462,
-0.3302336860722665, -0.32223373119569576, -0.3173467556158477,
-0.309883892790695, -0.3013126421773307, -0.29283534211971834,
-0.28487684546667713, -0.2775320823478467, -0.27077655173086107,
-0.2645921302585906, -0.2588839568918947, -0.2536341121618942},
{3.2574588553240877, 1.4483537728280802, 0.45612310348920976,
-0.057918273019735886, -0.2642353245438251, -0.33641139994226577,
-0.35571514370057017, -0.353366439161565, -0.3401090052447373,
-0.3304042236642215, -0.3223912241530382, -0.31744942410197263,
-0.3099280474864157, -0.3013233745919541, -0.29282677676191093,
-0.28485627507423283, -0.27750363772622827, -0.27074267323442297,
-0.2645544210370946, -0.25884351908092423, -0.2535917065910769},
{3.253062279410116, 1.4412261072806407, 0.4508728903263627,
-0.06117654355318487, -0.26608690644597865, -0.33747389929051896,
-0.356345032335539, -0.3537239894103166, -0.3403539928951372,
-0.3305725005758802, -0.32254731706182427, -0.3175501686449288,
-0.3099707397568893, -0.3013330092100365, -0.29281734024069245,
-0.28483498277199065, -0.277474576013711, -0.2707082552937397,
-0.26451623299879473, -0.25880265089075166, -0.2535489099899414},
{3.2486468854969797, 1.434113501028839, 0.4456417008769271,
-0.06441696866348808, -0.26792586165531707, -0.3385279457769524,
-0.3569691893063778, -0.35407730682872557, -0.34059618656904816,
-0.330738534856423, -0.3227020055677071, -0.31764900289711767,
-0.31001198345093417, -0.3013415566386082, -0.2928070409019775,
-0.284812975437501, -0.27744490308202174, -0.27067330305002546,
-0.26447757073927564, -0.25876135647321336, -0.2535057261509323},
{3.2442128082693977, 1.4270159797934108, 0.44042949454590774,
-0.06763963069981485, -0.2697522666664472, -0.3395735979755991,
-0.3575876574150757, -0.3544264307505952, -0.34083560820214676,
-0.3309023444063251, -0.32285528523927454, -0.3177459405123211,
-0.3100517922990153, -0.30134902738220803, -0.2927958870122814,
-0.2847902598845388, -0.27741462474908984, -0.2706378215990405,
-0.2644384388135165, -0.25871963994369873, -0.25346215883346396},
{3.239760182052052, 1.4199335686420804, 0.43523623068899936,
-0.07084461174356146, -0.27156619754017225, -0.34061091405382554,
-0.35820047913579783, -0.3547714002539738, -0.3410722795437754,
-0.331063946978693, -0.323007151590823, -0.31784099514283787,
-0.3100901799138252, -0.3013554318439175, -0.29278388675954736,
-0.2847668428637615, -0.2773837467795478, -0.2706018159915263,
-0.2643988417362858, -0.25867750538150347, -0.2534182117642389},
{3.2352891408079065, 1.4128662919953876, 0.43006186861235635,
-0.07403199360765629, -0.27336772990548924, -0.34163995177509526,
-0.35880769661746825, -0.3551122541572596, -0.34130622215880396,
-0.33122336018059384, -0.3231576001039819, -0.3179341804366785,
-0.31012715979088057, -0.301360780326395, -0.2927710482539791,
-0.2847427310633597, -0.27735227488522907, -0.2705652912336462,
-0.26435878398252105, -0.25863495683017257, -0.25337388863755367},
{3.2307998181365427, 1.4058141736324772, 0.42490636757238964,
-0.07720185783587558, -0.275156938961551, -0.3426607685017062,
-0.3594093516863577, -0.35544903101551084, -0.3415374574294691,
-0.331380601474364, -0.32330662624821793, -0.31802551003482543,
-0.31016274530912363, -0.3013650830328809, -0.2927573795288449,
-0.28471793110969124, -0.27732021472566454, -0.2705282522874003,
-0.2643182699877018, -0.2585919982978372, -0.2533291931156058},
{3.2262923472725418, 1.3987772366968603, 0.4197696867755875,
-0.0803542857022021, -0.27693389947964164, -0.34367342119751554,
-0.3600054858486287, -0.3557817691169712, -0.3417660065571969,
-0.331535688178911, -0.32345422550023983, -0.3181149975685639,
-0.31019694973154055, -0.3013683500682149, -0.29274288854129044,
-0.2846924495679222, -0.2772875719085807, -0.2704907040710575,
-0.2642773041482327, -0.25854863375755643, -0.2532841288287913},
{3.2217668610838928, 1.3917555037021456, 0.4146517853783617,
-0.083489358210211, -0.2786986858051645, -0.3446779664306536,
-0.3605961402928763, -0.35611050647979187, -0.3419918905643978,
-0.33168863747100225, -0.32360039336233165, -0.3182026566568731,
-0.3102297862057879, -0.30137059143983075, -0.29272758317313374,
-0.28466629294264567, -0.2772543519903956, -0.2704526514595626,
-0.26423589082180904, -0.2585048671476472, -0.25323869937601334},
{3.217223492070434, 1.3847489965377417, 0.40955262248692076,
-0.08660715609247191, -0.28045137185959673, -0.3456744603762113,
-0.3611813558926371, -0.35643528084896253, -0.3422151302962435,
-0.3318394663865358, -0.32374512537962774, -0.31828850090388094,
-0.31026126776482654, -0.3013718170587427, -0.2927114712316465,
-0.28463946767850584, -0.27722056047671606, -0.270414099284951,
-0.26419403432778277, -0.2584607023720127, -0.25319290832496766},
{3.212662372362322, 1.3777577364745224, 0.4044721571571663,
-0.08970775980999914, -0.2821920311424754, -0.3466629588189206,
-0.36176117320887996, -0.3567561296934393, -0.3424357464224215,
-0.33198819182180456, -0.3238884171563743, -0.31837254389638747,
-0.31029140732757254, -0.30137203674052826, -0.2926945604503375,
-0.2846119801608059, -0.27718620282283907, -0.27037505233675524,
-0.26415173894752697, -0.25841614330047075, -0.2531467592124394},
{3.208083633718547, 1.370781744170466, 0.3994103483946161,
-0.09279124955170878, -0.2839207367333574, -0.34764351715581326,
-0.36233563249249134, -0.3570730902034721, -0.3426537594388687,
-0.33213483053474635, -0.3240302643711921, -0.31845479920145225,
-0.3103202176995522, -0.3013712602062992, -0.2926768584897203,
-0.28458383671611437, -0.27715128443424686, -0.2703355153624048,
-0.2641090089247987, -0.258371193769076, -0.2531002555445957},
{3.2034874075254685, 1.36382103967627, 0.39436715515435394,
-0.09585770523391435, -0.2856375612937838, -0.3486161903988637,
-0.3629047736867196, -0.35738619928812126, -0.34286918966948554,
-0.33227939914618126, -0.32417066279137124, -0.31853528036404183,
-0.3103477115735684, -0.3013694970836619, -0.2926583729380737,
-0.2845550436128641, -0.27711581066710894, -0.2702954930676248,
-0.2640658484660885, -0.2583258575804397, -0.2530534007972684},
{3.1988738247953723, 1.3568756424409167, 0.38934253634099847,
-0.0989072064998505, -0.2873425770692589, -0.3495810331776237,
-0.3634686364296154, -0.35769549357296826, -0.3430820572678271,
-0.33242191414104766, -0.32430960828622635, -0.31861400090474207,
-0.3103739015303736, -0.30136675690766757, -0.29263911131219145,
-0.28452560706193997, -0.2770797868287823, -0.27025499011682486,
-0.26402226174097604, -0.258280138504042, -0.2530061984162389},
{3.1942430161650903, 1.3499455713172275, 0.3843364508087045,
-0.10193983271921267, -0.2890358558911969, -0.35053809974182837,
-0.3640272600564463, -0.3580010093980119, -0.34329238221877956,
-0.3325623918696742, -0.32444709683955153, -0.3186909743175336,
-0.3103988000393546, -0.3013630491217618, -0.29261908105812856,
-0.28449553321726456, -0.2770432181783069, -0.2702140111334923,
-0.2639782528824811, -0.2582340402765514, -0.25295865181751986},
{3.1895951118946164, 1.3430308445673746, 0.3793488573611844,
-0.10495566298774095, -0.29071746917889874, -0.3514874439640002,
-0.36458068360208945, -0.35830278281574346, -0.3435001843402076,
-0.3327008485491989, -0.32458312456118665, -0.31876621406762995,
-0.3104224194592223, -0.3013583830787127, -0.2925982895519332,
-0.28446482817637836, -0.27700610992690705, -0.2701725607005705,
-0.26393382598740345, -0.25818756660212655, -0.25291076438763105},
{3.184930241865776, 1.336131479868361, 0.3743797147517519,
-0.10795477612680822, -0.29238748794150043, -0.35242911934202265,
-0.3651289458034172, -0.3586008495894055, -0.34370548328459427,
-0.33283730026542657, -0.32471768769774245, -0.31883973358937534,
-0.3104447720387123, -0.3013527680415383, -0.2925767441003759,
-0.284433497981007, -0.27696846723849067, -0.27013064336084275,
-0.26388898511666853, -0.2581407211527277, -0.2528625394838781},
{3.180248535580916, 1.3292474943174775, 0.3694289816833995,
-0.11093725068304752, -0.29404598277992283, -0.35336317900170916,
-0.3656720851016468, -0.35889524519142185, -0.34390829854064997,
-0.33297176297562714, -0.324850782642501, -0.31891154628420276,
-0.3104658699172872, -0.30134621318442273, -0.29255445194166346,
-0.28440154861762545, -0.2769302952301386, -0.27008826361730254,
-0.26384373429566393, -0.2580935075684169, -0.25281398043461645},
{3.1755501221616207, 1.3223789044377177, 0.3644966168088869,
-0.11390316492800742, -0.29569302388884555, -0.35428967569935477,
-0.3662101396446892, -0.35918600480199936, -0.34410864943491215,
-0.33310425251310966, -0.32498240594453337, -0.3189816655186605,
-0.31048572512585515, -0.3013387275936252, -0.2925314202461566,
-0.28436898601802185, -0.2768915989726066, -0.27004542593353176,
-0.26379807751457496, -0.2580459294576604, -0.25276509053953156},
{3.170835130347472, 1.315525726183171, 0.35958257873086413,
-0.11685259685781528, -0.29732868105863514, -0.35520866182426675,
-0.3667431472894622, -0.35947316330789375, -0.34430655513331687,
-0.33323478459463096, -0.32511255431705377, -0.3190501046224815,
-0.31050434958747825, -0.30133032026837525, -0.29250765611706087,
-0.2843358160598398, -0.2768523834908093, -0.2700021347340591,
-0.2637520187287125, -0.2579979903976207, -0.25271587306989585},
{3.1661036884948306, 1.3086879749443754, 0.3546868260020126,
-0.11978562419288946, -0.2989530236773127, -0.35612018940128853,
-0.36727114560419544, -0.3597567553013427, -0.3445020346427634,
-0.33336337483195444, -0.32524122464504635, -0.3191168768867351,
-0.310521755118113, -0.30132100012176505, -0.29248316659113177,
-0.28430204456713476, -0.2768126537643144, -0.2699583944047343,
-0.2637055618588485, -0.2579496939344553, -0.25266633126883825},
{3.161355924575637, 1.3018656655536471, 0.34980931712521146,
-0.1227023243776518, -0.3005661207324851, -0.35702431009329444,
-0.3677941718707212, -0.36003681507914753, -0.34469510681264914,
-0.33349003874887034, -0.3253684139921872, -0.31918199556201343,
-0.31053795342732415, -0.3013107759816301, -0.2924579586393538,
-0.28426767731090463, -0.27677241472782593, -0.26991420929307763,
-0.2636587107915328, -0.25790104358360444, -0.2526164683516009},
{3.15659196617626, 1.2950588122903723, 0.344950010553728,
-0.12560277458027633, -0.30216804081328347, -0.35792107520368205,
-0.36831226308672904, -0.36031337664191576, -0.3448857903363907,
-0.3336147918049308, -0.3254941196070963, -0.319245473856693,
-0.31055295611903416, -0.3012996565914166, -0.2924320391676203,
-0.28423272000962685, -0.27673167127166143, -0.26986958370864134,
-0.2636114693794194, -0.25785204283007884, -0.2525662875058009},
{3.1518119404963576, 1.2882674288862677, 0.3401088646914262,
-0.12848705169246422, -0.3037588521123207, -0.3588105356788467,
-0.3688254559680246, -0.3605864736934514, -0.3450741037529335,
-0.33373764942687484, -0.3256183389289455, -0.31930732493524444,
-0.31056677469225513, -0.3012876506110541, -0.2924054150174058,
-0.2841971783297845, -0.27669042824223555, -0.2698245219233622,
-0.2635638414415823, -0.25780269512874365, -0.2525157918916838},
{3.1470159743477693, 1.2814915285306094, 0.3352858378930043,
-0.13135523232922872, -0.30533862242760407, -0.3596927421106314,
-0.36933378695075475, -0.36085613964028296, -0.34526006544823246,
-0.3338586270483151, -0.3257410695924357, -0.3193675619165994,
-0.31057942054183874, -0.30127476661779984, -0.29237809296642686,
-0.28416105788639084, -0.27664869044252516, -0.26977902817190524,
-0.26351583076383067, -0.25775300390459904, -0.252464984642377},
{3.1422041941534613, 1.2747311238754415, 0.33048088846425117,
-0.13420739282872185, -0.30690741916448605, -0.36056774473877673,
-0.3698372921936157, -0.36112240759134323, -0.3454436936567265,
-0.3339777401578296, -0.3258623094321876, -0.3194261978725789,
-0.31059090495922315, -0.3012610131070927, -0.2923500797293004,
-0.28412436424349824, -0.27660646263254407, -0.2697331066520157,
-0.26346744109902215, -0.2577029725530647, -0.2524138688641389},
{3.1373767259464502, 1.2679862270407283, 0.32569397466232397,
-0.13704360925206255, -0.308465309337581, -0.3614355934533403,
-0.37033600758005825, -0.36138531035777033, -0.34562500646278616,
-0.33409500435506023, -0.3259820564865558, -0.3194832458263655,
-0.31060123913318644, -0.30124639849338586, -0.2923213819581877,
-0.2840871029147142, -0.2765637495297992, -0.2696867615248545,
-0.263418676167369, -0.2576526044402459, -0.25236244763660864},
{3.132533695368801, 1.2612568496195, 0.3209250546960507,
-0.13986395738320023, -0.3100123595726858, -0.3622963377971078,
-0.3708299687204546, -0.36164488045285387, -0.34580402180215264,
-0.3342104354139728, -0.3261003090008887, -0.3195387187510409,
-0.31061043415060585, -0.30123093111097954, -0.29229200624344015,
-0.2840492793637027, -0.2765205558097511, -0.2696399969153392,
-0.26336953965674637, -0.2576019029032173, -0.2523107240130511},
{3.127675227670628, 1.2545430026829503, 0.316174086726249,
-0.14266851272879993, -0.3115486361087181, -0.3631500269679958,
-0.3713192109542654, -0.3619011500920972, -0.34598075746335566,
-0.3343240493519988, -0.32621706543026036, -0.319592629568169,
-0.3106185009972113, -0.3012146192148382, -0.2922619591142301,
-0.28401089900468146, -0.27647688610626364, -0.26959281691248105,
-0.26332003522299097, -0.25755087125028314, -0.2522587010205972},
{3.1228014477091266, 1.2478446967855077, 0.31144102886607183,
-0.14545735051813835, -0.31307420479961356, -0.3639967098214233,
-0.3718037693521789, -0.3621541511934074, -0.34615523108911667,
-0.3344358625034318, -0.326332324441698, -0.31964499114643113,
-0.3106254505583517, -0.30119747098140504, -0.2922312470391746,
-0.2839719672029159, -0.27643274501204673, -0.2695452255697075,
-0.26327016649020374, -0.2574995127612504, -0.25220638166048726},
{3.117912479947633, 1.2411619419698758, 0.30672583918136936,
-0.1482305457030374, -0.31458913111625625, -0.364836434872687,
-0.3722836787182326, -0.3624039153774046, -0.3463274601777329,
-0.3345458915952334, -0.32644608491592036, -0.31969581630031885,
-0.310631293619759, -0.30117949450940623, -0.2921998764269617,
-0.2839324892752067, -0.2763881370790988, -0.26949722690520106,
-0.263219937051045, -0.2574478306876897, -0.25215376890830404},
{3.11300844845472, 1.234494747772042, 0.3020284756910748,
-0.15098817295779926, -0.3160934801483764, -0.3656692502993048,
-0.3727589735919293, -0.36265047396783723, -0.34649746208445154,
-0.3346541538232452, -0.32655834594860533, -0.3197451177888691,
-0.3106360408683127, -0.30116069782064264, -0.2921678536269557,
-0.2838924704903699, -0.2763430668191393, -0.26944882490221567,
-0.2631693504670259, -0.25739582825320123, -0.25210086571421453},
{3.108089476903294, 1.227843123226249, 0.2973488963676076,
-0.15373030667917523, -0.31758731660645256, -0.3664952039433543,
-0.3732296882503228, -0.36289385799211965, -0.3466652540228233,
-0.33476066692679696, -0.3266691068512225, -0.31979290831445834,
-0.3106397028928104, -0.3011410888607853, -0.29213518492980806,
-0.28385191606971705, -0.27629753870403584, -0.2694000235094053,
-0.2631184102688039, -0.2573435086536723, -0.25204767500319814},
{3.103155688569754, 1.2212070768699426, 0.29268705913729764,
-0.1564570209863505, -0.31907070482362765, -0.3673143433137936,
-0.3736958567100946, -0.3631340981819624, -0.3468308530660392,
-0.3348654492597348, -0.3267783671514334, -0.319839200521635,
-0.31064229018473255, -0.3011206755001453, -0.2921018765680509,
-0.2838108311875204, -0.27625155716622024, -0.2693508266411338,
-0.2630671199564613, -0.2572908750575286, -0.25199419967527525},
{3.098207206333137, 1.2145866167486798, 0.28804292188082814,
-0.15916838972094577, -0.32054370875758814, -0.36812671558877086,
-0.37415751272961334, -0.3633712249741131, -0.3469942761482603,
-0.33496851985605813, -0.3268861265930981, -0.319884006996007,
-0.31064381313901696, -0.3010994655344523, -0.29206793471669446,
-0.2837692209714824, -0.27620512659910884, -0.26930123817779583,
-0.26301548299979777, -0.2572379306059963, -0.25194044260574394},
{3.09324415267432, 1.2079817504210089, 0.2834164424336985,
-0.16186448644704582, -0.32200639199247205, -0.3689323676179137,
-0.37461468981096835, -0.36360526851118935, -0.3471555400659212,
-0.3350698984885323, -0.3269923851359002, -0.31992734026317526,
-0.3106442820548285, -0.30107746668561364, -0.2920333654938066,
-0.2837270905031974, -0.2761582513575053, -0.2692512619661293,
-0.26296350283861003, -0.25718467841334725, -0.2518864066453941},
{3.088266649675235, 1.2013924849633213, 0.2788075785867046,
-0.16454538445123568, -0.3234588177407464, -0.36973134592460666,
-0.37506742120200814, -0.3638362586426117, -0.34731466147902945,
-0.3351696057188946, -0.32709714295461756, -0.3199692127877124,
-0.3106437071363307, -0.3010546866024727, -0.2919981749610972,
-0.2836844448186049, -0.2761109357580078, -0.2692009018195217,
-0.26291118288296816, -0.25713112156715123, -0.2518320946207443},
{3.083274819018097, 1.1948188269746605, 0.27421628808644005,
-0.16721115674266063, -0.3249010488450859, -0.37052369670824953,
-0.3755157398983362, -0.3640642249256141, -0.34747165691243986,
-0.33526766293853594, -0.3272004004380578, -0.32000963697218543,
-0.3106420984934553, -0.30103113286155375, -0.2919623691244851,
-0.28364128890844137, -0.2760631840793972, -0.2691501615183146,
-0.2628585265134919, -0.2570772631285184, -0.2517775093342476},
{3.0782687819846872, 1.188260782581514, 0.26964252863581173,
-0.16986187605311087, -0.3263331477802687, -0.37130946584651453,
-0.3759596786453124, -0.3642891966263524, -0.34762654275712274,
-0.33536409239884535, -0.3273021581876892, -0.32004862515622495,
-0.31063946614267646, -0.3010068129678021, -0.2919259539346664,
-0.2835976277186843, -0.2760150005630321, -0.26909904481011226,
-0.262805537081626, -0.2570231061323447, -0.2517226535645268},
{3.0732486594556314, 1.18171835744256, 0.2650862578945747,
-0.17249761483710851, -0.3277551766550328, -0.3720886988975733,
-0.37639926994002776, -0.3645112027210906, -0.34777933527141836,
-0.3354589172306492, -0.32740241701598105, -0.32008618961563656,
-0.31063582000777945, -0.30098173435531816, -0.29188893528767434,
-0.2835534661509935, -0.27596638941322965, -0.2690475554100759,
-0.2627522179099104, -0.25696865358755533, -0.2516675300665777},
{3.0682145719097136, 1.1751915567533926, 0.26054743347988635,
-0.17511844527203344, -0.32916719721395954, -0.37286144110232095,
-0.37683454603325917, -0.3647302718974626, -0.34793005058226406,
-0.33555216145248806, -0.3275011779444809, -0.3201223425615579,
-0.31063116992063333, -0.3009559043880785, -0.291851319025431,
-0.2835088090631488, -0.27591735479764024, -0.26899569700122294,
-0.262698572292244, -0.25691390847733686, -0.25161214157199147},
{3.063166639423221, 1.1686803852512073, 0.2560260129668741,
-0.1777244392582415, -0.3305692708393285, -0.37362773738657423,
-0.3772655389314244, -0.3649464325558097, -0.3480787046864272,
-0.33564384996770114, -0.32759844220165407, -0.3201570961396496,
-0.31062552562195683, -0.30092933036065506, -0.29181311093629364,
-0.2834636612694781, -0.27586790084762297, -0.2689434732347228,
-0.26264460349415375, -0.25685887375938227, -0.2515564907891665},
{3.0581049816692962, 1.1621848472194611, 0.2515219538892209,
-0.1803156684192167, -0.33196145855297376, -0.37438763236326794,
-0.37769228039850267, -0.3651597128105918, -0.348225313451707,
-0.3357340085505352, -0.3276942112204958, -0.3201904624293374,
-0.31061889676208926, -0.3009020194989214, -0.29177431675559645,
-0.28341802754128387, -0.27581803165860547, -0.2688908877301831,
-0.2625903147530557, -0.2568035523661141, -0.251500580403514},
{3.05302971791733, 1.1557049464924969, 0.24703521373976778,
-0.18289220410174029, -0.3333438210181542, -0.37514117033463185,
-0.37811480195795744, -0.3653701404918666, -0.3483698926181382,
-0.33582266382169107, -0.32778848663595467, -0.32022245344308853,
-0.3106112929017584, -0.30087397896075824, -0.291734942166188,
-0.2833719126072681, -0.2757677512904493, -0.2688379440759468,
-0.2625357092785138, -0.25674794720492644, -0.2514444130776724},
{3.0479409670323627, 1.1492406864601385, 0.2425657499711307,
-0.18545411737605808, -0.3347164185413843, -0.3758883952943488,
-0.3785331348946256, -0.3655777431468267, -0.3485124577991618,
-0.3359098432138734, -0.3278812702821672, -0.3202530811257226,
-0.31060272351283996, -0.30084521583674173, -0.2916949927989521,
-0.2833253211539427, -0.2757170637677959, -0.26878464582936745,
-0.2624807902524967, -0.2566920611584052, -0.2513879914517078},
{3.0428388474745227, 1.1427920700722545, 0.23811351999633412,
-0.18800147903609354, -0.3360793110742955, -0.3766293509297117,
-0.3789473102566056, -0.36578254804140625, -0.34865302448280855,
-0.3359955749280963, -0.32797256418954573, -0.3202823573537732,
-0.31059319797912854, -0.3008157371508365, -0.2916544742333396,
-0.28327825782604954, -0.2756659730804221, -0.2687309965170997,
-0.2624255608296336, -0.2566358970845609, -0.2513313181433224},
{3.0377234772984756, 1.1363590998432858, 0.2336784811894579,
-0.1905343595996426, -0.3374325582154657, -0.3773640806237484,
-0.37935735885712796, -0.36598458216193963, -0.34879160803284304,
-0.33607988788154086, -0.3280623705817153, -0.3203102939348754,
-0.3105827255970935, -0.30078554986107175, -0.29161339199788,
-0.28323072722696313, -0.27561448318358084, -0.26867699963537717,
-0.2623700241374655, -0.25657945781705066, -0.2512743957480554},
{3.032594974152899, 1.1299417778567502, 0.22926059088630202,
-0.19305282930860665, -0.3387762192122463, -0.37809262745734457,
-0.37976331127640134, -0.36618387221687654, -0.34892822368991233,
-0.3361628116479041, -0.3281506918723292, -0.32033690260719355,
-0.3105713155766388, -0.30075466086021163, -0.291571751570692,
-0.2831827339190916, -0.2755625979983309, -0.2686226586502891,
-0.2623141832766923, -0.256522746165399, -0.25121722683948},
{3.027453455279992, 1.1235401057697114, 0.22485980638506045,
-0.1955569581292379, -0.34011035296261305, -0.3788150342113587,
-0.3801651978634588, -0.3663804446385529, -0.3490628865726785,
-0.33624437639119825, -0.32823753066178835, -0.3203621950388882,
-0.31055897704186175, -0.3007230769764245, -0.2915295583799938,
-0.28313428242428446, -0.2755103214118831, -0.2685679769980567,
-0.2622580413214235, -0.256465764915219, -0.2511598139694045},
{3.0222990375149776, 1.1171540848172101, 0.22047608494701496,
-0.19804681575238295, -0.34143501801696363, -0.3795313433687037,
-0.3805630487379764, -0.3665743255850039, -0.3491956116789325,
-0.33632461279397713, -0.3283228897338532, -0.32038618282761083,
-0.3105457190318048, -0.3006908049739384, -0.291486817804597,
-0.28308537722421667, -0.2754576572779156, -0.26851295808530234,
-0.2622016013194196, -0.25640851682843124, -0.2511021596680701},
{3.0171318372856653, 1.1107837158166776, 0.21610938379723765,
-0.20052247159376868, -0.34275027257995955, -0.38024159711643635,
-0.380956893792078, -0.3667655409418314, -0.34932641388670316,
-0.33640355198102045, -0.328406772052191, -0.3204088775000369,
-0.31053155050120756, -0.30065785155369146, -0.29144353517440547,
-0.2830360227607838, -0.27540460941690126, -0.2684576052893229,
-0.2621448662923341, -0.2563510046434753, -0.2510442664443367},
{3.0119519706120053, 1.1044289991723082, 0.21175966012530825,
-0.2029839947942721, -0.3440561745123224, -0.3809458373478151,
-0.38134676269213896, -0.3669541163241104, -0.3494553079553501,
-0.33648122543944253, -0.3284891807568539, -0.3204302905114345,
-0.31051648032125495, -0.3006242233539786, -0.2913997157709013,
-0.2829862234364844, -0.2753511816164273, -0.26840192195835394,
-0.2620878392359528, -0.2562932310755291, -0.2509861367858853},
{3.0067595531056766, 1.0980899348794029, 0.20742687108604607,
-0.2054314542202227, -0.34535278133264163, -0.3816441056643567,
-0.3817326848805585, -0.367140077078344, -0.34958230852664773,
-0.33655766493619926, -0.32857011916070583, -0.3204504332452617,
-0.31050051728032346, -0.30058992695108555, -0.29135536482763047,
-0.282935983614798, -0.2752973776315031, -0.26834591141183595,
-0.2620305231204343, -0.2562351988167149, -0.2509277731594022},
{3.00155469996969, 1.0917665225286826, 0.20311097380025103,
-0.20786491846371627, -0.34664015021918815, -0.38233644337787454,
-0.3821146895775285, -0.36732344828444674, -0.3497074301258497,
-0.3366329024339151, -0.3286495907458039, -0.32046931701278975,
-0.3104836700847205, -0.3005549688599203, -0.29131048753067923,
-0.28288530762055564, -0.2752432011848746, -0.2682895769406754,
-0.2619729208905378, -0.2561769105363082, -0.2508691780107667},
{2.9963375259980256, 1.0854587613105717, 0.198811925355459,
-0.21028445584293015, -0.34791833801169514, -0.38302289151250263,
-0.3824928057827831, -0.3675042547577823, -0.34983068716275334,
-0.3367069700059023, -0.3287275991597568, -0.3204869530527699,
-0.31046594735942457, -0.3005193555346368, -0.2912650890191445,
-0.2828341997403071, -0.275188655967323, -0.268232921807503,
-0.2619150354658634, -0.25611836888094985, -0.2508103537652423},
{2.9911081455752724, 1.0791666500194488, 0.1945296828067078,
-0.2126901344024728, -0.34918740121316444, -0.3837034908067103,
-0.3828670622773324, -0.36768252105122523, -0.34995209393274407,
-0.33677989975118244, -0.3288041482120542, -0.32050335253112067,
-0.31044735764882025, -0.3004830933692516, -0.2912191743856074,
-0.2827826642226762, -0.2751337456379676, -0.2681759492469308,
-0.2618568697410732, -0.2560595764748425, -0.2507513028276531},
{2.9858666726763015, 1.072890187057867, 0.19026420317731635,
-0.21508202191371906, -0.35044739599163666, -0.3843782817152965,
-0.3832374876251919, -0.3678582714572593, -0.3500716646178295,
-0.33685172371026817, -0.32887924187038436, -0.32051852654064283,
-0.3104279094174285, -0.3004461886982533, -0.2911727486765883,
-0.282730705278713, -0.275078473824563, -0.2681186624658085,
-0.26179842658612507, -0.25600053591996164, -0.2506920275825763},
{2.980613220865956, 1.066629370440747, 0.18601544345967203,
-0.2174601858751761, -0.3516983781819726, -0.3850473044113768,
-0.38360411017508733, -0.36803153001011635, -0.3501894132876662,
-0.33692247378237944, -0.32895288425694347, -0.320532486100775,
-0.3104076110506354, -0.30040864779720866, -0.29112581689301115,
-0.28267832708223595, -0.2750228441237887, -0.2680610646434766,
-0.2617397088465007, -0.25594124979625366, -0.25063253039451894},
{2.975347903298763, 1.0603841977995323, 0.18178336061602934,
-0.21982469351286346, -0.35294040328763815, -0.3857105987883601,
-0.3839669580621509, -0.36820232048793194, -0.3503053539005717,
-0.3369921816447041, -0.32902507964474625, -0.3205452421573557,
-0.3103864708554143, -0.3003704768833555, -0.29107838399064784,
-0.2826255337701621, -0.2749668601015364, -0.26800315893200766,
-0.2616807193434162, -0.255881720661828, -0.25057281360809014},
{2.9700708327186582, 1.0541546663863228, 0.17756791157932164,
-0.22217561178068265, -0.3541735264824535, -0.38636820446189946,
-0.3843260592096042, -0.3683706664149445, -0.35041950030452507,
-0.33706087867425105, -0.3290958324539413, -0.3205568055824348,
-0.3103644970610449, -0.30033168211619626, -0.29103045488057244,
-0.28257232944284105, -0.2749105252931972, -0.2679449484564625,
-0.2616214608740575, -0.25582195105316513, -0.2505128795481919},
{2.964782121458736, 1.0479407730779713, 0.17336905325397936,
-0.22451300736083113, -0.3553978026123713, -0.3870201607718479,
-0.38468144133041904, -0.3685365910637108, -0.3505318662381615,
-0.33712859587276434, -0.3291651472481372, -0.32056718717409277,
-0.31034169781983106, -0.30029226959808125, -0.2909820344295972,
-0.2825187181643724, -0.2748538432039375, -0.26788643631513187,
-0.26156193621178847, -0.25576194348530085, -0.25045273052018063},
{2.9594818814410266, 1.0417425143801538, 0.1691867425167575,
-0.226836946664196, -0.35661328619722227, -0.3876665067841843,
-0.38503313192898436, -0.36870011745735626, -0.3506424653317521,
-0.3371953637950943, -0.3292330287307422, -0.32057639765629903,
-0.3103180812078107, -0.3002522453747897, -0.29093312746071537,
-0.2824647039629221, -0.2747968173089846, -0.26782762557977857,
-0.2615021481063745, -0.255701700452028, -0.2503923688100555},
{2.9541702241762664, 1.0355598864314048, 0.1650209362175774,
-0.2291474958307733, -0.35782003143246033, -0.3883072812929332,
-0.3853811583027342, -0.3688612683718371, -0.3507513111081719,
-0.33726121248136204, -0.32929948174132406, -0.3205844476787805,
-0.310293655225461, -0.30021161543609454, -0.29088373875352874,
-0.28241029083103, -0.27473945105388764, -0.26776851929587636,
-0.26144209928419043, -0.25564122442608, -0.25033179668461597},
{2.9488472607637286, 1.0293928850071339, 0.16087159118037056,
-0.23144472073010713, -0.3590180921909217, -0.38894252282207914,
-0.3857255475437884, -0.36902006633823675, -0.35085841698386283,
-0.3373261713932062, -0.32936451125199306, -0.3205913478169284,
-0.31026842779840397, -0.30017038571633436, -0.2908338730446785,
-0.2823554827259185, -0.2746817478548015, -0.26770912048285084,
-0.2613817924484381, -0.255580517859323, -0.25027101639164406},
{2.9435131018910283, 1.023241505523593, 0.15673866420393406,
-0.23372868696171234, -0.3602075220245439, -0.38957226962745606,
-0.3860663265405557, -0.3691765336450712, -0.3509637962697821,
-0.337390269354299, -0.3294281223638077, -0.32059710857171636,
-0.31024240677810033, -0.3001285620949721, -0.2907835350282676,
-0.28230028356979003, -0.2746237110987415, -0.26764943213431325,
-0.26132123027935367, -0.25551958318294427, -0.25021003016006677},
{2.9381678578339776, 1.0171057430418347, 0.15262211206279686,
-0.235999459855543, -0.36138837416611486, -0.3901965596986317,
-0.3864035219793408, -0.3693306923406191, -0.35106746217234114,
-0.33745353449531734, -0.32949032030321046, -0.3206017403696465,
-0.3102155999425473, -0.30008615039714315, -0.2907327293562759,
-0.282244697250129, -0.2745653441438537, -0.2675894572182901,
-0.26126041543441375, -0.255458422807632, -0.25014884020012196},
{2.9328116384564487, 1.0109855922716282, 0.1485218915080883,
-0.23825710447243537, -0.3625607015309852, -0.39081543076077485,
-0.3867371603459345, -0.3694825642352609, -0.3511694277943361,
-0.3375159942034563, -0.3295511104184974, -0.32060525356271713,
-0.310188014996966, -0.3000431563942108, -0.2906814606389801,
-0.28218872762000186, -0.27450665031967786, -0.26752919867746344,
-0.2611993505485454, -0.25539703912376865, -0.2500874487035319},
{2.9274445532102473, 1.0048810475753467, 0.1444379592684194,
-0.24050168560458063, -0.36372455671878584, -0.3914289202765123,
-0.3870672679271854, -0.3696321709038385, -0.3512697061358662,
-0.337577675076557, -0.32961049817630866, -0.32060765842840794,
-0.31015965957448216, -0.29999958580430025, -0.2906297334453557,
-0.28213237849834555, -0.2744476329273956, -0.26746865942938974,
-0.26113803823432713, -0.25533543450159907, -0.25002585784365644},
{2.922066711135021, 0.9987921029718309, 0.14037027205076721,
-0.2427332677760127, -0.3648799920151557, -0.39203706544777833,
-0.3873938708125693, -0.3697795336880197, -0.3513683100952487,
-0.33763860288186587, -0.32966848915816827, -0.32060896516969095,
-0.31013054123681194, -0.29995544429283955, -0.29057755230348886,
-0.28207565367027226, -0.2743882952400966, -0.26740784236673354,
-0.26107648108219095, -0.2552736112914219, -0.2499640697756639},
{2.9166782208581727, 0.9927187521402185, 0.13631878654136823,
-0.24495191524307766, -0.36602705939343017, -0.3926399032176369,
-0.3877169948957325, -0.3699246736986734, -0.3514652524699099,
-0.3376988025193982, -0.3297250890570458, -0.32060918391505266,
-0.31010066747492915, -0.2999107374730863, -0.2905249217009706,
-0.2820185568873583, -0.27432864050302036, -0.2673467503574871,
-0.26101468166062425, -0.2552115718237618, -0.24990208663668836},
{2.911279190594791, 0.9866609884237442, 0.13228345940661815,
-0.24715769199495324, -0.36716581051635777, -0.3932374702721165,
-0.38803666587603214, -0.3700676118182551, -0.351560545957285,
-0.33775829798986945, -0.3297803036739631, -0.32060832471854717,
-0.3100700457097405, -0.29986547090665217, -0.2904718460852958,
-0.2819610918679447, -0.2742686719338111, -0.2672853862451969,
-0.2609526425163613, -0.2551493184095458, -0.2498399105459853},
{2.9058697281476076, 0.9806188048335136, 0.12826424729397584,
-0.24935066175413373, -0.3682962967377841, -0.3938298030420001,
-0.3883529092600664, -0.3702083687031913, -0.35165420315569695,
-0.3378171123670928, -0.32983413891463537, -0.3206063975598595,
-0.31003868329274886, -0.2998196501040247, -0.2904183298642559,
-0.2819032622974347, -0.27420839272276554, -0.26722375284918126,
-0.2608903661745892, -0.2550868533402807, -0.2497775436050974},
{2.900449940906967, 0.9745921940522478, 0.12426110683287897,
-0.25153088797695045, -0.3694185691043359, -0.3944169377046312,
-0.38866575036318024, -0.37034696478627055, -0.35174623656522586,
-0.33787526777474247, -0.32988660078614823, -0.32060341234438827,
-0.3100065875067136, -0.2997732805250739, -0.29036437740632237,
-0.2818450718285874, -0.2741478060330694, -0.2671618529647487,
-0.26082785513913254, -0.2550241788882228, -0.24971498789800334},
{2.895019935850807, 0.9685811484379936, 0.12027399463565427,
-0.2536984338541023, -0.37053267835711917, -0.3949989101856965,
-0.3889752143109722, -0.37048342027903514, -0.3518366585885748,
-0.33793278536735755, -0.3299376953936808, -0.32059937890335344,
-0.3099737655663015, -0.2997263675795646, -0.2903099930410334,
-0.2817865240818233, -0.27408691500104415, -0.2670996893634162,
-0.26076511189264784, -0.254961297306548, -0.24965224549127377},
{2.8895798195446694, 0.9625856600278146, 0.11630286729844697,
-0.2558533623111699, -0.37163867493337555, -0.3955757561609924,
-0.38928132604078336, -0.37061775517416967, -0.351925481531926,
-0.33798968531542806, -0.3299874289372626, -0.32059430699391317,
-0.30994022461874293, -0.29967891662765755, -0.29025518105937126,
-0.2817276226455225, -0.274025722736387, -0.26703726479311907,
-0.2607021388968187, -0.2548982108295265, -0.2495893184342285},
{2.8841296981417064, 0.9566057205414417, 0.11234768140214169,
-0.257995736009173, -0.3727366089681655, -0.3961475110581882,
-0.3895841103031636, -0.3707499892478851, -0.3520127176057798,
-0.33804598679439823, -0.3300358077085681, -0.320588206299302,
-0.30990597174447093, -0.29963093298040056, -0.29019994571413543,
-0.281668371076323, -0.27396423232239825, -0.2669745819784256,
-0.260638938592535, -0.25483492167268335, -0.2495262087590796},
{2.8786696773827343, 0.9506413213849076, 0.10840839351329858,
-0.2601256173450997, -0.3738265302960224, -0.3967142100585697,
-0.3898835916633526, -0.370880142062302, -0.35209837892579765,
-0.3381017079774223, -0.3300828380877646, -0.3205810864289926,
-0.3098710139577652, -0.2995824219002279, -0.2901442912203177,
-0.28160877289943087, -0.2739024468162265, -0.26691164362074615,
-0.2605755134000858, -0.25477143203297165, -0.24946291848109042},
{2.8731998625962754, 0.9446924536541446, 0.1044849601850881,
-0.26224306845246753, -0.3749084884526085, -0.3972758880987773,
-0.3901797945027219, -0.37100823296782753, -0.3521824775136291,
-0.33815686603167033, -0.3301285265403865, -0.32057295691886517,
-0.3098353582073854, -0.29953338860143924, -0.29008822175546645,
-0.28154883160891764, -0.2738403692490923, -0.26684845239854393,
-0.2605118657193426, -0.254707744088931, -0.24939944959871996},
{2.867720358698628, 0.9387591081385551, 0.1005773379582302,
-0.2643481512018878, -0.37598253267637216, -0.3978325798725284,
-0.3904727430202204, -0.37113428110551316, -0.3522650252977255,
-0.33821147711799615, -0.3301728796142583, -0.32056382723139476,
-0.3097990113771998, -0.2994838382506828, -0.29003174146004823,
-0.2814885506680278, -0.27377800262651986, -0.266785010967537,
-0.26044799792994044, -0.2546438600008532, -0.24933580409376832},
{2.862231270193948, 0.9328412753245567, 0.09668548336194001,
-0.26644092720162355, -0.3770487119101774, -0.398384319832328,
-0.3907624612338021, -0.37125830540941596, -0.3523460341141585,
-0.3382655563937719, -0.3302159039364585, -0.3205537067558606,
-0.3097619802868092, -0.2994337759674296, -0.289974854437809,
-0.2814279335094817, -0.2737153499285625, -0.2667213219609023,
-0.26038391239146064, -0.25457978191094455, -0.24927198393152802},
{2.8567327011743573, 0.9269389453990978, 0.09280935291487308,
-0.26852145779817915, -0.37810707480295946, -0.39893114219117204,
-0.3910489729818418, -0.37138032460894144, -0.3524255157074164,
-0.33831911801868264, -0.3302576062103253, -0.32054260480856284,
-0.3097242716921677, -0.299383206824442, -0.289917564756126,
-0.2813669835357788, -0.27365241411002633, -0.2666573879894786,
-0.2603196114436051, -0.25451551194347877, -0.2492079910609174},
{2.8512247553200463, 0.9210521082531432, 0.08894890312607862,
-0.2705898040768688, -0.3791576697113367, -0.39947308092423,
-0.39133230192454815, -0.37150035723117275, -0.3525034817312013,
-0.33837217516328366, -0.330297993212502, -0.32053053063305936,
-0.30968589228619814, -0.2993321358482418, -0.28985987644636196,
-0.2813057041195065, -0.27358919810069643, -0.2665932116419689,
-0.2602550974063799, -0.25445105220496517, -0.24914382741463664},
{2.845707535899421, 0.9151807534851392, 0.08510409049595069,
-0.27264602686240974, -0.380200544701241, -0.4000101697705279,
-0.3916124715453532, -0.3716184216031899, -0.3525799437492162,
-0.3384247400201102, -0.3303370717900249, -0.3205174934004155,
-0.30964684869939696, -0.29928056801956904, -0.28980179350421315,
-0.28124409860363864, -0.2735257048055528, -0.2665287954851356,
-0.26019037258026817, -0.25438640478429814, -0.2490794949093022},
{2.840181145769234, 0.90932487040444, 0.08127487151718772,
-0.2746901867195243, -0.38123574754954065, -0.40054244223460944,
-0.39188950515230037, -0.3717345358543693, -0.35265491323594067,
-0.3384768238171444, -0.33037484885745966, -0.3205035022094634,
-0.3096071475004428, -0.299228508273836, -0.2897433198900495,
-0.2811821703018414, -0.27346193710499134, -0.2664641420639987,
-0.26012543924640175, -0.25432157175291414, -0.24901499544558808},
{2.834645687374755, 0.903484448034717, 0.07746120267574677,
-0.2767223439535263, -0.3822633257456388, -0.4010699315881923,
-0.39216342587941455, -0.37184871791866747, -0.3527284015774024,
-0.3385284368334433, -0.33041133139406664, -0.32048856608707404,
-0.30956679519679065, -0.2991759615015756, -0.28968445952925637,
-0.28111992249877116, -0.2733978978550382, -0.266399253902026,
-0.2600602996667383, -0.25425655516494505, -0.24895033090836366},
{2.8291012627499437, 0.8976594751173341, 0.0736630404518074,
-0.27874255861094804, -0.38328332649309077, -0.40159267087181216,
-0.3924342566880589, -0.3719609855368901, -0.35280042007193746,
-0.33857958841673097, -0.33044652644102035, -0.3204726939884436,
-0.3095257982352674, -0.29912293254888844, -0.28962521631257004,
-0.281057358450375, -0.2733335898875612, -0.2663341335013303,
-0.25999495608422435, -0.25419135705736856, -0.24888550316682945},
{2.823547973517639, 0.8918499401146982, 0.06988034132073306,
-0.28075089048013846, -0.38429579671119296, -0.40211069289644946,
-0.39270202036829777, -0.37207135625894106, -0.3528709799309483,
-0.3386302870027706, -0.3304804410986687, -0.3204558947973903,
-0.30948416300266257, -0.29906942621788546, -0.2895655940964111,
-0.28099448138419386, -0.27326901601048686, -0.2662687833428584,
-0.25992941072297104, -0.2541259794501628, -0.24882051407466088},
{2.8179859208897624, 0.8860558312135832, 0.06611306175403689,
-0.2827473990918846, -0.38530078303656956, -0.4026240302451522,
-0.39296673954022443, -0.3721798474460496, -0.35294009227964773,
-0.3386805401363335, -0.3305130825238274, -0.32043817732665614,
-0.3094418958263047, -0.29901544726711615, -0.28950559670321474,
-0.2809312944996467, -0.2732041790080049, -0.26620320588658075,
-0.2598636657884176, -0.25406042434645043, -0.24875536547013394},
{2.8124152056675458, 0.8802771363284279, 0.0623611582203446,
-0.284732143720048, -0.3862983318247714, -0.4031327152746474,
-0.39322843665529683, -0.3722864762729843, -0.35300776815780077,
-0.33873035449358513, -0.33054445792712883, -0.32041955031822156,
-0.30939900297464934, -0.29896100041200746, -0.28944522792175564,
-0.28086780096833563, -0.2731390816407828, -0.266137403571677,
-0.25979772346749624, -0.2539946937326496, -0.24869005917626524},
{2.8068359282417514, 0.8745138431046009, 0.05862458718636396,
-0.2867051833821767, -0.3872884891518356, -0.4036367801169355,
-0.3934871339976536, -0.372391259730239, -0.35307401852045317,
-0.3387797359057245, -0.3305745745704008, -0.32040002244362475,
-0.3093554906578422, -0.2989060903252856, -0.28938449150746576,
-0.2808040039343285, -0.27307372664616314, -0.26607137881672044,
-0.2597315859288009, -0.25392878957862025, -0.24862459700094125},
{2.8012481885929317, 0.8687659389216486, 0.05490330511785148,
-0.28866657684016284, -0.38827130081587446, -0.40413625668088027,
-0.39374285368541717, -0.3724942146262017, -0.3531388542386583,
-0.338828689383717, -0.33060343976409545, -0.32037960230429213,
-0.3093113650282914, -0.29885072163739423, -0.28932339118275924,
-0.2807399065144471, -0.2730081167383709, -0.2660051340198632,
-0.25966525532273854, -0.2538627138378043, -0.24855898073704644},
{2.795652086291683, 0.8630334108965094, 0.051197268480579886,
-0.2906163826008666, -0.3892468123386248, -0.4046311766537824,
-0.3939956176719996, -0.37259535758930395, -0.3532022861001943,
-0.3388772191439592, -0.330631060864762, -0.3203582984318738,
-0.30926663218123207, -0.29879489893691996, -0.2892619306373438,
-0.28067551179855504, -0.27294225460872157, -0.2659386715590188,
-0.2595987337817056, -0.2537964684473782, -0.24849321216260226},
{2.79004772049892, 0.8573162458867026, 0.04750643374130882,
-0.29255465891676513, -0.39021506896701097, -0.4051215715029433,
-0.3942454477473795, -0.3726947050701441, -0.3532643248102728,
-0.33892532863473734, -0.33065744527254964, -0.32033611928858113,
-0.3092212981552801, -0.29873862677099694, -0.2892001135285349,
-0.2806108228498342, -0.27287614292580975, -0.26587199379203996,
-0.25953202342023324, -0.2537300553283831, -0.24842729304088473},
{2.784435189966169, 0.8516144304934955, 0.043830757368752055,
-0.29448146378661666, -0.391176115674701, -0.4056074724772282,
-0.39449236553938644, -0.37279227334359233, -0.35332498099224446,
-0.3389730205633352, -0.33068260042877273, -0.32031307326753833,
-0.30917536893298686, -0.29868190964571883, -0.28913794348156235,
-0.28054584270506877, -0.27280978433571906, -0.2658051030568979,
-0.2594651263351486, -0.2536634763858747, -0.24836122512055922},
{2.77881459303586, 0.8459279510650379, 0.04017019583454689,
-0.29639685495609536, -0.39212999716363833, -0.40608891060859625,
-0.3947363925149597, -0.37288807851086714, -0.35338426518829047,
-0.3390202969236632, -0.33070653381349563, -0.3202891686931263,
-0.3091288504413845, -0.2986247520265407, -0.2890754240898762,
-0.2804805743749094, -0.27274318146220844, -0.2657380016718585,
-0.25939804460573745, -0.25359673350905965, -0.24829501013580413},
{2.7731860276416502, 0.8402567936994743, 0.036524705614222094,
-0.2983008899184756, -0.3930767578655966, -0.40656591671364983,
-0.3949775499814038, -0.3729821365015982, -0.35344218786011633,
-0.33906715902429174, -0.3307292529431786, -0.32026441382134313,
-0.30908174855253207, -0.29856715833867814, -0.2890125589154461,
-0.2804150208441517, -0.2726763369069132, -0.2656706919356561,
-0.25933078029388695, -0.25352982857143136, -0.24822864980643264},
{2.76754959130875, 0.8346009442480322, 0.0328942431881689,
-0.30019362591527887, -0.39401644194369667, -0.40703852139514063,
-0.39521585908764095, -0.373074463075863, -0.3534987593896319,
-0.33911360751676156, -0.3307507653683571, -0.320238816840164,
-0.3090340690840488, -0.29850913296750514, -0.28894935148906875,
-0.2803491850720043, -0.27260925324953983, -0.2656031761276712,
-0.25926333544424934, -0.253462763430911, -0.24816214583802346},
{2.7619053811542553, 0.8289603883180812, 0.029278765042606555,
-0.3020751199369463, -0.3949490932939322, -0.40750675504349104,
-0.395451340825438, -0.3731650738261928, -0.3535539900796242,
-0.3391596424240769, -0.33077107867136024, -0.32021238586989803,
-0.3089858177996497, -0.2984506802589378, -0.2888858053106522,
-0.2802830699923409, -0.272541933048046, -0.2655354565080926,
-0.25919571208438935, -0.2533955399299789, -0.24809549992203744},
{2.756253493887509, 0.8233351112761661, 0.0256782276705472,
-0.3039454287235244, -0.3958747555466955, -0.40797064783829534,
-0.39568401603063463, -0.37325398417956934, -0.35360789015443006,
-0.33920526316927224, -0.33079020046407853, -0.320185128963559,
-0.3089370004096707, -0.29839180451982783, -0.2888219238495142,
-0.2802166785139724, -0.2724743788388414, -0.26546753531810025,
-0.25912791222492815, -0.25332815989580826, -0.248028713735939},
{2.7505940258104613, 0.8177250982510191, 0.022092587572765124,
-0.30580460876532567, -0.39679347206827886, -0.40843022974980703,
-0.39591390538436294, -0.3733412093993913, -0.353660469760598,
-0.3392504686039681, -0.3308081383857733, -0.32015705410723294,
-0.3088876225715916, -0.29833251001834366, -0.28875771054467253,
-0.2801500135208907, -0.2724065931369737, -0.26539941478002194,
-0.25905993785970716, -0.2532606251404045, -0.24796178894332177},
{2.744927072818044, 0.8121303341365417, 0.018521801258760025,
-0.30765271630362767, -0.3977052859623875, -0.40888553054042237,
-0.3961410294142396, -0.37342676458741386, -0.3537117389675379,
-0.33929525703682506, -0.3308249001009147, -0.32012816922044424,
-0.30883768989055393, -0.298272800984341, -0.28869316880512697,
-0.2800830778725276, -0.27233857843630427, -0.26533109709750424,
-0.2589917909659137, -0.25319293746072447, -0.24789472719401986},
{2.739252730398571, 0.8065508035947665, 0.014965825247717716,
-0.30948980733134607, -0.39861024007163015, -0.40933657976614807,
-0.3963654084955774, -0.3735106646856775, -0.35376170776817917,
-0.33933962626182196, -0.33084049329708426, -0.3200984821565382,
-0.30878720791987335, -0.29821268160974745, -0.28862830201014633,
-0.2800158744040012, -0.2722703372097066, -0.2652625844556776,
-0.25892347350424566, -0.25312509863882093, -0.2478275301242311},
{2.733571093634131, 0.800986491058789, 0.01142461606947473,
-0.3113159375937282, -0.39950837697901154, -0.40978340677806385,
-0.39658706285256307, -0.37359292447840586, -0.353810386079607,
-0.3393835735862849, -0.33085492568289854, -0.3200680007030498,
-0.3087361821615496, -0.29815215604892675, -0.28856311350955016,
-0.27994840592635456, -0.27220187190923884, -0.26519387902132263,
-0.2588549874190499, -0.25305711044196116, -0.24776019935663662},
{2.7278822572010006, 0.7954373807356782, 0.007898130265475818,
-0.3131311625890526, -0.4003997390094193, -0.4102260407237715,
-0.39680601255943215, -0.37367355859387835, -0.35385778374369936,
-0.33942709585859776, -0.3308682049859821, -0.32003673258208354,
-0.3086846180667638, -0.2980912284190446, -0.2884976066239793,
-0.27988067522680127, -0.2721331849663303, -0.2651249829430279,
-0.2587863346384571, -0.25298897462275705, -0.24769273650050752},
{2.7221863153700716, 0.7899034566093613, 0.004386324389731078,
-0.31493553756931164, -0.40128436823109404, -0.4106645105488335,
-0.39702227754164326, -0.37375258150628965, -0.35390391052776077,
-0.3394701894955454, -0.3308803389509861, -0.320004685450692,
-0.30863252103638195, -0.29802990280043296, -0.28843178464517627,
-0.2798126850689568, -0.27206427879195694, -0.2650558983513501,
-0.2587175170745373, -0.2529206929192958, -0.2476251431518292},
{2.7164833620072883, 0.7843847024434836, 0.0008891550097720954,
-0.31672911754093314, -0.40216230645711337, -0.4110988449982076,
-0.39723587757702256, -0.37383000753758233, -0.3539487761251403,
-0.3395128505092261, -0.3308913353376381, -0.31997186690125834,
-0.30857989642144534, -0.2979681832369444, -0.28836565083625165,
-0.27974443819307165, -0.27199515577681765, -0.2649866273589736,
-0.25864853662342613, -0.25285226705525693, -0.24755742089340557},
{2.710773490574095, 0.7788811017842453, -0.002593421292394614,
-0.3185119572654637, -0.403033595246841, -0.4115290726176575,
-0.3974468322969246, -0.3739058508592558, -0.3539923901558567,
-0.33955507453349354, -0.33090120191884076, -0.31993828446187783,
-0.3085267495236592, -0.297906073736311, -0.2882992084319611,
-0.27967593731626345, -0.2719258182915165, -0.2649171720608708,
-0.258579395165472, -0.25278369874004586, -0.24748957129497934},
{2.705056794127893, 0.7733926379632134, -0.006061447919338561,
-0.3202841112602832, -0.4038982759073921, -0.4119552217551711,
-0.39765516118736755, -0.37398012549415993, -0.35403476216720575,
-0.33959685684988433, -0.33090994647881194, -0.3199039455967484,
-0.3084730855958788, -0.29784357827049424, -0.2882324606389631,
-0.279607185132737, -0.27185626868673346, -0.26484753453445475,
-0.2585100945653753, -0.25271498966891265, -0.24742159591334148},
{2.6993333653225116, 0.7679192941001071, -0.009514968257257068,
-0.3220456337993234, -0.40475638949508286, -0.4123773205623576,
-0.3978608835901572, -0.37405284531825683, -0.35407590163436564,
-0.3396381924129764, -0.3309175768112521, -0.3198688577065465,
-0.3084189098425843, -0.29778070077602714, -0.2881654106360834,
-0.279538184314006, -0.271786509293395, -0.2647777168397324,
-0.25844063667231365, -0.2526461415230686, -0.2473534962924401},
{2.6936032964086896, 0.7624610531055649, -0.012954025675030546,
-0.32379657891376185, -0.405607976816871, -0.4127953969958367,
-0.39806401870401653, -0.37412402406237244, -0.3541158179610008,
-0.33967907587518514, -0.33092410071757256, -0.3198330281288251,
-0.30836422742035785, -0.2977174451543632, -0.28809806157458,
-0.2794689375091115, -0.27171654242285015, -0.2647077210194611,
-0.25837102332009115, -0.25257715596981695, -0.2472852739634906},
{2.687866679234573, 0.7570178976838844, -0.016378663523279595,
-0.32553700039276234, -0.4064530784317996, -0.4132094788186227,
-0.3982645855856836, -0.3741936753139209, -0.35415452047985135,
-0.33971950161092435, -0.33092952600514575, -0.31979646413839535,
-0.30830904343835225, -0.2976538152722106, -0.2880304165783932,
-0.27939944734483757, -0.27164637036703443, -0.2646375490992958,
-0.2583012563272585, -0.2525080346626644, -0.24721693044508145},
{2.6821236052462023, 0.7515898103357347, -0.0197889251334283,
-0.32726695178417436, -0.40729173465242163, -0.4136195936014909,
-0.39846260315103127, -0.3742618125186137, -0.3541920184533283,
-0.3397594637401396, -0.33093386048560625, -0.3197591729477232,
-0.3082533629587586, -0.29758981496187276, -0.287962478744407,
-0.27932971642592075, -0.27157599539864513, -0.2645672030879425,
-0.2582313374972543, -0.2524387792414417, -0.24714846724328585},
{2.6763741654880433, 0.7461767733608545, -0.023184853816767072,
-0.32898648639525824, -0.4081239855462227, -0.41402576872433966,
-0.39865809017614623, -0.37432844898213835, -0.3542283210740901,
-0.33979895615117695, -0.33093711197318376, -0.31972116170731874,
-0.30819719099726195, -0.29752544802157643, -0.2878942511427013,
-0.2792597473352555, -0.2715054197713016, -0.2644966849773053,
-0.25816126861853306, -0.25236939133242386, -0.24707988585176766},
{2.6706184506034956, 0.7407787688607187, -0.02656649286352161,
-0.3306956572934209, -0.4089498709370437, -0.41442803137754575,
-0.3988510652984203, -0.37439359787182636, -0.35426343746562317,
-0.33983797252297837, -0.3309392882830817, -0.31968243750612924,
-0.30814053252350154, -0.2974607182158029, -0.287825736816794,
-0.27918954263410223, -0.2714346457197151, -0.26442599674263356,
-0.2580910514646935, -0.2522998725484409, -0.2470111877518834},
{2.664856550835437, 0.7353957787411868, -0.02993388554192454,
-0.33239451730692365, -0.409769430406485, -0.4148264085633025,
-0.3990415470176275, -0.3744572722182993, -0.35429737668281386,
-0.3398765063465849, -0.3309403972298893, -0.3196430073719358,
-0.30808339246152067, -0.2973956292756137, -0.2877569387838979,
-0.279119104862285, -0.2713636754598485, -0.26435514034266644,
-0.2580206877946112, -0.25223022448899834, -0.24694237441278993},
{2.65908855602676, 0.7300277847151248, -0.03328707509729067,
-0.33408311902563553, -0.4105827032953184, -0.41522092709695807,
-0.399229553696982, -0.37451948491709375, -0.3543301477125134,
-0.33991455094594386, -0.33094044662603617, -0.3196028782717467,
-0.3080257756902101, -0.29733018489896584, -0.28768786003515623,
-0.27904843653839073, -0.27129251118908115, -0.26428411771977667,
-0.25795017935255743, -0.25216044874038646, -0.24687344729154137},
{2.653314555620932, 0.7246747683050063, -0.03662610475109628,
-0.3357615148017427, -0.41138972870487517, -0.4156116136083287,
-0.39941510356420884, -0.3745802487302646, -0.3543617594740991,
-0.3399520994980094, -0.330939444280284, -0.31956205711219987,
-0.3079676870437582, -0.2972643887510408, -0.28761850353588997,
-0.2789775401599657, -0.27122115508637057, -0.26421293080011765,
-0.25787952786833607, -0.2520905468757963, -0.2468044078332027},
{2.64753463866255, 0.7193367108454931, -0.03995101770006159,
-0.3374297567504895, -0.41219054549843787, -0.41599849454302246,
-0.3995982147125859, -0.37463957628797584, -0.3543922208200306,
-0.33998914505212846, -0.33093739799625105, -0.3195205507399558,
-0.30790913131208286, -0.29719824446454923, -0.2875488722258385,
-0.2789064182037061, -0.2711496093124081, -0.2641415814937611,
-0.25780873505740176, -0.2520205204554291, -0.24673525747094238},
{2.6417488937979234, 0.7140135934859847, -0.04326185711524033,
-0.3390878967509269, -0.41298519230263236, -0.41638159616374354,
-0.3997789051019893, -0.3746974800900665, -0.3544215405364022,
-0.34002568054871546, -0.3309343155709862, -0.31947836594210227,
-0.30785011324126643, -0.29713175564004846, -0.2874789690193895,
-0.27883507312564937, -0.27107787600978017, -0.2640700716948374,
-0.25773780262098356, -0.2519503710266091, -0.24666599762613411},
{2.635957409275646, 0.7087053971931584, -0.046558666141107964,
-0.34073598644662595, -0.4137737075087904, -0.4167609445515787,
-0.399957192559925, -0.37475397250759934, -0.35444972734348196,
-0.3400616988372117, -0.3309302047935656, -0.31943550944655186,
-0.3077906375339853, -0.29706492584625, -0.2874087968058213,
-0.27876350736135647, -0.27100595730312405, -0.2639984032816759,
-0.2576667322462124, -0.251880100123894, -0.24659662970846183},
{2.6301602729471987, 0.7034121027534734, -0.04984148789466168,
-0.34237407724644797, -0.41455612927433744, -0.41713656560730067,
-0.400133094782549, -0.3748090657843938, -0.3544767898962582,
-0.3400971926933388, -0.33092507344373334, -0.31939198792244455,
-0.3077307088499357, -0.29699775862032074, -0.2873383584495283,
-0.2786917233261007, -0.27093385529928093, -0.26392657811694237,
-0.2575955256062332, -0.251809709269179, -0.24652715511600923},
{2.624357572267543, 0.6981336907756639, -0.05311036546451772,
-0.3440022203252625, -0.4153324955241408, -0.4175084850526245,
-0.40030662933569294, -0.37486277203853874, -0.35450273678497046,
-0.3401321548356381, -0.3309189292905857, -0.3193478079805552,
-0.30767033180625325, -0.29693025746818913, -0.2872676567902552,
-0.27861972341504815, -0.27086157208745365, -0.2638545980477729,
-0.25752418436033536, -0.25173919997180955, -0.24645757523536654},
{2.6185493942957363, 0.692870141693204, -0.05636534191001634,
-0.34562046662469853, -0.4161028439518727, -0.4178767284314943,
-0.4004778136558664, -0.3749151032638866, -0.35452757653564054,
-0.34016657794131333, -0.3309117800912739, -0.31930297617369224,
-0.30760951097793215, -0.2968624258648418, -0.2871966946433244,
-0.27854751000343414, -0.27078910973935333, -0.2637824649059108,
-0.25745271015406623, -0.2516685737286868, -0.24638789144172346},
{2.6127358256955437, 0.6876214357667515, -0.0596064602603347,
-0.34722886685390025, -0.4168672120213652, -0.4182413211113325,
-0.40064666505125573, -0.37496607133153065, -0.35455131761059683,
-0.3402004546613757, -0.3309036335897567, -0.31925749899710365,
-0.3075482508982322, -0.2967942672546175, -0.2871254747998539,
-0.27847508544674365, -0.2707164703093568, -0.26371018050784306,
-0.25738110461934843, -0.25159783202436975, -0.24631810509896251},
{2.6069169527360763, 0.682387553086573, -0.06283376351359792,
-0.34882747149025595, -0.4176256369679442, -0.418602288284295,
-0.4008132007027244, -0.37501568799126755, -0.35457396840899674,
-0.3402337776351097, -0.330894497515586, -0.31921138288888784,
-0.30748655605909125, -0.2967257850515035, -0.28705400002699044,
-0.2784024520808802, -0.2706436558346535, -0.26363774665492545,
-0.25730936937460275, -0.2515269763311867, -0.24624821755976248},
{2.6010928612924182, 0.677168473574942, -0.06604729463600026,
-0.35041633078017, -0.418378155799777, -0.41895965496851234,
-0.4009774376647812, -0.3750639648730364, -0.3545955372673352,
-0.3402665395038511, -0.3308843795827167, -0.319164634230391,
-0.307424430911527, -0.29665698263941875, -0.28698227306811713,
-0.2783296122223434, -0.27057066833538856, -0.2635651651335194,
-0.25723750602485196, -0.2514560081093302, -0.24617823016567922},
{2.5952636368462834, 0.6719641769885243, -0.06924709656092937,
-0.351995494739794, -0.41912480529919627, -0.4193134460093188,
-0.40113939286657313, -0.3751109134883489, -0.35461603245996093,
-0.34029873292411755, -0.3308732874883675, -0.31911725934662627,
-0.3073618798660384, -0.29658786337250487, -0.28691029664307727,
-0.2782565681683952, -0.2704975098148186, -0.2634924377151189,
-0.25716551616184746, -0.2513849288069666, -0.24610814424725086},
{2.5894293644866595, 0.6667746429207307, -0.07243321218809495,
-0.35356501315578664, -0.41986562202402494, -0.41966368608048343,
-0.40129908311284596, -0.37515654523169784, -0.3546354621995818,
-0.3403303505800728, -0.3308612289119025, -0.3190692645066726,
-0.3072989072930016, -0.29651843057540783, -0.28683807344838785,
-0.27818332219722924, -0.2704241822594527, -0.2634195661564832,
-0.2570934013641799, -0.2513137398603381, -0.2460379611240895},
{2.58359012891047, 0.661599850804059, -0.07560568438266536,
-0.3551249355860744, -0.4206006423088958, -0.4200103996854213,
-0.401456525084904, -0.3752008713819469, -0.35465383463776096,
-0.3403613851953552, -0.33084821151374894, -0.3190206559240861,
-0.3072355175230588, -0.29644868754355685, -0.2867656061574424,
-0.27810987656813446, -0.27035068763919684, -0.2633465521997597,
-0.2570211631973834, -0.25124244269385676, -0.2459676821049628},
{2.5777460144232593, 0.6564397799124092, -0.07876455597440593,
-0.3566753113605889, -0.4213299022665592, -0.4203536111584002,
-0.40161173534156547, -0.3752439031037101, -0.3546711578654179,
-0.3403918295442816, -0.3308342429343527, -0.318971439757312,
-0.3071717148475096, -0.2963786375434438, -0.2866928974207212,
-0.27803623352165946, -0.2702770279074969, -0.26327339757261164,
-0.2569488032140619, -0.2511710387202126, -0.24589730848789912},
{2.5718971049398522, 0.6512944093633796, -0.08190986975682434,
-0.35821618958204837, -0.42205343778919435, -0.42069334466574476,
-0.40176473032010157, -0.37528565144871234, -0.35468743991331475,
-0.3404216764624374, -0.33081933079315856, -0.31892162211008956,
-0.3071075035186915, -0.29630828381289265, -0.2866199498659859,
-0.2779623952797758, -0.2702032050014809, -0.2632001039883419,
-0.2568763229539842, -0.2510995293404651, -0.24582684156026136},
{2.566043483985049, 0.6461637181205395, -0.08504166848632282,
-0.35974761912669184, -0.4227712845496969, -0.42102962420701584,
-0.4019155263371793, -0.3753261273571291, -0.35470268875254746,
-0.3404509188566698, -0.3308034826876285, -0.318871209031865,
-0.3070428877503618, -0.2962376295613369, -0.28654676609848073,
-0.2778883640460328, -0.27012922084209945, -0.26312667314602023,
-0.2568037239441997, -0.251027915944147, -0.24575628259885066},
{2.5601852346943295, 0.6410476849956899, -0.08815999488135412,
-0.3612696486450485, -0.4234834780029783, -0.4213624736162047,
-0.4020641395897949, -0.3753653416589261, -0.35471691229502794,
-0.34047954971450634, -0.33078670619229344, -0.31882020651820336,
-0.3069778717180759, -0.2961666779700876, -0.28647334870112595,
-0.27781414200572524, -0.27005507733426665, -0.2630531067306066,
-0.25673100769915574, -0.25095619990936213, -0.24568563286998862},
{2.554322439814538, 0.6359462886510917, -0.09126489162158144,
-0.36278232656270254, -0.42419005338724786, -0.4216919165628963,
-0.4022105861561859, -0.37540330507515957, -0.35473011839395807,
-0.3405075621129866, -0.33076900885782107, -0.3187686205111906,
-0.30691245955955043, -0.2960954321925903, -0.2863997002346919,
-0.2777397313260333, -0.2699807763669927, -0.26297940641306244,
-0.2566581757207853, -0.2508843826028714, -0.24561489362960084},
{2.548455181704604, 0.630859507601682, -0.09435640134705026,
-0.3642857010810383, -0.4248910457252881, -0.42201797655343964,
-0.4023548819967551, -0.37544002821928163, -0.3547423148443071,
-0.3405349492269696, -0.33075039821013613, -0.3187164568998538,
-0.30684665537504335, -0.29602389535469903, -0.2863258232379963,
-0.27766513415619126, -0.2699063198135278, -0.26290557385048496,
-0.25658522949863183, -0.25081246538020235, -0.24554406612331311},
{2.542583542336259, 0.6257873202172691, -0.09743456665735681,
-0.3657798201780243, -0.42558648982573466, -0.42234067693210414,
-0.40249704295496713, -0.3754755215984217, -0.35475350938327804,
-0.34056170433688643, -0.33073088174955273, -0.31866372152056477,
-0.30678046322771046, -0.29595207055492956, -0.28625172022806883,
-0.2775903526276353, -0.26983170953149127, -0.2628316106862173,
-0.2565121705099427, -0.2507404495857334, -0.24547315158652808},
{2.5367076032947584, 0.6207297047247047, -0.10049943011083273,
-0.36726473160895823, -0.42627642028433327, -0.42266004088222364,
-0.4026370847582622, -0.3755097956146555, -0.35476370969077614,
-0.3405878208359858, -0.33071046694994555, -0.31861042015745394,
-0.30671388714396874, -0.2958799608647199, -0.28617739370033424,
-0.2775153888541516, -0.2697569473630095, -0.26275751854996976,
-0.25643900021977906, -0.2506683365527916, -0.24540215124451603},
{2.530827445779618, 0.6156866392100394, -0.10355103422372477,
-0.3687404829072324, -0.4269608714852017, -0.4229760914273417,
-0.40277502301894064, -0.37554286056625413, -0.35477292338986643,
-0.3406132922370721, -0.33068916125794645, -0.3185565585428164,
-0.306646931113853, -0.29580756932868457, -0.2861028461287864,
-0.2774402449320295, -0.26968203513485084, -0.2626832990579377,
-0.25636572008112096, -0.25059612760374583, -0.24533106631249885},
{2.5249431506053432, 0.6106581016206544, -0.10658942146938999,
-0.3702071213851108, -0.42763987760208333, -0.42328885143234135,
-0.40291087323504726, -0.37557472664892444, -0.35478115804722776,
-0.3406381121787605, -0.33066697209216944, -0.3185021423575238,
-0.30657959909136884, -0.29573489896486216, -0.28602807996614293,
-0.2773649229402067, -0.2696069746585499, -0.26260895381291316,
-0.2562923315349605, -0.2505238240500949, -0.24525989799573178},
{2.519054798202191, 0.605644069767381, -0.10961463427749224,
-0.37166469413447606, -0.42831347259958985, -0.4235983436045694,
-0.40304465079125984, -0.3756054039570345, -0.354788421173613,
-0.3406622744312615, -0.3306439068424664, -0.3184471772314353,
-0.306511894994845, -0.29566195276497576, -0.2859530976440292,
-0.2772894249404168, -0.2695317677305476, -0.26253448440440624,
-0.25621883601041495, -0.250451427192564, -0.24518864748958907},
{2.5131624686169105, 0.6006445213265914, -0.11262671503320318,
-0.37311324802761703, -0.42898169023444854, -0.42390459049495544,
-0.4031763709597433, -0.37563490248482, -0.354794720224288,
-0.34068577290171115, -0.3306199728692065, -0.3183916687437985,
-0.3064438227072732, -0.29558873369466254, -0.28587790157312715,
-0.2772137529773327, -0.2694564161323124, -0.2624598924087508,
-0.2561452349248179, -0.2503789383211907, -0.24511731597963968},
{2.5072662415135114, 0.595659433842278, -0.11562570607641512,
-0.37455282971797643, -0.42964456405672646, -0.4242076144991129,
-0.4033060489010313, -0.3756632321275804, -0.3548000625994815,
-0.3407086016390713, -0.33059517750258816, -0.3183356224236673,
-0.3063753860766588, -0.2955152446937369, -0.285802494143353,
-0.2771379090787105, -0.26938092163047445, -0.26238517938922395,
-0.2560715296838218, -0.2503063587154155, -0.24504590464173912},
{2.501366196174022, 0.5906887847281097, -0.11861164970095253,
-0.37598348564092093, -0.4303021274110592, -0.4245074378584451,
-0.40343369966487674, -0.3756904026828594, -0.35480445564482127,
-0.3407307548386005, -0.3305695280419676, -0.3182790437503023,
-0.30630658891635293, -0.2954414886764166, -0.28572687772401656,
-0.277061895255532, -0.26930528597695014, -0.26231034689615623,
-0.25599772168150403, -0.25023368964417053, -0.2449744146421015},
{2.495462411499274, 0.5857325512694688, -0.12158458815379923,
-0.37740526201452473, -0.4309544134378789, -0.4248040826612395,
-0.4035593381911, -0.37571642385161463, -0.3548079066517761,
-0.3407522268459249, -0.33054303175522637, -0.31822193815357824,
-0.3062374350053913, -0.29536746853157225, -0.28565105466398016,
-0.2769857135021466, -0.2692295109090684, -0.26223539646703886,
-0.2559238123004478, -0.2501609323659682, -0.24490284713738353},
{2.489554966009673, 0.5807907106254729, -0.12454456363432045,
-0.37881820484031054, -0.43160145507461495, -0.4250975708437439,
-0.4036829793104378, -0.37574130523936594, -0.3548104228580797,
-0.3407730121607167, -0.3305156958781532, -0.3181643110143928,
-0.3061679280888273, -0.2952931871229584, -0.28557502729183154,
-0.2769093657964055, -0.2691535981496968, -0.2621603296266369,
-0.2558498029118583, -0.2500880881289879, -0.24483120327476407},
{2.4836439378459887, 0.5758632398309707, -0.1274916182935028,
-0.380222359904049, -0.43224328505691784, -0.42538792419125615,
-0.40380463774537323, -0.3757650563573393, -0.3548120114481623,
-0.34079310544000535, -0.33048752761385625, -0.31810616766506383,
-0.30609807187805593, -0.29521864728944885, -0.28549879791604077,
-0.27683285409980396, -0.26907754940736334, -0.26208514788709636,
-0.25577569487564195, -0.25001515817116043, -0.24475948419201754},
{2.4777294047701477, 0.5709501157985296, -0.13042579423319178,
-0.3816177727765036, -0.43287993591984714, -0.4256751643391774,
-0.4039243281109734, -0.37578768662359213, -0.3548126795535783,
-0.34081250150112485, -0.3304585341322002, -0.3180475133897438,
-0.30602787005114207, -0.2951438518452683, -0.285422368825132,
-0.2767561803576156, -0.26900136637637967, -0.26200985274804817,
-0.2557014895405126, -0.24994214372025392, -0.24468769101760032},
{2.471811444166035, 0.5660513153203967, -0.1333471335053393,
-0.3830044888142049, -0.4335114399990731, -0.4259593127740876,
-0.40404206491571093, -0.3758092053641235, -0.3548124342534231,
-0.3408311953243137, -0.33042872256926636, -0.31798835342481213,
-0.30595732625314587, -0.29506880358022364, -0.2853457422878509,
-0.27667934649902903, -0.26892505073696416, -0.2619344456967251,
-0.25562718824408276, -0.24986904599396279, -0.24461582487072192},
{2.465890133040294, 0.5611668150704425, -0.13625567811126071,
-0.3843825531602323, -0.4341378294320651, -0.42624039083479204,
-0.4041578625622755, -0.37582962181397733, -0.3548112825747474,
-0.3408491820549914, -0.33039810002683273, -0.3179286929592813,
-0.3058864440964322, -0.2949935052599293, -0.285268920553326,
-0.2766023544372821, -0.2688486041553605, -0.261858928208055,
-0.25555279231295064, -0.24979586619998284, -0.2445438868614226},
{2.459965548023139, 0.5562965916060906, -0.1391514700008908,
-0.3857520107449631, -0.43475913615927103, -0.42651841971337096,
-0.4042717353483961, -0.37584894511832634, -0.3548092314929772,
-0.34086645700571316, -0.33036667357188393, -0.3178685371351958,
-0.3058152271609948, -0.2949179596260314, -0.28519190585124804,
-0.2765252060697911, -0.2687720282839605, -0.26178330174477366,
-0.25547830306280583, -0.2497226055361047, -0.24447187809065019},
{2.4540377653691743, 0.5514406213702253, -0.14203455107205282,
-0.3871129062868661, -0.43537539192530034, -0.4267934204562192,
-0.4043836974676264, -0.37586718433354394, -0.3548062879323139,
-0.34088301565781864, -0.3303344502361368, -0.31780789104802776,
-0.3057436789947613, -0.2948421693964303, -0.2851147003920308,
-0.2764479032782876, -0.2686953247614137, -0.2617075677575227,
-0.2554037217985054, -0.24964926519028655, -0.24439979965033343},
{2.448106860958215, 0.5465988806930823, -0.14490496316973187,
-0.3884652842932522, -0.43598662828008716, -0.4270654139650696,
-0.40449376301015916, -0.3758843484282687, -0.3548024587661474,
-0.34089885366279393, -0.33030143701559433, -0.3177467597470796,
-0.3056718031139043, -0.2947661372654996, -0.2850373063669903,
-0.27637044792894383, -0.26861849521275505, -0.26163172768495446,
-0.2553290498141727, -0.24957584634074065, -0.2443276526234563},
{2.442172910296115, 0.5417713457941242, -0.147762748085356,
-0.38980918906104844, -0.4365928765800591, -0.42733442099803093,
-0.4046019459636135, -0.37590044628444996, -0.3547977508174565,
-0.3409139668433452, -0.3302676408701192, -0.3176851482358757,
-0.3055996030031522, -0.2946898659043082, -0.2849597259485204,
-0.2762928418725065, -0.2685415412495158, -0.2615557829538386,
-0.255254288393293, -0.2495023501560172, -0.24425543808413702},
{2.436235988515605, 0.5369579927838941, -0.15060794755607987,
-0.3911446646775799, -0.4371941679892921, -0.42760046217059516,
-0.40470826021381234, -0.3759154866983825, -0.35479217085920134,
-0.34092835119420306, -0.33023306872302133, -0.31762306147255354,
-0.3055270821160791, -0.29461335796082944, -0.2848819612902562,
-0.27621508694441926, -0.2684644644698382, -0.26147973497915455,
-0.25517943880878907, -0.24942877779507655, -0.24418315709769195},
{2.430296170377124, 0.5321587976658552, -0.15344060326408124,
-0.39247175502131826, -0.4377905334806614, -0.42786355795664777,
-0.40481271954557, -0.3759294783817294, -0.35478572561472826,
-0.3409420028826712, -0.3301977274606807, -0.3175605043702637,
-0.3054542438754193, -0.2945366160601617, -0.2848040145272618,
-0.27613718496495676, -0.2683872664585926, -0.26140358516419576,
-0.25510450232312104, -0.2493551304073749, -0.24411081072072038},
{2.4243535302696735, 0.5273737363382104, -0.15626075683585977,
-0.39379050376267893, -0.438382003836995, -0.4281237286894759,
-0.404915337643453, -0.37594242996253263, -0.3547784217581508,
-0.34095491824891694, -0.3301616239321739, -0.3174974817975531,
-0.3053810916733467, -0.2944596428047292, -0.28472588777619656,
-0.276059137739345, -0.26830994878748515, -0.2613273349006664,
-0.2550294801883666, -0.24928140913293953, -0.24403840000115853},
{2.4184081422116566, 0.5226027845957066, -0.15906844984154278,
-0.39510095436476583, -0.4389686096521997, -0.4283809945627538,
-0.4050161280925565, -0.3759543499862087, -0.3547702659147417,
-0.34096709380602985, -0.33012476494893256, -0.3174339985787554,
-0.305307628871782, -0.29438244077450115, -0.2846475831354943,
-0.27598094705788284, -0.26823251301517426, -0.2612509855687808,
-0.254954373646308, -0.24920761510244724, -0.2439659259783657},
{2.4124600798517455, 0.5178459181314238, -0.1618637237942022,
-0.3964031500841517, -0.43955038133240754, -0.4286353756315423,
-0.40511510437926285, -0.3759652469165398, -0.35476126466132246,
-0.34097852623985103, -0.33008715728441884, -0.3173700594943806,
-0.30523385880267384, -0.2943050125271939, -0.2845691026855467,
-0.275902614696079, -0.2681549606873811, -0.26117453853736217,
-0.25487918392852665, -0.2491337494373036, -0.24389338968319127},
{2.406509416469732, 0.5131031125385388, -0.16464662014916986,
-0.39769713397165385, -0.4401273490970926, -0.4288868918132606,
-0.4052122798919887, -0.3759751291366422, -0.3547514245266363,
-0.34098921240857555, -0.33004880767381534, -0.3173056692814991,
-0.30515978476829186, -0.2942273605984769, -0.2844904484888705,
-0.2758241424147616, -0.268077293337001, -0.26109799516393695,
-0.2548039122564778, -0.2490598132497221, -0.2438207921380438},
{2.4005562249773984, 0.5083743433120842, -0.16741718030337022,
-0.398982948873086, -0.44069954298019764, -0.4291355628886664,
-0.4053076679219419, -0.3759840049499308, -0.3547407519917296,
-0.3409991493421537, -0.330009722813734, -0.31724083263412217,
-0.30508541004150647, -0.2941494875021725, -0.28441162259029,
-0.2757455319602029, -0.2679995124842078, -0.2610213567948283,
-0.2547285598415798, -0.24898580764278977, -0.2437481343569563},
{2.394600577919385, 0.503659585850681, -0.1701754455946482,
-0.40026063743005147, -0.44126699283125065, -0.42938140850282114,
-0.4054012816638476, -0.37599188258106514, -0.35472925349032275,
-0.34100833424148985, -0.3299699093619469, -0.3171755542035811,
-0.3050107378660658, -0.29407139573045793, -0.2843326270171057,
-0.275666785064241, -0.2679216196365625, -0.2609446247652504,
-0.25465312788529465, -0.24891173371055147, -0.24367541734565587},
{2.388642547474066, 0.49895881545825893, -0.17292145730111586,
-0.4015302420806914, -0.4418297283164685, -0.42962444816604534,
-0.40549313421670236, -0.37599877017689465, -0.3547169354091874,
-0.3410167644774606, -0.3299293739371318, -0.31710983859891395,
-0.304935771456883, -0.29399308775406563, -0.2842534637792785,
-0.2755879034444001, -0.26784361628912257, -0.26086780039940427,
-0.2545776175792123, -0.24883759253807883, -0.24360264210163649},
{2.3826822054544308, 0.4942720073457584, -0.17565525664049567,
-0.40279180506045564, -0.4423877789198635, -0.4298647012548789,
-0.4055832385844955, -0.3760046758073773, -0.3547038040885083,
-0.34102443758975415, -0.32988812311863824, -0.3170436903872347,
-0.3048605140003067, -0.2939145660224762, -0.28417413486960436,
-0.2755088888040071, -0.26776550392455173, -0.26079088501057146,
-0.25450203010513733, -0.24876338520155275, -0.2435298096142246},
{2.3767196233089605, 0.48959913663281884, -0.17837688476947672,
-0.40404536840288635, -0.4429411739443392, -0.43010218701302344,
-0.4056716076769273, -0.37600960746650114, -0.3546898658222486,
-0.34103135128554124, -0.32984616344626133, -0.31697711409411083,
-0.3047849686543904, -0.29383583296411603, -0.2840946422638788,
-0.2754297428323085, -0.26768728401321557, -0.2607138799012037,
-0.25442636663516016, -0.24868911276832492, -0.24345692086463955},
{2.370754872122533, 0.4849401783494495, -0.18108638278307637,
-0.4052909739403614, -0.44348994251278095, -0.43033692455228456,
-0.40575825431014256, -0.37601357307318517, -0.35467512685851754,
-0.34103750343799893, -0.32980350142004355, -0.3169101142039363,
-0.30470913854916926, -0.2937568909865482, -0.28401498792108204,
-0.2753504672045909, -0.26760895801329454, -0.26063678636301313,
-0.2543506283317486, -0.2486147762970004, -0.24338397682606805},
{2.364788022617298, 0.48029510743768067, -0.1837837917140062,
-0.40652866330488774, -0.44403411356914474, -0.43056893285350295,
-0.405843191207423, -0.376016580472169, -0.3546595933999172,
-0.3410428920846869, -0.329760143500082, -0.3168426951602989,
-0.3046330267869182, -0.2936777424766615, -0.2839351737835363,
-0.2752710635822895, -0.2675305273708809, -0.2605596056770598,
-0.2542748163478176, -0.24854037683750155, -0.24331097846372257},
{2.358819145153591, 0.47566389875320675, -0.1864691525320499,
-0.4077584779288501, -0.444573715879532, -0.4307982307674775,
-0.40592643099990894, -0.37601863743490194, -0.3546432716039061,
-0.3410475154258016, -0.3297160961063601, -0.3167748613663519,
-0.3045566364424209, -0.2935983898008616, -0.2838552017770872,
-0.2751915336131068, -0.26745199352008353, -0.2604823391138488,
-0.25419893182681386, -0.24846591543114366, -0.24323792673491235},
{2.352848309730819, 0.4710465270670053, -0.1891425061434411,
-0.40898045904577307, -0.4451087780332631, -0.4310248370158897,
-0.4060079862272974, -0.3760197516604045, -0.35462616758314924,
-0.3410513718223044, -0.3296713656185837, -0.3167066171851754,
-0.30447997056323234, -0.2935188353052572, -0.28377507381127043,
-0.27511187893112843, -0.2673733578831305, -0.2604049879334143,
-0.25412297590279814, -0.2483913931107068, -0.24316482258910269},
{2.346875585988383, 0.46644296706694455, -0.19180389339025833,
-0.4101946476911113, -0.44563932844394794, -0.43124877019221663,
-0.40608786933853275, -0.37601993077613277, -0.3546082874058656,
-0.34105445979393967, -0.3296259583760449, -0.316637966940142,
-0.3044030321699308, -0.2934390813158427, -0.2836947917794707,
-0.27503210115692855, -0.26729462187046854, -0.26032755338540403,
-0.2540469497005102, -0.2483168109005034, -0.2430916669679825},
{2.3409010432065744, 0.46185319335937736, -0.19445335504981298,
-0.4114010847029804, -0.44616539535054234, -0.4314700487626314,
-0.40616609269250364, -0.37601918233882664, -0.35458963709617447,
-0.3410567780171603, -0.3295798806774855, -0.31656891491527905,
-0.30432582425638216, -0.29335913013868337, -0.28361435755909525,
-0.27495220189768876, -0.26721578688086, -0.26025003670917235,
-0.2539708543354616, -0.24824216981644617, -0.2430184608055228},
{2.3349247503075015, 0.45727718047071275, -0.1970909318340583,
-0.4125998107229575, -0.4466870068184122, -0.4316886910669143,
-0.4062426685587176, -0.3760175138353446, -0.3545702226344428,
-0.34105832532296326, -0.3295331387809845, -0.3164994653556207,
-0.3042483497899846, -0.29327898406009456, -0.2835337730117293,
-0.27487218274730313, -0.2671368543014858, -0.260172439133861,
-0.25389469091399786, -0.2481674708661204, -0.24294520502804332},
{2.328946775855997, 0.4527149028489797, -0.1997166643889956,
-0.41379086619681577, -0.44720419074037376, -0.43190471531932856,
-0.4063176091179889, -0.37601493268349456, -0.35455004995764516,
-0.3410591006946476, -0.32948573890385746, -0.3164296224675706,
-0.3041706117119233, -0.2931986453468207, -0.28345303998329974,
-0.2747920452864886, -0.2670578255080393, -0.260094761878484,
-0.2538184605333808, -0.24809271504884772, -0.24287190055427277},
{2.3229671880605474, 0.44816633486537305, -0.20233059329408903,
-0.41497429137529684, -0.4477169748377445, -0.4321181396095248,
-0.40639092646311104, -0.3760114462328469, -0.35452912495978317,
-0.3410591032655061, -0.3294376872225657, -0.3163593904192535,
-0.30409261293742146, -0.2931181162462161, -0.28337216030423784,
-0.2747117910828983, -0.2669787018648251, -0.2600170061520216,
-0.25374216428186785, -0.24801790335576135, -0.24279854829541136},
{2.316986054774216, 0.4436314508157812, -0.20493275906169411,
-0.4161501263148836, -0.4482253866613768, -0.43232898190341373,
-0.4064626325995163, -0.37600706176554327, -0.35450745349247004,
-0.34105833231645233, -0.3293889898726383, -0.31628877334086236,
-0.3040143563559792, -0.2930373989864155, -0.2832911357896248,
-0.27463142169122423, -0.26689948472485525, -0.259939173153489,
-0.2536658032387742, -0.24794303676986268, -0.24272514915518825},
{2.311003443495572, 0.4391102249223021, -0.20752320213648062,
-0.4173184108785391, -0.44872945359269206, -0.4325372600440377,
-0.4065327394459547, -0.3760017864970906, -0.3544850413659012,
-0.3410567872736057, -0.32933965294861167, -0.3162177753250128,
-0.3039358448316204, -0.29295649577651456, -0.28320996823935823,
-0.2745509386533057, -0.26682017542994424, -0.25986126407203425,
-0.25358937847455976, -0.24786811626609645, -0.2426517040299272},
{2.3050194213696256, 0.4346026313347445, -0.21010196289487473,
-0.41847918473649504, -0.4492292028447111, -0.4327429917524476,
-0.40660125883512854, -0.375995627577147, -0.3544618943505442,
-0.3410544677058238, -0.3292896825039696, -0.31614640042708175,
-0.30385708120313104, -0.292875408806731, -0.28312865943829224,
-0.274470343498236, -0.2667407753108005, -0.25978328008700624,
-0.25351289105089014, -0.24779314281141052, -0.242578213808601},
{2.2990340551887636, 0.4301086441321148, -0.21266908164450082,
-0.4196324873669884, -0.44972466146306966, -0.4329461946285503,
-0.4066682025143653, -0.3759885920902975, -0.3544380181800579,
-0.3410513733222127, -0.3292390845511095, -0.3160746526655577,
-0.3037780682842991, -0.2927941402485866, -0.2830472111563941,
-0.2743896377424662, -0.26666128568712144, -0.2597052223680452,
-0.25343634202071513, -0.2477181173648225, -0.24250467937289347},
{2.2930474113936885, 0.4256282373240844, -0.21522459862363258,
-0.4207783580570267, -0.450215856327038, -0.43314688615198077,
-0.40673358214625643, -0.37598068705682025, -0.3544134185560477,
-0.34104750396959627, -0.3291878650613124, -0.3160025360223788,
-0.30369880886414957, -0.29271269225506974, -0.2829656251488941,
-0.27430882288991093, -0.26658170786769136, -0.2596270920751664,
-0.25335973242834403, -0.24764304087749076, -0.24243110159726017},
{2.287059556074365, 0.42116138485245025, -0.21776855400064907,
-0.4219168359031581, -0.45070281415052643, -0.4333450836829404,
-0.40679740930929736, -0.3759719194334409, -0.354388101155345,
-0.34104285962997244, -0.3291360299647172, -0.3159300544432667,
-0.30361930570717344, -0.2926310669608033, -0.2828839031564191,
-0.2742279004320517, -0.2665020431504634, -0.25954889035882844,
-0.253283063309508, -0.247567914292767, -0.24235748134898294},
{2.281070554970961, 0.4167080605925739, -0.22030098787350041,
-0.42304795981220544, -0.4511855614830915, -0.4335408044630418,
-0.4068596954985317, -0.37596229611407883, -0.3543620716405373,
-0.341037440417952, -0.32908358515031927, -0.31585721183807075,
-0.3035395615535675, -0.2925492664822117, -0.28280204690514765,
-0.27414687184803754, -0.26642229282265656, -0.2594706183600239,
-0.25320633569143497, -0.2474927385462682, -0.24228381948823266},
{2.275080473474808, 0.4122682383548123, -0.2228219402691792,
-0.42417176850204985, -0.4516641247109391, -0.4337340656161516,
-0.4069204521261681, -0.37595182393058274, -0.3543353356743595,
-0.34103124657818246, -0.329030536465967, -0.31578401208109314,
-0.3034595791194501, -0.2924672929176788, -0.2827200581069414,
-0.27406573860478933, -0.26634245816084556, -0.25939227721034813,
-0.2531295505929214, -0.24741751456593583, -0.24221011686811678},
{2.2690893766293425, 0.4078418918859297, -0.22533145114319544,
-0.4252883005023649, -0.45213853005790877, -0.4339248841492106,
-0.4069796905222208, -0.3759405096534568, -0.35430789893848574,
-0.34102427848277306, -0.32897688971837574, -0.31571045901142036,
-0.3033793610970962, -0.2923851483477173, -0.2826379384594834,
-0.2739845021570936, -0.2662625404310443, -0.25931386803208556,
-0.253052709024391, -0.24734224327209695, -0.2421363743347466},
{2.2630973291310696, 0.4034289948704976, -0.22782956037906502,
-0.4263975941553747, -0.45260880358646804, -0.4341132769530728,
-0.40703742193513176, -0.37592835999258256, -0.3542797671570267,
-0.3410165366287238, -0.3289226506731529, -0.3156365564332597,
-0.30329891015516175, -0.29230283483512604, -0.28255568964642575,
-0.27390316394771635, -0.2661825408888069, -0.2592353919382818,
-0.2529758119879826, -0.24726692557753507, -0.2420625927272899},
{2.2571043953305203, 0.3990295209322809, -0.23031630778779857,
-0.4274996876166196, -0.4530749711986877, -0.4342992608033127,
-0.4070936575323726, -0.37591538159791693, -0.3542509461248138,
-0.34100802163533583, -0.3288678250548148, -0.3155623081162475,
-0.30321822893889366, -0.29222035442514643, -0.2824733133375046,
-0.2738217254074873, -0.26610246077929867, -0.2591568500328213,
-0.2528988604775952, -0.24719156238753737, -0.24198877287802556},
{2.251110639233213, 0.39464344363561016, -0.2327917331074011,
-0.42859461885568667, -0.45353705863722266, -0.43448285236104445,
-0.40714840840107697, -0.3759015810601983, -0.35422144174036446,
-0.3409987342416589, -0.3288124185468447, -0.3154877177957902,
-0.30313732007036515, -0.29213770914562365, -0.28239081118868625,
-0.2737401879554068, -0.2660223013373977, -0.2590782434105027,
-0.2528218554789744, -0.24711615459996544, -0.24191491561240092},
{2.2451161245006204, 0.39027073648673993, -0.23525587600237474,
-0.4296824256569873, -0.4539950914862842, -0.43466406817373093,
-0.4072016855486237, -0.3758869649116324, -0.35419126004309215,
-0.34098867530392407, -0.3287564367917235, -0.3154127891733681,
-0.3030561861486755, -0.29205490100715714, -0.28230818484228776,
-0.27365855299874065, -0.26594206378777074, -0.25899957315711536,
-0.25274479796976707, -0.24704070310531218, -0.2418410217490824},
{2.2391209144511337, 0.38591137293519195, -0.23770877606323504,
-0.4307631456204869, -0.45444909517260057, -0.4348429246759784,
-0.40725349990325965, -0.3758715396265758, -0.35416040725421644,
-0.34097784579300566, -0.3286998853909967, -0.3153375259168637,
-0.3029748297501791, -0.2919719320032621, -0.28222543592710797,
-0.2735768219331165, -0.26586174934496337, -0.2589208403495091,
-0.2526676889195906, -0.24696520878675943, -0.24176709210001726},
{2.2331250720610365, 0.381565326375089, -0.24015047280602245,
-0.43183681616245334, -0.454899094966378, -0.4350194381903379,
-0.4073038623146886, -0.37585531162220176, -0.3541288898205489,
-0.3409662467918885, -0.32864276990533514, -0.3152619316608709,
-0.30289325342868834, -0.29188880411051465, -0.28214256605855254,
-0.2734949961426213, -0.2657813592134848, -0.2588420460556766,
-0.2525905292901006, -0.2468896725202448, -0.24169312747048105},
{2.2271286599654774, 0.3772325701464707, -0.2425810056718346,
-0.4329034745162268, -0.45534511598225635, -0.43519362492809655,
-0.4073527835546603, -0.37583828725916657, -0.354096714460266,
-0.340953879493161, -0.32858509585460577, -0.315186010007008,
-0.3028114597156877, -0.29180551928870824, -0.2820595768387542,
-0.2734130769998954, -0.26570089458788954, -0.25876319133481657,
-0.252513320035055, -0.2468140951745103, -0.2416191286591336},
{2.2211317404594437, 0.37291307753659864, -0.2450004140263547,
-0.4339631577329333, -0.45578718318025496, -0.4353655009900566,
-0.4074002743175696, -0.37582047284226183, -0.3540638882096506,
-0.3409407451965204, -0.32852686871795334, -0.3151097645242258,
-0.3027294511205409, -0.2917220794810001, -0.2819764698566971,
-0.27333106586622624, -0.26562035665285993, -0.25868427723741505,
-0.2524360621003767, -0.24673847761116574, -0.2415450964580744},
{2.215134375498741, 0.36860682178124865, -0.24740873715938697,
-0.4350159026822642, -0.45622532136672345, -0.43553508236732114,
-0.40744634522101997, -0.37580187462105724, -0.3540304184697341,
-0.3409268453063035, -0.3284680939338858, -0.3150331987491152,
-0.302647230130696, -0.2916384866140589, -0.2818932466883298,
-0.273248964091642, -0.265539746583291, -0.25860530480530647,
-0.2523587564242164, -0.24666282068474735, -0.2414710316528887},
{2.209136626700973, 0.3643137760659878, -0.2498060142844086,
-0.43606174605319675, -0.456659555195269, -0.43570238494205404,
-0.40749100680641975, -0.37578249879053843, -0.3539963130518031,
-0.34091218132904294, -0.3284087769003682, -0.314956316186211,
-0.3025647992118888, -0.2915547425982136, -0.28180990889668833,
-0.27316677301500303, -0.26545906554436843, -0.2585262750717545,
-0.25228140393701953, -0.2465871252427703, -0.2413969350227067},
{2.2031385553465257, 0.36003391352744163, -0.2521922845381149,
-0.43710072435473846, -0.4570899091676984, -0.43586742448826593,
-0.407534269539554, -0.3757623514917382, -0.3539615802207394,
-0.3408967548710433, -0.3283489229749243, -0.3148791203082923,
-0.30248216080834706, -0.2914708493275975, -0.2817264580320108,
-0.27308449396409906, -0.26537831469165274, -0.25844718906152037,
-0.2522040055615883, -0.24651139212578976, -0.24132280734025205},
{2.197140222379553, 0.35576720725454586, -0.25456758697998205,
-0.4381328739166894, -0.4575164076349406, -0.436030216672564,
-0.4075761438111424, -0.3757414388123472, -0.35392622873524004,
-0.34088056763598246, -0.32828853747474335, -0.3148016145566826,
-0.302399317342986, -0.29138680868029454, -0.2816428956318482,
-0.27300212825573417, -0.2652974951711578, -0.25836804779092704,
-0.2521265622131384, -0.24643562216745726, -0.24124864937189322},
{2.1911416884089596, 0.3515136302897867, -0.2569319605918299,
-0.4391582308903482, -0.45793907479796814, -0.4361907770549084,
-0.4076166399374206, -0.3757197667873351, -0.35389026788408084,
-0.34086362142253873, -0.32822762567679353, -0.3147238023415456,
-0.30231627121761234, -0.2913026225184756, -0.281559223221176,
-0.27291967719581983, -0.26521660811943026, -0.25828885226793796,
-0.2520490747993689, -0.2463598161945703, -0.24117446187769412},
{2.185143013709397, 0.34727315563042593, -0.25928544427739386,
-0.4401768312492904, -0.45835793470872, -0.4363491210893735,
-0.40765576816068083, -0.375697341399544, -0.3538537075176721,
-0.34084591812204806, -0.3281661928179391, -0.3146456870421733,
-0.30223302481310926, -0.2912182926885451, -0.28147544231250643,
-0.27283714207946386, -0.26513565466362743, -0.2582096034922144,
-0.2519715442205145, -0.24628397502713512, -0.24110024561146437},
{2.179144258222249, 0.3430457562297195, -0.2616280768619023,
-0.44118871079007643, -0.45877301127100606, -0.4365052641248762,
-0.4076935386498434, -0.37567416858028957, -0.353816558074321,
-0.3408274597161849, -0.3281042440950679, -0.3145672720072861,
-0.3021495804896389, -0.2911338210212755, -0.28139155440599395,
-0.27275452419105956, -0.26505463592159517, -0.2581303024551915,
-0.2518939713694122, -0.24620809947841465, -0.24102600132081403},
{2.1731454815566336, 0.3388314049981191, -0.26395989709166084,
-0.44219390513299306, -0.459184328241418, -0.4366592214059344,
-0.4077299615010072, -0.3756502542099474, -0.3537788306007177,
-0.3408082482746746, -0.328041784665224, -0.31448856055531366,
-0.30206594058683256, -0.29104920933195344, -0.2813075609895455,
-0.2726718248043753, -0.2649735530019472, -0.25805095014014523,
-0.25181635713156225, -0.24613219035498968, -0.24095172974719525},
{2.167146742990386, 0.3346300748044594, -0.26628094363364524,
-0.44319244972280725, -0.4595919092302271, -0.4368110080733913,
-0.4077650467379843, -0.3756256041185274, -0.35374053676631634,
-0.3407882859530242, -0.32797881964573794, -0.3144095559746818,
-0.30198210742397474, -0.29096445942050647, -0.2812234635389219,
-0.27258904518263904, -0.26489240700413735, -0.25797154752225226,
-0.25173870238517887, -0.24605624845680538, -0.24087743162595512},
{2.161148101471071, 0.3304417384771391, -0.2685912550750968,
-0.4441843798294699, -0.4599957777022814, -0.4369606391651475,
-0.40779880431286336, -0.37560022408625027, -0.3537016888714249,
-0.34076757499029736, -0.3279153541143758, -0.31433026152409965,
-0.3018980833002003, -0.2908795730716473, -0.2811392635178459,
-0.27250618657862813, -0.2648111990185422, -0.25789209556866804,
-0.2516610080012605, -0.24598027457723004, -0.240803107686388},
{2.1551496156169705, 0.3262663688052847, -0.27089086992312494,
-0.4451697305488773, -0.46039595697790126, -0.43710812961688816,
-0.4078312441065198, -0.37557411984410816, -0.35366229984891473,
-0.3407461177068978, -0.32785139310947653, -0.3142506804328307,
-0.3018138704946669, -0.2907945520550025, -0.28105496237809835,
-0.2724232502347524, -0.26472993012652707, -0.25781259523857736,
-0.25158327484363696, -0.24590426950310396, -0.2407287586517769},
{2.1491513437180876, 0.32210393853990626, -0.27317982660431933,
-0.4461485368035825, -0.4607924702337553, -0.4372534942627903,
-0.4078623759291756, -0.375547297074417, -0.35362238325961254,
-0.3407239165024014, -0.32778694163010935, -0.3141708159009809,
-0.3017294712667508, -0.2907093981252443, -0.2809705615596213,
-0.2723402373831395, -0.26464860140052715, -0.2577330474832695,
-0.25150550376903485, -0.24582823401479315, -0.24065438523944876},
{2.1431533437371573, 0.31795442039503835, -0.2754581634643678,
-0.4471208333435272, -0.46118534050375076, -0.43739674783625804,
-0.4078922095209211, -0.37551976141137494, -0.3535819532815311,
-0.34070097385340337, -0.3277220046362308, -0.31409067109976696,
-0.3016448878562239, -0.2906241130222295, -0.28088606249062464,
-0.2722571492457225, -0.26456721390412163, -0.25765345324620686,
-0.251427695627135, -0.24575216888624468, -0.2405799881608164},
{2.13715567331064, 0.3138177870488696, -0.2777259187676747,
-0.4480866547467831, -0.4615745906799022, -0.43753790497061246,
-0.40792075455223475, -0.37549151844159273, -0.3535410246931522,
-0.3406772923113965, -0.327656587048838, -0.31401024917179365,
-0.3015601224834322, -0.29053869847112274, -0.2808014665876725,
-0.27217398703432166, -0.26448576869210244, -0.2575738134630727,
-0.25134985126062703, -0.24567607488503307, -0.2405055681214297},
{2.1311583897497317, 0.30969401114486195, -0.2799831306969938,
-0.449046035420254, -0.46196024351320153, -0.4376769801998017,
-0.40794802062451424, -0.3754625737046325, -0.35349961285112846,
-0.3406528745006816, -0.3275906937501377, -0.3139295532313199,
-0.30147517734948026, -0.2904531561825283, -0.2807167752557886,
-0.2720907519507287, -0.26440426681055024, -0.2574941290618522,
-0.25127197150526265, -0.24559995277241423, -0.2404311258210201},
{2.1251615500413767, 0.30558306529285734, -0.28222983735306145,
-0.44999900960042966, -0.4623423216144933, -0.4378139879591055,
-0.4079740172705819, -0.3754329326935322, -0.35345773366275346,
-0.34062772311630085, -0.32752432958371414, -0.31384858636452667,
-0.3013900546363963, -0.29036748785261557, -0.2806319898885462,
-0.2720074451867846, -0.26432270929690355, -0.2574144009628796,
-0.25119405718991733, -0.24552380330337098, -0.24035666195354538},
{2.1191652108492653, 0.30148492207017286, -0.2844660767542379,
-0.4509456113540857, -0.4627208474553193, -0.4379489425858126,
-0.4079987539552063, -0.3754026008553255, -0.35341540355366324,
-0.34060184092200474, -0.3274574993546945, -0.31376735162978575,
-0.3013047565073174, -0.2902816951632476, -0.2805471118681629,
-0.27192406792446516, -0.2642410971800293, -0.25733463007891266,
-0.2511161091366389, -0.24544762722667074, -0.24028217720723968},
{2.1131694285148575, 0.29739955402268514, -0.2866918868361593,
-0.45188587457901125, -0.4630958433687883, -0.43808185831992985,
-0.4080222400756191, -0.37537158359155537, -0.35337263943124425,
-0.34057523074824764, -0.3273902078299391, -0.313685852057921,
-0.3012192851066599, -0.29019577978210753, -0.2804621425656038,
-0.27184062133596704, -0.2641594314803013, -0.25725481731518884,
-0.25103812816071336, -0.24537142528491182, -0.24020767226465967},
{2.107174259058387, 0.2933269336659021, -0.2889073054513841,
-0.4528198330047428, -0.46346733155041675, -0.43821274930485243,
-0.40804448496200063, -0.3753398862587769, -0.3533294586442278,
-0.34054789549020276, -0.3273224597382053, -0.3136040906524635,
-0.30113364256028685, -0.29010974336282, -0.2803770833406576,
-0.2717571065837748, -0.2640777132096574, -0.25717496356948333,
-0.2509601150707051, -0.24529519821456847, -0.24013314780271952},
{2.1011797581798732, 0.28926703348602617, -0.29111237036906207,
-0.45374752019325687, -0.4638353340589764, -0.43834162958804374,
-0.40806549787800356, -0.3753075141690564, -0.35328587893902924,
-0.3405198381058159, -0.32725425977033684, -0.31352207038991786,
-0.3010478309756823, -0.2900235875450738, -0.2802919355420395,
-0.2716735248207558, -0.26399594337167864, -0.2570950697321765,
-0.25088207066852286, -0.24521894674604616, -0.2400586044927534},
{2.0951859812601437, 0.28521982594100265, -0.2933071192745903,
-0.45466896953971503, -0.4641998728173402, -0.4384685131217157,
-0.4080852880212248, -0.37527447259046337, -0.35324191841331276,
-0.34049106161387965, -0.3271856125794536, -0.31343979422000995,
-0.3009618524421119, -0.2899373139547444, -0.28020670050747504,
-0.2715898771902256, -0.26391412296165623, -0.25701513668630865,
-0.2508039957494665, -0.24514267160372671, -0.23998404300054288},
{2.089192983361839, 0.2811852834615586, -0.29549158976929546,
-0.4555842142731633, -0.4645609696133106, -0.43859341376348665,
-0.4081038645237225, -0.3752407667475543, -0.3531975954673451,
-0.3404615690921381, -0.32711652278113446, -0.3133572650659429,
-0.30087570903079824, -0.28985092420401704, -0.28012137956379335,
-0.2715061648260393, -0.2638322529666547, -0.25693516530764304,
-0.250725891102284, -0.24506637350601457, -0.23990946398637397},
{2.0832008192304388, 0.27716337845223465, -0.2976658193701049,
-0.45649328745723894, -0.46491864610045297, -0.4387163452770553,
-0.408121236452497, -0.37520640182185133, -0.35315292875361676,
-0.3404313636754196, -0.32704699495361444, -0.3132744858246489,
-0.3007894027950774, -0.2897644198914998, -0.2800359740270109,
-0.27142238885265396, -0.26375033436558426, -0.2568551564647202,
-0.25064775750921725, -0.2449900531653909, -0.23983486810507212},
{2.0772095432952757, 0.27315408329239915, -0.29982984550923475,
-0.4573962219909097, -0.46527292379892066, -0.4388373213328586,
-0.40813741280996785, -0.37517138295231744, -0.35310793712523714,
-0.3404004485537967, -0.32697703363798175, -0.3131914593670345,
-0.30070293577056434, -0.28967780260234743, -0.27995048520242166,
-0.27133855038522137, -0.26366836812926747, -0.2567751110189228,
-0.25056959574606547, -0.24491371128845096, -0.23976025600604853},
{2.0712192096705526, 0.26915737033725523, -0.3019837055338793,
-0.4582930506091481, -0.46562382409627634, -0.4389563555087199,
-0.408152402534475, -0.3751357152358148, -0.35306263958358214,
-0.34036882697076976, -0.32690664333837616, -0.31310818853822836,
-0.3006163099753178, -0.28959107390837113, -0.2798649143846812,
-0.2712546505296565, -0.26358635522050233, -0.2566950298245272,
-0.25049140658222596, -0.2448373485759596, -0.2396856283333447},
{2.0652298721563636, 0.2651732119188389, -0.3041274367059042,
-0.4591838058836745, -0.46597136824831104, -0.43907346129050734,
-0.4081662145007308, -0.3750994037275684, -0.35301705522561905,
-0.3403365022214812, -0.3268358285221916, -0.3130246761578227,
-0.30052952740998967, -0.28950423536815384, -0.27977926285789073,
-0.2711706903827086, -0.26350429659413044, -0.2566149137287628,
-0.2504131907807484, -0.24476096572289208, -0.23961098572567294},
{2.0592415842397207, 0.26120158034700347, -0.30626107620155396,
-0.460068520223647, -0.4663155773798512, -0.4391886520727687,
-0.40817885752031746, -0.37506245344161837, -0.35297120319135256,
-0.3403034776509555, -0.3267645936202853, -0.31294092502011506,
-0.30044259005799395, -0.28941728852716575, -0.27969353189568436,
-0.2710866710320469, -0.2634221931971006, -0.2565347635718726,
-0.2503349490983902, -0.24468456341848144, -0.23953632881646064},
{2.0532543990955636, 0.25724244791039436, -0.30838466111115515,
-0.4609472258763556, -0.46665647248556547, -0.43930194115938065,
-0.4081903403421483, -0.3750248693512669, -0.35292510261175564,
-0.34026975665236714, -0.32669294302718666, -0.31285693789434693,
-0.30035549988565413, -0.2893302349178701, -0.2796077227613099,
-0.2710025935563267, -0.2633400459685333, -0.2564545801871634,
-0.25025668228566283, -0.2446081423462654, -0.2394616582338901},
{2.0472683695877922, 0.253295786877413, -0.3104982284388328,
-0.4618199549279588, -0.46699407443076824, -0.4394133417641823,
-0.40820067165293195, -0.3749866563895156, -0.3528787725575385,
-0.34023534266533456, -0.3266208811013127, -0.3127727175249412,
-0.3002682588423649, -0.2892430760598308, -0.27952183670771436,
-0.27091845902526707, -0.26325785583978834, -0.2563743644010679,
-0.2501783910868784, -0.24453170318413392, -0.23938697460094033},
{2.0412835482702887, 0.249361569497176, -0.31260181510222895,
-0.4626867393041475, -0.46732840395221426, -0.4395228670116026,
-0.4082098600776438, -0.37494781944950406, -0.3528322319890913,
-0.3402002391742357, -0.3265484121651809, -0.31268826663173516,
-0.3001808688607413, -0.28915581345981656, -0.2794358749776216,
-0.2708342684997245, -0.2631756237345227, -0.2562941170331968,
-0.25010007624021025, -0.2444552466043624, -0.23931227853542827},
{2.0352999873879356, 0.2454397680004514, -0.3146954579322288,
-0.46354761077087864, -0.46765948165889903, -0.439630529937296,
-0.40821791417997233, -0.3749083633849358, -0.352785499707856,
-0.34016444970655685, -0.32647554050563266, -0.31260358791020887,
-0.300093331856769, -0.2890684486118989, -0.2793498388036152,
-0.27075002303176254, -0.26309335056875655, -0.25621383889639177,
-0.25002173847772624, -0.24437877327367435, -0.2392375706500514},
{2.029317738877643, 0.24153035460059902, -0.3167791936726898,
-0.4644026009350542, -0.467987328032834, -0.43973634348874746,
-0.4082248424627862, -0.3748682930105012, -0.3527385943094053,
-0.34012797783126547, -0.32640227037405284, -0.31251868403172356,
-0.3000056497299568, -0.28898098299755637, -0.27926372940821864,
-0.2706657236647229, -0.2630110372509353, -0.25613353079678425,
-0.2499433785254492, -0.24430228385326838, -0.2391628515524282},
{2.0233368543693793, 0.23763330149449466, -0.3188530589801797,
-0.46525174124521457, -0.4683119634298393, -0.43984032052590943,
-0.40823065336858744, -0.37482761310229445, -0.35269153413842824,
-0.3400908271572057, -0.32632860598659835, -0.3124335576437392,
-0.2999178243634867, -0.2888934180857667, -0.27917754800397576,
-0.2705813714333057, -0.2629286846819889, -0.2560531935338482,
-0.24986499710340554, -0.24422577899887257, -0.23908812184513226},
{2.0173573851871898, 0.23374858086344022, -0.32091709042372063,
-0.4660950629922558, -0.4686334080803157, -0.43994247382180623,
-0.4082353552799472, -0.3747863283982268, -0.3526443372458047,
-0.34005300133152383, -0.32625455152442046, -0.3123482113700444,
-0.2998298576243559, -0.2888057553330992, -0.2790912957935276,
-0.2704969673636256, -0.26284629375539736, -0.2559728279004482,
-0.24978659492566374, -0.2441492593607821, -0.23901338212573986},
{2.0113793823502264, 0.2298761648740698, -0.32297132448453325,
-0.46693259731009373, -0.46895168209002325, -0.4400428160631374,
-0.4082389565199725, -0.3747444435984288, -0.35259702134794313,
-0.34001450403811706, -0.32618011113390105, -0.3122626478109809,
-0.2997417513635272, -0.2887179961838104, -0.27900497396969115,
-0.270412512473297, -0.26276386535724744, -0.2558924346829038,
-0.24970817270039153, -0.24407272558390733, -0.23893863298686527},
{2.005402896573774, 0.22601602567924603, -0.32501579755579235,
-0.46776437517638153, -0.46926680544085, -0.44014135985089536,
-0.4082414653527196, -0.37470196336565326, -0.35254960378847655,
-0.3399753389961063, -0.32610528892687546, -0.3121768695436572,
-0.299653507416071, -0.28863014206992654, -0.2789185837155349,
-0.270328007771492, -0.2626814003662921, -0.2558120146610297,
-0.2496297311298906, -0.24399617830780945, -0.2388638750161994},
{1.999427978270275, 0.2221681354189433, -0.3270505459423852,
-0.46859042741318496, -0.46957879799157115, -0.4402381177009452,
-0.4082428899836547, -0.3746588923256653, -0.3525021015024418,
-0.33993550995833954, -0.326030088980871, -0.31209087912217653,
-0.29956512760130627, -0.28854219441133483, -0.27883212620445896,
-0.27024345425901564, -0.26259889965401584, -0.25573156860819524,
-0.2495512709106599, -0.24391961816675004, -0.2387891087965514},
{1.993454677550365, 0.21833246622112235, -0.3290756058606796,
-0.4694107846876674, -0.4698876794786192, -0.44033310204464615,
-0.4082432385600865, -0.3746152350676414, -0.3524545309829975,
-0.33989502070991706, -0.3259545153393424, -0.3120046790778451,
-0.29947661372294576, -0.28845415461587093, -0.2787456026002689,
-0.27015885292837105, -0.26251636408469, -0.2556510972913788,
-0.24947279273342937, -0.24384304578972868, -0.23871433490588428},
{1.9874830442238915, 0.21450899020259842, -0.33109101343828723,
-0.4702254775127918, -0.4701934695168277, -0.4404263252294239,
-0.4082425191715848, -0.37457099614454265, -0.3524069082507296,
-0.3398538750667417, -0.3258785720119011, -0.3119182719193928,
-0.29938796756923475, -0.2883660240794008, -0.2786590140572513,
-0.2700742047638304, -0.2624337945154275, -0.2555706014712064,
-0.2493942972832087, -0.24376646180052491, -0.23863955391735342},
{1.981513127800947, 0.21069767946989487, -0.33309680471384506,
-0.4710345362479804, -0.47049618760018896, -0.44051779951935877,
-0.40824073985042614, -0.3745261800734981, -0.35235924882557856,
-0.33981207687409154, -0.32580226297455306, -0.3118316601331789,
-0.2992991909130881, -0.2882778041859076, -0.27857236172024735,
-0.269989510741501, -0.26235119179624883, -0.2554900819020175,
-0.24931578523933312, -0.24368986681773952, -0.23856476639934812},
{1.9755449774928935, 0.20689850612009114, -0.33509301563679195,
-0.47183799109982333, -0.4707958531026039, -0.44060753709578226,
-0.4082379085719967, -0.3744807913361791, -0.35231156770138067,
-0.33976963000522403, -0.32572559216993496, -0.31174484618340503,
-0.29921028551222556, -0.2881894963075708, -0.27848564672472786,
-0.2699047718293883, -0.26226855677013083, -0.2554095393319051,
-0.249237257275509, -0.24361326145483475, -0.23848997291551965},
{1.9695786422133987, 0.2031114422416621, -0.3370796820671577,
-0.47263587212274344, -0.47109248527861614, -0.44069555005783406,
-0.40823403325523017, -0.3744348343791666, -0.35226387932303066,
-0.33972653835999866, -0.325648563507545, -0.3116578325123263,
-0.2991212531093103, -0.2881011018048587, -0.2783988701968646,
-0.26981998898746473, -0.2621858902730711, -0.2553289745027708,
-0.2491587140598574, -0.24353664632017674, -0.2384151740248301},
{1.9636141705794603, 0.19933645991530316, -0.33905683977535384,
-0.4734282092196704, -0.4713861032641572, -0.4407818504230582,
-0.4082291217630284, -0.3743883136143159, -0.35221619756622424,
-0.33968280586353206, -0.3255711808639892, -0.3115706215404534,
-0.29903209543208653, -0.2880126220266056, -0.27831203325360887,
-0.26973516316773977, -0.2621031931341413, -0.25524838815037204,
-0.24908015625496, -0.24346002201707528, -0.2383403702815783},
{1.9576516109124298, 0.19557353121475357, -0.3410245244419674,
-0.47421503214273597, -0.47167672607727174, -0.4408664501279609,
-0.40822318190265794, -0.37434123341911296, -0.35216853571972967,
-0.3396384364648624, -0.32549344808320146, -0.31148321566675485,
-0.298942814193506, -0.2879240583100998, -0.2782251370027583,
-0.269650295314313, -0.26202046617554176, -0.25516778100436915,
-0.24900158451789917, -0.24338338914382157, -0.23826556223544587},
{1.9516910112390529, 0.1918226282076031, -0.3429827716575694,
-0.4749963704939241, -0.47196437261885327, -0.440949361028577,
-0.4082162214261855, -0.3742935981370302, -0.3521209064701639,
-0.33959343413565846, -0.3254153689766912, -0.31139561726886394,
-0.29885341109186436, -0.2878354119811719, -0.27813818254302575,
-0.26956538636345345, -0.261937710212661, -0.25508715378838054,
-0.24892299950030686, -0.24330674829372767, -0.238190750431525},
{1.9457324192924887, 0.18808372295609543, -0.34493161692251206,
-0.4757722537257674, -0.47224906167336866, -0.4410305949010401,
-0.40820824803085626, -0.37424541207787393, -0.35207332188916723,
-0.3395478028689351, -0.32533694732376756, -0.31130782870327456,
-0.2987638878109272, -0.2877466843542736, -0.27805117096412035,
-0.26948043724364973, -0.26185492605412547, -0.2550065072200247,
-0.24884440184840242, -0.2432301000551666, -0.23811593541035941},
{1.9397758825133447, 0.18435678751791817, -0.3468710956467516,
-0.4765427111420074, -0.47253081190957336, -0.44111016344212617,
-0.40819926935952966, -0.374196679518131, -0.3520257934229444,
-0.3395015466778034, -0.3252581868717759, -0.311219852305541,
-0.2986742460200657, -0.28765787673257703, -0.2779641033468086,
-0.26939544887568334, -0.26177211450185844, -0.25492584201097135,
-0.2487657922030383, -0.24315344501161232, -0.23804111770798056},
{1.9338214480507032, 0.18064179394698662, -0.3488012431496581,
-0.47730777189825147, -0.47280964188123187, -0.44118807826982326,
-0.40818929300106477, -0.3741474047013061, -0.35197833188405186,
-0.3394546695942386, -0.3251790913363278, -0.3111316903904732,
-0.29858448737438054, -0.2875689904080514, -0.2778769807629886,
-0.2693104221726845, -0.2616892763511334, -0.2548451588669864,
-0.24868717119974243, -0.24307678374167807, -0.23796629785593473},
{1.9278691627631483, 0.17693871429421634, -0.35072209465984105,
-0.478067465002667, -0.47308557002782514, -0.44126435092387295,
-0.4081783264907159, -0.3740975918382567, -0.3519309474453571,
-0.33940717566787976, -0.3250996644015301, -0.3110433452523302,
-0.2984946135148262, -0.2874800266615628, -0.27778980427575845,
-0.26922535804019865, -0.26160641239062565, -0.2547644584879793,
-0.24860853946875944, -0.24300011681914832, -0.23789147638132777},
{1.921919073219804, 0.1732475206082834, -0.35263368531497785,
-0.4788218193166171, -0.47335861467526286, -0.44133899286631645,
-0.4081663773105464, -0.37404724510752574, -0.35188364963609253,
-0.33935906896483997, -0.3250199097202157, -0.3109548191650158,
-0.29840462606834256, -0.2873909867629597, -0.27770257493948314,
-0.26914025737624764, -0.261523523402465, -0.25468374156805507,
-0.2485298976350951, -0.2429234448130282, -0.23781665380685676},
{1.9159712257013488, 0.16956818493637754, -0.35453605016164125,
-0.4795708635553485, -0.47362879403658525, -0.44141201548204184,
-0.4081534528897937, -0.3739963686556636, -0.35183644733986297,
-0.3393103535665524, -0.32493983091416634, -0.3108661143822604,
-0.29831452664797253, -0.28730187197116774, -0.27761529379986793,
-0.2690551210713861, -0.26144061016229236, -0.25460300879554953,
-0.24845124631854784, -0.24284676828756865, -0.23774183065083662},
{1.9100256662010553, 0.16590067932493968, -0.356429224155142,
-0.4803146262886393, -0.47389612621265836, -0.44148343007930935,
-0.4081395606052823, -0.3739449665975547, -0.3517893487945477,
-0.3392610335686338, -0.32485943157434105, -0.3107772331378207,
-0.298224316852993, -0.2872126835342782, -0.2775279618940179,
-0.2689699500087696, -0.26135767343930927, -0.25452226085308627,
-0.2483725861337633, -0.24277008780231196, -0.23766700742724933},
{1.9040824404258134, 0.1622449758203895, -0.3583132421593687,
-0.4810531359414515, -0.47416062919287233, -0.4415532478903029,
-0.4081247077818049, -0.37389304301673243, -0.3517423615939745,
-0.33921111307977303, -0.32477871526110064, -0.310688177645653,
-0.29813399826902603, -0.28712342268965313, -0.277440580250514,
-0.2688847450642081, -0.2612747139963281, -0.25444149841761504,
-0.24829391769026796, -0.24269340391212257, -0.23759218464576118},
{1.898141593797161, 0.15860104646983214, -0.36018813894663654,
-0.48178642079461365, -0.4744223208558305, -0.44162148007165203,
-0.4081089016924949, -0.3738406019656896, -0.35169549269124933,
-0.33916059622063943, -0.32469768550442885, -0.31059895010011207,
-0.29804357246817115, -0.28703409066400914, -0.2773531498894757,
-0.2687995071062305, -0.26119173258982836, -0.25436072216046046,
-0.24821524159250813, -0.24261671716723415, -0.23751736281176822},
{1.8922031714523093, 0.15496886332175536, -0.36205394919753514,
-0.48251450898544096, -0.47468121897003457, -0.44168813770495174,
-0.4080921495592251, -0.3737876474661925, -0.35164874840366145,
-0.33910948712281624, -0.32461634580415083, -0.31050955267612296,
-0.2979530410091161, -0.2869446886735202, -0.277265671822622,
-0.26871423699613994, -0.26110872997, -0.25427993274736393,
-0.2481365584398919, -0.24254002811327213, -0.23744254242642487},
{1.8862672182451685, 0.15134839842669756, -0.3639107075007916,
-0.4832374285084214, -0.47493734119457276, -0.44175323179730347,
-0.40807445855296387, -0.37373418350958226, -0.3516021344190339,
-0.33905778992775587, -0.3245346996301574, -0.3104199875293649,
-0.2978624054372565, -0.28685521792391094, -0.277178147053347,
-0.2686289355880731, -0.2610257068808023, -0.25419913083852863,
-0.2480578688268288, -0.24246333729129674, -0.23736772398667155},
{1.8803337787473808, 0.1477396238379018, -0.3657584483531264,
-0.4839552072158508, -0.4751907050797897, -0.4418167732818094,
-0.4080558357941641, -0.3736802140570749, -0.35155565580343456,
-0.3390055087857608, -0.3244527504226158, -0.31033025679645354,
-0.29777166728481846, -0.28676567961055865, -0.27709057657677705,
-0.2685436037290604, -0.260942664060006, -0.25411831708866517,
-0.24797917334276853, -0.24238664523784076, -0.23729290798528385},
{1.8744028972493398, 0.14414251161193786, -0.3675972061591226,
-0.4846678728184738, -0.4754413280679665, -0.44187877301810913,
-0.4080362883531388, -0.37362574304006213, -0.35150931701013916,
-0.33895264785498, -0.3243705015921948, -0.3102403625951141,
-0.29768082807096685, -0.2866760749185853, -0.27700296137983876,
-0.26845824225908277, -0.26085960223925153, -0.2540374921470341,
-0.2479004725722438, -0.24230995248494339, -0.23721809491088125},
{1.8684746177612206, 0.14055703380929443, -0.369427015231096,
-0.4853754528861551, -0.47568922749398435, -0.441939241792883,
-0.40801582325040914, -0.3735707743603969, -0.3514631218897225,
-0.3388992113004314, -0.3242879565202689, -0.31015030702435875,
-0.29758988930192554, -0.28658640502295957, -0.2769153024413245,
-0.26837285201112543, -0.2607765221440873, -0.2539566566574855,
-0.24782176709490006, -0.24223325956017852, -0.23714328524797945},
{1.8625489840140048, 0.13698316249494025, -0.3712479097889712,
-0.48607797484849646, -0.4759344205859975, -0.4419981903203574,
-0.4079944474571003, -0.37351531189069126, -0.35141707370123176,
-0.3388452032930471, -0.3242051185591396, -0.31006009216466246,
-0.29749885247109104, -0.2864966710885953, -0.27682760073195034,
-0.2682874338112399, -0.2606934244940278, -0.25387581125851,
-0.2477430574855407, -0.24215656698670077, -0.2370684794770121},
{1.856626039460503, 0.13342086973884143, -0.373059923960159,
-0.4867754659955052, -0.4761769244660931, -0.44205562924281605,
-0.407972167895264, -0.37345935947459247, -0.35137117512428284,
-0.33879062800873866, -0.32412199103224304, -0.30996972007812856,
-0.29740771905914004, -0.2864068742704474, -0.2767398572144244,
-0.26820198847859333, -0.2606103100025954, -0.25379495658327106,
-0.24766434431416504, -0.24207987528327327, -0.2369936780743644},
{1.8507058272763839, 0.12987012761643893, -0.3748630917794447,
-0.4874679534782222, -0.476416756150946, -0.44211156913108624,
-0.4079489914382641, -0.3734029209270714, -0.3513254282720338,
-0.3387354896274799, -0.3240385772343609, -0.3098791928086698,
-0.29731649053414655, -0.28631701571361123, -0.2766520728435104,
-0.2681165168255323, -0.26052717937737707, -0.25371409325965494,
-0.24758562814600435, -0.24200318496430057, -0.23691888151240678},
{1.8447883903611912, 0.12633090820907047, -0.376657447188876,
-0.48815546430935414, -0.4766539325524748, -0.44216602048505543,
-0.4079249249110901, -0.3733460000346944, -0.35127983470492846,
-0.33867979233242124, -0.3239548804318317, -0.30978851238216454,
-0.297225168351691, -0.2862270965534196, -0.2765642485660821,
-0.26803101965763154, -0.26044403332005994, -0.2536332219103091,
-0.2475069095415581, -0.24192649653987028, -0.23684409025952124},
{1.8388737713393735, 0.12280318360434431, -0.37844302403765573,
-0.4888380253639336, -0.47688847047849015, -0.4422189937341531,
-0.4078999750906349, -0.3732886005559033, -0.3512343954451177,
-0.3386235403090116, -0.3238709038627545, -0.30969768080663646,
-0.29713375395496483, -0.28613711791554386, -0.2764763853211936,
-0.2679454977737485, -0.260360872526486, -0.2535523431526817,
-0.24742818905663133, -0.24184981051577542, -0.23676930478013458},
{1.832962012561301, 0.11928692589644624, -0.38021985608204134,
-0.48951566337992336, -0.4771203866333425, -0.44227049923783546,
-0.4078741487059039, -0.37323072622127745, -0.35118911099148575,
-0.338566737744152, -0.3237866507371983, -0.3096067000724066,
-0.2970422487748888, -0.2860470809160864, -0.27638848404013433,
-0.26785995196608425, -0.2602776976866954, -0.2534714575990679,
-0.2473494672423716, -0.24177312739355877, -0.23669452553475226},
{1.8270531561042944, 0.1157821071863821, -0.3819879769852447,
-0.4901884049588793, -0.4773496976185675, -0.4423205472860904,
-0.4078474524380285, -0.37317238073380965, -0.3511439813351991,
-0.3385093888253618, -0.32370212423741, -0.3095155721522683,
-0.2969506542302091, -0.285956986661679, -0.2763005456464987,
-0.2677743830202296, -0.2601945094849778, -0.25339056585664377,
-0.2472707446453096, -0.24169644767053564, -0.23661975297998517},
{1.8211472437736338, 0.11228869958214735, -0.3837474203173422,
-0.4908562765665646, -0.47757641993351374, -0.44236914809989275,
-0.4078198929200749, -0.3731135677691598, -0.3510990059757001,
-0.3384514977399703, -0.32361732751800654, -0.30942429900164503,
-0.29685897172761067, -0.28586683624957937, -0.27621257105623004,
-0.26768879171522, -0.260111308599911, -0.25330966852751374,
-0.24719202180738814, -0.24161977183983985, -0.23654498756857723},
{1.8152443171035937, 0.10880667519881695, -0.38549821955518504,
-0.4915193045335745, -0.4778005699759898, -0.44241631183171104,
-0.40779147673647526, -0.3730542909759248, -0.3510541839370751,
-0.33839306867432983, -0.3235322637061968, -0.3093328825587488,
-0.2967672026618215, -0.2857766307677644, -0.27612456117769757,
-0.2676031788235944, -0.2600280957044137, -0.25322876620874596,
-0.24711329926600462, -0.24154310039044444, -0.236470229749443},
{1.80934441735845, 0.10533600615854999, -0.3872404080823124,
-0.49217751505598106, -0.4780221640428825, -0.4424620485659672,
-0.4077622104219462, -0.3729945539758862, -0.3510095137847329,
-0.3383341058130389, -0.32344693590196805, -0.3092413247447393,
-0.2966753484157131, -0.2856863712950269, -0.27603651691174724,
-0.2675175451114363, -0.25994487146578243, -0.2531478594924107,
-0.24703457755403802, -0.2414664338071941, -0.23639547996768698},
{1.8034475855335055, 0.10187666459050866, -0.388974019188875,
-0.4928309341959348, -0.4782412183307907, -0.4425063683195114,
-0.4077321004598153, -0.37293436036426586, -0.35096499364231637,
-0.33827461333819364, -0.32336134717829396, -0.3091496274638865,
-0.29658341036041047, -0.2855960589010638, -0.27594843915175954,
-0.2674318913384369, -0.25986163654574185, -0.25306694896562076,
-0.24695585719989116, -0.24138977257084632, -0.23632073866464098},
{1.7975538623561065, 0.09842862263067699, -0.39069908607155385,
-0.49347958788231006, -0.47845774893665083, -0.4425492810420984,
-0.4077011532795172, -0.3728737137099817, -0.35092062120880724,
-0.33821459542865906, -0.3232755005813366, -0.3090577926037184,
-0.2964913898553843, -0.2855056946465715, -0.27586032878371186,
-0.26734621825794, -0.2597783916004899, -0.25298603521057694,
-0.24687713872752753, -0.24131311715809514, -0.2362460062778925},
{1.7916632882866559, 0.09499185242157732, -0.3924156418334925,
-0.49412350191131454, -0.4786717718583454, -0.4425907966168366,
-0.4076693752532224, -0.37281261755588335, -0.35087639377574487,
-0.33815405625935374, -0.3231893991306398, -0.3089658220351821,
-0.2963992882485635, -0.28541527958333857, -0.2757721866862351,
-0.2672605266169967, -0.25969513728073895, -0.25290511880459626,
-0.24679842265649876, -0.24123646804160734, -0.23617128324131323},
{1.7857759035196337, 0.09156632611189176, -0.39412371948422864,
-0.4947627019470979, -0.47888330299532844, -0.44263092486067107,
-0.40763677269141424, -0.3727510754190054, -0.3508323082445276,
-0.33809300000055514, -0.323103045819334, -0.30887371761279026,
-0.2963071068764278, -0.2853248147543322, -0.2756840137306702,
-0.2671748171564116, -0.2596118742317577, -0.2528242003201572,
-0.2467197095019832, -0.24115982569004846, -0.23609656998507986},
{1.7798917479846101, 0.0881520158559646, -0.39582335193962787,
-0.49539721352239474, -0.4790923581492312, -0.44266967552482994,
-0.4076033518373473, -0.37268909079080176, -0.350788361143723,
-0.3380314308172272, -0.3230164436143299, -0.3087814811747767,
-0.29621484706410844, -0.28523430119378695, -0.27559581078112694,
-0.26708909061079666, -0.2595286030934193, -0.25274328032493487,
-0.24664099977481885, -0.24108319056811894, -0.23602186693571578},
{1.7740108613472576, 0.0847488938131952, -0.397514572021828,
-0.49602706203910424, -0.4792989530244679, -0.44270705829527796,
-0.4075691188603684, -0.37262666713738474, -0.35074454864636756,
-0.33796935286836083, -0.3229295954565177, -0.3086891145432454,
-0.2961225101254888, -0.2851437399272926, -0.2755075786945354,
-0.26700334770862, -0.2594453245002385, -0.2526623593818385,
-0.24656229398153756, -0.24100656313658117, -0.23594717451610955},
{1.7681332830103653, 0.08135693214731907, -0.39919741245917695,
-0.49665227276893553, -0.4795031032288501, -0.442743082793181,
-0.407534079848013, -0.3725638078997583, -0.35070086658718647,
-0.33790677030633387, -0.3228425042609632, -0.3085966195243133,
-0.29603009736329844, -0.2850531319718817, -0.27541931832071254,
-0.26691758917225344, -0.25936203908141897, -0.252581438049049,
-0.246483592624399, -0.24092994385229036, -0.2358724931455452},
{1.7622590521148538, 0.07797610302556633, -0.40087190588618765,
-0.49727287085400135, -0.47970482427417566, -0.44277775857533735,
-0.40749824079700714, -0.37250051649405164, -0.3506573104797165,
-0.33784368727629366, -0.3227551729171018, -0.3085039979082655,
-0.2959376100692138, -0.28496247833611077, -0.2753310305024079,
-0.2668318157180237, -0.2592787474608941, -0.2525005168800621,
-0.24640489620142164, -0.24085333316822877, -0.23579782323973444},
{1.75638820754078, 0.07460637861770311, -0.4025380848434859,
-0.4978888813074165, -0.4799041315768296, -0.4428110951346411,
-0.407461607603149, -0.37243679631174514, -0.3506138755332809,
-0.33778010791554935, -0.32266760428893604, -0.30841125146968934,
-0.2958450495239486, -0.2848717800201473, -0.2752427160753622,
-0.2667460280562612, -0.25919545025736634, -0.25241959642371387,
-0.24632620520641968, -0.2407767315335265, -0.23572316521083195},
{1.7505207879083509, 0.07124773109494983, -0.4041959817777695,
-0.4985003290139322, -0.480101040458376, -0.4428431019005162,
-0.40742418605021463, -0.37237265071989434, -0.35057055666978604,
-0.3377160363529894, -0.3225798012152286, -0.30831838196763106,
-0.2957524169973518, -0.28478103801585103, -0.27515437586836733,
-0.26666022689134417, -0.25911214808435146, -0.2523386772242237,
-0.2462475201290314, -0.24070013939350615, -0.23564851946748386},
{1.7446568315789321, 0.06790013262878464, -0.4058456290417643,
-0.49910723873050533, -0.480295566146149, -0.4428737882393529,
-0.40738598179805896, -0.37230808306135554, -0.3505273485403205,
-0.33765147670850487, -0.3224917665096957, -0.30822539114572517,
-0.2956597137485023, -0.284690253306852, -0.275066010703309,
-0.26657441292175116, -0.2590288415502151, -0.25225775982122745,
-0.2461688414547538, -0.240623557189691, -0.23557388641482763},
{1.738796376656051, 0.06456355538961484, -0.4074870588941926,
-0.49970963508693084, -0.4804877237738415, -0.44290316345495745,
-0.4073470003699906, -0.3722430966550052, -0.3504842455415038,
-0.33758643309244624, -0.3224035029612, -0.30813228073234344,
-0.2955669410257965, -0.28459942686863265, -0.2749776213952355,
-0.2664885868401048, -0.2589455312582198, -0.2521768447498226,
-0.2460901696649746, -0.24054698535985727, -0.23549926645454475},
{1.7329394609864106, 0.06123797154534148, -0.4091203034997359,
-0.5003075425864282, -0.48067752838207845, -0.4429312367889615,
-0.4073072471397143, -0.37217769479595314, -0.3504412418315869,
-0.3375209096050803, -0.3223150133339426, -0.30803905244073365,
-0.2954741000670485, -0.2845085596686039, -0.2748892087524007,
-0.26640274933321967, -0.2588622178065632, -0.25209593254058915,
-0.24601150523700444, -0.24047042433804772, -0.23542465998487402},
{1.7270861221608875, 0.05792335325979749, -0.4107453949290084,
-0.5009009856062254, -0.48086499491900425, -0.44295801742127755,
-0.407266727317966, -0.37211188075575996, -0.35039833134627146,
-0.3374549103360703, -0.32222630036765715, -0.30794570796915044,
-0.29538119209957114, -0.284417652666185, -0.27480077357631905,
-0.26631690108215256, -0.258778901788413, -0.25201502371963574,
-0.24593284864410747, -0.24039387455460476, -0.23535006740063275},
{1.7212363975155371, 0.054619672691070244, -0.4123623651585344,
-0.5014899883981863, -0.48105013824085, -0.44298351447051215,
-0.40722544593907184, -0.37204565778264925, -0.35035550781421015,
-0.3373884393639732, -0.32213736677779936, -0.3078522490010014,
-0.29528821834027663, -0.2843267068128737, -0.2747123166618266,
-0.2662310427622373, -0.25869558379195384, -0.2519341188086284,
-0.24585420035553335, -0.24031733643619863, -0.23527548909325796},
{1.7153903241326, 0.051326901989714145, -0.41397124607072183,
-0.5020745750893698, -0.48123297311251056, -0.4430077369943891,
-0.40718340784768425, -0.3719790291017129, -0.3503127647722158,
-0.33732150075575335, -0.3220482152557358, -0.30775867720497607,
-0.29519517999575823, -0.28423572305232947, -0.2746238387971188,
-0.26614517504314805, -0.25861226440042173, -0.2518532183248316,
-0.24577556083654944, -0.24024081040585757, -0.23520092545082316},
{1.709547938841497, 0.048045013296854885, -0.41557206945384684,
-0.5026547696826436, -0.481413514208113, -0.44303069399017964,
-0.4071406176858196, -0.37191199791511853, -0.3502700955800961,
-0.3372540985663054, -0.3219588484689344, -0.3076649942351774,
-0.2951020782623783, -0.2841447023204303, -0.2745353407638131,
-0.2660592985889215, -0.25852894419214123, -0.25177232278113415,
-0.24569693054846686, -0.24016429688299384, -0.23512637685805998},
{1.7037092782198364, 0.04477397874218584, -0.4171648670020393,
-0.5032305960572718, -0.48159177611157494, -0.4430523943951039,
-0.40709707988052407, -0.3718445674023169, -0.350227493435177,
-0.33718623683799775, -0.321869269061158, -0.307571201731266,
-0.2950089143263637, -0.28405364554536405, -0.2744468233370026,
-0.26597341405802644, -0.25844562374057556, -0.2516914326860904,
-0.24561830994867828, -0.2400877962834314, -0.23505184369640061},
{1.6978743785944064, 0.04151377044186333, -0.41874967031527544,
-0.5038020779694833, -0.4817677733171747, -0.44307284708676614,
-0.40705279863223326, -0.37177674072023764, -0.3501849513864371,
-0.33711791960023013, -0.3217794796526488, -0.3074773013185782,
-0.29491568936388624, -0.28396255364768475, -0.27435828728530043,
-0.26588752210339434, -0.2583623036143512, -0.2516105485439531,
-0.24553969949068502, -0.24001130901943782, -0.23497732634398047},
{1.6920432760421735, 0.03826436049631151, -0.420326510899365,
-0.5043692390530851, -0.48194152023009784, -0.44309206088355263,
-0.40700777790407383, -0.3717085210034917, -0.35014246234828106,
-0.3370491508690043, -0.3216894828403164, -0.30738329460826264,
-0.2948224045411474, -0.28387142754038497, -0.2742697333708891,
-0.2658016233724574, -0.2582789843772997, -0.2515296708546997,
-0.24546109962411944, -0.23993483549974076, -0.23490282517567904},
{1.686216006391283, 0.03502572098793775, -0.4218954201659519,
-0.5049321028200136, -0.4821130311669965, -0.44311004454503977,
-0.40696202141225746, -0.3716399113645638, -0.35010001911393346,
-0.33697993464651277, -0.32159928119792447, -0.30728918319740467,
-0.29472906101447127, -0.2837802681289657, -0.27418116234957834,
-0.26571571850720865, -0.2581956665884998, -0.25144880011407367,
-0.24538251079478893, -0.23985837612957095, -0.23482834056314458},
{1.6803926052220468, 0.031797823978759, -0.42345642943250983,
-0.5054906926609435, -0.4822823203565484, -0.4431268067724132,
-0.40691553261765406, -0.37157091489401184, -0.35005761436844307,
-0.33691027492073194, -0.3215088772762834, -0.30719496866915974,
-0.29463565993037877, -0.2836890763115005, -0.27409257497085404,
-0.2656298081442356, -0.2581123508023095, -0.25136793681361763,
-0.2453039334446992, -0.23978193131067152, -0.23475387287480998},
{1.67457310786794, 0.028580641507962905, -0.42500956992234945,
-0.5060450318458531, -0.4824494019399876, -0.4431423562088489,
-0.4068683147187302, -0.3715015346606517, -0.350015240701299,
-0.3368401756650452, -0.32141827360342556, -0.30710065259287506,
-0.29454220242567963, -0.28359785297870543, -0.27400397197792076,
-0.26554389291475966, -0.2580290375684121, -0.2512870814406992,
-0.24522536801207828, -0.23970550144134475, -0.2346794224759254},
{1.668757549416594, 0.02537414558939012, -0.42655487276462556,
-0.5065951435245921, -0.48261428997166406, -0.4431567014399394,
-0.40682037064588183, -0.3714317737117545, -0.34997289061864933,
-0.33676964083786515, -0.3213274726848051, -0.30700623652421466,
-0.2944486896275538, -0.2835065990139993, -0.2739153541077588,
-0.26545797344469074, -0.2579457274318373, -0.25120623447854923,
-0.2451468149314115, -0.239629086916457, -0.2346049897285771},
{1.6629459647107825, 0.022178308208965623, -0.42809236899434183,
-0.5071410507274777, -0.4827769984195691, -0.44316985099406847,
-0.40677170305722954, -0.3713616350732233, -0.34993055655511585,
-0.3366986743822722, -0.3212364770034644, -0.30691172200528294,
-0.2943551226536263, -0.28341531529356584, -0.27382672209117076,
-0.26537205035465733, -0.25786242093301504, -0.25112539640629156,
-0.24506827463347367, -0.23955268812748565, -0.23453057499172011},
{1.6571383883494142, 0.018993101322065935, -0.4296220895523685,
-0.5076827763658411, -0.48293754116588544, -0.44318181334281836,
-0.4067223143359873, -0.37129112174978574, -0.3498882308852248,
-0.3366272802256739, -0.32114528902023554, -0.3068171105647476,
-0.29426150261205974, -0.28332400268642266, -0.2737380766528257,
-0.2652861242600579, -0.25777911860779573, -0.2510445676989765,
-0.24498974754534597, -0.23947630546252707, -0.23445617862119053},
{1.6513348546885158, 0.01581849685085078, -0.43114406528545657,
-0.5082203432326216, -0.4830959320075182, -0.44319259690136115,
-0.4066722065893233, -0.37122023672517424, -0.3498459059344205,
-0.3365554622794718, -0.32105391117391435, -0.3067224037179605,
-0.29416783060162327, -0.28323266205447273, -0.2736494185113152,
-0.26520019577109244, -0.2576958209874985, -0.2509637488276095,
-0.24491123409045745, -0.23939993930633352, -0.23438180096973887},
{1.6455353978422218, 0.012654466681550694, -0.4326583269462572,
-0.5087537740029241, -0.4832521846566197, -0.4432022100288347,
-0.40662138164882244, -0.37114898296230586, -0.34980357398969186,
-0.33648322443873496, -0.32096234588144357, -0.3066276029670799,
-0.29407410771178344, -0.28314129425257645, -0.27356074837919636,
-0.26511426549281447, -0.25761252859894107, -0.2508829402591869,
-0.24483273468860361, -0.23932359004033799, -0.23430744238704843},
{1.6397400516837548, 0.009500982661732708, -0.43416490519334766,
-0.5092830912345697, -0.48340631274112295, -0.44321066102874346,
-0.40656984107245453, -0.37107736340345765, -0.3497612273097953,
-0.33641057058189744, -0.32087059553809427, -0.30653270980118347,
-0.29398033502277454, -0.2830499001286003, -0.273472066963037,
-0.26502833402516424, -0.257529241964473, -0.25080214245671917,
-0.24475424975597782, -0.23924725804267422, -0.23423310321975843},
{1.6339488498464108, 0.0063580165975382075, -0.4356638305912534,
-0.5098083173686941, -0.4835583298052615, -0.4432179581493389,
-0.40651758614804845, -0.3710053809704488, -0.34971885813508385,
-0.3363375045704626, -0.3207786625176516, -0.3064377256963901,
-0.2938865136056822, -0.2829584805234806, -0.27338337496346865,
-0.2649424019630099, -0.25744596160201605, -0.2507213558792716,
-0.24467577970520216, -0.2391709436882065, -0.2341587838114933},
{1.6281618257245387, 0.003225540250915447, -0.4371551336104802,
-0.5103294747302697, -0.48370824931009127, -0.44322410958398983,
-0.4064646178982366, -0.3709330385648085, -0.3496764586969527,
-0.3362640302487124, -0.32068654917258577, -0.30634265211597766,
-0.29379264452251613, -0.2828670362712823, -0.27329467307522803,
-0.26485646989619355, -0.2573626880250943, -0.25064058098198805,
-0.24459732494534991, -0.23909464734855473, -0.23408448450287855},
{1.6223790124745197, 0.00010352533684700876,
-0.43863884462754155, -0.5108465855286953,
-0.4838560846340148, -0.4432291234715766,
-0.4064109370867637, -0.3708603390679476,
-0.34963402122687975, -0.3361901514434442,
-0.3205942578342419, -0.3062474905104922,
-0.29369872882629233, -0.28277556819924965,
-0.2732059619872076, -0.2647705384095633,
-0.25727942174286944, -0.25055981821612483,
-0.2445188858819748, -0.23901836939211574,
-0.23401020563156916},
{1.6166004430157443, -0.0030080564794161685,
-0.44011499392499875, -0.5113596718583462,
-0.4840018490732839, -0.44323300789684483,
-0.4063565442261454, -0.3707872853413364,
-0.34959153796510134, -0.3361158719636982,
-0.32050179081301094, -0.30615224231786853,
-0.2936047675611072, -0.2826840771278686,
-0.2731172423824993, -0.26468460808301864,
-0.25719616326018013, -0.2504790680290793,
-0.244440462917137, -0.23894211018409373,
-0.23393594753226826},
{1.6108261500315895, -0.006109233585110188, -0.4415836116914957,
-0.511868755699107, -0.4841455558425203, -0.4432357708907958,
-0.4063014395865486, -0.3707138802266614, -0.3495490011689021,
-0.3360411956005219, -0.32040915039850953, -0.3060569089635376,
-0.29351076176220786, -0.28259256387091597, -0.2730285149384346,
-0.2645986794915468, -0.25711291307756423, -0.25039833086441776,
-0.2443620564494332, -0.2388658700865161, -0.23386171053674715},
{1.6050561659703926, -0.00920003442268559, -0.44304472802180317,
-0.5123738589169653, -0.4842872180752164, -0.4432374204310533,
-0.4062456232058119, -0.3706401265459982, -0.3495064031205314,
-0.3359661261267184, -0.32031633885975874, -0.30596149186054444,
-0.2934167124560777, -0.28250102923552, -0.2729397803266451,
-0.26451275320525924, -0.2570296716913061, -0.2503176071619101,
-0.24428366687401976, -0.23878964945827014, -0.2337874949738813},
{1.5992905230464234, -0.012280487492506584, -0.4444983729168561,
-0.5128750032645186, -0.4844268488242448, -0.44323796444221836,
-0.40618909490053173, -0.37056602710197295, -0.34946373613475845,
-0.335890667296623, -0.32022335844535527, -0.3058659924096523,
-0.29332262066049836, -0.2824094740222076, -0.2728510392130876,
-0.26442682978943644, -0.2569464395934564, -0.25023689735755145,
-0.2442052945826408, -0.23871344865511118, -0.23371330116965214},
{1.5935292532408545, -0.01535062135551319, -0.4459445762838069,
-0.5133722103815608, -0.48456446106236495, -0.44323741079625373,
-0.4061318542780714, -0.3704915846779257, -0.3494209925660627,
-0.33581482284588604, -0.32013021138365316, -0.30577041199945615,
-0.2932284873846335, -0.28231789902496, -0.27276229225810555,
-0.26434090980456104, -0.2568632172718744, -0.25015620188360294,
-0.24412693996365153, -0.23863726802970325, -0.23363912944718562},
{1.5877723883027317, -0.018410464635831243, -0.4473833679360712,
-0.5138655017956093, -0.48470006768270846, -0.443235767312819,
-0.40607390074944333, -0.3704168020380685, -0.3493781648154793,
-0.3357385964912654, -0.32003689988293005, -0.30567475200649286,
-0.29313431362909226, -0.2822263050312624, -0.27267354011646366,
-0.26425499380635575, -0.2567800052102597, -0.25007552116860676,
-0.24404860340204823, -0.2385611079316306, -0.23356498012676716},
{1.5820199597499418, -0.021460046023329286, -0.44881477759337896,
-0.5143548989224412, -0.484833681499288, -0.4432330417596549,
-0.40601523354291225, -0.37034168192764316, -0.3493352453370916,
-0.33566199193042534, -0.31994342613156557, -0.3055790137953436,
-0.2930401003860094, -0.28213469282216014, -0.27258478343739584,
-0.2641690823458262, -0.2566968038881805, -0.24999485563742285,
-0.24397028527949327, -0.23848496870742436, -0.23349085352585935},
{1.576271998870174, -0.02449939427611684, -0.45023883488183186,
-0.5148404230666651, -0.484965315247479, -0.4432292418529307,
-0.405955851718218, -0.3702662270730822, -0.34929222664419024,
-0.3355850128417525, -0.319849792298214, -0.3054831987187435,
-0.2929458486391108, -0.28204306317230216, -0.2724960228646465,
-0.26408317596929154, -0.25661361378110814, -0.24991420571125916,
-0.24389198597433825, -0.23840885070059037, -0.23341674995913295},
{1.5705285367218926, -0.02752853822296892, -0.45165556933395806,
-0.5153220954222268, -0.48509498158451536, -0.44322437525759006,
-0.40589575418136514, -0.37019044018215774, -0.3492491013151092,
-0.3355076628841761, -0.3197560005319708, -0.30538730811768944,
-0.2928515593637878, -0.281951416849998, -0.2724072590365126,
-0.2639972752184239, -0.2565304353604493, -0.24983357180769566,
-0.24381370586165135, -0.23833275425162453, -0.2333426697384826},
{1.5647896041352862, -0.030547506765672798, -0.4530650103887703,
-0.5157999370729727, -0.48522269308997823, -0.443218449587718,
-0.4058349396997722, -0.37011432394413546, -0.34920586199872,
-0.3354299456969977, -0.3196620529625474, -0.30529134332153673,
-0.292757233527163, -0.28185975461726165, -0.2723184925858899,
-0.263911380630285, -0.25644726909357296, -0.24975295434071038,
-0.2437354453132396, -0.23825667969804376, -0.23326861317304237},
{1.559055231713241, -0.033556328881293805, -0.45446718739183023,
-0.5162739689931807, -0.48534846226626993, -0.44321147240687,
-0.40577340691781316, -0.37003788102993124, -0.34916250141963673,
-0.3353518648997344, -0.319567951700437, -0.3051953056481098,
-0.2926628720881661, -0.2817680772298616, -0.2722297241403145,
-0.2638254927373619, -0.25636411544385296, -0.24967235372071372,
-0.24365720469767815, -0.23818062737440193, -0.23319458056922104},
{1.5533254498322913, -0.03655503362435339, -0.4558621295953148,
-0.5167442120480797, -0.4854723015391063, -0.44320345122844046,
-0.40571115437253974, -0.3699611140922521, -0.34911901238309906,
-0.3352734240919655, -0.3194736988370877, -0.30509919640380556,
-0.29256847599759483, -0.2816763854373732, -0.272140954322006,
-0.26373961206760804, -0.25628097487068824, -0.24959177035457025,
-0.24357898438033584, -0.23810459761231734, -0.2331205722307092},
{1.5476002886435767, -0.039543650128905164, -0.4572498661580764,
-0.5172106869944055, -0.48559422325798157, -0.4431943935159939,
-0.4056481805095401, -0.3698840257657489, -0.34907538777956293,
-0.3351946268531885, -0.3193792964450618, -0.30500301688368525,
-0.2924740461981886, -0.28158467998321457, -0.2720521837479002,
-0.2636537391444669, -0.2561978478295329, -0.24951120464562676,
-0.24350078472338796, -0.2380285907404899, -0.2330465884585048},
{1.5418797780737987, -0.04252220761051277, -0.4586304261457177,
-0.5176734144809024, -0.4857142396966498, -0.4431843066836018,
-0.4055844836988689, -0.36980661866716236, -0.3490316205890053,
-0.3351154767426898, -0.3192847465782075, -0.30490676837158415,
-0.29237958362469507, -0.28149296160471027, -0.2719634130297045,
-0.2635678744869202, -0.25611473477193897, -0.24943065699374117,
-0.24342260608585647, -0.23795260708473126, -0.23297262955093234},
{1.5361639478261748, -0.045490735368124216, -0.4600038385306585,
-0.5181324150488786, -0.48583236305360045, -0.4431731980961987,
-0.4055200622508908, -0.3697288953954655, -0.3489877038849417,
-0.3350359772994164, -0.3191900512718271, -0.30481045214020497,
-0.29228508920393614, -0.2814012310331242, -0.2718746427739336,
-0.2634820186095196, -0.25603163614557056, -0.24935012779530988,
-0.24334444882362705, -0.2378766469679761, -0.23289869580367062},
{1.530452827381383, -0.048449262785825065, -0.4613701321922107,
-0.518587709132716, -0.48594860545251656, -0.4431610750698969,
-0.40545491443205983, -0.3696508585320071, -0.3489436308381787,
-0.3349561320418595, -0.3190952125428317, -0.3047140694512243,
-0.2921905638548738, -0.28130948899370917, -0.2717858735819424,
-0.2633961720224097, -0.25594855239425035, -0.24926961744329262,
-0.24326631328947002, -0.23780071071031855, -0.23282478750976332},
{1.5247464459985198, -0.05139781933448635, -0.46272933591665477,
-0.5190393170603902, -0.4860629789427492, -0.4431479448723412,
-0.4053890384804788, -0.369572510640655, -0.3488993947203011,
-0.33487594446794244, -0.3190002323899121, -0.3046176215553821,
-0.2920960084886769, -0.28121773620575785, -0.27169710604998143,
-0.2633103352313881, -0.2558654839579778, -0.24918912632724122,
-0.2431881998330722, -0.23772479862902007, -0.23275090495964418},
{1.5190448327160393, -0.054336434573281786, -0.46408147839731484,
-0.5194872590540084, -0.4861754954997724, -0.44313381472303026,
-0.4053224326211951, -0.36949385426792947, -0.34885498890689887,
-0.33479541805492274, -0.31890511279369427, -0.30452110969257684,
-0.29200142400878265, -0.28112597338263684, -0.27160834076922064,
-0.26322450873790587, -0.2557824312729582, -0.24910865483331696,
-0.24311010880104464, -0.23764891103853242, -0.23267704844114678},
{1.513348016352701, -0.05726513815108467, -0.4654265882346379,
-0.5199315552303058, -0.4862861670256476, -0.44311869179364227,
-0.40525509508121366, -0.36941489194314925, -0.34881040688055504,
-0.3347145562592932, -0.3188098557169066, -0.30442453509196904,
-0.29190681131096907, -0.28103420123184214, -0.27151957832580337,
-0.2631386930391323, -0.25569939477163867, -0.2490282033443269,
-0.2430320405369678, -0.23757304825052913, -0.23260321823954316},
{1.5076560255085174, -0.06018395980773731, -0.46676469393627396,
-0.5203722256011851, -0.4863950053494856, -0.4431025832083772,
-0.4051870241040897, -0.36933562617856114, -0.3487656422335914,
-0.33463336251670023, -0.31871446310453716, -0.3043278989720718,
-0.2918121712834085, -0.28094242045503637, -0.2714308193008777,
-0.2630528886279717, -0.25561637488273786, -0.24894777223975328,
-0.24295399538140083, -0.23749721057391837, -0.23252941463755009},
{1.501968888565686, -0.06309292937518732, -0.4680958239171631,
-0.5208092900742237, -0.4865020222278884, -0.4430854960442605,
-0.40511821796414965, -0.3692560594694816, -0.3487206886705825,
-0.33455184024185836, -0.31861893688398873, -0.30423120254084635,
-0.29171750480674163, -0.2808506317480952, -0.2713420642706389,
-0.2629670959930997, -0.25553337203126797, -0.24886736189576047,
-0.24287597367190517, -0.23742139831486994, -0.2324556379153474},
{1.496286633689537, -0.0659920767784893, -0.4694200064996163,
-0.5212427684531703, -0.48660722934541223, -0.44306743733148246,
-0.4050486749802124, -0.3691761942944237, -0.3486755400106504,
-0.33446999282847956, -0.3185232789652401, -0.30413444699578907,
-0.2916228127541314, -0.28075883580115224, -0.27125331380636736,
-0.2628813156190005, -0.255450386638568, -0.24878697268524047,
-0.24279797574307305, -0.23734561177682506, -0.23238188835060392},
{1.4906092888294664, -0.06888143203666906, -0.47073726991340287,
-0.521672680438489, -0.4867106383150047, -0.4430484140537153,
-0.40497839352880355, -0.36909603311523304, -0.348630190189542,
-0.334387823649208, -0.31842749124100145, -0.3040376335240322,
-0.2915280959913262, -0.2806670332986324, -0.2711645684744657,
-0.26279554798599003, -0.2553674191223299, -0.24870660497782127,
-0.24272000192654514, -0.23726985126052752, -0.23230816621849157},
{1.484936881719871, -0.07176102526345542, -0.4720476422958404,
-0.5220990456278307, -0.4868122606784611, -0.4430284331484211,
-0.40490737205686794, -0.3690155783772171, -0.348584633261507,
-0.33430533605555757, -0.31833157558686836, -0.3039407633024261,
-0.29143335537672765, -0.2805752249193078, -0.2710758288365006,
-0.26270979357026264, -0.2552844698966258, -0.2486262591399062,
-0.24264205255103244, -0.23719411706404253, -0.23223447179170353},
{1.479269439881083, -0.0746308866678606, -0.47335115169187814,
-0.5225218835165705, -0.4869121079068629, -0.4430075015071852,
-0.4048356090938606, -0.3689348325092751, -0.3485388634009689,
-0.3342225333778606, -0.31823553386147796, -0.30384383749763694,
-0.2913385917614445, -0.2804834113363305, -0.27098709544923627,
-0.262624052843911, -0.2552015393719426, -0.24854593553469034,
-0.24256412794234752, -0.23711840948277357, -0.23216080534048428},
{1.4736069906202987, -0.07749104655462814, -0.47464782605419953,
-0.5229412134983014, -0.48701019140101476, -0.44298562597600577,
-0.40476310326329723, -0.3688537979240269, -0.3484928749040114,
-0.3341394189252185, -0.31813936790665753, -0.3037468572662311,
-0.29124380598935995, -0.28039159321727714, -0.2708983688646787,
-0.2625383262749618, -0.25511862795520246, -0.24846563452218706,
-0.24248622842341216, -0.23704272880948715, -0.2320871671326285},
{1.467949561032511, -0.08034153532453589, -0.47593769324330454,
-0.5233570548653197, -0.4871065224918874, -0.4429628133556254,
-0.40468985329367246, -0.3687724770179352, -0.3484466621896769,
-0.3340559959854601, -0.3180430795475807, -0.3036498237547639,
-0.29114899889718293, -0.28029977122418775, -0.2708096496301018,
-0.2624526143274124, -0.25503573604979135, -0.24838535645924886,
-0.24240835431429145, -0.2369670753343217, -0.23201355743351243},
{1.462297178001434, -0.0831823834745529, -0.47722078102761156,
-0.5237694268091633, -0.48720111244104625, -0.44293907040183667,
-0.40461585802874656, -0.36869087217143615, -0.3484002198010998,
-0.333972267825113, -0.31794667059291953, -0.30355273809987415,
-0.2910541713145159, -0.28020794601361626, -0.2707209382881018,
-0.26236691746125507, -0.2549528640555903, -0.248305101699599,
-0.24233050593221545, -0.23689144934483145, -0.2319399765061184},
{1.4566498682004296, -0.08601362159785239, -0.47849711708354986,
-0.5241783484210651, -0.4872939724410874, -0.4429144038257738,
-0.40454111643722657, -0.36860898574905804, -0.3483535424064551,
-0.33388823768936254, -0.31785014283498103, -0.30345560142835737,
-0.2909593240639068, -0.2801161182366528, -0.2706322353766135,
-0.26228123613251275, -0.25487001236899676, -0.24822487059384818,
-0.24225268359158766, -0.2368158511259732, -0.23186642461103096},
{1.4510076580934255, -0.08883528038368887, -0.4797667289956586,
-0.5245838386924886, -0.48738511361606973, -0.4428888202942422,
-0.40446562762176214, -0.36852682009954846, -0.34830662479975755,
-0.33380390880203387, -0.31775349804987507, -0.30335841485726456,
-0.2908644579609092, -0.28002428853898237, -0.270543541428962,
-0.2621955707932674, -0.2547871813829553, -0.2481446634895238,
-0.24217488760402162, -0.23674028096015481, -0.2317929020064764},
{1.4453705739358438, -0.09164739061711966, -0.48102964425668854,
-0.5249859165156058, -0.4874745470219328, -0.44286232642999307,
-0.40438939082734404, -0.3684443775559921, -0.3482594619015042,
-0.3337192843655771, -0.31765673799764643, -0.3032611794939848,
-0.2907695738141439, -0.27993245756091645, -0.27045485697389526,
-0.26210992189169185, -0.25470437148698777, -0.24806448073109,
-0.24209711827835448, -0.236664739127243, -0.23171940894833593},
{1.439738641775512, -0.0944499831785903, -0.4822858902676958,
-0.5253846006837734, -0.48756228364692883, -0.4428349288120428,
-0.4043124054490278, -0.368361660435932, -0.34821204875915834,
-0.33363436756104525, -0.31755986442242473, -0.3031638964363194,
-0.2906746724253445, -0.27984062593742903, -0.2703661825356158,
-0.2620242898720846, -0.2546215830672064, -0.2479843226599704,
-0.2420193759206701, -0.2365892259045756, -0.23164594569014646},
{1.4341118874535852, -0.09724308904338193, -0.4835354943381544,
-0.5257799098920581, -0.48764833441203603, -0.4428066339759702,
-0.40423467103901345, -0.3682786710414857, -0.3481643805475062,
-0.33354916154808933, -0.31746287905257203, -0.3030665667725797,
-0.29057975458942276, -0.27974879429820454, -0.27027751863382393,
-0.26193867517488595, -0.25453881650635685, -0.24790418961457406,
-0.2419416608343185, -0.23651374156699212, -0.23157251248314575},
{1.4284903366054544, -0.10002673928090763, -0.48477848368604953,
-0.526171862737689, -0.4877327101713835, -0.44277744841419797,
-0.40415618731312164, -0.3681954116594666, -0.3481164525688616,
-0.3334636694649562, -0.31736578360082207, -0.3029691915816588,
-0.29048482109451546, -0.27965696326767, -0.2701888657837388,
-0.2618530782367265, -0.25445607218383115, -0.2478240819303183,
-0.24186397331993914, -0.23643828638684544, -0.23149910957626763},
{1.4228740146616665, -0.10280096505387756, -0.4860148854379902,
-0.5265604777205704, -0.48781542171266806, -0.4427473785763073,
-0.4040769541565778, -0.3681118845614988, -0.3480682602531477,
-0.3333778944284875, -0.31726857976442524, -0.30287177193312254,
-0.2903898727220382, -0.27956513346503825, -0.2701002244961502,
-0.26176749949044487, -0.25437335047569753, -0.24774399993964843,
-0.24178631367547848, -0.23636286063402973, -0.23142573721616805},
{1.4172629468488263, -0.10556579761732074, -0.48724472662931123,
-0.5269457732437549, -0.48789647975756156, -0.44271643086930434,
-0.4039969716292564, -0.3680280920041295, -0.34801979915784736,
-0.333291839534126, -0.3171712692252909, -0.30277430888727863,
-0.2902949102467359, -0.27947330550434113, -0.2700115952774469,
-0.2616819393651189, -0.254290651754733, -0.24766394397206376,
-0.24170868219621217, -0.23628746457598437, -0.23135239564724497},
{1.4116571581905122, -0.10832126831747739, -0.4884680342041883,
-0.5273277676139176, -0.4879758949621268, -0.4426846116579368,
-0.40391623997026316, -0.3679440362289477, -0.34797106496783653,
-0.3332055078559272, -0.3170738536501252, -0.3026768034952717,
-0.29019993443673386, -0.27938147999447727, -0.2699229786296493,
-0.26159639828609915, -0.2542079763904353, -0.24758391435413898,
-0.24163107917476911, -0.23621209847772928, -0.2312790851116489},
{1.406056673508173, -0.11106740859054906, -0.48968483501573706,
-0.5277064790418562, -0.4880536779172191, -0.4426519272649638,
-0.4038347596019274, -0.36785971946268975, -0.3479220534950858,
-0.33311890244656983, -0.3169763346905681, -0.30257925679914854,
-0.29010494605357684, -0.2792896575392313, -0.26983437505043617,
-0.2615108766750281, -0.2541253247490579, -0.24750391140954403,
-0.24155350490113897, -0.23613676260186184, -0.23120580584930162},
{1.400461517422039, -0.11380424996132477, -0.49089515582613386,
-0.5280819256429423, -0.48812983914889874, -0.44261838397144193,
-0.40375253113325865, -0.36777514391735616, -0.3478727606782715,
-0.33303202633737705, -0.3168787139833342, -0.30248166983194713,
-0.2900099458522868, -0.2791978387373363, -0.2697457850332003,
-0.2614253749498843, -0.2540426971936328, -0.24742393545907046,
-0.24147595966270774, -0.23606145720860153, -0.2311325580979152},
{1.3948717143520186, -0.11653182404167078, -0.49209902330671984,
-0.5284541254376229, -0.4882043891188344, -0.44258398801702253,
-0.40366955536278115, -0.3676903117903223, -0.347823182582258,
-0.33294488253834165, -0.3167809931503536, -0.3023840436177687,
-0.2899149345813995, -0.27910602418248986, -0.26965720906706014,
-0.2613398935249981, -0.2539600940839909, -0.2473439868206509,
-0.2413984437442706, -0.23598618255578502, -0.2310593420930127},
{1.3892872885186003, -0.11925016252890178, -0.49329646403812155,
-0.5288230963518844, -0.4882773382246963, -0.4425487456002103,
-0.40358583328088404, -0.3676052252644444, -0.34777331539748596,
-0.3328574740381479, -0.3166831737988946, -0.30228637917186224,
-0.2898199129830049, -0.27901421446340535, -0.2695686476369039,
-0.26125443281107874, -0.2538775157767966, -0.24726406580938115,
-0.24132095742804854, -0.23591093889889833, -0.23098615806793207},
{1.383708263943748, -0.12195929720402417, -0.4944875045103654,
-0.5291888562177087, -0.4883486968005618, -0.4425126628786634,
-0.4035013660716147, -0.3675198865081667, -0.34772315543925947,
-0.3327698038042025, -0.31658525752171024, -0.30218867750068584,
-0.28972488179279565, -0.2789224101638342, -0.26948010122342086,
-0.2611689932152543, -0.25379496262555346, -0.24718417273753784,
-0.2412435009937084, -0.23583572649108273, -0.23091300625384753},
{1.3781346644517962, -0.12465925992985438, -0.4956721711229908,
-0.5295514227735774, -0.4884184751173073, -0.44247574596947137,
-0.40341615511397033, -0.3674342976756395, -0.347672699146942,
-0.3326818747826816, -0.3164872458971698, -0.30209093960200717,
-0.2896298417401061, -0.2788306118626223, -0.2693915703031354,
-0.26108357514109376, -0.2537124349806572, -0.24710430791461468,
-0.24116607471839607, -0.23576054558317355, -0.23083988687980406},
{1.3725665136703438, -0.12735008264903147, -0.49685049018517197,
-0.5299108136648997, -0.48848668338299833, -0.44243800094940783,
-0.40333020198271985, -0.36734846090680306, -0.3476219430830502,
-0.3325936898985448, -0.3163891404893814, -0.30199316646495267,
-0.2895347935479433, -0.2787388201337258, -0.26930305534843674,
-0.26099817898862765, -0.2536299331893896, -0.2470244716473204,
-0.24108867887673197, -0.23568539642368141, -0.2307668001727004},
{1.3670038350311384, -0.13003179738190318, -0.49802248791583287,
-0.5302670464445093, -0.4885533317432878, -0.4423994338552307,
-0.40324350844873114, -0.36726237832751685, -0.347570883932276,
-0.3325052520555948, -0.3162909428483332, -0.30189535907009607,
-0.2894397379330381, -0.2786470355462605, -0.2692145568276127,
-0.26091280515438514, -0.2535474575959602, -0.24694466423962014,
-0.24101131374084828, -0.2356102792588509, -0.23069374635733308},
{1.3614466517709714, -0.13270443622431072, -0.4991881904437748,
-0.5306201385731208, -0.48861843028179786, -0.44236005068393197,
-0.4031560764789075, -0.3671760520496459, -0.3475195185004224,
-0.3324165641365185, -0.3161926545100172, -0.3017975183895314,
-0.28934467560587546, -0.27855525866453007, -0.2691260752048803,
-0.26082745403141383, -0.253465008541525, -0.24686488599274595,
-0.24093397958039958, -0.2355351943326471, -0.23062072565639644},
{1.3558949869325614, -0.13536803134525927, -0.5003476238077973,
-0.5309701074197699, -0.4886819890205086, -0.4423198573930237,
-0.4030679082356553, -0.3670894841711725, -0.3474678437132678,
-0.3323276290029295, -0.3160942769965597, -0.3016996453869438,
-0.2892496072707373, -0.278463490048068, -0.26903761094042306,
-0.26074212600931496, -0.25338258636420635, -0.24678513720522,
-0.24085667666258526, -0.23546014188678543, -0.23054773829050668},
{1.3503488633654335, -0.1380226149844915, -0.5015008139568176,
-0.5313169702623111, -0.48874401792013605, -0.44227885990080185,
-0.40297900607596376, -0.3670026767762937, -0.34741585661534796,
-0.33223844949542214, -0.31599581181634906, -0.30160174101767606,
-0.2891545336257328, -0.2783717302516642, -0.26894916449041373,
-0.26065682147425717, -0.2533001913991245, -0.24670541817287214,
-0.24077940525216454, -0.2353851221607472, -0.23047478447821004},
{1.3448083037268062, -0.1406682194499568, -0.5026477867500044,
-0.5316607442878369, -0.48880452688052073, -0.44223706408660046,
-0.40288937255013496, -0.36691563193552595, -0.347363554368695,
-0.3321490284336285, -0.3158972604641608, -0.3015038062288128,
-0.28905945536285055, -0.27827997982540964, -0.2688607363070519,
-0.26057154080901757, -0.25321782397841003, -0.24662572918886844,
-0.2407021656114804, -0.23531013539179702, -0.2304018644360093},
{1.3392733304824675, -0.14330487711518514, -0.503788567956897,
-0.5320014465931628, -0.4888635257410028, -0.44219447579107946,
-0.4027990104001047, -0.36682835170579886, -0.3473109342514935,
-0.33205936861627383, -0.31579862442128376, -0.30140584195924475,
-0.2889643731679846, -0.27818823931472647, -0.2687723268385963,
-0.2604862843929998, -0.25313548443123846, -0.2465460705437273,
-0.2406249580004749, -0.2352351818149986, -0.23032897837837202},
{1.333743965907651, -0.14593262041656901, -0.5049231832575409,
-0.5323390941852719, -0.48892102428079826, -0.442151100816456,
-0.40270792255748106, -0.3667408381305627, -0.34725799365669807,
-0.33196947282122874, -0.31569990515564217, -0.30130784913973496,
-0.2888692877209813, -0.2780965092603991, -0.2686839365293899,
-0.26040105260226, -0.2530531730838429, -0.2464664425253336,
-0.24054778267670185, -0.23516026166322912, -0.23025612651774302},
{1.3282202320879113, -0.1485514818505606, -0.5060516582426142,
-0.5326737039817473, -0.4889770322193678, -0.4421069449267878,
-0.4026161121412353, -0.3666530932398758, -0.3472047300905898,
-0.3318793438055812, -0.315601104121919, -0.30120982869298896,
-0.28877419969567253, -0.2780047901986116, -0.2685955658198883,
-0.2603158458095335, -0.2529708902595368, -0.24638684541896674,
-0.24047063989535122, -0.23508537516719652, -0.23018330906455964},
{1.3227021509199939, -0.1511614939707801, -0.5071740184135635,
-0.5330052928112634, -0.489031559216796, -0.4420620138482313,
-0.40252358245510506, -0.36656511905051115, -0.34715114117129997,
-0.3317889843057027, -0.3155022227616835, -0.3011117815337371,
-0.2886791097599254, -0.27791308266098813, -0.26850721514670944,
-0.2602306643842647, -0.25288863627874775, -0.2463072795073185,
-0.2403935299092726, -0.23501052255546223, -0.23011052622728634},
{1.317189744112708, -0.15376268938504395, -0.5082902891827308,
-0.5333338774139856, -0.4890846148741531, -0.44201631326927976,
-0.40243033698473396, -0.36647691756604495, -0.3470972246272789,
-0.3316983970373033, -0.31540326250349565, -0.30101370856878346,
-0.2885840185756742, -0.27782138717461374, -0.26841888494263044,
-0.2601455086926214, -0.2528064114590238, -0.24622774507050843,
-0.24031645296897536, -0.2349357040544448, -0.23003777821239618},
{1.3116830331877896, -0.15635510075232212, -0.5094004958734969,
-0.5336594744420553, -0.4891362087338725, -0.4419698488410426,
-0.4023363793945346, -0.3663884907769567, -0.34704297829574765,
-0.3316075846955125, -0.3153042247630476, -0.30091561069708656,
-0.28848892679897203, -0.27772970426207644, -0.2683305756366514,
-0.26006037909753993, -0.25272421611506535, -0.24614824238611036,
-0.24023940932266652, -0.23486091988845065, -0.2299650652244138},
{1.3061820394807715, -0.15893876077961822, -0.5105046637204138,
-0.533982100460022, -0.4891863502801006, -0.44192262617747124,
-0.40224171352434707, -0.3662998406607212, -0.34698840012110144,
-0.33151654995495217, -0.3152051109432643, -0.30081748880982495,
-0.28839383508002114, -0.2776380344415005, -0.2682422876540026,
-0.2599752759587208, -0.2526420505587431, -0.24606877172916514,
-0.24016239921625204, -0.23478617027967602, -0.229892387465917},
{1.3006867841418424, -0.1615137022187812, -0.5116028178693418,
-0.5343017719452621, -0.489235048939073, -0.44187465085563543,
-0.4021463433858623, -0.3662109691819008, -0.3469334881532977,
-0.3314252954697994, -0.31510592243442725, -0.3007193437904542,
-0.28829874406323547, -0.27754637822657435, -0.26815402141618067,
-0.2598901996326845, -0.2525599150991249, -0.2459893333722047,
-0.24008542289336088, -0.2347114554482337, -0.22981974513755568},
{1.2951972881367044, -0.16407995786325807, -0.5126949833775944,
-0.5346185052884604, -0.48928231407945827, -0.4418259284159587,
-0.40205027315884134, -0.36612187829223924, -0.34687824054621913,
-0.3313338238738772, -0.31500666061429444, -0.30062117651478487,
-0.28820365438726725, -0.27745473612659033, -0.26806577734098175,
-0.2598051504727743, -0.252477810042486, -0.24590992758526475,
-0.24000848059536412, -0.23463677561216284, -0.2297471384380622},
{1.2897135722474404, -0.16663756054478351, -0.513781185214077,
-0.5349323167940088, -0.48932815501273375, -0.44177646436246687,
-0.4019535071871881, -0.3660325699307525, -0.34682265555602165,
-0.3312421377807237, -0.3149073268482029, -0.30052298785104054,
-0.28810856668506546, -0.2773631086464711, -0.2679775558425189,
-0.25972012882918805, -0.2523957356923422, -0.24583055463591552,
-0.23993157256138545, -0.23456213098744133, -0.22967456756427074},
{1.2842356570733577, -0.16918654313001194, -0.5148614482594279,
-0.5352432226804701, -0.48937258099352854, -0.44172626416304117,
-0.4018560499748026, -0.36594304602381955, -0.34676673153945964,
-0.33115023978367636, -0.31480792248920164, -0.3004247786599251,
-0.28801348158391704, -0.2772714962868043, -0.26788935733126584,
-0.2596351350490066, -0.25231369234946305, -0.24575121478926434,
-0.2398546990283313, -0.23448752178801574, -0.22960203271112803},
{1.2787635630318503, -0.17172693851710136, -0.51593579730617,
-0.5355512390810043, -0.4894156012199771, -0.4416753332496477,
-0.40175790618136026, -0.365853308485273, -0.34671046695221147,
-0.3310581324559534, -0.3147084488781441, -0.30032654979468254,
-0.28791839970549565, -0.27717989954387884, -0.2678011822140735,
-0.2595501694762094, -0.25223168031190024, -0.24567190830798885,
-0.2397778602308856, -0.23441294822579625, -0.2295295340717107},
{1.2732973103592482, -0.17425877963224948, -0.5170042570588536,
-0.5358563820437872, -0.48945722483407994, -0.44162367701860045,
-0.4016590806179049, -0.36576335921648795, -0.3466538603471915,
-0.3309658183507428, -0.31460890734381547, -0.3002283021011702,
-0.287823321665912, -0.2770883189097092, -0.2677130308942061,
-0.2594652324517044, -0.2521496998749955, -0.24559263545234986,
-0.23970105640155054, -0.23433841051069312, -0.2294570718372377},
{1.2678369191116583, -0.1767820994261808, -0.5180668521342033,
-0.5361586675324642, -0.4894974609220363, -0.44157130083078433,
-0.4015595782423419, -0.36567320010646487, -0.34659691037285245,
-0.3308733000012781, -0.3145092992030336, -0.3001300364179048,
-0.2877282480757577, -0.27699675487206904, -0.26762490377135617,
-0.2593803243133474, -0.25206775133141557, -0.24551339648020193,
-0.2396242877706406, -0.23426390885060824, -0.22938464619708088},
{1.2623824091658231, -0.17929693087060394, -0.5191236070612743,
-0.536458111426555, -0.4895363185146046, -0.4415182100119008,
-0.40145940415486153, -0.365582833031925, -0.34653961577150233,
-0.33078057992093624, -0.314409625760764, -0.30003175357614226,
-0.2876331795401611, -0.2769052079145301, -0.2675368012416931,
-0.25929544539596905, -0.25198583497116245, -0.24543419164702468,
-0.23954755456631827, -0.23418944345147358, -0.2293122573387845},
{1.256933800219953, -0.18180330695462105, -0.5201745462815947,
-0.5367547295218995, -0.4895738065874423, -0.4414644098527094,
-0.4013585635932141, -0.3654922598573924, -0.34648197537760494,
-0.3306876606033219, -0.31430988831022777, -0.2999334543999274,
-0.28753811665883783, -0.27681367851648264, -0.2674487236978693,
-0.25921059603140034, -0.2519039510815979, -0.24535502120593583,
-0.23947085701460016, -0.2341150145172514, -0.22923990544807893},
{1.2514911117945744, -0.1843012606811146, -0.5212196941493292,
-0.5370485375310775, -0.48960993406144515, -0.4414099056092517,
-0.4012570619279867, -0.36540148243527926, -0.34642398811609515,
-0.33059454452236237, -0.314210088133007, -0.29983513970616393,
-0.28744306002613174, -0.27672216715318054, -0.26736067152906323,
-0.259125776548484, -0.25182209994746785, -0.24527588540770412,
-0.23939419533937387, -0.2340406222499525, -0.22916759070888898},
{1.2460543632333652, -0.18679082506310404, -0.5222590749314293,
-0.5373395510838154, -0.48964470980309005, -0.4413547025030966,
-0.40115490465777137, -0.36531050260597314, -0.346365653000693,
-0.33050123413239124, -0.3141102264991495, -0.299736810304662,
-0.2873480102310819, -0.2766306742957494, -0.26727264512099536,
-0.2590409872731129, -0.25174028185090574, -0.245196784500773,
-0.23931756976241253, -0.23396626684965197, -0.22909531330334665},
{1.240623573703994, -0.18927203312007396, -0.5232927128077918,
-0.5376277857274351, -0.48967814262477116, -0.44129880572157293,
-0.4010520974042968, -0.36521932219791886, -0.3463069691322349,
-0.3304077318682559, -0.31401030466728574, -0.2996384669982161,
-0.2872529678574585, -0.27653920041124436, -0.2671846448559625,
-0.25895622852824046, -0.25165849707147997, -0.24511771873127602,
-0.23924098050339698, -0.23389194851450457, -0.22902307341181743},
{1.2351987621989504, -0.19174491787428663, -0.524320631871415,
-0.5379132569272429, -0.4897102412851347, -0.4412422204179859,
-0.40094864590753765, -0.3651279430277009, -0.3462479356969955,
-0.33031404014539806, -0.31391032388471035, -0.2995401105826433,
-0.28715793348382157, -0.2764477459626622, -0.2670966711128617,
-0.2588715006339093, -0.2515767458861786, -0.2450386883430558,
-0.23916442777992253, -0.2338176674407519, -0.22895087121289598},
{1.2297799475363815, -0.19420951234707456, -0.5253428561285616,
-0.5381959800669728, -0.48974101448941965, -0.4411849517118675,
-0.4008445560207766, -0.3650363669001314, -0.34618855196504755,
-0.3302201613599601, -0.31381028538751643, -0.299441741846863,
-0.28706290768357623, -0.2763563114089768, -0.2670087242672147,
-0.2587868039072714, -0.2514950285694646, -0.244959693577678,
-0.239087911807528, -0.23374342382274943, -0.22887870688343115},
{1.2243671483609175, -0.1966658495551215, -0.5263594094989218,
-0.5384759704491916, -0.4897704708897769, -0.44112700468917987,
-0.4007398337056837, -0.3649445956083258, -0.34612881728860834,
-0.3301260978888812, -0.3137101904006714, -0.2993433615729419,
-0.2869678910250144, -0.27626489720516695, -0.26692080469119606,
-0.2587021386626159, -0.2514133453932693, -0.24488073467445273,
-0.2390114327996925, -0.2336692178529729, -0.2288065805985389},
{1.2189603831444993, -0.19911396250673136, -0.5273703158157743,
-0.5387532432956926, -0.489798619085611, -0.44106838440256,
-0.40063448502736754, -0.3648526309337861, -0.34606873110041225,
-0.33003185208998687, -0.31361004013812904, -0.29924497053615107,
-0.28687288407137707, -0.27617350380225447, -0.26683291275365906,
-0.258617505211377, -0.2513316966270194, -0.24480181187044575,
-0.23893499096786686, -0.23359504972202633, -0.22873449253160447},
{1.2135596701872065, -0.20155388419809456, -0.5283755988261563,
-0.5390278137479481, -0.4898254676238961, -0.44100909587154047,
-0.4005285161494317, -0.36476047464648276, -0.3460082929121006,
-0.32993742630210343, -0.313509835802931, -0.29914656950503293,
-0.2867778873808957, -0.2760821316473225, -0.26674504882016326,
-0.2585329038621682, -0.2512500825376602, -0.24472292540050156,
-0.23885858652147834, -0.23352091961866844, -0.22866244285430615},
{1.2081650276180713, -0.20398564760954563, -0.5293752821910248,
-0.5392996968674763, -0.48985102499950983, -0.44094914408275976,
-0.40042193332906795, -0.36466812850493097, -0.34594750231261495,
-0.3298428228451479, -0.31340957858730556, -0.29904815924144673,
-0.28668290150685044, -0.275990781183549, -0.2666572132529933,
-0.25844833492079994, -0.25116850338966923, -0.24464407549725503,
-0.23878221966795588, -0.23344682772981915, -0.2285904317366273},
{1.2027764733959079, -0.20640928570182615, -0.5303693894854298,
-0.5395689076362798, -0.48987529965555693, -0.4408885339902075,
-0.4003147429121386, -0.3645755942562743, -0.34588635896662423,
-0.32974804402023217, -0.31330926967276573, -0.29894974050063594,
-0.2865879269976246, -0.27589945285024425, -0.266569406411194,
-0.2583637986903073, -0.25108695944507986, -0.24456526239115906,
-0.23870589061273845, -0.23337277424057712, -0.22851845934686488},
{1.1973940253101225, -0.20882483141234784, -0.531357944198685,
-0.5398354609572418, -0.4898982999836814, -0.44082727051541104,
-0.4002069513283194, -0.3644828736363593, -0.34582486261295,
-0.3296530921097714, -0.31320891023020386, -0.2988513140312747,
-0.28649296439673977, -0.2758081470828664, -0.2664816286505877,
-0.25827929547095885, -0.25100545096349286, -0.24448648631048184,
-0.23862959955928625, -0.23329875933422933, -0.22844652585164063},
{1.19201770098153, -0.21123231765146233, -0.5323409697345365,
-0.5400993716545114, -0.4899200343243915, -0.4407653585476812,
-0.40009856508626285, -0.36438996836981263, -0.34576301306301843,
-0.3295579693775732, -0.31310850141999325, -0.29875288057552085,
-0.28639801424292344, -0.2757168643130543, -0.26639388032379785,
-0.2581948255602838, -0.250923978202097, -0.24440774748133626,
-0.23855334670910033, -0.2332247831922643, -0.22837463141591668},
{1.1866475178631697, -0.21363177729874655, -0.5333184894113446,
-0.5403606544739449, -0.489940510967378, -0.44070280294432207,
-0.3999895907688026, -0.36429688017012263, -0.345700810199337,
-0.32946267806896423, -0.31300804439208385, -0.2986544408690908,
-0.28630307707014846, -0.2756256049686691, -0.26630616178028976,
-0.2581103892530963, -0.25084254141569917, -0.244329046127701,
-0.238477132261747, -0.23315084599439728, -0.2283027762030159},
{1.1812834932411103, -0.2160232431992874, -0.5342905264622485,
-0.5406193240834613, -0.48995973815182686, -0.44063960853083184,
-0.39988003502822483, -0.36420361073970653, -0.34563825397397135,
-0.3293672204108706, -0.31290754028608553, -0.2985559956412802,
-0.28620815340768546, -0.2755343694737976, -0.2662184733663664,
-0.2580259868415123, -0.25076114085672235, -0.24425038247141945,
-0.2384009564148497, -0.23307694791855965, -0.22823096037461693},
{1.1759256442352577, -0.21840674815999617, -0.5352571040353529,
-0.5408753950734777, -0.4899777240667348, -0.4405757801011434,
-0.3997699045815646, -0.3641101617699991, -0.3455753444070641,
-0.3292715986119414, -0.31280699023138725, -0.2984575456150499,
-0.28611324378015274, -0.2754431582488083, -0.26613081542522493,
-0.2579416186149717, -0.25067977677523656, -0.24417175673223263,
-0.23832481936412675, -0.23300308914094062, -0.22815918409077807},
{1.170573987800165, -0.22078232494593264, -0.536218245193903,
-0.5411288819572917, -0.48999447685121617, -0.4405113224178019,
-0.399659206205998, -0.36401653494151354, -0.34551208158534674,
-0.3291758148626499, -0.31270639534721667, -0.29835909150706114,
-0.28601834870755866, -0.27535197171035575, -0.26604318829695395,
-0.25785728486025306, -0.250598449418974, -0.2440931691277854,
-0.23824872130338853, -0.23292926983598156, -0.22808744750994675},
{1.1652285407258292, -0.2231500062766496, -0.5371739729164645,
-0.5413797991714576, -0.4900100045948165, -0.44044624021220224,
-0.3995479467342818, -0.363922731923925, -0.3454484656606932,
-0.3290798713353944, -0.3126057567427609, -0.298260634027728,
-0.28592346870535634, -0.27526081027142335, -0.2659555923185746,
-0.2577729858615076, -0.2505171590333505, -0.24401461987364553,
-0.23817266242455784, -0.23285549017639368, -0.22801575078897512},
{1.1598893196384956, -0.2255098248225682, -0.5381243100971086,
-0.54162816107622, -0.4900243153378146, -0.4403805381847912,
-0.3994361330502463, -0.36382875437614204, -0.34538449684867717,
-0.3289837701846199, -0.31250507551724416, -0.29816217388127897,
-0.28582860428448775, -0.27516967434134354, -0.26586802782405755,
-0.2576887219002621, -0.25043590586147024, -0.2439361091833186,
-0.23809664291769034, -0.23278175033317078, -0.22794409408312014},
{1.1545563410014505, -0.22786181320136922, -0.5390692795455931,
-0.541873981955861, -0.4900374170715336, -0.4403142210052652,
-0.3993237720844054, -0.36373460394637513, -0.3453201754271581,
-0.3288875135469078, -0.3124043527600151, -0.2980637117658011,
-0.2857337559514288, -0.2750785643258294, -0.26578049514434243,
-0.25760449325545165, -0.2503546901441589, -0.2438576372682604,
-0.23802066297097862, -0.2327080504756024, -0.22787247754607612},
{1.149229621115822, -0.23020600397442004, -0.5400089039875482,
-0.5421172760191237, -0.49004931773864263, -0.4402472933127927,
-0.3992108708095856, -0.36364028227221756, -0.3452555017348785,
-0.32879110354110186, -0.312303589550649, -0.2979652483732964,
-0.2856389242082347, -0.2749874806270023, -0.2656929946073733,
-0.257520300203432, -0.25027351211997634, -0.24377920433790123,
-0.23794472277077194, -0.23263439077129416, -0.22780090132995917},
{1.1439091761213698, -0.23254242964322913, -0.5409432060646628,
-0.5423580573995869, -0.4900600252334542, -0.44017975971619905,
-0.3990974362366953, -0.36354579098070844, -0.3451904761700861,
-0.3286945422684045, -0.3122027869590251, -0.2978667843897219,
-0.2855441095525849, -0.27489642364341027, -0.26560552653810743,
-0.25743614301800466, -0.25019237202522004, -0.2437008105996491,
-0.2378688225015862, -0.2325607713861621, -0.22772936558534188},
{1.1385950219972745, -0.2348711226459344, -0.5418722083348769,
-0.5425963401560346, -0.4900695474022307, -0.4401116247941886,
-0.3989834754105414, -0.36345113168841087, -0.3451250991891738,
-0.328597831812497, -0.31210194604541786, -0.29776832049505986,
-0.28544931247783006, -0.27480539377007024, -0.26551809125855635,
-0.25735202197043544, -0.25011127009397166, -0.24362245625891582,
-0.23779296234612413, -0.23248719248446514, -0.2276578704612558},
{1.1332871745629274, -0.23719211535382584, -0.5427959332725657,
-0.5428321382728756, -0.4900778920434712, -0.4400428930955348,
-0.39886899540572285, -0.3633563060014735, -0.34505937130532816,
-0.32850097423963764, -0.3120010678605812, -0.2976698573633428,
-0.28535453347302947, -0.27471439139847376, -0.2654306890877792,
-0.2572679373294605, -0.25003020655807345, -0.24354414151911974,
-0.2377171424852791, -0.2324136542288026, -0.22758641610520275},
{1.1279856494787142, -0.23950544006790514, -0.5437144032687351,
-0.5430654656604843, -0.4900850669082203, -0.439973569139281,
-0.39875400332265765, -0.36326131551571017, -0.3449932930872184,
-0.32840397159878226, -0.3119001534458403, -0.2975713956627224,
-0.28525977302299765, -0.27462341691663855, -0.2653433203419429,
-0.2571838893613322, -0.24994918164718766, -0.24346586658171654,
-0.23764136309815972, -0.23234015678013736, -0.22751500266316235},
{1.1226904622468004, -0.24181112901548485, -0.5446276406312096,
-0.5432963361556196, -0.49009107970035426, -0.4399036574149502,
-0.3986385062836419, -0.36316616181666705, -0.344926865157686,
-0.3283068259216888, -0.3117992038331774, -0.2974729360555106,
-0.2851650316083503, -0.2745324707091156, -0.2652559853343132,
-0.25709987832981507, -0.24986819558878298, -0.24338763164620186,
-0.2375656243620951, -0.23226670029780364, -0.227443630279616},
{1.1174016282119072, -0.24410921434682897, -0.5455356675848343,
-0.5435247635217815, -0.4900959380768731, -0.4398331623827222,
-0.3985225114290521, -0.363070846479681, -0.34486008819245323,
-0.32820953922303153, -0.3116982200453029, -0.29737447919823023,
-0.28507030970553265, -0.27444155315702023, -0.2651686843752955,
-0.2570159044962093, -0.2497872486081647, -0.24330943691012735,
-0.2374899264526534, -0.23219328493951286, -0.22737229909754172},
{1.1121191625620948, -0.24639972813183614, -0.5464385062716659,
-0.5437507614495816, -0.49009964964819763, -0.4397620884736534,
-0.3984060259136132, -0.3629753710699683, -0.3447929629188603,
-0.3281121135005092, -0.3115972030957572, -0.29727602574165873,
-0.2849756077868757, -0.2743506646380658, -0.2650814177724469,
-0.25693196811938124, -0.24970634092847954, -0.2432312825691174,
-0.23741426954364853, -0.23211991086138078, -0.2273010092584331},
{1.1068430803295326, -0.24868270235676404, -0.547336178751166,
-0.5439743435571415, -0.4901022219784388, -0.4396904400898496,
-0.39828905690274935, -0.3628797371426666, -0.34472549011460507,
-0.3280145507349539, -0.31149615398897607, -0.29717757633087827,
-0.28488092632061807, -0.2742598055265722, -0.26499418583050344,
-0.25684806945576344, -0.24962547277075228, -0.24315316881688506,
-0.23733865380715738, -0.23204657821792565, -0.2272297609023161},
{1.1015733963912768, -0.2509581689210056, -0.5482287070004076,
-0.5441955233904396, -0.49010366258571136, -0.4396182216046757,
-0.3981716115690757, -0.3627839462429223, -0.3446576706065226,
-0.32791685289044925, -0.3113950737203854, -0.2970791316053263,
-0.284786265770959, -0.2741689761935108, -0.2649069888513971,
-0.25676420875938666, -0.24954464435387985, -0.2430750958452465,
-0.23726307941353714, -0.2319732871620792, -0.22715855416775088},
{1.0963101254700385, -0.25322615963390754, -0.5491161129142683,
-0.5444143144237101, -0.4901039789424013, -0.43954543736294316,
-0.39805369708892957, -0.3626879999059512, -0.34458950526936327,
-0.3278190219144357, -0.31129396327648273, -0.29698069219883594,
-0.28469162659809544, -0.2740781770065209, -0.2648198271342852,
-0.2566803862818998, -0.2494638558946604, -0.24299706384412967,
-0.23718754653143193, -0.2319000378452164, -0.227087389191843},
{1.0910532821349501, -0.2554867062116408, -0.5499984183056355,
-0.5446307300597958, -0.4901031784754486, -0.4394720916810918,
-0.39793532063904363, -0.36259189965709937, -0.34452099502459027,
-0.3277210597378321, -0.3111928236349037, -0.29688225873969315,
-0.28459700925824993, -0.2739874083299307, -0.2647327009755628,
-0.2565966022725741, -0.2493831076078079, -0.24291907300159227,
-0.23711205532778978, -0.23182683041714824, -0.22701626611026002},
{1.0858028808023352, -0.25773984027412133, -0.5508756449056073,
-0.544844783630505, -0.4901012685666372, -0.43939818884739124,
-0.3978164893932927, -0.36249564701191517, -0.34445214083920683,
-0.32762296827512866, -0.31109165576451653, -0.29678383185066326,
-0.28450241420371297, -0.2738966705247914, -0.26464561066889253,
-0.25651285697833615, -0.24930239970595924, -0.2428411235038347,
-0.2370366059678669, -0.23175366502613753, -0.22694518505723923},
{1.0805589357364678, -0.25998559334197996, -0.5517478143636952,
-0.5450564883970112, -0.49009825655286293, -0.439323733122124,
-0.3976972105195322, -0.36239924347620855, -0.34438294372458306,
-0.3275247494245149, -0.31099046062549085, -0.2966854121490588,
-0.2844078418828805, -0.273805963948894, -0.2645585565052127,
-0.2564291506437702, -0.2492217323997037, -0.2427632155352195,
-0.2369611986152479, -0.23168054181891684, -0.22687414616559412},
{1.0753214610503345, -0.262223996833589, -0.5526149482480304,
-0.5452658575501791, -0.49009414972642346, -0.43924872873776705,
-0.39757749117656366, -0.36230269054611797, -0.3443134047353144,
-0.3274264050679858, -0.3108892391693836, -0.29658700024676643,
-0.28431329274028594, -0.27371528895679875, -0.26447153877277546,
-0.25634548351114916, -0.24914110589758243, -0.24268534927827512,
-0.23688583343186403, -0.2316074609406955, -0.22680314956673597},
{1.0700904707063923, -0.2644550820621385, -0.5534770680455676,
-0.5454729042109616, -0.49008895533528585, -0.4391731798991935,
-0.397457338511153, -0.3622059897081758, -0.34424352496809146,
-0.3273279370714551, -0.3107879923392123, -0.2964885967503059,
-0.2842187672166403, -0.2736246458998604, -0.26438455775715414,
-0.2562618558204553, -0.24906052040612375, -0.2426075249137175,
-0.23681051057799565, -0.23153442253517104, -0.22673219539067288},
{1.0648659785173251, -0.26667888023277175, -0.554334195162296,
-0.545677641430744, -0.4900826805833628, -0.4390970907838296,
-0.3973367596551859, -0.3621091424393725, -0.3441733055605811,
-0.32722934728486197, -0.31068672106952605, -0.29639020226086427,
-0.28412426574885263, -0.27353403512624697, -0.2642976137412689,
-0.256178267809379, -0.24897997612983758, -0.24252974262046006,
-0.23673523021228088, -0.2314614267445445, -0.22666128376601857},
{1.0596479981467948, -0.2688954224397734, -0.5551863509234438,
-0.5458800821916874, -0.4900753326307854, -0.43902046554186314,
-0.3972157617228962, -0.3620121502072076, -0.344102747690328,
-0.3271306375422868, -0.31058542628649205, -0.2962918173743389,
-0.28402978877008167, -0.2734434569809682, -0.2642107070054035,
-0.2560947197133502, -0.2488994732712394, -0.24245200257562247,
-0.2366599924917398, -0.23138847370952056, -0.22659041482002223},
{1.0544365431101934, -0.2711047396638193, -0.5560335565736929,
-0.5460802394071302, -0.4900669185941711, -0.4389433082964153,
-0.3970943518081905, -0.3619150144697725, -0.34403185257368135,
-0.3270318096620666, -0.31048410890796724, -0.29619344268139497,
-0.2839353367097567, -0.2733529118059035, -0.26412383782723553,
-0.25601121176555763, -0.24881901203087492, -0.2423743049545622,
-0.23658479757178658, -0.2313155635693333, -0.2265195886785542},
{1.0492316267753927, -0.27330686276927396, -0.55687583327738,
-0.5462781259218923, -0.4900574455468963, -0.43886562314371347,
-0.39697253698207935, -0.36181773667579176, -0.3439606214647142,
-0.3269328654468939, -0.31038276984356244, -0.2960950787674874,
-0.2838409099936072, -0.2732623999398099, -0.2640370064818394,
-0.25592774419695075, -0.2487385926073174, -0.2422966499308617,
-0.2365096456062267, -0.23124269646174278, -0.226448805466135},
{1.044033262363485, -0.2755018225015622, -0.5577132021187192,
-0.5464737545126727, -0.4900469205193656, -0.43878741415329026,
-0.396850324290176, -0.3617203182646986, -0.34388905565418576,
-0.32683380668394063, -0.3102814099947342, -0.29599672621292394,
-0.2837465090437041, -0.2731719217183676, -0.26395021324172385,
-0.25584431723627443, -0.24865821519719616, -0.2422190376763637,
-0.23643453674728254, -0.23116987252306154, -0.22637806530593194},
{1.0388414629495337, -0.2776896494845839, -0.5585456841020107,
-0.5466671378883828, -0.49003535049926855, -0.43870868536813146,
-0.39672772075032736, -0.36162276066669, -0.3438171564684985,
-0.32673463514496226, -0.31018003025484503, -0.2958983855928945,
-0.28365213427848385, -0.27308147747418765, -0.26386345837684166,
-0.2557609311100739, -0.2485778799952004, -0.24214146836117037,
-0.23635947114560318, -0.23109709188815192, -0.2263073683197764},
{1.0336562414633066, -0.27987037421819755, -0.5593733001518482,
-0.5468582886904814, -0.49002274243185534, -0.43862944080488103,
-0.39660473335030233, -0.36152506530278616, -0.34374492526868006,
-0.3266353525864103, -0.3100786315092326, -0.2958000574775177,
-0.2835577861127839, -0.2729910675368402, -0.26377674215460956,
-0.2556775860427215, -0.24849758719410292, -0.24206394215366625,
-0.23628444895026976, -0.23102435469044275, -0.22623671462817876},
{1.0284776106900189, -0.28204402707576587, -0.5601960711133465,
-0.547047219493363, -0.49000910322018304, -0.43854968445400194,
-0.3964813690455725, -0.36142723358489115, -0.34367236344937757,
-0.32653596074954483, -0.30997721463529593, -0.2957017424318784,
-0.28346346495786184, -0.27290069223287783, -0.26369006483993174,
-0.2555942822564196, -0.24841733698477286, -0.24198645922051842,
-0.23620947030881684, -0.23095166106193749, -0.2261661043503252},
{1.0233055832710676, -0.2842106383017542, -0.5610140177523425,
-0.5472339428046661, -0.48999443972539275, -0.43846942027994934,
-0.3963576347572161, -0.36132926691585554, -0.3435994724378724,
-0.3264364613605426, -0.30987578050254794, -0.29560344101607655,
-0.28336917122143956, -0.27281035188585767, -0.263603426695215,
-0.25551101997122555, -0.2483371295561828, -0.24190901972670678,
-0.23613453536723528, -0.23087901113323128, -0.22609553760410334},
{1.018140171704764, -0.2863702380093968, -0.5618271607556236,
-0.5474184710656469, -0.48997875876696106, -0.43838865222135404,
-0.39623353736984795, -0.361231166689529, -0.3435262536930984,
-0.3263368561306061, -0.3097743299727034, -0.2955051537852618,
-0.2832749053077164, -0.272720046816364, -0.26351682798038945,
-0.25542779940507154, -0.2482569650954331, -0.24183162383551987,
-0.23605964426998755, -0.23080640503351085, -0.2260250145060937},
{1.0129813883470669, -0.28852285617842227, -0.5626355207311384,
-0.5476008166515135, -0.48996206712295476, -0.4383073841911769,
-0.3961090837297108, -0.36113293429082705, -0.3434527087046902,
-0.32623714675607973, -0.3096728638997353, -0.2954068812896759,
-0.28318066761741356, -0.27262977734203064, -0.2634302689529287,
-0.2553446207737685, -0.24817684378775728, -0.24175427170857783,
-0.2359847971600212, -0.23073384289057305, -0.22595453517159467},
{1.007829245412309, -0.2906685226528418, -0.5634391182082203,
-0.5477809918717539, -0.48994437153029324, -0.43822562007689847,
-0.39598428064279056, -0.36103457109578135, -0.343378838992032,
-0.3261373349185536, -0.30957138312995014, -0.2953086240746924,
-0.28308645854778597, -0.2725395437775699, -0.26334374986787007,
-0.25526148429104034, -0.24809676581654008, -0.24167696350584278,
-0.23590999417877695, -0.23066132483083449, -0.22588409971463533},
{1.0026837549739216, -0.2928072671388006, -0.5642379736377993,
-0.5479590089705098, -0.4899256786849923, -0.4381433637406734,
-0.3958591348730329, -0.36093607847159814, -0.34330464610332206,
-0.3260374222849757, -0.30946988850205176, -0.2952103826808593,
-0.28299227849266184, -0.27244934643477847, -0.26325727097782525,
-0.2551783901685153, -0.2480167313633333, -0.24159969938562517,
-0.2358352354661962, -0.23058885097933823, -0.22581370824795843},
{0.9975449289651606, -0.2949391192024844, -0.5650321073926292,
-0.5481348801268787, -0.4899059952424263, -0.43806061901950666,
-0.3957336531406682, -0.3608374577767197, -0.34323013161466864,
-0.3259374105077686, -0.30936838084721163, -0.2951121576439278,
-0.2828981278424604, -0.2723591856225798, -0.2631708325330064,
-0.2550953386157677, -0.2479367406078636, -0.24152247950461042,
-0.23576052116074292, -0.23051642145976894, -0.22574336088307623},
{0.9924127791798267, -0.29706410826810203, -0.5658215397675023,
-0.5483086174552836, -0.4898853278175778, -0.437977389725419,
-0.39560784212056893, -0.360738710360881, -0.34315529712918125,
-0.325837301224924, -0.3092668609891381, -0.2950139494949094,
-0.282804006984228, -0.2722690616470279, -0.2630844347812426,
-0.25501232984031785, -0.24785679372805353, -0.24144530401785325,
-0.2356858513994075, -0.23044403639445954, -0.2256730577302276},
{0.987287317272984, -0.2991822636159176, -0.5666062909794766,
-0.5484802330057926, -0.4898636829852805, -0.43789367964560316,
-0.3954817084407282, -0.36063983756516005, -0.34308014427607936,
-0.325737096060133, -0.30916532974413724, -0.2949157587601005,
-0.28270991630165354, -0.2721789748113455, -0.2629980779680001,
-0.25492936404764494, -0.24777689090003038, -0.2413681730788017,
-0.23561122631771889, -0.23037169590439444, -0.2256027988984248},
{0.9821685547616736, -0.3012936143803522, -0.5673863811680939,
-0.5486497387644418, -0.48984106728047233, -0.4378094925426063,
-0.3953552586807964, -0.36054084072203685, -0.34300467470982077,
-0.32563679662287676, -0.3090637879211752, -0.29481758596112184,
-0.2826158561751034, -0.2720889254159338, -0.26291176233639413,
-0.25484644144121593, -0.2476970322981321, -0.24129108683930545,
-0.2355366460497527, -0.23029940010924152, -0.22553258449544994},
{0.9770565030256305, -0.303398189548148, -0.568161830395606,
-0.5488171466536048, -0.48981748719844004, -0.4377248321544826,
-0.3952284993706925, -0.3604417211554579, -0.34292889010924854,
-0.32553640450856114, -0.308962236321962, -0.2947194316149675,
-0.28252182698163925, -0.27199891375839824, -0.2628254881272133,
-0.25476356222249186, -0.24761721809494452, -0.2412140454496322,
-0.23546211072814935, -0.23022714912733871, -0.22546241462786581},
{0.9719511733079924, -0.3054960179565894, -0.5689326586471932,
-0.5489824685322792, -0.48979294919506305, -0.43763970219495063,
-0.3951014369892935, -0.360342480180869, -0.3428527921767311,
-0.3254359212986047, -0.3088606757409884, -0.29462129623402267,
-0.2824278290950479, -0.2719089401335638, -0.2627392555789316,
-0.2546807265909417, -0.24753744846128234, -0.24113704905847316,
-0.23538762048411527, -0.23015494307571055, -0.22539228940102296},
{0.9668525767160103, -0.30758712829179524, -0.5696988858311901,
-0.5491457161964506, -0.48976745968705965, -0.43755410635356895,
-0.3949740779631875, -0.36024311910529555, -0.3427763826373392,
-0.3253353485605574, -0.3087591069656107, -0.294523180326125,
-0.28233386288586404, -0.2718190048335146, -0.2626530649277348,
-0.254597934744066, -0.24745772356623139, -0.24106009781295573,
-0.2353131754474404, -0.23008278207009264, -0.2253222089190708},
{0.9617607242217505, -0.30967154908706573, -0.5704605317793168,
-0.549306901379411, -0.4897410250522211, -0.4374680482958793,
-0.3948464286655186, -0.3601436392273894, -0.3426996632380261,
-0.32523468784822507, -0.30865753077610497, -0.2944250843945868,
-0.282239928721394, -0.2717291081475864, -0.26256691640752533,
-0.25451518687740265, -0.2473780435771423, -0.240983191858658,
-0.23523877574651517, -0.23001066622491767, -0.2252521732849685},
{0.9566756266628044, -0.3117493087212964, -0.5712176162468952,
-0.5494660357520624, -0.4897136516296603, -0.4373815316635797,
-0.3947184954148826, -0.360044041837521, -0.34262263574681584,
-0.32513394070176016, -0.30855594794572877, -0.2943270089382296,
-0.28214602696573987, -0.2716392503624137, -0.26248081024995135,
-0.2544324831845422, -0.24729840865964833, -0.2409063313396225,
-0.23516442150831834, -0.22993859565334196, -0.22518218260048958},
{0.9515972947429832, -0.31382043541744964, -0.571970158913079,
-0.5496231309232842, -0.48968534572004196, -0.4372945600746745,
-0.39459028447428013, -0.3599443282179213, -0.34254530195201993,
-0.32503310864779045, -0.30845435924078635, -0.29422895445143077,
-0.2820521579798204, -0.2715494317619363, -0.26239474668441687,
-0.25434982385715066, -0.24721881897768455, -0.24082951639835753,
-0.23509011285845005, -0.22986657046724546, -0.22511223696622912},
{0.9465257390330211, -0.3158849572410921, -0.5727181793810807,
-0.549778198440213, -0.4896561135858287, -0.43720713712362946,
-0.3944618020501695, -0.35984449964298776, -0.3424676636614453,
-0.3249321931995224, -0.3083527654206899, -0.29413092142414876,
-0.28195832212140515, -0.27145965262742094, -0.2623087259381002,
-0.25426720908497813, -0.2471392746934971, -0.2407527471758632,
-0.23501584992113778, -0.22979459077725484, -0.22504233648162641},
{0.9414609699712705, -0.31794290209899145, -0.5734616971783955,
-0.5499312497886004, -0.4896259614515088, -0.43711926638154297,
-0.39433305429154575, -0.3597445573798521, -0.3423897227016476,
-0.3248311958568584, -0.3082511672380148, -0.2940329103419748,
-0.2818645197451209, -0.2713699132374898, -0.26222274823597713,
-0.25418463905587285, -0.24705977596764842, -0.24067602381163314,
-0.23494163281923605, -0.22972265669273437, -0.22497248124495772},
{0.9364029978643928, -0.31999429773777127, -0.5742007317570319,
-0.5500822963931117, -0.4895948955038316, -0.4370309513962734,
-0.3942040472891052, -0.3596445026894557, -0.34231148091715874,
-0.3247301181065051, -0.3081495654385671, -0.2939349216861523,
-0.2817707512024842, -0.2712802138681276, -0.26213681380082426,
-0.2541021139557983, -0.2469803229590411, -0.2405993464436671,
-0.23486746167424338, -0.2296507683218146, -0.22490267135334197},
{0.9313518328880562, -0.32203917174263247, -0.5749353024937373,
-0.5502313496176371, -0.48956292189204426, -0.4369421956926163,
-0.3940747870744705, -0.3595443368283582, -0.34223294016975864,
-0.3246289614220872, -0.3080479607614356, -0.2938369559336132,
-0.2816770168419272, -0.27119055479271004, -0.2620509228532492,
-0.25401963396884436, -0.24690091582491797, -0.2405227152084784,
-0.2347933366063198, -0.22957892577138203, -0.2248329069027751},
{0.9263074850876163, -0.3240775515361304, -0.5756654286902286,
-0.5503784207656445, -0.4895300467281133, -0.43685300277244893,
-0.3939452796194524, -0.35944406105163773, -0.3421541023377479,
-0.3245277272642609, -0.3079463539390608, -0.2937390135570269,
-0.2815833170088089, -0.27110093628203064, -0.26196507561169813,
-0.25393719927724645, -0.24682155472089157, -0.24044613024111977,
-0.23471925773428126, -0.2295071291471025, -0.22476318798811107},
{0.9212699643788114, -0.32610946437701116, -0.5763911295734162,
-0.5505235210804444, -0.4894962760869675, -0.43676337611487576,
-0.39381553083540005, -0.35934367661718614, -0.34207496931522474,
-0.3244264170808179, -0.30784474569727505, -0.29364109502481867,
-0.28148965204544674, -0.2710113586042969, -0.26187927229248037,
-0.25385481006139055, -0.2467422398009376, -0.24036959167517402,
-0.2346452251756257, -0.22943537855343119, -0.22469351470308124},
{0.9162392805484358, -0.3281349373591109, -0.5771124242956357,
-0.550666661745554, -0.48946161600671695, -0.43667331917639374,
-0.3936855465725704, -0.35924318479177775, -0.34199554301139706,
-0.32432503230680826, -0.3077431367553855, -0.2935432008012159,
-0.28139602229113064, -0.2709218220251829, -0.2617935131097751,
-0.25377246649983964, -0.24666297121742103, -0.240293099642784,
-0.23457123904652727, -0.2293636740936103, -0.2246238871402997},
{0.9112154432550318, -0.3301539974103099, -0.5778293319348804,
-0.5508078538849766, -0.4894260724888776, -0.43658283539101783,
-0.3935553326195884, -0.3591425868592067, -0.3419158253498841,
-0.32422357436463783, -0.3076415278262085, -0.2934453313462753,
-0.2813024280821494, -0.27083232680781555, -0.26170779827565266,
-0.2536901687693361, -0.2465837491210992, -0.24021665427464367,
-0.23449729946185904, -0.22929201586968354, -0.22455430539127835},
{0.9061984620295634, -0.33216667129154653, -0.5785418714950241,
-0.5509471085635124, -0.48938965149860425, -0.436491928170455,
-0.39342489470294256, -0.35904188413075866, -0.3418358182680392,
-0.32412204466418704, -0.3075399196161356, -0.2933474871159165,
-0.2812088697518151, -0.2707428732128191, -0.26162212800009327,
-0.2536079170448238, -0.24650457366114076, -0.2401402557000304,
-0.23442340653519883, -0.2292204039825178, -0.22448476954643448},
{0.9011883462760923, -0.3341729855958894, -0.5792500619060568,
-0.5510844367870944, -0.4893523589649089, -0.43640060090423477,
-0.39329423848651063, -0.358941077958182, -0.34175552371629425,
-0.3240204446029178, -0.30743831282519607, -0.29324966856195944,
-0.2811153476304713, -0.2706534614983215, -0.2615365024909985,
-0.2535257114994527, -0.2464254449851297, -0.2400639040468,
-0.2343495603788337, -0.22914883853178125, -0.22441527969508218},
{0.8961851052724552, -0.33617296674766667, -0.579953922024309,
-0.5512198495030618, -0.48931420078088433, -0.43630885695986005,
-0.3931633695711784, -0.35884016974924454, -0.3416749436574982,
-0.32391877556597615, -0.30733670814709546, -0.29315187613215143,
-0.28102186204552937, -0.270564091919976, -0.2614509219542074,
-0.2534435523046043, -0.24634636323909043, -0.23998759944140485,
-0.23427576110377912, -0.2290773196159944, -0.2243458359254683},
{0.8911887481709315, -0.3381666410016473, -0.5806534706326869,
-0.5513533576004935, -0.48927518280392623, -0.43621669968295657,
-0.3930322934944568, -0.35873916098581776, -0.3415940800662829,
-0.32381703892630664, -0.3072351062692887, -0.2930541102702079,
-0.2809284133214766, -0.2704747647309828, -0.2613653865935126,
-0.25336143962988944, -0.24626732856747774, -0.23991134200889747,
-0.23420200881977388, -0.22900584733249307, -0.22427643832474775},
{0.8861992839989175, -0.3401540344422844, -0.5813487264409007,
-0.5514849719105035, -0.4892353108559492, -0.436124132397405,
-0.3929010157301894, -0.35863805324438536, -0.34151293492843415,
-0.32371523604474856, -0.3071335078730256, -0.2929563714158433,
-0.2808350017799051, -0.27038548018210523, -0.2612798966106766,
-0.2532793736431811, -0.2461883411132147, -0.23983513187294547,
-0.23412830363530956, -0.22893442177747472, -0.2242070869790167},
{0.8812167216595861, -0.34213517298301005, -0.5820397080856976,
-0.5516147032065287, -0.48919459072361116, -0.4360311584055015,
-0.3927695416882798, -0.35853684821869525, -0.3414315102402816,
-0.3236133682701537, -0.307031913633402, -0.292858660004792,
-0.28074162773952727, -0.2702962385216836, -0.2611944522054514,
-0.2531973545106072, -0.24610940101768183, -0.23975896915585201,
-0.23405464565762485, -0.2288630430459873, -0.2241377819733209},
{0.8762410699325629, -0.344110082365588, -0.582726434131087,
-0.5517425622046613, -0.48915302815852396, -0.43593778098808333,
-0.3926378767144521, -0.35843554774424763, -0.3413498080080803,
-0.3235114369394794, -0.30693032421941924, -0.2927609764688588,
-0.28064829151619475, -0.2702070399956658, -0.26110905357558467,
-0.25311538239657927, -0.24603050842074148, -0.23968285397854153,
-0.23398103499271278, -0.22879171123194125, -0.22406852339164374},
{0.8712723374745724, -0.3460787881595103, -0.5834089230685782,
-0.5518685595639166, -0.4891106288774705, -0.4358440034046802,
-0.39250602609008634, -0.35833415382420924, -0.34126783024743856,
-0.3234094433778926, -0.3068287402940312, -0.29266332123593075,
-0.28055499342292317, -0.2701178848476158, -0.26102370091683913,
-0.2530334574637958, -0.2459516634607455, -0.2396067864605946,
-0.23390747174534587, -0.22872042642812113, -0.22399931131692843},
{0.8663105328201118, -0.3480413157614618, -0.5840871933174064,
-0.5519927058865595, -0.4890673985626228, -0.43574982889365627,
-0.39237399503205467, -0.35823266865628123, -0.34118557898271973,
-0.3233073888988708, -0.3067271625142108, -0.2925656947300283,
-0.2804617337699111, -0.2700287733187309, -0.2609383944230092,
-0.2529515798732638, -0.24587286627454588, -0.2395307667202423,
-0.23383395601907386, -0.22864918872619255, -0.2239301458310879},
{0.8613556643821, -0.34999769039482354, -0.584761263224767,
-0.5521150117183842, -0.4890233428617482, -0.43565526067233173,
-0.39224178869262727, -0.358131094660021, -0.3411030562464847,
-0.3232052748043066, -0.3066255915309757, -0.29246809737132295,
-0.28036851286455355, -0.26993970564786907, -0.26085313428593865,
-0.25286974978429866, -0.24579411699750603, -0.2394547948743821,
-0.23376048791622822, -0.22857799821670188, -0.22386102701499389},
{0.8564077404525333, -0.3519479371092413, -0.5854311510660503,
-0.5522354875490141, -0.4889784673884304, -0.43556030193715306,
-0.39210941215941375, -0.3580294345041312, -0.3410202640789352,
-0.3231031023846045, -0.30652402798947265, -0.2923705295761749,
-0.2802753310114716, -0.26985068207156726, -0.2607679206955336,
-0.2527879673545578, -0.24571541576352118, -0.23937887103859765,
-0.23368706753795127, -0.228506854989113, -0.2237919549485229},
{0.8514667692031433, -0.35389208078022427, -0.586096875045057,
-0.5523541438121943, -0.4889327777222571, -0.43546495586378975,
-0.3919768704552891, -0.3579276911331323, -0.34093720452735116,
-0.3230008729187611, -0.30642247252899046, -0.2922729917571493,
-0.28018218851251225, -0.269761702824029, -0.26068275383975703,
-0.2527062327400173, -0.24563676270499843, -0.23930299532713672,
-0.23361369498416915, -0.2284357591317647, -0.2237229297104991},
{0.8465327586860387, -0.355830146108818, -0.5867584532942497,
-0.5524709908860855, -0.4888862794090602, -0.4353692256073061,
-0.39184416853844417, -0.3578258677930134, -0.34085387964557934,
-0.3228985876744893, -0.3063209257830444, -0.29217548432306756,
-0.28008908566679563, -0.2696727681371893, -0.2605976339046812,
-0.25262454609502427, -0.24555815795291094, -0.2392271678529607,
-0.23354037035363864, -0.228364710731929, -0.22365395137877903},
{0.8416057168343565, -0.35776215762131147, -0.587415903874973,
-0.5525860390935651, -0.4888389779611053, -0.4352731143022837,
-0.39171131130238346, -0.35772396805529855, -0.3407702914934972,
-0.3227962479082917, -0.3062193883794141, -0.2920780076790307,
-0.2799960227707109, -0.2695838782407014, -0.2605125610744788,
-0.2525429075722913, -0.24547960163678306, -0.2391513887277319,
-0.23346709374394262, -0.2282937098757994, -0.22358502003020175},
{0.8366856514629079, -0.35968813966899593, -0.5880692447776887,
-0.5526992987025079, -0.48879087885729444, -0.43517662506294863,
-0.39157830357600887, -0.3576219958391504, -0.3406864421364988,
-0.3226938548655637, -0.3061178609401875, -0.29198056222644225,
-0.27990300011794683, -0.2694950333619655, -0.2604275355314374,
-0.25246131732290444, -0.24540109388470638, -0.23907565806182873,
-0.23339386525149186, -0.22822275664849215, -0.22351613574062468},
{0.8317725702688196, -0.3616081164279722, -0.5887184939222047,
-0.5528107799260599, -0.4887419875433802, -0.4350797609833154,
-0.3914451501237172, -0.3575199554311065, -0.34060233364499815,
-0.3225914097806754, -0.30601634408181155, -0.29188314836304163,
-0.27981001799950533, -0.26940623372613404, -0.2603425574559798,
-0.25237977549634005, -0.24532263482334538, -0.23899997596435063,
-0.23332068497153638, -0.22815185113406383, -0.22344729858491863},
{0.8268664808321746, -0.36352211189900285, -0.5893636691579062,
-0.5529204929229594, -0.48869230943216224, -0.43498252513731395,
-0.39131185564550197, -0.3574178515021543, -0.34051796809393514,
-0.32248891387707157, -0.30591483841514727, -0.2917857664829344,
-0.2797170767037196, -0.2693174795561427, -0.2602576270266746,
-0.2522982822404774, -0.24524422457795508, -0.23892434254313166,
-0.23324755299817873, -0.22808099341551727, -0.22337850863697412},
{0.8219673906166483, -0.36543014990741784, -0.5900047882639898,
-0.5530284477977875, -0.48864184990369747, -0.43488492057892275,
-0.3911784247771364, -0.3573156891218422, -0.34043334756229493,
-0.3223863683673549, -0.30581334454551146, -0.2916884169766183,
-0.27962417651628246, -0.26922877107272514, -0.2601727444202559,
-0.2522168377016128, -0.24516586327239753, -0.23884875790475749,
-0.2331744694243836, -0.2280101835748063, -0.2233097659697247},
{0.8170753069701476, -0.3673322541030528, -0.5906418689496915,
-0.5531346546012811, -0.4885906143054936, -0.4347869503423084,
-0.39104486209033096, -0.35721347376924495, -0.3403484741326408,
-0.32228377445337314, -0.30571186307272863, -0.2915911002310202,
-0.27953131772024664, -0.26914010849441666, -0.26008790981162605,
-0.2521354420244654, -0.245087551029133, -0.2387732221545546,
-0.23310143434197259, -0.22793942169284415, -0.2232410706551287},
{0.8121902371254386, -0.369228447960244, -0.5912749288545199,
-0.5532391233305985, -0.48853860795271115, -0.434688617441932,
-0.3909111720929503, -0.3571112113406335, -0.34026334989065177,
-0.3221811333263104, -0.3056103945911748, -0.29149381662951357,
-0.27943850059605657, -0.26905149203758866, -0.2600031233738841,
-0.2520540953521934, -0.24500928796924842, -0.23869773539662276,
-0.23302844784165855, -0.22786870784951507, -0.2231724227641991},
{0.8073121882007837, -0.37111875477785783, -0.5919039855484858,
-0.5533418639295924, -0.48848583612836016, -0.43458992487270637,
-0.39077735922924495, -0.35700890815376823, -0.3401779769246698,
-0.3220784461667632, -0.3055089396898235, -0.2913965665519534,
-0.2793457254215629, -0.2689629219164524, -0.2599183852783251,
-0.251972797826399, -0.24493107421245558, -0.2386222977338226,
-0.23295551001301884, -0.22779804212367358, -0.22310382236699838},
{0.8024411672005625, -0.373003197679373, -0.5925290565323347,
-0.5534428862891247, -0.4884323040835017, -0.4344908756101078,
-0.39064342788009365, -0.35690657094879324, -0.3400923573252776,
-0.32197571414484016, -0.30540749895229935, -0.29129935037470656,
-0.27925299247204405, -0.26887439834308635, -0.2598336956944673,
-0.2518915495871592, -0.24485290987711494, -0.2385469092678112,
-0.23288262094454226, -0.2277274245931733, -0.2230352695326535},
{0.7975771810159054, -0.37488179961298984, -0.5931501592377747,
-0.553542200247299, -0.48837801703744066, -0.43439147261030353,
-0.3905093823632935, -0.3568042068857207, -0.34000649318484183,
-0.32187293842022885, -0.30530607295691153, -0.2912021684706684,
-0.27916030202021586, -0.2687859215274396, -0.2597490547900534,
-0.25181035077300623, -0.244774795080229, -0.23847157009901584,
-0.23280978072360375, -0.22765685533484314, -0.22296676432934895},
{0.7927202364253095, -0.3767545833518005, -0.5937673110277095,
-0.5536398155897794, -0.4883229801779236, -0.4342917188102894,
-0.39037522693384247, -0.3567018235386402, -0.33992038659711976,
-0.32177012014228423, -0.3052046622767126, -0.29110502120930626,
-0.2790676543362534, -0.2686974916773557, -0.2596644627310741,
-0.25172920152096934, -0.24469672993746966, -0.23839628032668003,
-0.23273698943649193, -0.22758633442451953, -0.22289830682434741},
{0.7878703400952647, -0.3786215714939775, -0.5943805291964697,
-0.5537357420500412, -0.48826719866132307, -0.43419161712799675,
-0.3902409657842696, -0.356599428886696, -0.33983403965683545,
-0.32166726045011, -0.305103267479537, -0.2910079089566745,
-0.278975049687809, -0.2686091089985923, -0.25957991968177196,
-0.251648101966564, -0.2446187145631727, -0.23832104004884325,
-0.23266424716841935, -0.22751586193703868, -0.22282989708399373},
{0.7830274985808723, -0.38048278646302125, -0.5949898309700364,
-0.5538299893096432, -0.48821067761284237, -0.43409117046243834,
-0.39010660304497285, -0.35649703130203536, -0.33974745445928534,
-0.3215643604726386, -0.3050018891280426, -0.29091083207544316,
-0.2788824883400362, -0.2685207736948321, -0.25949542580466767,
-0.2515670522438204, -0.24454074907036016, -0.2382458493623697,
-0.23259155400351136, -0.22744543794626515, -0.2227615351737251},
{0.7781917183264576, -0.3823382505080337, -0.5955952335062824,
-0.5539225669985226, -0.48815342212669505, -0.433990381693815,
-0.38997214278456294, -0.35639463953486905, -0.33966063309994887,
-0.32146142132871225, -0.30490052777975885, -0.2908137909249349,
-0.27878997055559174, -0.2684324859676941, -0.25941098126055606,
-0.25148605248527905, -0.24446283357074103, -0.23817070836294618,
-0.2325189100248352, -0.22737506252506817, -0.22269322115806223},
{0.7733630056661889, -0.3841879857040354, -0.5961967538951897,
-0.5540134846952417, -0.48809543726630733, -0.4338892536836484,
-0.38983758901025406, -0.35629226269587916, -0.3395735776741017,
-0.3213584441271551, -0.30479918398713135, -0.29071678586113747,
-0.2786974965946679, -0.268344246016761, -0.2593265862085395,
-0.25140510282201317, -0.2443849681747292, -0.23809561714509722,
-0.23244631531439464, -0.2273047357453603, -0.22262495510063446},
{0.7685413668246838, -0.38603201395231546, -0.5967944091590855,
-0.5541027519272776, -0.4880367280644932, -0.43378778927490297,
-0.3897029456682314, -0.3561899102361695, -0.3394862902764505,
-0.3212554299668531, -0.3046978582975613, -0.2906198172367367,
-0.2786050667149944, -0.26825605403957936, -0.25924224080601094,
-0.2513242033836314, -0.2443071529914432, -0.2380205758021782,
-0.2323737699531423, -0.22723445767807193, -0.2225567370641673},
{0.7637268079176232, -0.38787035698082206, -0.597388216252873,
-0.554190378171281, -0.4879772995236482, -0.43368599129209473,
-0.3895682166440855, -0.3560875919250325, -0.3393987730007685,
-0.32115237993683465, -0.3045965512534563, -0.2905228854011457,
-0.27851268117187794, -0.2681679102316965, -0.25915794520871027,
-0.251243354298296, -0.24422938812872738, -0.23794558442641434,
-0.2323012740209937, -0.22716422839320205, -0.22248856711051823},
{0.7589193349523533, -0.38970303634458664, -0.5979781920642572,
-0.5542763728533363, -0.48791715661594004, -0.43358386254143333,
-0.3894334057632241, -0.3559853178257415, -0.3393110279395466,
-0.3210492951163383, -0.3044952633922653, -0.2904259907005298,
-0.2784203402181948, -0.26807981478665316, -0.25907369957069315,
-0.2511625556927328, -0.24415167369315524, -0.23787064310888106,
-0.23222882759682084, -0.227094047959776, -0.22242044530066096},
{0.754118953828498, -0.39153007342618085, -0.5985643534139722,
-0.5543607453492488, -0.48785630428348464, -0.43348140581092226,
-0.38929851679129923, -0.3558830982696507, -0.3392230571836351,
-0.32094617657489655, -0.30439399524651556, -0.2903291334778231,
-0.2783280441044233, -0.2679917678960097, -0.2589895040443694,
-0.25108180769223093, -0.24407400979003457, -0.2377957519395213,
-0.2321564307584693, -0.22702391644589076, -0.22235237169467936},
{0.7493256703385509, -0.3933514894362069, -0.5991467170560136,
-0.5544435049847865, -0.48779474743853485, -0.43337862387048703,
-0.3891635534346789, -0.355780943828859, -0.3391348628219305,
-0.32084302537240394, -0.3042927473438711, -0.2902323140727634,
-0.2782357930786524, -0.2679037697493667, -0.25890535878051346,
-0.25100111042067325, -0.24399639652342503, -0.237720911007165,
-0.23208408358277113, -0.22695383391870932, -0.2222843463518185},
{0.7445394901684834, -0.395167305413824, -0.5997252996778627,
-0.5545246610359658, -0.4877324909636674, -0.43327551947209486,
-0.38902851934089455, -0.3556788652876782, -0.3390464469410275,
-0.32073984255919286, -0.30419152020716145, -0.2901355328219123,
-0.27814358738660655, -0.2678158205343683, -0.2588212639282637,
-0.2509204640005243, -0.24391883399614672, -0.23764612039951297,
-0.23201178614553855, -0.22688380044445478, -0.22221636933044714},
{0.7397604188983381, -0.3969775422273041, -0.600300117900719,
-0.554604222729295, -0.4876695397119535, -0.43317209534986045,
-0.3888934180991352, -0.35557687361315005, -0.3389578116249116,
-0.32063662917610214, -0.3040903143544272, -0.29003879005868266,
-0.2780514272716518, -0.2677279204367224, -0.25873721963514934,
-0.2508398685528612, -0.24384132230978317, -0.23757138020317348,
-0.2319395385215826, -0.22681381608843906, -0.22214844068808431},
{0.7349884620028234, -0.398782220574619, -0.6008711882797225,
-0.5546821992420363, -0.4876058985071495, -0.43306835422017953,
-0.38875825324074176, -0.35547497992489024, -0.3388689589546512,
-0.3205333862545576, -0.303989130298956, -0.28994208611335476,
-0.27795931297482207, -0.2676400696402189, -0.25865322604709506,
-0.2507593241973737, -0.24376386156469917, -0.23749669050365002,
-0.23186734078471843, -0.22674388091505637, -0.22208056048140798},
{0.730223624851912, -0.40058136098405855, -0.6014385273041848,
-0.5547585997024851, -0.48754157214387084, -0.4329642987818298,
-0.38862302823969425, -0.35537319546445123, -0.3387798910080881,
-0.3204301148166431, -0.30388796854932915, -0.28984542131310437,
-0.27786724473483004, -0.26755226832673634, -0.25856928330843537,
-0.2506788310523671, -0.24368645186003984, -0.23742205138536077,
-0.23179519300777013, -0.226673994987796, -0.2220127287662486},
{0.7254659127114229, -0.40237498381487485, -0.602002151397813,
-0.5548334331901971, -0.4874765653877712, -0.43285993171609183,
-0.388487746513146, -0.3552715315644319, -0.33869060985954935,
-0.32032681587515727, -0.3037868296094576, -0.2897487959820194,
-0.2777752227880822, -0.2674645166762615, -0.2584853915619235,
-0.2505983892347955, -0.24360909329374747, -0.23734746293163583,
-0.23172309526257207, -0.22660415836923611, -0.2219449455976086},
{0.7207153307436177, -0.40416310925796267, -0.6025620769189362,
-0.5549067087362773, -0.48741088297572427, -0.4327552556868672,
-0.38835241142193905, -0.35516999961758877, -0.3386011175795619,
-0.32022349043370796, -0.3036857139786238, -0.28965221044112716,
-0.2776832473687014, -0.26737681486691045, -0.2584015509487545,
-0.2505179988602509, -0.2435317859625719, -0.23727292522474247,
-0.23165104761999783, -0.22653437112108038, -0.2218772110296624},
{0.7159718840077793, -0.4059457573365588, -0.6031183201607359,
-0.5549784353236147, -0.4873445296159877, -0.4326502733407783,
-0.38821702627115134, -0.35506861104606136, -0.33851141623457287,
-0.32012013948676077, -0.30358462215151755, -0.2895556650084067,
-0.27759131870853615, -0.26728916307492423, -0.2583177616085558,
-0.2504376600429758, -0.24345452996206765, -0.237198438345875,
-0.23157905014994468, -0.22646463330412492, -0.22180952511576787},
{0.7112355774608025, -0.40772294790697544, -0.6036708973514665,
-0.555048621887133, -0.48727750998839114, -0.43254498730729973,
-0.3880815943106516, -0.35496737727097377, -0.3384215078866821,
-0.3200167640197208, -0.3034835546182747, -0.28945915999881155,
-0.27749943703718005, -0.26720156147470076, -0.2582340236794266,
-0.2503573728958866, -0.2433773253866196, -0.23712400237517245,
-0.2315071029213439, -0.22639494497829715, -0.22174188790845883},
{0.7065064159577698, -0.40949470065935467, -0.6042198246546822,
-0.555117277314066, -0.4872098287445, -0.43243940019885063,
-0.3879461187356306, -0.35486630968252414, -0.33833139459337735,
-0.31991336500900003, -0.3033825118645218, -0.2893626957242844,
-0.2774076025819845, -0.26711401023880155, -0.25815033729791936,
-0.2502771375305705, -0.24330017232943285, -0.2370496173917236,
-0.23143520600218703, -0.22632530620264232, -0.22167429945946993},
{0.7017844042525317, -0.41126103511845313, -0.604765118169464,
-0.5551844104441839, -0.4871414905077992, -0.43233351461091896,
-0.38781060268720463, -0.3547654196107434, -0.33824107840728546,
-0.3198099434220859, -0.30328149437140794, -0.28926627249377546,
-0.2773158155680833, -0.2670265095379678, -0.25806670259908027,
-0.25019695405729964, -0.24322307088256864, -0.23697528347358032,
-0.23136335945951397, -0.22625571703534775, -0.2216067598197345},
{0.6970695469982853, -0.4130219706444457, -0.6053067939306388,
-0.5552500300700651, -0.48707249987385304, -0.4322273331221726,
-0.38767504925295715, -0.3546647182970217, -0.33815056137591604,
-0.3197065002176068, -0.30318050261564083, -0.2891698906132609,
-0.2772240762183959, -0.2669390595411324, -0.2579831197164355,
-0.25011682258504436, -0.24314602113691763, -0.2369010006977498,
-0.23129156335941553, -0.22618617753373133, -0.2215392690393728},
{0.6923618487481484, -0.41477752643376214, -0.6058448679090132,
-0.5553141449373329, -0.4870028614104798, -0.4321208582945543,
-0.3875394614675502, -0.3545642168665875, -0.3380598455414331,
-0.3196030363454095, -0.3030795370695375, -0.2890735503857606,
-0.2771323847536498, -0.26685166041543074, -0.2578995887820313,
-0.25003674322148045, -0.24306902318224327, -0.23682676914023348,
-0.23121981776707246, -0.22611668775426214, -0.22147182716773778},
{0.6876613139557275, -0.41652772151993067, -0.6063793560115835,
-0.5553767637448922, -0.4869325796579219, -0.4320140926734067,
-0.387403842313302, -0.35446392630195095, -0.337968932940409,
-0.31949955274660785, -0.3029785982010351, -0.28897725211133324,
-0.2770407413923961, -0.26676431232622105, -0.257816109926405,
-0.24995671607298703, -0.24299207710716048, -0.2367525888759853,
-0.23114812274670865, -0.22604724775254614, -0.2214044342533853},
{0.6829679469756921, -0.4182725747744691, -0.6069102740817729,
-0.555437895145214, -0.4868616591290173, -0.4319070387875714,
-0.3872681947207788, -0.35436385741751053, -0.3378778256036191,
-0.3193960503536809, -0.3028776864737607, -0.2888809960871308,
-0.27694914635102597, -0.26667701543710015, -0.25773268327864074,
-0.24987674124468784, -0.24291518299916456, -0.23667845997897863,
-0.2310764783616679, -0.22597785758336889, -0.22133709034410004},
{0.6782817520643416, -0.42001210490776797, -0.6074376378996436,
-0.5554975477445306, -0.4867901043093589, -0.4317996991494951,
-0.38713252156940925, -0.3542640208352906, -0.3377865255557945,
-0.31929253009050546, -0.30277680234703586, -0.2887847826073601,
-0.27685759984378033, -0.2665897699098993, -0.25764930896634547,
-0.24979681884042568, -0.24283834094463547, -0.23660438252216753,
-0.23100488467435604, -0.2259085173006684, -0.22126979548688663},
{0.6736027333801677, -0.4217463304700209, -0.6079614631821246,
-0.555555730103126, -0.4867179196574742, -0.4316920762553492,
-0.3869968256880838, -0.3541644269619783, -0.33769503481543717,
-0.31918899287244884, -0.3026759462759408, -0.2886886119633482,
-0.2767661020827693, -0.2665025759047216, -0.2575659871156819,
-0.2497169489627833, -0.24276155102883945, -0.23653035657750762,
-0.23093334174627506, -0.22583922695754594, -0.22120254972798375},
{0.6689308949844204, -0.4234752698521574, -0.608481765583236,
-0.55561245073555, -0.4866451096049672, -0.43158417258511134,
-0.38686110985577077, -0.35406508596722186, -0.33760335539460407,
-0.319085439606424, -0.30257511871133, -0.28859248444352825,
-0.2766746532779908, -0.2664154335799379, -0.2574827178513695,
-0.24963713171311153, -0.2426848133359431, -0.23645638221596793,
-0.2308618496380485, -0.22576998660628697, -0.22113535311287058},
{0.6642662408416683, -0.42519894128680363, -0.6089985606943004,
-0.5556677181108605, -0.48657167855671135, -0.4314759906026989,
-0.386725376802137, -0.35396600776328535, -0.3375114892987036,
-0.3189818711909562, -0.30247432009987196, -0.28849640033345697,
-0.27658325363734076, -0.266328343092207, -0.257399501296694,
-0.2495573671915146, -0.24260812794901654, -0.23638245950755105,
-0.23079040840939175, -0.22570079629837048, -0.22106820568628716},
{0.659608774820355, -0.4269173628492595, -0.6095118640441752,
-0.5557215406528822, -0.4864976308909873, -0.43136753275604733,
-0.38658962920815576, -0.3538672019860779, -0.3374194385263122,
-0.31887828851625455, -0.30237355088409396, -0.2884003599158333,
-0.27649190336662116, -0.26624130459648765, -0.257316337573524,
-0.2494776554968709, -0.24253149495005716, -0.2363085885212685,
-0.23071901811914086, -0.22563165608444086, -0.22100110749219704},
{0.6549585006933553, -0.42863055245849535, -0.6100216910994649,
-0.5557739267404245, -0.48642297095966425, -0.4312588014772318,
-0.3864538697067361, -0.3537686779775622, -0.3373272050689819,
-0.3187746924642694, -0.3022728115023994, -0.28830436347051513,
-0.2764006026695753, -0.26615431824605135, -0.25723322680232374,
-0.24939799672683988, -0.24245491441997277, -0.23623476932518006,
-0.23064767882526177, -0.2255625660143601, -0.22093405857383813},
{0.6503154221385328, -0.4303385278781624, -0.6105280572647467,
-0.555824884707538, -0.48634770308834724, -0.4311497991825662,
-0.3863181008833413, -0.3536704447695588, -0.3372347909110613,
-0.31867108390876275, -0.3021721023891181, -0.28820841127451935,
-0.2763093517478724, -0.2660673841924893, -0.2571501691021403,
-0.2493183909778598, -0.2423783864386051, -0.23616100198636755,
-0.23057639058483392, -0.22549352613715987, -0.2208670589736955},
{0.6456795427392895, -0.4320413067176227, -0.6110309778827869,
-0.5558744228437389, -0.48627183157654336, -0.43104052827269485,
-0.386182325276613, -0.35357251106895776, -0.337142198029533,
-0.31856746371537603, -0.30207142397453984, -0.28811250360206553,
-0.2762181508011608, -0.26598050258574807, -0.25706716459066076,
-0.249238838345191, -0.24230191108474122, -0.23608728657098205,
-0.23050515345409406, -0.2254245365011217, -0.22080010873353823},
{0.6410508659851113, -0.43373890643299845, -0.611530468234762,
-0.5559225493942426, -0.4861953606978199, -0.43093099113271316,
-0.3860465453790119, -0.35347488524431164, -0.33704942839383284,
-0.31846383274168655, -0.3019707766849289, -0.28801664072457106,
-0.2761270000270475, -0.26589367357410265, -0.25698421338417154,
-0.2491593389228848, -0.2422254884361137, -0.23601362314421584,
-0.23043396748839579, -0.2253555971537054, -0.2207332078943967},
{0.6364293952721218, -0.4354313443282263, -0.6120265435404726,
-0.5559692725602096, -0.486118294699963, -0.4308211901322438,
-0.38591076363740806, -0.3533775753138063, -0.33695648396568517,
-0.3183601918372799, -0.3018701609425809, -0.287920822910669,
-0.2760358996211258, -0.26580689730420365, -0.2569013155976002,
-0.24907989280381276, -0.24214911856940477, -0.23594001177033075,
-0.23036283274226363, -0.22528670814160498, -0.22066635649657226},
{0.6318151339036226, -0.4371186375561385, -0.6125192189585673,
-0.5560146004989651, -0.4860406378051334, -0.4307111276255647,
-0.3857749824537376, -0.3532805889346011, -0.3368633666989716,
-0.3182565418438102, -0.30176957716584246, -0.28782505042623524,
-0.2759448497770023, -0.265720173921084, -0.25681847134452407,
-0.24900050007968305, -0.2420728015602682, -0.23586645251265578,
-0.23029174926936852, -0.22521786951073627, -0.22059955457967056},
{0.6272080850906382, -0.43880080311955083, -0.6130085095867573,
-0.5560585413242483, -0.4859623942100268, -0.43060080595168704,
-0.3856392041855993, -0.353183933393475, -0.3367700785395486,
-0.31815288359506294, -0.3016690257691486, -0.2877293235343965,
-0.2758538506862872, -0.2656335035681535, -0.2567356807371534,
-0.24892116084101856, -0.24199653748332137, -0.23579294543359436,
-0.23022071712253997, -0.22514908130623695, -0.22053280218257024},
{0.6226082519524556, -0.4404778578723621, -0.6134944304620338,
-0.5561011031064232, -0.4858835680860163, -0.43049022743445503,
-0.38550343114688895, -0.3530876155987937, -0.33667662142512456,
-0.3180492179170207, -0.3015685071630572, -0.2876336424955647,
-0.27576290253862246, -0.26554688638722473, -0.25665294388638193,
-0.24884187517720607, -0.2419203264121659, -0.2357194905946349,
-0.23014973635378316, -0.22508034357249804, -0.2204660993434413},
{0.6180156375171632, -0.4421498185206779, -0.6139769965608861,
-0.5561422938727172, -0.48580416357932504, -0.4303793943826707,
-0.3853676656084249, -0.3529916420737391, -0.3365829972851175,
-0.31794554562793326, -0.3014680217542735, -0.2875380075674339,
-0.2756720055217097, -0.265460322518535, -0.2565702609017709,
-0.24876264317648158, -0.2418441684193911, -0.23564608805636825,
-0.23007880701426886, -0.2250116563531469, -0.22039944609976575},
{0.6134302447221847, -0.4438167016239274, -0.614456222799514,
-0.5561821216074541, -0.4857241848111624, -0.43026830909014735,
-0.38523190979852934, -0.3528960189507321, -0.33648920804051224,
-0.3178418675383602, -0.3013675699456861, -0.28744241900502054,
-0.2755811598212853, -0.265373812100731, -0.25648763189155577,
-0.24868346492592858, -0.24176806357656971, -0.23557273787845484,
-0.23000792915435447, -0.22494301969105035, -0.22033284248831003},
{0.6088520764148168, -0.44547852359601375, -0.6149321240340457,
-0.5562205942522684, -0.4856436358778854, -0.4301569738358446,
-0.3850961659036726, -0.35280075196709143, -0.3363952556037399,
-0.31773818445125834, -0.3012671521364021, -0.28734687706067186,
-0.27549036562117174, -0.2652873552709011, -0.25640505696266847,
-0.24860434051150682, -0.2416920119542833, -0.23549944011968293,
-0.229937102823575, -0.22487443362833087, -0.22026628854516395},
{0.6042811353527585, -0.4471353007064559, -0.6154047150607511,
-0.5562577197063501, -0.48556252085115376, -0.4300453908839471,
-0.38496043606905705, -0.3527058464617815, -0.3363011418785513,
-0.3176344971620291, -0.30116676872177817, -0.2872513819840963,
-0.2753996231032783, -0.2652009521645923, -0.2563225362207564,
-0.2485252700180706, -0.24161601362212748, -0.23542619483794244,
-0.22986632807067092, -0.22480589820638122, -0.22019978430572645},
{0.5997174242046387, -0.44878704908155626, -0.6158740106162618,
-0.5562935058266522, -0.48548084377806316, -0.42993356248395853,
-0.3848247223992385, -0.3526113073732811, -0.3362068687599007,
-0.3175308064585878, -0.3010664200934506, -0.28715593402238226,
-0.27530893244761384, -0.26511460291580613, -0.2562400697701608,
-0.2484462535293404, -0.2415400686487101, -0.23535300209024626,
-0.22979560494357934, -0.22473741346585765, -0.22013332980471811},
{0.5951609455505481, -0.45043378470556544, -0.6163400253777767,
-0.5563279604281143, -0.4853986086813146, -0.42982149087081006,
-0.3846890269587171, -0.35251713923847583, -0.3361124381338292,
-0.31742711312141036, -0.30096610663935264, -0.2870605334200145,
-0.27521829383229346, -0.2650283076570127, -0.2561576577139552,
-0.24836729112793898, -0.24146417710165513, -0.23527986193272066,
-0.22972493348942186, -0.22466897944666026, -0.22006692507617576},
{0.5906117018825595, -0.4520755234218656, -0.6168027739632799,
-0.5563610912839027, -0.48531581955934844, -0.4297091782649334,
-0.38455335177251326, -0.3524233461925577, -0.33601785187735855,
-0.3173234179236245, -0.3008658287437677, -0.2869651804189042,
-0.27512770743356885, -0.26494206651917473, -0.2560753001539362,
-0.24828838289539817, -0.24138833904762858, -0.2352067744206356,
-0.22965431375456444, -0.22460059618801104, -0.22000057015347702},
{0.5860696956052552, -0.45371228093415816, -0.6172622709317539,
-0.5563929061256084, -0.48523248038649935, -0.4295966268723729,
-0.384417698826784, -0.35232993196985973, -0.3359231118583863,
-0.3172197216310434, -0.30076558678735343, -0.286869875258418,
-0.275037173425831, -0.2648558796317519, -0.2559929971906561,
-0.2482095289121476, -0.24131255455233136, -0.23513373960839495,
-0.22958374578456558, -0.22453226372837534, -0.2199342650693229},
{0.5815349290362426, -0.4553440728076583, -0.6177185307833898,
-0.5564234126434912, -0.4851485951131442, -0.42948383888487707,
-0.38428207006937537, -0.3522368999055767, -0.33582821993558115,
-0.3171160250022331, -0.3006653811471459, -0.2867746181753843,
-0.27494669198162414, -0.2647697471226969, -0.2559107489233971,
-0.24813072925755075, -0.24123682368050364, -0.23506075754952663,
-0.2295132296242046, -0.2244639821055211, -0.2198680098557538},
{0.5770074044066787, -0.45697091447030436, -0.6181715679598027,
-0.55645261848668, -0.4850641676658351, -0.4293708164799725,
-0.38414646741042663, -0.35214425293833873, -0.33573317795830027,
-0.3170123287885888, -0.300565212196644, -0.28667940940414316,
-0.27485626327165663, -0.264683669118507, -0.2558285554502225,
-0.2480519840098973, -0.2411611464959529, -0.23498782829674658,
-0.229442765317522, -0.22439575135651096, -0.2198018045441629},
{0.5724871238617799, -0.45859282121396094, -0.6186213968442338,
-0.5564805312633885, -0.48497920194745775, -0.42925756182108166,
-0.38401089272292377, -0.3520519936135523, -0.3356379877664821,
-0.3169086337343668, -0.30046508030576935, -0.28658424917653114,
-0.27476588746482433, -0.264597645744179, -0.2557464168679444,
-0.24797329324640294, -0.24108552306152115, -0.2349149519018912,
-0.22937235290773123, -0.22432757151769578, -0.21973564916527813},
{0.5679740894613414, -0.46020980819564533, -0.6190680317617748,
-0.5565071585411581, -0.4848937018373742, -0.42914407705759167,
-0.3838753478432603, -0.351960124087513, -0.33554265119057836,
-0.31680494057678343, -0.30036498584096105, -0.2864891377219678,
-0.2746755647282186, -0.2645116771232858, -0.25566433327216875,
-0.24789465704324504, -0.24100995343915527, -0.23484212841598204,
-0.2293019924373504, -0.22425944262474296, -0.21966954374920727},
{0.563468303180248, -0.4618218904387449, -0.6195114869795643,
-0.5565325078470374, -0.4848076711915533, -0.42903036432495706,
-0.38373983457180794, -0.35186864613216273, -0.33544717005145613,
-0.31670125004603367, -0.30026492916515796, -0.28639407526740795,
-0.27458529522713326, -0.2644257633779261, -0.2555823047572838,
-0.24781607547553525, -0.24093443768984196, -0.23476935788920844,
-0.22923168394811716, -0.2241913647126161, -0.21960348832538434},
{0.5589697669089821, -0.46342908283425055, -0.6199517767070063,
-0.5565565866678311, -0.4847211138427332, -0.42891642574479055,
-0.383604354673455, -0.3517775611405155, -0.33535154616032614,
-0.3165975628653769, -0.3001649106378521, -0.28629906203742556,
-0.27449507912508075, -0.26433990462877255, -0.25550033141646417,
-0.24773754861735015, -0.24085897587365984, -0.23469664037091498,
-0.22916142748099078, -0.2241233378155838, -0.21953748292262704},
{0.5544784824541328, -0.4650314001419892, -0.6203889150959783,
-0.5565794024502903, -0.48463403360053586, -0.4288022634249408,
-0.38346890987815074, -0.35168687013267036, -0.33525578131867484,
-0.3164938797511847, -0.30006493061510925, -0.28620409825420823,
-0.2744049165838163, -0.26425410099507496, -0.2554184133417003,
-0.2476590765417386, -0.24078356804977735, -0.23462397590965117,
-0.22909122307624485, -0.224055361967266, -0.21947152756911487},
{0.5499944515389009, -0.4666288569918601, -0.6208229162410307,
-0.5566009626013244, -0.484546434251633, -0.4286878794595976,
-0.38333350188146803, -0.3515965737623432, -0.3351598773181842,
-0.31639020141300556, -0.29996498944959527, -0.28610918413759956,
-0.2743148077633424, -0.26416835259466714, -0.2553365506238031,
-0.2475806593207319, -0.24070821427645794, -0.234551364553148,
-0.2290210707733725, -0.22398743720057374, -0.21940562229241306},
{0.545517675803606, -0.46822146788508634, -0.6212537941796097,
-0.556621274488233, -0.48445831955987034, -0.428573275929361,
-0.383198132345089, -0.35150667232392646, -0.33506383594067607,
-0.3162865285536305, -0.2998650874906115, -0.28601431990510806,
-0.27422475282190867, -0.26408265954398746, -0.2552547433523927,
-0.24750229702532878, -0.24063291461106892, -0.23447880634832513,
-0.22895097061114944, -0.22391956354776668, -0.21933976711945385},
{0.5410481568061795, -0.46980924719545125, -0.6216815628922483,
-0.556640345438891, -0.4843696932664103, -0.42845845490134465,
-0.3830628028973727, -0.3514171657599712, -0.3349676589580377,
-0.31618286186912975, -0.2997652250841144, -0.28591950577195546,
-0.274134751916051, -0.2639970219580682, -0.2551729916159309,
-0.24742398972553203, -0.2405576691100787, -0.23440630134131296,
-0.22888092262762544, -0.22385174104043126, -0.2192739620765554},
{0.5365858960226738, -0.4713922091705564, -0.6221062363027858,
-0.5566581827419792, -0.4842805590898695, -0.4283434184292554,
-0.38292751513383205, -0.35132805366909586, -0.3348713481321657,
-0.31607920204892215, -0.29966540257273583, -0.28582474195105934,
-0.2740448052005756, -0.2639114399505671, -0.25509129550171167,
-0.24734573749032207, -0.2404824778290749, -0.23433384957742945,
-0.22881092686012483, -0.223783969709487, -0.21920820718941914},
{0.532130894847753, -0.4729703679330706, -0.6225278282785677,
-0.556674793647177, -0.48419092072645165, -0.42822816855347917,
-0.3827922706176835, -0.35123933531425544, -0.33477490521492637,
-0.3159755497758437, -0.29956562029584527, -0.28573002865312047,
-0.2739549128286029, -0.2638259136337737, -0.25500965509589074,
-0.24726754038771984, -0.2404073408227677, -0.23426145110122415,
-0.22874098334526635, -0.22371624958521913, -0.21914250248316644},
{0.5276831545951883, -0.47454373748198597, -0.6229463526306527,
-0.5566901853653733, -0.4841007818500943, -0.4281127073011749,
-0.38265707088032735, -0.3511510096313294, -0.3346783319480831,
-0.3158719057261884, -0.29946587858952833, -0.2856353660865957,
-0.27386507495155266, -0.263740443118616, -0.2549280704834679,
-0.24718939848472962, -0.24033225814498604, -0.23418910595645576,
-0.22867109211894535, -0.2236485806972347, -0.2190768479822798},
{0.5232426764983529, -0.4761123316938744, -0.6233618231140132,
-0.5567043650688732, -0.4840101461125872, -0.4279970366863379,
-0.38252191742183733, -0.3510630752380013, -0.33458163006326,
-0.3157682705697684, -0.2993661777866471, -0.2855407544577391,
-0.27377529171917103, -0.26365502851466543, -0.25484654174832566,
-0.2471113118473997, -0.24025722984870634, -0.2341168141861145,
-0.22860125321636082, -0.22358096307450626, -0.21901124371066655},
{0.5188094617107125, -0.4776761643241486, -0.6237742534277492,
-0.556717339891603, -0.483919017143724, -0.4278811587099153,
-0.3823868117114701, -0.3509755304428994, -0.33448480128190033,
-0.31566464496998564, -0.2992665182168619, -0.2854461939706469,
-0.273685563279538, -0.26356966993016856, -0.2547650689732176,
-0.24703328054078671, -0.2401822559860433, -0.23404457583241384,
-0.22853146667201868, -0.22351339674538717, -0.21894568969165393},
{0.5143835113063129, -0.4792352490083183, -0.6241836572152821,
-0.5567291169293226, -0.4838273985514255, -0.42776507535986785,
-0.38225175518813104, -0.3508883732549235, -0.334387847315208,
-0.3155610295838549, -0.2991669002066402, -0.28535168482724926,
-0.2735958897790798, -0.2634843674720199, -0.2546836522397694,
-0.2469553046289969, -0.24010733660825062, -0.2339723909367972,
-0.2284617325197067, -0.22344588173755503, -0.21888018594795092},
{0.5099648262802671, -0.4807895992632516, -0.6245900480645641,
-0.5567397032398053, -0.4837352939218644, -0.42764878861125094,
-0.3821167492608523, -0.3508016013927736, -0.3342907698641233,
-0.31545742506209373, -0.2990673240793071, -0.2852572272273446,
-0.27350627136258443, -0.2633991212458165, -0.25460229162850784,
-0.24687738417516947, -0.2400324717657472, -0.23390025953996363,
-0.22839205079255087, -0.22337841807808523, -0.21881473250171324},
{0.5055534075492392, -0.48233922848844146, -0.6249934395082817,
-0.5567491058430588, -0.4836427068196223, -0.4275323004263261,
-0.3819817953092846, -0.35071521229463837, -0.3341935706192914,
-0.31535383204916523, -0.2989677901550507, -0.2851628213686499,
-0.2734167081732114, -0.2633139313558413, -0.2545209872188711,
-0.24679951924150215, -0.2399576615081097, -0.23382818168184527,
-0.2283224215229795, -0.22331100579341695, -0.2187493293745031},
{0.5011492559519282, -0.4838841499672577, -0.6253938450240479,
-0.5567573317215221, -0.48354964078779133, -0.4274156127546007,
-0.3818468946841168, -0.3506292031279619, -0.3340962512610171,
-0.31525025118332284, -0.29886829875096266, -0.2850684674467884,
-0.27332720035249647, -0.2632287979050695, -0.25443973908918766,
-0.2467217098892548, -0.2398829058840733, -0.23375615740164457,
-0.22825284474274846, -0.22324364490936843, -0.21868397658730715},
{0.4967523722495472, -0.48542437686821244, -0.6257912780346168,
-0.5567643878202547, -0.48345609934812483, -0.42729872753294706,
-0.3817120487075703, -0.35054357079934195, -0.3339988134592408,
-0.31514668309668303, -0.29876885018104715, -0.28497416565531974,
-0.2732377480403806, -0.263143720995192, -0.2543585473167204,
-0.2466439561787311, -0.2398082049415537, -0.23368418673781186,
-0.22818332048293227, -0.22317633545114113, -0.21861867416056122},
{0.4923627571263026, -0.4869599222462206, -0.6261857519080741,
-0.5567702810471579, -0.48336208600115854, -0.4271816466856655,
-0.38157725867382075, -0.3504583119644589, -0.33390125887350874,
-0.3150431284152607, -0.2986694447562672, -0.2848799161857893,
-0.2731483513752045, -0.2630587007266191, -0.254277411977647,
-0.24656625816933073, -0.23973355872764784, -0.23361226972805393,
-0.22811384877395255, -0.22310907744333414, -0.2185534221141182},
{0.48798041118986796, -0.4884907990438582, -0.626577279958046,
-0.5567750182731455, -0.48326760422633336, -0.42706437212456305,
-0.381442525849461, -0.3503734230380677, -0.3338035891529665,
-0.3149395877590482, -0.29857008278455793, -0.28478571922772444,
-0.2730590104937387, -0.2629737371985084, -0.25419633314708845,
-0.24648861591952065, -0.2396589672886426, -0.23354040640937013,
-0.2280444296455465, -0.22304187090992952, -0.21848822046728486},
{0.48360533497186137, -0.49001702009261655, -0.6269658754438887,
-0.5567786063323484, -0.483172657482137, -0.4269469057490487,
-0.38130785147393387, -0.3502889002039741, -0.33370580593630184,
-0.3148360617420273, -0.2984707645708385, -0.2846915749686477,
-0.27296972553116966, -0.2628888305087186, -0.2541153108990887,
-0.24641102948684107, -0.2395844306699872, -0.23346859681800528,
-0.22797506312680133, -0.2229747158742877, -0.21842306923879629},
{0.47923752892831567, -0.491538598114161, -0.6273515515708967,
-0.5567810520223249, -0.4830772492062175, -0.4268292494461871,
-0.3811732367599362, -0.35020473942503266, -0.333607910851772,
-0.3147325509722783, -0.29837149041706157, -0.28459748359414305,
-0.2728804966211395, -0.26280398075390404, -0.25403434530667485,
-0.2463334989279634, -0.2395099489163775, -0.23339684098952423,
-0.2279057492461667, -0.22290761235922077, -0.21835796844686728},
{0.4748769934401482, -0.4930555457215858, -0.6277343214904975,
-0.5567823621042316, -0.48298138281551833, -0.4267114050908089,
-0.38103868289388465, -0.35012093645308767, -0.3335099055171472,
-0.31462905605198366, -0.298272260622223, -0.284503445287837,
-0.27279132389573363, -0.26271918802944333, -0.25395343644180385,
-0.24625602429860322, -0.23943552207166552, -0.23332513895873974,
-0.22783648803141976, -0.22284056038690053, -0.21829291810912993},
{0.4705237288136295, -0.494567875420661, -0.6281141983004488,
-0.5567825433030407, -0.4828850617063995, -0.42659337454556734,
-0.38090419103629647, -0.3500374868388758, -0.33341179153972134,
-0.31452557757750094, -0.29817307548238536, -0.2844094602314156,
-0.2727022074855031, -0.26263445242950295, -0.2538725843754034,
-0.2461786056536337, -0.2393611501789461, -0.23325349075977347,
-0.227767279509716, -0.22277355997893167, -0.21822791824270044},
{0.4661777352808506, -0.4960755996110857, -0.6284911950450366,
-0.5567816023077113, -0.4827882892547561, -0.42647515966101784,
-0.3807697623222228, -0.34995438594186745, -0.33331357051629246,
-0.31442211613942134, -0.29807393529071774, -0.2843155286046888,
-0.27261314751949367, -0.2625497740470129, -0.2537917891773903,
-0.24610124304700942, -0.23928683328051775, -0.23318189642605114,
-0.22769812370756226, -0.22270661115632828, -0.21816296886414896},
{0.4618390130001845, -0.4975787305877287, -0.6288653247152718,
-0.5567795457713856, -0.48269106881615614, -0.4263567622757143,
-0.3806353978616546, -0.34987162893999485, -0.3332152440331471,
-0.3143186723226073, -0.2979748403374799, -0.28422165058555304,
-0.2725241441252104, -0.262465152973703, -0.25371105091663937,
-0.24602393653181523, -0.23921257141789687, -0.2331103559902874,
-0.22762902065081903, -0.2226397139395198, -0.2180980699895},
{0.4575075620567472, -0.4990772805418785, -0.6292366002490897,
-0.5567763803115943, -0.4825934037259517, -0.4262381842162522,
-0.3805010987399004, -0.34978921083933184, -0.333116813666086,
-0.31421524670624756, -0.2978757909101141, -0.2841278263500759,
-0.27243519742868433, -0.26238058930009933, -0.25363036966104613,
-0.2459466861602625, -0.23913836463183416, -0.23303886948450597,
-0.2275599703647465, -0.22257286834837106, -0.2180332216342732},
{0.4531833824628644, -0.5005712615624732, -0.6296050345315372,
-0.5567721125104206, -0.48249529729940754, -0.4261194272973806,
-0.3803668660180116, -0.3497071264836019, -0.3330182809803704,
-0.31411183986392177, -0.2977767872931832, -0.28403405607245014,
-0.272346307554444, -0.2622960831155243, -0.25354974547747855,
-0.24586949198369984, -0.2390642129623236, -0.23296743694006294,
-0.22749097287396286, -0.22250607440218118, -0.21796842381344708},
{0.4488664741585195, -0.5020606856373443, -0.629970640394977,
-0.5567667489147181, -0.48239675283181827, -0.4260004933220562,
-0.3802327007331402, -0.34962537056358534, -0.3329196475307538,
-0.31400845236362174, -0.29767782976846024, -0.28394033992504836,
-0.2722574746255256, -0.26221163450811635, -0.2534691784318044,
-0.24579235405259375, -0.23899011644856658, -0.23289605838760286,
-0.22742202820246435, -0.22243933211964717, -0.2179036765414741},
{0.4445568370118155, -0.5035455646544418, -0.630333430619277,
-0.5567602960362683, -0.4822977735986223, -0.42588138408151704,
-0.38009860389894745, -0.3495439376264073, -0.33282091486147714,
-0.31390508476782936, -0.29757891861492625, -0.28384667807844643,
-0.2721686987635273, -0.26212724356484396, -0.2533886685889295,
-0.24571527241658234, -0.23891607512904522, -0.2328247338571129,
-0.22735313637364238, -0.22237264151894154, -0.21783897983229067},
{0.4402544708194312, -0.5050259104030621, -0.6306934179320033,
-0.5567527603519845, -0.48219836285554596, -0.42576210135538806,
-0.3799645765059773, -0.34946282208463375, -0.3327220845062759,
-0.3138017376335541, -0.29748005410880185, -0.28375307070142375,
-0.2720799800885766, -0.26204291037150707, -0.25330821601276443,
-0.24563824712445087, -0.23884208904147336, -0.23275346337790637,
-0.22728429741027567, -0.22230600261765027, -0.21777433369934085},
{0.43595937530706463, -0.5065017345750751, -0.6310506150086195,
-0.5567441483040956, -0.482098523838693, -0.4256426469117003,
-0.3798306195220056, -0.34938201822523923, -0.33262315798835757,
-0.3136984115123876, -0.2973812365235493, -0.2836595179609881,
-0.27199131871934823, -0.26195863501273936, -0.2532278207662493,
-0.24556127822413265, -0.2387681582228327, -0.23268224697862827,
-0.22721551133453333, -0.22223941543282558, -0.21770973815553107},
{0.43167155012989167, -0.5079730487661368, -0.63140503447267,
-0.5567344663003233, -0.4819982597646834, -0.4255230225070248,
-0.3796967338924409, -0.34930152021839583, -0.3325241368204458,
-0.313595106950539, -0.2972824661299148, -0.28356602002239983,
-0.2719027147731, -0.2618744175720285, -0.25314748291135725,
-0.24548436576272945, -0.2386942827093556, -0.23261108468725936,
-0.22714677816799506, -0.2221728799809604, -0.21764519321328524},
{0.42739099487300913, -0.5094398644769036, -0.6317566888959804,
-0.5567237207140768, -0.48189757383076, -0.42540322988650053,
-0.37956292054065455, -0.34922132212607643, -0.33242502250474987,
-0.3134918244888932, -0.297183743195938, -0.28347257704916395,
-0.27181416836564004, -0.26179025813172374, -0.2530672025091077,
-0.24540750978651776, -0.2386204625365451, -0.23253997653112535,
-0.22707809793162992, -0.22210639627799267, -0.21758069888450826},
{0.42311770905188123, -0.5109021931142395, -0.6321055907988431,
-0.5567119178846246, -0.48179646921490504, -0.4252832707839312,
-0.3794291803683685, -0.34914141791050823, -0.3323258165330132,
-0.3133885646630723, -0.29708506798699685, -0.28337918920308613,
-0.2717256796113916, -0.2617061567730408, -0.2529869796195646,
-0.2453307103409599, -0.23854669773919082, -0.23246892253690893,
-0.2270094706458367, -0.22203996433933326, -0.21751625518061934},
{0.41885169211278395, -0.5123600459924214, -0.6324517526502166,
-0.5566990641172778, -0.48169494907597404, -0.4251631469218571,
-0.37929551425598595, -0.34906180144239196, -0.33222652038648914,
-0.3132853280034532, -0.29698644076578995, -0.2832858566442461,
-0.2716372486233456, -0.26162211357605936, -0.25290681430184303,
-0.24525396747067557, -0.23847298835133485, -0.23239792273063004,
-0.22694089633039732, -0.22197358417983587, -0.21745186211253392},
{0.41459294343324793, -0.5138134343343304, -0.6327951868679011,
-0.5566851656835734, -0.4815930165537818, -0.42504286001160385,
-0.3791619230629509, -0.34898246650896536, -0.3321271355359832,
-0.31318211503524135, -0.2968878617923991, -0.28319257953105903,
-0.271548875513134, -0.26153812861976133, -0.25282670661414436,
-0.24517728121951193, -0.23839933440633865, -0.23232697713767764,
-0.22687237500454682, -0.22190725581384418, -0.21738751969069303},
{0.41034146232249796, -0.5152623692726457, -0.633135905818744,
-0.5566702288214572, -0.4814906747692466, -0.4249224117533919,
-0.3790284076280778, -0.34890340682184856, -0.3320276634418533,
-0.31307892627850664, -0.2967893313242853, -0.28309935802025166,
-0.2714605603909825, -0.2614542019820153, -0.25274665661372847,
-0.24510065163048186, -0.23832573593683287, -0.23225608578281218,
-0.22680390668691314, -0.22184097925516416, -0.21732322792505293},
{0.406097248021889, -0.5167068618510298, -0.6334739218188172,
-0.5566542597354582, -0.4813879268244823, -0.4248018038363704,
-0.3788949687698953, -0.34882461602468856, -0.3319281055540138,
-0.3129757622482169, -0.29669084961630865, -0.2830061922668854,
-0.27137230336575063, -0.26137033373957563, -0.25266666435691376,
-0.24502407874580498, -0.23825219297474132, -0.23218524869013518,
-0.22673549139556737, -0.22177475451705414, -0.21725898682506595},
{0.4018602997053457, -0.5181469230253023, -0.6338092471336145,
-0.5566372645968597, -0.48128477580291384, -0.42468103793871315,
-0.3787616072869858, -0.3487460877006096, -0.33182846331198995,
-0.31287262345431543, -0.29659241692077426, -0.28291308242439284,
-0.2712841045449408, -0.26128652396812246, -0.25258672989912934,
-0.24494756260692546, -0.23817870555128984, -0.23211446588315537,
-0.2266671291480031, -0.22170858161228119, -0.217194796399727},
{0.3976306164797938, -0.5195825636646216, -0.6341418939782353,
-0.5566192495438865, -0.4811812247694125, -0.4245601157276815,
-0.37862832395832025, -0.3486678153794615, -0.331728738144905,
-0.31276951040173817, -0.29649403348742615, -0.2828200286445726,
-0.27119596403471435, -0.26120277274225956, -0.25250685329489964,
-0.2448711032544933, -0.23810527369703477, -0.23204373738474365,
-0.22659881996116527, -0.22164246055308404, -0.21713065665756312},
{0.39340819738559407, -0.52101379455264, -0.6344718745175686,
-0.5566002206818782, -0.48107727677037726, -0.42443903885967815,
-0.37849511954355436, -0.34858979254481315, -0.3316289314715062,
-0.3126664235904732, -0.29639569956346934, -0.2827270310776047,
-0.27110788193986335, -0.26111908013548757, -0.2524270345978197,
-0.24479470072836756, -0.23803189744180098, -0.23197306321713446,
-0.22653056385141127, -0.22157639135116214, -0.21706656760660484},
{0.38919304139697125, -0.5224406263886672, -0.6347992008664869,
-0.5565801840834589, -0.48097293483386516, -0.4243178089803439,
-0.3783619947833755, -0.34851201264080844, -0.33152904470020444,
-0.31256336351559355, -0.2962974153936082, -0.28263408987206284,
-0.27101985836387404, -0.26103544622026154, -0.25234727386061195,
-0.2447183550676395, -0.2379585768147618, -0.23190244340197966,
-0.22646236083456045, -0.22151037401775125, -0.21700252925443325},
{0.38498514742244394, -0.5238630697888216, -0.6351238850900256,
-0.5565591457887233, -0.48086820196969776, -0.42419642772461064,
-0.3782289503998025, -0.34843446907876, -0.33142907922907683,
-0.3124603306673194, -0.2961991812200615, -0.2825412051749546,
-0.2709318934089111, -0.26095187106797957, -0.2522675711351065,
-0.24464206631064783, -0.23788531184441256, -0.23183187796030952,
-0.2263942109258955, -0.22144440856355485, -0.2169385416081659},
{0.38078451430524907, -0.5252811352871795, -0.6354459392035772,
-0.5565371118053946, -0.4807630811695594, -0.42407489671676235,
-0.37809598709651515, -0.3483571552435505, -0.3313290364459176,
-0.31235732553105233, -0.2961009972825729, -0.28244837713169296,
-0.2708439871758229, -0.26086835474898307, -0.2521879264722614,
-0.24456583449495023, -0.2378121025585582, -0.23176136691255533,
-0.22632611414012488, -0.22137849499878093, -0.21687460467445946},
{0.3765911408237688, -0.526694833336904, -0.6357653751730655,
-0.5565140881090017, -0.48065757540712645, -0.42395321757052595,
-0.37796310555914703, -0.3482800644997943, -0.33122891772822427,
-0.312254348587404, -0.2960028638184212, -0.2823556058861241,
-0.27075613976415225, -0.2607848973325616, -0.2521083399221345,
-0.24448965965734726, -0.2377389489843418, -0.23169091027853111,
-0.22625807049141866, -0.22131263333311824, -0.2168107184595086},
{0.3724050256919513, -0.5281041743113828, -0.6360822049151391,
-0.5564900806430545, -0.4805516876381687, -0.4238313918891071,
-0.377830306455592, -0.3482031901978604, -0.3311287244432734,
-0.3121514003122789, -0.2959047810624881, -0.2822628915805817,
-0.2706683512721684, -0.26070149888699784, -0.25202881153395723,
-0.24441354183391614, -0.23766585114826244, -0.23162050807749823,
-0.2261900799934326, -0.22124682357581144, -0.21674688296907088},
{0.36822616755973087, -0.529509168505349, -0.6363964402973512,
-0.5564650953192125, -0.4804454208006415, -0.42370942126529004,
-0.3776975904363017, -0.3481265256796052, -0.33102845794811475,
-0.312048481176868, -0.29580674924722017, -0.28217023435581956,
-0.27058062179684467, -0.2606181594795115, -0.2519493413560586,
-0.24433748105994552, -0.2375928090761364, -0.23155016032807327,
-0.22612214265925212, -0.22118106573556853, -0.2166830982084242},
{0.3640545650134498, -0.5309098261359946, -0.6367080931383425,
-0.5564391380174606, -0.48033877781481527, -0.4235873072814802,
-0.37756495813458185, -0.34805006428394114, -0.330928119589609,
-0.3119455916477274, -0.29570876860266576, -0.2820776343510899,
-0.2704929514338906, -0.26053487917633256, -0.2518699294359396,
-0.24426147737002096, -0.23751982279313383, -0.23147986704833734,
-0.22605425850145602, -0.22111535982063185, -0.21661936418243735},
{0.3598902165762719, -0.5323061573440808, -0.6370171752080264,
-0.5564122145862584, -0.4802317615833612, -0.4234650515097792,
-0.3774324101668893, -0.34797379935220224, -0.3308277107044788,
-0.311842732186816, -0.295610839356529, -0.2819850917041339,
-0.2704053402777602, -0.260451658042665, -0.25179057582024433,
-0.24418553079798194, -0.2374468923237976, -0.2314096282557651,
-0.2259864275320989, -0.22104970583876055, -0.21655568089548738},
{0.3557331207086015, -0.5336981721950359, -0.637323698227769,
-0.5563843308427225, -0.4801243749914823, -0.4233426555120554,
-0.3772999471331247, -0.3478977242332847, -0.3307272326192979,
-0.31173990325150663, -0.29551296173412533, -0.2818926065511752,
-0.2703177884216374, -0.26036849614270624, -0.2517112805547791,
-0.24410964137693972, -0.23737401769199484, -0.23133944396724868,
-0.22591864976269607, -0.2209841037972255, -0.2164920483515581},
{0.35158327580848936, -0.535085880680049, -0.6376276738705734,
-0.5563554925727994, -0.4800166209069926, -0.4232201208399923,
-0.37716756961689285, -0.34782183228860764, -0.33062668665057915,
-0.31163710529468114, -0.2954151359584736, -0.2818001790269774,
-0.27023029595748804, -0.2602853935396719, -0.2516320436845175,
-0.24403380913927547, -0.23730119892098084, -0.23126931419913177,
-0.22585092520425212, -0.2209185537028413, -0.21642846655416126},
{0.34744068021205404, -0.5364692927171512, -0.6379291137612559,
-0.5563257055314109, -0.47990850218043735, -0.4230974490351688,
-0.37703527818580806, -0.3477461168968614, -0.33052607410476953,
-0.3115343387647157, -0.29531736225024896, -0.28170780926480676,
-0.27014286297603735, -0.26020235029578503, -0.2515528652535973,
-0.24395803411667627, -0.23722843603337468, -0.23119923896718003,
-0.22578325386727152, -0.22085305556194584, -0.21636493550638336},
{0.34330533219388204, -0.5378484181522944, -0.6382280294766309,
-0.5562949754426441, -0.47980002164519375, -0.422974641629122,
-0.376903073391746, -0.34767057145854513, -0.3304253962782844,
-0.3114316041055516, -0.29521964082783353, -0.28161549739645936,
-0.2700554895667677, -0.2601193664722685, -0.2514737453053351,
-0.24388231634008678, -0.23715572905114835, -0.23112921828658456,
-0.22571563576171788, -0.22078760938038922, -0.2163014552108764},
{0.3391772299674405, -0.5392232667604174, -0.6385244325456911,
-0.5562633079998944, -0.4796911821175613, -0.42285170014340256,
-0.3767709557711499, -0.34759518940037093, -0.3303246544575812,
-0.3113289017567429, -0.2951219719073397, -0.2815232435522829,
-0.2699681758179836, -0.2600364421293948, -0.2513946838822409,
-0.24380665583977248, -0.23708307799567663, -0.23105925217198914,
-0.22564807089707883, -0.22072221516358967, -0.21623802566984818},
{0.3350563716854828, -0.5405938482465003, -0.6388183344497819,
-0.5562307088660335, -0.4795819863968944, -0.4227286260896521,
-0.3766389258452782, -0.3475199641794049, -0.3302238499191448,
-0.3112262321534722, -0.29502435570261665, -0.28143104786117834,
-0.2698809218167717, -0.25995357732646773, -0.2513156810260068,
-0.24373105264528144, -0.23701048288770094, -0.23098934063748555,
-0.22558055928232684, -0.22065687291648284, -0.21617464688510712},
{0.33094275544044954, -0.5419601722466252, -0.639109746622788,
-0.556197183673585, -0.479472437265672, -0.4226054209696387,
-0.3765069841204627, -0.34744488928705863, -0.33012298392958056,
-0.31112359572660164, -0.294926792425268, -0.281338910450622,
-0.2697937276490098, -0.25987077212182125, -0.25123673677752056,
-0.24365550678547437, -0.23693794374735344, -0.23091948369661655,
-0.2255131009259333, -0.2205915826435519, -0.21611131885799745},
{0.3268363792648725, -0.5433222483290098, -0.6393986804513012,
-0.5561627380248663, -0.47936253748961793, -0.42248208627536177,
-0.3763751310883957, -0.34736995825291206, -0.3300220577456017,
-0.3110209929027198, -0.29482928228467375, -0.281246831446654,
-0.2697065933994065, -0.25978802657284505, -0.2511578511768814,
-0.24358001828852255, -0.2368654605941475, -0.23084968136236725,
-0.22544569583586896, -0.22052634434884197, -0.21604804158946245},
{0.3227372411317756, -0.5446800859950411, -0.6396851472748063,
-0.556127377492167, -0.4792522898177911, -0.42235862348906755,
-0.37624336722635343, -0.3472951646483018, -0.32992107261409664,
-0.31091842410415443, -0.2947318254880008, -0.28115481097389916,
-0.2696195191514806, -0.2597053407359795, -0.25107902426338535,
-0.24350458718190326, -0.2367930334470129, -0.23077993364718838,
-0.22537834401963697, -0.22046115803592797, -0.21598481508001693},
{0.31864533895507163, -0.5460336946803065, -0.6399691583858591,
-0.5560911076178969, -0.47914169698268894, -0.4222350340833466,
-0.37611169299749775, -0.3472205020898258, -0.32982002977217806,
-0.3108158897490533, -0.2946344222402507, -0.2810628491555897,
-0.26953250498760406, -0.2596227146667441, -0.2510002560755599,
-0.2434292134924293, -0.23672066232426212, -0.23071024056299438,
-0.22531104548424255, -0.2203960237079542, -0.2159216393297477},
{0.31456067058995796, -0.5473830837556051, -0.6402507250302562,
-0.5560539339147494, -0.4790307617003571, -0.42211131952118436,
-0.3759801088510958, -0.3471459642425508, -0.3297189304471942,
-0.3107133902513719, -0.2945370727442167, -0.2809709461135472,
-0.26944555098896866, -0.25954014841969947, -0.2509215466511276,
-0.2433538972462167, -0.2366483472436061, -0.23064060212115783,
-0.22524380023618418, -0.22033094136761205, -0.21585851433833098},
{0.3104832338333141, -0.5487282625279536, -0.6405298584072112,
-0.5560158618658575, -0.4789194866704737, -0.4219874812560087,
-0.37584861522277413, -0.34707154482319835, -0.32961777585679924,
-0.31061092602096796, -0.2944397772005708, -0.2808791019682343,
-0.2693586572356388, -0.25945764204852534, -0.25084289602707055,
-0.24327863846875328, -0.23657608822219645, -0.23057101833254662,
-0.2251766082815296, -0.22026591101717044, -0.21579544010503732},
{0.30641302642409163, -0.5500692402415859, -0.640806569669539,
-0.555976896924953, -0.47880787457645124, -0.4218635207317695,
-0.3757172125347663, -0.3469972376030168, -0.3295165672089815,
-0.31050849746357445, -0.29434253580783265, -0.2807873168387117,
-0.26927182380651105, -0.2593751956059452, -0.2507643042395795,
-0.24320343718481624, -0.23650388527657196, -0.23050148920746502,
-0.22510946962581557, -0.22020093265844515, -0.2157324166287014},
{0.3023500460437081, -0.551406026078949, -0.6410808699238211,
-0.5559370445165317, -0.47869592808553685, -0.42173943938298736,
-0.37558590119615753, -0.34692303641062117, -0.3294153057020987,
-0.3104061049808876, -0.2942453487623943, -0.2806955908426889,
-0.26918505077938276, -0.2592928091438008, -0.25068577132408343,
-0.24312829341854864, -0.2364317384226901, -0.23043201475574085,
-0.22504238427415513, -0.22013600629282762, -0.21566944390776688},
{0.2982942903164338, -0.552738629161671, -0.6413527702305858,
-0.5558963100359842, -0.47858364984890545, -0.4216152386348171,
-0.37545468160311846, -0.3468489351345844, -0.3293139925249418,
-0.31030374897058277, -0.294148216258567, -0.28060392409652335,
-0.269098338230902, -0.2592104827130148, -0.2506072973152683,
-0.24305320719343898, -0.23635964767594636, -0.2303625949866402,
-0.22497535223116139, -0.2200711319212792, -0.21560652194025026},
{0.29424575680977766, -0.5540670585515451, -0.6416222816044788,
-0.5558546988497809, -0.4784710425017666, -0.42149091990311116,
-0.37532355413916707, -0.3467749277259414, -0.32921262885677316,
-0.3102014298263478, -0.29405113848855113, -0.28051231671520693,
-0.2690116862366108, -0.2591282163636296, -0.25052888224706704,
-0.24297817853232145, -0.23628761305114598, -0.2302932299089533,
-0.22490837350099646, -0.2200063095443348, -0.21554365072379947},
{0.2902044430348804, -0.555391323251481, -0.6418894150144353,
-0.5558122162956031, -0.47835810866344236, -0.4213664845944618,
-0.3751925191753521, -0.34670100820050054, -0.3291112158673586,
-0.31009914793793636, -0.29395411564250445, -0.2804207688124204,
-0.26892509487095545, -0.2590460101448007, -0.2504505261526653,
-0.24290320745739197, -0.23621563456254546, -0.230223919530943,
-0.2248414480873694, -0.2199415391621221, -0.215480830255633},
{0.28617034644688966, -0.5567114322064655, -0.6421541813838566,
-0.555768867682505, -0.4782448509374796, -0.42124193410628563,
-0.3750615770705254, -0.34662717064102977, -0.3290097547170252,
-0.3099969036911838, -0.29385714790849904, -0.2803292805004909,
-0.26883856420727337, -0.25896386410479066, -0.2503722290645096,
-0.24282829399020456, -0.23614371222382086, -0.2301546638603645,
-0.22477457599350725, -0.21987682077432577, -0.21541806053258025},
{0.2821434644453461, -0.5580273943045051, -0.6424165915907802,
-0.5557246582910756, -0.4781312719117376, -0.42111726982686337,
-0.3749307281715503, -0.34655340919931, -0.3289082465567166,
-0.30989469746804726, -0.2937602354726033, -0.2802378518904471,
-0.26875209431782154, -0.258881778291002, -0.25029399101431726,
-0.24275343815168648, -0.23607184604809955, -0.23008546290449933,
-0.22470775722221714, -0.21981215438024038, -0.21535534155109573},
{0.27812379437456447, -0.5593392183775593, -0.6426766564680512,
-0.5556795933735716, -0.4780173741584687, -0.4209924931353962,
-0.3747999728135294, -0.3464797180980336, -0.328806692528007,
-0.3097925296466514, -0.2936633785188443, -0.2801464830919938,
-0.26866568527377255, -0.25879975274996325, -0.25021581203307375,
-0.24267863996211808, -0.23600003604795075, -0.23001631667009417,
-0.22464099177582458, -0.2197475399787318, -0.2152926733072124},
{0.2741113335240093, -0.560646913202467, -0.6429343868034917,
-0.5556336781540762, -0.47790316023444196, -0.4208676054020788,
-0.3746693113200283, -0.34640609163257124, -0.32870509376317536,
-0.3096904006012906, -0.2935665772292392, -0.2800551742135185,
-0.2685793371452203, -0.2587177875273356, -0.2501376921510392,
-0.24260389944117172, -0.23592828223537654, -0.22994722516342359,
-0.22457427965621618, -0.21968297756825167, -0.21523005579661011},
{0.27010607912867457, -0.5619504875018607, -0.6431897933400754,
-0.5555869178286558, -0.4777886326810098, -0.4207426079881367,
-0.3745387440032918, -0.34633252417265176, -0.3286034513852587,
-0.3095883107025308, -0.29346983178384767, -0.2799639253621562,
-0.26849305000121454, -0.25863588266794413, -0.250059631397778,
-0.24252921660790555, -0.23585658462186623, -0.22987818839027593,
-0.22450762086485915, -0.21961846714687833, -0.2151674890145795},
{0.2661080283694573, -0.5632499499450799, -0.6434428867760924,
-0.5555393175654985, -0.47767379402420784, -0.4206175022458989,
-0.37440827116444275, -0.3462590101638614, -0.32850176650806984,
-0.30948626031716425, -0.29337314236072315, -0.2798727366437237,
-0.2684068239097316, -0.25855403821575573, -0.2499816298021153,
-0.24245459148074117, -0.23578494321833043, -0.22980920635593488,
-0.22444101540274708, -0.21955400871225134, -0.21510497295602807},
{0.26211717837353044, -0.5645453091490604, -0.643693677765319,
-0.555490882505076, -0.47755864677485016, -0.4204922895188471,
-0.3742778930937215, -0.3461855441290338, -0.3284000402362721,
-0.3093842498082872, -0.2932765091359745, -0.27978160816276154,
-0.2683206589377071, -0.25847225421389514, -0.24990368739218977,
-0.24238002407751413, -0.2357133580351622, -0.22974027906522687,
-0.22437446327045768, -0.21948960226163558, -0.21504250761550753},
{0.2581335262147146, -0.5658365736792316, -0.6439421769171958,
-0.5554416177602693, -0.477443193428615, -0.42036697114166943,
-0.37414761007067654, -0.34611212066958763, -0.32829827366542247,
-0.3092822795353324, -0.29317993228377826, -0.27969054002255894,
-0.2682345551510373, -0.25839053070465623, -0.24982580419543282,
-0.2423055144154388, -0.23564182908222445, -0.22967140652248919,
-0.22430796446812878, -0.21942524779189568, -0.21498009298718185},
{0.25415706891385037, -0.5671237520503865, -0.6441883947969822,
-0.5553915284165415, -0.4773274364661408, -0.4202415484403301,
-0.3740174223643876, -0.3460387344666457, -0.32819646788199874,
-0.30918034985408466, -0.293083411976371, -0.27959953232512924,
-0.2681485126145893, -0.25830886772951384, -0.24974798023859066,
-0.24223106251113924, -0.23557035636882773, -0.2296025887315816,
-0.2242415189954754, -0.21936094529949357, -0.21491772906488235},
{0.250187803439161, -0.5684068527275615, -0.6444323419259327,
-0.5553406195320627, -0.47721137835311567, -0.42011602273209686,
-0.37388733023363685, -0.3459653802821498, -0.32809462396349387,
-0.30907846111673487, -0.2929869483840911, -0.2795085851712504,
-0.2680625313922075, -0.2582272653291107, -0.2496702155477084,
-0.24215666838063626, -0.23549893990378584, -0.229533825695896,
-0.22417512685178087, -0.21929669478051844, -0.2148554158420558},
{0.24622572670662518, -0.5696858841268877, -0.6446740287814607,
-0.5552888961378684, -0.47709502154036243, -0.4199903953256246,
-0.3737573339271385, -0.34589205295979036, -0.3279927429784193,
-0.30897661367189017, -0.2928905416753702, -0.2794176986604354,
-0.2679766115467208, -0.25814572354327575, -0.2495925101481543,
-0.24208233203937662, -0.23542757969536576, -0.22946511741836612,
-0.22410878803590595, -0.21923249623066143, -0.21479315331181598},
{0.24227083558033452, -0.5709608546164493, -0.6449134657973045,
-0.5552363632379996, -0.47697836846392305, -0.4198646675209896,
-0.3736274336837283, -0.34581874742586927, -0.3278908259863782,
-0.3088748078646141, -0.2927941920167656, -0.279326872890977,
-0.26789075313993704, -0.2580642424110374, -0.24951486406461032,
-0.24200805350218843, -0.23535627575133172, -0.22939646390144175,
-0.22404250254629066, -0.2191683496452403, -0.21473094146690758},
{0.2383231268728621, -0.5722317725171213, -0.6451506633637026,
-0.5551830258096405, -0.476861421545154, -0.41973884060975664,
-0.3734976297325533, -0.3457454586900939, -0.327788874038107,
-0.3087730440364701, -0.2926978995729618, -0.27923610795992526,
-0.2678049562326864, -0.2579828219706081, -0.24943727732108906,
-0.24193383278335556, -0.23528502807891935, -0.2293278651471392,
-0.2239762703809669, -0.21910425501918168, -0.21466878029973113},
{0.23438259734562245, -0.5734986461034017, -0.6453856318275413,
-0.5551288888032768, -0.47674418319083095, -0.4196129158750356,
-0.3733679222932844, -0.34567218184621107, -0.3276868881755477,
-0.3086713225255414, -0.29260166450681635, -0.27914540396312726,
-0.26771922088479894, -0.2579014622594225, -0.24935974994095084,
-0.24185966989655283, -0.23521383668487517, -0.22925932115700046,
-0.22391009153754737, -0.2190402123470463, -0.21460666980236465},
{0.2304492437092291, -0.5747614836042402, -0.6456183814925402,
-0.5550739571428194, -0.4766266557931983, -0.4194868945915021,
-0.3732383115762662, -0.345598912072618, -0.32758486943186343,
-0.30856964366645845, -0.292505486979319, -0.27905476099520987,
-0.2676335471551129, -0.2578201633141127, -0.24928228194686347,
-0.2417855648549037, -0.23514270157542144, -0.22919083193212603,
-0.2238439660132405, -0.218976221623016, -0.21454460996652058},
{0.2265230626238529, -0.576020293203846, -0.6458489226193996,
-0.5550182357257603, -0.4765088417300888, -0.41936077802550775,
-0.37310879778274303, -0.3455256446328282, -0.32748281883151803,
-0.3084680077904378, -0.29240936714966015, -0.2789641791495945,
-0.26754793510149366, -0.2577389251705298, -0.24920487336085617,
-0.24171151767095486, -0.23507162275628657, -0.2291223974731545,
-0.22377789380483398, -0.21891228284089784, -0.21448260078358902},
{0.22260405069958006, -0.5772750830424919, -0.6460772654259709,
-0.554961729423302, -0.4763907433649799, -0.41923456743507015,
-0.3729793811050142, -0.3454523748758884, -0.3273807373903016,
-0.30836641522530783, -0.29231330517520837, -0.2788736585185019,
-0.2674623847808323, -0.2576577478637519, -0.24912752420429377,
-0.24163752835668484, -0.23500060023270575, -0.2290540177802999,
-0.22371187490873518, -0.2188483959941523, -0.2144206422446319},
{0.21869220449676458, -0.5785258612173166, -0.6463034200874294,
-0.5549044430805167, -0.47627236304711484, -0.41910826406997514,
-0.3728500617266432, -0.34537909823673185, -0.32727862611541514,
-0.3082648662955473, -0.292217301211559, -0.27878319919297,
-0.2673768962490751, -0.25757663142807585, -0.24905023449791347,
-0.24156359692352164, -0.23492963400940897, -0.22898569285331688,
-0.22364590932093983, -0.21878456107583577, -0.21435873434036484},
{0.21478752052638048, -0.5797726357831039, -0.646527396736416,
-0.5548463815164553, -0.4761537031115575, -0.4189818691718057,
-0.372720839822615, -0.34530581023638385, -0.32717648600548943,
-0.3081633613222942, -0.2921213554125063, -0.278692801262849,
-0.26729146956119, -0.2574955758970405, -0.24897300426177904,
-0.24148972338232577, -0.2348587240906368, -0.22891742269151508,
-0.2235799970370358, -0.21872077807868115, -0.2142968770611814},
{0.21088999525037558, -0.5810154147530622, -0.6467492054632207,
-0.5547875495243089, -0.47603476587929566, -0.4188553839739864,
-0.3725917155595224, -0.34523250648219855, -0.32707431805065773,
-0.3080619006234173, -0.29202546793009954, -0.27860246481683143,
-0.26720610477121565, -0.2574145813034311, -0.2488958335153466,
-0.24141590774342897, -0.23478787048016167, -0.22884920729381078,
-0.22351413805225284, -0.21865704699504096, -0.21423507039717854},
{0.20699962508201708, -0.5822542060995914, -0.6469688563159339,
-0.554727951871544, -0.4759155536573199, -0.4187288097018633,
-0.37246268909572566, -0.3451591826679089, -0.32697212323259994,
-0.3079604845134919, -0.29192963891462287, -0.27851218994242244,
-0.2671208019322357, -0.25733364767926603, -0.24881872227741608,
-0.24134215001659065, -0.23471707318124957, -0.22878104665863425,
-0.22344833236138578, -0.21859336781691208, -0.21417331433808848},
{0.20311640638624218, -0.5834890177550401, -0.6471863593006053,
-0.5546675933000406, -0.47579606873868885, -0.4186021475727192,
-0.37233376058154916, -0.3450858345737031, -0.32686990252458314,
-0.30785911330386345, -0.2918338685146329, -0.278421976725974,
-0.2670355610964123, -0.257252775055822, -0.2487416705661729,
-0.2412684502110377, -0.23464633219670167, -0.22871294078403182,
-0.2233825799588765, -0.2185297405359493, -0.21411160887335423},
{0.1992403354800033, -0.5847198576124563, -0.6474017243814134,
-0.554606478526201, -0.4756763134026367, -0.41847539879584245,
-0.3722049301594127, -0.3450124580661855, -0.3267676568915394,
-0.3077577873026653, -0.29173815687696425, -0.2783318252526888,
-0.26695038231496965, -0.25717196346363197, -0.24866467839916806,
-0.24119480833546164, -0.23457564752883858, -0.2286448896675956,
-0.2233168808387616, -0.2184661651434421, -0.21404995399207716},
{0.19537140863261188, -0.585946733526329, -0.6476149614808209,
-0.5545446122411407, -0.47555628991466786, -0.41834856457260355,
-0.37207619796406277, -0.3449390490982956, -0.3266653872900963,
-0.30765650681486334, -0.2916425041467397, -0.27824173560663773,
-0.2668652656382321, -0.2570912129325005, -0.24858774579335635,
-0.24112122439802042, -0.23450501917951821, -0.22857689330652864,
-0.22325123499471172, -0.2184026416303404, -0.21398834968310126},
{0.191509622066081, -0.587169653313312, -0.6478260804797311,
-0.5544819991107575, -0.4754360005265823, -0.4182216460964404,
-0.37194756412264596, -0.3448656037091513, -0.32656309466862765,
-0.3075552721422601, -0.29154691046737774, -0.2781517078707325,
-0.26678021111558714, -0.25701052349148923, -0.24851087276504358,
-0.2410476984063305, -0.23443444715011796, -0.22850895169757993,
-0.22318564242001332, -0.21833916998724295, -0.21392679593489583},
{0.1876549719554675, -0.5883886247529507, -0.6480350912176517,
-0.5544186437759194, -0.4753154474766188, -0.41809464455296463,
-0.3718190287549422, -0.3447921180238477, -0.32646077996732914,
-0.3074540835835203, -0.29145137598063103, -0.2780617421267635,
-0.26669521879552743, -0.2569298951689404, -0.24843405932995222,
-0.2409742303674975, -0.23436393144156115, -0.22844106483710275,
-0.2231201031075729, -0.2182757502044103, -0.21386529273565413},
{0.1838074544292112, -0.589603655588395, -0.648242003492855,
-0.554354550852576, -0.4751946329895006, -0.4179675611199993,
-0.3716905919734974, -0.34471858825320123, -0.3263584441182485,
-0.30735294143424385, -0.29135590082657653, -0.2779718384554119,
-0.2666102887256506, -0.2568493279924798, -0.24835730550320545,
-0.2409008202880967, -0.23429347205431317, -0.22837323272105012,
-0.22305461704993634, -0.21821238227176987, -0.21380384007327152},
{0.179967065569471, -0.5908147535270997, -0.6484468270625319,
-0.5542897249318853, -0.4750735592765231, -0.41784039696760533,
-0.3715622538837712, -0.3446450106934359, -0.32625608804533845,
-0.3072518459869246, -0.29126048514363434, -0.2778819969362225,
-0.2665254209526657, -0.2567688219890208, -0.24828061129930262,
-0.2408274681741797, -0.23422306898836898, -0.2283054553449479,
-0.22298918423927025, -0.21814906617889143, -0.21374243793531145},
{0.1761338014124632, -0.59202192624152, -0.6486495716429509,
-0.5542241705803539, -0.4749522285356455, -0.41771315325815783,
-0.3714340145843231, -0.3445713817257975, -0.3261537126645119,
-0.30715079753103924, -0.2911651290685753, -0.27779221764764345,
-0.2664406155223787, -0.2566883771847517, -0.2482039767321641,
-0.2407541740312979, -0.23415272224328043, -0.2282377327039206,
-0.22292380466737372, -0.21808580191502824, -0.2136810863090597},
{0.17230765794879616, -0.5932251813697966, -0.6488502469096137,
-0.5541578923399717, -0.474830642951553, -0.4175858311463716,
-0.37130587416692196, -0.344497697816179, -0.3260513188837216,
-0.3070497963530404, -0.2910698327365624, -0.27770250066703284,
-0.266355872479742, -0.2566079936051904, -0.24812740181512855,
-0.24068093786448946, -0.2340824318181644, -0.22817006479271498,
-0.22285847832570332, -0.21802258946910247, -0.21361978518150188},
{0.16848863112380083, -0.5944245265164331, -0.6490488624974163,
-0.5540908947283322, -0.47470880469575094, -0.4174584317793645,
-0.3711778327167195, -0.3444239555146171, -0.32594890760295503,
-0.3069488427363899, -0.2909745962811123, -0.2776128460706343,
-0.2662711918688139, -0.2565276712751199, -0.24805088656092306,
-0.24060775967826603, -0.2340121977116609, -0.2281024516056269,
-0.22279320520531995, -0.21795942882969052, -0.21355853453930476},
{0.16467671683786334, -0.5956199692529606, -0.6492454280008039,
-0.5540231822387766, -0.47458671592662205, -0.4173309562966986,
-0.371049890312394, -0.3443501514548129, -0.325846479714341,
-0.3068479369615852, -0.29087941983416954, -0.2775232539336203,
-0.2661865737328025, -0.2564474102186621, -0.24797443098171956,
-0.24053463947667342, -0.23394201992199223, -0.22803489313662323,
-0.22272798529696314, -0.21789631998506773, -0.21349733436886809},
{0.16087191094675618, -0.5968115171185976, -0.6494399529739177,
-0.553954759340501, -0.47446437878952885, -0.4172034058304369,
-0.37092204702629905, -0.3442762823535707, -0.3257440361021682,
-0.30674707930619394, -0.2907843035260633, -0.2774337243300764,
-0.26610201811404793, -0.2563672104592384, -0.2478980350890937,
-0.24046157726322914, -0.23387189844693523, -0.22796738937923444,
-0.2226628185909966, -0.2178332629231712, -0.2134361846562749},
{0.15707420926196647, -0.5979991776209023, -0.6496324469307663,
-0.5538856304787092, -0.47434179541688404, -0.4170757815051788,
-0.37079430292460275, -0.34420234501020186, -0.3256415776429547,
-0.3066462700448618, -0.2906892474855508, -0.27734425733301804,
-0.2660175250540522, -0.2562870720195878, -0.24782169889406983,
-0.24038857304097344, -0.23380183328383022, -0.22789994032661226,
-0.222597705077444, -0.21777025763161673, -0.2133750853873405},
{0.15328360755101733, -0.5991829582364081, -0.6498229193453647,
-0.5538158000747273, -0.4742189679282166, -0.4169480844381006,
-0.3706666580674105, -0.34412833630589723, -0.3255391052054962,
-0.30654550944935877, -0.2905942518398348, -0.2772548530143985,
-0.2659330945934505, -0.2562069949217815, -0.24774542240708614,
-0.240315626812438, -0.2337318244295805, -0.22783254597152452,
-0.22253264474596682, -0.21770730409770883, -0.2133140365475583},
{0.1495001015378007, -0.6003628664112614, -0.6500113796518986,
-0.5537452725261311, -0.47409589843026223, -0.416820315739028,
-0.37053911250893506, -0.3440542532030565, -0.32543661965091003,
-0.306444797788591, -0.2904993167145461, -0.277165511445118,
-0.2658487267720618, -0.2561269791872127, -0.24766920563802447,
-0.2402427385797, -0.2336618718806719, -0.22776520630635402,
-0.22246763758589114, -0.2176444023084322, -0.2132530381221569},
{0.14572368690289395, -0.6015389095618382, -0.6501978372448688,
-0.553674052206877, -0.4739725890170239, -0.4166924765104536,
-0.37041166629760525, -0.3439800927445609, -0.32533412183270216,
-0.3063441353286255, -0.2904044422337885, -0.2770762326950123,
-0.26576442162885683, -0.2560470248366156, -0.24759304859621106,
-0.24016990834431892, -0.23359197563317016, -0.22769792132311933,
-0.2224026835862044, -0.2175815522504683, -0.21319209009607828},
{0.14195435928388597, -0.602711095075366, -0.650382301479259,
-0.5536021434674206, -0.4738490417698593, -0.41656456784759843,
-0.3702843194762081, -0.34390585205305724, -0.3252316125968045,
-0.3062435223327233, -0.290309628520131, -0.276987016832875,
-0.26568017920198633, -0.2559671318900528, -0.24751695129041362,
-0.24009713610739203, -0.23352213568269156, -0.227630691013442,
-0.2223377827355409, -0.2175187539101816, -0.2131311924539575},
{0.13819211427569517, -0.6038794303105226, -0.6505647816706701,
-0.5535295506348543, -0.4737252587575662, -0.4164365908384756,
-0.37015707208204357, -0.34383152833015407, -0.3251290927816316,
-0.30614295906135924, -0.2902148756946255, -0.2768978639264727,
-0.2655959995287874, -0.25588730036694673, -0.24744091372885446,
-0.24002442186954032, -0.2334523520244628, -0.22756351536857786,
-0.22227293502219966, -0.21745600727361908, -0.21307034518017834},
{0.13443694743089069, -0.6050439225980414, -0.6507452870954887,
-0.5534562780130151, -0.47360124203642656, -0.41630854656387617,
-0.37002992414700264, -0.3437571188556328, -0.3250265632181435,
-0.3060424457722465, -0.2901201838768134, -0.2768087740425403,
-0.2655118826457665, -0.2558075302860644, -0.2473649359192054,
-0.23995176563091436, -0.23338262465328669, -0.22749639437942576,
-0.22220814043415998, -0.2173933123265364, -0.21300954825881352},
{0.13068885426000454, -0.6062045792412952, -0.6509238269910245,
-0.5533823298826228, -0.47347699365031554, -0.41618043609748856,
-0.3699028756977387, -0.34368262098660585, -0.3249240247298821,
-0.30594198272036305, -0.29002555318475826, -0.27671974724677934,
-0.2654278285886406, -0.2557278216655201, -0.24728901786859991,
-0.2398791673911947, -0.2333129535635484, -0.2274293280364795,
-0.2221433989590385, -0.2173306690543782, -0.21294880167366656},
{0.12694783023185444, -0.6073614075168734, -0.6511004105556699,
-0.5533077105013979, -0.4733525156307409, -0.41605226050588784,
-0.3697759267557784, -0.3436080321566351, -0.32482147813303,
-0.305841570157964, -0.289930983735028, -0.27663078360388926,
-0.265343837392319, -0.2556481745228043, -0.24721315958363893,
-0.23980662714959766, -0.2332433387492374, -0.22736231632992537,
-0.22207871058416212, -0.2172680774423086, -0.2128881054082743},
{0.12321387077385253, -0.6085144146751632, -0.6512750469490531,
-0.5532324241041804, -0.4732278099969415, -0.4159240208486006,
-0.36964907733763586, -0.3435333498748758, -0.3247189242364641,
-0.30574120833462803, -0.28983647564272674, -0.27654188317754774,
-0.2652599090909211, -0.25556858887475525, -0.2471373610703784,
-0.23973414490487843, -0.233173780203921, -0.22729535924953626,
-0.2220140752965028, -0.2172055374751597, -0.21282745944588155},
{0.11948697127231574, -0.6096636079409082, -0.6514477452921784,
-0.5531564749030609, -0.47310287875596013, -0.4157957181781633,
-0.36952232745494923, -0.34345857172512456, -0.3246163638417896,
-0.3056408974972523, -0.2897420290214953, -0.2764530460304283,
-0.26517604371775827, -0.25548906473758237, -0.24706162233435836,
-0.23966172065533023, -0.23310427792077693, -0.2272284567847475,
-0.2219494930827056, -0.2171430491374909, -0.21276686376945722},
{0.11576712707278664, -0.6108089945137595, -0.651618514667583,
-0.5530798670874835, -0.47297772390269793, -0.4156673535401272,
-0.3693956771145949, -0.34338369536494207, -0.32451379774343503,
-0.30554063789011254, -0.28964764398354415, -0.27636427222422766,
-0.2650922413053953, -0.25540960212689373, -0.2469859433805911,
-0.23958935439881024, -0.23303483189258883, -0.22716160892465564,
-0.2218849639291214, -0.21708061241357343, -0.21270631836171647},
{0.11205433348033023, -0.6119505815688326, -0.651787364119485,
-0.5530026048243922, -0.4728523474200044, -0.4155389279731569,
-0.3692691263187866, -0.3433087185246406, -0.3244112267286591,
-0.305440429754845, -0.28955332063962236, -0.2762755618196379,
-0.26500850188559144, -0.25533020105765114, -0.24691032421356135,
-0.23951704613270866, -0.2329654421117362, -0.2270948156579689,
-0.22182048782174807, -0.21701822728736922, -0.21264582320508796},
{0.10834858575985336, -0.6130883762572381, -0.6519543026539294,
-0.5529246922583334, -0.47272675127873254, -0.41541044250900916,
-0.3691426750652185, -0.34323363900635695, -0.32430865157761396,
-0.30534027333049973, -0.28945905909907466, -0.2761869148763706,
-0.2649248254893475, -0.2552508615442137, -0.24683476483724817,
-0.23944479585397876, -0.23289610857020943, -0.22702807697307786,
-0.22175606474629714, -0.21695589374257154, -0.21258537828173657},
{0.10464987913640252, -0.6142223857066157, -0.6521193392389409,
-0.5528461335115672, -0.47260093743781684, -0.41528189817262945,
-0.36901632334714596, -0.3431584546830539, -0.324206073063404,
-0.3052401688535413, -0.2893648594698277, -0.27609833145315954,
-0.2648412121468947, -0.2551715836003136, -0.24675926525510905,
-0.23937260355912574, -0.2328268312596029, -0.2269613928580039,
-0.2216916946881432, -0.21689361176257385, -0.21252498357355007},
{0.100958208795473, -0.6153526170216584, -0.6522824828046663,
-0.5527669326842215, -0.47247490784437285, -0.4151532959821824,
-0.368890071153552, -0.34308316349754475, -0.32410349195214017,
-0.3051401165579003, -0.2892707218584072, -0.2760098116077818,
-0.2647576618877202, -0.25509236723910816, -0.24668382547010753,
-0.2393004692442143, -0.23275761017114016, -0.22689476330044198,
-0.22162737763236756, -0.21683138133049196, -0.2124646390621804},
{0.09727356988331211, -0.6164790772846234, -0.6524437422435247,
-0.5526870938543558, -0.4723486644337013, -0.41502463694905445,
-0.36876391846917683, -0.34300776346145856, -0.32400090900297385,
-0.30504011667495934, -0.289176646369945, -0.27592135539704077,
-0.2646741747405411, -0.25501321247312275, -0.2466084454846888,
-0.23922839290488496, -0.23268844529565266, -0.22682818828773033,
-0.22156311356373287, -0.2167692024291632, -0.21240434472898598},
{0.09359595750721983, -0.6176017735558409, -0.6526031264103489,
-0.5526066210781322, -0.4722222091294221, -0.41489592207795545,
-0.3686378652746878, -0.3429322526542501, -0.32389832496816967,
-0.3049401694336022, -0.28908263310819204, -0.2758329628767833,
-0.2645907507333335, -0.25493411931430593, -0.24653312530079724,
-0.2391563745363312, -0.23261933662359136, -0.22676166780687082,
-0.2214989024666899, -0.21670707504114242, -0.21234410055508074},
{0.08992536673584942, -0.6187207128742136, -0.6527606441225443,
-0.5525255183899058, -0.47209554384351615, -0.41476715236693673,
-0.36851191154676755, -0.34285662922218363, -0.3237957405931326,
-0.3048402750602267, -0.2889886821755445, -0.2757446341019224,
-0.26450738989334743, -0.254855087774003, -0.24645786491989718,
-0.23908441413333426, -0.23255028414503415, -0.22669520184454595,
-0.22143474432540977, -0.2166449991487126, -0.21228390652131598},
{0.08626179259950736, -0.6198359022577087, -0.6529163041602208,
-0.5524437898023308, -0.4719686704763779, -0.41463832880740104,
-0.3683860572582006, -0.34278089137728524, -0.32369315661648,
-0.3047404337787619, -0.2888947936730274, -0.27565636912640584,
-0.2644240922470823, -0.25477611786297344, -0.2463826643429476,
-0.23901251169022922, -0.23248128784968838, -0.22662879038707995,
-0.22137063912373053, -0.2165829747338867, -0.2122237626082849},
{0.08260523009044952, -0.6209473487038344, -0.6530701152663396,
-0.552361439306498, -0.47184159091693767, -0.41450945238419956,
-0.36826030237800234, -0.3427050373963243, -0.3235905737700732,
-0.30464064581069394, -0.28880096770030683, -0.27556816800326445,
-0.2643408578203139, -0.25469720959140313, -0.24630752357041896,
-0.23894066720094964, -0.23241234772688024, -0.2265624334204846,
-0.2213065868452161, -0.21652100177839065, -0.21216366879633586},
{0.078955674163178, -0.6220550591901263, -0.653222086146873,
-0.552278470872041, -0.47171430704266226, -0.41438052407562853,
-0.36813464687150377, -0.34262906561980144, -0.3234879927790888,
-0.3045409113750971, -0.2887072043557509, -0.2754800307846042,
-0.26425768663810423, -0.25461836296889456, -0.24623244260230598,
-0.23886888065900347, -0.23234346376558745, -0.2264961309304381,
-0.22124258747312914, -0.2164590802637069, -0.21210362506555952},
{0.07531311973473559, -0.6231590406746053, -0.6533722254709248,
-0.5521948884472461, -0.471586820719673, -0.41425154485349464,
-0.36800909070043597, -0.3425529744508916, -0.3233854143620448,
-0.3044412306886287, -0.28861350373635575, -0.27539195752158546,
-0.26417457872477806, -0.2545395780044689, -0.24615742143811042,
-0.23879715205747346, -0.23227463595439826, -0.22642988290228774,
-0.22117864099042442, -0.21639721017101782, -0.21204363139578739},
{0.07167756168499602, -0.6242593000962426, -0.6535205418708955,
-0.5521106959591765, -0.471459133802789, -0.4141225156831476,
-0.3678836338230611, -0.34247676235442226, -0.32328283923086826,
-0.30434160396558385, -0.2885198659378373, -0.275303948264478,
-0.2640915341039727, -0.25446085470659474, -0.2460824600768735,
-0.2387254813890498, -0.2322058642815624, -0.22636368932108075,
-0.2211147473797877, -0.21633539148127062, -0.21198368776662202},
{0.06804899485696225, -0.6253558443754125, -0.6536670439426117,
-0.5520258973137644, -0.47133124813559696, -0.4139934375235135,
-0.3677582761942252, -0.3424004278558572, -0.32318026809093714,
-0.30424203141788064, -0.28842629105459133, -0.2752160030626152,
-0.264008552798607, -0.25438219308315557, -0.24600755851714318,
-0.23865386864600066, -0.23213714873495436, -0.226297550171511,
-0.2210509066235984, -0.21627362417513377, -0.21192379415740936},
{0.064427414057049, -0.6264486804143339, -0.6538117402454692,
-0.5519404963959519, -0.4712031655505311, -0.41386431132715823,
-0.36763301776550084, -0.34232396954026, -0.32307770164111904,
-0.30414251325510633, -0.28833277917971134, -0.27512812196445535,
-0.2639256348308975, -0.2543035931414963, -0.24593271675701972,
-0.2385823138201898, -0.23206848930210416, -0.2262314654379819,
-0.2209871187039638, -0.2162119082330159, -0.21186395054725915},
{0.060812814055374906, -0.6275378150975139, -0.6539546393025933,
-0.5518544970697781, -0.47107488786892304, -0.41373513804028594,
-0.36750785848522227, -0.34224738605128174, -0.3229751405738607,
-0.3040430496845361, -0.28823933040502225, -0.2750403050175471,
-0.2638427802223773, -0.2542250548883902, -0.24585793479412268,
-0.238510816903087, -0.23199988597018661, -0.22616543510457318,
-0.22092338360270009, -0.21615024363506605, -0.21180415691503454},
{0.05720518958605096, -0.6286232552921744, -0.654095749600956,
-0.5517679031785091, -0.4709464169010764, -0.41360591860283225,
-0.36738279829861986, -0.34217067609014706, -0.3228725855751822,
-0.3039436409111352, -0.28814594482106426, -0.274952552268549,
-0.2637599889938776, -0.2541465783300692, -0.24578321262560893,
-0.23843937788576192, -0.23193133872602195, -0.22609945915505003,
-0.22085970130132854, -0.21608863036118325, -0.21174441323936494},
{0.05360453534746379, -0.6297050078486748, -0.6542350795915273,
-0.5516807185447317, -0.47081775444631707, -0.4134766539484478,
-0.36725783714788524, -0.34209383841463814, -0.3227700373247641,
-0.303844287137595, -0.2880526225171133, -0.27486486376323943,
-0.263677261165555, -0.2540681634722039, -0.24570855024818816,
-0.2383679967588775, -0.23186284755608305, -0.22603353757286965,
-0.22079607178112232, -0.21602706839100838, -0.2116847194986467},
{0.05001084600255995, -0.6307830796009307, -0.6543726376894254,
-0.5515929469704748, -0.4706889022930848, -0.4133473450045807,
-0.36713297497225406, -0.3420168718381153, -0.32266749649597615,
-0.3037449885643457, -0.28795936358119506, -0.2747772395465033,
-0.2635945967568898, -0.253989810319943, -0.24563394765811009,
-0.23829667351272427, -0.2317944124465109, -0.22596767034118997,
-0.22073249502305098, -0.21596555770392611, -0.21162507567103864},
{0.04642411617913181, -0.6318574773668189, -0.65450843227404,
-0.5515045922373255, -0.4705598622189865, -0.4132179926925102,
-0.36700821170812636, -0.34193977522849484, -0.322564963755942,
-0.30364574538958494, -0.28786616810008414, -0.2746896796623837,
-0.26351199578668744, -0.25391151887788155, -0.24555940485116556,
-0.2382254081371813, -0.23172603338309333, -0.22590185744285426,
-0.22066897100782182, -0.2159040982790782, -0.2115654817344742},
{0.04284434047009618, -0.6329282079485847, -0.654642471689189,
-0.5514156581065021, -0.47043063599083695, -0.4130885979273374,
-0.36688354728909855, -0.34186254750730183, -0.32246243976556854,
-0.30354655780927625, -0.28777303615932426, -0.2746021841540377,
-0.2634294582730773, -0.2538332891500814, -0.2454849218227067,
-0.23815420062175896, -0.23165771035126922, -0.225836098860407,
-0.22060549971586604, -0.21584269009534937, -0.21150593766664783},
{0.03927151343377444, -0.6339952781332316, -0.6547747642432421,
-0.5513261483190195, -0.4703012253647637, -0.412959161618097,
-0.3667589816460658, -0.34178518764867455, -0.3223599251796142,
-0.30344742601719377, -0.28767996784322003, -0.274514753063766,
-0.2633469842335398, -0.25375512114007864, -0.2454104985676368,
-0.23808305095557863, -0.2315894433361687, -0.22577039457609144,
-0.22054208112733764, -0.2157813331313892, -0.211446443445042},
{0.03570562959417285, -0.6350586946929088, -0.6549053182092726,
-0.5512360665957428, -0.47017163208622725, -0.4128296846677341,
-0.3666345147073218, -0.34170769467838924, -0.322257420646715,
-0.3033483502049238, -0.2875869632348804, -0.2744273864330264,
-0.26326457368488965, -0.25367701485088784, -0.2453361350804244,
-0.23801195912738707, -0.23152123232257388, -0.22570474457186693,
-0.22047871522214685, -0.21572002736559734, -0.2113869990469092},
{0.03214668344125984, -0.6361184643852986, -0.655034141825189,
-0.551145416637528, -0.47004185789012154, -0.4127001679731776,
-0.36651014639861557, -0.34163006767295245, -0.32215492680944835,
-0.30324933056189485, -0.28749402241618893, -0.274340084302422,
-0.2631822266433048, -0.2535989702849891, -0.2452618313550981,
-0.23794092512554632, -0.2314530772949311, -0.2256391488293803,
-0.22041540197991133, -0.21565877277612877, -0.2113276044492815},
{0.028594669431238354, -0.6371745939539831, -0.6551612432938766,
-0.5510542021253173, -0.469911904500824, -0.41257061242537085,
-0.366385876643226, -0.3415523057585901, -0.3220524443043678,
-0.30315036727537714, -0.2874011454678273, -0.2742528467117128,
-0.26309994312428686, -0.2535209874443504, -0.2451875873852396,
-0.2378699489380467, -0.2313849782373665, -0.2255736073299916,
-0.22035214137999826, -0.21559756934090463, -0.211268259628965},
{0.02504958198682594, -0.6382270901288118, -0.6552866307833318,
-0.5509624267202335, -0.4697817736322397, -0.4124410189092886,
-0.3662617053620577, -0.3414744081103963, -0.321949973762068,
-0.30305146053053544, -0.2873083324692892, -0.27416567369984085,
-0.26301772314273514, -0.253443066330438, -0.24511340316403318,
-0.23779903055252044, -0.23131693513368634, -0.22550812005478266,
-0.22028893340151673, -0.21553641703762316, -0.2112089645625727},
{0.02151141549752117, -0.6392759596262713, -0.6554103124268016,
-0.5508700940637193, -0.46965146698788995, -0.4123113883040064,
-0.3661376324736788, -0.34139637395134825, -0.3218475158072106,
-0.30295261051040756, -0.28721558349888643, -0.27407856530490315,
-0.2629355667128828, -0.25336520694419123, -0.24503927868419767,
-0.23772816995621032, -0.23124894796736864, -0.22544268698452466,
-0.2202257780233069, -0.21547531584371138, -0.2111497192264661},
{0.017980164319881947, -0.6403212091498275, -0.6555322963229175,
-0.5507772077776077, -0.4695209862609529, -0.4121817214827127,
-0.36601365789444074, -0.34131820255142215, -0.3217450710585823,
-0.3028538173959515, -0.2871228986337411, -0.273991521564188,
-0.2628534738483521, -0.2532874092860594, -0.24496521393805767,
-0.23765736713601776, -0.23118101672156655, -0.22537730809973758,
-0.2201626752239657, -0.21541426573639194, -0.21109052359682862},
{0.014455822777793143, -0.6413628453902789, -0.6556525905358355,
-0.5506837714642272, -0.46939033313433026, -0.41205201931274404,
-0.3658897815384982, -0.3412398932266905, -0.32164264012912813,
-0.3027550813660438, -0.28703027794980623, -0.2739045425141503,
-0.26277144456212526, -0.25320967335597616, -0.24489120891749847,
-0.23758662207846526, -0.23111314137912484, -0.2253119833806266,
-0.2200996249818224, -0.21535326669265267, -0.21103137764961216},
{0.010938385162731379, -0.642400875026097, -0.6557712030953691,
-0.5505897887065414, -0.469259509280733, -0.41192228265566366,
-0.365766003317939, -0.3411614453384436, -0.3215402236260224,
-0.3026564025975187, -0.2869377215218678, -0.2738176281904581,
-0.2626894788665709, -0.2531319991533925, -0.24481726361400769,
-0.23751593476972743, -0.23104532192257624, -0.22524671280713648,
-0.22003662727496262, -0.2152923186892458, -0.21097228136057009},
{0.007427845734039568, -0.6434353047237653, -0.6558881419971279,
-0.5504952630682073, -0.4691285163626866, -0.411792512367222,
-0.3656423231427868, -0.34108285829231993, -0.32143782215069105,
-0.3025577812651658, -0.2868452294235463, -0.2737307786279548,
-0.26260757677344154, -0.2530543866772536, -0.24474337801863794,
-0.23744530519561866, -0.23097755833412995, -0.22518149635892615,
-0.2199736820812176, -0.21523142170269705, -0.21091323470524784},
{0.003924198719188171, -0.6444661411380967, -0.656003415202647,
-0.5504001980937101, -0.4689973560326543, -0.4116627092974655,
-0.36551874092111014, -0.3410041315374257, -0.3213354362988591,
-0.30245921754175586, -0.28675280172730794, -0.2736439938606956,
-0.26252573829387454, -0.2529768359260209, -0.24466955212204483,
-0.23737473334160014, -0.230909850595695, -0.22511633401537626,
-0.21991078937816902, -0.21517057570930284, -0.21085423765898303},
{0.000427438314042794, -0.6454933909125627, -0.6561170306395253,
-0.5503045973084537, -0.4688660299330466, -0.41153287429073504,
-0.36539525655908367, -0.34092526456549377, -0.3212330666606149,
-0.3023607115980581, -0.2866604385044624, -0.2735572739219455,
-0.26244396343840926, -0.2528993468976752, -0.24459578591448342,
-0.23730421919278608, -0.2308421986888733, -0.22505122575560688,
-0.21984794914316022, -0.21510978068515796, -0.21079529019691767},
{-0.0030624413168744147, -0.646517060679611, -0.6562289962015608,
-0.5502084642188504, -0.46873453969629764, -0.4114030081857046,
-0.3652718699610331, -0.3408462569100612, -0.321130713820431,
-0.30226226360286235, -0.28656813982517776, -0.2734706188441739,
-0.26236225221697534, -0.2528219195897051, -0.24452207938578202,
-0.2372337627339482, -0.23077460259495877, -0.22498617155845735,
-0.2197851613532874, -0.21504903660609814, -0.2107363922939852},
{-0.006545446040120043, -0.6475371570609689, -0.6563393197488736,
-0.5501118023124465, -0.468602886944948, -0.4112731118154247,
-0.36514858102952763, -0.34076710814560374, -0.3210283783572137,
-0.3021638737229757, -0.2864759057584545, -0.2733840286590708,
-0.2622806046389157, -0.25274455399913204, -0.24444843252539653,
-0.23716336394950324, -0.23070706229494894, -0.22492117140250334,
-0.21972242598540354, -0.2149883434477745, -0.2106775439249364},
{-0.010021581753071981, -0.6485536866679507, -0.6564480091080585,
-0.5500146150579999, -0.46847107329166343, -0.4111431860073458,
-0.36502538966540815, -0.3406878178867676, -0.3209260608443655,
-0.30206554212327563, -0.2863837363721824, -0.27329750339755987,
-0.2621990207129713, -0.2526672501224946, -0.24437484532236925,
-0.23709302282353478, -0.23063957776954125, -0.22485622526604498,
-0.21965974301612085, -0.21492770118559779, -0.21061874506430342},
{-0.013490854383669426, -0.649566656101755, -0.6565550720722949,
-0.5499169059055977, -0.46833910033930737, -0.4110132315833679,
-0.3649022957678585, -0.34060838578753005, -0.32082376184980493,
-0.30196726896667747, -0.2862916317330734, -0.27321104308978095,
-0.2621175004472996, -0.25259000795586395, -0.2443013177653373,
-0.23702273933978457, -0.2305721489991236, -0.22479133312712496,
-0.219597112421814, -0.21486710979475918, -0.2105599956864337},
{-0.016953269890149572, -0.650576071953752, -0.6566605164015,
-0.549818678286743, -0.46820696968101516, -0.41088324935986625,
-0.3647792992345048, -0.34052881154043446, -0.3207214819360351,
-0.30186905441420797, -0.2861995919067469, -0.2731246477651252,
-0.2620360438494877, -0.2525128274948644, -0.24422784984258403,
-0.2369525134816686, -0.23050477596381894, -0.22472649496353916,
-0.21953453417863028, -0.21480656925027128, -0.21050129576549761},
{-0.020408834260798897, -0.6515819408057768, -0.6567643498224428,
-0.5497199356144566, -0.46807468290022486, -0.4107532401477235,
-0.36465639996139243, -0.3404490948757888, -0.3206192216601529,
-0.30177089862497153, -0.28610761695765274, -0.2730383174522066,
-0.2619546509265229, -0.25243570873462245, -0.24415444154196397,
-0.23688234523225554, -0.23043745864343212, -0.22466171075279484,
-0.21947200826247104, -0.21474607952687794, -0.2104426452754409},
{-0.023857553513689025, -0.6525842692304, -0.6568665800288833,
-0.5496206812833851, -0.4679422415707749, -0.4106232047523798,
-0.3645335978431307, -0.34036923556089893, -0.32051698157392183,
-0.3016728017561895, -0.2860157069491359, -0.2729520521789029,
-0.2618733216848455, -0.2523586516698356, -0.2440810928509798,
-0.23681223457429446, -0.23037019701748274, -0.22459698047216767,
-0.21940953464902252, -0.2146856405991548, -0.21038404419005208},
{-0.027299433696433714, -0.6535830637912106, -0.6569672146817134,
-0.5495209186698753, -0.46780964725689667, -0.41049314397382597,
-0.36441089277287636, -0.34028923339933137, -0.3204147622238166,
-0.30157476396322525, -0.28592386194339897, -0.27286585197233404,
-0.26179205613030887, -0.25228165629472815, -0.24400780375673203,
-0.23674218149020038, -0.23030299106521657, -0.22453230409866232,
-0.21934711331372292, -0.21462525244145922, -0.21032549248290566},
{-0.030734480885923635, -0.6545783310430761, -0.6570662614090621,
-0.549420651132107, -0.4676769015133378, -0.41036305860669825,
-0.3642882846424229, -0.340209088230146, -0.32031256415103465,
-0.30147678539958067, -0.28583208200153476, -0.2727797168588838,
-0.26171085426820195, -0.25220472260308613, -0.24393457424595216,
-0.2366721859620789, -0.23023584076558742, -0.22446768160903557,
-0.219284744231801, -0.21456491502792457, -0.21026699012740627},
{-0.034162701188082734, -0.6555700775324089, -0.6571637278064459,
-0.5493198820101519, -0.46754400588537004, -0.4102329494402539,
-0.36416577334226274, -0.34012879992716427, -0.32021038789157436,
-0.3013788662169046, -0.28574036718350115, -0.27269364686419006,
-0.2616297161032736, -0.25212785058824305, -0.24386140430499245,
-0.23660224797169238, -0.23016874609726518, -0.22440311297979737,
-0.2192224273782454, -0.21450462833250467, -0.21020853709677104},
{-0.03758410073761767, -0.6565583097974274, -0.6572596214368951,
-0.5492186146260869, -0.4674109619088585, -0.41010281725843334,
-0.36404335876160143, -0.3400483683982517, -0.3201082339762505,
-0.3012810065650561, -0.2856487175481625, -0.27260764201315835,
-0.2615486416396981, -0.2520510402430842, -0.24378829391983511,
-0.23653236750050252, -0.23010170703864619, -0.22433859818721225,
-0.21916016272783756, -0.21444439232892878, -0.2101501333640227},
{-0.04099868569776312, -0.6575430343683957, -0.6573539498310762,
-0.5491168522841154, -0.4672777711103624, -0.40997266283991773,
-0.3639210407884646, -0.339967793584593, -0.32000610293075143,
-0.30118320659206316, -0.2855571331532598, -0.2725217023299854,
-0.2614676308811128, -0.25197429156006085, -0.2437152430760913,
-0.23646254452963275, -0.23003472356783744, -0.22427413720728015,
-0.21909795025511808, -0.21438420699073527, -0.21009177890201253},
{-0.044406462260042426, -0.6585242577678854, -0.6574467204874272,
-0.5490145982705981, -0.46714443500709324, -0.40984248695807846,
-0.3637988193096831, -0.33988707545999386, -0.31990399527567237,
-0.3010854664441625, -0.28546561405542836, -0.27243582783811926,
-0.26138668383059893, -0.2518976045311848, -0.24364225175901438,
-0.23639277903991907, -0.2299677956626876, -0.22420973001578073,
-0.21903578993442055, -0.21432407229125355, -0.2100334736834071},
{-0.047807436644014795, -0.6595019865110058, -0.6575379408722792,
-0.548911855854217, -0.46701095510706836, -0.4097122903811174,
-0.3636766942109817, -0.33980621403018996, -0.3198019115265689,
-0.30098778626582456, -0.28537416031020824, -0.2723500185603148,
-0.2613058004907025, -0.2518209791480372, -0.24356931995347625,
-0.2363230710118717, -0.22990092330076334, -0.22414537658822792,
-0.21897368173985537, -0.21426398820362313, -0.20997521768068897},
{-0.05120161509703186, -0.6604762271056379, -0.6576276184199886,
-0.5488086282860247, -0.46687733290909605, -0.4095820738720107,
-0.36355466537703174, -0.33972520933215966, -0.31969985219397645,
-0.3008901661997493, -0.2852827719720472, -0.2722642745186061,
-0.2612249808634328, -0.25174441540176884, -0.2434964476440183,
-0.23625342042568798, -0.22983410645935737, -0.2240810768999203,
-0.21891162564532493, -0.21420395470079495, -0.20991701086617212},
{-0.05458900389399565, -0.6614469860526733, -0.6577157605330657,
-0.5487049187995579, -0.46674356990286403, -0.40945183818858766,
-0.3634327326914623, -0.3396440614334413, -0.3195978177834791,
-0.3007926063869024, -0.28519144909429883, -0.2721785957343167,
-0.2611442249502656, -0.2516679132830965, -0.243423634814791,
-0.23618382726127474, -0.2297673451155061, -0.22401683092590108,
-0.21884962162451135, -0.21414397175550068, -0.20985885321198902},
{-0.05796960933711484, -0.6624142698462325, -0.6578023745822934,
-0.5486007306109256, -0.4666096675690026, -0.4093215840835661,
-0.36331089603695654, -0.33956277043148353, -0.31949580879571593,
-0.3006951069664954, -0.2851001917292389, -0.2720929822280798,
-0.2610635327521462, -0.2515914727823293, -0.24335088144961328,
-0.23611429149821883, -0.2297006392459691, -0.22395263864097503,
-0.21878766965088736, -0.21408403934030665, -0.2098007446900926},
{-0.061343437755660785, -0.6633780849738873, -0.6578874679068637,
-0.5484960669188892, -0.4664756273790903, -0.4091913123045437,
-0.36318915529524076, -0.3394813364529877, -0.31939382572645925,
-0.3005976680760544, -0.2850089999280701, -0.272007434019826,
-0.2609829042695003, -0.25151509388934357, -0.243278187531952,
-0.23604481311581832, -0.2296339888272501, -0.22388850001973304,
-0.21872576969771715, -0.21402415742757394, -0.20974268527227008},
{-0.06471049550573543, -0.6643384379168753, -0.6579710478144979,
-0.5483909309049912, -0.46634145079576195, -0.4090610235940758,
-0.36306751034716034, -0.33939975965325503, -0.3192918690666229,
-0.3005002898513701, -0.28491787374092525, -0.27192195112879597,
-0.2609023395022318, -0.2514387765936084, -0.24320555304491048,
-0.23597539209306156, -0.22956739383558708, -0.22382441503651046,
-0.21866392173804705, -0.21396432598947265, -0.20968467493012077},
{-0.06807078897002128, -0.6652953351503059, -0.6580531215815739,
-0.5482853257336001, -0.4662071392727191, -0.40893071868966774,
-0.36294596107272636, -0.3393180402155558, -0.3191899393023193,
-0.3004029724265584, -0.2848268132168743, -0.271836533573546,
-0.26082183844972284, -0.25136252088418015, -0.24313297797126848,
-0.23590602840864844, -0.22950085424696087, -0.22376038366542977,
-0.21860212574473029, -0.2139045449979934, -0.20962671363508656},
{-0.0714243245575521, -0.6662487831433742, -0.6581336964532458,
-0.5481792545520234, -0.466072694254796, -0.4088003983238356,
-0.36282450735112526, -0.33923617835049713, -0.3190880369148915,
-0.30030571593406646, -0.28473581840394346, -0.271751181371942,
-0.2607414011108546, -0.2512863267496954, -0.2430604622934446,
-0.23583672204099698, -0.22943437003708775, -0.22369640588038056,
-0.2185403816904021, -0.21384481442493414, -0.20956880135843436},
{-0.07477110870347711, -0.6671987883595538, -0.6582127796435795,
-0.5480727204906235, -0.46593811717805467, -0.40867006322414223,
-0.36270314906081924, -0.3391541742954257, -0.3189861623809622,
-0.3002085205046815, -0.28464488934912424, -0.2716658945411994,
-0.2606610274839995, -0.2512101941784064, -0.24298800599353726,
-0.2357674729682089, -0.22936794118145265, -0.22363248165502686,
-0.21847868954752125, -0.21378513424192164, -0.20951093807127108},
{-0.07811114786881906, -0.6681453572567939, -0.6582903783356671,
-0.547965726662844, -0.46580340946974697, -0.40853971411316986,
-0.36258188607950204, -0.3390720283137806, -0.3188843161724504,
-0.3001113862675264, -0.2845540260983517, -0.2715806730978315,
-0.26058071756700935, -0.25113412315813527, -0.24291560905327825,
-0.23569828116810917, -0.22930156765525816, -0.22356861096280115,
-0.21841704928830238, -0.21372550442037352, -0.2094531237445096},
{-0.08144444854024599, -0.6690884962877071, -0.6583664996817528,
-0.5478582761653742, -0.46566857254844546, -0.40840935170862913,
-0.3624607182842058, -0.3389897406945317, -0.31878249875663467,
-0.3000143133501042, -0.28446322869655716, -0.2714955170577066,
-0.26050047135725823, -0.2510581136763246, -0.24284327145409296,
-0.23562914661824821, -0.22923524943347393, -0.2235047937769229,
-0.218355460884798, -0.21366592493155834, -0.20939535834891623},
{-0.08477101722983939, -0.6700282118997606, -0.6584411508033609,
-0.5477503720781843, -0.4655336078240573, -0.4082789767233368,
-0.3623396455513301, -0.33890731175157085, -0.3186807105961954,
-0.2999173018783063, -0.28437249718764857, -0.2714104264360253,
-0.26042028885161456, -0.25098216572001947, -0.24277099317706827,
-0.23556006929587514, -0.22916898649082026, -0.2234410300703923,
-0.21829392430884428, -0.2136063957465462, -0.20933764185509238},
{-0.08809086047485745, -0.6709645105354565, -0.6585143387914132,
-0.547642017464634, -0.4653985166978796, -0.4081485898652661,
-0.3622186677566291, -0.33882474182312444, -0.3185789521492124,
-0.29982035197640755, -0.2842818316145435, -0.2713254012473294,
-0.26034017004645493, -0.2509062792758645, -0.2426987742029586,
-0.235491049177972, -0.22910277880177177, -0.22337731981598763,
-0.2182324395320992, -0.21354691683623564, -0.20927997423347236},
{-0.09140398483751011, -0.6718973986325039, -0.6585860707063489,
-0.5475332153715627, -0.46526330056266807, -0.40801819183757765,
-0.3620977847753162, -0.33874203127118213, -0.31847722386924027,
-0.2997234637670889, -0.28419123201913987, -0.27124044150551596,
-0.2602601149376733, -0.2508304543301122, -0.24262661451219228,
-0.23542208624122812, -0.2290366263405422, -0.22331366298627098,
-0.21817100652600904, -0.21348748817134783, -0.20922235545432985},
{-0.09471039690472709, -0.6728268826239949, -0.6586563535782617,
-0.5474239688293663, -0.4651279608026557, -0.40788778333862735,
-0.361976996482053, -0.33865918048094207, -0.31837552620535536,
-0.2996266373714697, -0.28410069844238756, -0.27115554722382806,
-0.2601801235206855, -0.250754690868648, -0.24255451408488524,
-0.2353531804620756, -0.22897052908113286, -0.2232500595535954,
-0.21810962526183839, -0.2134281097224342, -0.20916478548777673},
{-0.09801010328793221, -0.673752968938571, -0.6587251944070022,
-0.547314280852102, -0.4649924987936287, -0.4077573650620306,
-0.3618563027509826, -0.3385761898602365, -0.31827385960214366,
-0.29952987290908206, -0.2840102309242334, -0.27107071841487734,
-0.26010019579040555, -0.2506789888769508, -0.24248247290081407,
-0.23528433181665415, -0.22890448699728932, -0.22318650949009025,
-0.2180482957106484, -0.21336878145986066, -0.2091072643037601},
{-0.1013031106228163, -0.6746756640005849, -0.6587926001623085,
-0.5472041544375565, -0.4648569159029642, -0.4076269376966609,
-0.36173570345580697, -0.3384930598389848, -0.3181722244997842,
-0.2994331704979167, -0.2839198295036883, -0.2709859550906308,
-0.26002033174129197, -0.2506033483401373, -0.2424104909394654,
-0.23521554028083885, -0.22883850006251094, -0.2231230127676912,
-0.21798701784333577, -0.21330950335384552, -0.2090497918720791},
{-0.1045894255691112, -0.6755949742302666, -0.6588585777839313,
-0.5470935925673392, -0.4647212134896771, -0.40749650192670256,
-0.36161519846976076, -0.3384097908686553, -0.31807062133407027,
-0.2993365302544273, -0.2838294942188006, -0.2709012572624185,
-0.25994053136732453, -0.25052776924292763, -0.24233856817997496,
-0.23514680583023914, -0.2287725682500867, -0.2230595693581155,
-0.21792579163058953, -0.21325027537440502, -0.2089923681623762},
{-0.10786905481036285, -0.6765109060438643, -0.6589231341817392,
-0.5469825982069838, -0.46458539290449996, -0.4073660584316721,
-0.36149478766570387, -0.3383263834217271, -0.31796905053643565,
-0.2992399522935463, -0.2837392251066835, -0.27081662494095565,
-0.2598607946620201, -0.25045225156969364, -0.2422667046012068,
-0.2350781284401915, -0.22870669153303838, -0.22299617923287818,
-0.2178646170429239, -0.21319109749142146, -0.20893499314413766},
{-0.11114200505371828, -0.6774234658538174, -0.6589862762358658,
-0.5468711743059996, -0.4644494554898652, -0.40723560788641766,
-0.36137447091609187, -0.3382428379911686, -0.31786751253400586,
-0.2991434367286724, -0.2836490222035273, -0.27073205813633583,
-0.25978112161842604, -0.2503767953044109, -0.24219490018167816,
-0.23500950808577342, -0.22864086988419102, -0.22293284236327798,
-0.21780349405066174, -0.21313196967458686, -0.20887766678668987},
{-0.1144082830296905, -0.6783326600688747, -0.6590480107967956,
-0.5467593237979949, -0.464313402580031, -0.4071051509612105,
-0.3612542480930375, -0.33815915508991035, -0.3177660077496358,
-0.29904698367172083, -0.2835588855446019, -0.2706475568580227,
-0.2597015122291245, -0.25030140043069665, -0.24212315489961952,
-0.23494094474179317, -0.22857510327611574, -0.22286955872042571,
-0.21774242262395785, -0.21307289189343603, -0.2088203890592141},
{-0.11766789549194889, -0.6792384950942566, -0.6591083446854992,
-0.5466470496007267, -0.46417723550106954, -0.4069746883217079,
-0.36113411906836584, -0.3380753352503323, -0.3176645366019313,
-0.2989505932331166, -0.2834688151642816, -0.27056312111488223,
-0.25962196648625796, -0.2502260669318143, -0.24205146873296798,
-0.23487243838280167, -0.2285093916811769, -0.222806328275224,
-0.21768140273277, -0.21301386411734588, -0.20876315993075117},
{-0.12092084921709367, -0.6801409773317895, -0.6591672846935644,
-0.546534354616207, -0.4640409555709386, -0.40684422062901976,
-0.3610140837135709, -0.33799137902376564, -0.3175630995052861,
-0.2988542655217986, -0.28337881109604623, -0.2704787509151477,
-0.2595424843814868, -0.25015079479064994, -0.24197984165932476,
-0.23480398898309665, -0.22844373507148868, -0.22274315099838027,
-0.21762043434689457, -0.21295488631551926, -0.2087059793701761},
{-0.12416715100444017, -0.6810401131800369, -0.6592248375832919,
-0.5464212417307955, -0.4639045640995589, -0.40671374853975106,
-0.36089414189994107, -0.3379072869799939, -0.3174616968699392,
-0.29875800064526087, -0.2832888733724997, -0.27039444626648423,
-0.25946306590605506, -0.2500755839897326, -0.2419082736560223,
-0.23473559651670897, -0.22837813341896146, -0.2226800268604025,
-0.21755951743593882, -0.2128959584570192, -0.20864884734623532},
{-0.12740680767579898, -0.6819359090344308, -0.6592810100878338,
-0.5463077138152403, -0.46376806238879, -0.4065832727059619,
-0.36077429349849366, -0.33782305970675514, -0.31736032910198253,
-0.2986617987095228, -0.28319900202536863, -0.27031020717593157,
-0.2593837110507417, -0.2500004345112392, -0.24183676470008725,
-0.23466726095742904, -0.22831258669527613, -0.22261695583159657,
-0.2174986519693392, -0.2128370805107236, -0.208591763827515},
{-0.1306398260752671, -0.6828283712874024, -0.6593358089112833,
-0.5461937737248077, -0.4636314517325417, -0.4064527937752733,
-0.3606545383800398, -0.33773869780927285, -0.3172589966034042,
-0.29856565981918026, -0.2831091970855337, -0.27022603364994174,
-0.259304419805881, -0.24992534633699254, -0.24176531476823657,
-0.23459898227878606, -0.2282470948719033, -0.22255393788208347,
-0.21743783791636295, -0.21277825244536888, -0.20853472878246843},
{-0.1338662130690022, -0.6837175063284943, -0.659389240728825,
-0.5460794242993379, -0.4634947334167889, -0.40632231239085126,
-0.36053487641524906, -0.33765420190976236, -0.3171576997721463,
-0.29846958407740387, -0.28301945858303285, -0.2701419256943903,
-0.2592251921613783, -0.24985031944847289, -0.2416939238369345,
-0.23453076045406548, -0.22818165792008197, -0.22249097298179005,
-0.21737707524610225, -0.21271947422953721, -0.20847774217940657},
{-0.1370859755450195, -0.6846033205444902, -0.6594413121868281,
-0.5459646683633337, -0.46335790871962823, -0.40619182919144126,
-0.3604153074745918, -0.33756957264698034, -0.31705643900209507,
-0.29837357158593236, -0.2829297865470648, -0.27005788331454117,
-0.259146028106699, -0.2497753538267878, -0.2416225918823079,
-0.23446259545630016, -0.22811627581084254, -0.2224280611004498,
-0.21731636392746842, -0.21266074583165737, -0.20842080398650079},
{-0.1402991204129749, -0.6854858203195298, -0.6594920299029738,
-0.5458495087260522, -0.4632209789113341, -0.4060613448114069,
-0.36029583142844623, -0.33748481067574976, -0.3169552146831516,
-0.29827762244511846, -0.28284018100600705, -0.2699739065151126,
-0.2590669276308805, -0.24970044945273162, -0.24155131888023598,
-0.23439448725828488, -0.22805094851500504, -0.22236520220760272,
-0.21725570392923096, -0.2126020672199903, -0.20836391417178363},
{-0.14350565460395054, -0.6863650120352118, -0.6595414004663618,
-0.5457339481815503, -0.46308394525437224, -0.40593085988073707,
-0.3601764481470666, -0.3373999166665093, -0.31685402720126293,
-0.29818173675391674, -0.2827506419874426, -0.2698899953002194,
-0.2589878907225383, -0.24962560630673722, -0.24148010480629367,
-0.23432643583256962, -0.2279856760031808, -0.222302396272621,
-0.2171950952199662, -0.2125434383626732, -0.2083070727031508},
{-0.14670558507025133, -0.687240902070709, -0.6595894304376345,
-0.5456179895088239, -0.4629468090034843, -0.40580037502509547,
-0.36005715750061884, -0.3373148913048637, -0.3167528769384256,
-0.2980859146098968, -0.282661169518128, -0.2698061496734224,
-0.2589089173698426, -0.2495508243689063, -0.24140894963577833,
-0.23425844115145955, -0.22792045824576024, -0.22223964326467197,
-0.21713453776810285, -0.21248485922766838, -0.20825027954836445},
{-0.14989891878518985, -0.6881134968028704, -0.659636126349089,
-0.5455016354718294, -0.462809571405696, -0.4056698908658254,
-0.35993795935923756, -0.3372297352911473, -0.3166517642727665,
-0.29799015610926327, -0.2825717636240593, -0.269722369637707,
-0.25883000756056357, -0.249476103619, -0.24133785334371666,
-0.23419050318702114, -0.22785529521292344, -0.22217694315274733,
-0.21707403154188357, -0.21242632978279571, -0.2081935346750485},
{-0.15308566274288232, -0.6889828026063214, -0.659681494704789,
-0.5453848888195891, -0.46267223370038535, -0.40553940801999006,
-0.35981885359297816, -0.3371444493399758, -0.3165506895785285,
-0.29789446134686454, -0.2824824243304466, -0.26963865519549696,
-0.25875116128204245, -0.24940144403644432, -0.24126681590483834,
-0.23412262191109706, -0.22779018687466884, -0.22211429590565607,
-0.21701357650941827, -0.21236784999574168, -0.20813683805070657},
{-0.1562658239580431, -0.6898488258535699, -0.6597255419806822,
-0.545267752286296, -0.46253479711934586, -0.405408927100408,
-0.35969984007191913, -0.33705903417982785, -0.31644965322614355,
-0.2977988304161967, -0.28239315166172757, -0.2695550063486649,
-0.2586723785212022, -0.2493268456003383, -0.2411958372936209,
-0.23405479729526643, -0.22772513320075813, -0.2220517014920195,
-0.21695317263863537, -0.21230941983403, -0.20808018964269887},
{-0.1594394094657705, -0.690711572915081, -0.6597682746247121,
-0.5451502285913269, -0.4623972628867797, -0.40527844871565344,
-0.35958091866613173, -0.33697349055264236, -0.3163486555822616,
-0.2977032634094398, -0.28230394564160577, -0.2694714230985352,
-0.2585936592645861, -0.2492523082894643, -0.24112491748426365,
-0.2339870293109216, -0.227660134160778, -0.22198915988029785,
-0.21689281989731046, -0.2122510392650573, -0.20802358941827032},
{-0.16260642632135275, -0.6915710501593906, -0.6598096990569315,
-0.5450323204393972, -0.4622596322193871, -0.4051479734701029,
-0.35946208924569545, -0.33688781921335637, -0.31624769700974215,
-0.29760776041742715, -0.2822148062930212, -0.2693879054458726,
-0.2585150034982934, -0.2491778320822539, -0.24105405645068725,
-0.23391931792918827, -0.22759518972410403, -0.22192667103876654,
-0.2168325182530593, -0.21219270825606226, -0.20796703734452893},
{-0.16576688160005837, -0.6924272639531777, -0.6598498216696207,
-0.544914030520583, -0.4621219063263795, -0.4050175019639494,
-0.35934335168076026, -0.33680202092953926, -0.3161467778677522,
-0.2975123215296879, -0.28212573363818383, -0.26930445339090414,
-0.25843641120803795, -0.2491034169568421, -0.24098325416655295,
-0.23385166312096076, -0.2275302998599102, -0.22186423493551174,
-0.21677226767334154, -0.21213442677415004, -0.20791053338846038},
{-0.1689207823969368, -0.6932802206613573, -0.6598886488273894,
-0.5447953615104117, -0.46198408640953886, -0.4048870347932325,
-0.3592247058415121, -0.3367160964809668, -0.31604589851175685,
-0.297416946834456, -0.28203672769859567, -0.26922106693331405,
-0.2583578823791278, -0.2490290628910218, -0.2409125106052546,
-0.23378406485693645, -0.22746546453717179, -0.2218018515384685,
-0.21671206812546867, -0.21207619478628678, -0.20785407751692903},
{-0.17206813582661437, -0.6941299266471523, -0.6599261868672901,
-0.5446763160699657, -0.46184617366328373, -0.40475657254988173,
-0.359106151598245, -0.33663004665922946, -0.31594505929355965,
-0.2973216364186569, -0.2819477884950164, -0.2691377460722547,
-0.25827941699647683, -0.24895476986228599, -0.24084182573992044,
-0.23371652310756233, -0.2274006837246767, -0.22173952081538087,
-0.21665191957658775, -0.21201801225929598, -0.2077976696966719},
{-0.17520894902309678, -0.6949763882721842, -0.6599624420989518,
-0.5445568968459138, -0.46170816927465363, -0.4046261158216959,
-0.35898768882133936, -0.3365438722673557, -0.3158442605613605,
-0.2972263903679604, -0.2818589160475305, -0.26905449080634297,
-0.2582010150446004, -0.24888053784780004, -0.24077119954341836,
-0.23364903784307534, -0.22733595739101523, -0.22167724273383368,
-0.21659182199369909, -0.21195987915986741, -0.20774130989429984},
{-0.17834322913956815, -0.6958196118965356, -0.6599974208046565,
-0.5444371064706415, -0.46157007442340386, -0.4044956651924238,
-0.3588693173812783, -0.3364575741194119, -0.3157435026597591,
-0.2971312087667367, -0.2817701103755099, -0.26897130113368045,
-0.2581226765076353, -0.2488063668244265, -0.24070063198836855,
-0.23358160903349154, -0.2272712855045931, -0.22161501726124228,
-0.21653177534364965, -0.2119017954545564, -0.20768499807632063},
{-0.18147098334819284, -0.6966596038788306, -0.6600311292394738,
-0.5443169475622711, -0.46143189028202947, -0.4043652212417437,
-0.35875103714872003, -0.33637115304012594, -0.3156427859298132,
-0.2970360916981222, -0.2816813714976514, -0.2688881770518394,
-0.25804440136931894, -0.2487322567687196, -0.24063012304712417,
-0.23351423664859763, -0.22720666803360767, -0.22155284436485345,
-0.21647177959314917, -0.21184376110978276, -0.20762873420910655},
{-0.18459221883992305, -0.6974963705763016, -0.6600635736313698,
-0.5441964227247698, -0.4612936180158006, -0.4042347845453227,
-0.3586328479944223, -0.33628460986453124, -0.3155421107090571,
-0.2969410392439913, -0.28159269943197307, -0.2688051185578618,
-0.25796618961300516, -0.2486582076569207, -0.2405596726917783,
-0.23344692065797792, -0.22714210494609519, -0.22149072401175202,
-0.21641183470873931, -0.2117857760918279, -0.20757251825892162},
{-0.18770694282429362, -0.6983299183448489, -0.6600947601812989,
-0.5440755345480366, -0.46115525878283414, -0.40410435567482494,
-0.35851474978935405, -0.33619794543758263, -0.31544147733155026,
-0.29684605148499243, -0.2815040941958175, -0.26872212564830267,
-0.2578880412216801, -0.24858421946496656, -0.24048928089418825,
-0.23337966103099386, -0.22707759620987863, -0.2214286561688487,
-0.2163519406568407, -0.21172784036685083, -0.20751635019191125},
{-0.19081516252924044, -0.6991602535391224, -0.66012469506335,
-0.5439542856079296, -0.4610168137340852, -0.4039739351979168,
-0.3583967424046397, -0.3361111606138085, -0.31534088612790434,
-0.2967511285005258, -0.28141555580589184, -0.2686391983191906,
-0.2578099561779422, -0.24851029216850382, -0.24041894762595964,
-0.23331245773680004, -0.22701314179262283, -0.221366640802903,
-0.21629209740370253, -0.21166995390088336, -0.20746022997409885},
{-0.19391688520089193, -0.699987382512556, -0.6601533844248078,
-0.5438326784664015, -0.46087828401344244, -0.403843523678348,
-0.35827882571159475, -0.336024256256959, -0.3152403374253056,
-0.29665627036878933, -0.28132708427822783, -0.2685563365660453,
-0.2577319344640115, -0.24843642574286282, -0.24034867285843925,
-0.2332453107443353, -0.22694874166178747, -0.22130467788050795,
-0.2162323049154456, -0.21161211665981325, -0.2074041575714014},
{-0.19701211810338848, -0.7008113116174441, -0.6601808343863014,
-0.5437107156715135, -0.46073967075772404, -0.40371312167590767,
-0.35816099958177605, -0.335937233239644, -0.3151398315475845,
-0.2965614771667663, -0.28123867962823074, -0.2684735403839038,
-0.2576539760617493, -0.2483626201630974, -0.24027845656274294,
-0.23317822002232774, -0.2268843957846675, -0.22124276736809792,
-0.21617256315804886, -0.21155432860941817, -0.20734813294962315},
{-0.20010086851868553, -0.7016320472049911, -0.6602070510418949,
-0.5435883997575466, -0.46060097509674425, -0.4035827297464897,
-0.35804326388692176, -0.335850092443007, -0.3150393688152032,
-0.29646674897024394, -0.281150341870671, -0.2683908097672829,
-0.2575760809526365, -0.24828887540395006, -0.2402082987097304,
-0.23311118553930157, -0.22682010412836426, -0.22118090923195588,
-0.21611287209734473, -0.21149658971533725, -0.20729215607445065},
{-0.20318314374636393, -0.7024495956253666, -0.6602320404592018,
-0.543465733245089, -0.4604621981533791, -0.40345234844213806,
-0.3579256184990581, -0.33576283475638924, -0.3149389495453331,
-0.29637208585382696, -0.2810620710196895, -0.2683081447102268,
-0.25749824911780933, -0.24821519143988488, -0.24013819927002877,
-0.23304420726357603, -0.22675586665981376, -0.22111910343820532,
-0.21605323169903523, -0.2114388999430961, -0.2072362269114653},
{-0.20625895110343906, -0.703263963227742, -0.6602558086794894,
-0.5433427186410347, -0.46032334104352934, -0.40332197831098526,
-0.35780806329041864, -0.33567546107697815, -0.3148385740518487,
-0.29627748789093084, -0.28097386708881056, -0.2682255452062768,
-0.2574204805380167, -0.24814156824507036, -0.24006815821402702,
-0.23297728516326868, -0.22669168334576484, -0.22105734995280424,
-0.2159936419286656, -0.21138125925808296, -0.20718034542613492},
{-0.20932829792417557, -0.7040751563603587, -0.6602783617177808,
-0.5432193584387601, -0.4601844048762451, -0.40319161989737995,
-0.35769059813351844, -0.3355879723095201, -0.3147382426453936,
-0.2961829551538081, -0.28088573009095374, -0.2681430112484921,
-0.25734277519366255, -0.24806800579339117, -0.23999817551187624,
-0.23291041920629488, -0.22662755415280803, -0.22099564874157762,
-0.21593410275166366, -0.21132366762557928, -0.20712451158381345},
{-0.2123911915598971, -0.7048831813705492, -0.6602997055629708,
-0.5430956551180973, -0.46004539075370643, -0.40306127374183526,
-0.35757322290115556, -0.3355003693659663, -0.314637955633404,
-0.2960884877135558, -0.2807976600384284, -0.26806054282946573,
-0.2572651330648009, -0.24799450405845172, -0.23992825113349778,
-0.23284360936036952, -0.22656347904734273, -0.22093399977018172,
-0.2158746141333171, -0.21126612501073935, -0.20706872534976234},
{-0.2154476393788004, -0.7056880446048008, -0.6603198461779365,
-0.5429716111454752, -0.45990629977130104, -0.40293094038109245,
-0.3574559374663936, -0.33541265316518215, -0.3145377133201262,
-0.2959940856401154, -0.28070965694295397, -0.2679781399412895,
-0.2571875541311146, -0.2479210630135726, -0.23985838504856213,
-0.2327768555930058, -0.22649945799560747, -0.2208724030041344,
-0.2158151760387698, -0.21120863137858856, -0.20701298668911208},
{-0.2184976487657722, -0.7064897524087761, -0.6603387894996263,
-0.5428472289739723, -0.4597671330176521, -0.4028006203481319,
-0.3573387417026278, -0.33532482463262014, -0.3144375160066591,
-0.29589974900229227, -0.28062172081565195, -0.26789580257560336,
-0.25711003837196345, -0.24784768263178458, -0.23978857722653532,
-0.23271015787152827, -0.22643549096366816, -0.220810858408789,
-0.21575578843304613, -0.21115118669405042, -0.206957295566905},
{-0.22154122712220117, -0.7072883111273651, -0.6603565414391832,
-0.5427225110433419, -0.45962789157463907, -0.40267031417217714,
-0.3572216354835349, -0.3352368847000477, -0.31433736399099677,
-0.29580547786776634, -0.2805338516670796, -0.26781353072356606,
-0.25703258576634125, -0.24777436288587118, -0.2397188276366402,
-0.23264351616306667, -0.22637157791743176, -0.2207493659493771,
-0.21569645128103054, -0.2110937909219236, -0.20690165194807078},
{-0.2245783818658014, -0.7080837271047083, -0.6603731078820428,
-0.5425974597801788, -0.459488576517473, -0.4025400223787644,
-0.3571046186831117, -0.33514883430522063, -0.3142372575680378,
-0.2957112723030886, -0.2804460495071983, -0.2677313243758739,
-0.25695519629290364, -0.2477011037483061, -0.2396491362478787,
-0.23257693043455288, -0.22630771882262382, -0.22068792559096573,
-0.2156371645474776, -0.21103644402688648, -0.2068460557974361},
{-0.22760912043041825, -0.7088760066842327, -0.6603884946880308,
-0.5424720775978765, -0.45934918891469084, -0.4024097454897091,
-0.3569876911757155, -0.33506067439160747, -0.314137197029637,
-0.2956171323736962, -0.28035831434540903, -0.2676491835227682,
-0.256877869929965, -0.24762790519132655, -0.23957950302902928,
-0.23251040065272982, -0.22624391364480792, -0.2206265372984814,
-0.21557792819701144, -0.21097914597350523, -0.2067905070797039},
{-0.23063345026586124, -0.709665156208685, -0.6604027076914828,
-0.5423463668967792, -0.4592097298282334, -0.4022794840231694,
-0.35687085283599884, -0.3349724059080942, -0.3140371826646136,
-0.2955230581439353, -0.28027064619055375, -0.26756710815401896,
-0.25680060665550003, -0.2475547671868708, -0.2395099279486312,
-0.23244392678415665, -0.22618016234939364, -0.2205652010367008,
-0.21551874219413822, -0.21092189672623582, -0.2067350057595017},
{-0.23365137883771256, -0.7104511820201622, -0.660415752701349,
-0.5422203300642479, -0.45907020031349766, -0.4021492384936839,
-0.3567541035390268, -0.3348840298087321, -0.3139372147588105,
-0.2954290496770605, -0.28018304505091485, -0.26748509825896527,
-0.25672340644716135, -0.24748168970663645, -0.2394404109750348,
-0.23237750879520178, -0.22611646490162635, -0.220503916770279,
-0.21545960650322593, -0.21086469624942097, -0.20667955180134076},
{-0.23666291362715552, -0.7112340904601164, -0.6604276355012695,
-0.5420939694746363, -0.4589306014192779, -0.402019009412094,
-0.35663744316015017, -0.33479554705240344, -0.3138372935950759,
-0.2953351070352201, -0.2800955109342135, -0.2674031538264647,
-0.2566462692822535, -0.24740867272203315, -0.23937095207634596,
-0.23231114665204977, -0.22605282126658752, -0.22044268446370835,
-0.2154005210885197, -0.21080754450728653, -0.2066241451696194},
{-0.23966806213079112, -0.7120138878694035, -0.660438361849712,
-0.5419672874895011, -0.45879093418793143, -0.4018887972857055,
-0.35652087157513035, -0.3347069586026138, -0.31373741945333333,
-0.2952412302795107, -0.28000804384764544, -0.2673212748449608,
-0.256569195137759, -0.24733571620422276, -0.23930155122047128,
-0.23224484032070267, -0.2259892314092043, -0.2203815040813611,
-0.2153414859141503, -0.21075044146395364, -0.2065687858286422},
{-0.2426668318604618, -0.7127905805882936, -0.6604479374800635,
-0.5418402864575553, -0.4586511996553301, -0.40175860261822016,
-0.35640438866011026, -0.3346182654272055, -0.3136375926106106,
-0.2951474194699458, -0.2799206437978424, -0.26723946130243165,
-0.25649218399033824, -0.24726282012410516, -0.23923220837508702,
-0.23217858976696865, -0.22592569529423312, -0.22032037558745754,
-0.21528250094410867, -0.21069338708342245, -0.20651347374261214},
{-0.24565923034307882, -0.7135641749564884, -0.660456368100732,
-0.5417129687147888, -0.45851139885092773, -0.40162842590977776,
-0.3562879942915893, -0.3345294684980846, -0.3135378133410361,
-0.2950536746654926, -0.2798333107909285, -0.2671577131864259,
-0.256415235816317, -0.24718998445232132, -0.23916292350766924,
-0.23211239495649333, -0.2258622128862951, -0.2202592989460856,
-0.21522356614228005, -0.2106363813295967, -0.20645820887562977},
{-0.24864526512044313, -0.714334677313134, -0.6604636593952355,
-0.5415853365845376, -0.4583715327978194, -0.4014982676569898,
-0.3561716883464856, -0.33444056879097217, -0.3134380819158739,
-0.2949599959240691, -0.27974604483247056, -0.2670760304840644,
-0.25633835059171034, -0.24711720915925856, -0.23909369658548207,
-0.23204625585473743, -0.22579878414984592, -0.22019827412120502,
-0.21516468147242657, -0.21057942416626846, -0.2064029911916925},
{-0.25162494374907063, -0.7151020939968524, -0.6604698170223325,
-0.5414573923775083, -0.4582316025127151, -0.4013681283529372,
-0.35605547070210436, -0.3343515672851676, -0.3133383986035735,
-0.2948663833025533, -0.27965884592753604, -0.26699441318201844,
-0.25626152829221843, -0.2470444942150489, -0.23902452757557976,
-0.2319801724269764, -0.22573540904918798, -0.22013730107663518,
-0.21510584689818033, -0.21052251555712798, -0.2063478206547056},
{-0.2545982738000232, -0.7158664313457344, -0.6604748466160979,
-0.5413291383919141, -0.45809160900604556, -0.4012380084872261,
-0.3559393412361501, -0.33426246496328593, -0.3132387636697629,
-0.2947728368567785, -0.27957171408064824, -0.26691286126655395,
-0.256184768893213, -0.2469718395895712, -0.2389554164448098,
-0.23191414463833215, -0.22567208754847676, -0.22007637977607092,
-0.21504706238306517, -0.2104656554657414, -0.20629269722846333},
{-0.2575652628587331, -0.7166276956973625, -0.66047875378604,
-0.541200576913469, -0.4579515532819478, -0.4011079085459759,
-0.35582329982676175, -0.33417326281103615, -0.31313917737730446,
-0.29467935664156863, -0.27948464929583955, -0.2668313747234949,
-0.25610807236976385, -0.2468992452524712, -0.23888636315981573,
-0.23184817245371495, -0.22560881961172108, -0.22001551018306895,
-0.21498832789048936, -0.21040884385559575, -0.20623762087666386},
{-0.26052591852483264, -0.7173858933888175, -0.6604815441171942,
-0.5410717102154992, -0.45781143633833354, -0.4009778290118642,
-0.35570734635247153, -0.33408396181696864, -0.3130396399862809,
-0.29458594271072824, -0.2793976515766141, -0.2667499535382402,
-0.2560314386966209, -0.24682671117312838, -0.23881736768703565,
-0.23178225583791137, -0.22554560520277256, -0.2199546922610558,
-0.21492964338374487, -0.21035208069004926, -0.20618259156292745},
{-0.26348024841197826, -0.7181410307566801, -0.6604832231702219,
-0.5409425405590127, -0.4576712591669282, -0.4008477703641491,
-0.35559148069227486, -0.333994562972256, -0.31294015175405654,
-0.29449259511706616, -0.27931072092598225, -0.266668597695796,
-0.25595486784824595, -0.24675423732069154, -0.2387484299927126,
-0.23171639475549985, -0.22548244428534442, -0.21989392597333535,
-0.21487100882599994, -0.2102953659323782, -0.2061276092507649},
{-0.26642826014769505, -0.718893114137048, -0.6604837964815209,
-0.5408130701927063, -0.4575310227532644, -0.4007177330786431,
-0.3554757027255607, -0.3339050672704596, -0.31284071293527976,
-0.29439931391237, -0.2792238573464428, -0.26658730718073476,
-0.25587835979877416, -0.24668182366405897, -0.23867955004287275,
-0.23165058917090808, -0.2254193368230031, -0.21983321128307762,
-0.21481242418032573, -0.21023869954574315, -0.20607267390358075},
{-0.26936996137319313, -0.7196421498655298, -0.6604832695633117,
-0.5406833013531251, -0.45739072807677167, -0.40058771762781376,
-0.3553600123321784, -0.33381547570732234, -0.3127413237819022,
-0.2943060991474567, -0.27913706084000844, -0.2665060819772214,
-0.25580191452204604, -0.24660947017190066, -0.238610727803379,
-0.23158483904839502, -0.22535628277917005, -0.21977254815333824,
-0.21475388940967047, -0.21018208149321183, -0.20601778548470745},
{-0.27230535974320674, -0.7203881442772446, -0.660481647903746,
-0.540553236264629, -0.45725037611076513, -0.4004577244807331,
-0.3552444093924225, -0.33372578928053587, -0.3126419845432209,
-0.2942129508721619, -0.2790503314081829, -0.2664249220690243,
-0.25572553199161563, -0.24653717681263476, -0.23854196323986876,
-0.23151914435204582, -0.22529328211712088, -0.21971193654703294,
-0.21469540447686303, -0.21012551173773708, -0.2059629439573637},
{-0.2752344629258306, -0.7211311037068342, -0.6604789369670037,
-0.5404228771395195, -0.45710996782251034, -0.4003277541031305,
-0.3551288937870112, -0.3336360089895305, -0.3125426954658639,
-0.29411986913532784, -0.2789636690520029, -0.2663438274394918,
-0.25564921218071307, -0.24646494355446252, -0.23847325631779462,
-0.2314535050457904, -0.22523033479999485, -0.2196513764269661,
-0.21463696934465384, -0.2100689902421975, -0.20590814928468948},
{-0.2781572786023496, -0.7218710344884456, -0.6604751421933875,
-0.5402922261781098, -0.4569695041732844, -0.400197806957443,
-0.3550134653971623, -0.33354613583529513, -0.31244345679386243,
-0.2940268539848655, -0.27887707377200044, -0.26626279807159153,
-0.25557295506230165, -0.24639277036533624, -0.238404607002415,
-0.23138792109338957, -0.22516744079080425, -0.21959086775582118,
-0.21457858397566096, -0.21001251696934883, -0.20585340142973801},
{-0.28107381446707297, -0.7226079429557419, -0.660470268999438,
-0.5401612855687175, -0.4568289861183176, -0.4000678835027444,
-0.35489812410451577, -0.33345617082012674, -0.312344268768615,
-0.29393390546769105, -0.278790545568228, -0.266181833947879,
-0.2554967606090389, -0.24632065721297494, -0.23833601525880546,
-0.2313223924584566, -0.22510460005240004, -0.21953041049614647,
-0.2145202483323971, -0.2099560918818696, -0.20579870035546394},
{-0.28398407822717975, -0.7233418354418909, -0.6604643227779975,
-0.5400300574878194, -0.4566884146069367, -0.3999379841948676,
-0.35478286979117724, -0.33336611494747176, -0.31224513162894424,
-0.2938410236297925, -0.27870408444027445, -0.2661009350505186,
-0.2554206287932839, -0.24624860406489035, -0.23826748105184525,
-0.2312569191044377, -0.22504181254751635, -0.21947000461039318,
-0.21446196237727078, -0.2098997149423305, -0.2057440460247187},
{-0.28688807760253865, -0.7240727182795512, -0.6604573088983481,
-0.5398985441000365, -0.45654779058252093, -0.3998081094863646,
-0.3546677023397422, -0.3332759692217232, -0.3121460456111238,
-0.29374820851621986, -0.2786176903872354, -0.2660201013612938,
-0.25534455958713453, -0.2461766108883516, -0.23819900434623892,
-0.23119150099461663, -0.22497907823873362, -0.21940965006086735,
-0.21440372607259486, -0.20984338611320458, -0.20568943840029327},
{-0.2897858203255671, -0.7248005978008809, -0.6604492327062804,
-0.5397667475582502, -0.4564071149825811, -0.39967825982654104,
-0.35455262163324963, -0.3331857346480089, -0.3120470109488502,
-0.293655460171074, -0.2785313634077475, -0.26593933286159077,
-0.255268552962375, -0.2461046776503963, -0.23813058510648058,
-0.23112613809212498, -0.22491639708851688, -0.21934934680977727,
-0.21434553938056294, -0.20978710535687553, -0.20563487744486675},
{-0.29267731414105713, -0.7255254803375139, -0.660440099524198,
-0.539634670003654, -0.45626638873879066, -0.39954843566148923,
-0.35443762755524383, -0.33309541223203987, -0.31194802787331055,
-0.2935627786375359, -0.2784451034999774, -0.26585862953242473,
-0.25519260889052797, -0.24603280431785837, -0.2380622232969109,
-0.23106083035993985, -0.22485376905919238, -0.21928909481920855,
-0.21428740226329113, -0.2097308726356445, -0.20558036312104855},
{-0.29556256680601267, -0.7262473722205518, -0.6604299146512183,
-0.5395023135657685, -0.45612561277697483, -0.39941863743407796,
-0.35432271998972653, -0.33300500297990976, -0.31184909661318405,
-0.29347016395787234, -0.27835891066162305, -0.26577799135440866,
-0.2551167273428296, -0.24596099085733775, -0.23799391888166954,
-0.23099557776089769, -0.22479119411295825, -0.21922889405113766,
-0.21422931468276335, -0.20967468791170338, -0.2055258953913511},
{-0.2984415860895049, -0.7269662797805577, -0.6604186833632744,
-0.5393696803625845, -0.4559847880172117, -0.3992888655840083,
-0.35420789882118264, -0.33291450789791, -0.31175021739464087,
-0.29337761617343583, -0.27827278488992513, -0.2656974183078045,
-0.2550409082902433, -0.24588923723521697, -0.23792567182472335,
-0.23093038025766208, -0.22472867221187362, -0.21916874446742185,
-0.21417127660089452, -0.2096185511471586, -0.20547147421820122},
{-0.301314379772497, -0.7276822093475298, -0.6604064109131867,
-0.5392367725005462, -0.45584391537380076, -0.3991591205477977,
-0.3540931639346022, -0.33282392799237437, -0.311651390441403,
-0.2932851353246738, -0.2781867261816572, -0.2656169103724873,
-0.2549651517034425, -0.24581754341767245, -0.23785748208986374,
-0.23086523781275797, -0.2246662033178754, -0.21910864602980745,
-0.2141132879794709, -0.2095624623040273, -0.20541709956393903},
{-0.3041809556477002, -0.7283951672508979, -0.6603931025307833,
-0.5391035920746545, -0.4557029957553488, -0.39902940275882465,
-0.3539785152154272, -0.3327332642694986, -0.31155261597470624,
-0.2931927214511273, -0.2781007345331574, -0.26553646752794835,
-0.2548894575528442, -0.245745909370639, -0.23778934964069054,
-0.23080015038857138, -0.22460378739277811, -0.21904859869991555,
-0.21405534878020085, -0.20950642134424033, -0.20536277139083284},
{-0.30704132151940794, -0.7291051598195016, -0.6603787634229863,
-0.5389701411685491, -0.455562030064788, -0.39889971264735513,
-0.3538639525496453, -0.33264251773518866, -0.31145389421338027,
-0.29310037459148325, -0.27801480994028654, -0.2654560897533528,
-0.254813825808594, -0.24567433505988526, -0.2377212744406564,
-0.23073511794732562, -0.2245414243982657, -0.21898860243928997,
-0.21399745896469582, -0.2094504282296482, -0.20530848966106113},
{-0.30989548520334986, -0.729812193381574, -0.6603633987739096,
-0.5388364218544809, -0.45542101919937517, -0.398770050640512,
-0.35374947582368765, -0.33255168939487023, -0.31135522537380117,
-0.2930080947835022, -0.27792895239847004, -0.2653757770274454,
-0.2547382564405529, -0.24560282045091839, -0.23765325645301164,
-0.23067014045110104, -0.22447911429589612, -0.21892865720933263,
-0.2139396184944592, -0.2093944829219836, -0.20525425433671385},
{-0.31274345452652585, -0.7305162742647109, -0.66034701374494,
-0.5387024361934868, -0.4552799640507692, -0.3986404171623582,
-0.353635084924497, -0.33246078025337067, -0.3112566096699623,
-0.292915882064105, -0.2778431619026902, -0.2652955293286557,
-0.2546627494183388, -0.24553136550906648, -0.23758529564085384,
-0.23060521786184465, -0.22441685704711398, -0.2188687629713612,
-0.21388182733091776, -0.209338585382932, -0.20520006537981358},
{-0.315585237327063, -0.7312174087958689, -0.6603296134748496,
-0.5385681862353553, -0.45513886550504234, -0.398510812633876,
-0.3535207797395364, -0.3323697913147285, -0.3111580473134539,
-0.29282373646932347, -0.2777574384474628, -0.265215346635024,
-0.25458730471128616, -0.24545997019944166, -0.23751739196709593,
-0.2305403501413406, -0.2243546526132163, -0.218808919686565,
-0.21382408543537898, -0.2092827355740637, -0.20514592275229138},
{-0.3184208414540555, -0.7319156033013333, -0.6603112030798783,
-0.5384336740187281, -0.45499772444271186, -0.3983812374729888,
-0.3534065601567288, -0.3322787235820738, -0.31105953851350676,
-0.29273165803433965, -0.27767178202688875, -0.2651352289242531,
-0.2545119222884858, -0.2453886344869522, -0.23744954539449584,
-0.23047553725126188, -0.2242925009554234, -0.21874912731604435,
-0.21376639276908901, -0.20922693345688337, -0.20509182641600185},
{-0.3212502747674142, -0.7326108641066873, -0.6602917876538268,
-0.5382989015711753, -0.4548565417387963, -0.39825169209460365,
-0.3532924260645448, -0.3321875780574543, -0.3109610834769907,
-0.2926396467934854, -0.2775861926346123, -0.26505517617369084,
-0.25443660211875824, -0.2453173583363104, -0.2373817558856422,
-0.23041077915311386, -0.22423040203479164, -0.21868938582078723,
-0.21370874929317896, -0.20917117899280885, -0.20503777633274184},
{-0.32407354513771813, -0.7333031975368025, -0.6602713722681608,
-0.5381638709092031, -0.45471531826279254, -0.3981221769105914,
-0.3531783773519325, -0.33209635574172186, -0.31086268240842996,
-0.29254770278024184, -0.2775006702638493, -0.264975188360328,
-0.2543613441706721, -0.2452461417120164, -0.2373140234029538,
-0.23034607580827604, -0.224168355812291, -0.21862969516168496,
-0.21365115496870185, -0.20911547214317405, -0.2049837724642037},
{-0.3268906604460632, -0.7339926099158034, -0.6602499619720885,
-0.538028584038365, -0.4545740548787789, -0.39799269232984386,
-0.3530644139083421, -0.3320050576343705, -0.31076433551002675,
-0.29245582602724884, -0.27741521490738097, -0.2648952654608221,
-0.25428614841254477, -0.24517498457837472, -0.237246347908695,
-0.23028142717800196, -0.22410636224875932, -0.21857005529952753,
-0.21359360975661315, -0.20905981286923672, -0.20492981477202102},
{-0.3297016285839102, -0.7346791075670431, -0.6602275617926612,
-0.5378930429532807, -0.4544327524453822, -0.397863238758264,
-0.3529505356237559, -0.33191368473341143, -0.31066604298168393,
-0.2923640165663219, -0.2773298265575531, -0.26481540745147264,
-0.25421101481242925, -0.24510388689949694, -0.23717872936495782,
-0.23021683322337844, -0.22404442130491825, -0.21851046619499392,
-0.21353611361779534, -0.20900420113216964, -0.20487590321776217},
{-0.3325064574529421, -0.7353626968130785, -0.6602041767348718,
-0.5377572496377071, -0.4542914118158516, -0.3977338165988021,
-0.35283674238862484, -0.3318222380352297, -0.3105678050210057,
-0.2922722744284462, -0.27724450520628086, -0.2647356143082379,
-0.2541359433381385, -0.2450328486392916, -0.23711116773367202,
-0.2301522939053837, -0.223982532941386, -0.2184509278086565,
-0.21347866651301622, -0.20894863689305931, -0.2048220377629011},
{-0.33530515496490565, -0.7360433839756297, -0.6601798117817227,
-0.5376212060646284, -0.45415003383808505, -0.3976044262514734,
-0.3527230340939639, -0.33173071853447844, -0.3104696218233104,
-0.29218059964379556, -0.27715925084506626, -0.2646558860067657,
-0.25406093395724644, -0.24496186976148993, -0.23704366297662982,
-0.2300878091848661, -0.2239206971186558, -0.21839144010102185,
-0.21342126840298936, -0.20889312011295175, -0.2047682183688736},
{-0.3380977290414805, -0.7367211753755694, -0.6601544718943512,
-0.5374849141962226, -0.4540086193546247, -0.39747506811333383,
-0.35260941063124696, -0.3316391272239262, -0.3103714935816686,
-0.2920889922417131, -0.27707406346495633, -0.26457622252232676,
-0.2539859866370596, -0.24489095022960536, -0.23697621505543706,
-0.23002337902251924, -0.22385891379711473, -0.2183320030324564,
-0.2133639192483181, -0.208837650752771, -0.20471444499700886},
{-0.34088418761411854, -0.7373960773328736, -0.6601281620120915,
-0.5373483759840479, -0.45386716920274517, -0.397345742578589,
-0.35249587189248033, -0.3315474650943626, -0.3102734204868989,
-0.2919974522507593, -0.2769889430566207, -0.2644966238298959,
-0.25391110134466444, -0.24482009000698282, -0.23690882393157564,
-0.22995900337892433, -0.22379718293704212, -0.21827261656327912,
-0.2133066190095378, -0.2087822287734033, -0.2046607176086041},
{-0.34366453862390584, -0.7380680961666006, -0.6601008870525757,
-0.5372115933689806, -0.45372568421441883, -0.3972164500385064,
-0.35238241777019375, -0.33145573313445137, -0.3101754027275885,
-0.2919059796986918, -0.27690388961027057, -0.2644170899041103,
-0.25383627804688624, -0.24474928905676951, -0.2368414895663446,
-0.2298946822145429, -0.2237355044986031, -0.21821328065365764,
-0.21324936764708569, -0.20872685413562947, -0.20460703616486284},
{-0.34643879002141953, -0.7387372381948478, -0.660072651911831,
-0.5370745682813248, -0.453584165216404, -0.397087190881501,
-0.3522690481573989, -0.33136393233063915, -0.31007744049010943,
-0.2918145746124662, -0.2768189031157225, -0.2643376207192658,
-0.2537615167103217, -0.24467854734192726, -0.23677421192090475,
-0.2298304154896743, -0.22367387844184644, -0.2181539952637051,
-0.2131921651213298, -0.2086715268001833, -0.2045534006269359},
{-0.34920694976658034, -0.7394035097347307, -0.6600434614643573,
-0.5369373026409059, -0.45344261303027333, -0.39695796549316276,
-0.3521557629476613, -0.3312720636670321, -0.30997953395863537,
-0.29172323701826547, -0.27673398356236406, -0.2642582162493508,
-0.2536868173013374, -0.24460786482523827, -0.23670699095626044,
-0.2297662031645227, -0.2236123047267322, -0.21809476035343234,
-0.2131350113925552, -0.20861624672771165, -0.2044998109559141},
{-0.3519690258285123, -0.7400669171023345, -0.6600133205632279,
-0.5367997983570165, -0.45330102847235637, -0.3968287742561895,
-0.35204256203502315, -0.3311801281252729, -0.30988168331514415,
-0.29163196694148186, -0.27664913093917787, -0.2641788764680247,
-0.25361217978604983, -0.24453724146929048, -0.23663982663327765,
-0.22970204519916218, -0.22355078331310022, -0.21803557588275446,
-0.21307790642095537, -0.20856101387880155, -0.20444626711281638},
{-0.354725026185402, -0.7407274666126943, -0.6599822340401631,
-0.5366620573285981, -0.4531594123539054, -0.3966996175505054,
-0.35192944531404824, -0.3310881266844789, -0.30978388873944757,
-0.29154076440674287, -0.27656434523473894, -0.26409960134863286,
-0.2535376041303569, -0.2444666772365068, -0.23657271891266485,
-0.22963794155354708, -0.22348931416068932, -0.21797644181150155,
-0.21302085016665523, -0.2085058282139725, -0.20439276905859988},
{-0.3574749588243559, -0.7413851645797344, -0.6599502067056398,
-0.5365240814442006, -0.45301776548100525, -0.3965704957532213,
-0.35181641267982966, -0.33099606032108436, -0.30968615040922143,
-0.29144962943791897, -0.27647962643720664, -0.2640203908642152,
-0.2534630902999124, -0.244396172089117, -0.23650566775499027,
-0.2295738921874954, -0.2234278972291323, -0.21791735809939666,
-0.21296384258969164, -0.20845068969365355, -0.2043393167541717},
{-0.3602188317412588, -0.7420400173162564, -0.6599172433489636,
-0.5363858725820828, -0.4528760886546773, -0.39644140923865,
-0.3517034640279434, -0.33090393000877366, -0.30958846849996496,
-0.29135856205810057, -0.2763949745343389, -0.26394124498748095,
-0.25338863826016117, -0.24432572598917413, -0.23643867312065728,
-0.2295098970607099, -0.2233665324779599, -0.21785832470609484,
-0.2129068836500315, -0.20839559827822385, -0.20428591016034842},
{-0.3629566529406411, -0.7426920311338829, -0.6598833487383656,
-0.5362474326102792, -0.4527343826709032, -0.39631235837837164,
-0.35159059925451197, -0.33081173671838116, -0.30949084318507675,
-0.2912675622896376, -0.2763103895134924, -0.26386216369084553,
-0.2533142479763007, -0.24425533889856624, -0.23637173496994932,
-0.22944595613277977, -0.22330521986660853, -0.21779934159115813,
-0.21284997330757477, -0.20834055392800716, -0.20423254923792505},
{-0.36568843043553356, -0.7433412123430292, -0.6598485276210894,
-0.5361087633865897, -0.452592648320587, -0.3961833435411698,
-0.35147781825615204, -0.33071948141778695, -0.3093932746358417,
-0.2911766301541389, -0.27622587136161947, -0.26378314694640626,
-0.2532399194133247, -0.24418501077899452, -0.2363048532630031,
-0.22938206936317207, -0.22324395935440075, -0.21774040871404832,
-0.21279311152211874, -0.20828555660323467, -0.2041792339476126},
{-0.3684141722473347, -0.7439875672528513, -0.6598127847234722,
-0.5359698667587198, -0.4524508863896782, -0.39605436509314085,
-0.3513651209299836, -0.3306271650718329, -0.30929576302143386,
-0.29108576567245903, -0.2761414200652783, -0.26370419472597395,
-0.25316565253598977, -0.24411474159199092, -0.23623802795981103,
-0.22931823671124438, -0.22318275090057357, -0.21768152603416607,
-0.2127362982534166, -0.20823060626409473, -0.20412596425005947},
{-0.3711338864056673, -0.7446311021712193, -0.6597761247510374,
-0.5358307445642531, -0.4523090976591211, -0.39592542339762915,
-0.3512525071736543, -0.33053478864222563, -0.3091983085089646,
-0.290994968864726, -0.2760570356106194, -0.2636253070010366,
-0.25309144730884375, -0.24404453129892423, -0.23617125902022415,
-0.22925445813622583, -0.2231215944642417, -0.21762269351080574,
-0.21267953346111435, -0.20817570287069054, -0.20407274010586973},
{-0.37384758094824855, -0.7452718234046611, -0.6597385523885797,
-0.5356913986307548, -0.45216728290493396, -0.3957965188152899,
-0.3511399768853041, -0.3304423530874615, -0.3091009112634641,
-0.29090423975033364, -0.2759727179834159, -0.2635464837427949,
-0.2530173036962097, -0.2439743798609777, -0.23610454640394898,
-0.22919073359724573, -0.22306049000444622, -0.21756391110317674,
-0.2126228171048092, -0.20812084638308198, -0.2040195614755837},
{-0.3765552639207587, -0.745909737258337, -0.6597000723002568,
-0.5355518307758423, -0.45202544289824487, -0.39566765170411755,
-0.3510275299636066, -0.330349859362741, -0.309003571447917,
-0.29081357834796623, -0.27588846716903936, -0.26346772492216386,
-0.25294322166219607, -0.24390428723919041, -0.2360378900705801,
-0.22912706305331237, -0.22299943748013343, -0.21750517877043515,
-0.2125661491440261, -0.2080660367612723, -0.20396642831969083},
{-0.37925694337669114, -0.7465448500359771, -0.6596606891296708,
-0.5354120428071425, -0.4518835784052432, -0.3955388224194002,
-0.35091516630772157, -0.3302573084198785, -0.3089062892232759,
-0.2907229846755768, -0.2758042831524736, -0.2633890305097436,
-0.2528692011706964, -0.24383425339440667, -0.23597128997954947,
-0.22906344646331578, -0.2229384368501295, -0.2174464964716184,
-0.21250952953820307, -0.20801127396516936, -0.20391334059860733},
{-0.3819526273772367, -0.7471771680398518, -0.6596204074999478,
-0.5352720365224731, -0.45174169018731647, -0.3954100313138079,
-0.35080288581732383, -0.33016470120722935, -0.3088090647484636,
-0.2906324587504154, -0.2757201659183209, -0.26331040047586407,
-0.25279524218540783, -0.24376427828733302, -0.2359047460901738,
-0.22899988378605757, -0.22287748807319385, -0.2173878641657072,
-0.21245295824673496, -0.2079565579546592, -0.20386029827271604},
{-0.3846423239911425, -0.7478066975707217, -0.6595792320138403,
-0.5351318137097903, -0.4515997790009776, -0.3952812787373599,
-0.3506906883925999, -0.33007203866962737, -0.30871189818038786,
-0.2905420005890252, -0.27563611545079164, -0.26323183479055806,
-0.2527213446697932, -0.24369436187849342, -0.23583825836163014,
-0.2289363749802042, -0.22281659110797336, -0.21732928181159814,
-0.21239643522890395, -0.2079018886895374, -0.20380730130233102},
{-0.3873260412945777, -0.748433444927801, -0.6595371672537979,
-0.5349913761472838, -0.451457845597964, -0.3951525650374598,
-0.35057857393422087, -0.3299793217482803, -0.30861478967398726,
-0.2904516102072449, -0.27555213173371257, -0.2631533334235673,
-0.2526475085871221, -0.24362450412825917, -0.23577182675296454,
-0.22887292000433213, -0.22275574591302783, -0.21727074936809435,
-0.21233996044396647, -0.20784726612955484, -0.20375434964771658},
{-0.3900037873710075, -0.7490574164086875, -0.6594942177820466,
-0.5348507256034535, -0.4513158907252506, -0.39502389055891785,
-0.3504665423433963, -0.3298865513807363, -0.3085177393821979,
-0.2903612876202363, -0.2754682147505433, -0.2630748963443711,
-0.25257373390046073, -0.2435547049968442, -0.23570545122309605,
-0.22880951881690717, -0.22269495244682758, -0.21721226679394523,
-0.21228353385109233, -0.20779269023441094, -0.20370144326910075},
{-0.3926755703110596, -0.7496786183093547, -0.6594503881407047,
-0.5347098638370922, -0.4511739151250297, -0.394895255643939,
-0.350354593521807, -0.3297937285007819, -0.3084207474560073,
-0.29027103284246003, -0.2753843644843523, -0.26299652352213904,
-0.25250002057265974, -0.2434849644443032, -0.23563913173080991,
-0.2287461713762786, -0.22263421066775213, -0.21715383404780844,
-0.21222715540937948, -0.20773816096372832, -0.2036485821266425},
{-0.39534139821239667, -0.7502970569240669, -0.6594056828518271,
-0.53456879259741, -0.45103191953481664, -0.3947666606321758,
-0.3502427273716406, -0.32970085403841054, -0.3083238140444472,
-0.2901808458876956, -0.27530058091784354, -0.26291821492579975,
-0.25242636856639034, -0.24341528243052693, -0.23557286823477827,
-0.22868287764072034, -0.22257352053409368, -0.21709545108827566,
-0.21217082507788246, -0.20768367827710105, -0.20359576618045488},
{-0.39800127917958444, -0.750912738545356, -0.6593601064175123,
-0.5344275136240315, -0.45088990468739576, -0.39463810586071135,
-0.3501309437956053, -0.32960792891972224, -0.3082269392946241,
-0.290090726769055, -0.27521686403334006, -0.26283997052398084,
-0.25235277784409704, -0.24334565891526072, -0.23550666069354062,
-0.22861963756836706, -0.222512882004057, -0.21703711787385285,
-0.21211454281556535, -0.2076292421340267, -0.20354299539060605},
{-0.4006552213239707, -0.7515256694639696, -0.6593136633199933,
-0.5342860286470656, -0.45074787131091065, -0.39450959166410343,
-0.350019242696867, -0.3295149540668921, -0.30813012335171097,
-0.2900006754989759, -0.2751332138128018, -0.26276179028503643,
-0.2522792483680343, -0.2432760938580813, -0.23544050906549963,
-0.22855645111726813, -0.222452295035752, -0.21697883436296422,
-0.21205830858133556, -0.20757485249397611, -0.20349026971711354},
{-0.40330323276354385, -0.7521358559688051, -0.6592663580216922,
-0.5341443393871903, -0.45060582012889283, -0.3943811183743975,
-0.34990762397913716, -0.3294219303980948, -0.3080333663589958,
-0.28991069208922926, -0.27504963023782614, -0.2626836741770748,
-0.25220578010027833, -0.24320658721843677, -0.235374413308959,
-0.22849331824538094, -0.22239175958721225, -0.21692060051399537,
-0.21200212233404242, -0.207520509316373, -0.2034375891199617},
{-0.40594532162282726, -0.7527433043468925, -0.6592181949653304,
-0.534002447555602, -0.45046375186019716, -0.3942526863210758,
-0.34979608754658126, -0.32932885882744767, -0.3079366684578555,
-0.2898207765509168, -0.2749661132896174, -0.262605622167909,
-0.252132373002683, -0.24313713895560082, -0.23530837338207997,
-0.22843023891055111, -0.22233127561637386, -0.21686241628521563,
-0.21194598403247095, -0.20746621256055736, -0.203384953559063},
{-0.4085814960327331, -0.7533480208833154, -0.6591691785740006,
-0.5338603548542136, -0.4503216672191679, -0.3941242958312006,
-0.349684633303866, -0.32923574026497093, -0.3078400297878061,
-0.28973092889450924, -0.2748826629490545, -0.26252763422510766,
-0.25205902703694266, -0.24306774902872041, -0.23524238924292545,
-0.2283672130705264, -0.22227084308111125, -0.21680428163486568,
-0.21188989363535282, -0.20741196218584906, -0.20333236299430346},
{-0.41121176413044724, -0.7539500118611754, -0.6591193132512435,
-0.5337180629755548, -0.45017956691552996, -0.39399594722930303,
-0.3495732611561681, -0.3291425756165085, -0.30774345048650625,
-0.28964114912981365, -0.2747992791966343, -0.2624497103159733,
-0.25198574216452474, -0.24299841739676997, -0.23517646084941826,
-0.22830424068296234, -0.2222104619391877, -0.21674619652107666,
-0.21183385110134578, -0.20735775815148486, -0.2032798173855302},
{-0.413836134059309, -0.754549283561538, -0.659068603381139,
-0.5335755736029083, -0.4500374516545125, -0.3938676408374666,
-0.34946197100911913, -0.32904936578370403, -0.30764693068975746,
-0.28955143726599286, -0.2747159620124935, -0.26237185040753846,
-0.2519125183467331, -0.24292914401859328, -0.23511058815937314,
-0.2282413217054054, -0.2221501321482993, -0.2166881609019381,
-0.21177785638903085, -0.20730360041666526, -0.20322731669252592},
{-0.41645461396867867, -0.755145842263387, -0.6590170533283899,
-0.5334328884103798, -0.44989532213685723, -0.39373937697535477,
-0.3493507627688756, -0.3289561116639491, -0.30755047053153883,
-0.28946179331158167, -0.27463271137642126, -0.2622940544665847,
-0.2518393555446821, -0.24285992885289573, -0.23504477113048555,
-0.22817845609532478, -0.22208985366607084, -0.216630174735462,
-0.21172190945698255, -0.20724948894053613, -0.2031748608750499},
{-0.4190672120138149, -0.7557396942435597, -0.6589646674383907,
-0.5332900090628266, -0.44975317905877044, -0.3936111559601486,
-0.3492396363420497, -0.3288628141502996, -0.30745407014400494,
-0.2893722172744715, -0.2745495272678485, -0.26221632245964294,
-0.2517662537192949, -0.24279077185822107, -0.23497900972034272,
-0.22811564381008492, -0.22202962645002983, -0.2165722379795871,
-0.21166601026366416, -0.2071954236822037, -0.2031224498928152},
{-0.4216739363557679, -0.756330845776718, -0.6589114500373171,
-0.5331469372160659, -0.4496110231120636, -0.3934829781066567,
-0.3491285916357407, -0.3287694741314937, -0.3073577296575187,
-0.28928270916192567, -0.2744664096658674, -0.2621386543529894,
-0.2516932128313082, -0.24272167299298447, -0.23491330388641413,
-0.2280528848069616, -0.22196945045762567, -0.21651435059219445,
-0.2116101587675124, -0.20714140460071595, -0.20307008370547736},
{-0.42427479516123345, -0.7569193031352666, -0.658857405432208,
-0.5330036745167847, -0.4494688549840792, -0.39335484372725427,
-0.3490176285575436, -0.3286760924918516, -0.30726144920065684,
-0.2891932689806104, -0.27438335854919843, -0.26206105011264663,
-0.25162023284129226, -0.2426526322154581, -0.23484765358606582,
-0.22799017904313168, -0.22190932564624793, -0.216456512531097,
-0.21155435492689406, -0.20708743165506088, -0.20301776227268015},
{-0.4268697966024543, -0.7575050725893301, -0.6588025379110415,
-0.5328602226026576, -0.4493266753577708, -0.3932267531319441,
-0.3489067470155013, -0.3285826701112603, -0.30716522890020753,
-0.28910389673652825, -0.27430037389623685, -0.2619835097043853,
-0.251547313709627, -0.24258364948376318, -0.23478205877651973,
-0.22792752647568582, -0.22184925197318553, -0.21639872375402175,
-0.2114985987001124, -0.20703350480419133, -0.20296548555398536},
{-0.4294589488570885, -0.7580881604066789, -0.658746851742819,
-0.5327165831024172, -0.44918448491174634, -0.393098706628361,
-0.34879594691817045, -0.32848920786514485, -0.3070690688812207,
-0.2890145924351109, -0.27421745568501493, -0.2619060330937457,
-0.2514744553965123, -0.24251472475590546, -0.23471651941493027,
-0.22786492706162206, -0.22178922939567122, -0.21634098421867012,
-0.21144289004543407, -0.2069796240070206, -0.20291325350896566},
{-0.4320422601080955, -0.7586685728526907, -0.6586903511776465,
-0.5325727576358077, -0.4490422843202123, -0.3929707045217635,
-0.3486852281745544, -0.32839570662440587, -0.30697296926699014,
-0.28892535608116876, -0.27413460389325234, -0.26182862024600617,
-0.25140165786197943, -0.24244585798974613, -0.2346510354583185,
-0.22780238075785364, -0.22172925787086026, -0.2162832938826542,
-0.21138722892106157, -0.20692578922238697, -0.20286106609711718},
{-0.4346197385436157, -0.7592463161902842, -0.6586330404468022,
-0.5324287478137449, -0.44890007425309414, -0.3928427471150808,
-0.3485745906941251, -0.3283021672554025, -0.30687693017908474,
-0.2888361876789041, -0.2740518184982982, -0.2617512711262258,
-0.2513289210658904, -0.24237704914299407, -0.23458560686360597,
-0.22773988752120497, -0.2216693373558153, -0.21622565270352814,
-0.21133161528515396, -0.2068720004091154, -0.20280892327791303},
{-0.43719139235685156, -0.7598213966798737, -0.6585749237628248,
-0.5322845552382693, -0.448757855375971, -0.3927148347089011,
-0.34846403438684637, -0.3282085906199029, -0.30678095173736136,
-0.2887470872319299, -0.27396909947717596, -0.26167398569919603,
-0.25125624496791665, -0.24230829817325297, -0.23452023358760843,
-0.2276774473084017, -0.2216094678075442, -0.21616806063878752,
-0.21127604909579473, -0.20681825752594785, -0.20275682501077855},
{-0.43975722974595155, -0.760393820579309, -0.6585160053195985,
-0.5321401815026331, -0.4486156283501787, -0.39258696760150025,
-0.3483535591631074, -0.3281149775750703, -0.3066850340599694,
-0.2886580547432578, -0.273886446806575, -0.26159676392948844,
-0.2511836295275721, -0.24223960503796999, -0.23445491558701456,
-0.2276150600761004, -0.22154964918297523, -0.2161105176458532,
-0.21122053031101456, -0.20676456053161568, -0.20270477125509484},
{-0.44231725891389867, -0.7609635941438355, -0.6584562892924255,
-0.5319956281913949, -0.44847339383282026, -0.3924591460888707,
-0.34824316493381535, -0.3280213289734206, -0.30658917726338103,
-0.2885690902153246, -0.27380386046285937, -0.26151960578144645,
-0.2511110747041959, -0.2421709696944719, -0.2343896528184471,
-0.22755272578085903, -0.22148988143896808, -0.2160530236821085,
-0.21116505888882622, -0.20671090938479075, -0.20265276197024706},
{-0.44487148806839116, -0.761530723626021, -0.6583957798380963,
-0.5318508968803354, -0.4483311524767116, -0.39233137046467936,
-0.3481328516102917, -0.3279276456627872, -0.3064933814623977,
-0.28848019364997185, -0.2737213404220584, -0.26144251121916934,
-0.251038580456972, -0.24210239209998086, -0.23432444523840343,
-0.2274904443791677, -0.2214301645323305, -0.21599557870487043,
-0.2111096347871567, -0.2066573040441074, -0.20260079711553244},
{-0.44741992542172093, -0.7620952152757076, -0.6583344810949745,
-0.5317059891366525, -0.44818890493052815, -0.39220364102036065,
-0.3480226191043335, -0.32783392848631254, -0.30639764677015696,
-0.28839136504847873, -0.27363888665987474, -0.26136548020653977,
-0.2509661467449066, -0.2420338722115423, -0.23425929280328717,
-0.22742821582741954, -0.22137049841977122, -0.21593818267139034,
-0.21105425796391525, -0.20660374446815066, -0.20254887665023874},
{-0.449962579190675, -0.7626570753399627, -0.6582723971830831,
-0.5315609065188991, -0.4480466518387106, -0.392075958045059,
-0.3479124673282038, -0.3277401782824125, -0.3063019732981522,
-0.2883026044115281, -0.27355649915167696, -0.26128851270718695,
-0.25089377352684405, -0.2419654099861198, -0.2341941954693918,
-0.22736604008192549, -0.22131088305793783, -0.21588083553886672,
-0.21099892837692158, -0.20655023061545946, -0.2024970005336201},
{-0.45249945759640786, -0.7632163100630184, -0.6582095322041681,
-0.5314156505770742, -0.4479043938415884, -0.3919483218256849,
-0.3478023961945879, -0.3276463958847361, -0.306206361156251,
-0.28821391173925087, -0.2734741778725159, -0.2612116086845361,
-0.25082146076145784, -0.24189700538051373, -0.23412915319291241,
-0.2273039170989127, -0.22125131840341727, -0.21582353726442674,
-0.2109436459839629, -0.20649676244453768, -0.20244516872487606},
{-0.455030568864336, -0.7637729256862122, -0.6581458902417773,
-0.5312702228526907, -0.44776213157535893, -0.39182073264693046,
-0.3476924056166605, -0.3275525821221766, -0.3061108104527202,
-0.28812528703121376, -0.2733919227971317, -0.26113476810177816,
-0.2507492084072811, -0.2418286583514388, -0.23406416592995988,
-0.22724184683454812, -0.22119180441274117, -0.2157662878051721,
-0.21088841074280026, -0.20644333991385774, -0.20239338118320246},
{-0.4575559212240258, -0.7643269284479437, -0.6580814753613548,
-0.5311246248787315, -0.4476198656720799, -0.39169319079124,
-0.3475824955080131, -0.3274587378188102, -0.3060153212942061,
-0.2880367302864214, -0.2733097338999303, -0.26105799092188403,
-0.2506770164226735, -0.2417603688554551, -0.233999233636535,
-0.22717982924488966, -0.22113234104235202, -0.2157090871181275,
-0.21083322261111778, -0.20638996298182377, -0.20234163786772758},
{-0.4600755229090776, -0.7648783245835984, -0.6580162916102871,
-0.5309788581798118, -0.4474775967597658, -0.3915656965388779,
-0.34747266578268965, -0.32736486379391444, -0.3059198937857682,
-0.2879482415033158, -0.27322761115500693, -0.2609812771076197,
-0.2506048847658383, -0.24169213684902463, -0.2339343562685491,
-0.22711786428594608, -0.2210729282486376, -0.2156519351602731,
-0.2107780815465713, -0.2063366316068407, -0.20228993873757173},
{-0.46258938215702383, -0.7654271203255174, -0.6579503430180003,
-0.5308329242721292, -0.4473353254623311, -0.3914382501679087,
-0.3473629163551884, -0.32727096086192003, -0.3058245280309118,
-0.28785982067980187, -0.27314555453615624, -0.26090462662150415,
-0.2505328133948246, -0.24162396228848293, -0.2338695337818275,
-0.22705595191363154, -0.2210135659879367, -0.2155948318885232,
-0.21072298750676138, -0.20628334574723534, -0.20223828375180747},
{-0.4650975072092116, -0.7659733219029208, -0.6578836335960447,
-0.5306868246635434, -0.4471930523996876, -0.39131085195421633,
-0.3472532471404203, -0.32717702983240704, -0.3057292241315684,
-0.28777146781323065, -0.27306356401683646, -0.26082803942585175,
-0.25046080226752016, -0.2415558451300314, -0.23380476613207773,
-0.22699409208377155, -0.22095425421649886, -0.2155377772597441,
-0.2106679404492433, -0.20623010536131858, -0.20218667286947845},
{-0.46759990631068926, -0.7665169355418588, -0.6578161673381302,
-0.5305405608536612, -0.44705077818774147, -0.39118350217153786,
-0.3471436580537742, -0.3270830715100902, -0.30563398218813437,
-0.287683182900421, -0.27298163957022314, -0.2607515154827809,
-0.25038885134168476, -0.24148778532978205, -0.23374005327493586,
-0.2269322847521515, -0.2208949928905366, -0.21548077123076204,
-0.21061294033153166, -0.20617691040736463, -0.20213510604960222},
{-0.4700965877101188, -0.7670579674651585, -0.6577479482202574,
-0.5303941343337677, -0.4469085034383583, -0.3910562010914195,
-0.34703414901102086, -0.326989086694789, -0.3055388022994545,
-0.287594965937634, -0.272899781169155, -0.2606750547541729,
-0.2503169605748925, -0.24141978284371127, -0.23367539516593808,
-0.22687052987444445, -0.22083578196617626, -0.21542381375833974,
-0.21055798711109946, -0.20612376084359119, -0.2020835832511635},
{-0.47258755965964017, -0.7675964238923634, -0.6576789802007477,
-0.5302475465870158, -0.44676622875950533, -0.39092894898332253,
-0.34692471992840357, -0.3268950761814474, -0.3054436845628867,
-0.2875068169206304, -0.2728179887861991, -0.2605986572017132,
-0.2502451299245987, -0.24135183762768497, -0.23361079176054433,
-0.22680882740627825, -0.22077662139950716, -0.21536690479919168,
-0.21050308074538088, -0.20607065662820884, -0.202032104433103},
{-0.4750728304147831, -0.7681323110396677, -0.6576092672203282,
-0.5301007990883427, -0.4466239547551345, -0.39080174611453733,
-0.3468153707225734, -0.3268010407600699, -0.3053486290742674,
-0.2874187358446195, -0.2727362623935971, -0.2605223227868822,
-0.25017335934808177, -0.24128394963745797, -0.23354624301411436,
-0.22674717730319943, -0.22071751114655133, -0.2153100443099874,
-0.2104482211917594, -0.2060175977193594, -0.20198066955435828},
{-0.4775524082343574, -0.7686656351198864, -0.6575388132022266,
-0.529953893304564, -0.44648168202533, -0.39067459275026173,
-0.34670610131059626, -0.32670698121575553, -0.3052536359279383,
-0.28733072270429094, -0.27265460196329394, -0.2604460514709316,
-0.25010164880249525, -0.2412161188286654, -0.23348174888190595,
-0.22668557952066448, -0.2206584511632574, -0.21525323224733234,
-0.2103934084075676, -0.20596458407516877, -0.20192927857379692},
{-0.48002630138034263, -0.7691964023423639, -0.6574676220522215,
-0.5298068306944778, -0.44633941116627857, -0.39054748915361814,
-0.3465969116099897, -0.3266128983286797, -0.30515870521677313,
-0.2872427774938237, -0.2725730074669435, -0.2603698432149308,
-0.25002999824484096, -0.24114834515685954, -0.23341730931911947,
-0.2266240340140855, -0.22059944140554627, -0.21519646856781044,
-0.21033864235013497, -0.205911615653722, -0.20187793145030464},
{-0.48249451811778477, -0.7697246189129452, -0.6573956976587275,
-0.5296596127087618, -0.4461971427702467, -0.390420435585588,
-0.3464878015386607, -0.3265187928740581, -0.30506383703217527,
-0.2871549002068777, -0.27249147887589714, -0.2602936979797408,
-0.24995840763198224, -0.2410806285774345, -0.2333529242808552,
-0.22656254073878582, -0.22054048182924846, -0.21513975322793072,
-0.21028392297670295, -0.20585869241307855, -0.20182662814270177},
{-0.4849570667146937, -0.7702502910339076, -0.657323043892862,
-0.5295122407901637, -0.44605487742569916, -0.3902934323051285,
-0.3463787710149456, -0.32642466562217143, -0.3049690314641022,
-0.287067090836604, -0.2724100161612165, -0.2602176157260258,
-0.24988687692063102, -0.24101296904572428, -0.2332885937221283,
-0.22650109965002896, -0.22048157239015742, -0.21508308618417477,
-0.21022925024451258, -0.2058058143112529, -0.2017753686097814},
{-0.4874139554419354, -0.7707734249039014, -0.657249664608528,
-0.5293647163734556, -0.4459126157172171, -0.39016647956912526,
-0.3462698199575968, -0.3263305173383424, -0.30487428860108473,
-0.28697934937565417, -0.2723286192936746, -0.26014159641424633,
-0.24981540606736513, -0.24094536651693332, -0.23322431759788112,
-0.22643971070301355, -0.22042271304401895, -0.21502646739296535,
-0.21017462411075116, -0.2057529813062257, -0.20172415281035355},
{-0.4898651925731373, -0.7712940267178954, -0.6571755636424792,
-0.5292170408854806, -0.4457703582256069, -0.39003957763238817,
-0.3461609482857503, -0.3262363487829257, -0.30477960853020725,
-0.28689167581616576, -0.27224728824374, -0.26006564000465565,
-0.24974399502861802, -0.24087782094614288, -0.23316009586294453,
-0.22637837385285087, -0.2203639037464989, -0.21496989681068487,
-0.21012004453255997, -0.2057001933559469, -0.20167298070312306},
{-0.49231078638457415, -0.771812102667121, -0.6571007448143935,
-0.5290692157452667, -0.4456281055279054, -0.3899127267477379,
-0.34605215591898825, -0.3261421607113223, -0.3046849913371571,
-0.2868040701497815, -0.2721660229816163, -0.2599897464573338,
-0.24967264376069012, -0.24081033228836823, -0.2330959284721092,
-0.2263170890546094, -0.22030514445322516, -0.21491337439366281,
-0.21006551146705688, -0.20564745041834442, -0.20162185224684626},
{-0.4947507451550719, -0.77232765893902, -0.6570252119269525,
-0.5289212423639503, -0.44548585819732306, -0.38978592716592864,
-0.345943442777259, -0.3260479538739522, -0.3045904371062161,
-0.28671653236766914, -0.27208482347720697, -0.2599139157321442,
-0.24960135221974672, -0.24074290049849098, -0.23303181538005419,
-0.22625585626328143, -0.22024643511978254, -0.21485690009820851,
-0.21001102487132467, -0.20559475245130435, -0.20157076740020963},
{-0.4971850771659135, -0.7728407017171829, -0.6569489687659044,
-0.5287731221449442, -0.44534361680339757, -0.3896591791357349,
-0.34583480878093764, -0.3259537290162751, -0.30449594592029516,
-0.28662906246048336, -0.2720036897001393, -0.2598381477887927,
-0.249530120361823, -0.2406755255313079, -0.232967756541398,
-0.22619467543379745, -0.2201877757016761, -0.21480047388056345,
-0.20995658470240547, -0.20554209941269042, -0.2015197261218781},
{-0.4996137907007241, -0.773351237181281, -0.6568720191001332,
-0.5286248564838707, -0.44520138191187064, -0.3895324829039162,
-0.3457262538507846, -0.3258594868787606, -0.3044015178609142,
-0.28654166041842044, -0.27192262161975395, -0.2597624425867562,
-0.24945894814280517, -0.24060820734151156, -0.23290375191066784,
-0.22613354652101578, -0.22012916615438433, -0.21474409569693376,
-0.20990219091730397, -0.20548949126031546, -0.2014687283705024},
{-0.502036894045379, -0.77385927150703, -0.6567943666817485,
-0.5284764467686502, -0.4450591540848382, -0.3894058387152489,
-0.3456177779079359, -0.32576522819691667, -0.3043071530082368,
-0.28645432623117356, -0.271841619205111, -0.2596868000853347,
-0.2493878355184505, -0.24054094588367023, -0.23283980144231395,
-0.22607246947973558, -0.2200706064333152, -0.2146877655034723,
-0.20984784347298682, -0.20543692795197993, -0.20141777410469036},
{-0.5044543954879097, -0.7743648108661277, -0.656716015246138,
-0.5283278943796018, -0.4449169338807217, -0.38927924681255793,
-0.3455093808739675, -0.3256709537012786, -0.30421285144110743,
-0.2863670598879833, -0.27176068242501517, -0.259611220243676,
-0.24931678244440947, -0.24047374111230357, -0.2327759050907297,
-0.2260114442647117, -0.22001209649385015, -0.21463148325632014,
-0.20979354232641023, -0.2053844094454665, -0.20136686328304337},
{-0.5068663033183907, -0.7748678614261785, -0.6566369685120405,
-0.5281792006893151, -0.4447747218542213, -0.3891527074366567,
-0.3454010626707769, -0.3255766641173852, -0.3041186132369845,
-0.2862798613775922, -0.27167981124796803, -0.2595357030206942,
-0.2492457888761728, -0.24040659298178785, -0.23271206281020734,
-0.22595047083060749, -0.21995363629129996, -0.21457524891154714,
-0.2097392874344628, -0.20533193569849842, -0.2013159958641309},
{-0.5092726258288578, -0.7753684293506627, -0.6565572301816295,
-0.528030367062895, -0.44463251855648156, -0.3890262208264608,
-0.34529282322070054, -0.32548236016582743, -0.3040244384720542,
-0.28619273068830126, -0.27159900564222245, -0.25946024837515363,
-0.24917485476912643, -0.24033950144642352, -0.23264827455497722,
-0.2258895491320524, -0.2198952257809346, -0.21451906242519814,
-0.20968507875404005, -0.20527950666879047, -0.201265171806491},
{-0.5116733713131985, -0.7758665207988704, -0.65647680394057,
-0.5278813948578494, -0.4444903245349473, -0.388899787218918,
-0.345184662446434, -0.3253880425622152, -0.3039303272211481,
-0.28610566780793967, -0.2715182655757435, -0.25938485626562197,
-0.24910398007851625, -0.24027246646041064, -0.2325845402792014,
-0.22582867912360435, -0.21983686491798005, -0.2144629237532732,
-0.20963091624196745, -0.20522712231402335, -0.20121439106865768},
{-0.5140685480670628, -0.7763621419258393, -0.6563956934580981,
-0.5277322854241824, -0.44434814033352626, -0.3887734068490573,
-0.34507658027103943, -0.32529371201718005, -0.3038362795578412,
-0.2860186727238645, -0.27143759101623416, -0.2593095266504978,
-0.24903316475945947, -0.240205487977851, -0.23252085993695243,
-0.2257678607597548, -0.2197785536576124, -0.2144068328517303,
-0.20957679985505662, -0.205174782591851, -0.20116365360911645},
{-0.5164581643877587, -0.7768552988822977, -0.6563139023870757,
-0.5275830401044803, -0.4442059664925525, -0.38864707995000736,
-0.34496857661798086, -0.3251993692364183, -0.3037422955543949,
-0.2859317454230036, -0.27135698193114416, -0.25923425948800133,
-0.24896240876696768, -0.24013856595277738, -0.23245723348225145,
-0.22570709399496303, -0.2197202919549558, -0.21435078967649884,
-0.20952272955010626, -0.20512248745990863, -0.20111295938635543},
{-0.5188422285741683, -0.7773459978146309, -0.6562314343640905,
-0.527433660233837, -0.444063803548759, -0.3885208067529681,
-0.34486065141106453, -0.3251050149206381, -0.3036483752818051,
-0.28584488589181883, -0.27127643828764153, -0.2591590547361662,
-0.24889171205591892, -0.24007170033909664, -0.23239366086903368,
-0.22564637878360766, -0.21966207976510027, -0.21429479418346833,
-0.2094687052838533, -0.20507023687578738, -0.2010623083588254},
{-0.5212207489266435, -0.7778342448647881, -0.6561482930094855,
-0.5272841471400225, -0.44392165203540385, -0.3883945874872746,
-0.3447528045744877, -0.32501064976561833, -0.30355451880981615,
-0.2857580941163243, -0.27119596005263985, -0.2590839123528684,
-0.2488210745810756, -0.24000489109064704, -0.2323301420511738,
-0.22558571508002545, -0.21960391704308316, -0.21423884632848472,
-0.2094147270130282, -0.2050180307970811, -0.2010117004849634},
{-0.5235937337469128, -0.7783200461702566, -0.6560644819274514,
-0.5271345021434136, -0.44377951248216174, -0.3882684223803647,
-0.34464503603280605, -0.32491627446217364, -0.30346072620690207,
-0.2856713700821087, -0.2711155471927967, -0.2590088322958057,
-0.24875049629706877, -0.2399381381611777, -0.23226667698247797,
-0.22552510283849486, -0.21954580374390364, -0.21418294606737093,
-0.20936079469432722, -0.20496586918132165, -0.20096113572319102},
{-0.5259611913379951, -0.7788034078639993, -0.6559800047061113,
-0.5269847265570922, -0.44363738541527276, -0.38814231165781155,
-0.34453734571092187, -0.3248218896961848, -0.3033669975403083,
-0.2855847137743067, -0.2710351996744954, -0.2589338145224942,
-0.2486799771584219, -0.2398714415043282, -0.232203265616667,
-0.2254645420132281, -0.2194877398225119, -0.21412709335589314,
-0.20930690828440285, -0.204913751986053, -0.20091061403189114},
{-0.5283231300040929, -0.7792843360743846, -0.6558948649175365,
-0.5268348216869075, -0.44349527135750094, -0.3880162555433621,
-0.34442973353412115, -0.32472749614860574, -0.3032733328760655,
-0.28549812517761564, -0.27095491746389133, -0.2588588589903054,
-0.24860951711953722, -0.23980480107368102, -0.23213990790741806,
-0.22540403255841154, -0.21942972523381699, -0.21407128814980467,
-0.20925306773991265, -0.20486167916877698, -0.20086013536945635},
{-0.5306795580505164, -0.7797628369251561, -0.6558090661178815,
-0.526684788831401, -0.4433531708281051, -0.3878902542588562,
-0.34432219942802406, -0.32463309449544664, -0.3031797322789698,
-0.2854116042763217, -0.27087470052686236, -0.25878396565642114,
-0.24853911613470955, -0.23973821682271135, -0.2320766038083335,
-0.22534357442815223, -0.21937175993268643, -0.21401553040481608,
-0.20919927301744945, -0.204809650686978, -0.20080969969424406},
{-0.5330304837835789, -0.7802389165353543, -0.6557226118473967,
-0.5265346292819972, -0.4432110843429795, -0.3877643080243655,
-0.3442147433186156, -0.3245386854078339, -0.3030861958126212,
-0.2853251510542732, -0.2707945488290459, -0.2587091344778747,
-0.24846877415811258, -0.23967168870480715, -0.2320133532729378,
-0.22528316757651348, -0.2193138438739518, -0.213959820076604,
-0.20914552407361536, -0.2047576664981219, -0.2007593069645957},
{-0.5353759155105069, -0.7807125810192745, -0.6556355056305236,
-0.5263843443229146, -0.44306901241453833, -0.38763841705809915,
-0.3441073651322274, -0.32444426955195627, -0.3029927235394382,
-0.28523876549490135, -0.2707144623358279, -0.25863436541153434,
-0.24839849114379148, -0.2396052166732966, -0.23195015625471505,
-0.22522281195753188, -0.21925597701239988, -0.2139041571208183,
-0.20909182086496703, -0.20470572655965152, -0.20070895713886344},
{-0.5377158615393587, -0.7811838364864069, -0.6555477509759544,
-0.52623393523125, -0.4429269555518371, -0.38751258157646246,
-0.34400006479552125, -0.3243498475891136, -0.3028993155206374,
-0.2851524475812131, -0.27063444101233747, -0.25855965841408957,
-0.24832826704570393, -0.23953880068138297, -0.23188701270706086,
-0.22516250752514896, -0.21919815930277203, -0.21384854149306715,
-0.20903816334802255, -0.20465383082898103, -0.20065865017533713},
{-0.5400503301789255, -0.781652689041393, -0.655459351376708,
-0.526083403277082, -0.4427849142605832, -0.387386801794086,
-0.3438928422355343, -0.32425542017573405, -0.3028059718162869,
-0.28506619729580124, -0.27055448482347155, -0.258485013442089,
-0.24825810181769856, -0.23947244068224344, -0.23182392258332613,
-0.22510225423329872, -0.21914039069978347, -0.21379297314894358,
-0.20898455147930894, -0.20460197926352275, -0.20060838603234704},
{-0.5423793297386403, -0.7821191447839481, -0.65537031031018,
-0.5259327497233532, -0.44264288904305726, -0.3872610779237693,
-0.34378569737960724, -0.32416098796335246, -0.30271269248527877,
-0.2849800146208636, -0.27047459373387817, -0.2584104304519138,
-0.24818799541348455, -0.23940613662891708, -0.23176088583678933,
-0.22504205203584077, -0.21908267115809696, -0.2137374520439899,
-0.20893098521529763, -0.20455017182066215, -0.2005581646681707},
{-0.5447028685284999, -0.7825832098088368, -0.6552806312382253,
-0.525781975826078, -0.44250088039828583, -0.38713541017657105,
-0.3436786301554418, -0.3240665515986449, -0.30261947758536534,
-0.2848938995381698, -0.27039476770795484, -0.2583359093997969,
-0.2481179477866894, -0.23933988847439633, -0.23169790242066596,
-0.2249819008865978, -0.21902500063234692, -0.21368197813373152,
-0.20887746451245937, -0.20449840845777262, -0.2005079860410911},
{-0.5470209548589618, -0.7830448902057934, -0.6551903176072135,
-0.5256310828342525, -0.44235888882189833, -0.3870097987617611,
-0.34357164049106775, -0.32397211172344553, -0.3025263271731725,
-0.28480785202911696, -0.27031500670988085, -0.2582614502418141,
-0.24804795889082148, -0.23927369617159067, -0.23163497228812896,
-0.2249218007393563, -0.21896737907713376, -0.21362655137367134,
-0.20882398932723514, -0.2044466891322032, -0.2004578501093927},
{-0.5493335970408724, -0.7835041920594887, -0.6550993728481053,
-0.5254800719899446, -0.4422169148062765, -0.38688424388685444,
-0.3434647283148254, -0.32387766897473436, -0.30243324130417726,
-0.2847218720746726, -0.270235310703568, -0.25818705293387645,
-0.24797802867928717, -0.23920755967332288, -0.23157209539225848,
-0.22486175154782312, -0.21890980644700908, -0.21357117171926418,
-0.20877055961602226, -0.2043950138013014, -0.20040775683131826},
{-0.551640803385365, -0.7839611214494545, -0.6550078003765003,
-0.525328944528367, -0.44207495884053133, -0.3867587457576427,
-0.34335789355541035, -0.3237832239846662, -0.302340220032763,
-0.2846359596554152, -0.2701556796527172, -0.25811271743175496,
-0.24790815710539227, -0.23914147893234053, -0.23150927168610552,
-0.22480175326569418, -0.2188522826964937, -0.21351583912595062,
-0.20871717533522072, -0.2043433824223867, -0.2003577061651389},
{-0.5539425822037821, -0.7844156844500619, -0.654915603592733,
-0.5251777016777985, -0.44193302141046575, -0.3866333045781555,
-0.3432511361418231, -0.32368877738059143, -0.30224726341219216,
-0.28455011475155007, -0.2700761135207848, -0.2580384436910661,
-0.24783834412233252, -0.2390754539013294, -0.23144650112266085,
-0.22474180584660491, -0.21879480778008464, -0.21346055354915222,
-0.2086638364412121, -0.20429179495277894, -0.20030769806910553},
{-0.5562389418075897, -0.7848678871304385, -0.6548227858819025,
-0.5250263446597706, -0.4417911029987053, -0.3865079205507127,
-0.34314445600339255, -0.3235943297850621, -0.3021543714946481,
-0.2844643373428838, -0.2699966122709979, -0.25796423166728905,
-0.24776858968320836, -0.239009484532883, -0.23138378365483542,
-0.2246819092441586, -0.21873738165222956, -0.21340531494424386,
-0.20861054289034464, -0.20424025134978074, -0.2002577325014548},
{-0.5585298905082843, -0.785317735554429, -0.6547293506139654,
-0.5248748746889647, -0.4416492040845774, -0.38638259387591484,
-0.34303785306976575, -0.32349988181583306, -0.3020615443312172,
-0.2843786274088415, -0.2699171758663488, -0.2578900813157414,
-0.24769889374099868, -0.2389435707795331, -0.2313211192355113,
-0.2246220634119016, -0.21868000426734563, -0.21335012326659453,
-0.20855729463894582, -0.20418875157067706, -0.20020780942042088},
{-0.5608154366173166, -0.7857652357805415, -0.6546353011437748,
-0.5247232929733174, -0.4415073251442606, -0.3862573247526572,
-0.3429313272708924, -0.3234054340858915, -0.3019687819719175,
-0.2842929849284563, -0.26983780426959386, -0.2578159925915863,
-0.24762925624860427, -0.2388777125937151, -0.23125850781748722,
-0.22456226830332698, -0.21862267557981824, -0.21329497847152712,
-0.2085040916433169, -0.20413729557274488, -0.20015792878422806},
{-0.5630955884460029, -0.7862103938619052, -0.6545406408111761,
-0.524571600714097, -0.44136546665075016, -0.38613211337816067,
-0.3428248785370483, -0.3233109872034813, -0.3018760844657104,
-0.284207409880399, -0.2697584974432919, -0.25774196544988165,
-0.24755967715882063, -0.23881190992783397, -0.2311959493535333,
-0.2245025238719222, -0.21856539554400004, -0.21323988051436327,
-0.20845093385976413, -0.20408588331327981, -0.20010809055110085},
{-0.5653703543054411, -0.7866532158462041, -0.6544453729410563,
-0.5244197991058188, -0.4412236290738313, -0.38600695994794076,
-0.3427185067988062, -0.3232165417720916, -0.3017834518605044,
-0.2841219022429617, -0.26967925534975157, -0.2576679998455036,
-0.24749015642434863, -0.2387461627341961, -0.23113344379634415,
-0.22444283007111437, -0.2185081641142192, -0.21318482935038185,
-0.20839782124454487, -0.204034514749517, -0.20005829467925706},
{-0.5676397425064289, -0.7870937077756319, -0.6543495008433867,
-0.5242678893364103, -0.44108181288019965, -0.38588186465586055,
-0.34261221198705755, -0.3231220983905, -0.30169088420315376,
-0.28403646199406973, -0.2696000779510715, -0.2575940957332077,
-0.2474206939977939, -0.23868047096503708, -0.23107099109857626,
-0.22438318685426956, -0.21845098124474965, -0.21312982493485277,
-0.20834475375394043, -0.2039831898387335, -0.20000854112690072},
{-0.5699037613593793, -0.7875318756868385, -0.6542530278133195,
-0.52411587258714, -0.4409400185333402, -0.38575682769410913,
-0.34250599403298465, -0.3230276576527719, -0.3015983815394886,
-0.2839510891112725, -0.2695209652091166, -0.25752025306760984,
-0.24735128983165414, -0.23861483457253135, -0.23100859121282585,
-0.22432359417475706, -0.2183938468898576, -0.21307486722300467,
-0.20829173134416412, -0.20393190853815765, -0.19995882985225089},
{-0.5721624191742428, -0.787967725610891, -0.6541559571312381,
-0.5239637500327112, -0.4407982464936884, -0.3856318492532165,
-0.34239985286806274, -0.32293322014827347, -0.30150594391431484,
-0.2838657835717609, -0.26944191708554077, -0.25744647180317565,
-0.24728194387833724, -0.2385492535087818, -0.23094624409163544,
-0.22426405198586877, -0.2183367610037734, -0.21301995617006472,
-0.20823875397142694, -0.2038806708050461, -0.19990916081349788},
{-0.5744157242604176, -0.7884012635732021, -0.6540582920628127,
-0.5238115228413118, -0.44065649721858247, -0.3855069295220993,
-0.3422937884240776, -0.32283878646171427, -0.3014135713714263,
-0.28378054535236724, -0.2693629335417992, -0.25737275189424935,
-0.24721265609016577, -0.2384837277258368, -0.23088394968750311,
-0.22420456024088, -0.21827972354068126, -0.2129650917312266,
-0.20818582159195698, -0.2038294765966274, -0.19985953396884296},
{-0.5766636849266795, -0.7888324955935073, -0.6539600358590769,
-0.5236591921745691, -0.4405147711622409, -0.3853820686880124,
-0.34218780063310494, -0.3227443571731309, -0.3013212639536166,
-0.2836953744295679, -0.2692840145390973, -0.2572990932950405,
-0.24714342641936085, -0.23841825717566056, -0.2308217079528675,
-0.22414511889301464, -0.21822273445476403, -0.21291027386166433,
-0.20813293416192505, -0.20377832587013334, -0.19980994927647458},
{-0.5789063094810902, -0.7892614276857866, -0.6538611917564814,
-0.5235067591876846, -0.44037306877587623, -0.38525726693661544,
-0.34208188942749673, -0.3226499328579366, -0.3012290217026742,
-0.28361027077947537, -0.2692051600384535, -0.2572254959596046,
-0.24707425481807355, -0.23835284181016814, -0.23075951884013302,
-0.22408572789547954, -0.21816579370014347, -0.21285550251653013,
-0.20808009163750302, -0.20372721858278894, -0.19976040669457873},
{-0.5811436062309263, -0.7896880658582388, -0.6537617629769548,
-0.5233542250293814, -0.44023139050760074, -0.38513252445193025,
-0.34197605473992154, -0.32255551408691585, -0.30113684465941737,
-0.28352523437786836, -0.2691263700006729, -0.25715195984189787,
-0.24700514123833467, -0.23828748158119928, -0.23069738230164438,
-0.22402638720142937, -0.21810890123094853, -0.21280077765096206,
-0.2080272939748538, -0.20367615469180764, -0.19971090618134388},
{-0.5833755834825975, -0.7901124161132179, -0.6536617527279793,
-0.5232015908419798, -0.44008973680253266, -0.3850078414163939,
-0.34187029650329864, -0.3224611014262553, -0.3010447328636834,
-0.28344026520015475, -0.2690476443863371, -0.25707848489571616,
-0.24693608563210895, -0.2382221764405419, -0.2306352982896962,
-0.2239670967639812, -0.21805205700126135, -0.212746099220082,
-0.20797454113010838, -0.20362513415441386, -0.1996614476949443},
{-0.5856022495415609, -0.7905344844471914, -0.6535611642026296,
-0.5230488577614663, -0.4399481081028137, -0.3848832180108722,
-0.3417646146508561, -0.32236669543755364, -0.30095268635434214,
-0.28335536322141736, -0.26896898315583223, -0.2570050710747531,
-0.24686708795126217, -0.23815692633991292, -0.23057326675653897,
-0.22390785653623302, -0.21799526096512772, -0.2126914671789687,
-0.2079218330594034, -0.20357415692780853, -0.1996120311935585},
{-0.5878236127122549, -0.7909542768506919, -0.6534600005796629,
-0.5228960269174147, -0.43980650484752426, -0.3847586544145914,
-0.3416590091160868, -0.3222722966778481, -0.300860705169316,
-0.28327052841638234, -0.268890386269343, -0.2569317183325535,
-0.24679814814758216, -0.23809173123097055, -0.23051128765437812,
-0.22384866647123017, -0.21793851307658796, -0.21263688148271698,
-0.2078691697188397, -0.20352322296920142, -0.19956265663536668},
{-0.5900396812980135, -0.7913717993082691, -0.653358265023552,
-0.522743099433163, -0.43966492747285046, -0.3846341508052688,
-0.34155347983280665, -0.3221779056996441, -0.3007687893455712,
-0.28318576075944324, -0.2688118536868358, -0.2568584266225471,
-0.24672926617277186, -0.2380265910653106, -0.2304493609353756,
-0.22378952652199594, -0.21788181328964315, -0.21258234208636556,
-0.20781655106452315, -0.20347233223578873, -0.19951332397852667},
{-0.5922504636009851, -0.7917870577984247, -0.653255960684568,
-0.5225900764257316, -0.43952337641194683, -0.384509707359021,
-0.3414480267351694, -0.32208352305090704, -0.3006769389191445,
-0.28310106022466686, -0.2687333853680917, -0.2567851958980548,
-0.24666044197843318, -0.2379615057944885, -0.2303874865516532,
-0.2237304366415299, -0.21782516155827716, -0.21252784894497473,
-0.20776397705254235, -0.2034214846847789, -0.19946403318122152},
{-0.5944559679220676, -0.7922000582936009, -0.6531530906988248,
-0.5224369590058895, -0.43938185209507125, -0.38438532425040906,
-0.3413426497577898, -0.32198914927509525, -0.3005851539251335,
-0.28301642678575895, -0.2686549812726874, -0.25671202611224075,
-0.24659167551610017, -0.23789647536996716, -0.2303256644552804,
-0.2236713967827738, -0.21776855783646415, -0.21247340201356266,
-0.20771144763896823, -0.2033706802733453, -0.19941478420159167},
{-0.5966562025608242, -0.7926108067601021, -0.6530496581883573,
-0.5222837482782599, -0.43924035494957764, -0.38426100165249344,
-0.34123734883602974, -0.32189478491120493, -0.30049343439772774,
-0.2829318604161173, -0.2685766413599942, -0.25663891721816523,
-0.24652296673723173, -0.23783149974319484, -0.23026389459827457,
-0.22361240689866904, -0.21771200207812097, -0.212419001247139,
-0.20765896277986204, -0.20331991895869192, -0.19936557699782312},
{-0.5988511758154078, -0.7930193091580585, -0.6529456662611677,
-0.5221304453412002, -0.43909888539985886, -0.38413673973674267,
-0.3411321239064256, -0.32180043049374607, -0.300401780370201,
-0.28284736108879516, -0.2684983655891985, -0.2565658691687742,
-0.2464543155931909, -0.23776657886551822, -0.2302021769326326,
-0.22355346694209866, -0.21765549423716493, -0.21236464660068735,
-0.2076065224312647, -0.20326920069798518, -0.19931641152805607},
{-0.6010408959824882, -0.7934255714413845, -0.652841118011285,
-0.5219770512870086, -0.43895744386748403, -0.3840125386731459,
-0.34102697490752854, -0.321706086552797, -0.30031019187491353,
-0.28276292877653175, -0.26842015391927904, -0.25649288191688857,
-0.2463857220352574, -0.23770171268825202, -0.23014051141030056,
-0.22349457686591992, -0.21759903426747562, -0.21231033802918406,
-0.20755412654923155, -0.20321852544840993, -0.19926728775043862},
{-0.6032253713571726, -0.7938295995577243, -0.6527360165188443,
-0.5218235672018132, -0.4388160307710897, -0.3838883986301591,
-0.3409219017811595, -0.3216117536140244, -0.30021866894336674,
-0.28267856345174375, -0.2683420063090445, -0.2564199554152236,
-0.24631718601465558, -0.2376369011626696, -0.23007889798318498,
-0.2234357366229876, -0.21754262212294187, -0.2122560754876006,
-0.20750177508977832, -0.2031678931671398, -0.1992182056231428},
{-0.6054046102329418, -0.794231399448413, -0.6526303648501117,
-0.5216699941656732, -0.4386746465264795, -0.38376431977471803,
-0.34081690447430346, -0.3215174321986649, -0.30012721160613237,
-0.28259426508650626, -0.2682639227170891, -0.2563470896163572,
-0.246248707482502, -0.23757214423996165, -0.2300173366031419,
-0.2233769461660962, -0.21748625775741115, -0.21220185893087234,
-0.20744946800891859, -0.20311730381133186, -0.1991691651042923},
{-0.6075786209015691, -0.7946309770484232, -0.6525241660575791,
-0.5215163332526345, -0.43853329154665455, -0.3836403022723002,
-0.34071198294180544, -0.3214231228236084, -0.3000358198929338,
-0.2825100336525782, -0.2681859031018343, -0.2562742844727528,
-0.24618028638985273, -0.23750744187127937, -0.22995582722199995,
-0.22331820544801856, -0.21742994112470135, -0.21214768831394062,
-0.2073972052626736, -0.20306675733815074, -0.1991201661520479},
{-0.6097474116530394, -0.7950283382863327, -0.6524174231800111,
-0.5213625855306698, -0.43839196624172916, -0.38351634628686126,
-0.34060713714997226, -0.32132882600137, -0.299944493832621,
-0.28242586912141043, -0.268107947421512, -0.2562015399367964,
-0.24611192268769405, -0.23744279400773077, -0.2298943697915578,
-0.22325951442152242, -0.21737367217863507, -0.2120935635917232,
-0.20734498680703503, -0.20301625370473964, -0.1990712087245534},
{-0.6119109907755002, -0.7954234890842682, -0.6523101392424919,
-0.5212087520618289, -0.4382506710190791, -0.383392451980898,
-0.34050236708126047, -0.32123454224013853, -0.29985323345318915,
-0.28234177146413336, -0.26803005563417004, -0.256128855960726,
-0.2460436163269309, -0.23737820060036313, -0.22983296426355304,
-0.22320087303931996, -0.21731745087298387, -0.21203948471911038,
-0.2072928125979882, -0.20296579286826302, -0.19902229277995012},
{-0.6140693665551606, -0.7958164353578585, -0.6522023172564902,
-0.5210548339021605, -0.4381094062832037, -0.3832686195154239,
-0.34039767274011745, -0.3211402720437803, -0.299762038781768,
-0.2822577406515545, -0.2679522276976729, -0.2560562324966822,
-0.24597536725838748, -0.23731366160016115, -0.22977161058970755,
-0.22314228125411006, -0.21726127716153987, -0.21198545165102536,
-0.20724068259152653, -0.2029153747858336, -0.19897341827636492},
{-0.6162225472762389, -0.7962071830162007, -0.6520939602199292,
-0.5209008321017854, -0.43796817243590686, -0.3831448490499967,
-0.34029305416010386, -0.32104601591187293, -0.29967090984464934,
-0.2821737766541529, -0.2678744635696888, -0.2559836694966802,
-0.24590717543281287, -0.2372491769580732, -0.2297103087216928,
-0.22308373901855805, -0.21720515099805734, -0.2119314643423175,
-0.20718859674359866, -0.2028649994145833, -0.19892458517193337},
{-0.6183705412208917, -0.7965957379618206, -0.6519850711172372,
-0.5207467477050041, -0.43782696987621955, -0.38302114074273963,
-0.3401885114123114, -0.32095177433973643, -0.2995798466673117,
-0.2820898794421022, -0.2677967632077355, -0.255911166912668,
-0.24583904080090635, -0.23718474662500794, -0.22964905861115492,
-0.22302524628532816, -0.21714907233626007, -0.21187752274788196,
-0.2071365550101921, -0.20281466671165432, -0.19887579342478479},
{-0.6205133566691268, -0.796982106090604, -0.6518756529194037,
-0.5205925817501568, -0.4376857990003789, -0.38289749475030616,
-0.34008404461497965, -0.3208575478184299, -0.299488849274377,
-0.2820060489852721, -0.2677191265691382, -0.25583872469644264,
-0.24577096331326748, -0.23712037055181204, -0.2295878602097074,
-0.22296680300702199, -0.21709304112988811, -0.21182362682256808,
-0.2070845573472526, -0.20276437663414332, -0.19882704299306425},
{-0.6226510018987562, -0.7973662932917831, -0.651765708584036,
-0.5204383352698505, -0.437544660201973, -0.38277391122794646,
-0.33997965394446134, -0.3207633368348018, -0.29939791768966206,
-0.28192228525319507, -0.267641553611041, -0.25576634279972127,
-0.24570294292046946, -0.23705604868928198, -0.2295267134689114,
-0.22290840913624915, -0.21703705733263093, -0.2117697765212193,
-0.20703260371075108, -0.20271412913915166, -0.19877833383489021},
{-0.624783485185303, -0.7977483054478708, -0.6516552410554123,
-0.5202840092908161, -0.43740355387180285, -0.382650390329456,
-0.33987533964716005, -0.3206691418714835, -0.2993070519361657,
-0.2818385882150869, -0.2675640442904263, -0.2556940211741068,
-0.24563497957295785, -0.2369917809881758, -0.2294656183403169,
-0.2228500646255776, -0.2169811208981862, -0.21171597179867865,
-0.20698069405660274, -0.20266392418378265, -0.19872966590838473},
{-0.6269108148019534, -0.7981281484346365, -0.6515442532645617,
-0.5201296048340409, -0.437262480398014, -0.382526932207229,
-0.33977110205257344, -0.32057496340694336, -0.29921625203609914,
-0.2817549578398573, -0.26748659856409057, -0.2556217597711027,
-0.24556707322114818, -0.23692756739919915, -0.22940457477543635,
-0.2227917694275621, -0.21692523178024226, -0.21166221260978585,
-0.2069288283407682, -0.202613761725114, -0.19868103917166982},
{-0.6290329990194674, -0.7985058281210403, -0.6514327481292881,
-0.5199751229148114, -0.4371214401660826, -0.3824035370122621,
-0.33966694158711813, -0.3204808019154872, -0.29912551801086223,
-0.28167139409608877, -0.26740921638867077, -0.25554955854211014,
-0.24549922381539013, -0.2368634078730194, -0.2293435827257393,
-0.22273352349472905, -0.2168693899324506, -0.21160849890933542,
-0.2068770065191876, -0.20256364172021263, -0.19863245358285692},
{-0.631150046106131, -0.7988813503692247, -0.6513207285542569,
-0.519820564542633, -0.4369804335587779, -0.38228020489413617,
-0.33956285878856196, -0.32038665786728826, -0.29903484988107304,
-0.2815878969520468, -0.2673318977206254, -0.2554774174384378,
-0.2454314313059518, -0.23679930236024682, -0.2292826421426682,
-0.2226753267795847, -0.21681359530846203, -0.21155483065216757,
-0.20682522854777435, -0.2025135641261554, -0.19858390910006712},
{-0.6332619643276741, -0.7992547210344368, -0.6512081974310325,
-0.5196659307214145, -0.4368394609562826, -0.3821569360010513,
-0.33945885432089906, -0.3202925317284159, -0.29894424766657735,
-0.2815044663756806, -0.26725464251626085, -0.25540533641127944,
-0.2453636956430596, -0.23673525081146524, -0.22922175297763842,
-0.22261717923461694, -0.2167578478619084, -0.21150120779305426,
-0.2067734943824545, -0.20246352889998928, -0.19853540568140013},
{-0.635368761947209, -0.7996259459650138, -0.6510951576381365,
-0.5195112224493397, -0.4366985227360617, -0.38203373047982425,
-0.33935492898936004, -0.3201984239608531, -0.2988537113864366,
-0.28142110233460615, -0.26717745073170523, -0.25533331541175414,
-0.2452960167768416, -0.23667125317720356, -0.22916091518204718,
-0.22255908081228137, -0.216702147546412, -0.21144763028681715,
-0.2067218039791627, -0.20241353599877046, -0.19848694328496666},
{-0.6374704472251621, -0.7999950310023253, -0.6509816120411245,
-0.5193564407190131, -0.4365576192730254, -0.38191058847589476,
-0.33925108375544044, -0.3201043350225062, -0.2987632410589408,
-0.2813378047961294, -0.2671003223229128, -0.25526135439085046,
-0.2452283946573829, -0.2366073094079458, -0.22910012870723656,
-0.22250103146502237, -0.2166464943155993, -0.21139409808823423,
-0.20667015729380012, -0.20236358537952742, -0.19843852186887984},
{-0.6395670284192077, -0.8003619819807408, -0.650867563492604,
-0.5192015865174682, -0.4364167509394795, -0.3817875101333681,
-0.3391473197515951, -0.3200102653672647, -0.298672836701653,
-0.2812545737272367, -0.26702325724571097, -0.25518945329949955,
-0.2451608292347231, -0.23654341945414203, -0.22903939350454133,
-0.2224430311452728, -0.2165908881230485, -0.21134061115207833,
-0.2066185542823056, -0.20231367699929625, -0.1983901413912172},
{-0.6416585137842058, -0.8007268047275939, -0.6507530148323293,
-0.5190466608261098, -0.4362759181050837, -0.3816644955949279,
-0.33904363829544115, -0.3199162154449842, -0.29858249833134703,
-0.2811714090945691, -0.26694625545572476, -0.25511761208851513,
-0.24509332045880983, -0.2364795832662031, -0.2289787095252624,
-0.22238507980542524, -0.21653532892236507, -0.21128716943313694,
-0.20656699490056674, -0.20226381081508718, -0.19834180181008898},
{-0.6437449115721312, -0.8010895050631232, -0.6506379688872316,
-0.518891664620891, -0.4361351211370079, -0.38154154500198767,
-0.3389400409032536, -0.31982218570153986, -0.29849222596407876,
-0.2810883108644576, -0.26686931690844506, -0.2550458307086152,
-0.24502586827955714, -0.23641580079448116, -0.22891807672065825,
-0.22232717739786428, -0.21647981666711932, -0.2112337728861619,
-0.20651547910451207, -0.20221398678391853, -0.1982935030835868},
{-0.6458262300320069, -0.8014500888004528, -0.6505224284714775,
-0.5187365988722136, -0.4359943603997736, -0.38141865849456885,
-0.3388365293025287, -0.31972817657882546, -0.2984020196151788,
-0.2810052790029216, -0.26679244155920584, -0.2549741091104614,
-0.24495847264678575, -0.23635207198931246, -0.22885749504198946,
-0.22226932387496892, -0.21642435131087173, -0.21118042146592828,
-0.2064640068500437, -0.20216420486279668, -0.19824524516980366},
{-0.6479024774098496, -0.8018085617455355, -0.6504063963865351,
-0.5185814645449902, -0.43585363625540874, -0.3812958362113701,
-0.3387331054434457, -0.3196341885147928, -0.298311879299215,
-0.280922313475621, -0.26671562936316096, -0.25490244724456956,
-0.24489113351029396, -0.2362883968009678, -0.22879696444047343,
-0.2222115191890718, -0.21636893280720146, -0.21112711512719012,
-0.206412578093067, -0.20211446500870237, -0.19819702802680692},
{-0.6499736619486001, -0.8021649296971325, -0.6502898754212254,
-0.518426262598763, -0.4357129490634276, -0.3811730782897937,
-0.33862977150909046, -0.31954022194348136, -0.2982218050300508,
-0.28083941424791314, -0.2666388802753424, -0.25483084506139697,
-0.24482385081980576, -0.23622477517971485, -0.22873648486728995,
-0.22215376329252456, -0.21631356110962627, -0.2110738538246921,
-0.20636119278949142, -0.2020647671786416, -0.19814885161269855},
{-0.6520397918880527, -0.8025191984467575, -0.6501728683517607,
-0.5182709939875638, -0.43557229918076323, -0.3810503848658972,
-0.3385265299242977, -0.3194462772950207, -0.2981317968208429,
-0.2807565812848283, -0.2665621942506089, -0.2547593025113215,
-0.24475662452499009, -0.2361612070757467, -0.22867605627362225,
-0.2220960561376181, -0.2162582361717078, -0.2110206375131902,
-0.2063098508952239, -0.20201511132958627, -0.198100715885554},
{-0.6541008754648093, -0.8028713737786496, -0.6500553779418257,
-0.5181156596601105, -0.4354316869619364, -0.3809277560744462,
-0.3384233833629691, -0.3193523549956619, -0.29804185468401245,
-0.28067381455107027, -0.266485571243658, -0.25468781954461445,
-0.24468945457545443, -0.23609769243924356, -0.22861567861060367,
-0.2220383976766629, -0.2162029579469654, -0.21096746614741307,
-0.20625855236616655, -0.2019654974185026, -0.1980526208034441},
{-0.6561569209121934, -0.8032214614697184, -0.6499374069426045,
-0.5179602605597241, -0.435291112758885, -0.38080519204891217,
-0.33832033475382994, -0.31925845546782994, -0.2979519786313283,
-0.2805911140110036, -0.26640901120907023, -0.254616396111482,
-0.24462234092076762, -0.23603423122033038, -0.22855535182937398,
-0.2219807878619446, -0.21614772638892357, -0.21091433968211754,
-0.2062072971582305, -0.2019159254023865, -0.1980045663244494},
{-0.6582079364602146, -0.8035694672895256, -0.6498189580928511,
-0.5178047976243819, -0.43515057692113046, -0.3806826929214458,
-0.3382173872845462, -0.31916457913006857, -0.2978621686738106,
-0.280508479628692, -0.26633251410124104, -0.2545450321620152,
-0.24455528351043287, -0.23597082336911293, -0.2284950758810065,
-0.22192322664573663, -0.21609254145110338, -0.21086125807201964,
-0.2061560852273224, -0.20186639523816977, -0.19795655240662552},
{-0.6602539303354824, -0.8039153970002307, -0.64970003411895,
-0.5176492717868075, -0.4350100797957493, -0.38056025882296796,
-0.3381145444041546, -0.31907072639717565, -0.297772424821829,
-0.2804259113678543, -0.26625607987444605, -0.2544737276462473,
-0.24448828229389585, -0.23590746883565605, -0.22843485071658548,
-0.22186571398028976, -0.2160374030870059, -0.2108082212718697,
-0.2061049165293513, -0.2018169068828383, -0.19790857900806308},
{-0.6622949107611608, -0.8042592563565714, -0.6495806377349451,
-0.5174936839743828, -0.4348696217273185, -0.38043788988307287,
-0.33801180982383927, -0.3189768976801389, -0.2976827470850588,
-0.2803434091918992, -0.2661797084828045, -0.2544024825141178,
-0.24442133722055753, -0.2358441675699827, -0.22837467628717098,
-0.22180824981784025, -0.21598231125013626, -0.21075522923638929,
-0.20605379102021834, -0.20176746029332457, -0.19786064608682802},
{-0.6643308859569059, -0.8046010511058013, -0.6494607716426165,
-0.5173380351093092, -0.43472920305805984, -0.38031558623012623,
-0.3379091875159791, -0.31888309338618825, -0.2975931354724944,
-0.2802609730639147, -0.26610339988028253, -0.25433129671549093,
-0.24435444823977315, -0.23578091952209201, -0.2283145525437901,
-0.22175083411062754, -0.2159272658939857, -0.21070228192029922,
-0.2060027086558357, -0.20171805542660226, -0.1978127536009616},
{-0.6663618641387952, -0.8049407869876761, -0.6493404385315138,
-0.5171823261085058, -0.4345888241276882, -0.38019334799120874,
-0.33780668171155476, -0.31878931391882726, -0.29750358999247745,
-0.28017860294666724, -0.26602715402072236, -0.2542601702001399,
-0.24428761530083187, -0.235717724641944, -0.22825447943745777,
-0.22169346681086252, -0.21587226697203268, -0.21064937927833857,
-0.20595166939212883, -0.20166869223960598, -0.19776490150855044},
{-0.6683878535192758, -0.8052784697343982, -0.6492196410790223,
-0.5170265578837194, -0.43444848527357666, -0.3800711752921504,
-0.3377042968959492, -0.31869555967783464, -0.2974141106526663,
-0.2800962988026038, -0.2659509708577905, -0.2541891029177669,
-0.24422083835298836, -0.23565458287946775, -0.2281944569191588,
-0.2216361478707477, -0.2158173144377881, -0.21059652126521852,
-0.20590067318500208, -0.2016193706892877, -0.19771708976766372},
{-0.6704088623071112, -0.8056141050706013, -0.6490983819504239,
-0.5168707313415708, -0.43430818683072897, -0.37994906825758107,
-0.3376020378032358, -0.3186018310593281, -0.29732469746009815,
-0.28001406059387907, -0.2658748503450779, -0.2541180948179985,
-0.24415411734544112, -0.23559149418456535, -0.22813448493988137,
-0.22157887724250158, -0.21576240824472603, -0.2105437078356954,
-0.20584971999039753, -0.2015700907326277, -0.19766931833637658},
{-0.6724248987073062, -0.8059476987132876, -0.6489766637989112,
-0.5167148473834524, -0.4341679291316871, -0.37982702701082444,
-0.33749990940887986, -0.3185081284557299, -0.29723535042112315,
-0.27993188828229487, -0.2657987924359567, -0.2540471458503802,
-0.24408745222732986, -0.23552845850708878, -0.2280745634505722,
-0.2215216548782722, -0.2157075483462968, -0.2104909389444568,
-0.20579880976420556, -0.20152085232652572, -0.19762158717273437},
{-0.6744359709210559, -0.8062792563718116, -0.6488544892656969,
-0.5165589069057306, -0.4340277125067394, -0.37970505167403196,
-0.337397916921218, -0.31841445225584175, -0.2971460695414621,
-0.2798497818293882, -0.2657227970837151, -0.2539762559643627,
-0.24402084294778123, -0.23546547579687852, -0.22801469240213793,
-0.2214644807302554, -0.2156527346959936, -0.2104382145462274,
-0.2057479424623626, -0.20147165542795914, -0.19757389623483002},
{-0.6764420871457004, -0.8066087837478382, -0.6487318609800088,
-0.5164029107996415, -0.4338875372837287, -0.37958314236810864,
-0.337296065771457, -0.3183208028448523, -0.29705685482621613,
-0.27976774119636416, -0.2656468642414938, -0.25390542510935793,
-0.2439542894558376, -0.23540254600374644, -0.22795487174553877,
-0.22140735475060305, -0.2155979672472651, -0.21038553459575451,
-0.20569711804080373, -0.20142249999387823, -0.19752624548073708},
{-0.6784432555746431, -0.8069362865353047, -0.6486087815591788,
-0.5162468599513461, -0.4337474037882186, -0.37946129921274807,
-0.33719436160259053, -0.3182271806043339, -0.2969677062798343,
-0.2796857663441439, -0.26557099386228694, -0.25383465323467225,
-0.24388779170051694, -0.23533966907746157, -0.22789510143165964,
-0.22135027689148748, -0.21554324595360097, -0.2103328990477445,
-0.20564633645545957, -0.2013733859812386, -0.19747863486855333},
{-0.6804394843973097, -0.8072617704203808, -0.6484852536086847,
-0.5160907552420381, -0.4336073123434594, -0.3793395223264623,
-0.33709281025719806, -0.31813358591231816, -0.2968786239061427,
-0.27960385723333825, -0.2654951858989768, -0.2537639402895632,
-0.24382134963079244, -0.23527684496776918, -0.22783538141138682,
-0.22129324710505086, -0.2154885707684405, -0.21028030785693794,
-0.20559559766229227, -0.20132431334700251, -0.19743106435636634},
{-0.6824307817990851, -0.8075852410814566, -0.6483612797221957,
-0.5159345975478198, -0.43346726327033874, -0.3792178118265286,
-0.33699141776425734, -0.31804001914325847, -0.29678960770836377,
-0.27952201382427383, -0.2654194403042896, -0.2536932862231875,
-0.24375496319558287, -0.23521407362439797, -0.2277757116355819,
-0.2212362653434237, -0.21543394164526064, -0.21022776097805804,
-0.20554490161721842, -0.201275282048137, -0.19738353390228408},
{-0.6844171559612662, -0.8079067041890738, -0.6482368624816264,
-0.5157783877398855, -0.4333272568875457, -0.37909616782905686,
-0.336890190325123, -0.317946480668128, -0.29670065768909437,
-0.2794402360769908, -0.26534375703083235, -0.25362269098465273,
-0.24368863234378557, -0.23515135499702838, -0.2277160920550904,
-0.22117933155875658, -0.21537935853750576, -0.2101752583658216,
-0.20549424827618593, -0.20122629204161, -0.19733604346440048},
{-0.6863986150609874, -0.808226165405913, -0.6481120044571906,
-0.5156221266844325, -0.4331872935113672, -0.37897459044897447,
-0.33678913429866614, -0.3178529708543584, -0.2966117738503404,
-0.27935852395123406, -0.2652681360310982, -0.25355215452299207,
-0.24362235702423604, -0.23508868903533314, -0.22765652262077854,
-0.22112244570316286, -0.21532482139864123, -0.21012279997498998,
-0.20544363759518403, -0.2011773432844175, -0.19728859300086204},
{-0.6883751672711832, -0.8085436303867588, -0.6479867082074502,
-0.5154658152427218, -0.43304737345590394, -0.3788530798000083,
-0.33668825618591497, -0.31775949006591253, -0.2965229561934648,
-0.2792768774064827, -0.26519257725741374, -0.2534816767871586,
-0.2435561371857263, -0.23502607568895198, -0.22759700328345261,
-0.22106560772877393, -0.21527033018213235, -0.21007038576028442,
-0.20539306953015457, -0.20112843573353545, -0.19724118246979774},
{-0.690346820760521, -0.8088591047784512, -0.6478609762793637,
-0.5153094542711709, -0.43290749703300124, -0.3787316359947661,
-0.33658756261404366, -0.31766603866331355, -0.2964342047192922,
-0.2791952964019256, -0.26511708066201783, -0.25341125772605155,
-0.2434899727770308, -0.23496351490749065, -0.2275375339939214,
-0.2210088175877059, -0.21521588484141693, -0.21001801567643685,
-0.20534254403707433, -0.2010795693459843, -0.19719381182933884},
{-0.6923135836933586, -0.8091725942198751, -0.6477348112083396,
-0.5151530446212241, -0.43276766455220395, -0.37861025914462604,
-0.33648706032004916, -0.3175726170036501, -0.2963455194280214,
-0.2791137808964905, -0.2650416461970111, -0.2533408972884937,
-0.2434238637468691, -0.2349010066405592, -0.22747811470299048,
-0.2209520752320631, -0.21516148532996385, -0.20996568967820942,
-0.20529206107191553, -0.20103074407875213, -0.1971464810376617},
{-0.6942754642296753, -0.809484104341903, -0.6476082155182818,
-0.5149965871395814, -0.4326278763209189, -0.3784889493598862,
-0.33638675613405383, -0.3174792254406011, -0.29625690031926794,
-0.2790323308488388, -0.2649662738143525, -0.2532705954232349,
-0.2433578100439262, -0.23483855083770258, -0.22741874536142026,
-0.22089538061394884, -0.21510713160122102, -0.2099134077203327,
-0.2052416205906598, -0.20098195988887343, -0.19709919005293805},
{-0.6962324705250231, -0.8097936407673674, -0.6474811917216432,
-0.5148400826680407, -0.43248813264423575, -0.37836770674963804,
-0.3362866569624387, -0.3173858643244515, -0.29616834739209763,
-0.27895094621737243, -0.26489096346590835, -0.25320035207898556,
-0.24329181161683996, -0.23477614744847616, -0.22735942592002098,
-0.22083873368547324, -0.21505282360863612, -0.20986116975756824,
-0.20519122254931518, -0.2009332167333883, -0.19705193883335226},
{-0.6981846107304863, -0.8101012091110436, -0.6473537423194751,
-0.5146835320436057, -0.4323484338250948, -0.3782465314218536,
-0.3361867697708566, -0.31729253400213614, -0.29607986064496683,
-0.2788696269602345, -0.26481571510339313, -0.25313016720435516,
-0.24322586841423002, -0.23471379642240064, -0.22730015632953057,
-0.22078213439873873, -0.2149985613057026, -0.20980897574467555,
-0.20514086690387132, -0.20088451456934442, -0.19700472733710198},
{-0.7001318929926033, -0.8104068149795983, -0.6472258698014743,
-0.5145269360985512, -0.4322087801642696, -0.37812542348338635,
-0.33608710156723, -0.3171992348172557, -0.2959914400757736,
-0.27878837303532444, -0.2647405286784348, -0.2530600407479114,
-0.2431599803846712, -0.23465149770897897, -0.2272409365406957,
-0.22072558270584472, -0.21494434464584028, -0.2097568256364115,
-0.20509055361033707, -0.20083585335380247, -0.19695755552241287},
{-0.7020743254533328, -0.81071046397156, -0.6470975766460465,
-0.5143702956603313, -0.43206917196028183, -0.3780043830399439,
-0.33598765938487224, -0.317105967110074, -0.29590308568187773,
-0.27870718440028697, -0.2646654041425241, -0.25298997265815126,
-0.24309414747669827, -0.23458925125768373, -0.22718176650426125,
-0.22066907855886694, -0.2148901735825294, -0.20970471938755392,
-0.20504028262474064, -0.20078723304385585, -0.19691042334752176},
{-0.7040119162500009, -0.8110121616772937, -0.6469688653203114,
-0.5142136115517457, -0.43192960950957915, -0.37788341019612454,
-0.33588845026570646, -0.3170127312175831, -0.2958147974600447,
-0.27862606101253934, -0.26459034144700905, -0.2529199628835158,
-0.24302836963880775, -0.2345270570179822, -0.227122646170936,
-0.22061262190990458, -0.21483604806921933, -0.20965265695285384,
-0.20499005390308578, -0.20073865359658097, -0.19686333077066245},
{-0.7059446735152352, -0.8113119136789665, -0.6468397382802209,
-0.5140568845908449, -0.431790093106369, -0.37776250505542275,
-0.3357894812437408, -0.31691952747350655, -0.2957265754065338,
-0.2785450028292622, -0.264515340543184, -0.2528500113723924,
-0.2429626468194938, -0.2344649149393039, -0.22706357549147516,
-0.22055621271105114, -0.2147819680593874, -0.2096006382871294,
-0.20493986740143905, -0.2006901149691229, -0.19681627775011346},
{-0.7078726053769254, -0.811609725550507, -0.6467101979705359,
-0.5139001155909935, -0.43165062304275426, -0.3776416677201958,
-0.3356907593288259, -0.31682635620829, -0.2956384195170193,
-0.2784640098074037, -0.2644404013821715, -0.2527801180730875,
-0.2428969789671755, -0.23440282497108314, -0.22700455441654452,
-0.22049985091440322, -0.21472793350650474, -0.20954866334513303,
-0.2048897230758226, -0.20064161711858317, -0.19676926424414165},
{-0.7097957199581741, -0.8119056028575824, -0.6465802468249325,
-0.5137433053609591, -0.4315111996087371, -0.3775208982917462,
-0.33559229149081005, -0.3167332177491901, -0.2955503297866432,
-0.27838308190368666, -0.26436552391500945, -0.2527102829338601,
-0.24283136603026506, -0.23434078706270303, -0.2269455828968741,
-0.2204435364720367, -0.21467394436403445, -0.2094967320816852,
-0.2048396208823112, -0.20059316000214492, -0.1967222902110524},
{-0.7117140253772336, -0.8121995511575721, -0.6464498872660174,
-0.5135864547048151, -0.43137182309214517, -0.3774001968702577,
-0.3354940846441268, -0.3166401124202495, -0.2954623062100332,
-0.2783022190746254, -0.2642907080926188, -0.252640505902917,
-0.24276580795713518, -0.23427880116356328, -0.22688666088313178,
-0.2203872693360367, -0.21462000058545183, -0.20944484445157993,
-0.20478956077696547, -0.2005447435769477, -0.19667535560915778},
{-0.7136275297474666, -0.8124915759995184, -0.6463191217053772,
-0.5134295644220916, -0.43123249377877376, -0.37727956355483544,
-0.3353961456327924, -0.3165470405423235, -0.2953743487812529,
-0.2782214212765149, -0.264215953865796, -0.25257078692838747,
-0.24270030469613538, -0.23421686722302612, -0.22682778832599787,
-0.2203310494584931, -0.21456610212422456, -0.20939300040961792,
-0.20473954271585068, -0.20049636780019597, -0.1966284603967647},
{-0.7155362411772893, -0.8127816829241132, -0.6461879525436407,
-0.513272635307686, -0.43109321195224104, -0.37715899844350265,
-0.3352984812159817, -0.31645400243311383, -0.2952864574938725,
-0.27814068846544704, -0.2641412611852629, -0.25250112595836854,
-0.2426348561955684, -0.23415498519043765, -0.2267689651761651,
-0.22027487679149782, -0.21451224893385004, -0.20934119991063016,
-0.20468956665507393, -0.20044803262908517, -0.19658160453222048},
{-0.717440167770126, -0.813069877463652, -0.6460563821705154,
-0.5131156681519604, -0.4309539778941439, -0.3770385016332218,
-0.3352010980540998, -0.31636099840719417, -0.29519863234091814,
-0.2780600205973104, -0.26406663000158204, -0.2524315229408918,
-0.2425694624037303, -0.23409315501514175, -0.2267101913842834,
-0.2202187512871235, -0.21445844096782332, -0.20928944290943807,
-0.20463963255072465, -0.20039973802086222, -0.1965347879738897},
{-0.7193393176243631, -0.8133561651420205, -0.645924412964842,
-0.5129586637407676, -0.4308147918840126, -0.3769180732198922,
-0.3351040026955105, -0.31626802877602783, -0.2951108733149131,
-0.2779794176277965, -0.2639920602652719, -0.2523619778239231,
-0.24250412326886225, -0.2340313766464392, -0.22665146690100932,
-0.22016267289746871, -0.21440467817959605, -0.2092377293608794,
-0.20458974035891817, -0.2003514839327706, -0.1964880106801132},
{-0.7212336988332857, -0.8136405514746478, -0.6457920472946358,
-0.5128016228554011, -0.43067565419927156, -0.3767977132983328,
-0.3350072015638621, -0.3161750938479701, -0.2950231804078661,
-0.27789887951239994, -0.2639175519266963, -0.25229249055539926,
-0.2424388387392112, -0.23396965003366296, -0.22659279167700733,
-0.22010664157463383, -0.21435096052272118, -0.20918605921981195,
-0.20453989003578937, -0.20030327032209985, -0.19644127260932415},
{-0.7231233194850464, -0.8139230419684903, -0.6456592875171414,
-0.5126445462727254, -0.43053656511538924, -0.37667742196234205,
-0.33491070094603426, -0.3160821939283284, -0.2949355536112721,
-0.2778184062064466, -0.2638431049361236, -0.25222306108318077,
-0.2423736087629707, -0.23390797512608066, -0.22653416566291013,
-0.22005065727069273, -0.21429728795066433, -0.20913443244107133,
-0.20449008153746104, -0.2002550971461331, -0.19639457371988406},
{-0.7250081876626089, -0.814203642121986, -0.6455261359788593,
-0.5124874347650961, -0.4303975249056797, -0.3765571993046525,
-0.3348145069807362, -0.31598932931935664, -0.29484799291613994,
-0.27773799766505175, -0.26376871924374523, -0.25215368935508986,
-0.24230843328831222, -0.2338463518729789, -0.2264755888093777,
-0.21999471993775205, -0.21424366041694703, -0.2090828489795419,
-0.20444031482009103, -0.20020696436219057, -0.19634791397022278},
{-0.7268883114437023, -0.8144823574250446, -0.645392595015621,
-0.512330289100453, -0.43025853384153534, -0.37643704541696077,
-0.33471862564783306, -0.3158965003202832, -0.294760498312976,
-0.27765765384318686, -0.2636943947996196, -0.25208437531888866,
-0.24224331226338708, -0.23378478022362265, -0.2264170610670258,
-0.21993882952789762, -0.21419007787509725, -0.20903130879008192,
-0.20439058983984104, -0.20015887192761736, -0.1963012933187656},
{-0.7287636989007651, -0.8147591933589905, -0.6452586669526104,
-0.5121731100423308, -0.43011959219230445, -0.3763169603899402,
-0.33462306275827064, -0.3158037072273495, -0.29467306979179436,
-0.277577374695628, -0.263620131553732, -0.2520151189223031,
-0.24217824563630766, -0.23372326012725264, -0.22635858238650608,
-0.2198829859932392, -0.21413654027862078, -0.20897981182760247,
-0.2043409065528837, -0.200110819799772, -0.19625471172397244},
{-0.7306343581009149, -0.8150341553965753, -0.6451243541044354,
-0.5120158983498312, -0.42998070022531865, -0.376196944313236,
-0.33452782394482744, -0.31571095033378893, -0.29458570734211964,
-0.277497160176996, -0.2635459294559494, -0.25194592011299055,
-0.2421132333551851, -0.23366179153311312, -0.2263001527184242,
-0.21982718928588346, -0.21408304758105626, -0.2089283580469842,
-0.20429126491541083, -0.2000628079360462, -0.19620816914429082},
{-0.7325002971058864, -0.8153072490018966, -0.6449896587751474,
-0.5118586547777438, -0.42984185820598153, -0.37607699727547217,
-0.3344329146534019, -0.31561822992991007, -0.29449841095299945,
-0.2774170102417428, -0.2634717884560409, -0.2518767788385746,
-0.24204827536808482, -0.2336003743904357, -0.2262417720134154,
-0.21977143935792104, -0.21402959973593444, -0.20887694740312895,
-0.20424166488362053, -0.20001483629382835, -0.19616166553820666},
{-0.7343615239719972, -0.8155784796304176, -0.6448545832583025,
-0.5117013800764606, -0.42970306639764144, -0.3759571193642672,
-0.33433834013508595, -0.3155255463030678, -0.29441118061300586,
-0.2773369248441698, -0.26339770850370775, -0.2518076950466253,
-0.24198337162306513, -0.23353900864843036, -0.22618344022211262,
-0.21971573616148268, -0.2139761966968164, -0.20882557985098094,
-0.2041921064137363, -0.19996690483057608, -0.19611520086422413},
{-0.7362180467500896, -0.8158478527289036, -0.6447191298370072,
-0.5115440749920686, -0.42956432506173986, -0.3758373106662109,
-0.33424410543891087, -0.31543289973771055, -0.2943240163102231,
-0.2772569039384142, -0.2633236895485097, -0.25173866868467343,
-0.24191852206814346, -0.23347769425630505, -0.22612515729512775,
-0.2196600796486709, -0.2139228384172572, -0.20877425534546898,
-0.20414258946199232, -0.1999190135037298, -0.19606877508085588},
{-0.7380698734854911, -0.8161153737354162, -0.6445833007839447,
-0.5113867402663819, -0.4294256344577593, -0.37571757126693245,
-0.3341502154052316, -0.31534029051538853, -0.29423691803229113,
-0.2771769474784785, -0.263249731539966, -0.25166969970018904,
-0.2418537266513285, -0.23341643116325406, -0.22606692318308358,
-0.21960446977161904, -0.2138695248508142, -0.20872297384152277,
-0.2040931139846294, -0.1998711622707664, -0.1960223881466282},
{-0.7399170122179785, -0.8163810480792716, -0.6444470983614645,
-0.5112293766368683, -0.42928699484320676, -0.37559790125102444,
-0.3340566746598606, -0.315247718914784, -0.29414988576636986,
-0.27709705541819724, -0.2631758344274522, -0.25160078804060904,
-0.24178898532060117, -0.23335521931846814, -0.22600873783659498,
-0.21954890648245234, -0.21381625595105688, -0.2086717352941211,
-0.20404367993790307, -0.19982335108918906, -0.1959760400201101},
{-0.7417594709817182, -0.8166448811810342, -0.6443105248215781,
-0.5110719848368157, -0.42914840647371916, -0.375478300702125,
-0.3339634876088147, -0.31515518521173114, -0.2940629194991514,
-0.277017227711293, -0.2631019981602827, -0.2515319336533176,
-0.2417242980239237, -0.23329405867110478, -0.22595060120626617,
-0.21949338973328988, -0.21376303167158212, -0.2086205396582137,
-0.2039942872780882, -0.19977557991649586, -0.19592973065983826},
{-0.7435972578052211, -0.8169068784524384, -0.644173582406023,
-0.5109145655952321, -0.4290098696029488, -0.37535876970287874,
-0.333870658433644, -0.3150626896792393, -0.2939760192169059,
-0.2769374643113265, -0.2630282226876809, -0.25146313648567076,
-0.24165966470923433, -0.2332329491703592, -0.22589251324274948,
-0.21943791947628905, -0.21370985196596673, -0.208569386888813,
-0.20394493596149021, -0.19972784871025284, -0.19588346002442866},
{-0.7454303807113176, -0.8171670452964319, -0.6440362733463183,
-0.510757119636901, -0.42887138448268003, -0.37523930833494,
-0.33377819108753176, -0.31497023258750545, -0.29388918490541804,
-0.27685776517174376, -0.26295450795877073, -0.2513943964849637,
-0.24159508532446555, -0.23317189076538536, -0.22583447389663894,
-0.21938249566359594, -0.21365671678785056, -0.20851827694089775,
-0.20389562594441157, -0.19968015742799358, -0.1958372280724562},
{-0.747258847717098, -0.8174253871070949, -0.6438985998637969,
-0.5105996476824755, -0.42873295136279915, -0.3751199166790303,
-0.3336860892918478, -0.31487781420395045, -0.29380241655003747,
-0.2767781302458396, -0.26288085392259863, -0.25132571359845396,
-0.24153055981749144, -0.23311088340532285, -0.22577648311855425,
-0.21932711824736353, -0.2136036260908059, -0.20846720976947403,
-0.20384635718316724, -0.19963250602732455, -0.1957910347625419},
{-0.7490826668338657, -0.8176819092696284, -0.6437605641696553,
-0.5104421504483654, -0.4285945704912768, -0.37500059481486625,
-0.3335943565334716, -0.31478543479321974, -0.29371571413568015,
-0.27669855948680133, -0.2628072605281183, -0.2512570877733661,
-0.24146608813620601, -0.23304992703933394, -0.2257185408591303,
-0.21927178717974172, -0.21355057982847997, -0.2084161853296055,
-0.20379712963411029, -0.1995848944658363, -0.19574488005332688},
{-0.7509018460671101, -0.8179366171603466, -0.6436221684649805,
-0.5102846286469025, -0.428456242114272, -0.3748813428212421,
-0.3335029960625439, -0.3146930946172218, -0.2936290776468122,
-0.27661905284769395, -0.2627337277241842, -0.2511885189568791,
-0.24140167022847933, -0.23298902161655205, -0.22566064706896694,
-0.21921650241290974, -0.2134975779545114, -0.20836520357629562,
-0.20374794325357232, -0.19953732270114877, -0.1956987639034276},
{-0.7527163934164437, -0.8181895161466152, -0.6434834149408345,
-0.510127082986252, -0.4283179664759995, -0.3747621607759882,
-0.3334120108907983, -0.31460079393514884, -0.2935425070674773,
-0.2765396102814514, -0.2626602554596077, -0.2511200070961387,
-0.24133730604215292, -0.23292816708611855, -0.22560280169873373,
-0.21916126389904822, -0.21344462042254106, -0.2083142644646257,
-0.20369879799796933, -0.19948979069092537, -0.19565268627152183},
{-0.7545263168755838, -0.8184406115868564, -0.6433443057782429,
-0.509969514170468, -0.42817974381885676, -0.3746430487559732,
-0.33332140379052083, -0.31450853300347215, -0.2934560023812866,
-0.27646023174089485, -0.2625868436830782, -0.2510515521382452,
-0.2412729955250473, -0.23286736339716682, -0.2255450046990233,
-0.21910607159033946, -0.2133917071862542, -0.2082633679496559,
-0.2036496938236579, -0.1994422983927957, -0.19560664711625958},
{-0.7563316244322901, -0.8186899088305067, -0.6432048431482912,
-0.5098119228995706, -0.42804157438342316, -0.3745240068371549,
-0.33323117729386414, -0.3144163120760176, -0.29336956357141575,
-0.2763809171787369, -0.2625134923432202, -0.2509831540302564,
-0.24120873862497122, -0.2328066104988087, -0.225487256020492,
-0.2190509254389805, -0.213338838199305, -0.20821251398648677,
-0.2036006306870628, -0.1993948457644843, -0.1955606463963268},
{-0.7581323240683271, -0.8189374132180012, -0.6430650292121289,
-0.5096543098694606, -0.42790345840839916, -0.37440503509454515,
-0.3331413336928468, -0.31432413140391696, -0.2932831906206316,
-0.2763016665475739, -0.2624402013885749, -0.2509148127192118,
-0.24114453528971522, -0.23274590834017136, -0.22542955561376377,
-0.21899582539715978, -0.2132860134153815, -0.2081617025302078,
-0.2035516085446083, -0.1993474327636572, -0.1955146840704205},
{-0.7599284237594373, -0.819183130080735, -0.642924866121036,
-0.5094966757720578, -0.4277653961307246, -0.37428613360222535,
-0.3330518750396367, -0.3142319912356782, -0.29319688351127526,
-0.27622247979989967, -0.26236697076759896, -0.2508465281520882,
-0.2410803854670599, -0.23268525687036945, -0.22537190342948893,
-0.2189407714171088, -0.21323323278818324, -0.2081109335359375,
-0.2035026273527253, -0.19930005934804715, -0.19546876009721034},
{-0.7617199314752806, -0.8194270647410506, -0.6427843560164626,
-0.5093390212952188, -0.42762738778544207, -0.37416730243335783,
-0.3329628031473788, -0.31413989181717994, -0.2931106422252767,
-0.276143356888099, -0.26229380042869677, -0.25077830027585346,
-0.2410162891047636, -0.23262465603852123, -0.22531429941831776,
-0.21888576345103444, -0.21318049627143223, -0.20806020695882974,
-0.20345368706790168, -0.19925272547541134, -0.1954228744354029},
{-0.7635068551794023, -0.8196692225122086, -0.6426435010300476,
-0.509181347122805, -0.42748943360586367, -0.3740485416601909,
-0.33287411959139335, -0.3140478333917202, -0.293024466744159,
-0.2760642977644617, -0.26222069032014494, -0.25071012903741996,
-0.24095224615057137, -0.23256410579373246, -0.22525674353089792,
-0.2188308014511814, -0.2131278038188513, -0.208009522754014,
-0.20340478764660205, -0.19920543110349864, -0.19537702704372548},
{-0.7652892028291933, -0.8199096086983526, -0.6425023032836983,
-0.5090236539347448, -0.42735153382349567, -0.3739298513540632,
-0.3327858257108255, -0.313955816200004, -0.29293835704903415,
-0.275985302381176, -0.2621476403902039, -0.25064201438368444,
-0.24088825655221072, -0.2325036060851224, -0.2251992357179125,
-0.21877588536979906, -0.21307515538420327, -0.20795888087669637,
-0.2033559290453554, -0.1991581761901114, -0.19533121788089094},
{-0.7670669823758598, -0.8201482285945256, -0.6423607648896242,
-0.5088659424069486, -0.4272136886680313, -0.3738112315854084,
-0.332697922610639, -0.31386384048018234, -0.29285231312062504,
-0.27590637069032853, -0.26207465058702434, -0.25057395626150125,
-0.24082432025739442, -0.2324431568617962, -0.22514177593000034,
-0.21872101515912407, -0.21302255092121336, -0.20790828128203262,
-0.20330711122065237, -0.19911096069304152, -0.1952854469056239},
{-0.7688402017643577, -0.8203850874865783, -0.6422188879503482,
-0.5087082132114551, -0.4270758983674703, -0.3736926824237563,
-0.33261041116397133, -0.31377190646786046, -0.2927663349392302,
-0.27582750264390754, -0.26200172085867296, -0.2505059546176862,
-0.2407604372138322, -0.23238275807284398, -0.2250843641178428,
-0.21866619077141689, -0.21296999038365994, -0.20785772392523943,
-0.2032583341290359, -0.19906378457010945, -0.19523971407663968},
{-0.7706088689333793, -0.8206201906512065, -0.6420766745587838,
-0.5085504670163405, -0.4269381631479449, -0.3735742039377549,
-0.33252329201477354, -0.31368001439613413, -0.2926804224847788,
-0.2757486981938194, -0.2619288511531863, -0.2504380093990335,
-0.24069660736921478, -0.23232240966738377, -0.22502700023213393,
-0.218611412158971, -0.2129174737253395, -0.20780720876153766,
-0.20320959772708164, -0.19901664777917571, -0.19519401935270686},
{-0.7723729918153004, -0.8208535433558901, -0.641934126798255,
-0.5083927044857933, -0.4268004832339217, -0.37345579619514657,
-0.3324365655808492, -0.31358816449559224, -0.29259457573680636,
-0.2756699572918768, -0.26185604141848207, -0.250370120552308,
-0.24063283067122002, -0.2322621115945253, -0.22496968422355365,
-0.2185566792740572, -0.21286500090006194, -0.2077567357461652,
-0.2031609019713742, -0.19896955027809765, -0.1951483626925507},
{-0.7741325783361457, -0.8210851508588932, -0.6417912467425655,
-0.5082349262801658, -0.42666285884810157, -0.37333745926281536,
-0.3323502320570574, -0.3134963569943565, -0.29250879467444535,
-0.27559127988981064, -0.26178329160245783, -0.2503022880242397,
-0.24056910706750279, -0.23220186380336394, -0.2249124160428176,
-0.21850199206899787, -0.21281257186163455, -0.2077063048343964,
-0.20311224681850204, -0.1989224920247823, -0.19510274405494882},
{-0.7758876364155485, -0.8213150184092247, -0.6416480364560049,
-0.5080771330558933, -0.4265252902114324, -0.37321919320675906,
-0.3322642914189479, -0.31340459211807387, -0.29242307927645284,
-0.2755126659392377, -0.26171060165288595, -0.2502345117615245,
-0.24050543650571735, -0.23214166624301694, -0.22485519564060405,
-0.21844735049608255, -0.2127601865638813, -0.20765591598150251,
-0.20306363222509535, -0.19887547297712682, -0.19505716339862345},
{-0.7776381739667202, -0.8215431512466231, -0.6415044979934128,
-0.50791932546565, -0.42638777754321433, -0.3731009980920907,
-0.33217874342649, -0.31331287008994924, -0.29233742952121616,
-0.2754341153917276, -0.26163797151750673, -0.2501667917108401,
-0.2404418189335184, -0.23208151886256748, -0.2247980229676262,
-0.21839275450763704, -0.21270784496067524, -0.20760556914276393,
-0.2030150581477934, -0.19882849309305117, -0.19501162068204209},
{-0.7793841988964012, -0.821769554601536, -0.6413606334002148,
-0.5077615041582373, -0.4262503210609361, -0.3729828739830824,
-0.3320935876280697, -0.31322119113078106, -0.2922518453867333,
-0.2753556281987437, -0.26156540114400423, -0.25009912781882826,
-0.24037825429852608, -0.2320214216111477, -0.22474089797464478,
-0.2183382040560024, -0.2126555470058684, -0.20755526427352314,
-0.2029665245432658, -0.198781552330539, -0.19496611586188822},
{-0.7811257191048291, -0.8219942336950856, -0.6412164447124704,
-0.5076036697786845, -0.4261129209804623, -0.3728648209431206,
-0.3320088233647518, -0.31312955545895316, -0.2921663268506234,
-0.2752772043116817, -0.26149289047995294, -0.2500315200321066,
-0.2403147425483748, -0.2319613744378569, -0.22468382061236902,
-0.21828369909353654, -0.21260329265336766, -0.2075050013291014,
-0.20291803136818748, -0.19873465064755097, -0.194920648885763},
{-0.7828627424857055, -0.8222171937390634, -0.6410719339568941,
-0.5074458229682739, -0.42597557751594756, -0.3727468390347762,
-0.33192444977461877, -0.31303796329046735, -0.2920808738901557,
-0.27519884368184344, -0.2614204394729028, -0.24996396829726777,
-0.2402512836306666, -0.23190137729179672, -0.22462679083155093,
-0.21822923957258614, -0.21255108185705296, -0.20745478026485345,
-0.2028695785792844, -0.19868778800209375, -0.19487521966979438},
{-0.7845952769261529, -0.8224384399359005, -0.6409271031509138,
-0.5072879643644705, -0.42583829087984215, -0.3726289283197206,
-0.33184046579742643, -0.31294641483896124, -0.29199548648222456,
-0.2751205462604621, -0.2613480480703313, -0.24989647256088024,
-0.2401878774930165, -0.23184143012209596, -0.22456980858294437,
-0.2181748254455526, -0.2124989145708474, -0.20740460103616834,
-0.20282116613326368, -0.1986409643522004, -0.194829828045666},
{-0.7863233303066832, -0.822657977478642, -0.6407819543027133,
-0.507130094601072, -0.4257010612829854, -0.3725110888588214,
-0.3317568701792753, -0.3128549103157278, -0.29191016460334435,
-0.275042311998694, -0.26127571621961587, -0.24982903276946966,
-0.24012452408300117, -0.23178153287785003, -0.22451287381729024,
-0.21812045666479668, -0.21244679074870176, -0.20735446359842036,
-0.20277279398686937, -0.19859417965588477, -0.19478447366122792},
{-0.7880469105011516, -0.8228758115509265, -0.6406364894112562,
-0.5069722143081266, -0.42556388893448077, -0.3723933207120944,
-0.33167366147746863, -0.31276344992972704, -0.2918249082296993,
-0.274964140847623, -0.261203443868136, -0.24976164886957622,
-0.2400612233482452, -0.23172168550819208, -0.2244559864854009,
-0.2180661331827474, -0.21239471034455004, -0.20730436790703408,
-0.20272446209688944, -0.1985474338712413, -0.19473915582436913},
{-0.7897660253767425, -0.823091947326975, -0.6404907104663412,
-0.5068143241119765, -0.4254267740418278, -0.37227562393871777,
-0.33159083806551326, -0.3126720338876193, -0.29173971733710746,
-0.2748860327582562, -0.26113123096316515, -0.2496943208076732,
-0.23999797523631197, -0.23166188796225123, -0.22439914653804677,
-0.21801185495183145, -0.21234267331241427, -0.20725431391746044,
-0.2026761704201137, -0.19850072695633852, -0.19469387328904908},
{-0.7914806827939075, -0.8233063899715548, -0.6403446194486324,
-0.5066564246353251, -0.42528971681088085, -0.3721579985970477,
-0.331508398138133, -0.31258066239377247, -0.2916545919010127,
-0.2748079876815316, -0.26105907745193346, -0.2496270485302389,
-0.23993477969476715, -0.23160214018912462, -0.22434235392602866,
-0.21795762192447077, -0.212290679606237, -0.2072043015851287,
-0.2026279189133588, -0.19845405886930706, -0.19464862399449645},
{-0.7931908906063496, -0.8235191446399781, -0.6401982183297072,
-0.5064985164971713, -0.42515271744582833, -0.37204044474461967,
-0.33142633971655255, -0.31248933565027137, -0.2915695318965401,
-0.2747300055683032, -0.2609869832816034, -0.24955983198371323,
-0.2398716366711884, -0.23154244213797542, -0.22428560860016117,
-0.21790343405312548, -0.21223872918004666, -0.2071543308655433,
-0.20257970753345117, -0.19840742956827634, -0.19460340477675547},
{-0.7948966566609762, -0.8237302164780602, -0.6400515090720854,
-0.5063406003129264, -0.4250157761493125, -0.3719229624381443,
-0.33134466065364315, -0.3123980538569489, -0.29148453729843626,
-0.27465208636937527, -0.26091494839927437, -0.24949267111451665,
-0.23980854611314903, -0.23148279375791322, -0.22422891051124097,
-0.21784929129025496, -0.21218682198789088, -0.20710440171418404,
-0.20253153623723125, -0.19836083901139057, -0.19455821107712878},
{-0.7965979887978758, -0.8239396106221174, -0.6399044936292919,
-0.5061826766943511, -0.4248788931222663, -0.37180555173354046,
-0.33126335863926615, -0.3123068172114306, -0.29139960808115006,
-0.27457423003547876, -0.26084297275202606, -0.24942556586907894,
-0.23974550796822489, -0.23142319499808173, -0.22417225961014892,
-0.21779519358836216, -0.21213495798381157, -0.20705451408659753,
-0.20248340498163436, -0.198314287156851, -0.19451303667322434},
{-0.7982948948502735, -0.824147332198933, -0.6397571739458496,
-0.5060247462495926, -0.42474206856406854, -0.3716882126858808,
-0.3311824312055769, -0.31221562590907714, -0.29131474421874104,
-0.2744964365172683, -0.2607710562868352, -0.2493585161937668,
-0.23968252218395109, -0.2313636458076335, -0.22411565584770066,
-0.21774114089993615, -0.21208313712187835, -0.20700466793829614,
-0.2024353137235158, -0.19826777396283163, -0.1944678734546918},
{-0.7999873826445049, -0.8243533863257482, -0.6396095519573779,
-0.5058668095832649, -0.4246053026725094, -0.3715709453494796,
-0.3311018757324376, -0.31212448014308297, -0.2912299456849699,
-0.2744187057653369, -0.26069919895065696, -0.2492915220349491,
-0.23961958870787808, -0.23130414613570457, -0.2240590991747855,
-0.2176871331775059, -0.21203135935620446, -0.2069548632248751,
-0.202387262419837, -0.1982212993875901, -0.19442271126173255},
{-0.8016754599999756, -0.824557778110244, -0.639461629590593,
-0.5057088672963657, -0.42446859564376543, -0.3714537497778376,
-0.3310216894528528, -0.312033380104454, -0.29114521245324004,
-0.2743410377302131, -0.26062740069037593, -0.24922458333897618,
-0.23955670748758515, -0.23124469593146157, -0.22400258954225136,
-0.2176331703735964, -0.21197962464087095, -0.2069050999019163,
-0.20233925102753447, -0.1981748633893462, -0.19437753779700895},
{-0.8033591347291356, -0.8247605126505075, -0.6393134087633465,
-0.505550919986397, -0.4243319476724949, -0.3713366260236514,
-0.3309418694583363, -0.3119423259820126, -0.29106054449663854,
-0.2742634323623659, -0.2605556614528154, -0.24915770005216828,
-0.23949387847059314, -0.23118529514405453, -0.22394612690099816,
-0.21757925244076654, -0.21192793293002743, -0.20685537792501124,
-0.20229127950357417, -0.19812846592639044, -0.19433233861605975},
{-0.8050384146374372, -0.8249615950350314, -0.639164891384685,
-0.5053929682472975, -0.42419535895168853, -0.37121957413885115,
-0.3308624127043676, -0.31185131796245735, -0.29097594178791186,
-0.2741858896121844, -0.2604839811847886, -0.24909087212084396,
-0.23943110160446537, -0.23112594372265444, -0.22388971120194484,
-0.21752537933159438, -0.21187628417783394, -0.20680569724982462,
-0.2022433478049686, -0.1980821069570044, -0.19428709719511494},
{-0.8067133075233072, -0.8251610303426751, -0.6390160793548649,
-0.5052350126695053, -0.42405882967287256, -0.3711025941745694,
-0.3307833160157756, -0.31176035623035603, -0.2908914042994929,
-0.27410840943001535, -0.26041235983298705, -0.2490240994913003,
-0.2393683768367471, -0.2310666416164341, -0.22383334239598904,
-0.21747155099865595, -0.21182467833846447, -0.2067560578319944,
-0.20219545588874294, -0.19803578643950348, -0.19424179507024064},
{-0.8083838211781241, -0.8253588236426834, -0.6388669745654225,
-0.5050770538400035, -0.4239223600259814, -0.37098568618117933,
-0.33070457609212295, -0.3116694409681374, -0.2908069320034945,
-0.2740309917661319, -0.2603407973441232, -0.24895738210981108,
-0.23930570411496022, -0.23100738877457097, -0.22377702043408063,
-0.21741776739456328, -0.21177311536610294, -0.20670645962720474,
-0.20214760371192197, -0.19798950433223994, -0.19419641203895638},
{-0.8100499633861564, -0.8255549799946067, -0.6387175788991659,
-0.5049190923422477, -0.4237859501993944, -0.37086885020825966,
-0.33062618951315553, -0.31157857235617525, -0.2907225248717264,
-0.2739536365707623, -0.2602692936648322, -0.2488907199226579,
-0.23924308338669958, -0.2309481851462843, -0.22372074526718336,
-0.21736402847196923, -0.2117215952149918, -0.20665690259118819,
-0.2020997912316319, -0.19794326059359846, -0.19415092641266996},
{-0.8117117419245676, -0.8257495044483536, -0.6385678942302663,
-0.5047611287562996, -0.4236496003800352, -0.3707520863046537,
-0.3305481527440802, -0.31148775057272904, -0.2906381828756407,
-0.27387634379405984, -0.2601978487416942, -0.24882411287608325,
-0.23918051459947315, -0.23088903068075295, -0.22366451684624422,
-0.2173103341834881, -0.21167011783937206, -0.20660738667965078,
-0.20205201840491988, -0.19789705518194733, -0.19410531530718966},
{-0.8133691645633637, -0.8259424020441215, -0.6384179224242488,
-0.5046031636587407, -0.4235133107531864, -0.3706353945184142,
-0.3304704621408475, -0.31139697579402226, -0.29055390598642594,
-0.2737991133861117, -0.26012646252124394, -0.24875756091632958,
-0.2391179977008623, -0.23082992532719268, -0.2236083351222508,
-0.2172566844818241, -0.21161868319349714, -0.20655791184836125,
-0.2020042851889307, -0.19785088805572343, -0.19405955495902077},
{-0.8150222390653608, -0.8261336778124062, -0.6382676653380628,
-0.504445197622749, -0.4233770815027106, -0.37051877489685425,
-0.330393113955437, -0.3113062481942135, -0.2904696941749378,
-0.2737219452969737, -0.2600551349499769, -0.24869106398961138,
-0.23905553263838078, -0.23077086903482366, -0.22355220004620197,
-0.2172030793196273, -0.21156729123166057, -0.20650847805309397,
-0.20195659154082457, -0.1978047591733491, -0.19401362105496706},
{-0.8166709731861601, -0.8263233367739657, -0.6381171248201005,
-0.5042872312181277, -0.42324091281093146, -0.37040222748651924,
-0.33031610434100905, -0.31121556794545285, -0.2903855474117288,
-0.2736448394766115, -0.25998386597433776, -0.2486246220421618,
-0.23899311935959658, -0.23071186175286373, -0.22349611156913599,
-0.21714951864962517, -0.21151594190817646, -0.20645908524965023,
-0.20190893741776023, -0.1977586684933264, -0.19396748906427225},
{-0.8183153746741191, -0.826511383939835, -0.6379663027102505,
-0.504129265011257, -0.42310480485866064, -0.37028575233323224,
-0.3302394293571302, -0.3111249352178638, -0.29030146566704945,
-0.2735677958749587, -0.259912655540724, -0.24855823502016097,
-0.2389307578120597, -0.2306529034305686, -0.2234400696420457,
-0.2170960024245348, -0.2114646351773677, -0.20640973339386803,
-0.20186132277693614, -0.19771261597411605, -0.193921134563468},
{-0.8199554512703162, -0.8266978243112644, -0.6378152008399095,
-0.5039712995651985, -0.42296875782529203, -0.3701693494820521,
-0.3301630849747473, -0.3110343501795851, -0.29021744891086043,
-0.2734908144418863, -0.2598415035954932, -0.248491902869814,
-0.23886844794332984, -0.23059399401717526, -0.22338407421599987,
-0.21704253059710016, -0.2114133709935973, -0.20636042244159325,
-0.2018137475755868, -0.19766660157425325, -0.19387453354623874},
{-0.8215912107085261, -0.8268826628797497, -0.6376638210320499,
-0.5038133354396274, -0.4228327718886338, -0.3700530189773114,
-0.33008706708126667, -0.3109438129967743, -0.29013349711283193,
-0.2734138951272097, -0.2597704100849707, -0.24842562553729802,
-0.23880618970096346, -0.23053513346196788, -0.22332812524208515,
-0.21698910312011127, -0.21136214931124736, -0.20631115234871983,
-0.20176621177096293, -0.19762062525229673, -0.19382766271167817},
{-0.8232226607151785, -0.8270659046269775, -0.6375121651012406,
-0.5036553731909105, -0.4226968472251021, -0.3699367608625981,
-0.3300113714853935, -0.3108533238336392, -0.29004961024231435,
-0.273337037880682, -0.2596993749554163, -0.24835940296878684,
-0.23874398303251793, -0.2304763217141991, -0.22327222267135693,
-0.21693571994633293, -0.21131097008472544, -0.20626192307113733,
-0.20171871532033686, -0.19757468696680358, -0.19378049972623046},
{-0.8248498090093384, -0.8272475545248374, -0.6373602348536658,
-0.503497413372118, -0.42256098400962455, -0.3698205751807959,
-0.3299359939220331, -0.31076288285240994, -0.289965788268401,
-0.2732602426520138, -0.25962839815306415, -0.2482932351104338,
-0.2386818278855658, -0.23041755872317254, -0.2232163664549351,
-0.21688238102859353, -0.21125983326845227, -0.20621273456478223,
-0.20167125818103482, -0.1975287866763945, -0.19373302345619448},
{-0.8264726633026787, -0.8274276175353943, -0.637208032087217,
-0.503339456532979, -0.4224251824156616, -0.36970446197403717,
-0.3298609300570814, -0.310672490213424, -0.28988203115988187,
-0.2731835093908528, -0.25955747962411024, -0.24822712190840165,
-0.23861972420767627, -0.23035884443818877, -0.223160556543947,
-0.21682908631971942, -0.21120873881687457, -0.20616358678561714,
-0.2016238403103619, -0.19748292433969533, -0.19368521416857926},
{-0.8280912312994481, -0.8276060986108749, -0.6370555585914655,
-0.5031815032200095, -0.4222894426152903, -0.36958842128374836,
-0.3297861754920584, -0.3105821460750885, -0.28979833888526096,
-0.27310683804678726, -0.2594866193146864, -0.24816106330883517,
-0.23855767194642105, -0.23030017880854373, -0.22310479288950552,
-0.21677583577256254, -0.21115768668449325, -0.20611447968960633,
-0.2015764616656785, -0.19743709991535446, -0.19363705369947487},
{-0.8297055206964272, -0.8277830026936472, -0.6369028161477313,
-0.5030235539764225, -0.42215376477906064, -0.36947245315065175,
-0.3297117257687135, -0.31049185059391177, -0.2897147114127858,
-0.2730302285693832, -0.25941581717093065, -0.24809505925787917,
-0.23849567104939834, -0.23024156178358426, -0.22304907544279357,
-0.21672262934000713, -0.21110667682577317, -0.20606541323277527,
-0.20152912220438352, -0.19739131336206878, -0.19358852559036333},
{-0.8313155391829298, -0.8279583347162187, -0.6367498065291196,
-0.5028656093421773, -0.42201814907615653, -0.3693565576147424,
-0.32963757637349744, -0.3104016039245356, -0.28963114871040835,
-0.2729536809081258, -0.2593450731388973, -0.2480291097016595,
-0.23843372146418568, -0.23018299331267444, -0.22299340415498098,
-0.21666946697496137, -0.21105570919528305, -0.20601638737116185,
-0.20148182188388397, -0.19734556463852904, -0.19353961519270863},
{-0.8329212944407589, -0.8281320996012138, -0.6365965315005482,
-0.5027076698540613, -0.42188259567432196, -0.36924073471531527,
-0.3295637227419812, -0.310311406219708, -0.289547650745794,
-0.27287719501244956, -0.2592743871646318, -0.24796321458630455,
-0.23837182313835034, -0.23012447334512612, -0.22293777897727135,
-0.21661634863033735, -0.21100478374754722, -0.20596740206079334,
-0.2014345606616021, -0.1972998537035091, -0.19349030974298187},
{-0.834522794144162, -0.8283043022613604, -0.6364429928187912,
-0.5025497360455955, -0.42174710473987137, -0.3691249844909699,
-0.32949016026320144, -0.310221257630353, -0.28946421748638107,
-0.2728007708317482, -0.2592037591941221, -0.2478973738579314,
-0.2383099760195277, -0.23006600183036485, -0.2228821998608741,
-0.21656327425908245, -0.2109539004371458, -0.20591845725779578,
-0.20138733849501333, -0.19725418051574423, -0.19344059840945627},
{-0.8361200459598397, -0.828474947599474, -0.6362891922325065,
-0.5023918084471607, -0.42161167643778263, -0.36900930697960993,
-0.32941688428384347, -0.31013115830554155, -0.2893808488992924,
-0.2727244083153667, -0.2591331891733205, -0.24783158746267045,
-0.23824818005531184, -0.23000757871773753, -0.22282666675700608,
-0.2165102438141724, -0.2109030592186792, -0.20586955291826192,
-0.20134015534159683, -0.19720854503404966, -0.19339047231338075},
{-0.8377130575468803, -0.828644040508454, -0.6361351314822816,
-0.5022338875859178, -0.4214763109315477, -0.3688937022184504,
-0.3293438901123149, -0.3100411083925677, -0.28929754495142135,
-0.2726481074125882, -0.2590626770481909, -0.24776585534662826,
-0.2381864351933239, -0.22994920395666596, -0.22277117961696108,
-0.21645725724860165, -0.21085226004679308, -0.20582068899833456,
-0.20129301115891146, -0.1971629472172386, -0.19333992452697418},
{-0.8393018365567676, -0.828811585871251, -0.6359808123006504,
-0.5020759739858859, -0.42134100838332733, -0.36877817024400633,
-0.32927117302280473, -0.30995110803683745, -0.28921430560939165,
-0.272571868072655, -0.25899222276458955, -0.24770017745590847,
-0.23812474138118034, -0.22989087749658982, -0.2227157383919905,
-0.21640431451538533, -0.21080150287611765, -0.20577186545417547,
-0.20124590590446056, -0.1971173870241455, -0.19328895005059726},
{-0.8408863906333244, -0.8289775885608822, -0.6358262364121439,
-0.5019180681679599, -0.4212057689538886, -0.36866271109211607,
-0.32919872825912894, -0.30986115738205844, -0.28913113083956343,
-0.2724956902447632, -0.258921826268394, -0.2476345537366158,
-0.23806309856651273, -0.22983259928693306, -0.2226603430334097,
-0.21635141556757453, -0.2107507876613703, -0.20572308224200103,
-0.20119883953585016, -0.1970718644136793, -0.19323754577203178},
{-0.8424667274127057, -0.8291420534403924, -0.6356714055333319,
-0.5017601706498704, -0.4210705928026105, -0.3685473247979519,
-0.3291265510386348, -0.30977125657010657, -0.28904802060804446,
-0.2724195738780334, -0.25885148750542447, -0.2475689841348624,
-0.23800150669695458, -0.22977436927715894, -0.22260499349251162,
-0.2162985603582167, -0.21070011435721608, -0.2056743393180075,
-0.20115181201067212, -0.19702637934470313, -0.19318571040997418},
{-0.844042854523365, -0.8293049853628528, -0.63551632137284,
-0.5016022819462893, -0.4209354800875711, -0.36843201139598925,
-0.32905463655582257, -0.3096814057411153, -0.28896497488069284,
-0.2723435189215695, -0.2587812064214594, -0.24750346859673758,
-0.2379399657201489, -0.229716187416739, -0.2225496897206392,
-0.2162457488404268, -0.21064948291840946, -0.20562563663844913,
-0.20110482328656087, -0.1969809317761625, -0.19313344444457015},
{-0.8456147795860233, -0.8294663891713465, -0.6353609856313911,
-0.50144440256875, -0.42080043096539377, -0.36831677092005827,
-0.3289829799859993, -0.30959160503348093, -0.2888819936231293,
-0.272267525324425, -0.2587109829622908, -0.2474380070683351,
-0.23787847558378322, -0.2296580536551679, -0.22249443166917393,
-0.2161929809673071, -0.2105988932997126, -0.20557697415961984,
-0.20105787332117359, -0.1969355216670119, -0.19308075003722058},
{-0.8471825102136505, -0.8296262696989628, -0.6352054000018417,
-0.5012865330257078, -0.42066544559143376, -0.36820160340330643,
-0.32891157648871105, -0.3095018545838607, -0.28879907680068817,
-0.2721915930355645, -0.2586408170736134, -0.24737259949576673,
-0.23781703623548978, -0.2295999679419612, -0.22243921928946297,
-0.21614025669200443, -0.21054834545591894, -0.2055283518378131,
-0.2010109620721956, -0.19689014897623797, -0.19302763094156156},
{-0.8487460540114458, -0.829784631768782, -0.6350495661692139,
-0.5011286738226062, -0.42053052411967173, -0.3680865088782233,
-0.3288404212111468, -0.30941215452718646, -0.2887162243785071,
-0.272115722003945, -0.2585707087011262, -0.24730724582510671,
-0.23775564762295026, -0.2295419302266295, -0.2223840525329231,
-0.21608757596767453, -0.21049783934183347, -0.20547976962934805,
-0.200964089497354, -0.19684481366281503, -0.19297409240803204},
{-0.850305418576789, -0.8299414801938543, -0.6348934858107433,
-0.5009708254617941, -0.42039566670275513, -0.36797148737665875,
-0.32876950929155285, -0.30932250499674263, -0.28863343632149485,
-0.2720399121784869, -0.258500657790541, -0.24724194600247837,
-0.237694309693888, -0.2294839404587643, -0.222328931351007,
-0.21603493874754598, -0.21044737491232046, -0.20543122749063275,
-0.20091725555442225, -0.1967995156858373, -0.19292014108359823},
{-0.85186061149924, -0.8300968197771998, -0.6347371605958869,
-0.5008129884426218, -0.42026087349205765, -0.36785653892978615,
-0.32869883586226106, -0.3092329061240512, -0.28855071259426446,
-0.2719641635080185, -0.2584306642874622, -0.24717669997395716,
-0.23763302239597572, -0.2294259985879108, -0.22227385569513453,
-0.21598234498481916, -0.21039695212224835, -0.205382725378023,
-0.20087046020114319, -0.19675425500433835, -0.19286578490814527},
{-0.8534116403605063, -0.8302506553118019, -0.6345805921863772,
-0.5006551632614044, -0.42012614463754555, -0.3677416635681483,
-0.328628396052854, -0.3091433580390116, -0.2884680531612361,
-0.2718884759413408, -0.2583607281375244, -0.24711150768564308,
-0.23757178567694298, -0.22936810456367096, -0.22221882551679023,
-0.2159297946327367, -0.21034657092650844, -0.20533426324795895,
-0.20082370339535072, -0.19670903157740732, -0.19281103300942687},
{-0.8549585127344101, -0.8304029915805793, -0.6344237822362493,
-0.5004973504114614, -0.4199914802879578, -0.36762686132163497,
-0.32855818499313805, -0.3090538608698537, -0.28838545798659637,
-0.2718128494272192, -0.2582908492862874, -0.24704636908363325,
-0.23751059948450348, -0.2293102583356364, -0.22216384076746026,
-0.21587728764457537, -0.21029623128005365, -0.20528584105690106,
-0.20077698509488412, -0.19666384536417436, -0.1927558955972895},
{-0.856501236186872, -0.8305538333563867, -0.6342667323918723,
-0.5003395503831553, -0.4198568805906721, -0.3675121322194887,
-0.32848819781599187, -0.30896441474316594, -0.28830292703428306,
-0.2717372839143578, -0.2582210276793422, -0.2469812841140223,
-0.2374494637663866, -0.22925245985345238, -0.22210890139868944,
-0.21582482397364716, -0.2102459331378304, -0.20523745876130434,
-0.20073030525761493, -0.19661869632380363, -0.19270038385879312},
{-0.858039818275887, -0.8307031854020139, -0.6341094442920012,
-0.5001817636638406, -0.41972234569180006, -0.3673974762903461,
-0.32841842966025936, -0.30887501978388404, -0.2882204602680394,
-0.2716617793514046, -0.25815126326218785, -0.24691625272290274,
-0.2373883784703424, -0.22919470906675804, -0.2220540073619714,
-0.21577240357326255, -0.21019567645481602, -0.20518911631769032,
-0.2006836638414235, -0.1965735844154376, -0.19264450985475},
{-0.8595742665514988, -0.8308510524701535, -0.6339519195677721,
-0.5000239907379719, -0.41958787573620315, -0.3672828935621683,
-0.3283488756733306, -0.3087856761153484, -0.2881380576513628,
-0.27158633568698565, -0.25808155598035015, -0.24685127485637776,
-0.2373273435441518, -0.22913700592521952, -0.22199915860889702,
-0.2157200263967679, -0.21014546118604782, -0.2051408136825853,
-0.2006370608042642, -0.19652850959830764, -0.19258828641878706},
{-0.8611045885557771, -0.8309974393034116, -0.6337941598427833,
-0.49986623208701964, -0.4194534708673861, -0.3671683840623362,
-0.32827953101379503, -0.30869638385931536, -0.28805571914754613,
-0.2715109528696633, -0.2580119057793233, -0.24678635046055233,
-0.23726635893557252, -0.22907935037854765, -0.2219443550910799,
-0.21566769239757605, -0.21009528728655896, -0.2050925508125898,
-0.20059049610408963, -0.19648347183165465, -0.1925317270593962},
{-0.8626307918227851, -0.8311423506342879, -0.6336361667330773,
-0.49970848818956054, -0.41931913122764986, -0.36705394781756995,
-0.3282103908538857, -0.3086071431359092, -0.28797344471963837,
-0.2714356308479594, -0.25794231260454, -0.2467214794815175,
-0.2372054245924029, -0.22902174237645345, -0.22188959676010095,
-0.2156154015290807, -0.21004515471145419, -0.20504432766428898,
-0.20054396969889415, -0.19643847107475415, -0.19247484586555053},
{-0.8641528838785745, -0.8312857911851658, -0.633477941847225,
-0.49955075952127165, -0.41918485695798796, -0.3669395848539863,
-0.3281414503818816, -0.3085179540637055, -0.28789123433049835,
-0.2713603695703498, -0.25787277640145023, -0.24665666186538565,
-0.23714454046243422, -0.22896418186864392, -0.22183488356761522,
-0.21556315374472135, -0.20999506341581137, -0.20499614419429135,
-0.20049748154671032, -0.19639350728690436, -0.19241765741647265},
{-0.8656708722411514, -0.8314277656683122, -0.6333194867863184,
-0.4993930465549081, -0.4190506481981367, -0.36682529519709417,
-0.32807270480451356, -0.3084288167597131, -0.28780908794277094,
-0.2712851689852605, -0.25780329711547245, -0.24659189755826716,
-0.2370837064934912, -0.22890666880491423, -0.2217802154652938,
-0.21551094899796697, -0.20994501335476884, -0.20494800035928107,
-0.20045103160558803, -0.1963485804274127, -0.19236017669566746},
{-0.8671847644204473, -0.8315682787858603, -0.6331608031440297,
-0.49923534976039696, -0.41891650508665346, -0.36671107887176946,
-0.3280041493490638, -0.3083397313393855, -0.28772700551887787,
-0.2712100290410678, -0.257733874691977, -0.24652718650627947,
-0.237022922633413, -0.2288492031350065, -0.22172559240480472,
-0.21545878724230538, -0.20989500448351017, -0.20489989611593334,
-0.2004046198336074, -0.19630369045566348, -0.1923024190093492},
{-0.8686945679183071, -0.8317073352298077, -0.6330018925066276,
-0.49907766960476657, -0.4187824277607528, -0.36659693590230713,
-0.32793577926554507, -0.3082506979166395, -0.28764498702104685,
-0.27113494968612006, -0.2576645090763703, -0.24646252865554158,
-0.23696218883005216, -0.22879178480876156, -0.2216710143378967,
-0.2154066684312601, -0.20984503675721028, -0.20485183142097763,
-0.2003582461888933, -0.1962588373310522, -0.19224439991003245},
{-0.870200290228474, -0.8318449396819942, -0.6328427564530064,
-0.4989200065522046, -0.41864841635648165, -0.366482866312385,
-0.32786758982871683, -0.3081617166038725, -0.2875630324112897,
-0.2710599308686982, -0.2575952002139674, -0.2463979239521441,
-0.23690150503124563, -0.2287344137759929, -0.22161648121628852,
-0.21535459251840283, -0.2097951101311173, -0.20480380623116856,
-0.2003119106296073, -0.1962140210129838, -0.19218613512445976},
{-0.8717019388365399, -0.8319810968141189, -0.6326833965547395,
-0.49876236106409305, -0.418514471008633, -0.36636887012506314,
-0.32779957633999457, -0.30807278751198897, -0.28748114165140304,
-0.27098497253705134, -0.2575259480501204, -0.24633337234224523,
-0.23684087118488417, -0.22867708998652436, -0.22156199299176238,
-0.21530255945729276, -0.20974522456047529, -0.2047558205032497,
-0.20026561311391422, -0.19616924146093911, -0.1921276404867021},
{-0.8731995212199559, -0.8321158112877168, -0.6325238143760998,
-0.4986047335989833, -0.41838059185076854, -0.36625494736284847,
-0.3277317341294598, -0.3079839107503632, -0.28739931470301555,
-0.2709100746393769, -0.25745675253013234, -0.24626887377196433,
-0.23678028723886196, -0.2286198133902541, -0.2215075496161082,
-0.21525056920156022, -0.20969538000056231, -0.20470787419407555,
-0.2002193536000384, -0.1961244986344104, -0.1920689318760196},
{-0.8746930448479865, -0.8322490877541389, -0.6323640114740793,
-0.498447124612625, -0.4182467790153044, -0.36614109804762474,
-0.32766405855747327, -0.3078950864268929, -0.2873175515275219,
-0.2708352371238336, -0.2573876135992828, -0.2462044281874194,
-0.23671975314108196, -0.22856258393706214, -0.2214531510411405,
-0.21519862170482218, -0.20964557640671505, -0.2046599672604501,
-0.20017313204621612, -0.19607979249289625, -0.19201002515935062},
{-0.876182517181707, -0.8323809308545811, -0.6322039893984466,
-0.4982895345579933, -0.418113032633357, -0.36602732220069545,
-0.3275965450164623, -0.3078063146480346, -0.2872358520861485,
-0.2707604599385297, -0.25731853120287773, -0.24614003553477593,
-0.23665926883950833, -0.2285054015768912, -0.22139879721874395,
-0.2151467169207612, -0.20959581373426817, -0.20461209965928656,
-0.20012694841074313, -0.19603512299597103, -0.1919509361386887},
{-0.8776679456739621, -0.832511345220037, -0.6320437496917487,
-0.4981319638852627, -0.417979352834896, -0.3659136198427836,
-0.3275291889325037, -0.30771759551872435, -0.2871542163398996,
-0.2706857430315226, -0.2572495052861498, -0.24607569576016097,
-0.23659883428202105, -0.22844826625965925, -0.22134448810074708,
-0.21509485480308177, -0.20954609193859713, -0.20456427134746286,
-0.2000808026519052, -0.19599049010318403, -0.19189168050279415},
{-0.8791493377693598, -0.832640335471313, -0.6318832938893753,
-0.49797441304188894, -0.41784573974869055, -0.36579999099402694,
-0.32746198576684604, -0.30762892914252615, -0.2870726442496074,
-0.2706110863508473, -0.25718053579434813, -0.2460114088097417,
-0.23653844941661772, -0.22839117793535652, -0.22129022363910483,
-0.21504303530551228, -0.20949641097513066, -0.20451648228192065,
-0.20003469472807067, -0.19594589377422128, -0.19183227378355527},
{-0.880626700904257, -0.8327679062190383, -0.6317226235195632,
-0.49781688247255285, -0.41771219350231703, -0.36568643567400194,
-0.3273949310174358, -0.3075403156215059, -0.2869911357758955,
-0.27053648984447043, -0.2571116226726978, -0.24594717462965987,
-0.23647811419126574, -0.22833413655396106, -0.2212360037856987,
-0.21499125838179056, -0.20944677079928076, -0.20446873241963298,
-0.1999886245975928, -0.1959013339686616, -0.1917727313163784},
{-0.8821000425067211, -0.8328940620636153, -0.6315617401034443,
-0.49765937261924637, -0.4175787142222127, -0.3655729539016874,
-0.32732802022025453, -0.3074517550563399, -0.28690969087921037,
-0.2704619534603194, -0.2570427658663904, -0.24588299316608048,
-0.23641782855395205, -0.22827714206549365, -0.22118182849252938,
-0.21493952398573496, -0.20939717136652852, -0.2044210217175842,
-0.19994259221889998, -0.19585681064624094, -0.1917130682049349},
{-0.8835693699965143, -0.8330188075952496, -0.6314006451550584,
-0.4975018839211983, -0.41744530203356406, -0.36545954569551087,
-0.3272612489506411, -0.30736324754627414, -0.2868283095198155,
-0.2703874771462804, -0.2569739653206537, -0.2458188643651984,
-0.23635759245269317, -0.22822019442001296, -0.22112769771156598,
-0.21488783207115658, -0.20934761263238555, -0.20437335013281693,
-0.19989659755040345, -0.19581232376665458, -0.19165329928972968},
{-0.885034690785085, -0.8331421473939236, -0.6312393401814116,
-0.49734441681497354, -0.41731195706047497, -0.3653462110733362,
-0.3271946128245149, -0.307274793189181, -0.28674699165774953,
-0.2703130608501946, -0.2569052209806412, -0.24575478817316393,
-0.23629740583550785, -0.228163293567562, -0.2210736113948248,
-0.21483618259188692, -0.20929809455237397, -0.20432571762240798,
-0.199850640550581, -0.19576787328965922, -0.19159343912050653},
{-0.8864960122755382, -0.8332640860294183, -0.6310778266824848,
-0.49718697173444837, -0.41717867942583764, -0.36523295005246376,
-0.3271281074995574, -0.3071863920815313, -0.2866657372529246,
-0.2702387045198932, -0.25683653279154695, -0.24569076453619543,
-0.23623726865045291, -0.22810643945827203, -0.22101956949437063,
-0.2147845755018421, -0.20924861708207865, -0.20427812414343766,
-0.19980472117798087, -0.19572345917504835, -0.19153350193230528},
{-0.887953341862616, -0.8333846280612776, -0.630916106151271,
-0.4970295491107997, -0.41704546925139896, -0.3651197626496347,
-0.3270617286763249, -0.30709804431841736, -0.28658454626502206,
-0.2701644081030993, -0.25676790069848865, -0.24562679340046972,
-0.2361771808455851, -0.228049632042243, -0.2209655719622582,
-0.21473301075491846, -0.20919918017708689, -0.20423056965305103,
-0.1997588393910955, -0.19567908138263085, -0.19147350162478805},
{-0.8894066869326839, -0.8335037780388144, -0.6307541800738063,
-0.49687214937258817, -0.4169123266578237, -0.36500664888101964,
-0.32699547209930274, -0.3070097499935679, -0.2865034186535548,
-0.27009017154753145, -0.25669932464663586, -0.2455628747121913,
-0.23611714236897963, -0.22799287126961193, -0.2209116187506115,
-0.21468148830505596, -0.2091497837930249, -0.20418305410839777,
-0.19971299514851437, -0.1956347398722486, -0.19141345174493773},
{-0.8908560548637106, -0.833621540501114, -0.6305920499292027,
-0.496714772945704, -0.41677925176454167, -0.36489360876227594,
-0.32692933355783454, -0.30692150919937694, -0.28642235437786173,
-0.27001599480086286, -0.2566308045811109, -0.24549900841758832,
-0.2360571531687775, -0.22793615709058695, -0.22085770981155106,
-0.21463000810623928, -0.2091004278855626, -0.2041355774666837,
-0.19966718840885217, -0.19559043460381115, -0.19135336547253234},
{-0.89230145302524, -0.8337379199770231, -0.6304297171896798,
-0.4965574202533992, -0.41664624468992356, -0.3647806423084884,
-0.326863308887046, -0.3068333220268865, -0.2863413533971073,
-0.26994187781072754, -0.25656234044703224, -0.24543519446288353,
-0.23599721319304862, -0.2278794894553382, -0.22080384509724593,
-0.21457857011248177, -0.20905111241039392, -0.20408813968515277,
-0.1996214191307346, -0.19554616553721788, -0.19129325560849958},
{-0.8937428887783836, -0.8338529209851377, -0.6302671833205827,
-0.4964000917163497, -0.4165133055511811, -0.36466774953419806,
-0.32679739396868235, -0.306745188565825, -0.28626041567026556,
-0.2698678205247236, -0.25649393218952315, -0.24537143279432622,
-0.23593732238997733, -0.2278228683141123, -0.22075002455991616,
-0.21452717427782314, -0.20900183732326816, -0.20404074072105033,
-0.19957568727286307, -0.1955019326324377, -0.19123313456560903},
{-0.8951803694758005, -0.8339665480338221, -0.6301044497804287,
-0.496242787752577, -0.41638043446440387, -0.36455493045342197,
-0.3267315847319173, -0.30665710890457765, -0.28617954115613087,
-0.26979382289035864, -0.25642557975366403, -0.24530772335813522,
-0.23587748070770098, -0.22776629361714573, -0.2206962481517349,
-0.21447582055632586, -0.20895260257991716, -0.2039933805316736,
-0.1995299927939127, -0.19545773584942883, -0.19117301436152923},
{-0.8966139024616744, -0.8340788056211756, -0.6299415180209295,
-0.49608550877755764, -0.41624763154464733, -0.36444218507962445,
-0.3266658771541095, -0.30656908313024095, -0.28609872981334517,
-0.2697198848551714, -0.2563572830845577, -0.24524406610060118,
-0.2358176880944104, -0.22770976531472759, -0.22064251582498884,
-0.21442450890210912, -0.20890340813616093, -0.20394605907436536,
-0.19948433565265594, -0.1954135751482351, -0.19111290661392466},
{-0.8980434950717012, -0.8341896982350552, -0.6297783894870179,
-0.49592825520417394, -0.41611489690573455, -0.3643295134257606,
-0.32660026726141755, -0.3064811113286324, -0.286017981600369,
-0.2696460063666154, -0.25628904212729436, -0.2451804609679744,
-0.23575794449832577, -0.22765328335719226, -0.22058882753199122,
-0.21437323926932544, -0.20885425394781648, -0.20389877630650705,
-0.19943871580786487, -0.19536945048891957, -0.1910528225372906},
{-0.8994691546330615, -0.8342992303530575, -0.6296150656168844,
-0.49577102744272933, -0.415982230660507, -0.3642169155042301,
-0.32653475112945374, -0.3063931935842684, -0.28593729647546295,
-0.26957218737209643, -0.25622085682693824, -0.24511690790654356,
-0.23569824986765842, -0.2275968476948516, -0.2205351832250172,
-0.21432201161211767, -0.2088051399707601, -0.20385153218547541,
-0.19939313321833518, -0.19532536183154187, -0.1909927729414474},
{-0.9008908884644127, -0.8344074064425137, -0.6294515478419944,
-0.49561382590103004, -0.41584963292061916, -0.36410439132692796,
-0.3264693248838012, -0.30630532998039806, -0.2858566743967615,
-0.269498427819022, -0.25615272712856435, -0.2450534068626128,
-0.2356386041506609, -0.22754045827806468, -0.22048158285643593,
-0.21427082588471796, -0.20875606616086417, -0.2038043266687108,
-0.1993475878429481, -0.19528130913625602, -0.19093276823158484},
{-0.9023087038758746, -0.8345142309605089, -0.6292878375871462,
-0.49545665098427666, -0.41571710379670407, -0.36399194090521625,
-0.3264039847006593, -0.3062175205990132, -0.2857761153221966,
-0.269424727654719, -0.2560846529772414, -0.24498995778247856,
-0.23557900729560893, -0.22748411505723914, -0.2204280263786197,
-0.21421968204135333, -0.20870703247408506, -0.2037571597136903,
-0.1993020796405669, -0.19523729236320153, -0.1908728184093994},
{-0.9037226081690002, -0.8346197083538436, -0.6291239362704614,
-0.4952995030952161, -0.4155846433983226, -0.36387956424993706,
-0.326338726807165, -0.3061297655208537, -0.28569561920954556,
-0.2693510868264773, -0.25601663431800636, -0.24492656061248314,
-0.23551945925079093, -0.22742781798277217, -0.2203745137439903,
-0.2141685800363129, -0.20865803886636464, -0.20371003127790943,
-0.1992566085700901, -0.1951933114725663, -0.19081293307543012},
{-0.905132608636761, -0.8347238430590651, -0.6289598453034477,
-0.49514238263404403, -0.4154522518339099, -0.36376726137143905,
-0.3262735474819439, -0.3060420648254316, -0.28561518601642466,
-0.2692775052815884, -0.2559486710959378, -0.24486321529896532,
-0.23545995996455027, -0.22737156700515315, -0.2203210449049826,
-0.21411751982388416, -0.2086090852937022, -0.20366294131891477,
-0.1992111745905082, -0.19514936642460473, -0.19075312143248024},
{-0.9065387125635473, -0.8348266395024488, -0.6287955660910027,
-0.4949852899984636, -0.41531992921087685, -0.36365503227953944,
-0.3262084430553497, -0.3059544185910181, -0.28553481570028294,
-0.26920398296727077, -0.2558807632560617, -0.24479992178825466,
-0.23540050938520468, -0.22731536207483727, -0.22026761981408133,
-0.21406650135843786, -0.20856017171213093, -0.2036158897942995,
-0.19916577766080212, -0.19510545717957134, -0.19069339228965215},
{-0.9079409272251269, -0.8349281021000001, -0.6286311000314578,
-0.49482822558371536, -0.41518767563555203, -0.363542876983527,
-0.3261434099098689, -0.30586682689469435, -0.2854545082183827,
-0.2691305198306976, -0.25581291074344015, -0.24473668002674204,
-0.2353411074611182, -0.22725920314232123, -0.22021423842380256,
-0.21401552459432122, -0.20851129807773322, -0.2035688766616286,
-0.1991204177399835, -0.19506158369777682, -0.1906337540673283},
{-0.9093392598886385, -0.8350282352574443, -0.6284664485166102,
-0.49467118978255414, -0.4150554912131975, -0.3634307954922362,
-0.326078444480439, -0.3057792898122909, -0.28537426352785694,
-0.26905711581902814, -0.2557451135030974, -0.24467348996080568,
-0.23528175414070363, -0.22720309015815066, -0.2201609006866752,
-0.2139645894859633, -0.20846246434658156, -0.20352190187858776,
-0.19907509478710528, -0.19501774593952714, -0.19057421480280656},
{-0.910733717812594, -0.835127043370249, -0.6283016129317287,
-0.49451418298529115, -0.41492337604810936, -0.36331878781396965,
-0.3260135432546579, -0.30569180741848245, -0.2852940815856647,
-0.268983770879366, -0.255677371480063, -0.2446103515368429,
-0.23522244937236297, -0.22714702307289397, -0.2201076065552664,
-0.2139136959878093, -0.20841367047481119, -0.20347496540281823,
-0.1990298087612774, -0.19497394386522204, -0.19051478215629875},
{-0.9121243082468232, -0.8352245308235879, -0.6281365946556285,
-0.4943572055797821, -0.41479133024343506, -0.3632068539565303,
-0.32594870277297927, -0.3056043797867636, -0.28521396234860563,
-0.2689104849588027, -0.25560968461939776, -0.24454726470127014,
-0.23516319310457612, -0.22709100183713826, -0.2200543559822034,
-0.2138628440543322, -0.20836491641860916, -0.2034280671920654,
-0.1989845596216372, -0.19493017743528557, -0.19045546341763503},
{-0.9135110384324998, -0.8353207019923703, -0.6279713950606316,
-0.49420025795143363, -0.41465935390135217, -0.36309499392725053,
-0.32588391962888275, -0.3055170069894033, -0.2851339057733214,
-0.26883725800436087, -0.2555420528661099, -0.24448422940052705,
-0.23510398528575877, -0.2270350264015094, -0.2200011489201098,
-0.21381203364003903, -0.20831620213414165, -0.20338120720405678,
-0.1989393473273412, -0.19488644661011012, -0.19039626551326944},
{-0.9148939156020939, -0.8354155612412293, -0.6278060155126611,
-0.49404334048329035, -0.41452744712297646, -0.36298320773291926,
-0.3258191904689888, -0.3054296890975835, -0.28505391181629675,
-0.26876408996306034, -0.25547447616524943, -0.2444212455810717,
-0.2350448258644518, -0.2269790967166641, -0.21994798532168686,
-0.21376126469949686, -0.20826752757767625, -0.20333438539659815,
-0.19889417183759167, -0.19484275135023643, -0.19033719501373625},
{-0.916272946979378, -0.8355091129245233, -0.6276404573712344,
-0.49388645355592276, -0.41439561000841185, -0.36287149537991426,
-0.32575451199320865, -0.30534242618127183, -0.28497398043386646,
-0.26869098078184583, -0.2554069544618341, -0.24435831318935136,
-0.23498571478916092, -0.2269232127332959, -0.21989486513961287,
-0.21371053718726402, -0.20821889270545374, -0.2032876017274866,
-0.19884903311162594, -0.19479909161614223, -0.19027825814128407},
{-0.9176481397794031, -0.8356013613863231, -0.6274747219894936,
-0.49372959754757617, -0.4142638426567878, -0.36275985687405515,
-0.32568988095477086, -0.305255218309321, -0.28489411158219546,
-0.2686179304076605, -0.2553394877008935, -0.24429543217187027,
-0.23492665200843882, -0.22686737440208754, -0.2198417883266383,
-0.21365985105798696, -0.20817029747380822, -0.20324085615459975,
-0.1988039311087329, -0.19475546736842347, -0.19021946077797403},
{-0.9190195012084761, -0.8356923109604322, -0.6273088107142417,
-0.49357277283404966, -0.4141321451661341, -0.3626482922207146,
-0.325625294160253, -0.30516806554942766, -0.28481430521733464,
-0.2685449387874126, -0.25527207582746597, -0.24423260247512735,
-0.2348676374708658, -0.2268115816738256, -0.21978875483554494,
-0.21360920626629915, -0.20812174183905652, -0.20319414863581292,
-0.19875886578820579, -0.19471187856764433, -0.1901608084738008},
{-0.920387038464157, -0.835781965970368, -0.6271427248859637,
-0.4934159797888151, -0.41400051763356704, -0.36253680142480127,
-0.3255607484695333, -0.30508096796821454, -0.28473456129512315,
-0.26847200586793857, -0.2552047187865796, -0.2441698240456463,
-0.23480867112503712, -0.22675583449924314, -0.2197357646191409,
-0.2135586027668711, -0.20807322575757653, -0.20314747912905606,
-0.19871383710939888, -0.194668325174432, -0.19010230645518272},
{-0.9217507587352501, -0.8358703307293939, -0.6269764658388699,
-0.4932592187829923, -0.4138689601551271, -0.3624253844907054,
-0.3254962407957995, -0.30499392563114247, -0.28465487977132076,
-0.26839913159610795, -0.2551374165232688, -0.2441070968299699,
-0.23474975291961342, -0.22670013282920864, -0.2196828176302701,
-0.2135080405144701, -0.20802474918580122, -0.20310084759231678,
-0.1986688450317302, -0.1946248071495122, -0.19004395963350218},
{-0.9231106692017633, -0.8359574095404637, -0.6268100349008963,
-0.49310249018532015, -0.41373747282589923, -0.36231404142238877,
-0.3254317681055, -0.30490693860259965, -0.2845752606014962,
-0.26832631591868183, -0.25507016898257373, -0.24404442077465655,
-0.23469088280325234, -0.22664447661449916, -0.21962991382180663,
-0.21345751946381875, -0.2079763120801501, -0.20305425398356147,
-0.19862388951457532, -0.19458132445354132, -0.18998577261367144},
{-0.9244667770349184, -0.8360432066962854, -0.6266434333937578,
-0.49294579436224684, -0.41360605574002746, -0.3622027722233112,
-0.32536732741822855, -0.3048200069458632, -0.28449570374108035,
-0.2682535587824449, -0.25500297610952183, -0.24398179582629248,
-0.23463206072461978, -0.2265888658060216, -0.21957705314667736,
-0.21340703956971335, -0.20792791439712555, -0.20300769826084514,
-0.1985789705174183, -0.19453787704727865, -0.18992774970314202},
{-0.9258190893971365, -0.8361277264792786, -0.6264766626329601,
-0.49278913167788085, -0.41347470899055483, -0.3620915768964937,
-0.32530291580659554, -0.30473313072313335, -0.2844162091453641,
-0.2681808601341245, -0.254935837849169, -0.24391922193148352,
-0.23457328663248267, -0.226533300354676, -0.2195242355578062,
-0.2133566007869902, -0.20787955609323905, -0.20296118038223848,
-0.19853408799975542, -0.194494464891518, -0.1898698949205364},
{-0.9271676134420038, -0.8362109731615948, -0.6263097239278289,
-0.49263250249401846, -0.4133434326696736, -0.3619804554444787,
-0.3252385303960762, -0.30464630999553965, -0.2843367767695037,
-0.2681082199204171, -0.25486875414654525, -0.2438566990368436,
-0.23451456047555402, -0.22647778021138742, -0.21947146100820153,
-0.21330620307049653, -0.2078312371250427, -0.2029147003058761,
-0.19848924192112716, -0.19445108794707433, -0.1898122120046376},
{-0.9285123563142748, -0.8362929510051114, -0.62614261858155,
-0.492475907170184, -0.41321222686851444, -0.36186940786933286,
-0.32517416836483337, -0.3045595448231696, -0.28425740656850007,
-0.26803563808800696, -0.25480172494671505, -0.24379422708903004,
-0.23445588220263297, -0.22642230532712887, -0.21941872945087781,
-0.21325584637516537, -0.20778295744913894, -0.20286825798986657,
-0.1984444322411103, -0.1944077461748535, -0.18975470442326703},
{-0.9298533251498592, -0.8363736642614428, -0.6259753478911811,
-0.4923193460635891, -0.41308109167728196, -0.36175843417270903,
-0.32510982694357904, -0.30447283526500624, -0.2841780984972105,
-0.2679631145835197, -0.2547347501947243, -0.24373180603468736,
-0.23439725176254422, -0.22636687565290103, -0.2193660408388694,
-0.21320553065589304, -0.20773471702214247, -0.2028218533924122,
-0.19839965891927158, -0.19436443953570454, -0.18969737538213566},
{-0.931190527075802, -0.8364531171719267, -0.6258079131476824,
-0.49216281952921404, -0.4129500271852602, -0.361647534355769,
-0.32504550341531957, -0.30438618137901957, -0.28409885251038813,
-0.2678906493535694, -0.2546678298356464, -0.24366943582051837,
-0.23433866910410556, -0.22631149113974097, -0.21931339512527892,
-0.21315525586766576, -0.20768651580074315, -0.20277548647174687,
-0.19835492191533677, -0.194321167990598, -0.18964022783379486},
{-0.9325239692102747, -0.8365313139676385, -0.625640315635943,
-0.49200632791973475, -0.4128190334806917, -0.36153670841924646,
-0.3249811951151268, -0.304299583222157, -0.2840196685626224,
-0.2678182423447459, -0.2546009638145438, -0.2436071163932227,
-0.2342801341762118, -0.22625615173872027, -0.21926079226324507,
-0.21310502196551429, -0.2076383537416296, -0.20272915718613638,
-0.1983102211889341, -0.1942779315005323, -0.18958326448634666},
{-0.9338536586625545, -0.8366082588694015, -0.6254725566348276,
-0.49184987158560256, -0.4126881106509638, -0.36142595636341845,
-0.3249168994298286, -0.30421304085032547, -0.28394054660835427,
-0.2677458935035846, -0.2545341520764927, -0.24354484769952794,
-0.23422164692774566, -0.2262008574009321, -0.21920823220590396,
-0.213054828904448, -0.2075902308015493, -0.2026828654938569,
-0.19826555669982426, -0.19423473002649805, -0.1895264878122444},
{-0.9351796025330246, -0.8366839560877626, -0.625304637417152,
-0.491693450875048, -0.41255725878244454, -0.36131527818809994,
-0.32485261379778874, -0.30412655431840896, -0.28386148660193483,
-0.2676736027766319, -0.25446739456658657, -0.24348262968619244,
-0.234163207307662, -0.22614560807749934, -0.21915571490646485,
-0.21300467663958228, -0.20754214693726236, -0.20263661135327637,
-0.19822092840774636, -0.19419156352958644, -0.1894699000569443},
{-0.9365018079131495, -0.8367584098230254, -0.6251365592497793,
-0.4915370661340404, -0.4124264779605982, -0.3612046738927061,
-0.32478833570859195, -0.304040123680283, -0.28378248849754056,
-0.26760137011037227, -0.25440069122988496, -0.24342046229998454,
-0.23410481526490806, -0.2260904037196032, -0.21910324031815825,
-0.21295456512600608, -0.2074941021056131, -0.20259039472272294,
-0.1981763362725143, -0.19414843197085746, -0.18941350324749617},
{-0.9378202818854691, -0.8368316242652228, -0.6249683233935848,
-0.491380717706386, -0.41229576827000036, -0.36109414347617064,
-0.3247240627027551, -0.3039537489888403, -0.2837035522492528,
-0.2675291954512603, -0.25433404201152415, -0.24335834548770724,
-0.23404647074848733, -0.2260352442784398, -0.21905080839425228,
-0.21290449431889036, -0.20744609626343252, -0.2025442155606471,
-0.19813178025397016, -0.19410533531147006, -0.18935729920094874},
{-0.9391350315235858, -0.8369036035941464, -0.6247999311035217,
-0.49122440593365035, -0.4121651297942275, -0.36098368693702537,
-0.3246597923713551, -0.3038674302959784, -0.2836246778110136,
-0.267457078745777, -0.2542674468566035, -0.2432962791961808,
-0.23398817370745217, -0.22598012970526393, -0.21899841908805479,
-0.2128544641734248, -0.2073981293676203, -0.20249807382547996,
-0.1980872603119958, -0.19406227351261573, -0.18930128953272862},
{-0.9404460638921507, -0.8369743519793402, -0.6246313836286149,
-0.4910681311552009, -0.4120345626159995, -0.3608733042733593,
-0.3245955223556557, -0.3037811676525993, -0.2835458651366262,
-0.26738501994031294, -0.2542009057102411, -0.2432342633722503,
-0.23392992409082236, -0.22592505995131873, -0.2189460723529073,
-0.21280447464483215, -0.20735020137510873, -0.2024519694757152,
-0.19804277640651197, -0.19401924653547536, -0.18924547566480554},
{-0.9417533860468625, -0.8370438735800986, -0.6244626822120247,
-0.4909118937082801, -0.4119040668170595, -0.36076299548280366,
-0.324531250346765, -0.3036949611086629, -0.28346711417977594,
-0.26731301898126975, -0.2541344185175792, -0.24317229796277456,
-0.233871721847712, -0.2258700349679223, -0.21889376814218336,
-0.21275452568839304, -0.20730231224285345, -0.20240590246988077,
-0.19799832849745824, -0.1939762543413392, -0.18918985883371503},
{-0.9430570050344272, -0.8371121725454798, -0.6242938280910514,
-0.49075569392792195, -0.41177364247827664, -0.3606527605626111,
-0.3244669740853087, -0.30360881071313356, -0.28338842489403354,
-0.2672410758150038, -0.25406798522373664, -0.24311038291467324,
-0.2338135669272604, -0.22581505470641183, -0.21884150640931477,
-0.21270461725941092, -0.20725446192789843, -0.20235987276655332,
-0.19795391654484829, -0.1939332968914677, -0.18913444009851632},
{-0.9443569278925793, -0.8371792530142974, -0.6241248224971404,
-0.4905995321470198, -0.411643289679663, -0.3605425995095661,
-0.3244026913609565, -0.303522716514045, -0.2833097972328554,
-0.2671691903878772, -0.2540016057738859, -0.24304851817485046,
-0.23375545927859287, -0.2257601191181644, -0.21878928710774503,
-0.2126547493132196, -0.2072066503872223, -0.20231388032432268,
-0.19790954050870213, -0.19389037414718646, -0.18907922034845875},
{-0.945653161650055, -0.8372451191151371, -0.6239556666559617,
-0.4904434086963244, -0.4115130085002513, -0.36043251232007567,
-0.3243384000120565, -0.30343667855849665, -0.2832312311495498,
-0.2670973626462043, -0.2539352801132032, -0.24298670369025566,
-0.23369739885093288, -0.22570522815459004, -0.21873711019097491,
-0.21260492180520313, -0.2071588775779623, -0.20226792510183716,
-0.19786520034909444, -0.19384748606989505, -0.18902420031053258},
{-0.9469457133265775, -0.8373097749663543, -0.6237863617873748,
-0.4902873239044311, -0.4113827990182289, -0.36032249899010416,
-0.32427409792514933, -0.303350696892577, -0.2831527265973215,
-0.2670255925362615, -0.2538690081868493, -0.2429249394078402,
-0.2336393855934833, -0.22565038176714008, -0.21868497561252043,
-0.21255513469076848, -0.20711114345719872, -0.20222200705776977,
-0.19782089602614739, -0.1938046326209531, -0.18896938055687507},
{-0.9482345899328593, -0.8373732246760826, -0.6236169091055129,
-0.4901312780978619, -0.41125266131086746, -0.36021255951517617,
-0.32420978303455084, -0.30326477156155474, -0.2830742835292705,
-0.2669538800043506, -0.2538027899400254, -0.24286322527462006,
-0.23358141945551458, -0.22559557990729473, -0.21863288332596786,
-0.2125053879253927, -0.20706344798212323, -0.202176126150854,
-0.19777662750000047, -0.1937618137618376, -0.18891476151199793},
{-0.9495197984705727, -0.8374354723422297, -0.6234473098187432,
-0.48997527160097193, -0.41112259545457525, -0.3601026938904608,
-0.32414545332195, -0.3031789026096883, -0.2829959018983722,
-0.26688222499669323, -0.2537366253179385, -0.2428015612376166,
-0.23352350038630698, -0.22554082252655522, -0.21858083328491673,
-0.21245568146454907, -0.20701579110989882, -0.2021302823398296,
-0.1977323947308422, -0.19371902945399805, -0.1888603434596801},
{-0.950801345932365, -0.8374965220524965, -0.6232775651297595,
-0.4898193047360724, -0.41099260152492323, -0.35999290211065715,
-0.32408110681589636, -0.30309309008037777, -0.2829175816574872,
-0.2668106274595376, -0.25367051426581483, -0.242739947243863,
-0.23346562833518497, -0.22548610957648457, -0.21852882544299634,
-0.21240601526375763, -0.20696817279778706, -0.20208447558351506,
-0.19768819767892193, -0.19367627965897433, -0.1888061265499697},
{-0.9520792393018159, -0.8375563778843667, -0.6231076762355615,
-0.4896633778233525, -0.4108626795965147, -0.3598831841701162,
-0.32401674159134264, -0.3030073340160865, -0.2828393227593577,
-0.26673908733908414, -0.2536044567288937, -0.24267838324044544,
-0.23340780325152605, -0.22543144100869555, -0.21847685975391157,
-0.21235638927862033, -0.206920593003047, -0.2020387058407354,
-0.1976440363044643, -0.1936335643383149, -0.1887521108056412},
{-0.9533534855534513, -0.8376150439051195, -0.6229376443274837,
-0.4895074911808959, -0.4107328297431741, -0.3597735400627606,
-0.32395235576908965, -0.30292163445841214, -0.28276112515661295,
-0.2666676045815116, -0.2535384526524085, -0.24261686917444775,
-0.2333500250846866, -0.2253768167747796, -0.2184249361713675,
-0.21230680346468417, -0.20687305168297526, -0.20199297307036262,
-0.1975999105678053, -0.19359088345357806, -0.1886982961287177},
{-0.9546240916527333, -0.8376725241718481, -0.6227674705912698,
-0.48935164512483215, -0.4106030520378367, -0.35966396978210063,
-0.3238879475153888, -0.30283599144805234, -0.2826829888018339,
-0.2665961791330418, -0.25347250198166843, -0.24255540499304756,
-0.23329229378415473, -0.2253222368264573, -0.2183730546491689,
-0.21225725777767218, -0.2068255487949815, -0.20194727723136274,
-0.19755582042933223, -0.19354823696647983, -0.18864468230680526},
{-0.9558910645560295, -0.8377288227314343, -0.622597156206999,
-0.4891958399690842, -0.4104733465525302, -0.3595544733212458,
-0.32382351504132734, -0.3027504050247895, -0.28260491364738555,
-0.26652481093974967, -0.2534066046619114, -0.24249399064334204,
-0.2332346092993357, -0.2252677011153626, -0.21832121514106068,
-0.21220775217319765, -0.20677808429639283, -0.2019016182826267,
-0.19751176584934732, -0.19350562483859568, -0.1885912690188853},
{-0.957154411210626, -0.8377839436205754, -0.6224267023492082,
-0.48904007602564625, -0.410343713358547, -0.3594450506729181,
-0.3237590566024272, -0.30266487522759006, -0.2825268996456031,
-0.2664534999477893, -0.2533407606384659, -0.24243262607253901,
-0.2331769715797305, -0.22521320959326374, -0.21826941760090157,
-0.21215828660699843, -0.20673065814465896, -0.20185599618318983,
-0.19746774678830448, -0.1934630470316634, -0.18853805584144534},
{-0.9584141385547048, -0.8378378908657984, -0.6222561101868814,
-0.4888843536044244, -0.4102141525262072, -0.3593357018294667,
-0.3236945704980366, -0.3025794020945265, -0.28244894674870374,
-0.2663822461032843, -0.25327496985663567, -0.2423713112278454,
-0.2331193805749074, -0.22515876221194436, -0.2182176619825748,
-0.2121088610348345, -0.2066832702972372, -0.20181041089206403,
-0.19742376320667981, -0.19342050350741352, -0.1884850422540214},
{-0.959670253517338, -0.837890668483446, -0.6220853808834498,
-0.48872867301330447, -0.4100846641250942, -0.3592264267828416,
-0.323630055070797, -0.30249398566281693, -0.28237105490880565,
-0.26631104935231337, -0.2532092322617549, -0.24231004605650608,
-0.23306183623439197, -0.22510435892320502, -0.2181659482399982,
-0.2120594754125052, -0.20663592071165665, -0.20176486236835373,
-0.19737981506497915, -0.19337799422762741, -0.18843222764465273},
{-0.9609227630184782, -0.837942280479687, -0.6219145155968536,
-0.48857303455819895, -0.4099552482238734, -0.3591172255245707,
-0.3235655087060973, -0.30240862596885054, -0.28229322407791496,
-0.2662399096409788, -0.2531435477992034, -0.24224883050578788,
-0.2330043385078206, -0.22504999967891132, -0.21811427632713204,
-0.2120101296958427, -0.2065886093454573, -0.20171935057117535,
-0.19733590232375747, -0.19333551915413072, -0.18837961131523134},
{-0.9621716739689473, -0.8379927308505394, -0.6217435154795408,
-0.48841743854295844, -0.40982590489041704, -0.35900809804585504,
-0.3235009298315756, -0.3023233230481526, -0.2822154542079242,
-0.26616882691529753, -0.2530779164143255, -0.2421876645229757,
-0.23294688734481567, -0.2249956844309275, -0.21806264619794957,
-0.21196082384071824, -0.20654133615620895, -0.20167387545966275,
-0.1972920249435564, -0.19329307824874747, -0.18832719248651086},
{-0.9634169932704291, -0.8380420235818486, -0.6215723816785019,
-0.4882618852694993, -0.40969663419181435, -0.3588990443374583,
-0.3234363169165525, -0.30223807693541793, -0.28213774525067536,
-0.2660978011213467, -0.2530123380525272, -0.24212654805541417,
-0.23288948269504306, -0.22494141313120092, -0.2180110578065103,
-0.21191155780303084, -0.2064941011015744, -0.201628436993054,
-0.19724818288503831, -0.19325067147336833, -0.18827497030314555},
{-0.9646587278154741, -0.8380901626493337, -0.6214011153353045,
-0.48810637503771825, -0.40956743619424146, -0.3587900643898234,
-0.3233716684714526, -0.30215288766453235, -0.28206009715788194,
-0.2660268322051449, -0.25294681265921853, -0.2420654810504439,
-0.23283212450823842, -0.2248871857317138, -0.21795951110690187,
-0.21186233153878492, -0.2064469041392103, -0.2015830351305633,
-0.19720437610885683, -0.19320829878995077, -0.18822294383828825},
{-0.9658968844874547, -0.8381371520185428, -0.6212297175860877,
-0.48795090814553543, -0.40943831096315153, -0.35868115819298074,
-0.3233069830472134, -0.3020677552685509, -0.28198250988113444,
-0.2659559201127053, -0.25288134017981834, -0.24200446345545373,
-0.23277481273411765, -0.22483300218444596, -0.2179080060532098,
-0.21181314500392268, -0.20639974522681376, -0.20153766983149762,
-0.1971606045757207, -0.193165960160408, -0.1881711120981745},
{-0.9671314701605902, -0.8381829956449138, -0.6210581895616119,
-0.48779548488896746, -0.4093092585630984, -0.35857232573656006,
-0.3232422592347435, -0.3019826797797265, -0.28190498337199305,
-0.26588506479003143, -0.25281592055978175, -0.24194349521782937,
-0.2327175473224744, -0.22477886244144502, -0.21785654259959192,
-0.2117639981545012, -0.20635262432213214, -0.20149234105515013,
-0.19711686824635172, -0.19312365554677158, -0.18811947402657592},
{-0.9683624916999309, -0.8382276974737441, -0.620886532387277,
-0.48764010556200543, -0.4091802790578878, -0.35846356700988835,
-0.32317749566440895, -0.3018976612294947, -0.2818275175818762,
-0.2658142661830992, -0.25275055374457644, -0.24188257628504872,
-0.2326603282231291, -0.22472476645479444, -0.21780512070025798,
-0.21171489094657864, -0.20630554138298035, -0.20144704876089425,
-0.19707316708157574, -0.19308138491105437, -0.18806802850889237},
{-0.9695899559613486, -0.8382712614402071, -0.6207147471831373,
-0.48748477045676575, -0.4090513725105396, -0.35835488200187127,
-0.32311269100539874, -0.30181269964850865, -0.28175011246212767,
-0.2657435242378624, -0.25268523967969464, -0.24182170660454683,
-0.2326031553859116, -0.2246707141766176, -0.21775374030942524,
-0.2116658233362797, -0.20625849636715482, -0.20140179290815663,
-0.1970295010421768, -0.19303914821530405, -0.1880167743762174},
{-0.9708138697915097, -0.8383136914693758, -0.6205428350639437,
-0.48732947986339686, -0.40892253898321207, -0.35824627070107223,
-0.32304784396520886, -0.30172779506663494, -0.2816727679640125,
-0.2656728389003195, -0.2526199783106402, -0.24176088612384783,
-0.23254602876074976, -0.2246167055590873, -0.21770240138137936,
-0.2116167952797371, -0.20621148923254096, -0.2013565734563703,
-0.19698587008903928, -0.1929969454216715, -0.1879657104092688},
{-0.9720342400279018, -0.8383549914762067, -0.6203707971391368,
-0.48717423407011273, -0.40879377853734344, -0.35813773309571584,
-0.32298295328897064, -0.3016429475129374, -0.28159548403869056,
-0.2656022101163842, -0.25255476958293227, -0.241700114790462,
-0.23248894829752342, -0.2245627405543963, -0.21765110387042058,
-0.21156780673318515, -0.20616451993706303, -0.20131139036501183,
-0.19694227418307642, -0.19295477649228904, -0.18791483534197811},
{-0.9732510734988045, -0.8383951653655685, -0.6201986345128966,
-0.4870190333632731, -0.4086650912335027, -0.35802926917356936,
-0.3229180177589674, -0.301558157015739, -0.28151826063723273,
-0.26553163783200473, -0.252489613442147, -0.24163939255194383,
-0.23243191394622154, -0.2245088191147796, -0.21759984773088975,
-0.21151885765280848, -0.2061175884386648, -0.20126624359362566,
-0.19689871328521885, -0.19291264138933084, -0.18786414786511685},
{-0.9744643770232742, -0.8384342170322319, -0.620026348284162,
-0.48686387802729164, -0.40853647713154506, -0.3579208789221776,
-0.3228530361940667, -0.30147342360256907, -0.28144109771064363,
-0.26546112199309624, -0.2524245098338274, -0.24157871935590813,
-0.23237492565685464, -0.22445494119251785, -0.21754863291722049,
-0.21146994799492502, -0.20607069469534123, -0.20122113310177975,
-0.196855187356469, -0.19287054007503462, -0.18781364662966865},
{-0.9756741574111586, -0.8384721503608914, -0.6198539395466378,
-0.48670876834472604, -0.4084079362905567, -0.35781256232861475,
-0.3227880074491166, -0.3013887473002057, -0.28136399520983196,
-0.26539066254556554, -0.2523594587035766, -0.24151809514994116,
-0.23231798337941673, -0.22440110673993097, -0.21749745938380205,
-0.21142107771583385, -0.20602383866511653, -0.201176058849101,
-0.19681169635783297, -0.1928284725116235, -0.18776333025005926},
{-0.976880421463074, -0.8385089692261746, -0.6196814093888482,
-0.48655370459622244, -0.4082794687687904, -0.3577043193796866,
-0.3227229304144161, -0.30130412813469454, -0.28128695308564,
-0.26532025943532833, -0.2522944599970287, -0.24145751988170494,
-0.2322610870640161, -0.22434731570939187, -0.2174463270851391,
-0.21137224677189315, -0.20597702030609338, -0.20113102079520412,
-0.19676824025038753, -0.19278643866143835, -0.18771319730729857},
{-0.9780831759704043, -0.8385446774926342, -0.619508758894117,
-0.4863986870605585, -0.4081510746237731, -0.35759615006180756,
-0.3226578040150764, -0.30121956613127876, -0.281209971288767,
-0.265249912608248, -0.2522295136597769, -0.2413969934988679,
-0.23220423666073248, -0.22429356805328876, -0.2173952359757223,
-0.21132345511949002, -0.2059302395763511, -0.2010860188998178,
-0.19672481899525657, -0.19274443848679917, -0.18766324635185544},
{-0.9792824277152841, -0.8385792790147729, -0.6193359891406329,
-0.4862437160146915, -0.40802275391224047, -0.35748805436102316,
-0.3225926272105302, -0.301135061314537, -0.28113304976993153,
-0.2651796220102395, -0.2521646196375221, -0.24133651594916328,
-0.23214743211975025, -0.22423986372407562, -0.21734418601012262,
-0.21127470271510035, -0.20588349643410636, -0.20104105312266418,
-0.19668143255356912, -0.19270247195010037, -0.18761347590656746},
{-0.9804781834706133, -0.8386127776370627, -0.6191631012014355,
-0.486088791733683, -0.4078945066901833, -0.3573800322630876,
-0.3225273989939445, -0.3010506137082536, -0.2810561884796892,
-0.26510938758714503, -0.25209977787590926, -0.2412760871803093,
-0.23209067339120526, -0.22418620267421668, -0.21729317714292407,
-0.2112259895151663, -0.20583679083749745, -0.20099612342352086,
-0.19663808088652718, -0.19266053901372865, -0.18756388446925132},
{-0.98167045000003, -0.8386451771939074, -0.618990096144479,
-0.4859339144907886, -0.4077663330128857, -0.3572720837533691,
-0.32246211839170075, -0.30096622333551776, -0.28097938736856015,
-0.2650392092848344, -0.2520349883206566, -0.24121570714009494,
-0.23203396042534669, -0.22413258485623616, -0.21724220932877203,
-0.2111773154762091, -0.2057901227448321, -0.2009512297622108,
-0.1965947639553417, -0.19261863964018966, -0.18751447051538217},
{-0.9828592340579029, -0.8386764815097139, -0.6188169750326136,
-0.4857790845574068, -0.4076382329347841, -0.35716420881691746,
-0.3223967844628247, -0.30088189021868544, -0.28090264638697143,
-0.2649690870491653, -0.2519702509174767, -0.24115537577630203,
-0.23197729317242405, -0.2240790102227047, -0.21719128252233,
-0.2111286805548368, -0.20574349211432197, -0.2009063720985863,
-0.1965514817212899, -0.19257677379193694, -0.18746523250037617},
{-0.9840445423893398, -0.8387066943988474, -0.6186437389236306,
-0.4856243022031055, -0.4075102065096595, -0.3570564074384542,
-0.3223313962983991, -0.3007976143794279, -0.28082596548526617,
-0.2648990208259759, -0.2519055656121097, -0.24109509303677762,
-0.23192067158271212, -0.22402547872621553, -0.2171403966783229,
-0.21108008470758033, -0.20569689890432424, -0.2008615503925531,
-0.19650823414567298, -0.19253494143152144, -0.18741616886201662},
{-0.985226381730177, -0.838735819665691, -0.6184703888702856,
-0.48546956769570926, -0.4073822537904892, -0.35694867960233156,
-0.32226595302108424, -0.30071339583866563, -0.28074934461376405,
-0.2648290105611328, -0.2518409323503541, -0.24103485886940446,
-0.23186409560660204, -0.22397199031943865, -0.21708955175152456,
-0.21103152789117735, -0.20565034307325464, -0.20081676460407955,
-0.1964650211899025, -0.1924931425215894, -0.1873672780227027},
{-0.9864047588069627, -0.8387638611045984, -0.6182969259203039,
-0.48531488130115463, -0.4072543748295395, -0.356841025292593,
-0.32220045378455203, -0.3006292346166615, -0.28067278372263355,
-0.26475905620043944, -0.2517763510779721, -0.24097467322206617,
-0.23180756519442086, -0.22391854495503638, -0.2170387476967247,
-0.21098301006223813, -0.2056038245794652, -0.20077201469313855,
-0.19642184281530445, -0.19245137702472037, -0.1873185583913678},
{-0.9875796803369623, -0.8387908224999607, -0.618123351116427,
-0.48516024328364393, -0.4071265696783871, -0.35673344449293837,
-0.32213489777297905, -0.3005451307329664, -0.28059628276202897,
-0.2646891576897237, -0.2517118217407942, -0.24091453604272084,
-0.23175108029658048, -0.2238651425857361, -0.216987984468771,
-0.21093453117754296, -0.20555734338141868, -0.2007273006197582,
-0.19637869898331223, -0.19240964490357282, -0.18727000836562224},
{-0.9887511530281496, -0.838816707626168, -0.6179496654964158,
-0.4850056539055681, -0.40699883838778955, -0.35662593718675295,
-0.3220692842005311, -0.3004610842064358, -0.2805198416820213,
-0.26461931497482, -0.251647344284642, -0.24085444727932082,
-0.23169464086355818, -0.22381178316431455, -0.2169372620225377,
-0.21088609119383073, -0.2055108994376365, -0.20068262234398448,
-0.19633558965545034, -0.19236794612090968, -0.18722162633363038},
{-0.9899191835791884, -0.8388415202476605, -0.6177758700930746,
-0.48485111342753534, -0.40687118100787223, -0.3565185033571178,
-0.32200361231078856, -0.3003770950552779, -0.2804434604325857,
-0.2645495280015316, -0.2515829186553813, -0.24079440687989112,
-0.23163824684580359, -0.22375846664357085, -0.2168865803129661,
-0.21083769006793063, -0.20546449270664602, -0.20063797982596254,
-0.1962925147932068, -0.19232628063948087, -0.18717341067578064},
{-0.9910837786794539, -0.8388652641189092, -0.6176019659342874,
-0.48469662210844333, -0.4067435975879633, -0.35641114298670507,
-0.321937881376254, -0.3002931632969812, -0.280367138963675,
-0.26447979671567146, -0.2515185447988973, -0.24073441479244545,
-0.23158189819387415, -0.22370519297636104, -0.2168359392950146,
-0.210789327756696, -0.20541812314701824, -0.2005933730258495,
-0.19624947435813733, -0.19228464842208648, -0.18712535976648692},
{-0.9922449450089974, -0.8388879429844331, -0.617427954043017,
-0.4845421802053631, -0.4066160881767339, -0.35630385605795833,
-0.32187209069791234, -0.3002092889483997, -0.28029087722511575,
-0.26441012106303174, -0.25145422266109585, -0.24067447096506855,
-0.2315255948583379, -0.22365196211557953, -0.21678533892368484,
-0.21074100421700925, -0.20537179071738965, -0.20054880190382612,
-0.1962064683118402, -0.19224304943159165, -0.1870774719757533},
{-0.9934026892385668, -0.8389095605788213, -0.6172538354373471,
-0.48438778797368587, -0.40648865282215374, -0.3561966425529469,
-0.3218062396046577, -0.3001254720257104, -0.28021467516672594,
-0.2643405009894209, -0.2513899521879084, -0.2406145753458817,
-0.2314693367897721, -0.22359877401416084, -0.21673477915402678,
-0.21069271940581674, -0.2053254953764313, -0.20050426642012292,
-0.19616349661595267, -0.19220148363090483, -0.1870297456706842},
{-0.9945570180295786, -0.8389301206267327, -0.6170796111304937,
-0.4842334456670083, -0.40636129157141176, -0.35608950245346316,
-0.32174032745286857, -0.30004171254445283, -0.28013853273823974,
-0.2642709364406348, -0.25132573332530234, -0.2405547278830107,
-0.23141312393885288, -0.22354562862508742, -0.21668425994116663,
-0.21064447328013608, -0.20527923708286605, -0.20045976653506536,
-0.19612055923218985, -0.1921599509829981, -0.18698217921694793},
{-0.9957079380341334, -0.8389496268429113, -0.6169052821308264,
-0.48407915353722863, -0.4062340044710965, -0.35598243574096866,
-0.3216743536258395, -0.2999580105194915, -0.28006244988928575,
-0.2642014273624697, -0.2512615660192477, -0.24049492852466775,
-0.2313569562562477, -0.22349252590136182, -0.21663378124020444,
-0.21059626579694501, -0.20523301579543624, -0.20041530220894277,
-0.19607765612225747, -0.19211845145083428, -0.18693477098000277},
{-0.9968554558949891, -0.8389680829321898, -0.6167308494418942,
-0.48392491183454805, -0.4061067915669859, -0.35587544239654756,
-0.3216083175333259, -0.2998743659650747, -0.2799864265694826,
-0.26413197370070157, -0.25119745021574547, -0.24043517721902735,
-0.231300833692703, -0.223439465796059, -0.21658334300632204,
-0.21054809691332516, -0.20518683147292166, -0.20037087340215798,
-0.19603478724790913, -0.19207698499751014, -0.18688751932645287},
{-0.9979995782455762, -0.8389854925895166, -0.6165563140624477,
-0.48377072080740763, -0.40597965290426774, -0.3557685224010954,
-0.3215422186111315, -0.29979077889478384, -0.27991046272835207,
-0.2640625754011191, -0.2511333858608404, -0.24037547391440278,
-0.23124475619898294, -0.22338644826229898, -0.21653294519474897,
-0.21049996658640052, -0.2051406840742322, -0.20032648007511422,
-0.19599195257099133, -0.19203555158612617, -0.1868404226253474},
{-0.9991403117099875, -0.8390018594999463, -0.6163816769864486,
-0.4836165807025986, -0.40585258852741213, -0.35566167573509055,
-0.32147605632057574, -0.29970724932159704, -0.279834558315374,
-0.26399323240947664, -0.2510693729005854, -0.24031581855903722,
-0.23118872372586452, -0.22333347325320024, -0.21648258776070906,
-0.21045187477328592, -0.2050945735581865, -0.20028212218820918,
-0.19594915205328656, -0.1919941511797404, -0.18679347924905154},
{-1.0002776629029544, -0.8390171873386628, -0.6162069392031098,
-0.4834624917651854, -0.40572559848015444, -0.355554902378766,
-0.32140983014812485, -0.2996237772578456, -0.2797587132799761,
-0.26392394467160085, -0.2510054112810493, -0.24025621110128476,
-0.23113273622424158, -0.22328054072196457, -0.21643227065955795,
-0.21040382143121994, -0.20504849988375945, -0.20023779970200206,
-0.19590638565675278, -0.19195278374164615, -0.18674668757451773},
{-1.0014116384298761, -0.8390314797709981, -0.6160321016968964,
-0.4833084542385405, -0.4055986828056266, -0.3554482023120684,
-0.3213435396047797, -0.29954036271524487, -0.2796829275714803,
-0.2638547121332527, -0.25094150094834594, -0.2401966514895209,
-0.23107679364492928, -0.22322765062184285, -0.21638199384659773,
-0.2103558065174192, -0.2050024630099062, -0.20019351257703388,
-0.19586365334330513, -0.19191144923502856, -0.18670004598417356},
{-1.0025422448867958, -0.8390447404524228, -0.6158571654475606,
-0.4831544683644159, -0.40547184154620675, -0.355341575514528,
-0.32127718422574986, -0.2994570057049141, -0.27960720113917753,
-0.26378553474020205, -0.25087764184862427, -0.2401371396721076,
-0.2310208959389387, -0.22317480290608827, -0.21633175727720771,
-0.21030782998918945, -0.20495646289564173, -0.20014926077384276,
-0.1958209550749137, -0.19187014762321664, -0.1866535528668577},
{-1.0036694888603863, -0.839056973028584, -0.6156821314301614,
-0.48300053438285606, -0.4053450747436603, -0.3552350219655203,
-0.3212107635700284, -0.2993737062373461, -0.2795315339323315,
-0.26371641243822996, -0.25081383392802425, -0.24007767559757415,
-0.23096504305721832, -0.22312199752803852, -0.21628156090686673,
-0.21025989180382454, -0.2049104995000648, -0.20010504425309972,
-0.19577829081360498, -0.19182887886952393, -0.1866072066187403},
{-1.0047933769279702, -0.8390681811352825, -0.6155070006150706,
-0.482846652532262, -0.4052183824390878, -0.355128541644011,
-0.3211442772198637, -0.2992904643224351, -0.27945592590009577,
-0.26364734517309774, -0.25075007713274894, -0.240018259214342,
-0.23090923495072962, -0.2230692344410356, -0.21623140469097657,
-0.2102119919187036, -0.20486457278222348, -0.20006086297543302,
-0.1957356605214502, -0.19178764293732287, -0.18656100564401557},
{-1.0059139156574994, -0.8390783683985356, -0.6153317739680336,
-0.48269282304938615, -0.4050917646728712, -0.3550221345287458,
-0.3210777247804797, -0.2992072799695024, -0.27938037699160995,
-0.26357833289060834, -0.2506863714090268, -0.23995889047096763,
-0.23085347157060637, -0.22301651359852598, -0.21618128858510183,
-0.21016413029125958, -0.20481868270134884, -0.20001671690157485,
-0.19569306416051313, -0.19174643979010564, -0.18651494835579907},
{-1.0070311116075519, -0.839087538434522, -0.6151564524501206,
-0.4825390461693222, -0.4049652214847875, -0.35491580059814526,
-0.3210111058794668, -0.2991241531872077, -0.27930488715591095,
-0.2635093755365162, -0.25062271670307984, -0.23989956931599188,
-0.23079775286786297, -0.222963834953953, -0.21613121254477335,
-0.2101163068789219, -0.20477282921657247, -0.19997260599230005,
-0.19565050169300335, -0.19170526939128807, -0.18646903317670294},
{-1.0081449713273343, -0.8390956948496635, -0.6149810370178217,
-0.48238532212560015, -0.40483875291391397, -0.3548095398302976,
-0.3209444201664828, -0.29904108398371854, -0.27922945634203933,
-0.26344047305662044, -0.2505591129611951, -0.2398402956980375,
-0.2307420787937251, -0.2229111984607936, -0.21608117652560405,
-0.21006852163924838, -0.20472701228716916, -0.19992853020837287,
-0.19560797308108746, -0.1916641317044594, -0.18642325853957253},
{-1.0092555013566786, -0.8391028412405781, -0.6148055286230109,
-0.48223165115002625, -0.4047123589987015, -0.35470335220307686,
-0.32087766731286244, -0.29895807236654576, -0.2791540844989343,
-0.26337162539666015, -0.250495560129656, -0.23978106956574646,
-0.23068644929928916, -0.22285860407260744, -0.21603118048322972,
-0.2100207745297038, -0.20468123187239473, -0.19988448951062576,
-0.19556547828696502, -0.19162302669313813, -0.1863776228880023},
{-1.010362708226035, -0.8391089811941392, -0.6146299282130072,
-0.48207803347289774, -0.40458603977699564, -0.35459723769400675,
-0.3208108470111646, -0.29887511834268027, -0.27907877157550975,
-0.2633028325024538, -0.25043205815483244, -0.23972189086780715,
-0.23063086433582725, -0.22280605174297347, -0.21598122437333184,
-0.20997306550792683, -0.20463548793161934, -0.19984048385998376,
-0.19552301727294652, -0.19158195432097236, -0.18633212467704552},
{-1.0114665984564646, -0.8391141182874573, -0.6144542367305663,
-0.48192446932283395, -0.40445979528588305, -0.35449119628036635,
-0.32074395897483454, -0.298792221918505, -0.27900351752062036,
-0.2632340943197826, -0.2503686069830414, -0.2396627595529272,
-0.2305753238545784, -0.22275354142553383, -0.21593130815164696,
-0.20992539453157033, -0.20458978042419018, -0.19979651321732084,
-0.19548059000133688, -0.19154091455166578, -0.18628676237360298},
{-1.0125671785596426, -0.8391182560879002, -0.6142784551139059,
-0.4817709589268653, -0.40433362556193575, -0.3543852279391493,
-0.32067700293770707, -0.29870938309985967, -0.27892832228305,
-0.26316541079436945, -0.2503052065606945, -0.23960367556988416,
-0.23051982780681968, -0.22270107307392178, -0.2158814317739166,
-0.2098777615582187, -0.20454410930948952, -0.19975257754360298,
-0.19543819643447813, -0.19149990734880273, -0.18624153445681824},
{-1.0136644550378584, -0.8391213981531219, -0.6141025842967525,
-0.48161750251049834, -0.4042075306409969, -0.3542793326470085,
-0.3206099786537113, -0.298626601892016, -0.2788531858115827,
-0.26309678187209246, -0.25024185683419475, -0.2395446388674891,
-0.23046437614397652, -0.22264864664192086, -0.21583159519599815,
-0.20983016654567954, -0.2044984745470234, -0.19970867679988846,
-0.19539583653481052, -0.19145893267630076, -0.1861964394188198},
{-1.0147584343839962, -0.839123548031045, -0.6139266252083159,
-0.48146410029759124, -0.40408151055833186, -0.3541735103804015,
-0.3205428858965045, -0.2985438782997044, -0.2787781080549059,
-0.2630282074986973, -0.25017855775002995, -0.239485649394592,
-0.23040896881741285, -0.2225962620832489, -0.215781798373765,
-0.209782609451725, -0.20445287609631324, -0.19966481094720379,
-0.19535351026479608, -0.19141799049787434, -0.18615147576484203},
{-1.0158491230815594, -0.8391247092599023, -0.6137505787733508,
-0.48131075251047195, -0.40395556534859745, -0.354067761115435,
-0.32047572445902656, -0.29846121232710493, -0.2787030889616794,
-0.26295968761998134, -0.2501153092546806, -0.2394267071000793,
-0.23035360577853553, -0.2225439193517254, -0.21573204126308287,
-0.20973509023411707, -0.20440731391687783, -0.1996209799466423,
-0.1953112175868682, -0.19137708077740434, -0.18610664201364824},
{-1.016936527604638, -0.8391248853682298, -0.6135744459121402,
-0.481157459369867, -0.40382969504572225, -0.35396208482799535,
-0.3204084941532385, -0.29837860397784527, -0.27862812848052215,
-0.2628912221817593, -0.25005211129462374, -0.23936781193286877,
-0.2302982869788538, -0.2224916184012073, -0.21568232381991592,
-0.2096876088507288, -0.2043617879683054, -0.19957718375935762,
-0.19526895846359016, -0.19133620347876457, -0.18606193669788396},
{-1.0180206544179242, -0.839124079874898, -0.6133982275405523,
-0.4810042210949791, -0.40370389968314735, -0.353856481493693,
-0.3203411948096437, -0.29829605325502057, -0.2785532265599951,
-0.2628228111298114, -0.2499889638164164, -0.23930896384196604,
-0.2302430123698595, -0.22243935918559776, -0.2156326460002641,
-0.20964016525949392, -0.2043162982102602, -0.19953342234654103,
-0.19522673285755354, -0.19129535856587443, -0.1860173583644653},
{-1.0191015099767062, -0.8391222962891014, -0.6132219245700374,
-0.48085103790348116, -0.4035781792935849, -0.3537509510877684,
-0.32027382627697526, -0.2982135601611991, -0.278478383148612,
-0.2627544544099792, -0.24992586676666506, -0.2392501627763471,
-0.23018778190315226, -0.222387141658827, -0.21558300776015682,
-0.20959275941830824, -0.20427084460240041, -0.19948969566940444,
-0.19518454073137204, -0.19125454600273706, -0.1859729055746714},
{-1.020179100726868, -0.8391195381103995, -0.613045537907642,
-0.48069791001145123, -0.4034525339091942, -0.35364549358534947,
-0.3202063884218937, -0.2981311246984119, -0.2784035981948479,
-0.2626861519680492, -0.24986282009193456, -0.23919140868508693,
-0.23013259553032667, -0.2223349657748711, -0.2155334090556804,
-0.20954539128520666, -0.2042254271044729, -0.19944600368920717,
-0.19514238204766665, -0.19121376575334859, -0.18592857690451503},
{-1.0212534331048726, -0.8391158088286994, -0.6128690684560343,
-0.48054483763350364, -0.4033269635615585, -0.3535401089611492,
-0.3201388811286021, -0.2980487468681881, -0.2783288716471441,
-0.262617903749837, -0.2497998237389198, -0.239132701517293,
-0.2300774532030337, -0.2222828314877786, -0.21548384984295454,
-0.20949806081816946, -0.20418004567626946, -0.1994023463672978,
-0.19510025676920495, -0.19117301778179596, -0.18588437094495092},
{-1.0223245135377927, -0.8391111119243042, -0.6126925171135654,
-0.4803918209826859, -0.40320146828154524, -0.35343479718972765,
-0.3200713042985642, -0.2979664266715332, -0.2782542034539057,
-0.2625497097012306, -0.24973687765426977, -0.2390740412220866,
-0.23002235487298162, -0.22223073875162358, -0.2154343300782211,
-0.2094507679753559, -0.20413470027758884, -0.19935872366500973,
-0.1950581648587265, -0.1911323020521748, -0.18584028630202842},
{-1.0233923484432599, -0.8391054508678976, -0.6125158847741943,
-0.48023886027053075, -0.4030760480995458, -0.35332955824533724,
-0.3200036578500055, -0.29788416410893925, -0.278179593563458,
-0.26248156976799525, -0.2496739817846786, -0.2390154277486714,
-0.22996730049188902, -0.22217868752049774, -0.21538484971759697,
-0.20940351271482305, -0.20408939086829825, -0.19931513554379854,
-0.19501610627904276, -0.19109161852860312, -0.18579632159700832},
{-1.0244569442295144, -0.839098829120575, -0.6123391723276043,
-0.4800859557071172, -0.4029507030452466, -0.3532243921019187,
-0.31993594171773715, -0.2978019591804, -0.27810504192413804,
-0.26241348389603303, -0.24961113607691315, -0.2389568610462322,
-0.22991229001159952, -0.22212667774860606, -0.21533540871739942,
-0.2093562949947705, -0.20404411740828088, -0.1992715819650277,
-0.19497408099294777, -0.19105096717530312, -0.18575247546658424},
{-1.0255183072953618, -0.8390912501338419, -0.6121623806591597,
-0.4799331075009592, -0.4028254331478066, -0.3531192987332429,
-0.3198681558528338, -0.29771981188541585, -0.2780305484841965,
-0.262345452031152, -0.2495483404777633, -0.23889834106410607,
-0.22985732338388332, -0.22207470939012885, -0.21528600703393197,
-0.20930911477343894, -0.2039988798575636, -0.1992280628902462,
-0.19493208896336822, -0.19101034795653116, -0.18570874656304115},
{-1.026576444030198, -0.8390827173496422, -0.6119855106499559,
-0.4797803158591364, -0.40270023843580355, -0.3530142781127379,
-0.3198003002222032, -0.2976377222229762, -0.27795611319186964,
-0.2622774741191992, -0.24948559493398303, -0.238839867751532,
-0.22980240056061219, -0.22202278239931894, -0.21523664462354397,
-0.2092619720090494, -0.20395367817603882, -0.19918457828094516,
-0.19489013015318646, -0.19096976083642403, -0.18566513355414305},
{-1.0276313608139889, -0.8390732342003697, -0.6118085631768349,
-0.4796275809872143, -0.4025751189371611, -0.3529093302136408,
-0.31973237480843136, -0.2975556901915937, -0.2778817359953699,
-0.2622095501060942, -0.24942289939244433, -0.23878144105792792,
-0.22974752149375022, -0.22197089673049408, -0.21518732144262587,
-0.20921486665993538, -0.20390851232383678, -0.19914112809875728,
-0.19484820452543694, -0.19092920577938555, -0.18562163512348961},
{-1.0286830640172906, -0.8390628041088699, -0.6116315391123816,
-0.47947490308926927, -0.40245007467928756, -0.35280445500895435,
-0.3196643796092695, -0.29747371578933, -0.2778074168428738,
-0.26214167993767407, -0.24936025380004578, -0.2387230609326339,
-0.22969268613521443, -0.22191905233797582, -0.21513803744761606,
-0.20916779868445778, -0.2038633822610113, -0.1990977123052985,
-0.19480631204308918, -0.19088868274973247, -0.1855782499704649},
{-1.0297315600012285, -0.8390514304884773, -0.6114544393249665,
-0.4793222823679714, -0.4023251056889589, -0.35269965247128643,
-0.31959631463745974, -0.2973917990137517, -0.2777331556824526,
-0.2620738635598588, -0.24929765810368182, -0.23866472732511723,
-0.22963789443706706, -0.22186724917617162, -0.21508879259501335,
-0.20912076804100743, -0.20381828794769374, -0.19905433086217483,
-0.19476445266924747, -0.19084819171183287, -0.18553497681009457},
{-1.0307768551174925, -0.8390391167430007, -0.6112772646787559,
-0.4791697190244819, -0.4022002119924101, -0.35259492257316355,
-0.31952817992044585, -0.2973099398619416, -0.27765895246225103,
-0.26200610091851023, -0.24923511225030648, -0.23860644018490118,
-0.2295831463513629, -0.2218154871995205, -0.21503958684135382,
-0.209073774688061, -0.2037732293441017, -0.1990109837311962,
-0.19472262636697502, -0.1908077326301394, -0.18549181437345263},
{-1.031818955708364, -0.8390258662667606, -0.6111000160337295,
-0.47901721325853064, -0.4020753936153233, -0.352490265286769,
-0.3194599754999878, -0.29722813833055617, -0.2775848071303127,
-0.2619383919595496, -0.24917261618689301, -0.2385481994614661,
-0.22952844183014398, -0.22176376636247042, -0.21499042014320546,
-0.20902681858411465, -0.20372820641043343, -0.19896767087405132,
-0.19468083309947326, -0.19076730546904264, -0.18544876140730915},
{-1.0328578681066853, -0.8390116824445992, -0.6109226942457142,
-0.4788647652684098, -0.4019506505827487, -0.35238568058405983,
-0.31939170143198464, -0.2971463944157986, -0.27751071963466944,
-0.26187073662891347, -0.24911016986046775, -0.23849000510438678,
-0.22947378082564718, -0.2217120866195743, -0.21494129245719384,
-0.20897989968767106, -0.20368321910694598, -0.19892439225252845,
-0.1946390728298858, -0.19072691019306598, -0.18540581667433453},
{-1.0338935986358782, -0.8389965686518792, -0.6107453001663655,
-0.4787123752509316, -0.401825982919217, -0.35228116843679946,
-0.31932335778604765, -0.2970647081133572, -0.2774366899233066,
-0.2618031348725048, -0.24904777321808053, -0.2384318570633217,
-0.2294191632899557, -0.22166044792540562, -0.21489220373999562,
-0.2089330179573361, -0.20363826739397528, -0.1988811478285769,
-0.19459734552152086, -0.19068654676678287, -0.1853629789531328},
{-1.0349261536099164, -0.8389805282545212, -0.6105678346432323,
-0.47856004340157005, -0.40170139064868093, -0.3521767288163992,
-0.3192549446453002, -0.2969830794185947, -0.27736271794421347,
-0.2617355866363011, -0.24898542620684722, -0.2383737552878924,
-0.229364589175432, -0.2216088502345982, -0.2148431539483192,
-0.20888617335180404, -0.20359335123189826, -0.19883793756398904,
-0.19455565113760953, -0.19064621515468638, -0.1853202470379628},
{-1.0359555393333677, -0.8389635646090068, -0.6103902985197351,
-0.4784077699142865, -0.40157687379453955, -0.3520723616941227,
-0.31918646210606444, -0.2969015083263587, -0.2772888036453112,
-0.26166809186621637, -0.24892312877385908, -0.23831569972782918,
-0.22931005843425545, -0.2215572935017831, -0.21479414303891498,
-0.2088393658297074, -0.20354847058106817, -0.19879476142073105,
-0.19451398964152422, -0.19060591532141513, -0.18527761973892942},
{-1.0369817621013593, -0.8389456810623903, -0.610212692635211,
-0.4782555549816949, -0.4014524323796654, -0.35196806704094247,
-0.31911791027762504, -0.2968199948311036, -0.27721494697452737,
-0.26160065050824555, -0.24886088086631908, -0.2382576903328698,
-0.22925557101882654, -0.22150577768167545, -0.21474517096861157,
-0.20879259534977201, -0.20350362540199596, -0.19875161936079588,
-0.19447236099662057, -0.19056564723161573, -0.18523509588189824},
{-1.0380048281995742, -0.8389268809523152, -0.6100350178249175,
-0.478103398794966, -0.40132806642629226, -0.3518638448276304,
-0.3190492892819409, -0.29673853892682034, -0.27714114787971994,
-0.26153326250835984, -0.24879868243136039, -0.2381997270528312,
-0.22920112688147432, -0.22145430272906375, -0.21469623769425483,
-0.20874586187080846, -0.20345881565515422, -0.19870851134617729,
-0.19443076516633173, -0.19052541084996932, -0.18519267430833342},
{-1.0390247439042812, -0.838907167607033, -0.6098572749200539,
-0.47795130154386467, -0.40120377595621803, -0.3517596950247257,
-0.3189805992533199, -0.2966571406071371, -0.2770674063087377,
-0.2614659278125301, -0.24873653341625296, -0.23814180983747757,
-0.22914672597459684, -0.22140286859862612, -0.21464734317268808,
-0.2086991653515572, -0.20341404130100504, -0.19866543733894448,
-0.1943892021140562, -0.19048520614112452, -0.18515035387527912},
{-1.04004151548231, -0.8388865443454344, -0.6096794647478012,
-0.4777992634168319, -0.4010795609906069, -0.3516556176024812,
-0.3189118403382208, -0.2965757998652802, -0.27699372220945495,
-0.2613986463668387, -0.248674433768305, -0.2380839386367799,
-0.22909236825077262, -0.22135147524537624, -0.2145984873609299,
-0.2086525057510097, -0.20336930230025507, -0.1986223973012783,
-0.19434767180342427, -0.19044503306991245, -0.18510813345542054},
{-1.0410551491910534, -0.8388650144770197, -0.6095015881312847,
-0.47764728460085426, -0.4009554215501391, -0.3515516125309821,
-0.318843012694939, -0.296494516694066, -0.27692009552966473,
-0.2613314181172417, -0.24861238343479208, -0.23802611340064783,
-0.22903805366245267, -0.22130012262412468, -0.2145496702159413,
-0.20860588302803829, -0.2033245986134743, -0.1985793911952829,
-0.1943061741979073, -0.1904048916011385, -0.18506601193672267},
{-1.0420656512784727, -0.8388425813019481, -0.6093236458896527,
-0.4774953652815862, -0.4008313576549621, -0.35144767978003166,
-0.3187741164933842, -0.29641329108586395, -0.27684652621711975,
-0.261264243009801, -0.24855038236308324, -0.2379683340790254,
-0.2289837821622014, -0.22124881068981306, -0.21450089169477338,
-0.20855929714156274, -0.20327993020138757, -0.1985364189831781,
-0.19426470926114403, -0.19036478169964366, -0.1850239882225888},
{-1.043073027983111, -0.838819248111065, -0.6091456388380659,
-0.47734350564328665, -0.4007073693246096, -0.35134381931925207,
-0.31870515191486204, -0.2963321230327648, -0.2767730142196003,
-0.2611971209906008, -0.24848843050055158, -0.23791060062195513,
-0.22892955370261725, -0.2211975393974246, -0.21445215175448984,
-0.20851274805067233, -0.20323529702466692, -0.1984934806272337,
-0.1942232769567389, -0.19032470333023777, -0.18498206123155336},
{-1.04407728553405, -0.8387950181858721, -0.6089675677877009,
-0.4771917058688494, -0.4005834565781719, -0.35124003111802526,
-0.31863611915170165, -0.2962510125263744, -0.27669955948486546,
-0.2611300520056467, -0.24842652779460572, -0.2378529129794994,
-0.22887536823635157, -0.22114630870200291, -0.2144034503522384,
-0.2084662357143855, -0.20319069904407783, -0.1984505760897144,
-0.19418187724844793, -0.19028465645790738, -0.18494022989738057},
{-1.0450784301509597, -0.83876989479858, -0.6087894335458119,
-0.47703996613987143, -0.40045961943415986, -0.3511363151454513,
-0.3185670184070922, -0.2961699595579835, -0.2766261619605966,
-0.2610630360010981, -0.24836467419274344, -0.23779527110175536,
-0.2288212257161425, -0.22109511855859965, -0.21435478744515568,
-0.20841976009179208, -0.20314613622045974, -0.19840770533297558,
-0.19414051009995115, -0.19024464104758487, -0.18489849316870355},
{-1.0460764680440724, -0.8387438812121131, -0.6086112369156809,
-0.4768882866365274, -0.4003358579105613, -0.35103267137049826,
-0.31849784989482494, -0.29608896411848734, -0.2765528215944946,
-0.26099607292300786, -0.24830286964246395, -0.23773767493887765,
-0.22876712609475158, -0.22104396892235578, -0.21430616299053917,
-0.20837332114210227, -0.2031016085146653, -0.19836486831945144,
-0.1940991754750363, -0.19020465706431888, -0.18485685000925234},
{-1.0470714054141874, -0.8387169806801242, -0.6084329786967171,
-0.4767366675377135, -0.40021217202493703, -0.35092909976183795,
-0.3184286138390629, -0.2960080261984568, -0.2764795383342318,
-0.2609291627175069, -0.2482411140912847, -0.23768012444103337,
-0.22871306932489954, -0.2209928597484193, -0.21425757694559489,
-0.20832691882444032, -0.2030571158875898, -0.19832206501150063,
-0.19405787333752644, -0.19016470447307865, -0.18481529939723573},
{-1.0480632484526715, -0.8386891964470071, -0.6082546596844123,
-0.4765851090209556, -0.40008856179415603, -0.3508256002879943,
-0.3183593104741449, -0.2959271457880783, -0.2764063121274843,
-0.26086230533079513, -0.24817940748680434, -0.23762261955854147,
-0.22865905535949027, -0.22094179099200573, -0.21420902926769092,
-0.20828055309812965, -0.20301265830023607, -0.19827929537167455,
-0.19401660365129958, -0.19012478323901671, -0.18477384032579458},
{-1.0490520033414619, -0.8386605317479205, -0.6080762806703777,
-0.47643361126246697, -0.39996502723474153, -0.3507221729172499,
-0.31828994004418293, -0.29584632287718077, -0.27633314292188954,
-0.26079550070894575, -0.2481177497766468, -0.2375651602416372,
-0.22860508415141534, -0.2208907626083979, -0.21416051991414553,
-0.20823422392246493, -0.2029682357135396, -0.19823655936248097,
-0.193975366380292, -0.19008489332727996, -0.18473247180231878},
{-1.050037676253061, -0.8386309898087966, -0.6078978424423568,
-0.47628217443716653, -0.39984156836257734, -0.3506188176175778,
-0.3182205028029856, -0.295765557455259, -0.2762600306650146,
-0.26072874879817753, -0.24805614090845685, -0.23750774644062578,
-0.22855115565357687, -0.22083977455287895, -0.2141120488424103,
-0.2081879312567253, -0.20292384808852337, -0.1981938569464362,
-0.1939341614883614, -0.19004503470302758, -0.1846911928486037},
{-1.0510202733505383, -0.8386005738463542, -0.6077193457842572,
-0.4761307987186084, -0.3997181851931251, -0.35051553435689087,
-0.3181509990137942, -0.2956848495114943, -0.27618697530451897,
-0.2606620495446921, -0.2479945808299675, -0.23745037810594882,
-0.2284972698190083, -0.22078882678081013, -0.21406361600994084,
-0.20814167506035353, -0.20287949538635364, -0.19815118808629328,
-0.19389298893961693, -0.19000520733151582, -0.1846500025008153},
{-1.0519998007875504, -0.8385692870681247, -0.6075407914761511,
-0.47597948427910053, -0.3995948777413165, -0.3504123231027787,
-0.3180814289490112, -0.2956041990346456, -0.27611397678794225,
-0.2605954028946448, -0.24793306948884375, -0.23739305518797982,
-0.22844342660069905, -0.22073791924754338, -0.21401522137419304,
-0.20809545529274054, -0.20283517756808178, -0.1981085527445542,
-0.1938518486980021, -0.1899654111779473, -0.184608899808962},
{-1.0529762647083039, -0.8385371326724604, -0.6073621802943149,
-0.4758282312896257, -0.3994716460215506, -0.3503091838226748,
-0.31801179289014014, -0.2955236060132555, -0.2760410350628849,
-0.2605288087943486, -0.24787160683294596, -0.23733577763720093,
-0.2283896259517425, -0.22068705190859217, -0.2139668648928068,
-0.20804927191344347, -0.20279089459497812, -0.19806595088406354,
-0.19381074072768278, -0.1899256462077178, -0.1845678838371364},
{-1.0539496712475938, -0.8385041138485547, -0.6071835130112089,
-0.4756770399198461, -0.39934849004777623, -0.35020611648380806,
-0.3179420911272764, -0.29544307043545803, -0.2759681500768719,
-0.26046226719001797, -0.24781019281004435, -0.23727854540412097,
-0.22833586782527893, -0.2206362247193887, -0.21391854652331999,
-0.20800312488194783, -0.20274664642819662, -0.19802338246751994,
-0.19376966499272064, -0.18988591238619013, -0.18452695366311755},
{-1.0549200265307754, -0.8384702337764522, -0.6070047903955137,
-0.4755259103382102, -0.39922540983338706, -0.35010312105309727,
-0.3178723239590979, -0.29536259228909684, -0.27589532177740944,
-0.2603957780279256, -0.24774882736800186, -0.2372213584392896,
-0.22828215217448933, -0.22058543763548677, -0.21387026622339378,
-0.2079570141578212, -0.2027024330290298, -0.1979808474577337,
-0.19372862145732272, -0.18984620967872468, -0.18448610837836332},
{-1.055887336673793, -0.8384354956270754, -0.6068260132121731,
-0.47537484271185726, -0.39910240539135283, -0.35000019749742906,
-0.31780249169267655, -0.295282171561713, -0.2758225501121031,
-0.2603293412543899, -0.2476875104547399, -0.2371642166933774,
-0.22822847895262266, -0.22053469061248654, -0.2138220239507933,
-0.20791093970074026, -0.20265825435885465, -0.19793834581759673,
-0.19368761008569113, -0.18980653805085446, -0.18444534708771743},
{-1.056851607783155, -0.8383999025622241, -0.6066471822223513,
-0.4752238372066391, -0.39897947673412776, -0.3498973457833348,
-0.3177325946430876, -0.29520180824047054, -0.27574983502836253,
-0.26026295681568734, -0.24762624201817918, -0.23710712011692936,
-0.2281748481128676, -0.2204839836059913, -0.21377381966314413,
-0.20786490147035175, -0.20261411037893307, -0.19789587750994864,
-0.19364663084207523, -0.18976689746799802, -0.18440466890939344},
{-1.057812845955953, -0.8383634577346168, -0.606468298183537,
-0.4750728939871658, -0.39885662387364834, -0.34979456587721847,
-0.3176626331334499, -0.2951215023123046, -0.2756771764737353,
-0.26019662465822346, -0.24756502200631936, -0.23705006866071665,
-0.22812125960862706, -0.22043331657172838, -0.21372565331833626,
-0.20781889942638765, -0.20257000105076628, -0.19785344249780834,
-0.19360568369079678, -0.18972728789580307, -0.184364072974728},
{-1.0587710572798525, -0.8383261642878723, -0.6062893618494476,
-0.474922013216761, -0.3987338468214083, -0.34969185774530487,
-0.31759260749447116, -0.2950412537637635, -0.27560457439566727,
-0.2601303447283051, -0.2475038503671273, -0.23699306227543682,
-0.22806771339323018, -0.22038268946534223, -0.21367752487416647,
-0.2077729335286126, -0.20252592633578537, -0.19781104074412714,
-0.19356476859617622, -0.18968770929978884, -0.1843235584280284},
{-1.0597262478331082, -0.8382880253565608, -0.6061103739701449,
-0.47477119505757615, -0.3986111455883969, -0.34958922135351844,
-0.31752251806438414, -0.29496106258115623, -0.2755320287416627,
-0.2600641169723499, -0.24744272704872883, -0.23693610091190176,
-0.22801420942017503, -0.2203321022426924, -0.21362943428852477,
-0.20772700373685582, -0.20248188619545882, -0.19776867221192207,
-0.1935238855226178, -0.18964816164563714, -0.1842831244264388},
{-1.0606784236845417, -0.8382490440662016, -0.6059313352919912,
-0.4746204396704237, -0.3984885201851193, -0.3494866566676745,
-0.31745236518871467, -0.29488092875046057, -0.2754595394591126,
-0.259997941336752, -0.24738165199916395, -0.23687918452094192,
-0.22796074764284247, -0.2202815548595478, -0.21358138151940276,
-0.207681110010967, -0.20243788059139334, -0.19772633686433982,
-0.1934830344345283, -0.18960864489906604, -0.18424277013980705},
{-1.0616275908935773, -0.8382092235332786, -0.6057522465577052,
-0.4744697472149494, -0.39836597062167434, -0.3493841636533602,
-0.3173821492200837, -0.2948008522573646, -0.27538710649550585,
-0.25993181776795593, -0.247320625166635, -0.23682231305344692,
-0.22790732801477165, -0.22023104727176968, -0.21353336652474197,
-0.20763525231089142, -0.20239390948517988, -0.19768403466449747,
-0.19344221529640515, -0.1895691590257813, -0.18420249475043748},
{-1.0625737555102057, -0.8381685668652661, -0.6055731085063517,
-0.4743191178495363, -0.3982434969075738, -0.3492817422759886,
-0.3173118705181086, -0.2947208330872303, -0.27531472979823535,
-0.2598657462124342, -0.24725964649928833, -0.23676548646033846,
-0.22785395048958734, -0.22018057943534186, -0.21348538926259986,
-0.2075894305966013, -0.2023499728384789, -0.1976417655755709,
-0.19340142807278338, -0.18952970399158775, -0.18416229745302692},
{-1.063516923575009, -0.8381270771606286, -0.6053939218733544,
-0.4741685517313194, -0.3981210990519497, -0.3491793925007668,
-0.31724152944899486, -0.29464087122513544, -0.275242409314689,
-0.2597997266165982, -0.24719871594528375, -0.23670870469252536,
-0.2278006150208094, -0.2201301513061038, -0.2134374496909932,
-0.20754364482800503, -0.20230607061290506, -0.19759952956075455,
-0.1933606727281555, -0.18949027976222743, -0.18412217745434045},
{-1.0644571011191757, -0.8380847575088811, -0.6052146873905424,
-0.47401804901632505, -0.3979987770634607, -0.34907711429268007,
-0.3171711263855896, -0.29456096665590714, -0.2751701449923474,
-0.25973375892708095, -0.24713783345298423, -0.23665196770113306,
-0.22774732156223665, -0.22007976284021613, -0.21338954776817265,
-0.2074978949653069, -0.20226220277029694, -0.19755732658339287,
-0.1933199492272375, -0.1894508863036649, -0.1840821339732942},
{-1.06539429416446, -0.8380416109905409, -0.6050354057861375,
-0.4738676098592396, -0.39787653095025677, -0.3489749076165947,
-0.3171006617069806, -0.29448111936406135, -0.27509793677854755,
-0.2596678430903444, -0.24707699897062574, -0.23659527543716175,
-0.22769407006747766, -0.22002941399364062, -0.2133416834522297,
-0.20745218096851947, -0.2022183692723769, -0.19751515660675145,
-0.19327925753454678, -0.18941152358176094, -0.18404216624057346},
{-1.0663285087232222, -0.837997640677187, -0.6048560777847753,
-0.47371723441362573, -0.3977543607201157, -0.348872772437103,
-0.31703013579846573, -0.2944013293338062, -0.27502578462067995,
-0.25960197905294524, -0.24701621244660776, -0.23653862785176205,
-0.22764086049035892, -0.21997910472251558, -0.21329385670143863,
-0.20740650279780704, -0.20217457008103124, -0.19747301959426,
-0.1932385976148685, -0.18937219156251395, -0.18400227349859133},
{-1.0672597507984207, -0.8379528496314755, -0.6046767041075426,
-0.4735669228318252, -0.3976322663802226, -0.3487707087186805,
-0.316959549051377, -0.29432159654906465, -0.2749536884660879,
-0.2595361667615116, -0.24695547382922034, -0.23648202489604253,
-0.22758769278464308, -0.2199288349830072, -0.21324606747405905,
-0.2073608604133722, -0.20213080515808846, -0.19743091550921477,
-0.19319796943286827, -0.18933289021183508, -0.18396245500122788},
{-1.0681880263836068, -0.8379072409071395, -0.6044972854719567,
-0.47341667526497855, -0.397510247937445, -0.3486687164256213,
-0.3168889018628228, -0.2942419209935088, -0.2748816482622005,
-0.2594704061626594, -0.24689478306697887, -0.2364254665213018,
-0.22753456690425145, -0.2198786047313156, -0.21319831572849712,
-0.20731525377554338, -0.20208707446554397, -0.1973888443152534,
-0.19315737295343416, -0.18929361949585533, -0.18392271001382765},
{-1.0691133414629277, -0.8378608175490181, -0.6043178225920169,
-0.47326649186307823, -0.3973883053981209, -0.3485667955219368,
-0.3168181946354253, -0.2941623026504697, -0.27480966395628426,
-0.2594046972030005, -0.24683414010829052, -0.23636895267867253,
-0.22748148280307667, -0.21982841392364405, -0.2131506014230189,
-0.2072696828444769, -0.2020433779652694, -0.1973468059757284,
-0.19311680814125498, -0.18925437938055656, -0.18388303781281012},
{-1.0700357020111362, -0.8378135825930624, -0.6041383161781894,
-0.4731163727748857, -0.39726643876813716, -0.34846494597157057,
-0.31674742777741766, -0.2940827415030679, -0.27473773549574765,
-0.2593390398292815, -0.246773544901697, -0.23631248331955756,
-0.2274284404351289, -0.21977826251641708, -0.2131029245161622,
-0.20722414758064112, -0.20199971561944607, -0.19730480045428012,
-0.19307627496134683, -0.18921516983214104, -0.1838434376857786},
{-1.0709551139935922, -0.8377655390663741, -0.6039587669374415,
-0.47296631814805884, -0.3971446480530387, -0.34836316773821263,
-0.3166766017022186, -0.29400323753410035, -0.27466586282786265,
-0.2592734339881262, -0.24671299739573593, -0.236256058395251,
-0.22737543975431185, -0.21972815046584715, -0.2130552849663382,
-0.20717864794431728, -0.20195608739001436, -0.19726282771444603,
-0.19303577337848454, -0.18917599081670078, -0.18380390893110954},
{-1.0718715833662749, -0.8377166899872013, -0.6037791755732788,
-0.4728163281290289, -0.397022933257765, -0.34826146078543496,
-0.31660571682848243, -0.29392379072608615, -0.2745940459000048,
-0.25920787962633607, -0.24665249753897178, -0.2361996778571741,
-0.22732248071480232, -0.2196780777284214, -0.21300768273213133,
-0.2071331838960604, -0.2019124932391283, -0.1972208877199536,
-0.19299530335771264, -0.1891368423004064, -0.1837644508579691},
{-1.0727851160757422, -0.8376670383649634, -0.6035995427857002,
-0.4726664028630926, -0.3969012943869562, -0.34815982507662363,
-0.3165347735797326, -0.2938444010612904, -0.2745222846594746,
-0.2591423766906763, -0.24659204528008283, -0.23614334165681827,
-0.2272695632706917, -0.21962804426056792, -0.2129601177721222,
-0.20708775539629487, -0.20186893312903187, -0.19717898043445525,
-0.19295486486401803, -0.1890977242495634, -0.1837250627860889},
{-1.0736957180591906, -0.8376165872002641, -0.6034198692712623,
-0.47251654249440767, -0.3967797314447213, -0.34805826057484957,
-0.316463772384245, -0.29376506852163065, -0.27445057905352555,
-0.2590769251278989, -0.2465316405676944, -0.23608704974556016,
-0.22721668737607958, -0.2195780500187573, -0.2129125900448764,
-0.20704236240554108, -0.2018254070218115, -0.19713710582160204,
-0.19291445786237038, -0.18905863663033362, -0.18368574404558558},
{-1.0746033952444236, -0.8375653394849165, -0.6032401557230894,
-0.4723667471659597, -0.39665824443481706, -0.34795676724322916,
-0.31639271367503147, -0.2936857930888537, -0.27437892902954086,
-0.2590115248848588, -0.24647128335058577, -0.236030802075069,
-0.22716385298525832, -0.21952809495956582, -0.21286509950914623,
-0.2069970048844305, -0.20178191487986552, -0.19709526384531417,
-0.19287408231798053, -0.18901957940909453, -0.18364649397688648},
{-1.07550815354987, -0.8375132982019435, -0.60306040283085,
-0.47221701701962865, -0.3965368333605189, -0.34785534504456145,
-0.3163215978894714, -0.2936065747443396, -0.2743073345347241,
-0.25894617590842484, -0.246410973577461, -0.23597459859685932,
-0.2271110600524301, -0.219478179039575, -0.21281764612365572,
-0.2069516827935377, -0.20173845666539558, -0.1970534544693151,
-0.1928337381958829, -0.18898055255211144, -0.1836073119304822},
{-1.0764099988845657, -0.8374604663256346, -0.6028806112808573,
-0.47206735219612217, -0.3964154982246533, -0.3477539939415056,
-0.31625042546944737, -0.29352741346925926, -0.2742357955163873,
-0.25888087814548366, -0.24635071119713714, -0.2359184392625836,
-0.22705830853193454, -0.21942830221543663, -0.2127702298471742,
-0.20690639609360773, -0.20169503234084785, -0.1970116776575277,
-0.19279342546127987, -0.18894155602573248, -0.18356819726686446},
{-1.0773089371481839, -0.837406846821503, -0.6027007817559806,
-0.4719177528350179, -0.3962942390296811, -0.3476527138965885,
-0.31617919686081664, -0.2934483092444281, -0.27416431192176594,
-0.2588156315429423, -0.24629049615846366, -0.2358623240239337,
-0.22700559837809564, -0.21937846444380849, -0.2127228506385146,
-0.20686114474530193, -0.20165164186858142, -0.19696993337384372,
-0.19275314407937427, -0.1889025897963903, -0.1835291493562683},
{-1.0782049742310325, -0.8373524426463566, -0.6025209149357331,
-0.47176821907483524, -0.39617305577760875, -0.34755150487207964,
-0.316107912513568, -0.2933692620504873, -0.27409288369813667,
-0.25875043604779013, -0.24623032841035297, -0.23580625283263845,
-0.22695292954536783, -0.2193286656814658, -0.21267550845658256,
-0.20681592870944743, -0.20160828521108665, -0.196928221582246,
-0.19271289401545433, -0.18886365383045056, -0.1834901675786359},
{-1.0790981160140305, -0.8372972567482906, -0.602341011496247,
-0.4716187510529043, -0.3960519484700069, -0.3474503668301945,
-0.31603657288153736, -0.2932902718677549, -0.27402151079272796,
-0.25868529160701537, -0.24617020790174748, -0.23575022564052694,
-0.2269003019882221, -0.21927890588518195, -0.21262820326034604,
-0.20677074794684813, -0.20156496233086763, -0.19688654224672708,
-0.19267267523486187, -0.1888247480944375, -0.18345125132350348},
{-1.07998836836874, -0.8372412920666978, -0.602161072110317,
-0.4714693489054822, -0.3959309171080906, -0.34734929973287587,
-0.31596517842222627, -0.29321133867621685, -0.27395019315276503,
-0.25862019816759474, -0.24611013458158626, -0.23569424239936232,
-0.22684771566108153, -0.21922918501177724, -0.2125809350086998,
-0.20672560241835192, -0.201521673190455, -0.19684489533135374,
-0.19263248770288632, -0.18878587255474133, -0.18341239998952796},
{-1.0808757371573674, -0.8371845515323215, -0.6019810974474158,
-0.4713200127677205, -0.39580996169256594, -0.3472483035419863,
-0.3158937295968812, -0.293132462455706, -0.2738789307254632,
-0.2585551556766337, -0.2460501083989327, -0.23563830306109546,
-0.22679517051860953, -0.2191795030181749, -0.2125337036607552,
-0.20668049208489203, -0.20147841775248743, -0.19680328080019593,
-0.1925923313849408, -0.1887470271779319, -0.18337361298488009},
{-1.0817602282327516, -0.8371270380672104, -0.6018010881736587,
-0.47117074277364535, -0.3956890822237855, -0.3471473782192109,
-0.31582222687007283, -0.29305364318567306, -0.2738077234580065,
-0.25849016408120495, -0.24599012930284514, -0.23558240757761872,
-0.2267426665153507, -0.21912985986128497, -0.21248650917560263,
-0.2066354169074882, -0.20143519597961912, -0.19676169861741322,
-0.19255220624650193, -0.18870821193059883, -0.1833348897266115},
{-1.082641847438384, -0.8370687545848162, -0.6016210449518968,
-0.47102153905625366, -0.3955682787017302, -0.3470465237259993,
-0.3157506707096768, -0.29297488084535295, -0.2737365712975669,
-0.2584252233284391, -0.24593019724244303, -0.2355265559009061,
-0.2266902036059888, -0.21908025549808396, -0.21243935151228788,
-0.20659037684709813, -0.2013920078345086, -0.1967201487471666,
-0.19251211225298792, -0.18866942677919385, -0.18329622964076442},
{-1.0835206006083955, -0.8370097039899329, -0.601440968441656,
-0.47087240174736744, -0.3954475511258655, -0.34694574002370415,
-0.3156790615867798, -0.29289617541370405, -0.27366547419131027,
-0.2583603333654656, -0.24587031216688393, -0.2354707479830167,
-0.22663778174522176, -0.21903068988565, -0.21239223063007573,
-0.20654537186480992, -0.2013488532799781, -0.1966786311537272,
-0.1924720493700005, -0.1886306716904863, -0.18325763216216062},
{-1.084396493567575, -0.8369498891787713, -0.6012608592992039,
-0.4707233309778311, -0.3953268994953935, -0.346845027073537,
-0.3156073999754763, -0.2928175268693973, -0.2735944320863922,
-0.25829549413950903, -0.24581047402543765, -0.23541498377603187,
-0.22658540088777646, -0.21898116298101888, -0.21234514648815772,
-0.2065004019217075, -0.201305732278787, -0.1966371458013425,
-0.1924320175630687, -0.18859194663101897, -0.1832190967343138},
{-1.0852695321313681, -0.8368893130389516, -0.6010807181775603,
-0.4705743268773135, -0.3952063238089593, -0.3467443848365117,
-0.3155356863528779, -0.2927389351908827, -0.2735234449299174,
-0.2582307055978278, -0.24575068276730783, -0.23535926323208822,
-0.22653306098855364, -0.21893167474139297, -0.21229809904587338,
-0.2064554669790457, -0.20126264479386646, -0.19659569265439492,
-0.1923920167978831, -0.18855325156756042, -0.1831806228092696},
{-1.0861397221058695, -0.8368279784495133, -0.600900545726459,
-0.47042538957445407, -0.39508582406491805, -0.3466438132735013,
-0.3154639211987076, -0.29266040035620433, -0.27345251266894455,
-0.2581659676875827, -0.24569093834180356, -0.23530358630330717,
-0.22648076200230072, -0.21888222512386624, -0.21225108826247363,
-0.2064105669979136, -0.20121959078798834, -0.19655427167715545,
-0.1923520470400174, -0.18851458646677144, -0.1831422098473433},
{-1.0870070692878564, -0.8367658882809698, -0.6007203425924471,
-0.47027651919689284, -0.3949654002612193, -0.3465433123452106,
-0.3153921049954653, -0.29258192234326963, -0.27338163525058057,
-0.2581012803561543, -0.24563124069825948, -0.23524795294196044,
-0.22642850388397773, -0.21883281408572208, -0.21220411409736428,
-0.20636570193960568, -0.2011765702241518, -0.19651288283406987,
-0.19231210825518774, -0.18847595129539585, -0.18310385731713597},
{-1.087871579464757, -0.8367030453952744, -0.6005401094188226,
-0.4701277158711149, -0.39484505239536016, -0.34644288201223017,
-0.3153202382281285, -0.2925035011296918, -0.27331081262187973,
-0.25803664355088585, -0.24557158978614368, -0.2351923631003493,
-0.226376286588565, -0.21878344158424268, -0.21215717651002708,
-0.20632087176551883, -0.20113358306541218, -0.19647152608963947,
-0.19227220040921456, -0.18843734602032458, -0.18306556469550306},
{-1.0887332584146774, -0.8366394526458736, -0.6003598468456903,
-0.4699789797226268, -0.39472478046456033, -0.34634252223494,
-0.3152483213840598, -0.29242513669278003, -0.27324004472984853,
-0.2579720572191039, -0.2455119855549126, -0.2351368167308342,
-0.22632411007106779, -0.21873410757679745, -0.21211027545995254,
-0.20627607643695745, -0.2010906292747896, -0.19643020140834344,
-0.19223232346787755, -0.18839877060839594, -0.183027331467134},
{-1.0895921119064016, -0.8365751128777243, -0.6001795555099625,
-0.46983031087583277, -0.3946045844654721, -0.34624223297362333,
-0.3151763549529812, -0.292346829009584, -0.27316933152144596,
-0.2579075213082127, -0.24545242795397126, -0.23508131378570474,
-0.22627197428648704, -0.2186848120207141, -0.21206341090663583,
-0.20623131591530264, -0.20104770881538125, -0.19638890875474202,
-0.19219247739697642, -0.18836022502646, -0.18298915712456099},
{-1.0904481456993849, -0.8365100289272925, -0.5999992360453816,
-0.46968170945412746, -0.39448446439454, -0.34614201418841634,
-0.31510433942675586, -0.2922685780568731, -0.27309867294369794,
-0.2578430357656796, -0.24539291693299303, -0.23502585421747968,
-0.22621987919003506, -0.2186355548734995, -0.2120165828097138,
-0.2061865901620522, -0.20100482165035327, -0.19634764809342065,
-0.1921526621624935, -0.18832170924149616, -0.18295104116817051},
{-1.091301365543774, -0.8364442036225864, -0.5998188890825363,
-0.46953317557988533, -0.3943644202477126, -0.3460418658392148,
-0.3150322752992035, -0.29219038381111717, -0.27302806894342413,
-0.25777860053893253, -0.24533345244146865, -0.23497043797857275,
-0.22616782473673613, -0.21858633609252986, -0.21196979112874326,
-0.20614189913869896, -0.20096196774282182, -0.1963064193889873,
-0.19211287773022523, -0.18828322322043078, -0.18291298310574278},
{-1.0921517771803986, -0.8363776397831587, -0.5996385152488338,
-0.4693847093744135, -0.39424445202060215, -0.3459417878858913,
-0.3149601630662351, -0.29211224624863663, -0.27295751946761193,
-0.25771421557555396, -0.24527403442912032, -0.23491506502159254,
-0.22611581088195165, -0.2185371556354685, -0.21192303582349992,
-0.20609724280679564, -0.20091914705616343, -0.19626522260619428,
-0.1920731240663116, -0.18824476693038028, -0.1828749824527841},
{-1.0929993863407872, -0.836310340220152, -0.5994581151685902,
-0.4692363109580429, -0.3941245597084657, -0.3458417802881051,
-0.3148880032254373, -0.2920341653453479, -0.27288702446305957,
-0.2576498808230179, -0.24521466284564253, -0.23485973529907056,
-0.2260638375808005, -0.2184880134598216, -0.21187631685367747,
-0.2060526211279463, -0.20087635955356153, -0.1962240577097194,
-0.1920334011366449, -0.18820634033837158, -0.1828370387319339},
{-1.0938441987471674, -0.8362423077362877, -0.5992776894629883,
-0.4690879804500416, -0.3940047433061152, -0.3457418430053723,
-0.31481579627626577, -0.2919561410769582, -0.27281658387663055,
-0.2575855962289697, -0.24515533764072306, -0.23480444876367368,
-0.22601190478865973, -0.2184389095232524, -0.2118296341790442,
-0.20600803406380552, -0.20083360519839455, -0.19618292466434561,
-0.1919937089073337, -0.1881679434115614, -0.18279915147322845},
{-1.094686220112452, -0.836173545125898, -0.5990972387501079,
-0.4689397179686839, -0.3938850028080477, -0.34564197599715657,
-0.31474354271969585, -0.291878173418916, -0.27274619765509833,
-0.2575213617409937, -0.24509605876423468, -0.23474920536806188,
-0.22596001246087782, -0.21838984378343573, -0.21178298775952142,
-0.2059634815760939, -0.20079088395407718, -0.19614182343491282,
-0.1919540473445116, -0.18812957611713987, -0.18276132021370006},
{-1.09552545614028, -0.8361040551749431, -0.5989167636449133,
-0.4687915236312615, -0.3937653382083596, -0.3455421792225799,
-0.3146712430581503, -0.29180026234634626, -0.27267586574519664,
-0.25745717730674234, -0.24503682616598366, -0.23469400506501248,
-0.22590816055286922, -0.21834081619814305, -0.21173637755494146,
-0.20591896362655848, -0.20074819578401892, -0.19610075398626992,
-0.1919144164142793, -0.18809123842232167, -0.1827235444975266},
{-1.0963619125249862, -0.8360338406610349, -0.5987362647593297,
-0.4686433975540137, -0.39364574950079745, -0.34544245264084467,
-0.3145988977955765, -0.29172240783418724, -0.27260558809366997,
-0.2573930428739124, -0.24497763979591358, -0.2346388478072845,
-0.22585634902010854, -0.21829182672514658, -0.21168980352523414,
-0.20587448017700138, -0.20070554065169732, -0.19605971628335483,
-0.19187481608291823, -0.18805293029444348, -0.18268582387565535},
{-1.0971955949516334, -0.8359629043534234, -0.5985557427021732,
-0.46849533985221964, -0.39352623667873493, -0.3453427962108755,
-0.31452650743704824, -0.29164460985704244, -0.2725353646471629,
-0.2573289583902274, -0.2449184996039221, -0.23458373354778173,
-0.22580457781802876, -0.21824287532230247, -0.21164326563045688,
-0.20583003118927545, -0.2006629185206763, -0.19601871029111229,
-0.19183524631660276, -0.1880146517007969, -0.1826481579058773},
{-1.0980265090959938, -0.8358912490130741, -0.5983751980792827,
-0.4683473506401863, -0.3934067997351545, -0.3452432098915135,
-0.3144540724890845, -0.29156686838931, -0.2724651953523385,
-0.25726492380343213, -0.24485940554001318, -0.234528662239316,
-0.22575284690224295, -0.21819396194746332, -0.21159676383058557,
-0.20578561662529404, -0.20062032935451102, -0.19597773597453805,
-0.19179570708164462, -0.18797640260879878, -0.18261054615266836},
{-1.098854660624569, -0.83581887739262, -0.5981946314933801,
-0.46819943003117626, -0.3932874386627172, -0.34514369364151065,
-0.31438159345909134, -0.29148918340504826, -0.27239508015578007,
-0.25720093906135144, -0.24480035755428997, -0.23447363383488218,
-0.22570115622834386, -0.21814508655863885, -0.21155029808575676,
-0.20574123644701425, -0.20057777311686442, -0.19593679329869218,
-0.19175619834437974, -0.18793818298594644, -0.18257298818704804},
{-1.0996800551945944, -0.8357457922364268, -0.5980140435442051,
-0.46805157813753223, -0.393168153453706, -0.34504424741931367,
-0.3143090708555044, -0.291411554878116, -0.2723250190040548,
-0.25713700411180984, -0.24474135559680832, -0.23441864828747905,
-0.22564950575199183, -0.2180962491137437, -0.21150386835609292,
-0.20569689061641983, -0.2005352497713473, -0.19589588222867882,
-0.19171672007114016, -0.18789999279962966, -0.18253548358650806},
{-1.1005026984540338, -0.8356719962805911, -0.5978334348284886,
-0.46790379507058333, -0.39304894410005653, -0.3449448711834509,
-0.31423650518777535, -0.2913339827821033, -0.27225501184372336,
-0.25707311890270224, -0.24468239961775884, -0.2343637055501676,
-0.22559789542891373, -0.21804744957090694, -0.2114574746018183,
-0.2056525790956225, -0.20049275928175003, -0.19585500272961553,
-0.19167727222840703, -0.1878618320175358, -0.1824980319349252},
{-1.1013225960415922, -0.8355974922529534, -0.5976528059399546,
-0.46775608094070953, -0.39292981059336407, -0.34484556489216167,
-0.31416389696600655, -0.2912564670903073, -0.2721850586212492,
-0.25700928338187745, -0.24462348956733648, -0.23430880557604927,
-0.2255463252148192, -0.21799868788821408, -0.21141111678313662,
-0.20560830184666667, -0.20045030161179134, -0.19581415476671316,
-0.191637854782586, -0.18782370060718223, -0.18246063282237224},
{-1.1021397535867266, -0.8355222828731509, -0.5974721574693626,
-0.46760843585733214, -0.392810752924822, -0.3447463285036491,
-0.3140912467012209, -0.2911790077757953, -0.2721151592830783,
-0.2569454974973422, -0.2445646253957463, -0.23425394831825297,
-0.22549479506555425, -0.21794996402376254, -0.21136479486036897,
-0.20556405883174944, -0.2004078767253289, -0.19577333830517785,
-0.19159846770022493, -0.1877855985362662, -0.18242328584520173},
{-1.1029541767096334, -0.8354463708525762, -0.5972914900044721,
-0.4674608599288757, -0.3926917710852845, -0.3446471619759378,
-0.3140185549049369, -0.29110160481135294, -0.27204531377565244,
-0.25688176119702033, -0.24450580705339486, -0.23419913373001988,
-0.22544330493693054, -0.2179012779358367, -0.21131850879390557,
-0.20551985001306494, -0.2003654845862065, -0.19573255331031725,
-0.19155911094784728, -0.18774752577253173, -0.1823859906056956},
{-1.1037658710212694, -0.8353697588944453, -0.5971108041301222,
-0.4673133532628861, -0.3925728650653373, -0.34454806526691273,
-0.3139458220892051, -0.29102425816950195, -0.27197552204533093,
-0.2568180744289841, -0.24444703449053806, -0.23414436176458875,
-0.22539185478488888, -0.21785262958261742, -0.2112722585440292,
-0.20547567535285038, -0.20032312515827622, -0.19569179974744344,
-0.19151978449204, -0.18770948228367224, -0.18234874671213885},
{-1.1045748421233565, -0.8352924496938068, -0.5969301004281642,
-0.4671659159658624, -0.3924540348550951, -0.34444903833437346,
-0.3138730487666411, -0.29094696782257023, -0.27190578403850385,
-0.2567544371412477, -0.2443883076576696, -0.23408963237529712,
-0.22534044456540125, -0.21780401892248624, -0.2112260440713145,
-0.20543153481346244, -0.2002807984056354, -0.1956510775819631,
-0.19148048829946107, -0.18767146803759804, -0.18231155377869468},
{-1.105381095608381, -0.8352144459375273, -0.5967493794775675,
-0.46701854814344756, -0.39233528044448296, -0.3443500811359886,
-0.3138002354501066, -0.29086973374255076, -0.2718360997014654,
-0.25669084928189245, -0.24432962650524703, -0.23403494551549864,
-0.22528907423445754, -0.21775544591376306, -0.21117986533617084,
-0.20538742835724066, -0.2002385042921424, -0.1956103867792356,
-0.19144122233680327, -0.18763348300217186, -0.182274411425287},
{-1.1061846370595902, -0.8351357503043648, -0.5965686418543619,
-0.46687124990030565, -0.3922166018229007, -0.3442511936292686,
-0.313727382652932, -0.2907925559012561, -0.2717664689805248,
-0.2566273107991076, -0.2442709909837476, -0.2339803011386522,
-0.22523774374813266, -0.2177069105149031, -0.21113372229920346,
-0.20534335594665087, -0.20019624278199832, -0.19556972730479383,
-0.1914019865707962, -0.18759552714532135, -0.18223731927752673},
{-1.106985472051015, -0.8350563654649246, -0.5963878881316658,
-0.46672402134013785, -0.3920979989795425, -0.34415237577162444,
-0.31365449088849917, -0.29071543427014834, -0.27169689182189627,
-0.2565638216409708, -0.24421240104374953, -0.23392569919814332,
-0.22518645306248297, -0.2176584126843223, -0.2110876149209947,
-0.20529931754407105, -0.2001540138391822, -0.19552909912410366,
-0.19136278096821124, -0.187557600435026, -0.18220027696650254},
{-1.1077836061474788, -0.8349762940817471, -0.5962071188797236,
-0.46657686256580627, -0.3919794719032671, -0.344053627520326,
-0.31358156067041154, -0.29063836882058225, -0.2716273681718955,
-0.25650038175573553, -0.2441538566359187, -0.23387113964757844,
-0.22513520213377358, -0.217609952380593, -0.21104154316217438,
-0.20525531311208056, -0.20011181742786655, -0.1954885022027406,
-0.19132360549585292, -0.1875197028393656, -0.18216328412888827},
{-1.1085790449045758, -0.8348955388092653, -0.5960263346658982,
-0.46642977367917443, -0.3918610205825192, -0.3439549488325616,
-0.3135085925123414, -0.29056135952352313, -0.2715578979766444,
-0.256436991091627, -0.244095357710845, -0.23381662244047485,
-0.22508399091810993, -0.21756152956227415, -0.2109955069834466,
-0.20521134261320095, -0.20006965351225214, -0.195447936506287,
-0.19128446012059508, -0.18748183432640075, -0.18212634040661313},
{-1.10937179386871, -0.8348141022938396, -0.5958455360546824,
-0.4662827547812253, -0.3917426450055239, -0.34385633966537255,
-0.3134355869278137, -0.290484406349808, -0.27148848118238444,
-0.2563736495969473, -0.24403690421937763, -0.23376214753054725,
-0.22503281937185238, -0.21751314418800116, -0.21094950634560006,
-0.20516740601013828, -0.20002752205660068, -0.19540740200041817,
-0.19124534480937228, -0.1874439948643597, -0.1820894454470563},
{-1.1101618585770683, -0.8347319871737965, -0.595664723607711,
-0.46613580597200466, -0.39162434516002903, -0.34375779997565414,
-0.31336254443048017, -0.29040750926995806, -0.271419117735229,
-0.2563103572199622, -0.24397849611214428, -0.23370771487135744,
-0.22498168745123504, -0.21746479621643777, -0.21090354120937338,
-0.2051235032654476, -0.19998542302513844, -0.1953668986507926,
-0.19120625952910375, -0.18740618442139922, -0.18205259890265224},
{-1.110949244557652, -0.8346491960794341, -0.5954838978837984,
-0.4659889273506596, -0.3915061210335729, -0.343659329720269,
-0.31328946553370773, -0.29033066825428433, -0.27134980758137583,
-0.25624711390908606, -0.24392013334012552, -0.23365332441676856,
-0.2249305951127143, -0.2174164856063835, -0.21085761153573834,
-0.2050796343419795, -0.1999433563823001, -0.1953264264232233,
-0.19116720424684197, -0.1873684029658882, -0.18201580043106202},
{-1.1117339573292722, -0.8345657316330208, -0.5953030594389082,
-0.46584211901544154, -0.39138797261333097, -0.34356092885583733,
-0.31321635075056, -0.29025388327282475, -0.2712805506668786,
-0.25618391961263476, -0.2438618158540613, -0.23359897612047942,
-0.22487954231262586, -0.21736821231652548, -0.21081171728544823,
-0.2050357992024021, -0.19990132209235323, -0.1952859852834361,
-0.19112817892959477, -0.18733065046604713, -0.18197904969481082},
{-1.1125160024015526, -0.8344815964488574, -0.5951222088262135,
-0.4656953810636966, -0.3912698998861603, -0.343462597338983,
-0.3131432005939583, -0.29017715429548385, -0.2712113469379608,
-0.25612077427913216, -0.24380354360503054, -0.2335446699364062,
-0.22482852900753791, -0.217319976305829, -0.2107658584195694,
-0.20499199780964128, -0.19985932011983532, -0.19524557519730246,
-0.19108918354453874, -0.18729292689039845, -0.1819423463615235},
{-1.1132953852749456, -0.8343967931332503, -0.5949413465960756,
-0.46554871359190175, -0.3911519028386267, -0.3433643351261547,
-0.3130700155762499, -0.2901004812917729, -0.27114219634057457,
-0.2560576778569812, -0.24374531654393428, -0.23349040581837965,
-0.22477755515387987, -0.21727177753310378, -0.21072003489908897,
-0.2049482301265121, -0.19981735042914506, -0.19520519613069687,
-0.19105021805873645, -0.18725523220730234, -0.18190569010352642},
{-1.1140721114407337, -0.8343113242845549, -0.5947604732960469,
-0.4654021166955936, -0.3910339814568862, -0.343266142173692,
-0.31299679620962595, -0.29002386423109117, -0.2710730988208806,
-0.255994630294746, -0.24368713462182312, -0.23343618372041008,
-0.22472662070828142, -0.21722361595732576, -0.21067424668501922,
-0.20490449611599182, -0.19977541298484947, -0.19516484804953038,
-0.19101128243940657, -0.18721756638534504, -0.18186908059802098},
{-1.114846186381019, -0.8342251924932076, -0.5945795894709521,
-0.4652555904694896, -0.3909161357268838, -0.34316801843788713,
-0.3129235430055871, -0.2899473030826013, -0.271004054324969,
-0.255931631540942, -0.24362899778983216, -0.23338200359648753,
-0.2246757256273807, -0.21717549153750426, -0.2106284937385492,
-0.20486079574104088, -0.199733507751506, -0.19512453091978,
-0.19097237665383449, -0.1871799293930564, -0.18183251752682572},
{-1.1156176155687652, -0.8341384003416827, -0.5943986956627907,
-0.4651091350073785, -0.3907983656342001, -0.34306996387476674,
-0.3128502564750377, -0.28987079781516634, -0.27093506279884905,
-0.255868681544167, -0.24357090599906628, -0.23332786540065187,
-0.22462486986783792, -0.2171274042327287, -0.21058277602078113,
-0.2048171289647006, -0.1996916346937181, -0.19508424470747,
-0.1909335006692212, -0.18714232119905316, -0.18179600057637768},
{-1.1163864044677587, -0.834050950404592, -0.5942177924108661,
-0.4649627504021934, -0.3906806711640965, -0.34297197844041816,
-0.3127769371283764, -0.2897943483975143, -0.27086612418861455,
-0.2558057802530618, -0.24351285920073518, -0.23327376908704156,
-0.22457405338639735, -0.21707935400206568, -0.21053709349294158,
-0.2047734957500461, -0.19964979377614667, -0.19504398937864054,
-0.19089465445297427, -0.1871047417720444, -0.18175952943759255},
{-1.1171525585326618, -0.8339628452486402, -0.5940368802516918,
-0.4648164367460125, -0.3905630523015751, -0.34287406209072524,
-0.31270358547518307, -0.2897179547980898, -0.27079723844033765,
-0.25574292761631234, -0.2434548573461236, -0.23321971460982627,
-0.22452327613983636, -0.2170313408047022, -0.21049144611632564,
-0.20472989606025027, -0.1996079849635275, -0.19500376489945814,
-0.19085583797242867, -0.1870671910807642, -0.1817231038059084},
{-1.1179160832089823, -0.8338740874326919, -0.593855959719112,
-0.46467019413004057, -0.39044550903124964, -0.3427762147814726,
-0.3126302020245266, -0.28964161698516977, -0.2707284055000405,
-0.25568012358259984, -0.24339690038648198, -0.2331657019232537,
-0.22447253808499035, -0.216983364599878, -0.2104458338521905,
-0.20468632985849267, -0.19956620822060855, -0.1949635712360127,
-0.190817051195027, -0.18702966909397267, -0.18168672338106273},
{-1.1186769839330872, -0.8337846795077265, -0.5936750313441929,
-0.4645240226445744, -0.39032804133746657, -0.3426784364684232,
-0.31255678728443714, -0.2895653349267371, -0.27065962531380494,
-0.25561736810066726, -0.2433389882732243, -0.23311173098154991,
-0.22442183917874003, -0.21693542534683652, -0.2104002566619828,
-0.2046427971080066, -0.19952446351220743, -0.19492340835453092,
-0.19077829408822544, -0.1869921757805626, -0.18165038786710175},
{-1.1194352661322402, -0.8336946240169301, -0.5934940956553401,
-0.46437792237915543, -0.39021064920434073, -0.34258072710704957,
-0.3124833417621732, -0.28948910859066623, -0.2705908978277064,
-0.25555466111940006, -0.24328112095770138, -0.23305780173908197,
-0.22437117937807605, -0.21688752300491299, -0.21035471450709442,
-0.20459929777208752, -0.19948275080315703, -0.19488327622125212,
-0.19073956661953317, -0.18695471110934014, -0.1816140969723179},
{-1.120190935224557, -0.8336039234956756, -0.5933131531782516,
-0.4642318934223962, -0.39009333261557216, -0.34248308665294525,
-0.31240986596414844, -0.2894129379445636, -0.27052222298783835,
-0.255492002587572, -0.24322329839143175, -0.23300391415026334,
-0.22432055863994438, -0.2168396575334981, -0.2103092073489783,
-0.2045558318140922, -0.1994410700583723, -0.19484317480247482,
-0.19070086875653225, -0.1869172750493291, -0.18157785040913643},
{-1.1209439966190498, -0.8335125804715137, -0.5931322044359524,
-0.46408593586209335, -0.38997609155463386, -0.34238551506143644,
-0.3123363603956414, -0.289336822955819, -0.27045360074023883,
-0.2554293924540757, -0.24316552052588147, -0.2329500681695007,
-0.2242699769213845, -0.2167918288920332, -0.21026373514912777,
-0.2045123991973724, -0.19939942124278864, -0.19480310406448487,
-0.19066220046676097, -0.18687986756937214, -0.18154164789397154},
{-1.1216944557156223, -0.8334205974642683, -0.5929512499488189,
-0.46394004978520875, -0.38985892600466565, -0.3422880122878058,
-0.31226282556116525, -0.289260763591662, -0.2703850310310577,
-0.2553668306678627, -0.24310778731263383, -0.2328962637513402,
-0.22421943417954016, -0.21674403703998968, -0.2102182978691861,
-0.20446899988545375, -0.19935780432141958, -0.1947630639737158,
-0.19062356171794848, -0.18684248863859432, -0.18150548914746756},
{-1.1224423179050684, -0.8333279769859644, -0.5927702902345113,
-0.4637942352778314, -0.3897418359485131, -0.3421905782872622,
-0.3121892619639448, -0.2891847598190622, -0.27031651380637056,
-0.2553043171778654, -0.24305009870334093, -0.23284250085029135,
-0.22416893037150354, -0.21669628193692314, -0.21017289547078477,
-0.20442563384174695, -0.199316219259294, -0.19472305449657867,
-0.1905849524777039, -0.18680513822599287, -0.18146937389397155},
{-1.1231875885690918, -0.8332347215409174, -0.5925893258081124,
-0.46364849242528866, -0.3896248213687851, -0.342093213014823,
-0.3121156701061921, -0.2891088116048316, -0.2702480490123199,
-0.255241851933126, -0.24299245464959307, -0.23278877942097598,
-0.2241184654545243, -0.2166485635424259, -0.21012752791554712,
-0.20438230102985344, -0.19927466602149557, -0.19468307559952036,
-0.19054637271380326, -0.18676781630061345, -0.18143330186184936},
{-1.1239302730803087, -0.833140833625702, -0.5924083571820403,
-0.4635028213119831, -0.38950788224771365, -0.3419959164255342,
-0.3120420504889885, -0.28903291891560323, -0.27017963659507294,
-0.25517943488268935, -0.24293485510317747, -0.23273509941810067,
-0.22406803938587205, -0.21660088181617798, -0.21008219516525772,
-0.20433900141333605, -0.19923314457321528, -0.19464312724910282,
-0.19050782239402686, -0.18673052283159164, -0.18139727278328088},
{-1.1246703768022486, -0.833046315729223, -0.5922273848661042,
-0.46335722202160556, -0.38939101856733777, -0.3418986884742474,
-0.3119684036120156, -0.288957081717777, -0.2701112765007907,
-0.25511706597565964, -0.2428773000158978, -0.23268146079637164,
-0.224017652122788, -0.21655323671784255, -0.21003689718169505,
-0.20429573495585418, -0.19919165487956514, -0.19460320941184395,
-0.19046930148617147, -0.18669325778802426, -0.18136128639417282},
{-1.1254079050893684, -0.8329511703326864, -0.5920464093675104,
-0.4632116946369416, -0.38927423030930064, -0.3418015291157449,
-0.31189472997401557, -0.28888129997760637, -0.2700429686756747,
-0.25505474516122584, -0.2428197893395, -0.2326278635105461,
-0.2239673036227009, -0.2165056282072273, -0.20999163392668307,
-0.20425250162110842, -0.19915019690585545, -0.1945633220543984,
-0.19043080995818262, -0.1866560211390924, -0.18132534243409815},
{-1.1261428632870454, -0.8328553999096173, -0.5918654311908347,
-0.4630662392399627, -0.3891575174550196, -0.3417044383047213,
-0.31182103007214934, -0.28880557366105786, -0.2699747130659006,
-0.2549924723884667, -0.24276232302589473, -0.23257430751543695,
-0.22391699384299268, -0.21645805624405645, -0.20994640536211617,
-0.2042093013728027, -0.1991087706173179, -0.19452346514339036,
-0.19039234777788472, -0.18661881285389514, -0.18128944064624286},
{-1.1268752567316187, -0.8327590069259417, -0.5916844508381272,
-0.46292085591192556, -0.38904087998569337, -0.3416074159957553,
-0.3117473044023912, -0.2887299027340511, -0.2699065096177856,
-0.25493024760671956, -0.2427049010269814, -0.23252079276597926,
-0.22386672274111474, -0.21641052078829326, -0.20990121144991536,
-0.2041661341747668, -0.19906737597926738, -0.19448363864553186,
-0.19035391491320075, -0.18658163290154506, -0.18125358077744158},
{-1.1276050907503408, -0.832661993839913, -0.5915034688088088,
-0.4627755447331919, -0.38892431788210413, -0.3415104621433671,
-0.3116735534592805, -0.28865428716226105, -0.26983835827756175,
-0.2548680707652191, -0.24264752329480366, -0.23246731921708907,
-0.2238164902746017, -0.2163630217998288, -0.209856052152123,
-0.20412299999081152, -0.19902601295710587, -0.19444384252759073,
-0.19031551133224367, -0.18654448125132883, -0.18121776257799138},
{-1.128332370661436, -0.8325643631022001, -0.5913224855997794,
-0.4626303057833564, -0.3888078311249036, -0.3414135767019719,
-0.3115997777358489, -0.28857872691117537, -0.26977025899158324,
-0.25480594181329874, -0.24259018978141367, -0.2324138868237603,
-0.22376629640108492, -0.21631555923866097, -0.20981092743078578,
-0.20407989878487276, -0.19898468151629745, -0.1944040767563776,
-0.1902771370029832, -0.1865073578723918, -0.18118198580170886},
{-1.129057101774087, -0.8324661171558745, -0.5911415017053436,
-0.4624851391411946, -0.3886914196943015, -0.3413167596258747,
-0.3115259777238828, -0.28850322194609435, -0.26970221170617004,
-0.2547438607003023, -0.24253290043879105, -0.23236049554105365,
-0.22371614107810955, -0.21626813306476644, -0.20976583724798348,
-0.20403683052082966, -0.1989433816222531, -0.19436434129870228,
-0.190238791893523, -0.18647026273384926, -0.18114625020569675},
{-1.1297792893884315, -0.8323672584364481, -0.5909605176173234,
-0.46234004488474745, -0.38857508357036585, -0.34122001086933107,
-0.31145215391350267, -0.2884277722321955, -0.26963421636775353,
-0.25468182737570155, -0.24247565521920544, -0.23230714532408037,
-0.22366602426340398, -0.21622074323830764, -0.20972078156589602,
-0.2039937951627553, -0.19890211324058316, -0.19432463612152073,
-0.19020047597203305, -0.18643319580501228, -0.18111055555051647},
{-1.1304989387955895, -0.8322677893718566, -0.5907795338249658,
-0.46219502309117755, -0.3884588227328507, -0.34112333038640563,
-0.3113783067932706, -0.2883523777343704, -0.269566272922648,
-0.2546198417888659, -0.24241845407474638, -0.2322538361279557,
-0.2236159459146949, -0.21617338971930378, -0.2096757603467032,
-0.20395079267458494, -0.1988608763367088, -0.19428496119171046,
-0.1901621892066222, -0.18639615705494128, -0.18107490159995643},
{-1.1312160552776498, -0.8321677123825201, -0.5905985508150198,
-0.4620500738369609, -0.3883426371611941, -0.341026718131228,
-0.3113044368502963, -0.2882770384175205, -0.26949838131746606,
-0.2545579038894167, -0.2423612969577419, -0.2322005679079786,
-0.22356590598980586, -0.21612607246811966, -0.20963077355273974,
-0.20390782302047816, -0.19881967087644292, -0.19424531647633536,
-0.19012393156561358, -0.18635914645294838, -0.18103928812107206},
{-1.1319306441077055, -0.8320670298813413, -0.5904175690717348,
-0.46190519719774287, -0.3882265268347067, -0.3409301740577312,
-0.31123054456988986, -0.28820175424623484, -0.2694305414985755,
-0.2544960136268103, -0.24230418382044128, -0.2321473406193426,
-0.22351590444650382, -0.21607879144486197, -0.20958582114625246,
-0.20386488616452658, -0.19877849682528403, -0.1942057019423803,
-0.19008570301719874, -0.18632216396819457, -0.18100371488413158},
{-1.132642710549839, -0.8319657442737127, -0.5902365890768815,
-0.4617603932483919, -0.38811049173221257, -0.34083369811976727,
-0.31115663043598885, -0.28812652518496695, -0.2693627534125874,
-0.2544341709506861, -0.24224711461519544, -0.2320941542174002,
-0.223465941242723, -0.21603154660988744, -0.20954090308961493,
-0.2038219820709607, -0.19873735414901672, -0.1941661175569579,
-0.19004750352971167, -0.18628520956994854, -0.18096818166245365},
{-1.1333522598591084, -0.8318638579575607, -0.5900556113096909,
-0.46161566206304705, -0.3879945318324576, -0.3407372902711815,
-0.31108269493065566, -0.28805135119805725, -0.2692950170061086,
-0.25437237581069794, -0.24219008929444097, -0.23204100865750177,
-0.22341601633643005, -0.21598433792349647, -0.2094960193452965,
-0.20377911070397503, -0.1986962428134128, -0.19412656328721367,
-0.19000933307158796, -0.1862482832274075, -0.18093268823252695},
{-1.1340592972816133, -0.8317613733233308, -0.5898746362469838,
-0.4614710037150111, -0.3878786471138408, -0.3406409504656067,
-0.3110087385342084, -0.28797623224960556, -0.26922733222575856,
-0.25431062815649197, -0.2421331078106128, -0.23198790389513813,
-0.22336612968561298, -0.21593716534619734, -0.20945116987576284,
-0.2037362720278606, -0.19865516278423234, -0.19408703910030578,
-0.18997119161115084, -0.18621138490986056, -0.18089723437390703},
{-1.1347638280544554, -0.831658292754055, -0.5896936643630871,
-0.4613264182768855, -0.3877628375545288, -0.340544678656721,
-0.310934761725403, -0.2879011683036258, -0.2691596990182197,
-0.2542489279378344, -0.24207617011623772, -0.23193483988575414,
-0.2233162812483529, -0.2158900288383534, -0.2094063546435253,
-0.2036934660069729, -0.19861411402735218, -0.19404754496349252,
-0.18993307911694868, -0.18617451458662415, -0.18086181986903627},
{-1.135465857405758, -0.8315546186252983, -0.5895126961298864,
-0.46118190582050494, -0.3876471031324157, -0.34044847479805596,
-0.3108607649810299, -0.28782615932395883, -0.2690921173302325,
-0.2541872751045222, -0.2420192761638772, -0.23188181658489504,
-0.22326647098275465, -0.2158429283605674, -0.20936157361121688,
-0.2036506926056637, -0.19857309650871002, -0.1940080808440492,
-0.1898949955574193, -0.18613767222699218, -0.18082644450340102},
{-1.1361653905546794, -0.8314503533052722, -0.5893317320168422,
-0.46103746641693866, -0.3875314438251094, -0.34035233884304283,
-0.3107867487762742, -0.2877512052742368, -0.2690245871085839,
-0.2541256696063635, -0.24196242590614625, -0.23182883394818066,
-0.22321669884695194, -0.21579586387335659, -0.20931682674144936,
-0.20360795178836544, -0.19853211019422312, -0.19396864670929115,
-0.18985694090118777, -0.18610085780031171, -0.18079110806533083},
{-1.1368624327114139, -0.8313454991547452, -0.5891507724909694,
-0.46089310013650386, -0.38741585961001057, -0.34025627074513,
-0.31071271358436026, -0.28767630611798256, -0.26895710830010455,
-0.254064111393258, -0.2419056192957374, -0.23177589193123493,
-0.22316696479920473, -0.2157488353373176, -0.20927211399694823,
-0.2035652435195846, -0.1984911550498928, -0.1939292425266077,
-0.18981891511683102, -0.1860640712760171, -0.18075581034598298},
{-1.1375569890772073, -0.8312400585271529, -0.5889698180168521,
-0.46074880704876553, -0.3873003504642577, -0.3401602704574902,
-0.3106386598766929, -0.28760146181859836, -0.26888968085171716,
-0.2540026004151331, -0.24184885628534536, -0.23172299048979395,
-0.22311726879780092, -0.21570184271318638, -0.20922743534049615,
-0.20352256776381805, -0.1984502310417432, -0.19388986826339172,
-0.18978091817299603, -0.18602731262344852, -0.18072055113939334},
{-1.1382490648443486, -0.8311340337685738, -0.588788869056722,
-0.4606045872225931, -0.3871849163647286, -0.34006433793345625,
-0.31056458812279997, -0.2875266723392722, -0.26882230471033375,
-0.2539411366219514, -0.24179213682778333, -0.23167012957962052,
-0.22306761080105597, -0.21565488596165883, -0.20918279073485424,
-0.20347992448565566, -0.19840933813588424, -0.19385052388710733,
-0.18974295003843755, -0.18599058181219208, -0.18068533024227484},
{-1.138938665196196, -0.8310274272177288, -0.5886079260703453,
-0.46046044072606723, -0.3870695572880405, -0.3399684731261321,
-0.31049049879021084, -0.28745193764304267, -0.2687549798229586,
-0.2538797199637375, -0.24173546087587794, -0.23161730915650802,
-0.22301799076733297, -0.2156079650435262, -0.209138180142867,
-0.2034373136496983, -0.1983684762984168, -0.1938112093652652,
-0.18970501068184287, -0.18595387881168612, -0.1806501474541562},
{-1.139625795307171, -0.8309202412060664, -0.588426989515181,
-0.4603163676265704, -0.3869542732105684, -0.3398726759885712,
-0.3104163923447263, -0.28737725769287625, -0.2686877061366705,
-0.25381835039057155, -0.2416788283825071, -0.2315645291763455,
-0.22296840865512957, -0.21556107991964502, -0.20909360352752238,
-0.20339473522066154, -0.19832764549558501, -0.1937719246654247,
-0.18966710007207477, -0.1859172035915886, -0.18061500257718432},
{-1.1403104603427796, -0.8308124780576862, -0.5882460598462459,
-0.4601723679907217, -0.38683906410841773, -0.33977694647379253,
-0.31034226925004993, -0.28730263245149124, -0.26862048359856927,
-0.2537570278525585, -0.24162223930063242, -0.23151178959505947,
-0.2229188644228728, -0.2155142305508988, -0.2090490608517287,
-0.2033521891632437, -0.19828684569356658, -0.19373266975524772,
-0.18962921817793787, -0.18588055612151122, -0.18057989541612307},
{-1.1409926654595917, -0.8307041400894444, -0.5880651375162307,
-0.46002844188445846, -0.3867239299575427, -0.3396812845346533,
-0.3102681299678991, -0.2872280618815045, -0.2685533121558059,
-0.2536957522998894, -0.2415656935831889, -0.2314590903685897,
-0.22286935802916863, -0.21546741689818805, -0.20900455207858704,
-0.2033096754422179, -0.19824607685861761, -0.19369344460225413,
-0.18959136496834494, -0.18584393637111984, -0.18054482577839748},
{-1.1416724158052927, -0.8305952296109326, -0.5878842229754675,
-0.4598845893729491, -0.3866088707335231, -0.33958569012403583,
-0.31019397495802414, -0.28715354594545806, -0.268486191755663,
-0.25363452368277084, -0.2415091911833176, -0.2314064314530624,
-0.22281988943263042, -0.21542063892258034, -0.20896007717114196,
-0.20326719402239546, -0.19820533895712122, -0.19365424917423157,
-0.18955354041229044, -0.18580734431028223, -0.18050979347388862},
{-1.1423497165186602, -0.8304857489244908, -0.5877033166719374,
-0.4597408105207007, -0.3864938864118248, -0.3394901631947346,
-0.31011980467807954, -0.28707908460562503, -0.268419122345372,
-0.25357334195146586, -0.24145273205412177, -0.23135381280450606,
-0.22277045859189015, -0.21537389658506811, -0.20891563609253916,
-0.2032247448686727, -0.19816463195541623, -0.1936150834388618,
-0.18951574447872277, -0.18577077990876545, -0.18047479831510593},
{-1.1430245727295691, -0.8303757003252372, -0.5875224190513179,
-0.4595971053914798, -0.38637897696755286, -0.3393947036994138,
-0.31004561958388854, -0.2870046778242442, -0.2683521038723625,
-0.2535122070563377, -0.24139631614871992, -0.23130123437909167,
-0.2227210654657018, -0.21532718984683907, -0.2088712288059822,
-0.20318232794597635, -0.19812395581993458, -0.19357594736398376,
-0.18947797713676173, -0.18573424313652986, -0.18043984011697312},
{-1.1436969895590112, -0.8302650861010726, -0.587341530556893,
-0.4594534740482939, -0.38626414237560336, -0.3392993115906484,
-0.3099714201289415, -0.286930325563305, -0.2682851362839691,
-0.25345111894763594, -0.24133994342031895, -0.23124869613296484,
-0.22267171001282382, -0.21528051866893072, -0.208826855274712,
-0.20313994321922346, -0.19808331051711148, -0.1935368409173881,
-0.18944023835543233, -0.18569773396353495, -0.18040491869684439},
{-1.144366972119129, -0.8301539085327524, -0.5871606516297462,
-0.4593099165535513, -0.3861493826107808, -0.33920398682107444,
-0.30989720676483057, -0.2868560277847855, -0.268218219527699,
-0.25339007757590515, -0.24128361382222918, -0.2311961980224425,
-0.22262239219210844, -0.2152338830126902, -0.2087825154620293,
-0.20309759065346256, -0.19804269601345126, -0.19349776406694308,
-0.18940252810389913, -0.18566125235981845, -0.18037003387462325},
{-1.1450345255131502, -0.8300421698938049, -0.5869797827085746,
-0.459166432968868, -0.3860346976474297, -0.3391087293430829,
-0.3098229799409655, -0.2867817844503925, -0.26815135355107644,
-0.25332908289151235, -0.241227327307723, -0.231143740003786,
-0.22257311196239016, -0.21518728283928645, -0.20873820933130116,
-0.203055270213776, -0.19800211227555253, -0.19345871678056692,
-0.18936484635143536, -0.18562479829554368, -0.18033518547249483},
{-1.1456996548354763, -0.8299298724506448, -0.5867989242298062,
-0.4590230233552288, -0.38592008745987294, -0.33901353910920484,
-0.30974874010454634, -0.28670759552179703, -0.2680845383017597,
-0.2532681348450042, -0.24117108383030117, -0.2310913220333839,
-0.22252386928270262, -0.2151407181101027, -0.20869393684595305,
-0.2030129818652675, -0.19796155927002212, -0.19341969902626777,
-0.18932719306720602, -0.1855883717409451, -0.1803003733152001},
{-1.1463623651716472, -0.8298170184625382, -0.5866180766276126,
-0.45887968777285065, -0.3858055520220032, -0.3389184160716665,
-0.30967448770089445, -0.28663346096051545, -0.26801777372733093,
-0.2532072333869596, -0.2411148833432576, -0.2310389440676358,
-0.2224746641119585, -0.21509418878647668, -0.20864969796939625,
-0.20297072557306906, -0.19792103696348384, -0.19338071077199703,
-0.18928956822054177, -0.1855519726662328, -0.180265597229752},
{-1.147022661598348, -0.829703610181646, -0.5864372403338798,
-0.4587364262813464, -0.38569109130763135, -0.3388233601828289,
-0.3096002231729513, -0.28655938072791787, -0.2679510597755925,
-0.2531463784679582, -0.24105872580021792, -0.23098660606300359,
-0.22242549640930775, -0.21504769482989616, -0.20860549266520423,
-0.2029285013024471, -0.19788054532270005, -0.19334175198588222,
-0.18925197178080921, -0.18551560104185172, -0.18023085704558262},
{-1.1476805491834372, -0.8295896498530091, -0.5862564157782132,
-0.45859323893956633, -0.38557670529029964, -0.3387283713948369,
-0.3095259469615156, -0.28648535478514603, -0.2678843963942634,
-0.25308557003865917, -0.2410026111546184, -0.23093430797601844,
-0.22237636613380707, -0.21500123620176115, -0.2085613208969257,
-0.20288630901863858, -0.19784008431435296, -0.19330282263596166,
-0.1892144037173914, -0.18547925683817912, -0.18019615259455235},
{-1.1483360329859376, -0.8294751397146262, -0.5860756033880201,
-0.45845012580573025, -0.3854623939432994, -0.33863344965989206,
-0.30945165950532383, -0.28641138309342584, -0.26781778353130814,
-0.2530248080498195, -0.2409465393601744, -0.23088204976326054,
-0.22232727324470425, -0.21495481286370244, -0.20851718262820818,
-0.20284414868698253, -0.19779965390534038, -0.19326392269045622,
-0.18917686399976807, -0.18544294002575568, -0.18016148371079677},
{-1.1489891180560599, -0.8293600819973944, -0.5858948035884095,
-0.458307086937376, -0.3853481572397487, -0.338538594930077,
-0.3093773612406836, -0.28633746561363205, -0.2677512211345421,
-0.25296409245215135, -0.2408905103704987, -0.23082983138134516,
-0.22227821770114087, -0.2149084247772649, -0.2084730778227205,
-0.20280202027277394, -0.1977592540624682, -0.1932250521175265,
-0.18913935259738024, -0.1854066505751233, -0.1801268502309492},
{-1.14963980943521, -0.8292444789252105, -0.585714016802327,
-0.4581641223913437, -0.3852339951524789, -0.33844380715734734,
-0.3093030526019759, -0.2862636023066518, -0.2676847091520298,
-0.25290342319648684, -0.24083452413926165, -0.23077765278695117,
-0.22222919946243913, -0.214862071904102, -0.20842900644415485,
-0.202759923741488, -0.19771888475262567, -0.19318621088540644,
-0.18910186947981544, -0.18537038845698128, -0.18009225199383905},
{-1.1502881121559585, -0.829128332714905, -0.5855332434504483,
-0.4580212322238029, -0.3851199076541344, -0.3383490862937485,
-0.30922873402116025, -0.28618979313317305, -0.2676182475318234,
-0.2528428002336329, -0.2407785806203092, -0.23072551393684881,
-0.2221802184879934, -0.21481575420591448, -0.20838496845632126,
-0.2027178590585793, -0.19767854594279333, -0.1931473989624527,
-0.189064414616674, -0.1853341536420008, -0.18005768884073903},
{-1.150934031242107, -0.8290116455763263, -0.5853524839512445,
-0.457878416490282, -0.3850058947171773, -0.3382544322910901,
-0.30915440592794186, -0.2861160380537714, -0.2675518362220184,
-0.25278222351452706, -0.24072267976745643, -0.23067341478780778,
-0.2221312747371773, -0.2147694716445122, -0.20834096382306677,
-0.20267582618956925, -0.19763823759996935, -0.19310861631700804,
-0.18902698797763584, -0.18529794610103112, -0.1800231606152387},
{-1.1515775717086658, -0.8288944197123318, -0.5851717387210105,
-0.45773567524562114, -0.3848919563137798, -0.338159845101215,
-0.3090800687498999, -0.2860423370288968, -0.2674854751708279,
-0.2527216929901369, -0.24066682153458474, -0.23062135529663175,
-0.2220823681694415, -0.21472322418166323, -0.20829699250826106,
-0.20263382509999217, -0.19759795969121097, -0.19306986291741712,
-0.18898958953235456, -0.18526176580488363, -0.17998866716316564},
{-1.1522187385618632, -0.828776657318783, -0.5849910081738241,
-0.45759300854402585, -0.38477809241594185, -0.33806532467595063,
-0.30900572291217, -0.28596869001889824, -0.2674191643265238,
-0.2526612086114338, -0.24061100587563966, -0.23056933542028568,
-0.22203349874432388, -0.2146770117792427, -0.2082530544758462,
-0.20259185575546612, -0.19755771218362994, -0.19303113873219835,
-0.18895221925056993, -0.1852256127244971, -0.1799542083327237},
{-1.15285753679915, -0.8286583605846382, -0.5848102927216375,
-0.45745041643902307, -0.3846643029954566, -0.33797087096692036,
-0.30893136883787076, -0.2858950969839926, -0.26735290363740394,
-0.25260077032949746, -0.2405552327446222, -0.2305173551157187,
-0.22198466642138437, -0.21463083439919206, -0.208209149689788,
-0.2025499181216892, -0.19751749504438976, -0.19299244372976565,
-0.18891487710216182, -0.1851894868308943, -0.17991978397426256},
{-1.1534939714092318, -0.8285395316918717, -0.5846295927741644,
-0.4573078989834956, -0.3845505880238457, -0.3378764839258669,
-0.30885700694760876, -0.2858215578842298, -0.2672866930518836,
-0.2525403780954115, -0.24049950209561755, -0.23046541433990209,
-0.22193587116028612, -0.2145846920034672, -0.20816527811418917,
-0.2025080121643238, -0.19747730824065668, -0.19295377787876355,
-0.18887756305689596, -0.1851533880950984, -0.17988539394040615},
{-1.1541280473720328, -0.8284201728155592, -0.5844489087390062,
-0.4571654562296665, -0.3844369474725299, -0.33778216350427936,
-0.3087826376597349, -0.2857480726795919, -0.26722053251842515,
-0.2524800318603232, -0.24044381388273073, -0.23041351304992996,
-0.22188711292070484, -0.21453858455411123, -0.20812143971310637,
-0.20246613784915257, -0.197437151739701, -0.1929151411477541,
-0.1888402770847104, -0.1851173164881903, -0.17985103808594727},
{-1.154759769658766, -0.828300286123894, -0.5842682410216098,
-0.4570230882291513, -0.38432338131261257, -0.33768790965375695,
-0.30870826139039365, -0.28567464132994536, -0.2671544219855464,
-0.2524197315754344, -0.24038816806009433, -0.23036165120291008,
-0.22183839166239105, -0.2144925120132415, -0.2080776344506725,
-0.20242429514197735, -0.19739702550878313, -0.19287653350534284,
-0.18880301915553166, -0.18508127198137525, -0.17981671626777662},
{-1.1553891432318761, -0.8281798737781474, -0.5840875900252307,
-0.45688079503287665, -0.38420988951503254, -0.33759372232578944,
-0.30863387855323265, -0.2856012637949725, -0.2670883614018622,
-0.2523594771919757, -0.24033256458202068, -0.23030982875600847,
-0.22178970734515746, -0.2144464743429495, -0.20803386229107557,
-0.20238248400863024, -0.1973569295153077, -0.19283795492028988,
-0.1887657892393424, -0.1850452545458252, -0.1797824283449747},
{-1.156016173045113, -0.8280589379327834, -0.5839069561510978,
-0.45673857669116186, -0.38409647205053876, -0.3374996014717344,
-0.3085594895598187, -0.28552794003431947, -0.2670223507160272,
-0.2522992686612533, -0.24027700340272595, -0.23025804566645214,
-0.22174105992887483, -0.21440047150550656, -0.20799012319858157,
-0.20234070441506524, -0.19731686372663093, -0.192799405361322,
-0.18872858730626363, -0.18500926415288754, -0.17974817417857603},
{-1.1566408640434682, -0.8279374807353701, -0.583726339798209,
-0.4565964332536789, -0.38398312888962605, -0.33740554704298076,
-0.30848509481922315, -0.28545467000745983, -0.2669563898767837,
-0.2522391059346124, -0.24022148447657155, -0.23020630189154767,
-0.2216924493734166, -0.2143545034631169, -0.20794641713745665,
-0.20229895632721318, -0.1972768281101802, -0.19276088479725684,
-0.1886914133263098, -0.18497330077381013, -0.17971395363164033},
{-1.1572632211632543, -0.827815504326665, -0.5835457413635017,
-0.4564543647694879, -0.383869860002678, -0.3373115589908319,
-0.3084106947382158, -0.2853814536737569, -0.266890478832871,
-0.2521789889634497, -0.2401660077579728, -0.23015459738862765,
-0.22164387563883936, -0.21430857017811356, -0.20790274407211762,
-0.2022572397110849, -0.19723682263346953, -0.19272239319693085,
-0.1886542672696423, -0.1849373643799812, -0.1796797665692098},
{-1.157883249332055, -0.8276930108406306, -0.5833651612418222,
-0.45631237128697094, -0.38375666535974173, -0.33721763726654175,
-0.30833628972126703, -0.2853082909925463, -0.2668246175332746,
-0.25211891769919725, -0.24011057320141072, -0.2301029321150807,
-0.22159533868512415, -0.21426267161287882, -0.2078591039669191,
-0.20221555453269047, -0.19719684726404263, -0.19268393052927135,
-0.18861714910649874, -0.1849014549428396, -0.1796456128581685},
{-1.1585009534687924, -0.8275700024044153, -0.5831845998259197,
-0.4561704528539708, -0.38364354493083586, -0.3371237818213414,
-0.3082618801703293, -0.28523518192297703, -0.2667588059268512,
-0.25205889209335985, -0.2400551807614023, -0.23005130602834778,
-0.22154683847240408, -0.21421680772979268, -0.20781549678631672,
-0.20217390075815755, -0.19715690196945657, -0.19264549676320808,
-0.18858005880706497, -0.18486557243382729, -0.1796114923673371},
{-1.1591163384836718, -0.8274464811384125, -0.5830040575064303,
-0.4560286095176278, -0.3835304986855862, -0.33702999260633937,
-0.3081874664853509, -0.2851621264240619, -0.2666930439626408,
-0.25199891209748504, -0.2399998303924903, -0.2299997190859654,
-0.22149837496081248, -0.21417097849140554, -0.20777192249478882,
-0.2021322783536681, -0.1971169867173561, -0.19260709186774028,
-0.18854299634168914, -0.18482971682444038, -0.1795774049672061},
{-1.1597294092782304, -0.8273224491562199, -0.5828235346719295,
-0.4558868413244973, -0.38341752659353934, -0.33693626957263556,
-0.3081130490635725, -0.2850891244547693, -0.26662733158967367,
-0.251938977663156, -0.23994452204936834, -0.2299481712454624,
-0.2214499481105685, -0.21412518386019785, -0.2077283810569397,
-0.2020906872853525, -0.19707710147539825, -0.19256871581202528,
-0.18850596168064704, -0.18479388808620723, -0.17954335053006587},
{-1.1603401707453702, -0.8271979085647736, -0.5826430317089579,
-0.4557451483205335, -0.38330462862410164, -0.3368426126712063,
-0.3080386283000355, -0.28501617597392204, -0.2665616687571202,
-0.25187908874197174, -0.23988925568664476, -0.22989666246442053,
-0.22140155788189408, -0.21407942379877432, -0.20768487243729994,
-0.20204912751947823, -0.19703724621126661, -0.19253036856503192,
-0.18846895479432724, -0.18475808619066703, -0.1795093289298535},
{-1.1609486277692778, -0.8270728614642127, -0.5824625490019811,
-0.45560353055106995, -0.38319180474632597, -0.3367490218531666,
-0.3079642045874553, -0.2849432809403245, -0.26649605541419197,
-0.2518192452857062, -0.23983403125913905, -0.22984519270059756,
-0.2213532042351738, -0.21403369826982144, -0.20764139660061942,
-0.20200759902233179, -0.19699742089278205, -0.19249205009603254,
-0.18843197565321046, -0.18472231110946824, -0.17947534004218113},
{-1.1615547852255315, -0.8269473099479991, -0.5822820869334095,
-0.4554619880608485, -0.3830790549292331, -0.336655497069423,
-0.30788977831596964, -0.28487043931257305, -0.26643049151018017,
-0.2517594472460901, -0.2397788487217234, -0.2297937619116821,
-0.22130488713082486, -0.2139880072360424, -0.2075979535115433,
-0.2019661017602874, -0.19695762548778273, -0.1924537603742269,
-0.18839502422776855, -0.18468656281427953, -0.179441383744269},
{-1.1621586479810597, -0.8268212561029296, -0.5821016458836179,
-0.4553205208939708, -0.3829663791415311, -0.3365620382708028,
-0.30781534987368164, -0.2847976510492377, -0.26636497699439887,
-0.25169969457490327, -0.2397237080291379, -0.22974237005548348,
-0.22125660652920065, -0.2139423506601581, -0.20755454313483113,
-0.20192463569968244, -0.19691785996407885, -0.1924154993688436,
-0.18835810048852553, -0.18465084127668963, -0.17940745991470375},
{-1.162760220894148, -0.8266947020091064, -0.581921226230973,
-0.4551791290939923, -0.3828537773517908, -0.33646864540819577,
-0.3077409196460812, -0.2847249161087426, -0.2662995118162972,
-0.25163998722398107, -0.23966860913640198, -0.22969101708978423,
-0.22120836239086217, -0.2138967285050699, -0.20751116543530035,
-0.20188320080698974, -0.19687812428959872, -0.19237726704924474,
-0.18832120440606626, -0.18461514646848487, -0.1793735684336739},
{-1.1633595088144768, -0.8265676497399906, -0.5817408283518011,
-0.4550378127037906, -0.3827412495284107, -0.3363753184323698,
-0.3076664880162828, -0.2846522344493928, -0.26623409592528435,
-0.25158032514525186, -0.239613551998471, -0.22963970297250702,
-0.22116015467632866, -0.21385114073358502, -0.20746782037783218,
-0.2018417970486608, -0.19683841843230754, -0.19233906338477902,
-0.18828433595096428, -0.18457947836132593, -0.17933970918275155},
{-1.163956516583089, -0.8264401013624111, -0.581560452620442,
-0.4548965717657286, -0.38262879563955776, -0.3362820572940928,
-0.3075920553651884, -0.28457960602955445, -0.26616872927103286,
-0.25152070829069273, -0.23955853657042137, -0.2295884276616461,
-0.22111198334625892, -0.21380558730873234, -0.20742450792731026,
-0.20180042439124968, -0.19679874236020156, -0.1923008883448991,
-0.1882474950940063, -0.1845438369270327, -0.17930588204486408},
{-1.164551249032436, -0.8263120589365905, -0.5813800994092142,
-0.4547554063215864, -0.38251641565328465, -0.3361888619440826,
-0.3075176220710427, -0.28450703080728834, -0.2661034118030198,
-0.25146113661224734, -0.23950356280733154, -0.22953719111513304,
-0.2210638483612808, -0.21376006819341864, -0.2073812280486933,
-0.20175908280134425, -0.19675909604134034, -0.192262741899083,
-0.18821068180577494, -0.18450822213735352, -0.17927208690439622},
{-1.1651437109863918, -0.8261835245161397, -0.5811997690884652,
-0.45461431641245764, -0.3824041095373687, -0.33609573233293843,
-0.30744318851007035, -0.284434508740701, -0.2660381434710053,
-0.2514016100620279, -0.23944863066432875, -0.22948599329103958,
-0.22101574968215632, -0.21371458335073767, -0.2073379807069453,
-0.20171777224552034, -0.19671947944378632, -0.19222462401679463,
-0.18817389605707646, -0.18447263396416247, -0.17923832364680403},
{-1.1657339072602018, -0.8260545001480959, -0.5810194620265469,
-0.4544733020789712, -0.3822918772594419, -0.3360026684113039,
-0.3073687550559264, -0.2843620397877913, -0.2659729242246982,
-0.2513421285921369, -0.23939374009670433, -0.22943483414753607,
-0.22096768726963445, -0.21366913274377985, -0.20729476586720885,
-0.20167649269055854, -0.196679892535772, -0.1921865346677134,
-0.18813713781875818, -0.18443707237927676, -0.179204592158962},
{-1.166321842660563, -0.8259249878729404, -0.5808391785898378,
-0.45433236336110383, -0.38217971878704327, -0.3359096701297035,
-0.3072943220798475, -0.2842896239064505, -0.2659077540139525,
-0.25128269215473775, -0.2393388910597405, -0.22938371364276433,
-0.22091966108462802, -0.21362371633579103, -0.20725158349460093,
-0.20163524410314948, -0.19664033528542402, -0.19214847382141498,
-0.18810040706165565, -0.18440153735459308, -0.17917089232893946},
{-1.1669075219855982, -0.8257949897246079, -0.5806589191427636,
-0.45419150029826116, -0.38206763408738587, -0.3358167374386888,
-0.30721988995079264, -0.28421726105447764, -0.2658426327886271,
-0.2512233007020801, -0.239284083508711, -0.22933263173490614,
-0.2208716710879839, -0.2135783340899069, -0.20720843355421592,
-0.2015940264500471, -0.19660080766101196, -0.19211044144758738,
-0.18806370375667947, -0.18436602886206632, -0.17913722404586085},
{-1.1674909500248583, -0.8256645077304706, -0.5804786840477749,
-0.4540507129293163, -0.3819556231276172, -0.3357238702887517,
-0.30714545903523105, -0.28414495118961625, -0.26577756049869505,
-0.2511639541864288, -0.23922931739909314, -0.22928158838232404,
-0.22082371724071326, -0.21353298596952608, -0.20716531601133292,
-0.20155283969812965, -0.19656130963087182, -0.1920724375159979,
-0.18802702787474002, -0.18433054687362005, -0.17910358720017117},
{-1.1680721315593596, -0.8255335439114657, -0.5802984736654037,
-0.4539100012925277, -0.381843685874631, -0.3356310686302483,
-0.30707102969746725, -0.28407269426953086, -0.26571253709412623,
-0.25110465256009173, -0.23917459268628327, -0.22923058354327286,
-0.22077579950376158, -0.21348767193791351, -0.20712223083111558,
-0.20151168381422435, -0.1965218411633356, -0.1920344619963601,
-0.18799037938690044, -0.184295091361244, -0.17906998168326038},
{-1.1686510713615617, -0.8254021002819597, -0.580118288354218,
-0.4537693654256244, -0.3817318222951388, -0.33553833241362685,
-0.3069966022992767, -0.284000490251748, -0.26564756252502264,
-0.251045395775503, -0.23911990932584914, -0.2291796171762266,
-0.2207279178382846, -0.21344239195850534, -0.20707917797899666,
-0.20147055876536757, -0.1964824022268281, -0.19199651485862357,
-0.18795375826416905, -0.18425966229693946, -0.1790364073877333},
{-1.1692277741954151, -0.8252701788499057, -0.5799381284708819,
-0.4536288053657288, -0.3816200323558754, -0.33544566158919975,
-0.3069221772000671, -0.2839283390938129, -0.2655826367415334,
-0.25098618378507065, -0.23906526727334032, -0.2291286892396156,
-0.22068007220533525, -0.2133971459947377, -0.20703615742031123,
-0.20142946451845156, -0.19644299278973754, -0.19195859607261134,
-0.1879171644775468, -0.18422425965278433, -0.1790028642071022},
{-1.1698022448163172, -0.8251377816167564, -0.579757994370127,
-0.45348832114941673, -0.38150831602309676, -0.33535305610730226,
-0.3068477547569436, -0.28385624075311, -0.2655177596938829,
-0.250927016541343, -0.2390106664843824, -0.22907779969193443,
-0.22063226256618074, -0.21335193401019903, -0.20699316912044363,
-0.20138840104060884, -0.1964036128205895, -0.19192070560828478,
-0.18788059799829826, -0.18418888340086403, -0.1789693520360276},
{-1.170374487971167, -0.8250049105775324, -0.5795778864047627,
-0.4533479128127649, -0.3813966732631132, -0.33526051591820016,
-0.30677333532451534, -0.2837841951869824, -0.26545293133231807,
-0.25086789399683285, -0.23895610691473557, -0.2290269484917391,
-0.22058448888198767, -0.2133067559684012, -0.20695021304490502,
-0.20134736829882294, -0.19636426228801573, -0.19188284343560613,
-0.1878440587975112, -0.18415353351325114, -0.17893587077007345},
{-1.1709445083983645, -0.824871567720864, -0.5793978049257307,
-0.4532075803912251, -0.3812851040420029, -0.3351680409720802,
-0.30669891925528725, -0.28371220235274563, -0.26538815160724916,
-0.2508088161042016, -0.23890158852007837, -0.22897613559769114,
-0.2205367511141474, -0.21326161183303283, -0.20690728915918166,
-0.2013063662603043, -0.1963249411605683, -0.19184500952464512,
-0.18780754684646173, -0.18411820996217054, -0.17890242030585446},
{-1.1715123108278012, -0.8247377550289356, -0.5792177502820266,
-0.45306732391970106, -0.38117360832558955, -0.3350756312191441,
-0.3066245068991761, -0.28364026220755534, -0.26532342046899016,
-0.25074978281606797, -0.2388471112562508, -0.22892536096842497,
-0.22048904922395018, -0.21321650156775607, -0.20686439742883533,
-0.20126539489225226, -0.19628564940693205, -0.19180720384555716,
-0.18777106211637928, -0.18408291271976962, -0.17886900054080845},
{-1.1720778999808914, -0.8246034744775514, -0.5790377228208001,
-0.4529271434326053, -0.38106218607971243, -0.3349832866095389,
-0.30655009860382965, -0.28356837470854157, -0.26525873786802967,
-0.25069079408519, -0.23879267507916024, -0.22887462456270047,
-0.22044138317285444, -0.2131714251363499, -0.20682153781955193,
-0.2012244541618493, -0.19624638699577268, -0.19176942636837735,
-0.18773460457855373, -0.18404764175829524, -0.17883561137342863},
{-1.1726412805705735, -0.8244687280361485, -0.5788577228873266,
-0.45278703896373396, -0.3809508372698568, -0.33489100709337194,
-0.30647569471454805, -0.2834965398128273, -0.2651941037549793,
-0.25063184986439024, -0.23873827994472796, -0.2288239263393017,
-0.22039375292228414, -0.21312638250263816, -0.20677871029696582,
-0.20118354403648664, -0.1962071538959167, -0.1917316770633788,
-0.18769817420444346, -0.18401239705003447, -0.17880225270305128},
{-1.1732024573013045, -0.8243335176678122, -0.578677750824987,
-0.45264701054641066, -0.38083956186147916, -0.3347987926207634,
-0.30640129557411966, -0.28342475747737483, -0.26512951808037566,
-0.250572950106421, -0.2386839258089808, -0.2287732662570876,
-0.22034615843384908, -0.2130813736304602, -0.2067359148268071,
-0.20114266448339446, -0.19616795007617993, -0.19169395590078442,
-0.18766177096539538, -0.18397717856727458, -0.1787689244299564},
{-1.1737614348691041, -0.8241978453293042, -0.5784978069753269,
-0.45250705821337756, -0.38072835981982356, -0.33470664314169396,
-0.3063269015233836, -0.2833530276591545, -0.26506498079493646,
-0.25051409476429387, -0.2386296126279377, -0.22872264427496702,
-0.2202985996691016, -0.2130363984837671, -0.20669315137486088,
-0.20110181547005124, -0.19612877550542218, -0.19165626285089798,
-0.1876253948328992, -0.18394198628246228, -0.1787356264551916},
{-1.174318217961524, -0.8240617129710052, -0.578317891677995,
-0.4523671819968147, -0.380617231109885, -0.3346145586061181,
-0.3062525129004561, -0.28328135031500257, -0.2650004918493418,
-0.2504552837908659, -0.23857534035773353, -0.22867206035188414,
-0.22025107658965215, -0.21299145702649747, -0.20665041990694166,
-0.2010609969638506, -0.19608963015256786, -0.19161859788408764,
-0.18758904577842284, -0.18390682016787907, -0.1787023586806391},
{-1.174872811257696, -0.8239251225370761, -0.5781380052708915,
-0.4522273819284627, -0.38050617569671563, -0.33452253896410555,
-0.30617813004130146, -0.2832097254017695, -0.26493605119440655,
-0.250396517139184, -0.23852110895452316, -0.22862151444685375,
-0.2202035891572336, -0.21294654922273337, -0.20660772038894937,
-0.2010202089323001, -0.19605051398659334, -0.19158096097069977,
-0.18755272377348398, -0.18387168019599187, -0.17866912100919086},
{-1.1754252194283108, -0.823788075965338, -0.5779581480899629,
-0.4520876580394263, -0.38039519354497775, -0.3344305841654728,
-0.3061037532794818, -0.28313815287621014, -0.26487165878101304,
-0.2503377947623515, -0.23846691837456957, -0.22857100651896656,
-0.22015613733361072, -0.21290167503656088, -0.20656505278679171,
-0.20097945134291773, -0.1960114269765456, -0.19154335208123396,
-0.18751642878975305, -0.18383656633933398, -0.1786359133443296},
{-1.1759754471356332, -0.8236505751873388, -0.577778320469444,
-0.45194801036040244, -0.380284284619372, -0.3343386941602877,
-0.30602938294624604, -0.2830666326950487, -0.2648073145601051,
-0.25027911661351376, -0.2384127685742552, -0.2285205365274201,
-0.22010872108064428, -0.21285683443216952, -0.20652241706650276,
-0.20093872416333114, -0.19597236909155935, -0.19150577118618872,
-0.18748016079888052, -0.18380147857048867, -0.17860273559055995},
{-1.1765234990335274, -0.8235126221283868, -0.5775985227416354,
-0.451808438921421, -0.38017344888424065, -0.3342468688982211,
-0.30595501937057656, -0.28299516481492015, -0.2647430184826196,
-0.2502204826457807, -0.23835865950978086, -0.22847010443132287,
-0.2200613403600944, -0.21281202737366334, -0.20647981319404263,
-0.20089802736113005, -0.19593334030067888, -0.19146821825605076,
-0.18744391977251595, -0.18376641686194684, -0.17856958765292452},
{-1.17706937976746, -0.8233742187075607, -0.5774187552371485,
-0.4516689437521463, -0.38006268630392515, -0.33415510832919004,
-0.30588066287913473, -0.28292374919244867, -0.2646787704996767,
-0.2501618928124769, -0.2383045911377344, -0.228419710189943,
-0.2200139951340052, -0.21276725382542527, -0.20643724113555884,
-0.20085736090403494, -0.19589434057319655, -0.19143069326150375,
-0.1874077056824175, -0.1837313811864303, -0.17853646943740564},
{-1.177613093974493, -0.8232353668376979, -0.5772390182846909,
-0.4515295248815787, -0.3799519968426164, -0.3340634124029691,
-0.3058063137961765, -0.28285238578412564, -0.26461457056232773,
-0.25010334706686765, -0.2382505634144627, -0.22836935376262613,
-0.21996668536433228, -0.21272251375168083, -0.20639470085715028,
-0.20081672475975343, -0.19585536987830654, -0.19139319617311523,
-0.1873715185003617, -0.1836963715165718, -0.1785033808506975},
{-1.1781546462833126, -0.8230960684254467, -0.5770593122112484,
-0.45139018233828854, -0.37984138046424576, -0.33397178106936476,
-0.3057319724437987, -0.28278107454654466, -0.26455041862185846,
-0.2500448453623416, -0.23819657629663382, -0.22831903510870188,
-0.21991941101311374, -0.21267780711686224, -0.20635219232501334,
-0.20077611889609615, -0.19581642818535316, -0.19135572696163639,
-0.18733535819822777, -0.1836613878252038, -0.17847032180019484},
{-1.1786940413142382, -0.822956325371243, -0.5768796373419679,
-0.45125091615038504, -0.37973083713266453, -0.33388021427811254,
-0.3056576391415434, -0.28270981543607987, -0.2644863146294032,
-0.24998638765232273, -0.23814262974079003, -0.22826875418761428,
-0.21987217204244902, -0.21263313388533622, -0.2063097155053928,
-0.20073554328083887, -0.19577751546369138, -0.19131828559775577,
-0.18729922474784622, -0.1836264300850765, -0.17843729219411775},
{-1.179231283679231, -0.8228161395693937, -0.576699994000281,
-0.4511117263453296, -0.37962036681159883, -0.33378871197885696,
-0.30558331420701734, -0.2826386084091733, -0.2644222585363746,
-0.24992797389024313, -0.2380887237035585, -0.22821851095885926,
-0.21982496841450083, -0.21258849402159496, -0.20626727036450232,
-0.2006949978818422, -0.19573863168266903, -0.19128087205224742,
-0.18726311812116236, -0.18359149826903431, -0.1784042919412776},
{-1.1797663779818683, -0.8226755129080013, -0.5765203825077878,
-0.45097261295020596, -0.37950996946452387, -0.3336972741213069,
-0.3055089979553107, -0.2825674534221705, -0.2643582502941251,
-0.24986960402970637, -0.2380348581417564, -0.22816830538193789,
-0.21977780009150605, -0.21254388749020237, -0.2062248568687517,
-0.2006544826670924, -0.19569977681184358, -0.19124348629602705,
-0.1872270382901673, -0.18355659235003796, -0.17837132095129227},
{-1.1802993288174173, -0.8225344472690519, -0.57634080318435,
-0.4508335759915084, -0.3793996450549181, -0.33360590065511453,
-0.30543469069924334, -0.28249635043139143, -0.264294289854099,
-0.2498112780242736, -0.2379810330121359, -0.22811813741650533,
-0.21973066703574595, -0.21249931425574897, -0.20618247498453313,
-0.20061399760456533, -0.19566095082070856, -0.19120612829992245,
-0.18719098522687805, -0.1835217123010715, -0.17833837913447215},
{-1.1808301407727992, -0.8223929445284189, -0.5761612563480945,
-0.4506946154952727, -0.37928939354595737, -0.3335145915298723,
-0.3053603927494295, -0.2824252993931281, -0.2642303771678084,
-0.249752995827619, -0.2379272482714785, -0.2280680070221457,
-0.21968356920951937, -0.2124547742828442, -0.20614012467817444,
-0.20057354266222305, -0.19562215367880453, -0.19116879803485842,
-0.18715495890334855, -0.18348685809513365, -0.17830546640176048},
{-1.1813588184266122, -0.8222510065558222, -0.5759817423153812,
-0.4505557314870642, -0.3791792149007961, -0.3334233466952675,
-0.30528610441407145, -0.28235430026359376, -0.2641665121868665,
-0.24969475739348268, -0.23787350387681538, -0.22801791415866912,
-0.21963650657526412, -0.21241026753621184, -0.20609780591626858,
-0.2005331178081733, -0.19558338535583975, -0.19113149547184505,
-0.18711895929168687, -0.18345202970538232, -0.17827258266484947},
{-1.181885366349142, -0.8221086352149581, -0.5758022614008542,
-0.4504169239919026, -0.37906910908239755, -0.33333216610075056,
-0.305211825999407, -0.28228335299901297, -0.2641026948628886,
-0.24963656267558054, -0.23781979978499468, -0.22796785878580472,
-0.21958947909540383, -0.21236579398058275, -0.20605551866524974,
-0.20049272301047827, -0.19554464582142073, -0.19109422058187153,
-0.1870829863641037, -0.18341722710487107, -0.17823972783605013},
{-1.182409789102367, -0.8219658323633621, -0.5756228139173911,
-0.4502781930343601, -0.3789590760535064, -0.33324104969588353,
-0.305137557809128, -0.2822124575555137, -0.26403892514758254,
-0.2495784116277946, -0.23776613595314244, -0.22791784086336686,
-0.21954248673244936, -0.21232135358078263, -0.20601326289177813,
-0.2004523582373703, -0.19550593504535163, -0.19105697333601968,
-0.18704704009273976, -0.1833824502668624, -0.17820690182836252},
{-1.1829320912399632, -0.8218225998525776, -0.5754434001762032,
-0.450139538638476, -0.37884911577692515, -0.33314999743021256,
-0.30506330014479044, -0.2821416138892495, -0.26397520299275,
-0.24952030420401794, -0.23771251233826485, -0.22786786035131956,
-0.2194955294489791, -0.2122769463016385, -0.20597103856244603,
-0.20041202345705034, -0.1954672529973953, -0.19101975370543856,
-0.187011120449865, -0.18334769916464322, -0.1781741045555043},
{-1.1834522773073417, -0.8216789395280596, -0.5752640204867585,
-0.45000096082783536, -0.37873922821510775, -0.3330590092531892,
-0.3049890533056985, -0.28207082195628597, -0.2639115283502167,
-0.2494622403582074, -0.23765892889752904, -0.2278179172095547,
-0.2194486072076225, -0.21223257210808377, -0.20592884564389635,
-0.20037171863777847, -0.19542859964736992, -0.19098256166125904,
-0.18697522740777117, -0.18331297377148692, -0.17814133593180204},
{-1.1839703518416134, -0.8215348532292471, -0.5750846751567811,
-0.44986245962556126, -0.3786294133304833, -0.33296808511435716,
-0.3049148175888502, -0.2820000817126732, -0.2638479011719004,
-0.24940422004434426, -0.23760538558819855, -0.22776801139813552,
-0.21940171997104363, -0.21218823096506645, -0.2058866841029119,
-0.20033144374784717, -0.1953899749652408, -0.19094539717466197,
-0.18693936093880525, -0.18327827406079789, -0.17810859587219174},
{-1.184486319371656, -0.8213903427895739, -0.5749053644923807,
-0.4497240350542312, -0.37851967108534035, -0.33287722496305694,
-0.30484059328921576, -0.2819293931144745, -0.26378432140978636,
-0.24934624321652898, -0.23755188236744162, -0.2277181428771089,
-0.21935486770200074, -0.21214392283759276, -0.20584455390621303,
-0.20029119875563373, -0.19535137892090626, -0.19090826021697294,
-0.18690352101535535, -0.18324360000598938, -0.1780758842923691},
{-1.1850001844180569, -0.8212454100364458, -0.5747260887979175,
-0.4495856871360493, -0.3784100014417354, -0.3327864287487423,
-0.3047663806993901, -0.28185875611763445, -0.26372078901590434,
-0.24928830982890737, -0.2374984191926397, -0.2276683116066489,
-0.21930805036329137, -0.21209964769075396, -0.2058024550206481,
-0.20025098362959204, -0.19531281148440716, -0.19087115075948047,
-0.18686770760981397, -0.18320895158055595, -0.17804320110852756},
{-1.1855119514931791, -0.8211000567913084, -0.574546848376066,
-0.44944741589262316, -0.3783004043617527, -0.3326956964208385,
-0.3046921801097535, -0.2817881706781019, -0.2636573039423298,
-0.24923041983566296, -0.23744499602115776, -0.22761851754691764,
-0.2192612679177588, -0.21205540548966528, -0.20576038741311642,
-0.2002107983381829, -0.19527427262579855, -0.19083406877352926,
-0.18683192069465315, -0.18317432875802697, -0.17801054623766954},
{-1.1860216251011444, -0.8209542848696079, -0.5743676435278631,
-0.4493092213451759, -0.37819087980720967, -0.3326050279286551,
-0.3046179918085431, -0.2817176367518889, -0.2635938661412993,
-0.24917257319103392, -0.23739161281046028, -0.22756876065819442,
-0.21921452032832422, -0.21201119619953346, -0.2057183510505285,
-0.20017064284990438, -0.1952357623151919, -0.19079701423054662,
-0.18679616024244905, -0.1831397315120571, -0.17797791959733544},
{-1.1865292097378537, -0.8208080960808557, -0.5741884745526684,
-0.4491711035144782, -0.37808142773985065, -0.3325144232216666,
-0.3045438160816377, -0.2816471542947987, -0.2635304755650101,
-0.24911476984934056, -0.2373382695180526, -0.2275190409008223,
-0.2191678075579926, -0.21196701978553412, -0.20567634589986872,
-0.20013051713334806, -0.19519728052276464, -0.19075998710195008,
-0.18676042622571143, -0.1831051598162352, -0.17794532110572958},
{-1.187034709890981, -0.8206614922286339, -0.5740093417481832,
-0.4490330624207579, -0.3779720481212646, -0.33242388224909036,
-0.3044696532130544, -0.28157672326278615, -0.2634671321658091,
-0.24905700976495293, -0.23728496610146177, -0.22746935823514947,
-0.2191211295697688, -0.211922876212969, -0.2056343719281546,
-0.20009042115714593, -0.19515882721872546, -0.19072298735922866,
-0.1867247186170855, -0.18307061364427968, -0.17791275068166912},
{-1.1875381300399934, -0.8205144751105283, -0.5738302454103913,
-0.44889509808381456, -0.37786274091288374, -0.3323334049602442,
-0.30439550348432265, -0.2815063436116716, -0.2634038358959916,
-0.24899929289233147, -0.23723170251833348, -0.2274197126216384,
-0.21907448632677196, -0.2118787654471772, -0.20559242910249464,
-0.2000503548900101, -0.1951204023733739, -0.19068601497402415,
-0.18668903738917542, -0.1830360929699213, -0.17788020824460182},
{-1.1880394746561822, -0.8203670465183039, -0.5736511858337476,
-0.44875721052303885, -0.3777535060761741, -0.33224299130452983,
-0.30432136717498115, -0.2814360152972941, -0.2633405867080889,
-0.24894161918596502, -0.23717847872636044, -0.2273701040207976,
-0.21902787779216193, -0.21183468745356615, -0.20555051739004893,
-0.20001031830066918, -0.1950820059570333, -0.19064906991785557,
-0.1866533825147103, -0.18300159776701141, -0.17784769371463738},
{-1.1885387482026386, -0.8202192082377676, -0.5734721633109896,
-0.44861939975726084, -0.3776443435721917, -0.33215264123105914,
-0.30424724456223284, -0.2813657382754269, -0.2632773845545151,
-0.24888398860032823, -0.23712529468323829, -0.22732053239314554,
-0.21898130392909132, -0.2117906421975153, -0.20550863675792153,
-0.19997031135786347, -0.19504363794005264, -0.19061215216239735,
-0.186617753966428, -0.18296712800931303, -0.17781520701247922},
{-1.1890359551342764, -0.8200709620488696, -0.5732931781332822,
-0.4484816658049804, -0.3775352533621391, -0.3320623546892877,
-0.30417313592121864, -0.28129551250186147, -0.2632142293879238,
-0.24882640109010778, -0.23707215034685025, -0.22727099769942494,
-0.21893476470092232, -0.21174662964457536, -0.2054667871734177,
-0.19993033403052496, -0.19500529829290003, -0.19057526167935035,
-0.18658215171713421, -0.18293268367081006, -0.17778274805953442},
{-1.1895310998978446, -0.8199223097256491, -0.5731142305900834,
-0.4483440086841115, -0.37742623540689757, -0.33197213162826344,
-0.3040990415249659, -0.2812253379323557, -0.2631511211608557,
-0.248768856609894, -0.23701904567491394, -0.2272214999001556,
-0.21888826007089635, -0.21170264976021547, -0.2054249686037859,
-0.19989038628745637, -0.1949669869859776, -0.190538398440391,
-0.18654657573964872, -0.1828982647253372, -0.1777503167777028},
{-1.1900241869319337, -0.8197732530363542, -0.5729353209693091,
-0.4482064284122713, -0.3773172896673259, -0.33188197199729996,
-0.30402496164437776, -0.28115521452264236, -0.2630880598260641,
-0.2487113551145288, -0.2369659806254727, -0.22717203895620774,
-0.21884179000245685, -0.21165870251010221, -0.20538318101640063,
-0.19985046809766738, -0.1949287039899259, -0.19050156241741578,
-0.1865110260068954, -0.18286387114703362, -0.1777179130895592},
{-1.190515220667008, -0.819623793743306, -0.5727564495572645,
-0.44806892500650075, -0.3772084161042185, -0.3317918757456292,
-0.3039508965481099, -0.2810851422284424, -0.26302504533626947,
-0.2486538965586782, -0.23691295515644462, -0.22712261482840201,
-0.21879535445907972, -0.21161478785987953, -0.2053414243786542,
-0.19981057943019076, -0.19489044927528054, -0.19046475358220105,
-0.18647550249175637, -0.18282950290981193, -0.17768553691845757},
{-1.1910042055253536, -0.8194739336030804, -0.5725776166386367,
-0.4479314984834494, -0.3770996146780715, -0.331701842822419,
-0.30387684650280855, -0.2810151210054932, -0.26296207764439283,
-0.24859648089727737, -0.2368599692259037, -0.2270732274775702,
-0.21874895340423306, -0.21157090577523419, -0.20529969865801756,
-0.19977072025407572, -0.19485222281269676, -0.19042797190667615,
-0.18644000516731074, -0.1827951599878308, -0.17765318818811826},
{-1.1914911459211668, -0.819323674366381, -0.5723988224965224,
-0.4477941488593635, -0.37699088534940073, -0.3316118731768948,
-0.3038028117727932, -0.2809451508094172, -0.2628991567032317,
-0.24853910808519641, -0.236807022791921, -0.22702387686465886,
-0.21870258680152044, -0.21152705622190715, -0.2052580038219709,
-0.19973089053844562, -0.19481402457288288, -0.19039121736278908,
-0.18640453400650459, -0.18276084235519496, -0.17762086682313627},
{-1.1919760462605378, -0.819173017778138, -0.5722200674124288,
-0.44765687614996397, -0.37688222807854155, -0.3315219667581526,
-0.30372879262059393, -0.2808752315958818, -0.26283628246576174,
-0.24848177807736715, -0.2367541158126032, -0.226974562950635,
-0.21865625461456362, -0.21148323916568823, -0.20521633983801668,
-0.19969109025241316, -0.1947758545265066, -0.1903544899224181,
-0.18636908898243298, -0.1827265499860684, -0.17758857274855555},
{-1.1924589109414105, -0.8190219655774842, -0.5720413516662892,
-0.4475196803706304, -0.37677364282570736, -0.33143212351536044,
-0.30365478930646694, -0.28080536332055006, -0.26277345488501913,
-0.24842449082884843, -0.2367012482462385, -0.22692528569658021,
-0.21860995680705875, -0.21143945457245694, -0.20517470667384452,
-0.19965131936530556, -0.19473771264438344, -0.1903177895577406,
-0.1863336700682372, -0.18269228285468864, -0.17755630589010818},
{-1.1929397443536562, -0.8188705194977646, -0.5718626755364862,
-0.447382561536236, -0.37666512955110654, -0.3313423433977003,
-0.3035808020885491, -0.2807355459390728, -0.2627106739140821,
-0.2483672462946922, -0.2366484200510801, -0.22687604506363135,
-0.21856369334277947, -0.21139570240817562, -0.20513310429706033,
-0.19961157784645334, -0.19469959889741384, -0.19028111624078248,
-0.1862982772371169, -0.18265804093540483, -0.1775240661742532},
{-1.193418550879066, -0.818718681266593, -0.5716840392997891,
-0.44724551966124015, -0.3765566882146508, -0.3312526263542437,
-0.3035068312229562, -0.28066577940701687, -0.26264793950608945,
-0.24831004443004967, -0.23659563118537186, -0.2268268410129275,
-0.21851746418552742, -0.21135198263872645, -0.20509153267534486,
-0.19957186566506935, -0.19466151325638004, -0.19024446994361943,
-0.18626291046223464, -0.1826238242024174, -0.17749185352790375},
{-1.193895334891339, -0.8185664526057913, -0.5715054432314819,
-0.4471085547597624, -0.3764483187762562, -0.3311629723342493,
-0.30343287696363985, -0.2805960636800353, -0.26258525161425705,
-0.24825288519017708, -0.2365428816075954, -0.22677767350579714,
-0.21847126929922478, -0.21130829523019923, -0.20504999177654604,
-0.1995321827906562, -0.19462345569234785, -0.19020785063852297,
-0.1862275697169642, -0.18258963263021277, -0.17745966787883494},
{-1.1943701007561325, -0.8184138352315282, -0.5713268876052752,
-0.44697166684535206, -0.37634002119570975, -0.33107338128664954,
-0.3033589395627132, -0.2805263987136868, -0.2625226101918612,
-0.24819576853019165, -0.23649017127613514, -0.22672854250342755,
-0.21842510864775844, -0.2112646401485978, -0.20500848156836882,
-0.19949252919259353, -0.19458542617615993, -0.19017125829763204,
-0.1861922549745194, -0.18255546619312923, -0.17742750915525973},
{-1.1948428528310167, -0.8182608308541219, -0.5711483726932653,
-0.4468348559312453, -0.37623179543258656, -0.33098385316061074,
-0.3032850192700207, -0.28045678446353484, -0.2624600151922114,
-0.2481386944055175, -0.23643750014952825, -0.2266794479672365,
-0.21837898219517982, -0.2112210173600928, -0.20496700201873508,
-0.1994529048404996, -0.19454742467896025, -0.19013469289324392,
-0.18615696620831046, -0.18252132486566253, -0.1773953772862158},
{-1.1953135954655505, -0.818107441178302, -0.5709698987661397,
-0.44669812203020043, -0.37612364144660193, -0.3308943879052517,
-0.3032111163334201, -0.2803872208851814, -0.26239746656871055,
-0.24808166277148525, -0.2363848681862828, -0.22663038985870254,
-0.21833288990552613, -0.21117742683082263, -0.2049255530954881,
-0.19941330970387217, -0.19450945117182128, -0.19009815439768474,
-0.1861217033917244, -0.18248720862236656, -0.17736327220125303},
{-1.195782333001235, -0.8179536679030471, -0.570791466092965,
-0.4465614651545746, -0.37601555919703356, -0.33080498546958226,
-0.30313723099875656, -0.2803177079341632, -0.26233496427484115,
-0.24802467358355318, -0.23633227534501478, -0.2265813681392428,
-0.2182868317429525, -0.21113386852704608, -0.20488413476662948,
-0.19937374375240324, -0.19447150562581372, -0.19006164278331283,
-0.18608646649824911, -0.18245311743776438, -0.17733119383071583},
{-1.196249069771564, -0.8177995127216453, -0.5706130749413073,
-0.4464248853163658, -0.37590754864328046, -0.33071564580283364,
-0.3030633635097466, -0.2802482455660542, -0.26227250826408244,
-0.24796772679717272, -0.23627972158445987, -0.22653238277044307,
-0.21824080767164244, -0.21109034241504498, -0.20484274700015592,
-0.19933420695570603, -0.19443358801216815, -0.19002515802248454,
-0.1860512555013918, -0.18241905128644142, -0.17729914210551656},
{-1.1967138101020023, -0.8176449773217681, -0.5704347255772714,
-0.4462883825270464, -0.3757996097445808, -0.3306263688538683,
-0.3029895141083492, -0.2801788337363387, -0.2622100984900435,
-0.2479108223679145, -0.2362272068632545, -0.2264834337138837,
-0.2181948176558488, -0.2110468484611101, -0.20480138976410545,
-0.19929469928356824, -0.19439569830210113, -0.18998870008768098,
-0.18601607037468404, -0.18238501014312725, -0.17726711695725217},
{-1.1971765583100136, -0.8174900633853397, -0.5702564182653634,
-0.44615195679780495, -0.3756917424599512, -0.33053715457181954,
-0.3029156830342459, -0.2801094724005768, -0.26214773490631704,
-0.24785396025137763, -0.23617473114023824, -0.2264345209312879,
-0.21814886165988034, -0.21100338663165474, -0.2047600630265609,
-0.19925522070578072, -0.19435783646688498, -0.1899522689514328,
-0.18598091109173076, -0.1823509939824457, -0.17723511831816818},
{-1.19763731870508, -0.8173347725887243, -0.5700781532686816,
-0.44601560813933805, -0.37558394674849793, -0.33044800290578247,
-0.3028418705252667, -0.28004016151428157, -0.2620854174666001,
-0.2477971404032091, -0.2361222943742236, -0.22638564438432196,
-0.21810293964812555, -0.2109599568931253, -0.20471876675568135,
-0.19921577119224243, -0.1943200024778653, -0.18991586458623289,
-0.18594577762612596, -0.18231700277916674, -0.17720314612124843},
{-1.198096095588677, -0.817179106602614, -0.5698999308487618,
-0.4458793365619079, -0.37547622256907165, -0.33035891380475946,
-0.3027680768172276, -0.2799709010330176, -0.2620231461247,
-0.24774036277919098, -0.23606989652413213, -0.22633680403485834,
-0.21805705158502398, -0.21091655921204788, -0.20467750091969217,
-0.1991763507128359, -0.19428219630640498, -0.18987948696470558,
-0.18591066995163796, -0.18228303650811117, -0.17717120030007893},
{-1.1985528932543374, -0.8170230670920794, -0.5697217512656996,
-0.44574314207553745, -0.3753685698804763, -0.33026988721787387,
-0.3026943021438038, -0.2799016909122476, -0.26196092083438915,
-0.24768362733505978, -0.23601753754893018, -0.22628799984473535,
-0.218011197435112, -0.21087319355487155, -0.20463626548680125,
-0.1991369592375214, -0.19424441792394975, -0.18984313605945213,
-0.18587558804195825, -0.18224909514413268, -0.17713928078891916},
{-1.199007715987618, -0.816866655716622, -0.5695436147781211,
-0.4456070246896717, -0.3752609886414334, -0.33018092309403657,
-0.30262054673704664, -0.27983253110752115, -0.2618987415495524,
-0.24762693402663816, -0.2359652174075897, -0.22623923177585858,
-0.21796537716289577, -0.21082985988826097, -0.20459506042533238,
-0.1990975967363673, -0.19420666730195202, -0.18980681184314263,
-0.18584053187085825, -0.18221517866210357, -0.17710738752268718},
{-1.1994605680660888, -0.8167098741300665, -0.5693655216430806,
-0.4454709844134217, -0.37515347881041883, -0.33009202138228333,
-0.30254681082681456, -0.2797634215743243, -0.26183660822412347,
-0.24757028280989934, -0.23591293605924246, -0.2261904997902171,
-0.21791959073304001, -0.21078655817883019, -0.20455388570360133,
-0.19905826317941067, -0.1941689444119712, -0.18977051428859593,
-0.18580550141218133, -0.18218128703694192, -0.17707552043681818},
{-1.199911453759449, -0.81655272398075, -0.5691874721163239,
-0.4453350212555318, -0.37504604034609634, -0.3300031820317767,
-0.3024730946410541, -0.27969436226817557, -0.26177452081209585,
-0.24751367364074994, -0.23586069346297034, -0.22614180384985216,
-0.21787383811028516, -0.21074328839330536, -0.20451274129007646,
-0.19901895853686735, -0.1941312492255607, -0.18973424336849454,
-0.18577049663982792, -0.18214742024369812, -0.17704367946760047},
{-1.2003603773294043, -0.8163952069113947, -0.569009466452023,
-0.44519913522431465, -0.37493867320669294, -0.32991440499135904,
-0.30239939840575203, -0.2796253531445487, -0.2617124792674508,
-0.24745710647522512, -0.2358084895779704, -0.22609314391685853,
-0.21782811925923107, -0.2107000504984171, -0.20447162715310818,
-0.1989796827788537, -0.194093581714333, -0.18969799905569396,
-0.1857355175276456, -0.18211357825726204, -0.17701186455166562},
{-1.20080734302977, -0.8162373245591641, -0.568831504902949,
-0.44506332632778234, -0.37483137735059735, -0.3298256902102593,
-0.3023257223449509, -0.2795563941589876, -0.26165048354436693,
-0.24740058126939268, -0.23575632436351057, -0.22604451995344488,
-0.21778243414484355, -0.2106568444609771, -0.20443054326122834,
-0.19894043587570187, -0.19405594185000807, -0.18966178132311273,
-0.18570056404969382, -0.18207976105291745, -0.1769800756264872},
{-1.201252355106438, -0.8160790785556817, -0.5686535877203821,
-0.4449275945733624, -0.3747241527359503, -0.3297370376372981,
-0.30225206668092874, -0.27948748526697687, -0.2615885335969357,
-0.24734409797937973, -0.235704197778843, -0.22599593192177436,
-0.21773678273187724, -0.210613670247763, -0.20438948958296943,
-0.19890121779762948, -0.1940183296042346, -0.18962559014357483,
-0.1856656361799458, -0.18204596860560596, -0.1769483126299325},
{-1.2016954177974046, -0.8159204705270536, -0.568475715154224,
-0.44479193996834687, -0.37461699932082193, -0.32964844722152353,
-0.30217843163397085, -0.27941862642406634, -0.26152662937943205,
-0.24728765656142748, -0.23565210978338924, -0.22594737978418156,
-0.21769116498532104, -0.21057052782577745, -0.20434846608697965,
-0.19886202851504686, -0.1939807449488824, -0.1895894254900896,
-0.18563073389244278, -0.1820122008906193, -0.17691657550043338},
{-1.2021365353327744, -0.8157615020938267, -0.5682978874528953,
-0.4446563625194475, -0.3745099170632945, -0.3295599189120568,
-0.3021048174223895, -0.2793498175856859, -0.26146477084607267,
-0.24723125697176718, -0.23560006033650294, -0.22589886350301125,
-0.21764558087016495, -0.2105274171619036, -0.20430747274184657,
-0.19882286799842275, -0.1939431878557476, -0.18955328733577104,
-0.1855958571613705, -0.18197845788316958, -0.17688486417709726},
{-1.202575711934769, -0.8156021748710962, -0.568120104863453,
-0.44452086223308285, -0.3744029059211895, -0.3294714526578302,
-0.3020312242627148, -0.279281058707455, -0.26140295795123225,
-0.24717489916673818, -0.2355480493977733, -0.2258503830406644,
-0.21760003035143693, -0.21048433822316626, -0.2042665095162941,
-0.19878373621817835, -0.19390565829668716, -0.18951717565360449,
-0.18556100596086544, -0.18194473955848767, -0.17685317859938565},
{-1.2030129518177468, -0.8154424904684073, -0.5679423676314497,
-0.44438543911533623, -0.37429596585236247, -0.32938304840792343,
-0.3019576523694616, -0.2792123497448129, -0.2613411906492322,
-0.24711858310271206, -0.23549607692667718, -0.22580193835964013,
-0.21755451339424248, -0.21044129097661934, -0.2042255763791374,
-0.19874463314486857, -0.19386815624367926, -0.18948109041670103,
-0.18552618026512424, -0.18191104589196527, -0.17682151870737317},
{-1.2034482591882132, -0.8152824504898588, -0.5677646760011239,
-0.44425009317178454, -0.3741890968144964, -0.329294706111259,
-0.3018841019555003, -0.2791436906533358, -0.261279468894559,
-0.24706230873606172, -0.23544414288275695, -0.225753529422406,
-0.21750902996374477, -0.21039827538932654, -0.20418467329907508,
-0.19870555874906803, -0.1938306816685902, -0.18944503159823856,
-0.18549138004845855, -0.1818773768589439, -0.17678988444148902},
{-1.2038816382447919, -0.8151220565340709, -0.5675870302152035,
-0.44411482440775674, -0.37408229876517907, -0.3292064257168461,
-0.30181057323172134, -0.2790750813885292, -0.2612177926416639,
-0.2470060760233812, -0.23539224722572927, -0.22570515619162523,
-0.21746358002515964, -0.2103552914284501, -0.20414380024503065,
-0.19866651300142535, -0.1937932345436002, -0.18940899917147558,
-0.1854566052851525, -0.1818437324348403, -0.1767582757427011},
{-1.2043130931783144, -0.8149613101941835, -0.5674094305151082,
-0.44397963282813413, -0.3739755716620561, -0.32911820717377793,
-0.3017370664071324, -0.27900652190599073, -0.2611561618451155,
-0.24694988492119974, -0.2353403899153237, -0.2256568186299286,
-0.21741816354384702, -0.21031233906122737, -0.2041029571859918,
-0.19862749587271433, -0.1937558148407046, -0.1893729931096586,
-0.18542185594961436, -0.1818101125952165, -0.17672669255248485},
{-1.2047426281717506, -0.8148002130579277, -0.5672318771408321,
-0.4438445184374481, -0.3738689154624245, -0.32903005043097866,
-0.30166358168898366, -0.27893801216119796, -0.2610945764594874,
-0.24689373538612647, -0.235288570911258, -0.22560851669996906,
-0.21737278048501718, -0.2102694182549003, -0.20406214409078283,
-0.1985885073336, -0.19371842253198102, -0.18933701338606745,
-0.18538713201615997, -0.1817765173155148, -0.1766951348124921},
{-1.205170247400269, -0.8146387667075669, -0.5670543703309645,
-0.44370948123993414, -0.3737623301237537, -0.3289419554376134,
-0.3015901192825927, -0.27886955210976394, -0.2610330364394895,
-0.24683762737485004, -0.2352367901734358, -0.22556025036465477,
-0.21732743081418326, -0.21022652897674, -0.20402136092856105,
-0.1985495473549066, -0.1936810575897452, -0.18930105997413604,
-0.185352433459413, -0.18174294657136691, -0.17666360246511426},
{-1.2055959550312252, -0.8144769727199702, -0.5668769103227523,
-0.44357452123930863, -0.373655815603227, -0.32885392214253706,
-0.30151667939167015, -0.27880114170728376, -0.26097154173976533,
-0.24678156084407243, -0.23518504766164194, -0.2255120195866842,
-0.21728211449671986, -0.21018367119407877, -0.20398060766833703,
-0.19851061590748742, -0.1936437199860701, -0.18926513284719126,
-0.1853177602537721, -0.18170940033840366, -0.17663209545288394},
{-1.2060197552241845, -0.8143148326665715, -0.56669949735204,
-0.44343963843911416, -0.37354937185797454, -0.3287659504948095,
-0.3014432622179819, -0.2787327809092581, -0.26091009231509066,
-0.2467255357506677, -0.2351333433359304, -0.22546382432902567,
-0.21723683149818607, -0.21014084487440488, -0.20393988427929255,
-0.19847171296225352, -0.19360640969335963, -0.18922923197877162,
-0.18528311237382633, -0.18167587859229317, -0.176600613718767},
{-1.2064416521309123, -0.8141523481134274, -0.5665221316533382,
-0.44330483284235067, -0.37344299884526155, -0.3286780404434937,
-0.3013698679614971, -0.27866446967137204, -0.26084868812034046,
-0.2466695520514206, -0.23508167715623585, -0.22541566455463147,
-0.2171915817840817, -0.2100980499850944, -0.20389919073058826,
-0.19843283849020987, -0.19356912668384196, -0.18919335734232012,
-0.18524848979420372, -0.18164238130880372, -0.1765691572061836},
{-1.2068616498954226, -0.8139895206212114, -0.5663448134597656,
-0.4431701044518027, -0.37333669652192614, -0.32859019193755756,
-0.30129649682041637, -0.2785962079491999, -0.26078732911033065,
-0.24661360970334534, -0.23503004908261693, -0.22536754022648386,
-0.21714636532012443, -0.21005528649371064, -0.20385852699148277,
-0.19839399246235745, -0.19353187092991275, -0.18915750891143168,
-0.18521389248952191, -0.1816089084637258, -0.17653772585892047},
{-1.2072797526539316, -0.8138263517452069, -0.5661675430030706,
-0.4430354532698574, -0.37323046484494715, -0.3285024049261476,
-0.301223148991153, -0.2785279956983555, -0.26072601524000194,
-0.2465577086633357, -0.2349784590752657, -0.22531945130771036,
-0.21710118207191376, -0.21001255436778865, -0.2038178930313197,
-0.19835517484975784, -0.19349464240399739, -0.18912168665969253,
-0.18517932043453222, -0.1815754600328845, -0.17650631962101992},
{-1.2076959645349399, -0.8136628430353435, -0.5659903205137526,
-0.442900879298466, -0.37312430377116357, -0.3284146793581524,
-0.3011498246684752, -0.27845983287452425, -0.26066474646433635,
-0.24650184888849558, -0.23492690709427522, -0.22527139776138183,
-0.2170560320052537, -0.2099698535749308, -0.20377728881944956,
-0.1983163856235366, -0.19345744107857565, -0.18908589056076042,
-0.18514477360397397, -0.1815420359922526, -0.17647493843702744},
{-1.2081102896591738, -0.8134989960362217, -0.5658131462208277,
-0.44276638253937883, -0.3730182132572497, -0.3283270151826547,
-0.3010765240453346, -0.27839171943332164, -0.26060352273836607,
-0.24644603033593215, -0.23487539309995453, -0.22522337955074878,
-0.21701091508587567, -0.20992718408281852, -0.2037367143252895,
-0.19827762475484478, -0.19342026692609382, -0.18905012058831439,
-0.18511025197260778, -0.1815086363176921, -0.1764435822516972},
{-1.2085227321396332, -0.813334812287073, -0.565636020352091,
-0.4426319629938792, -0.3729121932600161, -0.32823941234872356,
-0.3010032473129387, -0.27832365533041625, -0.2605423440171888,
-0.24639025296276196, -0.23482391705252348, -0.22517539663902997,
-0.21696583127966007, -0.20988454585919714, -0.2036961695183579,
-0.19823889221497404, -0.19338311991917956, -0.1890143767161323,
-0.1850757555152971, -0.18147526098521438, -0.17641225101026992},
{-1.2089332960816075, -0.8131702933218479, -0.5654589431339814,
-0.4424976206629174, -0.3728062437359073, -0.3281518708053568,
-0.30092999466070336, -0.27825564052155904, -0.26048121025596127,
-0.2463345167262787, -0.23477247891243258, -0.22512744898957737,
-0.21692078055247777, -0.20984193887180114, -0.20365565436813737,
-0.19820018797511318, -0.19334600003039082, -0.18897865891795962,
-0.1850412842069229, -0.1814419099708724, -0.17638094465821963},
{-1.2093419855826575, -0.8130054406691523, -0.565281914791563,
-0.4423633555471892, -0.37270036464153133, -0.3280643905017464,
-0.3008567662763133, -0.27818767496238705, -0.2604201214098507,
-0.24627882158374637, -0.23472107864005087, -0.2250795365657674,
-0.21687576287035526, -0.20979936308852376, -0.20361516884427733,
-0.19816151200665466, -0.19330890723238858, -0.1889429671676499,
-0.18500683802242546, -0.1814085832508021, -0.176349663141534},
{-1.2097488047326517, -0.8128402558523213, -0.5651049355486749,
-0.442229167646938, -0.37259455593328805, -0.3279769713867937,
-0.3007835623460633, -0.27811975860868343, -0.26035907743420217,
-0.24622316749251794, -0.23466971619582222, -0.2250316593310162,
-0.216830778199252, -0.20975681847714522, -0.2035747129164478,
-0.19812286428096848, -0.1932718414978727, -0.18890730143910606,
-0.18497241693675903, -0.18137528080111553, -0.17631840640646623},
{-1.2101537576137533, -0.8126747403893502, -0.5649280056277288,
-0.44209505696213447, -0.3724888175674206, -0.32788961340955414,
-0.3007103830541831, -0.27805189141617004, -0.2602980782842199,
-0.2461675544100359, -0.2346183915402953, -0.22498381724884542,
-0.2167858265052529, -0.20971430500567, -0.2035342865543226,
-0.19808424476944775, -0.1932348027996269, -0.1888716617062811,
-0.18493802092497424, -0.18134200259798638, -0.17628717439960373},
{-1.2105568483004752, -0.8125088957930421, -0.5647511252499244,
-0.441961023492349, -0.372383149500387, -0.327802316519223,
-0.3006372285833665, -0.2779840733405876, -0.26023712391531206,
-0.24611198229372278, -0.23456710463404784, -0.22493601028281263,
-0.21674090775450972, -0.2096718226420753, -0.20349388972774607,
-0.19804565344360459, -0.19319779111036972, -0.18883604794312436,
-0.1849036499621055, -0.18130874861771828, -0.17625596706800062},
{-1.2109580808596467, -0.8123427235709004, -0.5645742946351787,
-0.44182706723689735, -0.37227755168826926, -0.32771508066477306,
-0.3005640991146268, -0.27791630433774483, -0.2601762142828914,
-0.24605645110116248, -0.23451585543775577, -0.22488823839650096,
-0.21669602191314508, -0.2096293713543922, -0.20345352240649195,
-0.19800709027496, -0.19316080640299282, -0.1888004601236568,
-0.18486930402326474, -0.18127551883648874, -0.17622478435897815},
{-1.2113574593504128, -0.812176225225186, -0.5643975140020676,
-0.44169318819478076, -0.37217202408724037, -0.32762790579547807,
-0.3004909948272918, -0.27784858436347704, -0.26011534934253233,
-0.2460009607899889, -0.23446464391216582, -0.2248405015536994,
-0.21665116894747238, -0.20958695111075087, -0.2034131845605196,
-0.19796855523511026, -0.19312384865037213, -0.18876489822206444,
-0.18483498308364932, -0.18124231323078432, -0.17619362622040846},
{-1.2117549878243112, -0.8120094022529046, -0.5642207835678514,
-0.44155938636446446, -0.37206656665330484, -0.32754079186020535,
-0.30041791589908806, -0.27778091337355826, -0.26005452904963966,
-0.2459455113177902, -0.23441347001791457, -0.22479279971803523,
-0.21660634882369112, -0.209544561879224, -0.2033728761597271,
-0.197930048295629, -0.19308691782544485, -0.1887293622123165,
-0.18480068711841224, -0.18120913177680986, -0.17616249260030892},
{-1.2121506703252118, -0.8118422561458741, -0.5640441035485918,
-0.44142566174438425, -0.3719611793424229, -0.3274537388081189,
-0.30034486250613424, -0.2777132913238842, -0.25999375335986996,
-0.24589010264237277, -0.2343623337159284, -0.22474513285334785,
-0.21656156150822992, -0.20950220362807825, -0.20333259717420837,
-0.19789156942824793, -0.19305001390118637, -0.18869385206867828,
-0.18476641610283884, -0.1811759744511181, -0.1761313834472651},
{-1.2125445108893584, -0.8116747883906719, -0.5638674741589773,
-0.4412920143323761, -0.37185586211057786, -0.32736674658840403,
-0.3002718348228002, -0.2776457181702541, -0.2599330222288565,
-0.2458347347214611, -0.23431123496705664, -0.22469750092357166,
-0.2165168069674206, -0.20945987632553642, -0.2032923475739734,
-0.197853118604695, -0.19301313685067623, -0.18865836776544342,
-0.18473217001221354, -0.1811428412300684, -0.176100298710256},
{-1.2129365135453858, -0.811507000468715, -0.5636908956125648,
-0.44115844412612204, -0.371750614913519, -0.3272798151501457,
-0.3001988330218952, -0.2775781938686499, -0.2598723356123045,
-0.24577940751296445, -0.23426017373229135, -0.22464990389257844,
-0.21647208516776595, -0.20941757993992338, -0.2032521273291772,
-0.19781469579679367, -0.19297628664696465, -0.188622909276853,
-0.18469794882189872, -0.1811097320901922, -0.17606923833859112},
{-1.2133266823143205, -0.8113388938562, -0.5635143681215216,
-0.4410249511229615, -0.3716454377070484, -0.3271929444425561,
-0.30012585727455976, -0.27751071837490615, -0.2598116934659751,
-0.24572412097479468, -0.23420914997261955, -0.22460234172436144,
-0.2164273960757932, -0.2093753144396182, -0.20321193641009594,
-0.19777630097630072, -0.19293946326324596, -0.18858747657723507,
-0.18466375250727207, -0.18107664700806403, -0.1760382022819822},
{-1.2137150212096166, -0.8111704700241884, -0.563337891896822,
-0.44089153531978853, -0.37154033044681967, -0.3271061344146471,
-0.30005290775049565, -0.2774432916449483, -0.25975109574567723,
-0.2456688750648719, -0.2341581636490282, -0.22455481438295455,
-0.21638273965798516, -0.20933307979292204, -0.20317177478691462,
-0.19773793411515506, -0.19290266667260614, -0.18855206964095372,
-0.18462958104378702, -0.18104358596020553, -0.1760071904905458},
{-1.2141015342370984, -0.8110017304385747, -0.563161467148175,
-0.4407581967133465, -0.37143529308841017, -0.3270193850155785,
-0.2999799846177391, -0.2773759136347791, -0.259690542407258,
-0.2456136697413398, -0.23410721472271012, -0.22450732183250577,
-0.21633811588099916, -0.20929087596837137, -0.20313164242997006,
-0.19769959518525138, -0.19286589684836986, -0.18851668844249914,
-0.18459543440686232, -0.18101054892322455, -0.1759762029148313},
{-1.2144862253950475, -0.8108326765600693, -0.5629850940840258,
-0.4406249352999476, -0.371330325587542, -0.3269326961946719,
-0.2999070880426924, -0.2773085843003813, -0.25963003340670077,
-0.24555850496220866, -0.2340563031548768, -0.22445986403721951,
-0.2162935247115747, -0.2092487029344705, -0.20309153930966573,
-0.19766128415867712, -0.19282915376383003, -0.18848133295640723,
-0.18456131257216257, -0.18097753587381304, -0.17594523950584984},
{-1.214869098674169, -0.8106633098443292, -0.5628087729116357,
-0.44049175107562466, -0.37122542789948865, -0.3268460679009284,
-0.29983421819018785, -0.2772413035976742, -0.25956956869991377,
-0.2455033806857061, -0.23400542890668086, -0.22441244096120783,
-0.21624896611631628, -0.20920656065972, -0.2030514653963411,
-0.19762300100741248, -0.19279243739223517, -0.1884460031570956,
-0.1845272155151123, -0.18094454678860172, -0.17591430021479737},
{-1.2152501580576236, -0.8104936317418316, -0.5626325038369863,
-0.44035864403615954, -0.3711205999797935, -0.32675950008374843,
-0.2997613752235737, -0.2771740714827873, -0.2595091482430132,
-0.2454482968701266, -0.23395459193956047, -0.22436505256896155,
-0.21620444006210593, -0.2091644491128406, -0.20301142066066613,
-0.1975847457035642, -0.1927557477070867, -0.188410699019268,
-0.18449314321151356, -0.18091158164440735, -0.17588338499350176},
{-1.2156294075210141, -0.8103236436979828, -0.5624562870648491,
-0.440225614176847, -0.371015841783775, -0.3266729926921417,
-0.29968855930468585, -0.27710688791168847, -0.25944877199202865,
-0.24539325347360985, -0.23390379221473245, -0.22431769882470487,
-0.21615994651574977, -0.2091223682623411, -0.20297140507308886,
-0.19754651821925662, -0.19271908468177323, -0.18837542051752743,
-0.1844590956369625, -0.1808786404179228, -0.17585249379408197},
{-1.2160068510324358, -0.8101533471530658, -0.5622801227987463,
-0.44009266149289983, -0.37091115326663515, -0.32658654567539536,
-0.29961577059375966, -0.27703975284042714, -0.2593884399030941,
-0.24533825045467417, -0.23385302969373778, -0.2242703796929033,
-0.21611548544411208, -0.2090803180770442, -0.20293141860427522,
-0.197508318526733, -0.19268244828976933, -0.18834016762654082,
-0.18442507276715192, -0.18084572308596214, -0.1758216265690591},
{-1.2163824925524303, -0.8099827435423155, -0.5621040112410493,
-0.43995978597903995, -0.37080653438376143, -0.32650015898277207,
-0.29954300924946264, -0.2769726662251524, -0.2593281519325119,
-0.24528328777165997, -0.23380230433797178, -0.2242230951380353,
-0.21607105681411154, -0.20903829852563116, -0.20289146122483648,
-0.19747014659823203, -0.19264583850468897, -0.188304940321117,
-0.18439107457787696, -0.18081282962537082, -0.17579078327139586},
{-1.2167563360340665, -0.8098118342959156, -0.5619279525928781,
-0.439826987629767, -0.37070198509016183, -0.326413832563472,
-0.2994702754290357, -0.27690562802192287, -0.2592679080364553,
-0.24522836538309, -0.23375161610903006, -0.22417584512467936,
-0.21602666059280562, -0.2089963095769376, -0.2028515329056051,
-0.19743200240605518, -0.19260925530001405, -0.18826973857595863,
-0.1843571010449434, -0.180779960013, -0.17575996385444004},
{-1.2171283854228832, -0.8096406208389513, -0.561751947054099,
-0.4396942664393383, -0.3705975053410133, -0.3263275663669156,
-0.29939756928811345, -0.276838638186905, -0.259207708171288,
-0.24517348324750143, -0.2337009649685644, -0.22412862961745117,
-0.21598229674727176, -0.20895435119984995, -0.20281163361730536,
-0.19739388592257057, -0.1925726986494547, -0.18823456236599156,
-0.1843231521442903, -0.18074711422586853, -0.1757291682719051},
{-1.2174986446569487, -0.8094691045915123, -0.5615759948234945,
-0.4395616224015074, -0.3704930950913219, -0.3262413603421659,
-0.2993248909810302, -0.27677169667623747, -0.2591475522933542,
-0.245118641323542, -0.23365035087816355, -0.2240814485809972,
-0.21593796524458275, -0.2089124233632227, -0.20277176333086833,
-0.19735579712017826, -0.19253616852670863, -0.18819941166605147,
-0.18428922785177249, -0.1807142922408853, -0.17569839647794283},
{-1.2178671176668445, -0.8092972869686493, -0.56140009609855,
-0.43942905550998923, -0.37038875429600093, -0.32615521443856665,
-0.29925224066048917, -0.2767048034460964, -0.2590874403590877,
-0.24506383956985456, -0.233599773799553, -0.2240343019800899,
-0.21589366605184002, -0.20887052603598733, -0.20273192201711576,
-0.19731773597127833, -0.19249966490544512, -0.188164286451052,
-0.18425532814337453, -0.1806814940349606, -0.17566764842705385},
{-1.2182338083756843, -0.8091251693804016, -0.561224251075616,
-0.4392965657579643, -0.37028448291010907, -0.3260691286055597,
-0.29917961847776464, -0.27663795845265327, -0.2590273723249421,
-0.2450090779451919, -0.23354923369458747, -0.2239871897795349,
-0.21584939913632195, -0.2088286591872437, -0.2026921096470986,
-0.19727970244848558, -0.19246318775952176, -0.1881291866960122,
-0.18422145299505965, -0.18064871958520956, -0.17563692407418952},
{-1.2185987206991222, -0.8089527532318249, -0.5610484599498408,
-0.4391641531384678, -0.37018028088831967, -0.32598310279231946,
-0.2991070245826051, -0.27657116165216866, -0.258967348147519,
-0.24495435640839358, -0.23349873052512593, -0.22394011194418528,
-0.21580516446528564, -0.20878682278597904, -0.20265232619184737,
-0.19724169652426116, -0.1924267370627155, -0.18809411237593543,
-0.1841876023829383, -0.18061596886866726, -0.17560622337470644},
{-1.2189618585453754, -0.8087800399229768, -0.5608727229152335,
-0.43903181764425114, -0.37007614818556456, -0.32589713694839406,
-0.29903445912328785, -0.2765044130008585, -0.2589073677833824,
-0.24489967491830544, -0.23344826425304754, -0.22389306843903278,
-0.2157609620061045, -0.2087450168013354, -0.20261257162236812,
-0.1972037181712436, -0.1923903127889468, -0.18805906346587742,
-0.1841537762830856, -0.18058324186250574, -0.17557554628425076},
{-1.2193232258152111, -0.8086070308489806, -0.5606970401645707,
-0.43889955926762647, -0.36997208475654464, -0.32581123102296905,
-0.2989619222469251, -0.2764377124550035, -0.25884743118920106,
-0.24484503343385722, -0.23339783484030718, -0.22384605922902856,
-0.21571679172606917, -0.20870324120242567, -0.2025728459099514,
-0.19716576736211988, -0.19235391491210163, -0.1880240399409696,
-0.1841199746716511, -0.18055053854378467, -0.17554489275899887},
{-1.2196828264019794, -0.8084337273999236, -0.5605214118895054,
-0.43876737800077736, -0.3698680905558316, -0.3257253849654056,
-0.29888941409891356, -0.27637105997086975, -0.258787538321652,
-0.24479043191409988, -0.23334744224899562, -0.22379908427924589,
-0.21567265359266874, -0.20866149595852246, -0.20253314902568365,
-0.19712784406953365, -0.19231754340625606, -0.18798904177639608,
-0.18408619752488442, -0.1805178588896874, -0.17551426275540538},
{-1.2200406641916397, -0.8082601309610855, -0.5603458382805364,
-0.43863527383551737, -0.3697641655382615, -0.32563959872528936,
-0.29881693482331384, -0.2763044555047762, -0.2587276891375083,
-0.24473587031802113, -0.23329708644118208, -0.2237521435547991,
-0.21562854757332794, -0.20861978103882306, -0.20249348094085562,
-0.19708994826624937, -0.19228119824529255, -0.18795406894730515,
-0.18405244481888805, -0.18048520287746217, -0.17548365623034456},
{-1.2203967430627076, -0.8080862429126812, -0.5601703195269662,
-0.4385032467633527, -0.36966030965820074, -0.3255538722518525,
-0.29874448456274183, -0.27623789901303764, -0.2586678835935903,
-0.24468134860479895, -0.2332467673790659, -0.22370523702093092,
-0.2155844736356456, -0.20857809641269687, -0.20245384162678692,
-0.19705207992510854, -0.19224487940338664, -0.18791912142904543,
-0.18401871653012813, -0.18045257048431962, -0.17545307314111902},
{-1.220751066886328, -0.807912064630113, -0.5599948558170113,
-0.43837129677563336, -0.3695565228702893, -0.3254682054947602,
-0.2986720634584459, -0.276171390452036, -0.25860812164681835,
-0.2446268667336251, -0.23319648502489843, -0.2236583646429391,
-0.21554043174725734, -0.2085364420495639, -0.20241423105492617,
-0.1970142390189431, -0.1922085868546799, -0.18788419919689647,
-0.18398501263487543, -0.18041996168759677, -0.17542251344532267},
{-1.2211036395262562, -0.8077375974838261, -0.5598194473376695,
-0.4382394238632109, -0.36945280512891143, -0.3253825984032417,
-0.29859967165035717, -0.27610492977808954, -0.2585484032540606,
-0.24457242466373552, -0.23314623934093026, -0.22361152638608783,
-0.21549642187568896, -0.20849481791877555, -0.20237464919663117,
-0.19697642552059969, -0.19217232057331235, -0.18784930222614715,
-0.18395133310948752, -0.18038737646451763, -0.17539197710095267},
{-1.2214544648388785, -0.8075628428394299, -0.5596440942748494,
-0.4381076280168955, -0.3693491563884628, -0.3252970509268287,
-0.2985273092770222, -0.2760385169476589, -0.2584887283722903,
-0.2445180223544685, -0.23309603028952575, -0.22356472221576396,
-0.21545244398873842, -0.20845322398985044, -0.20233509602335964,
-0.19693863940304324, -0.19213608053351283, -0.18781443049224134,
-0.1839176779304006, -0.1803548147924059, -0.17536146406640807},
{-1.2218035466732338, -0.8073878020576338, -0.5594687968133201,
-0.43797590922702734, -0.3692455766034457, -0.32521156301514154,
-0.29845497647544184, -0.2759721519170999, -0.2584290969586027,
-0.2444636597652179, -0.23304585783311005, -0.223517952097537,
-0.21540849805407336, -0.20841166023231605, -0.20229557150669542,
-0.19690088063931555, -0.1920998667095979, -0.18777958397067596,
-0.18388404707407902, -0.18032227664863876, -0.17533097430047695},
{-1.2221508888709893, -0.8072124764942925, -0.5592935551367312,
-0.43784426748378347, -0.36914206572799335, -0.32512613461762085,
-0.29838267338144164, -0.27590583464290996, -0.2583695089700775,
-0.24440933685542454, -0.2329957219342127, -0.22347121599684305,
-0.21536458403955838, -0.20837012661580623, -0.20225607561823877,
-0.19686314920241132, -0.19206367907584476, -0.1877447626369062,
-0.18385044051713706, -0.1802897620106214, -0.17530050776225448},
{-1.2224964952664772, -0.8070368675004362, -0.5591183694275783,
-0.4377127027770813, -0.3690386237164438, -0.32504076568391693,
-0.29831040012932, -0.2758395650814771, -0.2583099643638609,
-0.2443550535845982, -0.23294562255538698, -0.22342451387934292,
-0.21532070191301278, -0.2083286231099879, -0.20221660832964705,
-0.19682544506540345, -0.19202751760668835, -0.18770996646644122,
-0.18381685823606309, -0.18025727085579923, -0.17527006441114756},
{-1.222840369686734, -0.8068609764222681, -0.5589432398672562,
-0.4375812150963785, -0.3689352505229637, -0.32495545616343335,
-0.2982381568522545, -0.27577334318934943, -0.2582504630971403,
-0.24430080991233272, -0.23289555965917175, -0.22337784571063968,
-0.21527685164233246, -0.20828714968450202, -0.20217716961257381,
-0.19678776820146604, -0.19199138227656576, -0.18767519543491828,
-0.18378330020753375, -0.18022480316155232, -0.1752396442070221},
{-1.2231825159514236, -0.8066848046011477, -0.558768166636065,
-0.43744980443113135, -0.3688319461016685, -0.32487020600577665,
-0.2981659436820281, -0.27570716892298375, -0.25819100512715076,
-0.24424660579828084, -0.23284553320830326, -0.22333121145650625,
-0.2152330331954433, -0.2082457063091454, -0.20213775943879853,
-0.1967501185837548, -0.19195527305992366, -0.18764044951796288,
-0.18374976640814777, -0.18019235890534957, -0.17520924711000774},
{-1.2235229378729522, -0.8065083533736803, -0.5585931499131545,
-0.43731847077033226, -0.3687287104068617, -0.32478501516073854,
-0.29809376074900285, -0.27564104223894725, -0.2581315904112915,
-0.24419244120213723, -0.23279554316558682, -0.22328461108276954,
-0.21518924654043636, -0.20820429295378085, -0.20209837778015105,
-0.19671249618557507, -0.19191918993136725, -0.18760572869133996,
-0.18371625681471082, -0.18015993806474095, -0.17517887308068292},
{-1.2238616392564035, -0.8063316240716769, -0.558418189876623,
-0.4371872141027585, -0.368625543392366, -0.32469988357777235,
-0.2980216081822633, -0.27557496309375296, -0.2580722189068505,
-0.24413831608370873, -0.2327455894937207, -0.2232380445551887,
-0.21514549164526664, -0.20816290958828443, -0.2020590246084224,
-0.19667490098010587, -0.19188313286543912, -0.18757103293065747,
-0.18368277140390754, -0.18012754061724, -0.1751485220797766},
{-1.22419862389957, -0.8061546180221684, -0.5582432867034498,
-0.43705603441701535, -0.3685224450123361, -0.32461481120672486,
-0.2979494861096077, -0.2755089314440309, -0.25801289057130616,
-0.24408423040285587, -0.23269567215572362, -0.22319151183987462,
-0.2151017684781158, -0.20812155618264838, -0.20201969989560964,
-0.19663733294082553, -0.19184710183685483, -0.18753636221182468,
-0.18364931015264752, -0.18009516654053281, -0.17511819406849138},
{-1.2245338955929974, -0.8059773365474372, -0.5580684405695031,
-0.43692493170121005, -0.36841941522067145, -0.32452979799709447,
-0.29787739465764984, -0.2754429472463329, -0.2579536053620868,
-0.24403018411940924, -0.23264579111442063, -0.22314501290271882,
-0.215058077007104, -0.20808023270681497, -0.20198040361365965,
-0.1965997920410083, -0.19181109682026576, -0.18750171651064051,
-0.18361587303778748, -0.18006281581213623, -0.17508788900830674},
{-1.2248674581199421, -0.8057997809650472, -0.5578936516496101,
-0.43679390594347867, -0.36831645397124846, -0.32444484389862027,
-0.2978053339515878, -0.2753770104572737, -0.2578943632366979,
-0.24397617719347608, -0.23259594633287395, -0.2230985477098073,
-0.21501441720043224, -0.20803893913085236, -0.20194113573457217,
-0.19656227825411898, -0.19177511779042677, -0.1874670958029787,
-0.18358246003619638, -0.18003048840963842, -0.17505760686093885},
{-1.2251993152564395, -0.8056219525877927, -0.5577189201174464,
-0.4366629571314542, -0.3682135612181343, -0.3243599488611588,
-0.2977333041153907, -0.2753111210335233, -0.25783516415276253,
-0.24392220958499689, -0.232546137774162, -0.22305211622727783,
-0.21497078902634636, -0.2079976754249433, -0.20190189623036803,
-0.19652479155369096, -0.19173916472217845, -0.18743250006482204,
-0.18354907112485597, -0.17999818431082182, -0.175027347588544},
{-1.2255294707712343, -0.8054438527238175, -0.5575442461457071,
-0.4365320852526484, -0.3681107369149692, -0.32427511283431865,
-0.29766130527173296, -0.27524527893174544, -0.25777600806790524,
-0.24386828125411886, -0.2324963654014156, -0.22300571842131567,
-0.21492719245318614, -0.2079564415592665, -0.20186268507326965,
-0.1964873319132523, -0.19170323759035846, -0.18739792927209487,
-0.18351570628078417, -0.17996590349339203, -0.1749971111534394},
{-1.2258579284258695, -0.8052654826765292, -0.5573696299059141,
-0.43640129029434194, -0.3680079810156429, -0.32419033576806777,
-0.29758933754200734, -0.2751794841086217, -0.2577168949398061,
-0.2438143921610214, -0.2324466291778775, -0.22295935425823554,
-0.2148836274492989, -0.2079152375040867, -0.20182350223541312,
-0.19644989930643253, -0.1916673363698853, -0.18736338340085856,
-0.18348236548104802, -0.17993364593515504, -0.174966897518265},
{-1.226184691974687, -0.8050868437446914, -0.5571950715686189,
-0.43627057224337706, -0.36790529347388623, -0.3241056176120283,
-0.29751740104654334, -0.2751137365209051, -0.2576578247262027,
-0.24376054226596722, -0.23239692906675558, -0.22291302370434596,
-0.21484009398307102, -0.20787406322967783, -0.20178434768903908,
-0.1964124937068159, -0.19163146103572348, -0.18732886242716806,
-0.18344904870278866, -0.17990141161389417, -0.17493670664598282},
{-1.2265097651647776, -0.8049079372223693, -0.5570205713031966,
-0.43613993108655214, -0.36780267424331536, -0.32402095831604116,
-0.29744549590427805, -0.27504803612530915, -0.25759879738484215,
-0.2437067315292465, -0.23234726503141934, -0.22286672672604424,
-0.21479659202299395, -0.20783291870642584, -0.20174522140641837,
-0.19637511508812966, -0.1915956115628621, -0.18729436632721597,
-0.1834157559231504, -0.17986920050741095, -0.1749065384997026},
{-1.2268331517360496, -0.8047287643989887, -0.5568461292780816,
-0.4360093668102596, -0.36770012327777946, -0.32393635783011354,
-0.29737362223293284, -0.274982382878564, -0.2575398128735553,
-0.24365295991121272, -0.23229763703529205, -0.2228204632897932,
-0.214753121537558, -0.20779180390480434, -0.2017061233598123,
-0.19633776342415055, -0.19155978792636308, -0.1872598950771267,
-0.18338248711930993, -0.17983701259363927, -0.1748763930429016},
{-1.2271548554212328, -0.8045493265593747, -0.5566717456605985,
-0.4358788794007604, -0.3675976405307311, -0.32385181610398495,
-0.2973017801490099, -0.2749167767375613, -0.2574808711502785,
-0.24359922737236994, -0.23224804504180918, -0.22277423336210478,
-0.21470968249538713, -0.20775071879532359, -0.20166705352180547,
-0.1963004386886913, -0.19152399010134502, -0.18722544865318458,
-0.1833492422685956, -0.17980484785056605, -0.17484627023932497},
{-1.2274748799458741, -0.80436962498369, -0.5564974206170347,
-0.4357484688440114, -0.3674952259558748, -0.32376733308776817,
-0.2972299697677836, -0.27485121765901877, -0.2574219721729072,
-0.24354553387317934, -0.23219848901459983, -0.2227280369096336,
-0.21466627486503742, -0.20770966334855334, -0.2016280118646523,
-0.19626314085555774, -0.19148821806297156, -0.18719102703157642,
-0.18331602134825098, -0.17977270625619668, -0.17481617005284078},
{-1.2277932290283475, -0.8041896609475212, -0.5563231543126425,
-0.4356181351256765, -0.36739287950669985, -0.32368290873116257,
-0.29715819120347997, -0.2747857055998788, -0.25736311589942296,
-0.2434918793742158, -0.2321489689171421, -0.22268187389900573,
-0.21462289861526207, -0.20766863753508025, -0.2015889983610264,
-0.19622586989872093, -0.1914524717864381, -0.1871566301887202,
-0.183282824335659, -0.1797405877885121, -0.17478609244761478},
{-1.2281099063798582, -0.8040094357218417, -0.5561489469115987,
-0.43548787823127233, -0.36729060113666456, -0.323598542984183,
-0.29708644456901245, -0.2747202405169389, -0.25730430228787027,
-0.2434382638361412, -0.23209948471317543, -0.2226357442968936,
-0.2145795537146904, -0.20762764132562106, -0.20155001298331054,
-0.196188625792044, -0.19141675124700797, -0.18712225810091465,
-0.18324965120822534, -0.17970849242553144, -0.1747560373880277},
{-1.228424915704513, -0.8038289505730918, -0.5559747985771005,
-0.43535769814595904, -0.36718839079940047, -0.3235142357969769,
-0.29701472997606837, -0.274654822367127, -0.25724553129631955,
-0.2433846872196006, -0.23205003636641952, -0.2225896480701144,
-0.21453624013217065, -0.20758667469092762, -0.20151105570420014,
-0.1961514085096303, -0.19138105641990522, -0.18708791074461395,
-0.1832165019433405, -0.17967642014548546, -0.17472600483870027},
{-1.2287382606992316, -0.8036482067631234, -0.5558007094712857,
-0.4352275948547666, -0.36708624844818094, -0.32342998711937354,
-0.2969430475352366, -0.2745894511073661, -0.2571868028828963,
-0.2433311494854251, -0.23200062384066666, -0.22254358518551132,
-0.21449295783652822, -0.20754573760185147, -0.2014721264963546,
-0.19611421802547557, -0.1913453872805757, -0.1870535880962878,
-0.18318337651860017, -0.17964437092645658, -0.1746959947644482},
{-1.2290499450538475, -0.8034672055492632, -0.5556266797553163,
-0.43509756834248425, -0.36698417403653827, -0.32334579690163046,
-0.2968713973558632, -0.27452412669461945, -0.25712811700581617,
-0.24327765059446027, -0.23195124709982573, -0.22249755561003015,
-0.2144497067966753, -0.20750483002928655, -0.20143322533250374,
-0.19607705431371425, -0.19130974380438337, -0.18701929013244611,
-0.18315027491145863, -0.17961234474672727, -0.1746660071302668},
{-1.2293599724510496, -0.8032859481843051, -0.5554527095892476,
-0.4349676185934668, -0.36688216751772296, -0.3232616650936242,
-0.2967997795462982, -0.27445884908589346, -0.2570694736232506,
-0.24322419050751765, -0.23190190610775474, -0.2224515593105949,
-0.21440648698151943, -0.20746395194412082, -0.2013943521853958,
-0.196039917348505, -0.1912741259667432, -0.18698501682964164,
-0.18311719709955843, -0.17958034158448166, -0.1746360419013817},
{-1.229668346566451, -0.8031044359165282, -0.5552787991322152,
-0.4348377455921435, -0.3667802288450879, -0.3231775916454527,
-0.2967281942136706, -0.2743936182381308, -0.25701087269350253,
-0.2431707691856313, -0.23185260082848647, -0.22240559625420242,
-0.21436329836009183, -0.2074231033174052, -0.2013555070278179,
-0.19600280710399232, -0.1912385337431839, -0.18695076816450817,
-0.18308414306046417, -0.17954836141795805, -0.174606099043229},
{-1.229975071068559, -0.8029226699896963, -0.5551049485422654,
-0.43470794932240975, -0.36667835797206294, -0.3230935765074159,
-0.29665664146388404, -0.2743284341084442, -0.256952314174939,
-0.24311738658979132, -0.23180333122611296, -0.22235966640799876,
-0.2143201409014266, -0.20738228412023108, -0.2013166898326595,
-0.19596572355454023, -0.19120296710921902, -0.1869165441136913,
-0.18305111277187525, -0.17951640422556325, -0.17457617852140261},
{-1.2302801496188107, -0.8027406516431532, -0.5549311579765042,
-0.434578229768142, -0.3665765548517512, -0.32300961962956265,
-0.2965851214017654, -0.27426329665389426, -0.256893798025871,
-0.24306404268112258, -0.23175409726475005, -0.22231376973910488,
-0.21427701457464354, -0.2073414943237295, -0.20127790057291728,
-0.19592866667436826, -0.1911674260404539, -0.18688234465395048,
-0.1830181062115952, -0.17948446998564616, -0.1745462803016662},
{-1.2305835858715566, -0.8025583821117124, -0.5547574275910251,
-0.4344485869129513, -0.3664748194374545, -0.3229257209621901,
-0.29651363413098664, -0.27419820583154797, -0.2568353242048025,
-0.2430107374207624, -0.23170489890860502, -0.22226790621477077,
-0.21423391934892666, -0.20730073389910375, -0.2012391392214783,
-0.1958916364378973, -0.19113191051252176, -0.18684816976194507,
-0.18298512335725103, -0.17945255867662557, -0.1745164043500198},
{-1.230885383474126, -0.8023758626257766, -0.5545837575408985,
-0.4343190207400218, -0.3663731516823434, -0.32284188045532547,
-0.2964421797542398, -0.27413316159858825, -0.2567768926701095,
-0.24295747076987229, -0.23165573612191803, -0.22222207580219733,
-0.2141908551934597, -0.2072600028176017, -0.20120040575144227,
-0.195854632819479, -0.19109642050110898, -0.1868140194145993,
-0.1829521641867986, -0.1794206702768899, -0.17448655063254326},
{-1.231185546066737, -0.8021930944112904, -0.5544101479802154,
-0.43418953123257253, -0.36627155153955915, -0.32275809805924993,
-0.29637075837303395, -0.2740681639121425, -0.25671850338038094,
-0.2429042426898298, -0.2316066088689921, -0.22217627846876908,
-0.21414782207745375, -0.20721930105056963, -0.20116170013581125,
-0.19581765579354204, -0.19106095598191986, -0.18677989358867908,
-0.18291922867799015, -0.17938880476496122, -0.1744567191156583},
{-1.2314840772826319, -0.8020100786897968, -0.5542365990620791,
-0.4340601183734527, -0.3661700189623913, -0.32267437372441865,
-0.2962993700877523, -0.2740032127294225, -0.2566601562942119,
-0.2428510531419028, -0.2315575171143276, -0.22213051418189367,
-0.21410481997032704, -0.20717862856939173, -0.2011230223477869,
-0.19578070533473424, -0.19102551693080705, -0.1867457922611766,
-0.18288631680878886, -0.17935696211943442, -0.1744269097657838},
{-1.2317809807479865, -0.8018268166784545, -0.5540631109386636,
-0.4339307821452898, -0.36606855390377535, -0.3225907074009291,
-0.29622801499767193, -0.2739383080076401, -0.2566018513701849,
-0.24279790208755792, -0.23150846082224952, -0.22208478290887812,
-0.214061848841401, -0.20713798534554595, -0.2010843723604716,
-0.19574378141749338, -0.19099010332357103, -0.18671171540899256,
-0.1828534285571055, -0.17932514231878316, -0.17439712254958772},
{-1.2320762600819875, -0.8016433095899684, -0.5538896837610946,
-0.4338015225306049, -0.36596715631686116, -0.3225070990393173,
-0.29615669320099003, -0.273873449704098, -0.25654358856703174,
-0.24274478948828038, -0.2314594399574179, -0.22203908461739252,
-0.21401890866011164, -0.20709737135056105, -0.20104575014718762,
-0.19570688401651348, -0.1909547151361226, -0.18667766300915822,
-0.1828205639010021, -0.17929334534177732, -0.17436735743395082},
{-1.232369918896793, -0.80145955863276, -0.5537163176795535,
-0.43367233951145345, -0.3658658261547394, -0.32242354858973643,
-0.2960854047950363, -0.2738086377760698, -0.2564853678434338,
-0.24269171530551992, -0.2314104544843152, -0.22199341927496308,
-0.2139759993959447, -0.20705678655600845, -0.2010071556811901,
-0.19567001310643706, -0.19091935234439084, -0.18664363503876502,
-0.1827877228185375, -0.17926157116705688, -0.174337614385762},
{-1.232661960797587, -0.8012755650108074, -0.5535430128432626,
-0.43354323306997444, -0.36576456337024355, -0.32234005600265414,
-0.29601414987584485, -0.2737438721808363, -0.25642718915819396,
-0.2426386795009572, -0.23136150436768999, -0.22194778684916483,
-0.213933121018421, -0.20701623093350996, -0.20096858893575198,
-0.19563316866195501, -0.19088401492434204, -0.18660963147489573,
-0.1827549052877635, -0.17922981977322316, -0.1743078933722717},
{-1.2329523893825507, -0.8010913299238009, -0.5533697694004689,
-0.433414203187825, -0.36566336791665366, -0.3222566212285618,
-0.29594292853848203, -0.2736791528758289, -0.2563690524701736,
-0.24258568203619713, -0.2313125895721897, -0.22190218730768874,
-0.21389027349706113, -0.20697570445477864, -0.20093004988429186,
-0.19559635065789416, -0.1908487028520358, -0.1865756522947417,
-0.18272211128685, -0.17919809113920349, -0.17427819436083536},
{-1.2332412082429198, -0.8009068545671159, -0.5531965874984968,
-0.43328524984660244, -0.3655622397467537, -0.3221732442178056,
-0.2958717408768887, -0.27361447981844855, -0.2563109577382485,
-0.24253272287303806, -0.2312637100626347, -0.22185662061829348,
-0.2138474568015314, -0.20693520709164748, -0.20089153850021746,
-0.1955595590690795, -0.19081341610357394, -0.18654169747550653,
-0.1826893407939556, -0.17916638524374373, -0.17424851731885105},
{-1.2335284209629211, -0.8007221401317641, -0.5530234672836406,
-0.4331563730276673, -0.3654611788135089, -0.3220899249210425,
-0.295800586984027, -0.27354985296606116, -0.25625290492137887,
-0.24247980197319574, -0.23121486580393014, -0.2218110867487535,
-0.213804670901528, -0.20689473881587883, -0.2008530547570737,
-0.19552279387039473, -0.19077815465502046, -0.18650776699442795,
-0.18265659378732435, -0.17913470206580784, -0.17421886221400373},
{-1.2338140311199006, -0.8005371878045264, -0.55285040890135,
-0.4330275727120285, -0.365360185069898, -0.32200666328860894,
-0.29572946695196256, -0.273485272276226, -0.25619489397855033,
-0.2424269192985702, -0.23116605676093416, -0.2217655856669538,
-0.21376191576676185, -0.2068542995994045, -0.20081459862831097,
-0.19548605503681626, -0.1907429184826932, -0.18647386082887518,
-0.18262387024535198, -0.17910304158432333, -0.17418922901418954},
{-1.2340980422841863, -0.8003519987678519, -0.5526774124960225,
-0.4328988488807346, -0.3652592584686609, -0.3219234592710245,
-0.29565838087162244, -0.2734207377063569, -0.256136924868811,
-0.2423740748110652, -0.23111728289863853, -0.2217201173407548,
-0.21371919136699224, -0.20681388941411072, -0.2007761700875108,
-0.19544934254327173, -0.19070770756269972, -0.18643997895615838,
-0.18259117014628568, -0.1790714037781258, -0.17415961768734922},
{-1.2343804580192281, -0.8001665741999373, -0.5525044782111602,
-0.43277020151434287, -0.36515839896286506, -0.3218403128190377,
-0.29558732883284944, -0.27335624921402624, -0.2560789975512827,
-0.24232126847262592, -0.23106854418206857, -0.22167468173813654,
-0.21367649767199626, -0.20677350823206941, -0.20073776910828922,
-0.19541265636486282, -0.19067252187136519, -0.18640612135369916,
-0.1825584934685167, -0.1790397886264279, -0.17413002820169776},
{-1.2346612818815446, -0.7999809152747793, -0.5523316061893743,
-0.43264163059340377, -0.36505760650522934, -0.3217572238831201,
-0.29551631092455266, -0.2732918067568557, -0.2560211119851523,
-0.2422685002453322, -0.23101984057641167, -0.22162927882712102,
-0.21363383465176433, -0.20673315602536735, -0.20069939566440986,
-0.19537599647672366, -0.1906373613850756, -0.18637228799901484,
-0.18252584019053897, -0.17900819610828345, -0.17410046052564754},
{-1.2349405174207426, -0.7997950231620757, -0.5521587965722814,
-0.43251313609823905, -0.36495688104860746, -0.321674192414072,
-0.29544532723459493, -0.2732274102923766, -0.25596326812961867,
-0.24221577009122552, -0.23097117204684636, -0.22158390857581045,
-0.21359120227612038, -0.20669283276612194, -0.2006610497294794,
-0.1953393628539457, -0.1906022260801381, -0.18633847886957589,
-0.18249321029080412, -0.17897662620282162, -0.17407091462760715},
{-1.2352181681795393, -0.799608899027374, -0.5519860495006139,
-0.43238471800881384, -0.3648562225457932, -0.32159121836236304,
-0.29537437785003395, -0.273163059778301, -0.25590546594399544,
-0.24216307797253322, -0.23092253855856115, -0.22153857095235563,
-0.21354860051512659, -0.20665253842648856, -0.2006227312774409,
-0.19530275547182052, -0.19056711593310816, -0.18630469394295046,
-0.18246060374784667, -0.17894507888924083, -0.1740413904764102},
{-1.2354942376937286, -0.7994225440319338, -0.5518133651141188,
-0.4322563763050655, -0.3647556309494775, -0.32150830167873967,
-0.2953034628568245, -0.2730987551723201, -0.2558477053875845,
-0.24211042385145554, -0.2308739400768729, -0.2214932659248534,
-0.21350602933871388, -0.20661227297875007, -0.20058444028195188,
-0.19526617430554816, -0.19053203092039794, -0.18627093319679378,
-0.18242802054029972, -0.17891355414675036, -0.17401188804094891},
{-1.2357687294922928, -0.799235959332929, -0.5516407435516918,
-0.43212811096662085, -0.36465510621264197, -0.3214254423140921,
-0.29523258233987093, -0.2730344964321316, -0.2557899864198314,
-0.24205780769023133, -0.23082537656720348, -0.22144799346158717,
-0.21346348871701837, -0.20657203639519062, -0.2005461767169867,
-0.19522961933048366, -0.19049697101851804, -0.18623719660874083,
-0.18239546064674128, -0.17888205195478246, -0.1739824072903351},
{-1.2360416470973026, -0.7990491460832854, -0.551468184951291,
-0.4319999219729096, -0.36455464828778017, -0.32134264021896497,
-0.2951617363831469, -0.2729702835155281, -0.2557323090001504,
-0.24200522945118363, -0.23077684799494635, -0.2214027535309231,
-0.21342097862015574, -0.20653182864816055, -0.20050794055645937,
-0.1951930905219892, -0.19046193620409135, -0.1862034841564255,
-0.18236292404585108, -0.1788505722924827, -0.1739529481937807},
{-1.2363129940239905, -0.7988621054318412, -0.5512956894499441,
-0.4318718093032814, -0.3644542571277316, -0.321259895344409,
-0.2950909250697413, -0.27290611638028905, -0.2556746730880941,
-0.24195268909679424, -0.2307283543256784, -0.22135754610113434,
-0.21337849901832895, -0.20649164971013811, -0.20046973177440064,
-0.19515658785547862, -0.19042692645375792, -0.18616979581768311,
-0.18233041071639433, -0.17881911513942517, -0.17392351072080636},
{-1.2365827737807367, -0.7986748385232398, -0.5511232571837863,
-0.43174377293662713, -0.3643539326851222, -0.3211772076410131,
-0.2950201484817949, -0.2728419949843124, -0.2556170786432228,
-0.24190018658943924, -0.23067989552485324, -0.22131237114069147,
-0.21333604988172672, -0.20645149955355913, -0.20043155034479643,
-0.19512011130644957, -0.19039194174417884, -0.18613613157026832,
-0.182297920637152, -0.1787876804749351, -0.17389409484101392},
{-1.2368509898690982, -0.7984873464980375, -0.5509508882880663,
-0.4316158128519654, -0.36425367491260285, -0.3210945770596767,
-0.2949494067005236, -0.2727779192854256, -0.25555952562514306,
-0.24184772189167036, -0.23063147155815922, -0.2212672286179853,
-0.2132936311806919, -0.20641137815089405, -0.20039339624173147,
-0.1950836608503188, -0.19035698205208496, -0.1861024913920688,
-0.18226545378691328, -0.1787562682785, -0.17386470052440317},
{-1.2371176457838033, -0.7982996304926425, -0.5507785828970959,
-0.4314879290278597, -0.3641534837630107, -0.32101200355142745,
-0.2948786998061004, -0.27271388924157924, -0.2555020139935913,
-0.24179529496605623, -0.23058308239135705, -0.22122211850163032,
-0.2132512428854869, -0.2063712854747919, -0.2003552694393973,
-0.19504723646279842, -0.19032204735426794, -0.18606887526090543,
-0.1822330101445213, -0.1787248785297162, -0.17383532774091393},
{-1.237382745012774, -0.79811169163944, -0.5506063411443609,
-0.4313601214427971, -0.36405335918877646, -0.3209294870671089,
-0.29480802787785065, -0.27264990481078155, -0.25544454370832215,
-0.24174290577523272, -0.2305347279901282, -0.22117704076010858,
-0.21320888496659296, -0.20633122149792915, -0.20031716991199655,
-0.19501083811944753, -0.19028713762757077, -0.18603528315480555,
-0.18220058968900443, -0.1786935112081387, -0.17380597646082907},
{-1.2376462910371036, -0.797923531066674, -0.5504341631624,
-0.4312323900750894, -0.36395330114264457, -0.32084702755773264,
-0.2947373909941109, -0.2725859659510075, -0.25538711472914155,
-0.24169055428190656, -0.23048640832034994, -0.22113199536213246,
-0.21316655739445478, -0.2062911861929464, -0.20027909763379537,
-0.19497446579590916, -0.19025225284887148, -0.18600171505170393,
-0.18216819239922866, -0.1786621662933996, -0.17377664665465042},
{-1.2379082873311682, -0.797735149898577, -0.5502620490828577,
-0.43110473490271106, -0.36385330957712214, -0.3207646249741547,
-0.2946667892324417, -0.27252207262029216, -0.2553297270159036,
-0.2416382404487789, -0.2304381233478876, -0.22108698227634216,
-0.21312426013952734, -0.20625117953261718, -0.2002410525790732,
-0.1949381194679023, -0.1902173929951141, -0.1859681709296941,
-0.18213581825431135, -0.178630843765196, -0.1737473382929371},
{-1.2381687373624812, -0.7975465492552842, -0.5500899990365402,
-0.43097715590365127, -0.3637533844447949, -0.3206822792673034,
-0.2945962226694836, -0.2724582247767564, -0.2552723805285386,
-0.24158596423873413, -0.23038987303869196, -0.22104200147147335,
-0.2130819931723975, -0.20621120148973904, -0.20020303472215262,
-0.19490179911121008, -0.19018255804324302, -0.1859346507667441,
-0.18210346723318982, -0.17859954360314867, -0.17371805134656304},
{-1.23842764459184, -0.7973577302529384, -0.5499180131533368,
-0.4308496530555541, -0.3636535256984206, -0.32059999038841647,
-0.29452569138082807, -0.27239442237854794, -0.2552150752271083,
-0.2415337256145771, -0.23034165735886747, -0.22099705291636784,
-0.21303975646368878, -0.20617125203715903, -0.20016504403751867,
-0.19486550470168207, -0.19014774797038148, -0.18590115454112865,
-0.18207113931507313, -0.17856826578721718, -0.1736887857865308},
{-1.2386850124732638, -0.7971686940036796, -0.5497460915623116,
-0.43072222633592494, -0.36355373329035023, -0.3205177582881389,
-0.2944551954413248, -0.2723306653838302, -0.25515781107161617,
-0.24148152453928629, -0.23029347627441488, -0.22095213657979795,
-0.21299754998410547, -0.2061313311478148, -0.2001270804995705,
-0.19482923621512716, -0.1901129627535223, -0.1858676822309555,
-0.1820388344790258, -0.1785370102970325, -0.17365954158411157},
{-1.2389408444540129, -0.7969794416156043, -0.5495742343916407,
-0.4305948757221685, -0.3634540071731793, -0.3204355829175154,
-0.29438473492486184, -0.2722669537508684, -0.2551005880222248,
-0.2414293609758651, -0.23024532975154655, -0.2209072524307618,
-0.2129553737043961, -0.2060914387946906, -0.20008914408288536,
-0.1947929936275259, -0.19007820236985817, -0.18583423381448005,
-0.18200655270435817, -0.17850577711265192, -0.17363031871058432},
{-1.2391951439746673, -0.7967899741928861, -0.5494024417686095,
-0.43046760119126404, -0.3633543472994727, -0.3203534642267851,
-0.29431430990456753, -0.27220328743786815, -0.25504340603907893,
-0.2413772348872889, -0.23019721775644908, -0.22086240043820804,
-0.21291322759532472, -0.20605157495081627, -0.20005123476203734,
-0.19475677691480575, -0.19004346679657402, -0.18580080926993148,
-0.1819742939702822, -0.1784745662138687, -0.1736011171376255},
{-1.2394479144689967, -0.7966002928356608, -0.5492307138196493,
-0.4303404027203226, -0.363254753621592, -0.3202714021659623,
-0.294243920452667, -0.27213966640314147, -0.2549862650824013,
-0.24132514623675938, -0.23014914025539968, -0.22081758057109324,
-0.21287111162777883, -0.20601173958922425, -0.20001335251158037,
-0.19472058605292486, -0.1900087560109196, -0.18576740857572704,
-0.18194205825609444, -0.17844337758061712, -0.1735719368369728},
{-1.2396991593641409, -0.7964103986401735, -0.5490590506703683,
-0.43021328028599326, -0.3631552260923234, -0.32018939668415225,
-0.2941735666403642, -0.27207609060507987, -0.2549291651125627,
-0.24127309498735805, -0.23010109721479144, -0.22077279279853723,
-0.2128290257726686, -0.20597193268315084, -0.1999754973062391,
-0.19468442101811334, -0.189974069990148, -0.185734031710187,
-0.18190984554120693, -0.1784122111930566, -0.1735427777805194},
{-1.239948882080467, -0.7962202926986843, -0.5488874524454734,
-0.43008623386489586, -0.36305576466387657, -0.32010744772879285,
-0.29410324853824465, -0.27201256000206864, -0.25487210608994326,
-0.2412210811023443, -0.2300530886009875, -0.2207280370896325,
-0.21278697000099478, -0.20593215420575017, -0.19993766912068334,
-0.19464828178635196, -0.18993940871170345, -0.18570067865177675,
-0.18187765580487225, -0.17838106703118806, -0.17351363994034008},
{-1.2401970860316998, -0.7960299760995709, -0.5487159192688786,
-0.42995926343354474, -0.3629563692888931, -0.3200255552453124,
-0.29403296621583186, -0.27194907455254924, -0.2548150879748987,
-0.24116910454502327, -0.23000511438052174, -0.22068331341353997,
-0.21274494428376767, -0.20589240413019905, -0.19989986792975944,
-0.19461216833387085, -0.1899047721528544, -0.1856673493789307,
-0.18184548902656106, -0.1783499450751158, -0.17348452328870945},
{-1.2404437746248476, -0.7958394499272993, -0.5485444512636024,
-0.42983236896800947, -0.3628570399197937, -0.3199437191753933,
-0.29396271974210175, -0.271885634215026, -0.2547581107280019,
-0.24111716527872074, -0.22995717451994202, -0.22063862173958015,
-0.21270294859211303, -0.20585268242995336, -0.19986209370825003,
-0.1945760806368677, -0.18987016029116233, -0.1856340438702233,
-0.18181334518595005, -0.17831884530510278, -0.1734554277980913},
{-1.2406889512602675, -0.7956487152624077, -0.5483730485518503,
-0.42970555044444914, -0.3627577765088912, -0.3198619394561757,
-0.2938925091850002, -0.2718222389479892, -0.25470117430973693,
-0.24106526326686328, -0.22990926898582198, -0.22059396203693615,
-0.2126609828972712, -0.2058129890782403, -0.19982434643095215,
-0.19454001867162307, -0.1898355731041117, -0.1856007621042206,
-0.18178122426234644, -0.1782877677013226, -0.17342635344102586},
{-1.2409326193316335, -0.7954577731815657, -0.5482017112549578,
-0.4295788078386864, -0.3626585790088661, -0.3197802160183749,
-0.2938223346116302, -0.27175888871002885, -0.25464427868076234,
-0.2410133984728846, -0.22986139774485248, -0.22054933427497425,
-0.21261904717035174, -0.20577332404851534, -0.19978662607291064,
-0.19450398241444278, -0.1898010105692438, -0.18556750405950684,
-0.18174912623545936, -0.1782567122441585, -0.1733973001903033},
{-1.2411747822259962, -0.7952666247576586, -0.5480304394934967,
-0.4294521411264358, -0.36255944737198487, -0.3196985487836854,
-0.29375219608837977, -0.2716955834597856, -0.2545874238017971,
-0.2409615708603674, -0.2298135607638112, -0.22050473842310847,
-0.21257714138277217, -0.20573368731435449, -0.19974893260914328,
-0.19446797184177944, -0.18976647266415592, -0.18553426971487674,
-0.18171705108491398, -0.1782256789139205, -0.17336826801882443},
{-1.2414154433237476, -0.7950752710596242, -0.5478592333871501,
-0.42932555028328734, -0.3624603815507139, -0.31961693766272026,
-0.29368209368069786, -0.27163232315590236, -0.2545306096335691,
-0.24090978039285904, -0.22976575800951826, -0.22046017445076327,
-0.21253526550581814, -0.2056940788491668, -0.19971126601452838,
-0.1944319869299833, -0.18973195936656628, -0.18550105904896563,
-0.1816849987903244, -0.1781946676910362, -0.17333925689961482},
{-1.2416546059986684, -0.7948837131526387, -0.5476880930548154,
-0.429199035284499, -0.3623613814974922, -0.3195353825513356,
-0.2936120274534191, -0.2715691077570941, -0.2544738361368706,
-0.24085802703399795, -0.22971798944880484, -0.2204156423274699,
-0.21249341951100442, -0.20565449862661778, -0.19967362626437102,
-0.1943960276556238, -0.18969747065413856, -0.18546787204067083,
-0.18165296933146236, -0.1781636785560039, -0.17331026680589856},
{-1.241892273617882, -0.7946919520980071, -0.5475170186144793,
-0.4290725961053299, -0.36226244716458944, -0.3194538833276235,
-0.29354199747057685, -0.2715059372221631, -0.2544171032726228,
-0.2408063107475471, -0.22967025504866956, -0.22037114202273278,
-0.21245160336975455, -0.2056149466203765, -0.1996360133335462,
-0.19436009399510334, -0.18966300650471624, -0.18543470866868583,
-0.1816209626881342, -0.1781327114893103, -0.1732812977111049},
{-1.242128449541954, -0.7944999889532677, -0.5473460101834104,
-0.42894623272075405, -0.36216357850460845, -0.3193724398479094,
-0.2934720037951677, -0.2714428115097933, -0.25436041100172235,
-0.24075463149712428, -0.2296225547760753, -0.22032667350613666,
-0.21240981705364814, -0.20557542280400698, -0.1995984271974658,
-0.19432418592513878, -0.1896285668959492, -0.18540156891194304,
-0.18158897884003977, -0.17810176647168952, -0.17325234958864888},
{-1.2423631371248174, -0.794307824772201, -0.5471750678780591,
-0.42881994510565047, -0.36206477546978855, -0.3192910519418066,
-0.29340204648963564, -0.2713797305789649, -0.2543037592852133,
-0.24070298924671896, -0.229574888598149, -0.22028223674730985,
-0.21236806053432722, -0.20553592715138813, -0.19956086783129345,
-0.19428830342228576, -0.1895941518058648, -0.18536845274941083,
-0.1815570177670902, -0.17807084348372193, -0.17322342241229327},
{-1.2425963397138533, -0.7941154606047751, -0.5470041918140414,
-0.42869373323473936, -0.3619660380125891, -0.3192097194082901,
-0.29333212561554856, -0.27131669438852124, -0.25424714808417836,
-0.24065138396017627, -0.22952725648201477, -0.2202378317160656,
-0.21232633378353305, -0.20549645963629626, -0.19952333521039423,
-0.19425244646325224, -0.18955976121230567, -0.18533536016008023,
-0.1815250794492127, -0.1780399425062078, -0.17319451615586123},
{-1.2428280606498225, -0.7939228974972282, -0.5468333821061238,
-0.4285675970824394, -0.3618673660853251, -0.3191284420095801,
-0.2932622412337891, -0.27125370289735007, -0.2541905773597404,
-0.240599815601376, -0.22947965839492857, -0.2201934583820222,
-0.21228463677295784, -0.20545702023256784, -0.1994858293101034,
-0.19421661502480747, -0.18952539509326893, -0.18530229112288898,
-0.18149316386635306, -0.1780090635199021, -0.17316563079314706},
{-1.2430583032669613, -0.79373013649202, -0.5466626388683427,
-0.42844153662320483, -0.3617687596403092, -0.31904721946650705,
-0.2931923934045424, -0.27119075606446996, -0.25413404707305487,
-0.24054828413436558, -0.2294320943041004, -0.2201491167150389,
-0.21224296947448607, -0.2054176089141615, -0.19944835010581663,
-0.19418080908367497, -0.18949105342678552, -0.18526924561705904,
-0.18146127099849618, -0.17797820650565965, -0.1731367662984189},
{-1.2432870708929094, -0.7935371786279127, -0.5464919622138706,
-0.42831555183119163, -0.36167021863012083, -0.3189660514526962,
-0.29312258218697407, -0.27112785384891747, -0.2540775571854861,
-0.24049678952320264, -0.22938456417700093, -0.22010480668496823,
-0.21220133186000223, -0.20537822565495656, -0.1994108975730673,
-0.1941450286167994, -0.18945673619085523, -0.1852362236216285,
-0.18142940082561232, -0.1779473714444877, -0.1731079226458485},
{-1.2435143668488116, -0.7933440249399647, -0.5463213522551835,
-0.42818964268040194, -0.3615717430069092, -0.31888493758829384,
-0.2930528076397223, -0.2710649962097955, -0.25402110765831676,
-0.24044533173205385, -0.22933706798095943, -0.22006052826166544,
-0.2121597239014854, -0.2053388704290815, -0.1993734716873834,
-0.19410927360098107, -0.18942244336364666, -0.18520322511580334,
-0.18139755332786622, -0.17791655831729347, -0.17307909980980307},
{-1.243740194449244, -0.7931506764595309, -0.546150809103845,
-0.42806380914482345, -0.36147333272309656, -0.3188038774346018,
-0.29298306982056865, -0.2710021831061271, -0.2539646984528958,
-0.2403939107250086, -0.22928960568349077, -0.22001628141511143,
-0.2121181455709784, -0.20529954321052823, -0.19933607242428897,
-0.19407354401319132, -0.18938817492330307, -0.18517025007878773,
-0.1813657284853054, -0.1778857671051628, -0.17305029776478476},
{-1.243964557002287, -0.792957134214263, -0.5459803328707269,
-0.42793805119797623, -0.3613749877310075, -0.31872287048753667,
-0.29291336878669916, -0.2709394144971369, -0.25390832953074316,
-0.240342526466361, -0.22924217725218443, -0.21997206611530506,
-0.21207659684055002, -0.20526024397343612, -0.1992986997595998,
-0.19403783983044853, -0.18935393084801166, -0.1851372984899129,
-0.18133392627812128, -0.1778549977891708, -0.17302151648541608},
{-1.244187457809469, -0.7927633992282153, -0.5458099236658609,
-0.42781236881357243, -0.3612767079829555, -0.3186419161722549,
-0.2928437045944934, -0.27087669034202144, -0.2538520008533427,
-0.24029117892039364, -0.22919478265462945, -0.21992788233226745,
-0.21203507768237273, -0.20522097269198403, -0.19926135366883546,
-0.1940021610297218, -0.1893197111160494, -0.18510437032842253,
-0.18130214668644484, -0.17782425035042548, -0.17299275594657315},
{-1.2444089001658807, -0.7925694725216795, -0.5456395815985433,
-0.42768676196497757, -0.3611784934314439, -0.31856101383728097,
-0.2927740772995382, -0.2708140106000476, -0.25379571238230736,
-0.24023986805145725, -0.22914742185859205, -0.21988373003621353,
-0.21199358806873692, -0.20518172934036594, -0.19922403412790235,
-0.1939665075882715, -0.18928551570574648, -0.18507146557377796,
-0.18127038969068243, -0.1777935247703355, -0.1729640161230681},
{-1.2446288873600375, -0.7923753551114137, -0.5454693067772636,
-0.4275612306253822, -0.36108034402861544, -0.3184801627483873,
-0.29270448695678253, -0.2707513752305153, -0.2537394640792834,
-0.2401885938239885, -0.2291000948317654, -0.2198396091971453,
-0.2119521279719394, -0.20514251389288196, -0.19918674111254875,
-0.19393087948306365, -0.18925134459545, -0.1850385842053841,
-0.18123865527090777, -0.17776282102996088, -0.17293529699000487},
{-1.2448474226740576, -0.7921810480105025, -0.5452990993097591,
-0.42743577476798356, -0.36098225972692366, -0.3183993620839254,
-0.29263493362041904, -0.2706887841927317, -0.25368325590598473,
-0.24013735620248533, -0.2290528015420885, -0.21979551978538803,
-0.21191069736435653, -0.20510332632382822, -0.19914947459867527,
-0.1938952766913955, -0.1892171977635564, -0.185005726202764,
-0.18120694340762222, -0.17773213911068453, -0.1729065985224958},
{-1.2450645093835455, -0.7919865522284245, -0.5451289593029791,
-0.42731039436559004, -0.36088424047865386, -0.31831861092915825,
-0.2925654173440575, -0.270626237446127, -0.2536270878241689,
-0.24008615515144816, -0.2290055419574588, -0.2197514617711609,
-0.21186929621841744, -0.20506416660761095, -0.1991122345622074,
-0.1938596991905861, -0.18918307518857658, -0.18497289154534657,
-0.18117525408114288, -0.17770147899400524, -0.17287792069593166},
{-1.2452801507576585, -0.7917918687710869, -0.5449588868631252,
-0.42718508939111977, -0.3607862862360316, -0.31823790827209586,
-0.29249593818048947, -0.2705637349500989, -0.253570959795671,
-0.24003499063548572, -0.22895831604577954, -0.21970743512481583,
-0.21182792450670673, -0.20502503471864486, -0.199075020979107,
-0.1938241469577342, -0.1891489768489616, -0.18494008021272013,
-0.1811435872718099, -0.1776708406611336, -0.17284926348576812},
{-1.2454943500590963, -0.7915969986407815, -0.5447888820956348,
-0.427059859817128, -0.36068839695167365, -0.3181572529991523,
-0.29242649618179795, -0.2705012766641506, -0.25351487178243404,
-0.23998386261925497, -0.22891112377524747, -0.21966343981665437,
-0.2117865822016829, -0.20498593063142634, -0.19903783382540263,
-0.1937886199704515, -0.18911490272326548, -0.18490729218462354,
-0.1811119429602388, -0.17764022409368607, -0.17282062686746702},
{-1.2457071105441366, -0.7914019428362769, -0.5446189451052061,
-0.4269347056161108, -0.36059057257767013, -0.31807664389110135,
-0.29235709139943067, -0.27043886254785066, -0.25345882374639106,
-0.23993277106747835, -0.22886396511390505, -0.2196194758171326,
-0.21174526927610904, -0.20494685432049264, -0.1990006730772187,
-0.1937531182059833, -0.18908085279019948, -0.18487452744066823,
-0.18108032112682348, -0.1776096292731446, -0.17279201081687523},
{-1.2459184354626178, -0.7912067023527694, -0.5444490759957241,
-0.4268096267604997, -0.36049281306640646, -0.3179960796202328,
-0.29228772388410107, -0.2703764925607004, -0.25340281564955736,
-0.23988171594488938, -0.22881684002995262, -0.21957554309675764,
-0.21170398570263282, -0.20490780576036682, -0.19896353871072092,
-0.19371764164184357, -0.18904682702831765, -0.1848417859605065,
-0.1810487217520622, -0.17757905618111325, -0.17276341530969175},
{-1.246128328057971, -0.7910112781819246, -0.5442792748704399,
-0.426684623222346, -0.3603951183702707, -0.31791555874713673,
-0.2922183936860223, -0.2703141666623776, -0.25334684745404834,
-0.23983069721641148, -0.22876974849177678, -0.2195316416260522,
-0.21166273145411285, -0.2048687849257882, -0.1989264307020031,
-0.19368219025556277, -0.18901282541638809, -0.18480906772400862,
-0.18101714481671394, -0.1775485047991192, -0.17273484032198771},
{-1.2463367915672254, -0.7908156713118587, -0.5441095418316992,
-0.4265596949738233, -0.3602974884414827, -0.3178350797190068,
-0.2921491008545565, -0.27025188481248885, -0.2532909191219861,
-0.2397797148469074, -0.22872269046761362, -0.21948777137555497,
-0.21162150650337352, -0.20482979179131222, -0.19888934902733268,
-0.1936467640246473, -0.1889788479331811, -0.1847763727109517,
-0.18098559030122852, -0.17751797510886025, -0.17270628582983294},
{-1.246543829220998, -0.7906198827272143, -0.543939876981228,
-0.4264348419867756, -0.3601999232325308, -0.3177546408679661,
-0.29207984543840504, -0.27018964697079073, -0.2532350306155995,
-0.2397287688013119, -0.22867566592591038, -0.2194439323159587,
-0.21158031082328765, -0.2047908263317728, -0.1988522936630721,
-0.19361136292681458, -0.18894489455753005, -0.18474370090124248,
-0.18095405818645682, -0.17748746709210783, -0.17267775180953837},
{-1.2467494442435347, -0.7904239134091469, -0.5437702804199951,
-0.42631006423297424, -0.360102422695626, -0.3176742404097501,
-0.29201062748569107, -0.27012745309707564, -0.25317918189715694,
-0.23967785904461758, -0.22862867483523663, -0.2194001244179491,
-0.21153914438694654, -0.2047518885219355, -0.19881526458553722,
-0.19357598693974154, -0.18891096526828344, -0.18471105227473927,
-0.18092254845297173, -0.17745698073038474, -0.17264923823738876},
{-1.2469536398527035, -0.79022776433531, -0.5436007522482433,
-0.42618536168410137, -0.3600049867831612, -0.31759387644385795,
-0.29194144704381775, -0.27006530315110666, -0.253123372928983,
-0.2396269855420332, -0.22858171716413223, -0.21935634765227663,
-0.21149800716733758, -0.20471297833674829, -0.1987782617710514,
-0.19354063604105676, -0.1888770600443812, -0.18467842681146474,
-0.18089106108159037, -0.17742651600565473, -0.17262074509000058},
{-1.2471564192600135, -0.7900314364799047, -0.5434312925654148,
-0.42606073431156744, -0.3599076154474987, -0.3175135469530823,
-0.29187230415966936, -0.27000319709272813, -0.253067603673516,
-0.23957614825859053, -0.22853479288121914, -0.21931260198975755,
-0.21145689913757248, -0.20467409575100515, -0.19874128519618228,
-0.1935053102087112, -0.1888431788648126, -0.18464582449138556,
-0.18085959605317514, -0.1773960728996422, -0.17259227234398766},
{-1.247357785670592, -0.7898349308136368, -0.5432619014702691,
-0.4259361820868015, -0.35981030864083885, -0.3174332498048631,
-0.2918031988794134, -0.2699411348818632, -0.2530118740931746,
-0.2395253471595573, -0.22848790195526814, -0.2192688874011477,
-0.21141582027083938, -0.20463524073977757, -0.1987043348373616,
-0.1934700094204147, -0.18880932170864106, -0.18461324529458434,
-0.18082815334860713, -0.17736565139420613, -0.17256381997623027},
{-1.2475577422832924, -0.7896382483038252, -0.5430925790608603,
-0.42581170498092424, -0.3597130663157897, -0.31735298275262247,
-0.29173413124846803, -0.26987911647849416, -0.252956184150533,
-0.23947458221011875, -0.2284410443550544, -0.21922520385759192,
-0.21137477054049114, -0.2045964132779967, -0.1986674106711912,
-0.19343473365422126, -0.18877548855492332, -0.1845806892012538,
-0.18079673294874743, -0.17733525147137597, -0.17253538796379475},
{-1.2477562922905736, -0.7894413899143693, -0.5429233254344938,
-0.42568730296505386, -0.3596158884245044, -0.31727274343706946,
-0.2916651013117755, -0.2698171418425721, -0.25290053380807875,
-0.23942385337569938, -0.22839422004935983, -0.2191815513297728,
-0.21133374991968168, -0.2045576133407474, -0.19863051267417786,
-0.1933994828879384, -0.18874167938277964, -0.18454815619139708,
-0.1807653348345184, -0.17730487311280285, -0.1725069762836502},
{-1.247953438878594, -0.7892443566057386, -0.5427541406878,
-0.42556297601018356, -0.35951877491938244, -0.31719252938959697,
-0.29159610911355194, -0.2697552109341632, -0.25284492302855543,
-0.23937316062163605, -0.2283474290072145, -0.21913792978890667,
-0.21129275838186912, -0.20451884090318062, -0.19859364082307396,
-0.19336425709962057, -0.1887078941713387, -0.1845156462452704,
-0.18073395898687927, -0.17727451630058333, -0.17247858491318668},
{-1.2481491852272102, -0.7890471493349839, -0.5425850249166284,
-0.4254387240869568, -0.3594217257528227, -0.31711233803419914,
-0.29152715469752466, -0.26969332371333943, -0.2527893517746205,
-0.23932250391333776, -0.22830067119764452, -0.2190943392059621,
-0.21125179590050713, -0.2044800959405073, -0.19855679509453372,
-0.19332905626735686, -0.18867413289993262, -0.18448315934309445,
-0.1807026053869638, -0.17724418101669892, -0.17245021382982006},
{-1.2483435345099627, -0.7888497690558222, -0.5424159782161715,
-0.42531454716620654, -0.3593247408770881, -0.3170321666917617,
-0.29145823810677296, -0.2696314801402553, -0.2527338200090157,
-0.23927188321638582, -0.2282539465896205, -0.21905077955208618,
-0.2112108624490716, -0.20444137842792776, -0.19851997546533307,
-0.19329388036925232, -0.18864039554787437, -0.1844506954651881,
-0.18067127401584315, -0.17721386724313914, -0.1724218630112615},
{-1.2485364898941127, -0.7886522167185517, -0.5422470006808886,
-0.4251904452183899, -0.35922782024477695, -0.31695201258376837,
-0.29138935938364185, -0.2695696801751539, -0.2526783276946323,
-0.23922129849631757, -0.22820725515243812, -0.21900725079847794,
-0.2111699580011548, -0.2044026883407497, -0.1984831819123305,
-0.1932587293835315, -0.18860668209449116, -0.18441825459188,
-0.18063996485463818, -0.177183574961989, -0.1723935324353385},
{-1.2487280545406412, -0.7884544932701513, -0.5420780924045858,
-0.42506641821393965, -0.35913096380807263, -0.31687187283627827,
-0.2913205185699479, -0.26950792377823785, -0.2526228747943551,
-0.23917074971885866, -0.22816059685518209, -0.21896375291632397,
-0.21112908253034668, -0.20436402565429557, -0.19844641441240096,
-0.19322360328837052, -0.18857299251916526, -0.18438583670352404,
-0.18060867788454882, -0.17715330415531083, -0.1723652220799865},
{-1.2489182316042604, -0.7882565996542231, -0.5419092534802852,
-0.42494246612318887, -0.3590341715194241, -0.316791744485053,
-0.2912517157069425, -0.2694462109097844, -0.2525674612711055,
-0.2391202368496108, -0.22811397166721425, -0.21892028587691081,
-0.2110882360104278, -0.20432539034400543, -0.198409672942367,
-0.1931885020620574, -0.1885393268013238, -0.18435344178055102,
-0.1805774130867297, -0.17712305480518387, -0.17233693192331412},
{-1.2491070242334246, -0.7880585368110903, -0.5417404840003808,
-0.4248185889161378, -0.3589374433312442, -0.3167116244802959,
-0.291182950835287, -0.2693845415301064, -0.25251208708786743,
-0.23906975985434364, -0.22806737955791245, -0.2188768496515583,
-0.21104741841500063, -0.2042867823853589, -0.19837295747941353,
-0.19315342568289173, -0.1885056849204596, -0.18432106980340368,
-0.18054617044256194, -0.17709282689378192, -0.17230866194363337},
{-1.2492944355703397, -0.7878603056777271, -0.5415717840565548,
-0.42469478656294934, -0.35884077919584123, -0.31663150969237885,
-0.291114223995103, -0.26932291559965416, -0.2524567522078014,
-0.23901931869896353, -0.22802082049659633, -0.21883344421158935,
-0.2110066297179669, -0.20424820175381253, -0.19833626800032667,
-0.19311837412934496, -0.18847206685619122, -0.1842887207525652,
-0.18051494993322503, -0.177062620403186, -0.17228041211949563},
{-1.2494804687509813, -0.7876619071877907, -0.5414031537398056,
-0.4245710590334746, -0.3587441790658432, -0.3165513969175202,
-0.2910455352257624, -0.2692613330788307, -0.25240145659402957,
-0.23896891334926895, -0.22797429445294615, -0.21879006952859248,
-0.21096586989315114, -0.20420964842491784, -0.1982996044823797,
-0.19308334737979926, -0.1884384725881061, -0.18425639460864263,
-0.18048375154019736, -0.17703243531572177, -0.1722521824295895},
{-1.2496651269050927, -0.7874633422716991, -0.5412345931404148,
-0.4244474062974768, -0.35864764289349615, -0.31647128288326387,
-0.2909768845661769, -0.2691997939281485, -0.252346200209681,
-0.23891854377130484, -0.22792780139631397, -0.21874672557378627,
-0.21092513891451858, -0.20417112237426727, -0.1982629669026017,
-0.19304834541274962, -0.18840490209583782, -0.1842240913521982,
-0.18045257524483027, -0.1770022716134827, -0.1722239728526258},
{-1.2498484131562013, -0.7872646118565412, -0.5410661023480627,
-0.424323828324654, -0.35855117063127784, -0.3163911642552555,
-0.2909082720547054, -0.26913829810816114, -0.2522909830180815,
-0.23886820993113744, -0.22788134129647863, -0.21870341231888935,
-0.2108844367560545, -0.20413262357764284, -0.19822635523833076,
-0.19301336820673853, -0.188371355359072, -0.18419181096387005,
-0.1804214210285724, -0.17697212927874784, -0.17219578336755648},
{-1.2500303306216216, -0.7870657168661885, -0.5408976814516309,
-0.4242003250844444, -0.3584547622316423, -0.3163110376428808,
-0.29083969772911367, -0.26907684557941214, -0.25223580498251374,
-0.2388179117946727, -0.22783491412308043, -0.21866012973540494,
-0.21084376339177968, -0.20409415201068537, -0.19818976946664124,
-0.19297841574039065, -0.188337832357655, -0.1841595534243865,
-0.18039028887290698, -0.17694200829389883, -0.17216761395364344},
{-1.2502108824124936, -0.7868666582212188, -0.5407293305394549,
-0.42407689654637104, -0.35835841764696097, -0.3162308996064751,
-0.29077116162666994, -0.269015436302559, -0.25218066606641143,
-0.23876764932825623, -0.22778851984593285, -0.2186168777949833,
-0.2108031187958863, -0.2040557076492564, -0.19815320956498317,
-0.19294348799225602, -0.18830433307130745, -0.18412731871428845,
-0.18035917875945984, -0.17691190864114015, -0.17213946459014862},
{-1.25039007163375, -0.7866674368390076, -0.5405610496990723,
-0.42395354267959995, -0.3582621368298795, -0.31615074666340814,
-0.290702663783847, -0.26895407023828444, -0.2521255662332047,
-0.23871742249799777, -0.22774215843478807, -0.2185736564692622,
-0.21076250294239696, -0.20401729046904338, -0.19811667551057388,
-0.19290858494115648, -0.18827085747994987, -0.18409510681454,
-0.18032809066979638, -0.176881830302829, -0.17211133525647648},
{-1.2505679013841733, -0.7864680536337092, -0.5403928390174901,
-0.42383026345336017, -0.3581659197327398, -0.3160705752948687,
-0.2906342042368688, -0.26889274734736857, -0.25207050544637344,
-0.23866723127024647, -0.22769582985959191, -0.21853046572995138,
-0.21072191580562105, -0.20397890044610456, -0.19808016728095268,
-0.19287370656578595, -0.18823740556350144, -0.18406291770596495,
-0.180297024585502, -0.17685177326138746, -0.17208322593219894},
{-1.250744374756353, -0.7862685095162498, -0.5402246985809098,
-0.4237070588367311, -0.35806976630798415, -0.31599038195266904,
-0.2905657830212054, -0.2688314675905987, -0.25201548366948856,
-0.2386170756113648, -0.22764953409026845, -0.21848730554887208,
-0.21068135735982763, -0.2039405375562069, -0.19804368485358426,
-0.19283885284487434, -0.18820397730189864, -0.18403075136928582,
-0.18026598048830111, -0.17682173749922647, -0.1720551365970775},
{-1.2509194948367657, -0.7860688053943512, -0.540056628474993,
-0.4235839287985439, -0.3579736765082666, -0.3159101630656791,
-0.2904974001719629, -0.26877023092878716, -0.251960500866236,
-0.23856695548774853, -0.22760327109689849, -0.21844417589781884,
-0.21064082757939406, -0.20390220177548724, -0.19800722820588135,
-0.19280402375742334, -0.18817057267513126, -0.18399860778546673,
-0.18023495835990433, -0.17679172299878454, -0.17202706723100425},
{-1.251093264705704, -0.7858689421725734, -0.5398886287846445,
-0.42346087330772586, -0.35787765028590246, -0.3158299150469186,
-0.29042905572358735, -0.26870903732285667, -0.25190555700024,
-0.2385168708659493, -0.22755704084951223, -0.21840107674864706,
-0.21060032643876792, -0.20386389308001052, -0.19797079731544454,
-0.19276921928218727, -0.188137191663313, -0.1839664869354074,
-0.18020395818211155, -0.17676172974251125, -0.17199901781397875},
{-1.2512656874373547, -0.785668920752288, -0.5397206995941468,
-0.42333789233286967, -0.3577816875936486, -0.31574963430018066,
-0.2903607497099583, -0.2686478867337705, -0.25185065203527124,
-0.23846682171242062, -0.22751084331823668, -0.21835800807335248,
-0.21055985391225773, -0.20382561144578792, -0.19793439215993924,
-0.19273443939817225, -0.1881038342466188, -0.18393438880016078,
-0.18017297993676218, -0.17673175771305027, -0.17197098832611912},
{-1.2514367660997687, -0.7854687420317009, -0.5395528409871924,
-0.42321498584262573, -0.35768578838385867, -0.3156693172263365,
-0.2902924821644899, -0.26858677912254514, -0.2517957859352178,
-0.23841680799389087, -0.22746467847334362, -0.21831496984384957,
-0.21051940997453888, -0.20378735684903448, -0.19789801271707885,
-0.1926996840844617, -0.18807050040511264, -0.1839023133608122,
-0.18014202360569787, -0.17670180689284587, -0.1719429787476372},
{-1.2516065037548878, -0.7852684069059219, -0.5393850530467623,
-0.4230921538055139, -0.35758995260913107, -0.3155889602301687,
-0.2902242531200818, -0.26852571445025, -0.2517409586638668,
-0.23836682967708667, -0.22741854628507552, -0.21827196203222465,
-0.21047899460014063, -0.20374912926604827, -0.19786165896448749,
-0.1926649533199991, -0.18803719011906184, -0.18387026059835776,
-0.18011108917080731, -0.17667187726455946, -0.17191498905888247},
{-1.2517749034585706, -0.7850679162668667, -0.5392173358552026,
-0.4229693961897576, -0.35749418022208124, -0.31550855972658853,
-0.2901560626091584, -0.2684646926779606, -0.2516861701852151,
-0.23831688672872486, -0.22737244672382184, -0.21822898461057383,
-0.21043860776372236, -0.20371092867309848, -0.19782533088007304,
-0.19263024708395138, -0.18800390336876394, -0.1838382304939672,
-0.18008017661411113, -0.17664196881089556, -0.17188701924030525},
{-1.251941968260549, -0.7848672710033426, -0.5390496894942176,
-0.422846712963745, -0.35739847117518764, -0.3154281121471092,
-0.2900879106635621, -0.2684037137668587, -0.2516314204632688,
-0.23826697911568928, -0.22732637975992143, -0.21818603755097055,
-0.21039824943998386, -0.20367275504653426, -0.1977890284416124,
-0.1925955653555298, -0.18797064013450715, -0.18380622302877248,
-0.18004928591765434, -0.1766120815145502, -0.17185906927247396},
{-1.2521077012045294, -0.7846664720010372, -0.5388821140448086,
-0.42272410409547767, -0.35730282542115677, -0.31534761394603517,
-0.2900197973145231, -0.26834277767812287, -0.2515767094620136,
-0.23821710680478336, -0.22728034536377395, -0.21814312082567255,
-0.21035791960360273, -0.20363460836261416, -0.19775275162687,
-0.19256090811379556, -0.18793740039657258, -0.1837742381839571,
-0.18001841706324662, -0.17658221535812668, -0.17183113913590198},
{-1.2522721053280834, -0.7844655201426021, -0.5387146095875197,
-0.42260156955310046, -0.3572072429125419, -0.31526706160621654,
-0.28995172259298796, -0.2682818843731787, -0.2515220371457283,
-0.2381672697631636, -0.22723434350604865, -0.21810023440699844,
-0.21031761822954742, -0.20359648859803903, -0.19771650041406152,
-0.19252627533829614, -0.18790418413562326, -0.1837422759410039,
-0.1799875700333753, -0.1765523703247207, -0.17180322881146903},
{-1.2524351836627825, -0.7842644163075579, -0.5385471762021348,
-0.42247910930457566, -0.3571117236019843, -0.3151864516451366,
-0.28988368652929286, -0.26822103381328466, -0.25146740347851004,
-0.23811746795778488, -0.22718837415726734, -0.21805737826723748,
-0.21027734529271447, -0.20355839572935386, -0.19768027478112815,
-0.19249166700821618, -0.1878709913319616, -0.18371033628112876,
-0.1799567448100432, -0.1765225463970932, -0.17177533827992697},
{-1.2525969392340812, -0.7840631613723311, -0.5383798139677967,
-0.42235672331757335, -0.35701626744212045, -0.3151057806200972,
-0.28981568915324996, -0.26816022595977795, -0.25141280842468916,
-0.2380677013557988, -0.22714243728806904, -0.21801455237879308,
-0.21023710076799107, -0.20352032973300815, -0.19764407470594003,
-0.19245708310299436, -0.18783782196614052, -0.18367841918566796,
-0.17992594137540863, -0.17649274355814137, -0.17174746752200143},
{-1.252757375061479, -0.7838617562103395, -0.5382125229630503,
-0.42223441155992747, -0.3569208743855661, -0.3150250451341359,
-0.2897477304943221, -0.268099460774188, -0.25135825194849826,
-0.23801796992444268, -0.22709653286911546, -0.217971756714066,
-0.21019688463036212, -0.20348229058570455, -0.19760790016682028,
-0.19242252360197476, -0.1878046760186991, -0.18364652463599418,
-0.17989515971174352, -0.17646296179080245, -0.1717196165187782},
{-1.2529164941583824, -0.78366020169189, -0.538045303265815,
-0.42211217399917556, -0.35682554438515757, -0.3149442418412054,
-0.28967981058119285, -0.2680387382179954, -0.2513037340144093,
-0.23796827363098405, -0.22705066087124903, -0.21792899124560927,
-0.21015669685488803, -0.20344427826413858, -0.19757175114181091,
-0.19238798848476968, -0.18777155347028973, -0.18361465261367016,
-0.1798643998014109, -0.17643320107826233, -0.17169178525114193},
{-1.2530742995322122, -0.7834584986843384, -0.5378781549534524,
-0.4219900106028507, -0.35673027739344443, -0.31486336745075905,
-0.28961192944237224, -0.26797805825277576, -0.2512492545868703,
-0.2379186124426802, -0.22700482126520027, -0.2178862559459409,
-0.21011653741671754, -0.20340629274517852, -0.19753562760919952,
-0.19235347773091904, -0.18773845430154656, -0.18358280310013741,
-0.17983366162671244, -0.17640346140351104, -0.17166397370009268},
{-1.2532307941843457, -0.7832566480519362, -0.537711078102596,
-0.4218679213384031, -0.35663507336313716, -0.3147824187329218,
-0.2895440871056456, -0.2679174208401336, -0.25119481363032437,
-0.23786898632705933, -0.2269590140219302, -0.21784355078776407,
-0.21007640629100477, -0.20336833400548482, -0.19749952954722616,
-0.1923189913199539, -0.18770537849315438, -0.18355097607695647,
-0.17980294517000361, -0.1763737427496781, -0.1716361818467762},
{-1.2533859811102235, -0.7830546506559938, -0.5375440727893102,
-0.4217459061729987, -0.3565399322469931, -0.31470139252259943,
-0.28947628359857003, -0.2678568259416654, -0.251140411109362,
-0.2378193952514822, -0.2269132391123545, -0.21780087574372597,
-0.21003630345301882, -0.20333040202211983, -0.19746345693436407,
-0.1922845292315829, -0.18767232602590145, -0.1835191715256954,
-0.17977225041391032, -0.1763440451000693, -0.17160840967229873},
{-1.2535398632992525, -0.7828525073547209, -0.5373771390891224,
-0.42162396507395195, -0.35644485399770254, -0.31462028572429435,
-0.2894085189480813, -0.26779627351925406, -0.2510860469886973,
-0.23776983918363426, -0.22686749650739513, -0.21775823078659284,
-0.20999622887797287, -0.20329249677190386, -0.19742740974878137,
-0.1922500914455867, -0.18763929688047032, -0.1834873894280178,
-0.1797415773407267, -0.17631436843788562, -0.17158065715779758},
{-1.2536924437348633, -0.782650219003463, -0.5372102770768272,
-0.4215020980083075, -0.35634983856824887, -0.3145390953159981,
-0.2893407931805716, -0.2677357635345414, -0.2510317212330091,
-0.23772031809107874, -0.22682178617827198, -0.2177156158892477,
-0.20995618254129989, -0.20325461823183621, -0.1973913879691409,
-0.19221567794167305, -0.18760629103792903, -0.18345562976569063,
-0.1797109259330223, -0.176284712746551, -0.17155292428460855},
{-1.2538437253945365, -0.7824477864545023, -0.5370434868267433,
-0.42138030494306045, -0.3562548859112171, -0.3144578183526523,
-0.289273106322153, -0.26767529594955075, -0.2509774338071189,
-0.23767083194154504, -0.22677610809593762, -0.21767303102446123,
-0.20991616441826055, -0.20321676637898234, -0.1973553915738564,
-0.1921812886997012, -0.18757330847896414, -0.18342389252035707,
-0.17968029617354375, -0.1762550780093921, -0.17152521103386853},
{-1.2539937112497859, -0.7822452105571936, -0.5368767684124882,
-0.4212585858452127, -0.35615999597943016, -0.31437645197019504,
-0.2892054583983734, -0.267614870726097, -0.2509231846757842,
-0.23762138070285443, -0.22673046223166615, -0.2176304761653558,
-0.20987617448441842, -0.20317894119052582, -0.19731942054160312,
-0.1921469236995712, -0.18754034918450735, -0.18339217767382987,
-0.17964968804481352, -0.17622546420985152, -0.17149751738693197},
{-1.2541424042662026, -0.7820424921579102, -0.5367101219071402,
-0.4211369406814023, -0.35606516872576743, -0.3142949933883954,
-0.2891378494343617, -0.2675544878261116, -0.25086897380395046,
-0.2375719643427523, -0.22668484855666415, -0.2175879512848664,
-0.20983621271522734, -0.20314114264352368, -0.19728347485081743,
-0.1921125829211352, -0.18750741313561958, -0.18336048520800752,
-0.17961910152955252, -0.1761958713315961, -0.171469843325184},
{-1.254289807403403, -0.781839632100124, -0.5365435473831706,
-0.4210153694184926, -0.355970404102981, -0.3142134399145413,
-0.28907027945484653, -0.2674941472117225, -0.250814801156622,
-0.23752258282930505, -0.2266392670421764, -0.21754545635615274,
-0.20979627908630816, -0.2031033707152825, -0.19724755448039488,
-0.19207826634449443, -0.18747450031330848, -0.18332881510463217,
-0.17958853661059093, -0.17616629935797334, -0.17144218883004703},
{-1.2544359236151164, -0.781636631224328, -0.5363770449124139,
-0.42089387202298134, -0.3558757020641916, -0.31413178894582106,
-0.28900274848390994, -0.267433848844981, -0.2507606666988278,
-0.2374732361303975, -0.22659371765963687, -0.2175029913523816,
-0.20975637357321464, -0.20306562538292017, -0.19721165940891083,
-0.19204397394965866, -0.1874416106985497, -0.1832971673457977,
-0.17955799327064748, -0.17613674827274295, -0.17141455388286886},
{-1.2545807558491264, -0.7814334903681657, -0.5362106145661973,
-0.4207724484614386, -0.35578106256205144, -0.3140500379719495,
-0.28893525654542307, -0.2673735926880738, -0.250706570395657,
-0.23742392421414182, -0.2265482003803898, -0.21746055624672866,
-0.2097164961515885, -0.20302790662397863, -0.19717578961532078,
-0.1920097057167105, -0.18740874427258802, -0.1832655419134137,
-0.17952747149263493, -0.17610721805955976, -0.17138693846523445},
{-1.2547243070473253, -0.781230210366272, -0.5360442564151886,
-0.4206510987003369, -0.35568648554946636, -0.3139681845778397,
-0.2888678036626575, -0.26731337870317606, -0.25065251221229357,
-0.23737464704867017, -0.22650271517590692, -0.2174181510125761,
-0.20967664679714115, -0.2029902144156206, -0.1971399450784599,
-0.19197546162578893, -0.18737590101642798, -0.18323393878944838,
-0.17949697125939768, -0.1760777087022265, -0.17135934255852447},
{-1.2548665801457266, -0.7810267920505057, -0.5358779705295436,
-0.42052982270588357, -0.35559197097955675, -0.3138862264452764,
-0.28880038985865264, -0.2672532068526303, -0.25059849211398166,
-0.2373254046022426, -0.22645726201778382, -0.21737577562334343,
-0.2096368254857266, -0.20295254873539648, -0.19710412577715575,
-0.19194124165720172, -0.18734308091133522, -0.1832023579560884,
-0.17946649255395775, -0.17604822018451216, -0.17133176614449308},
{-1.2550075780744518, -0.7808232362497565, -0.5357117569787155,
-0.4204086204444535, -0.35549751880507174, -0.3138041613551956,
-0.28873301515580607, -0.2671930770987312, -0.2505445100660566,
-0.23727619684314671, -0.22641184087745447, -0.2173334300524039,
-0.20959703219312598, -0.20291490956081537, -0.19706833169038296,
-0.1919070457911478, -0.18731028393854254, -0.18317079939533532,
-0.17943603535923636, -0.17601875249022125, -0.17130420920465417},
{-1.2551473037576937, -0.7806195437900407, -0.5355456158317424,
-0.4202874918820989, -0.35540312897917103, -0.3137219871894259,
-0.288665679576134, -0.2671329894039238, -0.25049056603385367,
-0.2372270237397025, -0.22636645172673164, -0.21729111427341863,
-0.2095572668951977, -0.20287729686932154, -0.19703256279726222,
-0.1918728740079052, -0.18727751007941462, -0.18313926308948458,
-0.17940559965840963, -0.1759893056033981, -0.17127667172075522},
{-1.2552857601138638, -0.7804157154945939, -0.535379547157002,
-0.4201664369849263, -0.3553088014547485, -0.31363970193163393,
-0.2885983831412804, -0.2670729437307062, -0.2504366599828125,
-0.23717788526039163, -0.2263210945371643, -0.2172488282598053,
-0.20951752956792546, -0.20283971063856487, -0.1969968190768614,
-0.1918387262879131, -0.18724475931522067, -0.18310774902069227,
-0.17937518543459552, -0.17595987950780057, -0.1712491536744647},
{-1.2554229500554845, -0.7802117521837005, -0.535213551022311,
-0.42004545571895635, -0.355214536184834, -0.31355730366914925,
-0.2885311258724732, -0.2670129400416359, -0.2503827918784922,
-0.23712878137374993, -0.22627576928052084, -0.21720657198539817,
-0.20947782018718986, -0.20280215084618947, -0.19696110050822435,
-0.19180460261160404, -0.1872120316273067, -0.18307625717122233,
-0.1793447926708005, -0.17593047418757513, -0.17122165504762998},
{-1.255558876489243, -0.7800076546749097, -0.5350476274949072,
-0.41992454804995516, -0.3551203331225561, -0.31347479059345096,
-0.28846390779055664, -0.26695297829927034, -0.2503289616864057,
-0.23707971204830436, -0.22623047592872192, -0.21716434542395557,
-0.2094381387291726, -0.2027646174699309, -0.19692540707069517,
-0.19177050295941722, -0.18717932699715245, -0.1830447875233565,
-0.17931442135041875, -0.17590108962681095, -0.17119417582208252},
{-1.255693542315938, -0.7798034237828015, -0.5348817766414635,
-0.41980371394385196, -0.3550261922208673, -0.31339216100155465,
-0.28839672891588863, -0.26689305846634825, -0.250275169372252,
-0.2370306772527755, -0.22618521445354212, -0.21712214854922163,
-0.20939848516989024, -0.2027271104876185, -0.19688973874338167,
-0.19173642731195883, -0.18714664540620207, -0.1830133400595062,
-0.17928407145668857, -0.17587172580952304, -0.17116671597969413},
{-1.2558269504306505, -0.7795990603192942, -0.5347159985281296,
-0.4196829533662614, -0.35493211343304276, -0.31330941329639694,
-0.28832958926839813, -0.2668331805055839, -0.2502214149017461,
-0.23698167695591854, -0.22613998482697273, -0.217079981335214,
-0.20935885948557909, -0.20268962987690253, -0.19685409550572164,
-0.1917023756498124, -0.18711398683613378, -0.18298191476222891,
-0.1792537429729637, -0.17584238272000485, -0.17113927550261332},
{-1.2559591037225537, -0.7793945650933763, -0.5345502932204365,
-0.4195622662828238, -0.3548380967120486, -0.31322654598712907,
-0.2882624888676495, -0.2667733443798541, -0.2501676982406682,
-0.23693271112646253, -0.22609478702088515, -0.21703784375582735,
-0.20931926165236536, -0.20265217561574866, -0.1968184773369912,
-0.19166834795351662, -0.1870813512682954, -0.18295051161374198,
-0.1792234358825695, -0.17581306034223365, -0.1711118543726613},
{-1.2560900050750698, -0.7791899389113317, -0.5343846607834439,
-0.41944165265917044, -0.35474414201108906, -0.31314355768967417,
-0.28819542773284734, -0.2667135500520197, -0.2501140193548066,
-0.23688377973331232, -0.2260496210073515, -0.21699573578513132,
-0.20927969164658622, -0.20261474768208965, -0.19678288421658463,
-0.19163434420387127, -0.18704873868439398, -0.1829191305966642,
-0.17919315016894322, -0.17578375866060503, -0.1710844525719999},
{-1.256219657365806, -0.7789851825765846, -0.5342191012815585,
-0.4193211124605929, -0.3546502492833379, -0.3130604471265137,
-0.288128405882762, -0.26665379748500984, -0.2500603782100952,
-0.2368348827454625, -0.2260044867585087, -0.21695365739729944,
-0.20924014944453617, -0.20257734605387379, -0.1967473161239628,
-0.19160036438156203, -0.18701614906610908, -0.18288777169354242,
-0.1791628858156198, -0.1757544776592912, -0.17105707008286108},
{-1.256348063466597, -0.7787802968898441, -0.5340536147786799,
-0.4192006456526378, -0.35455641848199404, -0.31297721312700766,
-0.2880614233358707, -0.266594086641895, -0.25000677477257227,
-0.2367860201319587, -0.2259593842464338, -0.21691160856653546,
-0.20920063502262876, -0.20253997070925855, -0.19671177303870335,
-0.19156640846743267, -0.18698358239515844, -0.18285643488698833,
-0.17913264280608487, -0.17572521732272328, -0.17102970688747998},
{-1.2564752262434944, -0.7785752826490084, -0.5338882013381803,
-0.4190802522004633, -0.35446264956037266, -0.31289385462697883,
-0.2879944801100005, -0.2665344174858131, -0.24995320900829965,
-0.23673719186187148, -0.22591431344344048, -0.21686958926706623,
-0.20916114835730193, -0.20250262162620558, -0.19667625494034313,
-0.19153247644236027, -0.18695103865333618, -0.18282512015979924,
-0.17910242112401553, -0.17569597763526756, -0.1710023629681321},
{-1.2566011485568047, -0.7783701406492776, -0.5337228610228824,
-0.4189599320693509, -0.35436894247163475, -0.31281037066814754,
-0.28792757622286747, -0.26647478997991936, -0.24989968088328496,
-0.23668839790435747, -0.2258692743216293, -0.21682759947333263,
-0.20912168942507625, -0.2024652987829385, -0.1966407618085393,
-0.19149856828724898, -0.18691851782240088, -0.18279382749449935,
-0.17907222075305107, -0.17566675858121572, -0.17097503830722927},
{-1.2567258332610713, -0.778164871683046, -0.5335575938950627,
-0.41883968522449644, -0.35427529716905215, -0.31272676039791536,
-0.2878607116916103, -0.2664152040874983, -0.2498461903638165,
-0.23663963822871814, -0.225824266853345, -0.21678563915976268,
-0.20908225820248783, -0.20242800215762013, -0.19660529362292456,
-0.1914646839830274, -0.18688601988415643, -0.18276255687396858,
-0.1790420416767864, -0.1756375601450575, -0.1709477328872282},
{-1.2568492832051128, -0.7779594765400393, -0.5333924000164245,
-0.4187195116307916, -0.3541817136059655, -0.31264302306829306,
-0.28779388653315197, -0.2663556597717651, -0.24979273741611152,
-0.23659091280421407, -0.2257792910110692, -0.2167437083008732,
-0.20904285466612427, -0.2023907317286917, -0.19656985036338792,
-0.19143082351071516, -0.18685354482064298, -0.1827313082809976,
-0.179011883879153, -0.17560838231129505, -0.1709204466906309},
{-1.256971501231978, -0.7777539560072186, -0.5332272794481727,
-0.41859941125334665, -0.3540881917357044, -0.3125591580356972,
-0.287727100763957, -0.26629615699629205, -0.24973932200651516,
-0.23654222160031457, -0.22573434676703297, -0.21670180687120544,
-0.20900347879278947, -0.2023534874742845, -0.19653443200957899,
-0.19139698685139495, -0.1868210926137004, -0.18270008169842233,
-0.17898174734371253, -0.17557922506449852, -0.17089317970012718},
{-1.2570924901790232, -0.7775483108688239, -0.5330622322509568,
-0.4184793840569676, -0.3539947315117462, -0.31247516475961534,
-0.28766035440009485, -0.26623669572444797, -0.24968594410138722,
-0.23649356458644233, -0.2256894340938671, -0.21665993484552093,
-0.20896413055906926, -0.20231626937282465, -0.1964990385413361,
-0.19136317398619473, -0.18678866324545007, -0.1826688771092444,
-0.17895163205446174, -0.1755500883892176, -0.17086593189835142},
{-1.257212252877893, -0.7773425419064623, -0.532897258484929,
-0.41835943000651143, -0.35390133288736836, -0.31239104280158836,
-0.28759364745726845, -0.2661772759198544, -0.24963260366727624,
-0.23644494173210928, -0.2256445529639648, -0.21661809219843642,
-0.20892480994176532, -0.20227907740280138, -0.19646366993867526,
-0.19132938489628426, -0.1867562566978589, -0.1826376944963788,
-0.17892153799534372, -0.17552097227003882, -0.170838703268132},
{-1.2573307921545172, -0.7771366498989742, -0.5327323582096857,
-0.4182395490668045, -0.3538079958159632, -0.31230679182413246,
-0.2875269799508775, -0.2661178975461147, -0.2495793006706215,
-0.23639635300701078, -0.22559970334988932, -0.21657627890485331,
-0.20888551691784585, -0.20224191154270832, -0.19642832618156625,
-0.19129561956276353, -0.18672387295300563, -0.18260653384285597,
-0.17889146515020204, -0.1754918766915572, -0.17081149379236393},
{-1.257448110829147, -0.776930635622594, -0.5325675314842906,
-0.4181197412023323, -0.35371472025112016, -0.3122224115893477,
-0.28746035189590113, -0.26605856056692945, -0.24952603507806126,
-0.23634779838074627, -0.22555488522430167, -0.21653449493970678,
-0.20884625146408586, -0.20220477177108798, -0.19639300724991626,
-0.1912618779670341, -0.18669151199310097, -0.18257539513178322,
-0.1788614135030171, -0.17546280163864836, -0.17078430345406437},
{-1.2575642117163595, -0.7767244998507994, -0.532402778367314,
-0.41800000637786794, -0.3536215061461565, -0.3121379019579722,
-0.28739376330714217, -0.265999264946148, -0.24947280685629325,
-0.23629927782313942, -0.2255100985598948, -0.21649274027790888,
-0.2088070135575415, -0.2021676580666103, -0.19635771312395622,
-0.19122816009037402, -0.18665917380026542, -0.182544278346235,
-0.1788313830379935, -0.17543374709596726, -0.17075713223636768},
{-1.2576790976250178, -0.7765182433544677, -0.5322380989167839,
-0.4178803445578154, -0.3535283534548279, -0.31205326288757673,
-0.2873272141985974, -0.2659400106476171, -0.249419615972009,
-0.23625079130395799, -0.22546534332932344, -0.21645101489446494,
-0.20876780317515164, -0.20213057040780447, -0.19632244378373365,
-0.19119446591409872, -0.18662685835685755, -0.18251318346946865,
-0.1788013737390548, -0.17540471304834782, -0.170729980122446},
{-1.2577927713583819, -0.7763118669018378, -0.5320734931901858,
-0.41776075570662385, -0.35343526213049836, -0.31196849443111496,
-0.28726070458437736, -0.26588079763525885, -0.24936646239208615,
-0.23620233879314467, -0.22542061950537207, -0.2164093187644971,
-0.20872862029394756, -0.2020935087734892, -0.1962871992094799,
-0.19116079541960085, -0.18659456564507426, -0.18248211048473584,
-0.17877138559052286, -0.17537569948062304, -0.17070284709559314},
{-1.2579052357140037, -0.7761053712584591, -0.5319089612445689,
-0.41764123978876455, -0.3533422321267232, -0.31188359673535526,
-0.28719423447798853, -0.265821625873103, -0.24931334608336098,
-0.23615392026065551, -0.22537592706084775, -0.21636765186330464,
-0.20868946489111062, -0.20205647314235575, -0.19625197938144145,
-0.19112714858828594, -0.18656229564723237, -0.18245105937522377,
-0.17874141857634296, -0.17534670637770056, -0.17067573313936002},
{-1.2580164934838576, -0.7758987571873217, -0.5317445031364096,
-0.41752179676841017, -0.3532492633972515, -0.31179857003917144,
-0.28712780389278203, -0.2657624953253448, -0.2492602670127595,
-0.2361055356765136, -0.22533126596869124, -0.2163260141660639,
-0.20865033694386037, -0.2020194634933965, -0.19621678427994516,
-0.19109352540181357, -0.18653004834586095, -0.1824200301244665,
-0.1787114726810186, -0.17531773372454884, -0.1706486382372785},
{-1.2581265474542276, -0.7756920254486992, -0.5315801189216651,
-0.41740242660989546, -0.35315635589557104, -0.3117134146718614,
-0.28706141284167463, -0.2657034059560477, -0.2492072251473867,
-0.2360571850109392, -0.22528663620172606, -0.21628440564805151,
-0.2086112364294186, -0.20198247980541506, -0.19618161388533473,
-0.1910599258415444, -0.18649782372316537, -0.18238902271560642,
-0.1786815478886461, -0.17528878150613192, -0.17062156237310244},
{-1.2582354004057825, -0.7754851768003244, -0.5314158086558107,
-0.4172831292772943, -0.35306350957549393, -0.31162813105147835,
-0.2869950613370129, -0.2656443577296055, -0.2491542204543058,
-0.23600886823394474, -0.22524203773293072, -0.21624282628477642,
-0.20857216332501816, -0.2019455220573092, -0.19614646817807024,
-0.19102634988914202, -0.18646562176191273, -0.18235803713236676,
-0.1786516441835535, -0.17525984970753283, -0.1705945055306568},
{-1.2583430551136376, -0.7752782119973467, -0.531251572393826,
-0.41716390473477905, -0.352970724390691, -0.31154271968277625,
-0.28692874939122426, -0.2655853506103165, -0.24910125290063734,
-0.23596058531594455, -0.225197470535353, -0.2162012760515819,
-0.208533117608094, -0.20190859022806507, -0.19611134713869616,
-0.19099279752625353, -0.18643344244449, -0.18232707335809772,
-0.1786217615503798, -0.17523093831376801, -0.1705674676939557},
{-1.258449514347252, -0.77507113179229, -0.531087410190227,
-0.4170447529463648, -0.3528780002948153, -0.31145718115521115,
-0.2868624770160544, -0.26552638456263056, -0.24904832245364217,
-0.23591233622720553, -0.22515293458207886, -0.21615975492409722,
-0.20849409925599582, -0.20187168429686464, -0.196076250747641,
-0.19095926873454383, -0.18640128575345605, -0.1822961313764102,
-0.17859189997326652, -0.17520204731001776, -0.1705404488471558},
{-1.2585547808705049, -0.7748639369351011, -0.5309233220989245,
-0.41692567387592927, -0.3527853372417651, -0.311371516141258,
-0.28679624422322236, -0.2654674595510431, -0.2489954290807126,
-0.23586412093818065, -0.22510842984624269, -0.21611826287793123,
-0.20845510824623048, -0.2018348042428717, -0.19604117898562956,
-0.19092576349567958, -0.1863691516715389, -0.18226521117100658,
-0.17856205943675185, -0.1751731766815019, -0.17051344897449106},
{-1.2586588574416793, -0.7746566281731582, -0.5307593081734163,
-0.41680666748748485, -0.3526927351852258, -0.31128572539441235,
-0.28673005102390325, -0.2654085755401998, -0.24894257274912368,
-0.2358159394192536, -0.2250639563009642, -0.21607679988872475,
-0.20841614455634172, -0.2017979500451479, -0.19600613183329685,
-0.19089228179153972, -0.18633704018131514, -0.1822343127254631,
-0.1785322399253979, -0.17514432641329813, -0.17048646806034595},
{-1.258761746813541, -0.7744492062512642, -0.5305953684666738,
-0.4166877337447463, -0.35260019407917786, -0.31119980974711625,
-0.28666389742892306, -0.2653497324947116, -0.24888975342635877,
-0.23576779164104567, -0.22501951391944885, -0.21603536593211548,
-0.2083772081638835, -0.201761121682845, -0.1959711092712655,
-0.19085882360378514, -0.18630495126558166, -0.18220343602356381,
-0.1785024414236398, -0.17511549649068803, -0.170459506089208},
{-1.2588634517332284, -0.7742416719117085, -0.5304315030311759,
-0.41656887261148867, -0.35250771387737334, -0.3111137701085509,
-0.28659778344895903, -0.26529093037940576, -0.24883697107995584,
-0.23571967757417545, -0.22497510267514187, -0.21599396098416612,
-0.20833829904657097, -0.20172431913543631, -0.1959361112804534,
-0.19082538891445155, -0.18627288490722282, -0.182172581049187,
-0.17847266391633587, -0.17508668689905527, -0.17043256304593735},
{-1.2589639749423804, -0.7740340258942111, -0.5302677119189578,
-0.41645008405150463, -0.3524152945337309, -0.3110276074628615,
-0.28653170909428294, -0.2652321691591526, -0.248784225677519,
-0.23567159718934105, -0.2249307225412549, -0.21595258502050685,
-0.20829941718214817, -0.20168754238232678, -0.19590113784169194,
-0.1907919777053788, -0.18624084108899774, -0.18214174778613712,
-0.17844290738794255, -0.17505789762365653, -0.17040563891517913},
{-1.2590633191770577, -0.7738262689359718, -0.5301039951814936,
-0.4163313680282501, -0.3523229360022193, -0.31094132286662246,
-0.28646567437482195, -0.26517344879880467, -0.24873151718667996,
-0.23562355045721528, -0.22488637349121943, -0.21591123801733492,
-0.20826056254834224, -0.2016507914028467, -0.19586618893578533,
-0.19075858995853823, -0.1862088197937859, -0.18211093621830665,
-0.17841317182322936, -0.1750291286498591, -0.17037873368164647},
{-1.2591614871678032, -0.7736184017716616, -0.5299403528698625,
-0.41621272450547186, -0.3522306382368061, -0.31085491744739313,
-0.28639967930032206, -0.26511476926344324, -0.24867884557521425,
-0.23557553734879777, -0.22484205549846825, -0.21586991995039195,
-0.2082217351230944, -0.20161406617647337, -0.19583126454379407,
-0.19072522565590555, -0.1861768210045418, -0.18208014632962355,
-0.17838345720697735, -0.17500037996298978, -0.1703518473295742},
{-1.2592584816396548, -0.7734104251334397, -0.5297767850345476,
-0.4160941534465481, -0.35213840119163464, -0.31076839240112397,
-0.28633372387997236, -0.26505613051811094, -0.24862621081091651,
-0.23552755783492074, -0.2247977685364817, -0.21582863079586234,
-0.2081829348842228, -0.20157736668275694, -0.19579636464670358,
-0.1906918847795871, -0.18614484470432258, -0.18204937810423027,
-0.17835376352389165, -0.17497165154866057, -0.17032497984145412},
{-1.2593543053121075, -0.7732023397509615, -0.5296132917257075,
-0.41597565481495713, -0.352046224820604, -0.31068174898999956,
-0.28626780812294905, -0.2649975325279925, -0.24857361286158186,
-0.23547961188651012, -0.2247535125788791, -0.2157873705299056,
-0.20814416180981388, -0.201540692901371, -0.1957614892255366,
-0.1906585673117025, -0.18611289087606364, -0.18201863152604947,
-0.1783240907589092, -0.1749429433920513, -0.1702981311967644},
{-1.2594489608991637, -0.7729941463513881, -0.5294498729929227,
-0.41585722857418905, -0.351954109077786, -0.3105949885405588,
-0.28620193203787014, -0.2649389752583602, -0.24852105169525318,
-0.23543169947475207, -0.22470928759916653, -0.21574613912867457,
-0.20810541587771159, -0.20150404481182482, -0.1957266382614189,
-0.19062527323425815, -0.1860809595028856, -0.18198790657932085,
-0.17829443889675511, -0.17491425547878725, -0.1702713013732402},
{-1.259542451109363, -0.7727858456594041, -0.529286528885244,
-0.4157388746873554, -0.35186205391737735, -0.3105081124412612,
-0.2861360956332706, -0.26488045867447285, -0.2484685272799152,
-0.23538382057058804, -0.22466509357112052, -0.21570493656851797,
-0.20806669706615777, -0.20146742239407445, -0.19569181173559524,
-0.19059200252960995, -0.1860490505680752, -0.18195720324818376,
-0.1782648079226652, -0.17488558779447017, -0.17024449035593703},
{-1.2596347786456994, -0.7725774383972124, -0.5291232594513784,
-0.4156205931179169, -0.35177005929347827, -0.31042112214076045,
-0.28607029891727853, -0.26482198274186164, -0.24841603958362812,
-0.23533597514540538, -0.2246209304683422, -0.21566376282567212,
-0.2080280053534178, -0.20143082562776593, -0.1956570096293273,
-0.19055875517992016, -0.18601716405464153, -0.18192652151679933,
-0.17823519782127173, -0.17485694032454235, -0.17021769816477716},
{-1.2597259462057833, -0.7723689252845065, -0.5289600647395216,
-0.41550238382896065, -0.35167812516044084, -0.31033401914545067,
-0.2860045418976944, -0.2647635474258849, -0.24836358857452323,
-0.23528816317039203, -0.22457679826468757, -0.21562261787657588,
-0.20798934071755903, -0.20139425449270876, -0.19562223192375994,
-0.190525531167538, -0.18598529994600277, -0.1818958613696524,
-0.1782056085777799, -0.17482831305469215, -0.17019092490964782},
{-1.2598159564816798, -0.7721603070386005, -0.5287969447973662,
-0.41538424678362773, -0.35158625147237066, -0.31024680501736057,
-0.2859388245821197, -0.2647051526922155, -0.24831117422093785,
-0.23524038461691488, -0.22453269693393096, -0.21558150169774537,
-0.2079507031368628, -0.20135770896894734, -0.19558747860049142,
-0.19049233047485448, -0.18595345822542253, -0.1818652227909574,
-0.1781760401774335, -0.1747997059704849, -0.17016417088227298},
{-1.259904812160035, -0.7719515843743301, -0.5286338996722038,
-0.4152661819451411, -0.3514944381835168, -0.3101594813722044,
-0.28587314697779354, -0.2646467985064569, -0.24825879649105564,
-0.23519263945635283, -0.2244886264499848, -0.2155404142656563,
-0.20791209258983434, -0.2013211890364226, -0.1955527496407834,
-0.1904591530841171, -0.18592163887614666, -0.1818346057650131,
-0.17814649260516813, -0.1747711190576009, -0.1701374366858195},
{-1.2599925159220653, -0.7717427580040563, -0.5284709294108005,
-0.41514818927640196, -0.35140268524826634, -0.31007204987692516,
-0.28580750909167474, -0.26458848483431474, -0.24820645535327968,
-0.2351449276602624, -0.22444458678677526, -0.21549935555692024,
-0.20787350905470303, -0.20128469467517096, -0.19551804502612846,
-0.1904259989779078, -0.1858898418817998, -0.1818040102763936,
-0.17811696584622316, -0.1747425523019075, -0.17011072339778321},
{-1.2600790704435343, -0.7715338286377302, -0.5283080340595376,
-0.41503026874046256, -0.35131099262087817, -0.3099845122481337,
-0.28574191093065027, -0.2645302116416466, -0.24815415077599434,
-0.235097249200245, -0.22440057791818946, -0.21545832554822386,
-0.2078349525101446, -0.2012482258652959, -0.1954833647382075,
-0.19039286813870415, -0.18585806722568954, -0.18177343630961085,
-0.17808745988589614, -0.1747140056890677, -0.170084032755208},
{-1.2601644783947812, -0.7713247969828918, -0.5281452136642311,
-0.4149124203001713, -0.35121936025594946, -0.30989687024960677,
-0.2856763525008459, -0.26447197889422647, -0.24810188272771994,
-0.23504960404784203, -0.2243565998182837, -0.21541732421625337,
-0.20779642293456835, -0.2012117825868378, -0.19544870875835452,
-0.19035976054906412, -0.18582631489150092, -0.18174288384909154,
-0.1780579747093971, -0.17468547920484534, -0.17005736734531052},
{-1.260248742440749, -0.771115663744675, -0.5279824682703746,
-0.41479464391845333, -0.3511277881077106, -0.30980912569045405,
-0.28561083380863383, -0.2644137865580829, -0.24804965117709266,
-0.23500199217483875, -0.22431265246123022, -0.21537635153783397,
-0.20775792030653006, -0.20117536482020393, -0.19541407706841163,
-0.190326676191523, -0.1857945848627245, -0.18171235287957588,
-0.17802851030226785, -0.17465697283513304, -0.17003073078612374},
{-1.2603318652409548, -0.7709064296257746, -0.5278197979229096,
-0.41467693955816154, -0.3510362761306678, -0.30972128042288505,
-0.2855453548597646, -0.2643556345992031, -0.24799745609263812,
-0.23495441355300217, -0.22426873582101825, -0.21533540748981306,
-0.20771944460469438, -0.20113897254553503, -0.19537946965001263,
-0.19029361504867737, -0.1857628771229165, -0.18168184338555182,
-0.1779990666496447, -0.17462848656593888, -0.17000412788173458},
{-1.2604138494495547, -0.7706970953265324, -0.5276572026663766,
-0.4145593071819862, -0.35094482427943463, -0.3096333363402395,
-0.28547991565994835, -0.2642975229837199, -0.24794529744310845,
-0.234906868154237, -0.22422484987196745, -0.21529449204917617,
-0.20768099580782806, -0.20110260574323124, -0.19534488648494053,
-0.1902605771033512, -0.18573119165598717, -0.18165135535188126,
-0.1779696437372329, -0.17460002038301115, -0.16997756473844872},
{-1.2604946977152842, -0.7704876615448648, -0.5274946825448386,
-0.4144417467527033, -0.35085343250837253, -0.30954529537521713,
-0.28541451621447855, -0.2642394516777071, -0.2478931751972886,
-0.23485935595048213, -0.22418099458812923, -0.2152536051927374,
-0.20764257389470453, -0.20106626439366737, -0.19531032755500854,
-0.19022756233821614, -0.18569952844547455, -0.1816208887631614,
-0.1779402415503868, -0.17457157427236059, -0.16995104883508771},
{-1.260574412681506, -0.7702781289763057, -0.5273322376019562,
-0.4143242582328899, -0.3507621007723043, -0.3094571594977542,
-0.2853491565283215, -0.2641814206474846, -0.24784108932398885,
-0.2348118769137355, -0.22413716994392807, -0.21521274689779935,
-0.2076041788440075, -0.20102994847729683, -0.1952757928420903,
-0.19019457073606816, -0.18566788747532836, -0.1815904436043243,
-0.17791086007461265, -0.17454314822014494, -0.169924589042437},
{-1.260652996986254, -0.7700684983140771, -0.5271698678809333,
-0.41420684158523136, -0.3506708290257241, -0.3093689307130023,
-0.28528383660634926, -0.2641234298593478, -0.24778903979207278,
-0.23476443101614297, -0.2240933759135535, -0.2151719171412716,
-0.20756581063475865, -0.2009936579745295, -0.19524128232813487,
-0.19016160227974277, -0.18563626872943484, -0.18156001986002268,
-0.17788149929571384, -0.17451474221211205, -0.16989819559180042},
{-1.2607304532621866, -0.769858770248989, -0.527007573424523,
-0.4140894967723221, -0.350579617223278, -0.30928061105949123,
-0.2852185564530525, -0.26406547927969415, -0.24773702657059582,
-0.2347170182298668, -0.22404961247142552, -0.21513111590039324,
-0.20752746924581844, -0.20095739286604264, -0.1952067959950048,
-0.19012865695221848, -0.18560467219160692, -0.18152961751536667,
-0.17785215919913266, -0.17448635623458442, -0.16987187999626752},
{-1.2608067841365953, -0.7696489454695297, -0.5268453542750537,
-0.4139722237565553, -0.3504884653198044, -0.30919220260709857,
-0.28515331607287164, -0.26400756887486043, -0.2476850496285672,
-0.23466963852711276, -0.22400587959206453, -0.21509034315245001,
-0.2074891546562374, -0.2009211531324424, -0.19517233382487564,
-0.19009573473626196, -0.1855730978459671, -0.18149923655513556,
-0.17782283977069024, -0.1744579902735608, -0.16984565492964343},
{-1.2608819922314662, -0.769439024661791, -0.5266832104743937,
-0.41385502250054973, -0.35039737326987375, -0.3091037074555989,
-0.2850881154696716, -0.2639496986115222, -0.2476331089350574,
-0.23462229188033357, -0.22396217724979106, -0.21504959887469388,
-0.20745086684502922, -0.2008849387544962, -0.19513789579977248,
-0.19006283561504445, -0.18554154567638959, -0.18146887696434222,
-0.17779354099601674, -0.17442964431506347, -0.1698195340708044},
{-1.260956080163433, -0.7692290085095632, -0.5265211420640172,
-0.4137378929665725, -0.3503063410285412, -0.30901512773253126,
-0.28502295464718674, -0.2638918684561058, -0.2475812044592276,
-0.23457497826179008, -0.22391850541913483, -0.21500888304444432,
-0.2074126057912249, -0.20084874971272226, -0.19510348190178517,
-0.19002995957152446, -0.18551001566716163, -0.1814385387280928,
-0.17776426286093328, -0.17440131834526573, -0.16979353192189484},
{-1.261029050543858, -0.7690188976943375, -0.5263591490849422,
-0.4136208351170785, -0.35021536855049273, -0.3089264655913051,
-0.2849578336090013, -0.26383407837542183, -0.24752933617045025,
-0.23452769764414239, -0.22387486407471657, -0.21496819563922598,
-0.207374371474204, -0.20081258598809804, -0.19506909211314305,
-0.18999710658884306, -0.18547850780246344, -0.1814082218314046,
-0.17773500535142794, -0.17437301235038127, -0.16976766360676754},
{-1.2611009059787637, -0.7688086928952451, -0.5261972315777899,
-0.4135038489144387, -0.3501244557905481, -0.30883772320974945,
-0.28489275235834777, -0.26377632833607123, -0.2474775040378816,
-0.2344804499999218, -0.22383125319115793, -0.21492753663649067,
-0.20733616387302467, -0.20077644756145618, -0.1950347264161323,
-0.18996427665007198, -0.18544702206633135, -0.18137792625946725,
-0.17770576845319752, -0.17434472631638132, -0.16974194466068804},
{-1.2611716490688607, -0.76859839478912, -0.5260353895826979,
-0.4133869343207821, -0.35003360270377737, -0.3087489027879857,
-0.2848277108982198, -0.2637186183049218, -0.24742570803090214,
-0.23443323530172622, -0.22378767274305833, -0.21488690601375682,
-0.20729798296701452, -0.20074033441372752, -0.1950003847929178,
-0.1899314697385419, -0.18541555844322088, -0.18134765199738156,
-0.1776765521523913, -0.17431646022958036, -0.16971639081516265},
{-1.2612412824095947, -0.7683880040505018, -0.5258736231394125,
-0.4132700912985525, -0.3499428092450336, -0.30866000654719983,
-0.2847627092314755, -0.2636609482487393, -0.24737394811899316,
-0.23438605352234188, -0.22374412270520994, -0.21484630374862057,
-0.2072598287355425, -0.20070424652582863, -0.1949660672259501,
-0.18989868583733038, -0.18538411691740864, -0.18131739903038513,
-0.17764735643483398, -0.17428821407605488, -0.1696910177881228},
{-1.2613098085911396, -0.768177521351608, -0.5257119322873176,
-0.4131533198097723, -0.34985207536950513, -0.3085710367278378,
-0.28469774736044595, -0.2636033181345634, -0.24732222427163464,
-0.23433890463467266, -0.22370060305232142, -0.21480572981867585,
-0.2072217011581059, -0.20066818387891372, -0.19493177369754777,
-0.18986592492999765, -0.1853526974734061, -0.18128716734387051,
-0.1776181812866593, -0.17425998784209806, -0.169665841080763},
{-1.261377230198402, -0.7679669473624189, -0.5255503170652833,
-0.41303661981666284, -0.3497614010321186, -0.3084819955876581,
-0.2846328252874839, -0.2635457279292628, -0.24727053645836472,
-0.23429178861150124, -0.22365711375931197, -0.21476518420172175,
-0.20718360021406745, -0.20063214645394156, -0.1948975041901826,
-0.18983318699969276, -0.1853213000955427, -0.18125695692297716,
-0.1775890266939868, -0.17423178151363095, -0.16964087578905973},
{-1.2614435498109946, -0.7677562827505668, -0.5253887775118173,
-0.4129199912814059, -0.34967078618791225, -0.3083928854004734,
-0.28456794301457755, -0.263488177599994, -0.24721888464879171,
-0.2342447054258776, -0.22361365480088802, -0.21472466687549474,
-0.20714552588289958, -0.20059613423211564, -0.19486325868627885,
-0.18980047202982497, -0.18528992476832196, -0.18122676775317004,
-0.17755989264275662, -0.17420359507691074, -0.16961613643052464},
{-1.2615087700033303, -0.767545528181496, -0.5252273136650041,
-0.4128034341658746, -0.34958023079217204, -0.3083037084544653,
-0.2845031005435872, -0.2634306671137372, -0.24716726881260875,
-0.23419765505087886, -0.22357022615217437, -0.21468417781788185,
-0.20710747814426522, -0.20056014719481352, -0.19482903716843847,
-0.18976778000385197, -0.18525857147651603, -0.18119659981985947,
-0.17753077911955328, -0.17417542851813783, -0.1695916367903405},
{-1.2615728933445514, -0.7673346843183402, -0.5250659255624996,
-0.41268694843230813, -0.34948973479999657, -0.3082144670508513,
-0.2844382978759801, -0.2633731964378261, -0.24711568891958846,
-0.2341506374595892, -0.22352682778801602, -0.21464371700659202,
-0.20706945697788237, -0.2005241853231361, -0.19479483961916433,
-0.18973511090539574, -0.18522724020452852, -0.18116645310853974,
-0.17750168611030182, -0.1741472818233265, -0.16956738978724228},
{-1.2616359223985825, -0.767123751821948, -0.5249046132416135,
-0.41257053404255295, -0.3493992981668037, -0.3081251635022668,
-0.28437353501296414, -0.26331576553936475, -0.24706414493947415,
-0.2341036526253859, -0.22348345968358174, -0.21460328441973564,
-0.2070314623633669, -0.20048824859849157, -0.194760666021065,
-0.1897024647180019, -0.18519593093727194, -0.1811363276048672,
-0.17747261360144595, -0.1741191549784662, -0.16954340736022822},
{-1.2616978597241166, -0.7669127313510049, -0.5247433767391301,
-0.4124541909585937, -0.34930892084766274, -0.3080358001312695,
-0.28430881195573976, -0.26325837438578237, -0.24701263684221608,
-0.23405670052151173, -0.22344012181383777, -0.21456288003523838,
-0.2069934942805567, -0.20045233700231035, -0.19472651635686677,
-0.1896698414252187, -0.1851646436593568, -0.18110622329422243,
-0.1774435615794796, -0.1740910479689104, -0.16951970037637976},
{-1.2617587078746595, -0.7667016235619015, -0.5245822160915377,
-0.4123379191424039, -0.3492186027979294, -0.30794637926887525,
-0.2842441287050743, -0.26320102294434866, -0.24696116459763262,
-0.23400978112136217, -0.2233968141541185, -0.21452250383120797,
-0.20695555270916044, -0.2004164505161099, -0.19469239060928656,
-0.18963724101073343, -0.1851333783556215, -0.18107614016233997,
-0.17741453003053698, -0.17406296077923322, -0.1694962785584493},
{-1.2618184693984773, -0.7664904291088219, -0.5244211313349045,
-0.4122217185557693, -0.34912834397310055, -0.3078569032533789,
-0.2841794852615127, -0.26314371118262914, -0.2469097281757664,
-0.23396289439850815, -0.22335353667954028, -0.214482155785777,
-0.20691763762919546, -0.20038058912141699, -0.19465828876108437,
-0.1896046634583497, -0.18510213501103756, -0.18104607819492857,
-0.17738551894144372, -0.17403489339083977, -0.16947315043253486},
{-1.2618771468387227, -0.7662791486437093, -0.5242601225048682,
-0.4121055891605936, -0.34903814432844493, -0.307767374428912,
-0.2841148816256087, -0.2630864390680787, -0.24685832754673287,
-0.23391604032648372, -0.22331028936545705, -0.21444183587696086,
-0.20687974902064354, -0.20034475279980946, -0.1946242107950762,
-0.18957210875181252, -0.18507091361037054, -0.18101603737769034,
-0.17735652829844373, -0.17400684577724457, -0.16945032329370546},
{-1.2619347427332435, -0.766067782816285, -0.5240991896366278,
-0.41198953091860524, -0.3489480038196322, -0.30767779514427973,
-0.28405031779719137, -0.26302920656817586, -0.24680696268048097,
-0.2338692188789553, -0.22326707218711395, -0.21440154408310974,
-0.20684188686343719, -0.2003089415328625, -0.1945901566941095,
-0.1895395768749677, -0.1850397141386777, -0.18098601769653255,
-0.17732755808824407, -0.173978817888627, -0.16942780318853368},
{-1.261991259614822, -0.7658563322740946, -0.5239383327650997,
-0.41187354379159347, -0.3488579224020172, -0.3075881677514505,
-0.2839857937762975, -0.26297201365062994, -0.24675563354731533,
-0.23382243002961367, -0.2232238851201438, -0.2143612803825583,
-0.20680405113764389, -0.20027315530250256, -0.19455612644117526,
-0.18950706781165305, -0.18500853658093908, -0.18095601913718706,
-0.17729860829760113, -0.17395080961735188, -0.1694055949128943},
{-1.2620467000110398, -0.7656447976624863, -0.523777551924723,
-0.4117576277413604, -0.3487679000311199, -0.3074984946045558,
-0.2839213095625879, -0.2629148602830975, -0.2467043401173994,
-0.23377567375234953, -0.22318072813980994, -0.2143210447535555,
-0.20676624182337688, -0.20023739409034658, -0.1945221200191276,
-0.18947458154578323, -0.18497738092240024, -0.18092604168559312,
-0.17726967891301415, -0.17392282073128307, -0.16938370202359776},
{-1.2621010664443273, -0.7654331796245961, -0.523616847149573,
-0.411641782729502, -0.3486779366626944, -0.30740877805830547,
-0.2838568651554896, -0.26285774643343096, -0.24665308236106975,
-0.23372895002109484, -0.22313760122185267, -0.2142808371746585,
-0.20672845890090796, -0.2002016578784005, -0.19448813741108717,
-0.18944211806155709, -0.18494624714802832, -0.1808960853278383,
-0.17724076992139626, -0.173894850766517, -0.1693621268612171},
{-1.262154361431969, -0.7652214788013454, -0.5234562184732858,
-0.4115260087177459, -0.3485880322522785, -0.30731902046744386,
-0.2837924605542854, -0.26280067206930946, -0.2466018602486315,
-0.2336822588097789, -0.22309450434174094, -0.21424065762415756,
-0.20669070235052533, -0.20016594664853038, -0.1944541786000502,
-0.18940967734280445, -0.18491513524296366, -0.18086615004973483,
-0.17721188130950427, -0.17386689887539974, -0.16934087058470615},
{-1.2622065874861084, -0.765009695831532, -0.5232956659291559,
-0.4114103056676379, -0.34849818675571287, -0.30722922418528853,
-0.28372809575779545, -0.26274363715868754, -0.24655067375049544,
-0.23363560009253037, -0.22305143747539846, -0.2142005060807568,
-0.20665297215236178, -0.20013026038269244, -0.19442024356913112,
-0.18937725937384142, -0.1848840451926157, -0.1808362358375315,
-0.17718301306425932, -0.1738389636368436, -0.16931993321346805},
{-1.262257747113787, -0.7647978313518169, -0.5231351895501557,
-0.41129467354084914, -0.3484084001286645, -0.307139391562516,
-0.28366377076482463, -0.2626866416695006, -0.24649952283717091,
-0.2335889738434198, -0.22300840059833815, -0.21416038252299519,
-0.206615268287055, -0.20009459906287663, -0.19438633230150737,
-0.18934486413879537, -0.18485297698227887, -0.18080634267709472,
-0.17715416517248395, -0.17381104283808346, -0.16929931367688855},
{-1.2623078428168966, -0.764585885996607, -0.5229747893687866,
-0.41117911229891035, -0.34831867232681546, -0.3070495249462093,
-0.28359948557399184, -0.2626296855697845, -0.2464484074790807,
-0.2335423800367935, -0.22296539368648505, -0.21412028692946805,
-0.20657759073483328, -0.20005896267125944, -0.19435244478038527,
-0.1893124916217923, -0.1848219305971206, -0.18077647055489576,
-0.17712533762124139, -0.17378313324849426, -0.1692790098706367},
{-1.2623568770922702, -0.7643738603982231, -0.5228144654171363,
-0.41106362190332346, -0.3482290033062032, -0.30695962667893895,
-0.2835352401836557, -0.26257276882755054, -0.24639732764695177,
-0.2334958186468694, -0.22292241671591428, -0.214080219279011,
-0.20653993947625837, -0.20002335119005243, -0.19431858098898935,
-0.18928014180718078, -0.18479090602287007, -0.18074661945701243,
-0.17709653039769524, -0.1737552304026182, -0.1692590187160028},
{-1.2624048524315845, -0.7641617551868072, -0.5226542177270272,
-0.41094820231572937, -0.34813939302261954, -0.30686969909770667,
-0.28347103459185297, -0.2625158914109216, -0.24634628331137742,
-0.23344928964809242, -0.222879469662415, -0.21404017955023047,
-0.2065023144919147, -0.19998776460139656, -0.19428474091086434,
-0.1892478146793315, -0.1847599032445335, -0.18071678936956692,
-0.17706774348863918, -0.17372732841018257, -0.16923933622382625},
{-1.2624517713214791, -0.7639495709903736, -0.5224940463298486,
-0.4108328534974479, -0.34804984143214135, -0.30677974453317525,
-0.28340686879653276, -0.2624590532882176, -0.24629527444312593,
-0.23340279301490474, -0.22283655250220713, -0.21400016772225516,
-0.20646471576247905, -0.19995220288776405, -0.1942509245290931,
-0.189215510222835, -0.18472892224797333, -0.18068698027917396,
-0.17703897688140646, -0.17369941980941928, -0.1692199575601001},
{-1.2624976362434788, -0.7637373084347991, -0.5223339512565288,
-0.41071757540996945, -0.3479603484905658, -0.30668976530829406,
-0.2833427427952251, -0.2624022544275393, -0.2462443010128692,
-0.23335632872186451, -0.22279366521134936, -0.2139601837737266,
-0.20642714326855227, -0.19991666603129454, -0.19421713182718925,
-0.1891832284217898, -0.18469796301865804, -0.18065719217199616,
-0.17701023056316734, -0.17367149547182992, -0.16920087711290588},
{-1.262542449674119, -0.7635249681438938, -0.5221739325378161,
-0.4106023680147497, -0.3478709141539942, -0.30659976373778974,
-0.2832786565855101, -0.26234549479728564, -0.24619336299146877,
-0.2333098967435432, -0.2227508077660798, -0.21392022768370067,
-0.20638959699086667, -0.19988115401451534, -0.1941833627886549,
-0.18915096926104447, -0.18466702554209125, -0.18062742503450258,
-0.1769815045212404, -0.17364354456552977, -0.16918208856015715},
{-1.2625862140847501, -0.7633125507392371, -0.5220139902038841,
-0.4104872312730605, -0.3477815383785785, -0.30650974212709814,
-0.2832146101645949, -0.26228877436577047, -0.2461424603498048,
-0.23326349705470895, -0.22270798014275783, -0.21388029943122655,
-0.2063520769101741, -0.1998456668198716, -0.19414961739692904,
-0.1891187327249897, -0.18463610980398748, -0.18059767885315425,
-0.17695279874287673, -0.1736155545769389, -0.16916358493616368},
{-1.2626289319417892, -0.763100056840424, -0.5218541242846944,
-0.41037216514644603, -0.3476922211203832, -0.3064197027718145,
-0.28315060352967736, -0.2622320931014901, -0.2460915930588996,
-0.23321712963008157, -0.22266518231768684, -0.21384039899527485,
-0.20631458300757277, -0.19981020442998298, -0.19411589563561416,
-0.18908651879844385, -0.1846052157900795, -0.180567953614434,
-0.17692411321541446, -0.173587511388265, -0.16914535869898284},
{-1.2626706057065271, -0.7628874870648508, -0.5216943348097631,
-0.41025716959604397, -0.34760296233580323, -0.3063296479567863,
-0.2830866366774636, -0.2621754509729586, -0.24604076108978168,
-0.23317079444461086, -0.2226224142674238, -0.21380052635518165,
-0.20627711526392378, -0.199774766827423, -0.19408219748849342,
-0.1890543274660672, -0.18457434348605917, -0.1805382493052119,
-0.17689544792620548, -0.1735593994052138, -0.1691274017944271},
{-1.262711237835292, -0.7626748420278697, -0.5215346218082804,
-0.41014224458330384, -0.34751376198088746, -0.30623957995512985,
-0.28302270960462605, -0.2621188479487113, -0.24598996441346133,
-0.23312449147303527, -0.22257967596849548, -0.2137606814899149,
-0.20623967366009888, -0.1997393539948389, -0.19404852293901076,
-0.1890221587126999, -0.18454349287776273, -0.18050856591169628,
-0.17686680286284107, -0.17353120172658576, -0.16910970571951767},
{-1.2627508307793323, -0.7624621223427264, -0.5213749853090119,
-0.4100273900694984, -0.3474246200118687, -0.3061495010276176,
-0.2829588223076165, -0.2620622839973783, -0.24593920300101502,
-0.23307822069054396, -0.2225369673974522, -0.2137208643789572,
-0.20620225817728688, -0.1997039659149471, -0.19401487197087564,
-0.18899001252302527, -0.18451266395092958, -0.18047890342087936,
-0.17683817801275525, -0.17350290034865878, -0.16909226158338564},
{-1.26278938698494, -0.762249328620608, -0.5212154253404262,
-0.40991260601578716, -0.3473355363852826, -0.3060594134221075,
-0.2828949747827587, -0.26200575908756374, -0.24588847682378479,
-0.23303198207207876, -0.22249428853119646, -0.2136810750015603,
-0.2061648687966149, -0.19966860257063823, -0.1939812445680129,
-0.18895788888200604, -0.18448185669171746, -0.1804492618194815,
-0.1768095733636117, -0.17347447639271518, -0.16907506016520735},
{-1.2628269088933504, -0.7620364614706214, -0.5210559419306446,
-0.4097978923835721, -0.3472465110573797, -0.30596931937272753,
-0.28283116702608035, -0.2619492731881956, -0.24583778585304028,
-0.23298577559277334, -0.22245163934640377, -0.21364131333697367,
-0.20612750549928727, -0.19963326394471315, -0.19394764071424353,
-0.18892578777478164, -0.1844510710857854, -0.18041964109416364,
-0.1767809889028955, -0.17344591034851264, -0.16905809197037192},
{-1.2628633989408584, -0.7618235214997651, -0.5208965351073558,
-0.4096832491338769, -0.3471575439847401, -0.30587922109950405,
-0.2827673990334456, -0.26189282626793275, -0.24578713005995523,
-0.23293960122793766, -0.22240901981999261, -0.2136015793648296,
-0.20609016826655946, -0.1995979500201197, -0.193914060393237,
-0.1888937091863201, -0.18442030711927782, -0.18039004123199165,
-0.17675242461836538, -0.17341718232601222, -0.16904134728256226},
{-1.262898859558723, -0.7616105093130605, -0.5207372048979471,
-0.4095686762280031, -0.34706863512379726, -0.305789120807229,
-0.28270367080046643, -0.261836418295768, -0.24573650941602976,
-0.23289345895272984, -0.22236642992898403, -0.21356187306451568,
-0.2060528570797726, -0.19956266077979024, -0.19388050358917885,
-0.18886165310158098, -0.18438956477835156, -0.18036046221965174,
-0.1767238804977711, -0.17338827230512388, -0.16902481621408016},
{-1.2629332931732762, -0.7613974255134048, -0.5205779513294924,
-0.40945417362715064, -0.3469797844310105, -0.30569902068528565,
-0.2826399823227943, -0.26178004924054354, -0.2456859238926823,
-0.23284734874265034, -0.22232386965036355, -0.2135221944157375,
-0.2060155719203034, -0.19952739620678095, -0.19384697028593267,
-0.18882961950579968, -0.18435884404896496, -0.18033090404434526,
-0.17669535652879453, -0.17335916038032595, -0.1690084887519987},
{-1.2629667022058446, -0.7611842707017169, -0.5204187744286117,
-0.40933974129240003, -0.3468909918631171, -0.30560892290678154,
-0.2825763335956353, -0.2617237190713464, -0.24563537346134012,
-0.2328012705730238, -0.22228133896135116, -0.2134825433979466,
-0.2059783127697581, -0.19949215628422357, -0.19381346046753212,
-0.1887976083842906, -0.18432814491744232, -0.1803013666930231,
-0.1766668526993449, -0.1733298269919712, -0.16899235480194674},
{-1.2629990890728509, -0.7609710454767717, -0.5202596742216739,
-0.40922537918492896, -0.3468022573767162, -0.30551882962838794,
-0.2825127246143473, -0.2616674277572004, -0.24558485809379071,
-0.23275522441933472, -0.22223883783922327, -0.2134429199909884,
-0.20594107960955066, -0.19945694099528222, -0.19377997411803216,
-0.18876561972231443, -0.18429746736993025, -0.18027185015275826,
-0.17663836899721863, -0.17330025314230113, -0.16897640422843008},
{-1.2630304561856762, -0.7607577504354177, -0.5201006507346371,
-0.4091110872657704, -0.34671358092861393, -0.30542874298960765,
-0.2824491553735853, -0.26161117526718414, -0.2455343777613983,
-0.23270921025720925, -0.22219636626111328, -0.21340332417448993,
-0.20590387242130692, -0.19942175032318143, -0.19374651122166409,
-0.18873365350520244, -0.1842668113926771, -0.1802423544108156,
-0.17660990541031163, -0.17327042059178854, -0.1689606268926389},
{-1.2630608059508774, -0.7605443861724324, -0.5199417039931689,
-0.4089968654960643, -0.3466249624754312, -0.3053386651122665,
-0.2823856258683426, -0.26155496157056035, -0.24548393243605204,
-0.23266322806216344, -0.222153924204755, -0.2133637559284205,
-0.20586669118675793, -0.19938658425115197, -0.19371307176250996,
-0.1887017097183108, -0.1842361769720111, -0.18021287945422237,
-0.17658146192667923, -0.17324031203314938, -0.16894501268612494},
{-1.2630901407699895, -0.7603309532805957, -0.5197828340225485,
-0.4088827138368969, -0.346536401973931, -0.3052485980999369,
-0.2823221360932293, -0.2614987866364804, -0.24543352208935554,
-0.232617277809974, -0.22211151164737108, -0.21332421523256695,
-0.2058295358874882, -0.19935144276246541, -0.19367965572490098,
-0.1886697883471422, -0.1842055640944511, -0.1801834252704313,
-0.17655303853426796, -0.17320991124406593, -0.16892955156326206},
{-1.263118463039707, -0.7601174523506962, -0.5196240408477513,
-0.40876863224930915, -0.3464478993812157, -0.30515854403771625,
-0.2822586860427676, -0.26144265043446113, -0.2453831466933054,
-0.23257135947650998, -0.22206912856671046, -0.21328470206704475,
-0.2057924065055441, -0.19931632584071624, -0.19364626309311506,
-0.18863788937724246, -0.184174972746467, -0.18015399184674585,
-0.17652463522122241, -0.17317920321473412, -0.16891423356900281},
{-1.2631457751517674, -0.759903883971413, -0.5194653244933978,
-0.4086546206943318, -0.3463594546539501, -0.305068504991727,
-0.282195275711258, -0.26138655293365254, -0.24533280621967224,
-0.23252547303732252, -0.22202677494032086, -0.21324521641163496,
-0.20575530302266154, -0.1992812334692493, -0.1936128938514612,
-0.1886060127940885, -0.18414440291429957, -0.1801245791705024,
-0.17649625197559038, -0.17314817425314288, -0.16889904886520668},
{-1.2631720794929922, -0.7596902487295625, -0.5193066849837158,
-0.40854067913294667, -0.3462710677493952, -0.3049784830089597,
-0.28213190509283015, -0.26133049410359144, -0.24528250064040646,
-0.23247961846854537, -0.22198445074614703, -0.2132057582466773,
-0.20571822542076657, -0.19924616563154673, -0.19357954798435495,
-0.18857415858362492, -0.18411385458480334, -0.18009518722911322,
-0.17646788878549557, -0.173116812067442, -0.1688839877541155},
{-1.263197378445339, -0.7594765472099008, -0.5191481223427399,
-0.40842680752620186, -0.3461827386243854, -0.30488848011630587,
-0.2820685741814275, -0.26127447391375025, -0.2452322299275278,
-0.23243379574603873, -0.22194215596194677, -0.21316632755217801,
-0.20568117368181138, -0.1992111223110542, -0.1935462254763265,
-0.18854232673131843, -0.18408332774448644, -0.18006581601022864,
-0.1764395456392367, -0.17308510582574677, -0.16886904069848185},
{-1.263221674385901, -0.7592627799952125, -0.5189896365940849,
-0.408313005835097, -0.3460944672359316, -0.30479849832075834,
-0.28200528297097494, -0.26121849233377104, -0.24518199405307906,
-0.23238800484580802, -0.22189989056559645, -0.2131269243084466,
-0.20564414778804085, -0.19917610349151627, -0.19351292631176253,
-0.18851051722303325, -0.18405282237993825, -0.18003646550125474,
-0.1764112225248926, -0.17305304619667172, -0.16885419834048898},
{-1.2632449696868664, -0.7590489476663378, -0.518831227760967,
-0.4081992740205247, -0.34600625354134795, -0.30470853960873656,
-0.28194203145529384, -0.26116254933314753, -0.24513179298926024,
-0.23234224574398477, -0.22185765453528505, -0.21308754849579792,
-0.20560714772139832, -0.1991411091565065, -0.19347965047530558,
-0.18847873004450033, -0.18402233847813987, -0.18000713569004345,
-0.17638291943103646, -0.17302062537017848, -0.16883945151694402},
{-1.2632672667155318, -0.7588350508020689, -0.5186728958664055,
-0.4080856120436289, -0.34591809749773894, -0.3046186059461151,
-0.28187881962785477, -0.2611066448815422, -0.24508162670826206,
-0.23229651841671117, -0.22181544784894847, -0.21304820009451708,
-0.20557017346419126, -0.1991061392897726, -0.19344639795165453,
-0.18844696518163717, -0.1839918760255146, -0.17997782656393735,
-0.176354636345748, -0.1729878370611, -0.168824791273551},
{-1.2632885678344377, -0.7586210899792978, -0.5185146409330232,
-0.4079720198650896, -0.3458299990624556, -0.30452869927783377,
-0.2818156474822091, -0.26105077894888273, -0.24503149518238132,
-0.23225082284027065, -0.22177327048507545, -0.2130088790852458,
-0.20553322499875426, -0.19907119387530026, -0.19341316872561043,
-0.18841522262072452, -0.18396143500929218, -0.17994853811115696,
-0.1763263732576701, -0.17295467649795304, -0.16881020887657172},
{-1.263308875401169, -0.7584070657729396, -0.5183564629831281,
-0.407858497446004, -0.3457419581926846, -0.30443882152734414,
-0.2817525150115272, -0.2609949515047312, -0.2449813983838367,
-0.2322051589907681, -0.22173112242162318, -0.21296958544831224,
-0.20549630230716742, -0.19903627289645076, -0.1933799627814321,
-0.18838350234721224, -0.18393101541598744, -0.17991927031897692,
-0.1762981301548514, -0.17292114039676498, -0.16879569582166987},
{-1.2633281917685681, -0.7581929787559933, -0.5181983620387074,
-0.40774504474734163, -0.3456539748457783, -0.3043489745965742,
-0.2816894222090931, -0.26093916251904314, -0.24493133628514796,
-0.23215952684466146, -0.22168900363711375, -0.21293031916431948,
-0.20545940537191987, -0.1990013763373506, -0.19334678010429673,
-0.1883518043474428, -0.18390061723272266, -0.17989002317558977,
-0.1762699070260374, -0.17288722692452074, -0.1687812438433003},
{-1.2633465192845377, -0.7579788294994458, -0.5180403381214185,
-0.40763166172978504, -0.34556604897915966, -0.3042591603656355,
-0.28162636906792393, -0.260883411961657, -0.24488130885866166,
-0.23211392637831363, -0.22164691411006965, -0.21289108021388792,
-0.2054225341754461, -0.19896650418175854, -0.19331362067889568,
-0.1883201286074323, -0.18387024044647227, -0.1798607966686956,
-0.17624170385978966, -0.17285293565141702, -0.16876684491972282},
{-1.2633638602922908, -0.757764618572419, -0.5178823912526624,
-0.40751834835449774, -0.3454781805503222, -0.30416938069272925,
-0.2815633555810795, -0.26082769980253584, -0.24483131607702413,
-0.23206835756816968, -0.22160485381891792, -0.21285186857783733,
-0.20538568870027873, -0.19893165641371535, -0.19328048449024138,
-0.18828847511333446, -0.18383988504414805, -0.17983159078630662,
-0.17621352064436424, -0.1728182674944363, -0.1687524912786338},
{-1.2633802171301354, -0.7575503465420528, -0.5177245214534074,
-0.4074051045821694, -0.34539036951697266, -0.3040796374142358,
-0.28150038174124026, -0.26077202601172944, -0.2447813579127902,
-0.2320228203909207, -0.22156282274232453, -0.21281268423687028,
-0.20534886892907922, -0.19889683301735372, -0.193247371523261,
-0.18825684385156327, -0.18380955101307483, -0.17980240551668336,
-0.1761853573687504, -0.17278322465520057, -0.16873817540072977},
{-1.263395592131603, -0.7573360139735945, -0.5175667287444226,
-0.40729193037378364, -0.3453026158364638, -0.303989932343665,
-0.2814374475411965, -0.2607163905592116, -0.24473143433867772,
-0.23197731482292028, -0.22152082085908908, -0.21277352717188913,
-0.20531207484431047, -0.19886203397661273, -0.19321428176303002,
-0.1882252348082325, -0.18377923834036647, -0.1797732408475512,
-0.17615721402155637, -0.17274781055016852, -0.1687238900209831},
{-1.2634099876254523, -0.7571216214303556, -0.5174090131460698,
-0.4071788256902158, -0.3452149194663714, -0.3039002672720854,
-0.2813745529735283, -0.2606607934150853, -0.24468154532727926,
-0.2319318408410158, -0.22147884814783358, -0.2127343973637057,
-0.20527530642881775, -0.19882725927544076, -0.19318121519458042,
-0.1881936479697277, -0.18374894701302846, -0.17974409676722258,
-0.1761290905912407, -0.17271202973895017, -0.1687096281314311},
{-1.263423405935662, -0.7569071694737308, -0.5172513746784508,
-0.40706579049217106, -0.34512728036459883, -0.3038106439680419,
-0.2813116980307946, -0.2606052345494776, -0.24463169085151648,
-0.2318863984217292, -0.22143690458754595, -0.21269529479338534,
-0.2052385636652283, -0.19879250889829292, -0.19314817180300992,
-0.18816208332227857, -0.1837186770186401, -0.17971497326385544,
-0.1761009870668473, -0.17267588784755805, -0.16869538298012277},
{-1.2634358493814108, -0.7566926586632416, -0.5170938133613818,
-0.4069528247407539, -0.3450396984888, -0.30372106417730604,
-0.2812488827054902, -0.26054971393261406, -0.24458187088428485,
-0.2318409875418781, -0.22139499015707775, -0.21265621944185886,
-0.2052018465365406, -0.19875778282920997, -0.19311515157363557,
-0.1881305408524332, -0.1836884283442335, -0.17968587032558414,
-0.17607290343706294, -0.17263939149112373, -0.16868114807140433},
{-1.2634473202771392, -0.7564780895564631, -0.5169363292142992,
-0.4068399283965243, -0.3449521737969463, -0.3036315296226455,
-0.2811861069896855, -0.2604942315346843, -0.24453208539839588,
-0.23179560817844846, -0.22135310483555815, -0.21261717129036528,
-0.2051651550256035, -0.19872308105235215, -0.1930821544916812,
-0.1880990205467712, -0.1836582009774821, -0.17965678794100626,
-0.1760448396907286, -0.1726025481951834, -0.16866691716453142},
{-1.263457820932493, -0.7562634627091347, -0.5167789222564352,
-0.4067271014205014, -0.34486470624670407, -0.3035420420039059,
-0.2811233708756382, -0.26043878732598147, -0.2444823343670044,
-0.23175026030813584, -0.22131124860205853, -0.2125781503199029,
-0.20512848911535952, -0.19868840355224915, -0.19304918054239018,
-0.18806752239167146, -0.18362799490553927, -0.1796277260980994,
-0.17601679581682905, -0.17256536631632713, -0.16865268427145486},
{-1.2634673536524312, -0.75604877867507, -0.5166215925066058,
-0.4066143437735623, -0.34477729579596117, -0.3034526029977931,
-0.28106067435560167, -0.2603833812767915, -0.2444326177630809,
-0.23170494390797192, -0.2212694214357387, -0.2125391565120034,
-0.20509184878878584, -0.1986537503131709, -0.19301622971130117,
-0.18803604637379046, -0.18359781011619303, -0.17959868478544427,
-0.1759887718043407, -0.1725278549644318, -0.16863844365483605},
{-1.2634759207371105, -0.7558340380062165, -0.516464339983377,
-0.4065016554163656, -0.34468994240296436, -0.3033632142576206,
-0.2809980174214948, -0.2603280133574275, -0.24438293555982327,
-0.23165965895505503, -0.22122762331592272, -0.21250018984752428,
-0.20505523402905057, -0.19861912131940018, -0.19298330198380986,
-0.18800459247976997, -0.1835676465968752, -0.1795696639914346,
-0.17596076764222612, -0.17249002392472113, -0.16862418982426908},
{-1.2634835244820366, -0.7556192412526399, -0.5163071647050845,
-0.4063890363098892, -0.34460264602552826, -0.303273877413778,
-0.28093540006546336, -0.2602726835383713, -0.24433328773049556,
-0.2316144054263649, -0.22118585422185566, -0.21246125030803942,
-0.20501864481942933, -0.19858451655551645, -0.1929503973454283,
-0.18797316069629533, -0.18353750433515392, -0.179540663704711,
-0.17593278331957318, -0.17245188358384222, -0.16860991753395815},
{-1.2634901671779155, -0.7554043889625321, -0.5161500666896148,
-0.4062764864147712, -0.34451540662198044, -0.3031845940732918,
-0.28087282227906885, -0.26021739178990977, -0.24428367424826725,
-0.23156918329897147, -0.22114411413290247, -0.21242233787500941,
-0.20498208114299077, -0.19854993600603255, -0.19291751578170535,
-0.18794175101009625, -0.18350738331891447, -0.17951168391355443,
-0.17590481882543596, -0.17241344485526255, -0.16859562177821275},
{-1.2634958511107894, -0.7551894816822735, -0.5159930459546942,
-0.4061640056919633, -0.3444282241502581, -0.3030953658197908,
-0.2808102840542208, -0.2601621380825452, -0.24423409508657556,
-0.23152399255009337, -0.22110240302877715, -0.21238345252981805,
-0.2049455429830216, -0.19851537965549682, -0.19288465727832538,
-0.18791036340802947, -0.1834772835356615, -0.1794827246067232,
-0.1758768741490404, -0.17237471910982904, -0.16858129778735664},
{-1.263500578561983, -0.7549745199562958, -0.5158361025177003,
-0.40605159410229197, -0.34434109856858885, -0.3030061942135278,
-0.2807477853825069, -0.26010692238675936, -0.24418455021887775,
-0.23147883315697193, -0.22106072088874162, -0.21234459425405827,
-0.20490903032310515, -0.1984808474884847, -0.19285182182102512,
-0.18787899787686202, -0.18344720497338862, -0.17945378577298454,
-0.17584894927972305, -0.17233571810787218, -0.16856694102384662},
{-1.263504351808154, -0.7547595043273101, -0.5156792363957257,
-0.40593925160647304, -0.3442540298354895, -0.30291708079143476,
-0.2806853262558091, -0.2600517446731194, -0.2441350396185582,
-0.231433705096995, -0.22101906769274393, -0.21230576302937232,
-0.20487254314649173, -0.19844633948970447, -0.19281900939561725,
-0.1878476544035741, -0.183417147620069, -0.1794248674008676,
-0.17582104420662992, -0.17229645393437032, -0.16855254717733814},
{-1.2635071731212415, -0.754544435336062, -0.5155224476055129,
-0.40582697816535873, -0.34416701790912585, -0.30282802706708,
-0.28062290666545975, -0.2599966049120894, -0.2440855632594512,
-0.2313886083472676, -0.22097744342024672, -0.21226695883726254,
-0.2048360814368695, -0.19841185564385588, -0.19278621998782386,
-0.18781633297512457, -0.18338711146317888, -0.1793959694790659,
-0.1757931589191135, -0.17225693893786476, -0.16853811215968184},
{-1.2635090447685222, -0.7543293135214988, -0.5153657361636266,
-0.4057147737397018, -0.3440800627479974, -0.302739034530886,
-0.2805605266029336, -0.2599415030743284, -0.24403612111500417,
-0.2313435428854782, -0.2209358480512016, -0.21222818165967317,
-0.20479964517757532, -0.19837739593566317, -0.19275345358369433,
-0.18778503357864862, -0.18335709649132914, -0.17936709199661083,
-0.17576529340658098, -0.17221718567290356, -0.16852363210053412},
{-1.2635099690125942, -0.7541141394207795, -0.5152091020862728,
-0.4056026382904103, -0.34399316431044946, -0.3026501046497003,
-0.2804981860595759, -0.25988643913043186, -0.24398671315897058,
-0.23129850868886104, -0.22089428156528168, -0.21218943147826774,
-0.20476323435248167, -0.1983429603499669, -0.19272071016915104,
-0.18775375620106471, -0.18332710269217634, -0.17933823494202228,
-0.17573744765843902, -0.1721772068448182, -0.16850910334160263},
{-1.2635099481114735, -0.7538989135692173, -0.5150525453893984,
-0.4054905717781967, -0.3439063225550312, -0.3025612388670065,
-0.28043588502672145, -0.2598314130511068, -0.24393733936519135,
-0.23125350573508285, -0.22085274394264598, -0.21215070827487992,
-0.20472684894525495, -0.1983085488717129, -0.19268798973029266,
-0.1877225008297243, -0.18329713005403425, -0.17930939830443693,
-0.17570962166419424, -0.17213701525951786, -0.16849452243157792},
{-1.263508984318419, -0.7536836365003119, -0.5148960660886499,
-0.40537857416387846, -0.3438195374403872, -0.30247243860322204,
-0.28037362349580697, -0.259776424806911, -0.24388799970754782,
-0.23120853400156083, -0.22081123516322743, -0.21211201203159824,
-0.204690488939534, -0.1982741614857102, -0.1926552922531446,
-0.1876912674515645, -0.18326717856508568, -0.17928058207281383,
-0.17568181541345007, -0.1720966237757331, -0.1684798861207213},
{-1.2635070798821002, -0.7534683087456897, -0.5147396641994155,
-0.40526664540837265, -0.34373280892513414, -0.3023837052553584,
-0.2803114014577277, -0.2597214743686451, -0.24383869416004122,
-0.23116359346590798, -0.22076975520699582, -0.21207334273016043,
-0.20465415431941603, -0.1982397981769486, -0.19262261772398093,
-0.1876600560540327, -0.18323724821331977, -0.1792517862360019,
-0.17565402889571402, -0.17205604526034923, -0.1684651913558386},
{-1.2635042370465541, -0.7532529308352254, -0.5145833397367716,
-0.4051547854723321, -0.3436461369681343, -0.30229504019772646,
-0.28024921890378707, -0.25966656170710367, -0.24378942269670256,
-0.23111868410591851, -0.220728304054282, -0.21203470035288952,
-0.20461784506865888, -0.19820545893066743, -0.19258996612911794,
-0.18762886662456868, -0.18320733898742114, -0.17922301078313163,
-0.1756262621006952, -0.1720152925488483, -0.16845043527392445},
{-1.2635004580512263, -0.7530375032969956, -0.514427092715513,
-0.4050429943166267, -0.3435595215279368, -0.302206444781024,
-0.2801870758248022, -0.25961168679296165, -0.24374018529159835,
-0.23107380589917037, -0.22068688168522232, -0.2119960848817648,
-0.20458156117136683, -0.1981711437315843, -0.192557337454776,
-0.18759769915034452, -0.18317745087555126, -0.1791942557031967,
-0.17559851501805657, -0.17197437840662388, -0.16843561519735362},
{-1.2634957451309408, -0.75282202665731, -0.5142709231502383,
-0.4049312719021052, -0.3434729625633448, -0.30211792033314566,
-0.2801249722118877, -0.2595568495970868, -0.24369098191897942,
-0.23102895882359542, -0.22064548808017603, -0.21195749629910177,
-0.20454530261153714, -0.19813685256512814, -0.192524731687433,
-0.18756655361905628, -0.183147583866349, -0.1791655209854932,
-0.17557078763753875, -0.1719333154956999, -0.1684207286277548},
{-1.2634901005158299, -0.7526065014405969, -0.5141148310551249,
-0.40481961818948964, -0.34338646003346396, -0.3020294681589184,
-0.2800629080558328, -0.25950205009037086, -0.2436418125530797,
-0.23098414285676006, -0.22060412321957656, -0.21191893458695077,
-0.20450906937330737, -0.19810258541625858, -0.19249214881344834,
-0.18753543001781114, -0.18311773794816366, -0.17913680661898157,
-0.1755430799490565, -0.17189211634319124, -0.16840577324052575},
{-1.263483526431564, -0.752390928169576, -0.513958816444259,
-0.4047080331397872, -0.3433000138971183, -0.30194108954045706,
-0.2800008833475931, -0.2594472882436394, -0.2435926771682846,
-0.23093935797671605, -0.22056278708369215, -0.21188039972768102,
-0.20447286144081067, -0.19806834227035797, -0.19245958881939007,
-0.1875043283345108, -0.18308791310940276, -0.1791081125930276,
-0.17551539194235044, -0.1718507933130491, -0.16839074687957734},
{-1.2634760250991248, -0.752175307365184, -0.5138028793313012,
-0.4045965167135783, -0.34321362411348666, -0.30185278573737584,
-0.2799388980777273, -0.25939256402792843, -0.24354357573911267,
-0.2308946041612896, -0.22052147965317737, -0.2118418917038123,
-0.20443667879842176, -0.19803412311274382, -0.1924270516919364,
-0.18747324855670522, -0.1830581093390573, -0.17907943889705225,
-0.17548772360740772, -0.17180935858146018, -0.16837564755138779},
{-1.2634675987349864, -0.7519596395465742, -0.5136470197297021,
-0.4044850688719004, -0.3431272906414735, -0.3017645579862567,
-0.2798769522369855, -0.25933787741398495, -0.24349450823997154,
-0.2308498813884703, -0.22048020090874987, -0.21180341049766715,
-0.20440052143044563, -0.19799992792868526, -0.19239453741761725,
-0.18744219067200696, -0.18302832662549706, -0.17905078552009712,
-0.17546007493418703, -0.1717678241130729, -0.16836047341889238},
{-1.2634582495509936, -0.7517439252310956, -0.5134912376527132,
-0.40437368957549946, -0.343041013440172, -0.3016764075011644,
-0.27981504581593697, -0.2592832283730888, -0.24344547464547972,
-0.23080518963630148, -0.22043895083078535, -0.21176495609188484,
-0.20436438932132717, -0.19796575670354244, -0.19236204598329731,
-0.1874111546682129, -0.1829985649576078, -0.1790221524517155,
-0.17543244591262752, -0.17172620164307428, -0.1683452227975213},
{-1.2634479797544917, -0.7515281649343999, -0.5133355331131564,
-0.4042623787852091, -0.3429547924690244, -0.30158833547393193,
-0.27975317880519324, -0.2592286168760629, -0.24339647493038363,
-0.23076052888279808, -0.22039772940030522, -0.21172652846895046,
-0.20432828245542867, -0.19793160942283938, -0.19232957737556022,
-0.1873801405330826, -0.18296882432425354, -0.17899353968134424,
-0.17540483653297922, -0.1716845026582563, -0.1683298941475675},
{-1.2634367915481994, -0.751312359170371, -0.5131799061237938,
-0.40415113646194945, -0.34286862768713844, -0.3015003430739598,
-0.27969135119520727, -0.2591740428941067, -0.24334750906946034,
-0.23071589910603318, -0.2203565365979676, -0.2116881276113638,
-0.20429220081744282, -0.19789748607207924, -0.19229713158155626,
-0.1873491482544205, -0.1829391047140625, -0.17896494719828748,
-0.1753772467853052, -0.1716427383830199, -0.16831448607061095},
{-1.2634246871303991, -0.7510965084510886, -0.5130243566969432,
-0.4040399625664839, -0.342782519054015, -0.3014124314487425,
-0.27962956297622155, -0.25911950639833936, -0.24329857703748514,
-0.23067130028425709, -0.22031537240471089, -0.21164975350220372,
-0.2042561443918829, -0.19786338663679937, -0.19226470858795697,
-0.18731817782017446, -0.1829094061161891, -0.17893637499240356,
-0.17534967665975376, -0.17160091976638192, -0.16829899730336084},
{-1.263411668694716, -0.7508806132869865, -0.5128688848447864,
-0.40392885705974546, -0.3426964665289467, -0.3013246017234956,
-0.2795678141385385, -0.2590650073598817, -0.24324967880945403,
-0.2306267323956379, -0.22027423680139213, -0.21161140612400198,
-0.2042201131634438, -0.1978293111026468, -0.1922323083818216,
-0.1872872292183625, -0.18287972851943834, -0.1789078230530068,
-0.17532212614665887, -0.1715590574718595, -0.16828342671201302},
{-1.2633977384303599, -0.7506646741866803, -0.5127134905791633,
-0.40381781990262633, -0.34261047007127754, -0.30123685500161423,
-0.27950610467252446, -0.25901054575002913, -0.2432008143603972,
-0.23058219541850455, -0.22023312976916376, -0.21157308545971532,
-0.20418410711678137, -0.19779525945529075, -0.19219993095018273,
-0.18725630243687386, -0.18285007191312097, -0.17887929136999414,
-0.17529459523637048, -0.1715171618686, -0.16826777328798048},
{-1.263382898521948, -0.7504486916570927, -0.5125581739117036,
-0.4037068510559738, -0.3425245296407722, -0.30114919236461324,
-0.2794444345682261, -0.2589561215400007, -0.24315198366534707,
-0.23053768933111707, -0.22019205128892638, -0.2115347914920953,
-0.20414812623697332, -0.19776123168045556, -0.19216757628027015,
-0.18722539746393085, -0.18282043628609923, -0.17885077993280607,
-0.17526708391924295, -0.1714752430245099, -0.16825203614181827},
{-1.2633671511496454, -0.7502326662033869, -0.5124029348537698,
-0.4035959504807658, -0.34243864519691325, -0.3010616148725256,
-0.27938280381597913, -0.2589017347011553, -0.24310318669962339,
-0.23049321411193224, -0.22015100134200738, -0.21149652420429854,
-0.2041121705086839, -0.19772722776386153, -0.19213524435912888,
-0.1871945142877003, -0.18279082162754978, -0.17882228873145056,
-0.17523959218548413, -0.17143331070146495, -0.16823621449880655},
{-1.2633504984890567, -0.7500165983290517, -0.5122477734164872,
-0.40348511813771326, -0.3423528166994654, -0.3009741235642007,
-0.2793212124054243, -0.2588473852048292, -0.24305442343843398,
-0.23044876973934203, -0.22010997990938153, -0.2114582835792036,
-0.20407623991683232, -0.1976932476914941, -0.19210293517397403,
-0.1871636528962437, -0.18276122792664484, -0.17879381775546577,
-0.17521212002570952, -0.17139137435085416, -0.16822030769394125},
{-1.2633329427113629, -0.7498004885358143, -0.5120926896107156,
-0.4033743539879655, -0.3422670441080977, -0.300886719456797,
-0.2792596603266606, -0.2587930730224799, -0.24300569385707416,
-0.23040435619174815, -0.22006898697252408, -0.21142006960016824,
-0.20404033444669167, -0.19765929144908823, -0.19207064871217927,
-0.1871328132778345, -0.1827316551727476, -0.17876536699489964,
-0.17518466743044048, -0.17134944311267297, -0.16820431516686973},
{-1.2633144859832122, -0.7495843373237321, -0.5119376834470422,
-0.4032636579922828, -0.34218132738241636, -0.3007994035464847,
-0.27919814756946204, -0.25873879812554623, -0.24295699793105996,
-0.23035997344780235, -0.2200280225126403, -0.21138188225012433,
-0.2040044540830359, -0.19762535902274259, -0.19203838496102055,
-0.18710199542088546, -0.18270210335502135, -0.17873693643964206,
-0.17515723439030229, -0.17130752581252562, -0.16818823645750225},
{-1.2632951304668212, -0.7493681451911522, -0.5117827549358585,
-0.4031530301116941, -0.3420956664826096, -0.3007121768084806,
-0.27913667412377263, -0.25868456048564603, -0.24290833563594827,
-0.2303156214861608, -0.21998708651129828, -0.21134372151249803,
-0.20396859881124385, -0.19759145039841153, -0.1920061439080758,
-0.18707119931386362, -0.18267257246327073, -0.17870852607967969,
-0.17512982089602325, -0.1712656309631102, -0.1681720712014272},
{-1.2632748783198968, -0.7491519126346782, -0.5116279040872209,
-0.40304247030717155, -0.3420100613684216, -0.30062504019713243,
-0.27907523997923844, -0.2586303600742914, -0.24285970694730175,
-0.23027130028528342, -0.21994617894966728, -0.21130558737047123,
-0.20393276861642606, -0.19755756556208492, -0.19197392554057213,
-0.1870404249449633, -0.18264306248631001, -0.17868013590490683,
-0.1751024269381709, -0.17122376676361029, -0.16815581912482802},
{-1.2632537316957018, -0.7489356401492839, -0.5114731309110438,
-0.40293197853954554, -0.34192451199998564, -0.30053799464652187,
-0.27901384512535277, -0.2585761968631486, -0.24281111184081494,
-0.23022700982409638, -0.21990529980945883, -0.2112674798074936,
-0.2038969634837562, -0.19752370450009593, -0.19194172984620206,
-0.18700967230300414, -0.18261357341393492, -0.17865176590567167,
-0.1750750525074718, -0.17118194110255036, -0.16813948004129653},
{-1.2632316927430853, -0.7487193282282072, -0.5113184354169356,
-0.40282155476993475, -0.34183901833727237, -0.30045104106991394,
-0.27895248955171237, -0.258522070823906, -0.24276255029239113,
-0.23018275008115197, -0.2198644490721926, -0.21122939880715297,
-0.20386118339876447, -0.19748986719842865, -0.19190955681227972,
-0.18697894137650106, -0.18258410523566493, -0.17862341607185872,
-0.17504769759489136, -0.1711401615590349, -0.16812305384615467},
{-1.2632087636064555, -0.7485029773630376, -0.5111638176143107,
-0.4027111989592891, -0.34175358034030534, -0.3003641803603503,
-0.2788911732477586, -0.2584679819285025, -0.24271402227770755,
-0.23013852103542254, -0.21982362671955658, -0.21119134435279197,
-0.20382542834674222, -0.19745605364347796, -0.19187740642693552,
-0.1869482321540321, -0.1825546579410462, -0.17859508639372823,
-0.17502036219112327, -0.17109843540689962, -0.168106540513568},
{-1.2631849464257434, -0.7482865880436975, -0.5110092775122639,
-0.4026009110686126, -0.34166819796949666, -0.30027741339085834,
-0.27882989620300735, -0.25841393014863545, -0.2426655277729135,
-0.23009432266577523, -0.21978283273322807, -0.21115331642809476,
-0.20378969831312332, -0.19742226382150374, -0.19184527867737344,
-0.18691754462430676, -0.18252523151991618, -0.178566776861679,
-0.17499304628720402, -0.17105676961711946, -0.1680899400920337},
{-1.2631602433364781, -0.7480701607583773, -0.5108548151197492,
-0.40249069105902313, -0.3415828711849387, -0.3001907410144926,
-0.2787686584066984, -0.2583599154561962, -0.24261706675400774,
-0.23005015495098347, -0.21974206709500832, -0.21111531501671044,
-0.20375399328353172, -0.1973884977188387, -0.19181317355166616,
-0.18688687877621302, -0.182495825961432, -0.17853848746571366,
-0.1749657498740982, -0.1710151708628027, -0.16807325270026485},
{-1.2631346564698118, -0.7478536959936501, -0.5107004304453979,
-0.40238053889135017, -0.34149759994720297, -0.30010416406501106,
-0.27870745984807677, -0.2583059378233199, -0.24256863919705163,
-0.2300060178701413, -0.21970132978665768, -0.21107734010253631,
-0.20371831324339507, -0.19735475532211222, -0.1917810910375639,
-0.18685623459855538, -0.18246644125587164, -0.17851021819643087,
-0.17493847294281917, -0.17097364552298977, -0.16805647852407013},
{-1.2631081879524335, -0.7476371942344162, -0.5105461234976598,
-0.40227045452680743, -0.3414123842164911, -0.3000176833561925,
-0.2786463005161641, -0.2582519972218975, -0.24252024507826597,
-0.22996191140227618, -0.21966062079014526, -0.2110393916691975,
-0.20368265817850784, -0.19732103661764366, -0.19174903112286046,
-0.18682561208032755, -0.18243707739271642, -0.17848196904413882,
-0.1749112154843777, -0.17093219968783036, -0.16803961781211907},
{-1.2630808399067015, -0.7474206559639267, -0.510391894284715,
-0.4021604379264545, -0.34132722395321835, -0.29993129968262977,
-0.2785851804002544, -0.25819809362417434, -0.24247188437411182,
-0.2299178355264937, -0.2196199400873855, -0.21100146970071387,
-0.2036470280743492, -0.1972873415920784, -0.19171699379554052,
-0.18679501121044506, -0.1824077343619539, -0.1784537399994539,
-0.17488397749015228, -0.17089083916362124, -0.16802267087298084},
{-1.2630526144505163, -0.7472040816637606, -0.5102377428145073,
-0.4020504890513128, -0.34124211911813296, -0.2998450138196467,
-0.2785240994891369, -0.2581442270023424, -0.24242355706081886,
-0.22987379022187682, -0.21957928766050205, -0.21096357418109868,
-0.2036114229169108, -0.19725367023180684, -0.1916849790434485,
-0.18676443197785275, -0.18237841215332828, -0.17842553105278736,
-0.1748567589511678, -0.1708495694778902, -0.16800563807055813},
{-1.2630235136974441, -0.7469874718138771, -0.5100836690948669,
-0.40194060786262176, -0.34115706967170034, -0.29975882652382335,
-0.27846305777194935, -0.2580903973285187, -0.24237526311499602,
-0.22982977546753203, -0.21953866349149598, -0.21092570509418884,
-0.20357584269173667, -0.19722002252395665, -0.19165298685490484,
-0.18673387437201328, -0.18234911075689464, -0.17839734219457526,
-0.17482955985858517, -0.17080839588565766, -0.1679885198228055},
{-1.2629935397566963, -0.7467708268925985, -0.5099296731332092,
-0.40183079432130997, -0.3410720755748602, -0.2996727385333129,
-0.27840205523738426, -0.25803660457526334, -0.24232700251310924,
-0.22978579124289533, -0.21949806756263346, -0.21088786242440083,
-0.20354028738484775, -0.19718639845495112, -0.1916210172177193,
-0.18670333838184305, -0.18231983016260678, -0.17836917341579372,
-0.17480238020414784, -0.17076732337505085, -0.1679713165971526},
{-1.2629626947330985, -0.746554147376596, -0.5097757549368462,
-0.4017210483887208, -0.34098713678803483, -0.2995867505671632,
-0.27834109187428213, -0.2579828487148199, -0.24227877523185004,
-0.22974183752712474, -0.21945749985597063, -0.21085004615575542,
-0.20350475698206427, -0.1971527980119685, -0.1915890701202949,
-0.18667282399669283, -0.18229057036038476, -0.17834102470669677,
-0.17477521997848378, -0.1707263566726196, -0.16795402890674005},
{-1.2629309807270714, -0.7463374337409201, -0.5096219145128384,
-0.40161137002586544, -0.3409022532721022, -0.299500863326402,
-0.2782801676712263, -0.25792912971983517, -0.24223058124787622,
-0.2296979142995208, -0.21941696035396596, -0.2108122562725816,
-0.20346925146948447, -0.19711922118142766, -0.1915571455507754,
-0.1866423312060217, -0.18226133134039557, -0.1783128960586069,
-0.17474807917365798, -0.17068550025064333, -0.16793665731023566},
{-1.2628983998347985, -0.7461206864589647, -0.5094681518679449,
-0.4015017591939798, -0.3408174249881242, -0.2994150774938231,
-0.27821928261696227, -0.25787544756280223, -0.2421824205381835,
-0.22965402153950354, -0.21937644903891673, -0.21077449275917637,
-0.20343377083279535, -0.19708566795046156, -0.19152524349729916,
-0.18661185999883934, -0.18223211309299092, -0.17828478746173015,
-0.17472095778102936, -0.1706447583326529, -0.1679192024056304},
{-1.262864954148045, -0.7459039060025678, -0.5093144670089105,
-0.40139221585438234, -0.34073265189690494, -0.2993293937344479,
-0.27815843670015017, -0.25782180221635986, -0.24213429307956558,
-0.22961015922643258, -0.21933596589337423, -0.2107367555999744,
-0.20339831505846373, -0.19705213830643675, -0.19149336394849037,
-0.1865814103650365, -0.1822029156078484, -0.17825669890724516,
-0.17469385579212737, -0.17060413489923576, -0.16790166483031221},
{-1.262830645754296, -0.7456870928419019, -0.5091608599419648,
-0.4012827399680452, -0.3406479339596862, -0.29924381269572686,
-0.27809762990906517, -0.2577681936533689, -0.24208619884902038,
-0.22956632733990778, -0.2192955108996415, -0.21069904477955248,
-0.2033628841322619, -0.1970186322360945, -0.19146150689253005,
-0.18655098229394262, -0.1821737388757141, -0.17822863038624348,
-0.17466677319831092, -0.1705636336959131, -0.1678840452568826},
{-1.2627954767366605, -0.7454702474455233, -0.509007330673378,
-0.40117333149638323, -0.34056327113736806, -0.299158335007367,
-0.27803686223211477, -0.2577146218465356, -0.24203813782370398,
-0.2295225258593283, -0.21925508404037775, -0.2106613602823426,
-0.20332747804071527, -0.1969851497268298, -0.19142967231817298,
-0.18652057577518733, -0.18214458288654445, -0.17820058188926957,
-0.17463970999161127, -0.1705232582386058, -0.1678663443907702},
{-1.2627594491739966, -0.7452533702804938, -0.5088538792090316,
-0.40106399040067897, -0.340478663391099, -0.2990729612820999,
-0.27797613365770824, -0.2576610867689251, -0.241990109980736,
-0.2294787547644379, -0.21921468529823862, -0.21062370209329373,
-0.20329209676973914, -0.1969516907657498, -0.19139786021364014,
-0.18649019079839046, -0.18211544763089904, -0.1781725534077383,
-0.17461266616354632, -0.1704830118201519, -0.16784856296890993},
{-1.2627225651408154, -0.7450364618120897, -0.508700505554653,
-0.4009547166421257, -0.34039411068231384, -0.29898769211516907,
-0.27791544417414515, -0.25760758839336395, -0.2419421152972654,
-0.22943501403468947, -0.2191743146558407, -0.21058607019674014,
-0.20325674030564844, -0.19691825534023089, -0.1913660705678799,
-0.18645982735337974, -0.18208633309897682, -0.17814454493269416,
-0.1745856417060745, -0.1704428975171961, -0.16783070175626946},
{-1.2626848267073676, -0.7448195225041423, -0.5085472097158386,
-0.40084551018214043, -0.3403096129722276, -0.29890252808532525,
-0.2778547937697091, -0.25755412669317135, -0.24189415375090428,
-0.22939130364985605, -0.21913397209608387, -0.21054846457776577,
-0.20322140863514626, -0.19688484343774526, -0.19133430336938329,
-0.18642948542989757, -0.18205723928146167, -0.17811655645518965,
-0.17455863661100235, -0.17040291819621967, -0.16781276154403812},
{-1.2626462359395862, -0.7446025528188529, -0.5083939916977926,
-0.4007363709818881, -0.34022517022233023, -0.2988174697548942,
-0.27779418243238174, -0.2575007016413089, -0.24184622531867594,
-0.22934762358958682, -0.21909365760141863, -0.21051088522085415,
-0.20318610174396134, -0.19685145504569945, -0.19130255860676737,
-0.1863991650176775, -0.18202816616869733, -0.17808858796639804,
-0.17453165086999434, -0.17036307652122407, -0.167794743148038},
{-1.262606794899158, -0.7443855532168371, -0.5082408515056493,
-0.40062729900287675, -0.34014078239398593, -0.2987325176694262,
-0.2777336101502508, -0.2574473132110824, -0.24179832997838746,
-0.2293039738337166, -0.21905337115541013, -0.2104733321114569,
-0.20315081961912007, -0.19681809015169627, -0.19127083626907826,
-0.18636886610689807, -0.18199911375127265, -0.17806063945770578,
-0.17450468447527, -0.17032337495866035, -0.16777664740569787},
{-1.2625665056434647, -0.744168524157085, -0.508087789144251,
-0.40051829420640983, -0.34005644944856783, -0.2986476723585181,
-0.27767307691139376, -0.2573939613759211, -0.24175046770757502,
-0.2292603543619025, -0.2190131127403383, -0.21043580523423344,
-0.20311556224670024, -0.196784748743279, -0.19123913634500234,
-0.18633858868709474, -0.18197008201986264, -0.1780327109203963,
-0.17447773741861194, -0.17028381578444307, -0.16775847517485776},
{-1.262525370225689, -0.7439514660971396, -0.5079348046183108,
-0.4004093565539102, -0.33997217134812674, -0.29856293433564796,
-0.2776125827037137, -0.2573406461093013, -0.241702638483817,
-0.22921676515431066, -0.21897288233967416, -0.2103983045744462,
-0.2030803296136101, -0.1967514308081979, -0.19120745882351553,
-0.18630833274889902, -0.18194107096526135, -0.17800480234596527,
-0.1744508096926891, -0.1702444010925772, -0.16774022733237448},
{-1.2624833906946673, -0.7437343794928029, -0.5077818979322188,
-0.4003004860068806, -0.33988794805394695, -0.29847830409851683,
-0.27755212751523617, -0.2572873673847127, -0.24165484228491296,
-0.22917320619060177, -0.21893267993629983, -0.21036083011687268,
-0.20304512170611222, -0.19671813633428048, -0.1911758036935991,
-0.18627809828193165, -0.18191208057781427, -0.17797691372559576,
-0.17442390128894036, -0.17020513279720895, -0.1677219047711631},
{-1.2624405690950602, -0.7435172647984469, -0.5076290690902363,
-0.40019168252654547, -0.3398037795280633, -0.2983937821300162,
-0.27749171133353734, -0.2572341251757715, -0.24160707908873214,
-0.22912967745082913, -0.21889250551324313, -0.210323381847207,
-0.20300993851097893, -0.1966848653092761, -0.19114417094419522,
-0.18624788527646619, -0.18188311084874975, -0.1779490450512622,
-0.17439701220023007, -0.17016601264322517, -0.16770350839938253},
{-1.262396907467259, -0.7433001224668141, -0.5074763180964101,
-0.4000829460746287, -0.339719665732106, -0.2983093688968488,
-0.2774313341465682, -0.2571809194561929, -0.2415593488731158,
-0.22908617891505312, -0.21885235905402212, -0.21028595975035547,
-0.20297478001503322, -0.1966516177210451, -0.19111256056438997,
-0.1862176937229325, -0.18185416176844438, -0.17792119631418402,
-0.1743701424181996, -0.17012704220946961, -0.16768503913866262},
{-1.2623524078475055, -0.7430829529491461, -0.5073236449546257,
-0.3999742766124603, -0.33963560662800685, -0.29822506485113554,
-0.2773709959419062, -0.2571277501999245, -0.24151165161617083,
-0.22904271056345316, -0.2188122405418218, -0.21024856381191181,
-0.20293964620486804, -0.19661839355784938, -0.19108097254364065,
-0.18618752361126667, -0.1818252333282251, -0.1778933675058294,
-0.1743432919357506, -0.1700882229170233, -0.16766649792272936},
{-1.262307072267694, -0.7428657566951151, -0.507171049668456,
-0.39986567410168883, -0.33955160217783886, -0.2981408704299029,
-0.27731069670744235, -0.25707461738079074, -0.24146398729594232,
-0.22899927237606832, -0.21877214995995686, -0.21021119401743693,
-0.2029045370672593, -0.19658519280749243, -0.1910494068706745,
-0.1861573749320602, -0.18179632551908131, -0.177865558618441,
-0.17431646074477491, -0.1700495560341757, -0.16764788569525724},
{-1.262260902755597, -0.7426485341528171, -0.5070185322413852,
-0.399757138503793, -0.33946765234357423, -0.298056786055648,
-0.27725043643063785, -0.2570215209727844, -0.24141635589053312,
-0.22895586433308512, -0.21873208729181481, -0.2101738503519659,
-0.2028694525893604, -0.19655201545824585, -0.1910178635353308,
-0.18612724767559463, -0.18176743833138875, -0.17783776964312192,
-0.17428964883812093, -0.170011042681943, -0.16762920341005128},
{-1.2622139013347577, -0.7424312857687991, -0.5068660926765718,
-0.3996486697803374, -0.3393837570874476, -0.2979728121370333,
-0.2771902150990866, -0.2569684609501115, -0.2413687573783463,
-0.22891248641487572, -0.21869205252097945, -0.21013653280146904,
-0.20283439275768433, -0.19651886149843367, -0.1909863425265117,
-0.18609714183241088, -0.18173857175704544, -0.17781000057221696,
-0.1742628562082249, -0.16997268384184672, -0.16761045202810188},
{-1.262166070024508, -0.7422140119881573, -0.5067137309771277,
-0.39954026789305574, -0.3392999163715822, -0.2978889490676311,
-0.2771300327002102, -0.2569154372869611, -0.24132119173752908,
-0.22886913860162927, -0.21865204563100793, -0.21009924135164226,
-0.2027993575596394, -0.19648573091609922, -0.19095484383374917,
-0.18606705739284557, -0.18170972578659406, -0.17778225139722004,
-0.17423608284749825, -0.16993448035975423, -0.16759163251720555},
{-1.2621174108400752, -0.7419967132544172, -0.5065614471458275,
-0.3994319328034024, -0.3392161301581189, -0.29780519722765897,
-0.27706988922153375, -0.2568624499575374, -0.2412736589466693,
-0.22882582087413983, -0.21861206660568744, -0.21006197598808996,
-0.2027643469819509, -0.19645262369994665, -0.1909233674467341,
-0.18603699434782417, -0.18168090041171236, -0.17775452211031695,
-0.17420932874884354, -0.16989643295263424, -0.1675727458506291},
{-1.2620679257923675, -0.7417793900095009, -0.5064092411853132,
-0.39932366447314305, -0.33913239840965126, -0.29772155698316904,
-0.27700978465058057, -0.25680949893644067, -0.24122615898420463,
-0.22878253321230524, -0.21857211542834154, -0.21002473669640054,
-0.20272936101153416, -0.19641953983788607, -0.1908919133546796,
-0.18600695268753675, -0.18165209562307272, -0.17772681270324497,
-0.174182593904451, -0.16985854221328012, -0.1675537930056361},
{-1.2620176168882489, -0.7415620426939467, -0.5062571130980795,
-0.39921546286412024, -0.3390487210885236, -0.2976380286869138,
-0.2769497189746901, -0.25675658419786007, -0.24117869182873175,
-0.228739275597043, -0.21853219208330454, -0.209987523462698,
-0.2026943996359174, -0.19638647931890407, -0.19086048154716284,
-0.1859769324028484, -0.18162331141225074, -0.17769912316805314,
-0.17415587830752344, -0.16982080861675009, -0.1675347749633369},
{-1.2619664861303472, -0.7413446717466998, -0.5061050628863661,
-0.39910732793768045, -0.33896509815734444, -0.29755461267870364,
-0.2768896921810926, -0.25670370571683065, -0.24113125745895125,
-0.22869604800896504, -0.21849229655397373, -0.20995033627305038,
-0.20265946284219272, -0.19635344213137085, -0.19082907201448673,
-0.18594693348469438, -0.18159454777082384, -0.17767145349734292,
-0.1741291819510744, -0.16978323252522198, -0.16751569270758004},
{-1.2619145355171957, -0.7411272776051527, -0.5059530905522056,
-0.3989992596558807, -0.33888152957847373, -0.2974713092846346,
-0.2768297042571368, -0.2566508634676943, -0.24108385585360903,
-0.2286528504285128, -0.2184524288245555, -0.20991317511344487,
-0.20262455061734297, -0.19632042826397456, -0.1907976847458075,
-0.1859169559235463, -0.18156580468973615, -0.17764380368251143,
-0.17410250482740608, -0.16974581419237733, -0.16749654722250273},
{-1.261861767043114, -0.7409098607052655, -0.5058011960974178,
-0.39889125798044267, -0.33879801531452136, -0.29738811881815064,
-0.2767697551900614, -0.2565980574254141, -0.24103648699152114,
-0.22860968283671834, -0.21841258887895165, -0.20987603996979853,
-0.2025896629491184, -0.19628743770535007, -0.19076631973092706,
-0.18588699971029943, -0.1815370821609381, -0.17761617371617522,
-0.1740758469297301, -0.1697085537696159, -0.16747733949315613},
{-1.2618081826983283, -0.7406924214814672, -0.5056493795237298,
-0.39878332287311036, -0.3387145553285218, -0.29730504158002713,
-0.2767098449671197, -0.25654528756490613, -0.24098915085157202,
-0.228566545214397, -0.21837277670144672, -0.20983893082831617,
-0.20255479982429225, -0.1962544704445106, -0.19073497695981434,
-0.1858570648357496, -0.1815083801758659, -0.17758856359067554,
-0.174049208251029, -0.16967145131067163, -0.16745807050467398},
{-1.2617537844689264, -0.7404749603667264, -0.5054976408326648,
-0.39867545429581375, -0.33863114958300056, -0.2972220778584935,
-0.27664997357559207, -0.2564925538610172, -0.24094184741290903,
-0.22852343754208881, -0.21833299227609526, -0.20980184767540155,
-0.20251996123067517, -0.196221526469901, -0.19070365642250042,
-0.1858271512910985, -0.18147969872565817, -0.17756097329816534,
-0.17402258878438293, -0.16963450677550185, -0.1674387412411127},
{-1.2616985743368918, -0.740257477792436, -0.5053459800254867,
-0.39856765221029145, -0.33854779804112756, -0.2971392279299834,
-0.2765901410024312, -0.25643985628890054, -0.2408945766547026,
-0.22848035980127257, -0.21829323558730795, -0.20976479049747088,
-0.2024851471557083, -0.19618860577070585, -0.19067235810907857,
-0.1857972590670398, -0.18145103780258687, -0.17753340283147168,
-0.1739959885228508, -0.1695977200359664, -0.16741935268389607},
{-1.2616425542800485, -0.7400399741885768, -0.5051943971032635,
-0.3984599165785805, -0.3384645006656637, -0.2970564920581418,
-0.27653034723475267, -0.2563871948237537, -0.24084733855586737,
-0.2284373119726446, -0.21825350661913845, -0.20972775928082754,
-0.20245035758668894, -0.19615570833595175, -0.19064108200950347,
-0.1857673881548214, -0.18142239739798338, -0.17750585218249082,
-0.17396940745954304, -0.16956109087995763, -0.16739990581288922},
{-1.2615857262721877, -0.7398224499836301, -0.5050428920669909,
-0.398352247362566, -0.3383812574195253, -0.2969738704954503,
-0.27647059225986004, -0.2563345694410195, -0.24080013309579673,
-0.22839429403768374, -0.2182138053563314, -0.20969075401197923,
-0.20241559251151298, -0.19612283415470344, -0.19060982811394478,
-0.1857375385456228, -0.1813937775038541, -0.17747832134418484,
-0.17394284558789952, -0.16952461901576488, -0.1673804016043734},
{-1.2615280922828915, -0.7396049056045904, -0.5048914649173617,
-0.3982446445242718, -0.33829806826615494, -0.29689136348194545,
-0.2764108760646704, -0.25628198011585734, -0.24075296025392845,
-0.22835130597746023, -0.21817413178323086, -0.20965377467743185,
-0.20238085191753807, -0.19608998321555582, -0.19057859641237673,
-0.18570771023022115, -0.18136517811191943, -0.17745081030883902,
-0.17391630290081306, -0.16948830407557303, -0.16736084103097593},
{-1.2614696542778228, -0.7393873414769692, -0.5047401156550211,
-0.39813710802572055, -0.3382149331684996, -0.29680897124689753,
-0.2763511986364202, -0.25622942682393557, -0.24070582000977314,
-0.22830834777330722, -0.21813448588436568, -0.20961682126397552,
-0.20234613579269123, -0.19605715550845204, -0.19054738689580386,
-0.1856779032002427, -0.18133659921416534, -0.1774233190697343,
-0.17388977939207795, -0.16945214562154032, -0.16734122506088323},
{-1.2614104142183746, -0.7391697580247842, -0.5045888442802302,
-0.3980296378287145, -0.33813185208998986, -0.29672669400827045,
-0.27629155996177346, -0.25617690954078665, -0.24065871234262293,
-0.22826541940683587, -0.21809486764446095, -0.20957989375836128,
-0.20231144412431146, -0.19602435102219484, -0.19051619955415244,
-0.18564811744652143, -0.18130804080234775, -0.17739584761877492,
-0.1738632750546456, -0.16941614314623354, -0.16732155465803977},
{-1.2613503740619818, -0.7389521556706646, -0.5044376507932644,
-0.3979222338955868, -0.3380488249938489, -0.29664453197258833,
-0.2762319600279719, -0.2561244282419448, -0.240611637232246,
-0.22822252085910577, -0.2180552770482862, -0.20954299214705152,
-0.20227677690053447, -0.19599156974606924, -0.1904850343778639,
-0.18561835296077067, -0.18127950286861338, -0.17736839594924536,
-0.17383678988253592, -0.16938029608115723, -0.167301830779933},
{-1.2612895357620078, -0.7387345348357011, -0.5042865351941037,
-0.3978148961883172, -0.33796585184333505, -0.29656248533586016,
-0.2761723988218767, -0.25607198290332, -0.24056459465835545,
-0.22817965211211266, -0.21801571408045195, -0.20950611641744032,
-0.20224213410911318, -0.19595881166940377, -0.19045389135737434,
-0.1855886097338768, -0.18125098540536388, -0.17734096405422317,
-0.17381032386878115, -0.16934460379582017, -0.16728205437958188},
{-1.2612279012677376, -0.738516895939624, -0.5041354974826646,
-0.3977076246691049, -0.33788293260240376, -0.2964805542830238,
-0.27611287633052406, -0.2560195735010211, -0.24051758460086692,
-0.22813681314758405, -0.21797617872605812, -0.20946926655618459,
-0.20220751573809181, -0.19592607678176144, -0.19042277048352307,
-0.18555888775775564, -0.18122248840439514, -0.17731355192626808,
-0.17378387700734343, -0.16930906560447045, -0.16726222640342492},
{-1.2611654725244097, -0.7382992394005461, -0.5039845376585173,
-0.3976004193001015, -0.3378000672342849, -0.2963987389887208,
-0.2760533925409083, -0.2559672000106028, -0.24047060703940115,
-0.22809400394710622, -0.21793667096997194, -0.20943244255038085,
-0.2021729217753716, -0.19589336507256494, -0.19039167174710325,
-0.1855291870237874, -0.18119401185796669, -0.1772861595582942,
-0.1737574492916787, -0.16927368076826532, -0.1672423477912286},
{-1.2611022514731955, -0.7380815656353326, -0.5038336557211842,
-0.39749328004346296, -0.3377172557028101, -0.2963170396175605,
-0.27599394743967753, -0.2559148624084502, -0.24042366195404252,
-0.22805122449274062, -0.21789719079716452, -0.20939564438721892,
-0.20213835220879872, -0.19586067653147143, -0.190360595138376,
-0.18549950752320665, -0.18116555575846238, -0.1772587869436446,
-0.17373104071548884, -0.1692384484978664, -0.16722241947586802},
{-1.2610382400512845, -0.7378638750592494, -0.5036828516700336,
-0.3973862068615439, -0.33763449797155376, -0.296235456323648,
-0.2759345410139593, -0.25586256067052204, -0.24037674932493225,
-0.22800847476639863, -0.21785773819273313, -0.2093588720539028,
-0.20210380702654973, -0.19582801114767268, -0.1903295406484542,
-0.1854698492477942, -0.1811371200981231, -0.1772314340751926,
-0.17370465127274937, -0.16920336795832203, -0.16720244238359872},
{-1.2609734401918435, -0.7376461680862283, -0.5035321255041572,
-0.39727919971650305, -0.33755179400436797, -0.29615398925128344,
-0.27587517325053756, -0.2558102947733447, -0.24032986913237497,
-0.22796575475013725, -0.2178183131417235, -0.20932212553760188,
-0.20206928621700637, -0.19579536891121574, -0.19029850826818073,
-0.18544021218886542, -0.18110870486892772, -0.1772041009463532,
-0.17367828095685223, -0.16916843827051853, -0.16718241743218254},
{-1.26090785382397, -0.7374284451287125, -0.5033814772225274,
-0.39717225857073, -0.3374691437653299, -0.29607263853467636,
-0.27581584413625126, -0.2557580646931932, -0.24028302135634316,
-0.22792306442621424, -0.21777891562968588, -0.20928540482566582,
-0.20203478976824485, -0.1957627498115766, -0.19026749798872977,
-0.1854105963388335, -0.1810803100642806, -0.17717678755032207,
-0.1736519297622232, -0.16913365851548612, -0.16716234553247844},
{-1.2608414828727743, -0.7372107065977085, -0.5032309068239607,
-0.397065383386646, -0.33738654721812633, -0.29599140429880144,
-0.2757565536581339, -0.2557058704064721, -0.24023620597722672,
-0.22788040377691843, -0.21773954564188713, -0.20924870990579247,
-0.2020003176685714, -0.1957301538388725, -0.19023650980086515,
-0.1853810016888291, -0.1810519356759528, -0.17714949388055778,
-0.17362559768253671, -0.16909902773658647, -0.16714222758745567},
{-1.2607743292593818, -0.7369929529028036, -0.5030804143070791,
-0.3969585741264572, -0.33730400432710095, -0.2959102866593537,
-0.2756973018028619, -0.2556537118898996, -0.24018942297547508,
-0.22783777278459727, -0.21770020316327, -0.20921204076489452,
-0.20196586990598409, -0.1956975809827286, -0.19020554369563225,
-0.18535142823063744, -0.18102358169692323, -0.1771222199300473,
-0.17359928471151775, -0.16906454494049417, -0.16712206449120792},
{-1.2607063949009019, -0.7367751844522186, -0.5029299996703016,
-0.39685183075279085, -0.3372215150562119, -0.29582928572228795,
-0.27563808855724403, -0.25560158912008113, -0.2401426723317135,
-0.2277951714316293, -0.21766088817982698, -0.20917539739111657,
-0.20193144646940642, -0.19566503123288648, -0.1901745996644113,
-0.18532187595657934, -0.18099524811953316, -0.17709496569224736,
-0.17357299084388433, -0.16903020910333044, -0.1671018571297047},
{-1.2606376817105334, -0.7365574016527332, -0.5027796629120154,
-0.39674515322798687, -0.33713907936954124, -0.29574840158490545,
-0.27557891390829514, -0.25554950207371263, -0.24009595402651307,
-0.22775259970108763, -0.2176216006768259, -0.20913877977205875,
-0.20189704734735514, -0.19563250457983372, -0.1901436776986163,
-0.18529234485857593, -0.1809669349372962, -0.17706773116141417,
-0.1735467160731714, -0.16899601917075024, -0.16708160638124525},
{-1.2605681915973697, -0.7363396049096367, -0.5026294040301984,
-0.3966385415144882, -0.3370566972316458, -0.2956676343348379,
-0.275519777842514, -0.2554974507278045, -0.24004926804065096,
-0.22771005757525842, -0.21758234063981785, -0.2091021878952617,
-0.2018626725277901, -0.19560000101321506, -0.19011277778904034,
-0.18526283492797102, -0.18093864214173383, -0.1770405163304467,
-0.17352046039349212, -0.16896197406006763, -0.16706131311376282},
{-1.2604979264666434, -0.7361217946268899, -0.5024792230229655,
-0.39653199557517027, -0.33697436860677765, -0.2955869840515799,
-0.27546068034710824, -0.25544543505922146, -0.24000261435492476,
-0.22766754503706643, -0.2175431080546284, -0.20906562174851828,
-0.20182832199964906, -0.19556752052311133, -0.19008189992736213,
-0.18523334615758014, -0.18091036972642272, -0.1770133211929581,
-0.17349422379989932, -0.16892807266350562, -0.16704097818735253},
{-1.2604268882195717, -0.7359039712071076, -0.5023291198881075,
-0.3964255153722145, -0.33689209345940796, -0.2955064508063492,
-0.27540162140862634, -0.25539345504527144, -0.23995599295014625,
-0.2276250620695901, -0.21750390290705823, -0.20902908131997933,
-0.20179399575171875, -0.19553506310022684, -0.19005104410535534,
-0.18520387853920273, -0.18088211768426365, -0.17698614574314853,
-0.17346800628628856, -0.1688943138510579, -0.16702060245357409},
{-1.260355078753445, -0.7356861350513175, -0.5021790946231377,
-0.3963191008685327, -0.3368098717539869, -0.295426034661034,
-0.2753426010137936, -0.255341510662773, -0.23990940380760417,
-0.22758260865554192, -0.21746472518265048, -0.20899256659757626,
-0.20175969377233471, -0.195502628734066, -0.19002021031393745,
-0.18517443206475992, -0.18085388600806152, -0.1769589899743016,
-0.1734418078462152, -0.16886069646977653, -0.16700018675321893},
{-1.2602824999615678, -0.7354682865593696, -0.5020291472256337,
-0.39621275202664874, -0.33672770345505976, -0.2953457356696969,
-0.2752836191495529, -0.25528960188927474, -0.23986284690813786,
-0.22754018477849502, -0.21742557486784975, -0.20895607756908685,
-0.201725416050901, -0.19547021741566883, -0.1899893985452188,
-0.1851450067272813, -0.1808256746912429, -0.17693185388031463,
-0.17341562847559278, -0.1688272193493825, -0.16697973192014715},
{-1.2602091537333846, -0.7352504261295785, -0.5018792776928311,
-0.39610646880928924, -0.33664558852763315, -0.29526555387797604,
-0.27522467580265175, -0.2552377287019807, -0.23981632223292682,
-0.22749779042131912, -0.21738645194792916, -0.20891961422286442,
-0.2016911625758091, -0.1954378291349208, -0.18995860879029003,
-0.18511560251815773, -0.18079748372637283, -0.17690473745543134,
-0.173389468167362, -0.16879388130141404, -0.1669592387773493},
{-1.2601350419543165, -0.7350325541589542, -0.501729486022013,
-0.3960002511793368, -0.3365635269361187, -0.2951854893235497,
-0.27516577095988826, -0.25518589107851675, -0.23976982976357242,
-0.22745542556746745, -0.21734735640929692, -0.2088831765467294,
-0.20165693333600831, -0.19540546388262747, -0.18992784104132632,
-0.18508621943022874, -0.1807693131067465, -0.17687764069290335,
-0.17336332691690792, -0.16876068112194176, -0.16693870813870682},
{-1.2600601665059465, -0.7348146710430372, -0.5015797722100497,
-0.3958940990993325, -0.33648151864569753, -0.29510554203686556,
-0.2751069046079335, -0.25513408899641377, -0.23972336948135897,
-0.22741309020046696, -0.21730828823819426, -0.2088467645295733,
-0.20162272832085204, -0.195373121649137, -0.18989709529009957,
-0.18505685745581069, -0.18074116282580377, -0.17685056358757834,
-0.17333720471900538, -0.16872761759346133, -0.1669181408093987},
{-1.2599845292658602, -0.7345967771760784, -0.5014301362537608,
-0.39578801253233387, -0.33639956362098244, -0.295025712039795,
-0.27504807673358833, -0.25508232243316176, -0.2396769413677422,
-0.22737078430377178, -0.21726924742049736, -0.2088103781594226,
-0.2015885475190089, -0.19534080242510132, -0.18986637152815167,
-0.18502751658742245, -0.18071303287679807, -0.1768235061330632,
-0.17331110156754725, -0.16869468948658817, -0.16689753758433046},
{-1.2599081321078525, -0.7343788729509204, -0.5012805781499483,
-0.39568199144113736, -0.3363176618269441, -0.2949459993471928,
-0.2749892873236712, -0.25503059136682005, -0.23963054540443895,
-0.2273285078612144, -0.21723023394270857, -0.20877401742434554,
-0.20155439091998062, -0.1953085062011235, -0.18983566974761867,
-0.18499819681743723, -0.18068492325305563, -0.17679646832361406,
-0.1732850174581495, -0.16866189556106104, -0.16687689924981441},
{-1.2598309769016696, -0.7341609587590341, -0.5011310978950543,
-0.3955760357886726, -0.3362358132290355, -0.29486640396581354,
-0.27493053636500697, -0.25497889577502253, -0.23958418157332062,
-0.22728626085647985, -0.21719124779103005, -0.20873768231321943,
-0.20152025851281063, -0.1952762329676503, -0.18980498994038353,
-0.1849688981386608, -0.18065683394756338, -0.17676945015318868,
-0.17325895238457267, -0.16862923456814816, -0.16685622658168686},
{-1.2597530655133395, -0.7339430349905562, -0.50098169548549,
-0.3954701455379408, -0.33615401779225795, -0.29478692589569366,
-0.27487182384427555, -0.25492723563594133, -0.23953784985599036,
-0.22724404327357828, -0.21715228895205296, -0.20870137281426526,
-0.2014861502869083, -0.19524398271627508, -0.1897743320987244,
-0.1849396205441627, -0.18062876495458102, -0.17674245161638513,
-0.1732329063427107, -0.16859670525045978, -0.16683552034766969},
{-1.2596743998048199, -0.7337251020341822, -0.5008323709173776,
-0.39536432065185334, -0.3360722754818424, -0.2947075651299267,
-0.2748131497481223, -0.25487561092743327, -0.23949155023452384,
-0.22720185509639723, -0.2171133574122157, -0.20866508891673785,
-0.20145206623175138, -0.19521175543717817, -0.18974369621445852,
-0.18491036402569883, -0.18060071626745522, -0.17671547270746846,
-0.17320687932685708, -0.16856430634515807, -0.16681478130456284},
{-1.2595949816343432, -0.7335071602773566, -0.5006831241869567,
-0.39525856109354196, -0.3359905862630539, -0.2946283216538612,
-0.2747545140633614, -0.2548240216277655, -0.23944528269085463,
-0.2271596963088589, -0.2170744531579949, -0.2086288306086228,
-0.2014180063365938, -0.19517955112132146, -0.18971308227968464,
-0.18488112857652084, -0.1805726878795726, -0.17668851342073832,
-0.1731808713320433, -0.16853203658410276, -0.16679401020057583},
{-1.2595148128562166, -0.7332892101061308, -0.5005339552900065,
-0.3951528668260833, -0.3359089501012016, -0.2945491954464492,
-0.2746959167768521, -0.25477246771505424, -0.2393990472072467,
-0.22711756689523277, -0.2170355761760563, -0.20859259787876638,
-0.20138397059093016, -0.19514736975983826, -0.1896824902867298,
-0.18485191418987057, -0.1805446797846617, -0.1766615737508328,
-0.17315488235303622, -0.16849989469547388, -0.1667732077743782},
{-1.259433895320896, -0.7330712519051854, -0.5003848642224136,
-0.39504723781262685, -0.3358273669622118, -0.29447018647949275,
-0.27463735787527455, -0.2547209491679192, -0.23935284376601995,
-0.22707546684017732, -0.21699672645309942, -0.20855639071616938,
-0.20134995898483155, -0.19511521134372511, -0.18965192022799915,
-0.18482272085796936, -0.18051669197666342, -0.17663465369204445,
-0.17312891238549266, -0.1684678794043144, -0.16675237475466265},
{-1.259352230874969, -0.7328532860578503, -0.5002358509796361,
-0.3949416740164464, -0.33574583681135106, -0.29439129471828807,
-0.27457883734547384, -0.25466946596468176, -0.23930667234973857,
-0.22703339612792028, -0.21695790397619064, -0.20852020910959101,
-0.2013159715077899, -0.19508307586454787, -0.18962137209582064,
-0.18479354857493124, -0.18048872444957453, -0.17660775323943678,
-0.1731029614245303, -0.168435989435177, -0.16673151186142032},
{-1.2592698213611833, -0.7326353129461918, -0.5000869155572598,
-0.3948361754005676, -0.3356643596143192, -0.294312520122034,
-0.2745203551741344, -0.2546180180839146, -0.2392605329402855,
-0.22699135474275067, -0.21691910873175857, -0.20848405304811735,
-0.20128200814941, -0.19505096331271776, -0.1895908458822646,
-0.18476439733272443, -0.18046077719695042, -0.17658087238709275,
-0.17307702946492132, -0.16840422351006534, -0.1667106198045616},
{-1.2591866686184778, -0.7324173329508521, -0.49993805795058144,
-0.39473074192848, -0.3355829353368076, -0.29423386264290663,
-0.27446191134782083, -0.2545666055041522, -0.239214425520915,
-0.22694934266938827, -0.21688034070728435, -0.20844792252039657,
-0.20124806889992275, -0.19501887368013016, -0.18956034157989787,
-0.18473526712499488, -0.1804328502131174, -0.1765540111300865,
-0.17305111650206673, -0.16837258035363778, -0.16668969928506439},
{-1.2591027744819399, -0.7321993464511967, -0.49978927815483587,
-0.3946253735634051, -0.3355015639446437, -0.29415532222707697,
-0.27440350585359585, -0.25451522820431993, -0.23916835007396386,
-0.22690735989242672, -0.21684159988911667, -0.20841181751553783,
-0.2012141537487251, -0.1949868069577798, -0.1895298591814436,
-0.1847061579446443, -0.18040494349184755, -0.17652716946284652,
-0.17302522253175656, -0.16834105869017257, -0.16666875099398482},
{-1.2590181407828551, -0.7319813538253137, -0.49964057616494584,
-0.3945200702687117, -0.3354202454038795, -0.29407689881436294,
-0.27434513867808796, -0.2544638861631219, -0.2391223065824093,
-0.22686540639680697, -0.21680288626468602, -0.20837573802287146,
-0.20118026268637834, -0.1949547631370825, -0.18949939867903254,
-0.1846770697849447, -0.18037705702728069, -0.17650034738067255,
-0.17299934754833224, -0.16830965724687363, -0.16664777561361888},
{-1.2589327693486227, -0.7317633554498175, -0.4994919519758949,
-0.3944148320080223, -0.3353389796804045, -0.29399859233866277,
-0.27428680980812725, -0.25441257935967343, -0.23907629502901084,
-0.2268234821674726, -0.2167641998214842, -0.2083396840312597,
-0.20114639570299353, -0.19492274221000283, -0.18946896006597846,
-0.18464800263987158, -0.18034919081417122, -0.1764735448783572,
-0.1729734915482215, -0.16827837475379948, -0.16662677381731683},
{-1.2588466620029568, -0.7315453517001349, -0.49934340558243173,
-0.3943096587444339, -0.3352577667403782, -0.293920402728415,
-0.27422851923033686, -0.2543613077728697, -0.2390303153970308,
-0.22678158718913277, -0.21672554054629156, -0.20830365553001062,
-0.20111255278859197, -0.19489074416764574, -0.18943854333437216,
-0.1846189565019749, -0.18032134484612783, -0.1764467619503387,
-0.17294765452660865, -0.1682472099443899, -0.16660574626764735},
{-1.25875982056567, -0.7313273429503071, -0.4991949369791353,
-0.3942045504418257, -0.33517660654976655, -0.29384232990532855,
-0.2741702669315913, -0.2543100713818376, -0.23898436766917897,
-0.22673972144702237, -0.2166869084264329, -0.20826765250839507,
-0.20107873393359466, -0.19485876900129284, -0.18940814847666854,
-0.1845899313649495, -0.18029351911761893, -0.1764199985920687,
-0.17292183647880588, -0.16821616155696972, -0.16658469361939776},
{-1.2586722468528835, -0.7311093295731879, -0.49904654616052335,
-0.3940995070637028, -0.33509549907489333, -0.29376437378641107,
-0.27411205289879703, -0.2542588701660886, -0.23893845182929674,
-0.22669788492655574, -0.2166483034497526, -0.2082316749560107,
-0.20104493912845456, -0.1948268167035918, -0.1893777754867063,
-0.1845609272229476, -0.18026571362315646, -0.17639325479888335,
-0.1728960374008519, -0.16818522833494587, -0.1665636165182356},
{-1.2585839426767729, -0.7308913119401375, -0.49889823312085335,
-0.3939945285734736, -0.33501444428214366, -0.29368653428159597,
-0.27405387711837204, -0.25420770410467863, -0.23889256786023783,
-0.22665607761263296, -0.21660972560309588, -0.20819572286163002,
-0.20101116836346478, -0.19479488726527183, -0.18934742435582574,
-0.1845319440682891, -0.1802379283569362, -0.1763665305654598,
-0.17287025728770722, -0.16815440902691314, -0.1665425155992324},
{-1.2584949098459486, -0.7306732904213606, -0.4987499978544281,
-0.3938896149351625, -0.3349334421378085, -0.2936088112967479,
-0.2739957395774315, -0.25415657317706497, -0.2388467157455727,
-0.22661429949058043, -0.21657117487452204, -0.20815979621505942,
-0.2009774216290543, -0.19476298067907027, -0.18931709507830874,
-0.18450298189580838, -0.18021016331398787, -0.17633982588711206,
-0.17284449613577912, -0.16812370238812147, -0.1665213914899777},
{-1.2584051501651086, -0.7304552653857277, -0.49860184035529453,
-0.39378476611216895, -0.33485249260870553, -0.2935312047322407,
-0.27393764026275225, -0.25410547736309663, -0.2388008954689118,
-0.22657255054643244, -0.21653265125163834, -0.20812389500594541,
-0.20094369891616992, -0.1947310969367404, -0.18928678764675677,
-0.18447404069893736, -0.1801824184887746, -0.17631314075922067,
-0.17281875394030255, -0.16809310718115267, -0.16650024480868897},
{-1.2583146654352286, -0.7302372372007926, -0.4984537606172701,
-0.39367998206849286, -0.3347715956609232, -0.2934537144821281,
-0.27387957916087924, -0.25405441664193695, -0.23875510701389757,
-0.22653083076492386, -0.21649415472163103, -0.20808801922340425,
-0.20091000021512517, -0.19469923602970596, -0.1892565020534125,
-0.18444512047073047, -0.18015469387566174, -0.17628647517677276,
-0.17279303069686414, -0.16806262217576062, -0.1664790761641255},
{-1.258223457453489, -0.7300192062328588, -0.4983057586342561,
-0.39357526276786814, -0.33469075126129955, -0.29337634043634786,
-0.2738215562588291, -0.2540033909938737, -0.23870935036425056,
-0.22648914013227817, -0.2164556852730497, -0.20805216885740396,
-0.20087632551731982, -0.19466739795091303, -0.18922623829222474,
-0.18441622120653278, -0.1801269894696107, -0.1762598291358497,
-0.1727673264021936, -0.16803224614920165, -0.16645788615685042},
{-1.2581315280134533, -0.7298011728468845, -0.49815783439983363,
-0.3934706081741073, -0.3346099593768104, -0.29329908247890835,
-0.2737635715433644, -0.253952400398326, -0.2386636255038388,
-0.22644747863399672, -0.2164172428931792, -0.20801634389743562,
-0.20084267481317397, -0.19463558269233427, -0.18919599635567064,
-0.1843873428988143, -0.18009930526519558, -0.1762332026313045,
-0.17274164105143797, -0.1680019778869788, -0.16643667537810458},
{-1.2580388789047852, -0.7295831374065651, -0.49800998790765183,
-0.3933660182514056, -0.33452921997390206, -0.29322194048935835,
-0.27370562500141826, -0.2539014448353951, -0.23861793241642815,
-0.22640584625579319, -0.21637882757019522, -0.20798054433295743,
-0.20080904809355093, -0.19460379024546892, -0.189165776237588,
-0.18435848554188805, -0.18007164125764596, -0.17620659565885521,
-0.1727159746405862, -0.16797181618373802, -0.16641544441070888},
{-1.2579455119135845, -0.7293651002744652, -0.4978622191509987,
-0.39326149296345525, -0.33444853301981237, -0.293144914342613,
-0.27364771661969023, -0.25385052428521426, -0.2385722710863245,
-0.22636424298395852, -0.21634043929226277, -0.20794477015424828,
-0.20077544534979186, -0.19457202060369294, -0.18913557793088387,
-0.18432964913081573, -0.1800439974416248, -0.17618000821387803,
-0.17269032716607136, -0.1679417598434041, -0.16639419382847898},
{-1.257851428822041, -0.7291470618116169, -0.4977145281231854,
-0.39315703227448173, -0.33436789848142556, -0.29306800390815635,
-0.2735898463851516, -0.2537996387277026, -0.23852664149764813,
-0.22632266880402696, -0.21630207804717116, -0.2079090213507211,
-0.20074186657304427, -0.19454027375876937, -0.1891054014287663,
-0.18430083365852123, -0.18001637381249846, -0.1761534402924072,
-0.1726646986235636, -0.16791180767869207, -0.16637292419747585},
{-1.2577566314088104, -0.7289290223779479, -0.4975669148173685,
-0.3930526361484685, -0.3342873163255078, -0.2929912090514195,
-0.2735320142846023, -0.2537487881434455, -0.23848104363430966,
-0.22628112370253994, -0.21626374382359614, -0.20787329791247355,
-0.2007083117540036, -0.1945085497033867, -0.18907524672466725,
-0.18427203911967638, -0.17998877036501781, -0.17612689188989972,
-0.17263908900913982, -0.1678819585127833, -0.166351636074344},
{-1.257661121448729, -0.7287109823321578, -0.49741937922653356,
-0.39294830454970775, -0.3342067865197764, -0.2929145296324158,
-0.27347422030502866, -0.25369797251230874, -0.2384354774809898,
-0.22623960766529905, -0.2162254366093439, -0.20783759982911132,
-0.20067478088447288, -0.19447684843012158, -0.18904511381221578,
-0.1842432655082149, -0.17996118709418862, -0.17610036300198573,
-0.17261349831888761, -0.1678522111786087, -0.16633033000789776},
{-1.257564900712964, -0.7284929420315844, -0.49727192134362586,
-0.3928440374423716, -0.3341263090311939, -0.29283796550730834,
-0.27341646443341805, -0.2536471918152854, -0.2383899430218568,
-0.22619812067879774, -0.21618715639317898, -0.20780192709090084,
-0.20064127395539177, -0.19444516993184457, -0.1890150026847035,
-0.18421451281919055, -0.1799336239952627, -0.17607385362459915,
-0.17258792654960153, -0.16782256451978483, -0.16630900653813363},
{-1.2574679709690095, -0.7282749018323296, -0.4971245411613423,
-0.3927398347905142, -0.3340458838271054, -0.29276151652802884,
-0.273358746656311, -0.2535964460326534, -0.2383444402417325,
-0.22615666272934742, -0.216148903163341, -0.20776627968822492,
-0.20060779095865833, -0.19441351420102393, -0.18898491333595224,
-0.18418578104636296, -0.1799060810640496, -0.17604736375410024,
-0.17256237369695082, -0.16779301739010055, -0.16628766619754387},
{-1.2573703339806306, -0.7280568620892898, -0.4969772386723226,
-0.3926356965587985, -0.33396551087488113, -0.29268518254156195,
-0.27330106696098166, -0.25354573514498036, -0.23829896912467774,
-0.22611523380331544, -0.21611067690848085, -0.20773065761046183,
-0.20057433188527618, -0.19438188123040856, -0.18895484575925448,
-0.18415707018436756, -0.1798785582952176, -0.17602089338596372,
-0.17253683975750977, -0.16776356865463704, -0.16626630950972476},
{-1.2572719915079562, -0.727838823156044, -0.4968300138691806,
-0.39253162271135444, -0.3338851901419915, -0.2926089633912037,
-0.2732434253342815, -0.25349505913304515, -0.23825352965599134,
-0.22607383388749636, -0.2160724776170433, -0.20769506084825018,
-0.20054089672695508, -0.19435027101321278, -0.18892479994845246,
-0.18412838022787437, -0.17985105568461446, -0.17599444251634022,
-0.17251132472754005, -0.16773421718935122, -0.1662449369901422},
{-1.257172945307468, -0.7276207853850445, -0.49668286674427264,
-0.39242761321272024, -0.33380492159624264, -0.29253285891550096,
-0.27318582176332384, -0.25344441797779726, -0.2382081218201657,
-0.226032462968222, -0.2160343052779652, -0.20765948939144074,
-0.20050748547526354, -0.19431868354227966, -0.1888947758971664,
-0.18409971117107826, -0.17982357322730813, -0.17596801114129512,
-0.17248582860336104, -0.16770496188122674, -0.16622354914690618},
{-1.2570731971318947, -0.7274027491273505, -0.4965357972897215,
-0.3923236680273501, -0.33372470520513, -0.2924568689492979,
-0.273128256235025, -0.2533938116601, -0.23816274560194017,
-0.22599112103242636, -0.21599615987998355, -0.20762394323077338,
-0.20047409812231098, -0.1942871188107702, -0.18886477359959652,
-0.1840710630091449, -0.17979611091963932, -0.17594159925700126,
-0.17246035138217675, -0.16767580162977325, -0.16620214647985954},
{-1.256972748730367, -0.727184714732902, -0.49638880549788,
-0.3922197871197861, -0.3336445409366533, -0.2923809933239969,
-0.2730707287363341, -0.2533432401611755, -0.23811740098629386,
-0.225949808066777, -0.21595804141211605, -0.20758842235622765,
-0.200440734659189, -0.19425557681158256, -0.18883479304914808,
-0.18404243573663948, -0.17976866875636244, -0.1759152068597274,
-0.1724348930596573, -0.16764673534414687, -0.16618072948065077},
{-1.2568716018483588, -0.7269666825503656, -0.4962418913607345,
-0.3921159704547117, -0.33356442875833725, -0.2923052318663455,
-0.2730132392544835, -0.2532927034618604, -0.2380720879585727,
-0.22590852405826567, -0.2159199498631521, -0.20755292675839954,
-0.20040739507821836, -0.1942240575380687, -0.18880483424018646,
-0.18401382934834576, -0.17974124673349934, -0.1758888339456819,
-0.1724094536328602, -0.1676177619471826, -0.1661592986342031},
{-1.2567697582277657, -0.7267486529271587, -0.49609505487016836,
-0.39201221799666985, -0.33348436863814346, -0.29222958439946023,
-0.27295578777645435, -0.25324220154343546, -0.23802680650355423,
-0.22586726899369758, -0.21588188522218132, -0.2075174564273139,
-0.20037407937126428, -0.19419256098374849, -0.18877489716612228,
-0.18398524383919224, -0.17971384484675124, -0.17586248051130227,
-0.1723840330986528, -0.16758888037215502, -0.16613785441658102},
{-1.256667219606763, -0.7265306262095592, -0.4959482960179806,
-0.39190852971046475, -0.33340436054436573, -0.29215405074277,
-0.2728983742893112, -0.25319173438751186, -0.23798155660648224,
-0.22582604286017105, -0.2158438474781592, -0.20748201135394595,
-0.20034078752983397, -0.19416108714139035, -0.18874498182147192,
-0.18395667920383296, -0.17968646309195702, -0.17583614655303048,
-0.1723586314531378, -0.1675600895648941, -0.16611639729741778},
{-1.2565639877199004, -0.7263126027425248, -0.49580161479594675,
-0.39180490556091563, -0.3333244044449488, -0.29207863071224605,
-0.2728409987805085, -0.25314130197542273, -0.2379363382529771,
-0.22578484564504997, -0.21580583662103336, -0.20744659152867406,
-0.20030751954676607, -0.19412963600540412, -0.18871508820067628,
-0.18392813543847542, -0.1796591014654263, -0.17580983206760514,
-0.17233324869381406, -0.1675313884835834, -0.1660949277391186},
{-1.2564600642981825, -0.7260945828698775, -0.4956550111956015,
-0.3917013455128835, -0.3332445003083633, -0.29200332412065233,
-0.2727836612370398, -0.25309090428863446, -0.23789115142816097,
-0.2257436773353465, -0.21576785263938092, -0.2074111969422887,
-0.20027427541354292, -0.1940982075683646, -0.18868521629726853,
-0.18389961253674603, -0.17963175996226788, -0.17578353705059602,
-0.1723078848170898, -0.1675027760969403, -0.16607344619446618},
{-1.2563554510689166, -0.7258765669340788, -0.4955084852082994,
-0.3915978495311938, -0.3331646481023931, -0.29192813077595314,
-0.2727263616460789, -0.2530405413086303, -0.23784599611723323,
-0.22570253791812434, -0.21572989552277466, -0.2073758275849995,
-0.20024105512251644, -0.1940668018244045, -0.1886553661056709,
-0.18387111049448635, -0.17960443857917596, -0.17575726149930304,
-0.1722825398198493, -0.1674742513875005, -0.16605195311236098},
{-1.2562501497559446, -0.7256585552766448, -0.4953620368255667,
-0.391494417580847, -0.33308484779562697, -0.29185305048441457,
-0.27266909999494615, -0.2529902130175117, -0.23780087230615798,
-0.22566142738135575, -0.2156919652609579, -0.20734048344809342,
-0.20020785866613355, -0.19403541876714225, -0.18862553762051437,
-0.18384262930722972, -0.17957713731201874, -0.17573100541055275,
-0.17225721369942715, -0.1674458133495662, -0.16603044893250107},
{-1.2561441620793101, -0.7254405482376001, -0.49521566603847855,
-0.391391049626737, -0.33300509935663936, -0.29177808304727293,
-0.27261187627076566, -0.2529399193964492, -0.2377557799801675,
-0.22562034571167366, -0.2156540618430185, -0.2073051645217321,
-0.2001746860364868, -0.19400405839008084, -0.18859573083589876,
-0.18381416896969238, -0.1795498561567852, -0.17570476878042562,
-0.17223190645227593, -0.16741746098859345, -0.16600893408783168},
{-1.2560374897556228, -0.7252225461559836, -0.4950693728383251,
-0.3912877456342878, -0.33292540275388305, -0.29170322826372175,
-0.2725546904611269, -0.25288966042812344, -0.2377107191250385,
-0.22557929289730083, -0.21561618525897241, -0.2072698707973295,
-0.20014153722577088, -0.1939727206873325, -0.1885659457464346,
-0.1837857294779548, -0.179522595109753, -0.1756785516059285,
-0.17220661807606863, -0.16738919332364244, -0.16598740900515452},
{-1.2559301344978684, -0.7250045493695754, -0.49492315721600155,
-0.3911845055683205, -0.3328457579562736, -0.2916284859300893,
-0.2724975425531966, -0.2528394360942814, -0.23766568972704594,
-0.22553826892553808, -0.21557833549845729, -0.20723460226581025,
-0.2001084122269825, -0.19394140565277684, -0.18853618234671554,
-0.18375731082711866, -0.17949535416739693, -0.17565235388388345,
-0.172181348567781, -0.16736100938448129, -0.16596587410397134},
{-1.2558220980154686, -0.7247865582149111, -0.4947770191624321,
-0.39108132939423257, -0.33276616493208966, -0.2915538558381172,
-0.2724404325345411, -0.25278924637675626, -0.2376206917712418,
-0.22549727378405748, -0.21554051255112672, -0.20719935891765573,
-0.20007531103218934, -0.19391011327988572, -0.18850644063119582,
-0.1837289130129207, -0.1794681333258854, -0.17562617561091898,
-0.17215609792412412, -0.1673329082149122, -0.16594432979680374},
{-1.2557133820142425, -0.7245685730273626, -0.49463095866853735,
-0.3909782170773646, -0.33268662365034096, -0.2914793377780258,
-0.27238336039237243, -0.2527390912582854, -0.2375757252441577,
-0.22545630746058443, -0.21550271640723295, -0.20716414074446643,
-0.20004223363442808, -0.1938788435634775, -0.18847672059468756,
-0.18370053603101155, -0.1794409325817563, -0.17560001678428883,
-0.17213086614300455, -0.16730488886914063, -0.16592277649033882},
{-1.2556039881964787, -0.7243505941411619, -0.4944849757249181,
-0.3908751685828653, -0.3326071340801482, -0.29140493153588487,
-0.27232632611442664, -0.25268897072076424, -0.2375307901314221,
-0.225415369943053, -0.2154649470563923, -0.20712894773671664,
-0.20000918002606394, -0.1938475964970623, -0.18844702223172582,
-0.18367217987676998, -0.17941375193132192, -0.1755738774006952,
-0.17210565322126214, -0.1672769504143652, -0.16590121458400287},
{-1.2554939182608917, -0.7241326218893316, -0.49433907032213087,
-0.39077218387633383, -0.3325276961900334, -0.29133063689536964,
-0.2722693296880285, -0.2526388847468102, -0.23748588641920154,
-0.22537446121915838, -0.2154272044887735, -0.20709377988600153,
-0.19997615019966108, -0.19381637207502944, -0.18841734553731548,
-0.18364384454649318, -0.17938659137099933, -0.17554775745682782,
-0.17208045915658055, -0.16724909192992232, -0.1658796444713655},
{-1.2553831739027075, -0.7239146566037205, -0.49419324245084395,
-0.39066926292299264, -0.3324483099496387, -0.2912564536380957,
-0.2722123711008795, -0.2525888333189661, -0.23744101409374885,
-0.2253335812771473, -0.21538948869482244, -0.20705863718373596,
-0.19994314414871983, -0.19378517029180742, -0.1883876905066053,
-0.1836155300355644, -0.1793594508978451, -0.1755216569504956,
-0.17205528394652347, -0.16722131250704386, -0.16585806653957036},
{-1.2552717568135143, -0.7236966986149822, -0.4940474921012461,
-0.390566405688789, -0.3323689753279515, -0.2911823815418062,
-0.2721554503403283, -0.2525388164197695, -0.23739617314124306,
-0.2252927301047638, -0.21535179966415807, -0.20702351962075394,
-0.19991016186575372, -0.19375399114135838, -0.18835805713391807,
-0.18358723634016627, -0.17933233050820352, -0.1754955758781831,
-0.17203012758812353, -0.1671936112492025, -0.16583648116928007},
{-1.2551596686815019, -0.7234787482526355, -0.49390181926378673,
-0.39046361213899594, -0.332289692293795, -0.29110842038220053,
-0.27209856739454175, -0.25248883403195155, -0.23735136354808528,
-0.2252519076902626, -0.21531413738752736, -0.20698842718854227,
-0.19987720334362535, -0.19372283461795714, -0.1883284454147418,
-0.18355896345625755, -0.17930523019872702, -0.17546951423710855,
-0.17200499007910164, -0.1671659872710256, -0.16581488873546046},
{-1.255046911191184, -0.7232608058450505, -0.49375622392856,
-0.39036088223944354, -0.33221046081724737, -0.29103456993178156,
-0.27204172225057643, -0.2524388861382585, -0.2373065853002494,
-0.2252111140217954, -0.21527650185518254, -0.2069533598781712,
-0.19984426857545223, -0.19369170071626662, -0.1882988553437528,
-0.18353071138008037, -0.17927814996657965, -0.17544347202461896,
-0.17197987141720983, -0.16713843970007147, -0.16579328960664075},
{-1.254933486023698, -0.7230428717193571, -0.4936107060857018,
-0.3902582159557779, -0.3321312808673431, -0.2909608299610369,
-0.2719849148965787, -0.2523889727217119, -0.23726183838461434,
-0.22517034908768707, -0.21523889305796473, -0.20691831768196067,
-0.1998113575544016, -0.19366058943097286, -0.18826928691657496,
-0.18350248010756331, -0.17925108980836235, -0.17541744923825675,
-0.17195477160015304, -0.16711096767533284, -0.1657716841459278},
{-1.2548193948565824, -0.7228249462015932, -0.49346526572521165,
-0.39015561325379977, -0.33205215241371366, -0.2908872002384699,
-0.2719281453202065, -0.2523390937652943, -0.23721712278754659,
-0.22512961287629274, -0.2152013109859272, -0.20688330059071003,
-0.1997784702737846, -0.19362950075627072, -0.1882397401282434,
-0.18347426963511637, -0.1792240497213058, -0.17539144587493904,
-0.17192969062595598, -0.16708357034752908, -0.1657500727098098},
{-1.2547046393639156, -0.7226070296167033, -0.49331990283692795,
-0.3900530740995034, -0.3319730754259087, -0.29081368052895584,
-0.27187141350925703, -0.25228924925218, -0.23717243849551828,
-0.2250889053759586, -0.215163755630166, -0.20684830859648873,
-0.19974560672670627, -0.193598434686737, -0.18821021497430213,
-0.1834460799588129, -0.1791970297021246, -0.17536546193219493,
-0.17190462849196564, -0.1670562468791763, -0.16572845565008},
{-1.2545892212162255, -0.7223891222882819, -0.4931746174107081,
-0.3899505984587419, -0.33189404987363336, -0.2907402705959905,
-0.2718147194514131, -0.2522394391653977, -0.237127785495308,
-0.22504822657534262, -0.21512622698091022, -0.20681334169054733,
-0.19971276690670425, -0.19356739121748578, -0.1881807114495455,
-0.18341791107525385, -0.17917002974812934, -0.17533949740781285,
-0.17187958519636481, -0.16702899644392488, -0.16570683331143599},
{-1.2544731420806852, -0.7221712245390739, -0.49302940943629947,
-0.38984818629751583, -0.33181507572696844, -0.2906669702001077,
-0.2717580631348504, -0.252189663488541, -0.23708316377370497,
-0.22500757646291003, -0.21508872502954635, -0.20677839986467372,
-0.19967995080686052, -0.1935363703426054, -0.18815122954991903,
-0.18338976298073018, -0.1791430498561173, -0.1753135522986371,
-0.17185456073696415, -0.167001818227682, -0.16568520603435832},
{-1.2543564036208181, -0.7219533366903215, -0.4928842789031638,
-0.38974583758199, -0.33173615295568926, -0.2905937790999298,
-0.2717014445475625, -0.252139922204643, -0.23703857331745848,
-0.22496695502725128, -0.21505124976706114, -0.2067434831111079,
-0.1996471584211088, -0.19350537205741158, -0.1881217692709889,
-0.1833616356719867, -0.17911609002403228, -0.17528762660305564,
-0.17182955511202103, -0.16697471142751752, -0.16566357415348953},
{-1.2542390074967622, -0.721735459062506, -0.49273922580096796,
-0.38964355227824665, -0.33165728152959595, -0.29052069705257555,
-0.2716448636771105, -0.2520902152975175, -0.23699401411344212,
-0.2249263622572233, -0.21501380118395996, -0.2067085914212523,
-0.1996143897426128, -0.19347439635659214, -0.18809233060803443,
-0.18333352914524248, -0.1790891502483687, -0.17526172031796072,
-0.17180456831959656, -0.16694767525141252, -0.16564193799706928},
{-1.254120955365213, -0.7215175919746666, -0.4925942501190006,
-0.3895413303525066, -0.33157846141893454, -0.2904477238119325,
-0.27158832051187787, -0.25204054275064447, -0.23694948614864852,
-0.2248857981416199, -0.21497637927173407, -0.20667372478743484,
-0.1995816447650114, -0.19344344323522478, -0.18806291355696825,
-0.18330544339743415, -0.17906223052711479, -0.17523583344149785,
-0.17177960035755202, -0.16692070891951882, -0.16562029788973653},
{-1.2540022488793543, -0.7212997357449393, -0.4924493518466839,
-0.38943917177107146, -0.3314996925937894, -0.29037485913068295,
-0.2715318150397614, -0.2519909045475641, -0.2369049894099522,
-0.22484526266933003, -0.21493898402140843, -0.20663888320129242,
-0.19954892348228093, -0.19341251268783832, -0.18803351811329172,
-0.18327737842536962, -0.17903533085761936, -0.17520996597130356,
-0.17175465122467592, -0.16689381166213657, -0.16559865414946096},
{-1.253882889688956, -0.7210818906902152, -0.49230453097333404,
-0.38933707650019045, -0.3314209750248258, -0.2903021027587993,
-0.2714753472488898, -0.2519413006724873, -0.2368605238845305,
-0.2248047558294406, -0.21490161542434372, -0.20660406665510234,
-0.19951622588793683, -0.19338160470962684, -0.18800414427294854,
-0.18324933422549883, -0.17900845123673026, -0.1751841179049718,
-0.17172972091872118, -0.16686698272128986, -0.1655770070896434},
{-1.2537628794402955, -0.7208640571262426, -0.49215978748795575,
-0.389235044506556, -0.3313423086820704, -0.2902294544451527,
-0.2714189171276846, -0.25189173110883445, -0.2368160895597713,
-0.22476427761098616, -0.21486427347221948, -0.20656927514134882,
-0.1994835519762299, -0.19335071929621428, -0.1879747920320627,
-0.18322131079554005, -0.17898159166322714, -0.17515828924125199,
-0.17170480943843902, -0.16684022135019028, -0.16555535701893653},
{-1.2536422197762742, -0.7206462353676644, -0.4920151213796373,
-0.3891330757563205, -0.33126369353593343, -0.2901569139361646,
-0.2713625246635045, -0.25184219584072665, -0.23677168642257396,
-0.22472382800267532, -0.2148269581558777, -0.20653450865177092,
-0.19945090174057167, -0.19331985644213212, -0.18794546138644108,
-0.18319330813171764, -0.17895475213373846, -0.17513247997699555,
-0.17167991678274763, -0.16681352681202188, -0.16553370424028113},
{-1.2535209123362694, -0.7204284257281577, -0.49187053263745106,
-0.3890311702162288, -0.3311851295571264, -0.29008448097695716,
-0.2713061698453627, -0.25179269485246714, -0.2367273144601354,
-0.22468340699429223, -0.21478966946741984, -0.20649976717890972,
-0.19941827517536748, -0.19328901614256733, -0.18791615233169434,
-0.18316532623094517, -0.1789279326462223, -0.1751066901107281,
-0.17165504294899314, -0.1667868983812637, -0.16551204905233785},
{-1.253398958756414, -0.7202106285201677, -0.49172602125026277,
-0.3889293278531758, -0.33110661671626307, -0.2900121553106745,
-0.27124985266141177, -0.2517432281281362, -0.23668297366019164,
-0.22464301457520452, -0.21475240739841261, -0.20646505071527077,
-0.19938567227441428, -0.1932581983936652, -0.18788686486448913,
-0.1831373650908743, -0.17890113319875667, -0.1750809196402816,
-0.1716301879365547, -0.16676033534334156, -0.16549039174884594},
{-1.253276360669192, -0.7199928440549623, -0.4915815872067917,
-0.3888275486334214, -0.33102815498410276, -0.28993993667809637,
-0.2711935730995947, -0.2516937956516685, -0.2366386640097069,
-0.22460265073407726, -0.21471517194041478, -0.2064303592529111,
-0.19935309303199134, -0.19322740318940834, -0.18785759898053733,
-0.1831094247082472, -0.17887435378858996, -0.1750551685639321,
-0.17160535174379543, -0.16673383699344768, -0.1654687326187645},
{-1.2531531197038752, -0.7197750726428063, -0.4914372304958965,
-0.38872583252405235, -0.33094974433155944, -0.2898678248193933,
-0.27113733114860405, -0.25164439740773137, -0.2365943854966508,
-0.22456231546099392, -0.21467796308528353, -0.20639569278470749,
-0.19932053744238232, -0.193196630526435, -0.18782835467661396,
-0.1830815050807688, -0.17884759441398757, -0.17502943688000006,
-0.17158053436982446, -0.16670740263822204, -0.16544707194665964},
{-1.2530292374861856, -0.7195573145928913, -0.4912929511062494,
-0.3886241794917682, -0.3308713847297122, -0.28979581947295063,
-0.2710811267964077, -0.25159503338087763, -0.23655013810819625,
-0.22452200874516226, -0.2146407808251194, -0.20636105130332272,
-0.19928800549991887, -0.19316588039957328, -0.18779913194856235,
-0.18305360620528788, -0.17882085507259937, -0.17500372458624902,
-0.17155573581302974, -0.16668103159346703, -0.16542541001209976},
{-1.2529047156385564, -0.7193395702131951, -0.4911487490261601,
-0.38852258950358287, -0.33079307614899633, -0.28972392037511874,
-0.27102496003146026, -0.2515457035552453, -0.23650592183200114,
-0.22448173057632204, -0.21460362515165876, -0.2063264348014826,
-0.1992554971987781, -0.19313515280447024, -0.1877699307931069,
-0.18302572807990813, -0.17879413576274938, -0.17497803168121706,
-0.17153095607232238, -0.16665472318615304, -0.16540374709063954},
{-1.2527795557799406, -0.7191218398107626, -0.4910046242444004,
-0.3884210625265272, -0.33071481856092166, -0.28965212726147804,
-0.2709688308426781, -0.25149640791596806, -0.23646173665585124,
-0.22444148094424055, -0.21456649605749245, -0.2062918432720684,
-0.19922301253396402, -0.1931044477370616, -0.18774075120677036,
-0.182997870701481, -0.17876743648239124, -0.17495235816338717,
-0.17150619514688792, -0.16662847675284098, -0.16538208345334482},
{-1.2526537595260534, -0.7189041236914413, -0.49086057674924266,
-0.388319598527616, -0.3306366119370052, -0.2895804398652819,
-0.2709127392179056, -0.25144714644748145, -0.23641758256727297,
-0.22440125983855985, -0.2145293935343533, -0.20625727670764693,
-0.19919055149952136, -0.19307376519244368, -0.1877115931856661,
-0.18297003406743606, -0.17874075722916238, -0.17492670403113042,
-0.1714814530353692, -0.16660229164021256, -0.16536041936685386},
{-1.252527328489041, -0.7186864221599829, -0.49071660652901894,
-0.38821819747393693, -0.3305584562480046, -0.2895088579188734,
-0.2708566851459411, -0.2513979191346962, -0.23637345955410005,
-0.22436106724897797, -0.2144923175747957, -0.20622273510138545,
-0.19915811409046746, -0.19304310516680623, -0.18768245672694928,
-0.18294221817598189, -0.1787140980016355, -0.17490106928278326,
-0.17145672973685855, -0.16657616720443968, -0.16533875509388185},
{-1.2524002642778493, -0.7184687355201476, -0.49057271357191734,
-0.3881168593328015, -0.33048035146574595, -0.2894373811540625,
-0.2708006686151121, -0.25134872596272384, -0.2363293676043572,
-0.2243209031657285, -0.21445526817118665, -0.20618821844668478,
-0.19912570030151233, -0.19301246765589575, -0.1876533418272066,
-0.18291442302448147, -0.17868745879806713, -0.17487545391699477,
-0.17143202525083368, -0.1665501028121943, -0.1653170908927022},
{-1.2522725684979348, -0.718251064074487, -0.490428897866205,
-0.3880155840715531, -0.3304022975616654, -0.28936600929998946,
-0.27074468961387765, -0.2512995669160931, -0.23628530670555037,
-0.22428076757866044, -0.21441824531568, -0.2061537267362148,
-0.19909331012742548, -0.19298185265555734, -0.18762424848299375,
-0.18288664861051984, -0.17866083961659474, -0.1748498579321085,
-0.17140733957590015, -0.16652409783888178, -0.1652954270175151},
{-1.2521442427515315, -0.7180334081247026, -0.4902851593998818,
-0.38791437165750864, -0.3303242945070144, -0.2892947420858416,
-0.270688748131219, -0.25125044198058166, -0.23624127684591123,
-0.2242406604779319, -0.21438124900137723, -0.20611925996363034,
-0.19906094356327841, -0.1929512601616148, -0.18759517669152803,
-0.1828588949325729, -0.17863424045530873, -0.17482428132735262,
-0.17138267271202867, -0.16649815166971393, -0.1652737637185755},
{-1.2520152886373979, -0.717815767971222, -0.4901414981610719,
-0.38781322205805147, -0.33024634227387306, -0.289223579238052,
-0.2706328441552701, -0.2512013511407991, -0.23619727801344492,
-0.22420058185364944, -0.21434427922015686, -0.20608481812200719,
-0.19902860060362304, -0.19292069016988211, -0.18756612644960402,
-0.1828311619875187, -0.17860766131281824, -0.1747987241012936,
-0.17135802465747396, -0.16647226369943358, -0.16525210124245504},
{-1.2518857077510774, -0.7175981439134764, -0.4899979141376871,
-0.38771213524089276, -0.33016844083403996, -0.2891525204835359,
-0.2705769776749598, -0.25115229438246267, -0.23615331019582708,
-0.22416053169612749, -0.2143073359658274, -0.20605040120480123,
-0.19899628124419788, -0.1928901426771441, -0.18753709775428273,
-0.18280344977428076, -0.1785811021872945, -0.1747731862523514,
-0.17133339541254156, -0.1664464333320934, -0.16523043983146746},
{-1.2517555016846342, -0.7173805362498351, -0.48985440731757635,
-0.3876111111733591, -0.3300905901592355, -0.2890815655478587,
-0.2705211486786254, -0.2511032716907886, -0.2361093733815549,
-0.2241205099958563, -0.21427041923062173, -0.2060160092059382,
-0.19896398548007088, -0.19285961767889148, -0.18750809060282947,
-0.18277575829049564, -0.17855456307767437, -0.1747476677798918,
-0.17130878497664792, -0.16642065998036504, -0.1652087797247903},
{-1.2516246720269542, -0.7171629452776949, -0.4897109776885289,
-0.3875101498234095, -0.330012790221625, -0.28901071415434476,
-0.2704653571552029, -0.2510542830513893, -0.23606546755863356,
-0.22408051674303753, -0.21423352900749748, -0.2059816421186751,
-0.19893171330613502, -0.1928291151714543, -0.18747910499229636,
-0.1827480875341898, -0.1785280439821859, -0.17472216868291213,
-0.1712841933489404, -0.16639494306660474, -0.1651871211570599},
{-1.2514932203634794, -0.716945371293189, -0.48956762523829944,
-0.3874092511586209, -0.32993504099291204, -0.28893996602691185,
-0.2704096030930714, -0.25100532844973067, -0.23602159271522272,
-0.22404055192825822, -0.21419666528913073, -0.20594729993687722,
-0.19889946471841835, -0.1927986351515818, -0.18745014091995937,
-0.18272043750370326, -0.17850154489934944, -0.17469668895993884,
-0.1712596205289012, -0.16636928202100432, -0.1651654643594478},
{-1.2513611482764844, -0.7167278145916676, -0.48942434995460715,
-0.38730841514686, -0.32985734244571585, -0.28886932088709116,
-0.2703538864812325, -0.2509564078716773, -0.23597774883963485,
-0.22400061554246609, -0.21415982806916034, -0.20591298265408664,
-0.19886723971174636, -0.19276817761456844, -0.1874211983831513,
-0.18269280819706069, -0.1784750658280574, -0.17467122861018414,
-0.1712350665164326, -0.16634367628386038, -0.16514380956042984},
{-1.251228457344754, -0.7165102754672121, -0.4892811518249376,
-0.3872076417559809, -0.3297796945522782, -0.28879877845637214,
-0.2702982073083655, -0.25090752130287086, -0.2359339359203254,
-0.22396070757595687, -0.214123017340631, -0.20587869026487304,
-0.19883503828260984, -0.19273774255819554, -0.1873922773797796,
-0.18266519961330552, -0.17844860676689756, -0.17464578763364624,
-0.1712105313112522, -0.16631812530346668, -0.1651221569840038},
{-1.2510951491439233, -0.7162927542129918, -0.4891380308369566,
-0.3871069309539994, -0.32970209728477595, -0.2887283384559103,
-0.27024256556283976, -0.2508586687290153, -0.23589015394539903,
-0.22392082801963298, -0.21408623309676145, -0.20584442276265946,
-0.19880286042565487, -0.19270732997803286, -0.1873633779066921,
-0.18263761174966575, -0.1784221677145359, -0.17462036602825215,
-0.17118601491311836, -0.16629262853587257, -0.16510050685067057},
{-1.2509612252462616, -0.7160752511210942, -0.48899498697796684,
-0.38700628270917736, -0.32962455061578044, -0.2886580006044239,
-0.2701869612338159, -0.2508098501362568, -0.23584640290352166,
-0.22388097686477337, -0.21404947533080065, -0.20581018014188857,
-0.1987707061373758, -0.1926769398708048, -0.18733449996177498,
-0.1826100446056298, -0.1783957486701535, -0.17459496379438733,
-0.17116151732157814, -0.1662671854471851, -0.16507885937873734},
{-1.2508266872208031, -0.7158577664825976, -0.48885202023550267,
-0.3869056969893645, -0.32954705451766575, -0.2885877646215409,
-0.2701313943097503, -0.25076106551075217, -0.23580268278288852,
-0.22384115410190653, -0.2140127440363715, -0.20577596239652696,
-0.1987385754131994, -0.19264657223311854, -0.18730564354290813,
-0.1825824981793076, -0.17836934963226714, -0.17456958093088382,
-0.1711370385373261, -0.16624179551042673, -0.1650572147816023},
{-1.250691536633241, -0.7156403005875425, -0.4887091305968463,
-0.38680517376274004, -0.32946960896345523, -0.288517630224673,
-0.27007586477969436, -0.2507123148385775, -0.23575899357233876,
-0.22380135972250237, -0.2139760392069121, -0.205741769521131,
-0.19870646824936333, -0.19261622706209458, -0.18727680864758334,
-0.18255497246943442, -0.17834297060022664, -0.17454421743736237,
-0.1711125785593257, -0.16621645820755937, -0.16503557327090856},
{-1.250555775046052, -0.7154228537250353, -0.48856631804927364,
-0.38670471299785447, -0.3293922139258889, -0.28844759713160695,
-0.27002037263252365, -0.25066359810575367, -0.23571533526047528,
-0.223761593717537, -0.21393936083637488, -0.20570760150982093,
-0.19867438464170917, -0.1925859043541287, -0.18724799527417613,
-0.18252746747503323, -0.178316611572793, -0.17451887331380878,
-0.17108813738861706, -0.16619117302839737, -0.1650139350540849},
{-1.2504194040184347, -0.715205426182842, -0.4884235825799683,
-0.38660431466282397, -0.3293148693775514, -0.288377665059274,
-0.2699649178563899, -0.2506149152987076, -0.23567170783571356,
-0.22372185607792616, -0.21390270891759045, -0.2056734583571025,
-0.19864232458650033, -0.19255560410573036, -0.1872192034198239,
-0.1824999831940115, -0.17829027254881868, -0.17449354855859855,
-0.17106371502453754, -0.1661659394700168, -0.1649923003352045},
{-1.2502824251062963, -0.7149880182480346, -0.4882809241760251,
-0.38650397872623987, -0.32923757529161346, -0.28830783372362134,
-0.2699095004410381, -0.2505662664038688, -0.2356281112868306,
-0.223682146795678, -0.2138660834449766, -0.20563934005759865,
-0.19861028807989722, -0.19252532631466845, -0.18719043308318106,
-0.1824725196256951, -0.1782639535280186, -0.17446824317259146,
-0.17103931146784923, -0.16614075703891196, -0.16497066931646387},
{-1.2501448398623904, -0.7147706302066936, -0.48813834282481583,
-0.3864037051568081, -0.3291603316411429, -0.2882381028407863,
-0.2698541203750775, -0.2505176514078551, -0.23558454560317443,
-0.22364246586237968, -0.2138294844124724, -0.20560524660656476,
-0.1985782751183871, -0.19249507097739382, -0.18716168426208402,
-0.18244507676945343, -0.17823765450928342, -0.17444295715524127,
-0.17101492671880525, -0.16611562524788415, -0.1649490421958788},
{-1.25000664983604, -0.7145532623435913, -0.48799583851299033,
-0.3863034939226724, -0.32908313839917636, -0.28816847212495933,
-0.26979877764691995, -0.25046907029714305, -0.23554101077262146,
-0.22360281326879683, -0.21379291181359417, -0.20557117799777913,
-0.19854628569814636, -0.19246483809083248, -0.1871329569547875,
-0.18241765462371173, -0.17821137549193544, -0.17441769050590583,
-0.1709905607773683, -0.16609054361768827, -0.16492741916930953},
{-1.2498678565735215, -0.7143359149426907, -0.48785341122776416,
-0.3862033449929241, -0.32900599553908894, -0.2880989412909605,
-0.269743472245918, -0.2504205230585157, -0.2354975067849363,
-0.22356318900728045, -0.2137563656425856, -0.20553713422641007,
-0.1985143198159962, -0.19243462765270092, -0.1871042511596297,
-0.18239025318794688, -0.1781851164750261, -0.17439244322517666,
-0.17096621364460063, -0.16606551167724692, -0.1649058004289241},
{-1.2497284616178326, -0.7141185882870644, -0.48771106095608197,
-0.38610325833612347, -0.32892890303441735, -0.28802951005353794,
-0.2696882041607589, -0.25037200967833506, -0.2354540336281321,
-0.22352359306910508, -0.21371984589334936, -0.20550311528763654,
-0.19848237746787945, -0.19240443965964804, -0.1870755668745856,
-0.18236287246064453, -0.17815887745848435, -0.1743672153123672,
-0.17094188532043653, -0.16604052896185628, -0.1648841861642385},
{-1.2495884665086865, -0.7139012826585538, -0.48756878768456513,
-0.38600323392121805, -0.32885186085815565, -0.28796017812546015,
-0.26963297338042747, -0.25032353014389397, -0.23541059129209607,
-0.2234840254463748, -0.21368335256016913, -0.20546912117634797,
-0.19845045865102318, -0.19237427410925356, -0.18704690409865243,
-0.18233551244181, -0.17813265844126924, -0.17434200676797218,
-0.17091757580579792, -0.166015595014807, -0.16486257656154368},
{-1.2494478727825729, -0.7136839983381149, -0.48742659140024713,
-0.38590327171713223, -0.32877486898425, -0.2878909452210161,
-0.2695777798941359, -0.25027508444190705, -0.23536717976555366,
-0.22344448613088996, -0.2136468856369742, -0.2054351518876727,
-0.19841856336203811, -0.19234413099901726, -0.18701826282985134,
-0.18230817313018477, -0.17810645942328485, -0.1743168175917731,
-0.17089328510155255, -0.1659907093862678, -0.16484097180580548},
{-1.2493066819728749, -0.7134667356056821, -0.48728447208985326,
-0.38580337169278334, -0.32869792738636683, -0.2878218110520816,
-0.26952262369027036, -0.2502266725595259, -0.2353237990372099,
-0.22340497511460278, -0.21361044511837246, -0.2054012074164886,
-0.1983866915974808, -0.1923140103259593, -0.1869896430667275,
-0.18228085452527587, -0.17808028040363677, -0.17429164778412165,
-0.1708690132077395, -0.16596587163330412, -0.16481937207721753},
{-1.2491648956096668, -0.7132494947402033, -0.4871424297399365,
-0.38570353381702027, -0.3286210360380384, -0.28775277533171284,
-0.2694675047583326, -0.2501782944837396, -0.23528044909658163,
-0.22336549238975945, -0.21357403099831096, -0.20536728775825885,
-0.19835484335456055, -0.19228391208776596, -0.18696104480816356,
-0.1822535566264465, -0.17805412138219978, -0.17426649734514754,
-0.17084476012569372, -0.1659410813197324, -0.16479777755432323},
{-1.2490225152198935, -0.7130322760197445, -0.4870004643373358,
-0.3856037580595162, -0.3285441949133556, -0.28768383777236917,
-0.2694124230866759, -0.25012995020184015, -0.2352371299330498,
-0.22332603794825, -0.21353764327149882, -0.205333392908555,
-0.19832301863022117, -0.19225383628235182, -0.18693246805301023,
-0.1822262794329479, -0.17802798235864437, -0.17424136627526732,
-0.17082052585617813, -0.16591633801732275, -0.16477618841294284},
{-1.2488795423272538, -0.7128150797212642, -0.48685857586852777,
-0.38550404438929764, -0.32846740398618035, -0.2876149980858518,
-0.26935737866504006, -0.25008163970086894, -0.2351938415355761,
-0.22328661178269638, -0.21350128193232631, -0.2052995228622585,
-0.19829121742145706, -0.19222378290693065, -0.18690391279988994,
-0.18219902294459267, -0.17800186333286216, -0.17421625457464618,
-0.1707963104001422, -0.16589164130340528, -0.16475460482612192},
{-1.248735978452343, -0.7125979061207199, -0.48671676432018707,
-0.3854043927755981, -0.3283906632303202, -0.2875462559843136,
-0.2693023714822562, -0.25003336296851675, -0.2351505838932857,
-0.2232472138849504, -0.2134649469751464, -0.20526567761531478,
-0.19825943972540738, -0.19219375195958044, -0.1868753790476072,
-0.18217178716090032, -0.17797576430453077, -0.17419116224373088,
-0.1707721137587912, -0.16586699076176004, -0.16473302696350522},
{-1.24859182511246, -0.7123807554933039, -0.48657502967858335,
-0.3853048031878581, -0.32831397262039363, -0.2874776111788977,
-0.26924740152674076, -0.24998511999190764, -0.2351073569958233,
-0.2232078442478631, -0.21342863839447368, -0.20523185716286285,
-0.19822768553913672, -0.19216374343756737, -0.18684686679503848,
-0.18214457208114077, -0.1779496852735365, -0.1741660892831023,
-0.17074793593284543, -0.16584238598380008, -0.1647114549937756},
{-1.2484470838218882, -0.712163628113113, -0.4864333719304357,
-0.3852052755956352, -0.32823733213055917, -0.2874090633811015,
-0.2691924687884404, -0.2499369107589251, -0.23506416083245885,
-0.22316850286379175, -0.21339235618519758, -0.20519806150120523,
-0.19819595486010044, -0.192133757339489, -0.1868183760417308,
-0.1821173777055538, -0.1779236262395214, -0.17414103569318762,
-0.170723776923972, -0.1658178265663981, -0.1646898890814752},
{-1.2483017560915513, -0.7119465242530483, -0.486291791062051,
-0.3851058099685485, -0.32816074173499477, -0.2873406123030522,
-0.26913757325571375, -0.24988873525711597, -0.23502099539288235,
-0.22312918972530582, -0.21335610034214625, -0.20516429062545782,
-0.19816424768577434, -0.1921037936630139, -0.18678990678660234,
-0.18209020403368203, -0.17789758720340476, -0.17411600147486173,
-0.17069963673313193, -0.16579331211352866, -0.16466832938978015},
{-1.2481558434294002, -0.7117294441855213, -0.48615028705964125,
-0.38500640627601523, -0.32808420140817063, -0.2872722576550384,
-0.2690827149182624, -0.24984059347403687, -0.2349778606660582,
-0.22308990482525548, -0.21331987085949233, -0.20513054453148527,
-0.19813256401338464, -0.19207385240613384, -0.18676145902887153,
-0.18206305106483, -0.1778715681645826, -0.17409098662902434,
-0.1706755153615802, -0.16576884223421562, -0.16464677607864164},
{-1.2480093473400982, -0.711512388181561, -0.4860088599097354,
-0.38490706448799195, -0.32800771112470084, -0.28720399914911976,
-0.26902789376507297, -0.24979248539754462, -0.23493475664177144,
-0.22305064815619602, -0.21328366773287755, -0.20509682321546752,
-0.19810090384084234, -0.19204393356693394, -0.18673303276765552,
-0.1820359187994498, -0.17784556912335958, -0.17406599115575183,
-0.1706514128108232, -0.16574441654484762, -0.16462522930573353},
{-1.2478622693253314, -0.7112953565115205, -0.48586750959868485,
-0.38480778457397413, -0.3279312708593398, -0.2871358364955148,
-0.2689731097850121, -0.24974441101566924, -0.23489168330966592,
-0.22301141971100158, -0.21324749095633067, -0.20506312667283044,
-0.1980692671647688, -0.19201403714350818, -0.1867046280023139,
-0.18200880723704493, -0.17781959008017267, -0.174041015056285,
-0.17062732908239298, -0.165720034666891, -0.16460368922654123},
{-1.2477146108834676, -0.7110783494446302, -0.48572623611240484,
-0.3847085665044707, -0.3278548805870525, -0.2870677694060104,
-0.268918362967578, -0.24969637031626402, -0.23484864065923272,
-0.22297221948275592, -0.21321134052574386, -0.20502945490039792,
-0.1980376539839277, -0.1919841631344852, -0.18667624473271793,
-0.18198171637805505, -0.17779363103504053, -0.1740160583321977,
-0.17060326417759253, -0.1656956962285232, -0.1645821559942382},
{-1.247566373509803, -0.7108613672492683, -0.48558503943728315,
-0.384609410248979, -0.32777854028214826, -0.2869997975916201,
-0.2688636533017563, -0.24964836328737672, -0.23480562867999666,
-0.22293304746435538, -0.21317521643520543, -0.20499580789358696,
-0.19800606429522105, -0.1919543115381419, -0.1866478829580398,
-0.18195464622224122, -0.17776769198855646, -0.17399112098338065,
-0.17057921809806054, -0.1656714008630642, -0.16456062975896213},
{-1.2474175586965774, -0.7106444101929235, -0.48544391955948374,
-0.3845103157777574, -0.327702249920125, -0.28693192076346374,
-0.2688089807768925, -0.24960038991724787, -0.2347626473619524,
-0.22289390364916972, -0.21313911868035618, -0.2049621856487862,
-0.19797449809688228, -0.19192448235269577, -0.18661954267804237,
-0.18192759676955284, -0.1777417729414088, -0.17396620301157917,
-0.17055519084544546, -0.1656471482099251, -0.16453911066923244},
{-1.2472681679328121, -0.710427478541932, -0.48530287646509507,
-0.3844112830607802, -0.3276260094756358, -0.2868641386331072,
-0.2687543453823915, -0.24955245019389416, -0.23471969669445691,
-0.2228547880300331, -0.2131030472560731, -0.2049285881621543,
-0.19794295538623885, -0.19189467557663065, -0.18659122389204796,
-0.1819005680201613, -0.17771587389381072, -0.17394130441776134,
-0.17053118242181142, -0.16562293791386207, -0.16451759887085515},
{-1.2471182027045522, -0.7102105725619325, -0.4851619101401594,
-0.38431231206842753, -0.32754981892417767, -0.28679645091130723,
-0.2686997471071422, -0.24950454410596556, -0.2346767766675324,
-0.22281570060038547, -0.21306700215745167, -0.2048950154301732,
-0.1979114361618226, -0.19186489120883188, -0.18656292660020846,
-0.18187355997424692, -0.17768999484626669, -0.1739164252030152,
-0.17050719282828997, -0.16559876962581743, -0.1644960945078351},
{-1.2469676644944907, -0.7099936925175934, -0.4850210205707164,
-0.3842134027711097, -0.32747367824096507, -0.2867288573100799,
-0.26864518594106723, -0.2494566716417772, -0.23463388727093992,
-0.2227766413539669, -0.21303098338048976, -0.20486146744958678,
-0.1978799404212337, -0.19183512924779844, -0.18653465080238352,
-0.18184657263255577, -0.17766413579985674, -0.17389156536924588,
-0.1704832220673378, -0.1655746430016647, -0.16447459772144501},
{-1.2468165547825247, -0.709776838672346, -0.4848802077428145,
-0.3841145551389884, -0.32739758740142477, -0.286661357541254,
-0.2685906618731586, -0.24940883278970016, -0.23459102849454716,
-0.22273761028388872, -0.21299499091955365, -0.20482794421637696,
-0.19784846816266466, -0.19180538969242278, -0.18650639649848078,
-0.18181960599491642, -0.1776382967553385, -0.17386672491710442,
-0.1704592701407135, -0.16555055770268368, -0.16445310865075502},
{-1.2466648750452287, -0.7095600112891747, -0.4847394716422979,
-0.3840157691426098, -0.3273215463808583, -0.28659395131622123,
-0.26853617489293136, -0.24936102753848033, -0.23454820032791535,
-0.22269860738357306, -0.21295902477036144, -0.20479444572728678,
-0.19781701938402296, -0.1917756725413735, -0.18647816368800907,
-0.18179266006177386, -0.17761247771346156, -0.17384190384836895,
-0.17043533705018987, -0.16552651339548863, -0.16443162743304462},
{-1.2465126267562958, -0.7093432106299313, -0.4845988122552818,
-0.3839170447527209, -0.32724555515491094, -0.2865266383476346,
-0.2684817249897309, -0.24931325587643904, -0.2345054027613811,
-0.22265963264686484, -0.21292308492832568, -0.20476097197915077,
-0.1977855940833395, -0.19174597779341074, -0.18644995237133077,
-0.18176573483343006, -0.17758667867463274, -0.17381710216449076,
-0.17041142279785237, -0.1655025097520424, -0.1644101542032459},
{-1.2463598113861143, -0.7091264369553034, -0.4844582295674602,
-0.3838183819396921, -0.3271696136991693, -0.2864594183469009,
-0.26842731215283067, -0.2492655177925931, -0.23446263578479076,
-0.2226206860673301, -0.21288717138868662, -0.20472752296850683,
-0.19775419225885038, -0.19171630544805573, -0.18642176254854093,
-0.18173883031079363, -0.17756089964068433, -0.1737923198672302,
-0.17038752738580687, -0.1654785464493811, -0.16438868909414683},
{-1.2462064304021405, -0.7089096905255343, -0.4843177235647813,
-0.38371978067458734, -0.327093721989697, -0.2863922910270418,
-0.26837293637243764, -0.24921781327578518, -0.2344198993880653,
-0.22258176763924187, -0.21285128414760468, -0.2046940986922774,
-0.1977228139092393, -0.19168665550415298, -0.1863935942202133,
-0.1817119464943593, -0.17753514061198228, -0.17376755695810076,
-0.17036365081639016, -0.16545462316952264, -0.16436723223661698},
{-1.2460524852687507, -0.7086929715996853, -0.4841772942330991,
-0.3836212409280284, -0.3270178800021091, -0.2863252561013052,
-0.2683185976371396, -0.24917014231479406, -0.23437719356151732,
-0.22254287735600542, -0.21281542319996127, -0.20466069914719398,
-0.1976914590325265, -0.1916570279605434, -0.18636544738616667,
-0.18168508338423273, -0.17750940159015283, -0.1737428134389356,
-0.17033979309160419, -0.1654307395995822, -0.16434578375888798},
{-1.2458979774472696, -0.7084762804357685, -0.4840369415581076,
-0.3835227626709914, -0.326942087712645, -0.28625831328237794,
-0.26826429593741885, -0.24912250489861787, -0.23433451829500562,
-0.2225040152118254, -0.21277958854202694, -0.20462732433057607,
-0.19766012762717278, -0.19162742281716927, -0.1863373220469704,
-0.18165824098172845, -0.17748368257619607, -0.17371808931171007,
-0.17031595421391987, -0.1654068954312251, -0.16432434378817717},
{-1.2457429083959086, -0.7082596172912905, -0.48389666552583055,
-0.38342434587465046, -0.3268663450973257, -0.2861914622840951,
-0.26821003126251153, -0.24907490101663043, -0.2342918735792372,
-0.2224651812009526, -0.21274378016895934, -0.20459397423970316,
-0.19762881969164425, -0.19159784007288394, -0.18630921820281632,
-0.18163141928752502, -0.17745798357149933, -0.1736933845783506,
-0.17029213418593514, -0.16538309036107712, -0.16430291244880113},
{-1.2455872795698752, -0.7080429824224925, -0.483756466121668,
-0.3833259905096673, -0.32679065213217307, -0.2861247028197562,
-0.2681558036020997, -0.24902733065748617, -0.23424925940380792,
-0.2224263753171858, -0.21270799807688956, -0.20456064887109182,
-0.19759753522450918, -0.19156827972721668, -0.1862811358544585,
-0.18160461830198127, -0.1774323045772368, -0.1736686992404639,
-0.17026833300930022, -0.16535932409082932, -0.16428148986366953},
{-1.2454310924213403, -0.7078263760849293, -0.48361634333150416,
-0.38322769654764244, -0.32671500879398696, -0.2860580346039088,
-0.2681016129461131, -0.2489797938109275, -0.23420667575927467,
-0.2223875975549907, -0.21267224226148862, -0.20452734822233776,
-0.19756627422427986, -0.19153874177994012, -0.18625307500265986,
-0.18157783802631489, -0.17740664559511554, -0.1736440333006719,
-0.17024455068719213, -0.16533559632623174, -0.1642600761534485},
{-1.2452743483994428, -0.7076097985332126, -0.4834762971410518,
-0.3831294639595413, -0.3266394150586285, -0.285991457351348,
-0.26804745928401275, -0.2489322904659641, -0.23416412263636133,
-0.2223488479088438, -0.21263651271893114, -0.20449407229099492,
-0.1975350366897466, -0.191509226230548, -0.1862250356478965,
-0.18155107846145935, -0.17738100662644563, -0.17361938676077937,
-0.17022078722203116, -0.16531190677833685, -0.1642386714374684},
{-1.2451170489502643, -0.7073932500210658, -0.4833363275358211,
-0.3830312927169981, -0.32656387090284067, -0.28592497077684076,
-0.2679933426058847, -0.24888482061190054, -0.2341216000252171,
-0.2223101263729177, -0.21260080944455595, -0.2044608210739245,
-0.19750382261964017, -0.19147973307859711, -0.18619701779114717,
-0.18152433960821757, -0.1773553876728684, -0.173594759623251,
-0.17019704261604662, -0.16528825516186618, -0.16421727583228574},
{-1.2449591955169237, -0.7071767308013008, -0.4831964345014441,
-0.38293318279114175, -0.32648837630310634, -0.28585857459633335,
-0.267939262901729, -0.24883738423849167, -0.23407910791611997,
-0.22227143294183183, -0.21256513243482544, -0.20442759456895843,
-0.1974726320128628, -0.1914502623243619, -0.18616902143250336,
-0.18149762146809945, -0.17732978873581917, -0.17357015189020863,
-0.17017331687255943, -0.16526464119640316, -0.16419588945351382},
{-1.2448007895394197, -0.7069602411258575, -0.483056618023725,
-0.38283513415365533, -0.3264129312363684, -0.28579226852500295,
-0.2678852201609514, -0.24878998133531205, -0.2340366462998391,
-0.22223276761023847, -0.21252948168567176, -0.20439439277376614,
-0.19744146486770298, -0.19142081396704747, -0.18614104657350872,
-0.18147092404147624, -0.1773042098175832, -0.17354556356425999,
-0.17014960999371098, -0.1652410646063167, -0.164174512414891},
{-1.2446418324549446, -0.7067437812458977, -0.4829168780881199,
-0.38273714677623794, -0.32633753567945156, -0.285726052279494,
-0.26783121437425006, -0.2487426118916396, -0.2339942151671588,
-0.22219413037280322, -0.212493857193218, -0.2043612156857577,
-0.19741032118375923, -0.19139138800714317, -0.1861130932151731,
-0.18144424733031794, -0.1772786509189972, -0.17352099464757664,
-0.17012592198257703, -0.16521752511975052, -0.16415314482771226},
{-1.2444823256973692, -0.7065273514115091, -0.4827772146800955,
-0.38263922063054956, -0.326262189609257, -0.2856599255776082,
-0.2677772455312386, -0.24869527589789442, -0.2339518145088766,
-0.2221555212243107, -0.21245825895381643, -0.2043280633028548,
-0.19737920095985384, -0.19136198444466057, -0.18608516135858366,
-0.1814175913354008, -0.17725311204285532, -0.1734964451428631,
-0.17010225284210634, -0.16519402246923498, -0.16413178680258245},
{-1.2443222706979036, -0.7063109518720543, -0.4826376277852855,
-0.38254135568836833, -0.32618689300256154, -0.28559388813581954,
-0.26772331362218704, -0.24864797334299737, -0.23390944431549165,
-0.2221169401597125, -0.21242268696328992, -0.20429493562290713,
-0.19734810419503557, -0.19133260327975066, -0.18605725100470938,
-0.18139095605797095, -0.17722759319059822, -0.173471915052966,
-0.17007860257510377, -0.16517055639176892, -0.16411043844800588},
{-1.2441616688845683, -0.7060945828759468, -0.48249811738912474,
-0.38244355192140134, -0.32611164583668995, -0.2855279396728294,
-0.26766941863714777, -0.24860070421738456, -0.23386710457799964,
-0.22207838717401174, -0.21238714121836733, -0.20426183264378928,
-0.19731703088837893, -0.1913032445126781, -0.18602936215481147,
-0.18136434149970704, -0.17720209436458756, -0.1734474043801688,
-0.17005497118477297, -0.16514712662815345, -0.1640890998707265},
{-1.2440005216824366, -0.7058782446709522, -0.4823586834772078,
-0.38234580930188855, -0.32603644808896615, -0.2854620799063774,
-0.26761556056646807, -0.2485534685110098, -0.23382479528731714,
-0.22203986226185268, -0.21235162171481914, -0.20422875436304722,
-0.1972859810389398, -0.19127390814328127, -0.1860014948101103,
-0.18133774766184452, -0.17717661556643716, -0.17342291312714142,
-0.17003135867380959, -0.16512373292355242, -0.16406777117640026},
{-1.2438388305136674, -0.7056619375036846, -0.48221932603475626,
-0.38224812780174844, -0.32596129973689614, -0.28539630855617837,
-0.2675617394005467, -0.2485062662137274, -0.23378251643474446,
-0.22200136541890547, -0.21231612844981118, -0.2041957007793993,
-0.19725495464670395, -0.19124459417283202, -0.18597364897201718,
-0.18131117454598922, -0.17715115679875382, -0.1733984412974623,
-0.17000776504536486, -0.16510037502703057, -0.1640464524689058},
{-1.2436765967973828, -0.7054456616200371, -0.4820800450475238,
-0.3821505073932334, -0.32588620075765995, -0.2853306253421639,
-0.26750795512951875, -0.2484590973158829, -0.23374026801099568,
-0.2219628966401963, -0.21228066141942925, -0.2041626718909697,
-0.19722395171002738, -0.19121530260138453, -0.18594582464209353,
-0.18128462215390506, -0.1771257180632464, -0.1733739888930943,
-0.16998419030304124, -0.16507705269181994, -0.16402514385036238},
{-1.243513821949771, -0.7052294172650813, -0.4819408405007364,
-0.3820529480484156, -0.3258111511289741, -0.2852650299844166,
-0.267454207743973, -0.2484119618076175, -0.2336980500079866,
-0.22192445592115995, -0.2122452206200327, -0.20412966769558594,
-0.19719297222926357, -0.19118603342946727, -0.18591802182169292,
-0.18125809048679198, -0.1771002993629356, -0.17334955591752,
-0.16996063444936027, -0.16505376567507568, -0.16400384542241486},
{-1.2433505073840325, -0.7050132046829418, -0.4818017123799123,
-0.3819554497397739, -0.32573615082810203, -0.2851995222041417,
-0.2674004972342967, -0.24836485967884503, -0.2336558624163061,
-0.22188604325717254, -0.21220980604845696, -0.2040966881919264,
-0.19716201620316198, -0.19115678665795777, -0.18589024051251535,
-0.18123157954649738, -0.17707490069962972, -0.1733251423738329,
-0.16993709748840757, -0.1650305137375785, -0.16398255728421152},
{-1.2431866545104655, -0.7047970241169361, -0.4816626606702137,
-0.3818580124394835, -0.32566119983335184, -0.28513410172247244,
-0.26734682359105477, -0.24831779092025208, -0.233613705227822,
-0.22184765864365996, -0.2121744177013003, -0.2040637333785158,
-0.19713108363173415, -0.19112756228768646, -0.18586248071604583,
-0.18120508933525503, -0.1770495220761248, -0.1733007482648734,
-0.1699135794228166, -0.1650072966443794, -0.16396127953459239},
{-1.2430222647363482, -0.7045808758097003, -0.4815236853572964,
-0.3817606361207515, -0.32558629812264606, -0.2850687682619819,
-0.2672931868052233, -0.24827075552247901, -0.2335715784343364,
-0.2218093020765881, -0.21213905557555357, -0.20403080325368173,
-0.19710017451438056, -0.19109836031930527, -0.18583474243413978,
-0.18117861985460504, -0.1770241634946439, -0.17327637359416137,
-0.1698900802566934, -0.1649841141642412, -0.16394001227037425},
{-1.242857339466119, -0.704364760002659, -0.48138478642623195,
-0.38166332075519893, -0.32551144567348356, -0.2850035215457387,
-0.2672395868666477, -0.24822375347557202, -0.23352948202655543,
-0.22177097355107822, -0.21210371966738428, -0.20399789781612654,
-0.1970692888509067, -0.19106918075375567, -0.185807025668157,
-0.18115217110631576, -0.1769988249581642, -0.1732520183644768,
-0.16986659999300002, -0.16496096606947397, -0.16391875558658686},
{-1.2426918801012223, -0.704148676936807, -0.4812459638626496,
-0.38156606631622747, -0.32543664246447435, -0.2849383612974101,
-0.2671860237670307, -0.24817678477044414, -0.23348741599708767,
-0.22173267306352962, -0.21206840997437926, -0.20396501706480574,
-0.19703842664108606, -0.1910400235923424, -0.18577933042032857,
-0.18112574309277907, -0.1769735064692881, -0.1732276825794541,
-0.1698431386354864, -0.164937852136263, -0.16389750957839322},
{-1.2425258880402552, -0.7039326268521773, -0.4811072176518296,
-0.38146887277668906, -0.3253618884735294, -0.28487328724177896,
-0.2671324974970508, -0.24812984939768779, -0.23344538033780537,
-0.22169440060991796, -0.21203312649301775, -0.20393216099849187,
-0.19700758788488404, -0.19101088883616146, -0.18575165669239269,
-0.18109933581595072, -0.1769482080305096, -0.17320336624245858,
-0.16981969618756665, -0.1649147721445159, -0.16387627433838858},
{-1.2423593646786966, -0.7037166099876746, -0.4809685477788843,
-0.3813717401088361, -0.3252871836790403, -0.2848082991029788,
-0.2670790080471592, -0.24808294734816183, -0.23340337504037123,
-0.2216561561858459, -0.21199786922044428, -0.20389932961592638,
-0.1969767725821816, -0.19098177648623427, -0.18572400448617898,
-0.18107294927783002, -0.17692292964514422, -0.17317906935669125,
-0.169796272653171, -0.16489172587770806, -0.1638550499586433},
{-1.242192311409334, -0.7035006265818486, -0.48082995422913477,
-0.38127466828624446, -0.3252125280594784, -0.28474339660748527,
-0.2670255554089076, -0.248036078612361, -0.23336140009684847,
-0.22161793978767363, -0.21196263815358218, -0.20386652291634277,
-0.1969459807328855, -0.19095268654401032, -0.18569637380399584,
-0.18104658348142877, -0.17689767131571799, -0.17315479192567285,
-0.16977286803605196, -0.16486871312242535, -0.16383383652934214},
{-1.2420247296219458, -0.7032846768721539, -0.480691436988157,
-0.38117765728191877, -0.32513792159353816, -0.2846785794820308,
-0.2669721395728857, -0.24798924318159, -0.23331945549959343,
-0.22157975141150565, -0.21192743328961772, -0.2038337408987605,
-0.19691521233707387, -0.1909236190107242, -0.18566876464756987,
-0.1810202384278643, -0.17687243304566813, -0.17313053395349165,
-0.16974948233957754, -0.1648457336694591, -0.16381263413974523},
{-1.2418566207034223, -0.7030687610951754, -0.4805529960408803,
-0.38108070706869945, -0.3250633642594032, -0.28461384745351204,
-0.26691876053056074, -0.24794244104675922, -0.23327754124118627,
-0.22154159105392157, -0.21189225462617145, -0.2038009835626875,
-0.19688446739514376, -0.19089457388810427, -0.18564117701907712,
-0.18099391412064403, -0.17684721483781018, -0.1731062954433611,
-0.16972611556787243, -0.1648227873129482, -0.1637914428782743},
{-1.2416879860376921, -0.7028528794869393, -0.4804146313728417,
-0.38098381762024935, -0.32498885603612226, -0.28454920025054964,
-0.2668654182732544, -0.2478956721986405, -0.2332356573137755,
-0.22150345871108534, -0.2118571021597342, -0.20376825090755535,
-0.19685374590706228, -0.19086555117753878, -0.1856136109205293,
-0.18096761056166244, -0.17682201669562225, -0.17308207639915985,
-0.16970276772523185, -0.1647998738497236, -0.16377026283131535},
{-1.2415188270059545, -0.7026370322823361, -0.4802763429691641,
-0.38088698890959805, -0.32491439690272816, -0.28448463760137077,
-0.2668121127920351, -0.2478489366287535, -0.23319380370985687,
-0.221465354379613, -0.2118219758881157, -0.20373554293226004,
-0.19682304787335791, -0.19083655088066553, -0.18558606635441688,
-0.18094132775384342, -0.17679683862201045, -0.1730578768244424,
-0.16967943881492786, -0.16477699308060423, -0.16374909408444083},
{-1.2413491449863465, -0.7024212197157089, -0.48013813081483114,
-0.38079022091027426, -0.32483998683790904, -0.2844201592359914,
-0.26675884407835593, -0.24780223432812765, -0.23315198042223617,
-0.22142727805610818, -0.21178687580877664, -0.20370285963673762,
-0.19679237329414967, -0.19080757299941453, -0.18555854332299404,
-0.18091506569949534, -0.17677168062065363, -0.17303369672304392,
-0.1696561288415328, -0.164754144809649, -0.16372793672191577},
{-1.2411789413543186, -0.702205442020448, -0.4799999948955582,
-0.38069351359605363, -0.32476562582108226, -0.28435576488515757,
-0.26670561212377564, -0.2477555652882666, -0.23311018744405398,
-0.221389229737472, -0.21175180191934828, -0.20367020102087263,
-0.1967617221703888, -0.19077861753552305, -0.18553104182854518,
-0.18088882440170018, -0.1767465426950352, -0.17300953609932002,
-0.16963283780912164, -0.16473132884418362, -0.16370679082729112},
{-1.2410082174822348, -0.7019896994292232, -0.47986193519632714,
-0.38059686694031036, -0.32469131383107097, -0.2842914542798045,
-0.2666524169197473, -0.24770892950017487, -0.23306842476800238,
-0.22135120942031605, -0.2117167542170515, -0.2036375670839341,
-0.1967310945022671, -0.19074968449075413, -0.18550356187339112,
-0.18086260386276365, -0.17672142484843256, -0.1729853949566813,
-0.16960956572153485, -0.16470854499408638, -0.16368565648207678},
{-1.2408369747397625, -0.7017739921737771, -0.4797239517023888,
-0.38050028091705546, -0.3246170508471815, -0.2842272271526216,
-0.26659925845806587, -0.24766232695589085, -0.2330266923873916,
-0.2213132171015033, -0.2116817326997973, -0.20360495782640875,
-0.19670049029055914, -0.1907207738674419, -0.18547610346020083,
-0.18083640408623047, -0.17669632708465954, -0.17296127329978184,
-0.16958631258345314, -0.16468579307289133, -0.16366453376756596},
{-1.2406652144936174, -0.7015583204852076, -0.47958604439885644,
-0.38040375549968175, -0.3245428368490142, -0.2841630832358222,
-0.2665461367301756, -0.24761575764648658, -0.23298499029515352,
-0.221275252778093, -0.21164673736484918, -0.20357237324787913,
-0.19666990953563968, -0.1906918856671851, -0.1854486665912809,
-0.18081022507469768, -0.1766712494074696, -0.17293717113234663,
-0.16956307839897278, -0.16466307289721804, -0.1636434227633572},
{-1.2404929381077676, -0.7013426845938282, -0.47944821327120835,
-0.3803072906626177, -0.324468671816307, -0.28409902226369965,
-0.2664930517282471, -0.2475692215640164, -0.23294331848502914,
-0.2212373164472421, -0.21161176821071948, -0.20353981334836924,
-0.1966393522390204, -0.190663019892634, -0.1854212512694815,
-0.18078406683138226, -0.17664619182019337, -0.1729130884583583,
-0.16953986317269454, -0.1646403842861357, -0.16362232354780204},
{-1.240320146943235, -0.7011270847289222, -0.4793104583043597,
-0.38021088637972156, -0.3243945557283512, -0.2840350439712491,
-0.26644000344410834, -0.2475227187001412, -0.232901676950501,
-0.22119940810624872, -0.21157682523548793, -0.20350727812842795,
-0.19660881840131417, -0.19063417654591674, -0.18539385749728332,
-0.18075792935921164, -0.1766211543275329, -0.17288902528275862,
-0.16951666690928313, -0.16461772706280087, -0.1636012361991881},
{-1.2401468423581634, -0.7009115211193135, -0.4791727794837284,
-0.38011454262500344, -0.3243204885649833, -0.2839711480935758,
-0.2663869918695134, -0.24747624904635845, -0.2328600656850064,
-0.22116152775223785, -0.21154190843610277, -0.2034747675880615,
-0.19657830802299614, -0.19060535562918623, -0.18536648527757293,
-0.18073181266152538, -0.17659613693287035, -0.1728649816093224,
-0.16949348961279043, -0.16459510105182673, -0.16358016079340132},
{-1.2399730257080326, -0.7006959939926922, -0.4790351767941621,
-0.38001825937282874, -0.3242464703059884, -0.28390733436734994,
-0.2663340169968613, -0.2474298125951142, -0.2328184846824204,
-0.22112367538277766, -0.21150701781153902, -0.20344228172787027,
-0.19654782110594216, -0.19057655714521715, -0.18533913461292073,
-0.18070571674150138, -0.17657113964036775, -0.17284095744242833,
-0.16947033128812805, -0.16457250608168295, -0.16355909740626728},
{-1.239798698345401, -0.7004805035761894, -0.47889765022139663,
-0.37992203659747936, -0.3241725009314811, -0.2838436025296609,
-0.26628107881810514, -0.24738340933803027, -0.23277693393639431,
-0.22108585099538747, -0.21147215335968106, -0.20340982054803636,
-0.1965173576506567, -0.19054778109575032, -0.18531180550629678,
-0.18067964160258043, -0.1765461624540059, -0.17281695278661857,
-0.1694471919400513, -0.16454994198304007, -0.1635380461125422},
{-1.2396238616199242, -0.7002650500962826, -0.4787601997501092,
-0.3798258742734033, -0.3240985804216949, -0.28377995231896236,
-0.26622817732565807, -0.24733703926743722, -0.23273541344183712,
-0.22104805458736188, -0.21143731507890617, -0.20337738404960248,
-0.1964869176587971, -0.19051902748442018, -0.18528449796062318,
-0.18065358724806302, -0.17652120537821503, -0.17279296764662,
-0.1694240715734452, -0.16452740858990644, -0.16351700698532845},
{-1.2394485168784972, -0.7000496337782174, -0.4786228253658207,
-0.3797297723751516, -0.3240247087565402, -0.28371638347474804,
-0.2661753125115949, -0.2472907023754587, -0.23269392319226423,
-0.22101028615657903, -0.2114025029674238, -0.20334497223295145,
-0.19645650113134128, -0.19049029631326064, -0.1852572119790068,
-0.18062755368175765, -0.17649626841714827, -0.17276900202672074,
-0.16940097019290512, -0.16450490573857834, -0.16349598009763433},
{-1.2392726654653021, -0.6998342548470111, -0.47848552705352443,
-0.3796337308772797, -0.32395088591641485, -0.2836528957364699,
-0.2661224843687702, -0.24724439865448122, -0.2326524631823741,
-0.22097254570109648, -0.21136771702414325, -0.2033125850989883,
-0.1964261080699261, -0.19046158758509435, -0.18522994756446565,
-0.18060154090692748, -0.17647135157551475, -0.17274505593168143,
-0.1693778878032255, -0.16448243326794731, -0.1634749655208836},
{-1.2390963087216655, -0.6996189135264164, -0.47834830479856993,
-0.3795377497545527, -0.3238771118815684, -0.2835894888456485,
-0.2660696928893893, -0.2471981280966844, -0.2326110334062541,
-0.22093483321820706, -0.2113329572471505, -0.20328022264868562,
-0.19639573847568137, -0.19043290130287893, -0.18520270471948308,
-0.18057554892733307, -0.17644645485703414, -0.17272112936617035,
-0.16935482440999472, -0.16445999101962627, -0.16345396332632234},
{-1.2389194479860315, -0.6994036100398926, -0.4782111585859399,
-0.37944182898163437, -0.32380338663303476, -0.2835261625439527,
-0.26601693806632376, -0.24715189069499388, -0.2325696338586738,
-0.22089714870653587, -0.21129822363534334, -0.20324788488291734,
-0.19636539235072803, -0.19040423746957913, -0.18517548344816248,
-0.18054957774706004, -0.17642157826667137, -0.1726972223350085,
-0.16933178001791305, -0.1644375788379442, -0.1634329735836264},
{-1.2387420845940973, -0.6991883446097509, -0.4780740884010113,
-0.37934596853388136, -0.3237297101511425, -0.2834629165742495,
-0.2659642198923384, -0.24710568644166298, -0.23252826453493292,
-0.22085949216402145, -0.21126351618789307, -0.2032155718028239,
-0.1963350696964561, -0.1903755960879856, -0.18514828375365688,
-0.18052362736955807, -0.17639672180897037, -0.1726733348429068,
-0.16930875463232198, -0.1644151965693066, -0.16341199636185344},
{-1.2385642198788482, -0.6989731174576486, -0.4779370942290253,
-0.3792501683859113, -0.3236560824167709, -0.28339975068044687,
-0.26591153836003745, -0.24705951532943438, -0.23248692542904514,
-0.22082186358832523, -0.2112288349029292, -0.20318328340937164,
-0.19630477051429907, -0.1903469771612123, -0.18512110563832884,
-0.18049769779873692, -0.17637188548847504, -0.1726494668946259,
-0.169285748258023, -0.1643928440632294, -0.16339103172873592},
{-1.2383858551703555, -0.6987579288044481, -0.47780017605489533,
-0.37915442851303105, -0.3235825034106714, -0.283336664607325,
-0.2658588934625694, -0.24701337735106588, -0.2324456165368085,
-0.2207842629784329, -0.21119417977999877, -0.20315101970430582,
-0.19627449480639036, -0.1903183806926858, -0.18509394910646115,
-0.1804717890387355, -0.17634706931007038, -0.172625618495573,
-0.1692627609008781, -0.1643705211713069, -0.16337007975275064},
{-1.238206991796142, -0.6985427788705811, -0.47766333386425863,
-0.37905874889051017, -0.32350897311383076, -0.28327365810096605,
-0.2658062851930323, -0.2469672724996972, -0.23240433785306536,
-0.22074669033242778, -0.21115955081814874, -0.20311878068865497,
-0.1962442425748243, -0.19028980668573325, -0.18506681416119442,
-0.18044590109355063, -0.17632227327860583, -0.17260178965048567,
-0.1692397925659499, -0.16434822774720104, -0.16334914049973825},
{-1.2380276310806702, -0.6983276678751613, -0.4775265676417355,
-0.3789631294933393, -0.32343549150731743, -0.2832107309073635,
-0.26575371354413857, -0.24692120076812962, -0.23236308937325312,
-0.22070914564890298, -0.211124948016451, -0.20308656636390054,
-0.19621401382152648, -0.19026125514342418, -0.18503970080595877,
-0.18042003396753437, -0.17629749739887934, -0.17257798036431993,
-0.1692168432587362, -0.16432596364747987, -0.16332821403568332},
{-1.23784777434585, -0.6981125960369594, -0.4773898773729197,
-0.3788675702974018, -0.323362058572652, -0.2831478827748404,
-0.26570117850980246, -0.2468751621496832, -0.23232187109267954,
-0.2206716289265067, -0.2110903713743184, -0.2030543767317834,
-0.1961838085485308, -0.1902327260692882, -0.18501260904457695,
-0.18039418766492687, -0.1762727416759251, -0.17255419064272104,
-0.1691939129851523, -0.16430372873081645, -0.16330730042560404},
{-1.2376674229107372, -0.6978975635740445, -0.47725326304302396,
-0.37877207127797075, -0.3232886742909846, -0.28308511345202714,
-0.26564868008291675, -0.2468291566373253, -0.23228068300693483,
-0.22063414016380456, -0.21105582089102004, -0.20302221179359492,
-0.19615362675782144, -0.19020421946681942, -0.1849855388805075,
-0.1803683621895651, -0.17624800611450375, -0.17253042049042833,
-0.1691710017500192, -0.16428152285785202, -0.16328639973321835},
{-1.2374865780917026, -0.6976825707032743, -0.47711672463717036,
-0.37867663241081395, -0.323215338643589, -0.28302242268858624,
-0.2655962182571603, -0.24678318422457135, -0.23223952511197155,
-0.2205966793597387, -0.21102129656641644, -0.20299007155139925,
-0.19612346845218198, -0.19017573533984766, -0.18495849031748257,
-0.18034255754640505, -0.17622329072004916, -0.1725066699128348,
-0.1691481095596412, -0.16425934589197944, -0.16326551202267225},
{-1.2373052412023302, -0.6974676176414132, -0.4769802621407164,
-0.37858125367173656, -0.32314205161226717, -0.2829598102356341,
-0.26554379302615505, -0.24673724490469784, -0.23219839740345538,
-0.22055924651321313, -0.21098679839993117, -0.2029579560066903,
-0.19609333363365877, -0.1901472736919665, -0.18493146335912414,
-0.1803167737397242, -0.17619859549767902, -0.17248293891575628,
-0.16912523641976485, -0.16423719769820444, -0.16324463735602635},
{-1.2371234135535305, -0.6972527046038417, -0.476843875538675,
-0.3784859350362524, -0.323068813178649, -0.2828972758437791,
-0.2654914043833605, -0.24669133867143067, -0.23215729987721456,
-0.22052184162346666, -0.21095232639098782, -0.20292586516140965,
-0.19606322230474227, -0.19011883452681744, -0.18490445800960842,
-0.18029101077421217, -0.17617392045239733, -0.1724592275040262,
-0.16910238233590924, -0.16421507814385095, -0.16322377579532876},
{-1.236941096453306, -0.6970378318056847, -0.47670756481650933,
-0.378390676480552, -0.32299562332458986, -0.28283481926670273,
-0.26543905232278764, -0.2466454655182435, -0.23211623252959868,
-0.22048446468938732, -0.21091788054008198, -0.20289379901759297,
-0.19603313446823023, -0.19009041784847547, -0.18487747427272083,
-0.18026526865445902, -0.17614926558965394, -0.172435535683233,
-0.16907954731416552, -0.1641929870987937, -0.16320292740153164},
{-1.2367582912072304, -0.6968229994610553, -0.4765713299593646,
-0.3782954779807213, -0.3229224820318608, -0.2827724402580003,
-0.2653867368383871, -0.24659962543902125, -0.23207519535677346,
-0.2204471157103418, -0.21088346084687082, -0.20286175757718716,
-0.19600307012655094, -0.1900620236610262, -0.18485051215241555,
-0.18023954738521297, -0.1761246309149822, -0.17241186345952286,
-0.16905673136062482, -0.16417092443463943, -0.16318209223529045},
{-1.236574999117817, -0.6966082077835205, -0.47643517095252896,
-0.3782003395128095, -0.3228493892826174, -0.2827101385723694,
-0.265334457924002, -0.2465538184274827, -0.2320341883551027,
-0.22040979468574484, -0.21084906731165454, -0.2028297408421178,
-0.19597302928266025, -0.19003365196820177, -0.18482357165315655,
-0.18021384697130038, -0.17610001643373785, -0.17238821083781097,
-0.16903393448114912, -0.16414889002465394, -0.16316127035654482},
{-1.2363912214851616, -0.6963934569857253, -0.47629908778125873,
-0.3781052610532676, -0.3227763450586565, -0.28264791396576516,
-0.265282215573893, -0.24650804447769303, -0.23199321152076813,
-0.22037250161506527, -0.21081469993420043, -0.2027977488148025,
-0.1959430119393506, -0.190005302774507, -0.18479665277832247,
-0.18018816741772525, -0.17607542215170113, -0.17236457782452774,
-0.16901115668201427, -0.16412688374463436, -0.16314046182397313},
{-1.2362069596064518, -0.6961787472796974, -0.4761630804308634,
-0.37801024257807736, -0.32270334934263456, -0.2825857661947877,
-0.2652300097823046, -0.24646230358377164, -0.23195226485093023,
-0.22033523649787057, -0.2107803587146968, -0.2027657814973125,
-0.19591301809969153, -0.18997697608362962, -0.18476975553284092,
-0.18016250872971362, -0.17605084807392757, -0.17234096442513014,
-0.16898839796945353, -0.1641049054722128, -0.1631196666965895},
{-1.2360222147762916, -0.6959640788767407, -0.4760271488867147,
-0.37791528406412045, -0.32263040211686445, -0.28252369501753183,
-0.26517784054373994, -0.24641659573984143, -0.23191134834192617,
-0.22029799933386407, -0.21074604365423077, -0.20273383889214713,
-0.1958830477667579, -0.1899486719005985, -0.18474287992110128,
-0.18013687091222508, -0.17602629420663263, -0.17231737064527763,
-0.1689656583498742, -0.16408295508667337, -0.16309888503190528},
{-1.2358369882864633, -0.6957494519874645, -0.47589129313393386,
-0.3778203854878175, -0.3225575033637469, -0.28246170019320616,
-0.2651257078526488, -0.2463709209405982, -0.23187046199098305,
-0.22026079012297117, -0.2107117547529036, -0.202701921001589,
-0.19585310094383068, -0.1899203902292097, -0.18471602594709147,
-0.18011125397062777, -0.17600176055529815, -0.17229379649146814,
-0.16894293782956282, -0.16406103246990789, -0.16307811688770535},
{-1.2356512814262275, -0.6955348668216521, -0.47575551315803555,
-0.37772554682565485, -0.3224846530657066, -0.28239978148150424,
-0.2650736117036292, -0.24632527917972524, -0.23182960579500023,
-0.22022360886507286, -0.21067749201120378, -0.20267002782783194,
-0.19582317763389767, -0.18989213107403735, -0.18468919361566094,
-0.18008565790994702, -0.1759772471259886, -0.17227024196953522,
-0.1689202364149871, -0.16403913750489352, -0.16305736232079582},
{-1.2354650954820197, -0.6953203235883736, -0.47561980894440303,
-0.3776307680546749, -0.32241185120570837, -0.28233793864385603,
-0.2650215520915946, -0.24627967045226296, -0.2317887797508238,
-0.22018645556010874, -0.21064325542988982, -0.20263815937403074,
-0.195793277840572, -0.18986389444004104, -0.1846623829312577,
-0.1800600827359382, -0.17595275392454823, -0.172246707085554,
-0.16889755411300023, -0.16401727007673017, -0.16303662138726338},
{-1.235278431737671, -0.6951058224961661, -0.475484180478257,
-0.3775360491518116, -0.3223390977662035, -0.2822761714418496,
-0.2649695290110996, -0.2462340947530013, -0.23174798385602813,
-0.22014933020853356, -0.2106090450097362, -0.20260631564168463,
-0.1957634015673122, -0.18983568033098663, -0.1846355938983919,
-0.18003452845370127, -0.1759282809566436, -0.172223191845724,
-0.1688748909298745, -0.1639954300724149, -0.16301589414347362},
{-1.2350912914743182, -0.6948913637526708, -0.4753486277448795,
-0.3774413900937317, -0.32226639273093305, -0.2822144796393724,
-0.2649175424575567, -0.246188552076255, -0.23170721810792827,
-0.22011223281028514, -0.21057486075201126, -0.20257449663453464,
-0.1957335488177563, -0.18980748875236486, -0.1846088265222381,
-0.18000899506921897, -0.1759038282286074, -0.17219969625643472,
-0.16885224687265854, -0.163973617380897, -0.16299518064416674},
{-1.2349036759703673, -0.6946769475648447, -0.47521315072984915,
-0.3773467908578745, -0.32219373608207125, -0.28215286300047016,
-0.26486559242608276, -0.24614304241717733, -0.2316664825039716,
-0.22007516336585553, -0.2105407026569761, -0.20254270235488647,
-0.19570371959534505, -0.18977931970829864, -0.18458208080724425,
-0.17998348258820052, -0.17587939574650768, -0.17217622032389102,
-0.16882962194804385, -0.1639518318925255, -0.16297448094494804},
{-1.234715586501678, -0.6944625741388961, -0.4750777494186229,
-0.3772522514212362, -0.32212112780307933, -0.28209132129054026,
-0.26481367891169505, -0.24609756577082464, -0.23162577704212062,
-0.22003812187607963, -0.21050657072655454, -0.20251093280544374,
-0.195673913904292, -0.18975117320388968, -0.18455535675876256,
-0.1799579910161846, -0.17585498351650664, -0.17215276405476843,
-0.1688070161628783, -0.16393007349969402, -0.16295379509974417},
{-1.234527024341364, -0.6942482436805033, -0.47494242379649876,
-0.37715777176138054, -0.3220485678774141, -0.28202985427632665,
-0.2647618019102129, -0.24605212213240613, -0.2315851017198156,
-0.2200011083413127, -0.21047246496128125, -0.20247918798928488,
-0.19564413174805217, -0.1897230492441846, -0.18452865438136,
-0.17993252035913088, -0.17583059154507552, -0.17212932745564302,
-0.1687844295246297, -0.163908342096299, -0.16293312316313546},
{-1.23433799075997, -0.6940339563944153, -0.474807173848955,
-0.377063351855238, -0.32197605628823744, -0.2819684617249134,
-0.26470996141662617, -0.24600671149670106, -0.23154445653492672,
-0.21996412276210542, -0.21043838536284554, -0.20244746790906554,
-0.1956143731310629, -0.1896949478337273, -0.1845019736804776,
-0.1799070706232513, -0.17580621983822908, -0.17210591053278712,
-0.16876186204023647, -0.16388663757806654, -0.16291246518829183},
{-1.2341484870252764, -0.6938197124850038, -0.47467199956147876,
-0.3769689916809975, -0.32190359301943783, -0.28190714340553047,
-0.2646581574272311, -0.24596133385964425, -0.23150384148590142,
-0.21992716513986288, -0.21040433193240737, -0.2024157725682798,
-0.19558463805702075, -0.18966686897779184, -0.18447531466125966,
-0.17988164181448596, -0.17578186840216148, -0.17208251329303437,
-0.16873931371663353, -0.1638649598425026, -0.16289182122832813},
{-1.2339585144025675, -0.6936055121554974, -0.4745369009196079,
-0.3768746912160674, -0.3218311780545964, -0.28184589908794244,
-0.2646063899378106, -0.24591598921669267, -0.23146325657085853,
-0.21989023547543773, -0.21037030467188522, -0.2023841019698871,
-0.195554926530761, -0.1896388126817108, -0.18444867732935144,
-0.17985623393913563, -0.17575753724423926, -0.1720591357434884,
-0.168716784561731, -0.16384330878921816, -0.16287119133621708},
{-1.2337680741543768, -0.6933913556086821, -0.4744018779087291,
-0.37678045043773345, -0.3217588113767862, -0.2817847285424566,
-0.2645546589437684, -0.24587067756263536, -0.23142270178751723,
-0.2198533337690769, -0.21033630358222055, -0.20235245611663544,
-0.19552523855561077, -0.18961077894978473, -0.18442206168910502,
-0.17983084700280116, -0.17573322637001354, -0.172035777890434,
-0.16869427458222752, -0.16382168431800537, -0.16285057556370575},
{-1.2335771675407274, -0.6931772430467831, -0.47426693051456326,
-0.37668626932453186, -0.3216864929704535, -0.2817236315417393,
-0.2645029644417285, -0.24582539889369137, -0.23138217713470688,
-0.21981646002277522, -0.2103023286652057, -0.20232083501213793,
-0.19549557413656338, -0.1895827677879094, -0.18439546774676074,
-0.17980548101232152, -0.17570893578633928, -0.17201243974127856,
-0.16867178378608827, -0.16380008633207765, -0.16282997396281118},
{-1.2333857958188368, -0.6929631746709211, -0.47413205872235853,
-0.3765921478535592, -0.32161422281935703, -0.2816626078582569,
-0.26445130642741344, -0.24578015320597757, -0.23134168261066712,
-0.21977961423774595, -0.2102683799225833, -0.20228923865930604,
-0.19546593327797268, -0.18955477920079922, -0.18436889550760682,
-0.1797801359740685, -0.17568466550008388, -0.17198912130247912,
-0.16864931218073664, -0.1637785147355455, -0.16280938658524313},
{-1.2331939602435118, -0.69274915068201, -0.47399726251796004,
-0.3764980860038527, -0.3215420009077956, -0.2816016572668092,
-0.26439968489789134, -0.24573494049488254, -0.23130121821424865,
-0.21974279641532668, -0.21023445735660218, -0.2022576670622218,
-0.19543631598453537, -0.1895268131943162, -0.18434234497743418,
-0.1797548118944512, -0.1756604155178465, -0.17196582258143422,
-0.16862685977418757, -0.1637569694345693, -0.1627888134816189},
{-1.2330016620668367, -0.6925351712799301, -0.47386254188696775,
-0.37640408375305867, -0.321469827219814, -0.28154077954232104,
-0.26434809984915386, -0.24568976075675053, -0.23126078394417782,
-0.21970600655678751, -0.21020056096861772, -0.2022261202235356,
-0.1954067222609268, -0.18949886977349983, -0.18431581616185966,
-0.17972950878019667, -0.1756361858460984, -0.17194254358576622,
-0.1686044265734914, -0.16373545033656178, -0.16276825470258593},
{-1.2328089025383542, -0.6923212366638705, -0.4737278968149248,
-0.37631014107949223, -0.321397701739623, -0.28147997446149287,
-0.2642965512781643, -0.24564461398772153, -0.2312203797995842,
-0.21966924466429205, -0.21016669076124117, -0.20219459814760476,
-0.19537715211197693, -0.1894709489439652, -0.1842893090666493,
-0.1797042266379414, -0.17561197649244065, -0.17191928432176873,
-0.16858201258750327, -0.1637139573513231, -0.16274771029879354},
{-1.2326156829048736, -0.6921073470327208, -0.47359332728771797,
-0.3762162579619117, -0.32132562445176127, -0.281419241802336,
-0.2642450391817741, -0.24559950018417176, -0.23118000577917464,
-0.21963251073937506, -0.2101328467362702, -0.2021631008375735,
-0.1953476055425707, -0.18944305071143575, -0.18426282369749458,
-0.1796789654742792, -0.17558778746330184, -0.17189604479796472,
-0.168559617823826, -0.16369249038977252, -0.16272718031986244},
{-1.2324220044108167, -0.6918935025842314, -0.47345883329061333,
-0.37612243437818016, -0.3212535953410365, -0.28135858134255365,
-0.26419356355660906, -0.24555441934244193, -0.2311396618818602,
-0.21959580478386265, -0.21009902889587373, -0.20213162829712417,
-0.19531808255772454, -0.189415175081054, -0.1842363600609911,
-0.17965372529617163, -0.17556361876578386, -0.1718728250205661,
-0.16853724229046385, -0.16367104936456478, -0.1627066648154365},
{-1.2322278682978092, -0.6916797035155469, -0.4733244148095954,
-0.37602867030723885, -0.3211816143917128, -0.28129799286267243,
-0.2641421244000206, -0.2455093714590415, -0.23109934810733535,
-0.2195591267994974, -0.21006523724275716, -0.20210018053002976,
-0.19528858316245845, -0.1893873220588631, -0.18420991816252474,
-0.1796285061105518, -0.1755394704069584, -0.17184962499777612,
-0.16851488599564846, -0.1636496341904774, -0.16268616383454493},
{-1.232033275805072, -0.6914659500234812, -0.4731900718304267,
-0.37593496572791363, -0.3211096815888652, -0.28123747614346595,
-0.264090721709076, -0.24546435653035736, -0.23105906445470126,
-0.21952247678872894, -0.21003147177908055, -0.20206875754075426,
-0.1952591073624177, -0.18935949165053856, -0.18418349800863787,
-0.17960330792436707, -0.1755153423942204, -0.17182644473713715,
-0.16849254894782817, -0.1636282447840749, -0.1626656774269204},
{-1.2318382281691242, -0.6912522423037677, -0.47305580433886796,
-0.37584132061910935, -0.3210377969171443, -0.28117703096704805,
-0.26403935548137625, -0.24541937455338037, -0.23101881092340015,
-0.21948585475367466, -0.2099977325075848, -0.20203735933243117,
-0.19522965516241442, -0.1893316838617558, -0.18415709960541982,
-0.17957813074468731, -0.17549123473460604, -0.17180328424613656,
-0.16847023115543536, -0.16360688106288457, -0.1626452056410841},
{-1.2316427266239987, -0.6910385805516928, -0.4729216123207438,
-0.3757477349594982, -0.32096596036168634, -0.2811166571169199,
-0.2639880257143705, -0.24537442552520972, -0.2309785875129755,
-0.21944926069662252, -0.20996401943077103, -0.20200598590971275,
-0.19520022656821823, -0.18930389869868414, -0.18413072295932942,
-0.17955297457888264, -0.17546714743548186, -0.17178014353293314,
-0.16844793262668212, -0.16358554294680516, -0.16262474852590003},
{-1.2314467724010378, -0.6908249649617586, -0.4727874957617342,
-0.3756542087280774, -0.32089417190753533, -0.28105635437672305,
-0.2639367324052664, -0.2453295094423673, -0.23093839422307383,
-0.21941269461968993, -0.2099303325508437, -0.20197463727605935,
-0.19517082158508536, -0.18927613616679473, -0.18410436807646136,
-0.17952783943377426, -0.17544308050433344, -0.1717570226047691,
-0.1684256533703561, -0.1635642303569078, -0.16260430612959098},
{-1.2312503667292387, -0.6906113957278768, -0.47265345464791153,
-0.3755607419043612, -0.3208224315402095, -0.2809961225325326,
-0.26388547555251307, -0.2452846263022881, -0.23089823105343044,
-0.21937615652558407, -0.20989667187178185, -0.20194331343639504,
-0.19514144021874458, -0.1892483962725695, -0.18407803496358177,
-0.17950272531701117, -0.17541903394842429, -0.17173392146985833,
-0.1684033933950655, -0.16354294321606666, -0.16258387850050582},
{-1.231053510834879, -0.6903978730432918, -0.47251948896515295,
-0.3754673344674657, -0.320750739244847, -0.2809359613711102,
-0.26383425515375336, -0.24523977610199488, -0.23085809800407198,
-0.21933964641691084, -0.2098630373957242, -0.20191201439448214,
-0.19511208247532608, -0.189220679021739, -0.18405172362730227,
-0.17947763223608248, -0.17539500777561123, -0.17171084013665983,
-0.16838115270941323, -0.16352168144971735, -0.16256346568709823},
{-1.23085620594169, -0.6901843971004844, -0.4723855986992671,
-0.37537398639660857, -0.32067909500671465, -0.2808758706797496,
-0.2637830712068876, -0.24519495883884979, -0.23081799507456502,
-0.21930316429604702, -0.2098294291257794, -0.20188074015486634,
-0.1950827483600328, -0.189192984420524, -0.18402543407413496,
-0.17945256019821088, -0.1753710019932342, -0.17168777861281903,
-0.1683589313226257, -0.1635004449830788, -0.16254306773675609},
{-1.2306584532709244, -0.6899709680912789, -0.47225178383635047,
-0.37528069767144423, -0.3206074988118175, -0.280815850247655,
-0.26373192371021403, -0.24515017451019716, -0.23077792226546023,
-0.21926671016600174, -0.20979584706515908, -0.20184949072221947,
-0.19505343787935026, -0.18916531247542778, -0.18399916631096502,
-0.1794275092110862, -0.1753470166094253, -0.17166473690688022,
-0.16833672924309084, -0.16347923374404338, -0.16252268469764886},
{-1.2304602540413483, -0.6897575862070546, -0.47211804436233873,
-0.375187468271557, -0.3205359506454517, -0.28075589986434935,
-0.2636808126620238, -0.24510542311367445, -0.23073787957662972,
-0.21923028402955325, -0.20976229121704115, -0.20181826610028075,
-0.19502415103884196, -0.1891376631921915, -0.18397292034448043,
-0.17940247928212294, -0.17532305163156003, -0.171641715026837,
-0.16831454648006172, -0.16345804766173444, -0.16250231661730474},
{-1.2302616094690273, -0.6895442516382682, -0.4719843802633843,
-0.3750942981765579, -0.3204644504940086, -0.28069601932161614,
-0.2636297380610344, -0.24506070464687468, -0.23069786700840744,
-0.21919388588966626, -0.2097287615850636, -0.20178706629452847,
-0.19499488784498809, -0.1891100365777092, -0.1839466961819074,
-0.17937747041951724, -0.1752991070679446, -0.17161871298096187,
-0.16829238304250538, -0.16343688666701262, -0.16248196354211153},
{-1.2300625207675941, -0.6893309645746575, -0.47185079152549925,
-0.37500118736643717, -0.3203929983429221, -0.2806362084115843,
-0.2635786999053593, -0.24501601910757564, -0.23065788456113623,
-0.2191575157490444, -0.2096952581720064, -0.20175589130927385,
-0.19496564830405383, -0.18908243263802582, -0.18392049383039222,
-0.17935248263067294, -0.17527518292605038, -0.17159573077864287,
-0.16827023893940307, -0.16341575069222358, -0.1624616255200131},
{-1.2298629891482005, -0.6891177252057252, -0.47171727813474185,
-0.37490813582105975, -0.3203215941782087, -0.28057646692756766,
-0.2635276981939665, -0.24497136649379314, -0.23061793223549465,
-0.21912117361101835, -0.2096617809821968, -0.2017247411494676,
-0.19493643242198289, -0.18905485137966416, -0.18389431329676853,
-0.1793275159236032, -0.1752512792143328, -0.17157276842766933,
-0.16824811417996344, -0.16339463967051238, -0.1624413025969389},
{-1.2296630158195092, -0.6889045337199393, -0.4715838400774679,
-0.3748151435206202, -0.32025023798648533, -0.2805167946643792,
-0.2634767329259997, -0.24492674680339377, -0.23057801003183975,
-0.21908485947892586, -0.20962833001863324, -0.20169361581996625,
-0.19490724020577055, -0.18902729280946673, -0.1838681545885219,
-0.17930257030613284, -0.17522739594110703, -0.17154982593714863,
-0.16822600877348037, -0.16337355353700467, -0.16242099481957517},
{-1.2294626019874877, -0.6886913903051486, -0.47145047733961487,
-0.3747222104447614, -0.3201789297537294, -0.28045719141734793,
-0.2634258040997963, -0.24488216003475216, -0.2305381179508661,
-0.21904857335557537, -0.20959490528511715, -0.2016625153253795,
-0.19487807166165894, -0.18899975693393323, -0.1838420177128679,
-0.17927764578651306, -0.1752035331141677, -0.17152690331572273,
-0.16820392272905238, -0.1633524922276095, -0.16240070223378744},
{-1.2292617488557993, -0.6884782951488111, -0.47131718990772864,
-0.3746293365743867, -0.32010766946655966, -0.2803976569837072,
-0.2633749117151094, -0.2448376061855182, -0.23049825599350982,
-0.21901231524481268, -0.20956150678587449, -0.20163143967125485,
-0.19484892679596832, -0.18897224375962018, -0.18381590267733294,
-0.179252742372773, -0.17517969074213546, -0.171504000572396,
-0.16818185605592895, -0.16333145568023255, -0.1623804248848142},
{-1.2290604576255961, -0.6882652484373502, -0.4711839777677653,
-0.374536521889393, -0.3200364571111356, -0.2803381911608174,
-0.2633240557702834, -0.24479308525421217, -0.23045842416033402,
-0.2189760851491993, -0.20952813452418084, -0.2016003888623139,
-0.1948198056159498, -0.18894475329324933, -0.18378980948930845,
-0.17922786007293645, -0.17515586883294887, -0.17148111771624386,
-0.16815980876335068, -0.1633104438332751, -0.16236016281832377},
{-1.2288587294953621, -0.6880522503568631, -0.47105084090628235,
-0.37444376637060994, -0.31996529267455553, -0.2802787937487423,
-0.2632732362657446, -0.24474859723978248, -0.2304186224527598,
-0.21893988307303403, -0.20949478850466896, -0.20156936290430671,
-0.19479070812815813, -0.18891728554199005, -0.18376373815683777,
-0.17920299889545, -0.1751320673956993, -0.17145825475641097,
-0.16813778086105557, -0.16328945662712435, -0.16233991607956},
{-1.2286565656613102, -0.687839301092743, -0.470917779309727,
-0.3743510699986956, -0.3198941761433156, -0.28021946454735236,
-0.2632224532004255, -0.24470414214043323, -0.23037885087180854,
-0.21890370901963685, -0.20946146873090044, -0.20153836180250018,
-0.19476163433959748, -0.18888984051279856, -0.1837376886875557,
-0.17917815884870514, -0.17510828643879428, -0.1714354117021557,
-0.16811577235845832, -0.16326849400251398, -0.16231968471339897},
{-1.2284539673169337, -0.687626400829588, -0.4707847929642792,
-0.37425843275402215, -0.3198231075044413, -0.2801602033576547,
-0.2631717065736794, -0.24465971995490676, -0.2303391094184022,
-0.21886756299235977, -0.20942817520758084, -0.20150738556192138,
-0.1947325842575225, -0.18886241821235927, -0.18371166108919468,
-0.1791533399410561, -0.17508452597086688, -0.17141258856281638,
-0.16809378326479063, -0.1632475559016644, -0.1622994687641377},
{-1.228250935653492, -0.687413549751394, -0.47065188185659146,
-0.3741658546177513, -0.3197520867451855, -0.28010100998276144,
-0.263120996385684, -0.24461533068179442, -0.23029939809423539,
-0.2188314449951143, -0.20939490793895388, -0.20147643418854244,
-0.19470355788865845, -0.18883501864797125, -0.18368565536993486,
-0.1791285421809885, -0.1750607860007367, -0.17138978534767624,
-0.16807181359010492, -0.16322664226783878, -0.16227926827584227},
{-1.2280474718597238, -0.6872007480417937, -0.4705190459730577,
-0.37407333557072153, -0.3196811138521811, -0.28004188422584697,
-0.26307032263594543, -0.2445709743201654, -0.2302597169005587,
-0.21879535503134306, -0.20936166692909275, -0.20144550768747038,
-0.19467455524052646, -0.1888076418270348, -0.18365967153768814,
-0.17910376557694363, -0.17503706653682372, -0.17136700206657984,
-0.1680498633430627, -0.1632057530453821, -0.16225908329270666},
{-1.22784357712179, -0.6869879958833254, -0.4703862853002807,
-0.3739808755938867, -0.31961018881267833, -0.2799828258920236,
-0.2630196853244797, -0.24452665086909064, -0.23022006583862087,
-0.21875929310519204, -0.20932845218309382, -0.2014146060648745,
-0.19464557632022128, -0.18878028775639066, -0.18363370960077674,
-0.17907901013763272, -0.17501336758867048, -0.17134423872910354,
-0.1680279325343932, -0.16318488817959675, -0.16223891385868683},
{-1.2276392526233955, -0.6867752934583606, -0.47025359982487736,
-0.3738884746687896, -0.3195393116144851, -0.279923834787029,
-0.26296908445167233, -0.24448236032783477, -0.2301804449104221,
-0.21872325922046798, -0.2092952637049752, -0.2013837293266647,
-0.19461662113547007, -0.1887529564436079, -0.1836077695674021,
-0.17905427587188427, -0.17498968916487279, -0.17132149534502084,
-0.16800602117343466, -0.16316404761675152, -0.1622187600168452},
{-1.2274344995459407, -0.6865626409482175, -0.47012098953337844,
-0.37379613277605106, -0.31946848224488544, -0.27986491071782105,
-0.2629185200168962, -0.24443810269529465, -0.23014085411723073,
-0.21868725338093853, -0.20926210149960944, -0.20135287747802977,
-0.1945876896936518, -0.18872564789619517, -0.1835818514460037,
-0.17902956278825677, -0.1749660312745771, -0.17129877192427578,
-0.16798412926993933, -0.16314323130304942, -0.16219862181010392},
{-1.2272293190682184, -0.6863500385337673, -0.46998845441255366,
-0.37370384989755134, -0.3193977006915132, -0.2798060534930702,
-0.26286799202120825, -0.2443938779708219, -0.2301012934613791,
-0.21865127559066977, -0.20922896557242332, -0.20132205052551733,
-0.194558782002213, -0.18869836212146396, -0.18355595524475454,
-0.1790048708956995, -0.17494239392701338, -0.17127606847651933,
-0.16796225683352972, -0.1631224391874877, -0.16217849928161066},
{-1.227023712366723, -0.6861374863953769, -0.46985599444928106,
-0.3736116260150002, -0.3193269669421168, -0.2797472629215356,
-0.2628175004649922, -0.24434968615441832, -0.23006176294437708,
-0.21861532585366028, -0.20919585592782752, -0.20129124847520607,
-0.19452989806948295, -0.18867109912753932, -0.18353008097282952,
-0.17898020020317063, -0.1749187771317562, -0.17125338501266363,
-0.1679404038746135, -0.1631016712183424, -0.16215839247344555},
{-1.2268176806153237, -0.6859249847126954, -0.46972360963029125,
-0.373519461109705, -0.3192562809845265, -0.2796885388138506,
-0.2627670453482214, -0.24430552724515664, -0.23002226256842562,
-0.21857940417436872, -0.20916277257138027, -0.20126047133308234,
-0.19450103790283002, -0.18864385892157998, -0.183504228638796,
-0.17895555071960878, -0.1748951808975221, -0.1712307215420008,
-0.1679185704029056, -0.1630809273450069, -0.16213830142800667},
{-1.2266112249857222, -0.6857125336645176, -0.46959129994233084,
-0.37342735516363845, -0.3191856428064934, -0.2796298809814868,
-0.2627166266720202, -0.24426140124329443, -0.22998279233547692,
-0.21854351055663201, -0.209129715507828, -0.2012297191057506,
-0.1944722015101643, -0.18861664151179447, -0.18347839825118406,
-0.17893092245416575, -0.17487160523462464, -0.1712080780755496,
-0.16789675642855784, -0.16306020751765793, -0.1621182261864096},
{-1.2264043466467913, -0.685500133429386, -0.4694590653723161,
-0.3733353081582118, -0.31911505239645166, -0.27957128923701013,
-0.2626662444367316, -0.2442173081481318, -0.22994335224774431,
-0.21850764500474718, -0.2090966847425424, -0.20119899179907108,
-0.1944433888998276, -0.18858944690573942, -0.18345258981903356,
-0.17890631541592406, -0.17484805015177685, -0.17118545462335177,
-0.16787496196172036, -0.16303951168726982, -0.16209816678992262},
{-1.2261970467655217, -0.6852877841850775, -0.4693269059073586,
-0.3732433200757823, -0.3190445097426746, -0.27951276339429576,
-0.26261589864366464, -0.24417324795989082, -0.22990394230778222,
-0.21847180752303075, -0.20906368028137834, -0.2011682894200053,
-0.1944146000796696, -0.18856227511170864, -0.1834268033512796,
-0.17888172961390225, -0.17482451565914836, -0.17116285119568886,
-0.16785318701225016, -0.1630188398050194, -0.1620781232792723},
{-1.22598932650603, -0.6850754861086292, -0.4691948215343835,
-0.3731513908987596, -0.31897401483339394, -0.2794543032685599,
-0.2625655892933949, -0.2441292206787793, -0.2298645625178466,
-0.21843599811598402, -0.20903070212952812, -0.20113761197493574,
-0.1943858350583465, -0.18853512613764778, -0.1834010388572267,
-0.17885716505785965, -0.17480100176644875, -0.17114026780352276,
-0.16783143159057623, -0.16299819182399844, -0.16205809569418328},
{-1.2257811870302433, -0.6848632393766119, -0.46906281224046165,
-0.37305952060861625, -0.31890356765683947, -0.2793959086753297,
-0.26251531638730796, -0.24408522630493046, -0.22982521288018276,
-0.21840021678809585, -0.208997750292788, -0.20110695947025903,
-0.1943570938436796, -0.18850799999154333, -0.18337529634595917,
-0.17883262175699421, -0.17477750848324192, -0.17111770445747077,
-0.1678096957073194, -0.16297756769596994, -0.16203808407476217},
{-1.2255726294975062, -0.6846510441648066, -0.468930878012606,
-0.372967709188309, -0.3188331682019321, -0.27933757943239357,
-0.26246507992633283, -0.24404126483885769, -0.22978589339787625,
-0.21836446354348205, -0.20896482477726686, -0.2010763319134128,
-0.19432837644466794, -0.18848089668244405, -0.1833495758269219,
-0.17880809972065315, -0.17475403581977567, -0.1710951611684095,
-0.1677879793723296, -0.1629569673749902, -0.16201808846037835},
{-1.2253636550650766, -0.6844389006486793, -0.46879901883807396,
-0.37287595661989403, -0.31876281645715565, -0.2792793153566233,
-0.2624148799117503, -0.24399733628068354, -0.22974660407312264,
-0.2183287383870578, -0.20893192558823515, -0.2010457293103265,
-0.19429968286925714, -0.1884538162177698, -0.18332387730891142,
-0.17878359895824936, -0.1747305837859372, -0.1710726379466685,
-0.1677662825966877, -0.16293639081459688, -0.16199810888922705},
{-1.2251542648875158, -0.6842268090028503, -0.46866723470422045,
-0.3727842628862241, -0.3186925124117703, -0.2792211162689071,
-0.2623647163452265, -0.24395344063145608, -0.2297073449091478,
-0.21829304132356597, -0.20889905273261355, -0.20101515166904527,
-0.19427101312658124, -0.1884267586067736, -0.18329820080203696,
-0.1787591194799827, -0.1747071523919299, -0.17105013480324693,
-0.16774460539037506, -0.16291583796921216, -0.16197814539943067},
{-1.2249444601170998, -0.684014769401422, -0.46853552559818823,
-0.3726926279700704, -0.31862225605438965, -0.27916298198894296,
-0.26231458922796236, -0.24390957789165668, -0.22966811590872283,
-0.21825737235680087, -0.20886620621584662, -0.20098459899602084,
-0.19424236722519161, -0.1883997238575077, -0.18327254631585355,
-0.17873466129517723, -0.17468374164783462, -0.17102765174955792,
-0.16772294776409247, -0.16289530879445913, -0.16195819802939226},
{-1.224734241903778, -0.6838027820177199, -0.46840389150753037,
-0.37260105185383985, -0.3185520473739114, -0.279104912338207,
-0.2622644985618461, -0.2438657480623263, -0.22962891707489064,
-0.21822173149229762, -0.2088333860446916, -0.20095407129849718,
-0.1942137451738386, -0.18837271197856076, -0.18324691385974567,
-0.1787102244134644, -0.17466035156425264, -0.17100518879599136,
-0.16770130972871122, -0.16287480324516324, -0.16193826681574386},
{-1.224523611394965, -0.6835908470247256, -0.46827233241934074,
-0.37250953452075564, -0.31848188636007, -0.27904690713979363,
-0.2622144443485741, -0.2438219511446853, -0.22958974841083624,
-0.2181861187347831, -0.2088005922253231, -0.20092356858391014,
-0.19418514698127787, -0.18834572297938834, -0.18322130344377463,
-0.17868580884490548, -0.1746369821516467, -0.1709827459540918,
-0.16767969129494809, -0.16285432127797428, -0.16191835179605896},
{-1.2243125697359845, -0.6833789645947013, -0.4681408483212799,
-0.37241807595366794, -0.31841177300208834, -0.2789889662169234,
-0.262164426589683, -0.2437781871396023, -0.22955060991960963,
-0.2181505340889398, -0.2087678247645144, -0.20089309085956053,
-0.19415657265663455, -0.18831875686811195, -0.1831957150773409,
-0.17866141459991702, -0.17461363342047065, -0.17096032323442856,
-0.16765809247368502, -0.16283386284894874, -0.16189845300632477},
{-1.2241011180694485, -0.6831671348993851, -0.4680094392009355,
-0.3723266761361188, -0.31834170728937927, -0.2789310893950425,
-0.2621144452874784, -0.243734456048756, -0.22951150160495537,
-0.21811497755991915, -0.20873508366917903, -0.20086263813323768,
-0.1941280222086288, -0.1882918136539331, -0.18317014877092141,
-0.17863704168792616, -0.17459030538139686, -0.17093792064846625,
-0.1676365132757276, -0.16281342791547182, -0.16187857048310406},
{-1.2238892575358653, -0.6829553581096253, -0.4678781050457328,
-0.37223533505122486, -0.31827168921138593, -0.27887327649943217,
-0.2620645004435982, -0.2436907578732317, -0.22947242346983643,
-0.21807944915174815, -0.20870236894574923, -0.20083221041217847,
-0.19409949564680673, -0.1882648933461315, -0.18314460453410142,
-0.17861269011950576, -0.17456699804518472, -0.17091553820783822,
-0.16761495371209634, -0.16279301643526445, -0.16185870426186888},
{-1.22367698927322, -0.6827436343960231, -0.46774684584347614,
-0.3721440526819615, -0.31820171875788716, -0.27881552735769155,
-0.2620145920604475, -0.24364709261496387, -0.22943337551823895,
-0.21804394887018574, -0.20866968060147606, -0.20080180770437117,
-0.19407099297976949, -0.18823799595337043, -0.18311908237726193,
-0.17858835990458566, -0.17454371142290093, -0.1708931759228598,
-0.16759341379389703, -0.16277262836603335, -0.16183885437889955},
{-1.2234643144174027, -0.6825319639285299, -0.46761566158188916,
-0.3720528290127154, -0.3181317959188785, -0.278757841797896,
-0.26196472014034633, -0.24360346027575552, -0.22939435775397143,
-0.2180084767206356, -0.2086370186429818, -0.2007714300178307,
-0.19404251421753038, -0.18821112148536834, -0.1830935823108426,
-0.17856405105375472, -0.1745204455256033, -0.17087083380564927,
-0.16757189353280566, -0.16275226366676598, -0.16181902086924893},
{-1.2232512341014719, -0.6823203468762644, -0.4674845522485045,
-0.3719616640263679, -0.3180619206841513, -0.278700219648643,
-0.2619148846852273, -0.24355986085751624, -0.22935537018044272,
-0.2179730327074072, -0.2086043830780273, -0.2007410773601208,
-0.19401405936895522, -0.18818426995118465, -0.18306810434431142,
-0.17853976357733536, -0.17449720036413474, -0.17084851186734085,
-0.1675503929394644, -0.16273192229633082, -0.16179920376838908},
{-1.223037749456663, -0.6821087834079504, -0.4673535178314854,
-0.3718705577070738, -0.3179920930441238, -0.27864266074111477,
-0.2618650856981599, -0.2435162943621645, -0.22931641280177395,
-0.21793761683631274, -0.2085717739136843, -0.20071074973957614,
-0.1939856284430057, -0.18815744136026424, -0.18304264848905838,
-0.17851549748574946, -0.17447397595000602, -0.17082621011902432,
-0.16752891202552966, -0.1627116042144614, -0.16177940311152028},
{-1.2228238616116394, -0.6818972736918951, -0.4672225583185936,
-0.37177951003871446, -0.31792231298862283, -0.27858516490598895,
-0.261815323180981, -0.243472760792093, -0.22927748562210226,
-0.21790222911218038, -0.20853919115732467, -0.200680447164304,
-0.19395722144993854, -0.18813063572237176, -0.18301721475482502,
-0.1784912527899607, -0.174450772294227, -0.17080392857272564,
-0.1675074508022263, -0.16269130938109377, -0.16175961893320512},
{-1.222609571692744, -0.6816858178953291, -0.4670916736978219,
-0.37168852100521654, -0.31785258050827814, -0.27852773197616365,
-0.26176559713682757, -0.24342926014996635, -0.2292385886454813,
-0.21786686954049905, -0.2085066348167821, -0.20065016964283444,
-0.19392883839880604, -0.18810385304676025, -0.18299180315274732,
-0.17846702950032167, -0.17442758940892844, -0.17078166724023625,
-0.16748600928172408, -0.16267103775726355, -0.16173985126965107},
{-1.2223948808238645, -0.6814744161854138, -0.4669608639573193,
-0.3715975905911604, -0.3177828955936004, -0.27847036178484963,
-0.2617159075685844, -0.24338579243820746, -0.2291997218765065,
-0.21783153812661205, -0.20847410489968254, -0.20061991718387695,
-0.19390047929955756, -0.18807709334307887, -0.18296641369302513,
-0.17844282762785646, -0.174404427305193, -0.1707594261324168,
-0.16746458747514126, -0.16265078930430654, -0.1617201001545716},
{-1.222179790126924, -0.6812630687284562, -0.46683012908511046,
-0.37150671878003294, -0.31771325823491736, -0.27841305416660767,
-0.2616662544785022, -0.24334235765955725, -0.22916088531905565,
-0.21779623487587507, -0.20844160141354706, -0.20058968979520841,
-0.19387214416167353, -0.18805035662168734, -0.18294104638656172,
-0.17841864718340794, -0.1743812859950271, -0.17073720526146374,
-0.16744318539488212, -0.16263056398336673, -0.16170036562376744},
{-1.2219643007210759, -0.6810517756902126, -0.46669946906918636,
-0.3714159055567485, -0.31764366842329395, -0.2783558089578868,
-0.2616166378699418, -0.24329895581700178, -0.229122078978369,
-0.21776095979368648, -0.2084091243670656, -0.20055948748598063,
-0.19384383299453667, -0.18802364289183515, -0.18291570124423018,
-0.17839448817769465, -0.1743581654900641, -0.1707150046385859,
-0.16742180305207377, -0.1626103617570216, -0.16168064771212443},
{-1.2217484137236148, -0.680840537235901, -0.4665688838981117,
-0.3713251509059088, -0.317574126149637, -0.27829862599429056,
-0.2615670577459479, -0.24325558691380067, -0.22908330285852863,
-0.21772571288616227, -0.20837667376759939, -0.20052931026534182,
-0.1938155458087678, -0.18799695216416623, -0.18289037827698174,
-0.17837035062238193, -0.1743350658023246, -0.17069282427671517,
-0.16740044045914892, -0.16259018258852542, -0.16166094645478246},
{-1.221532130249125, -0.6806293535301995, -0.46643837355994666,
-0.37123445481193507, -0.31750463140439855, -0.2782415051143623,
-0.2615175141095989, -0.24321225095268595, -0.2290445569644799,
-0.2176904941582567, -0.20834424962388987, -0.20049915814174923,
-0.19378728261381362, -0.18797028444848252, -0.1828650774958973,
-0.17834623452797516, -0.17431198694389138, -0.17067066418629473,
-0.16737909762800385, -0.16257002644034024, -0.16164126188697026},
{-1.2213154514102635, -0.680418224737168, -0.4663079380433075,
-0.37114381725950274, -0.31743518417904326, -0.27818444615674665,
-0.2614680069642663, -0.2431689479379724, -0.2290058413013334,
-0.21765530361600405, -0.20831185194383828, -0.20046903112429604,
-0.1937590434195382, -0.18794363975520412, -0.1828397989116315,
-0.17832213990612544, -0.17428892892714387, -0.17064852438076628,
-0.1673577745707231, -0.16254989327797453, -0.1616215940442025},
{-1.2210983783170333, -0.680207151020273, -0.466177577336337,
-0.371053238233781, -0.3173657844650517, -0.2781274489609942,
-0.26141853631285983, -0.24312567787235295, -0.22896715587339145,
-0.21762014126501583, -0.20827948073603686, -0.2004389292221127,
-0.19373082823615562, -0.1879170180941827, -0.18281454253584073,
-0.17829806676818372, -0.17426589176423235, -0.17062640487090874,
-0.1673364713001959, -0.16252978306476784, -0.1616019429614326},
{-1.2208809120774546, -0.6799961325424642, -0.46604729142786727,
-0.370962717719614, -0.31729643225342485, -0.27807051336890076,
-0.2613691021592732, -0.2430824407601868, -0.22892850068665638,
-0.2175850071112091, -0.20824713600906364, -0.20040885244486262,
-0.1937026370736401, -0.1878904194762736, -0.1827893083795864,
-0.17827401512536944, -0.1742428754675398, -0.17060430566917262,
-0.1673151878280077, -0.16250969576623575, -0.1615823086743049},
{-1.2206630537970682, -0.6797851694662196, -0.4659170803063768,
-0.37087225570254034, -0.31722712753593996, -0.27801363922188926,
-0.26131970450703257, -0.243039236605183, -0.2288898757458817,
-0.2175499011606412, -0.2082148177716192, -0.20037880080181658,
-0.1936744699425521, -0.18786384391218647, -0.18276409645434377,
-0.17824998498955935, -0.17421988004968014, -0.17058222678802437,
-0.167293924166934, -0.16248963134883532, -0.16156269121891143},
{-1.2204448045792553, -0.6795742619530962, -0.465786943960536,
-0.37078185216735804, -0.317157870303852, -0.2779568263630807,
-0.26127034335938504, -0.24299606541186058, -0.22885128105614427,
-0.2175148234188935, -0.20818252603229048, -0.20034877430217612,
-0.1936463268526154, -0.1878372914121993, -0.18273890677127014,
-0.17822597637231574, -0.17419690552341827, -0.17056016823937803,
-0.1672726803297664, -0.162469589778226, -0.161543090630488},
{-1.2202261655249105, -0.6793634101646546, -0.46565688237896374,
-0.3706915070997088, -0.31708866054919405, -0.2779000746366318,
-0.26122101872036296, -0.24295292718432115, -0.2288127166236471,
-0.21747977389235373, -0.2081502608000445, -0.20031877295630984,
-0.19361820781463912, -0.18781076198734326, -0.18271373934189405,
-0.17820198928537678, -0.1741739519013592, -0.1705381300356521,
-0.16725145632920224, -0.16244957102243873, -0.16152350694505557},
{-1.2200071377330444, -0.6791526142613238, -0.4655268955505347,
-0.3706012204850335, -0.31701949826381437, -0.2778433838873333,
-0.26117173059349774, -0.2429098219269985, -0.2287741824531313,
-0.21744475258724805, -0.20811802208395136, -0.20028879677326472,
-0.19359011283875383, -0.1877842556484559, -0.18268859417801764,
-0.17817802374047353, -0.1741510191964828, -0.17051611218906082,
-0.1672302521781166, -0.16242957504880096, -0.16150394019841485},
{-1.219787722299917, -0.6789418744034217, -0.46539698346427905,
-0.37051099230909124, -0.3169503834399148, -0.27778675396226227,
-0.261122478983145, -0.24286674964457688, -0.2287356785506489,
-0.21740975950965158, -0.2080858098931948, -0.20025884576341646,
-0.19356204193557147, -0.1877577724061652, -0.18266347129117655,
-0.17815407974970832, -0.17412810742154505, -0.17049411471208664,
-0.16720906788932055, -0.16240960182598485, -0.1614843904266916},
{-1.2195679203199896, -0.6787311907504732, -0.4652671461088609,
-0.3704208225576515, -0.31688131606914993, -0.27773018470789346,
-0.26107326389283614, -0.24282371034171213, -0.22869720492192336,
-0.2173747946656608, -0.20805362423661222, -0.2002289199368601,
-0.19353399511579816, -0.18773131227231232, -0.18263837069306277,
-0.17813015732509285, -0.17410521658939615, -0.17047213761749802,
-0.16718790347589518, -0.16238965132356675, -0.16146485766637397},
{-1.2193477328852174, -0.6785205634616336, -0.4651373834735759,
-0.3703307112165355, -0.3168122961441533, -0.277673675972526,
-0.2610240853268042, -0.2427807040237706, -0.22865876157288412,
-0.21733985806196898, -0.20802146512386166, -0.20019901930310624,
-0.1935059723895236, -0.18770487525756252, -0.1826132923955459,
-0.17810625647850387, -0.17408234671334277, -0.1704501809174701,
-0.16716675895106548, -0.16236972351128642, -0.16144534195347404},
{-1.2191271610853125, -0.6783099926950653, -0.4650076955474587,
-0.37024065827209895, -0.3167433236571906, -0.2776172276056137,
-0.26097494328939597, -0.2427377306957723, -0.22862034850950508,
-0.21730494970493552, -0.20798933256381424, -0.2001691438731541,
-0.19347797376827813, -0.18767846137357758, -0.18258823641073008,
-0.17808237722279152, -0.17405949780659746, -0.17042824462521722,
-0.1671456343282749, -0.1623498183605765, -0.16142584332443555},
{-1.2189062060077722, -0.6780994786091039, -0.4648780823194638,
-0.37015066371004046, -0.31667439860089885, -0.277560839457184,
-0.26092583778430267, -0.24269479036308717, -0.22858196573766598,
-0.21727006960154682, -0.20795722656640692, -0.20013929365714844,
-0.19344999926213724, -0.1876520706316871, -0.1825632027501758,
-0.17805851956991603, -0.17403666988246513, -0.17040632875305306,
-0.1671245296215158, -0.16232993584252675, -0.1614063618156738},
{-1.2186848687379506, -0.6778890213610813, -0.4647485437791783,
-0.37006072751727537, -0.31660552096802874, -0.2775045113790302,
-0.2608767688165923, -0.24265188303102647, -0.22854361326391448,
-0.21723521775802013, -0.20792514714121246, -0.20010946866567636,
-0.1934220488820788, -0.18762570304328818, -0.18253819142609373,
-0.17803468353226393, -0.17401386295398424, -0.1703844333137745,
-0.1671034448432156, -0.1623100759301881, -0.1613868974634176},
{-1.2184631503588292, -0.677678621107642, -0.4646190799157104,
-0.3699708496798131, -0.3165366907509437, -0.2774482432231462,
-0.26082773639012835, -0.24260900870555702, -0.2285052910943559,
-0.2172003941810594, -0.2078930942976669, -0.20007966890925744,
-0.1933941226390008, -0.18759935862054178, -0.18251320245082248,
-0.1780108691229394, -0.17399107703431582, -0.17036255832099023,
-0.16708238000775744, -0.162290238596416, -0.16136745030485677},
{-1.2182410519511668, -0.6774682780053247, -0.46448969071856094,
-0.36988103018413376, -0.31646790794287405, -0.2773920348428014,
-0.2607787405094939, -0.242566167392388, -0.22846699923518976,
-0.21716559887792997, -0.20786106804576399, -0.2000498943987612,
-0.19336622054419728, -0.18757303737507947, -0.18248823583662954,
-0.1779870763538689, -0.17396831213756592, -0.17034070378710275,
-0.16706133512894183, -0.16227042381554746, -0.16134802037578666},
{-1.2180185745937813, -0.6772579922100039, -0.46436037617719084,
-0.369791269017389, -0.31639917253673566, -0.2773358860922457,
-0.2607297811794762, -0.24252335909752354, -0.22842873769369199,
-0.21713083185538373, -0.2078290683946893, -0.2000201451452579,
-0.19333834260863547, -0.18754673931877086, -0.18246329159531705,
-0.1779633052388263, -0.1739455682765776, -0.17031886972555377,
-0.16704031022088905, -0.1622506315625749, -0.16132860771328872},
{-1.2177957193627442, -0.6770477638766392, -0.46423113628099966,
-0.3697015661657961, -0.3163304845257944, -0.27727979682710036,
-0.26068085840438293, -0.24248058382718973, -0.2283905064757441,
-0.21709609312087963, -0.20779709535521818, -0.19999042115958865,
-0.19331048884351176, -0.18752046446377513, -0.18243836973985061,
-0.17793955579007736, -0.1739228454650501, -0.17029705614979562,
-0.16701930529753994, -0.1622308618129562, -0.16130921235344786},
{-1.21757248733239, -0.6768375931602222, -0.464101971019824,
-0.36961192161701995, -0.3162618439036571, -0.27722376690396366,
-0.2606319721892607, -0.24243784158773707, -0.2283523055886345,
-0.21706138268101682, -0.2077651489371135, -0.19996072245314522,
-0.19328265925959442, -0.1874942128221555, -0.18241347028242139,
-0.17791582802062855, -0.1739001437169616, -0.1702752630722717,
-0.1669983203728993, -0.1622111145435703, -0.16128983433323896},
{-1.2173488795746321, -0.6766274802149788, -0.4639728803833636,
-0.36952233535784273, -0.31619325066303894, -0.27716779617932197,
-0.2605831225386108, -0.24239513238549115, -0.22831413503866393,
-0.21702670054348516, -0.20773322915003511, -0.19993104903674208,
-0.19325485386874774, -0.18746798440653478, -0.18238859323589018,
-0.17789212194414183, -0.1738774630451303, -0.17025349050768313,
-0.16697735546157588, -0.16219138973138314, -0.16127047368836855},
{-1.2171248971591888, -0.6764174251944004, -0.4638438643612943,
-0.3694328073751336, -0.31612470479786303, -0.27711188451210944,
-0.26053430945749234, -0.24235245622731938, -0.2282759948331119,
-0.21699204671577021, -0.20770133600493068, -0.1999014009220339,
-0.19322707268215567, -0.1874417792289016, -0.18236373861265065,
-0.17786843757346738, -0.17385480346417737, -0.17023173846886053,
-0.1669564105779866, -0.16217168735430576, -0.1612511304560602},
{-1.2169005411536071, -0.6762074282519466, -0.46371492294343675,
-0.36934333765695015, -0.3160562063019974, -0.27705603176167237,
-0.26048553295097854, -0.24230981312013355, -0.22823788497945863,
-0.21695742120540729, -0.2076694695113943, -0.19987177812098267,
-0.19319931571166293, -0.18741559730205637, -0.1823389064253398,
-0.17784477492241102, -0.17383216498723364, -0.17021000696932198,
-0.1669354857367331, -0.16215200739117286, -0.16123180467148046},
{-1.2166758126233272, -0.6759974895399523, -0.463586056119933,
-0.36925392619020947, -0.31598775516918565, -0.2770002377879077,
-0.2604367930238016, -0.24226720307044758, -0.22819980548423935,
-0.21692282402010044, -0.20763762967998112, -0.19984218064461423,
-0.19317158296833448, -0.1873894386387427, -0.18231409668711507,
-0.1778211340042617, -0.1738095476285455, -0.17018829602329433,
-0.16691458095261602, -0.1621323498208067, -0.161212496371137},
{-1.2164507126313566, -0.6757876092106798, -0.46345726388060005,
-0.369164572962541, -0.31591935139336336, -0.2769445024528192,
-0.2603880896813564, -0.2422246260856138, -0.22816175635495384,
-0.21688825516747023, -0.2076058165213901, -0.19981260850467564,
-0.1931438744634928, -0.1873633032513009, -0.18228930941046428,
-0.17779751483252682, -0.17378695140168077, -0.17016660564418018,
-0.16689369623973604, -0.16211271462285914, -0.16119320559053207},
{-1.2162252422388757, -0.6755777874157998, -0.4633285462156973,
-0.36907527796219775, -0.315850994968466, -0.27688882561802153,
-0.26033942292860246, -0.24218208217313908, -0.22812373759919602,
-0.21685371465600767, -0.20757403004573938, -0.19978306171374527,
-0.19311619021014081, -0.18733719115314784, -0.18226454460891617,
-0.17777391742136217, -0.1737643763210226, -0.1701449358464444,
-0.16687283161406619, -0.16209310177828762, -0.1611739323660295},
{-1.2159994025045044, -0.6753680243063016, -0.4631999031153855,
-0.3689860411766368, -0.31578268588888747, -0.2768332071470567,
-0.2602907927709328, -0.242139571340104, -0.22808574922417435,
-0.21681920249301, -0.20754227026423422, -0.19975354028324688,
-0.1930885302192138, -0.1873111023570626, -0.18223980229557846,
-0.17775034178450255, -0.17374182239998248, -0.1701232866437543,
-0.16685198708969828, -0.16207351126672798, -0.16115467673215633},
{-1.2157731944849992, -0.6751583200328195, -0.4630713345697419,
-0.368896862593898, -0.3157144241487977, -0.2767776469041259,
-0.26024219921375646, -0.24209709359420906, -0.22804779123813468,
-0.2167847186873928, -0.20751053718701762, -0.19972404422559542,
-0.19306089450311603, -0.18728503687593445, -0.18221508248350027,
-0.1777267879360167, -0.17371928965320294, -0.1701016580505783,
-0.16683116268223408, -0.1620539430704806, -0.16113543872468838},
{-1.2155466192347282, -0.6749486747454396, -0.46294284056926127,
-0.3688077422020868, -0.31564620974291024, -0.27672214475430756,
-0.2601936422622426, -0.2420546489431512, -0.2280098636481167,
-0.21675026324719582, -0.2074788308250124, -0.19969457355285236,
-0.193033283073353, -0.18725899472319618, -0.1821903851861606,
-0.17770325589022917, -0.17369677809437434, -0.17008005008108462,
-0.16681035840706038, -0.16203439716958634, -0.16111621837829837},
{-1.2153196778060957, -0.6747390885937694, -0.462814421104472,
-0.3687186799896782, -0.31557804266583034, -0.27666670056418674,
-0.2601451219218376, -0.24201223739481215, -0.22797196646237516,
-0.2167158361808017, -0.20744715118940604, -0.19966512827764582,
-0.19300569594247818, -0.18723297591217936, -0.18216571041625862,
-0.1776797456612229, -0.17367428773819782, -0.17005846274956582,
-0.1667895742788872, -0.1620148735462088, -0.1610970157276732},
{-1.2150923712492165, -0.6745295617269003, -0.462686076165836,
-0.3686296759451544, -0.3155099229120175, -0.2766113142004816,
-0.2600966381987888, -0.2419698589570185, -0.22793409968909017,
-0.21668143749710822, -0.20741549829087802, -0.19963570841223444,
-0.19297813312287815, -0.18720698045637896, -0.18214105818859316,
-0.17765625726375944, -0.17365181859856982, -0.17003689607091665,
-0.1667688103132452, -0.16199537218270876, -0.1610778308075762},
{-1.214864700611944, -0.6743200942933907, -0.4625578057437014,
-0.3685407300566954, -0.31544185047655837, -0.2765559855313402,
-0.26004819109808963, -0.24192751363800546, -0.22789626333551638,
-0.21664706720487814, -0.20738387214051102, -0.19960631396903494,
-0.19295059462651132, -0.18718100836891338, -0.18211642851591314,
-0.17763279071221127, -0.17362937069023765, -0.17001535005956647,
-0.16674806652576812, -0.16197589306038118, -0.16105866365122345},
{-1.214636666940284, -0.674110686441149, -0.46242960982887205,
-0.36845184231309247, -0.31537382535450575, -0.27650071442599256,
-0.25999978062565354, -0.2418852014461237, -0.22785845741088906,
-0.21661272531278364, -0.20735227274955292, -0.19957694496138423,
-0.1929230804662616, -0.18715505966406454, -0.18209182141198355,
-0.17760934602134704, -0.17360694402716348, -0.16999382473025193,
-0.16672734293204705, -0.1619564361623258, -0.16103951429362695},
{-1.2144082712778657, -0.6739013383179921, -0.4623014884121144,
-0.36836301270328065, -0.3153058475410404, -0.27644550075415175,
-0.2599514067871649, -0.24184292238939342, -0.227820681922843,
-0.21657841183007065, -0.20732070012913084, -0.199547601401445,
-0.19289559065435924, -0.18712913435538248, -0.18206723689106674,
-0.17758592320623912, -0.17358453862419587, -0.16997232009816976,
-0.166706639547769, -0.16193700147025503, -0.1610203827678749},
{-1.2141795146662888, -0.6736920500709482, -0.46217344148427664,
-0.36827424121614705, -0.31523791703146387, -0.27639034438763765,
-0.2599030695887752, -0.24180067647692205, -0.22778293688017648,
-0.21654412676608636, -0.20728915429085326, -0.199518283302913,
-0.19286812520346075, -0.1871032324562485, -0.18204267496640014,
-0.17756252228135416, -0.17356215449560963, -0.16995083617815254,
-0.166685956388001, -0.16191758896645503, -0.16100126910701285},
{-1.2139503981448385, -0.6734828218465916, -0.46204546903633315,
-0.3681855278406463, -0.3151700338211114, -0.2763352451973624,
-0.25985476903639615, -0.24175846371683107, -0.22774522229143024,
-0.21650987012952783, -0.20725763524565366, -0.1994889906784092,
-0.19284068412660105, -0.18707735398118075, -0.18201813565281277,
-0.1775391432625053, -0.17353979165608102, -0.1699293729856617,
-0.16666529346905357, -0.16189819863397759, -0.16098217334448606},
{-1.2137209227509524, -0.6732736537911084, -0.4619175710591463,
-0.36809687256609536, -0.31510219790528815, -0.27628020305664514,
-0.2598065051360461, -0.2417162841180609, -0.2277075381647986,
-0.21647564193067836, -0.20722614300526132, -0.19945972354102537,
-0.19281326743643667, -0.1870514989438874, -0.1819936189637783,
-0.17751578616404906, -0.17351745012065933, -0.1699079305356168,
-0.1666446508065107, -0.1618788304551586, -0.16096309551309673},
{-1.2134910895198026, -0.6730645460499556, -0.4617897475439836,
-0.3680082753818912, -0.31503440928012516, -0.2762252178393023,
-0.25975827789418915, -0.24167413768963897, -0.2276698845096785,
-0.2164414421788834, -0.20719467758152454, -0.1994304819043471,
-0.19278587514627787, -0.18702566735877468, -0.18196912491389305,
-0.17749245100235278, -0.17349512990371885, -0.16988650884391632,
-0.16662402841631696, -0.16185948441293796, -0.16094403564556714},
{-1.2132608994843643, -0.6728554987683957, -0.46166199848170564,
-0.3679197362770701, -0.3149666679413965, -0.27617028941995336,
-0.2597100873165914, -0.2416320244404826, -0.2276322613346462,
-0.2164072708838276, -0.20716323898569655, -0.19940126578187645,
-0.19275850726901034, -0.18699985924020623, -0.1819446535174425,
-0.17746913779260787, -0.17347283102039057, -0.16986510792595944,
-0.16660342631493208, -0.16184016048943128, -0.1609249937737438},
{-1.2130303536756273, -0.6726465120912382, -0.46153432386407367,
-0.3678312552418159, -0.3148989738849348, -0.2761154176749283,
-0.25966193340986976, -0.24158994437986436, -0.22759466864868472,
-0.21637312805522413, -0.2071318272298157, -0.19937207518701605,
-0.19273116381750732, -0.18697407460178006, -0.18192020478864812,
-0.1774458465498725, -0.17345055348569716, -0.16984372779745982,
-0.16658284451725258, -0.1618208586678982, -0.16090596992996886},
{-1.212799453122348, -0.6724375861624523, -0.4614067236818862,
-0.3677428322659484, -0.3148313271068801, -0.27606060248018593,
-0.25961381618072465, -0.24154789751692363, -0.2275571064612656,
-0.21633901370370978, -0.20710044232588487, -0.19934291013372807,
-0.19270384480573277, -0.18694831345934304, -0.18189577874258056,
-0.17742257729044297, -0.173428297314544, -0.169822368474577,
-0.16656228304016807, -0.16180157893105473, -0.16088696414625758},
{-1.2125681988513302, -0.672228721125629, -0.4612791979268316,
-0.3676544673383635, -0.3147637276033315, -0.2760058437133903,
-0.2595657356350589, -0.24150588386095073, -0.22751957478103613,
-0.2163049278386726, -0.20706908428566173, -0.1993137706353263,
-0.1926765502463681, -0.18692257582632088, -0.18187137539316822,
-0.17739933002977715, -0.17340606252180457, -0.16980102997279722,
-0.1665417418994295, -0.161782321261855, -0.16086797645373707},
{-1.2123365918872002, -0.6720199171243877, -0.4611517465904367,
-0.36756616044996626, -0.31469617537065453, -0.2759511412532447,
-0.2595176917798945, -0.2414639034213657, -0.22748207361812867,
-0.216270870471039, -0.20703775312093242, -0.1992846567062827,
-0.19264928015367744, -0.1868968617177753, -0.18184699475567,
-0.17737610478381605, -0.17338384912326177, -0.16977971230865663,
-0.1665212211111502, -0.1617630856428871, -0.16084900688429649},
{-1.2121046332523573, -0.6718111743011468, -0.46102436966405946,
-0.367477911590429, -0.31462867040563225, -0.2758964949789,
-0.2594696846217168, -0.24142195620830265, -0.2274446029816506,
-0.21623684161118106, -0.20700644884439257, -0.19925556836046887,
-0.192622034540884, -0.18687117114857088, -0.18182263684469646,
-0.1773529015687636, -0.1733616571341674, -0.1697584154986611,
-0.16650072069201372, -0.161743872057734, -0.1608300554687414},
{-1.211872323967425, -0.6716024927985051, -0.4608970671397028,
-0.3673897207502197, -0.31456121270489135, -0.27584190477151793,
-0.25942171416750526, -0.24138004223099507, -0.2274071628813683,
-0.21620284126948164, -0.20697517146790823, -0.19922650561189315,
-0.19259481342169948, -0.18684550413329326, -0.18179830167546562,
-0.17732972040045603, -0.1733394865696578, -0.16973713955904302,
-0.1664802406577639, -0.16172468048950428, -0.16081112223820426},
{-1.211639665050571, -0.6713938727580828, -0.4607698390089219,
-0.3673015879198438, -0.3144938022646748, -0.275787370511436,
-0.25937378042406145, -0.241338161499133, -0.22736975332698073,
-0.21616886945678182, -0.206943921003921, -0.1991974684752762,
-0.1925676168100221, -0.18681986068720846, -0.1817739892628456,
-0.1773065612949889, -0.17331733744512867, -0.169715884506072,
-0.16645978102468462, -0.16170551092155705, -0.16079220722292398},
{-1.211406657518297, -0.6711853143212796, -0.46064268526363605,
-0.3672135130894887, -0.314426439082478, -0.27573289208135776,
-0.25932588339831497, -0.241296314023268, -0.22733237432827025,
-0.2161349261839387, -0.20691269746506613, -0.1991684569646388,
-0.19254044471989396, -0.1867942408251242, -0.1817496996219976,
-0.177283424268861, -0.17329520977698465, -0.16969465035690945,
-0.1664393418096175, -0.1616863633381076, -0.16077331045445753},
{-1.2111733023845614, -0.6709768176291808, -0.4605156058958535,
-0.36712549625030455, -0.3143591231552154, -0.27567846936442564,
-0.2592780230975844, -0.24125449981304037, -0.2272950258958346,
-0.21610101146168859, -0.206881500863755, -0.19913947109475671,
-0.19251329716551702, -0.1867686445623722, -0.18172543276853226,
-0.17726030933802583, -0.17327310358002634, -0.16967343712812522,
-0.166418923028802, -0.1616672377228081, -0.1607544319615748},
{-1.2109396006616082, -0.6707683828219668, -0.46038860089746514,
-0.36703753739245926, -0.31429185448014607, -0.27562410224447653,
-0.2592301995288864, -0.24121271887846696, -0.227257708039188,
-0.21606712530168792, -0.20685033121267438, -0.19911051088038967,
-0.1924861741608641, -0.18674307191433037, -0.1817011887173603,
-0.1772372165190763, -0.17325101887088046, -0.16965224483655916,
-0.16639852469902827, -0.1616481340598135, -0.16073557177500497},
{-1.2107055533593956, -0.6705600100397531, -0.4602616702606479,
-0.36694963650738366, -0.31422463305447934, -0.2755697906070953,
-0.25918241269928366, -0.24117097122992526, -0.22722042076938287,
-0.21603326771455045, -0.20681918852457137, -0.19908157633592083,
-0.19245907571985654, -0.1867175228960214, -0.18167696748443163,
-0.1772141458281169, -0.17322895566510077, -0.16963107349967288,
-0.1663781468362906, -0.16162905233386482, -0.1607167299243777},
{-1.2104711614861676, -0.6703516994222207, -0.46013481397768885,
-0.3668617935862013, -0.3141574588755951, -0.2755155343373179,
-0.2591346626164732, -0.24112925687802544, -0.22718316409632955,
-0.2159994387120907, -0.2067880728122553, -0.19905266747669792,
-0.1924320018577692, -0.18669199752314114, -0.18165276908526629,
-0.17719109728231075, -0.17320691397895338, -0.16960992313463308,
-0.16635778945764734, -0.16160999253008335, -0.1606979064392231},
{-1.2102364260475822, -0.670143451108216, -0.46000803204086615,
-0.36677400861959697, -0.31409033194126224, -0.27546133332245226,
-0.2590869492878465, -0.2410875758329567, -0.227145938030624,
-0.21596563830552995, -0.20675698408919274, -0.19902378431747714,
-0.192404952588495, -0.18666649581100891, -0.18162859353576266,
-0.17716807089738573, -0.17318489382839353, -0.16958879375844127,
-0.16633745257989574, -0.1615909546336063, -0.160679101348304},
{-1.210001348047692, -0.6699352652365711, -0.4598813244424118,
-0.36668628159950245, -0.31402325224898675, -0.27540718744991644,
-0.25903927272081084, -0.24104592810529013, -0.22710874258358693,
-0.21593186650652285, -0.20672592236760146, -0.19899492687339126,
-0.19237792792678654, -0.1866410177756599, -0.1816044408515669,
-0.17714506669027585, -0.17316289523032324, -0.16956768538835654,
-0.16631713621984723, -0.1615719386305745, -0.16066031468107056},
{-1.2097659284883306, -0.6697271419453648, -0.45975469117484913,
-0.3665986125168743, -0.31395621979729604, -0.27535309660837193,
-0.25899163292318406, -0.24100431370566433, -0.2270715777654857,
-0.2158981233267614, -0.2066948876612429, -0.19896609515963526,
-0.19235092788750308, -0.18661556343242403, -0.18158031104904282,
-0.1771220846778565, -0.17314091820024125, -0.16954659804238226,
-0.16629684039449977, -0.16155294450684643, -0.16064154646562656},
{-1.2095301683692155, -0.6695190813723446, -0.45962813223088794,
-0.36651100136357684, -0.3138892345834563, -0.2752990606878143,
-0.2589440299024872, -0.24096273264478718, -0.2270344435877103,
-0.21586440877802815, -0.20666387998338465, -0.19893728919140052,
-0.19232395248536527, -0.1865901327970274, -0.1815562041435843,
-0.17709912487658563, -0.1731189627553693, -0.1695255317379054,
-0.166276565120544, -0.16153397224914734, -0.16062279673067792},
{-1.2092940686881475, -0.6693110836550087, -0.45950164760305157,
-0.36642344813179406, -0.313822296606066, -0.27524507957798683,
-0.25889646366694485, -0.24092118493357084, -0.22699734006158856,
-0.21583072287228866, -0.2066328993474258, -0.1989085089845375,
-0.192297001735529, -0.18656472588583384, -0.1815321201527187,
-0.1770761873034914, -0.17309702891210144, -0.1695044864925208,
-0.1662563104154131, -0.16151502184482958, -0.1606040655044758},
{-1.2090576304409106, -0.6691031489299872, -0.45937523728427543,
-0.3663359528125181, -0.3137554058632528, -0.27519115317041987,
-0.2588489342245115, -0.24087967058260773, -0.22696026719787987,
-0.2157970656217909, -0.20660194576691815, -0.19887975455353768,
-0.1922700756529121, -0.18653934271447525, -0.1815080590919056,
-0.1770532719753959, -0.1730751166874871, -0.16948346232425138,
-0.16623607629602333, -0.16149609328168069, -0.16058535281476694},
{-1.2088208546211128, -0.6688952773337968, -0.45924890126706686,
-0.36624851539847825, -0.3136885623534251, -0.27513728135710025,
-0.25880144158289475, -0.240838189603247, -0.2269232250086155,
-0.21576343703826062, -0.20657101925512045, -0.19885102591511128,
-0.1922431742528783, -0.18651398329899038, -0.1814840209776687,
-0.17703037890903062, -0.17305322609804819, -0.16946245925050007,
-0.16621586277981848, -0.16147718654749887, -0.1605666586894241},
{-1.2085837422205978, -0.6686874690023545, -0.4591226395446242,
-0.3661611358814749, -0.31362176607532355, -0.2750834640310096,
-0.25875398575043285, -0.24079674200620893, -0.2268862135050771,
-0.2157298371343117, -0.20654011982629328, -0.19882232308439818,
-0.19221629755065273, -0.1864886476558656, -0.18146000582697042,
-0.1770075081216831, -0.17303135716139195, -0.16944147728981918,
-0.16619566988467938, -0.16145830163132224, -0.16054798315578367},
{-1.2083462942288028, -0.6684797240715339, -0.45899645210986684,
-0.366073814253987, -0.3135550170278609, -0.2750297010869982,
-0.25870656673544445, -0.24075532780307896, -0.2268492326991467,
-0.21569626592247104, -0.2065092474943988, -0.1987936460769415,
-0.19218944556171458, -0.1864633358010881, -0.1814360136564872,
-0.17698465963009014, -0.17300950989388397, -0.16942051645980882,
-0.16617549762743877, -0.16143943852211962, -0.16052932624100436},
{-1.208108511633478, -0.6682720426760644, -0.4588703389558919,
-0.3659865505086142, -0.3134883152092982, -0.27497599241874227,
-0.2586591845463655, -0.24071394700456672, -0.2268122826028094,
-0.21566272341457982, -0.20647840227279168, -0.19876499490902866,
-0.19216261830194092, -0.1864380477509311, -0.18141204448332893,
-0.17696183345180216, -0.17298768431345124, -0.16939957677879036,
-0.16615534602634874, -0.16142059720964852, -0.1605106879720939},
{-1.2078703954203167, -0.6680644249508969, -0.45874430007609135,
-0.36589934463748897, -0.31342166061901366, -0.27492233792246523,
-0.2586118391915928, -0.24067259962197518, -0.2267753632280325,
-0.21562920962405308, -0.20644758417613218, -0.19873636959603225,
-0.19213581578672034, -0.18641278352190405, -0.1813880983244438,
-0.17693902960341035, -0.17296588043755, -0.16937865826454512,
-0.1661352150990787, -0.161401777684965, -0.16049206837676344},
{-1.2076319465728416, -0.6678568710301986, -0.4586183354635782,
-0.3658121966337813, -0.313355053256128, -0.27486873749448293,
-0.2585645306799407, -0.24063128566700698, -0.22673847458703733,
-0.2155957245633946, -0.206416793218418, -0.1987077701544795,
-0.1921090380324646, -0.1863875431309232, -0.18136417519737158,
-0.17691624810318984, -0.17294409828365787, -0.16935776093597,
-0.16611510486319503, -0.16138297993826178, -0.1604734674811823},
{-1.2073931660727766, -0.6676493810478394, -0.4584924451116805,
-0.365725106490002, -0.3132884931201776, -0.27481519103251273,
-0.2585172590197562, -0.2405900051506702, -0.22670161669191558,
-0.21556226824529823, -0.20638602941387596, -0.19867919660033273,
-0.1920822850546422, -0.1863623265942671, -0.18134027511895034,
-0.17689348896748136, -0.17292233786971245, -0.16933688481067044,
-0.16609501533772608, -0.16136420396148665, -0.1604548853119745},
{-1.2071540548997088, -0.6674419551374617, -0.45836662901433023,
-0.3656380741993548, -0.31322198021032044, -0.2747616984350092,
-0.25847002421986787, -0.24054875808475984, -0.22666478955549785,
-0.21552884068302092, -0.20635529277744702, -0.19865064894967688,
-0.19205555686938247, -0.18633713392852158, -0.18131639810721545,
-0.17687075221421544, -0.17290059921348977, -0.16931602990773698,
-0.16607494653978705, -0.16134544974669573, -0.1604363218960465},
{-1.206914614031267, -0.6672345934316537, -0.45824088716431,
-0.3655510997551126, -0.3131555145258247, -0.2747082596006205,
-0.2584228262895536, -0.24050754448052203, -0.22662799319005522,
-0.21549544188956382, -0.20632458332304715, -0.19862212721878159,
-0.19202885349342047, -0.18631196515099546, -0.1812925441794544,
-0.176848037860859, -0.17287888233310866, -0.16929519624481593,
-0.16605489848832455, -0.1613267172863555, -0.1604177772597417},
{-1.206674844443116, -0.6670272960632415, -0.45811521955611667,
-0.36546418315021434, -0.3130890960667845, -0.27465487442939107,
-0.2583756652374909, -0.2404663643496221, -0.22659122760860662,
-0.21546207187794053, -0.20629390106602052, -0.19859363142379394,
-0.19200217494279315, -0.1862868202781911, -0.18126871335368655,
-0.17682534592473864, -0.17285718724664356, -0.16927438384062476,
-0.1660348712015729, -0.16130800657398936, -0.16039925142879952},
{-1.206434747109058, -0.6668200631648435, -0.4579896261832115,
-0.36537732437835224, -0.3130227248330417, -0.2746015428225217,
-0.25832854107319214, -0.2404252177037165, -0.22655449282416207,
-0.21542873066188584, -0.20626324602072366, -0.1985651615816657,
-0.19197552123429595, -0.18626169932714198, -0.1812449056479899,
-0.17680267642368896, -0.17283551397258456, -0.16925359271384366,
-0.16601486469845916, -0.16128931760337473, -0.16038074443050654},
{-1.2061943230005765, -0.6666128948675238, -0.4578641070393594,
-0.3652905234329449, -0.3129564008249055, -0.27454826468161464,
-0.2582814538054521, -0.24038410455454873, -0.22651778884951668,
-0.2153954182545803, -0.2062326182023675, -0.19853671770846404,
-0.1919488923846977, -0.18623660231548556, -0.18122112108037491,
-0.17678002937528525, -0.17281386252961362, -0.1692328228832487,
-0.16599487899745213, -0.16127065036936017, -0.1603622562903002},
{-1.2059535730876068, -0.6664057913031067, -0.45773866211880687,
-0.3652037803079615, -0.31289012404197614, -0.27449503990972524,
-0.25823440344390924, -0.24034302491357273, -0.226481115698002,
-0.21536213466995235, -0.20620201762603863, -0.19850829982097373,
-0.1919222884105629, -0.18621152925962292, -0.181197359668829,
-0.17675740479728397, -0.17279223293629542, -0.16921207436710084,
-0.1659749141176068, -0.16125200486668234, -0.16034378703510477},
{-1.205712498337844, -0.6661987526023552, -0.45761329141542184,
-0.36511709499689715, -0.3128238944845929, -0.2744418684092551,
-0.25818738999774027, -0.2403019787928855, -0.226444473382708,
-0.21532887992141525, -0.20617144430670997, -0.19847990793557635,
-0.19189570932892863, -0.18618648017773154, -0.18117362143242488,
-0.176734802707891, -0.1727706252111858, -0.16919134718393813,
-0.16595497007764237, -0.1612333810908506, -0.16032533669038074},
{-1.205471099716986, -0.6659917788957754, -0.45748799492339387,
-0.36503046749408696, -0.3127577121531733, -0.27438875008497554,
-0.25814041347676664, -0.2402609662042252, -0.226407861917453,
-0.215295654022988, -0.206140898260065, -0.19845154206947768,
-0.19186915515710012, -0.18616145508686088, -0.1811499063891997,
-0.17671222312472956, -0.17274903937394903, -0.16917064135323656,
-0.16593504689710592, -0.16121477903910986, -0.16030690528349112},
{-1.2052293781890038, -0.6657848703137681, -0.4573627726372145,
-0.36494389779371517, -0.3126915770484153, -0.27433568484216586,
-0.2580934738905931, -0.2402199871595485, -0.22637128131589712,
-0.2152624569885333, -0.20611037950142297, -0.19842320223922627,
-0.1918426259125301, -0.18613645400459866, -0.18112621455840738,
-0.1766896660662649, -0.17272747544313027, -0.16914995689312384,
-0.16591514459490497, -0.16119619870735669, -0.16028849283993019},
{-1.2049873347157263, -0.6655780269858917, -0.4572376245507126,
-0.36485738588969774, -0.31262548917122146, -0.2742826725862475,
-0.2580465712489648, -0.24017904167034132, -0.22633473159147854,
-0.21522928883213588, -0.20607988804644783, -0.1983948884619675,
-0.1918161216119163, -0.18611147694873686, -0.18110254595825914,
-0.17666713155026237, -0.17270593343842044, -0.16912929382286457,
-0.16589526319071624, -0.16117764009405278, -0.16027009938563985},
{-1.2047449702569724, -0.6653712490414598, -0.45711255065891443,
-0.3647709317765315, -0.31255944852228623, -0.2742297132248961,
-0.25799970556135676, -0.24013812974885163, -0.2262982127585076,
-0.2151961495678787, -0.20604942391091363, -0.19836660075421975,
-0.19178964227351258, -0.1860865239365701, -0.1810789006082647,
-0.17664461959492606, -0.17268441337894025, -0.16910865216192228,
-0.1658754027039624, -0.16115910319711801, -0.1602517249480151},
{-1.2045022857710457, -0.6651645366097139, -0.4569875509563026,
-0.3646845354492889, -0.3124934551023131, -0.27417680666481914,
-0.2579528768383881, -0.2400972514075459, -0.22626172483114182,
-0.21516303921042557, -0.20601898711063704, -0.19833833913372345,
-0.19176318791483915, -0.1860615949868354, -0.1810552785276922,
-0.17662213021938378, -0.17266291528461863, -0.16908803192844069,
-0.1658555631544747, -0.16114058801514197, -0.16023336955285217},
{-1.2042592822137195, -0.6649578898188349, -0.4568626254374255,
-0.36459819690230866, -0.31242750891282434, -0.27412395281452184,
-0.25790608508969903, -0.24005640665775196, -0.22622526782292596,
-0.21512995777403354, -0.20598857766190726, -0.19831010361712664,
-0.1917367585534251, -0.18603669011663548, -0.18103167973546164,
-0.17659966344127298, -0.17264143917488006, -0.169067433142299,
-0.16583574456177352, -0.16112209454765036, -0.16021503322656727},
{-1.2040159605392065, -0.6647513087972214, -0.4567377740970109,
-0.3645119161304784, -0.31236160995480233, -0.27407115158340645,
-0.2578593303258394, -0.24001559551205176, -0.22618884174940312,
-0.21509690527335934, -0.205958195580477, -0.19828189422203302,
-0.19171035420777116, -0.1860118093448726, -0.18100810425160674,
-0.17657721927962733, -0.17261998506971565, -0.16904685582216672,
-0.1658159469460756, -0.1611036227947853, -0.16019671599592122},
{-1.2037723216996534, -0.6645447936724498, -0.45661299692989665,
-0.3644256931289416, -0.3122957582301584, -0.2740184028813033,
-0.2578126125564708, -0.2399748179822776, -0.2261524466240843,
-0.21506388172305968, -0.20592784088313643, -0.19825371096557554,
-0.1916839748955148, -0.18598695268944354, -0.1809845520949409,
-0.1765547977530133, -0.17259855298917337, -0.1690262999879284,
-0.16579617032738803, -0.1610851727565361, -0.16017841788681153},
{-1.2035283666454122, -0.6643383445722124, -0.4564882939312689,
-0.36433952789264445, -0.31222995374000106, -0.27396570661967345,
-0.2577659317923917, -0.23993407408099898, -0.22611608246213777,
-0.21503088713773444, -0.2058975135860699, -0.19822555386518026,
-0.1916576206353202, -0.1859621201682291, -0.18096102328515862,
-0.17653239888018568, -0.17257714295344684, -0.16900576565896586,
-0.16577641472546034, -0.16106674443469338, -0.16016013892680192},
{-1.203284096324734, -0.664131961623446, -0.4563636650962586,
-0.3642534204173078, -0.31216419648617233, -0.27391306270931004,
-0.25771928804400446, -0.2398933638201335, -0.2260797492786999,
-0.2149979215330049, -0.2058672137061741, -0.1981974229386445,
-0.1916312914453897, -0.18593731180053652, -0.18093751784298462,
-0.17651002268044103, -0.17255575498250764, -0.16898525285438737,
-0.1657566801606709, -0.16104833783063732, -0.16014187914222333},
{-1.2030395116841355, -0.6639256449525908, -0.45623911041983156,
-0.3641673706979489, -0.312098486470509, -0.27386047106309164,
-0.25767268132181975, -0.23985268721198594, -0.22604344708809698,
-0.21496498492336968, -0.2058369412598573, -0.19816931820242267,
-0.1916049873437995, -0.18591252760428212, -0.18091403578744192,
-0.17648766917231562, -0.17253438909702368, -0.16896476159444518,
-0.16573696665370363, -0.16102995294644984, -0.16012363855988276},
{-1.2027946136679697, -0.6637193946860709, -0.4561146298973284,
-0.3640813787307202, -0.312032823694949, -0.2738079315939892,
-0.25762611163660765, -0.23981204426924485, -0.2260071759064335,
-0.21493207732445363, -0.20580669626421688, -0.19814123967607244,
-0.1915787083502103, -0.1858877675985191, -0.18089057713874368,
-0.17646533837529965, -0.17251304531716727, -0.16894429189808058,
-0.16571727422470417, -0.1610115897848612, -0.16010541720695315},
{-1.202549403219039, -0.6635132109495725, -0.4559902235241893,
-0.3639954445109961, -0.3119672081621463, -0.2737554442161567,
-0.25757957899882733, -0.23977143500361642, -0.2259709357482187,
-0.21489919875135755, -0.20577647873669314, -0.19811318737573913,
-0.1915524544825189, -0.1858630318017429, -0.18086714191701248,
-0.17644303030831487, -0.1724917236640806, -0.16892384378607161,
-0.16569760289450564, -0.1609932483495271, -0.16008721511044577},
{-1.2023038812778237, -0.663307093868994, -0.4558658912959661,
-0.36390956803455765, -0.3119016398740051, -0.2737030088451018,
-0.25753308341953485, -0.23973085942841088, -0.22593472662969205,
-0.21486634921993186, -0.2057462886942094, -0.19808516131985954,
-0.19152622575988865, -0.18583832023309377, -0.18084373014209199,
-0.17642074499132399, -0.17247042415736047, -0.16890341727844493,
-0.16567795268354502, -0.1609749286436184, -0.16006903229702907},
{-1.2020580487832966, -0.6631010435689859, -0.4557416332081772,
-0.3638237492980281, -0.31183611883274764, -0.2736506253952662,
-0.2574866249094754, -0.23969031755530246, -0.22589854856594727,
-0.21483352874556338, -0.20571612615363755, -0.19805716152642283,
-0.19150002220127327, -0.18581363291157516, -0.18082034183439788,
-0.17639848244346723, -0.17244914681859846, -0.1688830123949856,
-0.16565832361292365, -0.16095663067116206, -0.16005086879463448},
{-1.2018119066722033, -0.6628950601745931, -0.455617449256712,
-0.36373798829716897, -0.31177064504131735, -0.2735982937835839,
-0.2574402034799199, -0.23964980939701164, -0.22586240157332682,
-0.21480073734438143, -0.20568599113349073, -0.1980291880129066,
-0.19147384382602617, -0.18578896985611415, -0.18079697701448083,
-0.1763762426843698, -0.17242789166854955, -0.16886262915581263,
-0.16563871570325794, -0.16093835443761506, -0.1600327246308062},
{-1.20156545587969, -0.6626891438099101, -0.45549333943720427,
-0.36365228502863545, -0.311705218502361, -0.2735460139270671,
-0.25739381914215187, -0.23960933496630332, -0.2258262856678357,
-0.21476797503253842, -0.2056558836508966, -0.19800124079824322,
-0.19144769065361267, -0.1857643310862862, -0.18077363570255933,
-0.1763540257345113, -0.17240665872795446, -0.16884226758191012,
-0.16561912897543074, -0.16092009994705947, -0.16001459983265498},
{-1.2013186973388237, -0.6624832945992143, -0.45536930374562345,
-0.36356663948862256, -0.31163983921909555, -0.27349378574376715,
-0.25734747190686846, -0.23956889427578432, -0.22579020086517332,
-0.2147352418256503, -0.20562580372379102, -0.19797331990029576,
-0.1914215627033773, -0.1857397166213861, -0.1807503179189638,
-0.17633183161321142, -0.17238544801823963, -0.168821927693795,
-0.16559956345132854, -0.16090186720554023, -0.15999649442776587},
{-1.2010716319808692, -0.6622775126662592, -0.4552453421783138,
-0.36348105167401457, -0.31157450719430635, -0.27344160915299653,
-0.25730116178555207, -0.2395284873378234, -0.22575414718189002,
-0.21470253774042725, -0.2055957513702218, -0.19794542533711912,
-0.191395459994677, -0.18571512648076016, -0.18072702368448468,
-0.17630966034080053, -0.17236425956006762, -0.16880160951207834,
-0.1655800191513741, -0.1608836562186422, -0.15997840844477906},
{-1.200824260735291, -0.6620717981340167, -0.45512145473110444,
-0.36339552158184496, -0.3115092224309475, -0.27338948407316366,
-0.25725488878971703, -0.23948811416519078, -0.225718124634664,
-0.21466986279317624, -0.20556572660833616, -0.19791755712715542,
-0.1913693825471281, -0.1856905606844581, -0.1807037530193707,
-0.17628751193742076, -0.17234309337492348, -0.16878131305755062,
-0.16556049609707202, -0.1608654669918117, -0.15996034191066144},
{-1.2005765845292506, -0.6618661511255333, -0.454997641400265,
-0.36331004920858057, -0.31144398493263914, -0.27333741042508386,
-0.25720865293060946, -0.2394477747706425, -0.2256821332402037,
-0.21463721700065008, -0.20553572945653897, -0.19788971528883614,
-0.19134333038079632, -0.18566601925192927, -0.1806805059445864,
-0.17626538642331901, -0.17232194948350177, -0.16876103835103073,
-0.16554099431017377, -0.16084729953263377, -0.15994229485404077},
{-1.2003286042888215, -0.6616605717633917, -0.4548739021822765,
-0.3632246345516972, -0.31137879470275465, -0.27328538812936287,
-0.2571624542202233, -0.23940746916665923, -0.2256461730150825,
-0.21460460037973128, -0.20550575993290643, -0.1978618998413033,
-0.19131730351550047, -0.18564150220266384, -0.18065728248116208,
-0.1762432838193515, -0.17230082790774048, -0.1687407854143732,
-0.16552151381146984, -0.16082915384684604, -0.15992426730333165},
{-1.200080320937353, -0.6614550601697946, -0.45475023707362894,
-0.3631392776084077, -0.3113136517451718, -0.2732334171080275,
-0.2571162926697692, -0.23936719736629897, -0.22561024397634455,
-0.21457201294699324, -0.20547581805681325, -0.19783411080273972,
-0.19129130197140398, -0.1856170095576708, -0.18063408264916525,
-0.17622120414603515, -0.17227972866852959, -0.1687205542686918,
-0.1655020546236443, -0.16081102994221652, -0.15990625928662006},
{-1.1998317353969927, -0.661249616466483, -0.45462664607096137,
-0.3630539783760405, -0.3112485560637417, -0.27318149728427343,
-0.2570701682910599, -0.23932695938214366, -0.22557434614153848,
-0.21453945472061697, -0.2054459038465577, -0.197806348192211,
-0.19126532576870936, -0.18559254133650782, -0.18061090647002054,
-0.17619914742452814, -0.17225865178770228, -0.16870034493553732,
-0.16548261676799036, -0.1607929278256215, -0.15988827083246981},
{-1.1995828485877755, -0.661044240775075, -0.4545031291708579,
-0.36296873685239106, -0.31118350766172576, -0.27312962857999246,
-0.25702408109595076, -0.23928675522700438, -0.22553847952737271,
-0.2145069257168366, -0.20541601732094605, -0.19777861202865488,
-0.19123937492724963, -0.18556809755971848, -0.18058775396460014,
-0.1761771136754664, -0.1722375972864043, -0.16868015743604658,
-0.16546320026616002, -0.16077484750427473, -0.1598703019698231},
{-1.1993336614278887, -0.6608389332167359, -0.45437968637029513,
-0.3628835530348091, -0.31111850654389883, -0.27307781091984396,
-0.25697803109661344, -0.23924658491397288, -0.22550264415187726,
-0.21447442595362354, -0.2053861584993406, -0.19775090233092918,
-0.19121344946778152, -0.185543678247182, -0.18056462515401783,
-0.17615510292062275, -0.1722165651869485, -0.16865999179238322,
-0.1654438051401872, -0.1607567889869852, -0.15985235272717624},
{-1.1990841748335743, -0.6606336939123825, -0.4542563176661485,
-0.3627984269218345, -0.311053552714327, -0.2730260442283612,
-0.2569320183050863, -0.23920644845561156, -0.22546684003236273,
-0.21444195544842692, -0.20535632740108767, -0.1977232191184637,
-0.19118754941100669, -0.18551928341987178, -0.18054152005935187,
-0.1761331151808445, -0.17219555550976295, -0.16863984802610688,
-0.1654244314116724, -0.16073875228075707, -0.15983442313408602},
{-1.1988343897195417, -0.6604285229822633, -0.45413302305541414,
-0.36271335851088615, -0.3109886461774849, -0.27297432843156955,
-0.25688604273295823, -0.23916634586494112, -0.22543106718700656,
-0.2144095142195237, -0.2053265240454909, -0.1976955624105443,
-0.19116167477734614, -0.18549491309884303, -0.18051843870135897,
-0.17611115047801995, -0.17217456827746602, -0.16861972615973286,
-0.16540507910353064, -0.16072073739405823, -0.1598165132191074},
{-1.1985843069982662, -0.6602234205464814, -0.4540098025353725,
-0.36262834780012376, -0.3109237869379342, -0.27292266345556904,
-0.2568401043926585, -0.23912627715463053, -0.2253953256333805,
-0.2143771022847929, -0.205296748451957, -0.19766793222590984,
-0.19113582558757436, -0.18547056730407085, -0.18049538110187058,
-0.1760892088335435, -0.17215360351111286, -0.16859962621560065,
-0.16538574823749919, -0.16070274433532816, -0.1597986230120032},
{-1.1983339275807845, -0.6600183867249036, -0.45388665610331635,
-0.3625433947886023, -0.31085897499998083, -0.2728710492266142,
-0.2567942032968311, -0.23908624233824582, -0.22535961538999416,
-0.21434471966224677, -0.20526700064051795, -0.19764032858492797,
-0.1911100018625831, -0.18544624605741689, -0.1804723472821177,
-0.17606729026994117, -0.1721326612335119, -0.16857954821528054,
-0.16536643883632074, -0.16068477311313778, -0.15978075254266422},
{-1.1980832523758789, -0.6598134216370433, -0.4537635837566487,
-0.3624584994741138, -0.310794210369151, -0.272819485672958,
-0.25674833945763176, -0.23904624142807407, -0.22532393647487226,
-0.21431236637056905, -0.205237280631005, -0.19761275150661284,
-0.19108420362377387, -0.18542194937968226, -0.1804493372631395,
-0.17604539480866777, -0.17211174146566854, -0.1685594921819078,
-0.16534715092205765, -0.16066682373649321, -0.15976290184030262},
{-1.1978322822910314, -0.65960852540187, -0.45364058549283115,
-0.36237366185561193, -0.31072949304956055, -0.2727679727225052,
-0.25670251288737234, -0.23900627443749656, -0.22528828890673225,
-0.2142800424280331, -0.20520758844310905, -0.19758520101158972,
-0.19105843089166008, -0.1853976772924657, -0.1804263510670694,
-0.17602352247241448, -0.1720908442298601, -0.16853945813758742,
-0.16532788451705294, -0.1606488962136119, -0.15974507093516266},
{-1.1975810182312658, -0.6594036981381315, -0.4535176613093306,
-0.36228888193182485, -0.3106648230476008, -0.27271651030465804,
-0.2566567235987254, -0.23896634137938655, -0.22525267270396832,
-0.21424774785385736, -0.20517792409810376, -0.19755767711899352,
-0.1910326836874443, -0.1853734298164973, -0.1804033887145522,
-0.17600167328328276, -0.17206996954845266, -0.16851944610552394,
-0.16530863964446496, -0.16063099055444852, -0.15972725985694858},
{-1.1973294611003729, -0.6591989399643747, -0.45339481120424274,
-0.36220415970159614, -0.3106002003678068, -0.2726650983499592,
-0.2566109716045126, -0.23892644226689264, -0.22521708788548622,
-0.21421548266673618, -0.20514828761520754, -0.19753017984904275,
-0.19100696203305922, -0.18534920697384294, -0.18038045022794336,
-0.17597984726408278, -0.17204911744322082, -0.1684994561085542,
-0.16528941632695648, -0.16061310676737683, -0.15970946863641977},
{-1.1970776118001423, -0.6589942509986457, -0.45327203517536674,
-0.3621194951646505, -0.3105356250156497, -0.27261373678779854,
-0.256565256917634, -0.23888657711272465, -0.22518153447035516,
-0.21418324688573342, -0.20511867901557146, -0.1975027092221513,
-0.19098126594948361, -0.18532500878670533, -0.18035753562886292,
-0.17595804443781482, -0.17202828793664438, -0.1684794881691527,
-0.16527021458724356, -0.1605952448624226, -0.15969169730357535},
{-1.196825471230345, -0.658789631358685, -0.4531493332204626,
-0.362034888319247, -0.3104710969968387, -0.27256242554990884,
-0.2565195795506998, -0.2388467459303012, -0.225146012477218,
-0.21415104053036949, -0.20508909832006061, -0.19747526525768322,
-0.19095559545827712, -0.18530083527639007, -0.18033464493892204,
-0.17593626482718427, -0.17200748105098462, -0.16845954231097338,
-0.16525103444807243, -0.1605774048491515, -0.1596739458892369},
{-1.1965730402891293, -0.658585081161819, -0.45302670533800615,
-0.36195033916566466, -0.3104066163171524, -0.2725111645682219,
-0.25647393951673614, -0.23880694873271047, -0.22511052192571057,
-0.21411886361980947, -0.20505954554889172, -0.19744784797749837,
-0.190929950581312, -0.18527668646558126, -0.18031177817995747,
-0.17591450845510792, -0.17198669680867162, -0.16843961855663814,
-0.16523187593226218, -0.1605595867364169, -0.15965621442385824},
{-1.1963203198729966, -0.6583806005253265, -0.45290415152593155,
-0.36186584770317154, -0.3103421829829873, -0.27245995377521837,
-0.2564283368290745, -0.23876718553272802, -0.22507506283513656,
-0.21408671617387043, -0.20503002072392995, -0.19742045740098035,
-0.19090433134003426, -0.1852525623760677, -0.1802889353742252,
-0.17589277534516512, -0.1719659352330023, -0.16841971693017754,
-0.16521273906407785, -0.16054179053526063, -0.1596385029382681},
{-1.1960673108763613, -0.6581761895659302, -0.45278167178262585,
-0.36178141393145324, -0.3102777970001007, -0.2724087931050807,
-0.25638277150065925, -0.23872745634408155, -0.2250396352247872,
-0.2140545982126767, -0.20500052386577927, -0.1973930935491186,
-0.19087873775678332, -0.18522846303073237, -0.1802661165434234,
-0.17587106552093523, -0.1719451963452414, -0.16839983745451015,
-0.16519362386592107, -0.1605240162545396, -0.15962081146352958},
{-1.19581401419196, -0.657971848400221, -0.4526592661066484,
-0.36169703785044405, -0.3102134583743954, -0.2723576824910072,
-0.2563372435448539, -0.23868776117941337, -0.22500423911480816,
-0.2140225097555266, -0.20497105499587853, -0.19736575644306598,
-0.19085316985290746, -0.1852043884518988, -0.1802433217102326,
-0.17584937900556064, -0.17192448016940887, -0.16837998015348,
-0.1651745303613179, -0.1605062639053827, -0.15960314003015874},
{-1.1955604307108514, -0.657767577144309, -0.4525369344968091,
-0.36161271946035356, -0.310149167112618, -0.2723066218677168,
-0.25629175297557794, -0.23864810005230197, -0.22496887452445868,
-0.21399045082334567, -0.20494161413588152, -0.1973384461028651,
-0.19082762765112626, -0.1851803386628621, -0.18022055089654287,
-0.17582771582297774, -0.17190378672839302, -0.1683601450507073,
-0.16515545857370206, -0.16048853349736802, -0.15958548866990085},
{-1.1953065613220835, -0.6575633759138384, -0.45241467695133686,
-0.36152845876121553, -0.31008492322168557, -0.2722556111710279,
-0.2562462998060173, -0.23860847297593324, -0.22493354147424682,
-0.21395842143620314, -0.20491220130735854, -0.1973111625507915,
-0.1908021111729834, -0.18515631368571128, -0.1801978041250596,
-0.17580607599754394, -0.17188311604462925, -0.16834033217012312,
-0.16513640852645928, -0.16047082504138466, -0.15956785741383683},
{-1.1950524069132236, -0.6573592448244732, -0.45229249346935596,
-0.36144425575344563, -0.31002072670830394, -0.272204650337013,
-0.2562008840498571, -0.23856887996371867, -0.22489823998353486,
-0.21392642161447384, -0.20488281653234175, -0.19728390580715072,
-0.19077662044102262, -0.1851323135448837, -0.18017508141793215,
-0.17578445955229682, -0.1718624681421428, -0.16832054153520204,
-0.1651173802442525, -0.1604531385485295, -0.1595502462924152},
{-1.1947979683698664, -0.6571551839914953, -0.45217038405002796,
-0.36136011043750926, -0.30995657757910067, -0.27215373930282816,
-0.25615550572076273, -0.23852932102934332, -0.22486297007294098,
-0.21389445137918806, -0.20485345983261638, -0.19725667589343843,
-0.19075115547822818, -0.18510833826262463, -0.1801523827982372,
-0.17576286651208406, -0.17184184304373673, -0.16830077317083436,
-0.1650983737500269, -0.16043547402904856, -0.15953265533799765},
{-1.1945432465757992, -0.6569511935295491, -0.45204834869207033,
-0.36127602281419513, -0.3098924758406447, -0.27210287800498634,
-0.2561101648330979, -0.23848979618557742, -0.22482773176294835,
-0.21386251075082185, -0.20482413123008136, -0.19722947283143455,
-0.19072571630602653, -0.18508438786341763, -0.18012970828821295,
-0.17574129690154905, -0.17182124077367433, -0.16828102710053017,
-0.16507938906836905, -0.16041783149501043, -0.15951508458131514},
{-1.1942882424131724, -0.6567472735534423, -0.4519263873948187,
-0.3611919928841676, -0.30982842150116596, -0.2720520663821109,
-0.25606486140080875, -0.23845030544638135, -0.22479252507369196,
-0.21383059975067198, -0.20479483074764282, -0.1972022966423186,
-0.19070030294776608, -0.18506046237027185, -0.1801070579112345,
-0.1757197507439141, -0.17180066135450467, -0.16826130334833245,
-0.1650604262229436, -0.16040021095723134, -0.15949753405344858},
{-1.1940329567625625, -0.6565434241776469, -0.45180450015764784,
-0.3611080206487607, -0.30976441456733816, -0.2720013043725089,
-0.25601959543786634, -0.23841084882525365, -0.2247573500257154,
-0.2137987183995751, -0.20476555840702382, -0.1971751473480463,
-0.19067491542575787, -0.18503656180731554, -0.18008443168973542,
-0.17569822806421698, -0.1717801048112424, -0.1682416019387496,
-0.1650414852376496, -0.16038261242693785, -0.15948000378620897},
{-1.1937773905022064, -0.6563396455156543, -0.45168268698015623,
-0.3610241061088928, -0.30970045504738586, -0.27195059191606674,
-0.25597436695871423, -0.23837142633575148, -0.22472220663986242,
-0.2137668667190944, -0.20473631423137384, -0.19714802497030348,
-0.19064955376313897, -0.18501268619857214, -0.18006182964723294,
-0.1756767288869696, -0.17175957116727503, -0.16822192289675186,
-0.16502256613745203, -0.16036503591687534, -0.15946249381065414},
{-1.1935215445090792, -0.6561359376814675, -0.4515609478616547,
-0.3609402492657825, -0.30963654294864185, -0.27189992895360504,
-0.2559291759777764, -0.23833203799172686, -0.22468709493717576,
-0.21373504473084814, -0.20470709824322242, -0.1971209295312999,
-0.1906242179827391, -0.1849888355686229, -0.1800392518069298,
-0.17565525323754905, -0.1717390604468818, -0.16820226624682455,
-0.16500366894710083, -0.1603474814395156, -0.15944500415835883},
{-1.1932654196584105, -0.6559323007883986, -0.4514392828020153,
-0.360856450121112, -0.3095726782783803, -0.27184931542594093,
-0.25588402250951425, -0.23829268380691992, -0.22465201493784015,
-0.213703252456396, -0.20467791046529982, -0.19709386105316007,
-0.1905989081074555, -0.1849650099416511, -0.18001669819182808,
-0.17563380113958793, -0.17171857267481094, -0.168182632013135,
-0.16498479369054309, -0.16032994900643516, -0.15942753486045902},
{-1.1930090168234502, -0.6557287349493439, -0.4513176918011581,
-0.3607727086764374, -0.30950886104549014, -0.27179875127662,
-0.2558389065692239, -0.23825336379530349, -0.2246169666636355,
-0.2136714899169565, -0.20464875092101842, -0.19706681955812932,
-0.1905736241606526, -0.18494120934217761, -0.17999416882616082,
-0.17561237261848284, -0.17169810787493667, -0.16816302022115437,
-0.1649659403931132, -0.16031243863119116, -0.15941008594879236},
{-1.1927523368757535, -0.6555252402774538, -0.4511961748590032,
-0.36068902493390276, -0.30944509125794006, -0.2717482364518453,
-0.2557938281711536, -0.2382140779709072, -0.22458195013514448,
-0.2136397571348887, -0.20461961963314934, -0.19703980506886154,
-0.19054836616545856, -0.18491743379453318, -0.17997166373302242,
-0.17559096769942606, -0.17167766607227897, -0.16814343089474626,
-0.16494710907894827, -0.16029495032625718, -0.15939265745407383},
{-1.1924953806853607, -0.6553218168848289, -0.45107473197531256,
-0.3606053988949416, -0.3093813689243845, -0.27169777090114167,
-0.25574878733048934, -0.23817482634777676, -0.22454696537394447,
-0.21360805413223183, -0.20459051662603933, -0.19701281760802125,
-0.1905231341452609, -0.1848936833242263, -0.17994918293599582,
-0.17556958640678388, -0.1716572472920035, -0.16812386406007285,
-0.16492829977401335, -0.16027748410580145, -0.15937524940790482},
{-1.1922381491201754, -0.6551184648840458, -0.4509533631507292,
-0.36052183056161624, -0.30931769405300535, -0.27164735457938605,
-0.25570378406238525, -0.23813560893996488, -0.22451201240136243,
-0.21357638093126674, -0.20456144192196213, -0.1969858571973333,
-0.19049792812389832, -0.18486995795639416, -0.1799267264598896,
-0.1755482287663792, -0.17163685155826336, -0.16810431974173845,
-0.16490951250349895, -0.1602600399826386, -0.15935786184182987},
{-1.1919806430469215, -0.6549151843866632, -0.45083206838546275,
-0.3604383199370069, -0.3092540666522261, -0.2715969874470048,
-0.2556588183820736, -0.23809642576230772, -0.22447709123862225,
-0.21354473755403092, -0.20453239554526803, -0.19695892386105385,
-0.19047274812490933, -0.18484625771569796, -0.17990429432813215,
-0.17552689480302242, -0.1716164788969703, -0.16808479796505615,
-0.16489074729216568, -0.16024261797213768, -0.1593404947873296},
{-1.1917228633301544, -0.6547119755043838, -0.45071084768005676,
-0.36035486702275144, -0.30919048673165683, -0.27154666947517825,
-0.2556138903052574, -0.23805727682894684, -0.2244422019075838,
-0.21351312402321376, -0.20450337751982595, -0.1969320176215401,
-0.1904475941716921, -0.18482258262759999, -0.1798818865652443,
-0.1755055845416944, -0.1715961293330448, -0.16806529875555398,
-0.164872004166444, -0.16022521808796597, -0.1593231482757247},
{-1.1914648108328345, -0.6545088383486419, -0.4505897010349962,
-0.3602714718216955, -0.3091269542995043, -0.27149640064598834,
-0.2555689998473767, -0.23801816215468818, -0.22440734442977117,
-0.2134815403612027, -0.2044743878695474, -0.19690513850233238,
-0.1904224662884264, -0.18479893271740444, -0.17985950319538802,
-0.17548429800835663, -0.1715758028920309, -0.16804582213818264,
-0.16485328315086178, -0.16020784034519053, -0.15930582233892565},
{-1.1912064864162568, -0.6543057730302415, -0.45046862845089386,
-0.360188134336882, -0.3090634693660377, -0.27144618095819695,
-0.2555241470237952, -0.2379790817538492, -0.22437251882677245,
-0.21344998659079906, -0.20444542661886445, -0.19687828652666006,
-0.19039736449910905, -0.18477530801053632, -0.17983714424314634,
-0.17546303522751572, -0.17155549959969463, -0.16802636813886807,
-0.1648345842716772, -0.16019048475872566, -0.15928851700718738},
{-1.1909478909400697, -0.6541027796602759, -0.4503476299287428,
-0.36010485457073393, -0.30900003193981895, -0.2713960104302977,
-0.25547933185064764, -0.23794003564179533, -0.22433772512066774,
-0.21341846273458742, -0.20441649379154825, -0.19685146171789114,
-0.19037228882836388, -0.1847517085324295, -0.1798148097336707,
-0.17544179622552747, -0.17153521948126382, -0.1680069367835948,
-0.1648159075555462, -0.16017315134418197, -0.15927123231370288},
{-1.1906890252620395, -0.653899858349142, -0.45022670546983434,
-0.3600216325270331, -0.30893664203064475, -0.27134588910353585,
-0.2554345543441272, -0.23790102383336276, -0.2243029633335265,
-0.21338696881607966, -0.2043875894124536, -0.19682466410031374,
-0.1903472392994594, -0.18472813430921775, -0.17979249969190647,
-0.17542058102746338, -0.171514962563581, -0.16798752809752315,
-0.16479725302798442, -0.16015584011758577, -0.15925396828933458},
{-1.190429890238355, -0.6536970092067307, -0.45010585507485246,
-0.35993846820855246, -0.30887329964796173, -0.27129581704974903,
-0.25538981452021936, -0.2378620463438228, -0.224268233486983,
-0.21335550485805577, -0.2043587135063838, -0.1967978936968251,
-0.19032221593750087, -0.18470458536625145, -0.17977021414230698,
-0.17539938965881774, -0.17149472887189532, -0.16796814210696454,
-0.16477862071533877, -0.1601385510953115, -0.15923672496621322},
{-1.1901704867235283, -0.6534942323433253, -0.4499850787454882,
-0.35985536161878073, -0.3088100048020923, -0.27124579437585794,
-0.25534511239528257, -0.23782310318883226, -0.2242335356034051,
-0.21332407088319272, -0.20432986609765358, -0.19677115053280048,
-0.1902972187668741, -0.18468106172981358, -0.17974795311093672,
-0.17537822214556087, -0.17147451843221972, -0.16794877883761572,
-0.16476001064328116, -0.16012128429267491, -0.15921950237605031},
{-1.1899108155703146, -0.6532915278682765, -0.4498643764824912,
-0.35977231276148736, -0.30874675750309066, -0.2711958212305383,
-0.25530044798576945, -0.23778419438340848, -0.22419886970521574,
-0.21329266691564008, -0.20430104721205034, -0.1967444346316487,
-0.19027224781233798, -0.18465756342565598, -0.17972571662281922,
-0.17535707851310178, -0.17145433127218368, -0.16792943831613982,
-0.16474142283965776, -0.16010403972803644, -0.15920230055114004},
{-1.1896508776298083, -0.6530888958913401, -0.44974374828786523,
-0.3596893216402197, -0.30868355776104295, -0.2711458978107757,
-0.2552558213077578, -0.23774531994379622, -0.22416423581476153,
-0.21326129297831287, -0.20427225687367923, -0.19671774601765257,
-0.19024730309881477, -0.1846340904797632, -0.17970350470352514,
-0.1753359587875849, -0.17143416741690132, -0.1679101205684539,
-0.16472285733055614, -0.16008681741750053, -0.1591851195230376},
{-1.189390673751225, -0.6528863365213642, -0.44962319416318586,
-0.3596063882592766, -0.30862040558586123, -0.2710960243674201,
-0.25521123237897747, -0.23770647988548, -0.2241296339541492,
-0.21322994909494497, -0.20424349510856032, -0.19669108471622643,
-0.1902223846508324, -0.1846106429182761, -0.17968131737951865,
-0.17531486299499477, -0.17141402689391683, -0.1678908256212388,
-0.16470431414264297, -0.16006961737860692, -0.15916795932465888},
{-1.1891302047826464, -0.6526838498671861, -0.4495027141102259,
-0.35952351262228177, -0.3085573009888787, -0.2710462012150163,
-0.25516668121573716, -0.23766767422475255, -0.22409506414659397,
-0.21319863528919392, -0.20421476194135657, -0.19666445075086258,
-0.19019749249334872, -0.18458722076763046, -0.17965915467643256,
-0.17529379116066224, -0.17139390972942792, -0.1678715535006461,
-0.16468579330304678, -0.16005243962931814, -0.15915081998748093},
{-1.1888694715698724, -0.6524814360375046, -0.44938230813097846,
-0.3594406947339728, -0.30849424398057934, -0.2709964287381492,
-0.2551221678355766, -0.2376289029782228, -0.22406052641391483,
-0.21316735158479005, -0.20418605739816087, -0.1966378441479577,
-0.1901726266521262, -0.18456382405358696, -0.1796370166209087,
-0.17527274331175846, -0.17137381595017942, -0.16785230423334951,
-0.1646672948384058, -0.16003528418709223, -0.15913370154478912},
{-1.1886084749572712, -0.65227909514042, -0.4492619762271861,
-0.35935793459833576, -0.3084312345720033, -0.27094670739858273,
-0.2550776922554743, -0.23759016616208406, -0.22402602077945488,
-0.2131360980058652, -0.20415738150464335, -0.196611264931855,
-0.1901477871521262, -0.18454045280324038, -0.1796149032389458,
-0.17525171947367468, -0.17135374558393934, -0.16783307784604773,
-0.1646488187765769, -0.1600181510710854, -0.1591166040281884},
{-1.1883472157876787, -0.6520768272844588, -0.44914171840143347,
-0.3592752322202415, -0.3083682727745387, -0.2708970377445361,
-0.25503325449257375, -0.23755146379343373, -0.22399154726575787,
-0.21310487457604488, -0.20412873428657896, -0.19658471312788883,
-0.19012297401955358, -0.1845171070427405, -0.17959281455777898,
-0.17523071967326587, -0.17133369865699777, -0.16781387436682138,
-0.1646303651450225, -0.1600010402987877, -0.15909952747076517},
{-1.1880856949022363, -0.6518746325769129, -0.44902153465586814,
-0.35919258760461936, -0.30830535859846364, -0.2708474204151461,
-0.25498885456456755, -0.23751279588894825, -0.223957105895785,
-0.21307368131980553, -0.20410011576874076, -0.19655818876128528,
-0.1900981872784584, -0.18449378679843065, -0.1795707506036699,
-0.17520974393652722, -0.17131367519674612, -0.16779469382030143,
-0.16461193397020324, -0.15998395188874426, -0.1590824719042061},
{-1.1878239131398782, -0.6516725111254154, -0.44890142499277097,
-0.35911000075591026, -0.30824249205600474, -0.27079785615080176,
-0.25494449248959583, -0.23747416246587605, -0.22392269669263776,
-0.2130425182615756, -0.20407152597898204, -0.1965316918581177,
-0.19007342695597274, -0.18447049209710897, -0.17954871140440432,
-0.17518879229035988, -0.17129367523150307, -0.1677755362360216,
-0.16459352528112348, -0.15996688586137964, -0.15906543736165446},
{-1.18756187133887, -0.651470463037457, -0.44878138941492374,
-0.3590274716797577, -0.3081796731584081, -0.270748345799678,
-0.25490016828528184, -0.23743556354181727, -0.22388831967927736,
-0.21301138542549758, -0.20404296494239205, -0.19650522244447366,
-0.19004869307791594, -0.18444722296543148, -0.1795266969868905,
-0.1751678647620487, -0.1712736987882657, -0.16775640164025774,
-0.16457513910443922, -0.15994984223454267, -0.1590484238759089},
{-1.1872995703348792, -0.6512684884197029, -0.44866142792490926,
-0.35894500038094534, -0.30811690191838714, -0.2706988903238816,
-0.25485588196943887, -0.23739699913427437, -0.22385397487914993,
-0.2129802828359697, -0.20401443268595898, -0.1964787805460908,
-0.19002398566971124, -0.1844239794304201, -0.17950470737871527,
-0.17514696137744679, -0.17125374589437925, -0.16773729006114735,
-0.16455677546877467, -0.15993282102831685, -0.15903143147930265},
{-1.1870370109625341, -0.6510665873791925, -0.4485415405260049,
-0.3588625868652926, -0.3080541783473336, -0.2706494908061092,
-0.254811633560621, -0.2373584692613413, -0.22381966231556127,
-0.2129492105180404, -0.2039859292350492, -0.1964523661889359,
-0.1899993047583095, -0.1844007615189085, -0.1794827426077994,
-0.17512608216463477, -0.1712338165779741, -0.1677182015258758,
-0.1645384344027434, -0.1599158222623842, -0.15901446020359344},
{-1.1867741940546521, -0.6508647600224702, -0.4484217272206372,
-0.35878023113833457, -0.3079915024566855, -0.2706001484544096,
-0.2547674230768262, -0.2373199739407461, -0.2237853820114868,
-0.21291816849638678, -0.203957454616841, -0.19642597939963835,
-0.18997465036899897, -0.1843775692575207, -0.17946080270171194,
-0.17510522715003063, -0.17121391086717352, -0.16769913606233544,
-0.16452011593299787, -0.15989884595601467, -0.15899751008152307},
{-1.1865111204423178, -0.6506630064555967, -0.4483019880124086,
-0.3586979332057503, -0.3079288742595683, -0.270550864609044,
-0.2547232505371628, -0.23728151319124713, -0.22375113399090196,
-0.212887156795734, -0.20392900885806853, -0.1963996202046978,
-0.18995002252915683, -0.18435440267338166, -0.17943888768921568,
-0.17508439636156936, -0.1711940287894187, -0.1676800936988272,
-0.16450182008901137, -0.15988189213035042, -0.15898058114584046},
{-1.186247790955111, -0.650461326784999, -0.44818232290418614,
-0.3586156930735669, -0.30786629376845376, -0.2705016407467582,
-0.25467911595969284, -0.23724308703165953, -0.2237169182768266,
-0.21285617544075386, -0.20390059198515686, -0.19637328863100478,
-0.18992542126530765, -0.1843312617937123, -0.17941699759768426,
-0.17506358982636527, -0.17117417037337646, -0.16766107446232326,
-0.16448354689869404, -0.15986496080418888, -0.1589636734283033},
{-1.1859842064208452, -0.6502597211160559, -0.4480627318996202,
-0.35853351074797324, -0.3078037609963218, -0.2704524784848452,
-0.2546350193639686, -0.23720469548043965, -0.2236827348936128,
-0.21282522445735452, -0.20387220402517414, -0.19634698470513712,
-0.1899008466035319, -0.1843081466454386, -0.17939513245577032,
-0.1750428075722823, -0.17115433564753602, -0.16764207838234313,
-0.1644652963912563, -0.15984805199909147, -0.15894678696110986},
{-1.1857203676657075, -0.650058189554338, -0.44794321500221557,
-0.35845138623478334, -0.3077412759557596, -0.2704033795835734,
-0.25459096076816756, -0.2371663385570919, -0.22364858386435138,
-0.21279430387064657, -0.20384384500450992, -0.19632070845436544,
-0.18987629857182142, -0.1842850572561332, -0.17937329229286547,
-0.17502204962729806, -0.1711345246396263, -0.16762310548704917,
-0.16444706859531877, -0.15983116573521272, -0.1589299217768918},
{-1.1854562755145226, -0.6498567322055067, -0.4478237722156191,
-0.35836931954166573, -0.3076788386592142, -0.27035434594909624,
-0.25454694019209256, -0.23712801628103897, -0.22361446521338024,
-0.2127634137055221, -0.20381551495115602, -0.19629445990572236,
-0.18985177719680735, -0.1842619936534433, -0.17935147713689048,
-0.1750013160193724, -0.1711147373790638, -0.16760415580479915,
-0.16442886354011677, -0.15981430203375524, -0.15891307790700893},
{-1.1851919307902152, -0.6496553491742532, -0.44770440354401586,
-0.3582873106740614, -0.3076164491209088, -0.2703053796359356,
-0.2545029576549762, -0.23708972867159694, -0.22358037896434624,
-0.2127325539881273, -0.20378721389165122, -0.19626823908695812,
-0.18982728250549386, -0.18423895586430916, -0.17932968701714103,
-0.1749806067769164, -0.171094973893279, -0.1675852293648319,
-0.16441068125402225, -0.15979746091599978, -0.15889625538415686},
{-1.1849273343142048, -0.6494540405655531, -0.44758510899073123,
-0.35820535963915034, -0.30755410735384814, -0.270256482847854,
-0.25445901317658404, -0.23705147574918328, -0.223546325141335,
-0.2127017247437184, -0.20375894185362142, -0.19624204602524742,
-0.18980281452598646, -0.1842159439163389, -0.1793079219631828,
-0.17495992192826648, -0.17107523421216086, -0.1675663261952991,
-0.16439252176671104, -0.15978064240248813, -0.15887945424033845},
{-1.1846624869061966, -0.6492528064839895, -0.4474658885603038,
-0.3581234664442281, -0.30749181337180076, -0.2702076579377053,
-0.2544151067758005, -0.2370132575338868, -0.2235123037686524,
-0.2126709259981876, -0.20373069886409567, -0.1962158807490404,
-0.18977837328523606, -0.18419295783740353, -0.17928618200298985,
-0.174939261501585, -0.1710555183643585, -0.16754744632594054,
-0.1643743851076387, -0.15976384651476394, -0.15886267450674652},
{-1.1843973893845412, -0.6490516470340015, -0.44734674225690263,
-0.35804163109574283, -0.30742956718837, -0.2701589074079713,
-0.2543712384728991, -0.23697507404610896, -0.22347831487019576,
-0.21264015777740397, -0.20370248495071053, -0.19618974328528793,
-0.1897539588116004, -0.18416999765531727, -0.17926446716725408,
-0.1749186255268178, -0.17103582637805914, -0.16752858978578544,
-0.16435627130680075, -0.15974707327426074, -0.15884591621606958},
{-1.184132042565781, -0.6488505623197636, -0.4472276700851392,
-0.3579598536020647, -0.3073673688175713, -0.2701102339072605,
-0.25432740828824585, -0.23693692530665267, -0.22344435847079325,
-0.21260942010739114, -0.20367430014158927, -0.19616363366244016,
-0.18972957113256683, -0.18414706339766695, -0.17924277748506157,
-0.17489801403202065, -0.171016158284079, -0.16750975660430356,
-0.1643381803931767, -0.15973032270375498, -0.15882917939999075},
{-1.1838664472646778, -0.6486495524451303, -0.44710867204915594,
-0.35787813396973434, -0.3073052182736191, -0.27006164023119617,
-0.25428361624185136, -0.2368988113364381, -0.22341043459394427,
-0.2125787130150485, -0.20364614446373253, -0.19613755190875182,
-0.18970521027683418, -0.18412415509286362, -0.1792211129861414,
-0.17487742704603093, -0.17099651410999073, -0.1674909468112773,
-0.1643201123971565, -0.1597135948247903, -0.15881246409020733},
{-1.1836006042948775, -0.6484486175136297, -0.44698974815379167,
-0.3577964722071787, -0.3072431155706923, -0.27001312931797905,
-0.25423986235340656, -0.23686073215694847, -0.22337654326486778,
-0.2125480365253054, -0.2036180179451499, -0.19611149805282935,
-0.18968087627245822, -0.18410127276889554, -0.17919947370049982,
-0.17485686459944105, -0.17097689388605275, -0.16747216043559732,
-0.16430206734845143, -0.15969688965844497, -0.15879577031938297},
{-1.1833345144681333, -0.6482477576289067, -0.4468708984039189,
-0.35771486832164534, -0.30718106072360385, -0.26996470424698416,
-0.25419614664398615, -0.2368226877893651, -0.22334268450801176,
-0.2125173906659441, -0.20358992061427372, -0.1960854721226042,
-0.18965656914789975, -0.18407841645407075, -0.17917785965746447,
-0.17483632672066207, -0.17095729764208656, -0.16745339750804789,
-0.16428404527769302, -0.15968020722846177, -0.15877909811948143},
{-1.183068178594648, -0.6480469728942335, -0.4467521228044422,
-0.3576333223215791, -0.3071190537470674, -0.2699163682325292,
-0.2541524691336772, -0.23678467825614824, -0.2233088583481848,
-0.21248677546281414, -0.20356185249848835, -0.19605947414761005,
-0.18963228893245088, -0.1840555861764166, -0.17915627088706287,
-0.17481581344005193, -0.17093772540672703, -0.16743465805811297,
-0.16426604621520724, -0.15966354755627066, -0.15876244752231017},
{-1.1828015974829738, -0.6478462634125641, -0.4466334213606764,
-0.35755183421529146, -0.3070570946556277, -0.2698681246198298,
-0.2541088298437142, -0.23674670357883443, -0.22327506480981363,
-0.21245619094291968, -0.20353381362633272, -0.19603350415603416,
-0.18960803565440543, -0.1840327819651577, -0.17913470741992654,
-0.17479532478715853, -0.1709181772108579, -0.16741594211670474,
-0.1642480701914053, -0.1596469106653977, -0.1587458185606465},
{-1.1825347719402641, -0.6476456292866999, -0.44651479407780137,
-0.3574704040104084, -0.30699518346447974, -0.26981997688096904,
-0.2540652287949339, -0.2367087637797809, -0.22324130391814379,
-0.21242563713332174, -0.20350580402608998, -0.19600756217691995,
-0.1895838093429738, -0.18401000384829302, -0.17911316928580234,
-0.17477486079167903, -0.17089865308328456, -0.1673972497130798,
-0.164230117236432, -0.15963029657836358, -0.158729211266337},
{-1.1822677027718926, -0.6474450706192911, -0.4463962409610467,
-0.3573890317165258, -0.3069333201891187, -0.26977192860882226,
-0.2540216660087413, -0.23667085888191508, -0.22320757569783467,
-0.21239511406056621, -0.2034778237258834, -0.1959816482395702,
-0.18955961002808053, -0.1839872518546528, -0.179091656515471,
-0.17475442148510822, -0.17087915305447154, -0.1673785808783954,
-0.16421218738190646, -0.15961370531780972, -0.15871262567273092},
{-1.182000390781873, -0.6472445875128212, -0.446277762016134,
-0.35730771734171185, -0.306871504845061, -0.2697239835108096,
-0.25397814150579734, -0.23663298890806672, -0.22317388017423667,
-0.2123646217523465, -0.20344987275419868, -0.19595576237357193,
-0.1895354377384173, -0.1839645260136642, -0.17907016913868645,
-0.1747340068961094, -0.17085967715540562, -0.16735993564282836,
-0.1641942806585064, -0.15959713690765298, -0.15869606181271934},
{-1.1817328367725368, -0.6470441800695141, -0.44615935724890576,
-0.3572264608948945, -0.3068097374479368, -0.2696761454026113,
-0.25393465530752124, -0.23659515388114194, -0.22314021737243195,
-0.21233416023532925, -0.20342195113962802, -0.1959299046076275,
-0.18951129250527643, -0.18394182635409706, -0.1790487071858884,
-0.17471361705624844, -0.1708402254147181, -0.16734131403800845,
-0.16417639709730736, -0.15958059137106062, -0.1586795197187918},
{-1.1814650415443735, -0.6468438483904517, -0.44604102666436773,
-0.3571452623850977, -0.30674801801225726, -0.26962841819871564,
-0.25389120743533056, -0.23655735382429555, -0.22310658731710475,
-0.21230372953708354, -0.2033940589103338, -0.19590407497161522,
-0.1894871743568345, -0.1839191529053501, -0.17902727068794988,
-0.17469325199611774, -0.1708207978642875, -0.16732271609351557,
-0.16415853672980774, -0.15956406873143436, -0.1586629994248625},
{-1.1811970058969967, -0.6466435925786413, -0.4459227702698705,
-0.3570641218221393, -0.3066863465560825, -0.2695808059099907,
-0.2538477979118614, -0.23651958876177304, -0.223072990034769,
-0.21227332968609858, -0.203366196096205, -0.19587827349573672,
-0.18946308332448325, -0.18389650569648808, -0.17900585967583993,
-0.1746729117461321, -0.17080139453387488, -0.16730414184176112,
-0.1641406995872714, -0.15954756901336253, -0.15864650096482436},
{-1.1809287306280316, -0.6464434127353211, -0.44580458807104506,
-0.35698303921536656, -0.30662472309451516, -0.2695333126320776,
-0.25380442675838566, -0.23648185871752503, -0.22303942555038958,
-0.2122429607091405, -0.20333836272544303, -0.19585250020940848,
-0.18943901943828223, -0.18387388475767352, -0.1789844741796145,
-0.17465259633788932, -0.17078201545466243, -0.16728559131287568,
-0.16412288570127487, -0.15953109224014383, -0.15863002437274076},
{-1.1806602165333677, -0.6462433089614787, -0.4456864800739613,
-0.35690201457403425, -0.306563147644324, -0.2694859425383278,
-0.2537610939967916, -0.23644416371530852, -0.22300589388944303,
-0.21221262263494722, -0.20331055882716953, -0.19582675514284986,
-0.18941498272899793, -0.18385129011823764, -0.1789631142303989,
-0.1746323058020991, -0.17076266065742018, -0.1672670645390575,
-0.16410509510368243, -0.1595146384373365, -0.15861356968324714},
{-1.180391464407677, -0.6460432813586987, -0.4455684462854581,
-0.35682104790824987, -0.3065016202221784, -0.26943869987404945,
-0.2537177996493707, -0.23640650377965855, -0.22297239507805244,
-0.21218231549099187, -0.2032827844302716, -0.19580103832621631,
-0.18939097322807186, -0.18382872180823995, -0.1789417798589561,
-0.17461204017057952, -0.17074333017293242, -0.16724856155176937,
-0.16408732782684154, -0.15949820762847366, -0.15859713693155442},
{-1.1801224750440822, -0.6458433300277342, -0.4454504867118789,
-0.35674013922786507, -0.306440140843911, -0.2693915889426144,
-0.2536745437383363, -0.2363688789351741, -0.2229389291415096,
-0.2121520393058134, -0.2032550395643824, -0.1957753497895709,
-0.18936699096553866, -0.18380617985755876, -0.1789204710960739,
-0.1745917994743138, -0.17072402403266906, -0.16723008238204073,
-0.16406958390238202, -0.15948179983922017, -0.15858072615278473},
{-1.1798532492339744, -0.6456434550692869, -0.44533260136016395,
-0.35665928854304063, -0.30637870952725876, -0.26934461410380806,
-0.2536313262865235, -0.23633128920698, -0.2229054961062893,
-0.2121217941074498, -0.20322732425838907, -0.19574968956408867,
-0.18934303597350421, -0.18378366429693216, -0.17889918797319027,
-0.1745715837451698, -0.17070474226793664, -0.16721162706287274,
-0.16405186336263, -0.15946541509537226, -0.15856433738318643},
{-1.179583787767199, -0.6454436565841206, -0.4452147902370793,
-0.35657849586428014, -0.3063173262895198, -0.2692977797613718,
-0.2535881473160373, -0.23629373462046388, -0.2228720959979995,
-0.2120915799241203, -0.20319963854181466, -0.1957240576793886,
-0.18931910828320753, -0.18376117515612123, -0.1788779305207484,
-0.1745513930149798, -0.1706854849100381, -0.16719319562463397,
-0.1640341662396061, -0.1594490534212447, -0.1585479706592423},
{-1.1793140914322908, -0.6452439346723153, -0.44509705334989746,
-0.3564977612020339, -0.3062559911476388, -0.2692510903551,
-0.2535450068499543, -0.2362562152002745, -0.22283872884327494,
-0.21206139678529823, -0.2031719824445375, -0.1956984541666138,
-0.18929520792647025, -0.18373871246590667, -0.17885669877058774,
-0.17453122731491533, -0.17066625199139196, -0.16717478810074127,
-0.16401649256647843, -0.15943271484391985, -0.1585316260178189},
{-1.17904416101607, -0.6450442894346082, -0.4449793907057664,
-0.35641708456654086, -0.30619470411957117, -0.2692045503532867,
-0.25350190491082003, -0.23621873097266288, -0.22280539466810012,
-0.2120312447198458, -0.2031443559957289, -0.19567287905640995,
-0.1892713349353592, -0.18371627625798226, -0.17883549275394373,
-0.1745110866779882, -0.170647043542413, -0.16715640452341773,
-0.16399884237584672, -0.1594163993895812, -0.15851530349582887},
{-1.178773997303951, -0.6448447209704931, -0.4448618023122286,
-0.35633646596985713, -0.30613346522185836, -0.26915816424191874,
-0.25345884152233644, -0.23618128196385513, -0.22277209349913818,
-0.21200112375586144, -0.20311675922559758, -0.19564733238008714,
-0.18924748934227154, -0.18369386656251763, -0.1788143125018422,
-0.1744909711359206, -0.17062785959643634, -0.16713804492487938,
-0.16398121570060908, -0.1594001070849984, -0.1584990031311193},
{-1.1785036010798144, -0.6446452293799787, -0.44474428817675893,
-0.35625590542190366, -0.30607227447368324, -0.2691119365193515,
-0.2534158167072764, -0.2361438681994521, -0.22273882536257972,
-0.21197103392323058, -0.20308919216401122, -0.19562181416858948,
-0.18922367117892946, -0.1836714834110147, -0.17879315804633933,
-0.1744708807209676, -0.1706087001851344, -0.16711970933793907,
-0.16396361257379155, -0.15938383795753097, -0.1584827249623011},
{-1.1782329731259233, -0.6444458147629692, -0.44462684830709875,
-0.35617540293453764, -0.3060111318925074, -0.2690658716848926,
-0.25337283048905945, -0.23610648970621995, -0.22270559028585524,
-0.21194097525071953, -0.20306165484088368, -0.1955963244530885,
-0.18919988047854375, -0.18364912683530576, -0.17877202941881976,
-0.1744508154658888, -0.17058956534065572, -0.1671013977953848,
-0.16394603302804356, -0.15936759203397344, -0.15846646902669903},
{-1.1779621142230905, -0.6442464772186511, -0.44450948271111557,
-0.35609495851911177, -0.30595003749702165, -0.26901997423304636,
-0.2533298828909558, -0.2360691465107223, -0.22267238829553193,
-0.21191094776858677, -0.20303414728676827, -0.19557086326520334,
-0.18917611727332684, -0.1836267968665659, -0.17875092665111225,
-0.17443077540293572, -0.17057045509626434, -0.1670831103301964,
-0.16392847709722247, -0.1593513693427262, -0.1584502353636097},
{-1.177691025150545, -0.6440472168463351, -0.4443921913968403,
-0.3560145721869805, -0.3058889913053289, -0.2689742486446498,
-0.25328697393678823, -0.23603183863980703, -0.22263921941824094,
-0.21188095150576558, -0.20300666953118807, -0.19554543063599894,
-0.1891523815965357, -0.18360449353707864, -0.1787298497751273,
-0.17441076056539373, -0.17055136948366467, -0.16706484697592572,
-0.16391094481558355, -0.1593351699121044, -0.15843402401158713},
{-1.1774197066862637, -0.6438480337452077, -0.44427497437273367,
-0.35593424395055884, -0.3058279933361092, -0.26892869937638864,
-0.2532441036505304, -0.23599456612116754, -0.22260608368187462,
-0.21185098649225154, -0.20297922160568405, -0.19552002659709444,
-0.18912867348116436, -0.18358221687921983, -0.17870879882320878,
-0.17439077098571687, -0.17053230853715107, -0.16704660776521862,
-0.16389343621569097, -0.15931899377087433, -0.15841783500994566},
{-1.1771481596064621, -0.6436489280144411, -0.444157831646951,
-0.35585397382152983, -0.3057670436081228, -0.26888333085705085,
-0.25320127205672804, -0.23595732898175115, -0.22257298111307833,
-0.211821052758296, -0.20295180354058928, -0.1954946511807556,
-0.18910499296031702, -0.18355996692512377, -0.17868777382739864,
-0.17437080669634852, -0.1705132722885523, -0.16702839273263237,
-0.16387595133182487, -0.1593028409482713, -0.1584016683972429},
{-1.1768763846858947, -0.643449899752456, -0.4440407632280916,
-0.3557737618118164, -0.3057061421405507, -0.2688381474771795,
-0.2531584791783388, -0.23592012724925482, -0.22253991173965204,
-0.2117911503333687, -0.20292441536601302, -0.19546930441842392,
-0.18908134006722577, -0.1835377437072161, -0.17866677482052395,
-0.17435086773161856, -0.17049426077088015, -0.16701020191054283,
-0.1638584901975726, -0.15928671147266726, -0.15838552421326213},
{-1.1766043826979207, -0.6432509490579861, -0.44392376912495735,
-0.3556936079343114, -0.30564528895277476, -0.26879315358352507,
-0.2531157250401712, -0.23588296095162775, -0.22250687558950233,
-0.21176127924908883, -0.2028970571138231, -0.19544398634271332,
-0.1890577148355881, -0.18351554725898112, -0.17864580183486822,
-0.17433095412432564, -0.17047527401911466, -0.1669920353338945,
-0.16384105284795325, -0.15927060537541138, -0.15836940249707965},
{-1.176332154414399, -0.6430520760296332, -0.44380684934624526,
-0.35561351220115966, -0.3055844840643065, -0.26874835347149073,
-0.2530730096661955, -0.23584583011734495, -0.22247387269019114,
-0.21173143953424045, -0.20286972881439524, -0.19541869698495873,
-0.18903411729887765, -0.18349337761289775, -0.1786248549027718,
-0.17431106590758816, -0.17045631206547895, -0.1669738930361646,
-0.16382363931657906, -0.15925452268537654, -0.15835330328897257},
{-1.1760597006054851, -0.6428532807655483, -0.44369000390114266,
-0.35553347462563956, -0.30552372749421686, -0.2687037513755808,
-0.25303033308179934, -0.23580873477451192, -0.2224409030699377,
-0.21170163122096852, -0.2028424304993841, -0.19539343637786288,
-0.18901054749110457, -0.18347123480327454, -0.17860393405776165,
-0.1742912031151178, -0.17043737494469724, -0.16695577505252146,
-0.16380624963819912, -0.1592384634340398, -0.15833722662759087},
{-1.1757870220402813, -0.6426545633638234, -0.4435732327989452,
-0.3554534952199262, -0.3054630192624437, -0.26865935146741116,
-0.25298769531114473, -0.23577167495160012, -0.22240796675696117,
-0.21167185433938585, -0.20281516219998608, -0.19536820455392956,
-0.1889870054450853, -0.18344911886267568, -0.17858303933271813,
-0.17427136578045577, -0.17041846268905658, -0.166937681415682,
-0.16378888384702606, -0.1592224276517733, -0.1583211725526894},
{-1.1755141194859222, -0.6424559239224763, -0.44345653604887225,
-0.3553735739978805, -0.30540235938912375, -0.26861515784642265,
-0.25294509637944884, -0.2357346506775322, -0.22237506377917526,
-0.21164210892045787, -0.20278792394804057, -0.19534300154537831,
-0.18896349119614086, -0.18342702982519654, -0.1785621707612144,
-0.17425155393764769, -0.17039957533364714, -0.16691961216154638,
-0.1637715419782424, -0.1592064153697592, -0.15830514110431437},
{-1.175240993708477, -0.6422573625393273, -0.4433399136603189,
-0.3552937109726422, -0.3053417478948077, -0.2685711745346815,
-0.25290253631168014, -0.23569766198156827, -0.2223421941656909,
-0.21161239499634021, -0.2027607157749891, -0.19531782738559045,
-0.18894000477729733, -0.18340496772530912, -0.17854132837656422,
-0.1742317676203342, -0.17038071291364076, -0.16690156732427042,
-0.16375422406662565, -0.15919042661954919, -0.15828913232138575},
{-1.1749676454724671, -0.6420588793121311, -0.44322336564358267,
-0.35521390615749304, -0.3052811847996697, -0.2685274054723621,
-0.25286001513269696, -0.2356607088929188, -0.22230935794506124,
-0.21158271259740147, -0.2027335377126782, -0.195292682106615,
-0.1889165462237976, -0.18338293259700578, -0.17852051221245446,
-0.1742120068629589, -0.17036187546157677, -0.16688354693920004,
-0.1637369301469782, -0.15917446143306435, -0.15827314624396394},
{-1.174694075540745, -0.6418604743386052, -0.4431068920086716,
-0.35513415956704897, -0.3052206701242941, -0.26848385450982803,
-0.2528175328687894, -0.23562379144121692, -0.22227655514656774,
-0.21155306175601396, -0.20270638979357614, -0.1952675657421139,
-0.1888931155693463, -0.18336092447545127, -0.17849972230316524,
-0.1741922716995319, -0.17034306301374968, -0.1668655510408179,
-0.16371966025512918, -0.15915851984238216, -0.15825718291129576},
{-1.1744202846745662, -0.6416621477152447, -0.44299049276465574,
-0.3550544712138528, -0.3051602038887751, -0.2684405254031148,
-0.25277508954422956, -0.2355869096555061, -0.2222437857987245,
-0.2115234425036654, -0.20267927204926295, -0.19524247832474373,
-0.1888697128475556, -0.18333894339445678, -0.17847895868226615,
-0.17417256216370447, -0.1703242756036154, -0.16684757966464403,
-0.16370241442533384, -0.159142601880081, -0.15824124236265646},
{-1.174146273634313, -0.6414638995399553, -0.44287416792229095,
-0.3549748411124849, -0.305099786114301, -0.2683974218120575,
-0.2527326851855207, -0.23555006356633967, -0.22221104993095864,
-0.21149385487203531, -0.20265218451257638, -0.19521741988750563,
-0.18884633809379991, -0.18331698938927232, -0.1784582213843393,
-0.17415287829100734, -0.1703055132662321, -0.16682963284542396,
-0.16368519269365578, -0.1591267075771512, -0.1582253246372467},
{-1.1738720431783918, -0.6412657299094437, -0.44275791749208615,
-0.3548952692776659, -0.3050394168227175, -0.2683545472933311,
-0.2526903198181394, -0.23551325320328687, -0.22217834757337585,
-0.21146429889380514, -0.2026251272162476, -0.19519239046472592,
-0.18882299134218172, -0.18329506249548544, -0.1784375104442084,
-0.17413322011543997, -0.17028677603768827, -0.16681171062012723,
-0.16366799509598806, -0.15911083696830275, -0.15820942977483554},
{-1.1735975940640255, -0.6410676389208341, -0.4426417414844348,
-0.3548157557234237, -0.30497909603492346, -0.2683119052967484,
-0.2526479934683117, -0.2354764785970005, -0.22214567875581537,
-0.21143477460126547, -0.2025981001923789, -0.19516739008941997,
-0.18879967262841646, -0.18327316274785588, -0.17841682589565266,
-0.17411358767167684, -0.17026806395171334, -0.16679381302363083,
-0.16365082166786493, -0.15909499008543193, -0.15819355781395217},
{-1.173322927046808, -0.6408696266707388, -0.44252563991027216,
-0.35473630046476856, -0.3049188237720113, -0.2682694991605956,
-0.2526057061621998, -0.23543973977796284, -0.2221130435069938,
-0.21140528202721143, -0.20257110347468554, -0.19514241879529237,
-0.18877638198583924, -0.1832512901828487, -0.17839616777476408,
-0.17409398099467666, -0.17024937704524845, -0.16677594009147967,
-0.16363367244495564, -0.1590791669610745, -0.15817770879365867},
{-1.173048042881078, -0.6406716932559622, -0.4424096127804269,
-0.35465690351661117, -0.30485860005632226, -0.26822733210932626,
-0.2525634579265663, -0.23540303677681607, -0.22208044185855513,
-0.2113758212049106, -0.2025441370954617, -0.1951174766165451,
-0.18875311945035733, -0.1832294448360159, -0.17837553611608925,
-0.17407440011989905, -0.170230715352659, -0.1667580918611158,
-0.16361654746346943, -0.15906336762996887, -0.1581618827533866},
{-1.1727729423195736, -0.6404738387728255, -0.44229366010622506,
-0.3545775648936704, -0.3047984249095652, -0.26818540725048834,
-0.25252124878723947, -0.23536636962473168, -0.22204787383993363,
-0.2113463921656198, -0.2025172010881704, -0.19509256358657723,
-0.18872988505614785, -0.18320762674218827, -0.1783549309549599,
-0.1740548450817876, -0.17021207890990908, -0.16674026836657063,
-0.16359944675895122, -0.1590475921234642, -0.15814607973056027},
{-1.1724976261137687, -0.6402760633179074, -0.442177781898641,
-0.35449828461160493, -0.3047382983540121, -0.2681437275708731,
-0.25247907877176345, -0.2353297383522417, -0.22201533948221552,
-0.21131699494488743, -0.20249029548688213, -0.19506767974037587,
-0.18870667883832937, -0.18318583593856985, -0.17833435232674333,
-0.17403531591602217, -0.17019346775310495, -0.16672246964637694,
-0.16358237036835632, -0.15903184047704144, -0.15813029976517612},
{-1.1722220950133373, -0.6400783669871668, -0.4420619781690913,
-0.35441906268537515, -0.3046782204123719, -0.26810229593493773,
-0.25243694790610505, -0.23529314299086934, -0.2219828388160785,
-0.211287629574894, -0.20246342032401188, -0.1950428251116243,
-0.18868350083287666, -0.1831640724611212, -0.17831380026761323,
-0.1740158126580127, -0.17017488191848784, -0.1667046957366196,
-0.16356531832816756, -0.15901611272259686, -0.15811454289532634},
{-1.1719463497671647, -0.6398807498769283, -0.4419462489296997,
-0.3543398991315989, -0.3046181911055328, -0.2680611150804637,
-0.2523948562179825, -0.2352565835721947, -0.2219503718726692,
-0.21125829608945068, -0.20243657563427675, -0.1950179997348016,
-0.18866035107422974, -0.18314233634662713, -0.17829327481281965,
-0.1739963353436096, -0.17015632144239135, -0.16668694667324502,
-0.1635482906745267, -0.15900040889457756, -0.15809880915882957},
{-1.171670391122003, -0.6396832120827955, -0.4418305941920071,
-0.3542607939652118, -0.3045582104578308, -0.2680201876187205,
-0.2523528037352172, -0.23522006012776586, -0.22191793868291398,
-0.2112289945228234, -0.20240976145157674, -0.19499320364571204,
-0.18863722959777363, -0.18312062763121517, -0.1782727759989342,
-0.1739768840082867, -0.17013778636064103, -0.1666692224946118,
-0.1635312874445134, -0.15898472902683025, -0.15808309859511027},
{-1.1713942198236875, -0.639485753700793, -0.4417150139677215,
-0.3541817472031372, -0.30449827849141897, -0.26797951603186476,
-0.25231079048463556, -0.23518357268946488, -0.22188553927853505,
-0.21119972490861372, -0.20238297780926828, -0.19496843687750243,
-0.18861413643901415, -0.18309894635191526, -0.1782523038625321,
-0.1739574586882533, -0.17011927671020288, -0.16665152323619026,
-0.1635143086741877, -0.15896907315232056, -0.1580674112413334},
{-1.1711178366162933, -0.6392883748267906, -0.44159950826945504,
-0.3541027588608916, -0.3044383952300098, -0.267939102670514,
-0.25226881649345145, -0.23514712128930526, -0.22185317369134339,
-0.2111704872816702, -0.20235622474292825, -0.19494369946653833,
-0.18859107163300237, -0.18307729254528127, -0.17823185843896994,
-0.17393805941946283, -0.1701007925281104, -0.1666338489364385,
-0.1634973544006506, -0.15895344130545652, -0.1580517471361773},
{-1.1708412422429042, -0.6390910755559425, -0.44148407710922655,
-0.3540238289551585, -0.30437856069627145, -0.267898949755768,
-0.25222688179056263, -0.23511070595888128, -0.22182084195229024,
-0.21114128167596036, -0.20232950228541569, -0.1949189914467695,
-0.1885680352162602, -0.18305566624793101, -0.17821143976563292,
-0.1739186862382951, -0.1700823338509423, -0.16661619963266716,
-0.16348042466167456, -0.15893783352012747, -0.15803610631812504},
{-1.1705644374447424, -0.6388938559842199, -0.44136872049987375,
-0.3539449575032254, -0.30431877491384896, -0.26785905937229515,
-0.25218498640336406, -0.23507432673186557, -0.22178854409488835,
-0.21111210812704329, -0.2023028104729505, -0.19489431285434122,
-0.1885450272240341, -0.18303406749798867, -0.17819104787965045,
-0.173899339181407, -0.17006390071671618, -0.1665985753623005,
-0.16346351949342974, -0.15892224983065972, -0.15802048882530073},
{-1.1702874229618185, -0.6386967162065886, -0.44125343845382403,
-0.35386614452117193, -0.30425903790628794, -0.26781943347290493,
-0.25214313036115854, -0.23503798363978845, -0.22175628015028437,
-0.2110829666695615, -0.20227614933960325, -0.19486966372448933,
-0.1885220476912508, -0.18301249633209693, -0.17817068281717496,
-0.17388001828489408, -0.1700454931618829, -0.16658097616365808,
-0.16344663893397993, -0.1589066902707259, -0.15800489469524592},
{-1.1700101995327614, -0.6384996563183627, -0.4411382309840164,
-0.3537873900267581, -0.3041993496977362, -0.2677800738763416,
-0.2521013136910426, -0.2350016767156511, -0.22172405015092522,
-0.21105385733809356, -0.20224951892035392, -0.19484504409248515,
-0.18849909665461695, -0.18299095278680255, -0.17815034461602508,
-0.17386072358640448, -0.17002711122408698, -0.16656340207334352,
-0.16342978302040123, -0.1588911548734373, -0.15798932396664966},
{-1.1697327678948497, -0.638302676414586, -0.44102309810343776,
-0.35370869403705285, -0.3041397103124375, -0.26774098226622556,
-0.25205953642266365, -0.23496540599242977, -0.2216918541307713,
-0.2110247801696481, -0.20222291925128744, -0.19482045399476178,
-0.18847617415071127, -0.1829694369007946, -0.17813003331368193,
-0.17384145512304627, -0.17000875494145262, -0.16654585313091275,
-0.163412951789784, -0.15887564367463014, -0.1579737766778564},
{-1.1694551287838166, -0.6381057765903719, -0.4409080398255085,
-0.35363005656915547, -0.30408011977429794, -0.26770216019242454,
-0.2520177985842551, -0.23492917150307235, -0.22165969212146663,
-0.21099573519825654, -0.20219635036638905, -0.19479589346703108,
-0.1884532802145813, -0.18294794871017928, -0.17810974894617715,
-0.1738222129307232, -0.16999042435162082, -0.16652832937431583,
-0.16339614528054014, -0.15886015670737308, -0.15795825286750542},
{-1.1691772829340188, -0.6379089569403646, -0.440793056163546,
-0.35355147764177985, -0.30402057810785976, -0.2676636090689293,
-0.2519761002056349, -0.23489297328108805, -0.22162756415674423,
-0.21096672246068238, -0.20216981230253595, -0.19477136254510086,
-0.18843041488330314, -0.18292648825397606, -0.178089491552889,
-0.17380299704900537, -0.16997211949305324, -0.16651083084206064,
-0.1633793635302645, -0.1588446940062802, -0.15794275257366053},
{-1.1688992310785853, -0.6377122175594074, -0.44067814713123,
-0.35347295727187955, -0.30396108533760113, -0.26762533017605605,
-0.25193444131584997, -0.23485681135977998, -0.22159547026952708,
-0.21093774199287552, -0.20214330509559986, -0.19474686126537577,
-0.18840757819218013, -0.18290505556855052, -0.1780692611703074,
-0.17378380751331335, -0.16995384040344064, -0.1664933575722607,
-0.16336260657615043, -0.15882925560559258, -0.15792727583496458},
{-1.168620973949162, -0.6375155585422654, -0.44056331274232186,
-0.3533944954782591, -0.3039016414891016, -0.2675873246617755,
-0.25189282194499896, -0.23482068577301973, -0.22156341049342387,
-0.21090879383052652, -0.20211682878049686, -0.19472238966475786,
-0.18838477017894562, -0.18288365069194157, -0.1780490578372529,
-0.17376464436343397, -0.16993558712118784, -0.1664759096038857,
-0.16334587445656013, -0.15881384153888334, -0.15791182269073545},
{-1.1683425122758724, -0.6373189799832328, -0.4404485530107749,
-0.3533160922790817, -0.3038422465869708, -0.26754959353885255,
-0.25185124212207555, -0.23478459655421702, -0.22153138486272184,
-0.2108798780118839, -0.20209038339456598, -0.19469794777952742,
-0.1883619908797023, -0.18286227366267838, -0.1780288815917892,
-0.17374550763591756, -0.1699173596862842, -0.16645848697603682,
-0.16332916721027857, -0.15879845184218055, -0.15789639317931403},
{-1.1680638467878968, -0.6371224819771903, -0.44033386795083196,
-0.3532377476926687, -0.30378290065682023, -0.2675121376910319,
-0.25180970187703267, -0.23474854373785448, -0.22149939341073477,
-0.21085099457193834, -0.2020639689735546, -0.1946735356463769,
-0.18833924033103244, -0.18284092451765233, -0.17800873247158577,
-0.17372639736952422, -0.1698991581358804, -0.1664410897279467,
-0.1633124848751777, -0.15878308654821893, -0.1578809873398832},
{-1.1677849782125236, -0.6369260646180397, -0.44021925757663993,
-0.353159461738473, -0.3037236037230713, -0.26747495786780107,
-0.25176820124086063, -0.2347125273572921, -0.22146743617150122,
-0.2108221435486044, -0.20203758555420492, -0.19464915330284072,
-0.18831651856990206, -0.18281960329557734, -0.17798861051554837,
-0.17370731360259128, -0.16988098251010797, -0.16642371789828658,
-0.16329582748924665, -0.15876774569222363, -0.15786560521178572},
{-1.1675059072757286, -0.6367297279999455, -0.44010472190275784,
-0.35308123443485684, -0.30366435581253626, -0.26743805469004656,
-0.2517267402437966, -0.23467654744763422, -0.2214355131801682,
-0.21079332497907544, -0.20201123317377778, -0.1946248007858813,
-0.18829382563366437, -0.18279831003429692, -0.1779685157622488,
-0.173688256373417, -0.1698628328481675, -0.1664063715272306,
-0.163279195091512, -0.158752429309299, -0.15785024683364313},
{-1.1672266347028053, -0.6365334722173852, -0.43999026094375004,
-0.35300306580149154, -0.3036051569509546, -0.26740142865140726,
-0.2516853189164969, -0.2346406040431006, -0.22140362447028394,
-0.21076453890069757, -0.20198491186923206, -0.1946004781327808,
-0.18827116155899049, -0.18277704477189616, -0.1779484482503051,
-0.17366922572134413, -0.16984470918866634, -0.16638905065340737,
-0.16326258772002333, -0.15873713743251727, -0.1578349122448408},
{-1.1669471612165445, -0.636337297363962, -0.43987587471487544,
-0.3529249558575529, -0.3035460071640621, -0.26736508011656923,
-0.25164393728971746, -0.23460469717831955, -0.22137177007743247,
-0.2107357853514138, -0.20195862167809864, -0.19457618538094223,
-0.18824852638420708, -0.18275580754699305, -0.17792840801902088,
-0.17365022168513988, -0.16982661157164358, -0.16637175531678494,
-0.16324600541414824, -0.15872187009826177, -0.15781960148582996},
{-1.166667487539307, -0.6361412035337661, -0.4397615632307996,
-0.3528469046227105, -0.303486906478863, -0.2673290093271561,
-0.2516025953949459, -0.23456882688859793, -0.22133995003594364,
-0.2107070643690605, -0.20193236263736836, -0.19455192256917186,
-0.18822592014618778, -0.1827345983977935, -0.17790839510637468,
-0.173631244303305, -0.16980854003724133, -0.16635448555803833,
-0.16322944821314067, -0.1587066273403508, -0.15780431459506872},
{-1.1663876143918586, -0.6359451908207578, -0.439647326507016,
-0.35276891211697503, -0.30342785492060287, -0.26729321639854575,
-0.251561293263201, -0.23453299320811638, -0.22130816438144052,
-0.21067837599184358, -0.2019061347848634, -0.1945276897341266,
-0.1882033428828045, -0.18271341736287994, -0.17788840955245888,
-0.1736122936157365, -0.16979049462492313, -0.16633724141620476,
-0.16321291615516387, -0.15869140919337354, -0.15778905161161916},
{-1.1661075424932879, -0.6357492593186098, -0.43953316455871594,
-0.3526909783606218, -0.30336885251687207, -0.26725770132553706,
-0.2515200309268302, -0.23449719617255127, -0.22127641314917312,
-0.2106497202578339, -0.20187993815904193, -0.19450348691540142,
-0.1881807946318439, -0.18269226448072473, -0.17786845139630714,
-0.17359336966203998, -0.1697724753754244, -0.16632002293233228,
-0.16319640928025692, -0.15867621569424983, -0.1577738125765329},
{-1.1658272725620282, -0.6355534091208419, -0.4394190774019844,
-0.35261310337369167, -0.3033098992946073, -0.26722246398324145,
-0.2514788084172963, -0.23446143581745105, -0.22124469637442346,
-0.2106210972056104, -0.20185377279725714, -0.1944793141503247,
-0.18815827543151187, -0.1826711397901306, -0.17784852067696377,
-0.17357447248155822, -0.16975448232814472, -0.16630283014516678,
-0.16317992762675715, -0.15866104687485816, -0.1577585975284599},
{-1.1655468053142748, -0.6353576403209491, -0.4393050650522756,
-0.35253528717684546, -0.30325099528088373, -0.26718750412876346,
-0.2514376257666342, -0.2344257121774973, -0.22121301409374539,
-0.21059250687474673, -0.20182763873915732, -0.1944551714779621,
-0.1881357853199752, -0.18265004333033374, -0.17782861743507894,
-0.17355560211396792, -0.16973651552462954, -0.1662856630959233,
-0.16316347123487063, -0.15864590277328716, -0.15774340650863294},
{-1.1652661414655423, -0.6351619530127213, -0.43919112752530687,
-0.35245752979029277, -0.30319214050309995, -0.2671528214037586,
-0.25139648300726947, -0.23439002528950326, -0.2211813663420621,
-0.21056394930369748, -0.20180153602208506, -0.19443105893718382,
-0.18811332433553218, -0.18262897513973186, -0.1778087417090859,
-0.17353675859956397, -0.1697185750046195, -0.16626852182540475,
-0.1631470401437447, -0.15863078342306025, -0.15772823955582282},
{-1.1649852817297788, -0.6349663472892182, -0.43907726483779363,
-0.35237983123656846, -0.3031333349881642, -0.2671184153350836,
-0.25135538017219616, -0.2343543751888113, -0.22114975315646745,
-0.21053542453165264, -0.2017754646856389, -0.19440697656705197,
-0.18809089251741185, -0.18260793525853813, -0.17778889353908056,
-0.17351794197850623, -0.16970066081045942, -0.1662514063742151,
-0.16313063439330833, -0.15861568886010602, -0.15771309671114153},
{-1.164704226819616, -0.6347708232436311, -0.4389634770059132,
-0.35230219153532616, -0.30307457876456567, -0.2670842853401467,
-0.2513143172946535, -0.23431876191169465, -0.22111817457296112,
-0.21050693259864062, -0.20174942476869973, -0.19438292440764116,
-0.18806848990404035, -0.18258692372589636, -0.17776907296600086,
-0.17349915229151947, -0.16968277298159506, -0.16623431678279132,
-0.16311425402452073, -0.158600619120552, -0.1576979780148271},
{-1.164422977446348, -0.6345753809692578, -0.4388497640461111,
-0.3522246107088556, -0.30301587185983436, -0.2670504307262078,
-0.2512732944069427, -0.23428318549411742, -0.22108663062802947,
-0.21047847354387983, -0.20172341631059254, -0.1943589024974841,
-0.18804611653422754, -0.18256594058093967, -0.17774928002929613,
-0.17348038957875644, -0.1696649115601332, -0.16621725309201096,
-0.1630978990748524, -0.1585855742385931, -0.15768288350699677},
{-1.1641415343199117, -0.6343800205591297, -0.43873612597518097,
-0.3521470887785618, -0.3029572143025945, -0.26701685069408754,
-0.25123231154288206, -0.23424764597295678, -0.2210551213590506,
-0.21045004740794226, -0.20169743935130668, -0.19433491087722388,
-0.18802377244774604, -0.18254498586356505, -0.177729514769549,
-0.17346165388120127, -0.16964707658780043, -0.16620021534345852,
-0.1630815695865948, -0.15857055425097855, -0.1576678132284286},
{-1.1638598981489814, -0.6341847421064379, -0.4386225628098792,
-0.3520696257662408, -0.30289860612124286, -0.2669835443424766,
-0.25119136873625436, -0.23421214338465646, -0.22102364680209519,
-0.2104216542301991, -0.2016714939294033, -0.19431094958622097,
-0.18800145768434362, -0.18252405961406026, -0.1777097772269869,
-0.17344294523961068, -0.1696292681058864, -0.16618320357781968,
-0.16306526559944956, -0.15855555919380393, -0.1576527672215633},
{-1.1635780696410016, -0.6339895457040186, -0.4385090745678344,
-0.3519922216945979, -0.3028400473438886, -0.26695051066575104,
-0.2511504660211834, -0.234176677765781, -0.22099220699553257,
-0.21039329405185114, -0.20164558008615785, -0.19428701866550213,
-0.18797917228338434, -0.18250316187245375, -0.17769006744204674,
-0.1734242636955834, -0.1696114861564162, -0.16616621783612828,
-0.1630489871536014, -0.15854058910348456, -0.15763774552625875},
{-1.163296049501831, -0.6337944314444925, -0.43839566126571583,
-0.35191487658523357, -0.3027815379991914, -0.26691774856106676,
-0.2511096034320204, -0.23414124915407086, -0.2209608019756324,
-0.21036496691310447, -0.20161969786119371, -0.19426311815535158,
-0.18795691628476163, -0.18248229267975447, -0.17767038545544978,
-0.173405609289901, -0.16959373078129403, -0.16614925816066872,
-0.16303273428968978, -0.15852564401614444, -0.15762274818444766},
{-1.163013838436246, -0.6335993994209606, -0.43828232292143454,
-0.3518375904612405, -0.30272307811685906, -0.2668852568288642,
-0.2510687810028962, -0.23410585758560032, -0.2209294317802879,
-0.21033667285432145, -0.20159384729439012, -0.19423924809671078,
-0.1879346897288663, -0.18246145207509912, -0.1776507313085567,
-0.17338698206453884, -0.1695760020227226, -0.16613232459190996,
-0.16301650704794568, -0.15851072396695898, -0.15760777523765768},
{-1.162731437147599, -0.633404449725969, -0.4381690595525427,
-0.3517603633452495, -0.302664667725999, -0.2668530341756856,
-0.2510279987686239, -0.23407050309949184, -0.22089809644829117,
-0.21030841191775096, -0.20156802842825172, -0.1942154085309049,
-0.18791249265695953, -0.18244064010112027, -0.17763110504303725,
-0.1733683820616747, -0.16955829992360805, -0.16611541717301748,
-0.16300030547045452, -0.1584958289951146, -0.15759282672954456},
{-1.1624488463380924, -0.6332095824520536, -0.43805587117702594,
-0.35168319526072267, -0.30260630685604895, -0.2668210792179728,
-0.2509872567639704, -0.23403518573234194, -0.22086679601628134,
-0.21028018414329352, -0.20154224130097376, -0.19419159949901044,
-0.18789032510849069, -0.18241985679697237, -0.17761150669795,
-0.1733498093218948, -0.16954062452592567, -0.16609853594459523,
-0.16298412959689657, -0.1584809591359182, -0.15757790270107463},
{-1.1621660667084264, -0.6330147976918461, -0.43794275781270287,
-0.35160608623047196, -0.30254799553651424, -0.2667893904821632,
-0.25094655502509156, -0.23399990552174543, -0.2208355305233205,
-0.21025198957430646, -0.20151648595576432, -0.19416782104287833,
-0.18786818712590758, -0.18239910220554378, -0.17759193631686543,
-0.17333126388887976, -0.16952297587334897, -0.1660816809490946,
-0.16296797946941055, -0.15846611442680825, -0.1575630031949622},
{-1.1618830989580449, -0.6328200955376353, -0.43782971947821636,
-0.3515290362783894, -0.30248973379688593, -0.26675796640953564,
-0.2509058935870563, -0.23396466250675374, -0.2208043000071953,
-0.21022382825039898, -0.20149076243268382, -0.19414407320430627,
-0.18784607874952286, -0.18237837636699794, -0.17757239393971247,
-0.1733127458033401, -0.1695053540073559, -0.1660648522282706,
-0.1629518551285365, -0.15845129490618604, -0.157548128254291},
{-1.161599943785129, -0.6326254760819872, -0.4377167561918238,
-0.35145204542807207, -0.302431521667895, -0.26672680535953575,
-0.2508652724862728, -0.23392945672506826, -0.22077310450704957,
-0.2101957002147472, -0.20146507077383546, -0.19412035602584865,
-0.18782400002191224, -0.18235767932405622, -0.1775528796088821,
-0.1732942551095107, -0.16948775897206403, -0.16604804982449295,
-0.16293575661587312, -0.15843650061068004, -0.15753327792345573},
{-1.1613166018868348, -0.632430939416949, -0.43760386797220363,
-0.35137511370369623, -0.3023733591801516, -0.26669590560877054,
-0.25082469175851685, -0.23389428821530345, -0.2207419440614906,
-0.21016760550969948, -0.20143941102087126, -0.19409666955004212,
-0.1878019509842126, -0.18233701111829603, -0.1775333933667298,
-0.17327579184957642, -0.16947019081125703, -0.1660312737804368,
-0.16291968397353074, -0.15842173157905748, -0.15751845224513517},
{-1.161033073958599, -0.6322364856352021, -0.43749105483836104,
-0.35129824112926045, -0.3023152463641203, -0.26666526535927204,
-0.2507841514397313, -0.23385915701672744, -0.22071081870959475,
-0.2101395441772098, -0.2014137832152194, -0.19407301381875186,
-0.1877799316786124, -0.18231637179155769, -0.17751393525491466,
-0.17325735606595316, -0.16945264956726902, -0.16601452413844697,
-0.1629036372428061, -0.1584069878494958, -0.15750365126397625},
{-1.1607493606944228, -0.6320421148282218, -0.4373783168090384,
-0.35122142772969767, -0.30225718324955864, -0.2666348827359144,
-0.25074365156784495, -0.23382406316776994, -0.22067972849095696,
-0.21011151626064972, -0.2013881873995622, -0.19404938887683798,
-0.1877579421487745, -0.1822957613870635, -0.17749450531556832,
-0.17323894780297877, -0.16943513528491394, -0.1659978009409535,
-0.1628876164659907, -0.15839226946075513, -0.15748887502436304},
{-1.160465462787796, -0.6318478270886256, -0.43726565390370276,
-0.35114467352928, -0.3021991698684303, -0.26660475579085485,
-0.250703192179067, -0.23378900670755698, -0.22064867344397854,
-0.21008352180172807, -0.20136262361593182, -0.19402579476587078,
-0.18773598243602763, -0.18227517994617415, -0.17747510359128071,
-0.17322056710211342, -0.16941764800707304, -0.16598110423057122,
-0.16287162168455893, -0.15837757645090988, -0.15747412357051616},
{-1.1601813809304673, -0.6316536225084164, -0.43715306614159033,
-0.3510679785530506, -0.30214120625138463, -0.2665748825088663,
-0.25066277331085374, -0.2337539876755308, -0.2206176536088904,
-0.21005556084394783, -0.2013370919065025, -0.194002231529538,
-0.18771405258342355, -0.18225462751231447, -0.17745573012414084,
-0.173202214009045, -0.1694001877777609, -0.16596443404997885,
-0.1628556529402445, -0.15836290885915716, -0.1574593969471394},
{-1.1598971158127611, -0.6314595011792097, -0.4370405535429267,
-0.35099134282664224, -0.30208329243076903, -0.2665452608057777,
-0.25062239500083905, -0.23371900611192586, -0.22058666902604784,
-0.21002763343109265, -0.20131159231481277, -0.19397869921206734,
-0.18769215263558792, -0.18223410412895547, -0.17743638495824143,
-0.17318388856651978, -0.1693827546417026, -0.16594779044222818,
-0.16283971027669253, -0.15834826672634605, -0.15744469520007343},
{-1.1596126681239962, -0.6312654631930794, -0.43692811612701554,
-0.35091476637501984, -0.3020254284376982, -0.2665158885352099,
-0.25058205728685223, -0.23368406205588244, -0.22055571973482913,
-0.20999973960674012, -0.20128612488270647, -0.1939551978577576,
-0.18767028263475538, -0.18221360983892865, -0.17741706813539082,
-0.17316559081841376, -0.16936534864291275, -0.16593117345198394,
-0.1628237937362904, -0.15833365009034495, -0.1574300183749493},
{-1.1593280385520135, -0.6310715086418082, -0.43681575391410377,
-0.35083824922433493, -0.3019676143032619, -0.2664867634870376,
-0.25054176020686114, -0.23364915554793342, -0.22052480577591638,
-0.2099718794145744, -0.20126068965383936, -0.193931727509856,
-0.18764844262569724, -0.18219314468554515, -0.17739777969942594,
-0.17314732080928152, -0.16934796982622302, -0.1659145831198252,
-0.16280790336028517, -0.1583190589923369, -0.15741536651691845},
{-1.159043227783581, -0.6308776376170702, -0.4367034669243193,
-0.3507617914001848, -0.3019098500605253, -0.2664578833925937,
-0.2505015038002405, -0.23361428662825645, -0.22049392719013383,
-0.20994405289825835, -0.2012352866719489, -0.19390828821409656,
-0.18762663265223978, -0.1821727087128835, -0.17737851969376095,
-0.17312907858377713, -0.1693306182359784, -0.1658980194918378,
-0.16279203919404495, -0.15830449347255993, -0.15740073967243262},
{-1.1587582365042692, -0.630683850210616, -0.4365912551785023,
-0.35068539292911893, -0.30185213574175407, -0.26642924592851003,
-0.2504612881043613, -0.23357945533743418, -0.22046308401777281,
-0.20991626010215825, -0.2012099159794971, -0.19388488001366966,
-0.1876048527581169, -0.1821523019641873, -0.17735928816182067,
-0.17311086418588673, -0.169313293916467, -0.16588148260979096,
-0.16277620127842596, -0.15828995357007258, -0.15738613788717615},
{-1.1584730653981197, -0.6304901465140524, -0.4364791186968855,
-0.35060905383725327, -0.3017944713796794, -0.26640084871483793,
-0.2504211131593195, -0.23354466171617716, -0.220432276300496,
-0.2098885010711129, -0.20118457762165676, -0.1938615029542703,
-0.1875831029894357, -0.1821319244841284, -0.1773400851483551,
-0.1730926776612165, -0.16929599691399133, -0.16586497251793375,
-0.1627603896577341, -0.15827543932758203, -0.15737156120924212},
{-1.1581877151478963, -0.6302965266188689, -0.43636705750048144,
-0.35053277415119766, -0.3017368570070076, -0.26637268932316616,
-0.25038097900313616, -0.2335099058054837, -0.22040150407855208,
-0.20986077584966978, -0.2011592716404813, -0.19383815708039265,
-0.1875613833894434, -0.1821115763167036, -0.17732091069607137,
-0.1730745190540972, -0.16927872727236348, -0.1658484892605827,
-0.16274460437533733, -0.1582609507851025, -0.15735700968379618},
{-1.1579021864355532, -0.6301029906165496, -0.4362550716105744,
-0.3504565538985638, -0.30167929265573434, -0.2663447652742761,
-0.2503408856766356, -0.23347518764644448, -0.2203707673948223,
-0.20983308448182925, -0.20113399808110444, -0.1938148424375754,
-0.18753969400463788, -0.18209125750670552, -0.17730176485011384,
-0.17305638841036952, -0.16926148503805294, -0.16583203288119108,
-0.16272884547453614, -0.15824648798433927, -0.15734248335829548},
{-1.1576164799413995, -0.6299095385985467, -0.43614316104830486,
-0.35038039310588687, -0.301621778360456, -0.2663170740424903,
-0.2503008332195904, -0.23344050728110943, -0.22034006629017,
-0.20980542701422777, -0.20110875698794217, -0.19379155907182266,
-0.18751803487927177, -0.18207096809918966, -0.17728264765500157,
-0.17303828577477276, -0.16924427025490374, -0.16581560342382318,
-0.16271311300011249, -0.1582320509670332, -0.15732798228071943},
{-1.1573305963445701, -0.6297161706560228, -0.4360313258353923,
-0.35030429180076794, -0.3015643141540423, -0.26628961306031584,
-0.25026082167129715, -0.23340586475018554, -0.22030940080691508,
-0.20977780349045005, -0.2010835484045792, -0.19376830702674752,
-0.1874964060593456, -0.18205070813765545, -0.17726355915554848,
-0.17302021119387945, -0.16922708296991118, -0.16579920093330358,
-0.16269740699477708, -0.15821763977360703, -0.15731350649737763},
{-1.157044536322923, -0.6295228868803342, -0.435919565993089,
-0.3502282500110425, -0.30150690007055303, -0.2662623797157444,
-0.2502208510723598, -0.2333712600960851, -0.22027877098791748,
-0.20975021395702953, -0.2010583723766075, -0.19374508634954424,
-0.18747480759092383, -0.1820304776684516, -0.177244499396366,
-0.1730021647132105, -0.16920992322818762, -0.16578282545305,
-0.162681727503454, -0.158203254447141, -0.1572990560560612},
{-1.1567583005534043, -0.6293296873629419, -0.435807881543834,
-0.35015226776431163, -0.3014495361437284, -0.26623537136103437,
-0.250180921463496, -0.23333669336091845, -0.22024817687479725,
-0.20972265845929172, -0.2010332289478427, -0.1937218970856378,
-0.18745323951966242, -0.18201027673637427, -0.17722546842304965,
-0.1729841463787949, -0.16919279107576557, -0.16576647702883207,
-0.16266607457125914, -0.15818889503008293, -0.157284631006263},
{-1.156471889711355, -0.6291365721949376, -0.4356962725094107,
-0.35007634508937, -0.3013922224079444, -0.26620858530882074,
-0.25014103288568634, -0.23330216458685626, -0.22021761851129185,
-0.20969513704324072, -0.20100811816396202, -0.19369873928062376,
-0.18743170189155833, -0.1819901053870474, -0.17720646628064785,
-0.17296615623672906, -0.16917568655842175, -0.1657501557042167,
-0.16265044824154629, -0.15817456156512577, -0.1572702313935963},
{-1.1561853044711636, -0.6289435414673612, -0.43558473891242855,
-0.35000048201426637, -0.30133495889682393, -0.2661820188383537,
-0.2501011853807178, -0.2332676738168722, -0.22018709593973895,
-0.20966764975484153, -0.20098304006991796, -0.193675612980865,
-0.1874101947531308, -0.1819699636663792, -0.1771874930147348,
-0.1729481943339799, -0.169158609722178, -0.16573386152507297,
-0.16263484856026622, -0.15816025409417023, -0.15725585726859492},
{-1.1558985455055613, -0.6287505952711054, -0.4354732807751063,
-0.3499246785675503, -0.3012777456457094, -0.266155669197051,
-0.25006137898862946, -0.23323322109270705, -0.22015660920364866,
-0.209640196639306, -0.2009579947103397, -0.19365251823185048,
-0.18738871814992564, -0.18194985161933275, -0.17716854867065024,
-0.17293026071667228, -0.1691415606131983, -0.16571759453544033,
-0.16261927557158273, -0.15814597265985597, -0.15724150867755426},
{-1.1556116134866166, -0.6285577336972015, -0.4353618981203802,
-0.3498489347784499, -0.30122058268964125, -0.266129533600882,
-0.2500216137525051, -0.23319880645882662, -0.22012615834799476,
-0.20961277774460285, -0.20093298213211241, -0.19362945508115814,
-0.18736727213050486, -0.18192976929280036, -0.17714963329618527,
-0.17291235543290284, -0.16912453927881543, -0.16570135478167813,
-0.1626037293209528, -0.15813171730658837, -0.15722718567126392},
{-1.1553245090847852, -0.6283649568368439, -0.43525059097137486,
-0.349773250675927, -0.30116347006362076, -0.2661036092402149,
-0.24998188971280655, -0.23316442995732345, -0.22009574341474192,
-0.20958539311576985, -0.20090800237900552, -0.19360642357429825,
-0.18734585673969661, -0.1819097167323882, -0.17713074693457642,
-0.17289447852878936, -0.16910754576507614, -0.16568514230725384,
-0.16258820985460076, -0.15811748807637827, -0.1572128882977708},
{-1.155037232969402, -0.6281722647808383, -0.435139359351119,
-0.34969762628988477, -0.3011064078027985, -0.2660778932779593,
-0.2499422069135413, -0.23313009163173604, -0.2200653644497308,
-0.20955804280096402, -0.20088305549825947, -0.19358342375799253,
-0.18732447202558333, -0.1818896939847292, -0.1771118896351247,
-0.17287663005217624, -0.16909058011770028, -0.16566895715985552,
-0.16257271721761413, -0.15810328501344983, -0.15719861660547352},
{-1.1547497858087432, -0.6279796576198091, -0.43502820328328795,
-0.34962206164950516, -0.30104939594231084, -0.2660523828527239,
-0.24990256539569344, -0.23309579152630633, -0.22003502149633647,
-0.2095307268453297, -0.2008581415353774, -0.19356045567839786,
-0.18730311803379607, -0.181869701096268, -0.1770930614424735,
-0.17285881004975678, -0.16907364238427647, -0.1656527993828547,
-0.16255725145645172, -0.15808910816212673, -0.15718437064458257},
{-1.1544621682695464, -0.6277871354447448, -0.43491712279141836,
-0.3495465567848264, -0.30099243451858726, -0.26602707508408585,
-0.24986296520303242, -0.23306152968450888, -0.22000471459996973,
-0.2095034452971163, -0.20083326053591932, -0.19353751938323782,
-0.1872817948132841, -0.18184973811416683, -0.1770742624039201,
-0.17284101857077516, -0.16905673261187104, -0.16563666902388618,
-0.16254181261618683, -0.1580749575651872, -0.15717015046488214},
{-1.1541743810178406, -0.6275946983461953, -0.43480611789919976,
-0.34947111172630585, -0.3009355235679507, -0.26600196706850454,
-0.24982340637784262, -0.23302730615069223, -0.21997444380610887,
-0.2094761982033546, -0.20080841254737436, -0.1935146149194047,
-0.1872605024106626, -0.18182980508508706, -0.17705549256783115,
-0.17282325566260326, -0.16903985084767115, -0.1656205661278065,
-0.1625264007441274, -0.15806083326845055, -0.15715595611566613},
{-1.1538864247178608, -0.6274023464150389, -0.43469518863119916,
-0.34939572650423756, -0.3008786631268201, -0.2659770558887935,
-0.24978388896321135, -0.23299312096905567, -0.21994420915887147,
-0.20944898561070957, -0.20078359761465236, -0.1934917423318936,
-0.18723924087196053, -0.18180990205542713, -0.17703675197970625,
-0.17280552137276572, -0.16902299713828128, -0.16560449074107453,
-0.16251101588587602, -0.15804673531485847, -0.15714178764646292},
{-1.1535983000330514, -0.6272100797412747, -0.4345843350102072,
-0.3493204011488018, -0.3008218532301079, -0.26595233860781065,
-0.24974441300224015, -0.23295897418326206, -0.21991401070442862,
-0.20942180756654594, -0.2007588157845639, -0.19346890166979946,
-0.18721801024629414, -0.1817900290725376, -0.17701804068701676,
-0.1727878157504108, -0.16900617153057595, -0.165588442909268,
-0.16249565808860567, -0.1580326637501841, -0.1571276451075576},
{-1.1533100076255849, -0.6270178984164083, -0.43447355706272006,
-0.34924513569249527, -0.3007650939162545, -0.2659278122774893,
-0.24970497854050677, -0.23292486584012195, -0.21988384848940967,
-0.20939466412011143, -0.20073406710515584, -0.19344609297975168,
-0.1871968105804811, -0.18177018618436236, -0.17699935873862316,
-0.17277013884382342, -0.1689893740731101, -0.1655724226799613,
-0.16248032739989426, -0.1580186186193835, -0.15711352854963323},
{-1.1530215481566266, -0.6268258025304831, -0.43436285481289616,
-0.34916993016520337, -0.300708385222098, -0.26590347393715064,
-0.24966558562019614, -0.23289079598326623, -0.21985372255934976,
-0.20936755531822726, -0.20070935162246428, -0.19342331630904397,
-0.18717564192244396, -0.18175037343879907, -0.17698070618152784,
-0.1727524907024609, -0.16897260481361442, -0.16555643009919407,
-0.1624650238658205, -0.15800459996833638, -0.15709943802331594},
{-1.1527329222854146, -0.6266337921739105, -0.43425222828516397,
-0.34909478459880816, -0.3006517271848921, -0.2658793206137595,
-0.24962623428624298, -0.23285676465847516, -0.21982363296153906,
-0.20934048120806992, -0.20068466938383978, -0.1934005717047924,
-0.18715450432024383, -0.18173059088252685, -0.17696208306463745,
-0.17273487137513754, -0.16895586379937555, -0.16554046521363475,
-0.16244974753439578, -0.1579906078421871, -0.15708537357777885},
{-1.1524441306710784, -0.6264418674373537, -0.4341416775053446,
-0.3490196990254546, -0.3005951198422707, -0.2658553493288558,
-0.24958692458266185, -0.23282277191126965, -0.21979357974210956,
-0.20931344183888, -0.20066002043576248, -0.19337785921492312,
-0.18713339782099325, -0.18171083856432801, -0.17694348943569693,
-0.17271728091089145, -0.16893915107832314, -0.16552452807104956,
-0.1624344984541004, -0.15797664228742292, -0.1570713352654174},
{-1.1521551739707032, -0.6262500284109915, -0.4340312024984172,
-0.3489446734767121, -0.3005385632311217, -0.26583155709455397,
-0.24954765655405708, -0.23278881778663063, -0.219763562948188,
-0.20928643725882523, -0.20063540482637876, -0.19335517888613296,
-0.18711232247351006, -0.1816911165319972, -0.17692492534307647,
-0.17269971935905204, -0.16892246669884514, -0.16550861871726852,
-0.16241927666974476, -0.15796270334890394, -0.15705732313593757},
{-1.151866052840555, -0.6260582751850663, -0.43392080329014604,
-0.34886970798504535, -0.3004820573898783, -0.2658079409174299,
-0.2495084302457542, -0.23275490233148943, -0.2197335826271143,
-0.20925946751593472, -0.2006108226029255, -0.1933325307675915,
-0.18709127832539352, -0.18167142483360266, -0.17690639083624404,
-0.17268218676942126, -0.16890581070872912, -0.1654927372008892,
-0.1624040822339481, -0.15794879107244952, -0.15704333724055886},
{-1.1515767679357758, -0.6258666078500905, -0.4338104799061533,
-0.3487948025824714, -0.30042560235697735, -0.26578449780238245,
-0.24946924570197737, -0.2327210255911858, -0.21970363882639532,
-0.2092325326586213, -0.20058627381291316, -0.1933099149049866,
-0.18707026542447025, -0.18165176351726586, -0.17688788596300498,
-0.17266468319136408, -0.1688891831557271, -0.16547688356862622,
-0.16238891518970178, -0.15793490549942746, -0.15702937762995361},
{-1.1512873199100664, -0.6256750264960278, -0.4337002323730452,
-0.3487199573025741, -0.3003691981711256, -0.26576122474956065,
-0.24943010296871648, -0.23268718761227092, -0.219673731594348,
-0.20920563273598702, -0.20056175850485047, -0.19328733134820908,
-0.18704928382003772, -0.18163213263166966, -0.17686941077379004,
-0.17264720867541428, -0.16887258408948824, -0.1654610578681428,
-0.16237377558922006, -0.1579210466664378, -0.15701544435604475},
{-1.1509977094161297, -0.6254835312132947, -0.4335900607166572,
-0.3486451721772177, -0.3003128448711294, -0.2657381187612202,
-0.2493910020903023, -0.23265338844165484, -0.21964386097855382,
-0.20917876779662947, -0.20053727672537036, -0.19326478014364668,
-0.18702833355901305, -0.18161253222501017, -0.1768509653169943,
-0.17262976327113932, -0.16885601355748747, -0.16544526014755334,
-0.16235866347990324, -0.15790721459816126, -0.15700153746989542},
{-1.1507079371057287, -0.625292122091972, -0.43347996496372687,
-0.34857044724140707, -0.30025654249491396, -0.2657151768387713,
-0.24935194311368747, -0.23261962812577153, -0.21961402702793364,
-0.20915193788957964, -0.20051282852406516, -0.19324226134063593,
-0.1870074146915961, -0.18159296234753697, -0.176832549642981,
-0.1726123470302383, -0.16883947160993884, -0.16542949045555133,
-0.1623435789103418, -0.157893409306066, -0.15698765702171258},
{-1.1504180036290634, -0.6251007992221975, -0.4333699451411164,
-0.3484957825271344, -0.3002002910829731, -0.265692395984761,
-0.2493129260844107, -0.2325859067120959, -0.21958422979133374,
-0.20912514306427354, -0.2004884139486265, -0.19321977498695375,
-0.18698652726558862, -0.18157342304739288, -0.17681416380154147,
-0.17259496000119867, -0.16882295829390515, -0.1654137488398213,
-0.16232852193050817, -0.15787963077884015, -0.15697380306437125},
{-1.1501279096353532, -0.6249095626937784, -0.433260001275638,
-0.3484211780689854, -0.30014409067397096, -0.26566977320782925,
-0.24927395104820604, -0.2325522242475344, -0.219554469316666,
-0.20909838336968178, -0.200464033047961, -0.19319732113126875,
-0.1869656713301211, -0.18155391437349877, -0.17679580784307802,
-0.17257760223694518, -0.16880647365998058, -0.16539803534936226,
-0.1623134925882468, -0.15786587898458038, -0.15695997564864328},
{-1.1498376557727497, -0.6247184125969998, -0.4331501333944914,
-0.3483466339005936, -0.3000879413084654, -0.2656473055180193,
-0.2492350180513334, -0.23251858077959398, -0.21952474565427238,
-0.20907165885510182, -0.20043968587017602, -0.1931748998213081,
-0.18694484693388347, -0.181534436375415, -0.17677748181726116,
-0.17256027378650884, -0.168790017756006, -0.1653823500323952,
-0.16229849093374682, -0.15785215387866458, -0.15694617482559536},
{-1.149547242688067, -0.6245273490217365, -0.4330403415253805,
-0.34827215005659085, -0.3000318430258915, -0.2656249899357519,
-0.24919612714027295, -0.2324849763565986, -0.21949505885320875,
-0.2090449695702965, -0.2004153724649349, -0.1931525111066854,
-0.18692405412670254, -0.1815149891032135, -0.17675918577572602,
-0.17254297470240942, -0.1687735906330694, -0.16536669293833484,
-0.16228351701828814, -0.15783845542498298, -0.15693240064891611},
{-1.1492566710271674, -0.6243363720581137, -0.4329306256958567,
-0.34819772657169423, -0.29997579586650147, -0.2656028234853878,
-0.24915727836177481, -0.23245141102565725, -0.219465408962769,
-0.2090183155654941, -0.20039109288087076, -0.19313015503567854,
-0.186903292958025, -0.18149557260600702, -0.1767409197682568,
-0.1725257050350706, -0.16875719233880915, -0.16535106411643596,
-0.16226857088846813, -0.1578247836352915, -0.15691865316754416},
{-1.1489659414344509, -0.6241454817959262, -0.4328209859338621,
-0.34812336348030115, -0.299919799870743, -0.2655808031999882,
-0.24911847176348445, -0.23241788483583292, -0.21943579603318852,
-0.2089916968897505, -0.20036684716746578, -0.1931078316576169,
-0.18688256347708432, -0.18147618693483736, -0.176722683846684,
-0.1725084648362234, -0.16874082292424575, -0.16533546361623763,
-0.162253652597947, -0.1578111386364256, -0.15690493243616288},
{-1.1486750545537046, -0.6239546783250667, -0.43271142226732806,
-0.34804906081800624, -0.2998638550795256, -0.26555892612477194,
-0.24907970739098317, -0.2323843978346396, -0.21940622011381095,
-0.20896511359313052, -0.2003426353730795, -0.19308554102100572,
-0.18686186573239283, -0.18145683213813513, -0.17670447806133893,
-0.1724912541568422, -0.16872448243835692, -0.16531989148695558,
-0.1622387621942103, -0.1577975207595621, -0.1568912385044925},
{-1.1483840110271384, -0.6237639617351896, -0.4326019347250778,
-0.3479748186194662, -0.2998079615343556, -0.2655371893129086,
-0.24904098529318475, -0.23235095007153816, -0.21937668125692866,
-0.2089385657266014, -0.20031845754991906, -0.19306328317620824,
-0.18684119977655556, -0.18143750826767047, -0.17668630246537376,
-0.1724740730501395, -0.1687081709313354, -0.16530434777983416,
-0.1622238997291845, -0.15778393065945906, -0.15687757142565673},
{-1.1480928114959852, -0.6235733321163277, -0.4324925233350214,
-0.34790063692111417, -0.29975211927561674, -0.26551558983191015,
-0.24900230551526903, -0.23231754159513684, -0.2193471795107449,
-0.20891205333927587, -0.2002943137448696, -0.19304105817174388,
-0.18682056565768335, -0.18141821537282965, -0.17666815710958517,
-0.172456921566301, -0.16869188845353733, -0.16528883254241578,
-0.16220906525333234, -0.15777036944749767, -0.15686393125210785},
{-1.1478014566000994, -0.6233827895578496, -0.43238318812674237,
-0.34782651575841683, -0.29969632834523097, -0.2654941247609415,
-0.24896366810666137, -0.2322841724542286, -0.21931771492809204,
-0.20888557648299866, -0.20027020400932471, -0.19301886605751406,
-0.1867999634272195, -0.18139895350491386, -0.176650042045857,
-0.17243979975806667, -0.16867563505455507, -0.16527334582765008,
-0.1621942588174612, -0.15775683884183422, -0.15685031803544192},
{-1.1475099469786567, -0.6231923341499979, -0.43227392912889684,
-0.3477524551671749, -0.2996405887846514, -0.26547279119176537,
-0.24892507311508538, -0.23225084269838092, -0.2192882875579727,
-0.20885913520687893, -0.20024612839374356, -0.1929967068833207,
-0.18677939313527858, -0.1813797227151035, -0.17663195732661308,
-0.17242270767745893, -0.16865941078518532, -0.1652578876844899,
-0.1621794804729575, -0.15774334131054246, -0.15683673182751434},
{-1.1472182832695133, -0.6230019659821693, -0.4321647463710363,
-0.3476784551844361, -0.29958490063657806, -0.2654515862343274,
-0.24888652058806926, -0.23221755237749875, -0.21925889745331872,
-0.20883272956250565, -0.20022208694787835, -0.1929745806995129,
-0.1867588548329806, -0.18136052305459316, -0.17661390300422042,
-0.1724056453776548, -0.1686432156960116, -0.16524245816429683,
-0.16216473027062506, -0.1577298802151681, -0.15682317268258572},
{-1.146926466109269, -0.622811685144276, -0.4320556398827442,
-0.34760451584635277, -0.29952926394310353, -0.2654305070104961,
-0.24884801057404005, -0.23218430154122416, -0.21922954466505473,
-0.2088063596013967, -0.20019807972290593, -0.1929524875567168,
-0.18673834857210636, -0.1813413545746414, -0.17659587913253105,
-0.1723886129106269, -0.16862704983823207, -0.16522705731876286,
-0.16215000826261416, -0.15771645992359495, -0.15680964065174763},
{-1.1466344961335082, -0.622621491726008, -0.4319466096933162,
-0.34753063719007216, -0.29947367874638786, -0.2654095506625289,
-0.24880954312026304, -0.23215109023984226, -0.2192002292437607,
-0.20878002537297746, -0.20017410676859626, -0.19293042750328127,
-0.18671787440289833, -0.18132221732601295, -0.17657788576353894,
-0.17237161032844028, -0.1686109132614675, -0.16521168519786045,
-0.16213531449992757, -0.15770308589432602, -0.15679613578777563},
{-1.1463423739767418, -0.6224313858168067, -0.4318376558338599,
-0.34745681925347327, -0.29941814508994113, -0.2653887143487559,
-0.24877111827773746, -0.2321179185238833, -0.21917095124328156,
-0.20875372693126693, -0.20015016813746556, -0.19290840059321823,
-0.18669743237953185, -0.18130311136308563, -0.17655992295090428,
-0.17235463768609094, -0.16859480601921462, -0.1651963418552711,
-0.162120649035856, -0.15768976473209761, -0.1567826581443974},
{-1.14605010027217, -0.6222413675059801, -0.43172877833330503,
-0.34738306207252023, -0.2993626630156392, -0.26536799524275523,
-0.24873273609309265, -0.23208478644290054, -0.21914171071338018,
-0.20872746432463174, -0.20012626387899957, -0.19288640687441472,
-0.18667702255048368, -0.1812840367353168, -0.17654199074735288,
-0.17233769503322804, -0.16857872815973352, -0.16518102733951423,
-0.1621060119205353, -0.15767650419287804, -0.15676920777255532},
{-1.1457576756523213, -0.6220514368833037, -0.4316199772227485,
-0.3473093656855184, -0.2993072325673296, -0.26534739054291734,
-0.24869439661575043, -0.23205169404844028, -0.21911250770723,
-0.20870123760597892, -0.20010239404592411, -0.19286444639902456,
-0.1866566449691902, -0.1812649934960504, -0.17652408920664442,
-0.17232078242500037, -0.16856267973562566, -0.1651657417048753,
-0.16209140320687965, -0.1576633131628391, -0.15675578472488993},
{-1.145465100747952, -0.6218615940383838, -0.431511252532939,
-0.34723573013051023, -0.29925185378920816, -0.26532689746224136,
-0.24865609989500825, -0.2320186413912424, -0.2190833422773366,
-0.20867504682729532, -0.2000785586890821, -0.19284251921844842,
-0.1866362996890807, -0.18124598169752204, -0.17650621838334501,
-0.172303899914116, -0.16854666079855463, -0.16515048500224339,
-0.1620768229475793, -0.1576502015917498, -0.15674238905494775},
{-1.1451723761894446, -0.6216718390607738, -0.43140260429500543,
-0.3471621554458615, -0.2991965267247316, -0.26530651323855636,
-0.24861784598003211, -0.23198562852295979, -0.21905421447598528,
-0.2086488920401557, -0.20005475786031823, -0.19282062538438538,
-0.1866159867615842, -0.18122700139293713, -0.1764883783316833,
-0.1722870475542173, -0.1685306714004291, -0.16513525728512235,
-0.1620622711953743, -0.1576371803960228, -0.15672902081564288},
{-1.14487950260561, -0.6214821720397179, -0.43129403253985643,
-0.3470886416698491, -0.29914125141713654, -0.26528623512834315,
-0.2485796349200733, -0.23195265549498245, -0.21902512435629617,
-0.20862277329669965, -0.20003099161155902, -0.1927987649484315,
-0.18659570624074817, -0.18120805263501794, -0.17647056910550418,
-0.17227022539817582, -0.16851471159281672, -0.1651200586056376,
-0.16204774800192823, -0.1576242613341705, -0.15671568005889114},
{-1.1445864806242554, -0.6212925930650854, -0.4311855372992852,
-0.3470151888414037, -0.2990860279119545, -0.26526606041039,
-0.24854146676629796, -0.23191972235919067, -0.2189960719706825,
-0.20859669064993724, -0.20000725999585356, -0.19277693796361461,
-0.18657545817941923, -0.18118913547826665, -0.17645279076010922,
-0.17225343350103017, -0.16849878142806318, -0.1651048890163409,
-0.16203325342296893, -0.1576114568644087, -0.15670236683898509},
{-1.1442933108723086, -0.6211031022258684, -0.4310771186047191,
-0.34694179699897987, -0.29903085625311476, -0.26524598638672714,
-0.24850334156676013, -0.23188682916750736, -0.21896705737256994,
-0.20857064415145743, -0.1999835630643041, -0.19275514448117193,
-0.18655524263061096, -0.18117024997440012, -0.17643504334886373,
-0.17223667191490932, -0.16848288095846797, -0.1650897485710381,
-0.16201878750864296, -0.15759877997927418, -0.15668908120763803},
{-1.1439999939752106, -0.6209136996116982, -0.43096877648837406,
-0.3468684661825385, -0.2989757364860779, -0.2652260103809283,
-0.2484652593725265, -0.23185397597201884, -0.21893808061538067,
-0.20854463385443722, -0.19995990087152293, -0.1927333845548631,
-0.1865350596487545, -0.18115139617794895, -0.17641732692939271,
-0.17221994069458546, -0.168467010236391, -0.16507463732254735,
-0.1620043503146782, -0.15758624404626076, -0.15667582321821527},
{-1.143706530557525, -0.6207243853120197, -0.4308605109820789,
-0.3467951964309606, -0.2989206686558994, -0.26520612974261226,
-0.24842722023270625, -0.23182116282539766, -0.21890914175209275,
-0.20851865981132534, -0.19993627346837783, -0.1927116582365329,
-0.1865149092868883, -0.18113257414289308, -0.17639964155537413,
-0.17220323989378983, -0.16845116931465398, -0.1650595553242411,
-0.16198994189319293, -0.1575738626257852, -0.15666259292394003},
{-1.1434129212431063, -0.6205351594162565, -0.4307523221187637,
-0.3467219877848322, -0.29886565280714805, -0.26518634184435186,
-0.2483892241990162, -0.2317883897803732, -0.218880240836949,
-0.20849272207627223, -0.1999126809092111, -0.19268996558131946,
-0.18649479160124116, -0.18111378392375244, -0.1763819872830723,
-0.172186569568197, -0.16843535824657607, -0.16504450263121484,
-0.16197556229817067, -0.15756164930891714, -0.15664939037883485},
{-1.1431191666539355, -0.6203460220134716, -0.4306442099308079,
-0.3466488402834358, -0.29881068898646035, -0.2651666440821643,
-0.24835127132170953, -0.23175565689041377, -0.21885137792372333,
-0.2084668207016911, -0.1998891232470008, -0.19266830664189882,
-0.1864747066442618, -0.18109502557511448, -0.1763643641677355,
-0.17216992977011714, -0.16841957708381372, -0.16502947929561174,
-0.16196121158483479, -0.1575496175482911, -0.1566362156359169},
{-1.1428252674116113, -0.6201569731933514, -0.4305361744511238,
-0.34657575396737883, -0.2987557772391902, -0.26514703388026817,
-0.24831336165118856, -0.23172296420779404, -0.21882255306585208,
-0.2084409557410929, -0.19986560053529345, -0.1926466814719774,
-0.18645465447137255, -0.18107629915134282, -0.17634677226631368,
-0.1721533205554806, -0.1684038258815974, -0.16501448537389862,
-0.16194688980648664, -0.15753778050623168, -0.1566230687487682},
{-1.142531224136265, -0.619968013045078, -0.43042821571307854,
-0.34650272887732925, -0.2987009176122548, -0.26512750868413804,
-0.24827549523862658, -0.23169031178686694, -0.21879376631886416,
-0.2084151272483723, -0.19984211282854503, -0.19262509012642326,
-0.18643463513767955, -0.18105760470716703, -0.17632921163471593,
-0.17213674197822115, -0.16838810469273469, -0.16499952091858816,
-0.161932597017298, -0.15752615091220434, -0.15660994977092102},
{-1.1422370374471296, -0.6197791416579399, -0.43032033374999656,
-0.3464297650538306, -0.2986461101513953, -0.265108065970054,
-0.2482376721343904, -0.23165769968093386, -0.21876501773590462,
-0.20838933527723924, -0.19981866018002137, -0.1926035326600335,
-0.1864146486990812, -0.18103894229809114, -0.17631168232979988,
-0.17212019409333124, -0.16837241357121968, -0.16498458598510268,
-0.16191833327363625, -0.15751474093346118, -0.1565968587577551},
{-1.141942707962544, -0.6195903591214744, -0.430212528595721,
-0.34635686253844256, -0.29859135490358213, -0.2650887032375664,
-0.24819989239079732, -0.23162512794383971, -0.2187363073718842,
-0.2083635798827288, -0.19979524264549298, -0.19258200912766554,
-0.1863946952102573, -0.18102031197960144, -0.1762941844077197,
-0.1721036769564961, -0.1683567525701406, -0.16496968062932993,
-0.16190409862801047, -0.1575035620643277, -0.15658379576180081},
{-1.1416482362992717, -0.6194016655247161, -0.4301048002840204,
-0.3462840213721847, -0.29853665191565426, -0.26506941801315165,
-0.24816215605960323, -0.23159259663021814, -0.2187076352815822,
-0.20833786111779773, -0.19977186027806582, -0.19256051958462095,
-0.18637477472707786, -0.18100171380779528, -0.1762767179265161,
-0.17208719062228894, -0.16834112174504057, -0.16495480490479508,
-0.16188989313729607, -0.15749262502496464, -0.1565707608400153},
{-1.1413536230734742, -0.6192130609570299, -0.42999714884900797,
-0.346211241596432, -0.2984820012348486, -0.2650502078526138,
-0.24812446319117498, -0.2315601057933776, -0.21867900151944042,
-0.20831217903735322, -0.1997485131324659, -0.1925390640862581,
-0.18635488730491545, -0.1809831478375763, -0.17625928294168958,
-0.17207073514507698, -0.16832552114950872, -0.16493995886795432,
-0.16187571685582114, -0.1574819396851126, -0.15655775404350436},
{-1.141058868900135, -0.619024545507866, -0.4298895743254043,
-0.3461385232538916, -0.29842740290956016, -0.26503107033557427,
-0.24808681383825615, -0.23152765548952203, -0.21865040614225606,
-0.20828653369669325, -0.1997252012662578, -0.19251764269026594,
-0.1863350330020701, -0.1809646141260579, -0.17624187951307135,
-0.17205431058222587, -0.16830995083919476, -0.16492514257437918,
-0.16186156983976474, -0.15747151499745016, -0.15654477543153433},
{-1.1407639743932805, -0.6188361192662342, -0.4297820767475713,
-0.34606586638595616, -0.298372856986699, -0.2650120030734193,
-0.24804920805167185, -0.2314952457726953, -0.21862184920340155,
-0.20826092514971606, -0.19970192473237702, -0.1924962554511218,
-0.1863152118722624, -0.18094611272803007, -0.1762245076965705,
-0.17203791698752013, -0.16829441086809283, -0.16491035607946714,
-0.16184745214491159, -0.15746135894668, -0.156531825056355},
{-1.1404689401653805, -0.6186477823214922, -0.42967465615060974,
-0.3459932710357805, -0.29831836351491603, -0.26499300370322487,
-0.24801164588536295, -0.2314628766984228, -0.21859333075947873,
-0.2082353534530661, -0.19967868358843077, -0.19247490242711507,
-0.18629542397391674, -0.1809276437020415, -0.17620716755105192,
-0.17202155441776412, -0.1682789012919983, -0.1648955994399195,
-0.16183336382604097, -0.1574514785177712, -0.15651890297398197},
{-1.1401737668285161, -0.6184595347629873, -0.4295673125697732,
-0.3459207372451374, -0.2982639225414907, -0.2649740698892451,
-0.2479741273902505, -0.23143054832163656, -0.21856485086502886,
-0.20820981866016197, -0.19965547788883242, -0.19245358367358278,
-0.18627566936255135, -0.18090920710375258, -0.17618985913327734,
-0.17200522292760212, -0.16826342216557322, -0.16488087271085305,
-0.1618193049397476, -0.15744187967113632, -0.15650600923984825},
{-1.139878454993438, -0.6182713766797221, -0.429460046040532,
-0.34584826505763644, -0.29820953411597273, -0.2649551993281527,
-0.24793665262003728, -0.23139826069853342, -0.2185364095771405,
-0.20818432082826632, -0.19963230769125317, -0.19243229925016792,
-0.1862559480970063, -0.18089080299113292, -0.1761725825037317,
-0.17198892257471243, -0.1682479735463609, -0.16486617594956599,
-0.16180527554348245, -0.15743256733787092, -0.15649314391037095},
{-1.1395830052697704, -0.6180833081613422, -0.4293528565986513,
-0.3457758545165319, -0.29815519828762405, -0.2649363897399404,
-0.24789922162662137, -0.23136601388488742, -0.21850800695138162,
-0.20815886001260253, -0.19960917305256487, -0.19241104921358954,
-0.1862362602330876, -0.18087243142093, -0.17615533771910208,
-0.1719726534151853, -0.16823255548859706, -0.1648515092132925,
-0.16179127569371587, -0.1574235454165951, -0.1564803070414449},
{-1.139287418266326, -0.6178953292969815, -0.42924574427988915,
-0.3457035056651634, -0.2981009151049143, -0.2649176388784227,
-0.24786183446243726, -0.23133380793706593, -0.21847964304323853,
-0.2081334362686782, -0.19958607402842077, -0.1923898336211316,
-0.1862166058284771, -0.18085409245010808, -0.17613812483955016,
-0.1719564155033808, -0.16821716804889775, -0.16483687255699664,
-0.1617773054458027, -0.1574148167911531, -0.15646749868720278},
{-1.138991694590782, -0.617707440175586, -0.42913870912048324,
-0.3456312185472683, -0.2980466846173506, -0.2648989445241554,
-0.24782449118147554, -0.23130164291146116, -0.21845131791032557,
-0.2081080496530241, -0.199563010677398, -0.192368652533073,
-0.1861969849423062, -0.1808357861380827, -0.17612094392281108,
-0.1719402088976345, -0.1682018112847956, -0.16482226604079386,
-0.16176336485824905, -0.15740638334983714, -0.1564547189051595},
{-1.1386958348494751, -0.6175196408868011, -0.42903175115711534,
-0.3455589932070282, -0.2979925068743974, -0.2648803044857466,
-0.2477871918370056, -0.23126951886490943, -0.21842303160800824,
-0.20808270022196496, -0.1995399830565674, -0.19234750600643835,
-0.18617739763055852, -0.1808175125419318, -0.1761037950286628,
-0.17192403365372755, -0.16818648525087454, -0.16480768971898385,
-0.16174945398598695, -0.15739824601171293, -0.1564419677503217},
{-1.1383998396482244, -0.6173319315196224, -0.42892487042638194,
-0.3454868296881841, -0.2979383819263681, -0.2648617166045817,
-0.2477499364818634, -0.23123743585452772, -0.21839478419381209,
-0.20805738803265328, -0.19951699122427158, -0.1923263941012685,
-0.18615784395246493, -0.18079927172032484, -0.17608667821605195,
-0.1719078898287023, -0.16817119000615577, -0.16479314365109232,
-0.16173557288890805, -0.1573904047659056, -0.15642924527860558},
{-1.1381037095915492, -0.6171443121633686, -0.42881806696549774,
-0.34541472803640616, -0.29788430982404535, -0.26484317874691854,
-0.24771272517032372, -0.23120539393768524, -0.2183665757247475,
-0.20803211314122194, -0.19949403523916232, -0.19230531687592034,
-0.18613832396553676, -0.18078106373202374, -0.17606959354572282,
-0.17189177748014828, -0.16815592560670467, -0.16477862789302478,
-0.16172172162331933, -0.15738285871041313, -0.15641655154593792},
{-1.137807445283153, -0.6169567829075824, -0.42871134081165607,
-0.3453426882958901, -0.29783029061742994, -0.2648246888130785,
-0.24767555795514085, -0.23117339317190044, -0.2183384062574163,
-0.20800687560541675, -0.19947111515875804, -0.19228427439076867,
-0.1861188377294809, -0.18076288863553103, -0.1760525410760927,
-0.17187569666464952, -0.16814069211046956, -0.1647641425041897,
-0.16170790024756698, -0.1573756060935061, -0.1564038866077766},
{-1.1375110473254466, -0.6167693438411348, -0.4286046920022848,
-0.3452707105118584, -0.29777632435713386, -0.26480624473035874,
-0.24763843489109405, -0.23114143361531703, -0.2183102758494897,
-0.20798167548183955, -0.19944823104314224, -0.19226326670478855,
-0.18609938530138947, -0.18074474649037597, -0.1760355208671811,
-0.17185964743860893, -0.16812548957486229, -0.16474968754245722,
-0.16169410881786206, -0.15736864436707165, -0.1563912505210432},
{-1.137214516319741, -0.6165819950533589, -0.428498120575032,
-0.34519879472991377, -0.29772241109452935, -0.26478784445575343,
-0.2476013560328525, -0.23110951532622792, -0.2182821845583156,
-0.20795651282934813, -0.1994253829517696, -0.19224229387929626,
-0.1860799667415023, -0.18072663735661365, -0.17601853297994552,
-0.17184362986117563, -0.16811031805795196, -0.16473526306601016,
-0.16168034739516912, -0.15736197023531062, -0.15637864334100016},
{-1.1369178528669917, -0.6163947366337226, -0.42839162656824925,
-0.3451269409952964, -0.29766855088035626, -0.264769485977034,
-0.24756432143338714, -0.23107763836288697, -0.21825413244158653,
-0.20793138770465092, -0.1994025709438425, -0.19222135597345158,
-0.18606058210766108, -0.18070856129219592, -0.17600157747292045,
-0.17182764398892658, -0.16809517761781123, -0.1647208691329496,
-0.16166661603505972, -0.15735557970149472, -0.15636606512071793},
{-1.1366210575663303, -0.6162075686714914, -0.42828521002039466,
-0.3450551493543905, -0.2976147437677632, -0.26475116731020165,
-0.24752733114872782, -0.2310458027843154, -0.21822611955795423,
-0.20790630016580636, -0.19937979508029002, -0.19220045304813738,
-0.18604123146041118, -0.1806905183587766, -0.1759846544081327,
-0.17181168988022222, -0.16808006831293199, -0.164706505801675,
-0.1616529147985304, -0.15734946813121198, -0.15635351591974},
{-1.1363241310161705, -0.6160204912557532, -0.4281788709693046,
-0.3449834198530297, -0.2975609898076996, -0.26473288650313265,
-0.2474903852316892, -0.2310140086501491, -0.21819814596380738,
-0.20788125027188187, -0.19935705542033944, -0.19217958516323463,
-0.18602191485779684, -0.18067250861493633, -0.17596776384558765,
-0.17179576759170345, -0.16806499020176702, -0.16469217313235518,
-0.16163924374153282, -0.15734363029696397, -0.15634099579090943},
{-1.1360270738145068, -0.6158335044762175, -0.4280726094546772,
-0.3449117525387244, -0.29750728905182555, -0.26471464163247305,
-0.24745348373822296, -0.2309822560191428, -0.21817021171935025,
-0.20785623808078313, -0.1993343520258648, -0.1921587523813031,
-0.1860026323610775, -0.1806545321230395, -0.17595090584604733,
-0.1717798771844592, -0.16804994334484746, -0.16467787118403265,
-0.16162560292548633, -0.1573380604364374, -0.1563285047910128},
{-1.135729886557371, -0.6156466084221321, -0.42796642551536834,
-0.34484014745757463, -0.2974536415536839, -0.2646964308035038,
-0.24741662672414222, -0.23095054495215805, -0.2181423168821972,
-0.20783126365200744, -0.19931168495702067, -0.19213795476195372,
-0.1859833840289582, -0.18063658894301682, -0.17593408047109094,
-0.171764018714196, -0.168034927799372, -0.1646636000159809,
-0.1616119924084387, -0.15733275230246235, -0.15631604297581703},
{-1.1354325698403542, -0.6154598031823966, -0.42786031919057166,
-0.34476860465613157, -0.2974000473652829, -0.26467825215380003,
-0.24737981424408773, -0.2309188755084719, -0.21811446151129132,
-0.20780632704424917, -0.19928905427653376, -0.19211719236698244,
-0.18596416992124176, -0.18061867913632668, -0.17591728778133842,
-0.17174819224064564, -0.16801994362635142, -0.16464935968794236,
-0.16159841224957816, -0.15732769921536516, -0.15630361040031104},
{-1.135135124258035, -0.6152730888468128, -0.4277542905198324,
-0.34469712418240306, -0.2973465065405918, -0.2646601038466905,
-0.24734304635298443, -0.23088724774886416, -0.21808664566574976,
-0.2077814283166184, -0.19926646004502757, -0.19209646525769486,
-0.18594499009815024, -0.18060080276257295, -0.1759005278366459,
-0.171732397821156, -0.16800499088378018, -0.1646351502587926,
-0.1615848625088674, -0.1573228941120668, -0.15629120711950506},
{-1.1348375504039545, -0.6150864655045751, -0.4276483395435484,
-0.3446257060843152, -0.2972930191319101, -0.2646419840797982,
-0.2473063231060877, -0.23085566173453032, -0.21805886940401464,
-0.20775656752901384, -0.19924390232557343, -0.19207577349519767,
-0.18592584462065886, -0.18058295988614503, -0.17588380070034404,
-0.17171663551699723, -0.16799006963359986, -0.1646209717893008,
-0.16157134324745925, -0.15731832960070946, -0.15627883319179148},
{-1.1345398488705811, -0.6148999332455887, -0.4275424663018974,
-0.34455435040931803, -0.2972395851936902, -0.26462389107767237,
-0.247269644560852, -0.2308241175265664, -0.21803113278632225,
-0.20773174474219758, -0.19922138118022303, -0.19205511714250179,
-0.18590673354906784, -0.180565150567233, -0.17586710643364611,
-0.1717009053859364, -0.1679751799351088, -0.16460682434069085,
-0.16155785452104254, -0.1573139979961411, -0.15626648867020876},
{-1.1342420202494736, -0.6147134921588027, -0.42743667083489356,
-0.344483057205899, -0.2971862047790914, -0.2646058230934045,
-0.2472330107724261, -0.23079261518640948, -0.21800343587192117,
-0.20770696001549993, -0.1991988966710494, -0.19203449625938163,
-0.1858876569443879, -0.18054737486785655, -0.1758504450980567,
-0.17168520748800375, -0.16796032184936038, -0.1645927079727727,
-0.16154439639420204, -0.157309891376066, -0.15625417361309601},
{-1.1339440651310753, -0.614527142333749, -0.42733095318346415,
-0.3444118265221334, -0.297132877942321, -0.26458777841314074,
-0.2471964217963496, -0.23076115477535097, -0.2179757787194916,
-0.20768221340896176, -0.19917644886029962, -0.19201391090907194,
-0.18586861486558348, -0.18052963285049017, -0.17583381675290966,
-0.17166954188131456, -0.1679454954357773, -0.16457862274514667,
-0.1615309689235147, -0.157306001613577, -0.1562418880738683},
{-1.1336459841051774, -0.6143408838599065, -0.42722531338867853,
-0.34434065840747863, -0.2970796047390891, -0.26456975534773974,
-0.24715987769037184, -0.23072973635730065, -0.21794816139150086,
-0.20765750498457436, -0.1991540378143739, -0.19199336115396903,
-0.18584960737666378, -0.1805119245795055, -0.17581722146556444,
-0.1716539086282154, -0.167930700756731, -0.16456456872131398,
-0.16151757217265228, -0.15730232042974635, -0.1562296321128258},
{-1.1333477777604628, -0.6141547168268424, -0.42711975149159187,
-0.34426955291037586, -0.29702638522264735, -0.26455175224147,
-0.2471233785090483, -0.23069835999332255, -0.21792058394565572,
-0.20763283480244965, -0.1991316635929472, -0.19197284705465734,
-0.18583063453737125, -0.1804942501147231, -0.17580065929398714,
-0.17163830778633127, -0.16791593787337433, -0.16455054596067242,
-0.1615042061991332, -0.15729883941448364, -0.15621740578156107},
{-1.1330494466842893, -0.6139686413242771, -0.42701426753425764,
-0.34419851008111735, -0.2969732194494483, -0.2645337674661583,
-0.2470869243110272, -0.23066702574744014, -0.2178930464443951,
-0.20760820292509408, -0.19910932626293842, -0.191952368674972,
-0.18581169640985706, -0.18047660952304057, -0.1757841303014871,
-0.17162273941802297, -0.16790120684656884, -0.1645365545256503,
-0.16149087106705906, -0.1572955500796418, -0.15620520914130154},
{-1.132750991463375, -0.6137826574414831, -0.4269088615579584,
-0.3441275299680271, -0.2969201074732126, -0.26451579942020587,
-0.24705051515236676, -0.23063573368206747, -0.2178655489461292,
-0.20758360941271192, -0.19908702588471172, -0.19193192607667342,
-0.18579279305354035, -0.18045900286436733, -0.17576763454969324,
-0.17160720358060644, -0.16788650773667158, -0.1645225944759332,
-0.1614775668326267, -0.15729244387822305, -0.1561930422453699},
{-1.1324524126836728, -0.6135967652682233, -0.4268035336053124,
-0.34405661262198706, -0.29686704935054564, -0.2644978465367771,
-0.24701415109120717, -0.23060448386161525, -0.21783809151393285,
-0.20755905432803345, -0.19906476252557326, -0.19191151932252026,
-0.18577392453390829, -0.1804414302058106, -0.1757511721033822,
-0.17159170033924198, -0.16787184060907734, -0.16450866587633683,
-0.16146429356275505, -0.15728951224810572, -0.15618090515343397},
{-1.1321537109296695, -0.613410964894328, -0.42669828371829865,
-0.3439857580929022, -0.29681404513768683, -0.2644799072705446,
-0.24697783218342906, -0.2305732763500039, -0.21781067420774747,
-0.20753453773420105, -0.19904253624888213, -0.1918911484752499,
-0.18575509091150977, -0.1804238916099088, -0.17573474302350434,
-0.17157622975182463, -0.1678572055240366, -0.1644947687867777,
-0.1614510513160461, -0.1572867466274026, -0.1561687979219073},
{-1.1318548867854545, -0.6132252564094607, -0.42659311193978056,
-0.34391496643173625, -0.2967610948903108, -0.2644619801105854,
-0.24694155848658994, -0.23054211121156598, -0.21778329708862287,
-0.20751005969176717, -0.19902034711828165, -0.19187081359597968,
-0.18573629224732002, -0.1804063871388415, -0.1757183473737065,
-0.17156079187923368, -0.16784260254310368, -0.16448090327031295,
-0.1614378401525478, -0.1572841384885706, -0.15615672060516772},
{-1.1315559408336142, -0.61303963990283, -0.4264880183124582,
-0.3438442376883053, -0.2967081986644011, -0.26444406357239103,
-0.24690533005986026, -0.23051098851123086, -0.2177559602193675,
-0.20748562026575001, -0.19899819519872253, -0.19185051475007953,
-0.18571752860735202, -0.18038891686139635, -0.1757019852168078,
-0.17154538678667208, -0.16782803173042637, -0.16446706939121114,
-0.1614246601364684, -0.1572816793651839, -0.15614467326379255},
{-1.1312568736560653, -0.6128541154646392, -0.4263830028796214,
-0.3437735719149764, -0.29665535651754027, -0.2644261561974872,
-0.24686914696039253, -0.23047990831386755, -0.21772866366086774,
-0.20746121951811958, -0.19897608055582694, -0.19183025199931336,
-0.1856988000520161, -0.18037148084060206, -0.17568565661553492,
-0.1715300145320917, -0.1678134931488735, -0.1644532672092076,
-0.16141151132915255, -0.15727936086567595, -0.15613265595267478},
{-1.1309576858339767, -0.6126686831846939, -0.4262780656847944,
-0.34370296916215537, -0.29660256850653255, -0.2644082565605288,
-0.24683300924629847, -0.2304488706851906, -0.21770140747566202,
-0.2074368575126293, -0.19895400325464863, -0.19181002540695857,
-0.1856801066446252, -0.18035407914122814, -0.17566936163375857,
-0.17151467517919627, -0.1677989868597436, -0.164439496787935,
-0.161398393792048, -0.15727717469843583, -0.15612066872922625},
{-1.1306583779470127, -0.6124833431529346, -0.42617320677195636,
-0.34363242948224837, -0.2965498346887756, -0.2643903632582614,
-0.2467969169758213, -0.23041787569206207, -0.21767419172574165,
-0.20741253431250684, -0.1989319633605504, -0.19178983503735836,
-0.18566144844949406, -0.18033671182933375, -0.1756531003353814,
-0.17149936879147631, -0.16778451292892171, -0.1644257581930404,
-0.16138530758936653, -0.15727511269387762, -0.1561087116533919},
{-1.1303589505744487, -0.6122980954590105, -0.4260684261850507,
-0.34356195292733815, -0.29649715512233143, -0.26437247492083316,
-0.24676087020791826, -0.23038692339922306, -0.21764701647398965,
-0.20738824998295868, -0.19890996093778313, -0.1917696809524898,
-0.18564282553005995, -0.1803193789696138, -0.1756368727841746,
-0.1714840954289052, -0.16777007141912748, -0.16441205148548121,
-0.16137225278017908, -0.15727316680693093, -0.15609678477822797},
{-1.1300594042944265, -0.6121129401930467, -0.42596372396821636,
-0.343491539548868, -0.2964445298642353, -0.264354590201588,
-0.24672486900077573, -0.23035601387419646, -0.21761988178265312,
-0.20736400458727644, -0.19888799605182328, -0.1917495632167423,
-0.18562423794923433, -0.18030208063009567, -0.1756206790421082,
-0.17146885515678179, -0.1677556623920431, -0.16439837672970725,
-0.16135922943062653, -0.15727132914573616, -0.15608488816435084},
{-1.1297597396839194, -0.6119278774450514, -0.4258591001661607,
-0.34342118940045196, -0.2963919589731958, -0.26433670778340357,
-0.24668891341493193, -0.2303251471843346, -0.21759278771588342,
-0.20733979819188875, -0.19886606877028257, -0.1917294818954005,
-0.18560568577336412, -0.18028481687638376, -0.17560451917553976,
-0.17145364803782215, -0.1677412859152163, -0.16438473398963183,
-0.16134623760229516, -0.1572695919793503, -0.1560730218697941},
{-1.1294599573194066, -0.6117429073048299, -0.42575455482387525,
-0.3433509025338388, -0.29633944250733535, -0.26431882637645643,
-0.24665300350792663, -0.23029432339554035, -0.21756573433578552,
-0.20731563085870164, -0.19884417915692154, -0.19170943704960663,
-0.1855871690639077, -0.18026758777300955, -0.17558839324668796,
-0.1714384741329873, -0.16772694204962235, -0.16437112332841153,
-0.16133327735738945, -0.1572679477434491, -0.1560611859465446},
{-1.1291600577760654, -0.6115580298626142, -0.42565008798646176,
-0.34328067900323234, -0.29628698052605174, -0.2643009447153659,
-0.24661713934013463, -0.23026354257648407, -0.21753872170668487,
-0.20729150265545115, -0.19882232727896465, -0.19168942874680184,
-0.18556868788831693, -0.18025039338959914, -0.17557230132013757,
-0.1714233335092068, -0.1677126308610255, -0.16435754481024745,
-0.1613203487604622, -0.15726638905712775, -0.1560493804577021},
{-1.1288600416282257, -0.6113732452088314, -0.42554569969921374,
-0.34321051886166387, -0.29623457308821344, -0.26428306156533665,
-0.2465813209695753, -0.2302328047951967, -0.21751174989184818,
-0.20726741364667944, -0.1988005132008368, -0.19166945704856175,
-0.18555024230875716, -0.1802332337904673, -0.1755562434609388,
-0.17140822622731733, -0.16769835241423792, -0.1643439985003532,
-0.16130745187527396, -0.15726490872373233, -0.1560376054568593},
{-1.1285599094496828, -0.6111885534335357, -0.42544139000811043,
-0.34314042216342244, -0.29618222025327867, -0.2642651757166483,
-0.24654554845930932, -0.23020211012059733, -0.2174848189573808,
-0.2072433638990816, -0.19877873699117998, -0.19164952202352836,
-0.18553183239423987, -0.18021610904599328, -0.1755402197344651,
-0.171393152354824, -0.1676841067756385, -0.16433048446521425,
-0.16129458676500263, -0.15726349974838527, -0.15602586100791882},
{-1.1282596618125673, -0.6110039546269377, -0.42533715895939395,
-0.34307038896249864, -0.29612992208075894, -0.2642472859836005,
-0.24650982186709314, -0.23017145862112542, -0.21745792896589577,
-0.20721935347841836, -0.19875699871444752, -0.1916296237327586,
-0.18551345820729992, -0.1801990192211278, -0.17552423020280727,
-0.17137811195368258, -0.16766989400718657, -0.16431700276538663,
-0.1612817534926485, -0.15726215532457033, -0.15601414716319795},
{-1.1279592992888077, -0.6108194488793544, -0.42523300659911456,
-0.34300041931263436, -0.29607767863043577, -0.2642293912113267,
-0.24647414125449174, -0.23014085036475862, -0.21743107998246813,
-0.2071953824500774, -0.19873529843780702, -0.19160976224491222,
-0.1854951198151582, -0.18018196438630696, -0.17550827493439058,
-0.1713631050911708, -0.1676557141773003, -0.1643035534699635,
-0.16126895212605064, -0.1572608688614494, -0.15600246398680184},
{-1.1276588224489146, -0.6106350362812236, -0.42512893297380216,
-0.3429305132692484, -0.29602548996331635, -0.2642114902646462,
-0.2464385066813044, -0.23011028542241263, -0.2174042720730931,
-0.2071714508819582, -0.19871363622763738, -0.1915899376230321,
-0.18547681728221477, -0.18016494460815125, -0.17549235399090435,
-0.17134813182913433, -0.16764156734936364, -0.1642901366403393,
-0.16125618272522146, -0.15725963396261733, -0.1559908115344797},
{-1.1273582318626758, -0.6104507169231113, -0.4250249381301643,
-0.3428606708874007, -0.295973356139136, -0.2641935820402175,
-0.24640291820858806, -0.230079763863003, -0.21737750530201083,
-0.20714755884092995, -0.19869201215119148, -0.19157014993429655,
-0.1854585506772395, -0.18014795995524224, -0.17547646744031908,
-0.17133319223568577, -0.16762745358978393, -0.1642767523445805,
-0.16124344535953838, -0.15725844445038462, -0.1559791898691003},
{-1.127057528099252, -0.6102664908957003, -0.4249210221163189,
-0.34279089222224, -0.29592127721971195, -0.2641756654567047,
-0.24636737589796098, -0.2300492857568024, -0.21735077973599815,
-0.2071237063940714, -0.19867042627452136, -0.1915503992445622,
-0.18544032006511912, -0.18013101049574232, -0.17546061534507373,
-0.1713182863746141, -0.16761337296505374, -0.1642634006469379,
-0.16123074008845606, -0.15725729435068558, -0.1559675990477345},
{-1.1267567117263813, -0.6100823582893895, -0.4248171849787319,
-0.3427211773295262, -0.29586925326520586, -0.2641577394583585,
-0.24633187981133275, -0.23001885117438547, -0.21732409544057418,
-0.20709989360904046, -0.19864887866419068, -0.19153068562059872,
-0.18542212551386683, -0.18011409630049258, -0.17544479777380673,
-0.17130341431440854, -0.16759932554390744, -0.1642500816162169,
-0.16121806698256336, -0.15725617790361923, -0.15595603913910594},
{-1.1264557833113518, -0.609898319194734, -0.424713426765738,
-0.3426515262647385, -0.2958172843369624, -0.2641398030157376,
-0.24629643000869805, -0.22998846018455765, -0.21729745248070387,
-0.2070761205523688, -0.19862736938750913, -0.19151100912828767,
-0.18540396708876372, -0.1800972174357547, -0.1754290147891524,
-0.17128857611709236, -0.16758531138738064, -0.164236795313478,
-0.16120542610227773, -0.15725508955389245, -0.15594451019843092},
{-1.126154743420141, -0.6097143737028006, -0.424609747525416,
-0.3425819390851288, -0.2957653704980032, -0.26412185512137754,
-0.2462610265540448, -0.229958112861123, -0.21727085092599552,
-0.2070523872939667, -0.1986058985128203, -0.19149136983652326,
-0.1853858448591943, -0.18008037397324372, -0.17541326645940813,
-0.17127377185352088, -0.16757133056726303, -0.1642235418096405,
-0.16119281751553416, -0.15725402396205368, -0.1559330122929623},
{-1.1258535926182738, -0.6095305219042615, -0.42450614730583425,
-0.3425124158464783, -0.2957135118093426, -0.26410389479559626,
-0.24622566950667135, -0.22992780927262757, -0.21724429084095576,
-0.20702869390095557, -0.19858446610596303, -0.1914717678098654,
-0.18536775889186075, -0.18006356598124285, -0.17539755284983727,
-0.1712590015869857, -0.16755738314824953, -0.1642103211681487,
-0.1611802412893084, -0.15725297599153976, -0.1559215454860876},
{-1.12555233146999, -0.609346763890283, -0.42440262615557955,
-0.3424429566062308, -0.2956617083341193, -0.2640859210811186,
-0.24619035893214303, -0.22989754949187713, -0.2172177722943971,
-0.20700504044309653, -0.1985630722353875, -0.19145220311769862,
-0.18534970925454886, -0.1800467935297334, -0.17538187402624317,
-0.17124426538649473, -0.16754346919813656, -0.16419713345578657,
-0.16116769748662563, -0.1572519407134081, -0.15591010984266518},
{-1.1252509605387164, -0.6091630997513455, -0.4242991841241377,
-0.3423735614214678, -0.29560996013346497, -0.26406793304338905,
-0.246155094891634, -0.22986733358988687, -0.21719129535186,
-0.20698142698715216, -0.1985417169683572, -0.19143267582798984,
-0.185331696015556, -0.18003005668929006, -0.17536623005529606,
-0.17122956331737527, -0.16752958878448254, -0.16418397874188173,
-0.16115518617577607, -0.15725091340495823, -0.1558987054306442},
{-1.1249494803873699, -0.6089795295790772, -0.4241958212607493,
-0.342304230349324, -0.29555826727156287, -0.2640499297767356,
-0.2461198774490292, -0.229837161639324, -0.21716486008352476,
-0.20695785360430463, -0.19852040037210372, -0.1914131860089583,
-0.1853137192449914, -0.18001335553029563, -0.1753506210044513,
-0.1712148954508308, -0.16751574197609642, -0.16417085708958012,
-0.16114270742448866, -0.15724988954318064, -0.1558873323135188},
{-1.1246478915774123, -0.6087960534645696, -0.42409253761454835,
-0.34223496344820603, -0.2955066298122304, -0.2640319103907771,
-0.24608470666696292, -0.22980703371201727, -0.21713846655759994,
-0.20693432036293657, -0.19849912251513047, -0.1913937337297824,
-0.18529577900982375, -0.17999669012341002, -0.17533504693915347,
-0.17120026185173742, -0.16750192883951343, -0.1641577685695168,
-0.16113026129606567, -0.1572488648007706, -0.15587599056231483},
{-1.124346194670057, -0.6086126714989852, -0.42398933323556776,
-0.3421657607766626, -0.29545504781779286, -0.26401387402558285,
-0.2460495826085456, -0.22977694987941533, -0.2171121148406101,
-0.20691082733286947, -0.19847788346470807, -0.19137431905616253,
-0.18527787537859197, -0.17998006053735693, -0.17531950792668027,
-0.17118566258827173, -0.16748814944293144, -0.1641447132467917,
-0.161117847859785, -0.15724783505015694, -0.15586468024410038},
{-1.1240443902247836, -0.608429383773256, -0.42388620817388656,
-0.34209662239185334, -0.29540352135261827, -0.263995819841746,
-0.2460145053388807, -0.2297469102152654, -0.2170858050039186,
-0.20688737458458917, -0.19845668328960997, -0.19135494206163983,
-0.1852600084240592, -0.17996346684618914, -0.17530400403535396,
-0.17117109773211325, -0.16747440385830004, -0.164131691191173,
-0.1611054671831127, -0.15724679635464156, -0.15585340143106663},
{-1.123742478801029, -0.6082461903794822, -0.4237831624800812,
-0.34202754835370897, -0.29535205048054536, -0.2639777470199327,
-0.24597947492190642, -0.22971691479102319, -0.2170595371153965,
-0.2068639621870183, -0.1984355220578813, -0.19133560281248307,
-0.18524217821171973, -0.17994690911889677, -0.17528853533082156,
-0.17115656734717533, -0.1674606921492412, -0.1641187024685138,
-0.16109311933055892, -0.15724574496596944, -0.15584215419221437},
{-1.1234404609571857, -0.6080630914089582, -0.4236801962047423,
-0.3419585387212294, -0.2953006352663152, -0.2639596547688541,
-0.24594449142239938, -0.229686963681214, -0.2170333112448155,
-0.20684059021142076, -0.1984143998392227, -0.19131630138020483,
-0.18522438481337034, -0.17993038742664424, -0.17527310188149414,
-0.1711420715048888, -0.1674470143881308, -0.16410574714736725,
-0.16108080437331296, -0.15724467732062664, -0.15583093859955},
{-1.1231383372502322, -0.60788008695339, -0.4235773093994375,
-0.3418895935538906, -0.2952492757748715, -0.2639415423122671,
-0.24590955490436883, -0.22965705695758132, -0.21700712746254425,
-0.20681725872803014, -0.19839331669958682, -0.19129703783402618,
-0.18520662829911316, -0.17991390184172928, -0.17525770375625882,
-0.17112761027436818, -0.16743337064304598, -0.16409282529651392,
-0.16106852237894032, -0.15724359003649369, -0.15581975472736076},
{-1.1228361082369176, -0.6076971771042743, -0.4234745021152726,
-0.34182071291149185, -0.29519797207148457, -0.2639234089023219,
-0.24587466543329128, -0.2296271946945332, -0.21698098583900105,
-0.20679396780751702, -0.1983722727108983, -0.19127781224418072,
-0.18518890873964722, -0.17989745243423272, -0.1752423410207058,
-0.1711131837249127, -0.16741976098463596, -0.16407993698336298,
-0.16105627341283224, -0.15724247990875995, -0.1558086026466583},
{-1.1225337744728936, -0.6075143619536654, -0.42337177440371576,
-0.3417518968542339, -0.29514672422084587, -0.26390525380928764,
-0.24583982307526853, -0.2295973769654438, -0.2169548864449311,
-0.20677071752129095, -0.19835126793962488, -0.19125862468153088,
-0.185171226205739, -0.17988103927960708, -0.17522701374578986,
-0.1710987919282303, -0.1674061854813118, -0.16406708227838607,
-0.16104405754494877, -0.15724134390595168, -0.15579748243500546},
{-1.1222313365129661, -0.607331641593408, -0.42326912631715174,
-0.3416831454423743, -0.2950955322891602, -0.26388707632481,
-0.2458050278961217, -0.22956760384331076, -0.21692882935137447,
-0.20674750794149688, -0.1983303024569345, -0.19123947521723395,
-0.18515358076862043, -0.17986466244703792, -0.1752117219974636,
-0.17108443494974068, -0.16739264420296962, -0.16405426124862288,
-0.16103187484372228, -0.15724017916487298, -0.15578639416528972},
{-1.1219287949109944, -0.6071490161154394, -0.423166557907777,
-0.34161445873626306, -0.2950443963415772, -0.2638688757636558,
-0.24577027996082634, -0.22953787540174275, -0.21690281462912253,
-0.20672433913687271, -0.19830937633050283, -0.19122036392254316,
-0.18513597249864233, -0.1798483220085103, -0.17519646584553072,
-0.17107011286393004, -0.16737913722042208, -0.16404147396419688,
-0.16101972538150022, -0.1572389829902079, -0.15577533791798714},
{-1.1216261502201128, -0.6069664856121122, -0.42306406922807227,
-0.3415458367979838, -0.2949933164457832, -0.26385065145736775,
-0.2457355793376692, -0.22950819171589032, -0.2168768423502101,
-0.2067012111814428, -0.19828848963170387, -0.19120129086908122,
-0.18511840146864955, -0.17983201803708937, -0.17518124535897783,
-0.17105582573898914, -0.1673656646028121, -0.16402872049344808,
-0.16100760922169854, -0.1572377528403166, -0.15576431376761946},
{-1.121323402992255, -0.6067840501753743, -0.42296166033082017,
-0.3414772796884371, -0.29494229266759575, -0.2638324027631107,
-0.24570092609093308, -0.2294785528586729, -0.21685091258827782,
-0.20667812414668418, -0.19826764242821682, -0.19118225612739081,
-0.18510086774893608, -0.1798157506046607, -0.17516606060770812,
-0.17104157364516936, -0.1673522264225582, -0.16401600090630097,
-0.16099552643559178, -0.1572364863363518, -0.15575332179271584},
{-1.121020553779335, -0.6066017098979657, -0.4228593312698514,
-0.34140878746984527, -0.29489132507416116, -0.26381412905545787,
-0.24566632029009128, -0.22944895890569228, -0.2168250254148063,
-0.20665507810489103, -0.19824683479332705, -0.19116325977257986,
-0.18508337141597053, -0.17979951978689002, -0.1751509116626977,
-0.17102735665790192, -0.1673388227509207, -0.16400331527403011,
-0.1609834770968348, -0.15723518125180647, -0.15574236207557135},
{-1.1207176031315171, -0.606419464872296, -0.42275708209828977,
-0.34134036020377323, -0.29484041373226333, -0.26379582972748494,
-0.24563176200260628, -0.2294194099301734, -0.21679918090147154,
-0.20663207312789567, -0.1982260667944047, -0.19114430187215703,
-0.1850659125367713, -0.1797833256513499, -0.17513579858871253,
-0.17101317484153356, -0.1673254536548825, -0.16399066366460602,
-0.16097146126949013, -0.1572338354983458, -0.15573143469207196},
{-1.1204145515985982, -0.606237315190473, -0.42265491287019685,
-0.3412719979527701, -0.2947895587104128, -0.2637775041965753,
-0.245597251295802, -0.22938990600721, -0.2167733791242874,
-0.20660910928848963, -0.19820533850336375, -0.1911253825028325,
-0.185048491189022, -0.17976716827683958, -0.17512072146012514,
-0.1709990282745295, -0.16731211921079847, -0.1639780461493885,
-0.1609594790287474, -0.15723244714422435, -0.15572053972760358},
{-1.1201113997292804, -0.606055260945439, -0.4225528236396201,
-0.34120370077960516, -0.29473876007550004, -0.26375915189242605,
-0.24556278823659028, -0.22936044721063098, -0.2167476201546279,
-0.20658618665866868, -0.19818464999049468, -0.1911065017350566,
-0.18503110744251927, -0.17975104773175588, -0.1751056803457942,
-0.17098491702415686, -0.16729881948560177, -0.1639654627984939,
-0.16094753044122712, -0.15723101438437226, -0.15570967726025486},
{-1.119808148071936, -0.6058733022303606, -0.4224508144615058,
-0.34113546874806744, -0.29468801789657917, -0.2637407722717846,
-0.2455283728948352, -0.2293310336169121, -0.2167219040681445,
-0.2065633053131677, -0.1981640013275623, -0.19108765964334395,
-0.18501376137417935, -0.1797349640923258, -0.17509067531730693,
-0.17097084116296912, -0.16728555455534178, -0.16395291368144171,
-0.16093561557934777, -0.15722953555528107, -0.1556988473743104},
{-1.1195047971735885, -0.6056914391380204, -0.42234888539027793,
-0.34106730192074153, -0.29463733224215716, -0.2637223648051581,
-0.24549400533932797, -0.2293016653000457, -0.21669623093803025,
-0.2065404653246503, -0.19814339258571323, -0.19106885629934567,
-0.18499645305500678, -0.1797189174300584, -0.17507570644423254,
-0.17095680076416642, -0.16727232448815244, -0.16394039887095602,
-0.1609237345122807, -0.1572280091194429, -0.15568805015222864},
{-1.1192013475805744, -0.6055096717613537, -0.42224703648153294,
-0.34099920036202747, -0.29458670317979596, -0.26370392898213524,
-0.24545968564028442, -0.22927234233455707, -0.21667060084067202,
-0.20651766676579797, -0.19812282383687574, -0.19105009178003485,
-0.1849791825611149, -0.17970290782282916, -0.17506077379963614,
-0.17094279590133254, -0.16725912935986287, -0.16392791843876608,
-0.16091188731380157, -0.15722643366859756, -0.15567728568085215},
{-1.118897799838324, -0.6053280001933885, -0.42214526779023487,
-0.34093116413532343, -0.29453613077945917, -0.2636854643130775,
-0.24542541386567507, -0.2292430647959378, -0.21664501384827162,
-0.20649490970929918, -0.19810229515183408, -0.1910313661550589,
-0.18496194996638593, -0.1796869353383741, -0.17504587745226274,
-0.17092882664471887, -0.16724596923880597, -0.1639154724543701,
-0.16090007405210116, -0.15722480791097126, -0.1556665540405362},
{-1.1185941544917117, -0.6051464245274865, -0.42204357937275105,
-0.34086319330583237, -0.29448561511149407, -0.26366697032267084,
-0.24539119008634458, -0.22921383276009522, -0.21661947003934756,
-0.20647219423170782, -0.19808180660593422, -0.1910126795017817,
-0.18494475534483001, -0.17967100005421344, -0.17503101747635696,
-0.17091489306731233, -0.1672328441994111, -0.16390306098909946,
-0.1608882947992356, -0.1572231306752414, -0.15565585531805226},
{-1.118290412084816, -0.6049649448573398, -0.42194197128482,
-0.3407952879376701, -0.29443515624382854, -0.26364844655639885,
-0.2453570143716668, -0.2291846463013414, -0.2165939694892174,
-0.20644952040468212, -0.1980613582688875, -0.190994031891897,
-0.18492759877194231, -0.17965510204444968, -0.17501619394368362,
-0.1709009952453613, -0.16721975431524072, -0.16389068411715613,
-0.1608765496273108, -0.15722140090273484, -0.1556451896005413},
{-1.1179865731603122, -0.6047835612763457, -0.42184044358315376,
-0.34072744809707345, -0.29438475424865373, -0.26362989257724934,
-0.24532288679377956, -0.22915550549547348, -0.21656851227320928,
-0.2064268883036604, -0.19804095021556378, -0.1909754234006158,
-0.18491048032515067, -0.1796392413824961, -0.1750014069248067,
-0.1708871332500692, -0.1672066996583581, -0.16387834190864936,
-0.1608648386076581, -0.1572196176415872, -0.15563455697194684},
{-1.1176826382606837, -0.6046022738778376, -0.4217389963244216,
-0.3406596738483678, -0.29433440919412135, -0.26361130796124144,
-0.2452888074221029, -0.22912641041827086, -0.21654309846768882,
-0.20640429800220517, -0.19802058251736554, -0.19095685410312768,
-0.18489340007722888, -0.17962341814279625, -0.1749866564928766,
-0.17087330715496307, -0.16719368030116755, -0.16386603443697823,
-0.16085316181230525, -0.15721778004430575, -0.1556239575204046},
{-1.117378607927444, -0.6044210827563674, -0.42163762956658246,
-0.34059196525783264, -0.29428412115271385, -0.26359269230906435,
-0.24525477633050485, -0.22909736114628743, -0.2165177281524926,
-0.20638174957578315, -0.19800025525174902, -0.1909383240759368,
-0.1848763581065498, -0.17960763240114375, -0.17497194272471717,
-0.17085951703689517, -0.1671806963178497, -0.16385376177395017,
-0.16084151931156043, -0.1572158873668883, -0.15561339133390106},
{-1.117074482701124, -0.6042399880055385, -0.4215363433661068,
-0.3405243223913743, -0.29423389019505564, -0.2635740452281965,
-0.24522079358883175, -0.22906835775433265, -0.21649240140189363,
-0.2063592430988166, -0.19797996849044353, -0.19091983339142615,
-0.1848593544892907, -0.17959188423098027, -0.17495726568699155,
-0.1708457629670903, -0.1671677477822726, -0.1638415239930211,
-0.16082991118106804, -0.15721393895530866, -0.1556028584961595},
{-1.1167702631218308, -0.6040589897192703, -0.4214351377812662,
-0.3404567453164411, -0.2941837163919452, -0.26355536635180243,
-0.2451868592687454, -0.22903940031800474, -0.21646711829429677,
-0.2063367786460759, -0.19795972230756576, -0.19090138212492036,
-0.18484238930142993, -0.17957617370653622, -0.1749426254593729,
-0.1708320450204397, -0.16715483476828297, -0.1638293211661832,
-0.16081833748917518, -0.15721193425468272, -0.15559235909867652},
{-1.1164659497283882, -0.6038780879919443, -0.4213340128703713,
-0.34038923409834965, -0.2941335998160888, -0.26353665532399617,
-0.2451529734441671, -0.22901048891420572, -0.21644187890942135,
-0.2063143562937242, -0.19793951677986144, -0.19088297035332857,
-0.18482546262027455, -0.17956050090270992, -0.17492802211129543,
-0.17081836327121636, -0.16714195734827086, -0.16381715336778058,
-0.1608067983092809, -0.15720987279536303, -0.15558189322828753},
{-1.1161615430589595, -0.6036972829179419, -0.42123296869160853,
-0.3403217888063814, -0.2940835405379616, -0.2635179118050175,
-0.24511913618837866, -0.22898162361853025, -0.21641668332529918,
-0.20629197611695815, -0.19791935198273336, -0.19086459815335388,
-0.18480857452446742, -0.17954486589832186, -0.17491345572075545,
-0.17080471779894424, -0.1671291155998489, -0.16380502067275415,
-0.1607952937172712, -0.15720775419355704, -0.15557146097180663},
{-1.1158570436511983, -0.6035165745917048, -0.42113200530421224,
-0.3402544095052811, -0.29403353863095916, -0.26349913547377213,
-0.245085347573351, -0.22895280450815392, -0.2163915316203031,
-0.2062696381916993, -0.1978992279919467, -0.19084626559894957,
-0.18479172508983055, -0.17952926876615294, -0.17489892636011461,
-0.17079110867483394, -0.16711630959410684, -0.1637929231537072,
-0.1607838237835182, -0.1572055781458772, -0.15556106241894696},
{-1.1155524520414826, -0.6033359631076607, -0.42103112276705446,
-0.34018709626521115, -0.2939835941682567, -0.2634803260197387,
-0.24505160767370882, -0.2289240316589911, -0.21636642387478133,
-0.20624734259314437, -0.1978791448846735, -0.19082797276866614,
-0.18477491439728055, -0.1795137095825936, -0.17488443410533705,
-0.17077753597792622, -0.16710353940858624, -0.16378086088616328,
-0.16077238858247966, -0.1572033444276144, -0.1555506976580432},
{-1.1152477687660376, -0.6031554485611359, -0.4209303211401938,
-0.340119849153794, -0.29393370722151957, -0.2634614831528097,
-0.24501791656240357, -0.22889530514691003, -0.21634136016665906,
-0.20622508939707984, -0.1978591027350305, -0.19080971973540528,
-0.1847581425216589, -0.17949818841985632, -0.17486997902970813,
-0.17076399977857903, -0.16709080511402874, -0.16376883394084274,
-0.1607609881824814, -0.15720105288144026, -0.1555403667720512},
{-1.114942994359943, -0.6029750310466362, -0.42082960048302454,
-0.34005266823965385, -0.29388387786504566, -0.2634426065948112,
-0.24498427431460001, -0.2288666250504079, -0.21631634057781923,
-0.2062028786826673, -0.1978391016242469, -0.1907915065793091,
-0.1847414095469304, -0.1794827053592698, -0.17485556121123835,
-0.17075050015978377, -0.16707810679049118, -0.16375684239702792,
-0.1607496226638645, -0.1571987034329254, -0.15553006985575024},
{-1.1146381293571253, -0.6027947106594347, -0.4207289608561169,
-0.3399855535920153, -0.2938341061720777, -0.26342369608142135,
-0.2449506810062516, -0.2288379914459533, -0.21629136518927794,
-0.20618071052462028, -0.19781914162655312, -0.19077333337495617,
-0.18472471554763104, -0.17946726047441075, -0.17484118072418653,
-0.17073703719317024, -0.16706544451000838, -0.16374488632713735,
-0.16073829209540946, -0.15719629606113728, -0.15551980699030565},
{-1.1143331742914295, -0.6026144874944244, -0.4206284023196609,
-0.339918505278181, -0.2937843922155743, -0.2634047513649307,
-0.24491713671015347, -0.2288094044077802, -0.21626643407956436,
-0.20615858499879636, -0.19779922282183549, -0.19075520020047065,
-0.18470806060442868, -0.1794518538402059, -0.17482683764528417,
-0.17072361095830502, -0.1670528183493687, -0.16373296580743357,
-0.16072699655348544, -0.1571938308199421, -0.1555095782664324},
{-1.1140281296955994, -0.602434361647397, -0.42052792493539926,
-0.3398515233701893, -0.29373473607102696, -0.26338577220962023,
-0.24488364150366593, -0.22878086401508568, -0.2162415473307746,
-0.20613650218368207, -0.19777934528828212, -0.19073710713269065,
-0.1846914447966057, -0.17943648553385572, -0.1748125320483922,
-0.17071022152918403, -0.1670402283830441, -0.16372108091166382,
-0.16071573610960854, -0.15719130781430835, -0.15549938376575767},
{-1.1137229961013748, -0.602254333213633, -0.4204275287638346,
-0.339784607936636, -0.29368513781259153, -0.26336675839648294,
-0.24485019546120412, -0.22875237034578788, -0.21621670502521795,
-0.2061144621559663, -0.1977595091033777, -0.19071905424690527,
-0.18467486820496504, -0.1794211556312746, -0.17479826401464038,
-0.1706968689843933, -0.16702767468753166, -0.16370923171691487,
-0.16070451083741233, -0.15718872721279098, -0.15548922357483974},
{-1.1134177740402844, -0.6020744022890838, -0.4203272138674876,
-0.3397177590493463, -0.29363559751585555, -0.26334770971919497,
-0.24481679866095618, -0.22872392347715476, -0.21619190724560866,
-0.2060924649954714, -0.19773971435090942, -0.1907010416266246,
-0.18465833091236306, -0.17940586421128302, -0.1747840336192681,
-0.17068355340569497, -0.16701515734208527, -0.16369741829975482,
-0.16069332081521992, -0.15718608923918964, -0.15547909778375413},
{-1.1131124640425352, -0.6018945689694775, -0.4202269803077954,
-0.3396509767773601, -0.2935861152547403, -0.2633286259820977,
-0.2447834511782716, -0.2286955234856407, -0.21616715407211018,
-0.20607051077691807, -0.19771996110534218, -0.1906830693431516,
-0.18464183299514758, -0.1793906113474577, -0.17476984093828207,
-0.17067027486262987, -0.16700267641818556, -0.1636856407361691,
-0.16068216611262187, -0.15718339416017812, -0.15546900647017026},
{-1.112807066637739, -0.6017148333502327, -0.42012682814725366,
-0.3395842611924884, -0.29353669110590275, -0.2633095070082554,
-0.24475015309102233, -0.228667170449107, -0.21614244559076212,
-0.2060485995799084, -0.19770024945095344, -0.19066513747946345,
-0.184625374538534, -0.17937539712107764, -0.17475568605080838,
-0.17065703343949679, -0.16699023199598884, -0.16367389910192287,
-0.16067104680850974, -0.15718064230350137, -0.15545894972090935},
{-1.1125015823550388, -0.6015351955286192, -0.42002675744888407,
-0.3395176123660555, -0.2934873251442802, -0.26329035262619627,
-0.24471690447569472, -0.22863886444542914, -0.21611778188074737,
-0.20602673148193418, -0.19768057946571105, -0.19064724611013872,
-0.1846089556197512, -0.17936022160417764, -0.17474156903437432,
-0.17064382921223853, -0.16697782415023, -0.16366219347267474,
-0.16065996297488283, -0.15717783403226804, -0.15544892761778328},
{-1.112196011722391, -0.6013556555997539, -0.41992676827558384,
-0.3394510303695313, -0.29343801744609266, -0.26327116268516093,
-0.24468370541109508, -0.22861060555319312, -0.21609316302905768,
-0.206004906562967, -0.1976609512319243, -0.1906293953162006,
-0.18459257632417092, -0.1793450848784417, -0.17472748996789988,
-0.1706306622594127, -0.1669654529608522, -0.16365052392922763,
-0.1606489146901353, -0.15717496975987189, -0.15543894024377636},
{-1.1118903552673949, -0.6011762136612937, -0.4198268606915292,
-0.3393845152754338, -0.29338876808917647, -0.2632519370427673,
-0.2446505559747152, -0.228582393850715, -0.21606858911817284,
-0.20598312490153603, -0.19764136483091477, -0.19061158517541799,
-0.1845762367316368, -0.1793299870177094, -0.1747134489280029,
-0.1706175326606072, -0.1669531185012545, -0.1636388905440853,
-0.1606379020262665, -0.15717204993513434, -0.15542898767868962},
{-1.1115846135163459, -0.6009968698091654, -0.4197270347599762,
-0.3393180671565652, -0.29333957714882075, -0.26323267556872665,
-0.24461745624714126, -0.22855422941653813, -0.2160440602331306,
-0.2059613865756873, -0.1976218203437199, -0.19059381576850143,
-0.18455993692669637, -0.17931492810384952, -0.17469944599779552,
-0.17060444049443646, -0.16694082085427198, -0.16362729339859072,
-0.16062692506198317, -0.15716907504902622, -0.15541907000494604},
{-1.11127878699536, -0.6008176241397933, -0.4196272905449838,
-0.3392516860844843, -0.2932904447027873, -0.2632133781480128,
-0.24458440630493072, -0.2285261123278275, -0.21601957645724212,
-0.20593969166584003, -0.1976023178519597, -0.19057608717353958,
-0.1845436769910762, -0.17929990821175323, -0.17468548125163608,
-0.17059138584026812, -0.1669285600944761, -0.1636157325674148,
-0.16061598387269527, -0.15716604562869207, -0.15540918730261666},
{-1.1109728762296616, -0.6006384767509516, -0.41952762811190425,
-0.3391853721332936, -0.29324137082865676, -0.263194044671863,
-0.24455140622935545, -0.22849804266387963, -0.2159951378753746,
-0.20591804024980576, -0.19758285743871085, -0.19055839946947373,
-0.184527457005089, -0.17928492741916813, -0.17467155477093854,
-0.17057836877584975, -0.16691633629807257, -0.16360420812747378,
-0.16060507853408268, -0.15716296223074266, -0.15539933964845432},
{-1.1106668817435228, -0.6004594277392101, -0.41942804752498475,
-0.33911912537639566, -0.2931923556035585, -0.2631746750493136,
-0.24451845609769407, -0.2284700205031669, -0.21597074457486087,
-0.205896432409844, -0.19756343918663077, -0.1905407527380234,
-0.1845112770557975, -0.1792699858071245, -0.17465766663772797,
-0.17056538938233956, -0.166904149548472, -0.16359272016080695,
-0.16059420912497302, -0.15715982544934803, -0.15538952712357457},
{-1.1103608040606723, -0.6002804772023076, -0.4193285488504266,
-0.3390529458875413, -0.29314339910693477, -0.26315526919889365,
-0.2444855559941388, -0.22844204592681194, -0.21594639663913995,
-0.20587486822466872, -0.19754406317792217, -0.19052314705837858,
-0.18449513722541155, -0.17925508345248886, -0.17464381692909114,
-0.17055244774145706, -0.1668919999213685, -0.16358126874121837,
-0.16058337572282966, -0.15715663590472673, -0.1553797498048084},
{-1.1100546437037941, -0.600101625237226, -0.41922913215324087,
-0.3389868337413411, -0.2930945014151334, -0.26313582704772287,
-0.24445270599569113, -0.2284141190127329, -0.21592209415520358,
-0.20585334777427278, -0.19752472949591748, -0.19050558251181116,
-0.18447903759856388, -0.1792402204330088, -0.17463000572698206,
-0.17053954393114878, -0.16687988749752947, -0.1635698539521684,
-0.16057257840406436, -0.15715339424595953, -0.15537000777271004},
{-1.1097484011954108, -0.5999228719419065, -0.41912979750054546,
-0.3389207890120822, -0.29304566260915976, -0.2631163485403363,
-0.24441990618717568, -0.22838623983950157, -0.21589783720956035,
-0.20583187114073098, -0.1975054382243826, -0.1904880591789535,
-0.18446297825741453, -0.17922539682939487, -0.17461623311131547,
-0.1705266780317558, -0.16686781235386405, -0.16355847586686423,
-0.1605618172477108, -0.15715010114780625, -0.15536030109960564},
{-1.1094420770566984, -0.5997442174142371, -0.41903054495809045,
-0.3388548117746133, -0.2929968827667899, -0.2630968336232833,
-0.2443871566465745, -0.2283584084878001, -0.2158736258876104,
-0.20581043840381597, -0.19748618944571916, -0.19047057714017512,
-0.18444695928792498, -0.1792106127197357, -0.17460249916209136,
-0.17051385012292286, -0.1668557745701591, -0.16354713456538406,
-0.16055109233127496, -0.15714675730878724, -0.15535062986558046},
{-1.1091356718086836, -0.5995656617519849, -0.41893137459301855,
-0.3387889021047812, -0.2929481619677574, -0.2630772822627918,
-0.2443544574560974, -0.22833062503673318, -0.21584946027683571,
-0.20578904964561673, -0.19746698324381384, -0.19045313647684736,
-0.1844309807741169, -0.17919586818442923, -0.17458880396391407,
-0.1705010602894248, -0.16684377422827623, -0.16353583012811868,
-0.160540403736384, -0.15714336344915836, -0.15534099414522018},
{-1.1088291859709045, -0.5993872050529632, -0.41883228647254,
-0.33872306007710407, -0.2928995002917709, -0.2630576944313887,
-0.24432180870037, -0.22830288956838274, -0.2158253404659476,
-0.20576770494874097, -0.19744781970571523, -0.19043573727383745,
-0.18441504280407628, -0.17918116330374545, -0.17457514759684045,
-0.17048830861195796, -0.16683181140850678, -0.16352456263552995,
-0.1605297515419153, -0.1571399203139805, -0.15533139401690477},
{-1.1085226200629066, -0.5992088474161257, -0.41873328066476745,
-0.338657285769532, -0.2928508978187452, -0.26303807011043645,
-0.2442892104609058, -0.22827520216019792, -0.21580126653928744,
-0.20574640439276948, -0.19742869891094017, -0.19041837960902086,
-0.18439914545916736, -0.17916649815532537, -0.17456153014108367,
-0.17047559516749544, -0.16681988618730514, -0.16351333216186958,
-0.16051913582398925, -0.1571364286610688, -0.155321829552868},
{-1.1082159746034002, -0.5990305889398826, -0.41863435723753994,
-0.3385915792563594, -0.2928023546285736, -0.2630184092964427,
-0.24425666282027692, -0.22824756289401904, -0.21577723858457887,
-0.20572514805976283, -0.1974096209464662, -0.19040106356615638,
-0.18438328882448474, -0.17915187282023481, -0.17454795167759585,
-0.17046292003954733, -0.16680799864769114, -0.16350213878887132,
-0.16050855666443198, -0.15713288926949076, -0.1553123008309143},
{-1.10790925010998, -0.5988524297228786, -0.41853551625965224,
-0.33852594061631436, -0.2927538708036508, -0.2629987119891837,
-0.24422416586293139, -0.2282199718519422, -0.21575325669273582,
-0.20570393603404113, -0.19739058589593128, -0.19038378922974886,
-0.18436747298873968, -0.17913728738067647, -0.17453441229363165,
-0.17045028331180134, -0.16679614887104321, -0.16349098259649253,
-0.1604980141456238, -0.1571293029363119, -0.1553028079253025},
{-1.107602447099847, -0.5986743698639216, -0.4184367577996291,
-0.33846036992595074, -0.29270544642342955, -0.2629789782056946,
-0.244191719671619, -0.2281924291119708, -0.2157293209480926,
-0.20568276839636468, -0.19737159384374792, -0.19036655667873248,
-0.18435169803462514, -0.17912274191321842, -0.17452091206575915,
-0.17043768506232482, -0.16678433693498818, -0.16347986366233158,
-0.1604875083435644, -0.15712567046700343, -0.15529335090903373},
{-1.107295566089455, -0.5984964094615819, -0.41833808192678745,
-0.3383948672621848, -0.29265708157026893, -0.2629592079683718,
-0.24415932433220178, -0.2281649347581549, -0.21570543144229504,
-0.205661645233441, -0.1973526448762044, -0.19034936600137087,
-0.1843359640526927, -0.17910823650395713, -0.1745074510826612,
-0.1704251253787561, -0.16677256292602038, -0.1634687820717815,
-0.16047703934521707, -0.1571219926922396, -0.1552839298614117},
{-1.1069886075943138, -0.5983185486159712, -0.41823948871116556,
-0.3383294327041426, -0.2926087763247729, -0.26293940130926075,
-0.24412697992945454, -0.2281374888708072, -0.21568158826293882,
-0.2056405666262009, -0.19733373907692453, -0.19033221727917038,
-0.18432027112648797, -0.1790937712313294, -0.17449402942393988,
-0.17041260433962435, -0.16676082692325167, -0.16345773789768003,
-0.160466607226617, -0.15711827044399485, -0.15527454485342673},
{-1.1066815721296024, -0.5981407874259475, -0.4181409782224179,
-0.33826406632804407, -0.292560530769844, -0.2629195582717969,
-0.24409468654747712, -0.22811009153083717, -0.21565779149761255,
-0.2056195326580692, -0.19731487653105262, -0.19031511059509398,
-0.18430461934281084, -0.1790793461778435, -0.1744806471740219,
-0.1704001220297755, -0.1667491290085792, -0.16344673122583941,
-0.160456212072134, -0.15711450457177278, -0.15526519596084398},
{-1.1063744602096257, -0.5979631259911287, -0.41804255053176576,
-0.3381987682143084, -0.2925123449870526, -0.2628996789045317,
-0.2440624442731405, -0.22808274282061802, -0.2156340412367186,
-0.2055985434132097, -0.19729605732404565, -0.19029804603501788,
-0.18428900878846122, -0.17906496142502704, -0.17446730441617575,
-0.17038767852999825, -0.16673746926409905, -0.1634357621334459,
-0.16044585396227262, -0.15711069593292137, -0.15525588325733963},
{-1.1060672723476763, -0.5977855644113639, -0.41794420570873925,
-0.3381335384409745, -0.29246421905960673, -0.2628797632706181,
-0.24403025319064398, -0.22805544282324064, -0.21561033756812265,
-0.20557759897884154, -0.197277281541119, -0.19028102368168476,
-0.1842734395503811, -0.179050617055438, -0.17445400123644816,
-0.17037527392371743, -0.16672584777285948, -0.16342483070319958,
-0.1604355329781626, -0.1571068453950204, -0.15524660681588642},
{-1.1057600090571178, -0.5976081027869604, -0.41784594382656337,
-0.33806837708871385, -0.2924161530719793, -0.2628598114407339,
-0.243998113390127, -0.22802819162210852, -0.2155866805844724,
-0.20555669944005217, -0.1972585492691863, -0.19026404362404037,
-0.18425791172006, -0.17903631315221702, -0.1744407377184345,
-0.17036290829859269, -0.16671426462032457, -0.16341393701523543,
-0.16042524920462142, -0.1571029538351283, -0.15523736671438115},
{-1.1054526708498429, -0.5974307412174191, -0.41774776495558896,
-0.3380032842362297, -0.2923681471042343, -0.26283982348811463,
-0.24396602495523467, -0.22800098929695878, -0.21556307037062084,
-0.20553584487855403, -0.1972398605907486, -0.19024710594197813,
-0.18424242537792423, -0.17902204979585434, -0.17442751394292344,
-0.17035058173127027, -0.1667027198838369, -0.1634030811502427,
-0.16041500271893483, -0.1570990221327193, -0.1552281630208796},
{-1.1051452582373642, -0.5972534798036477, -0.41764966916840507,
-0.33793825996367843, -0.2923202012434061, -0.26281979950520906,
-0.24393398797688803, -0.22797383593428577, -0.21553950702194413,
-0.20551503538529658, -0.19722121559578198, -0.190230210726142,
-0.18422698061734621, -0.1790078270744715, -0.1744143300027332,
-0.17033829431299807, -0.16669121365335116, -0.16339226319141176,
-0.1604047936086701, -0.1570950511828073, -0.15521899581586496},
{-1.1048377717305762, -0.5970763186459855, -0.41755165653750836,
-0.3378733043515929, -0.29227231557101874, -0.2627997395816095,
-0.24390200253963457, -0.22794673161502743, -0.215515990624219,
-0.20549427104135987, -0.19720261436740572, -0.1902133580592178,
-0.18421157752314343, -0.17899364506592974, -0.17440118597618692,
-0.17032604612185054, -0.16667974600684232, -0.16338148321894863,
-0.16039462195277565, -0.15709104187677525, -0.1552098651680751},
{-1.104530211839478, -0.5968992578454113, -0.41745372713588225,
-0.3378084174815399, -0.29222449017276375, -0.2627796438247785,
-0.24387006873374872, -0.22791967642483968, -0.21549252127078233,
-0.2054735519373807, -0.19718405699354236, -0.19019654802827546,
-0.18419621618490112, -0.1789795038576898, -0.17438808195236533,
-0.17031383724394544, -0.16666831703062002, -0.16337074131532603,
-0.1603844878353371, -0.15708699511476, -0.15520077115384368},
{-1.1042225790737845, -0.5967222975026445, -0.41735588103683696,
-0.33774359943329557, -0.29217672513286175, -0.2627595123437132,
-0.24383818664761492, -0.22789267044550598, -0.21546909904994038,
-0.20545287815931346, -0.19716554356001126, -0.1901797807197383,
-0.18418089668961812, -0.1789654035327075, -0.17437501801602195,
-0.17030166776643796, -0.16665692681105782, -0.16336003756404693,
-0.1603743913408806, -0.15708291180523304, -0.1551917138478558},
{-1.1039148739421663, -0.5965454377186958, -0.4172581183142583,
-0.337678850290672, -0.2921290205364535, -0.2627393452597033,
-0.24380635637193393, -0.22786571376471443, -0.21544572405336027,
-0.20543224979517305, -0.19714707415180044, -0.19016305622177043,
-0.18416561912819418, -0.1789513441767525, -0.17436199425490884,
-0.17028953777204237, -0.16664557542941338, -0.16334937204592848,
-0.16036433254899407, -0.15707879285090343, -0.1551826933229279},
{-1.103607096952608, -0.5963686785950522, -0.4171604390421777,
-0.3376141701330937, -0.29208137646886456, -0.26271914270063235,
-0.24377457799530333, -0.2278388064640282, -0.2154223963719133,
-0.20541166693404733, -0.1971286488592483, -0.19014637462102968,
-0.18415038358713787, -0.17893732587353384, -0.1743490107542982,
-0.1702774473458959, -0.16663426297319717, -0.16333874484575261,
-0.16035431154733004, -0.1570746391663107, -0.15517370965731914},
{-1.103299248612597, -0.5961920202336621, -0.4170628432958594,
-0.33754955904505834, -0.2920337930155412, -0.26269890479809277,
-0.24374285160729414, -0.22781194862842113, -0.2153991160955684,
-0.2053911296614288, -0.19711026776589335, -0.19012973600425198,
-0.18413519015360436, -0.17892334870775528, -0.17433606759886544,
-0.17026539657175022, -0.16662298952328314, -0.1633281560447699,
-0.16034432841306057, -0.1570704516599477, -0.15516476292068404},
{-1.1029913294289635, -0.5960154627357142, -0.41696533114899736,
-0.337485017108051, -0.29198627026276114, -0.2626786316987548,
-0.24371117730007086, -0.22778514034590103, -0.21537588331808166,
-0.20537063807008593, -0.19709193096158373, -0.19011314046102257,
-0.184120038922039, -0.17890941276723282, -0.17432316488063293,
-0.1702533855391053, -0.16661175516899362, -0.16331760573122978,
-0.16033438323709248, -0.15706623125059593, -0.1551558531940742},
{-1.102683339907756, -0.5958390062036187, -0.41686790267825913,
-0.33742054440562086, -0.29193880829830476, -0.26265832355019114,
-0.24367955516459716, -0.22775838170009877, -0.21535269812878965,
-0.2053501922485168, -0.19707363853318327, -0.1900965880782266,
-0.1841049299762716, -0.17889551813603788, -0.17431030268357972,
-0.1702414143310378, -0.16660055999403056, -0.1633070939862904,
-0.16032447609835998, -0.15706197885114648, -0.1551469805494179},
{-1.102375280554245, -0.5956626507387099, -0.41677055795847195,
-0.33735614102139877, -0.2918914072050143, -0.2626379805104406,
-0.24364798529189358, -0.22773167277755846, -0.21532956061842867,
-0.20532979228551085, -0.19705539056807453, -0.19008007894624512,
-0.1840898634098096, -0.17888166490163115, -0.17429748109639576,
-0.17022948303594632, -0.16658940408469647, -0.1632966208954727,
-0.16031460708322953, -0.1570576953765226, -0.15513814506638823},
{-1.1020671518734666, -0.5954863964442616, -0.41667329706747225,
-0.3372918070388238, -0.29184406707436494, -0.26261760274596213,
-0.2436164677758086, -0.2277050136652079, -0.21530647088195565,
-0.20530943827343862, -0.1970371871563188, -0.19006361315293674,
-0.18407483930744206, -0.17886785314966858, -0.17428470020628595,
-0.1702175917380231, -0.1665782875242101, -0.16328618654353733,
-0.16030477627311512, -0.15705338174304728, -0.15512934681951407},
{-1.1017589543693624, -0.5953102434227766, -0.4165761200808653,
-0.33722754254236875, -0.2917967879910748, -0.2625971904248061,
-0.2435850027075901, -0.22767840444913645, -0.21528342900816,
-0.2052891303023543, -0.19701902838428254, -0.19004719078800747,
-0.18405985776250589, -0.1788540829671632, -0.17427196010252288,
-0.17020574052438064, -0.16656721040126854, -0.163275791016531,
-0.1602949837536798, -0.15704903886453536, -0.1551205858864364},
{-1.101450688545512, -0.5951341917765873, -0.41647902707561,
-0.337163347616773, -0.29174957004349267, -0.2625767437286086,
-0.24355359017918943, -0.22765184521465898, -0.2152604350895615,
-0.20526886846317893, -0.19700091434116018, -0.19003081193991278,
-0.18404491886287389, -0.1788403544424355, -0.1742592608737965,
-0.17019392948253653, -0.16655617280020607, -0.16326543440113284,
-0.1602852296113042, -0.15704466765452452, -0.1551118623439649},
{-1.1011423549046846, -0.594958241609266, -0.416382018130129,
-0.3370992223467084, -0.29170241332084146, -0.26255626284262235,
-0.24352223028662223, -0.22762533605324364, -0.215237489220776,
-0.2052486528507771, -0.19698284511699882, -0.1900144767013643,
-0.1840300227015419, -0.1788266676638699, -0.17424660260856228,
-0.17018215869969566, -0.1665451748105653, -0.16325511678414273,
-0.16027551392753736, -0.15704026902746904, -0.1551031762743591},
{-1.1008339539486762, -0.5947823930231628, -0.4162850933217257,
-0.3370351668184419, -0.2916553179096866, -0.2625357479570525,
-0.24349092312316145, -0.22759887704905424, -0.21521459149095534,
-0.2052284835551319, -0.19696482080007627, -0.18999818516124378,
-0.18401516936643958, -0.17881302271795363, -0.17423398539548884,
-0.17017042826437034, -0.16653421651695766, -0.1632448382496321,
-0.16026583679010997, -0.15703584388973724, -0.15509452775272337},
{-1.100525486179496, -0.5946066461225037, -0.41618825272894,
-0.3369711811162297, -0.29160828389961324, -0.26251519927279077,
-0.24345966878252057, -0.22757246829251443, -0.21519174199474378,
-0.20520836066960868, -0.19694684148223018, -0.18998193741212788,
-0.18400035894559608, -0.17879941969333402, -0.17422140932485064,
-0.1701587382616907, -0.16652329800425036, -0.1632345988886854,
-0.16025619828162974, -0.15703139315152015, -0.15508591685978956},
{-1.100216952097572, -0.5944310010106051, -0.4160914964307665,
-0.33690726532742943, -0.291561311380633, -0.26249461699205057,
-0.24342846736023205, -0.22754610987070123, -0.2151689408240145,
-0.20518828428769353, -0.19692890725107048, -0.18996573354474577,
-0.18398559153308724, -0.1787858586801221, -0.17420887448513867,
-0.17014708878290463, -0.16651241936191497, -0.16322439878480566,
-0.16024659848774547, -0.15702691771603838, -0.15507734367474768},
{-1.0999083522035065, -0.5942554577915686, -0.4159948245066225,
-0.33684341953787467, -0.2915144004406045, -0.2624740013284992,
-0.24339731895090466, -0.22751980187137377, -0.2151461880715786,
-0.20516825450206966, -0.19691101819780954, -0.18994957364791532,
-0.18397086721709854, -0.17877233976602014, -0.17419638096792056,
-0.17013547991263778, -0.16650158067511, -0.16321423802783386,
-0.16023703749442575, -0.15702241848312326, -0.15506880827648217},
{-1.099599686996612, -0.5940800165690874, -0.4158982370358508,
-0.33677964383481296, -0.29146755117133694, -0.2624533525005077,
-0.2433662236520462, -0.2274935443866326, -0.21512348383078006,
-0.2051482714095627, -0.1968931744144271, -0.18993345781763793,
-0.18395618609209663, -0.17875886304239685, -0.17418392886399658,
-0.1701239117448594, -0.16649078203474232, -0.16320411670655943,
-0.16022751538832836, -0.15701789635198793, -0.15506031074826154},
{-1.0992909569760059, -0.5939046774479841, -0.4158017340987925,
-0.3367159383060354, -0.2914207636612929, -0.26243267072995735,
-0.2433351815594591, -0.22746733750488346, -0.21510082819538923,
-0.20512833510309036, -0.1968753759915387, -0.18991738614575127,
-0.18394154824652276, -0.17874542859799192, -0.1741715182612964,
-0.17011238436301568, -0.16648002352400226, -0.16319403490812334,
-0.16021803225408604, -0.1570133522151238, -0.15505185117051212},
{-1.098982162639782, -0.5937294405325204, -0.41570531577562164,
-0.33665230303690663, -0.29137403800122996, -0.26241195624761815,
-0.24330419276788717, -0.22744118131422653, -0.21507822125748532,
-0.2051084456770056, -0.19685762302044907, -0.18990135872397218,
-0.18392695376972767, -0.17873203652340663, -0.17415914925280163,
-0.17010089786082006, -0.16646930523348402, -0.16318399272149975,
-0.16020858817749684, -0.1570087869641199, -0.15504342962331918},
{-1.0986733044858674, -0.5935543059275936, -0.41560898214766695,
-0.3365887381179178, -0.29132737428286504, -0.26239120928672577,
-0.2432732573770764, -0.2274150759060234, -0.21505566311080315,
-0.20508860322613032, -0.196839915592534, -0.1898853756461918,
-0.1839124027561354, -0.1787186869089581, -0.17414682192787723,
-0.17008945232464612, -0.16645862724834615, -0.16317399023504464,
-0.16019918324577276, -0.15700420147746286, -0.1550350461912302},
{-1.0983643830109884, -0.5933792737378454, -0.4155127332958841,
-0.3365252436364692, -0.2912807725962665, -0.2623704300916785,
-0.2432423754825166, -0.22738902137140116, -0.21503315384904909,
-0.20506880784796522, -0.19682225380105933, -0.18986943700482328,
-0.18389789529531697, -0.17870537984672552, -0.17413453637927745,
-0.1700780478439583, -0.16644798965931784, -0.16316402753908932,
-0.1601898175442642, -0.15699959663697172, -0.15502670095428073},
{-1.0980553987119421, -0.5932043440692745, -0.4154165693034244,
-0.33646181968180144, -0.29123423303582996, -0.26234961890880015,
-0.243211547184508, -0.22736301780095403, -0.2150106935681393,
-0.20504905963785092, -0.1968046377383672, -0.18985354289658574,
-0.18388343147964292, -0.1786921154267489, -0.1741222926977528,
-0.1700666845131309, -0.16643739255506773, -0.1631541047201921,
-0.16018049116196664, -0.1569949733169409, -0.15501839399755823},
{-1.0977463520842115, -0.5930295170269915, -0.415320490250739,
-0.33639846634264714, -0.29118775568982613, -0.2623287759883084,
-0.2431807725789028, -0.2273370652851412, -0.2149882823592435,
-0.2050293586896217, -0.19678706749694186, -0.1898376934139563,
-0.1838690113996293, -0.17867889374041823, -0.17411009097548913,
-0.17005536241847352, -0.16642683602122332, -0.1631442218705672,
-0.16017120418264597, -0.15699033238198723, -0.15501012540264725},
{-1.0974372436234, -0.5928547927163024, -0.41522449622196334,
-0.33633518370851334, -0.29114134065320485, -0.26230790159286954,
-0.24315005176826077, -0.22731116391686612, -0.2149659203202532,
-0.20500970510344985, -0.19676954317228734, -0.18982188865317795,
-0.18385463515029699, -0.1786657148826407, -0.1740979313051625,
-0.17004408165266938, -0.16641632014722063, -0.1631343790792954,
-0.16016195669556055, -0.15698567469657831, -0.15500189525564423},
{-1.0971280738237716, -0.5926801712435683, -0.4151285872988737,
-0.33627197186901014, -0.2910949880171714, -0.26228699597965033,
-0.2431193848475246, -0.227285313785913, -0.2149436075427218,
-0.20499009897219622, -0.19675206485405283, -0.18980612870785052,
-0.18384030282046382, -0.17865257894241893, -0.1740858137775092,
-0.17003284230577265, -0.1664058450237036, -0.16312457643561373,
-0.16015274878668606, -0.1569810011153976, -0.1549937036386808},
{-1.09681884317947, -0.5925056527151646, -0.4150327635664155,
-0.33620883091634823, -0.2910486978753042, -0.2622660594224442,
-0.24308877191980116, -0.22725951498743768, -0.2149213441223452,
-0.2049705403952231, -0.19673463263963953, -0.18979041367531835,
-0.18382601450262825, -0.17863948601505086, -0.17407373848664776,
-0.17002164447022494, -0.1663954107385237, -0.1631148140298535,
-0.1601435805463396, -0.15697631248599464, -0.15498555063825847},
{-1.0965095521838144, -0.5923312372374845, -0.414937025107843,
-0.3361457609383436, -0.2910024703222902, -0.2622450921926571,
-0.2430582130829464, -0.22723376761172176, -0.21489913015410878,
-0.20495102946895116, -0.19671724662278933, -0.1897747436504531,
-0.18381177029034035, -0.17862643619220364, -0.1740617055252045,
-0.17001048823643572, -0.16638501738193412, -0.16310509195211154,
-0.1601344520603547, -0.15697160965221713, -0.154977436336722},
{-1.0962002013293741, -0.5921569249170524, -0.41484137200775706,
-0.3360827620289797, -0.2909563054499529, -0.2622240945692269,
-0.24302770843897292, -0.22720807175319635, -0.21487696573360893,
-0.20493156629169818, -0.1966999068963844, -0.18975911873142337,
-0.18379757027665988, -0.17861342956811654, -0.17404971498591237,
-0.169999373698829, -0.16637466504339216, -0.16309541029262675,
-0.16012536341784767, -0.1569668934494075, -0.15496936082354296},
{-1.0958907911083067, -0.5919827158605244, -0.4147458043502432,
-0.3360198342773515, -0.2909102033533486, -0.262203066837543,
-0.24299725808887018, -0.22718242750429596, -0.21485485095637813,
-0.2049121509608014, -0.1966826135595383, -0.18974353901455743,
-0.18378341455440506, -0.1786004662370999, -0.17403776696377804,
-0.1699883009482832, -0.16636435381365544, -0.16308576914391892,
-0.16011631470779264, -0.1569621647084034, -0.15496132418346775},
{-1.0955813220126025, -0.5918086101757929, -0.41465032222213694,
-0.3359569777765685, -0.2908641641273064, -0.2621820092813394,
-0.24296686213302365, -0.2271568349594162, -0.2148327859162933,
-0.20489278357173646, -0.19666536670348478, -0.1897280045965104,
-0.18376930321443297, -0.17858754629086349, -0.174025861548337,
-0.16997727007697705, -0.16635408378122918, -0.16307616859309348,
-0.1601073060166982, -0.1569574242442826, -0.1549533265010794},
{-1.095271794532927, -0.5916346079695636, -0.4145549257074954,
-0.3358941926184116, -0.29081818786558955, -0.26216092219902265,
-0.24293652067373728, -0.2271312942117234, -0.21481077071225485,
-0.20487346422476094, -0.19664816642599448, -0.18971251557477586,
-0.18375523635218372, -0.17857466982660952, -0.1740139988373528,
-0.16996628117814794, -0.16634385503999738, -0.16306660873387102,
-0.1600983374377094, -0.1569526728755477, -0.15494536786743396},
{-1.0949622091594229, -0.5914607093501161, -0.4144596148928592,
-0.33583147889595466, -0.2907722746654642, -0.26213980588680386,
-0.2429062338125334, -0.22710580535658664, -0.21478880543702417,
-0.2048541930176242, -0.19663101282274198, -0.1896970720483253,
-0.18374121405964416, -0.17856183693724859, -0.17400217892311076,
-0.1699553343457012, -0.16633366767887736, -0.16305708965552412,
-0.16008940905739166, -0.1569479114073502, -0.15493744836679468},
{-1.0946525663819706, -0.5912869144248702, -0.41436438986497137,
-0.3357688367024494, -0.2907264246197485, -0.26211866064613076,
-0.24287600165195755, -0.227080368488906, -0.21476689019039696,
-0.20483497004944695, -0.19661390599161166, -0.1896816741180345,
-0.18372723643205546, -0.17854904771972002, -0.17399040190294102,
-0.16994442967405377, -0.16632352179306764, -0.16304761145366342,
-0.16008052096922398, -0.15694314064084836, -0.15492956809060843},
{-1.0943428666900843, -0.5911132233026812, -0.41426925071170473,
-0.3357062661305932, -0.2906806378279825, -0.2620974867867858,
-0.24284582429637425, -0.22705498370251576, -0.2147450250671099,
-0.20481579541679196, -0.1965968460276173, -0.18966632187808585,
-0.18371330356057314, -0.17853630226736783, -0.17397866786756566,
-0.16993356725500774, -0.16631341746937522, -0.163038174214293,
-0.1600716732584786, -0.1569383613643538, -0.15492172712355057},
{-1.0940331105721484, -0.590939636092159, -0.41417419751932627,
-0.33564376727456136, -0.2906349143835243, -0.2620762846151692,
-0.2428157018462329, -0.22702965109372286, -0.21472321016341311,
-0.20479666921879414, -0.19657983302682425, -0.18965101543233231,
-0.18369941553995517, -0.17852360067659845, -0.17396697691211216,
-0.16992274718376166, -0.16630335480416392, -0.16302877802988291,
-0.1600628660169292, -0.15693357436214228, -0.1549139255593346},
{-1.0937232985159042, -0.590766152901189, -0.4140792303755916,
-0.3355813402285577, -0.2905892543843862, -0.262055054451622,
-0.24278563440640255, -0.22700437075791058, -0.21470144557741122,
-0.2047775915556116, -0.19656286709049908, -0.18963575487731532,
-0.18368557246498796, -0.17851094304395332, -0.1739553291345075,
-0.1699119695528708, -0.16629333389002454, -0.16301942299547534,
-0.16005409933850245, -0.15692878040903224, -0.15490616348611752},
{-1.093413431009175, -0.5905927738391874, -0.4139843493695814,
-0.3355189850870133, -0.29054365792852366, -0.26203379661549064,
-0.2427556220820577, -0.2269791427934038, -0.2146797314077844,
-0.20475856252571845, -0.19654594831339978, -0.18962054031686648,
-0.18367177443234084, -0.17849832946694022, -0.17394372462905494,
-0.16990123446075955, -0.16628335482204903, -0.16301010920226844,
-0.16004537331264146, -0.15692398027527332, -0.15489844099521122},
{-1.0931035085385972, -0.5904194990152654, -0.41388955458927157,
-0.3354567019462351, -0.29049812511206596, -0.26201251142752113,
-0.2427256649757723, -0.22695396729397999, -0.21465806774992302,
-0.20473958222841304, -0.1965290767943202, -0.1896053718495878,
-0.18365802153392963, -0.1784857600404024, -0.17393216349159246,
-0.16989054199913056, -0.16627341769204662, -0.16300083673988297,
-0.16003668803072202, -0.15691917471765748, -0.15489075817754383},
{-1.0927935315907895, -0.5902463285394326, -0.4137948461236043,
-0.33539449089849427, -0.2904526560334162, -0.2619911992190538,
-0.24269576319260722, -0.2269288443580919, -0.21463645470146986,
-0.20472065076028656, -0.19651225263130812, -0.18959024957585058,
-0.183644313862402, -0.17847323486135735, -0.17392064581571987,
-0.16987989226362288, -0.16626352259433475, -0.16299160570302007,
-0.16002804358416967, -0.15691436448889817, -0.1548831151236314},
{-1.0924835006510882, -0.5900732625217486, -0.4137002240638701,
-0.3353323520427409, -0.2904072507914748, -0.26196986031953173,
-0.24266591683799987, -0.2269037740830413, -0.2146148923626967,
-0.2047017682245098, -0.19649547592400296, -0.18957517360076537,
-0.18363065151690705, -0.17846075403007688, -0.1739091717011405,
-0.16986928535134638, -0.16625366962480825, -0.1629824161838016,
-0.16001944006481494, -0.15690955033443998, -0.15487551192806137},
{-1.092173416204762, -0.5899003010713422, -0.4136056884973449,
-0.33527028547425886, -0.2903619094827974, -0.26194849506588014,
-0.24263612601563267, -0.2268787565652275, -0.21459338082992474,
-0.20468293471607524, -0.19647874676770272, -0.1895601440208594,
-0.18361703459027723, -0.17844831763998314, -0.1738977412403102,
-0.1698587213538545, -0.16624385887673299, -0.16297326827453418,
-0.16001087756702503, -0.15690473298448637, -0.1548679486812503},
{-1.091863278736401, -0.5897274442994558, -0.41351123951677593,
-0.33520829128884344, -0.2903166322110735, -0.2619271037993087,
-0.2426063908333731, -0.22685379190514965, -0.21457192020424287,
-0.20466415034078977, -0.1964620652671769, -0.18954516094364493,
-0.18360346318153375, -0.1784359257936643, -0.17388635453505685,
-0.16984820037273352, -0.16623409044976256, -0.16296416207021736,
-0.16000235618472658, -0.15689991317325536, -0.15486042547995993},
{-1.0915530887300697, -0.5895546923166606, -0.4134168772119651,
-0.33514636958527433, -0.29027141907081244, -0.26190568686000404,
-0.24257671139503145, -0.22682888019911474, -0.214550510581752,
-0.20464541519270796, -0.1964454315172759, -0.18953022446955714,
-0.18358993738377194, -0.17842357858697255, -0.1738750116768344,
-0.1698377224977463, -0.1662243644362036, -0.16295509766057137,
-0.15999387600663084, -0.1568950916164482, -0.15485294241297254},
{-1.0912428466692319, -0.5893820452332577, -0.41332260167406787,
-0.3350845204584587, -0.2902262701640339, -0.2618842445974323,
-0.24254708780801337, -0.2268040215463003, -0.21452915206441503,
-0.20462672937425452, -0.19642884562088625, -0.18951533470187343,
-0.1835764572936256, -0.1784112761192418, -0.17386371276764123,
-0.16982728783055023, -0.16621468093448044, -0.16294607514343085,
-0.15998543713020297, -0.15689026902847303, -0.15484549957864147},
{-1.0909325530367049, -0.5892095031615021, -0.413228412994723,
-0.3350227440076381, -0.29018118559041284, -0.2618627773583526,
-0.24251752017944028, -0.22677921604648787, -0.21450784474871654,
-0.20460809298399596, -0.19641230767523865, -0.18950049174485883,
-0.183563023007558, -0.17839901848958561, -0.17385245790339354,
-0.1698168964629332, -0.16620504003996217, -0.16293709460885708,
-0.15997703964855958, -0.1568854461102802, -0.1548380970701828},
{-1.0906222083146027, -0.5890370662118691, -0.4131343112660453,
-0.3349610403305263, -0.2901361654505692, -0.26184128550109165,
-0.24248800861336406, -0.22675446379783182, -0.2144865887364915,
-0.20458950612441384, -0.1963958177819194, -0.1894856957013218,
-0.18354963462265061, -0.17838680579728106, -0.17384124718026328,
-0.16980654849444932, -0.16619544185012103, -0.16292815615387468,
-0.15996868365444783, -0.15688062356081645, -0.15483073498207744},
{-1.0903118129854512, -0.5888647344975304, -0.41304029658160957,
-0.3348994095271607, -0.2900912098483417, -0.2618197693811197,
-0.2424585532206791, -0.2267297649031832, -0.21446538412815386,
-0.20457096889538917, -0.19637937604233002, -0.18947094667760922,
-0.18353629223702228, -0.17837463814372256, -0.173830080699922,
-0.16979624402146953, -0.16618588646375798, -0.1629192598701863,
-0.15996036924613577, -0.15687580206662233, -0.1548234134100568},
{-1.0900013675297977, -0.5886925081297392, -0.4129463690327668,
-0.3348378516949424, -0.29004631888052756, -0.2617982293577441,
-0.242429154105551, -0.22670511945921135, -0.21444423102237664,
-0.20455248139548132, -0.19636298255561258, -0.18945624477731116,
-0.1835229959475484, -0.1783625156278248, -0.1738189585568506,
-0.16978598313942683, -0.16617637397580154, -0.16291040585299754,
-0.15995209651492104, -0.1568709823074812, -0.15481613244839565},
{-1.0896908724286334, -0.5885203872210241, -0.41285252871404055,
-0.3347763669334256, -0.2900014926521237, -0.2617766657972851,
-0.24239981137829147, -0.22668052756881707, -0.2144231295223591,
-0.20453404372754136, -0.19634663742508707, -0.1894415901051758,
-0.18350974585146673, -0.1783504383502077, -0.1738078808539214,
-0.16977576594759114, -0.16616690448650218, -0.16290159419774142,
-0.15994386555674112, -0.1568661649570373, -0.15480889219507077},
{-1.0893803281621324, -0.5883483718841838, -0.4127587757186397,
-0.3347149553425055, -0.28995673126368615, -0.2617550790628371,
-0.24237052514518354, -0.22665598933112818, -0.21440207972568714,
-0.20451565599117316, -0.19633034074693256, -0.18942698276734404,
-0.1834965420475072, -0.1783384064130331, -0.17379684768640402,
-0.16976559254189283, -0.16615747809157, -0.16289282500105173,
-0.15993567646987117, -0.15686135067952733, -0.15480169274280797},
{-1.0890697352097263, -0.5881764622324575, -0.4126651101411909,
-0.33465361702359075, -0.28991203481850647, -0.26173346952781174,
-0.24234129551484074, -0.2266315048492018, -0.21438108173698112,
-0.20449731828750117, -0.19631409262900945, -0.18941242286940962,
-0.1834833846339805, -0.1783264199149457, -0.17378585915559341,
-0.16975546301944888, -0.16614809489122706, -0.1628840983555193,
-0.15992752934798915, -0.15685654013172723, -0.15479453419041533},
{-1.088759094050932, -0.5880046583793401, -0.41257153207662967,
-0.3345923520751981, -0.2898674034209634, -0.26171183756461147,
-0.24231212259588375, -0.22660707422356552, -0.2143601356550917,
-0.20447903071818274, -0.1962978931694792, -0.18939791051732868,
-0.18347027370970181, -0.17831447895977703, -0.17377491536123557,
-0.16974537748019003, -0.1661387549824056, -0.16287541435720243,
-0.15991942428910733, -0.15685173396438046, -0.15478741663257978},
{-1.0884484051640015, -0.5878329604381562, -0.4124780416193836,
-0.3345311606008039, -0.28982283717135005, -0.2616901835470955,
-0.24228300649708956, -0.2265826975569709, -0.21433924158396422,
-0.20446079338593393, -0.1962817424700205, -0.18938344581840028,
-0.18345720937524845, -0.17830258364925555, -0.17376401640331096,
-0.16973533601849766, -0.1661294584658961, -0.16286677310359465,
-0.15991136138952555, -0.1568469328171176, -0.1547803401644643},
{-1.08813766902664, -0.5876613685227525, -0.4123846388646406,
-0.33447004269874014, -0.28977833617577176, -0.26166850785756424,
-0.2422539473288836, -0.22655837495224063, -0.21431839962557575,
-0.20444260639030176, -0.19626564063603524, -0.1893690288807406,
-0.18344419172940007, -0.17829073408590546, -0.17375316238273797,
-0.16972533873750706, -0.16612020544035744, -0.16285817469007924,
-0.15990334074606238, -0.15684213732767915, -0.15477330488555907},
{-1.0878268861168578, -0.5874898827482227, -0.41229132391016776,
-0.33440899847362004, -0.2897339005374633, -0.26164681087274033,
-0.24222494519832338, -0.22653410651039252, -0.21429760988045388,
-0.20442446983340545, -0.19624958776531543, -0.1893546598081599,
-0.18343122087119212, -0.17827893036987774, -0.17374235339708122,
-0.1697153857310596, -0.16611099600198287, -0.16284961921334684,
-0.15989536245475477, -0.15683734811739924, -0.15476631088831994},
{-1.0875160569117384, -0.5873185032283814, -0.4121980968505454,
-0.3343480280266533, -0.28968953036226, -0.26162509298151804,
-0.24219600021676513, -0.22650989233639507, -0.2142768724558195,
-0.2044063838197161, -0.19623358396622592, -0.1893403387109558,
-0.18341829690199773, -0.17826717260731328, -0.1737315895510534,
-0.16970547710003103, -0.16610183025395742, -0.16284110677144525,
-0.15988742661829036, -0.15683256581036886, -0.15475935827394238},
{-1.087205181887171, -0.5871472300788909, -0.41210495778290124,
-0.3342871314592628, -0.2896452257539437, -0.2616033545682015,
-0.24216711249361111, -0.2264857325334404, -0.21425618745109887,
-0.20438834844931364, -0.19621762933711295, -0.18932606569515542,
-0.1834054199232824, -0.1782554609009992, -0.17372087094514654,
-0.16969561294333602, -0.16609270829393097, -0.16283263745935272,
-0.15987953333148397, -0.15682779101673816, -0.15475244713474012},
{-1.086894261519511, -0.5869760634139958, -0.41201190680481403,
-0.3342263088775397, -0.2896009868180016, -0.2615815960225234,
-0.24213828213810729, -0.2264616272062554, -0.21423555497176494,
-0.20437036382647022, -0.19620172398494162, -0.18931184087207242,
-0.18339259003695219, -0.17824379535328916, -0.17371019768017248,
-0.16968579336155898, -0.1660836302229285, -0.1628242113788474,
-0.1598716826954032, -0.1568230243419606, -0.15474557757008256},
{-1.0865832962840187, -0.5868050033509036, -0.41191894401437423,
-0.33416556038178413, -0.28955681366046804, -0.2615598177384797,
-0.24210950926242703, -0.2264375764571227, -0.21421497512206145,
-0.20435243005216108, -0.19618586801082216, -0.18929766434589368,
-0.18337980733999615, -0.17823217606667185, -0.1736995698579804,
-0.16967601845124847, -0.16607459613842934, -0.16281582862356458,
-0.15986387480627684, -0.15681826638306973, -0.1547387496743582},
{-1.0862722866559302, -0.5866340500044522, -0.4118260695086846,
-0.33410488607656674, -0.2895127063875904, -0.2615380201059381,
-0.24208079397592996, -0.22641358039302872, -0.21419444800547893,
-0.20433454723139022, -0.19617006151852223, -0.18928353622763439,
-0.18336707193812884, -0.17822060314793475, -0.17368898758051898,
-0.16966628831339392, -0.16606560614248167, -0.16280748929441557,
-0.1598561097638651, -0.15681351772892782, -0.1547319635454869},
{-1.0859612331089892, -0.5864632034909434, -0.41173328338667403,
-0.33404428606772285, -0.28946866510565883, -0.2615162035263552,
-0.24205213638812495, -0.2263896391175706, -0.21417397372750457,
-0.20431671546744923, -0.19615430461465166, -0.1892694566270947,
-0.18335438393394554, -0.17820907670102315, -0.17367845095164824,
-0.16965660304857266, -0.16605666033610333, -0.16279919349086924,
-0.15984838767139564, -0.15680877896512158, -0.15472521927992489},
{-1.0856501361177138, -0.5862924639272471, -0.4116405857471719,
-0.3339837604567606, -0.2894246899228321, -0.261494368396626,
-0.24202353661221565, -0.2263657527368892, -0.2141535523941016,
-0.20429893486416262, -0.1961385974013865, -0.1892554256519503,
-0.18334174343007703, -0.1781975968312608, -0.17366796007378582,
-0.16964696275883995, -0.16604775881867084, -0.16279094130949545,
-0.15984070862734256, -0.1568040506670414, -0.15471851697513017},
{-1.0853389961551976, -0.5861218314303152, -0.4115479766899739,
-0.3339233093529259, -0.2893807809448745, -0.2614725151191024,
-0.24199499475955122, -0.22634192135903675, -0.214133184110338,
-0.20428120552703177, -0.19612293998604713, -0.18924144341355031,
-0.1833291505299144, -0.178186163643673, -0.17365751505211335,
-0.16963736754378544, -0.16603890169181312, -0.16278273285276867,
-0.1598330727317645, -0.15679933340334884, -0.15471185672718235},
{-1.085027813694083, -0.5859513061177246, -0.41145545631443525,
-0.33386293285850854, -0.28933693828160045, -0.2614506440978559,
-0.2419665109410758, -0.22631814508847015, -0.21411286898253934,
-0.20426352755879407, -0.19610733247248646, -0.18922751002033777,
-0.18331660533475258, -0.1781747772422122, -0.1736471159873929,
-0.16962781750606126, -0.16603008905591565, -0.16277456821891434,
-0.15982548008581432, -0.15679462773747588, -0.15470523863262997},
{-1.0847165892073463, -0.5857808881067541, -0.4113630247215809,
-0.33380263108058017, -0.28929316203977606, -0.26142875573583524,
-0.2419380852707249, -0.22629442403447086, -0.21409260711755707,
-0.20424590106663487, -0.19609177496668195, -0.1892136255837329,
-0.183304107952992, -0.17816343773550614, -0.1736367629867459,
-0.16961831274861083, -0.1660213210129271, -0.16276644750927005,
-0.1598179307923573, -0.15678993422603327, -0.1546986627893432},
{-1.0844053231664148, -0.5856105775155811, -0.41127068201092953,
-0.33374240412501166, -0.2892494523278515, -0.2614068504427962,
-0.24190971785412785, -0.2262707582997905, -0.21407239862126204,
-0.20422832615276576, -0.19607626757216678, -0.18919979021079314,
-0.18329165848420104, -0.17815214522634193, -0.17362645615241945,
-0.1696088533702138, -0.16601259766193976, -0.16275837082224598,
-0.15981042495150888, -0.15678525341490968, -0.15469212929295395},
{-1.0840940160427763, -0.585440374462511, -0.4111784282839466,
-0.3336822520988676, -0.2892058092572185, -0.26138492862931173,
-0.241881408811075, -0.2262471479976682, -0.2140522436034189,
-0.20421080292744875, -0.19606081040011247, -0.18918600401504193,
-0.18327925703768244, -0.17814089982490344, -0.17361619559219577,
-0.16959943947873768, -0.16600391910863266, -0.1627503382629456,
-0.15980296266884153, -0.15678058584967403, -0.15468563824245507},
{-1.0837826683076308, -0.5852702790665099, -0.4110862636430852,
-0.33362217510984493, -0.28916223293433774, -0.2613629907054573,
-0.24185315824996678, -0.22622359323408148, -0.21403214216836375,
-0.20419333149410335, -0.19604540355186373, -0.18917226710719603,
-0.18326690371692678, -0.1781297016343686, -0.17360598140643901,
-0.16959007117325342, -0.1659952854517286, -0.1627423499293883,
-0.1597955440426233, -0.15677593206481077, -0.15467918973003236},
{-1.083471280430789, -0.5851002914458334, -0.4109941881889796,
-0.33356217326267057, -0.28911872347070044, -0.2613410370869289,
-0.24182496628430528, -0.22620009411828335, -0.21401209442755942,
-0.20417591196064677, -0.19603004713896155, -0.189158579597418,
-0.1832545986277836, -0.17811855076392646, -0.17359581370625676,
-0.16958074856257355, -0.16598669679506628, -0.16273440592507882,
-0.1597881691791585, -0.15677129259331224, -0.1546727838596169},
{-1.0831598528828223, -0.5849304117209613, -0.4109022020244879,
-0.3335022466683455, -0.2890752809762702, -0.2613190681844486,
-0.24179683302759258, -0.22617665075819815, -0.21399210048896578,
-0.20415854443302806, -0.1960147412645341, -0.1891449415968509,
-0.18324234187757327, -0.17810744732103245, -0.17358569259567247,
-0.16957147174812803, -0.16597815323958542, -0.16272650635227137,
-0.15978083817955735, -0.1567666679555515, -0.1546664207220445},
{-1.082848386132536, -0.5847606400108987, -0.4108103052522125,
-0.3334423954329324, -0.28903190556097513, -0.2612970844209457,
-0.24176875858956492, -0.22615326326570795, -0.21397216046086243,
-0.20414122902086973, -0.19599948603941186, -0.18913135321619023,
-0.18323013357028373, -0.17809639141236033, -0.17357561817838985,
-0.16956224083473614, -0.16596965488837867, -0.16271865131368912,
-0.15977355114851122, -0.1567620586696563, -0.15466010041795641},
{-1.082536880649812, -0.5845909764365658, -0.4107184979763616,
-0.3333826196671197, -0.2889885973394044, -0.2612750862144395,
-0.24174074308886873, -0.2261299317507124, -0.21395227445425036,
-0.20412396583299852, -0.19598428157219416, -0.18911781456947807,
-0.1832179738174773, -0.1780853831471063, -0.1735655905637472,
-0.16955305593153014, -0.16596120184621554, -0.16271084091127364,
-0.1597663081919265, -0.15675746524800616, -0.1546538230431267},
{-1.0822253369024004, -0.5844214211178489, -0.4106267802995873,
-0.333322919478789, -0.2889453564179547, -0.26125307398154973,
-0.2417127866339044, -0.22610665632267057, -0.2139324425774447,
-0.20410675497505792, -0.19596912796754395, -0.18910432576549852,
-0.1832058627225237, -0.17807442263096362, -0.17355560985761542,
-0.1695439171391726, -0.16595279421289888, -0.1627030752484373,
-0.1597591094099755, -0.1567528881940916, -0.15464758869303807},
{-1.0819137553584497, -0.5842519741757322, -0.410535152326581,
-0.3332632949775274, -0.2889021829124587, -0.2612310481496891,
-0.24168488934304122, -0.2260834370941751, -0.2139126649437202,
-0.20408959655993186, -0.19595402533914097, -0.18909088691863474,
-0.18319380039572764, -0.1780635099745993, -0.17354567616902727,
-0.16953482457022062, -0.16594443209406506, -0.16269535443144179,
-0.15975195491091654, -0.15674832800970506, -0.15464139746679706},
{-1.0816021364858344, -0.5840826357315443, -0.41044361416093267,
-0.333203746272531, -0.28885907693301505, -0.26120900913751655,
-0.24165705132597282, -0.2260602741758646, -0.21389294166101536,
-0.20407249069605626, -0.19593897379181868, -0.1890774981390848,
-0.18318178694491394, -0.17805264528772824, -0.17353578960307914,
-0.16952577832725524, -0.165936115592757, -0.16268767856353605,
-0.15974484479877304, -0.15674378518939847, -0.1546352494612293},
{-1.0812904807511217, -0.5839134059069373, -0.41035216590961454,
-0.3331442734759449, -0.2888160385938576, -0.2611869573746475,
-0.24162927269905765, -0.2260371676797348, -0.21387327284357127,
-0.20405543749331656, -0.19592397343993895, -0.18906415954079137,
-0.18316982247931435, -0.17804182867655527, -0.17352595026716244,
-0.169516778517405, -0.16592784481185419, -0.16268004774677536,
-0.1597377791787622, -0.15673926021835882, -0.15462914477193124},
{-1.080978788621369, -0.5837442848244443, -0.41026080767620243,
-0.3330848766972494, -0.28877306800833935, -0.26116489328672543,
-0.24160155357596835, -0.22601411772014757, -0.21385365860021466,
-0.20403843706490932, -0.19590902438967817, -0.18905087123545883,
-0.18315790710722268, -0.17803106025246507, -0.1735161582720508,
-0.16950782525098873, -0.16591961985820092, -0.1626724620891835,
-0.1597307581570817, -0.15673475358168076, -0.15462308349633958},
{-1.0806670605628312, -0.5835752726060441, -0.410169539567498,
-0.333025556048689, -0.28873016528859097, -0.26114281730071554,
-0.24157389407190522, -0.2259911244097026, -0.21383409904706951,
-0.2040214895219421, -0.19589412675404105, -0.18903763333707246,
-0.18314604094054943, -0.17802034012584755, -0.17350641372569697,
-0.16949891863511368, -0.16591144083257348, -0.1626649216962548,
-0.15972378184157066, -0.15673026575518634, -0.15461706573100287},
{-1.0803552970406862, -0.5834063693738365, -0.41007836168908085,
-0.3329663116395736, -0.2886873305498412, -0.2611207298488054,
-0.2415462943008322, -0.22596818786120565, -0.21381459429547078,
-0.204004594975828, -0.19587928064525784, -0.1890244459586583,
-0.1831342240883842, -0.17800966840600552, -0.17349671673508027,
-0.16949005877992107, -0.16590330784467966, -0.1626574266713945,
-0.1597168503361317, -0.15672579721356072, -0.15461109157426733},
{-1.0800434985206664, -0.5832375752519638, -0.40998727414845604,
-0.3329071435829576, -0.28864456390578397, -0.2610986313578678,
-0.24151875437754455, -0.22594530818897596, -0.21379514445614944,
-0.2039877535386907, -0.1958644861689791, -0.18901130921029363,
-0.18312245666046323, -0.17799904520212095, -0.1734870674093969,
-0.16948124579010226, -0.16589522099489784, -0.1626499771243246,
-0.15970996374600333, -0.1567213484177543, -0.15460516112008094},
{-1.0797316654673885, -0.5830688903635313, -0.4098962770521908,
-0.33284805199199496, -0.2886018654721809, -0.2610765222658529,
-0.24149127441801, -0.2259224855085904, -0.21377574964741797,
-0.20397096532687442, -0.19584974344360262, -0.18899822320783954,
-0.18311073876944306, -0.17798847062741174, -0.17347746585846835,
-0.16947247977703483, -0.1658871803909605, -0.16264257315955888,
-0.15970312218522764, -0.15671691983350655, -0.1545992744674365},
{-1.0794197983450715, -0.5829003148327985, -0.40980537050865706,
-0.3327890369787738, -0.2885592353641542, -0.26105440300134575,
-0.2414638545363843, -0.22589971993291869, -0.21375640998015655,
-0.20395423045160754, -0.19583505257728007, -0.18898518806491893,
-0.1830990705247615, -0.1779779447905625, -0.17346791219190294,
-0.16946376085035553, -0.16587918613968355, -0.16263521488342292,
-0.15969632575614412, -0.1567125119153232, -0.15459343171213646},
{-1.0791078976179769, -0.582731848783169, -0.4097145546251397,
-0.3327300986574997, -0.2885166736965914, -0.2610322740015789,
-0.24143649484926044, -0.22587701158103357, -0.2137371255708942,
-0.203937549030357, -0.19582041368590097, -0.18897220389673208,
-0.1830874520418888, -0.17796746780545902, -0.17345840651947242,
-0.1694550891214277, -0.1658712383468881, -0.16262790240816827,
-0.1596895745702156, -0.15670812511631027, -0.15458763295193734},
{-1.0787959637492115, -0.5825634923409275, -0.40962382951079235,
-0.3326712371396354, -0.2884741805868032, -0.26101013570312404,
-0.24140919547163975, -0.22585436056539265, -0.21371789653381512,
-0.20392092117594274, -0.19580582688045212, -0.1889592708114165,
-0.18307588342692327, -0.1779570397793293, -0.17344894894950613,
-0.16944646469651303, -0.1658633371168392, -0.16262063583735653,
-0.1596828687318208, -0.15670375987898666, -0.15458187828224368},
{-1.0784839972020386, -0.5823952456301917, -0.4095331952743848,
-0.3326124525401326, -0.2884317561495493, -0.2609879885389148,
-0.2413819565201507, -0.2258317670054737, -0.21369872298430437,
-0.20390434700492932, -0.1957912922728795, -0.18894638892885496,
-0.1830643647996908, -0.17794666082805577, -0.17343953959296243,
-0.16943788768800516, -0.16585548255887517, -0.16261341528014128,
-0.15967620835122176, -0.1566994166478608, -0.15457616779963956},
{-1.0781719984388083, -0.5822271087759212, -0.4094426520251133,
-0.33255374497356627, -0.288389400503398, -0.2609658329517117,
-0.24135477810993677, -0.22580923101503458, -0.2136796050387133,
-0.20388782663409444, -0.19577680998182956, -0.18893355836062398,
-0.1830528962679665, -0.17793633106230544, -0.1734301785596699,
-0.1694293582052353, -0.1658476747801103, -0.16260624084733877,
-0.15966959354007315, -0.15669509585845276, -0.15457050160210883},
{-1.0778599679221692, -0.5820590819059923, -0.4093521998742631,
-0.33249511455522907, -0.2883471137671165, -0.2609436693795928,
-0.24132766035813802, -0.2257867527142281, -0.2136605428136562,
-0.20387136017961183, -0.19576238011680402, -0.18892077922065198,
-0.18304147794785308, -0.17792605059507594, -0.17342086595974848,
-0.16942087635904102, -0.16583991388709762, -0.1625991126452675,
-0.15966302440408242, -0.15669079794135854, -0.15456487978596556},
{-1.0775479061130255, -0.5818911651443948, -0.40926183892967316,
-0.33243656140079736, -0.2883048960546688, -0.2609214982601884,
-0.2413006033822782, -0.22576433221953351, -0.21364153642575445,
-0.2038549477612719, -0.19574800279702487, -0.18890805162661906,
-0.1830301099545153, -0.17791581954109148, -0.17341160190641602,
-0.16941244226256202, -0.1658321999908452, -0.1625920307881472,
-0.15965650105607665, -0.15668652332683308, -0.1545593024494636},
{-1.0772358134731626, -0.5817233586190085, -0.4091715693037372,
-0.33237808562260795, -0.28826274748711, -0.26089932003718985,
-0.24127360729664105, -0.22574196964962567, -0.21362258599182837,
-0.20383858949441702, -0.19573367813566733, -0.18889537568918513,
-0.1830187923978599, -0.17790563801024462, -0.17340238650809425,
-0.1694040560252148, -0.16582453319756496, -0.16258499538271565,
-0.1596500236057281, -0.15668227243561716, -0.15455376968756696},
{-1.0769236904632145, -0.581555662456676, -0.40908139110712227,
-0.332319687339627, -0.2882206681829871, -0.2608771351504373,
-0.2412466722215214, -0.22571966512346364, -0.21360369163177495,
-0.20382228549846104, -0.19571940624808803, -0.18888275152740164,
-0.18300752539724385, -0.17789550611956173, -0.17339321987834921,
-0.16939571775811402, -0.1658169136170926, -0.16257800654214805,
-0.15964359216253143, -0.15667804568791865, -0.15454828160092404},
{-1.0766115375439895, -0.581388076785263, -0.40899130445167486,
-0.3322613666676375, -0.2881786582585235, -0.2608549440436434,
-0.2412197982699027, -0.22569741875917515, -0.2135848534601763,
-0.20380603589257618, -0.1957051872508444, -0.18887017925216298,
-0.18299630906528108, -0.17788542397934748, -0.17338410212480682,
-0.16938742757246672, -0.16580934135767222, -0.1625710643743119,
-0.15963720683819815, -0.15667384349551128, -0.1545428382838807},
{-1.0762993551751556, -0.5812206017321984, -0.40890130944980285,
-0.33220312372338867, -0.28813671783819217, -0.2608327471629792,
-0.24119298556380642, -0.22567523067870354, -0.2135660715995229,
-0.20378984079657414, -0.19569102126268945, -0.18885765898271245,
-0.18298514352012063, -0.17787539170804934, -0.17337503336386106,
-0.16937918558211607, -0.16580181653155535, -0.16256416899423698,
-0.15963086774582536, -0.15666966627026824, -0.1545374398365027},
{-1.075987143816576, -0.5810532374263531, -0.40881140621348067,
-0.3321449586254204, -0.28809484703709387, -0.2608105449476099,
-0.24116623421788574, -0.22565310099962943, -0.21354734616541293,
-0.2037737003292719, -0.1956769083992569, -0.18884519083112394,
-0.18297402887572645, -0.17786540941743567, -0.17336601370259075,
-0.16937099189641458, -0.1657943392461192, -0.16255732051212135,
-0.1596245749917884, -0.1566655144165665, -0.1545320863546209},
{-1.0756749039268385, -0.5808859839956142, -0.4087215948564378,
-0.33208687148833604, -0.2880530459782733, -0.26078833784769984,
-0.24113954435101448, -0.22563102984217664, -0.2135286772799958,
-0.2037576146110709, -0.19566284877888052, -0.18883277491534045,
-0.18296296524852096, -0.17785547722527184, -0.17335704325891044,
-0.1693628466310244, -0.16578690961566878, -0.16255051904138185,
-0.1596183286951529, -0.15666138833901755, -0.15452677794252168},
{-1.0753626359653268, -0.5807188415701141, -0.40863187549185653,
-0.3320288624330985, -0.28801131478173403, -0.2607661263060663,
-0.24111291608157615, -0.22560901732821037, -0.21351006505987868,
-0.20374158376257867, -0.19564884251625614, -0.1888204113496883,
-0.1829519527553316, -0.1778455952422675, -0.17334812214009077,
-0.1693547498957031, -0.16577952774736104, -0.1625437646929484,
-0.1596121289633956, -0.15665728843151783, -0.1545215146933714},
{-1.0750503403901774, -0.5805518102782052, -0.40854224823297614,
-0.33197093157646407, -0.2879696535677425, -0.2607439107708984,
-0.24108634952635555, -0.2255870635789421, -0.21349150962729624,
-0.20372560790637095, -0.19563488973572873, -0.18880810025176942,
-0.18294099151604826, -0.17783576358927178, -0.17333925046268206,
-0.169346701804038, -0.16577219375437835, -0.1625370575820284,
-0.15960597591077885, -0.1566532150898965, -0.15451629671026978},
{-1.0747380176594667, -0.5803848902514979, -0.40845271319626164,
-0.3319130790390119, -0.2879280624607361, -0.2607216916897599,
-0.24105984480561915, -0.2255651687156046, -0.2134730111036376,
-0.20370968716255078, -0.1956209905539268, -0.18879584173701858,
-0.18293008164589963, -0.17782598237975122, -0.1733304283372803,
-0.16933870246916882, -0.1657649077499599, -0.16253039782037604,
-0.15959986965130923, -0.15664916870290568, -0.15451112409478895},
{-1.074425668230404, -0.5802180816190621, -0.40836327049441934,
-0.33185530493863524, -0.28788654157929017, -0.2606994695083813,
-0.24103340203571122, -0.22554333285967942, -0.2134545696077268,
-0.2036938216517612, -0.19560714509066912, -0.18878363592148162,
-0.18291922326408638, -0.1778162517305546, -0.17332165587943393,
-0.16933075200336134, -0.16575766984563245, -0.16252378552238156,
-0.15959381029534114, -0.1566451496571446, -0.15450599694410982},
{-1.0741132925601917, -0.5800513845121635, -0.40827392024398534,
-0.3317976093963111, -0.28784509104901446, -0.2606772446779573,
-0.24100702133841168, -0.2255215561341828, -0.21343618526262986,
-0.20367801149774323, -0.19559335346654905, -0.18877148292288126,
-0.18290841648858702, -0.17780657175824643, -0.173312933202169,
-0.1693228505209703, -0.16575048015305072, -0.16251722080467346,
-0.15958779795878542, -0.1566411583341818, -0.15450091536502697},
{-1.0738008911060426, -0.5798847990619684, -0.40818466256031627,
-0.33173999253055086, -0.28780371099072966, -0.26065501764507104,
-0.24098070283089612, -0.2254998386601983, -0.2134178581881443,
-0.2036622568212394, -0.1955796157995806, -0.18875938285664517,
-0.18289766143974617, -0.17779694258162237, -0.17330426042155977,
-0.16931499813641437, -0.16574333878711656, -0.1625107037800788,
-0.15958183275610338, -0.15663719511329788, -0.15449587945632004},
{-1.0734884643238374, -0.579718325399945, -0.40809549756047403,
-0.33168245446385214, -0.2877624015278357, -0.2606327888611659,
-0.2409544466314273, -0.22547818056182223, -0.21339958850690977,
-0.20364655774573492, -0.19556593221553698, -0.18874733584138426,
-0.18288695823708423, -0.17778736431604614, -0.17329563765043332,
-0.16930719496226487, -0.1657362458602094, -0.16250423456222762,
-0.15957591479941158, -0.1566332603669096, -0.15449088932469834},
{-1.073176012669716, -0.5795519636586342, -0.40800642535995735,
-0.33162499531565004, -0.28772116278534554, -0.26061055877536177,
-0.24092825286120956, -0.22545658196223428, -0.21338137634119647,
-0.20363091439291736, -0.19555230283380354, -0.18873534199343567,
-0.1828763069989705, -0.17777783708215367, -0.1732870650059226,
-0.1692994411124218, -0.16572920148853854, -0.1624978132705479,
-0.1595700442066743, -0.15662935446837878, -0.15448594507233082},
{-1.0728635365989838, -0.5793857139701828, -0.40791744607742686,
-0.331567615209444, -0.2876799948862825, -0.2605883278384695,
-0.2409021216381717, -0.22543504298488415, -0.21336322181544887,
-0.2036153268871317, -0.19553872777726156, -0.18872340143129662,
-0.18286570784870548, -0.17776836099667293, -0.17327854260463482,
-0.16929173670190067, -0.1657222057842631, -0.16249144001823623,
-0.1595642210898376, -0.15662547778293145, -0.15448104680486097},
{-1.0725510365670523, -0.5792195764668477, -0.4078285598288858,
-0.3315103142642428, -0.2876388979566471, -0.2605660965017904,
-0.24087605308346127, -0.2254135637530723, -0.21334512505100633,
-0.20359979535231787, -0.19552520717112998, -0.18871151427411803,
-0.18285516090556797, -0.17775893617919536, -0.17327007056154997,
-0.16928408184712396, -0.16571525886617877, -0.16248511492307927,
-0.15955844556556542, -0.1566216306781385, -0.154476194630071},
{-1.072238513028605, -0.5790535512833941, -0.407739766734764,
-0.33145309260486755, -0.287597872118468, -0.2605438652132861,
-0.24085004731671944, -0.22539214439139243, -0.21332708616985485,
-0.20358431990862869, -0.19551174113221492, -0.1886996806359349,
-0.18284466628866625, -0.17774956274767817, -0.1732616489949521,
-0.16927647666000212, -0.16570836084537888, -0.1624788381004194,
-0.15955271774731017, -0.15661781350804915, -0.15447138865275178},
{-1.0719259664382434, -0.5788876385521249, -0.40765106691131336,
-0.33139595035301284, -0.2875569174999555, -0.26052163442996346,
-0.240824104456415, -0.22537078502504215, -0.213309105299345,
-0.20356890068356392, -0.19549832979230786, -0.18868790063936558,
-0.18283422412552142, -0.17774024082402207, -0.1732532780228908,
-0.16926892125871973, -0.16570151184127724, -0.1624726096703597,
-0.15954703775421564, -0.15661402663715762, -0.15446662898204977},
{-1.0716133972498696, -0.5787218384082706, -0.4075624604796815,
-0.33133888763117625, -0.2875160342273162, -0.26049940460083576,
-0.2407982246240863, -0.22534948577747826, -0.21329118256041113,
-0.20355353779795848, -0.1954849732714834, -0.18867617440141515,
-0.18282383453249196, -0.17773097052744902, -0.17324495776288984,
-0.16926141575609677, -0.16569471196844887, -0.16246642974716963,
-0.15954140570064368, -0.15661027041127085, -0.15446191572554113},
{-1.07130080591687, -0.5785561509855128, -0.4074739475578042,
-0.33128190456523043, -0.28747522242419166, -0.26047717617800714,
-0.2407724079397937, -0.22532824677571028, -0.21327331807876249,
-0.2035382313772942, -0.1954716716973266, -0.18866450204226481,
-0.18281349763714871, -0.17772175197841733, -0.17323668833535777,
-0.16925396027038175, -0.1656879613465989, -0.16246029845240884,
-0.15953582170462255, -0.1566065451851486, -0.1544572489937508},
{-1.070988192893239, -0.5783905764197073, -0.40738552826745433,
-0.3312250012775806, -0.2874344822201991, -0.2604549496153794,
-0.2407466545240453, -0.22530706814303159, -0.2132555119789572,
-0.2035229815456887, -0.19545842519368506, -0.188652883678337,
-0.1828032135576123, -0.17771258529641898, -0.17322846985801021,
-0.16924655491619234, -0.16568126009049422, -0.16245421590220133,
-0.15953028587993856, -0.1566028513039086, -0.15445262889650735},
{-1.0706755586312404, -0.5782251148461697, -0.40729720272874914,
-0.33116817789237274, -0.28739381374062134, -0.26043272536239925,
-0.240720964495992, -0.2252859500066009, -0.21323776438516973,
-0.2035077884259735, -0.1954452338854722, -0.18864131943178108,
-0.18279298242188702, -0.17770347060493918, -0.1732203024515968,
-0.16923919981024937, -0.1656746083185041, -0.1624481822155488,
-0.1595247983445205, -0.15659918911030246, -0.15444805554324859},
{-1.070362903583657, -0.5780597664001164, -0.40720897106165665,
-0.33111143453537295, -0.2873532171140667, -0.2604105038762583,
-0.24069533797795373, -0.22526489249158743, -0.21322007542355692,
-0.2034926521455347, -0.19543209790456473, -0.18862980942327567,
-0.18278280435252725, -0.17769440802484127, -0.17321218623786905,
-0.1692318950697711, -0.16566800614981503, -0.16244219751300903,
-0.1595193592183506, -0.15659555894599464, -0.15444352904492575},
{-1.0700502282022484, -0.5778945312180426, -0.40712083338935656,
-0.33105477133253913, -0.28731269247001734, -0.26038828561055993,
-0.24066977509195908, -0.22524389572676995, -0.2132024452207517,
-0.20347757282836199, -0.19541901737495238, -0.18861835377322933,
-0.18277267947328824, -0.17768539768105285, -0.17320412133633312,
-0.1692246408125655, -0.16566145370484975, -0.16243626191347715,
-0.15951396861809286, -0.1565919611443789, -0.15443904951740706},
{-1.069737532939559, -0.5777294094370689, -0.4070327898322219,
-0.33099818840870654, -0.2872722399332517, -0.2603660710125908,
-0.24064427595609317, -0.22522295983537077, -0.21318487390094987,
-0.20346255059801877, -0.19540599242460388, -0.1886069526008285,
-0.18276260790926102, -0.17767643969243352, -0.1731961078701829,
-0.16921743715565185, -0.16565495110049966, -0.16243037553775252,
-0.15950862665962262, -0.15658839604103036, -0.15443461706941264},
{-1.069424818246663, -0.5775644011941594, -0.40694484051364554,
-0.33094168588902306, -0.2872318596354333, -0.26034386054024594,
-0.24061884069230643, -0.22520208494574234, -0.21316736158914296,
-0.203447585580669, -0.19539302318266039, -0.1885956060270786,
-0.18275258978351872, -0.1776675341828664, -0.1731881459585125,
-0.1692102842163905, -0.16564849845887863, -0.16242453850611582,
-0.15950333346286527, -0.1565848639662093, -0.15443023181646254},
{-1.0691120845746092, -0.577399506626989, -0.40685698555729743,
-0.33088526390240247, -0.2871915517045167, -0.2603216546450611,
-0.24059346942441096, -0.22518127118573972, -0.21314990841552373,
-0.20343267790181585, -0.19538010977740328, -0.1885843141756851,
-0.18274262522491114, -0.17765868127731466, -0.17318023572842378,
-0.16920318211430896, -0.1656420958995568, -0.16241875093912483,
-0.15949808914678698, -0.15658136524480426, -0.15442589387189543},
{-1.068799332374578, -0.5772347258733319, -0.4067692250855046,
-0.33082892257422714, -0.2871513162694157, -0.2602994537811085,
-0.2405681622687581, -0.22516051867997078, -0.21313251450322923,
-0.2034178276873959, -0.19536725233950136, -0.18857307716574212,
-0.18273271435746352, -0.17764988109764346, -0.1731723772992737,
-0.16919613096598596, -0.16563574354177746, -0.1624130129570247,
-0.15949289383004128, -0.15657790020166118, -0.1544216033488155},
{-1.0684865620962718, -0.5770700590720921, -0.4066815592233297,
-0.3307726620335316, -0.2871111534647426, -0.26027725840484806,
-0.24054291935333794, -0.22513982756118622, -0.21311517998292118,
-0.20340303506418422, -0.19535445099960924, -0.1885618951230157,
-0.18272285730996884, -0.17764113377077706, -0.17316457079621728,
-0.16918913089484988, -0.1656294415119106, -0.16240732468537544,
-0.1594877476332428, -0.1565744691579951, -0.15441736036520126},
{-1.0681737741903952, -0.5769055063619319, -0.40659398809465586,
-0.3307164824084836, -0.2870710634163842, -0.2602550689643124,
-0.24051774079553923, -0.22511919795402946, -0.21309790498035142,
-0.20338830015742104, -0.19534170588840993, -0.1885507681685752,
-0.18271305420643813, -0.17763243941941198, -0.17315681634095625,
-0.16918218201534074, -0.16562318992679792, -0.16240168624170082,
-0.15948265067230238, -0.1565710724301539, -0.15441316503225977},
{-1.0678609691061993, -0.5767410678818834, -0.40650651182488673,
-0.3306603838259221, -0.2870310462583916, -0.2602328859183345,
-0.24049262672067329, -0.22509862998780505, -0.21308068962370186,
-0.20337362309521723, -0.19532901713761675, -0.18853969642616164,
-0.18270330517540856, -0.17762379816910823, -0.17314911406040778,
-0.16917528445224406, -0.16561698891246834, -0.16239609775220742,
-0.15947760307306424, -0.15656771033412298, -0.15440901747108882},
{-1.0675481472931274, -0.5765767437718452, -0.40641913053882917,
-0.33060436641603275, -0.28699110212106405, -0.2602107097155084,
-0.2404675772485021, -0.225078123791576, -0.2130635340415239,
-0.20335900400208828, -0.19531638487710268, -0.1885286800186492,
-0.1826936103432999, -0.17761521014414683, -0.17314146407999687,
-0.16916843832434836, -0.16561083858982784, -0.1623905593381494,
-0.15947260495084237, -0.15656438318065113, -0.15440491779462917},
{-1.0672353092002247, -0.5764125341716593, -0.40633184436317293,
-0.3305484303075943, -0.2869512311352196, -0.26018854081272735,
-0.24044259250180033, -0.2250576794934105, -0.2130464383624613,
-0.2033444430078717, -0.1953038092431143, -0.18851771907100812,
-0.1826839698397933, -0.17760667547209152, -0.17313386652087814,
-0.16916164375114562, -0.16560473908308637, -0.16238507112290534,
-0.15946765643052174, -0.1565610912787463, -0.15440086611929615},
{-1.066922455276515, -0.576248439223292, -0.4062446534250057,
-0.33049257563195056, -0.28691143343746006, -0.2601663796641418,
-0.24041767260512614, -0.22503729722432553, -0.2130294027162165,
-0.2033299402405433, -0.1952912903672157, -0.18850681370898315,
-0.18267438379330514, -0.1775981942784881, -0.17312632150933638,
-0.16915490085713714, -0.16559869051756948, -0.16237963323090554,
-0.15946275763096196, -0.156557834933146, -0.1543968625661165},
{-1.0666095859701095, -0.5760844590662231, -0.4061575578498662,
-0.33043680251807217, -0.2868717091557187, -0.26014422671892845,
-0.24039281767960574, -0.2250169771115509, -0.21301242723070146,
-0.20331549582676445, -0.1952788283826905, -0.18849596405532765,
-0.18266485233153418, -0.1775897666877455, -0.17311882917218213,
-0.16914820976072775, -0.1655926930137852, -0.16237424578439885,
-0.15945790867332477, -0.1565546144471881, -0.15439290724771126},
{-1.0662967017284046, -0.575920593842774, -0.40607055776618495,
-0.33038111109704715, -0.2868320584267394, -0.26012208243339074,
-0.24036802784914357, -0.2249967192874962, -0.21299551203696154,
-0.20330110989446837, -0.1952664234258492, -0.1884851702369943,
-0.18265537558306022, -0.17758139282920382, -0.17311138963439987,
-0.16914157058720036, -0.1655867467008889, -0.16236890890956346,
-0.159453109680598, -0.1565514301225619, -0.1543890002867414},
{-1.0659838030003321, -0.5757568436948617, -0.40598365330181707,
-0.3303255015000346, -0.2867924813828182, -0.26009994725982466,
-0.24034330323733855, -0.22497652388079814, -0.2129786572640171,
-0.20328678257557442, -0.19525407562923647, -0.1884744323812768,
-0.1826459536789784, -0.17757307282881385, -0.17310400302289963,
-0.16913498345824962, -0.16558085170245818, -0.16236362273092908,
-0.15944836077395763, -0.15654828225600426, -0.15438514179999174},
{-1.0656708902323935, -0.5755932087643245, -0.40589684458599606,
-0.3302699738593944, -0.2867529781583045, -0.2600778216508246,
-0.24031864396714298, -0.22495639102312737, -0.21296186304330433,
-0.20327251399702106, -0.1952417851303494, -0.1884637506124136,
-0.18263658674721484, -0.17756480681178743, -0.17309666946235325,
-0.1691284484961244, -0.16557500814244008, -0.16235838737079433,
-0.15944366207742178, -0.15654517113954114, -0.1543813319064995},
{-1.0653579638720032, -0.5754296891949124, -0.40581013174663383,
-0.3302145283064277, -0.2867135488885211, -0.2600557060594255,
-0.24029405016329264, -0.2249363208438382, -0.21294512950341016,
-0.20325830428809866, -0.19522955206407744, -0.18845312505865053,
-0.18262727492030706, -0.17755659490794784, -0.17308938908136184,
-0.16912196582589445, -0.1655692161505513, -0.16235320295865563,
-0.1594390137130759, -0.1565420970687228, -0.15437757072628244},
{-1.0650450243657197, -0.5752662851288974, -0.40572351491437075,
-0.33015916497548403, -0.2866741937073627, -0.26003360093680783,
-0.2402695219499691, -0.22491631347664054, -0.2129284567798635,
-0.20324415358175685, -0.19521737656742744, -0.18844255584836134,
-0.18261801832661462, -0.17754843724494407, -0.17308216200521542,
-0.16911553557157077, -0.16556347585046893, -0.16234806961727344,
-0.1594344158051726, -0.15653906033028164, -0.15437385837869044},
{-1.0647320721598952, -0.5751029967103776, -0.4056369942182343,
-0.33010388399753055, -0.2866349127519925, -0.26001150673874207,
-0.24024505945245522, -0.2248963690513932, -0.21291184500136495,
-0.20323006200737836, -0.19520525878230188, -0.18843204310944373,
-0.1826088170992577, -0.17754033394984248, -0.17307498836287039,
-0.16910915785980762, -0.16555778737256333, -0.16234298747464493,
-0.15942986847608154, -0.15653606121669839, -0.1543701949878482},
{-1.0644191077009317, -0.5749398240838133, -0.4055505697904067,
-0.3300486855082596, -0.2865957061572857, -0.2599894239125362,
-0.24022066279391652, -0.22487648769986635, -0.21289529429911624,
-0.20321602969528385, -0.19519319883799824, -0.18842158696869404,
-0.18259967136673794, -0.17753228515141473, -0.1730678682788067,
-0.16910283281188043, -0.16555215084074604, -0.1623379566551293,
-0.1594253718490748, -0.15653310000616472, -0.15436658066960263},
{-1.0641061314342863, -0.5747767673928195, -0.4054642417601997,
-0.3299935696407985, -0.2865565740600573, -0.25996735291403184,
-0.24019633210065905, -0.22485666955505224, -0.21287880480861787,
-0.20320205677933956, -0.19518119687899116, -0.18841118755765507,
-0.18259058126368188, -0.17752429097890143, -0.17306080188424744,
-0.16909656055603506, -0.16554656638655274, -0.16233297728654605,
-0.15942092605050817, -0.15653017698607385, -0.1543630155483129},
{-1.06379314380586, -0.5746138267836471, -0.40537801026002285,
-0.329938536529653, -0.28651751659753444, -0.2599452941940825,
-0.24017206749832098, -0.22483691474948841, -0.2128623766587907,
-0.20318814338941849, -0.19516925304286303, -0.18840084500546794,
-0.1825815469203107, -0.17751635156010082, -0.17305378930415571,
-0.16909034121837152, -0.1655410341362682, -0.16232804949644475,
-0.15941653120487587, -0.156527292433303, -0.15435949974619945},
{-1.0634801452600904, -0.5744510024003944, -0.4052918754223498,
-0.32988358631137515, -0.28647853390643263, -0.2599232482021847,
-0.24014786911323682, -0.2248172234177872, -0.2128460099880911,
-0.20317428966095008, -0.19515736747100476, -0.18839055944405914,
-0.1825725684707038, -0.17750846702573853, -0.17304683067011695,
-0.16908417492761885, -0.1655355542212007, -0.16232317341361835,
-0.15941218743703445, -0.1565244466294473, -0.15435603338536907},
{-1.0631671362426793, -0.574288294390243, -0.4052058373805636,
-0.32982871911996625, -0.2864396261260538, -0.2599012153919418,
-0.2401237370713858, -0.22479759568970792, -0.21282970492491415,
-0.20316049572443973, -0.19514554030047293, -0.18838033100058738,
-0.18256364604543052, -0.1775006375016659, -0.17303992610627006,
-0.16907806180765306, -0.165530126769454, -0.16231834916278132,
-0.15940789487088836, -0.15652163984741918, -0.15435261659003885},
{-1.0628541171977588, -0.5741257028992521, -0.4051198962662781,
-0.32977393509138153, -0.2864007933924029, -0.25987919620970956,
-0.2400996714987471, -0.2247780317019803, -0.21281346160586168,
-0.20314676171472001, -0.19513377167202606, -0.18837015980789573,
-0.1825547797792595, -0.17749286312158574, -0.17303307574447757,
-0.16907200198856032, -0.16552475190988503, -0.1623135768726911,
-0.15940365363259446, -0.15651887236363393, -0.1543492494808305},
{-1.0625410885695423, -0.5739632280728486, -0.4050340522137219,
-0.32971923436316075, -0.2863620358461745, -0.2598571911124665,
-0.2400756725233819, -0.2247585315872982, -0.21279728016497756,
-0.20313308776742645, -0.19512206173038749, -0.188360046000561,
-0.18254596980640514, -0.1774851440132963, -0.17302627971339035,
-0.16906599559695934, -0.1655194297764382, -0.16230885667222594,
-0.15939946385108783, -0.15651614444949757, -0.15434593218340353},
{-1.0622280508024495, -0.5738008700588821, -0.4049483053563705,
-0.329664617070371, -0.2863233536249652, -0.25983520054624876,
-0.24005174027167442, -0.22473909548071447, -0.21278116073783337,
-0.2031194740146134, -0.19511041061370094, -0.18834998970864092,
-0.18253721625954, -0.17747748030895139, -0.17301953814099846,
-0.16906004276527398, -0.16551416049700407, -0.16230418869205465,
-0.15939532564922132, -0.1565134563746966, -0.1543426648248456},
{-1.0619150043395535, -0.5736386290062683, -0.4048626558314723,
-0.3296100833551918, -0.2862847468706988, -0.2598132249614338,
-0.24002787487413002, -0.22471972351844727, -0.21276510345889932,
-0.20310592059373533, -0.1950988184655813, -0.1883399910665915,
-0.18252851927329772, -0.17746987213690346, -0.17301285115745912,
-0.1690541436200803, -0.16550894420404916, -0.16229957305905884,
-0.15939123915628528, -0.15651080840866172, -0.1543394475267803},
{-1.0616019496248263, -0.5734765050628639, -0.40477710377276566,
-0.32955563335102767, -0.28624621572223674, -0.2597912648102323,
-0.24000407645687005, -0.224700415834306, -0.2127491084641875,
-0.2030924276404491, -0.19508728542855636, -0.18833005020758264,
-0.18251987898087663, -0.17746231962799897, -0.17300621889145162,
-0.16904829829235268, -0.16550378102937913, -0.1622950099038718,
-0.15938720449785393, -0.15650820081800276, -0.15433628041763114},
{-1.061288887101128, -0.5733144983760567, -0.4046916493167174,
-0.32950126720007944, -0.286207760321453, -0.2597693205386946,
-0.23998034515043543, -0.22468117256557463, -0.2127331758897526,
-0.20307899529057494, -0.1950758116452107, -0.18832016726550904,
-0.18251129551941858, -0.1774548229153865, -0.172999641476693,
-0.16904250691213463, -0.16549867110586547, -0.1622904993560823,
-0.15938322180183206, -0.1565056338681714, -0.15433316362392446},
{-1.0609758172112116, -0.5731526090951462, -0.404606292598757,
-0.32944698503888503, -0.2861693808069674, -0.2597473925969638,
-0.23995668108086932, -0.22466199384539465, -0.21271730587046278,
-0.20306562368028835, -0.19506439725808633, -0.188310342374173,
-0.1825027690239125, -0.1774473821301541, -0.17299311903743586,
-0.16903676960971836, -0.16549361456568334, -0.16228604154474624,
-0.15937929119591132, -0.15650310782208265, -0.1543300972717745},
{-1.0606627403979232, -0.5729908373702912, -0.40452103375708504,
-0.3293927870082385, -0.2861310773236312, -0.25972548143628416,
-0.23993308438317484, -0.22464287981527065, -0.2127014985464868,
-0.20305231294824466, -0.19505304241619115, -0.18830057567265612,
-0.1824942996304344, -0.17743999740401506, -0.17298665170919492,
-0.16903108652054755, -0.16548861154353744, -0.16228163660334616,
-0.15937541281026313, -0.15650062294306366, -0.15432708149119634},
{-1.0603496571033517, -0.572829183351061, -0.40443587292796224,
-0.32933867324865673, -0.286092850010057, -0.25970358749967204,
-0.23990955518442547, -0.22462383060850755, -0.2126857540534104,
-0.20303906323162124, -0.19504174725791046, -0.18829086729315492,
-0.18248588747523797, -0.17743266886897402, -0.1729802396211042,
-0.16902545777338673, -0.16548366217043053, -0.16227728465896973,
-0.1593715867712433, -0.1564981794895317, -0.15432411640752974},
{-1.0600365677693162, -0.5726676471871031, -0.4043508102498805,
-0.3292846438985322, -0.286054699011828, -0.2596817112401695,
-0.23988609361679636, -0.22460484636344802, -0.21267007252902914,
-0.20302587467045896, -0.1950305119323943, -0.18828121737413994,
-0.18247753269464795, -0.17742539665904644, -0.17297388290507598,
-0.16901988350299035, -0.16547876658442817, -0.16227298584760774,
-0.15936781321119753, -0.15649577772317969, -0.15432120215620415},
{-1.0597234728378986, -0.5725062290304876, -0.4042658458615591,
-0.3292306991019416, -0.28601662447046294, -0.2596598531024057,
-0.2398626998108142, -0.2245859272193087, -0.21265445411238204,
-0.20301274740018016, -0.1950193365818933, -0.18827162605223435,
-0.18246923542476168, -0.17741818090797778, -0.17296758169357673,
-0.1690143638428765, -0.16547392491709445, -0.16226874029854343,
-0.15936409225746218, -0.15649341790108195, -0.15431833886417934},
{-1.059410372750218, -0.5723449290310114, -0.4041809799017031,
-0.32917683899820815, -0.28597862652841144, -0.2596380135344063,
-0.239839373898576, -0.2245670733138354, -0.21263889894235177,
-0.20299968156312787, -0.1950082213544846, -0.1882620934654824,
-0.18246099580569108, -0.17741102175004642, -0.1729613361157547,
-0.16900889892603743, -0.16546913730459067, -0.16226454814292168,
-0.1593604240391926, -0.1564911002788847, -0.1543155266609162},
{-1.0590972679478305, -0.5721837473421019, -0.40409621251028227,
-0.32912306373087574, -0.2859407053327132, -0.2596161929835503,
-0.2398161160125838, -0.22454828478531397, -0.21262340715785655,
-0.20298667729865372, -0.1949971663960639, -0.18825261975194252,
-0.18245281397288693, -0.17740391931987176, -0.17295514630637143,
-0.16900348888896843, -0.16546440388241734, -0.16226040951721643,
-0.15935680868959423, -0.15648882511223405, -0.15431276568342867},
{-1.0587841588713438, -0.5720226841142804, -0.40401154382714566,
-0.3290693734424508, -0.2859028610247947, -0.25959439189509936,
-0.2397929262872438, -0.22452956177455974, -0.21260797889880934,
-0.20297373474645752, -0.1949861718516317, -0.18824320505013503,
-0.18244469006643982, -0.17739687375249247, -0.17294901239667837,
-0.16899813386523732, -0.16545972478726867, -0.16225632454837324,
-0.15935324633878167, -0.15648659265423248, -0.1543100560605879},
{-1.0584710459616389, -0.571861739500946, -0.4039269739938405,
-0.329015768275454, -0.28586509375154634, -0.259572610715729,
-0.23976980485480937, -0.22451090442088883, -0.21259261430573417,
-0.20296085404711306, -0.19497523787067195, -0.18823384949855182,
-0.18243662422327844, -0.17738988518352272, -0.1729429345200657,
-0.1689928339916591, -0.165455100155242, -0.16225229337528901,
-0.15934973711695477, -0.1564844031599577, -0.15430739792821413},
{-1.0581579296593375, -0.5717009136551994, -0.4038425031500381,
-0.32896224837439547, -0.28582740365691706, -0.25955084989079324,
-0.23974675184982175, -0.22449231286410054, -0.2125773135187643,
-0.2029480353448747, -0.1949643645969985, -0.18822455323932985,
-0.18242861658442422, -0.17738295375218627, -0.1729369128109397,
-0.1689875894033932, -0.16545053012274025, -0.1622483161305297,
-0.15934628115771687, -0.15648225687669992, -0.15430479142245446},
{-1.057844810404017, -0.5715402067301127, -0.4037581314392966,
-0.32890881388416204, -0.2857897908876268, -0.259529109866655,
-0.23972376740735513, -0.22447378724737632, -0.2125620766796601,
-0.20293527877718986, -0.1949535521811825, -0.18821531641086864,
-0.18242066728915063, -0.17737607959184487, -0.17293094740178816,
-0.16898240023855493, -0.1654460148269905, -0.16224439294417436,
-0.15934287859151652, -0.15648015405734128, -0.15430223667693355},
{-1.0575316886359651, -0.571379618880151, -0.4036738590019411,
-0.32885546494686224, -0.28575225559042394, -0.25950739108705534,
-0.2397008516623984, -0.22445532770893806, -0.21254690393121223,
-0.2029225844884195, -0.1949428007687075, -0.18820613915573148,
-0.1824127764773067, -0.1773692628439818, -0.17292503842705997,
-0.16897726663512458, -0.1654415544050707, -0.16224052395691047,
-0.15933952955386843, -0.15647809495203546, -0.15429973383275097},
{-1.0572185647950825, -0.5712191502595871, -0.4035896859827872,
-0.3288022017118166, -0.2857147979115453, -0.2594856939961616,
-0.23967800475285372, -0.2244369343932746, -0.2125317954149537,
-0.20290995262144662, -0.19493211050986758, -0.18819702161489005,
-0.18240494428939513, -0.17736250364605866, -0.17291918602317935,
-0.16897218873046427, -0.16543714899429318, -0.1622367092992576,
-0.1593362341771467, -0.15647607980710632, -0.15429728302476065},
{-1.05690543932009, -0.5710588010231419, -0.4035056125249312,
-0.3287490243215174, -0.28567741799952984, -0.25946401903912175,
-0.23965522681366025, -0.22441860744266506, -0.21251675127529523,
-0.20289738332068907, -0.19492148155540434, -0.18818796392924497,
-0.18239717086773055, -0.17735580213795288, -0.17291339032402675,
-0.16896716666418143, -0.16543279873795314, -0.16223294910891184,
-0.15933299259374678, -0.15647410887390123, -0.15429488439497163},
{-1.056592312650789, -0.5708985713263317, -0.4034216387717251,
-0.3286959329233383, -0.28564011599985406, -0.25944236665557696,
-0.2396325179821801, -0.22440034699918954, -0.21250177165339323,
-0.20288487672717537, -0.19491091404601235, -0.1881789662427309,
-0.18238945635099668, -0.17734915845728239, -0.17290765146398712,
-0.1689622005740219, -0.16542850376994522, -0.1622292435187873,
-0.1593298049389773, -0.15647218239506344, -0.15429253808633803},
{-1.0562791852257511, -0.5707384613247157, -0.40333776486786377,
-0.3286429276648306, -0.28560289206359357, -0.2594207372943984,
-0.2396098783975802, -0.22438215320804744, -0.21248685669681322,
-0.2028724329885634, -0.19490040814071818, -0.18817002869864297,
-0.18238180088399503, -0.17734257274976528, -0.17290196958324344,
-0.16895729059991993, -0.1654242642297774, -0.16222559266807224,
-0.15932667134774903, -0.15647030061971634, -0.154290244236293},
{-1.0559660574840635, -0.5705784711755157, -0.4032539909580066,
-0.32859000869372323, -0.28556574633827125, -0.2593991313953907,
-0.23958730819776264, -0.22436402621257656, -0.2124720065491772,
-0.20286005224571824, -0.19488996398364833, -0.18816115144055345,
-0.18237420460738463, -0.17733604515058232, -0.17289634481370797,
-0.16895243688260564, -0.16542008025929533, -0.16222199669049786,
-0.15932359195696222, -0.1564684637905316, -0.15428800299358159},
{-1.0556529298633244, -0.5704186010335874, -0.4031703171891152,
-0.32853717615839173, -0.2855286789736766, -0.25937754939938173,
-0.23956480752206488, -0.22434596616021452, -0.2124572213580933,
-0.20284773464582884, -0.1948795817278821, -0.18815233461373282,
-0.18236666766732412, -0.17732957580772535, -0.17289077729684976,
-0.16894763956400283, -0.16541595199704773, -0.16221845572704297,
-0.15932056689999285, -0.1564666721539396, -0.1542858145018755},
{-1.0553398028029868, -0.5702588510582629, -0.4030867437065666,
-0.32848443020394313, -0.28549169011999, -0.25935599175058854,
-0.23954237651128807, -0.2243279731919614, -0.2124425012652722,
-0.20283548033457066, -0.19486926151813577, -0.1881435783600196,
-0.18235919020406754, -0.17732316485786015, -0.17288526716757247,
-0.16894289878515423, -0.16541187958461023, -0.1622149699103943,
-0.15931759631337172, -0.15646492595099915, -0.1542836789079871},
{-1.0550266767401766, -0.5700992214060108, -0.40300327065706654,
-0.3284317709833928, -0.2854547799254519, -0.2593344588856539,
-0.23952001530476963, -0.22431004745777727, -0.21242784642196,
-0.20282328945551598, -0.1948590035088671, -0.1881348828261551,
-0.18235177236234534, -0.17731681244776354, -0.17287981456635038,
-0.1689382146876497, -0.16540786316038947, -0.16221153937735266,
-0.15931468033416252, -0.1564632254266769, -0.15428159635904137},
{-1.054713552112652, -0.5699397122353176, -0.402919898188145,
-0.32837919864476817, -0.285417948544854, -0.25931295125183595,
-0.23949772404518654, -0.22429218910166782, -0.21241325697533142,
-0.20281116215726058, -0.19484880785280012, -0.18812624815987533,
-0.18234441428860038, -0.17731051871965775, -0.17287441963024008,
-0.1689335874132567, -0.16540390286739637, -0.1622081642705666,
-0.1593118190996563, -0.15646157082039736, -0.154279567001808},
{-1.0544004293585587, -0.5697803237044852, -0.4028366264491581,
-0.3283267133392016, -0.2853811961272399, -0.25929146928596225,
-0.23947550287475394, -0.2242743982740265, -0.21239873307417412,
-0.2027990985848973, -0.19483867469577376, -0.1881176745076658,
-0.18233711612460723, -0.17730428381702978, -0.17286908249731425,
-0.16892901710567543, -0.16539999884524548, -0.16220484472489716,
-0.1593090127475847, -0.1564599623785341, -0.15427759099110006},
{-1.054087308914692, -0.5696210559728812, -0.4027534555858807,
-0.32827431521673844, -0.2853445228243032, -0.25927001342565603,
-0.2394533519349551, -0.2242566751219499, -0.21238427486688494,
-0.20278709888781776, -0.19482860419235948, -0.18810916201601202,
-0.18232987802073808, -0.17729810788615197, -0.1728638033123886,
-0.1689245039090963, -0.1653961512384825, -0.16220158088047754,
-0.15930626141449977, -0.15645840033752734, -0.15427566847503726},
{-1.0537741912182277, -0.5694619091996387, -0.4026703857488414,
-0.3282220044266637, -0.28530792878894573, -0.25924858411321594,
-0.23943127136974596, -0.22423901979261984, -0.2123698825039142,
-0.20277516320999212, -0.19481859649360445, -0.18810071083161262,
-0.1823227001183696, -0.17729199106929627, -0.17285858221064387,
-0.16892004796824267, -0.1653923601887186, -0.16219837287638939,
-0.1593035652398953, -0.15645688493881948, -0.15427379960533472},
{-1.0534610767062418, -0.569302883545511, -0.4025874170875028,
-0.3281697811243873, -0.2852714141744883, -0.25922718178416204,
-0.2394092613228409, -0.22422143243837667, -0.21235555613668566,
-0.20276329170400942, -0.19480865174976003, -0.18809232110402263,
-0.18231558256785974, -0.17728593351312583, -0.17285341933607867,
-0.16891564942726234, -0.16538862583740865, -0.16219522085208382,
-0.15930092436302346, -0.15645541642147975, -0.1542719845351428},
{-1.0531479658150786, -0.5691439791696666, -0.4025045497510078,
-0.32811764545927247, -0.28523497913301554, -0.2592058068781995,
-0.23938732193948908, -0.22420391320427058, -0.2123412959159836,
-0.20275148451362668, -0.19479877011402635, -0.18808399298078626,
-0.1823085255138892, -0.17727993536421138, -0.17284831483039653,
-0.1689113084285907, -0.16538494832698802, -0.16219212494739565,
-0.15929833892208478, -0.15645399502191992, -0.15427022341719976},
{-1.0528348589816225, -0.568985196234209, -0.4024217838924855,
-0.32806559758660825, -0.2851986238211879, -0.2591844598345787,
-0.23936545336576387, -0.22418646224813443, -0.21232710199681293,
-0.202739741791234, -0.19478895173912747, -0.18807572661476257,
-0.18230152910651753, -0.17727399676841316, -0.17284326883370227,
-0.1689070251238718, -0.16538132780311798, -0.16218908530250076,
-0.15929580905908836, -0.15645262098172452, -0.15426851640617656},
{-1.052521756642129, -0.568826534900893, -0.4023391196611712,
-0.3280136376599856, -0.28516234839009513, -0.2591631410866171,
-0.23934365574659466, -0.22416907971606292, -0.2123129745282739,
-0.20272806368248553, -0.19477919677686373, -0.1880675221514565,
-0.18229459349284838, -0.17726811787187557, -0.17283828149101055,
-0.1689027996537078, -0.16537776440812024, -0.16218610205785922,
-0.159293334909961, -0.15645129453474738, -0.15426686365283615},
{-1.052208659232015, -0.568667995330614, -0.4022565572096326,
-0.3279617658307501, -0.2851261529984441, -0.259141851074979,
-0.2393219292312878, -0.22415176576330254, -0.21229891366853337,
-0.2027164503409722, -0.19476950538006577, -0.18805937974637033,
-0.1822877188217049, -0.1772622988210628, -0.1728333529448065,
-0.16889863217113543, -0.16537425828684604, -0.16218317535633275,
-0.1592909166207619, -0.15645001591951768, -0.15426526531526008},
{-1.0518955671877244, -0.5685095776860578, -0.4021740966903522,
-0.3279099822552709, -0.28509003779968367, -0.2591205902303315,
-0.2393002739651635, -0.22413452054076544, -0.21228491957001694,
-0.20270490191366264, -0.19475987770074, -0.18805129954508004,
-0.18228090524086582, -0.1772565397625101, -0.1728284833380087,
-0.1688945228172969, -0.16537080958470085, -0.16218030533970307,
-0.15928855432888156, -0.1564487853698182, -0.15426372154347234},
{-1.0515824809446492, -0.568351282130152, -0.4020917382565017,
-0.327858287089164, -0.2850540029502113, -0.25909935899269243,
-0.23927869009639835, -0.22411734420325047, -0.21227099238948455,
-0.20269341855345857, -0.19475031389365682, -0.18804328170585904,
-0.18227415290393623, -0.17725084084743514, -0.17282367281866584,
-0.16889047174338145, -0.16536741844488745, -0.162177492148885,
-0.15928624817776438, -0.15644760312024175, -0.15426223249146176},
{-1.0512694009386188, -0.5681931088268968, -0.4020094820617146,
-0.3278066804871145, -0.28501804860691493, -0.2590781577940149,
-0.23925717777601108, -0.2241002369057128, -0.21225713228288612,
-0.20268200040892737, -0.1947408141112632, -0.18803532637715392,
-0.1822674619569895, -0.177245202220206, -0.17281892152591638,
-0.16888647909973997, -0.1653640850135929, -0.1621747359283603,
-0.1592839983097747, -0.15644646940678797, -0.15426079831566142},
{-1.050956327604375, -0.56803505793944, -0.4019273282595961,
-0.3277551626065289, -0.2849821749265402, -0.25905698706866787,
-0.23923573715218538, -0.22408319880149463, -0.2122433394075074,
-0.20267064763302045, -0.1947313785060274, -0.18802743371082897,
-0.18226083255282788, -0.1772396240300509, -0.17281422961072224,
-0.16888254503186317, -0.1653608094373027, -0.16217203681752324,
-0.15928180486692156, -0.15644538445963008, -0.15425941916886643},
{-1.0506432613774237, -0.5678771296318956, -0.40184527700539263,
-0.3277037336022133, -0.2849463820683482, -0.25903584725035955,
-0.23921436837650134, -0.22406623004842885, -0.21222961392225415,
-0.20265936037662158, -0.19472200723647148, -0.1880196038638573,
-0.1822542648439054, -0.17723410642614112, -0.1728095972177215,
-0.168878669692063, -0.16535759186135124, -0.1621693949654741,
-0.15927966799155513, -0.15644434851192557, -0.1542580952059751},
{-1.0503302026921446, -0.5677193240695075, -0.40176332845454965,
-0.32765239363340726, -0.28491067018773464, -0.2590147387709152,
-0.23919307159933112, -0.2240493308016127, -0.21221595598331078,
-0.20264813879359167, -0.1947127004504452, -0.1880118369887427,
-0.18224775897773782, -0.17722864955774753, -0.17280502449538915,
-0.16887485322806128, -0.16535443243395775, -0.16216681051322723,
-0.15927758783007562, -0.1564433617949419, -0.15425682657971151},
{-1.0500171519836812, -0.567561641417555, -0.40168148276296023,
-0.3276011428581711, -0.2848750394461277, -0.2589936620638156,
-0.23917184697230454, -0.22403250121881513, -0.21220236575231866,
-0.20263698303604372, -0.1947034583052556, -0.1880041332400566,
-0.18224131510893926, -0.17722325357144086, -0.172800511589017,
-0.16887109579243997, -0.16535133130058455, -0.16216428360523594,
-0.15927556452628266, -0.15644242453880963, -0.15425561344481764},
{-1.0497041096864592, -0.567404081841751, -0.4015997400868372,
-0.3275499814333429, -0.28483949000138864, -0.25897261756086465,
-0.23915069465009253, -0.22401574145811054, -0.21218884338880173,
-0.20262589325597702, -0.1946942809546215, -0.1879964927733937,
-0.1822349333913138, -0.17721791861961833, -0.17279605864871428,
-0.16886739753634572, -0.16534828860903872, -0.16216181438956312,
-0.1592735982243454, -0.15644153697114405, -0.1542544559594461},
{-1.0493910762348264, -0.5672466455087033, -0.4015181005836084,
-0.32749890952042904, -0.28480402201424937, -0.2589516056912089,
-0.23912961478443862, -0.22399905167802103, -0.21217538905231947,
-0.20261486960917807, -0.19468516855402385, -0.18798891574482468,
-0.18222861397384804, -0.1772126448511102, -0.17279166582221706,
-0.16886375861022884, -0.16534530450726947, -0.1621594030080189,
-0.15927168907073508, -0.15644069932508842, -0.1542533542765483},
{-1.0490780520625975, -0.5670893325846933, -0.4014365644106803,
-0.3274479272766584, -0.28476863564612387, -0.2589306268861904,
-0.23910860753098007, -0.22398243204097668, -0.21216200290546539,
-0.20260391225014018, -0.19467612126163658, -0.18798140231035632,
-0.18222235701361456, -0.17720743241740422, -0.17278733326152462,
-0.1688601791685045, -0.16534237914734717, -0.1621570496102578,
-0.15926983721119825, -0.15643991182768957, -0.15425230855647953},
{-1.0487650376041202, -0.5669321432365138, -0.4013551317268522,
-0.327397034863786, -0.2847333310549942, -0.25890968157417404,
-0.23908767304261147, -0.22396588270252238, -0.2121486851090424,
-0.20259302133336377, -0.19466713922531653, -0.18797395262637906,
-0.18221616266102103, -0.17720228146399108, -0.17278306111427355,
-0.16885665936267458, -0.16533951267290092, -0.16215475434141524,
-0.1592680427916804, -0.15643917470420377, -0.15425131895575817},
{-1.048452033293156, -0.5667750776332809, -0.4012738026901985,
-0.32734623244184036, -0.2846981084061966, -0.2588887701863385,
-0.23906681147747122, -0.22394940382655193, -0.21213543582818062,
-0.2025821970148698, -0.19465822260587373, -0.1879665668504913,
-0.18221003107119316, -0.17719719214947816, -0.17277884953402634,
-0.1688531993441984, -0.1653367052353758, -0.16215251734990943,
-0.1592663059604149, -0.15643848818167783, -0.1542503856316273},
{-1.0481390395633063, -0.5666181359422708, -0.4011925774603782,
-0.32729552017188723, -0.2846629678584236, -0.25886789314882463,
-0.23904602299010946, -0.22393299557495538, -0.21212225522219796,
-0.20257143944772338, -0.19464937155645146, -0.18795924514276408,
-0.18220396239776449, -0.17719216461824772, -0.1727746986690306,
-0.16884979926832955, -0.1653339569833321, -0.16215033878273744,
-0.15926462686657317, -0.15643785248812492, -0.15424950874897547},
{-1.0478260568478959, -0.5664613183318892, -0.40111145619773936,
-0.32724489821848834, -0.28462790957738093, -0.2588470508895213,
-0.23902530773864328, -0.22391665810990702, -0.21210914345832776,
-0.20256074879363695, -0.1946405862353231, -0.18795198765955945,
-0.18219795679674178, -0.1771871990260081, -0.17277060867648686,
-0.16884645929074793, -0.16533126806848486, -0.16214821878941166,
-0.1592630056563138, -0.15643726785070555, -0.15424868846643847},
{-1.0475130855804373, -0.5663046249730215, -0.4010304390632271,
-0.32719436674049973, -0.28459293372446126, -0.2588262438363813,
-0.23900466588214186, -0.22390039159490271, -0.2120961006986093,
-0.20255012520597404, -0.19463186679749356, -0.18794479455958424,
-0.18219201442208544, -0.17718229552011167, -0.17276657970577958,
-0.16884317956349548, -0.1653286386405739, -0.16214615751715655,
-0.15926144247855234, -0.1564367344920612, -0.15424792495231543},
{-1.0472001261942268, -0.5661480560337324, -0.40094952621687696,
-0.327143925902007, -0.2845580404634944, -0.2588054724120923,
-0.238984097577557, -0.22388419619394284, -0.21208312710933797,
-0.20253956884427282, -0.19462321339828748, -0.18793766600312267,
-0.18218613542686057, -0.1771774542575031, -0.17276261191224762,
-0.16883996024149894, -0.16532606885056111, -0.1621441551150724,
-0.1592599374842223, -0.1564362526395371, -0.1542472183700596},
{-1.0468871791218248, -0.5659916116849502, -0.40086871782080635,
-0.3270935758682043, -0.2845232299590137, -0.25878473704685234,
-0.2389636029846045, -0.2238680720711841, -0.21207022285387467,
-0.2025290798670909, -0.19461462619651115, -0.18793060215013213,
-0.1821803199705272, -0.1771726753862879, -0.17275870544975191,
-0.16883680148156088, -0.1653235588469073, -0.1621422117338085,
-0.1592584908214718, -0.1564358225143394, -0.15424656888347954},
{-1.0465742447964672, -0.5658352920969989, -0.40078801403877407,
-0.3270433168031275, -0.2844885023775703, -0.25876403816494076,
-0.23894318226643918, -0.22385201939470534, -0.21205738810049013,
-0.20251865843290773, -0.19460610534910927, -0.18792360316446377,
-0.1821745682069178, -0.17716795906413552, -0.1727548604745266,
-0.1688337034407681, -0.16532110878617345, -0.16214032752355934,
-0.15925710264485815, -0.15643544434600187, -0.15424597667085038},
{-1.0462613236505405, -0.5656790974414818, -0.4007074150319738,
-0.32699314887083375, -0.28445385788263877, -0.25874337618635934,
-0.2389228355810431, -0.2238360383288054, -0.21204462301388816,
-0.2025083047014391, -0.1945976510097438, -0.18791666920198224,
-0.18216888029188283, -0.17716330543859726, -0.17275107714010574,
-0.1688306662710346, -0.16531871881630877, -0.1621385026360258,
-0.15925577310120786, -0.15643511835139634, -0.15424544189325218},
{-1.0459484161166515, -0.5655230278904995, -0.4006269209645765,
-0.3269430722349398, -0.2844192966416159, -0.25872275153729163,
-0.23890256309168478, -0.22382012904045467, -0.2120319277596039,
-0.20249801883299767, -0.1945892633403048, -0.1879098004265245,
-0.18216325638105957, -0.17715871466630517, -0.17274735560435772,
-0.16882769013365362, -0.16531638909070523, -0.16213673721894395,
-0.15925450233964966, -0.1564348447562054, -0.15424496472553528},
{-1.0456355226275242, -0.5653670836161027, -0.4005465320017194,
-0.3268930870640432, -0.28438481882000133, -0.2587021646386205,
-0.23888236496156878, -0.2238042916991816, -0.212019302508061,
-0.20248780098927455, -0.19458094249660007, -0.18790299700067692,
-0.18215769663352432, -0.17715418689755325, -0.17274369602529305,
-0.1688247751826708, -0.16531411976363586, -0.16213503142614627,
-0.15925329051897563, -0.15643462378250206, -0.15424454534414167},
{-1.0453226436148704, -0.5652112647897525, -0.40046624830571176,
-0.32684319352324565, -0.284350424585746, -0.2586816159131615,
-0.23886224134995615, -0.22378852647114655, -0.21200674742217274,
-0.20247765133011342, -0.1945726886358159, -0.18789625908516427,
-0.18215220120372067, -0.1771497222919578, -0.17274009855903216,
-0.16882192157586928, -0.16531191098535203, -0.16213338541011524,
-0.15925213778565706, -0.15643445565051195, -0.15424418391847894},
{-1.0450097795114068, -0.5650555715871732, -0.4003860700447106,
-0.3267933917808392, -0.2843161141070709, -0.2586611057829131,
-0.23884219242828664, -0.223772833529722, -0.21199426267517651,
-0.20246757002078652, -0.19456450191893282, -0.18788958684750412,
-0.18214677025183335, -0.17714532100065128, -0.17273656336485033,
-0.1688191294736896, -0.16530976291156207, -0.1621317993233049,
-0.15925104429854287, -0.15643434058169703, -0.15424388062837124},
{-1.0446969307489482, -0.5649000041799113, -0.40030599738233263,
-0.3267436820038512, -0.28428188755125916, -0.2586406346662926,
-0.23882221835577155, -0.22375721304097596, -0.2119818484294882,
-0.20245755721899172, -0.19455638250317975, -0.18788298044469798,
-0.18214140393394018, -0.177140983178532, -0.17273309060077224,
-0.16881639903122903, -0.1653076756968943, -0.16213027331542662,
-0.15925001020399066, -0.15643427879554395, -0.15424363564747523},
{-1.0443840977586234, -0.5647445627435772, -0.4002260304872678,
-0.3266940643603604, -0.28424774508944495, -0.25862020298677635,
-0.23880231930255036, -0.22374166518024197, -0.21196950485850152,
-0.20244761309500348, -0.19454833055075937, -0.1878764400480577,
-0.18213610240988487, -0.1771367089819904, -0.17272968042944115,
-0.16881373041086079, -0.16530564949491122, -0.16212880754767411,
-0.15924903566201465, -0.15643427051244885, -0.15424344915653876},
{-1.0440712809732595, -0.5645892474520835, -0.4001461695246391,
-0.326644539020009, -0.2842136868901335, -0.2585998111585468,
-0.23878249543096786, -0.22372619011541417, -0.21195723212976247,
-0.2024377378073865, -0.19454034621793426, -0.18786996581661697,
-0.18213086583641314, -0.17713249856814173, -0.17272633300807172,
-0.1688111237684211, -0.16530368446211696, -0.16212740216940347,
-0.159248120825481, -0.15643431594763513, -0.15424332133073904},
{-1.0437584808230582, -0.5644340584815026, -0.4000664146632644,
-0.32659510614982423, -0.28417971312138235, -0.25857945960432716,
-0.23876274690992716, -0.22371078802083133, -0.21194503041172652,
-0.20242793152458205, -0.1945324296654718, -0.18786355791884546,
-0.1821256943755145, -0.17712835209104583, -0.17272304850175146,
-0.16880857926577164, -0.16530178075180402, -0.16212605733490193,
-0.15924726584799487, -0.15643441531902624, -0.15424325234847913},
{-1.043445697741113, -0.5642789960080847, -0.39998676607255135,
-0.32654576592374696, -0.2841458239571253, -0.25855914873866936,
-0.23874307390947536, -0.2236954590689777, -0.21193289987418495,
-0.20241819440911968, -0.19452458105601522, -0.18785721651885012,
-0.18212058818370735, -0.17712426970986428, -0.1727198270649808,
-0.16880609706181815, -0.16529993852118707, -0.16212477320240737,
-0.1592464708860888, -0.1564345688450146, -0.1542432423928375},
{-1.0431329321573202, -0.5641240602059767, -0.3999072239181558,
-0.32649651850933026, -0.28411201956711807, -0.258538878978527,
-0.23872347659585103, -0.2236802034338865, -0.2119208406872275,
-0.2024085266280622, -0.19451680054811504, -0.18785094178235795,
-0.1821155474231233, -0.1771202515797654, -0.1727166688658741,
-0.1688036773174133, -0.16529815792580393, -0.16212354992308065,
-0.15924573609569848, -0.1564347767401273, -0.15424329163974448},
{-1.0428201845036895, -0.563969251254413, -0.3998277883726118,
-0.3264473640786534, -0.2840783001249463, -0.2585186507419195,
-0.23870395514036602, -0.22366502129180077, -0.2119088530214981,
-0.20239892834825923, -0.19450908830646085, -0.18784473387654543,
-0.18211057225651928, -0.1771162978587455, -0.17271357406650623,
-0.16880132019259975, -0.16529643912480196, -0.16212238766068765,
-0.15924506163131014, -0.15643503921707236, -0.15424340026908112},
{-1.0425074552108349, -0.5638145693292742, -0.3997484596046803,
-0.32639830280328397, -0.2840446658015523, -0.2584984644422761,
-0.23868450971124844, -0.2236499128161782, -0.2118969370468733,
-0.20238939973936, -0.1945014444903137, -0.18783859296898697,
-0.18210566284123786, -0.17711240870897882, -0.17271054283052933,
-0.1687990258492249, -0.1652947822749411, -0.1621212865665882,
-0.15924444765514068, -0.15643535649174112, -0.1542435684632011},
{-1.0421947447101587, -0.5636600146095958, -0.3996692377864406,
-0.32634933485670814, -0.2840111167710333, -0.2584783204960175,
-0.23866514048059173, -0.2236348781826507, -0.21188509293331492,
-0.20237994096608247, -0.19449386926076784, -0.18783251922582167,
-0.18210081934290656, -0.17710858428490894, -0.17270757531994718,
-0.16879679444889462, -0.16529318753073596, -0.16212024679940384,
-0.1592438943195873, -0.15643572877540635, -0.15424379639621577},
{-1.0418820534322464, -0.5635055872728572, -0.39959012308692365,
-0.32630046040970484, -0.2839776532050706, -0.25845821931612534,
-0.23864584762048224, -0.2236199175694935, -0.21187332085293065,
-0.2023705521981185, -0.1944863627849145, -0.18782651281702556,
-0.18209604192378492, -0.1771048247478575, -0.17270467170222048,
-0.1687946261556732, -0.16529165505454557, -0.16211926851919145,
-0.1592434017850195, -0.15643615628124508, -0.15424408425194258},
{-1.0415693818078964, -0.5633512874989677, -0.3995111156803901,
-0.32625167963835366, -0.28394427528114363, -0.25843816131528285,
-0.23862663130353923, -0.22360503115535835, -0.2118616209779276,
-0.20236123360696467, -0.1944789252230521, -0.1878205739084251,
-0.1820913307457488, -0.17710113025871976, -0.17270183214002088,
-0.1687925211280259, -0.16529018500467885, -0.1621183518844589,
-0.15924297021102518, -0.1564366392236991, -0.15424443220744877},
{-1.041256730267591, -0.5631971154663447, -0.39943221573781074,
-0.32620299271458464, -0.28391098317379715, -0.2584181469080704,
-0.238607491703398, -0.22359021911779564, -0.21184999347833866,
-0.20235198536133225, -0.19447155674367878, -0.18781470267299483,
-0.18208668597876, -0.17709750097863264, -0.17269905680292652,
-0.1687904795337687, -0.1652887775415195, -0.1621174970555046,
-0.15924259975476218, -0.15643717781401278, -0.15424484043965947},
{-1.0409440992422176, -0.5630430713548407, -0.39935342343280666,
-0.32615439981356786, -0.28387777705557227, -0.25839817650299324,
-0.23858842899093702, -0.2235754816339437, -0.21183843852540463,
-0.20234280763185097, -0.19446425750697927, -0.1878088992749838,
-0.18208210778261957, -0.17709393706510923, -0.1726963458551154,
-0.1687885015331574, -0.16528743282546543, -0.16211670419083646,
-0.15924229057820583, -0.15643777225987776, -0.15424530912680723},
{-1.0406314891619672, -0.5628891553461557, -0.39927473894025667,
-0.3261059011121148, -0.2838446571060089, -0.258378250517211,
-0.23856944334461616, -0.22356081888547408, -0.21182695629383375,
-0.2023337005924617, -0.1944570276791211, -0.18780316388732388,
-0.1820775963237793, -0.17709043868522656, -0.1726936994657109,
-0.16878658728991525, -0.16528615101323396, -0.1621159734524582,
-0.1592420428402761, -0.15643842277471265, -0.15424583844132655},
{-1.0403189004572937, -0.5627353676209523, -0.39919616243297895,
-0.32605749678501184, -0.28381162349989353, -0.25835836935529954,
-0.23855053493781497, -0.2235462310517562, -0.21181554695402838,
-0.20232466441167674, -0.19444986742769288, -0.18779749668240697,
-0.1820731517709504, -0.17708700599777671, -0.17269111780009894,
-0.1687847369702382, -0.16528493226958574, -0.1621153050009383,
-0.1592418567031757, -0.15643912956892336, -0.15424642856572746},
{-1.0400063335580896, -0.5625817083598932, -0.39911769408683284,
-0.3260091870107331, -0.2837786764175263, -0.258338533430269,
-0.2385317039486594, -0.22353171831682062, -0.21180421068049782,
-0.2023156992670323, -0.19444277691931688, -0.18779189782894434,
-0.1820687742911815, -0.17708363916966618, -0.1726886010317088,
-0.16878295074009486, -0.16528377675855666, -0.16211469900052577,
-0.15924173232821204, -0.15643989285422322, -0.15424707966896278},
{-1.039693788894887, -0.5624281777456304, -0.3990393340776279,
-0.3259609719624734, -0.2837458160349584, -0.2583187431510581,
-0.2385129505520709, -0.22351728086110256, -0.2117929476450513,
-0.202306805328746, -0.1944357563194501, -0.18778636749830468,
-0.18206446405469023, -0.1770803383603976, -0.17268614932324056,
-0.16878122876212842, -0.16528268463974882, -0.16211415561325282,
-0.15924166987761623, -0.15644071284012284, -0.15424779192633764},
{-1.0393812668976707, -0.5622747759616686, -0.3989610825806196,
-0.32591285182038376, -0.2837130425287455, -0.25829899892357133,
-0.23849427492537245, -0.2235029188665436, -0.2117817580208481,
-0.20229798277368616, -0.19442880579667587, -0.187780905861473,
-0.18206022122666354, -0.17707710373663588, -0.17268376285061038,
-0.1687795712012985, -0.16528165607593337, -0.1621136750005263,
-0.15924166951410257, -0.15644158973469757, -0.15424856550862387},
{-1.0390687679962554, -0.5621215031894025, -0.3988829397726761,
-0.32586482676268247, -0.2836803560820016, -0.2582793011600302,
-0.23847567724698138, -0.22348863251579587, -0.21177064198273854,
-0.2022892317769731, -0.19442192551885285, -0.1877755130947918,
-0.18205604598036018, -0.1770739354629569, -0.17268144178073896,
-0.1687779782265011, -0.16528069122981037, -0.16211325732759008,
-0.15924173140054165, -0.1564425237451701, -0.15424940058809966},
{-1.0387562926205618, -0.5619683596133314, -0.3988049058325629,
-0.32581689696755234, -0.2836477568723481, -0.25825965026503894,
-0.23845715769675735, -0.22347442199517786, -0.21175959970265978,
-0.20228055251358512, -0.19441511565506175, -0.18777018936724232,
-0.18205193848319823, -0.17707083370478927, -0.1726791862844408,
-0.16877645000170105, -0.16527979026587047, -0.16211290275582257,
-0.15924185570121097, -0.1564435150845611, -0.15425029733583528},
{-1.038443841200504, -0.5618153454178625, -0.39872698093814307,
-0.3257690626164802, -0.2836152450813785, -0.2582400466454118,
-0.23843871645547665, -0.223460287488507, -0.21174863135881594,
-0.20227194516265, -0.19440837637607444, -0.1877649348546555,
-0.18204789890941697, -0.1770677986307021, -0.17267699653552882,
-0.1687749866972723, -0.16527895335099174, -0.1621126114552709,
-0.15924204257957797, -0.15644456395892803, -0.15425125591977462},
{-1.0381314141655267, -0.5616624607878009, -0.3986491652672086,
-0.32572132388675357, -0.28358282089102715, -0.25822049070708886,
-0.23842035370240922, -0.22344622918281232, -0.21173773712214938,
-0.20226340990018343, -0.19440170785345856, -0.18775974973219434,
-0.18204392743005826, -0.17706483040613819, -0.17267487270567017,
-0.16877358847968083, -0.16527818064940902, -0.16211238358830826,
-0.15924229220307495, -0.15644567057501035, -0.15425227650808893},
{-1.0378190119459134, -0.5615097059084633, -0.39857145900055,
-0.3256736809619838, -0.2835504844818999, -0.25820098285551296,
-0.2384020696178908, -0.22343224726509447, -0.21172691717116265,
-0.2022549469062085, -0.19439511025763068, -0.18775463417388494,
-0.1820400242175566, -0.17706192919783348, -0.17267281496926046,
-0.1687722555146678, -0.16527747232615297, -0.16211221932130115,
-0.1592426047375568, -0.15644683514209135, -0.15425335926850892},
{-1.037506634969759, -0.561357080964541, -0.3984938623161227,
-0.32562613402100027, -0.2835182360355759, -0.25818152349670953,
-0.23838386438336556, -0.2234183419189577, -0.21171617167634338,
-0.2022465563588156, -0.19438858375680468, -0.18774958835169286,
-0.1820361894453697, -0.17705909517658824, -0.1726708234975689,
-0.16877098797091605, -0.16527682854437842, -0.16211211882105658,
-0.1592429803451978, -0.15644805786237725, -0.1542545043610346},
{-1.0371942836683559, -0.561204586143667, -0.39841637539674934,
-0.3255786832471088, -0.2834860757371658, -0.25816211303428105,
-0.23836573818465467, -0.22340451333614908, -0.2117055008199884,
-0.20223823843936373, -0.19438212853029313, -0.18774461244754548,
-0.18203242328668523, -0.17705632851186692, -0.1726688984645648,
-0.16876978601986536, -0.16527624947660513, -0.16211208225399787,
-0.15924341919973983, -0.1564493389478372, -0.15425571195916632},
{-1.0368819584702607, -0.5610522216322309, -0.398338998421508,
-0.32553132882375024, -0.2834540037690374, -0.2581427518692436,
-0.23834769120047383, -0.2233907617008981, -0.2116949047729264,
-0.20222999332720804, -0.19437574474605412, -0.18773970663202988,
-0.18202872591612618, -0.17705362936904123, -0.17266704004340738,
-0.16876864982896223, -0.16527573528576056, -0.16211210978697466,
-0.15924392146069977, -0.1564506785992421, -0.1542569822188824},
{-1.0365696598047052, -0.5608999876179439, -0.3982617315745074,
-0.3254840709319424, -0.2834220203177651, -0.25812344040770796,
-0.23832972362015425, -0.2233770872080072, -0.2116843837151663,
-0.20222182120608068, -0.1943694325824339, -0.187734871086235,
-0.18202509751027662, -0.17705099792367207, -0.17266524841436137,
-0.16876757956805477, -0.1652752861398028, -0.16211220159412676,
-0.15924448730174845, -0.1564520770277369, -0.1542583153071604},
{-1.0362573881008217, -0.5607478842882472, -0.39818457503683646,
-0.3254369097569878, -0.28339012556571674, -0.2581041790499441,
-0.2383118356227385, -0.22336349004304168, -0.21167393782292265,
-0.20221372225707057, -0.19436319221145482, -0.18773010598330586,
-0.18202153824164213, -0.17704843434626127, -0.17266352374979022,
-0.16876657540542794, -0.16527490221089636, -0.1621123578393764,
-0.1592451168899629, -0.15645353443484566, -0.15425971138155603},
{-1.0359451437883962, -0.5605959118312427, -0.39810752899089863,
-0.32538984548266114, -0.28335831969890535, -0.2580849682000945,
-0.23829402739568195, -0.223349970396427, -0.21166356727471225,
-0.20220569666463462, -0.19435702380859254, -0.1877254115060083,
-0.18201804828885315, -0.17704593880623065, -0.17266186622683222,
-0.16876563751576157, -0.16527458366155656, -0.16211257868917528,
-0.15924581039409702, -0.1564550510272511, -0.15426117060341937},
{-1.035632927296838, -0.560444070437569, -0.3980305936231474,
-0.3253428782953236, -0.283326602904566, -0.2580658082572711,
-0.23827629912759107, -0.22333652846255347, -0.21165327224805708,
-0.20219774461298812, -0.1943509275527191, -0.18772078783021584,
-0.18201462782600686, -0.17704351147951058, -0.1726602760187319,
-0.16876476606582003, -0.16527433066670483, -0.16211286431908434,
-0.15924656798358683, -0.15645662701425067, -0.1542626931361326},
{-1.0353207390541783, -0.5602923602952785, -0.3979537691147996,
-0.3252960083782881, -0.2832949753692162, -0.25804669962028015,
-0.2382586510002369, -0.22332316443058176, -0.21164305292079177,
-0.20218986628684377, -0.19434490361807377, -0.18771623513536895,
-0.1820112770305542, -0.17704115253860664, -0.1726587533077435,
-0.16876396122933102, -0.16527414339350344, -0.16211321489640795,
-0.1592473898321174, -0.15645826259982698, -0.15426427913406826},
{-1.0350085794901531, -0.5601407815949813, -0.39787705565288434,
-0.3252492359196424, -0.2832634372818177, -0.2580276426921557,
-0.23824108320393123, -0.2233098784935379, -0.2116329094740479,
-0.2021820618714827, -0.19433895218600128, -0.18771175360048176,
-0.18200799608263196, -0.17703886215704756, -0.1726572982676231,
-0.16876322317676795, -0.16527402201509744, -0.16211363059449013,
-0.15924827610687942, -0.15645995798998058, -0.1542659287578232},
{-1.0346964490339374, -0.5599893345277849, -0.39780045342224213,
-0.3252025611060816, -0.2832319888283834, -0.2580086378708444,
-0.23822359592642783, -0.22329667084633797, -0.21162284208614324,
-0.20217433155445974, -0.19433307343356887, -0.18770734340824902,
-0.18200478515657892, -0.17703664051380485, -0.17265591108110812,
-0.16876255207941426, -0.16527396670232974, -0.1621141115840743,
-0.15924922698137323, -0.1564617133939521, -0.15426764216493893},
{-1.0343843481143722, -0.559838019283724, -0.3977239626108968,
-0.32515598412488345, -0.28320063019899777, -0.25798968555749013,
-0.2382061893552958, -0.22328354167898112, -0.2116128509385362,
-0.20216667552355716, -0.19432726753817064, -0.18770300473784118,
-0.18200164443109657, -0.1770344877779877, -0.17265459192168464,
-0.16876194811467826, -0.16527397762308738, -0.16211465803402803,
-0.15925024262662646, -0.156463529014232, -0.1542694195079264},
{-1.0340722771600284, -0.5596868360558815, -0.3976475834038098,
-0.32510950516351755, -0.28316936158278594, -0.25797078614643,
-0.2381888636797953, -0.22327049118872822, -0.2116029362133105,
-0.20215909396728193, -0.1943215346819045, -0.18769873777158352,
-0.181998574087487, -0.1770324041329303, -0.1726533409713369,
-0.1687614114530902, -0.1652740549540681, -0.16211527012241334,
-0.15925132321585522, -0.15646540506065776, -0.1542712609512762},
{-1.0337602366003154, -0.5595357850356066, -0.39757131598888407,
-0.32506312441267227, -0.2831381831714168, -0.2579519400388648,
-0.23817161909197182, -0.22325751956833528, -0.21159309809063132,
-0.20215158707337366, -0.19431587504548986, -0.18769454269214236,
-0.18199557430089897, -0.17703038975356833, -0.1726521584088374,
-0.1687609422670846, -0.16527419886814698, -0.16211594801943363,
-0.15925246892466305, -0.15646734174451638, -0.15427316664529656},
{-1.033448226863591, -0.5593848664162593, -0.3974951605552235,
-0.32501684206015113, -0.2831070951560477, -0.25793314762992736,
-0.23815445578011918, -0.22324462701695325, -0.21158333675465713,
-0.20214415503492944, -0.1943102888139947, -0.1876904196832072,
-0.18199264525507886, -0.17702844481782165, -0.17265104441705148,
-0.1687605407332171, -0.16527440954007488, -0.16211669190271039,
-0.15925367992366546, -0.15646933927020257, -0.15427513674652005},
{-1.0331362483791153, -0.5592340803910858, -0.3974191172908519,
-0.32497065829578986, -0.28307609772367925, -0.25791440931547527,
-0.23813737393415124, -0.2232318137262581, -0.2115736523866758,
-0.2021367980414368, -0.19430477616525366, -0.18768636892343693,
-0.1819897871252465, -0.1770265695040507, -0.17264999917406954,
-0.16876020702677863, -0.16527468714494375, -0.1621175019417791,
-0.15925495639108078, -0.15647139784513797, -0.1542771714118345},
{-1.0328243015755163, -0.5590834271542704, -0.3973431863865642,
-0.3249245733120816, -0.28304519107287973, -0.25789572549680884,
-0.23812037374975148, -0.22321907989496026, -0.21156404517334693,
-0.20212951628523967, -0.19429933728244464, -0.18768239060247538,
-0.18198700009344293, -0.1770247639953908, -0.1726490228607247,
-0.1687599413212979, -0.16527503185287173, -0.16211837831713183,
-0.15925629849635925, -0.15647351767914586, -0.15427927079522874},
{-1.0325123868814288, -0.5589329069005728, -0.3972673680303487,
-0.324878587298592, -0.2830143753911045, -0.25787709656418656,
-0.23810345541699007, -0.22320642571811788, -0.21155451529944003,
-0.20212230995853986, -0.19429397235460044, -0.18767848490385575,
-0.18198428433974811, -0.17702302846977602, -0.17264811565743798,
-0.16875974379460956, -0.16527544384405246, -0.16211932120097572,
-0.15925770641953818, -0.15647569898082736, -0.15428143505428693},
{-1.0322005047254166, -0.5587825198243266, -0.39719166241567905,
-0.32483270044983925, -0.2829836508761687, -0.2578585229150434,
-0.23808661912963203, -0.22319385139701353, -0.21154506294958253,
-0.2021151792568503, -0.19428868156279577, -0.187674652012916,
-0.18198164004675732, -0.17702136311230277, -0.17264727775047106,
-0.16875961462272926, -0.16527592329707375, -0.16212033077185595,
-0.1592591803351695, -0.15647794196135578, -0.15428366434298368},
{-1.0318886555370383, -0.5586322661215917, -0.3971160697329381,
-0.32478691295545303, -0.28295301772145365, -0.2578400049438727,
-0.23806986508245132, -0.22318135712637854, -0.21153568831070402,
-0.202108124371847, -0.19428346509299388, -0.1876708921144541,
-0.18197906739582947, -0.17701976810172937, -0.1726465093195202,
-0.1687595539835911, -0.1652764703858196, -0.16212140720631396,
-0.15926072042185524, -0.15648024682974437, -0.15428595881485307},
{-1.0315768397438134, -0.5584821459886342, -0.39704059017285687,
-0.32474122500988045, -0.2829224761187774, -0.2578215430426809,
-0.23805319346774922, -0.22316894310566227, -0.2115263915707004,
-0.2021011455016719, -0.19427832313218119, -0.18766720539431958,
-0.18197656656457184, -0.1770182436233938, -0.17264581054955386,
-0.16875956205151965, -0.16527708529227425, -0.1621225506833639,
-0.15926232685659159, -0.15648261379431005, -0.1542883186256887},
{-1.0312650577748528, -0.5583321596219974, -0.39696522392990374,
-0.3246956368076255, -0.28289202626770305, -0.2578031376097414,
-0.23803660448002972, -0.22315660953299243, -0.2115171729167571,
-0.20209424284146849, -0.1942732558665199, -0.18766359204047944,
-0.1819741377376829, -0.17701678985847025, -0.172645181620112,
-0.1687596390097923, -0.16527776818733741, -0.1621237613794051,
-0.15926399981259465, -0.15648504306520294, -0.15429074392930886},
{-1.0309533100590116, -0.5581823072195462, -0.3968899711963587,
-0.32465014854327023, -0.2828616683627132, -0.25778478903467317,
-0.23802009831936743, -0.2231443566112148, -0.21150803254052164,
-0.20208741658973395, -0.19426826348603754, -0.1876600522460592,
-0.18197178109763001, -0.17701540699700047, -0.17264462271893422,
-0.16875978503684053, -0.16527851925870607, -0.16212503947585333,
-0.15926573947436395, -0.15648753485815803, -0.15429323488358193},
{-1.0306415970249105, -0.558032588978584, -0.3968148321679408,
-0.3246047604121287, -0.28283140260079165, -0.2577664977105343,
-0.23800367517756627, -0.22313218453609807, -0.21149897062997525,
-0.20208066694407023, -0.1942633461759442, -0.187656586191153,
-0.18196949682518948, -0.17701409521922074, -0.17264413402881473,
-0.16876000030821103, -0.16527933868364642, -0.16212638514964794,
-0.15926754601599669, -0.15649008938045483, -0.15429579164005247},
{-1.0303299191008435, -0.557883005098077, -0.3967398070378607,
-0.324559472608577, -0.28280122918140194, -0.2577482640291606,
-0.23798733525454452, -0.22312009351064432, -0.21148998737700708,
-0.20207399410125504, -0.1942585041280438, -0.18765319406935532,
-0.18196728510476134, -0.17701285471353856, -0.1726437157342957,
-0.16876028500907125, -0.1652802266405189, -0.1621277985831,
-0.15926941961912178, -0.15649270684613725, -0.15429841435137348},
{-1.0300182767160848, -0.5577335557767142, -0.396664896002477,
-0.3245142853316736, -0.2827711483001991, -0.2577300883837239,
-0.23797107874565882, -0.22310808373563873, -0.2114810829737337,
-0.20206739826525677, -0.194253737532037, -0.18764987606886052,
-0.1819651461197651, -0.17701168566657088, -0.17264336802244884,
-0.16876063931698582, -0.16528118331308406, -0.16212927995704263,
-0.15927136046487078, -0.15649538746943392, -0.15430110317825552},
{-1.0297066702982036, -0.5575842412137106, -0.39659009925606625,
-0.3244691987763204, -0.28274116015718675, -0.25771197116471,
-0.23795490584861057, -0.22309615540947902, -0.21147225761191635,
-0.2020608796315173, -0.19424904657610398, -0.1876466323780761,
-0.18196308005236972, -0.17701058826648364, -0.17264309107756048,
-0.16876106341315733, -0.16528220888025658, -0.1621308294512005,
-0.1592733687296004, -0.15649813146102076, -0.15430385827065152},
{-1.029395100276595, -0.5574350616116206, -0.396515416998632,
-0.3244242131432884, -0.2827112649536616, -0.2576939127646085,
-0.2379388167655918, -0.22308430873960106, -0.21146351148843223,
-0.20205443840762882, -0.19424443145710768, -0.18764346319163394,
-0.18196108708754366, -0.1770095627038728, -0.17264288508648917,
-0.1687615574828385, -0.1652833035269481, -0.16213244725094,
-0.1592754445974549, -0.15650093904027074, -0.15430667978705515},
{-1.0290835670798302, -0.5572860171688134, -0.39644084942332114,
-0.32437932862828234, -0.2826814628878367, -0.2576759135703526,
-0.23792281169284024, -0.2230725439219725, -0.2114548447933089,
-0.20204807479221643, -0.19423989236031503, -0.18764036869607992,
-0.18195916741031226, -0.17700860916399108, -0.17264275023444497,
-0.1687621217047024, -0.16528446743690495, -0.16213413353683848,
-0.15927758824751947, -0.15650381041795924, -0.15430956788345895},
{-1.0287720711364372, -0.5571371080872112, -0.39636639673151564,
-0.324334545432464, -0.28265175416402144, -0.2576579739746876,
-0.2379068908332158, -0.22306086116401502, -0.2114462577265641,
-0.2020417889898738, -0.1942354294848485, -0.18763734908699803,
-0.18195732120619823, -0.17700772783977925, -0.1726426867129618,
-0.16876275626538018, -0.16528570079063343, -0.16213588849554128,
-0.1592797998629294, -0.1565067458152356, -0.15431252271702078},
{-1.028460612874575, -0.5569883345688211, -0.3962920591198227,
-0.3242898637546716, -0.28262213898089783, -0.25764009436487356,
-0.23789105438495994, -0.22304926066638586, -0.21143775048254554,
-0.20203558120307719, -0.19423104302249783, -0.18763440455258262,
-0.18195554865850738, -0.177006918922487, -0.17264269470695126,
-0.16876346134634446, -0.16528700377786265, -0.1621377123084642,
-0.15928207962706153, -0.15650974544436735, -0.1543155444450406},
{-1.028149192722971, -0.5568396968162119, -0.39621783678875033,
-0.3242452837960812, -0.28259261754202214, -0.2576222751339259,
-0.23787530254865885, -0.2230377426322434, -0.21142932325875563,
-0.2020294516394614, -0.1942267331657348, -0.18763153528719556,
-0.1819538499527198, -0.17700618260082024, -0.17264277440544618,
-0.16876423713281952, -0.16528837657601514, -0.16213960515972303,
-0.15928442772118956, -0.15651280952234004, -0.15431863322501727},
{-1.0278378111111834, -0.5566911950339559, -0.3961437299378616,
-0.3242008057582666, -0.28256319005068065, -0.2576045166661345,
-0.23785963552853673, -0.22302630726697714, -0.21142097625497058,
-0.20202340050370537, -0.1942225001132556, -0.18762874148345077,
-0.18195222527630506, -0.17700551907164197, -0.17264292599449504,
-0.168765083810257, -0.16528981937577214, -0.16214156723761164,
-0.15928684432671503, -0.15651593827038823, -0.15432178922023354},
{-1.02752646846713, -0.556542829423833, -0.39606973876626483,
-0.32415642984273063, -0.28253385671109754, -0.2575868193516868,
-0.23784405352631666, -0.22301495477454125, -0.21141270966812442,
-0.20201742800175282, -0.1942183440581431, -0.1876260233342748,
-0.18195067481575222, -0.17700492852549132, -0.17264314966836025,
-0.16876600156341226, -0.1652913323620595, -0.16214359872572004,
-0.159289329631207, -0.15651913190650646, -0.1543250125890836},
{-1.0272151652193955, -0.556394600191112, -0.39599586347749494,
-0.32411215625298695, -0.2825046177291455, -0.2575691835776439,
-0.23782855674444647, -0.22300368535853465, -0.211404523699656,
-0.20201153434074115, -0.19421426519950558, -0.18762338103303478,
-0.18194919876005144, -0.17700441115616172, -0.17264344561247924,
-0.1687669905770406, -0.16529291572078364, -0.16214569981295313,
-0.1592918838145465, -0.15652239064857554, -0.15432830349274695},
{-1.0269039017969348, -0.5562465075412817, -0.3959221042719605,
-0.3240679851913768, -0.28247547330850864, -0.2575516097335111,
-0.23781314538642562, -0.22299249922505737, -0.21139641854847468,
-0.2020057197303231, -0.1942102637354992, -0.1876208147754852,
-0.1819477972942991, -0.17700396716155353, -0.17264381402304707,
-0.16876805103962056, -0.16529456964099154, -0.16214787068675207,
-0.15929450706856585, -0.15652571471703425, -0.15433166209759008},
{-1.0265926786281696, -0.556098551678609, -0.3958484613530757,
-0.3240239168621173, -0.2824464236558555, -0.2575340982044736,
-0.2377978196553414, -0.22298139657665672, -0.21138839441817936,
-0.20199998437786348, -0.19420633985933478, -0.18761832475315998,
-0.18194647060613534, -0.17700359673199273, -0.17264425508311376,
-0.16876918313732858, -0.16529629430722537, -0.16215011153101955,
-0.15929719957250654, -0.15652910432952183, -0.15433508856450828},
{-1.0262814961423388, -0.5559507328099542, -0.39577493492279103,
-0.3239799514697097, -0.28241746897676023, -0.2575166493768819,
-0.23778257975845918, -0.22297037762243122, -0.21138045150807727,
-0.20199432849373977, -0.1942024937763307, -0.18761591116441423,
-0.18194521888840143, -0.17700330006771026, -0.1726447689871975,
-0.1687703870605759, -0.16529808990867423, -0.16215242254078532,
-0.15929996151191972, -0.15653255970865132, -0.15433858306502657},
{-1.0259703547680772, -0.5558030511426111, -0.395701525186297,
-0.3239360892215686, -0.28238860948127353, -0.2574992636378397,
-0.23776742589903677, -0.22295944256792666, -0.21137259002547637,
-0.20198875228814472, -0.19419872568317942, -0.18761357420149238,
-0.18194404232683326, -0.17700307736565435, -0.17264535592848063,
-0.16877166299438784, -0.16529995663900365, -0.16215480389989523,
-0.15930279307774242, -0.1565360810748615, -0.15434214576268346},
{-1.0256592549334371, -0.5556555068835962, -0.3956282323481304,
-0.32389233032183995, -0.28235984537735703, -0.2574819413727596,
-0.23775235828465213, -0.22294859161986835, -0.2113648101711476,
-0.2019832559724506, -0.19419503578377828, -0.18761131406363063,
-0.18194294111350473, -0.17700292882146584, -0.17264601609770125,
-0.1687730111296446, -0.16530189468397793, -0.16215725580343587,
-0.15930569445258413, -0.15653966864790902, -0.1543457768269576},
{-1.0253481970683112, -0.5555081002406439, -0.3955550566115704,
-0.32384867497716385, -0.28233117687084075, -0.25746468296652836,
-0.23773737711951526, -0.2229378249847258, -0.21135711214692776,
-0.20197783975810069, -0.19419142427628344, -0.18760913093962017,
-0.1819419154392392, -0.17700285463349985, -0.1726467496882833,
-0.16877443165621742, -0.16530390423616836, -0.16215977843636153,
-0.15930866582809244, -0.15654332264688264, -0.15434947642982877},
{-1.025037181601185, -0.5553608314227958, -0.39548199818484875,
-0.3238051233970509, -0.28230260417544173, -0.25744748880805446,
-0.2377224826117441, -0.2229271428682864, -0.21134949616143217,
-0.20197250385713517, -0.19418789136253167, -0.18760702503372784,
-0.18194096549210315, -0.17700285500227153, -0.17264755689063804,
-0.16877592476363645, -0.16530598548307296, -0.16216237199324723,
-0.15931170738700473, -0.15654704329442382, -0.1543532447436604},
{-1.0247262089608427, -0.5552137006394702, -0.3954090572721398,
-0.32376167578873094, -0.28227412749694736, -0.2574303592769809,
-0.2377076749692435, -0.222916545480345, -0.2113419624194819,
-0.20196724848452163, -0.19418443724974566, -0.18760499653870966,
-0.18194009146775159, -0.17700293012869395, -0.1726484379014721,
-0.16877749064435932, -0.16530813861845672, -0.16216503666503002,
-0.1593148193206133, -0.15655083081018972, -0.15435708194009123},
{-1.0244152795761678, -0.5550667081005898, -0.39533623408291163,
-0.32371833236170744, -0.28224574705124894, -0.25741329476149133,
-0.23769295439996085, -0.22290603302901957, -0.21133451112584112,
-0.20196207385231446, -0.19418106213827002, -0.18760304565348918,
-0.18193929355770422, -0.17700308021392175, -0.17264939291399628,
-0.1687791294912273, -0.16531036383956632, -0.16216777264490645,
-0.1593180018181357, -0.1565546854140223, -0.15436098819735378},
{-1.0241043938765486, -0.554919854015786, -0.3952635288239179,
-0.32367509332416944, -0.282217463049804, -0.2573962956424225,
-0.23767832111408893, -0.2228956057234086, -0.21132714248811624,
-0.20195698017428754, -0.19417776623450322, -0.1876011725753699,
-0.18193857195666396, -0.1770033054556137, -0.17265042212034132,
-0.16878084149375638, -0.16531266133219447, -0.16217058012470886,
-0.15932125506914474, -0.15655860732707083, -0.15436496368344876},
{-1.023793552290769, -0.5547731385977741, -0.3951909417026158,
-0.3236319588884129, -0.2821892757002189, -0.2573793623045191,
-0.23766377531850935, -0.22288526377012374, -0.21131985671304676,
-0.2019519676666306, -0.19417454974492898, -0.18759937750046163,
-0.18193792685531207, -0.17700360606019672, -0.17265152572004183,
-0.16878262684709, -0.16531503129648684, -0.16217345929827331,
-0.15932457926641064, -0.15656259676669038, -0.15436900858171043},
{-1.0234827552476418, -0.5546265620569457, -0.395118472929596,
-0.3235889292641616, -0.2821611852211703, -0.2573624951347995,
-0.23764931722429594, -0.22287500737968458, -0.2113126540064343,
-0.20194703654485124, -0.194171412872592, -0.18759766062876793,
-0.18193735845080994, -0.17700398222524427, -0.17265270390480225,
-0.1687844857466274, -0.16531747392227203, -0.1621764103598622,
-0.1593279745950582, -0.15656665395316338, -0.1543731230656391},
{-1.0231720031769527, -0.5544801246068403, -0.39504612271376516,
-0.3235460046660137, -0.28213319182371777, -0.2573456945126509,
-0.23763494704448362, -0.22286483676566604, -0.21130553457979317,
-0.2019421870264324, -0.19416835582916292, -0.18759602216326243,
-0.18193686693886946, -0.1770044341614323, -0.17265395687205398,
-0.16878641838660258, -0.1653199894072941, -0.1621794335062816,
-0.1593314412502167, -0.1565707791040012, -0.15437730731626687},
{-1.0228612965079762, -0.5543338264594198, -0.3949738912666021,
-0.32350318530426136, -0.28210529572453424, -0.25732896082119794,
-0.237620664986693, -0.22285475213219286, -0.21129849863778816,
-0.20193741932592957, -0.19416537881647855, -0.1875944622976249,
-0.18193645251312773, -0.17700496206595062, -0.17265528481766523,
-0.16878842495952995, -0.16532257794862915, -0.1621825289302734,
-0.15933497942437214, -0.15657497243856255, -0.15438156151040516},
{-1.0225506356691128, -0.5541876678298578, -0.39490177879682165,
-0.3234604713913143, -0.2820774971380189, -0.25731229444103576,
-0.23760647126491108, -0.22284475369330892, -0.2112915463919336,
-0.20193273365968878, -0.19416248204736064, -0.1875929812356958,
-0.18193611537272147, -0.17700556614752827, -0.17265668793722,
-0.16879050566535625, -0.16532523973849322, -0.16218569682632733,
-0.15933858930779365, -0.15657923417174402, -0.15438588582252066},
{-1.0222400210908518, -0.5540416489321984, -0.3948297855188869,
-0.32341786314488274, -0.28204979628016247, -0.25729569575823064,
-0.2375923660924144, -0.22283484166071332, -0.21128467805149853,
-0.20192813024715406, -0.19415966573227195, -0.18759157917770608,
-0.1819358557147126, -0.17700624660919573, -0.1726581664317024,
-0.16879266069919652, -0.16532797497829677, -0.16218893739205953,
-0.15934227109737265, -0.1565835645265281, -0.15439028043991243},
{-1.0219294532011531, -0.5538957699799028, -0.3947579116437083,
-0.3233753607756569, -0.2820221933685616, -0.25727916515467086,
-0.2375783496796231, -0.22282501624525253, -0.2112778938227251,
-0.20192360930818154, -0.19415693007610457, -0.187590256325322,
-0.18193567373776887, -0.17700700365705302, -0.17265972049756328,
-0.16879489025927796, -0.16533078386294164, -0.16219225082507194,
-0.15934602498356298, -0.15658796371403128, -0.15439474553710397},
{-1.0216189324311742, -0.5537500311911785, -0.3946861573845979,
-0.3233329645033791, -0.2819946886196618, -0.25726270300661724,
-0.2375644222440627, -0.2228152776584551, -0.21127119391985616,
-0.20191917105839252, -0.19415427529496299, -0.18758901288302354,
-0.18193556963998958, -0.1770078375018329, -0.17266135033243302,
-0.16879719454482256, -0.16533366659361093, -0.16219563732144593,
-0.1593498511630571, -0.15659243195648287, -0.1543992812955537},
{-1.0213084592098056, -0.5536044327806096, -0.39461452295603294,
-0.3232906745415107, -0.2819672822538166, -0.2572463096999513,
-0.2375505839984271, -0.22280562611480548, -0.21126457855115177,
-0.2019148157178421, -0.194151701596752, -0.18758784905014636,
-0.18193554362271414, -0.1770087483445053, -0.1726630561357041,
-0.16879957375371646, -0.16533662336988186, -0.1621990970809577,
-0.159353749830359, -0.1565969694665057, -0.15440388789747317},
{-1.0209980339659737, -0.5534589749661691, -0.39454300857253344,
-0.32324849110891307, -0.2819399744917632, -0.25722998561424504,
-0.23753683516109447, -0.22279606182748068, -0.21125804792939107,
-0.2019105435090438, -0.19414920919560075, -0.18758676503823324,
-0.18193559588753772, -0.1770097363975509, -0.1726648381105207,
-0.1688020280886633, -0.16533965439164433, -0.16220263030329818,
-0.15935772118200475, -0.15660157646817652, -0.1544085655235392},
{-1.0206876571302175, -0.5533136579655817, -0.39447161444772405,
-0.3232064144229696, -0.28191276554888134, -0.2572137311290703,
-0.2375231759442471, -0.22278658500940196, -0.21125160226635842,
-0.20190635464828688, -0.19414679830740056, -0.1875857610430529,
-0.1819357266342223, -0.17701080186758134, -0.17266669645437105,
-0.16880455774672498, -0.16534275985959823, -0.16220623718261606,
-0.15936176541613634, -0.15660625317180177, -0.15441331435297911},
{-1.0203773291318186, -0.5531684819953568, -0.3944003407978016,
-0.32316444470106376, -0.2818856556481393, -0.2571975466288876,
-0.23750960656573739, -0.2227771958729079, -0.21124524176974546,
-0.20190224935792855, -0.19414446914016992, -0.18758483727928876,
-0.18193593606495995, -0.17701194496051187, -0.17266863136752875,
-0.16880716293213993, -0.16534593997322133, -0.16220991792016548,
-0.15936588272602137, -0.15661099979813287, -0.15441813457221087},
{-1.020067050401373, -0.5530234472775319, -0.3943291878413362,
-0.3231225821651975, -0.28185864501188007, -0.2571814324868882,
-0.23749612724490987, -0.22276789463617774, -0.21123896665658037,
-0.20189822785856393, -0.19414222191052488, -0.18758399394849334,
-0.18193622438298007, -0.1770131658915517, -0.17267064305433166,
-0.16880984384461328, -0.16534919493741995, -0.16221367272018483,
-0.1593700733132266, -0.15661581656692647, -0.15442302636358818},
{-1.019756821367423, -0.5528785540297463, -0.39425815579210166,
-0.3230808270333654, -0.2818317338605141, -0.25716538908865516,
-0.23748273819957433, -0.22275868151396594, -0.21123277713668642,
-0.2018942903730334, -0.1941400568361047, -0.1875832312607315,
-0.18193659179520694, -0.1770144648662182, -0.1726727317161334,
-0.16881260068822712, -0.16535252495400243, -0.162217501778386,
-0.15937433737673246, -0.15662070369386072, -0.1544279899131027},
{-1.0194466424616024, -0.5527338024730142, -0.3941872448707002,
-0.3230391795280667, -0.2818049224196386, -0.2571494168086019,
-0.23746943964846423, -0.2227495567187674, -0.21122667342572754,
-0.20189043712089472, -0.19413797412988743, -0.18758254942510177,
-0.18193703850623422, -0.1770158420979442, -0.17267489755515442,
-0.16881543366581298, -0.16535593022895512, -0.16222140529652052,
-0.15937867511333081, -0.15662566139984335, -0.154433025401417},
{-1.019136514113164, -0.5525891928284352, -0.39411645529386163,
-0.3229976398698824, -0.281778210911213, -0.2571335160314021,
-0.23745623181262943, -0.2227405204724846, -0.21122065573618443,
-0.20188666832633828, -0.1941359740115871, -0.18758194865222322,
-0.1819375647188224, -0.1770172977967519, -0.17267714077702578,
-0.16881834298203557, -0.16535941096391582, -0.1622253834796652,
-0.15938308672899382, -0.15663068990320994, -0.15443813302375986},
{-1.0188264367524482, -0.552444725317379, -0.39404578728185413,
-0.3229562082826192, -0.2817515995584188, -0.25711768713456706,
-0.23744311491007863, -0.2227315729866035, -0.2112147242799267,
-0.20188298420923445, -0.1941340566933576, -0.18758142914805376,
-0.1819381706406915, -0.1770188321728483, -0.17267946158483483,
-0.16882132884053647, -0.16536296736327927, -0.162229436524143,
-0.15938757241734436, -0.15663578942591982, -0.15444331296093594},
{-1.018516410810001, -0.5523004001633325, -0.39397524105402226,
-0.3229148849881369, -0.28172508858834533, -0.2571019304929649,
-0.23743008916495967, -0.22272271448123604, -0.21120887927561682,
-0.2018793849960474, -0.19413222239677452, -0.1875809911314974,
-0.18193885648143748, -0.17702044543915463, -0.1726818601816973,
-0.16882439144946204, -0.1653665996344813, -0.16223356463964933,
-0.15939213238362981, -0.1566409601863512, -0.15444856541046192},
{-1.0182064367162482, -0.5521562175880348, -0.3939048168297532,
-0.32287367021174873, -0.2816986782273858, -0.25708624648984824,
-0.2374171548004398, -0.22271394517356669, -0.21120312093738391,
-0.20187587090669012, -0.19413047133973294, -0.18758063481081422,
-0.18193962244795614, -0.17702213781045373, -0.17268433677585904,
-0.16882753101181436, -0.16537030798636465, -0.16223776802527823,
-0.15939676683055382, -0.1566462024079982, -0.15445389056141323},
{-1.0178965149013877, -0.5520121778164437, -0.3938345148331024,
-0.3228325641778724, -0.28167236870351076, -0.25707063549974407,
-0.2374043120368583, -0.2227052652854553, -0.21119744948107666,
-0.20187244216783995, -0.19412880374139263, -0.1875803604022792,
-0.181940468751435, -0.17702390949696678, -0.17268689157215533,
-0.168830747734944, -0.1653740926236651, -0.16224204688586497,
-0.15940147596208476, -0.15665151631267804, -0.15445928860704328},
{-1.0175866457960652, -0.5518682810721245, -0.3937643352832154,
-0.32279156711229007, -0.28164616024047007, -0.25705509790262226,
-0.23739156110049464, -0.2226966750323669, -0.21119186512271426,
-0.20186909900139938, -0.19412721982347136, -0.18758016811476352,
-0.18194139560203837, -0.17702576071273768, -0.1726895247808642,
-0.16883404182856054, -0.1653779537554101, -0.16224640142472424,
-0.15940625998406688, -0.15665690212141214, -0.1544647597469293},
{-1.0172768298313528, -0.551724527581058, -0.3936942784054196,
-0.32275067924067, -0.281620053069048, -0.25703963407873687,
-0.2373789022149566, -0.22268817463495338, -0.211186368079467,
-0.20186584163340626, -0.194125719801562, -0.18758005816962964,
-0.18194240320870847, -0.1770276916715119, -0.1726922366052719,
-0.16883741349765558, -0.16538189158701755, -0.1622508318496898,
-0.1594111190943721, -0.15666236006187262, -0.15447030418130225},
{-1.016967067438351, -0.5515809175689768, -0.39362434442008265,
-0.3227099007933987, -0.2815940474185652, -0.25702424440035543,
-0.23736633560689313, -0.22267976431361092, -0.21118095857015362,
-0.20186267028869054, -0.1941243039020577, -0.18758003078018248,
-0.18194349178516234, -0.17702970259198025, -0.17269502725477537,
-0.16884086295264922, -0.1653859063287939, -0.1622553383640053,
-0.15941605350101895, -0.15666789035739725, -0.15447592211080519},
{-1.0166573590471657, -0.5514374512625508, -0.39355453355427983,
-0.3226692319965849, -0.28156814352043114, -0.25700892925038943,
-0.23735386150282523, -0.22267144429140728, -0.21117563681384866,
-0.20185958519010683, -0.19412297234481457, -0.18758008616619293,
-0.1819446615477034, -0.17703179368656663, -0.17269789693885684,
-0.16884439040268262, -0.16538999819803735, -0.16225992117503552,
-0.15942106341316276, -0.1566734932359708, -0.15448161374453662},
{-1.0163477050896503, -0.5512941288879176, -0.3934848460302689,
-0.32262867307578347, -0.28154234160402325, -0.2569936890001969,
-0.2373414801297571, -0.22266321478745965, -0.21117040302938506,
-0.20185658656401984, -0.1941217253492482, -0.18758022453947376,
-0.18194591270703597, -0.1770339651714039, -0.17270084586608903,
-0.1688479960594691, -0.16539416739594515, -0.16226458048700465,
-0.15942614903282504, -0.1566791689228353, -0.15448737928061007},
{-1.0160381059966497, -0.5511509506743977, -0.3934152820739314,
-0.3225882242660276, -0.2815166418973831, -0.25697852402974775,
-0.237329191718203, -0.2226550760241537, -0.21116525743572367,
-0.20185367463601267, -0.19412056314291704, -0.1875804461235191,
-0.1819472454796056, -0.1770362172633071, -0.17270387424873945,
-0.16885168013054397, -0.16539841413926126, -0.16226931651023335,
-0.15943131057048276, -0.15668491764428438, -0.1544932189344479},
{-1.0157285621994916, -0.5510079168503665, -0.3933458419120086,
-0.3225478857955437, -0.2814910446385568, -0.2569634347198644,
-0.23731699649347604, -0.22264702822437243, -0.21116020025425541,
-0.20185084963205213, -0.19411948594654405, -0.18758075113406392,
-0.18194866008073518, -0.17703855017704484, -0.1727069822954519,
-0.16885544283165643, -0.16540273863741106, -0.16227412945161745,
-0.1594365482303175, -0.15669073963498192, -0.1544991329178913},
{-1.0154190741308895, -0.5508650276458553, -0.39327652577294714,
-0.3225076578975461, -0.28146555005787377, -0.2569484214398301,
-0.23730489468945848, -0.2226390716127753, -0.2111552317067975,
-0.20184811178006612, -0.1941184939840923, -0.18758113979474444,
-0.18195015672893078, -0.17704096413383752, -0.17271017021766966,
-0.1688592843728145, -0.16540714110247734, -0.1622790195206818,
-0.15944186222050405, -0.15669663511711462, -0.15450512144298045},
{-1.015109642220473, -0.5507222832897511, -0.39320733388133533,
-0.3224675408023643, -0.2814401583901116, -0.256933484571789,
-0.2372928865365651, -0.22263120641441958, -0.21115035201646037,
-0.20184546130698777, -0.19411758748390184, -0.187581612323811,
-0.18195173564224376, -0.1770434593496475, -0.17271343822811502,
-0.1688632049677068, -0.16541162174988244, -0.16228398692734913,
-0.1594472527533668, -0.15670260432889904, -0.1545111847302394},
{-1.0148002669006075, -0.5505796840125612, -0.39313826646690586,
-0.3224275347415073, -0.2814148698719805, -0.25691862448846337,
-0.23728097226602074, -0.22262343285130726, -0.21114556140624074,
-0.20184289843530223, -0.19411676666805988, -0.18758216894175916,
-0.18195339703999025, -0.1770460360434214, -0.17271678653845868,
-0.16886720483020667, -0.16541618079342868, -0.16228903188070376,
-0.15945272003351363, -0.1567086475020858, -0.15451732299207777},
{-1.0144909486036866, -0.5504372300474998, -0.3930693237592209,
-0.32238763995172803, -0.28138968473457737, -0.25690384156692403,
-0.2372691521137682, -0.22261575115018672, -0.2111408600996043,
-0.20184042339602115, -0.19411603176321535, -0.1875828098709036,
-0.18195514114064792, -0.1770486944321874, -0.1727202153635261,
-0.168871284173278, -0.1654208184484247, -0.16229415459005736,
-0.15945826427569898, -0.15671476486741653, -0.154523536452146},
{-1.0141816877608392, -0.5502949216243138, -0.3930005059854267,
-0.3223478566665392, -0.28136460321802303, -0.2568891361863024,
-0.2372574263089291, -0.2226081615349358, -0.2111362483215089,
-0.20183803641648979, -0.19411538299654296, -0.18758353533250727,
-0.1819569681661335, -0.17705143473916962, -0.17272372491676435,
-0.16887544321578218, -0.16542553492459433, -0.16229935526854433,
-0.15946388568332281, -0.15672095665973984, -0.154529825328666},
{-1.0138724848050842, -0.5501527589788395, -0.3929318133800308,
-0.3223081851231058, -0.2813396255578198, -0.2568745087173028,
-0.2372457950909279, -0.22260066423557134, -0.2111317262997403,
-0.2018357377238118, -0.1941148205945069, -0.1875843455514996,
-0.18195887833908841, -0.17705425718469314, -0.17272731541211783,
-0.16887968217326943, -0.16543033044482058, -0.16230463412811957,
-0.1594695844727454, -0.15672722311910547, -0.15453618984500395},
{-1.0135633401685737, -0.550010742342657, -0.39286324617125956,
-0.32226862555540947, -0.28131475199204203, -0.25685995953914187,
-0.23723425869238213, -0.2225932594763833, -0.21112729425585997,
-0.20183352754621353, -0.19411434478521983, -0.18758524074752359,
-0.1819608718814436, -0.17705716198697985, -0.17273098706890266,
-0.16888400125824887, -0.16543520522087363, -0.1623099913816617,
-0.15947536085204206, -0.15673356447322817, -0.15454263022486714},
{-1.0132542542832894, -0.5498688719511406, -0.3927948045936347,
-0.3222291782024911, -0.281289982764406, -0.2568454890273131,
-0.23722281735547313, -0.22258594749084182, -0.21112295242465962,
-0.20183140611156603, -0.19411395579805912, -0.1875862211512498,
-0.18196294901626686, -0.1770601493674917, -0.17273474009884637,
-0.16888840069402988, -0.1654401594705348, -0.16231542724440828,
-0.1594812150350151, -0.15673998096801256, -0.15454914668882225},
{-1.0129452275815183, -0.5497271480383716, -0.39272648887657624,
-0.3221898433014587, -0.28126531810814015, -0.2568310975554482,
-0.23721147131320208, -0.2225787285012757, -0.21111870102956232,
-0.20182937365039777, -0.19411365386260115, -0.18758728697528682,
-0.18196510997225346, -0.1770632195490549, -0.17273857471870713,
-0.16889288069364738, -0.16544519341128705, -0.16232094192743318,
-0.15948714723087676, -0.15674647283262289, -0.15455573946363188},
{-1.0126362604969685, -0.549585570840911, -0.3926582992562828,
-0.32215062109091264, -0.2812407582665628, -0.25681678550209597,
-0.23720022080532033, -0.2225716027391229, -0.21111454030160814,
-0.20182743039039508, -0.19411343920450008, -0.1875884384562312,
-0.18196735496886163, -0.177066372751554, -0.17274249114990425,
-0.16889744147958652, -0.165450307260258, -0.1623265356447945,
-0.15949315765361405, -0.1567530403148396, -0.15456240876937954},
{-1.0123273534626307, -0.5494441405963713, -0.3925902359669351,
-0.32211151181114417, -0.28121630348043425, -0.2568025532376481,
-0.23718906607246026, -0.2225645704357504, -0.2111104704704303,
-0.20182557656049482, -0.1941133120577092, -0.18758967581268848,
-0.18196968423599458, -0.17706960920293113, -0.172746489608258,
-0.16890208327269818, -0.16545550123650798, -0.1623322086183805,
-0.15949924651340552, -0.15675968364983817, -0.15456915483594003},
{-1.01201850691033, -0.5493028575397574, -0.3925222992407811,
-0.3220725157023736, -0.2811919539932859, -0.2567884011413071,
-0.23717800735568062, -0.2225576318222693, -0.2111064917664578,
-0.20182381239247604, -0.19411327265254386, -0.18759099927110867,
-0.18197209800094072, -0.17707292912162131, -0.17275057031656615,
-0.16890680629123267, -0.16546077555963734, -0.16233796105852605,
-0.15950541402965257, -0.15676640307758305, -0.1545759778876885},
{-1.0117097212744568, -0.549161721910032, -0.3924544893169184,
-0.3220336330069813, -0.28116771004901864, -0.25677432958450197,
-0.23716704489891072, -0.22255078712987597, -0.21110260442408446,
-0.20182213811314398, -0.19411332122037095, -0.1875924090592207,
-0.1819745964946975, -0.1770763327348419, -0.1727547334880768,
-0.1689116107571067, -0.1654661304495022, -0.16234379318493097,
-0.15951166040872522, -0.1567731988404404, -0.15458287814111316},
{-1.0114009969873408, -0.549020733946108, -0.3923868064303093,
-0.3219948639676744, -0.28114357188940176, -0.25676033894694683,
-0.2371561789425698, -0.22254403659067634, -0.21109880867520303,
-0.20182055395595455, -0.19411345799416324, -0.18759390540101606,
-0.18197717994461016, -0.1770798202651065, -0.17275897935400053,
-0.16891649689381438, -0.1654715661259587, -0.1623497052174372,
-0.15951798587356336, -0.15678007117661252, -0.15458985582766616},
{-1.011092334483699, -0.5488798938869124, -0.39231925081841723,
-0.32195620882468745, -0.2811195397603541, -0.25674642960186134,
-0.23714540972922293, -0.2225373804373305, -0.21109510475196203,
-0.2018190601504415, -0.19411368320345446, -0.18759548852351315,
-0.18197984857670235, -0.1770833919353123, -0.17276330812691754,
-0.16892146492290294, -0.16547708280749873, -0.16235569736885225,
-0.15952439063029544, -0.1567870203327857, -0.15459691116747365},
{-1.0107837341960888, -0.5487392019732553, -0.3922518227189755,
-0.3219176678247493, -0.2810956139071408, -0.25673260192009195,
-0.23713473750780167, -0.22253081890573867, -0.21109149288939477,
-0.20181765692758802, -0.19411399708580745, -0.1875971586566294,
-0.18198260262759902, -0.17708704797399832, -0.1727677200319988,
-0.16892651506975653, -0.16548268071741745, -0.1623617698695483,
-0.15953087489712914, -0.15679404654575535, -0.15460404439200204},
{-1.010475196559355, -0.5485986584452434, -0.39218452237203394,
-0.32187924121377876, -0.28107179457622067, -0.256718856281168,
-0.23712416252107005, -0.22252435222873146, -0.21108797332587415,
-0.20181634451975583, -0.19411439987416657, -0.18759891602503842,
-0.18198544232943448, -0.17709078860649186, -0.17277221529612063,
-0.16893164755667556, -0.16548836007876844, -0.16236792292991709,
-0.15953743889441796, -0.15680115006105666, -0.15461125572494439},
{-1.0101667220070425, -0.548458263545001, -0.39211735001646275,
-0.3218409292347246, -0.28104808201881326, -0.2567051930570443,
-0.2371136850178459, -0.2225179806461881, -0.2110845462972719,
-0.20181512315782868, -0.1941148918025135, -0.18760076086077504,
-0.18198836791319195, -0.1770946140578502, -0.17277679413817282,
-0.1689368626105363, -0.16549412111311312, -0.16237415677801437,
-0.15954408283322152, -0.1568083311181141, -0.15461854538739317},
{-1.0098583109734562, -0.5483180175136653, -0.392050305891388,
-0.3218027321355237, -0.2810244764757215, -0.2566916126238681,
-0.23710330524446022, -0.2225117043891771, -0.21108121203735664,
-0.2018139930739835, -0.19411547310811272, -0.18760269338572755,
-0.1819913796135637, -0.1770985245548502, -0.17278145678739065,
-0.16894216045818666, -0.16549996404383194, -0.16238047162880775,
-0.15955080693545654, -0.15681558996041645, -0.1546259136059973},
{-1.0095499638932637, -0.5481779205966149, -0.3919833902416343,
-0.3217646501627911, -0.28100097820356496, -0.2566781153569764,
-0.2370930234504698, -0.22250552369972354, -0.21107797078907709,
-0.20181295450183256, -0.19411614402403643, -0.1876047138347019,
-0.18199447766545518, -0.17710252032422602, -0.17278620346829143,
-0.16894754132535184, -0.16550588909149155, -0.1623868677109357,
-0.15955761141293578, -0.15682292683204935, -0.15463336061100108},
{-1.0092416812009404, -0.5480379730363225, -0.3919166033054893,
-0.32172668356695056, -0.2809775874469125, -0.25666470162707355,
-0.23708283988585777, -0.22249943881334389, -0.21107482278829082,
-0.20181200767494545, -0.19411690478992227, -0.1876068224325138,
-0.18199766230415548, -0.1771066015978704, -0.17279103440591825,
-0.16895300543977498, -0.1655118964823572, -0.16239334524492222,
-0.15956449648871285, -0.15683034197289203, -0.15464088662706388},
{-1.0089334633311893, -0.5478981750774636, -0.39184994532833173,
-0.32168883259701886, -0.2809543044604368, -0.2566513718144421,
-0.23707275479900147, -0.222493449972319, -0.211071768276895,
-0.2018111528270765, -0.19411775564246625, -0.18760901941425345,
-0.18200093376911752, -0.177110768601068, -0.17279594983160962,
-0.16895855303013718, -0.16551798644519522, -0.16239990445664887,
-0.15957146237913378, -0.15683783562639064, -0.15464849188622054},
{-1.0086253107191965, -0.5477585269653318, -0.39178341655286886,
-0.3216510975003928, -0.2809311294956558, -0.25663812628614835,
-0.23706276844592367, -0.2224875574152776, -0.2110688074970284,
-0.2018103901917101, -0.19411869682099336, -0.18761130500514867,
-0.18200429229459303, -0.17711502156164727, -0.1728009499682912,
-0.16896418432941118, -0.1655241591991512, -0.16240654556671075,
-0.15957850930674056, -0.1568454080295396, -0.1546561766071335},
{-1.0083172238001055, -0.5476190289455616, -0.39171701722402474,
-0.3216134785314324, -0.28090806280151526, -0.2566249654215369,
-0.2370528810766359, -0.22248176138343467, -0.21106594068679385,
-0.2018097200018758, -0.1941197285642744, -0.18761367943521634,
-0.18200773812051807, -0.1771193607121404, -0.17280603504913472,
-0.16896989955958475, -0.1655304149727641, -0.16241326880381735,
-0.15958563749160248, -0.15685305942743355, -0.15466394102506342},
{-1.0080092030086902, -0.5474796812651803, -0.39165074758550134,
-0.32157597594007825, -0.28088510463497585, -0.25661188959691117,
-0.2370430929410361, -0.22247606211706739, -0.21106316809067494,
-0.20180914249662862, -0.194120851109588, -0.1876161429362213,
-0.18201127148435603, -0.1771237862787558, -0.1728112053016133,
-0.1689756989586897, -0.16553675399289602, -0.16242007439046802,
-0.15959284715179933, -0.15686079006304965, -0.15467178537056725},
{-1.0077012487821122, -0.5473404841718121, -0.39158460788621596,
-0.3215385899813157, -0.2808622552498008, -0.25659889918024703,
-0.23703340429941022, -0.22247045986524938, -0.21106048995177673,
-0.2018086579111582, -0.19412206470330773, -0.18761869574370849,
-0.1820148926309031, -0.17712829849835998, -0.17281646095952397,
-0.16898158275876085, -0.16554317648694905, -0.16242696255848443,
-0.15960013851083943, -0.15686860017501658, -0.15467970987327817},
{-1.0073933615547404, -0.5472014379136354, -0.3915185983718885,
-0.3215013209072737, -0.2808395149001939, -0.25658599455336173,
-0.23702381540384465, -0.22246495486714934, -0.21105790651519385,
-0.2018082664811658, -0.1941233695824991, -0.1876213380849947,
-0.18201860180042218, -0.17713289759683448, -0.17282180224923138,
-0.16898755118563713, -0.1655496826846985, -0.16243393353015279,
-0.15960751179443378, -0.15687649000368253, -0.15468771476072618},
{-1.007085541762514, -0.547062542740548, -0.3914527192890773,
-0.3214641689722413, -0.28081688384530423, -0.2565731760831227,
-0.2370143265105753, -0.22245954736922613, -0.21105541802488403,
-0.2018079684419547, -0.19412476599077877, -0.1876240701929106,
-0.18202239923031982, -0.17713758380935474, -0.17282722940494466,
-0.16899360447600031, -0.1655562728099369, -0.1624409875330315,
-0.15961496721853052, -0.15688445978707932, -0.1546958002612513},
{-1.0067777898428218, -0.5469237989012967, -0.3913869708899682,
-0.32142713443303705, -0.2807943623383835, -0.25656044414927237,
-0.23700493787883659, -0.22245423761906125, -0.21105302472702192,
-0.20180776403273626, -0.19412625417278662, -0.187626892302049,
-0.18202628516665698, -0.17714235736565342, -0.1728327426592955,
-0.16899974286430108, -0.16556294709516806, -0.16244812479470738,
-0.15962250501604558, -0.15689250976649305, -0.15470396661302743},
{-1.0064701062311272, -0.5467852066461703, -0.39132135341958474,
-0.32139021754515795, -0.2807719506390214, -0.25654779912635206,
-0.23699564976108434, -0.2224490258606977, -0.2110507268653521,
-0.20180765349125807, -0.19412783436852976, -0.18762980464373413,
-0.18203025985069132, -0.1771472185009486, -0.17283834224492978,
-0.1690059665830006, -0.16556970576839092, -0.16245534554724372,
-0.15963012540368027, -0.15690064017975658, -0.15471221404368407},
{-1.0061624913648402, -0.546646766227866, -0.391255867132827,
-0.3213534185673126, -0.28074964900669386, -0.25653524138289185,
-0.23698646242186783, -0.222443912346165, -0.21104852469309776,
-0.20180763705926097, -0.19412950682607288, -0.18763280745294253,
-0.18203432353222126, -0.17715216745082785, -0.17284402839912616,
-0.16901227587187861, -0.16557654906486619, -0.16246265001647942,
-0.15963782861086884, -0.15690885126950604, -0.15472054277988434},
{-1.0058549456799, -0.5465084778970777, -0.3911905122772481,
-0.3213167377572148, -0.2807274576982337, -0.2565227713019027,
-0.2369773761154761, -0.22243889732246203, -0.21104641845217031,
-0.20180771497133776, -0.19413127179124956, -0.18763590096372695,
-0.18203847645132498, -0.17715720444785177, -0.17284980135504213,
-0.16901867096323997, -0.16558347721236544, -0.16247003843322716,
-0.15964561486767082, -0.15691714326507622, -0.15472895305727263},
{-1.0055474696139228, -0.5463703419077746, -0.39112528910793287,
-0.32128017537347375, -0.28070537698008025, -0.25651038925080627,
-0.23696839110822054, -0.22243398104234302, -0.21104440839512506,
-0.20180788747285305, -0.19413312950860018, -0.18763908541301078,
-0.1820427188557403, -0.17716232972816215, -0.17285566134580677,
-0.16902515209389435, -0.1655904904435772, -0.16247751102746122,
-0.15965348439500815, -0.15692551641197383, -0.15473744509588983},
{-1.0052400636043828, -0.5462323585124196, -0.39106019787536184,
-0.32124373167825127, -0.28068340710868256, -0.2564980956092029,
-0.23695950765662133, -0.22242916375485322, -0.21104249476958614,
-0.20180815480408398, -0.19413508022881842, -0.18764236103272935,
-0.18204705099380192, -0.17716754352815656, -0.17286160861189614,
-0.1690317195022999, -0.16559758899197163, -0.16248506802747897,
-0.15966143742733152, -0.15693397094159423, -0.15474601913419406},
{-1.0049327280879368, -0.5460945279665452, -0.39099523883530196,
-0.3212074069285933, -0.28066154834652934, -0.2564858907501417,
-0.23695072602217238, -0.22242444571240583, -0.21104067782638936,
-0.2018085172045545, -0.19413712419481044, -0.18764572806331614,
-0.18205147310897019, -0.1771728460800972, -0.17286764338750515,
-0.1690383734256784, -0.16560477309080568, -0.1624927096662816,
-0.15966947418984034, -0.15694250709583457, -0.15475467539069143},
{-1.0046254635041052, -0.5459568505249592, -0.3909304122425965,
-0.32117120139055544, -0.28063980095916463, -0.25647377504476765,
-0.2369420464710288, -0.22241982716965936, -0.2110389578167826,
-0.20180897491796657, -0.1941392616568436, -0.18764918674034448,
-0.18205598545159773, -0.17717823763102558, -0.17287376591491466,
-0.16904511410589862, -0.16561204297430265, -0.16250043617596077,
-0.15967759491242361, -0.1569511251075255, -0.15476341409451777},
{-1.0043182702890974, -0.5458193264430378, -0.3908657183509803,
-0.32113511532497796, -0.28061816520884975, -0.2564617488735337,
-0.23693346926397396, -0.2224153083812439, -0.21103733499012378,
-0.20180952818965636, -0.19414149286716054, -0.18765273730075194,
-0.1820605882720514, -0.17718371841012015, -0.1728799764293143,
-0.16905194177886074, -0.16561939888109123, -0.16250824778727235,
-0.1596857998288641, -0.15695982521384622, -0.15477223547151198},
{-1.0040111488816095, -0.5456819559775852, -0.3908011574192898,
-0.3210991489979165, -0.28059664136299034, -0.2564498126057657,
-0.23692499466832828, -0.22241088960257116, -0.2110358096021656,
-0.20181017726048367, -0.1941438180738544, -0.1876563799844746,
-0.18206528182037118, -0.1771892886592923, -0.17288627517022803,
-0.16905885668570875, -0.16562684104219727, -0.1625161447335728,
-0.15969408916822658, -0.15696860764884946, -0.15478113973516372},
{-1.003704099720899, -0.545544739386699, -0.3907367297037325,
-0.32106330267106387, -0.2805752296862778, -0.2564379666205383,
-0.23691662294903892, -0.22240657109153972, -0.21103438190397128,
-0.20181092237857, -0.19414623752881255, -0.18766011502808055,
-0.18207006634287382, -0.1771949486203397, -0.17289266238363155,
-0.16906585906535554, -0.16563436969870793, -0.16252412724604426,
-0.1597024631677897, -0.15697747264206896, -0.15479012711605833},
{-1.003397123244845, -0.5454076769276526, -0.390672435463145,
-0.3210275766123232, -0.2805539304437872, -0.25642621129382803,
-0.236908354368623, -0.2224023531012449, -0.21103305214829504,
-0.20181176378950738, -0.1941487514803697, -0.18766394267329645,
-0.18207494209175934, -0.17720069852802567, -0.17289913830410342,
-0.16907294916423155, -0.16564198508434913, -0.16253219555903797,
-0.15971092205438708, -0.15698642043930988, -0.15479919782778495},
{-1.0030902198927265, -0.5452707688610658, -0.3906082749560653,
-0.3209919710880058, -0.28053274390424576, -0.25641454699304234,
-0.2369001891961915, -0.2223982358957386, -0.21103182059050596,
-0.2018127017385467, -0.1941513601865239, -0.18766786316270156,
-0.18207990931821882, -0.1772065386275017, -0.1729057031748482,
-0.16908012721944488, -0.16564968744100383, -0.16254034990768673,
-0.15971946606930487, -0.1569954512648053, -0.1548083520917487},
{-1.0027833901039003, -0.5451340154456332, -0.39054424844367475,
-0.3209564863644516, -0.28051167033763136, -0.2564029741038638,
-0.23689212770176482, -0.22239421973124252, -0.21103068748696785,
-0.20181373647689327, -0.19415406389626355, -0.18767187673623198,
-0.18208496827919873, -0.177212469160537, -0.17291235724412957,
-0.16908739347546486, -0.16565747701019973, -0.16254859052675386,
-0.15972809544456368, -0.15700456535836338, -0.1548175901271236},
{-1.0024766343180787, -0.5449974169421665, -0.3904803561874104,
-0.3209211227122637, -0.28049071001429127, -0.25639149299323094,
-0.23688417015220864, -0.22239030487210698, -0.2110296530906055,
-0.20181486824856165, -0.19415686286544087, -0.18767598363719173,
-0.18209011922132845, -0.17721849036833248, -0.1729191007494535,
-0.16909474817440184, -0.16566535402904492, -0.16255691765199742,
-0.15973681041785426, -0.1570137629489068, -0.15482691215086675},
{-1.0021699529739578, -0.5448609736115486, -0.3904165984465351,
-0.3208858803999135, -0.28046986320084955, -0.2563801040398488,
-0.23687631681849552, -0.2223864915761311, -0.2110287176594312,
-0.20181609730749983, -0.19415975734855806, -0.18768018410148102,
-0.1820953624022792, -0.1772246024916626, -0.1729259339415279,
-0.16910219156257256, -0.16567331873886815, -0.16256533151712915,
-0.15974561123249487, -0.15702304427020408, -0.1548363183816548},
{-1.0018633465126925, -0.5447246857172985, -0.3903529754888808,
-0.32085075969617094, -0.28044913017085094, -0.2563688076234172,
-0.23686856796810218, -0.22238278010657098, -0.21102788145277884,
-0.20181742390002455, -0.19416274759639407, -0.18768447838417046,
-0.18210069807460627, -0.17723080577492567, -0.17293285706439576,
-0.16910972388207313, -0.16568137138101235, -0.1625738323628667,
-0.15975449811737974, -0.15703240956142395, -0.15484580903766698},
{-1.0015568153741796, -0.5445885535224022, -0.3902894875747194,
-0.3208157608771671, -0.2804285111973144, -0.2563576041103346,
-0.23686092387507074, -0.22237917072858693, -0.2110271447248806,
-0.2018188482836365, -0.19416583386993125, -0.18768886672259555,
-0.18210612649170344, -0.17723710046749375, -0.17293987036042324,
-0.16911734537880818, -0.16568951220119743, -0.1625824204225239,
-0.1597634713181435, -0.15704185904967005, -0.15485538433944157},
{-1.001250359998167, -0.5444525772900448, -0.39022613497017744,
-0.320780884212283, -0.280408006552463, -0.25634649388553044,
-0.23685338481202223, -0.2223756637066856, -0.2110265077357525,
-0.2018203707085604, -0.19416901642348705, -0.18769334936725102,
-0.18211164791310352, -0.17724348680947344, -0.172946974081313,
-0.16912505630067187, -0.16569774144392113, -0.16259109593652,
-0.15977253107203637, -0.1570513929743953, -0.15486504451149585},
{-1.0009439808270102, -0.5443167572848893, -0.390162917940728,
-0.3207461299734149, -0.28038761651271216, -0.25633547731573003,
-0.23684595105105188, -0.2223722593075479, -0.2110259707469453,
-0.2018219914259305, -0.19417229551270054, -0.18769792656031825,
-0.18211726258870442, -0.1772499650463999, -0.17295416847274225,
-0.1691328568915509, -0.16570605935008587, -0.16259985914233255,
-0.15978167762453666, -0.15706101156241914, -0.15487478976488944},
{-1.0006376783005209, -0.5441810937723659, -0.39009983675279614,
-0.3207114984381576, -0.2803673413465191, -0.2563245547847117,
-0.23683862286831925, -0.22236895779494148, -0.2110255340149223,
-0.2018237106921248, -0.19417567139608138, -0.1877025985515246,
-0.18212297077879214, -0.17725653542625253, -0.17296145378605843,
-0.16914074739617035, -0.16571446616545416, -0.16260871028065083,
-0.15979091121759836, -0.1570707150500681, -0.15488462033675887},
{-1.0003314528599105, -0.5440455870186014, -0.39003689167424227,
-0.32067698987845006, -0.28034718133689296, -0.2563137266681821,
-0.23683140053537954, -0.22236575943523462, -0.21102519780369278,
-0.2018255287640187, -0.19417914432823125, -0.18770736559099532,
-0.1821287727390768, -0.17726319819416858, -0.17296883027043464,
-0.1691487280689472, -0.16572296213739435, -0.1626176495898335,
-0.159800232091726, -0.15708050368044724, -0.15489453644683238},
{-1.0000253049470658, -0.543910237289964, -0.3899740829734668,
-0.3206426045731092, -0.2803271367561706, -0.25630299333629125,
-0.23682428433232872, -0.22236266450039466, -0.2110249623731022,
-0.20182744589835977, -0.1941827145709567, -0.18771222792373976,
-0.1821346687289207, -0.17726995360415287, -0.17297629817511506,
-0.16915679914995962, -0.16573154751037578, -0.16262667731429303,
-0.15980964048895885, -0.15709037767767597, -0.15490453832521212},
{-0.9997192350050028, -0.5437750448568011, -0.3899114109212576,
-0.32060834279869255, -0.28030720788432006, -0.2562923551742671,
-0.23681727453369206, -0.22235967325794093, -0.21102482798684719,
-0.20182946235267707, -0.19418638238309427, -0.18771718580509855,
-0.18214065900841092, -0.17727680190000683, -0.17298385775504244,
-0.16916496089574196, -0.16574022253591636, -0.1626357936956282,
-0.1598191366634012, -0.15710033728838368, -0.15491462620379082},
{-0.9994132434750398, -0.5436400099874135, -0.3898488757881893,
-0.3205742048333917, -0.280287395000542, -0.25628181254774063,
-0.23681037141997763, -0.22235678597658648, -0.21102479490929227,
-0.20183157838366128, -0.19419014802113566, -0.18772223948384692,
-0.18214674383274598, -0.17728374333449892, -0.17299150926129414,
-0.16917321355178672, -0.16574898745875544, -0.16264499897415874,
-0.15982872085140798, -0.15711038274501732, -0.1549248003122159},
{-0.9991073307997738, -0.5435051329498464, -0.3897864778455613,
-0.3205401909559811, -0.280267698380257, -0.2562713658431903,
-0.23680357527058504, -0.22235400292754548, -0.21102486340099347,
-0.20183379425317582, -0.1941940117468164, -0.18772738921209964,
-0.18215292346205558, -0.1772907781555375, -0.17299925294712182,
-0.16918155736583174, -0.16575784252898984, -0.1626542933935866,
-0.1598383933080072, -0.15712051428624818, -0.15493506089029552},
{-0.9988014974207502, -0.5433704140142623, -0.38972421736482943,
-0.32050630144651393, -0.28024811830820795, -0.25626101543831226,
-0.23679688636289598, -0.22235132438341054, -0.21102503372871695,
-0.20183611022328307, -0.19419797381883086, -0.18773263524495576,
-0.18215919815584414, -0.17729790661599054, -0.17300708906722662,
-0.16918999259480927, -0.16576678799258104, -0.16266367720167807,
-0.15984815427104593, -0.15713073215449924, -0.154945408174612},
{-0.9984957437834012, -0.5432358534541777, -0.3896620946206326,
-0.3204725365879142, -0.2802286550646187, -0.25625076170037175,
-0.23679030498132647, -0.2223487506153674, -0.2110253061608489,
-0.20183852655597434, -0.19420203449701035, -0.18773797783492796,
-0.18216556817843355, -0.17730512897142603, -0.17301501787783025,
-0.16919851948711084, -0.16577582410610603, -0.16267315064213506,
-0.15985800399884909, -0.15714103658942236, -0.15495584240015603},
{-0.9981900703295068, -0.5431014515393002, -0.38960010988631666,
-0.32043889666022096, -0.28020930892968465, -0.25624060501810675,
-0.23678383140544668, -0.22234628189622185, -0.2110256809604465,
-0.20184104351223198, -0.1942061940461457, -0.18774341723847954,
-0.1821720337898256, -0.17731244547184133, -0.17302303963492704,
-0.16920713829722445, -0.1657849511156968, -0.1626827139626954,
-0.15986794273355542, -0.15715142782903513, -0.15496636380967743},
{-0.9978844775028648, -0.5429672085443826, -0.3895382634397464,
-0.32040538194677026, -0.28019008019120406, -0.2562305457588536,
-0.236777465924078, -0.22234391850217605, -0.21102615839704697,
-0.2018436613583816, -0.1942104527238797, -0.1877489537143333,
-0.18217859524969526, -0.17731985637175285, -0.17303115459607454,
-0.1692158492757443, -0.16579416926987278, -0.16269236740755844,
-0.15987797072511967, -0.1571619061217575, -0.1549769726449881},
{-0.9975789657475502, -0.5428331247417475, -0.38947655555570293,
-0.32037199273317185, -0.2801709691285339, -0.2562205843093466,
-0.23677120881805536, -0.2223416607067037, -0.21102673874011657,
-0.20184638036094782, -0.19421481079616854, -0.18775458751660778,
-0.1821852528243113, -0.17732736192688492, -0.17303936301904344,
-0.16922465267258247, -0.16580347882640467, -0.1627021112261673,
-0.15988808822525868, -0.15717247170879034, -0.1549876691490084},
{-0.9972735355078086, -0.5426992004063891, -0.38941498651080053,
-0.3203387293013833, -0.2801519760298845, -0.2562107210457043,
-0.23676506037315903, -0.22233950878155895, -0.21102742225718885,
-0.20184920078304458, -0.1942192685203139, -0.18776031890479317,
-0.18219200677289393, -0.17733496239335977, -0.1730476651618602,
-0.16923354875089558, -0.16581288003189343, -0.16271194566905933,
-0.15989829548358614, -0.15718312483717511, -0.15499845356411868},
{-0.9969681872287595, -0.5425654358140974, -0.3893535565850357,
-0.32030559194144814, -0.2801331011768582, -0.2562009563399812,
-0.2367590208765762, -0.2223374630076762, -0.21102820921923637,
-0.2018521228951471, -0.19422382616302514, -0.18776614814272818,
-0.18219885736041874, -0.17734265802900495, -0.17305606128738305,
-0.16924253776086573, -0.16582237314111126, -0.16272187098637403,
-0.1599085927529842, -0.15719386575754868, -0.15500932613767304},
{-0.9966629213541722, -0.5424318312408758, -0.3892922660570548,
-0.3202725809364324, -0.2801143448613601, -0.25619129057868406,
-0.23675309061847827, -0.2223355236608171, -0.2110290998982407,
-0.20185514696539997, -0.19422848399035786, -0.18777207548851038,
-0.18220580485466087, -0.1773504490963802, -0.17306455165383738,
-0.16925161996040572, -0.16583195841080567, -0.16273188742901823,
-0.159918980285795, -0.1572046947162704, -0.1550202871152635},
{-0.9963577383301185, -0.542298386963239, -0.38923111520838916,
-0.32023969657811335, -0.28009570736917055, -0.2561817241326736,
-0.23674726988660666, -0.22233369101779488, -0.2110300945663539,
-0.20185827326052674, -0.1942332422634223, -0.18777810120518268,
-0.1822128495174553, -0.17735833584566763, -0.17307313652371192,
-0.16926079560637675, -0.16584163609012137, -0.16274199524846722,
-0.15992945833023953, -0.15721561196185974, -0.15503133673702507},
{-0.9960526386018103, -0.5421651032603023, -0.389170104318751,
-0.32020693915329446, -0.28007718898952305, -0.2561722573882008,
-0.2367415589728381, -0.2223319653586202, -0.21103119349369592,
-0.20186150205482534, -0.19423810125094576, -0.18778422555405427,
-0.18221999161438873, -0.17736631854360496, -0.17308181616201068,
-0.16927006495191677, -0.16585140643395846, -0.16275219469865476,
-0.15994002714546696, -0.1572266177482078, -0.15504247525706205},
{-0.9957476226153972, -0.5420319804095897, -0.3891092336729258,
-0.3201743089509108, -0.28005879000946265, -0.2561628907245961,
-0.2367359581681825, -0.22233034695905474, -0.2110323969576342,
-0.20186483361879937, -0.1942430612150048, -0.18779044880295714,
-0.1822272314097262, -0.17737439744632866, -0.17309059082776912,
-0.16927942826173137, -0.1658612696971744, -0.16276248603621468,
-0.1599506869788314, -0.15723771233554373, -0.15505370291720055},
{-0.9954426908166525, -0.5418990186924191, -0.3890485035526723,
-0.3201418062650845, -0.28004051072302616, -0.25615362451142687,
-0.23673046776252704, -0.22232883610229237, -0.21103370523186982,
-0.2018682682265336, -0.19424812242641565, -0.18779677121783322,
-0.18223456917168335, -0.17738257282110226, -0.1730994607880092,
-0.16928888579225543, -0.16587122613839256, -0.16277286951273595,
-0.15996143808462193, -0.15724889597400704, -0.15506501996576105},
{-0.995137843652607, -0.5417662183872096, -0.3889879142425201,
-0.3201094313856885, -0.2800223514194329, -0.25614445914169437,
-0.2367250880565024, -0.22232743306477687, -0.21103511859331547,
-0.20187180615032219, -0.19425328515266926, -0.18780319306422655,
-0.18224200517055067, -0.1773908449290218, -0.1731084263109608,
-0.1692984378061766, -0.1658812760136925, -0.1627833453899683,
-0.15997228072251346, -0.15726016891997574, -0.15507642664884713},
{-0.9948330815697446, -0.5416335797773684, -0.3889274660295712,
-0.32007718460549484, -0.28000431239367174, -0.2561353949839571,
-0.23671981934002417, -0.22232613813413593, -0.21103663731882705,
-0.20187544766601206, -0.19425854966213763, -0.1878097146112907,
-0.18224953967013846, -0.17739921403114067, -0.17311748765484936,
-0.1693080845613366, -0.16589141957349796, -0.1627939139240624,
-0.15998321514172176, -0.15727153143582484, -0.15508792321550402},
{-0.9945284050147123, -0.5415011031442845, -0.388867159198071,
-0.3200450662199472, -0.27998639393521785, -0.25612643242534716,
-0.236714661911833, -0.22232495158726806, -0.2110382616838109,
-0.20187919304979118, -0.19426391622823758, -0.1878163361265166,
-0.18225717293917398, -0.1774076803962572, -0.17312664509614706,
-0.1693178263193147, -0.1659016570830829, -0.1628045753694778,
-0.15999424160486342, -0.1572829837790266, -0.15509950991391008},
{-0.9942238144363458, -0.541368788770086, -0.38880699403731,
-0.32001307652078026, -0.2799685963426839, -0.2561175718486908,
-0.23670961606769936, -0.2223238737091009, -0.2110399919696846,
-0.20188304257794698, -0.19426938511531944, -0.1878230578832074,
-0.18226490524867245, -0.17741624428559533, -0.17313589889856473,
-0.16932766334574012, -0.1659119887935816, -0.16281532999117587,
-0.1600053603589089, -0.15729452621576456, -0.15511118699372162},
{-0.9939193102810222, -0.5412366369404253, -0.3887469708343332,
-0.3199812158090083, -0.2799509199074066, -0.2561088136249481,
-0.2367046821065486, -0.22232290478139305, -0.21104182845732566,
-0.20188699653185438, -0.1942749566017028, -0.1878298801518241,
-0.18227273686386525, -0.1774249059707813, -0.17314524932818642,
-0.16933759590658326, -0.16592241496883275, -0.16282617804847632,
-0.16001657166724215, -0.15730615900973532, -0.1551229547050781},
{-0.9936148929979609, -0.5411046479402302, -0.3886870898815715,
-0.3199494843802171, -0.2799333649282687, -0.2561001581492519,
-0.23669986033033297, -0.22232204509215592, -0.21104377142546582,
-0.20189105518835504, -0.1942806309606766, -0.1878368032089952,
-0.18228066805897924, -0.17743366571758656, -0.173154696659239,
-0.16934762426230066, -0.16593293586863922, -0.16283711980521787,
-0.16002787578574384, -0.15731788242348443, -0.15513481329722367},
{-0.9933105630360544, -0.540972822053746, -0.3886273514677612,
-0.3199178825284861, -0.27991593170283124, -0.25609160578595436,
-0.23669515103863148, -0.22232129492262231, -0.21104582115714265,
-0.20189521882743122, -0.19428640846308554, -0.18784382732471272,
-0.18228869910193168, -0.177442523793232, -0.17316424115942652,
-0.16935774868247222, -0.1659435517453005, -0.16284815551847487,
-0.16003927296983989, -0.1573296967243465, -0.15514676301742725},
{-0.9930063208426887, -0.5408411595683731, -0.3885677558838836,
-0.31988641055711753, -0.2798986205253158, -0.2560831569309556,
-0.2366905545325153, -0.22232065455851568, -0.21104797793579166,
-0.20189948772971889, -0.19429228938939502, -0.1878509527746104,
-0.18229683026446253, -0.177451480466857, -0.17317388310023318,
-0.16936796942692922, -0.16595426286902182, -0.1628592854575146,
-0.16005076348093894, -0.15734160217805027, -0.15515880412185368},
{-0.9927021668686464, -0.5407096607712276, -0.3885083034237624,
-0.3198550687634878, -0.279881431700403, -0.25607481196381343,
-0.23668607111504514, -0.22232012429000747, -0.21105024204280198,
-0.20190386218145306, -0.19429827401285138, -0.18785817983913944,
-0.18230506181490114, -0.17746053600785672, -0.1731836227537542,
-0.16937828677265543, -0.16596506949838385, -0.16287050988817953,
-0.16006234757401216, -0.15735359905674784, -0.15517093686248984},
{-0.9923981015641417, -0.5405783259534331, -0.3884489943819318,
-0.319823857453045, -0.27986436552285454, -0.2560665712579322,
-0.23668170109145592, -0.22231970440101634, -0.21105261376571605,
-0.2019083424636392, -0.19430436261092154, -0.1878655087919725,
-0.18231339403132552, -0.17746969069060015, -0.17319346039106165,
-0.16938870098331904, -0.16597597189132784, -0.16288182907531734,
-0.16007402551321093, -0.15736568762648062, -0.15518316149390898},
{-0.9920941253765321, -0.540447155399761, -0.3883898290514338,
-0.3197927769233502, -0.27984742229641313, -0.25605843521069005,
-0.2366774447664426, -0.22231939518235322, -0.2110550933915647,
-0.20191292886381973, -0.19431055546745313, -0.18787293991790932,
-0.182321827185703, -0.17747894478564774, -0.17320339628966508,
-0.1693992123276331, -0.16598697031837162, -0.16289324328420207,
-0.16008579755597907, -0.1573778681646445, -0.1551954782665632},
{-0.9917902387577655, -0.5403161494024857, -0.38833080772869266,
-0.31976182747821724, -0.27983060232412527, -0.25605040418939495,
-0.23667330244626328, -0.22231919692113422, -0.21105768120642665,
-0.20191762166425065, -0.19431685285979938, -0.18788047349416104,
-0.18233036154848037, -0.17748829856462578, -0.1732134307186044,
-0.16940982108103242, -0.16599806503688797, -0.16290475278498207,
-0.16009766396392422, -0.157390140932975, -0.1552078874359779},
{-0.9914864421585534, -0.5401853082524042, -0.38827193071141153,
-0.31973100942369115, -0.27981390590473154, -0.25604247858997553,
-0.23666927443930774, -0.2223191099092361, -0.21106037749693485,
-0.20192242115493286, -0.19432325507121107, -0.1878881098009657,
-0.182338997396144, -0.17749775230534226, -0.17322356395740712,
-0.16942052750825098, -0.16600925631760788, -0.16291635784158132,
-0.16010962499737502, -0.1574025062076032, -0.15522038926413018},
{-0.9911827360291028, -0.5400546322411088, -0.3882131982954746,
-0.31970032306278995, -0.2797973333464512, -0.2560346587945048,
-0.23666536105241676, -0.2223191344345281, -0.21106318255598921,
-0.20192732762109245, -0.19432976238172728, -0.18789584912545365,
-0.1823477350036029, -0.177507306275416, -0.1732337962802859,
-0.1694313318895979, -0.16602054442206793, -0.16292805873207783,
-0.1601216809187065, -0.1574149642649587, -0.15523298400357533},
{-0.9908791208224983, -0.5399241216627928, -0.38815461078289104,
-0.31966976870450026, -0.27978088495284226, -0.25602694517900204,
-0.23666156259339743, -0.22231927079228342, -0.2110660966727096,
-0.20193234135682303, -0.19433637507655988, -0.18790369174682553,
-0.18235657464630606, -0.17751696076061307, -0.17324412796321553,
-0.16944223449313256, -0.1660319296228181, -0.16293985572269776,
-0.1601338319919421, -0.1574275153742093, -0.15524567191299354},
{-0.9905755969895083, -0.5397937768101428, -0.38809616847005657,
-0.3196393466532612, -0.2797645610270507, -0.25601933813879896,
-0.23665787937127902, -0.22231951927217608, -0.2110691201365853,
-0.20193746264668277, -0.19434309344192968, -0.18791163795638965,
-0.1823655165997593, -0.17752671603227554, -0.1732545592849135,
-0.169453235593096, -0.1660434121830292, -0.16295174908185572,
-0.16014607848048001, -0.15744015980581594, -0.15525845325394982},
{-0.9902721649824073, -0.5396635979778068, -0.3880378716616093,
-0.3196090572181305, -0.27974836187971164, -0.2560118380470442,
-0.23665431170374518, -0.22231988016690707, -0.21107225324470846,
-0.20194269178425373, -0.19434991775976584, -0.18791968803616044,
-0.18237456114124484, -0.1775365723662219, -0.1732650905199904,
-0.16946433546758044, -0.16605499236933952, -0.16296373908571127,
-0.16015842064221886, -0.15745289783696137, -0.15527132828302115},
{-0.9899688252540102, -0.5395335854616121, -0.3879797206583788,
-0.319578900712159, -0.27973228781617365, -0.2560044453004622,
-0.23665085989652823, -0.22232035377351167, -0.21107549628732158,
-0.20194802906286213, -0.19435684832217248, -0.18792784227402137,
-0.18238370855010544, -0.17754653004621446, -0.17327572194938057,
-0.16947553438535579, -0.16606667045569168, -0.16297582600429905,
-0.16017085874868542, -0.15746572973861817, -0.15528429726626314},
{-0.9896655782573092, -0.5394037395571587, -0.3879217157632553,
-0.31954887743827953, -0.27971633914553706, -0.25599716028135333,
-0.2366475242622812, -0.2223209403827866, -0.2110788495607352,
-0.20195347477373105, -0.1943638854083929, -0.18793610096192026,
-0.18239295910328224, -0.1775565893449027, -0.17328645385171626,
-0.16948683263305497, -0.16607844671187877, -0.16298801011119224,
-0.1601833930602652, -0.15747865578669007, -0.155297360463706},
{-0.9893624244461208, -0.5392740605631445, -0.3878638572804647,
-0.3195189877163074, -0.2797005161780106, -0.25598998336978696,
-0.2366443051155045, -0.22232164029465196, -0.21108231336442884,
-0.2019590292141089, -0.19437102931284755, -0.1879444643893038,
-0.182402313080118, -0.17756675055008486, -0.1732972865081166,
-0.16949823047809787, -0.16609032140765123, -0.16300029168223773,
-0.16019602384454856, -0.1574916762595393, -0.1553105181385206},
{-0.9890593642733876, -0.5391445487770881, -0.38780614551447457,
-0.319489231852188, -0.2796848192229078, -0.2559829149614501,
-0.23664120277130962, -0.22232245380385507, -0.2110858879901798,
-0.2019646926782599, -0.19437828032549476, -0.18795293284823344,
-0.18241177076559723, -0.1775770139441022, -0.17330822019769698,
-0.16950972820308152, -0.1661022948217692, -0.16301267098701544,
-0.1602087513731476, -0.15750479142182883, -0.15532377055490088},
{-0.9887563981934306, -0.5390152044980709, -0.3877485807732768,
-0.3194596101636904, -0.2796692485930805, -0.2559759554332999,
-0.23663821754573178, -0.22232338120980444, -0.2110895737437346,
-0.2019704654611587, -0.19438563873460168, -0.18796150662900857,
-0.18242133243541048, -0.17758737980402373, -0.17331925520463187,
-0.16952132608821557, -0.16611436721990458, -0.16302514830853454,
-0.1602215759045862, -0.15751800155726414, -0.15533711797527872},
{-0.9884535266618997, -0.5388860280269085, -0.3876911633636695,
-0.31943012296406437, -0.27965380460223344, -0.2559691051830697,
-0.23663534975241873, -0.22232442280838427, -0.21109337091989744,
-0.20197634786183016, -0.19439310483444672, -0.18797018602539595,
-0.18243099837361854, -0.17759784841720716, -0.17333039180971355,
-0.16953302440923324, -0.16612653888272177, -0.1630377239130496,
-0.1602344977142991, -0.15753130693229878, -0.15535056066413233},
{-0.9881507501325402, -0.5387570196628673, -0.38763389359340295,
-0.31940077056782457, -0.27963848756184007, -0.2559623645946374,
-0.23663259970901152, -0.22232557889967097, -0.2110972798209474,
-0.20198234017996697, -0.19440067890987223, -0.18797897133673303,
-0.18244076886210792, -0.17760842006545374, -0.17334163029566696,
-0.16954482344526411, -0.16613881008619558, -0.16305039808523247,
-0.1602475170720794, -0.15754470783171826, -0.15536409888427727},
{-0.98784806906135, -0.5386281797097894, -0.3875767717736096,
-0.3193715532938626, -0.2796232977872961, -0.2559557340488965,
-0.23662996773077793, -0.22232684978689576, -0.21110130074728772,
-0.20198844271384075, -0.194408361259363, -0.18798786285688607,
-0.18245064418216828, -0.17761909504064022, -0.17335297094506075,
-0.16955672348139217, -0.16615118110543392, -0.16306317109730628,
-0.1602606342372752, -0.15755820452463354, -0.1553777329014565},
{-0.9875454839050448, -0.5384995084695845, -0.3875197982124092,
-0.319342471459251, -0.2796082355941678, -0.2559492139479005,
-0.2366274541409581, -0.2223282357663976, -0.2111054340100793,
-0.20199465576396847, -0.19441615217162678, -0.18799686088341616,
-0.1824606246274385, -0.17762987362578997, -0.17336441404646052,
-0.1695687247952833, -0.16616365222262175, -0.16307604322761904,
-0.16027384949335044, -0.15757179728785786, -0.1553914629775761},
{-0.9872429951179171, -0.5383710062464075, -0.38746297322512646,
-0.3193135253813466, -0.2795933012994709, -0.25594280466879127,
-0.23662505925447874, -0.22232973714635307, -0.21110967990753693,
-0.20200097963441976, -0.19442405194634205, -0.18800596571588812,
-0.18247071047343866, -0.17764075610756436, -0.17337595987838483,
-0.1695808276705435, -0.1661762237135349, -0.16308901475649407,
-0.16028716310468383, -0.15758548639804815, -0.15540528937695797},
{-0.9869406031574215, -0.5382426733442855, -0.3874062971196395,
-0.31928471538365955, -0.27957849521942535, -0.2559365066086201,
-0.23662278339097043, -0.2223313542258296, -0.21111403874829193,
-0.2020074146236226, -0.19443206087461817, -0.18801517765174935,
-0.18248090201068123, -0.1776517427796307, -0.17338760873499837,
-0.16959303238671453, -0.16618889586237628, -0.1631020859560124,
-0.16030057534850073, -0.1575992721319608, -0.15541921236021494},
{-0.9866383084819219, -0.5381145100700309, -0.3873497702139588,
-0.31925604178387346, -0.27956381767558014, -0.25593032015797235,
-0.2366206268725648, -0.22233308731108536, -0.21111851083902877,
-0.2020139610358882, -0.19444017924982404, -0.1880244969953253,
-0.1824911995251739, -0.17766283392603555, -0.17339936089821606,
-0.16960533922913612, -0.166201668947636, -0.16311525711473962,
-0.16031408649539003, -0.15761315476994753, -0.15543323219156946},
{-0.9863361115473381, -0.5379865167300579, -0.38729339282097897,
-0.319227504907559, -0.2795492689847521, -0.2559242456996884,
-0.23661859001845187, -0.2223349367075116, -0.21112309648962935,
-0.20202061918170955, -0.1944484073719508, -0.1880339240436797,
-0.18250160330597964, -0.17767402984436842, -0.17341121665607773,
-0.16961774848419964, -0.16621454325800755, -0.16312852850467152,
-0.16032769682047388, -0.15762713459085376, -0.15544734913251546},
{-0.9860340128123255, -0.537858693631776, -0.3872371652581421,
-0.31919910507730265, -0.27953484946847595, -0.2559182836363618,
-0.2366166731497117, -0.22233690272085482, -0.21112779601025977,
-0.20202738936289677, -0.19445674553675474, -0.18804345910652387,
-0.18251211364083986, -0.17768533082650606, -0.17342317630091486,
-0.16963026042942886, -0.16622751907601696, -0.16314190040894516,
-0.1603414065993718, -0.15764121186852265, -0.15546156344716167},
{-0.985732012735248, -0.5377310410827505, -0.38718108784046024,
-0.3191708426129196, -0.2795205594502619, -0.25591243434514865,
-0.23661487659242653, -0.22233898565862376, -0.21113260971149828,
-0.20203427188239687, -0.1944651940385569, -0.1880531024850569,
-0.18252273081789383, -0.17769673715783085, -0.1734352401173993,
-0.16964287535566314, -0.1662405966843039, -0.16315537310880757,
-0.16035521610471903, -0.15765538688616232, -0.15547587539046503},
{-0.9854301117743987, -0.5376035593934745, -0.387125160887166,
-0.319142717847825, -0.2795063992479925, -0.2559066982319109,
-0.2366132006661985, -0.22234118582674967, -0.21113753790636736,
-0.2020412670524081, -0.19447375317537308, -0.18806285448201265,
-0.18253345512800934, -0.17770824914217087, -0.17344740839615724,
-0.16965559354241577, -0.16625377637609517, -0.1631689468856905,
-0.16036912561858685, -0.15766965992429505, -0.15549028522951858},
{-0.9851283103897472, -0.5374762488736877, -0.3870693847182167,
-0.3191147311018483, -0.27949236919097586, -0.25590107568471865,
-0.23661164569497828, -0.22234350353744503, -0.21114258091104432,
-0.20204837518235763, -0.19448242324651233, -0.1880727154068893,
-0.1825442868622389, -0.1777198670681912, -0.17345968143355606,
-0.169668415282473, -0.166267058432652, -0.16318262202231892,
-0.16038313541321259, -0.15768403126310204, -0.1555047932253899},
{-0.984826609040617, -0.5373491098364411, -0.38701375965341356,
-0.31908688271020935, -0.27947846960348954, -0.2558955670924945,
-0.23661021200372545, -0.22234593910395972, -0.21114773904157857,
-0.20205559658106154, -0.1944912045508005, -0.18808268556900032,
-0.18255522631793042, -0.17773159124180893, -0.17347205951777767,
-0.1696813408602793, -0.16628044315258705, -0.16319639880428838,
-0.16039724577436232, -0.15769850119104944, -0.1555193996398998},
{-0.9845250081876742, -0.5372221425914461, -0.3869582860116765,
-0.31905917299559405, -0.27946470080661356, -0.25589017285787463,
-0.23660889991488432, -0.22234849283252345, -0.21115301260697095,
-0.2020629315578475, -0.19450009738648077, -0.18809276527143481,
-0.18256627378318058, -0.1777434219519307, -0.1734845429418499,
-0.16969437056040704, -0.16629393081902322, -0.16321027750913686,
-0.16041145697164438, -0.15771306998425416, -0.15553410472782048},
{-0.9842235082907891, -0.537095347454283, -0.3869029641184625,
-0.31903160228887373, -0.2794510631312761, -0.2558848933599478,
-0.2366077097573509, -0.2223511650357466, -0.21115840193492375,
-0.2020703804228532, -0.19450910205071636, -0.18810295482494155,
-0.18257742955084666, -0.17775535950096355, -0.1734971319970242,
-0.1697075046728571, -0.16630752172439145, -0.16322425842355415,
-0.16042576928768426, -0.15772773792897965, -0.1555489087580213},
{-0.9839221098120206, -0.536968724737747, -0.38684779429621585,
-0.31900417092320765, -0.2794375569010157, -0.2558797290080719,
-0.23660664185452163, -0.22235395603030383, -0.21116390734219692,
-0.20207794349029484, -0.19451821884827325, -0.18811325453933136,
-0.18258869391769394, -0.17776740418835857, -0.1735098269846418,
-0.1697207434882415, -0.16632121616297013, -0.16323834182966834,
-0.1604401830067843, -0.15774250531305256, -0.15556381199019143},
{-0.9836208132116937, -0.536842274757575, -0.3867927768692141,
-0.3189768792283445, -0.2794241824499295, -0.25587468019639914,
-0.2366056965334593, -0.22235686613019823, -0.2111695291457778,
-0.20208562107256967, -0.19452744807766464, -0.18812366472958786,
-0.1826000671781003, -0.1777795563133111, -0.17352262819787256,
-0.16973408729589323, -0.16633501442917975, -0.1632525280170114,
-0.16045469840713622, -0.15775737242347532, -0.15557881468598111},
{-0.9833196189525637, -0.5367159978301856, -0.38673791216392317,
-0.3189497275431137, -0.27941094010662937, -0.2558697473090632,
-0.23660487412251996, -0.22235989565156444, -0.2111752676748324,
-0.20209341348777343, -0.19453679003937907, -0.18813418570383078,
-0.1826115496346432, -0.1777918161819514, -0.17353553593211757,
-0.16974753638758955, -0.16634891682068087, -0.16326681727272785,
-0.16046931577383816, -0.15777233954656822, -0.15559391710991122},
{-0.983018527497471, -0.5365898942724101, -0.38668320050575744,
-0.31892271619661017, -0.27939783019903075, -0.25586493075869043,
-0.23660417494579633, -0.22236304491043768, -0.21118112324748495,
-0.20210132104530487, -0.19454624503573825, -0.18814481777441472,
-0.18262314157750836, -0.1778041840982496, -0.17354855048604634,
-0.1697610910490539, -0.1663629236283839, -0.16328120987867578,
-0.16048403539105038, -0.15778740696879368, -0.15560911952715628},
{-0.9827175393078562, -0.5364639644031968, -0.3866286422248493,
-0.3188958455270523, -0.2793848530630214, -0.2558602309272118,
-0.2366035993390625, -0.22236631422505582, -0.21118709619328513,
-0.20210934406810566, -0.19455581336953287, -0.1881555612621213,
-0.18263484331211544, -0.17781666036262322, -0.17356167216202323,
-0.1697747515807464, -0.1663770351504752, -0.16329570612697353,
-0.16049885753369608, -0.15780257498559536, -0.15562442220249295},
{-0.9824166548483859, -0.5363382085406272, -0.38657423764794885,
-0.3188691158732979, -0.27937200902812265, -0.2558556482246104,
-0.23660314762503276, -0.22236970391971056, -0.21119318683626886,
-0.20211748286861564, -0.19456549534400835, -0.18816641646799326,
-0.18264665513422074, -0.17782924528040667, -0.17357490125388608,
-0.16978851826621622, -0.166391251688367, -0.163310306300815,
-0.1605137824965368, -0.15781784388119036, -0.1556398254033411},
{-0.9821158745821634, -0.5362126270053125, -0.38651998710609803,
-0.3188425275678384, -0.2793592984327091, -0.2558511830473549,
-0.23660282013484846, -0.22237321430817758, -0.21119939550564482,
-0.20212573776483111, -0.19457529125729423, -0.18817738371937764,
-0.18265857734913027, -0.17784193915876756, -0.173588238066813,
-0.1698023914144926, -0.16640557353656504, -0.16332501069115324,
-0.16052881056481283, -0.1578332139521592, -0.15565532939277205},
{-0.9818151989744521, -0.5360872201190432, -0.3864658909306655,
-0.31881608095558533, -0.27934672160921536, -0.2558468357833732,
-0.23660261719558662, -0.2223768457192108, -0.21120572253128955,
-0.2021341090779032, -0.19458520141671443, -0.18818846333024908,
-0.18267061025184717, -0.17785474230761622, -0.17360168290380784,
-0.1698163713049894, -0.16642000099446363, -0.16333981959058974,
-0.160543942019018, -0.15784868548939812, -0.15567093444562374},
{-0.9815146284890517, -0.5359619882027715, -0.38641194945263635,
-0.3187897763752403, -0.2793342788935149, -0.25584260684786386,
-0.23660253914420082, -0.22238059847336444, -0.21121216824255384,
-0.2021425971292672, -0.19459522612822866, -0.18819965561338847,
-0.18268275415816504, -0.17786765503609558, -0.17361523606439278,
-0.16983045824306942, -0.16643453436586242, -0.1633547332854164,
-0.16055917715505075, -0.15786425878485488, -0.15568664083113504},
{-0.9812141635924263, -0.5358369315797376, -0.386358163008083,
-0.31876361416806276, -0.27932197062423825, -0.25583849662528735,
-0.23660258631004183, -0.2223844728942055, -0.21121873297560967,
-0.2021512022363794, -0.19460536569626186, -0.18821096089257594,
-0.18269500936129646, -0.17788067765133064, -0.17362889785928814,
-0.1698446525255406, -0.16644917394850722, -0.16336975206937154,
-0.16057451625763974, -0.15787993413238155, -0.15570244882221118},
{-0.9809138047497612, -0.5357120505748867, -0.3863045319287153,
-0.3187375946778701, -0.27930979714047055, -0.25583450553159537,
-0.23660275902329886, -0.22238846931252, -0.21122541705847198,
-0.2021599247206467, -0.19461562042449998, -0.1882223794800666,
-0.1827073761714928, -0.17789381046409858, -0.17364266859041777,
-0.16985895444429389, -0.16646392004852828, -0.16338487623664832,
-0.16058995961526534, -0.15789571182995132, -0.15571835868789208},
{-0.9806135524272364, -0.5355873455122122, -0.386251056550762,
-0.3187117182456376, -0.2792977587790517, -0.2558306339606844,
-0.23660305761639222, -0.22239258804975748, -0.21123222083043913,
-0.20216876490891877, -0.1946259906179506, -0.18823391169939896,
-0.182719854893449, -0.1779070537876919, -0.17365654856297397,
-0.16987336430696587, -0.16647877296151137, -0.16340010607595445,
-0.16060550752271752, -0.1579115921752816, -0.15573437070133878},
{-0.9803134070916073, -0.5354628167196438, -0.3861977372110914,
-0.31868598521947433, -0.2792858558839981, -0.25582688231133943,
-0.23660348242292173, -0.22239682943974515, -0.21123914462690152,
-0.2021777231210109, -0.19463647658713512, -0.18824555786946462,
-0.182732445836578, -0.17792040793119668, -0.173670538086526,
-0.1698878824079486, -0.16649373299495096, -0.16341544188318835,
-0.16062116026878925, -0.1579275754635603, -0.15575048514256196},
{-0.9800133692107238, -0.5353384645216295, -0.386144574247993,
-0.3186603959459404, -0.27927408879421023, -0.2558232509961016,
-0.23660403377814987, -0.22240119381103796, -0.21124618878984336,
-0.2021867996834743, -0.19464707863828323, -0.1882573183120826,
-0.18274514931415808, -0.17793387321341925, -0.17368463747095575,
-0.16990250905107018, -0.16650880045401095, -0.16343088395530003,
-0.16063691814989056, -0.15794366198841203, -0.15576670228261946},
{-0.9797134392516114, -0.5352142892488558, -0.386091568000964,
-0.3186349507699475, -0.27926245785387493, -0.2558197404075315,
-0.23660471201615962, -0.2224056814958999, -0.2112533536531771,
-0.202195994924935, -0.1946577970783494, -0.18826919335124614,
-0.18275796562794255, -0.1779474499434741, -0.1736988470221945,
-0.16991724454115342, -0.16652397563930776, -0.16344643258827318,
-0.16065278145632078, -0.15795985205309648, -0.1557830224018062},
{-0.9794136176831216, -0.5350902912280162, -0.3860387188068728,
-0.31860965004302955, -0.27925096340480593, -0.25581635095595345,
-0.23660551747063607, -0.22241029282692182, -0.21126063955860275,
-0.20220530916354562, -0.1946686322203135, -0.18828118330101518,
-0.1827708950939666, -0.17796113844440242, -0.17371316705194317,
-0.16993208917466518, -0.16653925885765375, -0.1634620880741977,
-0.16066875048755946, -0.15797614595766163, -0.15579944577461902},
{-0.9791139049743478, -0.5349664707922415, -0.385986027011171,
-0.3185844941114624, -0.27923960579526863, -0.2558130830502705,
-0.2366064504769554, -0.2224150281415973, -0.21126804685182776,
-0.20221474273381546, -0.1946795843666962, -0.1882932884948616,
-0.1827839380270575, -0.17797493902511974, -0.17372759787741643,
-0.16994704326398846, -0.16655465041594653, -0.16347785071698695,
-0.16068482553700392, -0.15799254400502605, -0.15581597267583902},
{-0.9788143015941344, -0.5348428282711666, -0.3859334929522049,
-0.31855948333158324, -0.27922838536959205, -0.25580993708308597,
-0.23660751137329328, -0.22241988777292931, -0.21127557587354318,
-0.20222429596518054, -0.1946906538344848, -0.1883055092483943,
-0.18279709473657135, -0.17798885200505765, -0.1737421397997707,
-0.16996210711684512, -0.1665701506186963, -0.16349372080756552,
-0.16070100689924516, -0.15800904649395875, -0.15583260339241178},
{-0.9785148080125836, -0.5347193639963876, -0.38588111697724514,
-0.3185346180525528, -0.27921730247403787, -0.2558069134788923,
-0.23660870049400273, -0.22242487206221995, -0.21128322697195756,
-0.2022339691839221, -0.19470184093579235, -0.18831784589193035,
-0.18281036553983654, -0.17800287770870682, -0.17375679314187664,
-0.16997728103268628, -0.16658575977473333, -0.16350969865268894,
-0.16071729488140818, -0.15802565372902677, -0.15584933819445723},
{-0.9782154246999184, -0.5345960783023571, -0.38582889942766485,
-0.31850989862512336, -0.2792063574564736, -0.25580401262206465,
-0.2366100181805706, -0.22242998134477432, -0.21129100049054728,
-0.20224376271919198, -0.1947131459815381, -0.18833029875059992,
-0.1828237507490087, -0.17801701644611967, -0.17377155821523615,
-0.1699925653281582, -0.16660147818606674, -0.16352578454805666,
-0.16073368977055225, -0.1580423660115855, -0.1558661773644019},
{-0.9779161521271647, -0.534472971521879, -0.3857768406509763,
-0.31848532540969643, -0.2791955506654631, -0.25580123493844553,
-0.2366114647666535, -0.222435215963543, -0.2112988967771514,
-0.20225367690444784, -0.1947245692826698, -0.18834286814779944,
-0.1828372506848268, -0.17803126854241214, -0.17378643533578497,
-0.17000796030924903, -0.16661730616920067, -0.1635419787967578,
-0.16075019187829298, -0.15805918364992522, -0.15588312118174485},
{-0.9776169907656538, -0.5343500439914095, -0.38572494099281585,
-0.31846089875550376, -0.2791848824570309, -0.25579858083101215,
-0.2366130405944915, -0.22244057626005542, -0.2113069161859613,
-0.20226371207188265, -0.19473611115424205, -0.18835555441441443,
-0.1828508656641077, -0.17804563431428733, -0.17380142481854932,
-0.17002346628964915, -0.16663324402787794, -0.16355828170014775,
-0.16076680149495814, -0.1580761069444634, -0.1559001699259568},
{-0.9773179410872572, -0.5342272960459837, -0.3856732007999426,
-0.3184366190272243, -0.27917435317543493, -0.25579605070046796,
-0.2366147459996455, -0.2224460625788396, -0.21131505905789538,
-0.20227386855253826, -0.19474777191145165, -0.18836835787192285,
-0.18286459600489025, -0.17806011408757172, -0.17381652697633854,
-0.17003908358000785, -0.16664929206731927, -0.16357469356023557,
-0.16078351892983278, -0.15809313621008414, -0.1559173238786684},
{-0.9770190035655446, -0.5341047280243743, -0.3856216204245868,
-0.31841248657920573, -0.2791639631761029, -0.2557936449737497,
-0.23661658132671448, -0.22245167526334342, -0.21132332575211876,
-0.20228414668784467, -0.19475955187576233, -0.18838127885615563,
-0.18287844203379677, -0.17807470818553384, -0.17383174213199482,
-0.17005481249532295, -0.16666545060826365, -0.16359121467863247,
-0.1608003444888766, -0.15811027175320191, -0.15593458331866827},
{-0.9767201786720747, -0.5339823402660073, -0.38557020021578126,
-0.3183885017684105, -0.2791537128142636, -0.2557913640392826,
-0.23661854691701478, -0.22245741466188917, -0.21133171662067696,
-0.2022945468061721, -0.19477145136002605, -0.1883943176931382,
-0.1828924040601123, -0.17808941692760527, -0.17384707060170967,
-0.17007065335661764, -0.16668171995462444, -0.16360784536306028,
-0.16081727846571425, -0.15812751387619528, -0.15595194852866712},
{-0.9764214668820586, -0.5338601331086466, -0.38551894052544355,
-0.3183646649587786, -0.27914360244206193, -0.25578920832914775,
-0.23662064310788367, -0.2224632811213354, -0.21134023201626917,
-0.20230506924507097, -0.19478347068465496, -0.18840747471122654,
-0.1829064824190425, -0.17810424064225572, -0.17386251270499997,
-0.17008660647391594, -0.16669810042014888, -0.16362458592098506,
-0.1608343211788963, -0.15814486289804108, -0.15596941979489998},
{-0.9761228686680212, -0.5337381068918461, -0.3854678417032744,
-0.3183409765124594, -0.2791336324180236, -0.2557871782446739,
-0.23662287024588124, -0.22246927499209335, -0.2113488722947352,
-0.20231571434698026, -0.19479561016780167, -0.18842075024548421,
-0.18292067742336826, -0.17811917965167368, -0.17387806875899514,
-0.17010267216898, -0.1667145923133262, -0.16364143665398956,
-0.16085147292309898, -0.1581623191304402, -0.15598699739373956},
{-0.9758243845064598, -0.5336162619598497, -0.38541690410707474,
-0.31831743679234137, -0.27912380309760465, -0.25578527419501995,
-0.23662522867108748, -0.22247539662248528, -0.21135763781531125,
-0.20232648244414975, -0.19480787012884093, -0.18843414462500618,
-0.18293498940909103, -0.1781342342827088, -0.173893739088129,
-0.1701188507614404, -0.16673119595560593, -0.16365839787320624,
-0.16086873400971058, -0.15817988288048923, -0.1560046816164231},
{-0.9755260148710789, -0.5334945986531352, -0.3853661280886058,
-0.31829404616134127, -0.27911411483795234, -0.25578349660545996,
-0.23662771872578503, -0.22248164636565093, -0.21136652893007124,
-0.20233737387997053, -0.19482025089519084, -0.18844765817914322,
-0.1829494186913223, -0.17814940486380237, -0.17390952400808146,
-0.17013514257038764, -0.16674791164791714, -0.1636754698760683,
-0.1608861047487551, -0.1581975544591785, -0.15602247273892544},
{-0.9752277602380914, -0.5333731173166427, -0.3853155140054412,
-0.3182708049861418, -0.2791045679990418, -0.2557818458735568,
-0.23663034076382417, -0.22248802457430372, -0.21137554600227304,
-0.20234838899452257, -0.19483275278520296, -0.18846129124437994,
-0.18296396560199923, -0.17816469171725657, -0.1739254238462138,
-0.17015154792287035, -0.1667647397073324, -0.1636926529854179,
-0.160903585443549, -0.15821533419097022, -0.1560403710589071},
{-0.9749296210844491, -0.5332518182940476, -0.3852650622137901,
-0.3182477136337809, -0.2790951629419567, -0.2557803224293167,
-0.23663309511651676, -0.22249453160361554, -0.21138468938868016,
-0.2023595281287669, -0.19484537612635222, -0.1884750441514882,
-0.18297863046797147, -0.17818009517654332, -0.17394143891633007,
-0.17016806713709798, -0.1667816804554434, -0.1637099475019852,
-0.16092117641176173, -0.1582332223905496, -0.15605837685737356},
{-0.9746315978863223, -0.5331307019317535, -0.3852147730730735,
-0.31822477246879544, -0.27908590002842004, -0.2557789266826944,
-0.23663598214305637, -0.22250116780533347, -0.21139395945513684,
-0.20237079162694727, -0.19485812123494384, -0.1884889172385158,
-0.182993413621233, -0.17819561556979124, -0.17395756954996955,
-0.17018470054424029, -0.1667987342029562, -0.16372735374008585,
-0.16093887795781825, -0.15825121936958908, -0.15607649042161142},
{-0.9743336911229719, -0.5330097685780686, -0.385164646941206,
-0.31820198186581194, -0.2790767796188618, -0.25577765904436944,
-0.23663900217829337, -0.2225079335413369, -0.21140335656185982,
-0.20238217983109053, -0.19487098845164041, -0.18850291083359139,
-0.18300831538920193, -0.1782112532248732, -0.1739738160653701,
-0.17020144846503626, -0.16681590126614765, -0.16374487201341026,
-0.16095669040055327, -0.15826932545576256, -0.15609471204896863},
{-0.9740359012699997, -0.5328890185778192, -0.385114684180337,
-0.31817934219074573, -0.27906780207911197, -0.2557765199427422,
-0.23664215557818125, -0.22251482916638565, -0.2114128810669058,
-0.20239369308870891, -0.19488397809521985, -0.18851702528087344,
-0.18302333610478172, -0.1782270084775348, -0.1739901787913709,
-0.17021831122619346, -0.16683318196055552, -0.1637625026281171,
-0.16097461404856972, -0.15828754096236253, -0.15611304202178644},
{-0.9737382288077185, -0.5327684522818004, -0.3850648851529428,
-0.3181568538165038, -0.27905896777102157, -0.2557755097810457,
-0.23664544269246335, -0.222521855039858, -0.2114225333418034,
-0.20240533174441566, -0.19489709049756243, -0.1885312609090306,
-0.18303847610016533, -0.17824288165303415, -0.17400665804777304,
-0.17023528916166697, -0.16685057660643565, -0.16378024590366635,
-0.16099264921197687, -0.15830586621726184, -0.15613148064235816},
{-0.9734406742153041, -0.5326480700408638, -0.38501525021945326,
-0.3181345171181391, -0.2790502770624812, -0.2557746289910625,
-0.23664886386332284, -0.22252901151979643, -0.21143231374628613,
-0.20241709614268188, -0.19491032599245273, -0.18854561805633807,
-0.18305373570962047, -0.1782588730886232, -0.17402325416301778,
-0.17025238260094966, -0.16686808552051957, -0.16379810215400425,
-0.1610107962107179, -0.1583243015444964, -0.15615002819700408},
{-0.9731432379722591, -0.5325278722042412, -0.3849657797468353,
-0.3181123324657449, -0.2790417303215946, -0.2557738779871812,
-0.23665241944596005, -0.22253629896744087, -0.2114422226489694,
-0.20242898663877895, -0.19492368490435297, -0.18856009706180998,
-0.18306911526727276, -0.17827498311629597, -0.17403996746077155,
-0.1702695918715733, -0.1668857090178335, -0.1638160716949244,
-0.16102905536493495, -0.15834284726420833, -0.15616868497380665},
{-0.972845920559088, -0.5324078591264794, -0.38491647410006635,
-0.31809030023889306, -0.27903332791674984, -0.25577325718332133,
-0.23665610978622453, -0.22254371774663184, -0.2114522604133242,
-0.2024410035774622, -0.19493716757440893, -0.18857469826457418,
-0.18308461510972052, -0.17829121206881382, -0.174056798272602,
-0.17028691730439505, -0.16690344742806928, -0.16383415484361308,
-0.16104742698334462, -0.15836150370870428, -0.15618745127881084},
{-0.9725487224574749, -0.5322880311593821, -0.3848673336445927,
-0.3180684208115423, -0.27902507021320844, -0.25577276701304186,
-0.2366599352433667, -0.22255126821845295, -0.2114624274099981,
-0.2024531473115303, -0.19495077433597885, -0.18858942200208162,
-0.18310023557666, -0.17830756028496353, -0.1740737469245346,
-0.17030435923555842, -0.16692130106511627, -0.1638523519202124,
-0.16106591139114812, -0.15838027119997378, -0.15620632740228757},
{-0.9722516441484004, -0.5321683886575528, -0.384818358749655,
-0.3180466945615734, -0.2790169575863928, -0.2557724078841517,
-0.23666389616799677, -0.22255895074536625, -0.21147272401043438,
-0.2024654181945209, -0.19496450552034617, -0.1886042686168139,
-0.18311597700355264, -0.17832402810088865, -0.1740908137463748,
-0.17032191799970064, -0.16693927025298194, -0.16387066324003285,
-0.1610845089010411, -0.1583991500658044, -0.15622531364311953},
{-0.9719546861134774, -0.5320489319763197, -0.38476954978149536,
-0.3180251218692547, -0.2790089904023745, -0.25577218022939974,
-0.23666799291031282, -0.222566765692207, -0.21148315057737932,
-0.2024778165766179, -0.19497836147166936, -0.18861923844178818,
-0.1831318397312316, -0.1783406158514822, -0.17410799906409125,
-0.17033959392284714, -0.16695735531394007, -0.16388908912858824,
-0.16110321983967424, -0.15841814064023652, -0.15624441029822833},
{-0.9716578488366636, -0.5319296614729865, -0.38472090711732676,
-0.31800370311103165, -0.2790011690422318, -0.25577208447025157,
-0.23667222583047476, -0.22257471342595636, -0.21149370748543106,
-0.20249034281283684, -0.19499234252509723, -0.18863433182551148,
-0.18314782410445218, -0.1783573238760141, -0.1741253032128327,
-0.17035738735049222, -0.16697555657080443, -0.16390762990459962,
-0.16112204452414858, -0.15843724324514596, -0.15626361765797014},
{-0.9713611328015404, -0.5318105775057802, -0.3846724311204497,
-0.3179824386739085, -0.27899349387179484, -0.25577212102210467,
-0.23667659527940543, -0.22258279430973005, -0.21150439510566343,
-0.2025029972611776, -0.195006449025243, -0.18864954910495157,
-0.18316393046288226, -0.1783741525113669, -0.1741427265176867,
-0.17037529861929102, -0.16699387434911728, -0.16392628588658908,
-0.16114098327784632, -0.1584564582179553, -0.15628293603668908},
{-0.9710645384914898, -0.5316916804340508, -0.38462412216925657,
-0.31796132893971674, -0.27898596527153074, -0.25577229032501236,
-0.2366811016126178, -0.2225910087140619, -0.21151521380582494,
-0.20251578028006634, -0.19502068131367878, -0.18866489062705227,
-0.183180159151334, -0.17839110210550757, -0.17416026932301065,
-0.17039332805131835, -0.1670123089739377, -0.16394505740672116,
-0.16116003642670762, -0.15847578588542888, -0.15630236571769274},
{-0.9707680663916989, -0.5315729706155707, -0.3845759806354039,
-0.31794037428633715, -0.2789785836132239, -0.2557725927830319,
-0.236685745194805, -0.22259935699810285, -0.21152616396025792,
-0.20252869221965852, -0.19503503973336933, -0.18868035673540362,
-0.1831965105096458, -0.17840817298932166, -0.1741779319517036,
-0.17041147600221507, -0.16703086077151852, -0.16396394478155685,
-0.1611792042886293, -0.15849522657197213, -0.15632190701285253},
{-0.9704717169869923, -0.5314544484126316, -0.38452800689385924,
-0.3179195751061883, -0.27897134927533784, -0.25577302884460096,
-0.2366905263797605, -0.22260783953723262, -0.21153724594248047,
-0.20254173344650894, -0.19504952463023528, -0.18869594776742815,
-0.18321298489047422, -0.1784253655130783, -0.17419571474133022,
-0.1704297428011614, -0.16704953007103995, -0.16398294834164062,
-0.16119848719810648, -0.15851478061472335, -0.15634156022400703},
{-0.9701754907636797, -0.5313361141866579, -0.3844802013222477,
-0.31789893177956685, -0.2789642626413098, -0.2557735989248471,
-0.2366954455269905, -0.2226164566959028, -0.21154846012606754,
-0.20255490431927115, -0.19506413634701403, -0.18871166407856776,
-0.18322958263863143, -0.17844268001496744, -0.1742136180289151,
-0.17044812878799576, -0.16706831719895376, -0.1640020684153285,
-0.16121788547386018, -0.15853444834422703, -0.15636132564458194},
{-0.9698793882093923, -0.5312179683024851, -0.3844325642994306,
-0.31787844470241566, -0.27895732408708795, -0.25577430345042274,
-0.23670050300016499, -0.22262520884734727, -0.21155980688641307,
-0.20256820519895768, -0.19507887524014222, -0.18872750600723975,
-0.18324630410302234, -0.17846011684505925, -0.17423164214829967,
-0.17046663430397757, -0.16708722248520758, -0.1640213053275943,
-0.16123739944598015, -0.158554230090175, -0.1563812035990395},
{-0.9695834098098146, -0.5311000111243942, -0.38438509620193884,
-0.31785811425653776, -0.27895053399080894, -0.25577514286072756,
-0.23670569915739748, -0.22263409635746712, -0.21157128659638147,
-0.20258163644777483, -0.19509374165531312, -0.1887434739035143,
-0.18326314963775303, -0.1784776763460627, -0.17424978744014652,
-0.17048525968885997, -0.16710624625741843, -0.16404065940332657,
-0.16125702944606246, -0.1585741261804401, -0.15640119437566113},
{-0.9692875560518246, -0.5309822430170783, -0.38433779741050955,
-0.31783794083249006, -0.2789438927386385, -0.25577611756644103,
-0.2367110343651717, -0.22264311959412453, -0.2115828996290645,
-0.20259519842576879, -0.1951087359450696, -0.1887595681129426,
-0.18328011958553247, -0.17849535886182366, -0.17426805423960445,
-0.1705040052824245, -0.1671253888474098, -0.16406013097883942,
-0.1612767757953577, -0.15859413694550994, -0.15642129829510054},
{-0.9689918274277147, -0.5308646643488686, -0.38429066830859426,
-0.31781792482455273, -0.27893740071245077, -0.25577722801776304,
-0.23671650898506869, -0.22265227893259976, -0.21159464636511416,
-0.2026088915021944, -0.19512385846496727, -0.18877578898647585,
-0.18329721430481527, -0.1785131647460787, -0.1742864428915425,
-0.17052287142522005, -0.16714465058680616, -0.1640797203824036,
-0.16129663883160106, -0.1586142627253082, -0.15644151566806386},
{-0.9686962244224873, -0.5307472754849272, -0.38424370927754126,
-0.3177980666222595, -0.2789310582989941, -0.25577847463675596,
-0.23672212338348686, -0.22266157474297188, -0.21160652717713901,
-0.20262271603911586, -0.19513910956641212, -0.1887921368770833,
-0.18331443415078752, -0.17853109434526004, -0.17430495373466215,
-0.17054185846703263, -0.1671640318087384, -0.1640994279490826,
-0.16131661888405802, -0.15863450384131283, -0.15646184680710462},
{-0.9684007475292731, -0.5306300767979764, -0.38419692070237943,
-0.31777836662395487, -0.27892486588199006, -0.2557798578530708,
-0.23672787792705208, -0.2226710073986169, -0.21161854244866163,
-0.20263667240706695, -0.195154489609223, -0.1888086121296908,
-0.18333177947855006, -0.17854914801034738, -0.17432358711434404,
-0.17056096674392052, -0.16718353284855425, -0.16411925400890937,
-0.16133671628574575, -0.1586548606333622, -0.15648229202713537},
{-0.9681053972362292, -0.5305130686557078, -0.38415030296680186,
-0.3177588252219721, -0.27891882384838595, -0.2557813781101288,
-0.23673377297944853, -0.22268057726705592, -0.21163069254853895,
-0.20265076096859502, -0.1951699989489839, -0.18882521509786443,
-0.18334925063768992, -0.17856732609325832, -0.1743423433699718,
-0.1705801965985927, -0.1672031540349792, -0.16413919889399153,
-0.1613569313679193, -0.15867533342392903, -0.1565028516465361},
{-0.9678101740347387, -0.5303962514304601, -0.38410385645974543,
-0.317739442812794, -0.27891293258460337, -0.2557830358220343,
-0.23673980891595647, -0.22269028472356922, -0.21164297786083353,
-0.20266498209315387, -0.1951856379478727, -0.18884194613428917,
-0.18336684799552927, -0.17858562894707575, -0.1743612228512461,
-0.17059954838373415, -0.16722289570628845, -0.16415926294368433,
-0.16137726446572742, -0.15869592254523468, -0.15652352599883557},
{-0.9675150784179039, -0.530279625493435, -0.38405758156636693,
-0.3177202197952198, -0.2789071924834161, -0.2557848314443305,
-0.23674598609952113, -0.22270013014176016, -0.2116553987623604,
-0.20267933615150469, -0.19520140697031252, -0.18885880559111,
-0.1833845719040994, -0.17860405692417203, -0.17438022589982438,
-0.1706190224312536, -0.16724275819572654, -0.16417944649259653,
-0.16139771591181784, -0.15871662833768596, -0.1565443153982642},
{-0.9672201108771645, -0.5301631912194154, -0.3840114786803923,
-0.31770115656334497, -0.2789016039342016, -0.2557867654008703,
-0.23675230490499644, -0.22271011389429418, -0.21166795562908192,
-0.20269382351386867, -0.19521730637157475, -0.1888757938250194,
-0.18340242272816454, -0.17862261038428073, -0.17439935286921582,
-0.17063861910233413, -0.1672627418450361, -0.16419974987803698,
-0.16141828604671105, -0.15873745112295978, -0.15656522017735597},
{-0.9669252719063053, -0.530046948984932, -0.38396554818787365,
-0.31768225352459467, -0.2788961673295205, -0.255788838129817,
-0.23675876569947718, -0.22272023635682103, -0.21168064884776072,
-0.2027084445460332, -0.19523333652122687, -0.18889291119256768,
-0.18342040082768563, -0.17864128967849524, -0.17441860410443155,
-0.17065833873033398, -0.16728284698848483, -0.1642201734421178,
-0.16143897520140627, -0.15875839123975766, -0.1565862406746703},
{-0.9666305619977464, -0.5299308991633751, -0.38391979048286373,
-0.317663511076816, -0.2788908830628003, -0.25579105007399505,
-0.23676536886105737, -0.2227304979042799, -0.21169347879114753,
-0.202723199626746, -0.1952494977853121, -0.18891015804840094,
-0.18343850656648897, -0.1786600951704429, -0.17443797996284616,
-0.17067818166665916, -0.1673030739681849, -0.16424071751725933,
-0.16145978371895353, -0.1587794490161798, -0.15660737722237172},
{-0.9663359816472479, -0.5298150421333361, -0.3838742059595859,
-0.31764492962396673, -0.2788857515238732, -0.2557934016553105,
-0.2367721147627151, -0.22274089891001836, -0.2117064458441007,
-0.20273808911886704, -0.19526579053177784, -0.1889275347461421,
-0.18345674030757664, -0.1786790272120129, -0.17445748079128975,
-0.17069814825978824, -0.167323423121843, -0.16426138244960953,
-0.16148071193185842, -0.15880062478535706, -0.15662863016248707},
{-0.9660415313499726, -0.52969937827352, -0.3838287950105581,
-0.31762650956852667, -0.2788807731143379, -0.2557958933316513,
-0.2367790037785369, -0.2227514397501409, -0.21171955038812484,
-0.20275311340188296, -0.19528221513260746, -0.1889450416479974,
-0.1834751024185266, -0.17869808616649152, -0.174477106945659,
-0.17071823885916615, -0.167343894794584, -0.1642821685800584,
-0.16150176018237516, -0.1588219188797666, -0.15664999984244332},
{-0.9657472116009842, -0.5295839079620208, -0.38378355803223485,
-0.31760825131674153, -0.27887594822789197, -0.2557985255349422,
-0.23678603628187034, -0.22276212080114988, -0.21173279279869917,
-0.20276827284624233, -0.19529877194941037, -0.18896267911051723,
-0.1834935932620283, -0.17871727239767665, -0.17449685878037258,
-0.1707384538099177, -0.16736448932115877, -0.16430307624978013,
-0.16152292880815367, -0.15884333163128872, -0.1566714865937513},
{-0.9654530228962557, -0.5294686315817358, -0.3837384954232306,
-0.31759015527545387, -0.2788712772648836, -0.2558012986989837,
-0.23679321264921782, -0.22277294244017298, -0.2117461734635242,
-0.20278356782597484, -0.19531546136502698, -0.1889804474968173,
-0.18351221321205458, -0.1787365862589354, -0.17451673665397038,
-0.17075879346458578, -0.16738520705337123, -0.16432410580608803,
-0.16154421815224396, -0.15886486337905126, -0.1566930907820847},
{-0.9651589657346165, -0.529353549513587, -0.3836936075808808,
-0.31757222185193257, -0.27886676062144033, -0.25580421327910585,
-0.23680053326825146, -0.2227839050462137, -0.21175969276214346,
-0.20279899871971452, -0.1953322837510143, -0.18899834716677333,
-0.1835309626338244, -0.17875602812006264, -0.1745367409294829,
-0.1707792581705121, -0.16740604833145767, -0.16434525758805307,
-0.1615656285559055, -0.15888651444828383, -0.1567148127548137},
{-0.9648650406138444, -0.5292386621410117, -0.38364889490775056,
-0.31755445145400074, -0.2788623987002694, -0.2558072697022169,
-0.23680799851126721, -0.22279500899188065, -0.21177335107773843,
-0.2028145658990752, -0.19534923947884408, -0.1890163784853769,
-0.18354984189724632, -0.17877559834514045, -0.17455687195933933,
-0.17079984828009742, -0.16742701350258926, -0.16436653194941186,
-0.1615871603591188, -0.15890828517771638, -0.15673665287422978},
{-0.9645712480306088, -0.529123969848655, -0.383604357799868,
-0.3175368444954927, -0.27885819190284167, -0.25581046842336264,
-0.23681560875812124, -0.22280625466095216, -0.21178714879255267,
-0.20283026973737606, -0.19536632893098727, -0.1890345418098036,
-0.18356885137731638, -0.1787952972981941, -0.174577130106627,
-0.17082056414290037, -0.16744810291115186, -0.16438792923537449,
-0.16160881390266013, -0.15893017590752834, -0.15675861149011894},
{-0.9642775884864676, -0.5290094730224126, -0.3835599966661647,
-0.31751940138360624, -0.27885414063284486, -0.2558138098831648,
-0.23682336439296137, -0.2228176424326591, -0.2118010862936046,
-0.20284611061345004, -0.19538355248275252, -0.18905283750680724,
-0.18358799144203886, -0.1788151253433341, -0.17459751573770177,
-0.170841406119024, -0.16746931690951783, -0.16440944979424899,
-0.161630589535946, -0.1589521869705095, -0.1567806889671317},
{-0.9639840624801792, -0.5288951720502126, -0.383515811907273,
-0.3175021225370074, -0.27885024529635416, -0.25581729452238733,
-0.23683126579740588, -0.2228291726857492, -0.21181516396353572,
-0.20286208891033652, -0.1954009105179466, -0.18907126594186252,
-0.18360726247121306, -0.17883508284452887, -0.17461802921735625,
-0.17086237455652054, -0.1674906558461089, -0.16443109397241074,
-0.16165248759776318, -0.15897431870652667, -0.15680288566525746},
{-0.9636906705129178, -0.5287810673187465, -0.3834718039302487,
-0.31748500836839355, -0.27884650629827945, -0.25582092279910285,
-0.23683931335554576, -0.22284084580218178, -0.21182938218544223,
-0.20287820500053044, -0.1954184034173636, -0.18908982748388325,
-0.1836266648362539, -0.1788551701758081, -0.17463867090978624,
-0.1708834698067676, -0.16751212006681726, -0.1644528621260406,
-0.16167450843727238, -0.15899657145180868, -0.1568252019531542},
{-0.9633974130860423, -0.5286671592184717, -0.3834279731387653,
-0.3174680592880321, -0.27884292404228006, -0.25582469513483375,
-0.23684750745181304, -0.22285266215862976, -0.21184374134216455,
-0.20289445925817517, -0.1954360315632755, -0.18910852249837262,
-0.18364619891090683, -0.17887538769912226, -0.17465944118669086,
-0.17090469222802085, -0.16753370993035333, -0.1644747546039298,
-0.1616966523918677, -0.15901894554417595, -0.15684763819376712},
{-0.9631042907017076, -0.5285534481395615, -0.38338431994603184,
-0.317451275720245, -0.27883949894005866, -0.25582861200481943,
-0.23685584847282826, -0.22286462214327685, -0.21185824182617807,
-0.20291085207253445, -0.19545379534710605, -0.189127351351857,
-0.18366586507613647, -0.1788957357829304, -0.17468034041272062,
-0.17092604217745588, -0.1675554257870715, -0.16449677176220234,
-0.16171891982261855, -0.1590414413365977, -0.15687019476558817},
{-0.9628113038628641, -0.5284399344737665, -0.3833408447582656,
-0.3174346580749443, -0.2788362314018542, -0.2558326738437984,
-0.23686433680356345, -0.22287672613430232, -0.2118728840202948,
-0.2029273838184622, -0.19547169514376606, -0.18914631442035557,
-0.18368566370801886, -0.17891621480251274, -0.17470136895917676,
-0.1709475200127315, -0.16757726798547878, -0.16451891395396956,
-0.16174131106185996, -0.15906405915862365, -0.15689287201590219},
{-0.962518453075063, -0.5283266186164468, -0.38329754798708393,
-0.3174182067793794, -0.27883312183526243, -0.25583688109466607,
-0.23687297282964437, -0.22288897451647927, -0.21188766830482564,
-0.20294405487365452, -0.19548973134558878, -0.1891654120625219,
-0.18370559518285745, -0.17893682511822817, -0.17472252719275616,
-0.17096912608283787, -0.16759923688374556, -0.1645411815288753,
-0.16176382645656417, -0.15908679935986925, -0.15691567033184128},
{-0.9622257388391944, -0.5282135009590547, -0.38325443004650595,
-0.3174019222533815, -0.27883017065805404, -0.25584123422694915,
-0.23688175694553593, -0.22290136768148727, -0.21190259507929454,
-0.20296086563055837, -0.1955079043520982, -0.18918464466790397,
-0.18372565988974543, -0.1789575671159298, -0.17474381550138673,
-0.1709908607590762, -0.16762133284478864, -0.16456357485515127,
-0.16178646637223437, -0.15910966229313317, -0.15693859008192135},
{-0.9619331616614915, -0.5281005819004889, -0.38321149134910115,
-0.3173858049146645, -0.278827378279189, -0.25584573366748486,
-0.23689068954311665, -0.2229139060097225, -0.21191766472500717,
-0.20297781646291924, -0.19552621454775476, -0.18920401260018593,
-0.1837458582035083, -0.178978441159245, -0.17476523424926427,
-0.17101272439663262, -0.16764355622109406, -0.16458609428042337,
-0.16180923114359302, -0.15913264829836749, -0.1569616316460838},
{-0.9616407220491681, -0.5279878618361664, -0.38316873231234183,
-0.317369855192581, -0.2788247451164807, -0.2558503798925358,
-0.23689977100772808, -0.22292658989030656, -0.21193287763171043,
-0.20299490776338303, -0.19554466232435175, -0.18922351623578493,
-0.18376619050903287, -0.17899944761995812, -0.1747867838103332,
-0.17103471735731546, -0.16766590737321962, -0.16460874016999583,
-0.1618321211306295, -0.15915575773189516, -0.15698479539000232},
{-0.9613484205066385, -0.5278753411640338, -0.3831261533503749,
-0.3173540735052711, -0.2788222715865203, -0.2558551733435195,
-0.23690900173392038, -0.22293941970983155, -0.211948234191226,
-0.20301213991069744, -0.1955632480787699, -0.1892431559546992,
-0.18378665718853426, -0.17902058687377576, -0.1748084645691108,
-0.1710568400021657, -0.16768838665856833, -0.1646315128832896,
-0.161855136678156, -0.1591789909475665, -0.15700808168514868},
{-0.9610562575439303, -0.5277630202854056, -0.38308375488401225,
-0.31733846028625123, -0.2788199581094517, -0.25586011446648627,
-0.23691838211553318, -0.22295239585946547, -0.21196373478977648,
-0.20302951329770735, -0.1955819722033425, -0.1892629321323227,
-0.18380725862905933, -0.17904185929373284, -0.1748302768951362,
-0.1710790926953507, -0.1677109944434676, -0.16465441277512127,
-0.1618782781408754, -0.1592023482850209, -0.1570314909174897},
{-0.9607642336672484, -0.527650899601241, -0.3830415373298166,
-0.3173230159568732, -0.2788178050970771, -0.25586520373485655,
-0.23692791254191548, -0.22296551873006365, -0.2119793798180183,
-0.20304702830719634, -0.19560083509921355, -0.18928284514211668,
-0.18382799520642834, -0.1790632652549391, -0.17485222117409194,
-0.17110147579774093, -0.16773373108441092, -0.16467744021056774,
-0.1619015458692843, -0.15922583010004132, -0.1570550234518464},
{-0.9604723493861513, -0.527538979513821, -0.38299950111269254,
-0.317307740949218, -0.27881581297589264, -0.2558704415791908,
-0.236937593417764, -0.2229787887103214, -0.2119951696698763,
-0.203064685329025, -0.19561983716354803, -0.18930289537490808,
-0.1838488673217853, -0.17908480513438008, -0.1748742977815425,
-0.17112398967591957, -0.16775659694604883, -0.164700595555189,
-0.16192494022121195, -0.15924943676205316, -0.15707867968646383},
{-0.9601806052104109, -0.5274272604264922, -0.38295764665313925,
-0.31729263569293664, -0.27881398216226216, -0.25587582847657586,
-0.2369474251304382, -0.22299220619754578, -0.21201110473847962,
-0.20308248475978985, -0.19563897879854153, -0.18932308320415814,
-0.18386987534384502, -0.17910647930281698, -0.17489650709475768,
-0.17114663469055813, -0.16777959239706774, -0.1647238791668144,
-0.16194846154925813, -0.1592731686180855, -0.15710245998073447},
{-0.9598890016497279, -0.5273157427447899, -0.38291597437599023,
-0.31727770061772276, -0.27881231308739984, -0.25588136488124746,
-0.23695740808338428, -0.2230057715840701, -0.2120271854156215,
-0.20310042698511666, -0.1956582603993411, -0.1893434090184769,
-0.18389101967653687, -0.1791282881476377, -0.1749188495053886,
-0.17116941122350227, -0.16780271779606437, -0.16474729141506828,
-0.16197211021008684, -0.1592970260250297, -0.15712636471906194},
{-0.9595975392162615, -0.5272044268756559, -0.38287448470657637,
-0.31726293616036116, -0.2788108061708954, -0.25588705124005173,
-0.236967542668026, -0.22301948526796878, -0.21204341209497102,
-0.20311851240268197, -0.19567768237578775, -0.18936387319877213,
-0.18391230070008646, -0.17915023203741498, -0.17494132538828921,
-0.1711923196249927, -0.16782597351760842, -0.16477083266480008,
-0.161995886562039, -0.15932100934404048, -0.15715039429136368},
{-0.9593062184208918, -0.5270933132260893, -0.3828331780721186,
-0.31724834275115654, -0.27880946183898914, -0.2558928880280291,
-0.23697782929187383, -0.2230333476465205, -0.21205978517093627,
-0.2031367414078602, -0.19569724512643916, -0.1893844761333412,
-0.18393371880810605, -0.17917231135470502, -0.1749639351292558,
-0.17121536026840545, -0.16784935992572514, -0.16479450327477707,
-0.1620197909653598, -0.1593451189368409, -0.15717454907689898},
{-0.9590150397779666, -0.5269824022063858, -0.38279205490225365,
-0.31723392082916746, -0.2788082805178078, -0.2558988756861993,
-0.23698826835226328, -0.2230473591206703, -0.21207630504201802,
-0.20315511439332568, -0.19571694906142056, -0.18940521820778145,
-0.18395527438866566, -0.17919452648524725, -0.17498667911337407,
-0.17123853352774177, -0.1678728773914031, -0.16481830361993843,
-0.16204382377401316, -0.15936935515981077, -0.15719882946120833},
{-0.9587240037995315, -0.5268716942268128, -0.38275111562504094,
-0.3172196708297861, -0.27880726263813926, -0.25590501469491755,
-0.23699886024957095, -0.2230615200880095, -0.21209297210350542,
-0.2031736317633488, -0.1957367945872477, -0.18942609981039027,
-0.18397696783668493, -0.17921687779949025, -0.17500955772237603,
-0.17126183977188703, -0.1678965262881036, -0.1648422340668958,
-0.16206798535193911, -0.1593937183847629, -0.1572232358270753},
{-0.9584331110002466, -0.5267611896978934, -0.38271036067263253,
-0.31720559318783614, -0.27880640862920814, -0.25591130550381536,
-0.23700960538513982, -0.22307583095198424, -0.21210978675387082,
-0.20319229391134286, -0.19575678210492242, -0.18944712133153985,
-0.18399879954236553, -0.1792393656878346, -0.1750325713397558,
-0.17128527937060767, -0.16792030698056237, -0.16486629498155025,
-0.16209227606429977, -0.15941820896574654, -0.1572477685583067},
{-0.9581423618950993, -0.5266508890357926, -0.3826697904801364,
-0.31719168834999323, -0.2788057189248718, -0.2559177485767634,
-0.23702050416179077, -0.22309029212084397, -0.21212674938925602,
-0.20321110124444886, -0.19577691202925962, -0.18946828316407505,
-0.18402076989949023, -0.17926199052629954, -0.17505572036179728,
-0.17130885269483542, -0.16794421984670294, -0.16489048673642515,
-0.16211669626613912, -0.15944282727295445, -0.15727242805547803},
{-0.9578517570006113, -0.5265407926530798, -0.38262940548150937,
-0.3171779567519195, -0.27880519395262127, -0.25592434438863165,
-0.23703155699138279, -0.22310490399934224, -0.21214386041322086,
-0.20323005416312867, -0.19579718477260144, -0.18948958569916385,
-0.184042879302865, -0.17928475270684885, -0.1750790051692377,
-0.17133256011999265, -0.16796826526251607, -0.1649148096991837,
-0.16214124633373217, -0.15946757367277087, -0.15729721469608648},
{-0.9575612968339726, -0.5264309009680659, -0.3825892061102678,
-0.31716439883818737, -0.2788048341507192, -0.2559310933836798,
-0.23704276427315563, -0.2231196669927158, -0.21216112022312927,
-0.20324915306926528, -0.19581760074143517, -0.18951102933016273,
-0.18406512815076326, -0.17930765261070292, -0.17510242615011862,
-0.17135640202533864, -0.16799244359771137, -0.1649392642381997,
-0.1621659266239135, -0.15949244852549782, -0.1573221288821003},
{-0.9572709819100425, -0.526321214396404, -0.3825491928066356,
-0.31715101505226073, -0.27880463995271043, -0.2559379960450201,
-0.2370541264151882, -0.22313458151350574, -0.21217852922524116,
-0.2032683983707102, -0.19583816035253676, -0.18953261445466296,
-0.18408751683668356, -0.17933069062556228, -0.17512598369117427,
-0.17138037877322176, -0.16801675523637982, -0.16496385073662623,
-0.16219073750480106, -0.15951745221508418, -0.15734717099840623},
{-0.9569808127506576, -0.5262117333592613, -0.38250936600863383,
-0.31713780583802986, -0.2788046117998988, -0.2559450528376317,
-0.23706564382476358, -0.22314964797359949, -0.21219608781890997,
-0.2032877904752013, -0.19585886401392827, -0.18955434146437256,
-0.18411004575926881, -0.17935386713423895, -0.175149678189797,
-0.1714044907561174, -0.16804120054973737, -0.16498856955240626,
-0.16221567935073722, -0.1595425850878769, -0.1573723414377639},
{-0.9566907898726384, -0.5261024582763127, -0.38246972615844754,
-0.3171247716478973, -0.2788047501252038, -0.2559522642194736,
-0.2370773169108702, -0.22316486678684555, -0.21221379641147564,
-0.2033073297925796, -0.1958797121490079, -0.18957621076322084,
-0.18413271531809983, -0.17937718253031676, -0.17517351002589976,
-0.1714287383473163, -0.16806577992392135, -0.16501342106550965,
-0.1622407525280778, -0.15956784753583975, -0.15739764060236894},
{-0.9564009137963865, -0.5259933895707292, -0.3824302736984322,
-0.317111912924247, -0.27880505537407885, -0.2559596306733454,
-0.23708914608374698, -0.2231802383666377, -0.21223165540487798,
-0.20332701672629128, -0.19590070516403557, -0.18959822274689486,
-0.18415552591278583, -0.1794006372055037, -0.17519747959690335,
-0.1714531219212745, -0.16809049372963614, -0.16503840564837446,
-0.16226595740425864, -0.15959323991557994, -0.15742306887483437},
{-0.9561111850445059, -0.525884527665113, -0.3823910090702469,
-0.3170992301180462, -0.2788055279798982, -0.25596715264802583,
-0.23710113175576453, -0.22319576313381617, -0.21224966520634325,
-0.2033468516923449, -0.1959218434865022, -0.1896203778200629,
-0.18417847794509612, -0.17942423155014353, -0.17522158729298098,
-0.17147764186000813, -0.16811534236006764, -0.16506352368122634,
-0.1622912943543895, -0.15961876260263352, -0.1574486266619317},
{-0.9558216041352949, -0.5257758729832176, -0.3823519327198568,
-0.31708672368051793, -0.2788061683898775, -0.25597483063560844,
-0.2371132743348312, -0.2232114415066917, -0.21226782622815676,
-0.20336683510575426, -0.19594312752937526, -0.18964267637869625,
-0.18420157181472518, -0.17944796595082835, -0.175245833506267,
-0.1715022985531789, -0.1681403261926846, -0.16508877552493573,
-0.16231676376119708, -0.15964441597913037, -0.15747431435849535},
{-0.9555321715942284, -0.5256674259547935, -0.3823130450954295,
-0.31707439406139315, -0.27880697705163016, -0.25598266509970813,
-0.2371255742367282, -0.22322727390260866, -0.21228613887410575,
-0.20338696737252349, -0.19596455770584953, -0.18966511882962322,
-0.18422480792361284, -0.17947184081171486, -0.17527021862724723,
-0.1715270923710932, -0.16816544561228852, -0.165114161571438,
-0.16234236598555185, -0.15967020040142188, -0.15750013235418692},
{-0.9552428879423474, -0.525559187006607, -0.38227434664788973,
-0.3170622417247557, -0.278807954411576, -0.2559906565130632,
-0.23713803188167049, -0.22324326075801082, -0.21230460356449044,
-0.20340724891653394, -0.19598613445489832, -0.18968770558419124,
-0.18424818669248566, -0.1794958565300817, -0.17529474306269321,
-0.17155202371671407, -0.16819070101129796, -0.1651396821984008,
-0.16236810142973468, -0.15969611627511426, -0.15752608107180777},
{-0.9549537537054107, -0.5254511565672146, -0.382235837822023,
-0.31705026711257744, -0.27880910090590305, -0.25599880535227726,
-0.23715064767219474, -0.22325940248310872, -0.21232322069414522,
-0.20342768014648982, -0.19600785817272026, -0.18971043703487567,
-0.18427170850307562, -0.17952001348979252, -0.17531940718666306,
-0.17157709295454993, -0.16821609276115623, -0.16516533776530196,
-0.16239397044319048, -0.15972216394470706, -0.15755216087615054},
{-0.954664769408609, -0.5253433350693228, -0.3821975190719371,
-0.31703847068601476, -0.2788104169895007, -0.25600711207516724,
-0.23716342203408658, -0.2232756995068712, -0.21234199068609882,
-0.20344826147538697, -0.19602972929541806, -0.18973331359580925,
-0.1842953737744324, -0.17954431209807353, -0.175344211403484,
-0.17160230047826985, -0.1682416212576925, -0.1651911286614336,
-0.16241997341433034, -0.1597483438015388, -0.15757837219399562},
{-0.9543759355771471, -0.5252357229447568, -0.3821593908509726,
-0.3170268529053999, -0.2788119031111762, -0.2560155771821542,
-0.2371763553811661, -0.2232921522640936, -0.2123609139547682,
-0.2034689933306879, -0.19605174824525307, -0.18975633567436034,
-0.18431918291128113, -0.1795687527545624, -0.1753691561048072,
-0.17162764667881447, -0.1682672868871009, -0.16521705526272967,
-0.1624461107324464, -0.1597746562232487, -0.15760471542034793},
{-0.954087252736727, -0.5251283206271182, -0.38212145361409,
-0.3170154142278818, -0.2788135597254211, -0.2560242011405478,
-0.23718944813202825, -0.2233087611832616, -0.2123799909152524,
-0.20348987612609903, -0.19607391544406028, -0.18977950368750385,
-0.18434313632721455, -0.17959333585937998, -0.17539424169427775,
-0.1716531319451633, -0.16829309004521065, -0.1652431179533096,
-0.16247238277594533, -0.15980110159881633, -0.15763119095382194},
{-0.9537987214171721, -0.5250211285547266, -0.3820837078187509,
-0.3170041551173597, -0.2788153872843111, -0.2560329844252749,
-0.2372027007109807, -0.2233255266976073, -0.21239922198461159,
-0.20351091028621227, -0.19609623132186016, -0.1898028180432334,
-0.18436723443255687, -0.1796180618231915, -0.175419468565849,
-0.17167875666945065, -0.16831903112120017, -0.16526931711462112,
-0.16249878993002653, -0.15982768030460193, -0.15765779920823775},
{-0.9535103421447673, -0.5249141471630026, -0.3820461539206832,
-0.316993076033242, -0.27881738623841557, -0.2560419275249046,
-0.2372161135329236, -0.22334244923882807, -0.21241860757726272,
-0.2035320962258993, -0.1961186962949455, -0.18982627914814998,
-0.1843914776330564, -0.17964293104350304, -0.1754448371141848,
-0.17170452123960445, -0.1683451105009226, -0.16529565311915917,
-0.1625253325785252, -0.15985439271722157, -0.15768454057160852},
{-0.953222115450302, -0.5248073768914168, -0.3820087923820097,
-0.3169821774399111, -0.2788195570454661, -0.25605103090319403,
-0.23722968703216907, -0.22335952924370872, -0.21243814811663242,
-0.20355343436855833, -0.19614131080444963, -0.1898498874267318,
-0.18441586635492513, -0.17966794393657892, -0.17547034774645454,
-0.1717304260516812, -0.16837132858685777, -0.1653221263613318,
-0.1625520111146841, -0.1598812392325044, -0.15771141547858747},
{-0.952934041862207, -0.5247008181800368, -0.3819716236620252,
-0.3169714598054725, -0.2788219001604375, -0.25606029506187156,
-0.23724342161921186, -0.22337676715221733, -0.21245784402708523,
-0.20357492514042974, -0.19616407526913804, -0.18987364329325374,
-0.1844404009975733, -0.17969310089944202, -0.1754960008481703,
-0.17175647149230144, -0.1683976857645746, -0.1653487372162772,
-0.16257882592333317, -0.1599082202351667, -0.15773842430945706},
{-0.9526461219134177, -0.524594471471886, -0.38193464822616363,
-0.3169609235895905, -0.2788244160470583, -0.25606972047455656,
-0.23725731772748304, -0.22339416339852392, -0.2124776957246297,
-0.20359656896255274, -0.19618699011326157, -0.18989754716091056,
-0.1844650819902256, -0.17971840235233572, -0.1755217968338627,
-0.17178265797201675, -0.16842418243572865, -0.165375486073998,
-0.1626057773922014, -0.15993533610344457, -0.15776556748056692},
{-0.9523583561362585, -0.5244883372113378, -0.38189786653609303,
-0.31695056927051724, -0.2788271051628328, -0.25607930762697606,
-0.2372713757799545, -0.2234117184305262, -0.21249770364048004,
-0.20361836626045715, -0.1962100557801989, -0.1899215994559711,
-0.18448990974781054, -0.1797438487068348, -0.17554773610166308,
-0.1718089858760834, -0.16845081899205638, -0.16540237332475272,
-0.1626328659175158, -0.15996258723981782, -0.1577928454053108},
{-0.9520707450605528, -0.5243824158430215, -0.3818612790601037,
-0.31694039730982126, -0.27882996796762427, -0.2560890570093193,
-0.23728559620869305, -0.22342943268660065, -0.21251786819536278,
-0.20364031745921807, -0.196233272690165, -0.18994580059279542,
-0.18451488468545563, -0.17976944037781095, -0.1755738190486511,
-0.17183545560311586, -0.1684775958347302, -0.16542939934331002,
-0.16266009188871067, -0.1599899740263595, -0.15782025848142212},
{-0.9517832892231155, -0.5242767078138257, -0.3818248862658038,
-0.3169304081824862, -0.2788330049238539, -0.2560989690950066,
-0.23729997944406023, -0.22344730660796586, -0.21253818981568884,
-0.20366242297939152, -0.19625664128000153, -0.1899701509978513,
-0.1845400072310781, -0.17979517778039167, -0.17560004608350255,
-0.17186206755388866, -0.16850451336233618, -0.1654565645289381,
-0.16268745570573628, -0.16001749684932065, -0.15784780713474333},
{-0.9514959891572659, -0.5241712135730268, -0.38178868862294735,
-0.31692060236130715, -0.27883621649917245, -0.2561090443901435,
-0.23731452591354696, -0.22346534064109846, -0.21255866893892517,
-0.20368468325565914, -0.19628016198248588, -0.18999465109300218,
-0.18456527779667908, -0.1798210613266633, -0.17562641760574138,
-0.17188882212997214, -0.16853157196482016, -0.1654838692667795,
-0.1627149577579985, -0.16004515610839576, -0.1578754917612457},
{-0.9512088453983552, -0.5240659335702134, -0.38175268660020834,
-0.3169109803160097, -0.2788396031578202, -0.2561192833742325,
-0.2373292360469179, -0.2234835352324751, -0.21257930598318353,
-0.20370709870806536, -0.1963038352239721, -0.19001930130210098,
-0.18459069681520646, -0.17984709144457156, -0.17565293402165594,
-0.17191571973287978, -0.16855877204682201, -0.16551131394982121,
-0.1627425984446802, -0.1600729521923938, -0.15790331276897973},
{-0.9509218584831558, -0.5239608682595076, -0.3817168806743183,
-0.31690154252814295, -0.2788431653704606, -0.2561296865397935,
-0.23734411028286218, -0.22350189083252303, -0.2126001013893415,
-0.20372966977026863, -0.1963276614494589, -0.19004410205511135,
-0.1846162647087226, -0.17987326855163133, -0.17567959574145675,
-0.1719427607618229, -0.16858611401139, -0.1655388989664175,
-0.1627703781595642, -0.16010088550208934, -0.1579312705787288},
{-0.9506350289492076, -0.5238560180928999, -0.38168127131750396,
-0.3168922894703883, -0.27884690360059494, -0.2561402543882423,
-0.23735914905907407, -0.22352040788496197, -0.21262105558500366,
-0.20375239686813984, -0.19635164108336767, -0.19006905378310535,
-0.18464198190233105, -0.17989959307035974, -0.17570640316804997,
-0.17196994562488044, -0.16861359826162925, -0.1655666247096974,
-0.16279829730899564, -0.16012895642589342, -0.1579593655927738},
{-0.9503483573345619, -0.523751383525564, -0.38164585900663894,
-0.31688322162449367, -0.2788508183203078, -0.25615098739484665,
-0.23737435281154262, -0.22353908684388557, -0.21264216900812016,
-0.20377528043130155, -0.19637577456992972, -0.19009415690953801,
-0.18466784882451748, -0.17992606543162992, -0.175733356710424,
-0.1719972747272891, -0.16864122519137936, -0.16559449158305029,
-0.16282635628758158, -0.16015716535849833, -0.15798759822570219},
{-0.950061844177668, -0.5236469650159137, -0.38161064421825586,
-0.3168743394682281, -0.27885491000432694, -0.2561618860772512,
-0.2373897219768537, -0.22355792815994846, -0.21266344209590216,
-0.2037983208903711, -0.19640006234354246, -0.1901194118684657,
-0.18469386590049908, -0.17995268605460524, -0.1757604567759472,
-0.17202474847070448, -0.16866899520792344, -0.16562249997795675,
-0.16285455549416383, -0.16018551270951775, -0.1580159688913909},
{-0.9497754900200448, -0.5235427630218794, -0.3815756274328521,
-0.31686564348112256, -0.2788591791244528, -0.25617295091984715,
-0.23740525699636805, -0.2235769322825263, -0.2126848752833439,
-0.20382151867565312, -0.1964245048371822, -0.19014481909573533,
-0.1847200335652417, -0.1799794553656966, -0.1757877037777007,
-0.17205236726564976, -0.1686969087148782, -0.16565065028811432,
-0.16288289534091405, -0.1602139988652027, -0.15804447798939236},
{-0.9494892954014205, -0.5234387780056124, -0.3815408091324599,
-0.3168571341520874, -0.27886362615620897, -0.2561841824230555,
-0.23742095831406118, -0.22359609967037386, -0.21270646901317036,
-0.20384487421810604, -0.19644910249485292, -0.19017037902580114,
-0.18474635224998792, -0.18000637380450257, -0.17581509811915907,
-0.17208013152404078, -0.16872496611819088, -0.1656789429192429,
-0.16291137621902863, -0.16024262422803304, -0.15807312593932465},
{-0.9492032608651044, -0.5233350104289372, -0.3815061898013141,
-0.31684881196150627, -0.27886825157571593, -0.25619558109474383,
-0.23743682637186225, -0.22361543077209944, -0.21272822372381484,
-0.2038683879508767, -0.19647385575194676, -0.19019609208797306,
-0.1847728223831382, -0.18003344179200553, -0.17584264022164575,
-0.1721080416520806, -0.16875316781391803, -0.16570737826677373,
-0.16293999853459695, -0.1602713891970211, -0.15810191314139388},
{-0.9489173869530845, -0.5232314607546726, -0.38147176991961373,
-0.31684067739456623, -0.2788730558600321, -0.2562071474178822,
-0.2374528616195164, -0.22363492604682733, -0.2127501398585423,
-0.2038920603035308, -0.1964987650475507, -0.19022195873239411,
-0.18479944439923202, -0.18006065976862828, -0.17587033048934586,
-0.1721360980625093, -0.1687815142180682, -0.165735956739411,
-0.1629687626943337, -0.16030029418195113, -0.15813084001072752},
{-0.9486316742087411, -0.523128129448807, -0.38143754997699375,
-0.3168327309432186, -0.2788780394869548, -0.25621888192100073,
-0.23746906450077176, -0.2236545859536534, -0.21277221786351674,
-0.20391589171572377, -0.19652383083013092, -0.19024797939010796,
-0.18482621873630478, -0.18008802816024172, -0.17589816933707425,
-0.17216430116690162, -0.16881000573459914, -0.16576467873406386,
-0.16299766910844937, -0.16032933957657747, -0.15815990695520554},
{-0.9483461231781973, -0.523025016980128, -0.38140353046084385,
-0.31682497308858615, -0.2788832029431205, -0.2562307850935497,
-0.2374854354625029, -0.2236744109420954, -0.21279445818603904,
-0.2039398826143497, -0.19654905353095842, -0.19027415450318585,
-0.18485314581965895, -0.18011554740508018, -0.17592615718302795,
-0.1721926513754113, -0.16883864276687177, -0.16579354466441032,
-0.1630267181672025, -0.16035852578752952, -0.15818911437023075},
{-0.9480607344071643, -0.5229221238168122, -0.3813697118600885,
-0.3168174043312888, -0.27888854670837304, -0.2562428574436808,
-0.23750197496337933, -0.22369440147926412, -0.21281686126744148,
-0.20396403343588076, -0.1965744335920192, -0.19030048451224957,
-0.18488022609918175, -0.18014321793503996, -0.17595429443471744,
-0.17222114911024278, -0.16886742572054914, -0.16582255492528475,
-0.16305591029035327, -0.1603878532167755, -0.15821846266752004},
{-0.9477755084410262, -0.5228194504318111, -0.38133609466773066,
-0.31681002515611567, -0.27889407126579613, -0.25625509949162506,
-0.23751868344979243, -0.22371455802115747, -0.21283942756227248,
-0.20398834462099558, -0.19659997146641217, -0.1903269698710801,
-0.18490746000395575, -0.18017104019489238, -0.17598258151613777,
-0.17224979478552882, -0.16889635501104294, -0.16585170993977272,
-0.16308524588410478, -0.1604173222804377, -0.15824795225506705},
{-0.9474904458283078, -0.5227169972967545, -0.38130267937590645,
-0.31680283605649606, -0.278899777100861, -0.25626751172180207,
-0.2375355613815202, -0.22373488102732608, -0.21286215751990767,
-0.2040128165976398, -0.19662566759447486, -0.19035361101188641,
-0.18493484797275528, -0.18019901461599375, -0.17601101883801107,
-0.1722785888162548, -0.16892543104037827, -0.16588101010734135,
-0.1631147253474694, -0.16044693337218519, -0.15827758352372712},
{-0.9472055471181449, -0.5226147648868817, -0.3812694664813563,
-0.3167958375327089, -0.278905664700261, -0.2562800946759296,
-0.23755260921490162, -0.2237553709640565, -0.2128850515967713,
-0.20403744981169325, -0.1966515224149532, -0.19038040839441805,
-0.18496239044074514, -0.18022714163814157, -0.17603960681915964,
-0.17230753162533574, -0.1689546542251037, -0.16591045584263497,
-0.16314434910395903, -0.1604766869048433, -0.1583073568842508},
{-0.946920812858508, -0.5225127536764234, -0.3812364564777653,
-0.3167890300737497, -0.27891173455847706, -0.2562928488540308,
-0.23756982740437138, -0.22377602829311627, -0.21290811024326217,
-0.2040622446927216, -0.19667753637673968, -0.19040736245992207,
-0.18499008785582305, -0.1802554217026966, -0.17606834588340803,
-0.17233662363156554, -0.16898402496846643, -0.16594004756373693,
-0.16317411755454714, -0.16050658329041312, -0.1583372727300798},
{-0.9466362436025122, -0.5224109641480794, -0.38120364986728816,
-0.31678241418507014, -0.27891798716353833, -0.2563057747688333,
-0.23758721641661396, -0.22379685348263934, -0.21293133392168784,
-0.2040872016898163, -0.19670370992858466, -0.1904344736662722,
-0.18501794066423827, -0.18028385525448698, -0.1760972364453437,
-0.1723658652613267, -0.1690135436946889, -0.16596978568230725,
-0.1632040311160381, -0.1605366229469496, -0.15836733146937831},
{-0.9463518398994353, -0.5223093967781836, -0.38117104714700645,
-0.31677599036160586, -0.2789244229995802, -0.2563188729476167,
-0.23760477670620617, -0.22381784698458773, -0.21295472307727437,
-0.20411232123197465, -0.19673004351315626, -0.19046174245136172,
-0.18504594928396045, -0.18031244272296476, -0.1761262789292175,
-0.1723952569235223, -0.1690432107945412, -0.1659996706071638,
-0.1632340901828968, -0.16056680626371644, -0.1583975334701222},
{-0.9460676023031027, -0.522208052051397, -0.38113864882166126,
-0.31676975910696115, -0.278931042568189, -0.25633214389068826,
-0.23762250874673896, -0.22383900927840727, -0.21297827818116843,
-0.2041376037657301, -0.19675653758730505, -0.19048916928352355,
-0.1850741141815604, -0.1803411845672258, -0.17615547375956453,
-0.17242479906011, -0.16907302670674085, -0.16602970277247664,
-0.1632642951913965, -0.16059713367377526, -0.15842787916170664},
{-0.9457835313668426, -0.5221069304487997, -0.38110645539074994,
-0.31676372092266547, -0.2789378463611172, -0.2563455881391974,
-0.23764041299764926, -0.22386034082637707, -0.21300199969221012,
-0.20416304973358024, -0.19678319258943588, -0.1905167546089217,
-0.1851024357790152, -0.1803700812111515, -0.17618482134523106,
-0.17245449207831598, -0.16910299181103028, -0.16605988257327908,
-0.16329464652997672, -0.16062760557647948, -0.15845836891202225},
{-0.9454996276448213, -0.5220060324577531, -0.38107446736336215,
-0.3167578763090546, -0.27894483487628463, -0.25635920620828756,
-0.23765848992744054, -0.2238818420987343, -0.21302588807262168,
-0.20418865957302046, -0.19681000897304557, -0.19054449888872682,
-0.18513091453516495, -0.18039913310695965, -0.17621432212439458,
-0.17248433642234318, -0.16913310655976943, -0.16609021045914574,
-0.16332514462206404, -0.16065822239556837, -0.15848900312201408},
{-0.945215891693465, -0.5219053585675795, -0.3810426852464275,
-0.3167522257784867, -0.2789520086154482, -0.2563729986193266,
-0.23767674000936267, -0.22390351356693827, -0.21304994378797915,
-0.20421443373462012, -0.1968369871967468, -0.19057240258032948,
-0.18515955088815872, -0.18042834070800495, -0.17624397652770085,
-0.17251433250558534, -0.16916337134102832, -0.16612068683443226,
-0.16335578989060195, -0.1606889845499495, -0.15851978220894125},
{-0.9449323240676648, -0.5218049092647306, -0.3810111095467619,
-0.316746769834765, -0.27895936807061616, -0.2563869659047384,
-0.23769516371626764, -0.22392535570313044, -0.21307416730635964,
-0.20424037265743777, -0.1968641277047709, -0.19060046613682857,
-0.18518834528211414, -0.1804577044540281, -0.17627378497405743,
-0.17254448076079143, -0.16919378659164863, -0.16615131213038126,
-0.1633865827469947, -0.16071989244170481, -0.15855070653597636},
{-0.9446489253273143, -0.5217046850398788, -0.3809797407786846,
-0.316741508987036, -0.27896691374581906, -0.25640110857924014,
-0.2377137615195295, -0.22394736897669532, -0.21309855909220232,
-0.2042664767855058, -0.19689143095212103, -0.1906286900244254,
-0.18521729816836796, -0.18048722478317814, -0.17630374789027314,
-0.17257478161911877, -0.16922435271115432, -0.16618208676757718,
-0.16341752360051487, -0.16075094649636412, -0.1585817765189006},
{-0.9443656960299336, -0.5216046863897787, -0.38094857945091576,
-0.3167364437469473, -0.27897464614648015, -0.2564154271919108,
-0.23773253389848037, -0.2239695538603712, -0.2131231196214287,
-0.20429274657396945, -0.19691889739476665, -0.19065707470238635,
-0.18524640998634823, -0.1805169021500035, -0.17633386570966536,
-0.17260523552363338, -0.1692550701288269, -0.16621301116740028,
-0.16344861287751655, -0.1607821471367572, -0.15861299254078176},
{-0.9440826367341231, -0.5215049138050603, -0.3809176260783431,
-0.3167315746202064, -0.2789825657734184, -0.25642992225792227,
-0.2377514813277628, -0.22399191083141545, -0.21314784936316755,
-0.2043191824637347, -0.19694652748395924, -0.19068562062881256,
-0.1852756811874201, -0.180546736997087, -0.176364138852648,
-0.17263584287906042, -0.16928593926422764, -0.16624408576521432,
-0.16347985097857531, -0.16081349477457252, -0.15864435498588136},
{-0.9437997480022915, -0.5214053677863859, -0.3808868811804871,
-0.3167269021280674, -0.27899067313728665, -0.25644459431885025,
-0.23777060428608365, -0.22401444037001284, -0.2131727487948467,
-0.20434578490608146, -0.19697432167782836, -0.19071432828164347,
-0.18530511222306245, -0.1805767297744012, -0.17639456776916518,
-0.17266660413687873, -0.1693169605323419, -0.16627531099027237,
-0.163511238336298, -0.16084498984255902, -0.1586758642614825},
{-0.943517030394915, -0.5213060488286203, -0.38085634527158163,
-0.3167224267812969, -0.27899896874072283, -0.2564594439123482,
-0.2377899032591415, -0.22403714295313648, -0.21319781838678864,
-0.20437255435459178, -0.19700228043836887, -0.19074319811565488,
-0.1853347035368813, -0.18060688093356703, -0.17642515288139293,
-0.17269751974006908, -0.16934813436907348, -0.16630668726554632,
-0.16354277537044482, -0.16087663275854425, -0.15870752078166106},
{-0.9432344844754965, -0.5212069574351972, -0.3808260188733925,
-0.3167181490976816, -0.27900745309523245, -0.2564744715574534,
-0.23780937873351604, -0.22406001905531525, -0.21322305861761492,
-0.20439949125460544, -0.19703040421669016, -0.19077223059562698,
-0.18536445557970183, -0.18063719091861685, -0.17645589462696876,
-0.17272859009736408, -0.16937946118355285, -0.16633821502830415,
-0.16357446249733698, -0.16090842392540594, -0.15873932492164045},
{-0.9429521108063028, -0.5211080941081292, -0.38079590250515594,
-0.31671406959569026, -0.27901612670882514, -0.25648967781739884,
-0.23782903118669196, -0.22408306915954768, -0.21324846997515579,
-0.2044265960641951, -0.19705869347981775, -0.19080142619651497,
-0.1853943688004165, -0.1806676601802053, -0.17648679343517415,
-0.17275981566609744, -0.1694109414113143, -0.16636989471015795,
-0.16360630013483046, -0.1609403637989999, -0.15877127708424155},
{-0.9426699099543612, -0.521009459351859, -0.3807659966917356,
-0.31671018879197277, -0.2790249900990034, -0.25650506321980515,
-0.23784886111087644, -0.22410629375130497, -0.2132740529356738,
-0.204453869233447, -0.19708714867567778, -0.1908307853779263,
-0.18542444365587585, -0.18069828916461006, -0.17651784974725615,
-0.17279119686818945, -0.16944257547237385, -0.1664017267297595,
-0.1636382887164416, -0.1609724527721994, -0.15880337766193975},
{-0.9423878824838283, -0.5209110536734585, -0.38073630195995634,
-0.3167065072125581, -0.279034043777898, -0.25652062830357636,
-0.2378688689982198, -0.22412969331276145, -0.21329980798404335,
-0.20448131122444124, -0.19711577028238025, -0.19086030862146686,
-0.18545468059946302, -0.18072907833467866, -0.17654906401216408,
-0.17282273416714133, -0.16947436380252157, -0.1664337115522585,
-0.163670428661419, -0.16100469130441297, -0.1588356270894451},
{-0.942106028963309, -0.5208128775800276, -0.38070681883459656,
-0.31670302537770567, -0.2790432882584355, -0.2565363736268296,
-0.23788905533535853, -0.22415326832930305, -0.21332573559976709,
-0.20450892248649666, -0.1971445587539904, -0.1908899963879378,
-0.18548508008686326, -0.18076002813401715, -0.17658043665508671,
-0.1728544279721973, -0.16950630681924395, -0.16646584957561572,
-0.1637027203861976, -0.16103707979371507, -0.15886802573223235},
{-0.9418243499588215, -0.5207149315806703, -0.38067754784384533,
-0.31669974381108545, -0.27905272405905635, -0.2565522997115295,
-0.2379094206186494, -0.22417701928731049, -0.2133518362740574,
-0.2045367034828871, -0.19717351455201992, -0.1909198491603945,
-0.18551564256341635, -0.18079113901418964, -0.1766119681235807,
-0.1728862787348362, -0.16953840496773864, -0.16649814125878493,
-0.16373516433148438, -0.16106961867839686, -0.15890057402316415},
{-0.9415428460400648, -0.520617216187631, -0.38064848951938757,
-0.31669666304105704, -0.27906235169862725, -0.2565684071284693,
-0.23792996534376698, -0.22420094667486978, -0.2133781105008552,
-0.20456465467412954, -0.197202638149804, -0.19094986740003606,
-0.1855463684965457, -0.18082241142514022, -0.17664365886042788,
-0.17291828689550925, -0.16957065867597976, -0.16653058702792123,
-0.16376776090334033, -0.16110230837733752, -0.15893327235528432},
{-0.9412615177784005, -0.5205197319169059, -0.38061964439222606,
-0.3166937835891588, -0.27907217169703813, -0.2565846964136256,
-0.23795069000618696, -0.22422505097850376, -0.213404558757901,
-0.20459277651536922, -0.19723192999896355, -0.19098005158645037,
-0.185577258337986, -0.18085384582371944, -0.1766755093022141,
-0.17295045289668565, -0.16960306837765415, -0.16656318732592013,
-0.16380051055080003, -0.16113514934036743, -0.1589661211417024},
{-0.940980365744494, -0.5204224792842922, -0.3805910129988206,
-0.3166911059970232, -0.27908218458173906, -0.2566011681209659,
-0.2379715951091157, -0.22424933269871872, -0.2134311815522949,
-0.2046210694788897, -0.1972613905811329, -0.19101040219968013,
-0.18560831255229004, -0.1808854426706148, -0.17670751990178246,
-0.17298277718171562, -0.1696356345076424, -0.16659594259311916,
-0.16383341369683535, -0.16116814197619078, -0.15899912080772083},
{-0.9406993905097636, -0.520325458805516, -0.38056259587344243,
-0.3166886307842276, -0.2790923908658556, -0.2566178228067031,
-0.23799268114581196, -0.2242737923195932, -0.21345797936635336,
-0.20464953402293418, -0.1972910203537026, -0.191040919706154,
-0.18563953159056723, -0.18091720240485643, -0.1767396911004937,
-0.1730152601812165, -0.16966835749659026, -0.16662885324927856,
-0.16386647076990357, -0.16120128672426404, -0.15903227175891743},
{-0.9404185926477027, -0.520228671000794, -0.38053439355411456,
-0.3166863584864359, -0.27910279108152736, -0.25663466101019594,
-0.23801394862729808, -0.2242984303380524, -0.2134849527023448,
-0.2046781706102081, -0.19732081979066152, -0.19107160458995054,
-0.18567091592146312, -0.18094912549321407, -0.17677202334562025,
-0.17304790235402834, -0.169701237801263, -0.1666619197611965,
-0.16389968219920092, -0.16123458401315816, -0.15906557442289682},
{-0.9401379727328703, -0.5201321163929009, -0.38050640658019574,
-0.31668428963880046, -0.27911338575157174, -0.2566516833034882,
-0.2380353980508687, -0.22432324725102148, -0.2135121020565407,
-0.2047069797179688, -0.19735078935670458, -0.19110245732790077,
-0.1857024660030504, -0.1809812123846939, -0.17680451708443456,
-0.17308070412511256, -0.1697342758414777, -0.16669514254604678,
-0.1639330484221091, -0.16126803426266179, -0.15909902923056052},
{-0.9398575313408344, -0.5200357955030341, -0.3804786354935743,
-0.3166824247765305, -0.2791241754113969, -0.25666889023969475,
-0.23805702993016098, -0.22434824355570981, -0.2135394279306695,
-0.2047359618103144, -0.1973809295328408, -0.1911334784001042,
-0.18573418231014216, -0.18101346353893177, -0.17683717277543565,
-0.1731136659607273, -0.16976747208383358, -0.16672852206068,
-0.16396656987524239, -0.16130163793150132, -0.15913263659223276},
{-0.9395772690506021, -0.519939708860818, -0.38045108084162393,
-0.31668076444066173, -0.27913516058890764, -0.2566862823742895,
-0.2380788447692055, -0.2243734197539311, -0.21356693082600486,
-0.2047651173616316, -0.19741124078760208, -0.1911646682837329,
-0.1857660653028006, -0.18104587942312378, -0.17686999086510014,
-0.17314678830135222, -0.16980082695346255, -0.166762058739522,
-0.1640002469949593, -0.1613353954348895, -0.1591663969608419},
{-0.9392971864364767, -0.5198438569901498, -0.3804237431606623,
-0.31667930916387377, -0.27914634180982034, -0.25670386026860115,
-0.2381008430767224, -0.22439877633019023, -0.21359461123458345,
-0.20479444683419956, -0.19744172358682022, -0.1911960274544242,
-0.18579811544015, -0.1810784604747937, -0.1769029717941919,
-0.1731800715690497, -0.16983434089726757, -0.16679575301131422,
-0.16403408020374854, -0.16136930719795828, -0.15920031074441},
{-0.9390172840784174, -0.5197482404214355, -0.38039662300661803,
-0.3166780594916929, -0.2791577196122432, -0.25672162447520464,
-0.2381230253748754, -0.22442431380997618, -0.21362246967154874,
-0.20482395071533688, -0.1974723784164496, -0.1912275564145034,
-0.18583033319956144, -0.1811112071780201, -0.17693611603576187,
-0.17321351624704562, -0.16986801437883514, -0.1668296053519498,
-0.16406806996670298, -0.16140337369310487, -0.15923437840979204},
{-0.9387375625572218, -0.5196528596864454, -0.3803697209225163,
-0.31667701596649067, -0.2791692945294528, -0.25673957557461335,
-0.23814539216155595, -0.224450032680096, -0.21365050664172713,
-0.20485362947687236, -0.19750320574718216, -0.19125925562659063,
-0.18586271905377316, -0.1811441199672572, -0.17696942402446325,
-0.17324712274833587, -0.1699018478294363, -0.16686361617115608,
-0.1641022166939763, -0.1614375952955811, -0.15926860037473034},
{-0.9384580224535313, -0.5195577153170206, -0.38034303746397313,
-0.31667617912702895, -0.27918106709933, -0.25675771411872006,
-0.23816794396242358, -0.22447593345185624, -0.21367872265165033,
-0.20488348359376118, -0.1975342060507046, -0.19129112558348993,
-0.18589527347600665, -0.18117719932428145, -0.17700289622953846,
-0.173280891539207, -0.16993584171311227, -0.1668977859320364,
-0.16413652083431884, -0.1614719724899203, -0.159302977099685},
{-0.9381786643502465, -0.5194628078518804, -0.3803165731790443,
-0.31667554952852583, -0.279193037862143, -0.2567760406795969,
-0.2381906812948671, -0.2245020166314191, -0.21370711821623445,
-0.20491351355951792, -0.1975653798218957, -0.1913231667758737,
-0.18592799694027917, -0.1812104457040391, -0.1770365331129824,
-0.17331482307216106, -0.1699699964808019, -0.16693211509104344,
-0.16417098285154452, -0.16150650569835534, -0.1593375090274094},
{-0.9378994888295011, -0.5193681378253814, -0.38029032862476697,
-0.31667512770869166, -0.2792052073553748, -0.25679455582780975,
-0.23821360467587738, -0.22452828272287206, -0.21373569383462154,
-0.20494371983693327, -0.19759672752289248, -0.19135537968026028,
-0.18596088991793636, -0.18124385956531341, -0.17707033512027692,
-0.17334891779051986, -0.17000431257770288, -0.16696660408035768,
-0.1642056031724053, -0.16154119535727318, -0.15937219658971458},
{-0.9376204964771517, -0.5192737057756034, -0.3802643043595424,
-0.3166749142232561, -0.2792175761215674, -0.2568132601168429,
-0.23823671462878337, -0.22455473224476918, -0.21376445002911737,
-0.20497410292534823, -0.19762824964806214, -0.19138776479260855,
-0.18599395289635368, -0.18127744137751733, -0.17710430272128974,
-0.17338317614954235, -0.17003879048056092, -0.16700125335188432,
-0.1642403822422125, -0.16157604189965014, -0.15940704028190567},
{-0.9373416878782876, -0.5191795122466374, -0.38023850093867395,
-0.3166749096236572, -0.27923014470218277, -0.25683215413533844,
-0.23826001167199706, -0.2245813656942346, -0.21379338731452435,
-0.2050046633075624, -0.1976599466680966, -0.19142032259594544,
-0.1860271863423293, -0.18131119160514686, -0.17713843638142635,
-0.17341759858388173, -0.170073430625024, -0.1670360633391681,
-0.16427532049516458, -0.16161104575741092, -0.1594420404999255},
{-0.9370630636197745, -0.5190855577787659, -0.38021291892289355,
-0.3166751144567854, -0.27924291364266196, -0.25685123844363034,
-0.2382834963277105, -0.2246081835910445, -0.21382250620243326,
-0.20503540146307841, -0.19769181907668099, -0.19145305358199494,
-0.18606059075116832, -0.18134511070095982, -0.17717273654477594,
-0.17345218556056352, -0.1701082334768671, -0.16707103450806926,
-0.16431041839547333, -0.16164620739675684, -0.1594771977089806},
{-0.9367846242890323, -0.5189918429189646, -0.3801875588768837,
-0.3166755292824348, -0.2792558834972567, -0.2568705136210383,
-0.23830716912488015, -0.22463518644681812, -0.21385180721250663,
-0.20506631789166363, -0.19772386735502323, -0.19148595823867254,
-0.18609416660160605, -0.1813791991494611, -0.17720720368805587,
-0.17348693752254007, -0.17014319949512924, -0.16710616730887295,
-0.16434567638364683, -0.1616815272350891, -0.15951251236592157},
{-0.936506370476522, -0.5188983682128026, -0.3801624213642185,
-0.31667615465545396, -0.27926905480418895, -0.2568899802434146,
-0.23833103059502037, -0.22466237478022322, -0.21388129086312802,
-0.2050974130840757, -0.19775609199604105, -0.19151903707029305,
-0.18612791438232534, -0.1814134574100308, -0.17724183828863715,
-0.17352185495118988, -0.17017832915800568, -0.16714146218845372,
-0.1643810949088902, -0.16171700573977432, -0.15954798493365274},
{-0.9362283027713545, -0.5188051342096287, -0.3801375069494668,
-0.3166769911321694, -0.2792824281181936, -0.2569096388722585,
-0.2383550812631654, -0.2246897491009463, -0.21391095766895774,
-0.20512868752962277, -0.1977884934777876, -0.19155229055451173,
-0.18616183457245938, -0.18144788594506167, -0.17727664079029637,
-0.17355693826013407, -0.170213622909813, -0.16717691960047887,
-0.16441667442501284, -0.16175264331857875, -0.15958361582534053},
{-0.9359504217656252, -0.5187121414604405, -0.3801128161992722,
-0.31667803927501836, -0.27929600398982757, -0.2569294901061596,
-0.23837932165949383, -0.22471730993149208, -0.21394080816554606,
-0.2051601417336144, -0.19782107230383872, -0.19158571919783185,
-0.18619592768084203, -0.18148248523942812, -0.17731161169189136,
-0.17359218793978926, -0.17024908123605087, -0.1672125400025095,
-0.16445241537590505, -0.1617884404430754, -0.15961940552685405},
{-0.9356727280517987, -0.5186193905178555, -0.3800883496877532,
-0.3166792996377126, -0.27930978297465003, -0.2569495345056225,
-0.23840375231611688, -0.22474505778649245, -0.21397084286331847,
-0.20519177618515982, -0.19785382894684744, -0.19161932348453092,
-0.18623019416443753, -0.18151725572718647, -0.1773467514152287,
-0.17362760441932323, -0.17028470457066192, -0.1672483238245377,
-0.1644883181996022, -0.16182439751759148, -0.1596553544361825},
{-0.9353952222243009, -0.5185268819373903, -0.38006410798590196,
-0.31668077279354634, -0.2793237656294707, -0.2569697726641209,
-0.23842837377210913, -0.22477299319584176, -0.21400106229785365,
-0.20522359138419688, -0.1978867639186035, -0.19165310393523782,
-0.18626463456575948, -0.18155219793240462, -0.1773820604931018,
-0.17366318818798732, -0.1703204934165683, -0.16728427155507575,
-0.1645243833846166, -0.16186051504962506, -0.15969146305133108},
{-0.9351179048775435, -0.5184346162749449, -0.3800400916661033,
-0.31668245930401895, -0.2793379525080013, -0.25699020515477855,
-0.23845318655193637, -0.22480111666453695, -0.21403146698162345,
-0.20525558784495956, -0.197919877704976, -0.1916870610214687,
-0.1862992493404363, -0.18158731227305225, -0.17741753934814142,
-0.17369893968864858, -0.17035644821632445, -0.16732038364330037,
-0.16456061135360756, -0.16189679343901275, -0.15972773178395983},
{-0.9348407766079703, -0.5183425940893898, -0.3800163013064548,
-0.3166843597316813, -0.2793523441681316, -0.25701083255285084,
-0.23847819120513236, -0.2248294287289525, -0.21406205744770546,
-0.20528776606224142, -0.1979531707987121, -0.19172119526211873,
-0.18633403900057033, -0.18162259925898638, -0.17745318848520242,
-0.17373485937704913, -0.1703925694509678, -0.16735666053290288,
-0.16459700257237841, -0.16193323315442854, -0.15976416108679814},
{-0.9345638380129628, -0.5182508159403483, -0.37999273748221185,
-0.31668647465176036, -0.279366941173663, -0.25703165546062223,
-0.23850338826167672, -0.22485792990823938, -0.21409283423597003,
-0.2053201265451321, -0.1979866437111184, -0.1917555071553636,
-0.18636900404098355, -0.18165805934802393, -0.17748900836869552,
-0.17377094771907764, -0.1704288575905082, -0.1673931026974742,
-0.16463355747930564, -0.16196983463603942, -0.1598007514146218},
{-0.9342870896913666, -0.5181592823906698, -0.3799694007736605,
-0.3166888046253007, -0.279381744084219, -0.2570526744489996,
-0.2385287782628609, -0.2248866207246749, -0.21412379786679026,
-0.205352669796099, -0.19802029691598477, -0.191789997199038,
-0.1864041449696856, -0.18169369301685379, -0.17752499947178535,
-0.17380720518781345, -0.17046531310646174, -0.16742971059886713,
-0.16467027655775723, -0.16200659834566977, -0.15983750320947365},
{-0.9340105322437608, -0.51806799400606, -0.3799462917648384,
-0.316691350232702, -0.27939675346411263, -0.25707389010321435,
-0.23855436175182376, -0.2249155017018154, -0.21415494886505826,
-0.20538539633471942, -0.19805413092672097, -0.1918246658921987,
-0.18643946227632568, -0.18172950073559946, -0.177561162266187,
-0.17384363222927846, -0.17050193646068124, -0.1674664846725591,
-0.16470716023235354, -0.16204352472541927, -0.15987441691606818},
{-0.9337341662694598, -0.5179769513523098, -0.3799234110385612,
-0.3166941120455249, -0.2794119698802149, -0.2570953030228509,
-0.23858013927181787, -0.2249445733835671, -0.21418628777578874,
-0.20541830667104932, -0.19808814625341142, -0.1918595137634327,
-0.18647495648465906, -0.1817654829972355, -0.17759749724879725,
-0.1738802293372146, -0.1705387281421622, -0.16750342541510577,
-0.1647442089916069, -0.16208061422983633, -0.1599114930058363},
{-0.9334579923713306, -0.5178861549977825, -0.3799007591803445,
-0.3166970906360973, -0.27942739389979465, -0.2571169137771676,
-0.23860611136947796, -0.2249738362758933, -0.21421781512725602,
-0.20545140131369521, -0.1981223433919581, -0.19189454129949013,
-0.18651062808260122, -0.18180164025741874, -0.1776340048961913,
-0.17391699695031093, -0.17057568861397954, -0.16754053326809526,
-0.16478142327133583, -0.1621178673199779, -0.1599487319251125},
{-0.9331820111546136, -0.5177956055142516, -0.3798783367784324,
-0.3167002865842221, -0.2794430260915419, -0.25713872297680496,
-0.2386322785842765, -0.225003290922956, -0.21424953146413372,
-0.20548468079172721, -0.19815672284329366, -0.19192974902284732,
-0.18654647758049236, -0.18183797301517757, -0.17767068567971478,
-0.17395393556839167, -0.17061281836470243, -0.16757780871222394,
-0.16481880354297118, -0.16215528444155325, -0.15998613412094187},
{-0.9329062232216785, -0.5177053034713595, -0.37985614442524707,
-0.3167037004703275, -0.2794588670280689, -0.2571607311998889,
-0.2386586414697831, -0.22503293785192113, -0.21428143731534988,
-0.20551814562230675, -0.19819128511230133, -0.19196513743042942,
-0.18658250549432864, -0.18187448174268184, -0.1777075400989645,
-0.1739910456461473, -0.17065011784438866, -0.16761525220800877,
-0.1648563502566276, -0.16219286606119, -0.16002370006242472},
{-0.9326306291808777, -0.5176152494461519, -0.37983418271088,
-0.3167073328743868, -0.2794749172838067, -0.25718293904600387,
-0.23868520057698106, -0.22506277759924842, -0.21431353321545998,
-0.20555179632509635, -0.1982260307229069, -0.19200070706071415,
-0.18661871233354077, -0.18191116692889864, -0.17774456862349552,
-0.17402832766271104, -0.17068758756599323, -0.1676528642340429,
-0.1648940638923193, -0.16223061263008276, -0.16006143021900243},
{-0.9323552296365278, -0.5175254440129322, -0.3798124522256501,
-0.31671118437711243, -0.2794911774269053, -0.25720534710092124,
-0.23871195644210275, -0.22509281068107612, -0.21434581970660815,
-0.20558563341401737, -0.198260960162429, -0.19203645838987882,
-0.18665509859064855, -0.18194802903400387, -0.1777817717293999,
-0.17406578207908296, -0.1707252279764475, -0.16769064522074473,
-0.16493194487833307, -0.1622685245911839, -0.1600993250232534},
{-0.9320800251999231, -0.5174358877511338, -0.3797909535748545,
-0.31671525556564006, -0.279507648037594, -0.25722795595444836,
-0.2387389096378456, -0.2251230376532476, -0.2143782973352586,
-0.20561965742567168, -0.1982960739578914, -0.1920723919682814,
-0.18669166479730848, -0.1819850685722031, -0.17781914993656756,
-0.17410340938809554, -0.17076303956358174, -0.1677285956926653,
-0.1649699937150899, -0.1623066024276909, -0.16013738497383656},
{-0.9318050164797853, -0.5173465812399911, -0.37976968734650995,
-0.31671954702684957, -0.2795243296953629, -0.25725076621762355,
-0.23876606069731565, -0.22515345904216133, -0.2144109666367342,
-0.2056538688845535, -0.19833137260542344, -0.19210850829577453,
-0.18672841145925645, -0.1820222860077081, -0.17785670370611228,
-0.17414121006694927, -0.17080102280871756, -0.16776671609784444,
-0.16500821085111284, -0.16234484658903625, -0.1601756105071388},
{-0.9315302040877214, -0.5172575250614102, -0.3797486541481021,
-0.3167240593406859, -0.27954122297424533, -0.2572737784753656,
-0.23879341018314904, -0.22518407537359053, -0.21444382816051188,
-0.2056882683181982, -0.19836685662818354, -0.1921448078844037,
-0.18676533909649606, -0.18205968183642085, -0.17789443353228762,
-0.17417918458784243, -0.17083917819789463, -0.16780500690654776,
-0.16504659674689037, -0.16238325753479899, -0.16021400211150194},
{-0.9312555886347695, -0.5171687198030668, -0.37972785457697,
-0.3167287931101157, -0.27955832846453177, -0.2572969933338527,
-0.23882095865516817, -0.22521488720170169, -0.21447688244595042,
-0.2057228562711657, -0.1984025265429068, -0.19218129127176553,
-0.18680244821516112, -0.1820972565452621, -0.17793233990457225,
-0.17421733344087897, -0.17087750619876374, -0.1678434685933894,
-0.16508515187760509, -0.16242183571392843, -0.1602525602375522},
{-0.930981170733844, -0.5170801660470943, -0.3797072892407698,
-0.3167337489185513, -0.27957564674622404, -0.2573204113897134,
-0.2388487066666869, -0.2252458950580376, -0.21451013004113406,
-0.20575763325692265, -0.1984383828643672, -0.19221795896416438,
-0.18683973933696052, -0.1821350106163493, -0.17797042331076796,
-0.1742556571096543, -0.1709160073041005, -0.16788210163537087,
-0.1651238766994254, -0.1624605816036251, -0.16029128534623283},
{-0.9307069510023354, -0.5169918643823905, -0.37968695874576497,
-0.31673892736301923, -0.2795931784032746, -0.257344033229316,
-0.23887665478019926, -0.22527709948616348, -0.21454357149272596,
-0.20579259983347242, -0.198474426109982, -0.192254811502238,
-0.18687721298022097, -0.18217294456260902, -0.17800868425268845,
-0.17429415608017962, -0.17095468199207176, -0.16792090653066793,
-0.16516277170700278, -0.16249949566193322, -0.1603301779201729},
{-0.9304329300550904, -0.5169038154008945, -0.37966686369946956,
-0.3167443290387837, -0.27961092402162535, -0.2573678594739306,
-0.2389048035450969, -0.22530850101219357, -0.21457720735492103,
-0.20582775651755014, -0.19851065679239355, -0.19229184937256605,
-0.18691486964823412, -0.1822110588569501, -0.17804712320977956,
-0.17433283081524564, -0.17099353073487578, -0.1679598837080789,
-0.16520183733453564, -0.16253857833558527, -0.16036923837899053},
{-0.9301591085093577, -0.5168160196909355, -0.3796470047128935,
-0.31674995453846577, -0.2796288841903163, -0.2573918907182531,
-0.23893315353018352, -0.2253401001964619, -0.21461103815855154,
-0.20586310386264017, -0.1985470754295875, -0.19232907313511305,
-0.18695270987831236, -0.18224935399658193, -0.178085740669502,
-0.17437168184190455, -0.17103255403577577, -0.1679990336992887,
-0.16524107407371957, -0.16257783011303673, -0.1604084672099475},
{-0.9298854869829398, -0.5167284778514158, -0.37962738239838245,
-0.3167558044689258, -0.27964705950736857, -0.25741612756462473,
-0.23896170529351934, -0.22537189757014175, -0.21464506446969267,
-0.20589864241284772, -0.1985836825604963, -0.1923664832974623,
-0.18699073417900536, -0.1822878304730864, -0.17812453713818854,
-0.17441070963295147, -0.17107175236452576, -0.16803835695918679,
-0.1652804823931433, -0.16261725143397143, -0.1604478648756924},
{-0.9296120660980876, -0.5166411904743313, -0.37960799737305706,
-0.31676187942537126, -0.27966545055502934, -0.25744057062206593,
-0.23899045940785868, -0.22540389368808178, -0.2146792868502132,
-0.20593437270957793, -0.19862047870677202, -0.19240408040286638,
-0.18702894308120221, -0.18232648879535418, -0.17816351311029166,
-0.17444991470313198, -0.17111112622023938, -0.16807785397958241,
-0.1653200627627598, -0.16265684278243953, -0.16048743181806913},
{-0.9293388464747494, -0.5165541581582147, -0.3795888502514515,
-0.31676818001346874, -0.2796840579338209, -0.25746522048422094,
-0.23901941643305236, -0.2254360890825069, -0.21471370582381155,
-0.2059702952978455, -0.1986574643849508, -0.19244186495910753,
-0.18706733709785794, -0.18236532945792305, -0.1782026690756311,
-0.17448929750815978, -0.17115067608730783, -0.16811752523318546,
-0.16535981566539704, -0.1626966046222833, -0.16052716849836202},
{-0.9290658287351619, -0.5164673815052083, -0.3795699416528464,
-0.3167747068409881, -0.27970288223681905, -0.2574900777779021,
-0.2390485769318218, -0.22546848431866806, -0.21474832198151717,
-0.2060064107263031, -0.1986946401288492, -0.19247983751435527,
-0.18710591675110777, -0.18240435296277724, -0.17824200553627634,
-0.17452885858753575, -0.17119040244824646, -0.16815737121930852,
-0.16539974157390702, -0.1627365374206704, -0.16056707536324666},
{-0.9287930135040483, -0.516380861114925, -0.3795512721989951,
-0.3167814605044157, -0.27972192406619456, -0.25751514309550316,
-0.2390779414767792, -0.22550107992455537, -0.21478313583853037,
-0.20604271953828857, -0.1987320064559981, -0.19251799857167384,
-0.18714468254961503, -0.18244355978711724, -0.17828152296658573,
-0.17456859840055472, -0.17123030578807175, -0.16819739237854492,
-0.16543984095241626, -0.1627766416370946, -0.16060715284422145},
{-0.9285204014070985, -0.5162945975946798, -0.37953284251423725,
-0.3167884416211564, -0.2797411840207644, -0.25754041705647523,
-0.23910751063965563, -0.22553387647070622, -0.2148181479934408,
-0.2060792223090857, -0.19876956391917133, -0.19255634869927007,
-0.18718363505206526, -0.18248295046822705, -0.1783212218911956,
-0.17460851748731443, -0.17127038660584049, -0.16823758925690413,
-0.1654801142877318, -0.1628169177580503, -0.1606474014149626},
{-0.9282479930697178, -0.5162085915470698, -0.37951465322331046,
-0.31679565080315797, -0.2797606626988909, -0.25756590027251036,
-0.23913728497896614, -0.22556687448724233, -0.21485335897267532,
-0.20611591956645725, -0.19880731303240395, -0.1925948883954618,
-0.187222774741997, -0.18252252549123682, -0.1783611027904044,
-0.17464861632367956, -0.1713106453872797, -0.1682779623067745,
-0.16552056206055, -0.1628573662531494, -0.16068782150273364},
{-0.927975789120211, -0.5161228435797796, -0.3794967049533966,
-0.31680308865591655, -0.27978036070305734, -0.25759159334035076,
-0.23916726508338115, -0.22560007454092101, -0.2148887693574295,
-0.20615281187789947, -0.19884525434085276, -0.19263361821242597,
-0.18726210218184747, -0.18256228535992136, -0.1784011661757745,
-0.17468889542206512, -0.17135108262621657, -0.16831851201413883,
-0.16556118474846926, -0.16289798759183327, -0.1607284135512259},
{-0.9277037901879623, -0.5160373543043022, -0.3794789983346334,
-0.3168107558007591, -0.2798002786467464, -0.25761749688987834,
-0.2391974515124673, -0.22563347718087812, -0.2149243796989424,
-0.20618989980360425, -0.19888338837776587, -0.19267253866757983,
-0.18730161786047006, -0.18260223058820202, -0.17844141252905388,
-0.1747293552883491, -0.17139169880746863, -0.16835923886574733,
-0.1656019828346018, -0.16293878225161507, -0.16076917800612023},
{-0.9274319969051561, -0.5159521243314487, -0.37946153400019966,
-0.31681865284443234, -0.2798204171275813, -0.2576436115298577,
-0.23922784484420845, -0.22566708296022853, -0.2149601905651366,
-0.2062271838925085, -0.19892171567516925, -0.1927116503165962,
-0.1873413223297007, -0.18264236168775483, -0.17848184236100906,
-0.1747699964323317, -0.17143249445510378, -0.16840014336679587,
-0.16564295680069563, -0.16297975074093074, -0.16081011530965839},
{-0.9271604099007504, -0.5158671542758668, -0.37944431257994893,
-0.31682678041488543, -0.2798407767617448, -0.2576699378737999,
-0.2392584456636655, -0.22570089243839675, -0.21499620251435658,
-0.20626466472003813, -0.19896023677014796, -0.19275095367027006,
-0.18738121609877112, -0.18268267915954084, -0.1785224561625398,
-0.17481081935591192, -0.17147347001741764, -0.1684412259903354,
-0.16568410712585546, -0.16302089349761673, -0.16085122588583545},
{-0.9268890298102122, -0.5157824447532278, -0.3794273347139381,
-0.3168351391247768, -0.2798613581555287, -0.25769647654249184,
-0.23928925453168404, -0.22573490617122616, -0.215032416116685,
-0.20630234284089966, -0.1989989522239739, -0.19279044928128997,
-0.18742129969956522, -0.18272318351267813, -0.17856325444898857,
-0.17485182456613302, -0.17151462603439427, -0.1684824872362185,
-0.1657254343072907, -0.16306221103121743, -0.16089251018226491},
{-0.9266178572677148, -0.5156979963825279, -0.37941060103980817,
-0.3168437295996114, -0.27988216192107984, -0.25772322814273707,
-0.23932027204588735, -0.22576912472163713, -0.21506883193532644,
-0.20634021881025433, -0.1990378625579865, -0.192830137683643,
-0.18746157366538796, -0.18276387526631765, -0.17860423771998057,
-0.174893012592662, -0.17155596298206888, -0.16852392760040402,
-0.16576693883561688, -0.16310370383439476, -0.1609339686465603},
{-0.9263468929100469, -0.5156138097823089, -0.37939411219923613,
-0.31685255246316046, -0.27990318867679775, -0.25775019331231874,
-0.23935149876919581, -0.22580354864615515, -0.21510545054292152,
-0.2063782932112872, -0.1990769683286544, -0.19287001941100357,
-0.18750203851729452, -0.18280475493870085, -0.17864540647568106,
-0.1749343839379094, -0.1715974813689627, -0.16856554756782316,
-0.16580862118925666, -0.16314537238685034, -0.16097560170001657},
{-0.9260761373732009, -0.5155298855730734, -0.37937786883239255,
-0.3168616083371205, -0.2799244390357103, -0.25777737265818246,
-0.23938293529351995, -0.22583817850266996, -0.21514227250898443,
-0.2064165666001827, -0.19911627007749644, -0.192910094993465,
-0.18754269478651509, -0.18284582303837738, -0.17868676121165095,
-0.174975939102211, -0.17163918168711234, -0.1686073476255956,
-0.16585048184936113, -0.1631872171786597, -0.16101740978390922},
{-0.9258055912978023, -0.5154462243822877, -0.37936187158618395,
-0.31687089785543776, -0.2799459136234361, -0.2578047668097554,
-0.239414582205427, -0.22587301487246236, -0.2151792984084011,
-0.2064550395530489, -0.19915576836368132, -0.19295036499570983,
-0.1875835430084294, -0.18288708009507104, -0.1787283024480928,
-0.175017678627313, -0.17168106445507192, -0.1686493282795425,
-0.16589252133320542, -0.16322923869637407, -0.16105939334022423},
{-0.9255352553227567, -0.5153628268325292, -0.37934612110464627,
-0.31688042164122976, -0.2799676130490525, -0.2578323763877677,
-0.2394464400696279, -0.22590805828937732, -0.21521652879494013,
-0.20649371262118166, -0.19919546372454988, -0.1929908299278793,
-0.18762458368505008, -0.18292852659760683, -0.17877003067434316,
-0.1750596029990561, -0.17172313014893348, -0.16869149001121286,
-0.16593474010821296, -0.1632714374374018, -0.16110155279594096},
{-0.9252651300902954, -0.5152796935548452, -0.3793306180419336,
-0.3168901803338713, -0.27998953794158865, -0.25786020200732196,
-0.2394785095006, -0.22594330935234552, -0.21525396426827115,
-0.2065325864053591, -0.19923535672424464, -0.19303149035360434,
-0.18766581738304922, -0.18297016310810932, -0.17881194640821718,
-0.17510171276580877, -0.17176537929998403, -0.16873383335024528,
-0.16597713868887354, -0.16331381389579747, -0.1611438886141059},
{-0.9249952162427064, -0.5151968251755932, -0.37931536304307656,
-0.3169001745568778, -0.28001168891904626, -0.2578882443038424,
-0.23951079106521433, -0.22597876861263444, -0.21529160538051428,
-0.20657166145716133, -0.19927544790951401, -0.1930723468069857,
-0.18770724461700183, -0.18301199011906988, -0.1788540501659952,
-0.1751440084213982, -0.17180781240813303, -0.16877635877150965,
-0.16601971757532397, -0.16335636857201052, -0.1611864012224089},
{-0.9247255144255604, -0.51511422232943, -0.3793003567680273,
-0.31691040494948197, -0.2800340666108241, -0.2579165039024929,
-0.23954328535862146, -0.2260144366441068, -0.2153294527292644,
-0.2066109383583239, -0.19931573784245415, -0.1931133998272685,
-0.1877488659117148, -0.18305400817516215, -0.178896342445114,
-0.17518649049739565, -0.17185042997871847, -0.16881906676903213,
-0.1660624772511312, -0.1633991019647283, -0.16122909105945382},
{-0.9244560252841012, -0.515031885650842, -0.379285599868183,
-0.3169208721515133, -0.2800566716495041, -0.25794498143460487,
-0.2395759929799226, -0.22605031401639053, -0.21536750687383233,
-0.2066504176897297, -0.1993562270772884, -0.19315464995889897,
-0.18779068180950276, -0.18309621777899565, -0.1789388237480125,
-0.17522915950166862, -0.17189323251565725, -0.16886195784832125,
-0.16610541820355706, -0.16344201453910046, -0.16127195856017806},
{-0.9241867494652638, -0.5149498157743722, -0.37927109300289885,
-0.31693157679922024, -0.28007950465490694, -0.2579736775269055,
-0.23960891450661848, -0.22608640130479785, -0.21540576840399694,
-0.2066901000189887, -0.19939691617636868, -0.1931960977493361,
-0.18783269284335802, -0.18313861947322607, -0.17898149461080948,
-0.17527201597022213, -0.17193622053181912, -0.1689050325271353,
-0.16614854096133058, -0.1634851068461387, -0.1613150041886513},
{-0.9239176876185411, -0.51486801333769, -0.379256836831928,
-0.31694251953652497, -0.2801025662647305, -0.25800259280029536,
-0.23964205054849685, -0.22612269908256621, -0.2154442378948147,
-0.20672998593124703, -0.1994378057054007, -0.1932377437509274,
-0.1878748995460171, -0.18318121378263186, -0.17902435553477858,
-0.17531506041726175, -0.17197939455382993, -0.1689482912951803,
-0.16619184603479198, -0.16352837935380649, -0.1613582283840458},
{-0.9236488403940939, -0.5147864789823302, -0.37924283201769526,
-0.31695370100339915, -0.2801258571059009, -0.2580317278991231,
-0.23967540168393953, -0.2261592079228194, -0.21548291592304736,
-0.20677007599761055, -0.19947889622096682, -0.19327958850180949,
-0.18791730245430927, -0.18322400124407068, -0.17906740703347168,
-0.17535829336645747, -0.17202275507699483, -0.1689917346465677,
-0.16623533389130785, -0.16357183255769314, -0.16140163157842835},
{-0.9233802084434188, -0.5147052133497425, -0.379229079223677,
-0.31696512184538506, -0.28014937781625804, -0.25806108345133794,
-0.23970896852392798, -0.2261959284096804, -0.21552180308023594,
-0.20681037080919396, -0.19952018829619078, -0.19332163254986767,
-0.18795990210296054, -0.18326698238067252, -0.17911064962490286,
-0.17540171532971272, -0.1720663026315492, -0.16903536309817468,
-0.16627900506696847, -0.16361546698129814, -0.16144521423848346},
{-0.9231117924185099, -0.5146242170857818, -0.37921557911721493,
-0.31697678270927554, -0.28017312903224934, -0.25809066009014714,
-0.23974275165420522, -0.2262328611147666, -0.2155608999342462,
-0.20685087093801258, -0.19956168248819495, -0.19336387643804187,
-0.1880026990209558, -0.18331015772341175, -0.17915408381816178,
-0.17544532684124192, -0.17211003770330535, -0.16907917715187182,
-0.1663228600529294, -0.16365928308829325, -0.16148897679337892},
{-0.9228435929749139, -0.5145434908343987, -0.37920233236741296,
-0.31698868424373927, -0.2801971113956654, -0.25812045846012666,
-0.2397767516915792, -0.2262700066329728, -0.21560020709750916,
-0.20689157697938754, -0.1996033793926415, -0.19340632074352015,
-0.1880456937648205, -0.18335352781815573, -0.17919771015814945,
-0.17548912844156916, -0.1721539608546152, -0.1691231773203299,
-0.16636689936763105, -0.1637032814339534, -0.16153291971377826},
{-0.9225756107684191, -0.5144630352448019, -0.3791893396451087,
-0.3170008270993776, -0.280221325539145, -0.25815047918075607,
-0.23981096923390055, -0.22630736552738995, -0.2156397251154658,
-0.20693248950794896, -0.19964527955582412, -0.19344896600026118,
-0.18808888685848046, -0.18339709320309794, -0.1792415291581051,
-0.17553312062634063, -0.17219807257964703, -0.16916736411721445,
-0.1664111235279222, -0.16374746248959582, -0.16157704344584545},
{-0.9223078464556949, -0.5143828509683885, -0.3791766016217366,
-0.3170132119316804, -0.2802457721097369, -0.2581807229094579,
-0.23984540486972605, -0.226344938405731, -0.21567945461163163,
-0.20697360911935903, -0.19968738356666904, -0.19349181277328853,
-0.18813227885084416, -0.1834408544131918, -0.17928554134320507,
-0.17557730395614612, -0.17224237340144555, -0.16921173803297052,
-0.16645553304635996, -0.1637918267664702, -0.16162134844117304},
{-0.9220403006961675, -0.5143029386586022, -0.37916411897202806,
-0.31702583939002693, -0.2802704517513348, -0.2582111902694635,
-0.2398800592201269, -0.22638272583390062, -0.2157193961355972,
-0.2070149363838425, -0.199729691983066, -0.1935348615861585,
-0.18817587025651505, -0.18348481196602506, -0.17932974721509254,
-0.1756216789144105, -0.17228686382381397, -0.16925629958950594,
-0.16650012840779027, -0.16383637476349122, -0.16166583514350918},
{-0.921772974151267, -0.5142232989685169, -0.37915189237833147,
-0.3170387101386609, -0.2802953651083442, -0.2582418819173995,
-0.23991493289682353, -0.2264207284194697, -0.21575955031141802,
-0.2070564719140009, -0.19977220540496887, -0.193578113043543,
-0.18821966165694448, -0.18352896643941108, -0.17937414733683,
-0.1756662460738312, -0.17233154439963982, -0.16930104930773382,
-0.1665449101764125, -0.16388110700808056, -0.16171050404915377},
{-0.9215058674809029, -0.5141439325548163, -0.3791399225169698,
-0.31705182483108274, -0.2803205128287516, -0.25827279848257945,
-0.23995002648615582, -0.22645894673587463, -0.21579991769871754,
-0.20709821627343672, -0.19981492439990234, -0.19362156767218153,
-0.18826365355980101, -0.18357331835153445, -0.17941874221179432,
-0.1757110059473348, -0.17237641563104944, -0.16934598769404374,
-0.1665898788337472, -0.16392602398963163, -0.16175535557661647},
{-0.9212389813504132, -0.5140648400784187, -0.3791282100683304,
-0.3170651841246297, -0.28034589556159517, -0.25830394061387096,
-0.2399853406248269, -0.22649738139256215, -0.2158404989017697,
-0.20714017007918528, -0.19985784955886743, -0.193665226044601,
-0.1883078465236281, -0.1836178682520142, -0.17946353239224777,
-0.17575595905907448, -0.1724214780411728, -0.16939111526662032,
-0.16663503490974563, -0.16397112624491683, -0.16180039021864445},
{-0.9209723164228478, -0.5139860221966899, -0.3791167557182007,
-0.31707878869246997, -0.2803715139546057, -0.25833530894962564,
-0.24002087590281462, -0.22653603296993197, -0.2158812945044417,
-0.2071823338960712, -0.19990098144918989, -0.1937090887176396,
-0.18835224108744342, -0.18366261668927564, -0.17950851839353277,
-0.1758011059440605, -0.17246673216263275, -0.1694364325299489,
-0.16668037892236498, -0.16401641425744629, -0.1618456084277966},
{-0.9207058733656623, -0.5139074795763179, -0.37910556015205543,
-0.3170926391858302, -0.2803973686653194, -0.2583669041430312,
-0.2400566329458229, -0.22657490206958641, -0.21592230510177046,
-0.20722470833177908, -0.19994432066656032, -0.19375315625987355,
-0.18839683780618088, -0.18370756421117562, -0.17955370077041266,
-0.1758464471364789, -0.17251217852546574, -0.16948194001977868,
-0.16672591140093118, -0.16406188857607162, -0.16189101068536615},
{-0.9204396528471506, -0.5138292128819728, -0.37909462405866634,
-0.3171067362813744, -0.280423460349283, -0.2583987268442911,
-0.2400926123779925, -0.22661398929443521, -0.2159635312799537,
-0.2072672939877407, -0.19998786779805755, -0.19379742923879917,
-0.18844163721030327, -0.18375271135471394, -0.17959908004561953,
-0.17589198316068178, -0.1725578176426552, -0.16952763825685224,
-0.1667716328515212, -0.1641075496779365, -0.16193659745789546},
{-0.92017365553437, -0.5137512227796321, -0.37908394812708934,
-0.317121080642238, -0.2804497896582916, -0.2584307776938033,
-0.24012881479598036, -0.22665329523027822, -0.21600497362507554,
-0.2073100914372219, -0.20003162342160863, -0.19384190821139669,
-0.1884866398453937, -0.18379805867155596, -0.17964465676561758,
-0.17593771456586182, -0.17260365004744926, -0.16957352774159062,
-0.16681754381136216, -0.16415339810455976, -0.16198236921675857},
{-0.9199078821002331, -0.5136735099390819, -0.37907353305172364,
-0.31713567293908795, -0.2804763572505067, -0.2584630573336142,
-0.24016524083882018, -0.22669282049827189, -0.21604663274322888,
-0.20735310129037998, -0.20007558813966853, -0.19388659376335227,
-0.18853184627445785, -0.18384360672220623, -0.17969043147550678,
-0.1759836418785028, -0.1726496762818499, -0.1696196090321962,
-0.16686364480003135, -0.16419943437148277, -0.16202832647746845},
{-0.9196423332170127, -0.5135960750319839, -0.3790633795264,
-0.3171505138476789, -0.2805031637865625, -0.2584955664292181,
-0.24020189110893853, -0.22673256569464684, -0.2160885092141882,
-0.20739632413784648, -0.20011976253459807, -0.19393148646159375,
-0.18857725702218886, -0.18388935604136236, -0.1797364047135943,
-0.17602976564080564, -0.17269589685577103, -0.1696658826151065,
-0.16690993634597362, -0.1642456589964354, -0.16207446969113448},
{-0.9193770095562002, -0.5135189187329274, -0.37905348824787666,
-0.3171656040387347, -0.2805302099294238, -0.25852830563150064,
-0.24023876624767126, -0.22677253142327913, -0.21613060364529701,
-0.20743976057707414, -0.20016414720376474, -0.19397658687222474,
-0.18862287265793043, -0.1839353071900689, -0.17978257702762335,
-0.17607608637791827, -0.17274231231152726, -0.16971234904906396,
-0.16695641896333768, -0.16429207248893363, -0.16212079934297208},
{-0.9191119117973159, -0.513442041719884, -0.3790438599185393,
-0.3171809441928133, -0.2805574963497577, -0.2585612755960085,
-0.24027586687756752, -0.2268127183019999, -0.21617291662178673,
-0.2074834112172539, -0.20020874273720324, -0.1940218955872126,
-0.18866869373869122, -0.18398146072541977, -0.17982894897417623,
-0.17612260463724283, -0.1727889231773645, -0.16975900883369377,
-0.16700309319483608, -0.16433867538754043, -0.16216731595363854},
{-0.9188470406148781, -0.5133654446667322, -0.37903449523196286,
-0.31719653498046796, -0.2805850236972276, -0.25859447696274174,
-0.24031319360577186, -0.22685312692598814, -0.21621544873360676,
-0.20752727662991788, -0.20025354973577691, -0.194067413157768,
-0.18871472078555485, -0.18402781717838934, -0.17987552108189675,
-0.17616932096854043, -0.1728357299851666, -0.16980586251423802,
-0.167049959560444, -0.16438546819256317, -0.16221401999695217},
{-0.918582396687782, -0.5132891282555931, -0.37902539490184495,
-0.31721237709035677, -0.28061279264952077, -0.25862791039517674,
-0.2403507470888826, -0.22689375793592603, -0.2162582005981335,
-0.20757135745347455, -0.2002985687971659, -0.19411314020626946,
-0.18876095437516938, -0.18407437713287322, -0.17992229393956904,
-0.1762162358953958, -0.1728827332749745, -0.16985291063713248,
-0.16709701861617532, -0.1644324514416553, -0.16226091199195025},
{-0.9183179806959743, -0.5132130931685595, -0.3790165596225563,
-0.31722847120289543, -0.2806408038790096, -0.25866157655451616,
-0.24038852793373167, -0.22693461191923348, -0.21630117280727745,
-0.20761565426761308, -0.2003438005189082, -0.19415907730063964,
-0.18880739506232658, -0.1841211411318966, -0.1799692680756948,
-0.17626334998567472, -0.1729299335756025, -0.16990015371794698,
-0.16714427087237027, -0.16447962566621754, -0.1623079924454487},
{-0.9180537933221302, -0.5131373400916459, -0.3790079901102956,
-0.31724481799741966, -0.2806690580396207, -0.25869547609946153,
-0.24042653678210968, -0.22697568950809455, -0.21634436594655426,
-0.207660167666603, -0.20038924549888293, -0.19420522501090431,
-0.18885404339567913, -0.18416810972490794, -0.18001644404867534,
-0.17631066375713544, -0.17297733143544747, -0.1699475922999909,
-0.16719171684729872, -0.16452699137033733, -0.16235526184044602},
{-0.9177898352489677, -0.5130618697129137, -0.3789996870741277,
-0.3172614181657991, -0.28069755582816924, -0.2587296096889986,
-0.24046477427566515, -0.22701699131781083, -0.21638778063075392,
-0.207704898275324, -0.2004349043459399, -0.194251583940229,
-0.1889008999300188, -0.18421528347235494, -0.18006382242575114,
-0.1763581777629213, -0.17302492737914577, -0.16999522689775404,
-0.16723935709575244, -0.16457454906043267, -0.1624027206995038},
{-0.9175261071601852, -0.5129866827204808, -0.37899165122124145,
-0.3172782723910643, -0.2807262978946028, -0.25876397798580797,
-0.24050324103609455, -0.227058517974001, -0.2164314174627009,
-0.2077498466814518, -0.20048077765179073, -0.19429815467543676,
-0.18894796522940283, -0.18426266293226945, -0.18011140376393087,
-0.17640589256978956, -0.17307272196737244, -0.17004305808433173,
-0.16728719215740284, -0.16462229930141348, -0.16245036954097714},
{-0.9172626097446823, -0.5129117798029199, -0.3789838832728094,
-0.3172953813689219, -0.2807552849372996, -0.25879858164006464,
-0.24054193771769405, -0.22710027010637646, -0.21647527703541414,
-0.207795013499549, -0.20052686603639813, -0.19434493781372453,
-0.1889952398666992, -0.18431024867700785, -0.18015918863247293,
-0.17645380870376925, -0.17312071571120669, -0.17009108639234682,
-0.16733522256379274, -0.1646702425845774, -0.16249820888862132},
{-0.9169993436891986, -0.5128371616572167, -0.3789763839393743,
-0.31731274579303204, -0.28078451760930534, -0.2588334213292569,
-0.24058086494201802, -0.22714224832944296, -0.2165193599626889,
-0.20784039932604514, -0.20057317008667042, -0.19439193394430276,
-0.1890427243755255, -0.18435804123905086, -0.18020717758045635,
-0.1765019267320156, -0.17316890916896455, -0.17013931233975654,
-0.16738344883617629, -0.16471837944220624, -0.1625462392443069},
{-0.9167363096822214, -0.5127628289754966, -0.3789691539410853,
-0.31733036634543055, -0.2808139966065255, -0.2588684977094431,
-0.24062002336322053, -0.227184453276152, -0.21656366684868544,
-0.20788600476194574, -0.20061969042563987, -0.19443914366502213,
-0.1890904193386973, -0.18440604120252146, -0.18025537118737134,
-0.17655024718726509, -0.17321730288580284, -0.17018773650306684,
-0.16743187153809913, -0.1647667104113566, -0.16259446115435594},
{-0.9164735084165159, -0.5126887824624475, -0.37896219400036557,
-0.3173482437317148, -0.28084372260690316, -0.2589038114533082,
-0.2406594136159299, -0.22722688558468462, -0.21660819829926936,
-0.20793183042354713, -0.2006664276474055, -0.19448656756836158,
-0.18913832531634966, -0.18445424910495944, -0.18030376999740838,
-0.1765987706372698, -0.17326589738866005, -0.17023635939392534,
-0.16748049118876907, -0.16481523599577486, -0.16264287510875874},
{-0.9162109405847758, -0.5126150228123265, -0.37895550483941065,
-0.31736637865600414, -0.28087369629758996, -0.25893936322563604,
-0.24069903635466972, -0.22726954588441117, -0.2166529549355971,
-0.20797787692615088, -0.20071338237872283, -0.19453420627831974,
-0.18918644287390407, -0.18450266551985806, -0.18035237461720044,
-0.17664749764469434, -0.1733146932466525, -0.1702851815968529,
-0.16752930834582003, -0.16486395673410925, -0.1626914816612839},
{-0.915948606881372, -0.5125415507285993, -0.37894908718271836,
-0.3173847718025229, -0.2809039183539994, -0.2589751536914662,
-0.2407388922275402, -0.2273124348069473, -0.21669793735381404,
-0.20802414486419707, -0.2007605552140035, -0.19458206037819537,
-0.18923477257789045, -0.18455129101602097, -0.18040118558110407,
-0.17669642874210467, -0.17336369098330806, -0.17033420364219864,
-0.16757832354198854, -0.1649128731466476, -0.16274028133256024},
{-0.9156865080014001, -0.5124683669183696, -0.37894294175777077,
-0.3174034238906529, -0.28093438947001914, -0.259011183530248,
-0.24077898187681512, -0.2273555530063902, -0.2167431461990077,
-0.208070634852902, -0.20080794678290204, -0.19463013048726907,
-0.18928331501319917, -0.18460012615508958, -0.18045020349455854,
-0.17674556452527668, -0.173412891170301, -0.17038342607861523,
-0.16762753732456304, -0.16496198576953702, -0.16278927465765491},
{-0.9154246446431955, -0.5123954720854158, -0.3789370692897478,
-0.31742233561254807, -0.28096511032447324, -0.25904745339650503,
-0.24081930595207268, -0.22739890110364058, -0.21678858204509766,
-0.20811734749051425, -0.200855557677869, -0.19467841719475132,
-0.1893320707218038, -0.1846491714811691, -0.18049942889189197,
-0.17679490550625587, -0.17346229433525195, -0.1704328494718652,
-0.16767695023287388, -0.1650112951222127, -0.16283846214798814},
{-0.9151630175070125, -0.512322866944686, -0.37893147052017184,
-0.3174415076796038, -0.2809960816218222, -0.25908396398327227,
-0.24085986512122304, -0.22744247976004317, -0.2168342455530876,
-0.20816428342146764, -0.2009033885363749, -0.19472692112697132,
-0.1893810403121563, -0.18469842757258448, -0.1805488623734277,
-0.17684445229201629, -0.173511901046993, -0.17048247436315478,
-0.1677265628199507, -0.16506080172860038, -0.16288784435494108},
{-0.9149016272937018, -0.512250552203227, -0.378926146173967,
-0.31746094080023113, -0.28102730403892906, -0.2591207159570388,
-0.24090066002244725, -0.22748628961042527, -0.21688013731534284,
-0.20821144321647012, -0.20095143996093157, -0.19477564288678195,
-0.1894302243270829, -0.18474789499049393, -0.18059850449975556,
-0.17689420542700418, -0.17356171184400182, -0.17053230131949704,
-0.16777637563632197, -0.16511050614610667, -0.16293742179647097},
{-0.9146404747051093, -0.5121785285763281, -0.37892109699032517,
-0.3174806356800559, -0.2810587782850007, -0.2591577099778988,
-0.24094169132305865, -0.2275303313113568, -0.21692625797342657,
-0.20825882751688596, -0.20099971257488392, -0.19482458308343098,
-0.18947962336105206, -0.1847975743116308, -0.18064835586096706,
-0.17694416546629554, -0.17361172727925123, -0.17058233088755514,
-0.16782638920341242, -0.16516040887796635, -0.1629871950038364},
{-0.914379560445667, -0.5121067967783688, -0.3789163237065907,
-0.31750059303814737, -0.2810905050340864, -0.259194946738063,
-0.2409829596739428, -0.22757460550286623, -0.2169726081254737,
-0.20830643691613204, -0.20104820698304593, -0.19487374233207788,
-0.18952923797644416, -0.18484746608407931, -0.18069841701338873,
-0.176994332988329, -0.17366194790764666, -0.1706325636267252,
-0.16787660409323735, -0.16521051046981938, -0.16303716452307526},
{-0.9141188852212139, -0.5120353575317722, -0.37891182706073323,
-0.31752081358084183, -0.2811224850028964, -0.2592324269189703,
-0.24102446575022896, -0.22761911285527958, -0.2170191884378596,
-0.20835427205781798, -0.20109692383584843, -0.1949231212522875,
-0.18957906877977848, -0.1848975708937246, -0.1807486885650178,
-0.17704470855829868, -0.17371237430359088, -0.17068300011811743,
-0.1679270208546768, -0.16526081147833338, -0.16308733088328609},
{-0.9138584497400046, -0.5119642115523106, -0.37890760779822585,
-0.31754129803036335, -0.28115471887375065, -0.2592701511802602,
-0.2410662102000174, -0.22766385400004197, -0.2170659995080655,
-0.20840233352200244, -0.2011458637226724, -0.19497272045387604,
-0.1896291163311048, -0.18494788929939432, -0.1807991710725787,
-0.17709529274628721, -0.1737630070148839, -0.17073364090265386,
-0.1679776400375772, -0.16531131242010133, -0.16313769463215522},
{-0.91359825471271, -0.5118933595701662, -0.3789036666628931,
-0.31756204710532643, -0.28118720735864144, -0.2593081202254268,
-0.24110819369735736, -0.22770882961947336, -0.21711304197813774,
-0.20845062195130026, -0.20119502728812222, -0.1950225405572894,
-0.18967938121107863, -0.18499842186679416, -0.18084986512315027,
-0.1771460861147034, -0.17381384657960552, -0.17078448654314116,
-0.16802846217655087, -0.16536201383974003, -0.16318825629173261},
{-0.913338300847272, -0.5118228023048914, -0.3789000044035049,
-0.31758306152693194, -0.28121995116021026, -0.2593463347160423,
-0.24115041691524652, -0.22775404036588043, -0.21716031648153944,
-0.20849913795782982, -0.20124441514496993, -0.195072582182803,
-0.18972986402013703, -0.185049169180445, -0.18090077129255633,
-0.17719708923493727, -0.17386489359006418, -0.17083553761750636,
-0.16807948783610982, -0.16541291628453791, -0.16323901641470684},
{-0.9130785888584114, -0.5117525404877199, -0.3788966217640848,
-0.3176043420183987, -0.2812529509714068, -0.2593847953497459,
-0.2411928805085779, -0.2277994869096176, -0.21720782365670743,
-0.20854788215240205, -0.20129402793494933, -0.1951228459489016,
-0.18978056533404697, -0.1851001318053136, -0.1809518901715137,
-0.17724830269457925, -0.17391614859207039, -0.17088679467161683,
-0.16813071757252374, -0.16546402031303842, -0.1632899755520043},
{-0.9128191194601811, -0.511682574846958, -0.37889351949732486,
-0.31762588929876756, -0.2812862075037401, -0.25942350280536175,
-0.24123558515907462, -0.22784516990239467, -0.21725556413304048,
-0.20859685515708293, -0.20134386626099854, -0.19517333246301405,
-0.18983148574557163, -0.18515131031182364, -0.18100322233919997,
-0.17729972704307784, -0.17396761215383094, -0.17093825829067555,
-0.16818215191790387, -0.16551532645718225, -0.1633411342340878},
{-0.9125598933699735, -0.5116129061199786, -0.37889069836234057,
-0.3176477040991017, -0.28131972147545525, -0.2594624577802733,
-0.24127853155090406, -0.22789109003139174, -0.21730353856153783,
-0.20864605760698396, -0.20139393077940326, -0.1952240423678404,
-0.1898826258394024, -0.185202705279778, -0.18105476837865808,
-0.17735136287382147, -0.1740192848484412, -0.17098992903049748,
-0.16823379145307626, -0.16556683528278882, -0.16339249302825465},
{-0.9123009113035891, -0.5115435350345479, -0.37888815910110907,
-0.3176697871440979, -0.28135349357143014, -0.25950166093889493,
-0.24132172032966537, -0.2279372479399342, -0.21735174756216225,
-0.20869549009310617, -0.20144422209099844, -0.19527497626239665,
-0.18993398620318658, -0.18525431727937303, -0.18110652886963408,
-0.17740321075075371, -0.17407116722995397, -0.17104180746923703,
-0.16828563671714392, -0.16561854734203507, -0.16344405247809846},
{-0.9120421739795717, -0.5114744623319325, -0.378885902486644,
-0.317692139176728, -0.28138752452477434, -0.2595411129895524,
-0.24136515219748844, -0.22798364433757, -0.21740019179821957,
-0.20874515326559617, -0.20149474086173313, -0.19532613479390193,
-0.1899855674426476, -0.18530614690388347, -0.18115850441017756,
-0.1774552712475952, -0.17412325988607336, -0.17109389418288856,
-0.16833768826768392, -0.16567046319585188, -0.16349581314199213},
{-0.9117836821239109, -0.5114056887520917, -0.3788839292644752,
-0.3177147609135602, -0.28142181503605457, -0.25958081460703397,
-0.24140882782970152, -0.2280302798809828, -0.2174488719009844,
-0.20879504773833446, -0.2015454877031857, -0.19537751858359798,
-0.19003737014747912, -0.18535819472532467, -0.18121069559458647,
-0.17750754496665877, -0.17417556337608175, -0.17114618972846074,
-0.16838994666733242, -0.16572258341790302, -0.16354777558353817},
{-0.9115254364546104, -0.5113372150337341, -0.3788822402050869,
-0.3177376530935021, -0.28145636580819655, -0.25962076649594223,
-0.24145274789944438, -0.22807715525200933, -0.21749778852552026,
-0.20884517412417836, -0.20159646326999336, -0.19542912823192182,
-0.19008939491794763, -0.18541046132804695, -0.18126310299203396,
-0.17756003246086038, -0.1742280782875696, -0.17119869469706828,
-0.1684424124662769, -0.1657749085593423, -0.16359994035724412},
{-0.9112674376995926, -0.5112690419311434, -0.37888083607151657,
-0.31776081646378884, -0.2814911775869007, -0.2596609693500227,
-0.24149691310873322, -0.22812427113692024, -0.21754694229863958,
-0.20889553307367237, -0.20164766818049884, -0.19548096438086304,
-0.1901416423424962, -0.18546294728287194, -0.18131572719374844,
-0.1776127343031817, -0.174280805180274, -0.17125140964009233,
-0.1684950862170922, -0.16582743917848575, -0.16365230800585095},
{-0.9110096865836539, -0.5112011701828862, -0.37887971762586403,
-0.3177842517538636, -0.28152625106957885, -0.2597014238616282,
-0.24154132412675722, -0.22817162821851866, -0.21759633389294208,
-0.2089461252034539, -0.20169910308118233, -0.19553302765717717,
-0.19019411303048628, -0.18551565318847452, -0.18136856879687002,
-0.17766565111122645, -0.17433374463672635, -0.1713043351567194,
-0.16854796849816012, -0.16588017588497905, -0.1637048791242819},
{-0.9107521838361379, -0.5111336005377893, -0.37887888564435457,
-0.3178079597148269, -0.28156158698175204, -0.2597421307179957,
-0.24158598166044953, -0.22821922719035115, -0.21764596394072555,
-0.20899695112788663, -0.20175076862159358, -0.19558531869085982,
-0.19024680758485601, -0.18556857963966422, -0.18142162840285891,
-0.177718783437399, -0.17438689724571077, -0.1713574718179416,
-0.16860105985171003, -0.1659331192182094, -0.16375765424606925},
{-0.9104949301879657, -0.5110663337524102, -0.37887834088695627,
-0.31783194107853774, -0.28159718603819783, -0.25978309062517724,
-0.24163088637592978, -0.22826706872606906, -0.21769583310009466,
-0.20904801148907382, -0.20180266542939762, -0.19563783810241375,
-0.19029972660536032, -0.18562172721470915, -0.18147490657980825,
-0.17777213188315955, -0.174440263578731, -0.17141082019554688,
-0.16865436084930252, -0.16598626978094444, -0.16381063396306672},
{-0.9102379263687226, -0.5109993705777072, -0.37887808413216817,
-0.31785619659387976, -0.2816330489617087, -0.25982430427973213,
-0.2416760389852186, -0.22831515353394138, -0.21774594201929176,
-0.20909930690982037, -0.20185479416727503, -0.1956905865134786,
-0.1903528707057376, -0.1856750965014271, -0.181528403946686,
-0.17782569701256534, -0.17449384422945968, -0.17146438086928129,
-0.16870787204800308, -0.16603962814554052, -0.16386381883057766},
{-0.9099811731122145, -0.5109327117732221, -0.37887811615252076,
-0.3178807270106745, -0.2816691764863606, -0.25986577238714403,
-0.24172144017566666, -0.22836348230597991, -0.2177962913514193,
-0.20915083802805157, -0.20190715546988258, -0.19574356455979114,
-0.19040624048756172, -0.1857286881032678, -0.18158212108403404,
-0.17787947943236304, -0.17454763977877974, -0.17151815443236273,
-0.16876159400084134, -0.1660931948997586, -0.16391720942095844},
{-0.909724671154791, -0.5108663580943471, -0.37887843772998053,
-0.3179055330815004, -0.28170556932840896, -0.2599074956489176,
-0.2417670906445153, -0.228412055734168, -0.21784688174781763,
-0.2092026054717735, -0.20195974999137434, -0.19579677287549657,
-0.19045983655439613, -0.1857825026103228, -0.181636058590243,
-0.1779334797225829, -0.1746016508068351, -0.17157214145493072,
-0.16881552728335691, -0.16614697062192363, -0.16397080629764105},
{-0.9094684212339814, -0.5108003103058252, -0.37887904963886854,
-0.31793061555578106, -0.2817422282276141, -0.2599494747584288,
-0.24181299109639554, -0.22846087452862207, -0.217897713861106,
-0.2092546098736534, -0.20201257838368747, -0.19585021208217768,
-0.1905136595353838, -0.18583654063303356, -0.1816902170652952,
-0.17798769847547646, -0.1746558779178713, -0.17162634253452325,
-0.16886967245852702, -0.16620095591554218, -0.1640246100471927},
{-0.9092124240874, -0.5107345691707792, -0.3788799526614639,
-0.3179559751873171, -0.281779153902022, -0.2599917104422218,
-0.24185914222451288, -0.228509939390932, -0.21794878835879672,
-0.2093068518715313, -0.20206564129466642, -0.19590388282159665,
-0.19056771003238282, -0.1858908027614916, -0.18174459711588042,
-0.17804213628579646, -0.17471032170010403, -0.1716807582358797,
-0.16892403009541113, -0.16625515136217928, -0.16407862123406858},
{-0.9089566804563418, -0.5106691354555153, -0.37888114757743097,
-0.31798161272828906, -0.28181634708028014, -0.26003420338341243,
-0.24190554472906456, -0.2285592510094716, -0.21800010587639918,
-0.20935933209091218, -0.20211893938011372, -0.19595778569737377,
-0.19062198865265145, -0.18594528959931722, -0.18179919932833855,
-0.17809679371845277, -0.17476498273197194, -0.17173538916307507,
-0.1689786007303269, -0.16630955756289723, -0.16413284043107979},
{-0.9087011910837504, -0.5106040099323366, -0.37888263518149756,
-0.31800752894261564, -0.2818538085098794, -0.2600769543085448,
-0.24195219933378098, -0.22860881011638412, -0.21805166708651313,
-0.20941205118674588, -0.2021724732925918, -0.1960119213712801,
-0.1906764960366445, -0.18600000175604237, -0.18185402431703324,
-0.1781516713950282, -0.1748198616351715, -0.17179023588840892,
-0.16903338497161258, -0.16636417511853097, -0.1641872682137091},
{-0.9084459567145302, -0.5105391933685439, -0.37888441625494806,
-0.31803372459424395, -0.28189153891682395, -0.26011996392844594,
-0.24199910672101055, -0.2286586174049603, -0.21810347264101893,
-0.20946500978220683, -0.20222624369489495, -0.1960662904622268,
-0.19073123278752746, -0.18605493984426857, -0.18190907267853618,
-0.17820676990606898, -0.17487495899189298, -0.17184529901726364,
-0.16908838337155885, -0.16641900463525872, -0.1642419051617594},
{-0.9081909780937565, -0.5104746865392826, -0.37888649159035026,
-0.3180602004389641, -0.2819295390383445, -0.2601632329371171,
-0.2420462676174111, -0.22870867359762315, -0.2181555231957759,
-0.20951820852536684, -0.2022802512435078, -0.1961208935981631,
-0.1907861995303506, -0.1861101044738689, -0.1819643450207309,
-0.1782620898406435, -0.17493027540319872, -0.17190057912512202,
-0.16914359649609878, -0.16647404671385857, -0.1642967518460523},
{-0.9079362559682949, -0.5104104902210622, -0.3788888619803572,
-0.31808695724339486, -0.281967809613235, -0.2602067620600792,
-0.2420936827183766, -0.22875897940082268, -0.21820781940743927,
-0.2095716480446299, -0.20233449659446023, -0.19617573141516687,
-0.19084139688141022, -0.18616549624232448, -0.18201984195036403,
-0.1783176317905486, -0.17498581146674042, -0.17195607679911973,
-0.16919902491008543, -0.1665293019539149, -0.1643518088375231},
{-0.9076817910919175, -0.5103466051949681, -0.37889152821657035,
-0.3181139957714265, -0.282006351377305, -0.26025055201643,
-0.24214135274903015, -0.22880953554013672, -0.2182603619403949,
-0.2096253290062009, -0.20238898042077835, -0.19623080456221942,
-0.1908968254795127, -0.18622111579350076, -0.18207556408674463,
-0.17837339636508887, -0.17504156780069025, -0.17201179265202882,
-0.1692546691938901, -0.16658477098559388, -0.16440707674047417},
{-0.9074275842139485, -0.5102830322427678, -0.3788944910966734,
-0.3181413168040308, -0.2820451650821667, -0.2602946035193554,
-0.24218927842119342, -0.22886034271976996, -0.21831315144430619,
-0.20967925202631932, -0.20244370336791917, -0.19628611363970094,
-0.19095248592930147, -0.1862769637115207, -0.18213151201416622,
-0.1784293841438398, -0.17509754498883012, -0.1720677272489297,
-0.16931052990599937, -0.16664045439108577, -0.1644625560961117},
{-0.9071736360869807, -0.5102197721452342, -0.3788977514253986,
-0.3181689211033074, -0.28208425146280547, -0.260338917284173,
-0.24223746044265226, -0.22891140167172352, -0.2183661885874244,
-0.2097334177757375, -0.2024986661137973, -0.19634165931660164,
-0.191008378872084, -0.1863330406435466, -0.18218768638439542,
-0.17848559575668332, -0.17515374365041225, -0.17212388119628486,
-0.16936660765003353, -0.16669635280914008, -0.16451824751476352},
{-0.9069199474663776, -0.5101568256907854, -0.37890130999383587,
-0.31819680944150264, -0.282123611272624, -0.26038349403197003,
-0.242285899544612, -0.22896271312202998, -0.2184194740304406,
-0.20978782689570608, -0.20255386932274178, -0.19639744222769195,
-0.19106450494700766, -0.1863893472200857, -0.18224408777740564,
-0.17854203179302885, -0.17521016439923187, -0.17218025509657764,
-0.16942290297350837, -0.16675246685247203, -0.16457415157378819},
{-0.9066665191116385, -0.510094193666788, -0.37890516760998594,
-0.31822498260214616, -0.2821632452530025, -0.2604283344855389,
-0.2423345964369048, -0.22901427779152073, -0.21847300842688355,
-0.2098424800337284, -0.202609313659309, -0.19645346300075062,
-0.19112086476997092, -0.1864458840551606, -0.18230071682592097,
-0.17859869285501873, -0.17526680784038717, -0.17223684952244867,
-0.16947941645895526, -0.1668087971400496, -0.16463026886219723},
{-0.9064133517804578, -0.5100318768700447, -0.3789093250801443,
-0.31825344135543787, -0.28220315414776564, -0.2604734393709407,
-0.242383551831864, -0.22906609640153874, -0.2185267924398886,
-0.2098973778390132, -0.20266499979555874, -0.1965097222600889,
-0.19117745897551686, -0.18650265175904224, -0.18235757414612408,
-0.17865557954843325, -0.17532367457533837, -0.17229366509116062,
-0.1695361486758884, -0.16686534428032473, -0.16468659995223334},
{-0.9061604462347361, -0.5099698760920148, -0.3789137832179108,
-0.3182821864943435, -0.2822433387219405, -0.2605188094154869,
-0.24243276647919743, -0.22911816969627807, -0.21858082672889623,
-0.20995252097429784, -0.2027209283921252, -0.19656622067952867,
-0.19123428819580113, -0.18655965099503646, -0.18241466035095755,
-0.17871269248280441, -0.17538076523220525, -0.17235070238029948,
-0.1695931002147404, -0.16692210891449122, -0.16474314543035007},
{-0.905907803236488, -0.5099081921285915, -0.37891854281610904,
-0.318311218779769, -0.28228379970963147, -0.26056444533708145,
-0.24248224107466854, -0.22917049837479908, -0.2186351119510732,
-0.21000791006952113, -0.20277710011600902, -0.19662295886115544,
-0.1912913530708238, -0.18661688236733198, -0.18247197606501686,
-0.1787700322658452, -0.1754380804126754, -0.1724079620001362,
-0.16965027165775837, -0.166979091651001, -0.16479990591335536},
{-0.9056554235505985, -0.5098468257792206, -0.37892360470533504,
-0.31834053902088044, -0.2823245378847332, -0.2606103478671571,
-0.24253197636332402, -0.22922308321039964, -0.21868964878655106,
-0.21006354581197684, -0.20283351565348084, -0.19667993748225854,
-0.1913486542326268, -0.18667434652945758, -0.1825295219219356,
-0.17882759951123717, -0.1754956207367968, -0.17246544455235835,
-0.1697076635838357, -0.1670362931141085, -0.16485688196831916},
{-0.9054033079453347, -0.5097857778486059, -0.37892896968844525,
-0.31837014799555163, -0.28236555399661256, -0.26065651773959075,
-0.24258197306349416, -0.22927592490668758, -0.21874443787811515,
-0.21011942884501877, -0.20289017567552037, -0.19673715718141693,
-0.19140619232524614, -0.18673204411567212, -0.1825872985439787,
-0.17888539484192734, -0.1755533868248449, -0.17252315060977708,
-0.16976527657050156, -0.16709371393761785, -0.16491407418698145},
{-0.9051514571862072, -0.5097250491358238, -0.3789346385885324,
-0.31840004648407216, -0.2824068487807381, -0.26070295568243296,
-0.2426322318981704, -0.22932902421268864, -0.21879947990248638,
-0.210175559832237, -0.20294708084975355, -0.1967946185769165,
-0.1914639679819743, -0.18678997575784706, -0.182645306541815,
-0.17894341885204312, -0.1756113792985161, -0.17258108081415457,
-0.16982311119272708, -0.167151354744135, -0.16497148317381516},
{-0.9048998720478494, -0.5096646404571743, -0.37894061221851416,
-0.3184302352906627, -0.28244842303570294, -0.26074966243976405,
-0.24268275361527003, -0.22938238185543014, -0.21885477550154064,
-0.21023193942835405, -0.2030042318324945, -0.19685232232518501,
-0.19152198183866176, -0.18684814210382683, -0.18270354654805487,
-0.17900167215918827, -0.17566959876916144, -0.17263923570436646,
-0.16988116804981246, -0.16720921613926976, -0.1650291095059515},
{-0.9046485532993245, -0.5096045526160822, -0.3789468914047802,
-0.318460715202292, -0.28249027749711786, -0.26079663873176173,
-0.24273353894491834, -0.22943599857865138, -0.21891032536916555,
-0.21028856831588882, -0.20306162933150063, -0.19691026907435116,
-0.19158023454116346, -0.18690654379406624, -0.18276201921645452,
-0.179060155409843, -0.17572804586603752, -0.17269761594462807,
-0.1699394477211058, -0.16726729877399293, -0.16508695380019844},
{-0.9043975017168293, -0.5095447864242999, -0.3789534769686327,
-0.318491487017468, -0.28253241293995757, -0.2608438853000621,
-0.24278458860470664, -0.22948987511722407, -0.21896613014689592,
-0.2103454471510986, -0.20311927400115337, -0.19696845947675,
-0.19163872672908155, -0.18696518147055485, -0.18282072514756464,
-0.17911886919472408, -0.17578672120248484, -0.1727562221097969,
-0.16999795079306068, -0.16732560325419854, -0.1651450166253312},
{-0.9041467180768734, -0.5094853427004296, -0.37896036973182845,
-0.31852255153887654, -0.2825748301146973, -0.2608914028864433,
-0.24283590334232485, -0.22954401222256138, -0.2190221905125327,
-0.21040257659473127, -0.2031771665215274, -0.19702689418471664,
-0.1916974590509426, -0.18702405578460457, -0.18287966499627828,
-0.17917781416139178, -0.1758456254194698, -0.17281505480281112,
-0.170056677868331, -0.16738413021550969, -0.1652032985959977},
{-0.903896203156421, -0.5094262222598047, -0.3789675705245088,
-0.31855390955647067, -0.28261752979500443, -0.260939192229074,
-0.24288748388875092, -0.22959841062015585, -0.21907850712449317,
-0.21045995733032896, -0.20323530758093966, -0.19708557382392655,
-0.1917564321363443, -0.18708316738133135, -0.18293883939526268,
-0.17923699090277978, -0.1759047591344256, -0.1728741146253583,
-0.17011562952842496, -0.16744288026939103, -0.16526180029109128},
{-0.9036459577363303, -0.5093674259235854, -0.37897508017829296,
-0.31858556188282705, -0.2826605127569053, -0.2609872540742231,
-0.24293933098311982, -0.22965307105454258, -0.21913508065080123,
-0.21051759001858272, -0.20329369784269602, -0.19714449906314258,
-0.1918156466505252, -0.18714251691079653, -0.18299824896121208,
-0.17929640007128, -0.17596412298041741, -0.1729334021804334,
-0.17017480636656046, -0.16750185403901696, -0.16532052230598993},
{-0.903395982598056, -0.5093089545145801, -0.37898289952707387,
-0.3186175093205179, -0.28270377977156613, -0.2610355891708025,
-0.2429914453737183, -0.22970799428850341, -0.2191919117626071,
-0.21057547535087906, -0.20335233799931984, -0.19720367054662802,
-0.19187510321677337, -0.1872021050238004, -0.1830578943549881,
-0.179356042296547, -0.17602371757698165, -0.17299291809109718,
-0.1702342089805029, -0.16756105213625005, -0.16537946523743585},
{-0.9031462785295616, -0.5092508088565921, -0.3789910294009644,
-0.31864975267652085, -0.2827473316014846, -0.2610841982414911,
-0.24304382779007483, -0.22976318104656457, -0.21924900112691148,
-0.21063361398370262, -0.2034112287195171, -0.1972630889415541,
-0.1919348024930514, -0.18726193236977906, -0.18311777620044722,
-0.17941591820147096, -0.17608354355718348, -0.17305266295539923,
-0.17029383796545972, -0.1676204752033641, -0.16543862968939038},
{-0.9028968463110516, -0.5091929897820648, -0.3789994706373534,
-0.3186822927685853, -0.28279116902842816, -0.26113308205921726,
-0.24309647898542153, -0.22981863207985498, -0.2193063494187868,
-0.21069200661412424, -0.20347037069592488, -0.19732275488979667,
-0.19199474512998904, -0.18732199962022378, -0.1831778951451497,
-0.17947602842951937, -0.17614360156670728, -0.17311263736741012,
-0.17035369392687016, -0.16768012382254938, -0.16549801623926896},
{-0.9026476867337294, -0.5091354981160237, -0.3790082240695085,
-0.31871513038660737, -0.2828352928126776, -0.2611822413570053,
-0.24314939968428462, -0.22987434812517904, -0.21936395729022706,
-0.21075065390448344, -0.2035297646000913, -0.19738266903101476,
-0.1920549317576956, -0.18738230740706285, -0.18323825183205145,
-0.1795363735875526, -0.1762038922244642, -0.17317284195451066,
-0.17041377744880037, -0.16773999862965638, -0.16555762548375696},
{-0.9023988005885144, -0.5090783346986996, -0.37901729055181477,
-0.31874826636789066, -0.28287970375927785, -0.26123167689814863,
-0.24320259066212202, -0.22993032995486828, -0.21942182543949684,
-0.21080955655236266, -0.20358941113249784, -0.19744283204903468,
-0.1921153630425465, -0.18744285639411373, -0.1832988468963208,
-0.17959695434649348, -0.17626441616812372, -0.1732332773128178,
-0.1704740891457277, -0.16780010023057912, -0.16561745802454197},
{-0.9021501886674912, -0.5090215003615413, -0.3790266709192167,
-0.31878170152398866, -0.28292440262646323, -0.2612813894359931,
-0.24325605264596106, -0.22998657828588875, -0.21947995452273972,
-0.2108687152415314, -0.203649310966739, -0.19750324459175772,
-0.19217603963141983, -0.18750364724854762, -0.18335968097557043,
-0.17965777134378413, -0.17632517403643533, -0.17329394407590826,
-0.17053462963508537, -0.16786042923718014, -0.1656775144524545},
{-0.9019018517631423, -0.5089649959445524, -0.3790363660137075,
-0.3188154366689844, -0.28296939020955847, -0.26133137970646203,
-0.24330978638488432, -0.23004309388073807, -0.21953834521241333,
-0.21092813064836946, -0.20370946477794405, -0.1975639073110642,
-0.19223696216340613, -0.1875646806234954, -0.18342075472747865,
-0.17971882520680538, -0.1763861664605315, -0.1733548428278482,
-0.17059539948166957, -0.1679209862502944, -0.16573779533962352},
{-0.9016537906719293, -0.5089088222869975, -0.37904637668773944,
-0.31884947262733476, -0.2830146672802698, -0.26138164847702683,
-0.24336379263303343, -0.2300998774802565, -0.21959699818546596,
-0.21098780347290358, -0.20376987326903873, -0.19762482087082844,
-0.1922981312874299, -0.1876259571755554, -0.18348206879306872,
-0.17978011658419746, -0.17644739408649457, -0.1734159741916983,
-0.1706563993329837, -0.1679817718824097, -0.16579830129364836},
{-0.9014060061937528, -0.5088529802366395, -0.37905670378822265,
-0.31888381021394707, -0.28306023463090924, -0.2614321965185695,
-0.24341807214193523, -0.23015692985080705, -0.21965591413606944,
-0.21104773440879399, -0.20383053713328536, -0.197685985944986,
-0.19235954768157626, -0.1876874775828128, -0.18354362383746547,
-0.17984164613864095, -0.1765088575652385, -0.17347733879023508,
-0.17071762977906246, -0.16804278675033402, -0.16585903291269233},
{-0.9011584991281154, -0.5087974706395357, -0.3790673481743454,
-0.318918450273344, -0.2831060930536182, -0.26148302458193484,
-0.24347262566885775, -0.23021425171924648, -0.21971509372104947,
-0.2111079241478251, -0.2038914570482575, -0.19774740317632222,
-0.19242121197072493, -0.18774924248180014, -0.1836054204844686,
-0.17990341450234837, -0.17657055751794815, -0.1735389372236682,
-0.17077909143836223, -0.1681040314429083, -0.1659199907760467},
{-0.9009112702756568, -0.5087422943427953, -0.37907831068733344,
-0.3189533936174769, -0.28315224332129674, -0.26153413342120757,
-0.24352745395594866, -0.23027184384272914, -0.2197745376184912,
-0.2111683733697305, -0.20395263370807015, -0.19780907324530972,
-0.1924831248099963, -0.18781125255839015, -0.18366745940483042,
-0.17996542232867796, -0.17663249458496466, -0.17360077012455122,
-0.17084078492223398, -0.16816550656858453, -0.1659811754831253},
{-0.9006643204405407, -0.5086874522002347, -0.37908959219475946,
-0.3189886410832514, -0.2831986862497331, -0.26158552380218225,
-0.24358255777127624, -0.23032970696800703, -0.21983424652557915,
-0.21122908279966168, -0.20401406780234765, -0.19787099680871734,
-0.192545286864231, -0.18787350846838535, -0.18372974123195718,
-0.1800276702834367, -0.1766946694213516, -0.1736628380976981,
-0.1709027108366854, -0.16822721273109664, -0.16604258761753954},
{-0.9004176504324164, -0.5086329450665801, -0.37910119354890526,
-0.31902419350163314, -0.2832454226191885, -0.2616371964965083,
-0.24363793786471888, -0.2303878418568388, -0.21989422111892054,
-0.21129005312553772, -0.20407576003259464, -0.19793317455702208,
-0.19260769878519568, -0.18793601089254253, -0.1837922666347822,
-0.1800901590237345, -0.1767570826687006, -0.1737251417774246,
-0.1709648698105184, -0.16828915053855553, -0.16610422779797318},
{-0.9001712610547372, -0.5085787737973533, -0.3791131156121139,
-0.31906005170571916, -0.28329245321373264, -0.2616891522662286,
-0.24369359499269194, -0.230446249231818, -0.21995446207353098,
-0.2113512850410757, -0.20413771108974288, -0.1979956071199922,
-0.19267036122539594, -0.18799876047819453, -0.18385503625876254,
-0.18015288919434624, -0.1768197349674665, -0.17378768175717596,
-0.17102726245036592, -0.1683513205909435, -0.16616609659189407},
{-0.8999251531245989, -0.5085249392592459, -0.3791253592511623,
-0.31909621654077114, -0.2833397788573393, -0.2617413918924285,
-0.24374952994043042, -0.2305049298730637, -0.22001497009006243,
-0.21141277927108604, -0.20419992168166345, -0.19805829521033047,
-0.19273327484540914, -0.18806175791519308, -0.18391805077118306,
-0.18021586146255686, -0.17688262696856327, -0.17385045867513327,
-0.17108988938861103, -0.16841372347471406, -0.1662281946156554},
{-0.8996793274465631, -0.5084714423053356, -0.3791379253212597,
-0.31913268883275236, -0.28338740032396004, -0.2617939161330014,
-0.24380574342785621, -0.23056388450368104, -0.2200757458428484,
-0.21147453650678472, -0.20426239249030687, -0.19812123947127702,
-0.1927964403063811, -0.1881250038547364, -0.18398131081983138,
-0.18027907649133112, -0.1769457593078414, -0.17391347316578276,
-0.1711527512418911, -0.1684763598159975, -0.16629052247276377},
{-0.8994337848422163, -0.5084182838093341, -0.37915081470487166,
-0.3191694694433522, -0.28343531843839287, -0.2618467257745465,
-0.24386223626993342, -0.23062311389600154, -0.22013679003509878,
-0.21153655747451694, -0.20432512423275284, -0.19818444060535967,
-0.19285985826547858, -0.18818849898627832, -0.18404481706960496,
-0.18034253494755603, -0.1770091326523584, -0.1739767258361553,
-0.17121584863940598, -0.168539230202839, -0.1663530807508664},
{-0.8991885261233392, -0.5083654646349487, -0.3791640282578328,
-0.3192065592006941, -0.2834835339860149, -0.26189982157455916,
-0.24391900919528098, -0.2306826187894444, -0.22019810334938938,
-0.21159884289312458, -0.20438811760436693, -0.19824789927497477,
-0.1929235293945908, -0.18825224397636475, -0.18410857018841398,
-0.18040623751068097, -0.17707274764171643, -0.17404021731243802,
-0.17127918220501215, -0.16860233523573243, -0.16641587006228065},
{-0.8989435521112057, -0.5083129856536175, -0.379177566857436,
-0.3192439589528817, -0.2835320477705352, -0.261953204319866,
-0.2439760629742409, -0.2307423999362186, -0.22025968648580374,
-0.21166139344950352, -0.204451373315635, -0.1983116161552516,
-0.19298745434821285, -0.1883162395065483, -0.18417257083353888,
-0.1804701848226955, -0.17713660491398286, -0.1741039482327551,
-0.17134275256245246, -0.1686656755279614, -0.16647889102165436},
{-0.8986988636261515, -0.5082608477415533, -0.3791914313761424,
-0.31928166955012216, -0.2835808606168655, -0.26200687479723683,
-0.24403339839210503, -0.23080245808193922, -0.22032154012828187,
-0.21172420988256135, -0.20451489206993756, -0.19837559193308607,
-0.19305163378732004, -0.18838048623496206, -0.1842368196475377,
-0.18053437755850155, -0.17720070512200436, -0.17416791920629748,
-0.17140656034069934, -0.1687292516575667, -0.16654214420924518},
{-0.8984544614896492, -0.5082090517761912, -0.37920562269400193,
-0.31931969185077946, -0.2836299733256453, -0.26206083378048106,
-0.24409101621483842, -0.2308627939805774, -0.2203836649968025,
-0.21178729292591925, -0.20457867458679857, -0.1984398272929866,
-0.19311606839056594, -0.1884449848623717, -0.18430131733026656,
-0.18059881642142273, -0.177265048935908, -0.17423213089222145,
-0.17147060617816123, -0.16879306426511675, -0.16660563027824082},
{-0.8982103465288844, -0.5081575986304756, -0.3792201416884211,
-0.31935802670244584, -0.28367938671758, -0.2621150820528442,
-0.24414891721289678, -0.23092340838792325, -0.22044606177462356,
-0.21185064327801229, -0.204642721572327, -0.19850432291997322,
-0.19318075882051744, -0.1885097360552095, -0.18436606453479953,
-0.1806635020470253, -0.17732963698523463, -0.1742965838972168,
-0.17153489071239392, -0.16885711393052816, -0.16666934980867154},
{-0.897966519570474, -0.508106489191249, -0.3792349892327138,
-0.31939667495802837, -0.2837291015848109, -0.262169620391262,
-0.24420710215304098, -0.23098430203845055, -0.220508731164216,
-0.21191426167285954, -0.20470703373536026, -0.19856907949952074,
-0.193245705748609, -0.1885747405047482, -0.18443106192216874,
-0.18072843513766657, -0.17739446993147112, -0.17436127887128805,
-0.1715994145669697, -0.16892140126680033, -0.16673330342592863},
{-0.8977229814436214, -0.5080557243398971, -0.3792501662150869,
-0.3194356374779659, -0.2837791187599237, -0.26222444960217217,
-0.24426557182420083, -0.23104547570397926, -0.22057167388743437,
-0.21197814885050548, -0.20477161181008796, -0.1986340977225609,
-0.19331090985059518, -0.18863999888822036, -0.1844963101765984,
-0.1807936163525028, -0.17745954842814626, -0.17442621644329392,
-0.1716641783852424, -0.16898592687442715, -0.16679749176165615},
{-0.8974797329777857, -0.5080053049661046, -0.3792656735226103,
-0.3194749151236067, -0.28382943906751734, -0.2622795704609189,
-0.24432432699791207, -0.2311069301208022, -0.22063489063793895,
-0.21204230552791614, -0.20483645650244853, -0.198699378272579,
-0.19337637180876754, -0.18870551189564821, -0.18456180996099647,
-0.18085904638860484, -0.17752487314010068, -0.17449139724874385,
-0.1717291828089742, -0.16905069138465478, -0.1668619154087878},
{-0.897236775011379, -0.5079552319594427, -0.37928151204079086,
-0.31951450875234855, -0.28388006331317683, -0.26233498376296893,
-0.24438336845292952, -0.23116866603925246, -0.22069838212701143,
-0.2121067324571868, -0.20490156854606312, -0.1987649218439742,
-0.19344209228472664, -0.18877128020557166, -0.18462756194696794,
-0.1809247259092217, -0.17759044469636365, -0.1745568219336633,
-0.17179442847367454, -0.16911569538820004, -0.16692657499868346},
{-0.8969941083755657, -0.5079055062102782, -0.3792976826586596,
-0.31955441924077377, -0.283930992329374, -0.2623906903025386,
-0.24444269697528398, -0.2312306842222256, -0.22076214906797986,
-0.21217143036972175, -0.20496694866261578, -0.19883072915240518,
-0.19350807197804443, -0.18883730451454994, -0.18469356682203397,
-0.18099065562194028, -0.17765626378354682, -0.17462249113594908,
-0.17185991603361117, -0.16918093950187085, -0.16699147115696178},
{-0.8967517339100652, -0.5078561286199488, -0.3793141862665266,
-0.3195946474492928, -0.2839822269389174, -0.2624466908783347,
-0.24450231334526507, -0.23129298541670096, -0.2208261921825283,
-0.2122364000019843, -0.20503259757441583, -0.19889680087027273,
-0.19357431156680605, -0.18890358551868758, -0.18475982525535528,
-0.18105683618597368, -0.17772233104057023, -0.1746884054915654,
-0.17192564612668093, -0.1692464243442373, -0.16705660450446658},
{-0.896509652452977, -0.5078071000793898, -0.3793310237550429,
-0.3196351942297895, -0.28403376795284885, -0.2625029862699648,
-0.2445622183332148, -0.23135557036096088, -0.22089051217614042,
-0.21230164209498525, -0.20509851602673734, -0.1989631376971488,
-0.19364081172165015, -0.18897012389231804, -0.18482633792496017,
-0.1811232682946411, -0.17778864712454379, -0.17475456565631475,
-0.17199161938390262, -0.1693121505351769, -0.16712197565379938},
{-0.8962678648508415, -0.5077584214950548, -0.37934819603313485,
-0.3196760604804183, -0.2840856162289356, -0.262559577312345,
-0.24462241275881524, -0.2314184398385919, -0.2209551097870417,
-0.21236715740542422, -0.20516470475456572, -0.19902974035221632,
-0.193707573150391, -0.18903692034558617, -0.1848931055109233,
-0.1811899526424554, -0.17785521270923255, -0.1748209722721299,
-0.17205783647682438, -0.1693781186971819, -0.16718758524467603},
{-0.8960263719449415, -0.5077100937701857, -0.3793657039882703,
-0.31971724706014015, -0.28413777257736683, -0.26261646478354805,
-0.24468289737438909, -0.23148159458173723, -0.22101998573623405,
-0.21243294667908685, -0.20523116448373457, -0.19909660953197772,
-0.19377459654452878, -0.18910397557056058, -0.18496012871599987,
-0.18125688992614641, -0.17792202844447047, -0.17488762599259644,
-0.17212429806437513, -0.16944432945547305, -0.1672534338917444},
{-0.8957851745822722, -0.5076621178045855, -0.379383548520849,
-0.3197587548499996, -0.28419023784630326, -0.2626736494852935,
-0.24474367298972766, -0.23154503534300375, -0.22108514074187724,
-0.21249901066460097, -0.20529789595502734, -0.19916374593145747,
-0.1938418825887993, -0.18917129027460078, -0.18502740819934616,
-0.18132408081709173, -0.17798909498532112, -0.1749545274597608,
-0.17219100476057747, -0.1695107834295868, -0.16731952222227164},
{-0.895544273611506, -0.5076144945133478, -0.37940173053164017,
-0.31980058472660744, -0.28424301285281217, -0.2627311322298169,
-0.24480474038222155, -0.23160876287664678, -0.2211505755327039,
-0.2125653501086049, -0.20536489991718554, -0.199231150264211,
-0.19390943197242905, -0.1892388651467627, -0.18509494465706666,
-0.18139152602043396, -0.17805641299270292, -0.17502167732118323,
-0.17225795724647242, -0.16957748124440286, -0.1673858508562489},
{-0.8953036698854078, -0.5075672248079286, -0.3794202509354534,
-0.31984273756566495, -0.28429609844562265, -0.2627889138365731,
-0.24486610035620515, -0.2316727779588632, -0.2212162908551818,
-0.2126319657996305, -0.20543217712690875, -0.1992988232448738,
-0.19397724541892103, -0.18930670089690693, -0.1851627388000452,
-0.18145922622733224, -0.17812398315339806, -0.17508907625938264,
-0.172325156165698, -0.16964442356112386, -0.16745242044390807},
{-0.8950633642530477, -0.507520309597254, -0.37943911062973257,
-0.3198852142516557, -0.28434949546004873, -0.2628469950979593,
-0.24492775370242725, -0.2317370813125308, -0.22128228742724332,
-0.21269885846379566, -0.2054997283173634, -0.19936676557387045,
-0.1940453236206281, -0.1893747982208538, -0.18523079129346343,
-0.1815271821388933, -0.17819180610973717, -0.17515672489088274,
-0.17239260218559593, -0.16971161098587118, -0.16751923158977888},
{-0.8948233575740403, -0.507473749809435, -0.37945831052746826,
-0.31992801566903495, -0.2844032047390215, -0.26290537684121773,
-0.2449897012025417, -0.23180167371890548, -0.22134856599979003,
-0.21276602888502794, -0.205567554245647, -0.19943497797856935,
-0.19411366728229495, -0.1894431578405147, -0.18529910284752305,
-0.1815953944399098, -0.1782598825222408, -0.1752246239033184,
-0.17246029596805101, -0.16977904417353784, -0.16758628493977312},
{-0.8945836507048739, -0.5074275463572349, -0.3794778515442374,
-0.3199711427101306, -0.28445722713331634, -0.2629640598790388,
-0.24505194366918204, -0.23186655593781325, -0.2214151273215066,
-0.2128334778202543, -0.2056356556710739, -0.19950346116746687,
-0.19418227712066027, -0.18951178045415418, -0.18536767415002942,
-0.1816638638438235, -0.17832821307592894, -0.1752927739515826,
-0.1725282381567581, -0.169846723772082, -0.1676535811257054},
{-0.8943442445066978, -0.50738170016362, -0.3794977345868915,
-0.3200145962632348, -0.2845115634898434, -0.2630230450348563,
-0.2451144819028741, -0.2319317287207241, -0.22148197212732157,
-0.21290120604777485, -0.20570403334949106, -0.19957221586957985,
-0.1942511538522922, -0.18958066678402474, -0.18543650591271899,
-0.18173259105066109, -0.17839679843393697, -0.17536117570352872,
-0.17259642942599385, -0.16991465042593745, -0.16772112077740076},
{-0.8941051398374498, -0.5073362121563321, -0.379517960578454,
-0.32005837720680574, -0.284566214635106, -0.26308233311482354,
-0.2451773166831117, -0.2319971928222344, -0.22154910116057636,
-0.21296921433975058, -0.20577268803714333, -0.1996412427798191,
-0.19432029817073726, -0.18964981752935728, -0.18550559882203288,
-0.18180157674783004, -0.17846563925462533, -0.17542982980478428,
-0.1726648704316176, -0.1699828247876667, -0.1677889045438974},
{-0.8938663375672604, -0.5072910832655282, -0.37953853043833874,
-0.320102486454374, -0.2846211814522235, -0.263141924966078,
-0.24524044883764873, -0.2320629490231454, -0.22161651519593306,
-0.2130375034622034, -0.20584162050818122, -0.1997105426470398,
-0.1943897108176884, -0.18971923341462116, -0.18557495360147414,
-0.1818708216483742, -0.17853473620789373, -0.1754987369387777,
-0.1727335618561483, -0.17005124751182166, -0.16785693304387905},
{-0.8936278385582455, -0.5072463144152266, -0.3795594450723172,
-0.3201469248779176, -0.28467646475712627, -0.2632018213889751,
-0.24530387914165885, -0.2321289980553729, -0.2216842149610443,
-0.2131060741923534, -0.2059108315092999, -0.19978011618235314,
-0.1944593925039726, -0.18978891515013174, -0.1856445709423724,
-0.1819403264524908, -0.1786040899745558, -0.17556789777103177,
-0.17280250435356947, -0.1701199192511922, -0.16792520693326196},
{-0.893389643681445, -0.5072019065467259, -0.37958070542336486,
-0.32019169339938003, -0.2847320654404939, -0.26326202322081826,
-0.2453676084207359, -0.2321953407182491, -0.2217522012421682,
-0.21317492732487153, -0.20598032182130055, -0.1998499641264857,
-0.19452934396878163, -0.18985886345762992, -0.18571445155959054,
-0.18201009188413764, -0.17867370121911108, -0.17563731297246932,
-0.17287169860156837, -0.17018884068983198, -0.16799372685505887},
{-0.893151753806734, -0.5071578605949298, -0.37960231240234066,
-0.3202367929062575, -0.28478798433991415, -0.26332253129601213,
-0.24543163747620156, -0.23226197776438084, -0.22182047477815559,
-0.21324406363027038, -0.2060500922162305, -0.1999200872057827,
-0.19459956593590277, -0.18992907906340406, -0.18578459617020826,
-0.18208011862560625, -0.17874357062424906, -0.17570698321100053,
-0.17294114527641113, -0.17025801247638128, -0.16806249343204627},
{-0.8929141698101546, -0.5071141774961632, -0.3796242669423009,
-0.32028222429204334, -0.2848442223004781, -0.26338334644702854,
-0.2454959670964172, -0.2323289099550152, -0.2218890363429864,
-0.2133134839045283, -0.20612014346249907, -0.19999048613613013,
-0.19467005913014646, -0.18999956268947926, -0.1858550054882926,
-0.18215040739471533, -0.17881369885742515, -0.17577690917477184,
-0.17301084505152176, -0.17032743529767913, -0.16813150734338933},
{-0.8926768925643671, -0.5070708581949077, -0.3796465699743692,
-0.3203279884689323, -0.28490078021286536, -0.26344446950656675,
-0.24556059812141484, -0.23239613806066473, -0.22195788669739613,
-0.21338318891872632, -0.20619047633130094, -0.20006116166581478,
-0.19474082428655493, -0.19007031503684857, -0.18592568021819034,
-0.18222095889507273, -0.17888408659388233, -0.17584709151390143,
-0.1730807985978231, -0.17039710980759537, -0.16820076918384075},
{-0.8924399229488813, -0.5070279036369811, -0.3796692224306639,
-0.3203740863480675, -0.28495765892267855, -0.26350590131880836,
-0.24562553133762322, -0.23246366286377906, -0.2220270266284956,
-0.21345317948754428, -0.2062610916074732, -0.20013211452874202,
-0.19481186214881063, -0.19014133686061996, -0.18599662110290183,
-0.18229177383597062, -0.17895473450846566, -0.17591753094211526,
-0.17315100659618565, -0.17046703669535646, -0.1682702796522335},
{-0.8922032618447986, -0.5069853147713559, -0.3796922252428203,
-0.32042051883712475, -0.28501485930559056, -0.2635676427223643,
-0.24569076757262565, -0.23253148513236965, -0.22209645691492597,
-0.21352345639814985, -0.20633199006817904, -0.20020334545938567,
-0.1948831734538885, -0.19021262887247303, -0.1860678288481381,
-0.18236285294136678, -0.17902564329239112, -0.17598822811663695,
-0.1732214697504446, -0.17053721664080967, -0.16834003936327235},
{-0.8919669101339309, -0.5069430925440201, -0.37971557935304645,
-0.3204672868377543, -0.2850723822136274, -0.2636296945498202,
-0.2457563076231395, -0.2325996056303552, -0.22216617831446683,
-0.21359402043032105, -0.206403172478133, -0.20027485520557775,
-0.1949547589440499, -0.19028419179556977, -0.1861393041852466,
-0.18243419691947338, -0.1790968136181732, -0.1760591837343668,
-0.17329218872401952, -0.1706076503253371, -0.16841004896946288},
{-0.891730868700364, -0.5069012379093749, -0.37973928569007853,
-0.32051439126502146, -0.2851302285183124, -0.2636920576640591,
-0.24582215231384907, -0.23266802515774998, -0.2222361916283262,
-0.2136648724028305, -0.20647463964928647, -0.2003466445083859,
-0.1950266193669563, -0.19035602637046622, -0.18621104784665476,
-0.18250580646696335, -0.17916824617452676, -0.1761303984761753,
-0.17336316422080245, -0.17067833843117342, -0.16848030913286038},
{-0.8914951384324752, -0.5068597518274771, -0.3797633452070954,
-0.3205618330409834, -0.2851883991039017, -0.26375473290585205,
-0.24588830246159432, -0.2327367444793822, -0.22230649762548182,
-0.21373601310375534, -0.20654639233993066, -0.20041871410467138,
-0.19509875547242927, -0.1904281333278277, -0.18628306055899202,
-0.18257768230995453, -0.1792399416472108, -0.1762018730232171,
-0.17343439692308493, -0.17074928165214942, -0.16855082049443126},
{-0.8912597202200061, -0.506818635253552, -0.3797877588434915,
-0.32060961307126945, -0.28524689484032706, -0.2638177211392758,
-0.24595475888935425, -0.23280576437252876, -0.2223770971187946,
-0.21380744334629753, -0.20661843134985247, -0.20049106475579492,
-0.19517116799869427, -0.19050051339007723, -0.18635534304905832,
-0.18264982515705697, -0.1793119007122641, -0.17627360807438208,
-0.1735058875285631, -0.17082048066873767, -0.1686215836999736},
{-0.8910246149548016, -0.5067778891516639, -0.3798125275455675,
-0.32065773229174965, -0.2853057166000781, -0.263881023199815,
-0.24602152242232478, -0.23287508562691528, -0.2224479908770718,
-0.21387916393058504, -0.20669075746775434, -0.20056369719009126,
-0.19524385771376274, -0.1905731672952129, -0.18642789607287114,
-0.18272223573814017, -0.17938412406897442, -0.17634560432395574,
-0.17357763674425541, -0.17089193617630372, -0.16869259941381642},
{-0.8907898235301559, -0.5067375144836603, -0.37983765226468336,
-0.3207061916112366, -0.2853648652563834, -0.26394463995507067,
-0.24608859387052462, -0.2329447090281178, -0.22251917972079127,
-0.21395117567050193, -0.2067633714675594, -0.20063661218387097,
-0.19531682536808148, -0.1906460957920899, -0.1865007203513187,
-0.1827949147605068, -0.17945661240577238, -0.17641786245110325,
-0.1736496452641063, -0.17096364886077708, -0.16876386827703982},
{-0.8905553468436267, -0.5066975122181248, -0.3798631339409724,
-0.3207549919443409, -0.28542434169139597, -0.26400857226070684,
-0.24615597406130973, -0.2330146353634177, -0.22259066442694575,
-0.21402347935816124, -0.20683627416076433, -0.20070981046097813,
-0.19539007170413925, -0.19071929960466605, -0.18657381662728767,
-0.18286786292509305, -0.1795293664096107, -0.17649038316557153,
-0.17372191379240576, -0.1710356194349174, -0.16883539095192646},
{-0.8903211857959263, -0.5066578833265396, -0.3798889735446096,
-0.32080413423659593, -0.2854841467898268, -0.26407282099785334,
-0.2462236638293689, -0.23308486542850915, -0.22266244581510364,
-0.21409607583262869, -0.20690946632743135, -0.20078329280596563,
-0.1954635974991561, -0.19079277946963202, -0.1866471856455405,
-0.18294108097438766, -0.17960238678136875, -0.17656316715778075,
-0.1737944430446987, -0.17110784857044337, -0.1689071680778511},
{-0.8900873412858914, -0.5066186287810694, -0.37991517201822944,
-0.3208536194053977, -0.28554428143871746, -0.26413738701756984,
-0.24629166400012537, -0.23315540001931367, -0.22273452469335098,
-0.2141689658917585, -0.20698294876848422, -0.20085705995938952,
-0.19553740351324223, -0.19086653613288718, -0.18672082815783142,
-0.1830145696191039, -0.1796756742211869, -0.17663621514026318,
-0.17386723373351742, -0.17118033698329782, -0.16897920034324443},
{-0.8898538142185544, -0.5065797495551578, -0.37994173033095535,
-0.32090344838456986, -0.2856047465260758, -0.26420227118825323,
-0.24635997540343624, -0.23322623992322633, -0.22280690186050833,
-0.21424215036086025, -0.20705672226944216, -0.20093111267112818,
-0.19561149049695814, -0.19094057034271827, -0.18679474490863868,
-0.18308832957376353, -0.17974922941311888, -0.17670952778780702,
-0.17394028656178762, -0.17125308535582917, -0.16905148837264505},
{-0.8896206055003404, -0.5065412466246642, -0.3799686494301966,
-0.32095362209122413, -0.2856655429209809, -0.2642674743685802,
-0.24642859887001123, -0.2332973859212757, -0.2228795781367694,
-0.21431563003972087, -0.20713078761815495, -0.20100545171590056,
-0.19568585921592785, -0.19101488283087065, -0.1868689366270928,
-0.18316236155538945, -0.1798230530594651, -0.17678310582124368,
-0.1740136022427805, -0.1713260943834598, -0.16912403284715083},
{-0.8893877160377599, -0.5065031209767028, -0.3799959302920968,
-0.3210041414706666, -0.28572667153258635, -0.2643329974670223,
-0.24649753523590334, -0.23336883885144744, -0.22295255434687533,
-0.21438940576769028, -0.20720514564902714, -0.20108007784790516,
-0.19576051044560927, -0.19108947434926904, -0.18694340410849009,
-0.18323666629476065, -0.17989714588520656, -0.17685694995162748,
-0.17408718151949643, -0.1713993647819052, -0.169196834449167},
{-0.8891551467454519, -0.5064653735944944, -0.38002357387136954,
-0.3210550074674643, -0.2857881332535044, -0.26439884134362046,
-0.2465667853708169, -0.23344059950107976, -0.223025831309144,
-0.21446347837769508, -0.20727979712660272, -0.20115499184254304,
-0.1958354449529338, -0.19116434565086138, -0.18701814807423034,
-0.1833112445214624, -0.17997150857939914, -0.17693106087699562,
-0.17416102510878773, -0.171472897236697, -0.16926989382267266},
{-0.8889228985339628, -0.506428005461629, -0.38005158114239634,
-0.32110622099975217, -0.28584992896344374, -0.26446500687359276,
-0.24663635006714912, -0.23351266867280174, -0.2230994098337078,
-0.21453784866736214, -0.20735474285481814, -0.20123019443497014,
-0.19591066349460107, -0.19123949746546032, -0.18709316929135866,
-0.18338609693984154, -0.18004614183325884, -0.1770054393088003,
-0.17423513372420985, -0.17154669244428078, -0.16934321166303334},
{-0.8886909723179883, -0.5063910175712749, -0.38007995307822284,
-0.32115778302460285, -0.2859120595797435, -0.26453149495131356,
-0.24670623019369486, -0.23358504718561335, -0.22317329077048953,
-0.21461251747916776, -0.20742998363994047, -0.2013056864209375,
-0.19598616685891557, -0.19131493056403315, -0.18716846851759783,
-0.183461224287214, -0.18012104638489745, -0.1770800859553674,
-0.17430950811353796, -0.17162075110536534, -0.16941678865458698},
{-0.888459369019813, -0.5063544109088696, -0.38010869064481767,
-0.32120969447862535, -0.28597452598125983, -0.26459830644580506,
-0.24677642659531784, -0.2336577358418026, -0.22324747493257746,
-0.21468748562995188, -0.20750552028334823, -0.20138146855305195,
-0.19606195580803387, -0.19139064568810227, -0.1872440465120917,
-0.18353662728532072, -0.1801962229272931, -0.17715500154400843,
-0.17438414899271493, -0.17169507391201932, -0.1694906254840589},
{-0.8882280895556391, -0.506318186477074, -0.38013779482002974,
-0.3212619562939949, -0.2860373290695293, -0.2646654422679262,
-0.24684694011040165, -0.233730735462359, -0.22332196316330055,
-0.2147627539590644, -0.20758135357635865, -0.20145754159648277,
-0.1961380311161065, -0.1914666435870913, -0.18731990403244936,
-0.18361230664464756, -0.1802716721791171, -0.17723018676639413,
-0.1744590571092317, -0.17176966156557683, -0.16956472286040025},
{-0.8879971348532365, -0.5062823452695113, -0.3801672665873923,
-0.321314569434378, -0.28610046976541526, -0.2647329033047754,
-0.24691777161439177, -0.23380404686213296, -0.22339675629638123,
-0.21483832329687402, -0.20765748433825593, -0.20153390633157642,
-0.1962143935563745, -0.1915429250246916, -0.18739604185600456,
-0.18368826312104147, -0.18034739485801765, -0.1773056423530761,
-0.17453423319352623, -0.17184451476202867, -0.1696390814738038},
{-0.887766505833838, -0.5062468882826181, -0.3801971069093213,
-0.32136753483752045, -0.2861639489481149, -0.26480069044589527,
-0.24698892193242727, -0.233877670856657, -0.2234718551703736,
-0.21491419446897453, -0.20773391336120994, -0.2016105635119061,
-0.19629104391543706, -0.19161949075396478, -0.1874724607346252,
-0.18376449742066825, -0.1804233916795397, -0.17738136904074508,
-0.17460967799519267, -0.17191963418520118, -0.16971370205897074},
{-0.8875362034273167, -0.5062118165275535, -0.380227316791661,
-0.3214208534596992, -0.28622776755838686, -0.2648688045872518,
-0.24706039194677487, -0.23395160829142014, -0.22354726064497754,
-0.21499036832744878, -0.2078106414592753, -0.20168751393140383,
-0.19636798296698998, -0.1916963415360442, -0.18754916145076095,
-0.18384101028914301, -0.18049966336394618, -0.17745736752732455,
-0.17468539224705637, -0.17199502055649418, -0.1697885853460548},
{-0.887306228565194, -0.5061771310054155, -0.38025789720990133,
-0.32147452625753203, -0.286291926482761, -0.26493724664004503,
-0.24713218250633417, -0.23402585997962433, -0.22362297355124383,
-0.21506684570181278, -0.20788766942428083, -0.20176475835506835,
-0.19644521149649563, -0.19177347813075585, -0.18762614476889894,
-0.18391780245593736, -0.18057621064667728, -0.17753363855467796,
-0.17476137671150127, -0.1720706745466032, -0.16986373204230176},
{-0.8870765821797306, -0.5061428327258, -0.3802888491464387,
-0.32152855417155024, -0.28635642661907923, -0.2650060175039357,
-0.24720429446125536, -0.23410042674777287, -0.22369899473466148,
-0.2151436274314733, -0.2079649980792624, -0.2018422975410772,
-0.1965227302744097, -0.19185090129769833, -0.1877034114584717,
-0.18399487463381092, -0.18065303423827572, -0.17761018285074215,
-0.17483763211663472, -0.1721465968567486, -0.16993914291435885},
{-0.8868472652050627, -0.5061089227014293, -0.38032017359796555,
-0.32158293816604555, -0.2864212689099759, -0.2650751180875659,
-0.24727672870244533, -0.23417530943197562, -0.22377532505453246,
-0.21522071434827694, -0.20804262821548036, -0.20192013228273709,
-0.19660054008789984, -0.1919286117947081, -0.18778096229374341,
-0.18407222755809016, -0.18073013486161926, -0.177687001127822,
-0.17491415922233955, -0.17222278817979486, -0.17001481867913526},
{-0.8866182785804426, -0.50607540194531, -0.3803518715532732,
-0.3216376792042297, -0.28648645425494124, -0.26514454930742204,
-0.2473494860843175, -0.2342505088759026, -0.22385196537044294,
-0.21529810731044563, -0.20812056065432216, -0.2019982633415225,
-0.1966786417245885, -0.19200661041185185, -0.18785879805528793,
-0.1841498619796198, -0.1808075132591398, -0.1777640941514278,
-0.17499095876689807, -0.1722992492065032, -0.17009076012095647},
{-0.8863896232456341, -0.506042271474513, -0.3803839440170975,
-0.32169277824488063, -0.2865519835892769, -0.26521431206282386,
-0.24742256748436375, -0.23432602591446994, -0.22392891654141067,
-0.21537580716005778, -0.20819879620324855, -0.20207669150522634,
-0.1967570359766455, -0.19208489789230043, -0.18793691952470226,
-0.1842277786216755, -0.18088517016047945, -0.17784146263420553,
-0.17506803153526107, -0.17237598063161386, -0.17016696797645636},
{-0.8861613001448063, -0.506009532305967, -0.38041639197234645,
-0.3217482362459805, -0.28661785780076343, -0.26528440727003044,
-0.2474959737746758, -0.23440186138401486, -0.22400617941804057,
-0.21545381473833913, -0.20827733566534334, -0.20215541755379718,
-0.1968357236247016, -0.19216347503169118, -0.18801532747124838,
-0.184305978234363, -0.18096310629982781, -0.17791910732825045,
-0.17514537824581566, -0.1724529831529935, -0.17024344302603822},
{-0.8859333102197979, -0.5059771854640758, -0.38044921643250973,
-0.3218040541745495, -0.28668407783550265, -0.2653548358595117,
-0.24756970582785698, -0.23447801613963293, -0.2240837548719128,
-0.21553213090402323, -0.20835617986551824, -0.20223444225501908,
-0.19691470545444645, -0.1922423425787656, -0.1880940226939174,
-0.1843844615366379, -0.18104132241109028, -0.17799702898565783,
-0.1752229996711776, -0.17253025745691275, -0.1703201860319723},
{-0.8857056544222814, -0.5059452319751188, -0.3804824183949336,
-0.3218602329999385, -0.28675064460844624, -0.26542559875389315,
-0.2476437645454439, -0.23455449103300907, -0.22416164375846392,
-0.2156107564969716, -0.20843532960816447, -0.2023137663921375,
-0.196993982272204, -0.19232150132171455, -0.18817300595196684,
-0.18446322927781011, -0.18111981924630527, -0.17807522832646328,
-0.1753008965657159, -0.1726078042440804, -0.17039719776869333},
{-0.8854783337003198, -0.5059136728622491, -0.3805159988605169,
-0.3219167736872919, -0.2868175590462556, -0.2654966968684107,
-0.2477181507892965, -0.23463128689661517, -0.22423984695052468,
-0.21568969237068814, -0.20851478571040616, -0.2023933907458968,
-0.19707355485610378, -0.1924009520397476, -0.18825227804558153,
-0.18454228219246716, -0.18119859751880085, -0.17815370613362802,
-0.17537906968954076, -0.172685624205144, -0.17047447900023371},
{-0.8852513490094225, -0.5058825091612107, -0.3805499588453358,
-0.3219736772180113, -0.2868848220851419, -0.26556813112853206,
-0.2477928654598145, -0.23470840460964837, -0.22431836532672378,
-0.21576893939260344, -0.20859454898021568, -0.2024733161080121,
-0.19715342401366343, -0.19248069550576474, -0.1883318397655671,
-0.18462162104572144, -0.18127765800443285, -0.17823246314981134,
-0.1754575197984991, -0.17276371803620805, -0.17055203052234447},
{-0.8850247013031662, -0.5058517419014663, -0.380584299363818,
-0.3220309445611065, -0.28695243465057274, -0.2656399024792222,
-0.24786790944978065, -0.23478584501077648, -0.22439719975028538,
-0.21584849841389087, -0.20867462024313, -0.20255354324655173,
-0.19723359053620015, -0.19256073250789996, -0.18841169188482354,
-0.18470124654749043, -0.18135700142039468, -0.17831150012221997,
-0.17553624763860398, -0.17284208642797694, -0.17062985309468104},
{-0.8847983915373732, -0.505821372119243, -0.38061902141140536,
-0.32208857668064184, -0.2870203976619905, -0.2657120118286116,
-0.2479432836340152, -0.2348636089746492, -0.22447635108966324,
-0.21592837029828615, -0.20875500031507954, -0.20263407295163915,
-0.19731405521798706, -0.19264106383690205, -0.18849183520870838,
-0.18478115946459184, -0.1814366285487381, -0.17839081783233723,
-0.17561525399122502, -0.172920730096223, -0.17070794751720086},
{-0.8845724206795751, -0.505791400855486, -0.3806541260245808,
-0.3221465745686487, -0.28708871207459197, -0.26578446014434576,
-0.24801898893991847, -0.23494169736181902, -0.22455582023837906,
-0.216008555899748, -0.20883569001404112, -0.20271490601459163,
-0.197394818874443, -0.19272169026584152, -0.18857227051591963,
-0.1848613605365017, -0.1815165401081913, -0.17847041702225397,
-0.17569453959868042, -0.17299964972829684, -0.17078631455331106},
{-0.8843467896872141, -0.5057618291506856, -0.38068961420941605,
-0.3222049392018107, -0.28715737881987025, -0.2658572483522903,
-0.2480950262463466, -0.2350201110435819, -0.22463560806863825,
-0.21608905609326712, -0.2089166901565136, -0.20279604321945044,
-0.19747588230160318, -0.19280261260081488, -0.18865299860880214,
-0.1849418505245808, -0.18159673687927125, -0.17855029849170023,
-0.17577410523119852, -0.17307884603280854, -0.1708649550180894},
{-0.8841214995274242, -0.5057326580429162, -0.3807254869905137,
-0.3222636715613021, -0.2872263988346617, -0.26593037737779923,
-0.24817139646290798, -0.23509885087804605, -0.22471571545708002,
-0.21616987173337066, -0.20899800155785897, -0.20287748534821048,
-0.19755724630357463, -0.19288383163768685, -0.18873402027713837,
-0.18502263016779352, -0.1816772195866747, -0.17863046298094787,
-0.17585395163399653, -0.17315831969926876, -0.170943869670225},
{-0.8838965511672541, -0.5057038885836391, -0.38076174538821306,
-0.32232277262784237, -0.2872957730521648, -0.26600384817407985,
-0.24824810049835833, -0.23517791774850139, -0.22479614328267417,
-0.2162510037007337, -0.2090796250429321, -0.20295923319645226,
-0.19763891168844339, -0.19296534815180166, -0.18881533630462854,
-0.1851037002151088, -0.18175798900091422, -0.17871091127727823,
-0.1759340795646267, -0.17323807143367276, -0.17102305930842476},
{-0.8836719455796072, -0.5056755218222975, -0.3807983904370076,
-0.3223822433891428, -0.28736550243274905, -0.2660776616918952,
-0.24832513925508692, -0.23525731254079574, -0.22487689245014053,
-0.2163324528717112, -0.2091615614487523, -0.20304128756384898,
-0.19772087927827897, -0.19304716297267532, -0.188896947512319,
-0.18518506144357616, -0.1818390459047805, -0.17879164417428228,
-0.17601448979053202, -0.17331810194991704, -0.17110252473582932},
{-0.8834476837366196, -0.5056475588028206, -0.38083542315519026,
-0.32244208482882186, -0.287435587901939, -0.26615181888638517,
-0.24840251366856592, -0.2353370361196312, -0.2249579638211685,
-0.21641422010350198, -0.20924381158494043, -0.2031236492451285,
-0.19780314987377778, -0.19312927688042691, -0.18897885467339393,
-0.18526671458749888, -0.18192039104053492, -0.17887266243900513,
-0.1760951830679005, -0.17339841195126837, -0.1711822667218712},
{-0.8832237666164531, -0.5056200005917333, -0.3808728445802103,
-0.3225022979537471, -0.2875060304213548, -0.2662263206960347,
-0.24848022461992514, -0.23541708937341355, -0.22503935830746968,
-0.2164963062842844, -0.20932637627146278, -0.2032063190183635,
-0.19788572429365558, -0.19321169069030475, -0.18906105860656908,
-0.18534866041420628, -0.18200202515748742, -0.17895396687003995,
-0.17617616014410942, -0.17347900212388367, -0.17126228608083238},
{-0.8830001951961322, -0.505592848239786, -0.3809106557499149,
-0.32256288374316, -0.2875768309498312, -0.2663011680768932,
-0.2485582730528222, -0.235497473196574, -0.22512107678016946,
-0.21657871229041348, -0.20940925634334917, -0.20328929769237902,
-0.1979686033582766, -0.19329440520692742, -0.18914356009031508,
-0.1854308996936993, -0.1820839490386561, -0.17903555824807427,
-0.1762574217715951, -0.1735598731980872, -0.1713425836065312},
{-0.8827769704573143, -0.5055661028059717, -0.3809488576930562,
-0.3226238431957995, -0.28764799042198774, -0.26637636199052395,
-0.2486366598923837, -0.23557818847791623, -0.22520312013983812,
-0.2166614390058612, -0.2094924526264208, -0.20337258608003594,
-0.1980517878852197, -0.19337742124122315, -0.18922635993226322,
-0.18551343318711133, -0.18216616345381453, -0.17911743737022334,
-0.17633896872121113, -0.17364102586697072, -0.17142316010932745},
{-0.8825540933833622, -0.505539765352438, -0.3809874514575995,
-0.32268517730437907, -0.28771950979569283, -0.2664519033845636,
-0.24871538603667886, -0.23565923610220807, -0.22528548927760994,
-0.21674448731619123, -0.20957596594075767, -0.20345618496577345,
-0.19813527869263226, -0.19346073961207821, -0.18930945893720263,
-0.18559626164000065, -0.18224866916870042, -0.1791996050326361,
-0.17642080171918906, -0.1737224608424981, -0.1715040163841195},
{-0.8823315649638346, -0.5055138369450844, -0.3810264380825288,
-0.32274688707565247, -0.2877913900434237, -0.26652779323882214,
-0.24879445245039733, -0.2357406169735441, -0.2253681850889393,
-0.21682785809520055, -0.20965979713361094, -0.20354009516711358,
-0.19821907661105342, -0.1935443611384926, -0.18939285790833083,
-0.1856793858444803, -0.18233146695729374, -0.17928206202174124,
-0.17650292154922909, -0.173804178831233, -0.17158515324979362},
{-0.8821093861829183, -0.5054883186490429, -0.3810658186030196,
-0.32280897350074156, -0.28786363210207355, -0.2666040325070185,
-0.24887386002882295, -0.23582233198084168, -0.22545120847263433,
-0.21691155224499425, -0.2097439470160225, -0.20362431748446852,
-0.19830318247738887, -0.19362828663861364, -0.18947655764168303,
-0.18576280655997834, -0.18241455759323344, -0.1793648091689306,
-0.17658532893574375, -0.17388618053780647, -0.1716665715253498},
{-0.881887558035487, -0.5054632115376592, -0.38110559408482914,
-0.32287143759782566, -0.28793623695975157, -0.2666806221479874,
-0.2489536097408518, -0.23590438205206965, -0.22553456033631392,
-0.21699557064602004, -0.2098284164349593, -0.20370885273541717,
-0.19838759710859222, -0.19371251694519742, -0.18956055895330337,
-0.18584652457536777, -0.18249794186021973, -0.17944784724534202,
-0.17666802466436593, -0.17396846668094668, -0.17174827203149334},
{-0.8816660815162436, -0.5054385166829434, -0.38114576556341717,
-0.32293428036524574, -0.2880092055731325, -0.2667575631421073,
-0.24903370250228818, -0.23598676807830543, -0.22561824156372268,
-0.21707991421345696, -0.2099132062209037, -0.20379370174487121,
-0.19847232134225123, -0.19379705288531568, -0.18964486264320612,
-0.18593054065837578, -0.18258162054763716, -0.1795311770915191,
-0.17675100947508326, -0.1740510379687521, -0.17183025559569387},
{-0.8814449576212269, -0.5054142351530118, -0.3811863341027788,
-0.32299750280367334, -0.2880825388855328, -0.266834856451851,
-0.24911413924462522, -0.23606949096438257, -0.22570225305759095,
-0.21716458381087023, -0.2099983172008706, -0.20387886531182176,
-0.19855735601663582, -0.19388189528206112, -0.18972946950128744,
-0.18601485556553143, -0.18266559441656227, -0.17961479949786963,
-0.17683428409696944, -0.174133895098862, -0.1719125230341092},
{-0.8812241873509095, -0.5053903680357905, -0.3812273007460476,
-0.3230611059298667, -0.288156237891144, -0.2669125030534474,
-0.2491949209379527, -0.2361525516199663, -0.22578659572405968,
-0.21724958035059672, -0.21008375022159953, -0.20396434425447296,
-0.19864270195489553, -0.19396704495829908, -0.18981438035626752,
-0.186099470100487, -0.18274986426632722, -0.1796987152677616,
-0.17691784932219434, -0.17421703879927009, -0.17199507517966595},
{-0.8810037717075829, -0.5053669164045687, -0.3812686665622209,
-0.3231250907592198, -0.2882303035576683, -0.2669905039283549,
-0.24927604850620355, -0.2362359509799603, -0.2258712704706909,
-0.21733490473866368, -0.21016950611459606, -0.2040501394191665,
-0.19872836001246696, -0.19405250278418862, -0.1898995960075922,
-0.1861843850360856, -0.18283443087597107, -0.17978292523463324,
-0.17700170588415176, -0.1743004697705146, -0.17207791288910812},
{-0.8807837116994506, -0.5053438813482671, -0.38131043261307696,
-0.323189458307354, -0.2883047368628695, -0.26706886004620856,
-0.24935752290463142, -0.23631968994880026, -0.22595627819879383,
-0.21742055786313585, -0.21025558572813452, -0.20413625160125548,
-0.19881433102762003, -0.194138269580435, -0.18998511726647394,
-0.18626960116284863, -0.1829192950579568, -0.17986743020202312,
-0.17708585456790615, -0.17438418873888395, -0.17216103698069674},
{-0.8805640083303388, -0.5053212639473088, -0.38135259995294746,
-0.32325420958642326, -0.2883795387721193, -0.26714757238096354,
-0.24943934508405619, -0.23640376945326125, -0.22604161982161486,
-0.21750654063680486, -0.21034198989713104, -0.20422268167732227,
-0.19890061583799934, -0.1942243461978137, -0.19007094494480725,
-0.18635511928226833, -0.18300445760104367, -0.17995223099239865,
-0.17717029611907265, -0.17446819641372713, -0.1722444483012282},
{-0.8803446626104403, -0.5052990652893925, -0.3813951696561162,
-0.3233193456121626, -0.2884547102692636, -0.2672266419224911,
-0.24952151599001127, -0.23648819041875413, -0.22612729623676842,
-0.2175928539626284, -0.2104287194653125, -0.20430943043635352,
-0.19898721528966234, -0.19431073347794836, -0.19015707985022345,
-0.18644094016059398, -0.18308991929797003, -0.18003732843351372,
-0.17725503129611297, -0.17455249351104385, -0.17232814769749893},
{-0.880125675555405, -0.5052772864667077, -0.381438142788852,
-0.3233848674176443, -0.28853025234417373, -0.26730606965520565,
-0.2496040365917338, -0.23657295378518484, -0.22621330835499975,
-0.21767949873327552, -0.2105157752887976, -0.20439649874242605,
-0.19907413023935305, -0.19439743226394057, -0.19024352278671586,
-0.18652706460477475, -0.1831756809585272, -0.1801227233243594,
-0.17734006088102205, -0.17463708076871853, -0.17241213603290362},
{-0.8799070481800584, -0.5052559285725806, -0.3814815204246429,
-0.32345077602116135, -0.2886061659684742, -0.2673858565734122,
-0.2496869078292434, -0.23665806045926274, -0.2262996570942164,
-0.21776647586784748, -0.21060315820562892, -0.20448388743574242,
-0.19916136151562114, -0.19448444341924187, -0.19033027457777507,
-0.18661349339612343, -0.18326174337346401, -0.18020841650377406,
-0.17742538563140897, -0.17472195889195064, -0.17249641412263372},
{-0.8796887815050809, -0.5052349927013893, -0.3815253036405011,
-0.32351707245169337, -0.28868245214550825, -0.26746600364305095,
-0.2497701306922977, -0.23674351139607097, -0.22638634335032748,
-0.21785378628015906, -0.21069086906732082, -0.20457159734951347,
-0.19924890999857325, -0.19457176779832253, -0.19041733604001365,
-0.1867002273691014, -0.18334810739099794, -0.18029440877973002,
-0.17751100633068972, -0.1748071286172035, -0.17258098283753043},
{-0.8794708765489645, -0.5052144799533096, -0.38156949351321146,
-0.32358375774009573, -0.28875911185195946, -0.26754651186905676,
-0.24985370610329483, -0.2368293075278416, -0.22647336805607665,
-0.21794143086202666, -0.2107789087170886, -0.20465962935338666,
-0.19933677651727066, -0.1946594062506506, -0.1905047079757196,
-0.18678726729092432, -0.1834347737679991, -0.1803807009817433,
-0.17759692375574332, -0.1748925906752561, -0.1726658430062571},
{-0.879253334336795, -0.5051943914249648, -0.3816140911138177,
-0.32365083290596885, -0.2888361460781539, -0.2676273822355597,
-0.24993763505256084, -0.2369154497939121, -0.2265607321003813,
-0.21802941054136227, -0.21086727802713767, -0.2047479842894404,
-0.19942496193328907, -0.1947473596501368, -0.19059239120741722,
-0.18687461397104244, -0.18352174337684346, -0.180467293929496,
-0.17768313867736651, -0.17497834580410654, -0.1727509954969264},
{-0.8790361559005362, -0.5051747282286954, -0.38165909754422955,
-0.323718298995459, -0.288913555831698, -0.26770861574914306,
-0.25002191851746147, -0.23700193913197154, -0.22664843641661037,
-0.21811772622135095, -0.21095597783835274, -0.2048366630257874,
-0.19951346711326323, -0.19483562884596495, -0.19068038655228747,
-0.1869622682231693, -0.1836090170152147, -0.18055418843692905,
-0.17776965188971872, -0.17506439473510227, -0.17283644115929064},
{-0.8788193422637676, -0.5051554914599024, -0.3817045138724211,
-0.32378615704226377, -0.28899134210013244, -0.2677902134111605,
-0.2501065574383574, -0.23708877651000648, -0.22673648191596385,
-0.21820637881870653, -0.21104500901549272, -0.20492566641712529,
-0.19960229290802545, -0.194924214714149, -0.1907686948284777,
-0.1870502308680102, -0.1836965955226333, -0.18064138535567054,
-0.1778564641798539, -0.17515073824262117, -0.17292218083400712},
{-0.8786028944605562, -0.5051366822333421, -0.3817503411971188,
-0.3238544080880388, -0.28906950589566804, -0.2678721761930092,
-0.2501915528013683, -0.23717596285661102, -0.22682486950964176,
-0.2182953692472438, -0.2111343724051835, -0.20501499532019807,
-0.19969144018068619, -0.19501311812439326, -0.1908573168624912,
-0.18713850269432442, -0.1837844797077537, -0.18072888546390686,
-0.17794357634193148, -0.17523737705636222, -0.17300821537128286},
{-0.8783868135259922, -0.5051183016508958, -0.3817965806076131,
-0.32392305316272996, -0.28914804820328754, -0.26795450510320507,
-0.2502769055756744, -0.2372634991223208, -0.22691360011504003,
-0.2183846984225397, -0.2112240688913971, -0.20510465062329786,
-0.199780909786341, -0.19510233993867132, -0.19094625345098848,
-0.18722708452884262, -0.18387267041214272, -0.18081668960564912,
-0.17803098914708926, -0.17532431193495768, -0.17309454561620896},
{-0.8781711005004524, -0.5051003508413032, -0.38184323320012936,
-0.3239920933168605, -0.28922697004310294, -0.2680372011658392,
-0.25036261673955096, -0.23735138628245522, -0.22700267465410207,
-0.21847436727745162, -0.21131409932058887, -0.2051946331993122,
-0.1998707026029365, -0.1951918810405573, -0.19103550545406733,
-0.18731597718078774, -0.18396116849584132, -0.18090479860597952,
-0.17811870342387692, -0.17541154364414524, -0.17318117243075903},
{-0.8779557564207039, -0.5050828309064741, -0.3818903000683349,
-0.3240615296097076, -0.2893062724324409, -0.2681202653800483,
-0.25044868729588643, -0.23743962528874363, -0.22709209406326636,
-0.2185643767069223, -0.21140446457502549, -0.20528494393033725,
-0.1999608195045539, -0.19528174230430295, -0.19112507366065756,
-0.18740518150087837, -0.18404997479058238, -0.18099321327633788,
-0.17820671996344117, -0.1754990729764927, -0.17326809665399878},
{-0.8777407823340013, -0.5050657429709418, -0.38193778231442366,
-0.32413136306286106, -0.28938595634929243, -0.268203698726893,
-0.2505351181670221, -0.23752821707915928, -0.22718185922548173,
-0.21865472763181515, -0.2114951655070172, -0.20537558367811926,
-0.20005126132735995, -0.19537192459137032, -0.19121495891448603,
-0.18749469825650067, -0.1841390901269051, -0.1810819344360084,
-0.17829503955732662, -0.1755869006778994, -0.1733553191273245},
{-0.8775261792839331, -0.5050490881567669, -0.38198568104354536,
-0.32420159475628907, -0.2894660228470798, -0.2682875022326243,
-0.2506219103786975, -0.23761716264931465, -0.2272719710892943,
-0.2187454209872044, -0.21158620298979258, -0.2054665533428306,
-0.20014202897783662, -0.1954624288188711, -0.19130516203841808,
-0.18758452832588546, -0.18422851537991392, -0.18117096289250867,
-0.17838366303305975, -0.1756750275588388, -0.17344284071401717},
{-0.8773119483243761, -0.5050328675847311, -0.38203399735260746,
-0.3242722257264745, -0.2895464729148216, -0.2683716769059856,
-0.2507090648953749, -0.237706462941901, -0.22736243056965577,
-0.2188364576829258, -0.21167757790323094, -0.20555785381998248,
-0.20023312330397403, -0.19555325583286276, -0.19139568385128314,
-0.18767467251115022, -0.18431825139015245, -0.18126029947353572,
-0.1784725911705891, -0.17576345439863417, -0.17353066225177827},
{-0.8770980905015335, -0.5050170823800499, -0.38208273235818524,
-0.32434325702331535, -0.2896273075794511, -0.26845622375554967,
-0.2507965826872578, -0.2377961189256439, -0.22745323859362543,
-0.21892783863984278, -0.21176929111453546, -0.20564948598917,
-0.20032454518604936, -0.1956444065384062, -0.1914865251862352,
-0.187765131634535, -0.184408299010272, -0.18134994499439472,
-0.17856182480664984, -0.17585218199701558, -0.17361878458120827},
{-0.8768846068768141, -0.5050017336767496, -0.3821318871733297,
-0.32441468972677967, -0.28970852787091417, -0.26854114379960947,
-0.2508844647848605, -0.23788613159371153, -0.22754439608502253,
-0.21901956478967577, -0.2118613435167731, -0.20574145075573824,
-0.20041629551252527, -0.1957358818266357, -0.19157768687244925,
-0.1878559065484069, -0.18449865913510166, -0.1814399002584537,
-0.17865136475791132, -0.17594121116309225, -0.17370720857365995},
{-0.8766714985001727, -0.5049868225943328, -0.3821814628990978,
-0.32448652488244534, -0.28979013479550986, -0.2686264380579928,
-0.2509727121251899, -0.2379765018919784, -0.2276359039685758,
-0.219111637043909, -0.2119537359781134, -0.20583374901963225,
-0.2005083751547545, -0.19582768257993166, -0.19166916974927517,
-0.18794699808472615, -0.1845893325996144, -0.18153016609937822,
-0.1787412118274574, -0.1760305427025628, -0.17379593504597324},
{-0.8764587664383043, -0.504972350280326, -0.38223146067241487,
-0.32455876356465296, -0.28987212940984364, -0.2687121075410346,
-0.25106132572983597, -0.23806723082122971, -0.22772776318856813,
-0.2192040563527371, -0.21204646939128224, -0.205926381689153,
-0.2006007849990965, -0.19591980970341183, -0.19176097465617659,
-0.18803840708432062, -0.18468032030489212, -0.18162074332542488,
-0.17883136685554746, -0.17612017744886543, -0.17388496487575367},
{-0.8762464117522484, -0.5049583178655723, -0.38228188159672527,
-0.3246314068454126, -0.2899545127374381, -0.2687981532715753,
-0.2511503065891816, -0.23815831935030474, -0.2278199746521068,
-0.2192968236336128, -0.21213954463570417, -0.20601934966748559,
-0.20069352592162204, -0.19601226407809236, -0.19185310242323794,
-0.18813013438807502, -0.18477162310853146, -0.18171163275792424,
-0.1789218306582825, -0.1762101162191243, -0.17397429889268778},
{-0.8760344355082452, -0.5049447264837568, -0.38233272680434993,
-0.3247044557771801, -0.29003728578959453, -0.26888457626569107,
-0.25123965567138384, -0.2382497684522491, -0.22791253930381572,
-0.21938993979972565, -0.21223296259967128, -0.2061126538683311,
-0.20078659880664418, -0.19610504661199002, -0.19194555387639411,
-0.18822218082016207, -0.18486324188182834, -0.18180283521536467,
-0.17901260405386665, -0.17630035986218218, -0.1740639379436857},
{-0.8758228387759175, -0.5049315772802743, -0.38238399741032936,
-0.3247779114396394, -0.29012044962559, -0.2689713775626501,
-0.25132937400019273, -0.23834157912511955, -0.2280054580747901,
-0.21948340579825754, -0.21232672417676213, -0.20620629520027478,
-0.20088000454802568, -0.1961981581936243, -0.19203832988188196,
-0.18831454724153218, -0.18495517752182877, -0.1818943515064575,
-0.17910368786971276, -0.1763909091964706, -0.1741538828826492},
{-0.8756116226271331, -0.5049188714023671, -0.3824356945564773,
-0.32485177491372497, -0.29020400527531365, -0.26905855818614555,
-0.2514194625421169, -0.2384337523438944, -0.22809873190033159,
-0.2195772225606447, -0.2124208302589068, -0.20630027457775668,
-0.20097374403354706, -0.1962915997387995, -0.19213143125915622,
-0.18840723450199448, -0.1850474308961907, -0.18198618246060505,
-0.17919508294676234, -0.1764817650694681, -0.17424413455154308},
{-0.8754007881361474, -0.5049066099944639, -0.3824878193685777,
-0.3249260472769038, -0.29028795379610983, -0.26914611915202613,
-0.2515099223206789, -0.2385262891102684, -0.2281923617230177,
-0.2196713910217909, -0.212515281763217, -0.20639459291555795,
-0.20106781815070462, -0.1963853721474038, -0.1922248588704747,
-0.1885002434588614, -0.1851400029144088, -0.18207832890550435,
-0.17928679013147075, -0.17657292837100158, -0.17433469379813005},
{-0.8751903363808538, -0.5048947942038922, -0.3825403729783261,
-0.3250007296055628, -0.2903722962162192, -0.2692340614871114,
-0.2516007543123919, -0.23861919040086832, -0.22828634846041496,
-0.21976591212154517, -0.21261007955678224, -0.20648925115864358,
-0.2011622278013192, -0.19647947631852958, -0.19231861355854107,
-0.18859357495955464, -0.18523289445397495, -0.1821707916554942,
-0.17937881021515523, -0.17666439992461846, -0.1744255614515282},
{-0.8749802684441192, -0.5048834251815038, -0.38259335652622894,
-0.3250758229813755, -0.2904570335890071, -0.2693223862356149,
-0.2516919595258287, -0.23871245722767753, -0.2283806930814194,
-0.21986078679276488, -0.21270522457473362, -0.20658425020741333,
-0.2012569738758998, -0.1965739131602504, -0.19241269617185708,
-0.18868722985536124, -0.18532610640329494, -0.18226357154992456,
-0.1794711440937249, -0.1767561806058211, -0.1745167383768944},
{-0.8747705854059404, -0.5048725040806517, -0.382646771143925,
-0.32515132849817974, -0.2905421669703401, -0.2694110944362933,
-0.2517835389791685, -0.23880609056357116, -0.2284753965004711,
-0.21995601597535597, -0.2128007177025779, -0.20667959100705957,
-0.2013520572874654, -0.1966686836021836, -0.1925071075621645,
-0.18878120902996898, -0.18541963967965103, -0.18235666941001227,
-0.17956379257827848, -0.1768482712963646, -0.17460822541801235},
{-0.8745612883564888, -0.5048620320635564, -0.382700617991361,
-0.3252272472373079, -0.2906276974058528, -0.2695001871226168,
-0.25187549363840844, -0.23890009142627378, -0.2285704596839082,
-0.22005160061598872, -0.21289655986583966, -0.20677527446372324,
-0.2014474789200449, -0.19676378852523158, -0.19260184857711238,
-0.18887551331482655, -0.1855134951397872, -0.18245008608789703,
-0.17965675652152413, -0.17694067287141024, -0.17470002339558732},
{-0.8743523783836906, -0.5048520102824909, -0.38275489819551467,
-0.3253035802920863, -0.2907136259710228, -0.2695896653162322,
-0.2519678245424757, -0.2389944608195833, -0.22866588356617967,
-0.22014754168390027, -0.2129927519642365, -0.20687130153442013,
-0.20154323969092047, -0.19685922886742446, -0.19269692009777373,
-0.1889701436112432, -0.1856076737264516, -0.18254382240627365,
-0.17975003678088797, -0.1770333862190796, -0.17479213317346876},
{-0.8741438565770636, -0.5048424399096803, -0.3828096129226424,
-0.3253803287688015, -0.2907999537134742, -0.26967953007658707,
-0.25206053267368134, -0.2390891997352469, -0.22876166908747564,
-0.22024384009739606, -0.2130892949239751, -0.20696767313665987,
-0.20163934050458465, -0.19695500552387557, -0.1927923229610542,
-0.1890651007713018, -0.18570217631952346, -0.18263787921955554,
-0.17984363420293903, -0.1771264122300522, -0.17488455557014504},
{-0.8739357240342827, -0.5048333220969994, -0.3828647633046103,
-0.32545749374151, -0.29088668168662934, -0.2697697824128795,
-0.2521536190363918, -0.23918430917859723, -0.228857817204414,
-0.22034049682798695, -0.2131861896538112, -0.20706439021688539,
-0.20173578225592337, -0.19705111942272424, -0.19288805804040976,
-0.1891603856656161, -0.185797003811615, -0.1827322573717538,
-0.17993754965232256, -0.17721975180074878, -0.17497729144150753},
{-0.8737279818547563, -0.5048246580221303, -0.3829203505176224,
-0.325535076328606, -0.2909738109761406, -0.2698604234217328,
-0.25224708467607115, -0.23927979017094003, -0.2289543288715663,
-0.2204375128245033, -0.21328343708307784, -0.2071614537080677,
-0.20183256588512677, -0.19714757147085038, -0.192984126201452,
-0.1892559991873668, -0.18589215712279383, -0.18282695769056545,
-0.18003178399175113, -0.1773134058126402, -0.1750703416171291},
{-0.8735206311386605, -0.5048164488486577, -0.38297637570536835,
-0.3256130776296118, -0.29106134263935246, -0.2699514541232588,
-0.2523409305597397, -0.23937564371715325, -0.22905120504663046,
-0.22053488904168717, -0.21338103814252918, -0.20725886456250464,
-0.20192969230026847, -0.19724436259735967, -0.19308052831235045,
-0.18935194222092377, -0.1859876371472069, -0.18292198107735658,
-0.18012633807836664, -0.1774073752019376, -0.17516370692840155},
{-0.8733136729897524, -0.5048086957503415, -0.3830328400342182,
-0.3256914987473465, -0.2911492777560625, -0.2700428755522353,
-0.25243515771575176, -0.2394718708440564, -0.22914844667400303,
-0.22063262646690873, -0.21347899375217594, -0.20735662370236696,
-0.20202716241300323, -0.1973414937304483, -0.19317726524712953,
-0.1894482156355366, -0.18608344479082461, -0.1830173283378258,
-0.18022121279398107, -0.17750166086972285, -0.175257388203363},
{-0.8731071085127553, -0.5048013999063983, -0.3830897446620156,
-0.3257703407882673, -0.29123761739271004, -0.2701346887657792,
-0.2525297671565454, -0.23956847253879232, -0.2292460547064934,
-0.22073072604524668, -0.21357730485169668, -0.20745473208813792,
-0.20212497714663868, -0.19743896576079578, -0.19327433786452275,
-0.1895448203433716, -0.18617958094057485, -0.1831130003662338,
-0.1803164089988627, -0.17759626370752812, -0.17535138627351898},
{-0.8729009388222835, -0.5047945624954764, -0.3831470907632024,
-0.325849604862924, -0.2913263626306275, -0.2702268948264077,
-0.2526247598827922, -0.23966544985324845, -0.22934403012391158,
-0.2208291887512246, -0.21367597236951497, -0.20755319066461198,
-0.20222313743596487, -0.1975367796284786, -0.193371747060894,
-0.18964175722453547, -0.18627604651675256, -0.18320899801835822,
-0.18041192759659452, -0.17769118465321299, -0.1754457019929987},
{-0.8726951650307058, -0.5047881846799669, -0.3832048794913021,
-0.32592929207862653, -0.29141551454591763, -0.2703194947813472,
-0.25272013693319195, -0.23976280379099535, -0.22944237386872146,
-0.22092801555925234, -0.21377499725463167, -0.2076520003930682,
-0.2023216442090643, -0.19763493626044237, -0.19346949371413302,
-0.18973902718846603, -0.18637284242856822, -0.18330532215367157,
-0.18050776945489133, -0.17778642461644267, -0.17554033616784182},
{-0.8724897882491405, -0.5047822676665419, -0.38326311203644536,
-0.32600940357156105, -0.2915050742283256, -0.27041248969499065,
-0.2528158992987528, -0.23986053538123997, -0.22954108692573527,
-0.22102720745948545, -0.21387438044069995, -0.20775116220471546,
-0.2024204983969753, -0.1977334365740262, -0.19356757870428964,
-0.1898366311298787, -0.18646996955305895, -0.18340197366592292,
-0.18060393547176545, -0.17788198452660708, -0.17563528962506325},
{-0.8722848096015525, -0.5047768126314622, -0.38332178956994767,
-0.32608994045347117, -0.29159504277600945, -0.2705058806217835,
-0.25291204802272205, -0.23995864566541059, -0.22964017025054773,
-0.22112676543491716, -0.21397412286819417, -0.20785067706384552,
-0.2025197009378985, -0.19783228150248533, -0.1936660029157906,
-0.18993456998362035, -0.18656742881546506, -0.18349895339872546,
-0.18070042654449026, -0.17797786531212978, -0.17573056320350133},
{-0.8720802302100878, -0.504771820767246, -0.38338091326960466,
-0.32617090384547964, -0.2916854212729163, -0.2705996686210028,
-0.25300858410935234, -0.24005713566373288, -0.22973962482399202,
-0.2212266904689386, -0.21407422550998945, -0.20795054593213536,
-0.2026192527649755, -0.19793147196554628, -0.19376476724170288,
-0.19003284464605485, -0.1866652211048745, -0.18359626225731063,
-0.18079724355754934, -0.17807406788966773, -0.17582615772965937},
{-0.8718760511931691, -0.5047672932558385, -0.38344048431184774,
-0.3262522948583637, -0.29177621078929405, -0.2706938547462414,
-0.25310550856835334, -0.2401560063950683, -0.22983945159836594,
-0.2213269835431788, -0.21417468929115557, -0.20805076975665315,
-0.20271915482692293, -0.1980310088877104, -0.19386387256884063,
-0.19013145601968517, -0.18676334731742372, -0.183693901112008,
-0.18089438742924813, -0.17817059318377915, -0.17592207402179838},
{-0.8716722736888585, -0.5047632313055601, -0.3835005038867507,
-0.32633411464195206, -0.29186741245121084, -0.27078844008622127,
-0.25320282245974113, -0.24025525892568567, -0.22993965156268814,
-0.22142764565728612, -0.21427551517712118, -0.20815134950373704,
-0.20281940807751653, -0.19813089321149846, -0.19396331980067316,
-0.19023040505913968, -0.18686180835334198, -0.18379187083621673,
-0.180991859059759, -0.1782674421564252, -0.17601831291148073},
{-0.871468898817767, -0.5047596360952298, -0.38356097317029025,
-0.32641636430338394, -0.29195902732880086, -0.27088342569555834,
-0.2533005267624162, -0.24035489426148615, -0.23004022570250982,
-0.22152867782500607, -0.21437670412962007, -0.20825228614012303,
-0.20292001347320365, -0.19823112586163916, -0.19406310983487174,
-0.19032969268920397, -0.1869606051110395, -0.18389017234522953,
-0.18108965938773736, -0.1783646156969212, -0.17611487521486424},
{-0.8712659277243233, -0.5047565088428314, -0.3836218933737996,
-0.32649904499538707, -0.2920510565554082, -0.2709788126412036,
-0.25339862253309775, -0.24045491348363157, -0.23014117500196107,
-0.22163008106082316, -0.21447825710447432, -0.20835358063038711,
-0.20302097195445867, -0.19833170777320674, -0.1941632435673455,
-0.19042931984716915, -0.18705973849654356, -0.18398880651028549,
-0.18118778931312818, -0.1784621147868961, -0.17621176178340647},
{-0.8710633615391998, -0.5047538507415652, -0.38368326567461963,
-0.32658215785619404, -0.2921435012246434, -0.2710746020007946,
-0.2534971107906472, -0.24055531761308657, -0.2302425004189672,
-0.22173185636165726, -0.214580175066601, -0.2084552339491097,
-0.20312228449762415, -0.19843263987809223, -0.19426372191833252,
-0.19052928746293674, -0.18715920940326214, -0.18408777422666844,
-0.18128624975361163, -0.17855994033493516, -0.1763089734154164},
{-0.8708612014030734, -0.5047516629961137, -0.3837450912793656,
-0.32666570400266437, -0.29223636242249995, -0.2711707948390085,
-0.25359599255483545, -0.24065610769508794, -0.230344202973356,
-0.22183400473682013, -0.21468245898012128, -0.20855724705444345,
-0.20322395204681243, -0.19853392309136098, -0.1943645457785692,
-0.19062959647487787, -0.18725901871459882, -0.18418707640552157,
-0.18138504166785197, -0.17865809328941396, -0.1764065109226749},
{-0.8706594484606001, -0.5047499468180945, -0.3838073713757808,
-0.3267496845851383, -0.2923296412801619, -0.2712673922458748,
-0.2536952688703309, -0.2407572847922097, -0.23044628363481934,
-0.2219365272105165, -0.21478510981046384, -0.20865962091988877,
-0.20332597559297483, -0.19863555837139302, -0.1944657160662473,
-0.19073024784597692, -0.18735916733436397, -0.18428671391626494,
-0.18148416595511208, -0.1787565745817119, -0.17650437516692818},
{-0.870458103858823, -0.5047487034179312, -0.3838701071799733,
-0.3268341007560025, -0.2924233389126698, -0.2713643953042606,
-0.25379494075548337, -0.24085884995338347, -0.2305487434153406,
-0.22203942481115746, -0.21488812854431671, -0.20876235653651065,
-0.20342835609238819, -0.19873754664780563, -0.19456723370382178,
-0.1908312425314307, -0.18745965615681826, -0.18438668768732214,
-0.18158362356967928, -0.1788553851485517, -0.17660256692926168},
{-0.8702571687456668, -0.504747934010993, -0.3839332998900886,
-0.32691895365479695, -0.29251745643460936, -0.27146180507588724,
-0.2538950092580876, -0.24096080423930744, -0.23065158329558244,
-0.2221426985830135, -0.21499151613573986, -0.2088654548640534,
-0.20353109452520357, -0.19883988886090265, -0.19466909960806333,
-0.19093258149297299, -0.18756048609748177, -0.18448699860721263,
-0.1816834154687399, -0.1789545259583747, -0.1767010870449326},
{-0.8700566442741433, -0.5047476398083859, -0.3839969507168348,
-0.3270042444333967, -0.2926119949479471, -0.2715596226659045,
-0.2539954754025189, -0.24106314871045242, -0.23075480430804873,
-0.22224634953630584, -0.21509527357022762, -0.20896891691592145,
-0.20363419188493026, -0.19894258594331404, -0.19477131468732978,
-0.19103426569148496, -0.18766165804663615, -0.1845876475971977,
-0.18178354256940565, -0.17905399793778543, -0.17679993632879132},
{-0.8698565315970939, -0.5047478220338917, -0.3840610608688735,
-0.32708997424123254, -0.2927069555993853, -0.27165784913944435,
-0.25409634023793615, -0.2411658844255271, -0.23085840742857044,
-0.2223503787276968, -0.21519940184117559, -0.20907274364111572,
-0.20373764913711057, -0.19904563883170567, -0.19487387988635874,
-0.19113629608756355, -0.18776317289461986, -0.18468863559019155,
-0.18188400585552245, -0.17915380200861364, -0.1768991156050106},
{-0.8696568318772222, -0.5047484819111787, -0.3841256315674286,
-0.3271761442352954, -0.29280233950532875, -0.2717564856094441,
-0.2541976048158858, -0.2412690124612027, -0.2309623936805565,
-0.2224547871896334, -0.21530390191105653, -0.20917693605235854,
-0.20384146729634267, -0.19914904848360493, -0.1949767961268094,
-0.19123867366403147, -0.18786503155803302, -0.18478996346112808,
-0.18198480625335378, -0.17925393916806343, -0.1769986256977063},
{-0.8694575462760668, -0.5047496206618689, -0.3841906640329853,
-0.3272627555734289, -0.2928981477836601, -0.2718555331606467,
-0.2542992701391995, -0.2413725338697077, -0.23106676406541737,
-0.2225595759663861, -0.21540877475746356, -0.20928149512639038,
-0.20394564732760045, -0.1992528158223763, -0.1950800643153343,
-0.19134139939279748, -0.1879672349376733, -0.18489163215150484,
-0.18208594474060646, -0.17935441031886512, -0.17709846738989654},
{-0.8692586759563312, -0.5047512395146327, -0.38425615948301584,
-0.32734980941501135, -0.29299438158545854, -0.2719549928777951,
-0.25440133730688785, -0.24147644975300864, -0.23117151961525906,
-0.22266474613815035, -0.21551402138425146, -0.20938642186871448,
-0.2040501902492906, -0.1993569418071388, -0.19518368542543385,
-0.19144447426572242, -0.18806978395656415, -0.1849936425943497,
-0.1821874222643487, -0.17945521645265217, -0.17719864153770004},
{-0.8690602220873416, -0.5047533397093389, -0.3843221191434054,
-0.32743730693300677, -0.2930910420313353, -0.2720548658697908,
-0.2545038073320143, -0.2415807611632772, -0.23127666135252412,
-0.22277029873498577, -0.21561964277236711, -0.2094917172801729,
-0.20415509704866963, -0.19946142737688888, -0.1952876603793925,
-0.19154789925562454, -0.18817267951436634, -0.18509599569654256,
-0.18228923979029332, -0.1795563584856268, -0.17729914892237275},
{-0.8688621858375427, -0.5047559224677798, -0.3843885442354349,
-0.32752524926644355, -0.2931881302599777, -0.2721551532160902,
-0.2546066812641925, -0.24168546917923095, -0.2313821902755535,
-0.2228762348245823, -0.21572563991190918, -0.2095973823497843,
-0.20426036874113151, -0.19956627347301037, -0.19539199010102948,
-0.1916516753592532, -0.18827592252216618, -0.18519869243436915,
-0.18239139829853457, -0.17965783739435892, -0.17739999038377618},
{-0.8686645683861514, -0.5047589890374411, -0.3844554360079542,
-0.3276136376112504, -0.29328564741484797, -0.2722558560489574,
-0.25470996018850656, -0.24179057490260902, -0.23148810744095272,
-0.22298255546115797, -0.2158320137858709, -0.20970341808413195,
-0.20436600633280477, -0.19967148105735077, -0.1954966755565124,
-0.191755803565286, -0.18837951391861907, -0.18530173368134228,
-0.18249389875558109, -0.17975965413324957, -0.17750116671504657},
{-0.8684673709086326, -0.5047625406563725, -0.3845227956838926,
-0.3277024731364122, -0.29338359464077257, -0.2723569754660389,
-0.2548136451300138, -0.24189607940633095, -0.23159441387787183,
-0.2230892617372433, -0.2159387654012903, -0.2098098255040668,
-0.20447201084022026, -0.1997770510639043, -0.19560171768023338,
-0.19186028486882378, -0.18848345461839244, -0.1854051204514917,
-0.18259674212845312, -0.17986180967716336, -0.17760267874297142},
{-0.8682705945834073, -0.5047665785633058, -0.38459062450112924,
-0.3277917569998863, -0.29348197308416957, -0.27245851255185016,
-0.2549177371634528, -0.24200198378383675, -0.2317011106146083,
-0.22319635472234722, -0.21604589573752264, -0.20991660559423053,
-0.20457838327934041, -0.1998829844645229, -0.19570711743864422,
-0.19196512027889412, -0.1885877455419518, -0.18550885364271608,
-0.18269992939377744, -0.17996430498806149, -0.17770452727933161},
{-0.8680742405945807, -0.5047711040051581, -0.38465892369737276,
-0.32788149039612335, -0.29358078388531794, -0.27256046843513104,
-0.255022237355945, -0.2421082891104902, -0.23180819867303626,
-0.22330383546380972, -0.2161534058052439, -0.21002375940247475,
-0.20468512464594824, -0.19998928219155232, -0.19581287575670103,
-0.19207031077911552, -0.1886923876278388, -0.18561293422504832,
-0.18280346152334914, -0.18006714102978094, -0.17780671314483243},
{-0.8678783101331646, -0.5047761182404997, -0.38472769453250066,
-0.32797167448808295, -0.2936800282022318, -0.27266284422609033,
-0.25512714674914605, -0.24221499650212763, -0.23191567913352173,
-0.22341170507559127, -0.21626129659404114, -0.21013128791986446,
-0.20479223600591467, -0.20009594521263807, -0.19591899362143295,
-0.19217585738005027, -0.18879738181482253, -0.18571736317602472,
-0.18290733952562732, -0.18017031877360523, -0.1779092371539832},
{-0.8676828043842306, -0.504781622514713, -0.38479693824041306,
-0.3280623104726601, -0.29377970719963287, -0.27276564104869294,
-0.25523246645462905, -0.24232210704877843, -0.23202355302652222,
-0.22351996461185308, -0.21636956910504068, -0.21023919217788034,
-0.20489971835922915, -0.20020297447172197, -0.19602547196723208,
-0.19228176108208572, -0.1889027290357035, -0.18582214142190878,
-0.18301156433966526, -0.1802738392046308, -0.17801210011600688},
{-0.8674877245406947, -0.504787618085345, -0.3848666560753031,
-0.32815339952350087, -0.2938798220191643, -0.27286886002013944,
-0.25533819750449993, -0.2424296218387667, -0.2321318213973882,
-0.22362861517143529, -0.21647822434562158, -0.21034747320101133,
-0.20500757274015768, -0.20031037094668136, -0.19613231177845591,
-0.192388022892942, -0.18900843023919833, -0.18592726997394493,
-0.18311613699501095, -0.1803777033106826, -0.17811530287235655},
{-0.8672930718045961, -0.5047941062077825, -0.38493684929852634,
-0.32824494283272543, -0.293980373839247, -0.27297250224711433,
-0.25544434100248736, -0.24253754199548894, -0.23224048531494645,
-0.22373765785351907, -0.21658726331378375, -0.21045613201573588,
-0.20511580019979192, -0.2004181355913488, -0.19623951401285922,
-0.19249464383386794, -0.1891144863841987, -0.18603274978562467,
-0.18322105845277292, -0.1804819120853267, -0.1782188462555041},
{-0.867098847371409, -0.5048010881452001, -0.38500751916024,
-0.32833694160291316, -0.29408136381067607, -0.2730765688788779,
-0.25555089801923714, -0.24264586860556392, -0.2323495458367688,
-0.2238470937357988, -0.21669668702799072, -0.210565169663937,
-0.20522440175801648, -0.20052626938036155, -0.1963470796566753,
-0.19260162490593302, -0.18922089840737044, -0.1861385818472172,
-0.18332632970145823, -0.1805864665086574, -0.17832273106756702},
{-0.8669050524444799, -0.504808565164808, -0.3850786669225954,
-0.32842939700117313, -0.2941827930998784, -0.2731810610101775,
-0.25565786962931725, -0.24275460277891625, -0.23245900401701647,
-0.2239569239174557, -0.21680649647396422, -0.21067458714702525,
-0.20533337846489985, -0.20063477325032864, -0.19645500965663132,
-0.1927089671044655, -0.18932766725839656, -0.1862447671489349,
-0.18343195174821858, -0.18069136755804038, -0.1784269581592639},
{-0.8667116882316179, -0.5048165385347829, -0.3851502938579756,
-0.32852231024020284, -0.29428466288851496, -0.2732859798027789,
-0.2557652569494735, -0.24286374563649815, -0.23256886093213325,
-0.22406714949295292, -0.21691669268312808, -0.21078438552711987,
-0.20544273135971025, -0.20074364819646462, -0.19656330501186403,
-0.1928166714455415, -0.18943479391538176, -0.18635130667468047,
-0.18353792556507642, -0.18079661625131394, -0.17853152837318476},
{-0.8665187559356582, -0.5048250095218805, -0.38522240122097173,
-0.32861568252451434, -0.2943869743418759, -0.2733913263997465,
-0.2558730610298312, -0.242973298270158, -0.2326791176600409,
-0.22417777156442753, -0.21702727665984867, -0.21089456585184507,
-0.2055524615060449, -0.2008528951823223, -0.19667196671457532,
-0.19292473893972328, -0.1895422793249395, -0.18645820144445224,
-0.18364425216310565, -0.18090221358067993, -0.17863644254151723},
{-0.8663262567801269, -0.5048339794092271, -0.38529499029851877,
-0.3287095150451478, -0.29448972864395273, -0.27349710189241705,
-0.255981282995549, -0.24308326181824214, -0.23278977527104416,
-0.22428879123685874, -0.2171382494115619, -0.2110051291310242,
-0.2056625699444794, -0.2009625151815726, -0.19678099573576446,
-0.19303317060786185, -0.18965012448950347, -0.1865654524262368,
-0.18375093252080887, -0.1810081605519258, -0.17874170152458646},
{-0.8661341919718097, -0.5048434494719345, -0.3853680623552691,
-0.32880380902656725, -0.29459292697492856, -0.27360330746273576,
-0.2560899239497303, -0.2431936373843655, -0.23290083484329216,
-0.22440020961295204, -0.21724961197429593, -0.2111160764401916,
-0.20577305773582566, -0.20107250918044883, -0.19689039307070288,
-0.19314196744932133, -0.18975833034170364, -0.18667306066583933,
-0.1838579676449399, -0.18111445817311278, -0.17884730618811773},
{-0.865942562734773, -0.5048534209851141, -0.38544161868276205,
-0.3288985656425325, -0.294696570499525, -0.27370994423125694,
-0.25619898496353244, -0.24330442607697478, -0.23301229745993624,
-0.2245120277893875, -0.2173613653436064, -0.21122740880332458,
-0.20588392592895843, -0.2011828781334657, -0.19700015971716311,
-0.19325113044931186, -0.18986689785037925, -0.18678102717603906,
-0.1839653585422525, -0.18122110743536268, -0.17895325737947587},
{-0.8657513702867163, -0.5048638952351894, -0.3855156605395109,
-0.32899378611608654, -0.2948006604144666, -0.2738170133470703,
-0.2563084671837146, -0.24341562902128544, -0.23312416421197213,
-0.22462424687375915, -0.21747351055273612, -0.21133912727611914,
-0.20599517558372327, -0.20129362303282505, -0.1971102966800231,
-0.193360660633914, -0.18997582802091983, -0.18688935294750308,
-0.18407310618960082, -0.18132810935958332, -0.1790595559734811},
{-0.865560615857305, -0.5048748735171671, -0.38559018923166377,
-0.32908947168124314, -0.29490519792449277, -0.27392451599496326,
-0.2564183716868911, -0.24352724734853837, -0.23323643620807388,
-0.22473686799258985, -0.21758604862532138, -0.21145123291972823,
-0.2061068077885011, -0.2014047448736278, -0.1972208049747337,
-0.19347055901056365, -0.19008512180965909, -0.18699803904240753,
-0.18418121159112388, -0.18143546494832208, -0.1791662028514338},
{-0.8653703006726801, -0.5048863571174707, -0.3856652060458714,
-0.3291856235262003, -0.2950101842051822, -0.27403245327582226,
-0.256528699610044, -0.24363928217036346, -0.2333491145217863,
-0.22484989225546315, -0.21769898058562376, -0.21156372678046864,
-0.20621882359017718, -0.20151624463943563, -0.19733168560645709,
-0.19358082658288822, -0.19019478022823932, -0.1871070864694957,
-0.18428967577938238, -0.18154317522748897, -0.17927319890975468},
{-0.8651804259669404, -0.5048983473259909, -0.3857407122686709,
-0.32928224289042873, -0.29511562045144046, -0.2741408263739231,
-0.25663945207338656, -0.24375173462055955, -0.23346220028219022,
-0.2249633207651982, -0.21781230747876634, -0.21167660992750825,
-0.20633122406877646, -0.201628123316425, -0.19744293960019377,
-0.1936914643513319, -0.1903048042469777, -0.18721649627195802,
-0.18439849973367473, -0.1816512411843405, -0.17938054502440082},
{-0.8649909929750947, -0.5049108454448401, -0.3858167092007534,
-0.32937933097923633, -0.2952215078602194, -0.2742496364504632,
-0.2567506301724052, -0.24386460581331448, -0.23357569456703686,
-0.22507715464564626, -0.21792603031758517, -0.2117898834086418,
-0.20644401028721404, -0.2017403818986736, -0.19755456796798398,
-0.19380247331105238, -0.1904151948439221, -0.1873262695164044,
-0.18450768445518406, -0.1817596638491068, -0.17948824211123338},
{-0.8648020029315546, -0.5049238527716966, -0.38589319813729617,
-0.3294768890231694, -0.29532784764614917, -0.27435888465475955,
-0.2568622350778469, -0.24397789688998728, -0.23368959850478177,
-0.2251913949933737, -0.21804015015516143, -0.21190354830889646,
-0.20655718334575113, -0.20185302139566375, -0.19766657176433,
-0.19391385447278253, -0.19052595305191744, -0.18743640720606436,
-0.18461723097107097, -0.18186844425338222, -0.17959629108418085},
{-0.8646134570858806, -0.5049373706156643, -0.38597018038700526,
-0.3295749182577765, -0.2954346409978825, -0.27446857218058085,
-0.25697426787735367, -0.24409160896050253, -0.23380391321569505,
-0.22530604294172463, -0.21815466802439687, -0.21201760566333405,
-0.20667074429110244, -0.20196604278771702, -0.19777895199331397,
-0.1940256088263368, -0.19063707984156508, -0.1875469104139711,
-0.18472714026586345, -0.18197758339431402, -0.17970469285160107},
{-0.8644253566741327, -0.5049514002791398, -0.38604765725381185,
-0.32967341990149635, -0.29554188913846247, -0.27457870016178276,
-0.25708672973735247, -0.24420574317736055, -0.23391863980913286,
-0.2254210996292727, -0.2182695849656966, -0.21213205657619483,
-0.20678469422648504, -0.20207944710324455, -0.19789170972558168,
-0.19413773741121076, -0.19074857623576236, -0.18765778016609147,
-0.1848374133658126, -0.18208708229394688, -0.17981344835743585},
{-0.864237702956558, -0.5049659430782754, -0.3861256300515947,
-0.32977239520482726, -0.2956495932693315, -0.27468926980748165,
-0.2571996217823198, -0.2443203006597514, -0.23403377941974668,
-0.22553656613820294, -0.21838490205055905, -0.21224690210095787,
-0.2068990342476127, -0.20219323532745648, -0.19800484599721813,
-0.19425024117890644, -0.19086044321636564, -0.18776901756598363,
-0.18494805126647407, -0.1821969419921743, -0.17992255852186645},
{-0.8640504971712346, -0.5049810003162634, -0.3862041000798513,
-0.3298718453719971, -0.29575775460364184, -0.274800282251249,
-0.2573129451520231, -0.24443528253374325, -0.23414933315513053,
-0.22565244361146597, -0.21850062030290474, -0.21236214330247094,
-0.20701376541842365, -0.20230740847887319, -0.19811836185692755,
-0.19436312116408772, -0.19097268181542404, -0.18788062364342295,
-0.1850590550046718, -0.18230716349535214, -0.18003202430156762},
{-0.8638637405867371, -0.5049965733249451, -0.386283068688158,
-0.3299717716749342, -0.29586637435619423, -0.27491173871078445,
-0.2574267010073754, -0.24455068995064266, -0.23426530217778918,
-0.2257687331658076, -0.21861674078945725, -0.21247778127781203,
-0.20712888883917913, -0.20242196757823194, -0.19823225838030112,
-0.19447637835889964, -0.1910852930503779, -0.18799259944955793,
-0.18517042555606622, -0.18241774783405162, -0.18014184664980348},
{-0.8636774344534786, -0.5050126634148455, -0.38636253716413194,
-0.33007217534873234, -0.29597545376742573, -0.27502364037508187,
-0.25754089047876505, -0.2446665240395305, -0.23438168761470024,
-0.22588543592655697, -0.21873326459262898, -0.21259381711354308,
-0.20724440560428548, -0.20253691363853932, -0.19834653661473567,
-0.19459001377708773, -0.19119827794770572, -0.18810494608669615,
-0.1852821639722606, -0.1825286960699941, -0.18025202652722783},
{-0.8634915800367935, -0.5050292719158165, -0.38644250685678116,
-0.330173057625359, -0.2960849940430421, -0.2751359883843634,
-0.2576555147350632, -0.244782785939492, -0.23449849061063333,
-0.22600255303223094, -0.21885019273457829, -0.21271025184381642,
-0.20736031679064126, -0.2026522476743935, -0.1984611976434394,
-0.1947040284361492, -0.19131163751990243, -0.18821766459780065,
-0.1853942712573371, -0.18264000922476953, -0.18036256491359381},
{-0.8633061785983784, -0.5050464001504338, -0.386522979073618,
-0.3302744197629863, -0.2961949964039263, -0.2752487839762239,
-0.257770574929566, -0.24489947677955115, -0.23461571230541267,
-0.2261200855788843, -0.21896752632414973, -0.21282708662124605,
-0.20747662351953977, -0.20276797073103126, -0.19857624254279926,
-0.19481842332572796, -0.19142537280345095, -0.1883307560655112,
-0.18550674841810633, -0.18275168833690714, -0.1804734628121878},
{-0.8631212314093659, -0.5050640494622485, -0.38660395516996005,
-0.33037626301853606, -0.2963054621006904, -0.27536202832050094,
-0.25788607221829807, -0.2450165977190295, -0.2347333538673979,
-0.22623803472407644, -0.21908526642238257, -0.21294432249788997,
-0.2075933268616268, -0.202884083818617, -0.19869167240892693,
-0.19493319947355303, -0.1915394848535925, -0.18844422157553709,
-0.18561959649832716, -0.18286373446949256, -0.18058472120833358},
{-0.86293673974086, -0.5050822211642298, -0.3866854364603114,
-0.3304785886334116, -0.29641639235057937, -0.2754757226127822,
-0.25800200779019633, -0.24513414988473414, -0.23485141644113128,
-0.22635640157722037, -0.21920341410924493, -0.2130619605682682,
-0.2077104279325681, -0.20300058797170095, -0.198807488315083,
-0.19504835790019115, -0.19165397469964773, -0.18855806217118243,
-0.1857328164842329, -0.18297614867492484, -0.180696341108046},
{-0.8627527048680577, -0.5051009166149356, -0.38676742429328215,
-0.3305813978787455, -0.29652778839937355, -0.27558986808423924,
-0.25811838277275, -0.24525213442882432, -0.23496990119701877,
-0.22647518727529814, -0.21932197047965474, -0.2131800019336083,
-0.207827927826429, -0.20311748423455356, -0.19892369137005517,
-0.19516389961927416, -0.19176884339765365, -0.18867227897078465,
-0.1858464094308374, -0.18308893202220133, -0.1808083235474669},
{-0.862569128071442, -0.5051201371482534, -0.38684992002407625,
-0.3306846920086173, -0.2966396514908638, -0.2757044658948189,
-0.2582351983761555, -0.24537055251272477, -0.2350888093048411,
-0.22659439295517814, -0.21944093661301167, -0.21329844768411022,
-0.20794582765756786, -0.20323477365104736, -0.19904028265716533,
-0.19527982566592073, -0.1918840920089906, -0.1887868730309492,
-0.1859603763546147, -0.1832020855850942, -0.18092066956330655},
{-0.8623860106337702, -0.5051398841050627, -0.3869329249902762,
-0.33078847230046904, -0.2967519828587797, -0.27581951730030596,
-0.2583524557651913, -0.24548940527552077, -0.23520814193494743,
-0.22671401974741912, -0.21956031361150963, -0.21341729893526917,
-0.20806412852823541, -0.20335245726653284, -0.19915726331544192,
-0.1953961370641082, -0.19199972159276513, -0.18890184545023203,
-0.18607471827499467, -0.18331561044089995, -0.18103338018511295},
{-0.8622033538349285, -0.5051601588377252, -0.38701644053423934,
-0.330892739997239, -0.29686478374884473, -0.2759350234543376,
-0.2584701560979852, -0.24560869385533124, -0.23532790026268913,
-0.22683406877740708, -0.21968010256944126, -0.21353655676790595,
-0.20818283151862715, -0.20347053610305466, -0.1992746344136549,
-0.1955128348447488, -0.19211573321058495, -0.18901719730911282,
-0.1861894362232306, -0.1834295076678245, -0.18114645647540328},
{-0.8620211589729365, -0.5051809627051966, -0.3871004680280521,
-0.33099749639575293, -0.2969780554242334, -0.2760509856215094,
-0.2585883005952496, -0.2457284194426279, -0.2354480854717167,
-0.22695454118820635, -0.21980030460753142, -0.2136562223120677,
-0.20830193776191663, -0.20358901125098328, -0.19939239711254686,
-0.1956299200543299, -0.1922321279599828, -0.18913292968738915,
-0.18630453123159896, -0.18354377837795255, -0.18125989949987797},
{-0.8618394273309207, -0.5052022970504026, -0.3871850088065685,
-0.33110274275207985, -0.2970917991185047, -0.27616740501514414,
-0.2587068904002763, -0.24584858316410418, -0.2355686987617105,
-0.2270754381109441, -0.21992092084178694, -0.21377629666847042,
-0.20842144835648924, -0.20370788373406867, -0.1995105525143117,
-0.19574739372524164, -0.19234890690859174, -0.1892490436925982,
-0.18642000432907935, -0.18365842366517882, -0.18137371032082683},
{-0.8616581602132953, -0.5052241632410528, -0.38727006426034905,
-0.33120848035605377, -0.29720601612211794, -0.27628428282315554,
-0.2588259267374724, -0.24596918620909491, -0.2356897413046113,
-0.22719676068425088, -0.22004195237326485, -0.2138967809420933,
-0.20854136441732862, -0.20382715463483692, -0.1996291017438807,
-0.19586525691215684, -0.1924660711594015, -0.18936554039419207,
-0.18653585657636995, -0.1837734446534114, -0.18148789004408172},
{-0.8614773589129641, -0.5052465626346816, -0.38735563573385434,
-0.3313147104942118, -0.29732070766203833, -0.27640162030803594,
-0.25894541079185274, -0.24609022973476158, -0.2358112143181188,
-0.2273185100626165, -0.22016340034434734, -0.21401767627651225,
-0.20866168707107136, -0.20394682501068928, -0.19974804594050966,
-0.19598351067850217, -0.19258362179812138, -0.18948242090459644,
-0.18665208896948116, -0.18388884245553072, -0.1816024397610363},
{-0.8612970247313569, -0.505269496598828, -0.3874417246046846,
-0.3314214344341053, -0.2974358750137185, -0.27651941867407004,
-0.2590653437374044, -0.24621171489633298, -0.2359331189990712,
-0.2274406873600583, -0.22028526586916541, -0.21413898376420093,
-0.20878241740138037, -0.20406689593482952, -0.199867386230153,
-0.19610215604666337, -0.19270155992899163, -0.1895996863216851,
-0.1867687026024214, -0.1840046182031756, -0.1817173605741118},
{-0.8611171589798516, -0.5052929665049533, -0.3875283322358314,
-0.3315286534686379, -0.2975515194415834, -0.2766376791537368,
-0.25918572679859153, -0.24633364287967652, -0.23605545654027082,
-0.22756329372003847, -0.22040755009658142, -0.21426070453946977,
-0.20890355652193193, -0.2041873684481743, -0.19998712375490868,
-0.19622119409712013, -0.19281988665602512, -0.18971733770888477,
-0.18688569846881364, -0.18412077303025853, -0.18183265358379685},
{-0.8609377629684332, -0.5053169737235521, -0.3876154600285986,
-0.33163636890043335, -0.29766764222483744, -0.27675640302391,
-0.2593065611500265, -0.24645601485804036, -0.23617822819039702,
-0.22768633030813135, -0.2205302541623837, -0.21438283973714078,
-0.2090251055740282, -0.2043082436655368, -0.2001072596577842,
-0.19634062589398127, -0.19293860310244781, -0.1898353761881708,
-0.1870030776403837, -0.18423730807865013, -0.18194831992866511},
{-0.8607588380071434, -0.5053415196360334, -0.38770310934125973,
-0.33174458201381185, -0.29778424463825104, -0.2768755914619305,
-0.2594278480308958, -0.2465788320268416, -0.2363014351250854,
-0.22780979825762415, -0.2206533792081018, -0.21450539049158124,
-0.2091470656554293, -0.20442952265034364, -0.20022779507598898,
-0.19646045251249689, -0.19305771039705633, -0.18995380285139163,
-0.18712084117873928, -0.18435422450272654, -0.18206436074024168},
{-0.8605803854129022, -0.5053666056189741, -0.38779128156380693,
-0.3318532941222543, -0.2979013279406786, -0.27699524576325985,
-0.25954958862610056, -0.24670209554602707, -0.2364250786094999,
-0.2279336987147076, -0.22077692640982605, -0.21462835793420254,
-0.20926943790050245, -0.20455120648841785, -0.20034873117776897,
-0.19658067502030008, -0.19317720966341767, -0.1900726188093813,
-0.1872389901252518, -0.18447152345390805, -0.18218077714232095},
{-0.8604024065054432, -0.5053922330529304, -0.3878799780832196,
-0.3319625065112177, -0.2980188934303669, -0.27711536714002705,
-0.2596717841430518, -0.246825806623292, -0.23654915983644287,
-0.22805803281460157, -0.22090089689305614, -0.21475174319607504,
-0.20939222340848573, -0.20467329626239916, -0.20047006907850573,
-0.1967012944836597, -0.19329710203237482, -0.19019182516592537,
-0.18735752553959628, -0.18458920608998142, -0.18229757028700533},
{-0.8602249026066886, -0.5054184033248816, -0.3879692002969932,
-0.33207222049639995, -0.2981369423922047, -0.27723595685876035,
-0.2597944358175823, -0.24694996644547018, -0.23667368006397282,
-0.2281828017181624, -0.221025291847468, -0.21487554744544468,
-0.2095154233162475, -0.20479579306925189, -0.20059180996588566,
-0.19682231199169564, -0.19341738864955005, -0.19031142298922532,
-0.1874764484878142, -0.1847072735798747, -0.18241474131912128},
{-0.8600478750485934, -0.5054451178385193, -0.3880589495931872,
-0.33218243739014497, -0.2982554761066467, -0.27735701618297526,
-0.25991754483561635, -0.2470745761970079, -0.2367986405205329,
-0.2283080065688523, -0.2211501124205597, -0.21499977181133545,
-0.2096390387265501, -0.20491869799286633, -0.20071395495494926,
-0.19694372862011278, -0.19353807065385809, -0.19043141341251157,
-0.1875957600180982, -0.18482572706193423, -0.1825322913899754},
{-0.859871325157826, -0.5054723779765595, -0.38814922738419,
-0.33229315850041985, -0.29837449587569154, -0.27747854633753377,
-0.2600411124469133, -0.2471996371041314, -0.23692404244991394,
-0.22843364853480352, -0.22127535979632285, -0.2151244174618796,
-0.2097630707822873, -0.20504201215874218, -0.20083650523235974,
-0.19706554548236, -0.19365914920535943, -0.19055179754002438,
-0.18771546124241922, -0.18494456773521506, -0.1826502216587187},
{-0.8596952542721965, -0.5055001851401357, -0.388240035054082,
-0.3324043851619649, -0.2984940029746781, -0.2776005486286408,
-0.260165139856781, -0.24732515035276492, -0.23704988709988584,
-0.228559728752316, -0.22140103516699128, -0.21524948554747425,
-0.20988752061145988, -0.2051657366382642, -0.20095946192589054,
-0.19718776365039048, -0.19378062544444674, -0.19067257647964198,
-0.18783555317577338, -0.18506379675693552, -0.182768533289277},
{-0.859519663720647, -0.5055285407271413, -0.3883313740192875,
-0.33251611866722897, -0.29861399871890626, -0.2777230242767814,
-0.26028962828701196, -0.24745111715168377, -0.23717617571338678,
-0.2286862483836103, -0.22152713969126125, -0.2153749772219271,
-0.21001238931796706, -0.20528987256102482, -0.20108282619435158,
-0.19731038421389258, -0.19390250055516844, -0.19079375132866971,
-0.18795603696605667, -0.18518341530023008, -0.1828872274436435},
{-0.8593445548564489, -0.5055574461518972, -0.3884232456974246,
-0.3326283603636284, -0.2987344844048607, -0.27784597456974325,
-0.26041457898844556, -0.2475775387178487, -0.2373029095568313,
-0.22881320858766685, -0.22165367456670992, -0.21550089366871816,
-0.21013767804390682, -0.2054144210198956, -0.20120659919541595,
-0.19743340829541012, -0.19402477567223286, -0.19091532317668225,
-0.18807691363451795, -0.18530342453038884, -0.1830063052756259},
{-0.8591699290146266, -0.5055869028174129, -0.38851565149150247,
-0.3327411115820951, -0.29885546135074037, -0.27796940081623234,
-0.26053999317099397, -0.24770441627811124, -0.2374300899030004,
-0.22894061053352743, -0.2217806409937566, -0.21562723606928103,
-0.21026338791750732, -0.20553938315504183, -0.20133078207584276,
-0.19755683698554094, -0.19414745200242578, -0.19103729318760543,
-0.18819818430984014, -0.18542382563248339, -0.18312576798416558},
{-0.8589957875489347, -0.505616912137441, -0.3886085928272678,
-0.33285437363957726, -0.29897693085467836, -0.27809330420728884,
-0.26066587207520797, -0.24783175103732447, -0.23755771799699232,
-0.22906845536908804, -0.22190804014769583, -0.21575400557651392,
-0.21038952005892497, -0.2056647600678616, -0.201455375990804,
-0.19768067141717438, -0.19427053069000522, -0.19115966243475668,
-0.1883198500721619, -0.18554461977430492, -0.1832456167288683},
{-0.8588221318048568, -0.5056474755256772, -0.3887020711119362,
-0.3329681478874136, -0.299098894221288, -0.2782176860985146,
-0.26079221694362786, -0.2479595442159166, -0.23768579511346388,
-0.2291967442661189, -0.2220358732531622, -0.21588120339447414,
-0.210516075621058, -0.20579055289329062, -0.20158038208955986,
-0.19780491266453737, -0.19439401292368075, -0.19128243203658712,
-0.18844191200957994, -0.18566580811580025, -0.18336585270435535},
{-0.858648963143537, -0.5056785944105968, -0.38879608779490127,
-0.3330824356680182, -0.29922135278121686, -0.27834254773546263,
-0.26091902900742525, -0.2480877970635902, -0.2378143225388385,
-0.22932547840116513, -0.2221641415032991, -0.21600883071027965,
-0.21064305571383102, -0.20591676275728332, -0.20170580152478124,
-0.19792956187075106, -0.19451789988886503, -0.19140560314201593,
-0.18856437125168668, -0.18578739184806636, -0.1834864770880813},
{-0.8584762829270574, -0.5057102702112388, -0.38889064429008613,
-0.3331972383203379, -0.29934430785971244, -0.2784678904257589,
-0.26104630954296226, -0.24821651079685125, -0.23794330154561294,
-0.22945465893860728, -0.22229284611228195, -0.21613688872025705,
-0.21077046149309808, -0.2060433908085315, -0.201831635451299,
-0.19805462016711317, -0.19464219277858774, -0.19152917681890358,
-0.18868722887975764, -0.18590937215526537, -0.1836074910811476},
{-0.8583040925076091, -0.5057425043439707, -0.3889857420206795,
-0.33331255719332376, -0.2994677607626386, -0.2785937154533258,
-0.2611740597367316, -0.24834568664351764, -0.23807273340679558,
-0.22958428705078404, -0.22242198828848814, -0.21626537860845474,
-0.21089829407787875, -0.20617043816264413, -0.20195788499574974,
-0.19818008867105164, -0.1947668927406312, -0.19165315421366813,
-0.1888104860004205, -0.18603175018563434, -0.18372889585157282},
{-0.8581323932561418, -0.5057752982525585, -0.38908138244227075,
-0.33342839363467647, -0.29959171283735486, -0.2787200240800871,
-0.26130228088396734, -0.24847532586653642, -0.23820261940886667,
-0.2297143639218575, -0.22255156924882158, -0.2163943015842733,
-0.2110265546169785, -0.20629790598354703, -0.20208455130398306,
-0.19830596852114013, -0.19489200101850201, -0.1917775364188401,
-0.1889341437516805, -0.18615452712242586, -0.18385069262330944},
{-0.857961186541587, -0.5058086533657615, -0.38917756698162975,
-0.3335447490181309, -0.2997161653943863, -0.2788468176585752,
-0.2614309742319847, -0.2486054296787188, -0.23833296085126676,
-0.22984489072371161, -0.2226815902272392, -0.21652365886711777,
-0.21115524425636067, -0.20642579541333816, -0.20221163554595023,
-0.19843226084469734, -0.1950175187807872, -0.19190232459300205,
-0.18905820322447653, -0.1862777041388881, -0.1839728825785869},
{-0.857790473738504, -0.5058425711236509, -0.3892742970800782,
-0.33366162469394567, -0.29984111978637884, -0.27897409743690105,
-0.2615601410183217, -0.24873599933596324, -0.2384637590116654,
-0.2299758686384621, -0.22281205242404667, -0.21665345167832584,
-0.21128436412607243, -0.2065541076125328, -0.2023391388354412,
-0.19855896680815022, -0.19514344720846566, -0.19202751985642408,
-0.18918266556715935, -0.18640128240986087, -0.18409546692805634},
{-0.8576202562263973, -0.5058770529698791, -0.3893715742038353,
-0.3337790220319903, -0.29996657734557175, -0.2791018647547503,
-0.26168978253133446, -0.2488670361004779, -0.23859501520200865,
-0.23010729885902492, -0.2229429570886623, -0.21678368121729363,
-0.21141391537969412, -0.206682843765293, -0.2024670623422935,
-0.19868608754495654, -0.19526978754106494, -0.19215312330891265,
-0.18930753190454652, -0.18652526310484063, -0.1842184468640653},
{-0.8574505353767563, -0.5059121003412201, -0.38946939977273587,
-0.3338969423958247, -0.30009253941744873, -0.2792301209288439,
-0.2618198999994661, -0.24899854119746578, -0.2387267307217371,
-0.23023918258138565, -0.22307430544628915, -0.21691434874890092,
-0.2115438991584142, -0.20681200500678187, -0.20259540721042413,
-0.19881362423984683, -0.19539654093716763, -0.19227913610973246,
-0.18943280335599866, -0.18664964740685264, -0.18434182361193052},
{-0.8572813125829839, -0.5059477146970153, -0.38956777527045006,
-0.33401538717146195, -0.30021900734976725, -0.2793588672244596,
-0.2619504947197129, -0.24913051590908708, -0.2388589068635838,
-0.23037152098152092, -0.22320609871997021, -0.21704545546526788,
-0.21167431662206582, -0.2069415925342355, -0.20272417456385483,
-0.19894157803435064, -0.1955237086356192, -0.19240555936551118,
-0.18955848107452766, -0.1867744364842565, -0.18446559836570486},
{-0.8571125892295299, -0.505983897490978, -0.38966670214858823,
-0.3341343577423572, -0.30034598249380906, -0.2794881050222102,
-0.2620815679609336, -0.2492629614881139, -0.23899154495154562,
-0.2305043152871349, -0.22333833818777293, -0.21717700263332063,
-0.2118051689396907, -0.20707160753988774, -0.20285336557321898,
-0.19906995012672724, -0.19565129183172303, -0.19253239425313495,
-0.18968456618813434, -0.18689963148835886, -0.18458977235775365},
{-0.8569443667050507, -0.5060206501653397, -0.3897661818548386,
-0.3342538554666703, -0.30047346619790005, -0.27961783557759645,
-0.2622131209727172, -0.2493958791676505, -0.23912464627983354,
-0.2306375666612439, -0.2234710250346552, -0.21730899149270044,
-0.2119364572287168, -0.20720205119562252, -0.2029829813776587,
-0.19919874165998408, -0.19577929173215125, -0.19265964188559792,
-0.1898110598584708, -0.1870252335851319, -0.18471434678076548},
{-0.8567766464050521, -0.5060579741938227, -0.38986621585814873,
-0.3343738817446251, -0.3006014598207116, -0.2797480602448559,
-0.2623451550539926, -0.24952927022172844, -0.23925821215459564,
-0.23077127632870997, -0.22360416055016685, -0.21744142326963356,
-0.21206818265966376, -0.20733292469185471, -0.20311302313359647,
-0.19932795385238933, -0.1959077095370958, -0.19278730336418448,
-0.18993796320899037, -0.18715124396362626, -0.18483932284402727},
{-0.8566094297333962, -0.5060958710326418, -0.3899668056408814,
-0.3344944379716708, -0.30072996473120384, -0.27987878037265546,
-0.26247767146668366, -0.24966313592142342, -0.23939224391449443,
-0.2309054455124624, -0.22373774595405393, -0.21757429924684857,
-0.21220034640248286, -0.20746422925481056, -0.20324349197824176,
-0.19945758789253887, -0.19603654646459745, -0.19291537989568042,
-0.1900652774095306, -0.18727766376116506, -0.18496470176819457},
{-0.8564427180901362, -0.506134342162909, -0.3900679526638555,
-0.33461552554183527, -0.30085898229981467, -0.2800099972497492,
-0.2626106715267156, -0.24979747754082382, -0.23952674286420006,
-0.23104007541223837, -0.22387178253086404, -0.21770762067535543,
-0.21233294962507898, -0.20759596609650544, -0.20337438909086814,
-0.1995876449836942, -0.1961658037438383, -0.1930438726169541,
-0.19019300362947433, -0.18740449417020955, -0.18509048476619228},
{-0.8562765128763203, -0.5061733890348137, -0.3901696584041474,
-0.3347371458548878, -0.3009885138782238, -0.2801417122590806,
-0.26274415649226057, -0.24993229633719238, -0.23966171033691808,
-0.2311751672380069, -0.22400627152171637, -0.21784138882117077,
-0.21246599349512962, -0.20772813641247012, -0.2035057156218727,
-0.1997181263384391, -0.19629548257933038, -0.19317278266134963,
-0.19032114300784997, -0.18753173631137088, -0.1852166730625413},
{-0.8561108155059856, -0.5062130131408935, -0.3902719243410502,
-0.33485930031048383, -0.3011185608579581, -0.28027392668627726,
-0.26287812767668584, -0.250067593585527, -0.23979714764413984,
-0.23131072221315208, -0.22414121417102706, -0.2179756049442858,
-0.21259947917155841, -0.20786074146087685, -0.20363747273097488,
-0.19984903316196778, -0.19642558418081535, -0.1933021112156439,
-0.19044969671756462, -0.18765939137222176, -0.18534326785800204},
{-0.855945627391975, -0.5062532159531656, -0.3903747519591434,
-0.33498199031589593, -0.3012491246111608, -0.28040664191348696,
-0.26301258637829505, -0.2502033705609392, -0.23993305612145832,
-0.23144674157674672, -0.22427661176277525, -0.21811027034380004,
-0.21273340783795902, -0.20799378244112177, -0.2037696616022231,
-0.1999803666939215, -0.19655610977883953, -0.19343185940476815,
-0.19057866593880135, -0.18778746051907547, -0.18547027036129293},
{-0.8557809499499172, -0.5062939989523443, -0.39047814274698567,
-0.3351052172969844, -0.3013802065102027, -0.28053985929398095,
-0.26314753387555356, -0.25033962853501635, -0.24006943710924133,
-0.23158322654626318, -0.2244124655609312, -0.2182453862632201,
-0.21286778066223633, -0.20812726060808018, -0.20390228337680583,
-0.20011212816325497, -0.19668706058689622, -0.19356202840231163,
-0.19070805181684136, -0.18791594486197027, -0.18559768179738967},
{-0.8556167846022049, -0.5063353636218721, -0.390582098193363,
-0.33522898265306367, -0.3015118079603667, -0.28067358012350496,
-0.2632829715092271, -0.250476368794466, -0.2402062919168202,
-0.23172017836657233, -0.22454877681434482, -0.21838095401676583,
-0.21300259883537365, -0.2082611772287919, -0.2040353392644647,
-0.2002443188083589, -0.19681843783303066, -0.19369261939743865,
-0.19083785556881594, -0.18804484560075707, -0.18572550336136828},
{-0.8554531327757786, -0.5063773114635524, -0.3906866197901877,
-0.3353532878346641, -0.3016439303377183, -0.28080780583360365,
-0.2634189005686949, -0.2506135926112165, -0.24034362191025593,
-0.231857598276747, -0.2246855468368949, -0.21851697489557864,
-0.21313786354619424, -0.20839553354312557, -0.2041688304343552,
-0.2003769398907025, -0.19695024272948558, -0.19382363356567112,
-0.19096807833864204, -0.1881741638742369, -0.1858537362692232},
{-0.8552899958898479, -0.5064198439580991, -0.39079170902067517,
-0.33547813422899253, -0.3017765750357171, -0.28094253771126887,
-0.2635553223660736, -0.2507513012764093, -0.24048142841172648,
-0.23199548749505539, -0.22482277686083307, -0.21865345017624804,
-0.2132735759781781, -0.20853033081016292, -0.20430275806700138,
-0.20050999264390157, -0.19708247650578414, -0.1939550720751413,
-0.19109872135015848, -0.1883039008216656, -0.18598238172944548},
{-0.8551273753882356, -0.50646296261732, -0.3908973674195977,
-0.3356035232897625, -0.3019097434561786, -0.2810777771679227,
-0.2636922382511102, -0.2508894960554926, -0.2406197127733094,
-0.23213384730786402, -0.22496046820310767, -0.21879038115537242,
-0.21340973731253143, -0.20866557029819433, -0.20443712335713826,
-0.20064347834784257, -0.19721514038212717, -0.19408693609136662,
-0.19122978574614535, -0.18843405762936527, -0.1861114409178981},
{-0.8549652726988484, -0.5065066689283526, -0.3910035964589724,
-0.33572945646193375, -0.3020434370142766, -0.2812135255730368,
-0.2638296495176746, -0.25102817826575574, -0.24075847634958336,
-0.23227267895163095, -0.22509862214315035, -0.2189277691713869,
-0.21354634876797718, -0.20880125330290866, -0.20457192749563546,
-0.20077739827888763, -0.19734823560395398, -0.19421922683227422,
-0.19136127276840398, -0.18856463542010715, -0.18624091507615503},
{-0.8548036892634627, -0.5065509644029476, -0.3911103976648178,
-0.3358559351588042, -0.3021776571022201, -0.2813497842417405,
-0.2639675575046567, -0.25116734917332906, -0.24089772046988855,
-0.23241198368452842, -0.22523723993901967, -0.2190656154845101,
-0.2136834115202646, -0.2089373810795223, -0.20470717168950614,
-0.20091175370157544, -0.19748176338134726, -0.19435194547952506,
-0.19149318357767697, -0.18869563536395617, -0.1863708053526807},
{-0.8546426265223204, -0.5065958505435333, -0.3912177725360948,
-0.3359829608420455, -0.3023124051155719, -0.28148655462319994,
-0.26410596356004135, -0.251307010073333, -0.24103744649812597,
-0.23255176276200018, -0.22537632292414855, -0.21920392145216283,
-0.21382092679448306, -0.20907395494816683, -0.20484285715724582,
-0.20104654589522397, -0.19761572494644497, -0.1944850932574127,
-0.1916255193834786, -0.18882705859675752, -0.1865011129841605},
{-0.8544820859277138, -0.506641328875503, -0.3913257225920006,
-0.3361105349460445, -0.3024476824962221, -0.2816238380364098,
-0.2642448690122592, -0.2514471622586143, -0.24117765580024297,
-0.2326920174617726, -0.22551587238694992, -0.21934268837082982,
-0.21395889579616778, -0.20921097619657303, -0.20497898508313028,
-0.20118177616222965, -0.19775012155309923, -0.1946186713383895,
-0.19175828141862894, -0.18895890629630685, -0.18663183914259207},
{-0.854322068923409, -0.5066874008981017, -0.3914342493467302,
-0.33623865893849825, -0.3025834906430873, -0.2817616358912005,
-0.26438427522168695, -0.2515878070214512, -0.24131834972877186,
-0.23283274905884355, -0.22565588961026606, -0.2194819175615521,
-0.21409731972437385, -0.20934844612065717, -0.2051155566888383,
-0.20131744579168753, -0.19788495438547216, -0.19475268093128761,
-0.19189147084523483, -0.18909117958980914, -0.18676298502464306},
{-0.8541625769703955, -0.506734068147864, -0.3915433543265294,
-0.3363673342655602, -0.30271983099203226, -0.28189994959927844,
-0.2645241835163006, -0.25172894567253934, -0.24145952965295692,
-0.2329739588283246, -0.22579637592366453, -0.21962161035719419,
-0.2142361998060096, -0.20948636604111925, -0.2052525732032109,
-0.2014535560930426, -0.19802022472015324, -0.19488712326233326,
-0.19202508892567494, -0.18922387965267262, -0.18689455181174708},
{-0.8540036115236376, -0.5067813321458061, -0.39165303906327154,
-0.3364965623994749, -0.30285670497124784, -0.282038780482992,
-0.26466459528023734, -0.25187057950392955, -0.24160119694431614,
-0.23311564806544993, -0.22593733262874593, -0.21976176808118453,
-0.2143755372665055, -0.20962473726126518, -0.2053900358472447,
-0.2015901083780136, -0.1981559337826866, -0.19502199955036303,
-0.19215913684683983, -0.18935700761085172, -0.1870265407133047},
{-0.853845174048729, -0.5068291944140242, -0.3917633050760969,
-0.3366263448012319, -0.302994113996931, -0.28217813002589764,
-0.26480551187080437, -0.25201270981824564, -0.2417433529706159,
-0.23325781804635426, -0.22607876104450497, -0.2199023920871923,
-0.21451533334629858, -0.20976356111270889, -0.20552794585455558,
-0.20172710395161175, -0.19829208281407773, -0.19515731101591882,
-0.1922936158362063, -0.18949056465919512, -0.18715895288528372},
{-0.8536872660048402, -0.50687765648496, -0.39187415388573754,
-0.3367566829323323, -0.30313205950949396, -0.2823179995509122,
-0.2649469346375781, -0.2521553379059469, -0.24188599910621633,
-0.23340047005342512, -0.22622066248197825, -0.22004348369716809,
-0.2146555892481956, -0.20990283891273975, -0.2056663044435254,
-0.20186454413067167, -0.19842867304032552, -0.19529305889113857,
-0.19242852712989134, -0.1896245519083095, -0.1872917895215096},
{-0.8535298888708667, -0.5069267198920784, -0.3919855870518063,
-0.33688757827451354, -0.30327054295679545, -0.28245839049418464,
-0.26508886498652373, -0.25229846509546405, -0.24202913674730553,
-0.23354360540986363, -0.22636303827152915, -0.22018504424192997,
-0.2147963062097915, -0.21004257200763732, -0.2058051128670968,
-0.20200243024453357, -0.19856570570539134, -0.19542924439167564,
-0.1925638719591234, -0.18975897051768698, -0.1874250517847713},
{-0.8533730441093326, -0.5069763861788488, -0.39209760608440547,
-0.33701903232105224, -0.3034095657747571, -0.2825993042956725,
-0.2652313042553942, -0.2524420926845323, -0.2421727672816587,
-0.23368722542011255, -0.22650588975466235, -0.2203270751041373,
-0.21493748548527947, -0.2101827617040044, -0.2059443723704817,
-0.20214076362651667, -0.1987031820571019, -0.19556586878718463,
-0.19269965154092006, -0.18989382167455915, -0.18755874084035895},
{-0.8532167332077165, -0.5070266568909005, -0.3922102125538345,
-0.33715104652810624, -0.3035491294139092, -0.28274074229079815,
-0.26537425386436553, -0.25258622198589364, -0.24231689208011176,
-0.23383133137326695, -0.22664921824627982, -0.22046957759243924,
-0.21507912831634712, -0.21032340935573757, -0.2060840841695608,
-0.20227954559152295, -0.19884110333839544, -0.19570293328081334,
-0.19283586712242595, -0.19002910651738603, -0.18769285786163437},
{-0.8530609576413326, -0.5070775335765347, -0.3923234079877602,
-0.3372836224124285, -0.30368923532785175, -0.2828827059847754,
-0.26551771520087186, -0.2527308543271829, -0.24246151256386383,
-0.23397592461742533, -0.22679302510175603, -0.22061255309552052,
-0.21522123596707843, -0.2104645163120722, -0.2062242495665032,
-0.20241877750015647, -0.19897947080210088, -0.19584043915642724,
-0.19297251993987175, -0.19016482618769714, -0.18782740401718456},
{-0.8529057188958973, -0.5071290177738774, -0.3924371939468756,
-0.337416761448992, -0.3038298849720604, -0.28302519672081417,
-0.26566168964393455, -0.25287599100329317, -0.24260663012444184,
-0.23412100644077327, -0.2269373116545239, -0.22075600297057463,
-0.2153638096613122, -0.21060608391223923, -0.20636486978082758,
-0.20255846066265804, -0.19911828570377565, -0.19597838764025255,
-0.1931096112484738, -0.1903009818541932, -0.18796238044706115},
{-0.8527510184591733, -0.5071811110472026, -0.392551571959018,
-0.33755046513135767, -0.3039710797959856, -0.2831682159489901,
-0.26580617860622624, -0.2530216333364024, -0.24275224615951174,
-0.23426657817799423, -0.22708207924858925, -0.22089992853875628,
-0.21550685067074937, -0.2107481134696627, -0.2065059460832117,
-0.20269859643372, -0.19925754926237005, -0.19611677997306742,
-0.19324714229458095, -0.19043757467511568, -0.18809778828506296},
{-0.8525968578287575, -0.5072338149595339, -0.3926665436056851,
-0.3376847349738341, -0.3041128212817057, -0.2833117651427983,
-0.2659511834795012, -0.25316778267188056, -0.2428983621076668,
-0.23441264116843286, -0.227227329245693, -0.2210443311862491,
-0.21565036025333484, -0.21089060637484636, -0.20664747974205966,
-0.2028391861754244, -0.19939726275890735, -0.19625561744794595,
-0.19338511433397798, -0.19057460584178898, -0.18823362872285543},
{-0.8524432384990064, -0.5072871310717346, -0.39278211043671263,
-0.33781957247725813, -0.3042551108923135, -0.2834558456572722,
-0.26609670570155686, -0.25331444032224226, -0.2430449793517937,
-0.23455919676200665, -0.22737306299757165, -0.22118921230742217,
-0.2157943396915698, -0.21103356395451556, -0.20678947204953602,
-0.20298023121904407, -0.19953742746019998, -0.19639490130191462,
-0.19352352862881617, -0.19071207649608368, -0.18836990284773947},
{-0.8522901619685967, -0.5073410609421671, -0.39289827401148614,
-0.3379549791637828, -0.30439795009795034, -0.2836004590128596,
-0.266242746674493, -0.2534616076172824, -0.24319209935492836,
-0.23470624628828318, -0.22751928187710746, -0.22133457322979666,
-0.21593879024464968, -0.211176987570866, -0.20693192425994766,
-0.2031217329363244, -0.19967804461748528, -0.19653463282929806,
-0.193662386423739, -0.19084998780419937, -0.18850661183569173},
{-0.8521376297419465, -0.5073956061518743, -0.3930150358943365,
-0.33809095653271015, -0.3045413403697239, -0.2837456065757351,
-0.26638930781541603, -0.2536092858899792, -0.2433397235125767,
-0.23485379106421078, -0.22766598723126208, -0.22148041535115226,
-0.21608371320633069, -0.2113208785583538, -0.20707483765147572,
-0.20326369265671929, -0.19981911547984055, -0.1966748132755356,
-0.19380168899931505, -0.1909883409629174, -0.1886437567691246},
{-0.8519856433303516, -0.5074507682666081, -0.3931323976600538,
-0.33822750611000174, -0.3046852832114837, -0.2838912898376975,
-0.26653639059202305, -0.2537574764804731, -0.2434878532779976,
-0.2350018325007568, -0.22781318044940235, -0.2216267400452807,
-0.2162291098567266, -0.21146523827098918, -0.2072182135688081,
-0.20340611175583945, -0.19996064134579683, -0.19681544394609318,
-0.19394143764111504, -0.1911271371739076, -0.18878133881150916},
{-0.8518342042432892, -0.5075065488726977, -0.3932503608787101,
-0.33836462941940226, -0.3048297800892783, -0.28403751025632573,
-0.2666839963679877, -0.2539061807251528, -0.24363649007875665,
-0.23515037192009913, -0.22796086289156392, -0.22177354867233134,
-0.21637498145400968, -0.21161006805880334, -0.20736205323885315,
-0.20354899159212891, -0.20010262347773278, -0.1969565260719719,
-0.19408163358536967, -0.19126637757267417, -0.18891935904673574},
{-0.8516833139982509, -0.5075629495469229, -0.39336892712498184,
-0.33850232799414925, -0.30497483250462665, -0.28418426922496565,
-0.26683212664499933, -0.2540553999712074, -0.2437856353637926,
-0.2352994106964843, -0.22810903593051535, -0.2219208426131445,
-0.21652132930785228, -0.21175536927967187, -0.20750635800686723,
-0.2036923335207348, -0.20024506312779522, -0.19709806098342142,
-0.19422227813845439, -0.19140606338999078, -0.18905781857256443},
{-0.8515329741159121, -0.5076199718845942, -0.39348809797775175,
-0.33864060337077717, -0.305120441944041, -0.28433156829851214,
-0.26698078282402093, -0.25420513556025526, -0.24393529059216235,
-0.23544895018608258, -0.22825770097290388, -0.22206862327129784,
-0.21666815473952283, -0.21190114325793274, -0.2076511291948009,
-0.20383613892215635, -0.20038796161725259, -0.1972400499608966,
-0.1943633725767313, -0.19154619582616306, -0.1891967185526937},
{-0.8513831861129688, -0.5076776174641395, -0.3936078750191996,
-0.33877945707757817, -0.3052666099067096, -0.2844794088478011,
-0.2671299663790023, -0.25435538885005826, -0.24408545720996244,
-0.235598991756774, -0.22840685939002014, -0.22221689200819128,
-0.21681545902788457, -0.21204739136260287, -0.2077963680975472,
-0.20398040912721171, -0.20053132019336317, -0.19738249429065036,
-0.19450491821135074, -0.1916867760697869, -0.18933606006123682},
{-0.8512339515295366, -0.5077358878943414, -0.3937282598383831,
-0.3389188906578511, -0.3054133379138193, -0.28462779239282554,
-0.2672796787612697, -0.2545061611793926, -0.24423613668000144,
-0.23574953682168598, -0.22855651256213605, -0.2223656502239919,
-0.21696324346089568, -0.2121941149190434, -0.20794207605604242,
-0.20412514554573136, -0.20067514017171106, -0.1975253952583671,
-0.1946469162946869, -0.19182780535652455, -0.1894758442232387},
{-0.851085271890156, -0.5077947847664745, -0.3938492540279981,
-0.33905890567967845, -0.30556062746688895, -0.28477672042538416,
-0.26742992141203104, -0.254657453944219, -0.24438733047588812,
-0.23590058672880332, -0.2287066619082907, -0.22251489931363722,
-0.21711150938631363, -0.2123413152886542, -0.20808825440155942,
-0.20427034951819678, -0.20081942283695753, -0.19766875419679764,
-0.19478936815949055, -0.19196928489839138, -0.18961607215896947},
{-0.8509371487338626, -0.5078543096817043, -0.3939708591733506,
-0.3391995036686808, -0.3057084800745997, -0.284926194334048,
-0.2675806957942086, -0.25480926848160834, -0.24453904004917604,
-0.23605214286658338, -0.22885730880113897, -0.22266464063886815,
-0.21726025809493876, -0.21248899379827435, -0.20823490446912274,
-0.20441602242931367, -0.20096416950832463, -0.1978125723702533,
-0.1949322750634792, -0.19211121590740277, -0.18975674500018158},
{-0.8507895835934391, -0.5079144642471078, -0.39409307686503325,
-0.3393406862005577, -0.30585689724227905, -0.2850762157080453,
-0.26773200337333947, -0.2549616061571669, -0.24469126689268705,
-0.23620420663985442, -0.22900845465244402, -0.22281487561258473,
-0.2174094909246378, -0.21263715179031806, -0.20838202763491154,
-0.20456216564946317, -0.20110938144773627, -0.19795685113058425,
-0.195075638326216, -0.19225359962115363, -0.18989786391898633},
{-0.850642578019972, -0.5079752500848258, -0.39421590872439083,
-0.3394824548246902, -0.3060058805083372, -0.28522678595345496,
-0.2678838456236008, -0.2551144683563962, -0.24484401248946597,
-0.23635677942445454, -0.22916010088579242, -0.2229656056318845,
-0.21755920919815708, -0.2127857906322106, -0.20852962525304974,
-0.2047087805387946, -0.20125506001363647, -0.19810159178280173,
-0.19521945928795503, -0.19239643731134493, -0.1900394300635071},
{-0.8504961335606822, -0.5080366687928404, -0.3943393563203017,
-0.33962481110376075, -0.30615543140038426, -0.2853779065923163,
-0.2680362240313343, -0.25526785644149186, -0.24499727830220763,
-0.23650986264010498, -0.2293122488785002, -0.22311683207078659,
-0.2177094142276701, -0.21293491162373357, -0.20867769867936659,
-0.20485586848826642, -0.2014012064905728, -0.19824679562657366,
-0.19536373922346684, -0.1925397301946532, -0.19018144461210795},
{-0.850350251763416, -0.5080987220018187, -0.3944634212909932,
-0.33976775662893033, -0.306305551441028, -0.28552957914234867,
-0.26818914003354166, -0.2554217718069367, -0.24515106583737634,
-0.23666345767674102, -0.2294649000677964, -0.22326855634423737,
-0.2178601073601385, -0.21308451613253965, -0.20882624929447502,
-0.20500343088178852, -0.2015478222075444, -0.19839246400636057,
-0.19550847944890393, -0.19268347953880038, -0.19032390878135175},
{-0.8502049341858537, -0.5081614113436785, -0.39458810523814236,
-0.3399112929668604, -0.30645624217606837, -0.2856818050373704,
-0.268342595158515, -0.25557621584550816, -0.24530537658688445,
-0.23681756595271963, -0.22961805586612627, -0.22342077985467768,
-0.21801128995400632, -0.21323460549126594, -0.2089752785005885,
-0.20515146907916915, -0.20169490849013982, -0.1985385982260368,
-0.19565368130861316, -0.19282768659013527, -0.1904668237674514},
{-0.8500601823884608, -0.5082247384274865, -0.39471340976888314,
-0.3400554216908631, -0.3066075051342523, -0.28583458587399946,
-0.2684965908531467, -0.2557311899322485, -0.245460212046396,
-0.23697218884524318, -0.22977171769809956, -0.2235735039789688,
-0.21816296335668994, -0.21338518104096238, -0.20912478769776044,
-0.20529998445715592, -0.20184246666292438, -0.19868519964779807,
-0.19579934609532756, -0.19297235263218226, -0.19061019083153496},
{-0.8499159979336923, -0.5082887048948237, -0.3948393364947833,
-0.3402001443879499, -0.306759341857628, -0.2859879230579736,
-0.2686511286226505, -0.25588669546846177, -0.24561557371055187,
-0.2371273277921091, -0.2299258869792311, -0.22372673014376687,
-0.21831512890548765, -0.21353624413586658, -0.20927477826364793,
-0.20544897840852627, -0.2019904980793399, -0.19883226959029798,
-0.1959454751576004, -0.19311747891049436, -0.19075401121915547},
{-0.8497723823948604, -0.508353312389886, -0.3949658870586745,
-0.34034546265343124, -0.3069117539085937, -0.28614181815919437,
-0.2688062099663284, -0.2560427338603404, -0.24577146308831743,
-0.23728298420996907, -0.23008056514709097, -0.22388045973718818,
-0.21846778797703337, -0.21368779611736954, -0.20942525164787185,
-0.2055984523008192, -0.20213900405508411, -0.19897980939560966,
-0.19609206983238892, -0.1932630666985915, -0.1908982861750701},
{-0.8496293373292474, -0.5084185625336772, -0.3950930630493872,
-0.34049137808261776, -0.30706474283488205, -0.2862962727128888,
-0.26896183634835324, -0.2561993065189654, -0.24592788170480162,
-0.2374391595196812, -0.23023575363504278, -0.22403469417270117,
-0.21862094191760661, -0.2138398383283402, -0.20957620924764342,
-0.20574840753283752, -0.20228798596440356, -0.19912782041865285,
-0.19623913144926064, -0.19340911728590982, -0.19104301703532656},
{-0.8494868643311406, -0.5084844569940401, -0.3952208661306713,
-0.34063789225848495, -0.3072183101890005, -0.286451288163903,
-0.26911800928485263, -0.25635641485598626, -0.2460848310424808,
-0.23759585512505055, -0.23039145387451754, -0.22418943483853582,
-0.21877459211896166, -0.21399237213267952, -0.20972765249871372,
-0.20589884546143367, -0.2024374451168569, -0.19927630399445206,
-0.19638666134221694, -0.19355563193744274, -0.19118820508333556},
{-0.849344964969589, -0.5085509974081219, -0.39534929791511786,
-0.34078500681704327, -0.30737245754050946, -0.286606866145803,
-0.2692747302914995, -0.25651406028578094, -0.24624231264408536,
-0.23775307247626642, -0.2305476673194562, -0.22434468317112533,
-0.21892873998024243, -0.2141453988695048, -0.20987958286946196,
-0.20604976750053083, -0.20258738291715872, -0.19942526149850437,
-0.19653466084707816, -0.19370261195149396, -0.1913338516623071},
{-0.8492036408300123, -0.508618185427963, -0.3954783600450469,
-0.3409327233320596, -0.3075271864569231, -0.2867630080783101,
-0.2694320008519071, -0.25667224422545587, -0.24640032802597034,
-0.23791081297690653, -0.2307043954161827, -0.2245004405773443,
-0.21908338687501328, -0.21429891991579098, -0.21003200176824066,
-0.2062011750202828, -0.2027378007023799, -0.19957469428061358,
-0.19668313134604887, -0.19385005858009663, -0.19147995812124918},
{-0.8490628934996494, -0.5086860227136754, -0.39560805413793787,
-0.341081043436418, -0.3076824985048461, -0.28691971555599594,
-0.2695898224864095, -0.25683096811474115, -0.2465588786897115,
-0.2380690780603345, -0.23086163957941608, -0.2246567084266644,
-0.21923853417638384, -0.21445293661918186, -0.21018491067957257,
-0.20635306939800557, -0.20288869981970947, -0.1997246036727347,
-0.1968320741733578, -0.19399797313519684, -0.19162652578916095},
{-0.8489227245769939, -0.5087545109328744, -0.3957383818616904,
-0.34122996874486944, -0.30783839527532564, -0.2870769901408039,
-0.26974819668009786, -0.2569902333855225, -0.24671796620032183,
-0.2382278691773081, -0.23101940129470222, -0.22481348816893387,
-0.21939418331612615, -0.21460745036335993, -0.21033831106001344,
-0.2065054520406875, -0.20304008168068322, -0.19987499108958673,
-0.19698149067824033, -0.19414635688679027, -0.19177355607700974},
{-0.8487831356522406, -0.5088236517515838, -0.3958693448485633,
-0.34137950088091884, -0.30799487834065076, -0.2872348332901993,
-0.26990712498445646, -0.25715004148617027, -0.24687759204698523,
-0.23838718777267331, -0.2311776820159821, -0.22497078121341474,
-0.2195503356934978, -0.2147624625001754, -0.21049220439385863,
-0.2066583243331479, -0.2031919476268058, -0.20002585786380678,
-0.19713138224699378, -0.19429521113420378, -0.1919210503690465},
{-0.8486441283258728, -0.5088934468343496, -0.39600094474911884,
-0.341529641478985, -0.3081519492686766, -0.2873932466623046,
-0.27006660888389433, -0.2573103938584609, -0.24703775780562864,
-0.23854703525887544, -0.23133648320606426, -0.22512858896493526,
-0.21970699275550487, -0.21491797442581628, -0.2106465921350491,
-0.20681168766770952, -0.2033442990466483, -0.20017720541886774,
-0.1972817502480666, -0.19444453717505894, -0.19206901007351007},
{-0.8485057042045696, -0.5089638978662947, -0.39613318321391944,
-0.3416803921579685, -0.30830960967693954, -0.287552231706627,
-0.27022664991943657, -0.2574712919591775, -0.24719846498442166,
-0.23870741306916443, -0.23149580632878042, -0.22528691285378954,
-0.2198641559157295, -0.2150739875067984, -0.2108014757836827,
-0.20696554343953721, -0.2034971373489043, -0.20032903509707012,
-0.1974325960185297, -0.19459433632198397, -0.19221743658181367},
{-0.848367864894783, -0.5090350065157168, -0.39626606190665825,
-0.3418317545602463, -0.3084678611600111, -0.28771179004047553,
-0.27038724962608285, -0.2576327372405558, -0.24735971513416644,
-0.23886832268931357, -0.23165565284909917, -0.22544575428992175,
-0.22002182659616665, -0.21523050313737713, -0.21095685686975685,
-0.20711989302662914, -0.20365046387973962, -0.20048134829630726,
-0.19758392097992328, -0.1947446098816954, -0.19236633137904846},
{-0.8482306120125145, -0.5091067744810402, -0.3963995824785229,
-0.3419837303351869, -0.30862670530211744, -0.2878719232248841,
-0.2705484094823305, -0.2577947311860953, -0.24752150980464194,
-0.2390297655424547, -0.23181602424790526, -0.2256051146914615,
-0.22018000627065248, -0.21538752270362238, -0.2111127368251573,
-0.2072747378482518, -0.2038042800780886, -0.20063414639548682,
-0.19773572648716708, -0.19489535913464806, -0.1925156958648131},
{-0.8480939471713214, -0.5091792034430114, -0.39653374660684904,
-0.3421363211244852, -0.30878614372306856, -0.28803263276824964,
-0.27071013106944974, -0.2579572752417789, -0.247683850527892,
-0.23919174307582125, -0.2319769219875525, -0.22576499547847106,
-0.22033869636493364, -0.2155450476165015, -0.21126911721853503,
-0.20743007929240775, -0.20395858730682903, -0.20078743080102868,
-0.19788801393121958, -0.19504658543644382, -0.1926655314900927},
{-0.847957871995277, -0.509252295102101, -0.39666855594049366,
-0.3422895285953018, -0.3089461780120928, -0.28819392033119584,
-0.27087241589219957, -0.2581203709153215, -0.2478467388835952,
-0.23935425674415, -0.23213834758792018, -0.22592539808829315,
-0.22049789838160905, -0.21570307925310317, -0.21142599954237085,
-0.20758591877654453, -0.2041133869921623, -0.20094120293845208,
-0.19804078469724118, -0.19519829010596368, -0.19281583978386152},
{-0.8478223881052713, -0.5093260511496851, -0.39680401216628525,
-0.34244335437801965, -0.30910680981446603, -0.2883557873959717,
-0.27103526549853996, -0.25828401967180525, -0.24801017640504597,
-0.23951730799001325, -0.23230030250681466, -0.2260863239354194,
-0.22065761379099058, -0.2158616190530438, -0.21158338527970955,
-0.20774225768593624, -0.20426868054403258, -0.20109546417222646,
-0.19819404020188358, -0.1953504744589054, -0.19296662217823268},
{-0.8476874971365191, -0.5094004732960116, -0.3969401169567277,
-0.3425978001569092, -0.3092680407212356, -0.28851823559568857,
-0.27119868144120574, -0.25844822300723536, -0.24817416465941733,
-0.23968089831896577, -0.23246278825013178, -0.2262477744422995,
-0.22081784403428628, -0.2160206684015975, -0.21174127602125736,
-0.20789909745383284, -0.20442446935635417, -0.2012502159215046,
-0.1983477818173469, -0.1955031398600795, -0.19311788019479081},
{-0.8475532007162201, -0.5094755632480883, -0.3970768719964326,
-0.34275286759873325, -0.3094298723921156, -0.288681266530034,
-0.27136266523655195, -0.2586129824467207, -0.24833870521740664,
-0.23984502915823214, -0.23262580631637775, -0.2264097510648071,
-0.22097859065149805, -0.2161802287272394, -0.21189967323243764,
-0.20805643948381203, -0.20458075487147198, -0.20140545960111922,
-0.19850201096483033, -0.1956562876357566, -0.19326961531714915},
{-0.8474195004844773, -0.5095513227123547, -0.3972142789532995,
-0.34290855835740786, -0.30959230642031343, -0.28884488169558153,
-0.2715272184545938, -0.25877829945636677, -0.24850379962538227,
-0.2400097019730083, -0.23278935819837443, -0.2265722552101579,
-0.22113985511134615, -0.21634030143411564, -0.21205857846882736,
-0.2082142851778599, -0.20473753848204979, -0.2015611966311326,
-0.1986567290094854, -0.195809919119597, -0.19342182906905236},
{-0.8472863980854299, -0.5096277534075853, -0.3973523395245593,
-0.34306487413607556, -0.309755344455084, -0.2890090828053644,
-0.2716923426374933, -0.2589441755714006, -0.2486694494926951,
-0.2401749182400863, -0.2329534454268014, -0.22673528832706324,
-0.22130163894610178, -0.2165008879578636, -0.21221799329384794,
-0.20837263597138644, -0.20489482164043693, -0.20171742843047014,
-0.1988119373970676, -0.19596403570460552, -0.19357452295935218},
{-0.8471538951650359, -0.5097048570692095, -0.39749105541602603,
-0.34322181660093065, -0.30991898814374963, -0.2891738713514087,
-0.27185803934560226, -0.2591106123098825, -0.24883565637458105,
-0.24034067943114223, -0.23311806950471237, -0.22689885185559433,
-0.22146394368371602, -0.216661989749241, -0.212377919206574,
-0.20853149328797826, -0.20505260579136575, -0.20187415643397344,
-0.19896763753649793, -0.19611863874854407, -0.19372769852395777},
{-0.8470219933706176, -0.5097826354077597, -0.3976304282995784,
-0.34337938744647545, -0.31008323912419655, -0.28933924899615704,
-0.27202431015791717, -0.2592776111932835, -0.2490024218442386,
-0.2405069870414991, -0.2332832319341378, -0.22706294721581344,
-0.22162677082667415, -0.21682360822069313, -0.21253835778236407,
-0.20869085854531022, -0.20521089232136092, -0.20203138205056348,
-0.19912383082396445, -0.19627372961861056, -0.19388135726330802},
{-0.8468906943574552, -0.5098610901609959, -0.39777045988245163,
-0.34353758835277404, -0.3102480990479535, -0.28950521734748236,
-0.272191156588633, -0.2594451737503505, -0.24916974749089604,
-0.24067384251884505, -0.23344893426440194, -0.22722757587041542,
-0.22179012192123082, -0.21698574483014, -0.21269931053791424,
-0.20885073319743697, -0.20536968273847833, -0.20218910674191193,
-0.19928051868578223, -0.19642930969018835, -0.19403550074343912},
{-0.8467599997874231, -0.5099402230688952, -0.3979111518826244,
-0.34369642103422393, -0.31041356955836363, -0.2896717779486835,
-0.2723585802489197, -0.25961330154234474, -0.24933763490616911,
-0.2408412473757835, -0.2336151780318687, -0.22739273926436,
-0.22195399852307673, -0.21714840100378296, -0.21286077906063383,
-0.20901111865703115, -0.2055289784341312, -0.2023473319243294,
-0.1994377025492895, -0.19658538037549533, -0.19419013048025136},
{-0.8466299113184732, -0.510020035870582, -0.3980525059983506,
-0.3438558871899886, -0.3105796523245772, -0.28983893251154313,
-0.2725265826956047, -0.2597819961008554, -0.2495060856932696,
-0.24100920309774665, -0.2337819647567585, -0.2275584388439711,
-0.22211840218631096, -0.21731157821932356, -0.21302276489666383,
-0.20917201639804262, -0.20568878089136433, -0.20250605906505825,
-0.19959538382931896, -0.19674194305184756, -0.1943452480174983},
{-0.8465004306186756, -0.5101005302995532, -0.3981945239310676,
-0.34401598851820836, -0.31074634901767695, -0.2900066825612839,
-0.2726951655116636, -0.25995125897600246, -0.24967510143471827,
-0.24117771117289521, -0.233949295994762, -0.22772467605977909,
-0.2222833344760602, -0.21747527792638266, -0.21318526957645645,
-0.20933342785804143, -0.2058490915708262, -0.20266528959211882,
-0.19975356395707422, -0.1968989991254375, -0.19450085488597324},
{-0.8463715593661618, -0.5101817081292666, -0.39833720741557954,
-0.3441767267358955, -0.31091366129430753, -0.2901750297663739,
-0.2728643302814362, -0.2601210917340495, -0.24984468374225344,
-0.24134677311155883, -0.23411717327769566, -0.22789145237504727,
-0.22244879693846542, -0.21763950158447187, -0.21334829468253247,
-0.2094953544724376, -0.20600991190758577, -0.20282502497127552,
-0.19991224436648736, -0.1970565499989334, -0.19465695264329952},
{-0.8462432992211006, -0.510263571099415, -0.3984805581581554,
-0.3443381035752964, -0.3110815908451059, -0.29034397578061544,
-0.2730340785564067, -0.260291495950014, -0.2500148342362536,
-0.24151639042543138, -0.2342855981817138, -0.22805876923280266,
-0.22261479118537864, -0.21780425065628606, -0.21351184177706273,
-0.2096577977255265, -0.2061712434004903, -0.20298526665794725,
-0.2000714264825092, -0.19721459712923206, -0.19481354284437202},
{-0.8461156518873736, -0.5103461209857301, -0.3986245779064461,
-0.34450012073148173, -0.3112501393347884, -0.2905135221665205,
-0.27320441197537093, -0.26046247320425664, -0.2501855545043554,
-0.24168656460869897, -0.23445457226125654, -0.22822662811108785,
-0.2227813187683978, -0.2179695266291901, -0.21367591241823902,
-0.20982075906522368, -0.20633308748119816, -0.2031460161238101,
-0.2002311117538511, -0.19737314192184385, -0.19497062703021584},
{-0.8459886190298676, -0.5104293595454692, -0.3987692683709838,
-0.3446627799793305, -0.3114193084592216, -0.29068367065042366,
-0.2733753321070935, -0.2606340250785024, -0.2503568462137764,
-0.24185729720159088, -0.23462409710339216, -0.22839503047543985,
-0.2229483813260913, -0.2181353309864562, -0.21384050819438016,
-0.20998423998423732, -0.2064954456717487, -0.20330727482541988,
-0.20039130159909746, -0.19753218581024612, -0.19512820677573472},
{-0.8458622023445628, -0.5105132885479406, -0.3989146313058427,
-0.3448260830083427, -0.31158909991438577, -0.2908544227833545,
-0.2735468405459187, -0.26080615315936484, -0.2505287109560186,
-0.24202858970340912, -0.23479417426187865, -0.2285639777992401,
-0.22311598042415426, -0.21830166522431682, -0.21400563061615685,
-0.21014824192354808, -0.20665831943279045, -0.2034690442368401,
-0.20055199749185704, -0.19769173021700226, -0.19528628363309508},
{-0.8457364035223236, -0.5105979097634759, -0.3990606684224076,
-0.34499003156861363, -0.311759515367271, -0.29102578025754156,
-0.27371893890654064, -0.2609788590343669, -0.250701150346913,
-0.24220044365381455, -0.23496480530945973, -0.22873347153790746,
-0.22328411762964606, -0.21846853082581674, -0.21417128130508445,
-0.21031276639223506, -0.20682171023906903, -0.2036313258147402,
-0.2007132008654935, -0.19785177662208753, -0.19544485916208032},
{-0.8456112242629388, -0.5106832249915101, -0.39920738149163526,
-0.3451546274233124, -0.3119305565593322, -0.29119774475464055,
-0.27389162879023843, -0.2611521443410538, -0.25087416607209434,
-0.2423728606114537, -0.23513599185935163, -0.22890351319290403,
-0.2234527946078515, -0.21863592929764764, -0.21433746181321567,
-0.21047781488812234, -0.20698561960114148, -0.20379412106933614,
-0.20087491318270168, -0.19801232647830602, -0.19560393495385142},
{-0.8454866662659128, -0.510769236012095, -0.3993547722426456,
-0.3453198723022979, -0.3121022251781369, -0.29137031784455303,
-0.27406491181909587, -0.26132601066467487, -0.2510477597237468,
-0.242545842100526, -0.2353077354925972, -0.22907410423988495,
-0.2236220129469757, -0.21880386215707404, -0.21450417372500397,
-0.21064338887083522, -0.20715004899113865, -0.2039574314831043,
-0.2010371359117471, -0.1981733812258426, -0.19576351255852842},
{-0.84536273123814, -0.5108559446103982, -0.39950284244355316,
-0.34548576797624264, -0.31227452293217084, -0.2915435012968146,
-0.27423878960598813, -0.26150045964789115, -0.2512219330029666,
-0.24271938966683138, -0.23548003784924276, -0.22924524616223607,
-0.22379177427069408, -0.21897233093989144, -0.21467141860193806,
-0.21080948987298598, -0.20731499992905356, -0.20412125856159946,
-0.20119987050929922, -0.19833494236081606, -0.19592359357045552},
{-0.8452394208891292, -0.5109433525851728, -0.39965159384746585,
-0.34565231619671977, -0.3124474515432212, -0.2917172966853059,
-0.2744132637668599, -0.26167549291017167, -0.25139668753229216,
-0.24289350488129458, -0.23565290050350995, -0.22941694046403427,
-0.22396208019245023, -0.21914133715426942, -0.21483919801676166,
-0.2109761193845543, -0.20748047393919933, -0.2042856037751335,
-0.20136311844407828, -0.1984970113143163, -0.19608417955214463},
{-0.8451167369327663, -0.5110314617451195, -0.39980102821891705,
-0.34581951872246464, -0.3126210127413742, -0.2918917057215822,
-0.27458833595937904, -0.26185111208110357, -0.25157202497734943,
-0.2430681893089286, -0.23582632508293955, -0.2295891886295749,
-0.22413293232318665, -0.2193108823601051, -0.21500751357109493,
-0.21114327890018103, -0.20764647249416157, -0.2044504686275559,
-0.20152688122516338, -0.19865958959053387, -0.19624527212215526},
{-0.8449946810915208, -0.5111202738895599, -0.39995114730879777,
-0.3459873773471145, -0.31279520824966767, -0.2920667300866171,
-0.27476400776413357, -0.2620273188169904, -0.25174794702343206,
-0.24324344451883917, -0.23600031321325332, -0.22976199215463566,
-0.22430433229362734, -0.2194809680911476, -0.21517636680971464,
-0.21131096996452925, -0.20781299712757573, -0.20461585463795018,
-0.20169116029262568, -0.19882267863806646, -0.1964068728325401},
{-0.8448732550857585, -0.5112097908373698, -0.4001019529237624,
-0.3461558938283815, -0.3129700397967099, -0.2922423714139768,
-0.27494028087630795, -0.2622041147691334, -0.25192445532377405,
-0.24341927210332415, -0.2361748665188088, -0.22993535256421183,
-0.2244762817121, -0.21965159591695738, -0.21534575932992084,
-0.21147919409008864, -0.20798004933658376, -0.20478176329618236,
-0.20185595715429372, -0.19898627998020402, -0.19656898324967642},
{-0.8447524606449406, -0.5113000144035027, -0.4002534468047543,
-0.3463250699672926, -0.3131455091290718, -0.2924186314741064,
-0.27511715689513494, -0.26238150159201723, -0.25210155157253666,
-0.24359567364456325, -0.23634998666182128, -0.2301092713541948,
-0.22464878223297546, -0.219822767409255, -0.2155156927195776,
-0.21164795280549242, -0.20814763069506625, -0.20494819615532833,
-0.20202127330298936, -0.19915039508441623, -0.19673160499098685},
{-0.8446322994939237, -0.5113909464087669, -0.4004056307505266,
-0.346494907519741, -0.3133216179885494, -0.29259551186282806,
-0.2752946374963585, -0.262559480951154, -0.25227923746115266,
-0.24377265071586862, -0.23652567526426083, -0.23028375005435464,
-0.22482183549050205, -0.2199944841386241, -0.21568616852266587,
-0.21181724762334397, -0.20831574271323916, -0.20511515469081587,
-0.20218711019890634, -0.19931502541680857, -0.19689473958544568},
{-0.8445127733845084, -0.5114825886881817, -0.40055850655323866,
-0.34666540831335624, -0.3134983681156882, -0.29277301433523917,
-0.27547272432639147, -0.2627380545264941, -0.2524575146796906,
-0.24395020496717734, -0.23670193399607342, -0.2304587901649029,
-0.22499544304866959, -0.2201667477021374, -0.2158571883685454,
-0.21198708009808342, -0.208484386910186, -0.20528264044560274,
-0.20235346937079157, -0.19948017251363126, -0.19705838862876135},
{-0.8443938840451324, -0.5115749430721053, -0.4007120759930558,
-0.3468365741374555, -0.31367576130764974, -0.2929511406034635,
-0.2756514190368762, -0.26291722401151674, -0.2526363849229938,
-0.2441283380052255, -0.23687876450946987, -0.23063439324812407,
-0.22516960658151675, -0.22033955971005525, -0.21602875380608566,
-0.2121574517911995, -0.2086535648378458, -0.20545065494388837,
-0.20252035231010268, -0.19964583786099865, -0.19722255364740704},
{-0.8442756332287331, -0.5116680113994789, -0.40086634087128914,
-0.34700840677157885, -0.3138537992867896, -0.2931298922831047,
-0.275830723296167, -0.2630969910668455, -0.25281584991353157,
-0.2443070514196961, -0.2370561684558652, -0.23081056079763584,
-0.2253443276786129, -0.22051292174978698, -0.2162008664130326,
-0.21232836420608692, -0.20882327802257805, -0.20561919970509734,
-0.20268776048862946, -0.19981202296196443, -0.197387236196505},
{-0.8441580226766519, -0.5117617955144169, -0.40102130298475913,
-0.3471809080666617, -0.3140324838180959, -0.2933092712148664,
-0.2760106387753467, -0.2632773574065368, -0.2529959113592213,
-0.24448634685734305, -0.237234147540903, -0.23098729437390375,
-0.2255196079867119, -0.22068683546171997, -0.21637352781294794,
-0.2124998189328835, -0.20899352804997307, -0.20578827628423824,
-0.2028556954302303, -0.19997872933595318, -0.19755243781412446},
{-0.8440410541521146, -0.5118562972781433, -0.4011769641515457,
-0.34735407980736, -0.31421181670714304, -0.293489279005712,
-0.2761911671411781, -0.2634583247270257, -0.253176570973892,
-0.2446662259724235, -0.23741270342520693, -0.2311645955030599,
-0.22569544913017126, -0.220861302488629, -0.21654673954537884,
-0.21267181751557018, -0.20916431645832745, -0.2059578861889122,
-0.20302415863216083, -0.20014595850159367, -0.1977181599997948},
{-0.8439247294078882, -0.511951518525791, -0.40133332617153883,
-0.3475279238298299, -0.31439179970539044, -0.29366991743449944,
-0.2763723100962352, -0.2636398947397538, -0.253357830479672,
-0.24484669038656648, -0.23759183778224724, -0.23134246572783468,
-0.2258718526895791, -0.22103632445714538, -0.2167205032332049,
-0.21284436152222952, -0.20933564479503275, -0.20612803098151744,
-0.20319315162691964, -0.20031371199581827, -0.1978844042516812},
{-0.8438090502118598, -0.5120474611399004, -0.40149039085861205,
-0.347702441954425, -0.314572434610227, -0.2938511882294961,
-0.27655406929352466, -0.2638220691784454, -0.2535396916176751,
-0.24502774176994535, -0.23777155234165548, -0.2315209066148327,
-0.22604882030850604, -0.22121190303619187, -0.2168948204418939,
-0.21301745251594184, -0.20950751464408768, -0.20629871219125562,
-0.20336267590096213, -0.2004819913653364, -0.1980511720666982},
{-0.8436940183244133, -0.5121441269714637, -0.40164816005085413,
-0.34787763601593724, -0.3147537232235891, -0.2940330930578057,
-0.27673644644698925, -0.2640048497604539, -0.25372215613083426,
-0.24520938178295637, -0.2379518487811083, -0.23169991974066306,
-0.22622635359812193, -0.22138803987741085, -0.2170696927763629,
-0.21319109208445752, -0.20967992755174691, -0.20646993136347191,
-0.20353273298781005, -0.2006507981654977, -0.19821846491549877},
{-0.8435796355267939, -0.5122415179076825, -0.40180663555645424,
-0.3480535078554112, -0.3149356673100101, -0.2942156337726374,
-0.27691944323134976, -0.26418823820995385, -0.25390522576105923,
-0.24539161209884242, -0.23813272880545355, -0.2318795066370285,
-0.226404454171643, -0.22156473667689625, -0.21724512183152456,
-0.21336528179836023, -0.20985288511838007, -0.20664169005260646,
-0.20370332440836592, -0.20082013393528086, -0.19838628426259675},
{-0.8434659035892196, -0.5123396358174546, -0.4019658192165707,
-0.3482300593124137, -0.31511826870405457, -0.29439881200494256,
-0.27710306136089, -0.26437223627931417, -0.25408890225082814,
-0.2455744343826609, -0.23831419413920685, -0.23205966889190677,
-0.2265831236378517, -0.22174199510754988, -0.2174211091835332,
-0.21354002324369503, -0.21002638890252, -0.20681398982037535,
-0.2038744516804627, -0.20099000025231817, -0.19855463152748598},
{-0.8433528243008936, -0.5124384825878678, -0.40212571287088394,
-0.3484072922356063, -0.31530152919140164, -0.2945826295583629,
-0.27728730254909806, -0.2645568457082845, -0.2542731873563753,
-0.24575785033266584, -0.23849624648357803, -0.23224040807735946,
-0.22676236360177882, -0.22191981687024054, -0.21759765644708295,
-0.21371531801207766, -0.21020044048407271, -0.20698683220371095,
-0.2040461163701366, -0.20116039868355529, -0.19872350819161966},
{-0.8432403994321476, -0.5125380601043048, -0.4022863183389518,
-0.34858520849070374, -0.3154854506068432, -0.2947670882113016,
-0.2774721684688757, -0.26474206824752855, -0.2544580828398466,
-0.2459418616382436, -0.2386788875817274, -0.23242172576908615,
-0.22694217569824104, -0.22209820366640542, -0.21777476520992423,
-0.21389116770308192, -0.2103750414842125, -0.20716021876671675,
-0.2042183199990859, -0.2013313308502802, -0.19889291562571998},
{-0.8431286307903179, -0.5126383702724411, -0.4024476374977439,
-0.34876380992750455, -0.31567003475515776, -0.29495218964370906,
-0.27765766087384236, -0.26492790566408075, -0.25464359046691243,
-0.24612646998969012, -0.23886211914168598, -0.2326036235618858,
-0.22712256150214216, -0.22227715722942776, -0.21795243707651935,
-0.21406757390673192, -0.21055019343600634, -0.2073341511018043,
-0.20439106408866792, -0.20150279831773332, -0.19906285528350054},
{-0.8430175201651764, -0.5127394149862994, -0.4026096721838712,
-0.3489430984208184, -0.315855283464316, -0.2951379357265296,
-0.2778437814663448, -0.2651143597408918, -0.2548297120273446,
-0.24631167712016122, -0.2390459429408338, -0.2327861030449867,
-0.22730352267126364, -0.2224566792559699, -0.21813067367043004,
-0.2142445382448841, -0.21072589799632624, -0.2075086307379479,
-0.20456435022947517, -0.2016748027022004, -0.19923332856217257},
{-0.8429070693509857, -0.5128411961530901, -0.40277242425361237,
-0.3491230758384063, -0.3160411985771816, -0.2953243281264122,
-0.2780305319679428, -0.2653014322262379, -0.25501644926339395,
-0.24649748471119892, -0.23923036070027592, -0.2329691658115962,
-0.2274850608127963, -0.22263677151499905, -0.21830947656223998,
-0.21442206231267846, -0.2109021567483751, -0.20768365925641774,
-0.2047381799517325, -0.20184734560041306, -0.19940433683598258},
{-0.8427972801510464, -0.5129437156838321, -0.4029358955626776,
-0.34930374405394105, -0.31622778190899226, -0.29551136867996775,
-0.2782179141073584, -0.2654891249019329, -0.2552038039660829,
-0.24668389449891492, -0.23941537414464165, -0.2331528134633345,
-0.2276671775118757, -0.22281743570965773, -0.21848884738972174,
-0.21460014773447256, -0.21107897127490105, -0.20785923824666952,
-0.2049125548403481, -0.20202042863058978, -0.19957588151339678},
{-0.8426881543837226, -0.5130469755059153, -0.40310008799053776,
-0.3494851049664476, -0.316415035331147, -0.29569905919686335,
-0.2784059296184296, -0.26567743958241863, -0.25539177793768886,
-0.24687090822339997, -0.2396009850721157, -0.2333370476167147,
-0.22784987439945326, -0.22299867362266923, -0.21866878775665555,
-0.21477879614826634, -0.2112563432232264, -0.20803536929793154,
-0.20508747646215397, -0.20219405343289054, -0.19974796400504147},
{-0.8425796938595909, -0.5131509775420113, -0.4032650034027938,
-0.3496671604477797, -0.31660296068253047, -0.29588740137467084,
-0.2785945802553442, -0.265866378051669, -0.2555803729443369,
-0.24705852760871494, -0.23978719520698633, -0.23352186989438906,
-0.2280331531203501, -0.2231804869933285, -0.21884929930013186,
-0.2149580091640928, -0.2114342741828068, -0.2082120539829475,
-0.20526294637875253, -0.20236822161393775, -0.1999205856577646},
{-0.8424719003858172, -0.5132557237180322, -0.40343064368005344,
-0.34984991241435637, -0.31679155981134954, -0.2960763971261713,
-0.2787838677346599, -0.2660559421032076, -0.2557695908126334,
-0.24724675438210397, -0.2399740063549416, -0.23370728190297996,
-0.22821701528891936, -0.22336287759844708, -0.21903038363666383,
-0.21513778840392206, -0.21161276582029132, -0.20838929392118644,
-0.20543896620461055, -0.20254293482219055, -0.20009374788298828},
{-0.8423647757980461, -0.513361215974669, -0.4035970106976947,
-0.35003336275258334, -0.31698083459275495, -0.29626604815223345,
-0.27897379382841336, -0.2662461335593207, -0.2559594333038149,
-0.24743559031333007, -0.2401614202676683, -0.23389328528514852,
-0.22840146255043692, -0.2235458471967604, -0.21921204237946768,
-0.21531813553781376, -0.2117918197312747, -0.2085670906994892,
-0.2056155374912123, -0.20271819468018748, -0.20026745207076146},
{-0.8422583219111743, -0.513467456252954, -0.4037641063561068,
-0.35021751338115337, -0.31717078688291167, -0.29645635630879497,
-0.27916436028158387, -0.2664369542202394, -0.2561499022430098,
-0.24762503714441664, -0.2403494387116325, -0.234079881671164,
-0.2285864964993607, -0.2237293975895227, -0.21939427719530613,
-0.21549905217000287, -0.2119714375435251, -0.20874544592993516,
-0.20579266186462064, -0.20289400280933023, -0.20044169961522584},
{-0.8421525405705665, -0.5135744465007974, -0.4039319325310089,
-0.35040236620864107, -0.3173614185606084, -0.29664732342769184,
-0.27935556882141555, -0.2666284059338295, -0.2563409994216954,
-0.24781509663569068, -0.2405380634792209, -0.23426707269243252,
-0.22877211881871062, -0.2239135305300124, -0.21957708970262502,
-0.21568053999828862, -0.2121516209258516, -0.20892436121300761,
-0.2059703409023541, -0.20307036085546315, -0.20061649190381559},
{-0.8420474335998733, -0.5136821886777625, -0.40410049113791047,
-0.350587923150556, -0.3175527315149793, -0.29683895125140225,
-0.27954742126644305, -0.26682049051180456, -0.2565327266601116,
-0.24800577055452777, -0.24072729635952328, -0.23445485999377524,
-0.2289583311152228, -0.22409824782994292, -0.2197604815271461,
-0.21586260063736518, -0.21233237147680484, -0.2091038381548742,
-0.20614857620023486, -0.2032472704599968, -0.2007918303461338},
{-0.8419430028512807, -0.5137906847454587, -0.40426978406890157,
-0.3507741861502609, -0.3177447276231078, -0.29703124172635853,
-0.279739919329586, -0.2670132097948681, -0.25672508578134057,
-0.24819706067228253, -0.24091713916288882, -0.2346432452549152,
-0.22914513506907497, -0.22428355127499344, -0.2199444543844038,
-0.21604523575376788, -0.21251369088554384, -0.20928387838955587,
-0.20632736941627172, -0.20342473323580634, -0.20096771639134658},
{-0.8418392501573067, -0.5138999366619714, -0.4044398132305105,
-0.35096115711735365, -0.317937408783564, -0.29722419656229704,
-0.2799330648152818, -0.2672065656314544, -0.25691807858629545,
-0.24838896874473448, -0.24110759365623835, -0.23483223011294285,
-0.22933253234793938, -0.22446944267755953, -0.22012900986658224,
-0.21622844702051225, -0.2126955808017783, -0.20946448351503477,
-0.20650672212263999, -0.20360275081486634, -0.20114415141301834},
{-0.8417361773808807, -0.5140099464090895, -0.4046105805419984,
-0.35114883800360985, -0.31813077688332214, -0.297417817673022,
-0.28012685949056504, -0.26740055985817435, -0.25711170689226037,
-0.24858149659348783, -0.2412986616766375, -0.2350218162383726,
-0.22952052454957084, -0.22465592384071442, -0.22031414967523233,
-0.2164122360932197, -0.21287804286839673, -0.20964565518158906,
-0.20668663597336945, -0.203781324845977, -0.20132113690522146},
{-0.8416337863751551, -0.5141207159717283, -0.4047820879276287,
-0.35133723076239676, -0.31832483385528576, -0.2976121069156079,
-0.2803213051226976, -0.26759519434483536, -0.25730597255073917,
-0.2487746459941036, -0.2414903450011252, -0.23521200533241426,
-0.22970911340223665, -0.22484299655400264, -0.22049987545403837,
-0.21659660467162212, -0.21306107875818725, -0.20982739500800562,
-0.20686711257008028, -0.20396045694837994, -0.20149867430541235},
{-0.8415320789936231, -0.5142322473255376, -0.4049543373034794,
-0.35152633731297556, -0.31851958158370053, -0.2978070660500407,
-0.28051640351600327, -0.26779047094169073, -0.2575008773638956,
-0.24896841872339337, -0.2416826454390275, -0.2354027990514851,
-0.2298983005326818, -0.2250306626508518, -0.22068618887431057,
-0.21678155441361469, -0.21324469011290148, -0.210009704594313,
-0.20704815354702077, -0.20414014875882458, -0.2016767650853808},
{-0.8414310571010901, -0.5143445424644142, -0.4051273305913128,
-0.3517161596396363, -0.318715021989874, -0.29800269704924176,
-0.2807121564388808, -0.2679863915319629, -0.25769642317845864,
-0.24916281657738182, -0.24187556483411754, -0.2355941990821293,
-0.23008808763734123, -0.22521892393217513, -0.22087309165215174,
-0.21696708699550982, -0.213428878645459, -0.21019258560056642,
-0.207229760554128, -0.2043204019150835, -0.20185541074670255},
{-0.8413307225722519, -0.5144576033943054, -0.40530106974472346,
-0.3519066997014306, -0.31891115701830586, -0.2981990016895679,
-0.2809085657131618, -0.2681829579811392, -0.25789261181910206,
-0.24935784137664996, -0.24206910498617162, -0.23578620715932175,
-0.23027847641003518, -0.22540778223560665, -0.2210605854431833,
-0.21715320416865325, -0.21361364601659716, -0.2103760396587404,
-0.20741193525611834, -0.20450121805617982, -0.2020346128078927},
{-0.8412310772752107, -0.5145714321152468, -0.40547555669593294,
-0.35209795947071143, -0.31910798859451006, -0.2983959819169968,
-0.2811056331628379, -0.2683801722090493, -0.2580894451559743,
-0.24955349495883183, -0.24226326774817153, -0.23597882498938816,
-0.23046946853833106, -0.22559723940730692, -0.2212486719924982,
-0.21733990759582866, -0.21379899391990875, -0.21056006843627983,
-0.2075946793311232, -0.20468259884034978, -0.20221437282191346},
{-0.8411321230918247, -0.5146860306385292, -0.4056507933796638,
-0.3522899409083493, -0.31930551862808443, -0.29859363956200013,
-0.28130336051515314, -0.26857803604173114, -0.25828692496213534,
-0.249749779072431, -0.24245805490443217, -0.2361720542552348,
-0.2306610656904695, -0.2257872972019186, -0.22143735290819677,
-0.2175271989436851, -0.21398492399487168, -0.2107446735103622,
-0.2077779943629139, -0.2048645458834244, -0.20239469229250062},
{-0.8410338619118534, -0.5148014009830604, -0.40582678175610454,
-0.3524826459843098, -0.31950374908080903, -0.29879197646857847,
-0.2815017496351402, -0.2687765514062903, -0.2584850531392249,
-0.24994669556440385, -0.24265346828804013, -0.23636589670354624,
-0.23085326954731045, -0.22597795748720273, -0.22162662994924176,
-0.21771507994480999, -0.21417143794747062, -0.2109298565676454,
-0.20796188207475552, -0.2050470608530759, -0.20257557283446204},
{-0.8409362956139148, -0.5149175451720112, -0.4060035237766897,
-0.35267607671130463, -0.31970268190138995, -0.29899099463500534,
-0.2817008023125709, -0.26897572019402105, -0.2586838315090745,
-0.25014424626237997, -0.24284950975231823, -0.2365603540772554,
-0.23104608185690267, -0.2261692220868099, -0.2218165048402625,
-0.21790355232030834, -0.21435853747072997, -0.21111561928375977,
-0.2081463441371625, -0.20523014542186502, -0.20275701605237373},
{-0.8408394260935665, -0.5150344652354306, -0.40618102140410883,
-0.3528702350700996, -0.3199023190562684, -0.29919069585685065,
-0.2819005204090672, -0.269175544321115, -0.2588832619298955,
-0.2503424329960353, -0.24304618113694687, -0.23675542812645745,
-0.23123950431954654, -0.22636109284667327, -0.2220069792600725,
-0.2180926177876472, -0.2145462242837084, -0.21130196330386752,
-0.2083313822092805, -0.20541380123813724, -0.2029390235596793},
{-0.8407432552522209, -0.5151521632101321, -0.40635927660707694,
-0.3530651230582862, -0.32010266248107655, -0.2993910820941892,
-0.28210090572747504, -0.26937602569580577, -0.25908334625319185,
-0.2505412576076651, -0.24324348425045628, -0.23695112059886014,
-0.2314335386355424, -0.22655357159976575, -0.22219805496831668,
-0.21828227805531242, -0.21473450002213212, -0.21148889028268059,
-0.20851699799254675, -0.205598029965131, -0.20312159704565147},
{-0.8406477849811154, -0.5152706411426493, -0.406538291347033,
-0.35326074270278696, -0.32030371417954484, -0.29959215528185723,
-0.28230196008428265, -0.2695771662398556, -0.25928408633512845,
-0.2507407219371771, -0.2434414209701572, -0.23714743327298038,
-0.2316281865549854, -0.2267466601634851, -0.22238973366449954,
-0.21847253486657792, -0.21492336645428622, -0.21167640190526527,
-0.20870319319180908, -0.2057828333214502, -0.2033047381552251},
{-0.8405530172064459, -0.5153899010857685, -0.4067180676196358,
-0.35345709597868336, -0.3205054760994699, -0.2997939172437327,
-0.2825036853586198, -0.26977896789321676, -0.2594854840435801,
-0.2509408278124283, -0.24363999311458429, -0.23734436795223246,
-0.23182344975623437, -0.22694036039968069, -0.22258201712031678,
-0.2186633899549406, -0.21511282521532848, -0.2118644998815853,
-0.20888996950657202, -0.2059682129676048, -0.20348844863917748},
{-0.8404589538305345, -0.5155099451048386, -0.4068986073892802,
-0.3536541849414334, -0.32070795022968923, -0.29999637003106727,
-0.28270608336458736, -0.2699814325699208, -0.2596875412609734,
-0.25114157712130236, -0.24383920257707814, -0.23754192638170935,
-0.23201933002485475, -0.22713467412108912, -0.2227749070674463,
-0.21885484506196917, -0.21530287809980564, -0.2120531858618051,
-0.20907732864179707, -0.20615417062685992, -0.20367273018496235},
{-0.8403655967653094, -0.5156307752371845, -0.4070799126603788,
-0.35385201158601376, -0.3209111385806409, -0.30019951545364165,
-0.2829091559694916, -0.27018456220457665, -0.2598902598242603,
-0.25134297168597186, -0.24403905114388635, -0.237740110392906,
-0.23221582909957306, -0.22732960317330253, -0.22296840522506045,
-0.2190469019228658, -0.21549352674742295, -0.2122424615363343,
-0.20926527230858483, -0.20634070795074422, -0.20385758455859104},
{-0.8402729479348636, -0.515752393566629, -0.4072619853963033,
-0.3540505779557179, -0.3211150430922771, -0.30040335551097996,
-0.283112905027906, -0.2703883587164455, -0.2600936416033619,
-0.2515450133827244, -0.2442395406878859, -0.23793892178173337,
-0.23241294866818407, -0.2275251493987298, -0.22316251334586923,
-0.21923956225327856, -0.21568477289383736, -0.21243232861138495,
-0.20945380223474785, -0.2065278266622954, -0.2040430135468796},
{-0.840181009276705, -0.515874802181429, -0.40744482763795986,
-0.3542498860952037, -0.3213196658286961, -0.30060789218839545,
-0.2833173323955407, -0.2705928241116453, -0.26029768850014534,
-0.25174770410490055, -0.24444067307285877, -0.23813836241129138,
-0.23261069056047745, -0.2277213146600161, -0.2233572332404492,
-0.2194328279013007, -0.21587661828220917, -0.2126227888422818,
-0.209642920153442, -0.20671552853173125, -0.2042290189576761},
{-0.8400897827116296, -0.5159980031590408, -0.4076284413533813,
-0.3544499380304842, -0.3215250087647519, -0.3008131273389836,
-0.2835224399748313, -0.2707979602959085, -0.26050240236338595,
-0.2519510457021852, -0.24464245013962227, -0.23833843409147448,
-0.23280905648766748, -0.22791810076967067, -0.22355256661774092,
-0.2196267005599566, -0.21606906462125153, -0.2128138438613405,
-0.2098326277665592, -0.20690381521581003, -0.20441560259018843},
{-0.8399992701814654, -0.516121998580843, -0.40781282856733014,
-0.3546507358242934, -0.32173107391588474, -0.3010190630393481,
-0.2837282295912473, -0.271003769254321, -0.2607077851141639,
-0.252155040072239, -0.24484487377992536, -0.23853913867174015,
-0.23300804825555588, -0.228115509597842, -0.2237485152915042,
-0.2198211819726339, -0.21626211367106407, -0.21300549545310332,
-0.21002292685898283, -0.20709268844302642, -0.20460276630683438},
{-0.8399094736243455, -0.516246790555158, -0.4079979912989984,
-0.3548522815241313, -0.3219378633161796, -0.3012257011557722,
-0.2839347031804209, -0.2712102529465028, -0.26091383861023587,
-0.2523596890823683, -0.24504794582855993, -0.2387404780140514,
-0.2332076676353836, -0.2283135429572667, -0.223945081010811,
-0.22001627397241919, -0.21645576713433456, -0.2131977453119589,
-0.21021381914351878, -0.207282149950629, -0.20479051196559794},
{-0.839820394990511, -0.5163723811859882, -0.40818393156894217,
-0.35505457719227707, -0.32214537897948503, -0.3014330437113131,
-0.2841418625987444, -0.2714174133228653, -0.2611205647309589,
-0.25256499465763227, -0.24525166811599775, -0.2389424540120899,
-0.23340791641635406, -0.22851220271707007, -0.22414226557702932,
-0.22021197829917583, -0.21665002678230394, -0.2133905951872066,
-0.21040530636855692, -0.20747220144869516, -0.20497884146573142},
{-0.8397320362291225, -0.5164987725738683, -0.4083706513877132,
-0.3552576249253434, -0.32235362295079995, -0.3016410927060633,
-0.28434970974456064, -0.2716252523862295, -0.2613279653913878,
-0.25277095869489585, -0.24545604256172737, -0.23914506852281647,
-0.2336087963846012, -0.2287114907128398, -0.2243400707756109,
-0.22040829676416251, -0.2168448943561998, -0.2135840468116612,
-0.21059739032239122, -0.20766284469357288, -0.2051677566704484},
{-0.8396443992957643, -0.5166259668479825, -0.4085581527983777,
-0.35546142673990744, -0.3225625972677335, -0.30184985003893416,
-0.284558246562824, -0.271833772097807, -0.26153604247451767,
-0.252977583095344, -0.24566107097518852, -0.23934832344650658,
-0.23381030934024238, -0.22891140878982696, -0.22453849836881545,
-0.220605231094396, -0.2170403716124838, -0.2137781019062004,
-0.21079007270793682, -0.20785408138783623, -0.2053572594917341},
{-0.8395574861575028, -0.5167539661318301, -0.40874643784411546,
-0.355665984776806, -0.32277230396425693, -0.30205931784405493,
-0.2847674749223188, -0.27204297444995973, -0.26174479789494853,
-0.2531848697701662, -0.24586675527859825, -0.2395522207200429,
-0.23401245714364904, -0.22911195880612922, -0.22473755021792385,
-0.2208027831599111, -0.21723646033547084, -0.21397276226116446,
-0.2109833553597582, -0.20804591328521838, -0.20554735187681672},
{-0.8394712987699791, -0.5168827725498204, -0.4089355085544639,
-0.3558713010793326, -0.32298274512095304, -0.30226949799703107,
-0.2849773967633382, -0.2722528614391422, -0.2619542335370397,
-0.253392820641011, -0.2460730972844658, -0.23975676220436526,
-0.23421524161142315, -0.22931314258994462, -0.22493722807541872,
-0.22100095470011638, -0.2174331622467207, -0.21416802960300174,
-0.21117723997201665, -0.20823834211660142, -0.20573803568868243},
{-0.8393858391170284, -0.517012388242847, -0.409125366991816,
-0.35607737777638704, -0.3231939227688372, -0.3024803925851529,
-0.2851880140145795, -0.2724634350482802, -0.2621643513340359,
-0.25360143766226884, -0.2462800988809022, -0.23996194987432773,
-0.23441866455470972, -0.2295149620091479, -0.22513753381463175,
-0.22119974757470118, -0.21763047913816536, -0.21436390572921482,
-0.2113717283797314, -0.20843136959967978, -0.20592931292048888},
{-0.8393011091655467, -0.5171428153714714, -0.4093160152069686,
-0.35628421696162604, -0.32340583901634545, -0.3026920036153342,
-0.2853993285970091, -0.2726746973108902, -0.2623751531735934,
-0.2538107227610453, -0.246487761959429, -0.24016778568216068,
-0.23462272786684935, -0.22971741890512476, -0.2253384692049849,
-0.22139916354922207, -0.21782841281151377, -0.21456039238421454,
-0.2115668223401599, -0.2086249975195642, -0.20612118546603142},
{-0.839217110904201, -0.5172740560685725, -0.4095074552542428,
-0.35649182070437746, -0.32361849590552083, -0.30290433304753606,
-0.28561134247001974, -0.2728866501900029, -0.2625866409744049,
-0.2540206778517131, -0.2466960883377851, -0.24037427152961754,
-0.2348274333609197, -0.22992051512835587, -0.22554003605625894,
-0.2215992044509676, -0.21802696498764362, -0.21475749134651778,
-0.21176252361692605, -0.20881922757018856, -0.20631365522285705},
{-0.8391338463100055, -0.5174061124987475, -0.40969968920433075,
-0.35670019115639207, -0.32383189550989755, -0.303117383013614,
-0.2858240575609443, -0.27309929572231795, -0.2627988166667592,
-0.25423130491719803, -0.2469050799264778, -0.24058140939416717,
-0.23503278295447672, -0.23012425253148194, -0.22574223625838385,
-0.2217998721081358, -0.21822613747940522, -0.21495520439032134,
-0.21195883401912852, -0.20901406152211166, -0.20650672412932636},
{-0.8390513173894192, -0.517538986838531, -0.40989271913224457,
-0.3569093304328135, -0.3240460399554195, -0.3033311554657985,
-0.2860374758539592, -0.2733126359345306, -0.263011682147976,
-0.25444260589165424, -0.24711473860645583, -0.2407892012776074,
-0.23523877854745479, -0.23032863298305983, -0.22594507160852118,
-0.22200116836415873, -0.21842593207497885, -0.2151535333512129,
-0.21215575535416065, -0.20920950114202697, -0.2067003941438088},
{-0.8389695261280394, -0.5176726812576362, -0.41008654711015424,
-0.3571192406409409, -0.32426093129402034, -0.30354565249342613,
-0.2862515992998169, -0.2735266728142278, -0.263225239348003,
-0.25465458273640706, -0.24732506619375272, -0.24099764909169608,
-0.235445421970212, -0.2305336583007147, -0.22614854393543737,
-0.22220309499084578, -0.2186263505233228, -0.2153524799675779,
-0.21235328937893883, -0.20940554810397316, -0.20689466707653992},
{-0.8388884745246514, -0.5178071979291872, -0.41028117522932916,
-0.35732992394196117, -0.3244765716708571, -0.3037608761782167,
-0.28646642987075666, -0.2737414084485863, -0.26343949023794266,
-0.2548672374423404, -0.24753606463718825, -0.24120675487733934,
-0.2356527152290937, -0.2307393304137122, -0.22635265514475122,
-0.22240565391075506, -0.21882739468082946, -0.21555204613071055,
-0.212551437938032, -0.2096022042868526, -0.20708954491294662},
{-0.8388081645927628, -0.5179425390473398, -0.4104766055804703,
-0.35754138244749356, -0.32469296316719465, -0.3039768284945694,
-0.28668196956868996, -0.27395684483167315, -0.2636544366999942,
-0.2550805719706659, -0.24774773577291853, -0.24141652060393426,
-0.2358606601937936, -0.23094565112683085, -0.22655740704260552,
-0.22260884695231198, -0.21902906627235552, -0.2157522335894555,
-0.2127502028233721, -0.20979947140460808, -0.20728502950896655},
{-0.8387285983405377, -0.5180787068113659, -0.410672840258826,
-0.35775361832679664, -0.32491010789726715, -0.30419351162004205,
-0.2868982203564201, -0.27417298401337575, -0.26387008072208573,
-0.25529458830283147, -0.24796008149530735, -0.24162694828976328,
-0.236069258825637, -0.23115262234580314, -0.22676280153189055,
-0.22281267591210963, -0.21923136716452518, -0.21595304417996886,
-0.2129495858653172, -0.20999735121279173, -0.20748112270746333},
{-0.8386497777854061, -0.5182157034122383, -0.4108698813583942,
-0.3579666337124081, -0.3251280079952039, -0.30441092753437715,
-0.2871151842640529, -0.27438982802721057, -0.26408642420039996,
-0.2555092884138048, -0.2481731036735937, -0.24183803991513741,
-0.2362785130959537, -0.23136024592088233, -0.22696884044876242,
-0.22301714267609896, -0.2194342991334679, -0.21615447975204916,
-0.21314958885398028, -0.21019584551413573, -0.2076778263808592},
{-0.838571704954461, -0.5183535310658272, -0.411067731004664,
-0.35818043077517814, -0.32534666558217396, -0.3046290783643144,
-0.28733286327621954, -0.2746073789322736, -0.26430346911354263,
-0.2557246743081123, -0.24838680417667547, -0.2420497974914042,
-0.23648842492605127, -0.23156852371334935, -0.22717552565814003,
-0.22322224911704325, -0.21963786394690032, -0.21635654214946953,
-0.21335021361471718, -0.21039495604657077, -0.20787514235769322},
{-0.8384943818639385, -0.5184921919894805, -0.4112663912916332,
-0.3583950116736787, -0.3255660828042437, -0.3048479662260206,
-0.287551259393922, -0.27482563879596, -0.26452121738168444,
-0.2559407479894844, -0.2486011849254055, -0.24226222305583178,
-0.23669899634148805, -0.2317774576337115, -0.22738285905961675,
-0.22342799708792427, -0.21984206350214208, -0.21655923317098313,
-0.213551461989141, -0.2105946846641018, -0.20807307248355755},
{-0.838417810555768, -0.5186316884080497, -0.411465864365141,
-0.3586103785797832, -0.32578626178997183, -0.30506759313493603,
-0.2877703746740963, -0.27504460965678845, -0.26473967098229423,
-0.25615751143504895, -0.2488162477707192, -0.2424753186099906,
-0.23691022927584982, -0.23198704953574634, -0.22759084253630135,
-0.22363438846900863, -0.2200468995420124, -0.21676255472232242,
-0.21375333580488132, -0.21079503312444103, -0.20827161859097032},
{-0.838341993068525, -0.518772022563553, -0.4116661523426046,
-0.35882653368639694, -0.3260072046990672, -0.3052879613045434,
-0.28799021112229184, -0.27526429360079874, -0.2649588319121676,
-0.25637496668127824, -0.24903199464563386, -0.24268908618250862,
-0.23712212580903724, -0.23219730133405392, -0.22779947798949252,
-0.22384142508656169, -0.2202523739828166, -0.2169665086206578,
-0.21395583688990882, -0.21099600323657342, -0.20847078246617912},
{-0.8382669314400459, -0.5189131966719742, -0.4118672573628146,
-0.3590434791642565, -0.3262289136977188, -0.3055090727308425,
-0.28821077080237956, -0.27548469268651843, -0.26517870205668714,
-0.2565931157351997, -0.24924842739733322, -0.24290352777109092,
-0.23733468793250267, -0.23240821487763696, -0.22800876729070296,
-0.22404910886211837, -0.22045848860193473, -0.2171710967746776,
-0.2141589670935673, -0.21119759679811523, -0.20867056587962907},
{-0.8381926277116349, -0.5190552129874959, -0.41206918155376115,
-0.35926121720092397, -0.3264513909097104, -0.30573092960662507,
-0.2884320557384399, -0.2757058089646307, -0.2653992834426617,
-0.2568119605952006, -0.24946554791961262, -0.24311864543358297,
-0.23754791765065875, -0.23261979208507455, -0.22821871234452829,
-0.22425744165821015, -0.22066524523313547, -0.21737632098347603,
-0.2143627282430316, -0.21139981562816956, -0.2088709706293912},
{-0.8381190839504029, -0.5191980737730546, -0.4122719270815196,
-0.35947975000829047, -0.3266746385517081, -0.3059535340639741,
-0.28865406798320237, -0.2759276445784735, -0.2656205780383516,
-0.25703150332708447, -0.24968335812559417, -0.24333444118258285,
-0.23776181703908605, -0.23283203487983428, -0.22842931508444053,
-0.22446642537818207, -0.22087264577464794, -0.21758218324498557,
-0.21456712220708596, -0.21160266157937713, -0.209071998519903},
{-0.8380463022102163, -0.5193417812885173, -0.412475496082493,
-0.35969907978244464, -0.3268986587756899, -0.30617688816937516,
-0.2888768096348713, -0.27615020154746617, -0.2658425878092885,
-0.25725174593128486, -0.24990185990327518, -0.24355091703318976,
-0.2379763881103827, -0.23304494513968166, -0.22864057739900545,
-0.22467606189661637, -0.22108069203579817, -0.2177886853205564,
-0.21477215082336443, -0.21180613645151425, -0.20927365130910403},
{-0.8379742845482383, -0.5194863377903403, -0.41267989074196976,
-0.359919208741303, -0.32712345376478424, -0.30640099417075817,
-0.2891002827335569, -0.27637348200323686, -0.2660653147515859,
-0.25747269043370125, -0.2501210551915847, -0.24376807503392683,
-0.23819163297537216, -0.23325852480820686, -0.22885250123943024,
-0.2248863530841163, -0.22128938591924907, -0.217995829174356,
-0.2149778159773632, -0.2120102421001775, -0.2094759307539107},
{-0.8379030330412434, -0.5196317455695407, -0.41288511320976795,
-0.3601401391052832, -0.3273490257294043, -0.30662585408629184,
-0.28932448938962807, -0.27659748805092477, -0.2662887608548772,
-0.2576943389034341, -0.2503409458479382, -0.24398591719341312,
-0.2384075537050876, -0.23347277578045578, -0.22906508850610408,
-0.2250973008492565, -0.22149872929162484, -0.21820361669813337,
-0.21518411954059502, -0.21221498035936293, -0.20967883864352643},
{-0.8378325497581613, -0.5197780068878046, -0.41309116567481396,
-0.3603618730917333, -0.32757537685449734, -0.30685147017129566,
-0.28954943168082536, -0.2768222217580387, -0.2665129281361942,
-0.2579166933776378, -0.25056153380705837, -0.2442044455381165,
-0.23862415235839762, -0.23368770001013672, -0.22927834114841517,
-0.2253089070994747, -0.2217087240053388, -0.21841204977374673,
-0.21539106330362756, -0.21242035307648166, -0.2098823767163367},
{-0.8377628367795751, -0.5199251240569538, -0.41329805031057276,
-0.36058441293789656, -0.32780250934149535, -0.3070778445603537,
-0.28977511168227466, -0.2770476852649608, -0.26673781856322876,
-0.2581397558943763, -0.25078282097365445, -0.2444236620843867,
-0.2388414310778444, -0.2339032994051422, -0.22949226111404641,
-0.22552117377802006, -0.221919371974991, -0.21862113034387676,
-0.21559864922960514, -0.21262636213202768, -0.21008654674983518},
{-0.8376938961933433, -0.5200730993711886, -0.4135057693180215,
-0.3608077608724898, -0.3280304254077464, -0.3073049793811151,
-0.29000153153344854, -0.2772738806573898, -0.266963434161994,
-0.2583635285271839, -0.25100480924470503, -0.24464356884834615,
-0.23905939191456582, -0.23411957592315957, -0.22970685032555593,
-0.22573410272525507, -0.22213067507323103, -0.21883086027492027,
-0.21580687913171914, -0.21283300934965155, -0.21029135052333459},
{-0.8376257300865859, -0.5202219351255053, -0.41371432487801485,
-0.36103191917334243, -0.32825912726571005, -0.307532876875257,
-0.2902286933368714, -0.2775008100945797, -0.26718977693997203,
-0.25858801331969516, -0.2512275006025675, -0.24486416787476628,
-0.23927803702520123, -0.23433653151005274, -0.2299221107628,
-0.22594769589761654, -0.22234263521750108, -0.21904124153093107,
-0.2160157549443511, -0.21304029661587265, -0.21049678983365538},
{-0.837558340550288, -0.5203716336408206, -0.41392371920790083,
-0.36125689006087214, -0.32848861714933264, -0.3077615391634936,
-0.29045659922564937, -0.27772847566245673, -0.2674168489292015,
-0.2588132123369178, -0.25145089691272915, -0.2450854611364548,
-0.23949736854979164, -0.23455416812237218, -0.23013804435800012,
-0.22616195521004556, -0.22255525428511191, -0.2192522760301472,
-0.21622527852684925, -0.21324822578094427, -0.21070286643009695},
{-0.837491729694193, -0.5205221972369145, -0.41413395451297674,
-0.361482675805064, -0.3287188972783497, -0.30799096847999863,
-0.2906852513075364, -0.27795687950811043, -0.2676446521439857,
-0.2590391276734181, -0.25167500012764776, -0.24530745067249882,
-0.2397173885498205, -0.2347724877130304, -0.23035465308839775,
-0.22637688257725586, -0.22276853419964482, -0.21946396568864657,
-0.2164354517499305, -0.213456798693187, -0.2109095820942457},
{-0.8374258996230424, -0.520673628245504, -0.41434503302627945,
-0.36170927869238767, -0.3289499699205862, -0.30822116703495794,
-0.29091465175133635, -0.278186023770445, -0.2678731886337573,
-0.2592657614121663, -0.2518998121946652, -0.24553013852130334,
-0.2399380992623037, -0.23499149226017835, -0.23057193893532713,
-0.22659247998501542, -0.22298247692538098, -0.21967631247196096,
-0.21664627656912216, -0.21366601725856071, -0.21111693869374903},
{-0.837360852442032, -0.5208259289948955, -0.41455695695401573,
-0.36193670095417474, -0.3291818372963462, -0.30845213693737605,
-0.2911448026886774, -0.27841591058597714, -0.26810246042214203,
-0.25949311555393706, -0.25212533500643985, -0.24575352664089678,
-0.24015950274906572, -0.23521118372525507, -0.23078990384317422,
-0.22680874930586015, -0.22319708430188712, -0.21988931827343094,
-0.21685775481557812, -0.2138758833192469, -0.21132493794289076},
{-0.8372965902651117, -0.5209791018342003, -0.4147697285424101,
-0.36216494490577134, -0.329414501656629, -0.30868388052363116,
-0.2913757062597142, -0.2786465421089588, -0.2683324695593683,
-0.25972119227310486, -0.25235157055874424, -0.24597761705899757,
-0.24038160121347119, -0.23543156410278243, -0.23100854982510555,
-0.22702569250452598, -0.22341235836279338, -0.22010298509519544,
-0.21706988846972308, -0.21408639877142832, -0.21153358174490222},
{-0.8372331152298784, -0.521133149120601, -0.4149833500443947,
-0.36239401282580275, -0.3296479652915423, -0.30891639992375985,
-0.2916073646673567, -0.2788779204886396, -0.2685632180767925,
-0.25994999362126237, -0.2525785207911895, -0.24620241182424252,
-0.24060439685456458, -0.2356526353701156, -0.23122787886029528,
-0.22724331156382505, -0.22362830098074937, -0.22031731486822537,
-0.21728267940250134, -0.21429756545876444, -0.21174287188125618},
{-0.837170429445905, -0.5212880731950236, -0.41519782367959124,
-0.3626239070089241, -0.3298822304325313, -0.3091496973967196,
-0.29183978008234135, -0.2791100479113311, -0.2687947080755748,
-0.26017952172333025, -0.25280618764099927, -0.24642791290500554,
-0.2408278917704365, -0.23587439953314515, -0.23144789295633927,
-0.22746160842370955, -0.2238449141309502, -0.2205323095397489,
-0.21749612956182318, -0.2145093852343507, -0.21195281022266954},
{-0.8371085350568706, -0.5214438764508031, -0.4154131517271935,
-0.3628546297603634, -0.3301172993685668, -0.309383775189076,
-0.2920729546470966, -0.27934292651639225, -0.2690269415718376,
-0.2604097786163493, -0.2530345730802992, -0.24665412233673578,
-0.24105208816047252, -0.23609685860014906, -0.2316685940681964,
-0.22768058504266264, -0.22406219977494857, -0.22074797108928124,
-0.21771024083966495, -0.21472186001119553, -0.21216339859211075},
{-0.8370474342029297, -0.521600561246828, -0.41562933645502653,
-0.3630861833844392, -0.33035317439987466, -0.30961863548532165,
-0.29230689059158976, -0.2795765584947958, -0.2692599206702653,
-0.26064076646423473, -0.25326367907166514, -0.24688104212248163,
-0.24127698819654597, -0.2363200145408655, -0.231889984249392,
-0.2279002433823507, -0.22428015986781702, -0.220964301451545,
-0.21792501522065777, -0.21493499165455887, -0.2123746388846257},
{-0.8369871290273068, -0.5217581299715448, -0.41584638013705444,
-0.3633185702034325, -0.33058985778393435, -0.3098542806279738,
-0.2925415900832604, -0.27981094601580025, -0.26949364742756643,
-0.2608724873487063, -0.25349350760109246, -0.24710867429416794,
-0.2415025941204476, -0.23654386943053396, -0.23211206552332442,
-0.22812058541478564, -0.2244987964104439, -0.22118130265494074,
-0.2181404545933674, -0.21514878202526688, -0.21258653293170937},
{-0.8369276216681669, -0.5219165850048739, -0.4160642850356453,
-0.3635517925424665, -0.3308273518309761, -0.310090712744568,
-0.29277705536162557, -0.2800460912927747, -0.26972812392023116,
-0.2611049433928656, -0.2537240606287696, -0.24733702085859477,
-0.2417289080555065, -0.2367684252365052, -0.23233483984370196,
-0.2283416131016338, -0.22471811134698783, -0.22139897662816566,
-0.21835656091968758, -0.21536323301040738, -0.21279908262124536},
{-0.8368689142976109, -0.522075928758909, -0.41628305346000616,
-0.3637858527310982, -0.3310656588373604, -0.3103279341810321,
-0.2930132886293677, -0.28028199649941143, -0.2699633522732938,
-0.2613381367235661, -0.2539553401381909, -0.24756608383722778,
-0.24195593221270428, -0.23699368400832554, -0.23255830931793753,
-0.2285633284608366, -0.22493810668538572, -0.22161732537949774,
-0.21857333616435426, -0.21557834647990148, -0.2130122898869331},
{-0.8368110090597156, -0.5222361636289179, -0.41650268769376453,
-0.3640207531119586, -0.33130478112832407, -0.31056594721985675,
-0.2932502920858724, -0.2805186638501027, -0.2701993345531264,
-0.2615720694719812, -0.254187348155142, -0.24779586526153707,
-0.24218366880222675, -0.23721964779645077, -0.2327824758880297,
-0.2287857334290493, -0.22515878444266946, -0.2218363508998209,
-0.21879078226356796, -0.21579412431879064, -0.2132261565858471},
{-0.8367539081335167, -0.5223972920415463, -0.4167231900579509,
-0.36425649601949317, -0.3315447210009097, -0.3108047540391681,
-0.2934880679987373, -0.2807560955585586, -0.27043607286645965,
-0.2618067437344962, -0.2544200866278743, -0.24802636719743987,
-0.24241212000299583, -0.23744631863337418, -0.23300734168083181,
-0.22900883002080263, -0.2253801466126788, -0.2220560551803601,
-0.2190089012108274, -0.21601056841939226, -0.21344068470193633},
{-0.8366976136872495, -0.522559316415709, -0.41694456285961223,
-0.36449308381611445, -0.3317854807844469, -0.31104435705151445,
-0.2937266186067973, -0.28099429384565155, -0.2706735693694782,
-0.26204216169753636, -0.2546535576145743, -0.24825759159421068,
-0.24264128805043583, -0.2376736985630714, -0.23323290872303915,
-0.2292326201978767, -0.2256021952395031, -0.22227644021427295,
-0.21922769496666206, -0.2162276806927821, -0.2136558761210381},
{-0.8366421278923895, -0.5227222391813484, -0.4171668084297835,
-0.36473051886059693, -0.33202706282952477, -0.3112847584212659,
-0.29396594614627247, -0.2812332609157693, -0.2709118261137746,
-0.262278325491593, -0.2548877630944162, -0.24848954058927575,
-0.24287117514882084, -0.23790178964213737, -0.23345917904032376,
-0.2294571059765076, -0.2258249322970869, -0.22249750800551737,
-0.21944716547977805, -0.21644546299751255, -0.21387173278765204},
{-0.836587452928029, -0.5228860627607901, -0.41738992906346084,
-0.3649688035250165, -0.3322694694280699, -0.31152596051322234,
-0.2942060528805541, -0.2814729989885336, -0.27115084527372346,
-0.2625152372379489, -0.25512270507090307, -0.24872221615135004,
-0.2431017834658178, -0.2381305939163667, -0.23368615466199572,
-0.2296822893152921, -0.2260483598143992, -0.2227192605386108,
-0.21966731476129553, -0.21666391722055778, -0.2140882566543496},
{-0.8365335909990108, -0.5230507896303607, -0.41761392714749945,
-0.36520794018952074, -0.3325127029658006, -0.31176796563977405,
-0.2944469410547299, -0.28171351036530723, -0.2713906289747001,
-0.2627528991579311, -0.25535838560404045, -0.24895562038216212,
-0.24333311526015677, -0.23836011349453656, -0.2339138377344625,
-0.22990817229583627, -0.22627247992079447, -0.22294169988606427,
-0.21988814478413587, -0.21688304534541203, -0.21430544974077748},
{-0.836480544291021, -0.5232164222226174, -0.41783880499974657,
-0.36544793121333896, -0.3327567657917143, -0.3120107760424844,
-0.29468861299028504, -0.2819547972159171, -0.2716311793568593,
-0.26299131335713355, -0.25559480669323875, -0.24918975531647902,
-0.24356517268824973, -0.23859035042869436, -0.23414223025019965,
-0.2301347568707115, -0.2264972945658883, -0.22316482800260928,
-0.22010965755498546, -0.21710284924836287, -0.21452331396665159},
{-0.8364283149993526, -0.5233829630107039, -0.4180645649805683,
-0.36568877902857366, -0.33300166023263955, -0.3122543941587992,
-0.2949310709374231, -0.28219686183422255, -0.27187249856308426,
-0.2632304820281206, -0.2558319704215819, -0.24942462299588897,
-0.2437979580334968, -0.23882130680715363, -0.23437133435743362,
-0.2303620450584276, -0.22672280586516536, -0.223388646952003,
-0.2203318550990616, -0.21732333084366928, -0.2147418513836783},
{-0.8363769053335091, -0.5235504144641254, -0.41829120946567855,
-0.36593048599331723, -0.33324738868770964, -0.31249882216343394,
-0.29517431723741083, -0.28243970649100447, -0.27211458874489836,
-0.26347040735197425, -0.25606987879416465, -0.24966022554099254,
-0.24403147347788945, -0.2390529847156131, -0.23460115210855292,
-0.2305900389044382, -0.2269490158661256, -0.22361315874195498,
-0.22055473938030445, -0.21754449208151527, -0.21496106395659353},
{-0.8363263174983331, -0.5237187790609141, -0.4185187408257889,
-0.36617305454626603, -0.33349395351945077, -0.3127440625039526,
-0.29541835414522666, -0.28268333341759444, -0.2723574520978218,
-0.26371109152000827, -0.2563085338759947, -0.2498965649759839,
-0.24426572124036738, -0.2392853862585298, -0.23483168556674627,
-0.2308187404335058, -0.22717592662490915, -0.22383836540905122,
-0.2207783123973286, -0.21776633486183528, -0.2151809537610916},
{-0.836276553719415, -0.523888059290698, -0.418747161430133,
-0.36641648708859975, -0.33374135709266284, -0.31299011748035355,
-0.2956631839614374, -0.2829277449086476, -0.2726010907707632,
-0.2639525367345641, -0.2565479377386737, -0.25013364342271416,
-0.2445007035520348, -0.2395185135230804, -0.23506293688262758,
-0.23104815168596815, -0.22740354024051612, -0.22406426899169674,
-0.22100257622344088, -0.21798886115175264, -0.21540152280454095},
{-0.8362276162121702, -0.5240582576431052, -0.4189764736864845,
-0.36666078602456764, -0.33398960181796156, -0.3132369894231033,
-0.29590880906812345, -0.2831729432245993, -0.2728455069411666,
-0.26419474518149855, -0.2567880924140127, -0.25037146291174395,
-0.2447364225738511, -0.239752368640211, -0.23529490809096387,
-0.23127827466805684, -0.22763185878648073, -0.2242908715223848,
-0.2212275328264468, -0.21821207290849998, -0.21562277316047584},
{-0.8361795072164, -0.5242293766407329, -0.4192066799840859,
-0.3669059538228794, -0.33423869007901885, -0.31348468073667846,
-0.29615523177380965, -0.2834189306953476, -0.27309070281603454,
-0.26443771907952396, -0.2570290000643354, -0.25061002558618384,
-0.24497288059774291, -0.23998695371994927, -0.235527601381591,
-0.2315091115119685, -0.2278608843693064, -0.2245181750718075,
-0.22145318431330452, -0.21843597209272048, -0.21584470691527713},
{-0.8361322289400164, -0.5244014187719586, -0.41943778273162025,
-0.36715199288926215, -0.33448862428463144, -0.3137331937119825,
-0.2964024544090762, -0.2836657095584769, -0.2733366805737205,
-0.2646814606364387, -0.2572706626535819, -0.2508493335026287,
-0.24521007982150422, -0.2402222708856243, -0.23576101878461486,
-0.23174066419358041, -0.22809061905422823, -0.22474618166950222,
-0.22167953264943208, -0.21866056062549433, -0.21606732610234758},
{-0.8360857836483433, -0.5245743865631312, -0.4196697843512993,
-0.3673989056838991, -0.3347394068102858, -0.31398253077964,
-0.2966504793093918, -0.2839132821268322, -0.27358344242873045,
-0.26492597210972235, -0.2575130823438485, -0.25108938880896403,
-0.24544802244110997, -0.2404583222603378, -0.23599516246417807,
-0.23197293482041914, -0.22832106494661275, -0.22497489339491494,
-0.2219065798713018, -0.2188858404565508, -0.2162906328514964},
{-0.8360401735778282, -0.5247482825681118, -0.41990268727136026,
-0.36764669467095246, -0.33499104013105807, -0.3142326943261651,
-0.2968993088715024, -0.2841616507529352, -0.27383099060614313,
-0.2651712557320707, -0.2577562612437987, -0.2513301936045309,
-0.24568671071017434, -0.24069511000539023, -0.23623003452735247,
-0.2322059254877331, -0.22855222419627808, -0.2252043123120302,
-0.22213432807370737, -0.21911181360633236, -0.21651462929844456},
{-0.8359954009753778, -0.5249231092932405, -0.4201364939121959,
-0.3678953622768404, -0.3352435266270959, -0.31448368662961457,
-0.29714894544292747, -0.28441081769256016, -0.27407932727817297,
-0.26541731369525223, -0.2580002013842204, -0.25157174996388676,
-0.24592614681716896, -0.24093263624160954, -0.23646563706722645,
-0.23243963824211278, -0.22878409889210616, -0.22543444044640637,
-0.22236277925617287, -0.2193384820081974, -0.21673931751138298},
{-0.8359514680980169, -0.5250988692981764, -0.42037120673182926,
-0.36814491099892166, -0.33549686873493556, -0.3147355102164511,
-0.29739939140483784, -0.2846607852964098, -0.2743284547550502,
-0.26566414832336704, -0.25824490494710517, -0.25181406003378015,
-0.24616633302639457, -0.24117090313961853, -0.23670197228011602,
-0.23267407518562777, -0.22901669116424728, -0.225665279937175,
-0.22259193550621603, -0.21956584766257947, -0.21696469963058007},
{-0.8359083772202212, -0.5252755651468988, -0.4206068281919215,
-0.36839534331613777, -0.33575106891203177, -0.3149881673806476,
-0.29765064916591655, -0.2849115558607309, -0.2745783751848876,
-0.26591176186275334, -0.2584903740222444, -0.25205712599722574,
-0.24640727153098396, -0.2414099128388898, -0.2369390422354627,
-0.23290923841250333, -0.22925000312795873, -0.2258968328389983,
-0.22282179889475628, -0.21979391251488778, -0.21719077782245222},
{-0.835866130598788, -0.5254531993936098, -0.4208433607312827,
-0.368646661715502, -0.33600612958264264, -0.31524166059887193,
-0.29790272109812577, -0.285163131767149, -0.27482909087757434,
-0.2661601565913543, -0.25873661073501353, -0.25230094991400165,
-0.24664896454601148, -0.24164966751686734, -0.2371768491346984,
-0.233145130058233, -0.22948403690497798, -0.22612910122597896,
-0.2230523714570154, -0.2200226785223549, -0.21741755423317954},
{-0.8358247305039868, -0.5256317745959223, -0.42108080682851323,
-0.3688988686704988, -0.3362620532047913, -0.315495992271849,
-0.2981556096164013, -0.2854155153074771, -0.27508060403374657,
-0.2664093347866583, -0.2589836172313653, -0.2525455339813334,
-0.24689141434203066, -0.2418901693567932, -0.237415395056928,
-0.2333817522002164, -0.22971879465967504, -0.22636208720905415,
-0.22328365527141614, -0.22025214769064405, -0.21764503100075672},
{-0.8357841792292788, -0.5258112933591974, -0.42131916897869814,
-0.36915196670452133, -0.3365188422415031, -0.31575116478109067,
-0.2984093171517088, -0.28566870885026674, -0.2753329169523795,
-0.26665929874366157, -0.2592313956312182, -0.2527908803322134,
-0.24713462309762235, -0.24213142051314662, -0.23765468217141006,
-0.23361910696371524, -0.22995427855335038, -0.22659579290416332,
-0.2235156524031936, -0.22048232205020213, -0.21787321028023143},
{-0.8357444790504474, -0.5259917582566231, -0.42155844965043343,
-0.3694059582993532, -0.3367764991553486, -0.31600718062384203,
-0.29866384610488694, -0.2859227147382626, -0.27558603187128483,
-0.26691005076713736, -0.25947994812906927, -0.25303699112566846,
-0.24737859305810161, -0.24237342320384414, -0.23789471265183693,
-0.2338571965030951, -0.23019049071626796, -0.22683022038836498,
-0.2237483649673777, -0.2207132034930055, -0.21810209422937987},
{-0.8357056322592484, -0.5261731718806004, -0.4217986513518781,
-0.3696608460131756, -0.33703502643254524, -0.31626404215137427,
-0.2989191989493065, -0.286177535335014, -0.27583995105044323,
-0.26716159318186783, -0.2597292768201669, -0.2532838685539218,
-0.2476233264541179, -0.24261617960030435, -0.2381354886236977,
-0.23409602291940246, -0.23042743327255266, -0.22706537181215936,
-0.22398179501351478, -0.22094479404086087, -0.21833168500143074},
{-0.835667641164946, -0.5263555368500192, -0.4220397765858479,
-0.3699166323369809, -0.3372944265316846, -0.3165217518819645,
-0.2991753781046782, -0.2864331729958849, -0.276094676808043,
-0.2674139283031991, -0.2599793838987807, -0.2535315148014661,
-0.2478688255190491, -0.24285969190918877, -0.23837701227853358,
-0.23433558840770274, -0.2306651084272744, -0.2273012492585167,
-0.22421594465072303, -0.2211770956998862, -0.2185619847768976},
{-0.8356305080482116, -0.5265388557789947, -0.4222818278722116,
-0.3701733198281545, -0.337554701973545, -0.3167803122599935,
-0.2994323860327768, -0.2866896301052293, -0.2763502114055427,
-0.2676670584810381, -0.26023027160567835, -0.2537799320382419,
-0.24811509247672348, -0.243103962346936, -0.2386192857422884,
-0.23457589505119358, -0.2309035183427568, -0.22753785489658185,
-0.2244508159240013, -0.2214101104088968, -0.2187929956996868},
{-0.8355942352442867, -0.5267231312860758, -0.42252480773902334,
-0.37043091100974834, -0.3378158552260402, -0.31703972568413974,
-0.29969022522118394, -0.28694690903387254, -0.27660655713748383,
-0.2679209860455103, -0.2604819420319018, -0.254029122492625,
-0.2483621295455123, -0.24334899312805192, -0.23886231123742618,
-0.23481694509519002, -0.23114266517950455, -0.22777519084752385,
-0.2246864110200022, -0.22164384018788041, -0.21902471990279082},
{-0.8355588250576602, -0.5269083660156184, -0.42276871873298205,
-0.37068940845688303, -0.3380778888149507, -0.31729999472440795,
-0.2999488981133709, -0.2872050121769689, -0.2768637163258063,
-0.2681757133947258, -0.260734397452552, -0.25427908836309143,
-0.2486099390215486, -0.2435947864830723, -0.23910609096151347,
-0.23505874065608623, -0.23138255116555229, -0.22801325923728655,
-0.2249227319862257, -0.22187828705614265, -0.21925715956194836},
{-0.8355242798085669, -0.5270945625820787, -0.4230135633795271,
-0.3709488147212596, -0.3383408052492314, -0.3175611217459391,
-0.3002084072145408, -0.2874639419160303, -0.2771216912211685,
-0.2684312428235671, -0.2609876400213125, -0.2545298318749474,
-0.2488585230935314, -0.24384134462002294, -0.2393506270261696,
-0.23530128392030747, -0.23162317837204682, -0.22825206221068584,
-0.2251597808851784, -0.22211345291907492, -0.2194903167312532},
{-0.8354906018182646, -0.5272817236507308, -0.42325934422819955,
-0.37120913235139597, -0.338604607011348, -0.3178231092996384,
-0.30046875499976977, -0.287723700620063, -0.2773804841765468,
-0.26868757676732, -0.26124167196508097, -0.2547813552578191,
-0.249107884015757, -0.2440886697525002, -0.23959592163919297,
-0.23554457708064547, -0.23186454909318854, -0.22849160192436102,
-0.22539755989396326, -0.22234933981735594, -0.21972419358598927},
{-0.8354577934403551, -0.5274698518841205, -0.42350606385628,
-0.37147036396356725, -0.33886929667755794, -0.3180859598908228,
-0.30072994399722575, -0.28798429075186505, -0.2776400974939861,
-0.26894471760874694, -0.26149649554122334, -0.25503366080067735,
-0.24935802405445884, -0.24433676418470895, -0.23984197707818566,
-0.2357886223578589, -0.23210666545310232, -0.2287318805713312,
-0.22563607109623263, -0.22258594977006396, -0.21995879226346915},
{-0.8354258569981994, -0.5276589499469537, -0.42375372482763396,
-0.37173251209833325, -0.33913487677261855, -0.31834967595352737,
-0.30099197671563616, -0.2882457146896513, -0.2779005335188458,
-0.26920266772742707, -0.26175211297515943, -0.2552867507549763,
-0.24960894545233714, -0.24458563015286927, -0.24008879546727258,
-0.2360334219517881, -0.2323495297196132, -0.22897290030618933,
-0.22587531660838067, -0.22282328478195268, -0.2201941147695834},
{-0.8353947948369296, -0.5278490205101889, -0.42400232973113816,
-0.37199557937356076, -0.3394013498108279, -0.31861426006526017,
-0.30125485566475163, -0.2885079748557473, -0.278161794539983,
-0.26946142953352137, -0.26200852654540085, -0.25554062737069216,
-0.24986065047710326, -0.2448352699093448, -0.24033637907155025,
-0.236278978063865, -0.2325931440666409, -0.22921466326511108,
-0.22611529856226298, -0.22306134683412893, -0.2204301632818897},
{-0.8353646093201519, -0.528040066254789, -0.42425188115555557,
-0.3722595683951795, -0.3396687183605991, -0.31887971468177057,
-0.301518583402526, -0.2887710736874851, -0.27842388290230247,
-0.2697210054502648, -0.2622657384837339, -0.25579529298477155,
-0.25011314137077534, -0.2450856856792143, -0.24058473006402892,
-0.23652529293099178, -0.23283751069197933, -0.22945717167044677,
-0.22635601908450553, -0.22330013797750325, -0.22066693978331386},
{-0.835335302795329, -0.5282320898875241, -0.42450238170249577,
-0.37252448175593145, -0.3399369849920504, -0.31914604235964816,
-0.30178316242654546, -0.28903501360775863, -0.27868680096469234,
-0.26998139791032827, -0.2625237510964098, -0.25605074989402965,
-0.2503664204277811, -0.24533687977486807, -0.24083385069343421,
-0.23677236882144825, -0.2330826318225263, -0.229700427710668,
-0.22659748024102555, -0.2235396601956836, -0.22090444641912654},
{-0.8353068776305577, -0.528425094094473, -0.4247538339656103,
-0.3727903221043789, -0.34020615223641926, -0.31941324563399576,
-0.30204859531318107, -0.28929979706776976, -0.27895055104283983,
-0.27024260935434086, -0.2627825666523904, -0.25630700041324417,
-0.25062048994118413, -0.24558885447981993, -0.24108374318666392,
-0.23702020793393785, -0.23332850965448415, -0.22994443355150906,
-0.22683968427827494, -0.2237799155416269, -0.22114268522159364},
{-0.8352793361952422, -0.5286190815960481, -0.4250062405888002,
-0.3730570920287164, -0.34047622269361, -0.31968132700455953,
-0.30231488463471123, -0.28956542650360007, -0.27921513550597865,
-0.27050464219814785, -0.2630421874849844, -0.25656404691130774,
-0.2508753521071867, -0.24584161203893018, -0.2413344097276422,
-0.23726881252923704, -0.23357514645090305, -0.23018919140326943,
-0.2270826332382967, -0.22402090602872704, -0.22138165819114874},
{-0.835252680872486, -0.5288140551169818, -0.42525960418493014,
-0.37332479420285836, -0.34074719893374095, -0.3199502890789745,
-0.3025820329351063, -0.2898319044093114, -0.2794805566785499,
-0.2707674989359248, -0.26330261593659543, -0.2568218917208469,
-0.2511310092979784, -0.24609515480892696, -0.241585852615799,
-0.2375181849447472, -0.23382254443822603, -0.23043470347943185,
-0.22732632933343666, -0.22426263375109556, -0.22162136747147088},
{-0.8352269140258954, -0.5290100173715473, -0.4255139273898294,
-0.3735934312428526, -0.34101908353022736, -0.32022013432981566,
-0.30285004281245165, -0.29009923321723363, -0.27974681691353,
-0.2710311820046627, -0.2635638542810739, -0.2570805372254199,
-0.2513874638004836, -0.24634948501329745, -0.24183807402960156,
-0.23776832732460207, -0.23407070581538392, -0.23068097193458925,
-0.2275707746223361, -0.22450510068688345, -0.22186181493839285},
{-0.8352020380670524, -0.529206971106646, -0.4257692128636563,
-0.3738630058246599, -0.3412918790800177, -0.32049086539245764,
-0.30311891682015357, -0.290367415423475, -0.28001391860379954,
-0.2712956939092237, -0.2638259049261933, -0.2573399858288212,
-0.25164471787684306, -0.24660460500945192, -0.24209107623892123,
-0.23801924205895375, -0.2343196328367867, -0.23092799904634376,
-0.2278159713337118, -0.22474830892610953, -0.22210300277674833},
{-0.8351780553799699, -0.5294049190687247, -0.4260254632504257,
-0.37413352060832494, -0.34156558824122385, -0.3207624848261048,
-0.30338865758267275, -0.2906364535198236, -0.28028186412473133,
-0.27156103713218727, -0.2640887702555119, -0.25760023995326264,
-0.2519027738603654, -0.2468605171056879, -0.24234486152658974,
-0.23827093140039324, -0.23456932782323747, -0.23117578705773667,
-0.22806192160987848, -0.2249922605546999, -0.22234493298401503},
{-0.8351549683691815, -0.5296038640080951, -0.4262826812204139,
-0.37440497823456553, -0.3418402135445149, -0.3210349951439184,
-0.30365926768445206, -0.29090634998226506, -0.2805506557771196,
-0.27182721412361843, -0.2643524525644807, -0.2578613019952627,
-0.2521616340397941, -0.2471172236057555, -0.2425994320378777,
-0.2385233976397103, -0.23481979292455435, -0.2314243381133565,
-0.22830862757086834, -0.22523695762151874, -0.2225876074990083},
{-0.835132779429614, -0.5298038086899624, -0.4265408694486723,
-0.3746773814164044, -0.3421157576406131, -0.32130839900628416,
-0.30393074973517287, -0.29117710732020896, -0.2808202959945447,
-0.2720942274273739, -0.26461695432999477, -0.25812317438203536,
-0.2524213007691287, -0.24737472684660133, -0.24285479014542943,
-0.23877664306996849, -0.23507103044062205, -0.23167365446943222,
-0.2285560914119742, -0.2254824022052162, -0.22283102841583968},
{-0.835111490992233, -0.5300047558941969, -0.42680003062173455,
-0.37495073283548663, -0.3423922231702363, -0.32158269895933245,
-0.3042031063610011, -0.29144872805443356, -0.28109078711258917,
-0.27236207953581015, -0.26488227794357044, -0.25838585964925187,
-0.25268177635712163, -0.24763302914425367, -0.2431109380190719,
-0.23903067004061995, -0.2353230426308528, -0.23192373841152403,
-0.22880431530961687, -0.22572859641127252, -0.2230751977717773},
{-0.8350911054635617, -0.5302067083907787, -0.4270601674347745,
-0.3752250351950579, -0.342669612754662, -0.3218578976460549,
-0.30447634022209513, -0.29172121474312007, -0.28136213158836654,
-0.272630773030869, -0.265148425890402, -0.25864936024640883,
-0.25294306320301985, -0.24789213292137902, -0.24336787804804771,
-0.23928548094067992, -0.23557583185106523, -0.2321745922104128,
-0.22905330152502756, -0.22597554236062933, -0.22332011766411597},
{-0.8350716252793404, -0.530409668979587, -0.4273212825854671,
-0.3755002911933616, -0.3429479290183508, -0.32213399764668793,
-0.3047504538709518, -0.2919945698599804, -0.28163433170800545,
-0.27290031033567175, -0.2654154005124383, -0.25891367861277104,
-0.2532051635660082, -0.2481520404071489, -0.24362561237262526,
-0.23954107791882961, -0.2358294002247021, -0.2324262179622565,
-0.2293030520636421, -0.22622324207350175, -0.22356578995595555},
{-0.8350530528728086, -0.5306136404666404, -0.4275833787874035,
-0.37577650353864556, -0.34322717462794117, -0.32241100155454205,
-0.305025450010703, -0.29226879597547395, -0.2819073899185014,
-0.2731706940562617, -0.26568320433398185, -0.2591788172960605,
-0.25346807979485675, -0.24841275399990081, -0.2438841433199741,
-0.2397974634275215, -0.23608375013577643, -0.23267861803537926,
-0.2295535692444446, -0.22647169769925313, -0.22381221677892427},
{-0.835035390676353, -0.5308186256446561, -0.42784645877884486,
-0.3760536749566654, -0.34350735222426465, -0.32268891204967076,
-0.3053013312744497, -0.292543895653921, -0.2821813085906797,
-0.2734419267176236, -0.26595183981612536, -0.2594447788171692,
-0.25373181430518343, -0.24867427609842707, -0.24414347321862806,
-0.24005463981279718, -0.23633888383710655, -0.23293179462166336,
-0.22980485521452465, -0.2267209113899753, -0.22405940019098125},
{-0.8350186411414029, -0.5310246273380699, -0.428110525275315,
-0.3763318082026217, -0.3437884644897622, -0.322967731677295,
-0.3055781003174616, -0.2928198714704422, -0.2824560901258337,
-0.2737140108638414, -0.26622130945133904, -0.2597115657365521,
-0.2539963694321159, -0.24893660903990167, -0.24440360430116925,
-0.24031260935726095, -0.23659480363585317, -0.2331857500184924,
-0.23005691219509572, -0.22697088521476871, -0.22430734218005455},
{-0.8350028067135895, -0.5312316483713175, -0.4283755810237153,
-0.37661090598874125, -0.3440705140861837, -0.3232474631738569,
-0.3058557598091056, -0.2930967260036823, -0.28273173696163667,
-0.2739869490869751, -0.2664916157496009, -0.25997918058965297,
-0.25426174757262743, -0.24919975521447668, -0.24466453893478501,
-0.24057137448949106, -0.2368515118396317, -0.23344048651529192,
-0.2303097423894087, -0.2272216213716547, -0.22455604487458913},
{-0.8349878898486622, -0.5314396915880479, -0.4286416287650354,
-0.37689097109682734, -0.34435350370404194, -0.3235281091538127,
-0.30613431239669353, -0.29337446181921223, -0.28300825148949116,
-0.2742607439288349, -0.26676276127523124, -0.26024762595693574,
-0.25452795107594284, -0.2494637170052556, -0.24492627940389866,
-0.24083093752733475, -0.23710901076083246, -0.2336960063337301,
-0.23056334805164624, -0.227473121984076, -0.22480551032208496},
{-0.8349738930282911, -0.5316487598174717, -0.42890867128392074,
-0.37717200625911573, -0.34463743602509567, -0.32380967221899937,
-0.3064137608105284, -0.29365308155752246, -0.28328563612046764,
-0.27453539795919824, -0.26703474849955455, -0.26051690446251996,
-0.2547949823529052, -0.24972849680830222, -0.24518882804454734,
-0.2410913008859552, -0.23736730274617912, -0.23395231178642462,
-0.2308177313655051, -0.22772538922117747, -0.22505574054571298},
{-0.8349608187068611, -0.5318588559412092, -0.4291767113429614,
-0.3774540142673004, -0.34492231373246796, -0.3240921551230258,
-0.3066941077094043, -0.29393258782215526, -0.2835638933008795,
-0.27481091380604994, -0.26730758002031507, -0.26078701864730647,
-0.2550628438095828, -0.24999409703832498, -0.24545218720777484,
-0.24135246690298118, -0.23762639011783904, -0.23420940510891342,
-0.23107289464746827, -0.22797842527756984, -0.22530673764049425},
{-0.8349486693627455, -0.5320699827852877, -0.42944575171316046,
-0.3777369978857905, -0.345208139549527, -0.32437556043873883,
-0.3069753557746253, -0.2942129832407545, -0.2838430254016657,
-0.27508729400778975, -0.2675812583665902, -0.26105797114655616,
-0.2553315378543175, -0.25026052007251565, -0.24571635918846368,
-0.2416144379653815, -0.23788627510816696, -0.23446728860039912,
-0.23132884003098297, -0.22823223224054345, -0.2255585036211869},
{-0.8349374474867659, -0.5322821432308729, -0.4297157951754116,
-0.37802095990434736, -0.3454949161616696, -0.3246598909099703,
-0.3072575077045485, -0.2944942704116329, -0.28412303491722923,
-0.27536454117580433, -0.26785578613339567, -0.2613297645896182,
-0.2556010668604358, -0.2505277683176246, -0.245981346303779,
-0.24187721646626414, -0.2381469601518802, -0.2347259645498525,
-0.23158556981798029, -0.22848681235655022, -0.22581104062373925},
{-0.8349271555690052, -0.5324953401851644, -0.42998684455801595,
-0.37830590313433277, -0.3457826463238689, -0.3249451492207527,
-0.30754056622913595, -0.29477645207180103, -0.28440392427523875,
-0.275642657915796, -0.2681311659473522, -0.26160240162607806,
-0.2558714333010812, -0.2507958442370182, -0.24624715102527261,
-0.2421408048169269, -0.23840844760616164, -0.23498543526784488,
-0.2318430862715104, -0.22874216785999124, -0.22606435070770203},
{-0.8349177961024452, -0.5327095765079548, -0.4302589026494843,
-0.37859183035652677, -0.34607133273993895, -0.3252313380180567,
-0.307824534056067, -0.2950595308032007, -0.2846856959179149,
-0.2759216468393788, -0.26840740033776456, -0.261875884893243,
-0.2561426395679973, -0.25106475021084407, -0.24651377559439425,
-0.24240520538228338, -0.23867073979386078, -0.23524570301174208,
-0.23210139169123067, -0.22899830093183482, -0.22631843589238088},
{-0.8349093715938807, -0.5329248551112187, -0.43053197227936835,
-0.37887874440673386, -0.34636097815223366, -0.3255184600609482,
-0.30810941388858737, -0.29534350931203335, -0.28496835231294426,
-0.27620151054543385, -0.2686844919805935, -0.26215021705570507,
-0.2564146881243232, -0.2513344886951927, -0.24678122247314604,
-0.24267042063297595, -0.23893383906784038, -0.23550677008392995,
-0.23236048832654888, -0.22925521380670943, -0.2265732983205453},
{-0.8349018845558476, -0.5331411788954483, -0.43080605626562374,
-0.3791666480982485, -0.3466515853039027, -0.32580651799094085,
-0.3083952084800785, -0.2956283902956329, -0.2852518959018653,
-0.27648225165171425, -0.2689624434358393, -0.2624254008005664,
-0.2566875813834031, -0.25160506211295797, -0.24704949398710596,
-0.24293645288184962, -0.23919774780574699, -0.23576863880452947,
-0.23262037844597216, -0.22951290875721497, -0.22682893994601727},
{-0.8348953374916732, -0.533358550779667, -0.43108115746315434,
-0.37945554427687966, -0.3469431569531025, -0.3260955145707385,
-0.3086819205111624, -0.29591417641495354, -0.2855363291901085,
-0.27676387280439485, -0.26924125736445603, -0.26270143878468843,
-0.25696132184475573, -0.251876472905451, -0.24731859254416122,
-0.24320330467821805, -0.23946246838340812, -0.23603131146569467,
-0.23288106434961264, -0.22977138800933972, -0.22708536300410742},
{-0.8348897329457827, -0.5335769736798284, -0.43135727869639595,
-0.37974543578116027, -0.3472356958544651, -0.3263854525291663,
-0.30896955276261906, -0.29620087041121224, -0.2858216546364929,
-0.2770463766114517, -0.2695209364137554, -0.26297833372927926,
-0.25723591194332585, -0.2521487235442237, -0.24758852058471348,
-0.24347097833924636, -0.23972800318802, -0.2362947903661734,
-0.23314254838396664, -0.2300306538274981, -0.22734256945818743},
{-0.8348850734304847, -0.533796450548607, -0.4316344228423077,
-0.38003632545337496, -0.34752920478661053, -0.32667633456446765,
-0.3092581079788488, -0.2964884750017518, -0.2861078747366719,
-0.2773297657047351, -0.26980148319626096, -0.26325608829142766,
-0.25751135410700954, -0.25242181642988726, -0.2478592804316122,
-0.24373947632057025, -0.23999435461450958, -0.2365590778256319,
-0.23340483279366708, -0.23029070852976474, -0.22760056136348794},
{-0.8348813614969686, -0.5340169843217382, -0.43191259276159144,
-0.3803282161629795, -0.3478236864992823, -0.3269681634498056,
-0.30954758888856304, -0.2967769929211954, -0.286394992013129,
-0.27761404272837353, -0.27008290039429994, -0.2635347052171255,
-0.25778765087579814, -0.25269575407901357, -0.24813087457050642,
-0.2440088011210264, -0.24026152504234233, -0.23682417620807428,
-0.23366791998955705, -0.2305515544321679, -0.2278593408902907},
{-0.8348785996740844, -0.5342385779314327, -0.43219179133200214,
-0.3806211107820445, -0.34811914380873077, -0.3272609418589809,
-0.30983799825730785, -0.2970664269041663, -0.28668300892877596,
-0.27789921030830556, -0.2703651906226696, -0.263814187208709,
-0.25806480471737814, -0.25297053888903065, -0.2484033054131487,
-0.24427895509529662, -0.24052951681960621, -0.2370900877515396,
-0.23393181217602432, -0.2308131938114002, -0.22811890999855677},
{-0.8348767905205818, -0.5344612343608333, -0.43247202143697905,
-0.38091501219230395, -0.34841557949005164, -0.3275546726418952,
-0.3101293388397153, -0.29735677968415075, -0.28697192805111627,
-0.278185271096163, -0.270648356543461, -0.2640945369760175,
-0.2583428181283125, -0.25324617336445954, -0.2486765753542386,
-0.2445499407592706, -0.24079833244582005, -0.23735681486027715,
-0.2341965117775544, -0.2310756290196423, -0.2283792708715282},
{-0.8348759365970864, -0.534684956588876, -0.432753285987701,
-0.3812099233050503, -0.3487129963887128, -0.3278493585405613,
-0.3104216134130411, -0.29764805406625783, -0.2872617519212781,
-0.27847222777495517, -0.27093240086514925, -0.26437575728459706,
-0.2586216935897028, -0.25352265998299117, -0.2489506869435445,
-0.24482176053174953, -0.2410679743293258, -0.2376243598412202,
-0.23446202112927494, -0.23133886243090274, -0.2286404255880825},
{-0.8348760404597897, -0.5349097475669851, -0.4330355878736327,
-0.3815058469537007, -0.34901139723694996, -0.3281450022420813,
-0.3107148247282794, -0.29794025278988556, -0.2875524830155882,
-0.27876008292901133, -0.2712173261395492, -0.2646578508342827,
-0.2589014336126638, -0.2538000011741133, -0.24922564249959578,
-0.2450944168638216, -0.24133844480616062, -0.23789272497083402,
-0.23472834253357178, -0.23160289634188302, -0.2289023760940836},
{-0.8348771046761385, -0.5351356102927411, -0.43331893000720356,
-0.3818027861000246, -0.34931078491467815, -0.32844160659260524,
-0.3110089755716672, -0.29823337865286703, -0.28784412395043546,
-0.2790488392483894, -0.2715031351272046, -0.264940820327638,
-0.25918204074355344, -0.25407819947986354, -0.24950144463173274,
-0.2453679122493213, -0.2416097463940332, -0.23816191269133924,
-0.2349954784269812, -0.23186773322026966, -0.2291651246443962},
{-0.8348791318354642, -0.5353625477677042, -0.43360331534063334,
-0.3821007436531545, -0.3496111622450826, -0.3287391743451735,
-0.3113040687389912, -0.29852743447008834, -0.28813667724421066,
-0.2793384993890413, -0.2717898304172195, -0.26522466860456007,
-0.2594635174546056, -0.2543572573281381, -0.24977809570486897,
-0.24564224913774524, -0.24188188141829414, -0.23843192529261614,
-0.23526343107823777, -0.23213337537617917, -0.229428673247412},
{-0.8348821245103863, -0.5355905629979816, -0.4338887467928316,
-0.38239972253791166, -0.34991253203384076, -0.3290377083275189,
-0.3116001070114862, -0.29882242303779094, -0.28843014552580826,
-0.2796290660169234, -0.27207741471170266, -0.2655093983385086,
-0.25974586633674335, -0.25463717726302093, -0.25005559828377955,
-0.2459174300356608, -0.2421548524255286, -0.23870276517504863,
-0.23553220292228616, -0.2323998252452384, -0.2296930240220263},
{-0.834886085300127, -0.5358196589944555, -0.4341752273059001,
-0.38269972569753463, -0.35021489715802545, -0.3293372113298574,
-0.31189709317823144, -0.2991183471503973, -0.2887245313404492,
-0.27992054177661885, -0.2723658906447781, -0.26579501231663016,
-0.2600290899194988, -0.25491796174401316, -0.2503339548452459,
-0.24619345737482945, -0.24242866177610267, -0.2389744346585303,
-0.23580179634927845, -0.23266708521418877, -0.2299581790873617},
{-0.8348910167969734, -0.5360498387824464, -0.43446275983671967,
-0.38300075604593076, -0.3505182604496895, -0.32963768611512023,
-0.3121950300305798, -0.29941520966599455, -0.28901983731975633,
-0.28021292933749464, -0.2726552608642123, -0.2660815132537664,
-0.26031319071375947, -0.2551996132833665, -0.2506131678624115,
-0.24647033366818505, -0.2427033119877251, -0.23924693615140313,
-0.2360722137036646, -0.2329351577466241, -0.23022414053707507},
{-0.83489692160299, -0.5362811053963696, -0.43475134737343524,
-0.3833028165738597, -0.3508226247845414, -0.32993913555856125,
-0.31249392040035673, -0.29971301340060563, -0.289316066076708,
-0.2805062313830149, -0.27294552804528394, -0.2663689039447945,
-0.2605981713386427, -0.2554821344231186, -0.25089323995257473,
-0.24674806145389994, -0.24297880548192552, -0.23952027203222315,
-0.23634345741925245, -0.2332040452918136, -0.23049091049369963},
{-0.8349038023371804, -0.5365134618602951, -0.4350409928558747,
-0.3836059102386571, -0.35112799303669817, -0.3302415624003743,
-0.3127937670656138, -0.3000117612043596, -0.2896132201872206,
-0.2808004505423014, -0.2732366947684568, -0.2666571871411634,
-0.2608840342932126, -0.25576552764755434, -0.25117417351907534,
-0.24702664312076195, -0.24325514465613196, -0.23979444461338062,
-0.23661552980956913, -0.23347375024263783, -0.23075849105930502},
{-0.8349116616155925, -0.5367469112507024, -0.43533169930162785,
-0.38391004001016427, -0.35143436806629325, -0.3305449695403695,
-0.31309457285715325, -0.30031145595376074, -0.28991130237773177,
-0.28109558953565283, -0.2735287637442525, -0.2669463655774962,
-0.26117078220158874, -0.25604979550894313, -0.25145597123423613,
-0.24730608130175824, -0.24353233209421887, -0.24006945636847377,
-0.2368884334066479, -0.23374427510157147, -0.23102688446010688},
{-0.8349205020572299, -0.5369814566050763, -0.43562346969019927,
-0.38421520887720817, -0.3517417527887119, -0.33084935981275976,
-0.3133963405839495, -0.3006121004734723, -0.2902103152352993,
-0.28139165102015795, -0.27382173760247497, -0.2672364420454869,
-0.261458417636959, -0.25633494053181494, -0.2517386355477811,
-0.24758637838294817, -0.24381037017428753, -0.24034530972494395,
-0.2371621705083271, -0.23401562233925688, -0.2312960927254153},
{-0.8349303263061074, -0.5372171010103557, -0.43591630703542705,
-0.3845214198179292, -0.352050150075911, -0.33115473602583734,
-0.31369907310636336, -0.30091369768933873, -0.29051026145612013,
-0.2816886376342609, -0.2741156189824778, -0.26752741930931734,
-0.26174694315409397, -0.2566209652800353, -0.25202216908837727,
-0.24786753701096131, -0.24408926140927178, -0.24062200697449043,
-0.23743674359343458, -0.23428779443361236, -0.23156611802801308},
{-0.8349411369994186, -0.5374538475405188, -0.4362102143404627,
-0.38482867585616987, -0.35235956286283, -0.3314611010680437,
-0.3140027732404178, -0.3012162504585376, -0.2908111437252501,
-0.2819865521048541, -0.2744104104958751, -0.2678193000790543,
-0.26203636140758135, -0.25690787228154477, -0.25230657444899407,
-0.24814955964188812, -0.2443690083139245, -0.2408995506359588,
-0.23771215506371846, -0.2345607939571437, -0.2318369625397736},
{-0.8349529367693549, -0.5376916992646557, -0.43650519465484194,
-0.3851369799861004, -0.3526699940356366, -0.3317684577310729,
-0.3143074438014537, -0.30151976166598615, -0.29111296470364323,
-0.28228539708970857, -0.2747061147952081, -0.2681120871948224,
-0.26232667497447437, -0.2571956640344979, -0.25259185410209284,
-0.24843244882322324, -0.24464961318903988, -0.24117794307449003,
-0.23798840731069504, -0.23483462324657012, -0.23210862831206214},
{-0.8349657282799399, -0.5379306592825515, -0.43680125097785094,
-0.3854463352173525, -0.3529814465182426, -0.3320768089432704,
-0.3146130876427833, -0.3018242342088797, -0.29141572713297137,
-0.2825851752363633, -0.2750027345196031, -0.2684057833687348,
-0.2626178864443318, -0.257484343144597, -0.2528780107120383,
-0.24871620706289832, -0.24493107872194742, -0.24145718677914374,
-0.23826550277181013, -0.23510928491623417, -0.23238111762589142},
{-0.8349795141932645, -0.5381707307196848, -0.43709838639438203,
-0.3857567446386838, -0.35329392327980713, -0.3323861575988758,
-0.31491970763818244, -0.30212967105285315, -0.2917194337039746,
-0.28288588927102865, -0.2753002723081863, -0.26870039140908375,
-0.26290999850630214, -0.2577739121829836, -0.25316504692546005,
-0.24900083695320063, -0.24521340735554986, -0.24173728416667473,
-0.23854344396545457, -0.23538478157115605, -0.23265443263085217},
{-0.8349942971807423, -0.5384119166659502, -0.43739660393760005,
-0.38606821122209567, -0.3536074272344649, -0.3326965065296008,
-0.3152273066264115, -0.30243607507441084, -0.2920240871776514,
-0.28318754185397665, -0.27559873077552766, -0.2689959140141127,
-0.26320301376972566, -0.2580643736748698, -0.25345296528189465,
-0.2492863410307109, -0.24549660152456454, -0.24201823767930364,
-0.23882223323516882, -0.23566111561945036, -0.23292857533169808},
{-0.8350100799005986, -0.5386542202548981, -0.4376959066755717,
-0.38638073803656425, -0.353921961316928, -0.33300785864798854,
-0.3155358874710146, -0.3027434492064458, -0.2923296902763468,
-0.28349013568572445, -0.2758981125905393, -0.26929235399120444,
-0.2634969348132472, -0.25835573020754055, -0.2537417684052343,
-0.2495727218636148, -0.24578066376989227, -0.24230004976857344,
-0.23910187307069464, -0.23593828971820585, -0.23320354805696297},
{-0.8350268650498265, -0.5388976446147353, -0.4379962976937577,
-0.38669432816584504, -0.35423752853023416, -0.3333202168225853,
-0.3158454530475865, -0.3030517964214141, -0.2926362457603773,
-0.28379367343177364, -0.27619842034027897, -0.269589714094991,
-0.2637917643351102, -0.2586479843498637, -0.25403145893437795,
-0.2498599819809897, -0.24606559656535865, -0.24258272297447547,
-0.23938236591675377, -0.2362163063846765, -0.23347935286983557},
{-0.8350446553153006, -0.5391421928843556, -0.438297780078301,
-0.38700898465845057, -0.35455413181762196, -0.3336335840051561,
-0.3161560061923865, -0.3033611196296988, -0.292943756407567,
-0.2840981577783168, -0.2764996567286744, -0.2698879970996586,
-0.2640875050149134, -0.25894113866775115, -0.25432203951459087,
-0.25014812406175224, -0.24635140245140974, -0.24286625974650633,
-0.23966371419396637, -0.23649516823547856, -0.23375599202995545},
{-0.8350634533878747, -0.5393878682085642, -0.4386003569118202,
-0.3873247106123472, -0.3548717741545033, -0.33394796310631136,
-0.31646754984467407, -0.3036714218160341, -0.29325222500415293,
-0.2844035914527012, -0.2768018243532424, -0.2701872057859873,
-0.2643841594881451, -0.25923519579373533, -0.25461351282297073,
-0.25043715059518945, -0.2466380838909572, -0.2431506625766815,
-0.23994592048848062, -0.23677487785312223, -0.23403346772352052},
{-0.8350832619696575, -0.5396346737611566, -0.4389040313253645,
-0.38764150908298234, -0.3551904585402781, -0.3342633570146063,
-0.31678008687890724, -0.3039827059524214, -0.2935616543159085,
-0.2847099770856403, -0.27710492587175395, -0.27048734284676357,
-0.26468173038574605, -0.25953015826371484, -0.2549058813958709,
-0.2507270641615378, -0.24692564347265034, -0.2434359338858485,
-0.24022898710632035, -0.23705543782534733, -0.2343117819816598},
{-0.8351040837796972, -0.5398826126934182, -0.43920880642588145,
-0.3879593831921966, -0.35551018795035816, -0.33457976869908634,
-0.31709362015635634, -0.30429497499562785, -0.2938720471900069,
-0.28501731741812364, -0.2774089639533486, -0.2707884111275689,
-0.2649802204982734, -0.2598260286945333, -0.2551991480859215,
-0.25101786747200094, -0.24721408367508957, -0.24372207630472076,
-0.24051291665568897, -0.23733685082629563, -0.23459093720975943},
{-0.8351259215240816, -0.5401316881817593, -0.4395146853252072,
-0.38827833602942974, -0.35583096541995474, -0.3348972010403486,
-0.31740815262082833, -0.30460823194971454, -0.2941834063692568,
-0.28532561509814514, -0.2777139412071392, -0.2710904133564327,
-0.2652796323839084, -0.26012280963914236, -0.2554933153799084,
-0.25130956299494756, -0.24750340695504747, -0.24400909221026268,
-0.2407977115126414, -0.2376191194000512, -0.23487093535868553},
{-0.8351487779415265, -0.5403819034127082, -0.4398216711852001,
-0.3885983707247078, -0.35615279392106913, -0.33521565706382717,
-0.31772368713541255, -0.3049224797850911, -0.2944957347738182,
-0.2856348728885223, -0.278019860331824, -0.27139335229276185,
-0.2655799688782281, -0.2604205037862357, -0.2557883860201855,
-0.25160215350365434, -0.2477936159730234, -0.24429698430026292,
-0.2410833742790146, -0.23790224630715784, -0.23515177882859462},
{-0.8351726557591519, -0.5406332615941665, -0.44012976714975593,
-0.38891949041999396, -0.3564756765607626, -0.33553513970196036,
-0.3180402266684723, -0.3052377215606157, -0.29480903519288404,
-0.28594509345361985, -0.2783267240172336, -0.2716972307268861,
-0.26588123255146456, -0.2607191137258269, -0.2560843627311442,
-0.25189564152924504, -0.24808471315009228, -0.24458575501080304,
-0.24136990738929853, -0.23818623415786533, -0.23543346976885005},
{-0.8351975577130588, -0.5408857659058413, -0.4404389763635663,
-0.389241698199271, -0.3567996162612417, -0.3358556518521709,
-0.31835777408241483, -0.3055539602069075, -0.29512331046271356,
-0.28625627941778475, -0.27863453483314515, -0.27200205138683486,
-0.2661834261507465, -0.26101864202541947, -0.25638124806982887,
-0.2521900295851083, -0.24837670103283926, -0.24487540679501762,
-0.24165731331731877, -0.23847108554377883, -0.2357160102646958},
{-0.8352234865435548, -0.5411394195717776, -0.44074930201134066,
-0.38956499722849003, -0.35712461611592516, -0.33617719655990186,
-0.3186763323449213, -0.30587119881829494, -0.29543856346981556,
-0.28656843359135564, -0.2789432955796656, -0.2723078170297413,
-0.2664865524718607, -0.26131909139007803, -0.25667904490592264,
-0.2524853205677573, -0.24866958222901303, -0.24516594239048572,
-0.24194559464899612, -0.23875680330843352, -0.23599940278199938},
{-0.8352504450252809, -0.5413942258199995, -0.4410607472615311,
-0.38988939069190565, -0.35745067919719986, -0.3364997767555451,
-0.3189959043813815, -0.3061894403695078, -0.29575479704544705,
-0.28688155865143017, -0.27925300884021453, -0.2726145305384762,
-0.2667906141441563, -0.26162046442755127, -0.25697775581124915,
-0.25278151691668427, -0.24896335920652746, -0.24545736418122033,
-0.24223475386975224, -0.23904338995566832, -0.23628364940464053},
{-0.8352784359033194, -0.5416501878688678, -0.44137331531624113,
-0.3902148817152238, -0.35777780853527474, -0.3368233954624884,
-0.31931649315765753, -0.30650868795964925, -0.2960720141220463,
-0.28719565726146357, -0.27956367736487664, -0.2729221945842255,
-0.2670956139793361, -0.26192276377946655, -0.25727738359091745,
-0.2530786213974352, -0.24925803458745577, -0.245749674902072,
-0.2425247935200332, -0.239330848356758, -0.23656875243432296},
{-0.8353074619556082, -0.5419073089566382, -0.44168700936097594,
-0.39054147348463175, -0.3581060072226592, -0.3371480556904771,
-0.31963810160050343, -0.3068289445652681, -0.2963902175390558,
-0.28751073219223144, -0.2798753038257473, -0.273230811934809,
-0.2674015546836017, -0.2622259921101886, -0.25757793090951964,
-0.2533766366088912, -0.24955361087040728, -0.24604287696297433,
-0.24281571606525176, -0.23961918112263447, -0.23685471419184978},
{-0.8353375259586073, -0.5421655923413482, -0.44200183262853443,
-0.3908691691827926, -0.3584352782878568, -0.33747376041242205,
-0.31996073268669534, -0.30715021330615855, -0.29670941023823616,
-0.28782678612333257, -0.2801878908994695, -0.27354038544217474,
-0.26770843900703767, -0.2625301521002257, -0.25787940050645375,
-0.25367556519086065, -0.24985009066949715, -0.2463369730269278,
-0.2431075241436247, -0.23990839095063166, -0.23714153688729311},
{-0.8353686306862755, -0.5424250412794436, -0.44231778833341195,
-0.3911979720026011, -0.3587656248669191, -0.3378005126417065,
-0.320284389372091, -0.30747249721184744, -0.29702959509768334,
-0.2881438218059884, -0.2805014413572735, -0.27385091783548887,
-0.2680162697556625, -0.26283524641189615, -0.25818179514408257,
-0.2539754099136644, -0.2501474765504099, -0.2466319656853102,
-0.24340022029559805, -0.24019848063562677, -0.2374292229249022},
{-0.8354007789405387, -0.5426856590142961, -0.44263487968146364,
-0.3915278851349058, -0.35909705003427916, -0.3381283153660206,
-0.32060907463346666, -0.30779579933596324, -0.29735077496252416,
-0.2884618418961509, -0.28081595783100965, -0.274162411917132,
-0.26832504960680126, -0.26314127770797313, -0.258485117435157,
-0.25427617332820773, -0.2504457709817416, -0.24692785746970003,
-0.24369380701318732, -0.24048945276422273, -0.2377177745706831},
{-0.8354339735168423, -0.5429474488496453, -0.44295310996233184,
-0.3918589118051159, -0.35942955691302814, -0.3384571717028848,
-0.3209347914605587, -0.3081201227926158, -0.2976729528852502,
-0.28878084917346314, -0.2811314431110077, -0.2744748704456015,
-0.2686347814194505, -0.26344824876491657, -0.2587893702752808,
-0.25457785827165935, -0.25074497671903373, -0.2472246510221794,
-0.24398828689186303, -0.2407813102881846, -0.23800719422433758},
{-0.835468217218363, -0.5432104140546699, -0.4432724823876697,
-0.3921910552362533, -0.35976314861045466, -0.33878708465681484,
-0.32126154286265773, -0.3084454706390716, -0.2979961317212201,
-0.2891008463509479, -0.28144789992370534, -0.27478829630626933,
-0.2689454679677965, -0.26375616219638687, -0.259094556388618,
-0.25488046727741676, -0.25104509624475213, -0.24752234896413938,
-0.2442836625689324, -0.24107405575341545, -0.23829748420462238},
{-0.8355035128711279, -0.5434745579181026, -0.4435930002457553,
-0.3925243186309899, -0.3600978282245251, -0.3391180572261874,
-0.32158933180426175, -0.30877184597602536, -0.2983203144374329,
-0.28942183616868533, -0.2817653309543857, -0.27510269221011185,
-0.2692571119957847, -0.26406502070199167, -0.2594006784740941,
-0.25518400317832857, -0.25134613219779567, -0.24782095384398417,
-0.2445799365732455, -0.2413676918774854, -0.23858864691283088},
{-0.8355398632877495, -0.5437398837615319, -0.4439146668103149,
-0.3928587052516832, -0.3604335989195988, -0.33945009253898206,
-0.32191816134445617, -0.3090992519228166, -0.29864550398770007,
-0.28974382132741994, -0.28208373903430584, -0.2754180610140793,
-0.2695697163649129, -0.26437482711435223, -0.25970773932021984,
-0.25548846859078367, -0.25164808719364373, -0.24812046834563262,
-0.24487711151436997, -0.24166222158487471, -0.23888068470478174},
{-0.8355772713022134, -0.5440063948772149, -0.44423748535336927,
-0.393194218336248, -0.36077046384320965, -0.33978319358084264,
-0.3222480344682026, -0.30942769154830785, -0.2989717032828594,
-0.2900668046370356, -0.28240312683442426, -0.27573440553646833,
-0.2698832838623275, -0.26468558408237186, -0.2600157416959519,
-0.2557938662548622, -0.2519509638091222, -0.24842089504772957,
-0.24517519007758892, -0.24195764745877568, -0.23917360008454125},
{-0.8356157397406605, -0.5442740945878768, -0.44456145918150014,
-0.3935308611354458, -0.3611084261094675, -0.34011736346678845,
-0.32257895419616034, -0.3097571679245448, -0.2992989153169674,
-0.2903907887450714, -0.2827234971227881, -0.2760517285748847,
-0.27019781729632086, -0.26499729436068264, -0.2603246883295469,
-0.25610019889973046, -0.2522547646865405, -0.2487222365650723,
-0.24547417474786926, -0.24225397225768575, -0.2394673953901929},
{-0.8356552714612917, -0.5445429862394349, -0.44488659160504085,
-0.3938686369539255, -0.36144748891774725, -0.3404526053225254,
-0.3229109236262957, -0.3100876842802336, -0.299627143069074,
-0.2907157765403099, -0.2830448528115994, -0.27637003296513285,
-0.27051331954226043, -0.2653099607234708, -0.2606345821748164,
-0.25640746919088997, -0.252559492502769, -0.2490244955840808,
-0.24577406828325365, -0.24255119882468534, -0.23976207313467057},
{-0.8356958693100296, -0.544813073156547, -0.4452128859336426,
-0.3942075490232355, -0.3617876554233135, -0.3407889221741698,
-0.32324394575175575, -0.3104192436589983, -0.2999563895018582,
-0.29104177070212245, -0.2833671964901896, -0.2766893215998607,
-0.2708297933929771, -0.2656235859649314, -0.2609454258324604,
-0.25671567990707445, -0.25286514991103104, -0.24932767466975747,
-0.24607487325647526, -0.24284932982982355, -0.24005763589389062},
{-0.8357375361523509, -0.5450843586784231, -0.44554034550117194,
-0.39454760065166283, -0.3621289287843865, -0.3411263171619794,
-0.32357802364936106, -0.31075184917904153, -0.3002866576330234,
-0.29136877393511895, -0.28369053105393505, -0.27700959717822116,
-0.27114724167677196, -0.26593817273510467, -0.26125722214555935,
-0.25702483375903284, -0.2531717393992494, -0.24963177644167445,
-0.24637659229051678, -0.2431483680063593, -0.2403540858665565},
{-0.8357802748486165, -0.5453568461780378, -0.44586897364342803,
-0.3948887951398774, -0.36247131223740325, -0.34146479331411683,
-0.3239131603806982, -0.31108550399289925, -0.30061795039159733,
-0.29169678908215246, -0.2840148593181766, -0.2773308627413371,
-0.27146566722149146, -0.26625372395187696, -0.26156997392490666,
-0.25733493347547665, -0.2534792638059571, -0.2499368036353644,
-0.24667922813455334, -0.24344831615485418, -0.240651425852775},
{-0.8358240882804466, -0.5456305390163152, -0.4461987737221307,
-0.395231135774452, -0.3628148089617298, -0.3418043538656548,
-0.32424935904077756, -0.31142021121786456, -0.3009502708621312,
-0.2920258189440119, -0.2843401840682418, -0.2776531210238318,
-0.27178507300732235, -0.2665702423619223, -0.26188368399107276,
-0.2576459818321837, -0.2537877257364016, -0.2502427589488434,
-0.24698278341315927, -0.24374917704744803, -0.24094965827339365},
{-0.835868979329689, -0.5459054405596362, -0.44652974908444776,
-0.39557462589993975, -0.36315942214946517, -0.3421450018865926,
-0.3245866227109673, -0.31175597400670085, -0.3012836219904784,
-0.2923558662691903, -0.28466650814539207, -0.27797637490857596,
-0.27210546177843753, -0.2668877307710318, -0.2621983551593985,
-0.2579579815062516, -0.2540971278804136, -0.2505496448768554,
-0.24728726083003494, -0.24405095330894255, -0.24124878568954955},
{-0.8359149508858081, -0.5461815542008708, -0.4468619031071057,
-0.39591926881189465, -0.36350515500976144, -0.3424867405033183,
-0.3249249544878694, -0.31209279551080726, -0.3016180068357244,
-0.2926869338020879, -0.284993834389752, -0.2783006272975399,
-0.27242683646909427, -0.26720619199954854, -0.262513990254547,
-0.258270935296423, -0.25440747295624533, -0.2508574641822179,
-0.24759266312503314, -0.24435364792543623, -0.2415488107665169},
{-0.8359620058583914, -0.5464588833377775, -0.4471952391800187,
-0.39626506786044047, -0.36385201080361185, -0.34282957286541205,
-0.32526435747899995, -0.31243067888408405, -0.3019534284139809,
-0.2930190244330788, -0.28532216567464275, -0.2786258810670006,
-0.2727491999389713, -0.2675256289273875, -0.2628305920609364,
-0.25858484597233655, -0.25471876364167656, -0.25116621957317875,
-0.24789899291613438, -0.24465726340190486, -0.2418497360135916},
{-0.8360101471356529, -0.546737431354245, -0.44752976069617034,
-0.3966120263957009, -0.36419999274903603, -0.34317350209107644,
-0.32560483481802294, -0.31276962722586177, -0.3022898897193045,
-0.2933521408563138, -0.2856515048340498, -0.2789521391082417,
-0.273072555036606, -0.26784604430349646, -0.26314816342937775,
-0.25889971616038565, -0.2550310025883391, -0.2514759136288376,
-0.24820625301799737, -0.2449618026096232, -0.2421515640596681},
{-0.8360593776494625, -0.5470172016747483, -0.44786547105115915,
-0.39696014775643107, -0.36454910409474905, -0.3435185314526734,
-0.3259463896276884, -0.3131096437264205, -0.30262739388831505,
-0.2936862859783105, -0.285981854783131, -0.27927940433733056,
-0.2733969047633309, -0.2681674411444419, -0.26346670724251453,
-0.2592155488835033, -0.255344192665234, -0.25178654918863685,
-0.248514446176614, -0.2452672683923538, -0.24245429765664994},
{-0.8361097003144096, -0.5472981977222844, -0.4482023736723022,
-0.39730943533254504, -0.3648993481474463, -0.34386466403657323,
-0.32628902508577085, -0.3134507315239716, -0.30296594390370046,
-0.29402146257734785, -0.2863132184529604, -0.2796076796644229,
-0.27372225189196797, -0.2684898221502863, -0.263786226291586,
-0.25953234663802505, -0.2556583364544167, -0.25209812880211757,
-0.24882357501815022, -0.24557366337444364, -0.24275793936544687},
{-0.8361611180698674, -0.5475804229183723, -0.44854047197782165,
-0.39765989244904176, -0.36525072805602576, -0.34421190302509785,
-0.32663274428432487, -0.31379289378810427, -0.3033055428229545,
-0.294357673425111, -0.2866455986672918, -0.27993696793691925,
-0.2740485992944741, -0.2688131902591522, -0.2641067234173988,
-0.2598501122383823, -0.25597343671370254, -0.25241065516820527,
-0.249133642317247, -0.2458809902698249, -0.24306249181722706},
{-0.8362136338382697, -0.547863880693626, -0.44887976940424323,
-0.39801152252289285, -0.3656032471801609, -0.34456025160648096,
-0.3269775504215886, -0.3141361336824957, -0.3036461937419972,
-0.29469492147359233, -0.28697899849476016, -0.2802672721882118,
-0.2743759500510805, -0.2691375484389482, -0.2644282016251509,
-0.26016884862610823, -0.25628949629117415, -0.25272413111656533,
-0.24944465096200474, -0.24618925202526043, -0.24336795795102262},
{-0.8362672505836599, -0.5481485745110604, -0.44922026941696913,
-0.39836432895140206, -0.3659569088179069, -0.34490971299646844,
-0.3273234466814756, -0.3144804543471764, -0.30398789968262463,
-0.29503320943263134, -0.2873134207734438, -0.2805985953223171,
-0.2747043069175561, -0.2694628995086532, -0.26475066356374555,
-0.26048855838848795, -0.2566065178411918, -0.2530385592701805,
-0.24975660366021657, -0.24649845125054526, -0.2436743402349748},
{-0.8363219712547334, -0.5484345078327806, -0.44956197545968735,
-0.39871831511732125, -0.3663117162252547, -0.34526029040944195,
-0.32767043629223735, -0.314825858964241, -0.30433066381988283,
-0.29537254025171933, -0.28764886854287397, -0.28093094020687204,
-0.27503367285066815, -0.26978924643253777, -0.2650741122524778,
-0.26080924438338116, -0.2569245041495378, -0.2533539424503033,
-0.25006950302986297, -0.2468085907103159, -0.2439816415505902},
{-0.8363777988121228, -0.5487216840979272, -0.4499048910147394,
-0.3990734844535382, -0.3666676727136746, -0.3456119870791099,
-0.3280185223875378, -0.3151723506844064, -0.3046744892085371,
-0.29571291673323685, -0.2879853448046106, -0.2812643099523484,
-0.2753640508014996, -0.27011659207687444, -0.26539855059331785,
-0.2611309093936143, -0.25724345801745585, -0.2536702833012896,
-0.2503833520763692, -0.24711967322332384, -0.24428986465591152},
{-0.8364347362306717, -0.5490101068000968, -0.45024901956514896,
-0.3994298403611083, -0.3670247816025949, -0.3459648062182623,
-0.3283677082060876, -0.31551993272819345, -0.30501937892154274,
-0.29605434175050505, -0.28832285253724876, -0.281598707328385,
-0.2756954436799788, -0.270444939487561, -0.26572398139592224,
-0.26145355617677524, -0.25756338221776787, -0.25398758450137393,
-0.25069815341225876, -0.24743170144415672, -0.24459901222076041},
{-0.8364927864924994, -0.5492997794308394, -0.4505943645975776,
-0.39978738628315114, -0.3673830462068963, -0.3463187510435546,
-0.32871799699159965, -0.3158686082094846, -0.30536533611189043,
-0.296396818184121, -0.2886613948237482, -0.2819341354795597,
-0.2760278544665198, -0.2707742915918061, -0.26605040765502963,
-0.2617771875954986, -0.2578842795649052, -0.25430584898822417,
-0.25101390997269846, -0.2477446783407231, -0.24490908724396832},
{-0.8365519525696072, -0.549590705451692, -0.4509409295982323,
-0.40014612566506, -0.3677424698869345, -0.346673824767322,
-0.32906939198323926, -0.3162183803276548, -0.3057123638830035,
-0.296740348951289, -0.28900097465975705, -0.2822705973344455,
-0.27636128603558063, -0.2711046513295514, -0.2663778321987138,
-0.26210180636599034, -0.25820615284237647, -0.25462507949191604,
-0.25133062450458965, -0.24805860649553324, -0.2452200924774388},
{-0.8366122374762881, -0.5498828883910392, -0.45128871812721627,
-0.40050606194131433, -0.36810305597600745, -0.34703003073582295,
-0.3294218963944786, -0.3165692522770769, -0.30606046536649956,
-0.29708493689986426, -0.2893415951843963, -0.28260809581593094,
-0.2766957413602995, -0.2714360216600653, -0.2667062579548656,
-0.2624274153388342, -0.2585290047857143, -0.2549452786975053,
-0.2516482997161802, -0.2483734886268394, -0.24553203066852802},
{-0.8366736442085312, -0.5501763317651012, -0.45163773367755766,
-0.40086719859868936, -0.36846480783310653, -0.3473873721864038,
-0.3297755135513398, -0.316921227198236, -0.306409643670122,
-0.2974305849602388, -0.28968325941082185, -0.2829466340001545,
-0.2770312233833465, -0.2717684055628524, -0.26703568787525,
-0.2627540171963574, -0.25885283823322425, -0.2552664493634893,
-0.25196693851239615, -0.24868932754179696, -0.24584490471397658},
{-0.8367361757765366, -0.5504710390655418, -0.4519879798021975,
-0.40122953907120973, -0.3688277287828896, -0.34774585235913946,
-0.3301302466834386, -0.3172743083241585, -0.3067599020207581,
-0.2977772959891354, -0.290025970573879, -0.28328621482705785,
-0.2773677350965045, -0.2721018060822189, -0.26736612494710243,
-0.2630816149328439, -0.2591776560952894, -0.2555885944198053,
-0.2522865437265409, -0.24900612598548832, -0.24615871760170194},
{-0.8367998352150607, -0.5507670138583762, -0.45233946005862435,
-0.40159308687179873, -0.3691918222741606, -0.3481054745820984,
-0.33048609913498694, -0.31762849882534283, -0.30711124355798347,
-0.29812507295901014, -0.29036973171696445, -0.28362684141438876,
-0.2777052794892825, -0.27243622628589037, -0.2676975720050905,
-0.2634102112774599, -0.2595034610972107, -0.2559117165005773,
-0.25260711806140534, -0.24932388670526962, -0.2464734720629167},
{-0.836864625528051, -0.55106425964766, -0.45269217798590944,
-0.4019578454774546, -0.3695570916274846, -0.3484662420855784,
-0.33084307414242176, -0.31798380186751274, -0.3074636713486143,
-0.2984739187647847, -0.2907145460767424, -0.28396851674301615,
-0.27804385946865295, -0.27277166902217687, -0.26803003210238785,
-0.2637398090653278, -0.2598302561007131, -0.25623581865374945,
-0.2529286643652995, -0.2496426124455411, -0.24678917110009024},
{-0.8369305497608366, -0.5513627799908818, -0.45304613715916275,
-0.4023238183710873, -0.3699235402839349, -0.34882815822243174,
-0.33120117506109636, -0.3183402206673236, -0.30781718868797725,
-0.2988238363718665, -0.2910604168116606, -0.28431124378994355,
-0.2783834781080259, -0.27310813746976237, -0.26836350807388953,
-0.2640704111333889, -0.260158044025502, -0.25656090354686967,
-0.2532511855438315, -0.24996230597707836, -0.24710581767271833},
{-0.8369976109763684, -0.5516625784588314, -0.453401341181916,
-0.4026910091188256, -0.37029117162524017, -0.34919122634232735,
-0.33156040526046127, -0.31869775843824755, -0.308171798677904,
-0.29917482872224355, -0.2914073471397387, -0.2846550256829232,
-0.2787241383612127, -0.27344563460201243, -0.2686980030439372,
-0.26440202029425564, -0.2604868275618628, -0.2568869740430273,
-0.25357468436300223, -0.25028296997879806, -0.247423414758714},
{-0.8370658122103123, -0.5519636585981971, -0.45375779363098445,
-0.4030594211610605, -0.3706599890654161, -0.349555449707168,
-0.3319207679851388, -0.31905641835419374, -0.30852750455846945,
-0.29952689876563454, -0.2917553402262456, -0.2849998654346564,
-0.2790658432074906, -0.27378416342571654, -0.2690335198469711,
-0.2647346393623593, -0.2608166096415516, -0.25721403295847267,
-0.2538991636422452, -0.25060460723420874, -0.24774196522480452},
{-0.8371351565253917, -0.5522660239901143, -0.4541154981153568,
-0.403429058076199, -0.3710299960282555, -0.34992083166434895,
-0.3322822666691536, -0.3194162036461421, -0.30888430950653856,
-0.2998800494401621, -0.2921043994167576, -0.2853457660608001,
-0.2794085956429626, -0.2741237270354304, -0.26937006149455556,
-0.2650682712478556, -0.26114739312288293, -0.257542083223143,
-0.2542246261912169, -0.250927220425865, -0.24806147210438212},
{-0.8372056470001326, -0.552569678230725, -0.45447445825027444,
-0.4037999233946721, -0.3714011959839354, -0.35028737551806444,
-0.33264490466240204, -0.31977711752711, -0.3092422167173936,
-0.30023428372760463, -0.2924545279586255, -0.28569273076891477,
-0.27975239870715995, -0.27446432855208514, -0.26970763103076933,
-0.2654029187683591, -0.26147918084643607, -0.25787112771490683,
-0.2545510749234836, -0.2512508124091255, -0.24838193859000057},
{-0.8372772867076037, -0.5528746248957077, -0.45483467767178354,
-0.4041720206737409, -0.3717735923669352, -0.35065508472143847,
-0.333008685353434, -0.3201391631976094, -0.3096012294333832,
-0.3005896046431644, -0.29280572909192415, -0.28604076254805477,
-0.2800972554150576, -0.2748059709815607, -0.2700462313971457,
-0.2657385848508511, -0.2618119756862143, -0.258201169301401,
-0.2548785125657105, -0.2515753858615426, -0.24870336752633193},
{-0.8373500787361081, -0.5531808675962111, -0.45519616001740815,
-0.4045453534711214, -0.37214718863924645, -0.35102396260413116,
-0.3333736121401216, -0.32050234392932, -0.30996135089003474,
-0.3009460152163683, -0.29315800622475763, -0.28638986450869197,
-0.28044316874093056, -0.2751486573799866, -0.2703858656236662,
-0.26607527230089545, -0.2621457804966667, -0.25853221093325374,
-0.25520694205488326, -0.2519009435652606, -0.24902576209910876},
{-0.8374240261834984, -0.5534884099417923, -0.4555589089359273,
-0.4049199253286133, -0.3725219882105648, -0.3513940124914825,
-0.3337396884003283, -0.32086666290820176, -0.3103225842764914,
-0.3013035183669217, -0.29351136257059807, -0.28674003972514583,
-0.2807901418241272, -0.2754923909469653, -0.27072653675918446,
-0.2664129841123213, -0.26248059827571524, -0.2588642554819671,
-0.2555363662652326, -0.2522274883283444, -0.24934912544017607},
{-0.8374991321652487, -0.5537972555632678, -0.4559229280838508,
-0.40529573985554634, -0.3728979946308755, -0.35176523781137803,
-0.3341069176021847, -0.3212321234288993, -0.31068493286829835,
-0.30166211719256353, -0.2938658016039426, -0.287091291394745,
-0.2811381775377413, -0.27583717464267465, -0.2710682477445516,
-0.26675172303930594, -0.2628164316950006, -0.2591973058590611,
-0.25586678791569284, -0.2525550227851454, -0.2496734604580979},
{-0.8375753997653419, -0.5541074080615545, -0.45628822114406375,
-0.4056728006294179, -0.37327521139036435, -0.352137641885065,
-0.3344753031537948, -0.3215987286844211, -0.311048399900983,
-0.30202181465710964, -0.29422132659556155, -0.28744362252405153,
-0.2814872789851961, -0.2761830116794499, -0.27141100161429677,
-0.26709149202429217, -0.26315328378586855, -0.25953136504881513,
-0.2561982099850866, -0.25288354988856554, -0.24999877048276176},
{-0.8376528321359729, -0.5544188711053266, -0.45665479180615876,
-0.4060511112443237, -0.37365364193192363, -0.3525112282407008,
-0.3348448484882738, -0.321966481959862, -0.31141298863303746,
-0.30238261388035426, -0.2945779410283649, -0.2877970363313125,
-0.2818374492817384, -0.2765299051588954, -0.27175480144796893,
-0.2674322941124956, -0.26349115749553675, -0.25986643605028803,
-0.25653063533695786, -0.25321307239187263, -0.2503250586332797},
{-0.8377314323911378, -0.5547316483306304, -0.4570226437524525,
-0.40643067534324473, -0.37403328987443274, -0.3528860002422789,
-0.3352155571201365, -0.3223353865421359, -0.3117787023541041,
-0.302744517885003, -0.2949356482561143, -0.28815153591972376,
-0.28218869133957014, -0.2768778581321385, -0.27209965025531346,
-0.26777413204649747, -0.26383005561569917, -0.2602025216938273,
-0.25686406675026774, -0.2535435929930827, -0.25065232798419856},
{-0.8378112036689345, -0.5550457433806741, -0.45739178068436104,
-0.406811496471164, -0.374414158592117, -0.35326196124833587,
-0.33558743243747813, -0.32270544561697534, -0.31214554422922447,
-0.30310752969808163, -0.2952944516414391, -0.28850712438156734,
-0.2825410081998143, -0.277226873741256, -0.2724455509876407,
-0.2681170087969349, -0.26416998106878964, -0.2605396250232843,
-0.25719850713107917, -0.2538751145614242, -0.2509805817153392},
{-0.8378921491226947, -0.5553611599372061, -0.45776220633945286,
-0.4071935783135814, -0.37479625172386477, -0.3536391147413269,
-0.33596047797732354, -0.3230766626179502, -0.3125135176585445,
-0.3034716524873602, -0.295654354743192, -0.28886380500921405,
-0.28289440313733394, -0.2775769552413294, -0.272792506897531,
-0.26846092749497075, -0.2645109369157126, -0.2608777491254841,
-0.2575339594823163, -0.2542076400127371, -0.2513098230999731},
{-0.8379742719172327, -0.5556779016823157, -0.458133924443473,
-0.40757692450370087, -0.3751795727796434, -0.3540174641602789,
-0.3363346972396357, -0.32344904072033387, -0.3128826258910067,
-0.3038368893023744, -0.29601536094492076, -0.2892215808817582,
-0.28324887896746986, -0.2779281056200489, -0.2731405208526212,
-0.2688058908659059, -0.26485292592951737, -0.2612168968255446,
-0.25787042654746983, -0.25454117213917016, -0.2516400552228788},
{-0.838057575202015, -0.5559959722877466, -0.45850693873137516,
-0.4079615386840487, -0.3755641253271733, -0.3543970130017442,
-0.33671009373233574, -0.3238225833188153, -0.31325287223216947,
-0.3042032432715587, -0.2963774737759195, -0.2895804552199479,
-0.2836044388955088, -0.2782803281481847, -0.2734895959893038,
-0.2691519020575015, -0.26519595110562477, -0.26155707119460203,
-0.2582079112896736, -0.25487571378926077, -0.25197128128729673},
{-0.8381420621525422, -0.5563153754442283, -0.4588812529614188,
-0.40834742451670536, -0.37594991293963176, -0.35477776469429045,
-0.3370866709769871, -0.3241972936828006, -0.3136242599796333,
-0.30457071754017306, -0.29674069666498326, -0.28994043114016677,
-0.2839610859800814, -0.2786336258816391, -0.27383973538690043,
-0.2694989639162486, -0.26554001541489924, -0.2618982752701413,
-0.2585464166065776, -0.25521126790135895, -0.252303504557176},
{-0.838227735967962, -0.5566361148725036, -0.459256870893455,
-0.4087345856542015, -0.3763369391451761, -0.3551597227105958,
-0.33746443245536284, -0.32457317512694317, -0.31399679239029865,
-0.3049393152145967, -0.29710503304022495, -0.29030151186361763,
-0.28431882325753577, -0.278988002044116, -0.2741909420108186,
-0.2698470794368859, -0.2658851217524898, -0.2622405119159339,
-0.25888594537309473, -0.2555478372005382, -0.25263672814025995},
{-0.8383145998193413, -0.5569581942759214, -0.45963379632314627,
-0.40912302579772586, -0.37672520756541417, -0.3555428905497138,
-0.33784338174564255, -0.32495023106298504, -0.3143704728990997,
-0.30530903952922017, -0.2974704866282991, -0.2906637007001791,
-0.2846776539356597, -0.2793434598518161, -0.27454321911454826,
-0.27019625172988526, -0.26623127318111983, -0.2625837843665977,
-0.25922650058259933, -0.2558854247918134, -0.2529709553291468},
{-0.838402656921744, -0.557281617355784, -0.4600120330014761,
-0.40951274862027276, -0.37711472181649697, -0.3559272716331634,
-0.3382235224071337, -0.32532846481490196, -0.3147453046822193,
-0.3056798935917868, -0.29783706068178617, -0.29102700072053267,
-0.2850375810651258, -0.27970000238360626, -0.27489656961233777,
-0.27054648363355227, -0.26657847258661604, -0.26292809543292606,
-0.259568085094088, -0.2562240335387287, -0.25330618938232874},
{-0.8384919104819346, -0.5576063878706918, -0.46039158476105513,
-0.409903757849861, -0.3775054854713744, -0.35631286958982855,
-0.3386048579875478, -0.32570787973486404, -0.3151212912086976,
-0.30605188063782407, -0.29820475894302945, -0.2913914152095458,
-0.2853986077600439, -0.28005763286205365, -0.27525099668355324,
-0.2708977783604496, -0.26692672305853193, -0.2632734483254353,
-0.25991070185159515, -0.25656366638281725, -0.25364243337958214},
{-0.838582363702244, -0.5579325095519607, -0.46077245538549505,
-0.4102960571576659, -0.3778975021800761, -0.3566996878776081,
-0.33898739210917483, -0.3260884792323395, -0.31549843572724967,
-0.3064250039037688, -0.2985735848553759, -0.2917569474193442,
-0.28576073708200056, -0.2804163544808489, -0.27560650331679426,
-0.2712501387586599, -0.2672760274022039, -0.26361984594723253,
-0.26025435379142436, -0.2569043261976276, -0.2539796905766707},
{-0.8386740198343432, -0.5582599861397739, -0.46115464870558753,
-0.4106896502894415, -0.3782907755087308, -0.3570877300292068,
-0.3393711282717504, -0.32647026674044355, -0.3158767416689443,
-0.3067992665817201, -0.2989435419701749, -0.29212360057022124,
-0.2861239722701612, -0.2807761704143559, -0.2759630927264425,
-0.2716035680280129, -0.26762638884019907, -0.2639672913917366,
-0.26059904393150646, -0.2572460161293293, -0.25431796439420395},
{-0.8387668821109173, -0.5585888214206989, -0.4615381685700868,
-0.4110845409675221, -0.37868530919740806, -0.35747699956209544,
-0.3397560701469047, -0.32685324566296003, -0.3162562123104635,
-0.3071746720156625, -0.29931463386174073, -0.29249137793021873,
-0.2864883164695584, -0.28113708397449955, -0.2763207679286097,
-0.27195806908389386, -0.2679778102876753, -0.26431578766369057,
-0.2609447751995049, -0.2575887391010383, -0.2546572577709867},
{-0.8388609537607863, -0.5589190191317357, -0.4619230188086476,
-0.4114807329638097, -0.3790811068347466, -0.35786750003103407,
-0.34014222128598703, -0.3272374194000349, -0.3166368510544544,
-0.307551223423161, -0.29968686413690193, -0.29286028279580023,
-0.28685377277588486, -0.28149909827220654, -0.27667953210357155,
-0.27231364510612366, -0.2683302947625634, -0.2646653378874362,
-0.2612915505521869, -0.25793249815455965, -0.2549975741351318},
{-0.8389562380375537, -0.5592505830476284, -0.4623092032634304,
-0.4118782299524355, -0.3794781720619085, -0.3582592349846436,
-0.3405295853142434, -0.32762279142616535, -0.3170186612978796,
-0.30792892407248473, -0.3000602363067628, -0.2932303183406475,
-0.28722034440647803, -0.28186221656619637, -0.27703938819604446,
-0.27267029906533935, -0.26868384538602186, -0.26501594507976733,
-0.2616393729522315, -0.25827729633192575, -0.25533891674581355},
{-0.839052738233363, -0.559583516993257, -0.46269672583980537,
-0.4122770357985246, -0.379876508624875, -0.35865220806135767,
-0.34091816591580937, -0.32800936522789925, -0.31740164637039925,
-0.3083077773728746, -0.30043475400179886, -0.2936014879951472,
-0.28758803456116766, -0.2822264420533429, -0.27740033948452947,
-0.2730280341006619, -0.2690384650854867, -0.2653676122390607,
-0.26198824546895594, -0.2586231366128686, -0.25568128876489027},
{-0.8391504575956787, -0.5599178247406371, -0.4630855903876636,
-0.4126771542046299, -0.3802761201870908, -0.35904642278319443,
-0.34130796662225293, -0.32839714426427236, -0.31778580973582393,
-0.30868778662033947, -0.3008104207658562, -0.29397379494503184,
-0.28795684641409025, -0.2825917780119198, -0.27776238900264616,
-0.2733868532479846, -0.26939415703986924, -0.26572034249807075,
-0.2623381709934165, -0.25897002216402143, -0.25602469349973944},
{-0.8392493994117558, -0.5602535100892965, -0.4634758008087374,
-0.41307858895652316, -0.38067701035038226, -0.35944188268604194,
-0.34169899112703206, -0.3287861319874992, -0.3181711546912993,
-0.3090689551418109, -0.301187240184845, -0.2943472424483389,
-0.2883267830343357, -0.28295822756376765, -0.2781255397769655,
-0.2737467595927683, -0.2697509242836986, -0.2660741387605867,
-0.2626891525269457, -0.25931795596534357, -0.256369134074248},
{-0.8393495669729418, -0.560590576860136, -0.4638673609927082,
-0.4134813438956826, -0.38107918294963383, -0.3598385914121991,
-0.34209124308176797, -0.3291763319768961, -0.3185576846603908,
-0.30945128636199115, -0.3015652158806006, -0.29472183391976614,
-0.2886978478427409, -0.2833257941597367, -0.2784897951066796,
-0.27410775626822215, -0.2701087699031177, -0.26642900432057104,
-0.2630411932655079, -0.25966694123940215, -0.2567146139865599},
{-0.8394509635786562, -0.5609290288944067, -0.46426027486973,
-0.41388542277263696, -0.3814826416678443, -0.3602365526007816,
-0.34248472615990977, -0.32956774771514574, -0.3189454031787591,
-0.30983478369989825, -0.30194435144630916, -0.29509757265191183,
-0.289070043952961, -0.2836944809050692, -0.2788551580033527,
-0.27446984639937, -0.2704676970145101, -0.26678494212796977,
-0.26339429603331155, -0.26001698099207715, -0.25706113630531036},
{-0.8395535925461672, -0.5612688700089166, -0.4646545463513121,
-0.4142908294704739, -0.38188739021188667, -0.36063576986248336,
-0.3428794440067122, -0.32996038279657114, -0.31933431350785213,
-0.3102194505499938, -0.3023246504396866, -0.2954744619291887,
-0.28944337457051006, -0.28406429107212716, -0.2792216315613132,
-0.27483303300755324, -0.2708277087378974, -0.2671419552541465,
-0.26374846395515306, -0.26036807833838793, -0.2574087043367399},
{-0.8396574571820565, -0.5616101040561716, -0.46505017940876314,
-0.4146975677529099, -0.38229343231250823, -0.3610362468327821,
-0.34327540030153614, -0.3303542407461464, -0.3197244192197104,
-0.3106052903988257, -0.302706116579202, -0.295852505178118,
-0.289817843121682, -0.2844352280417297, -0.27958921908430057,
-0.27519731940265046, -0.2711888082922087, -0.26750004687983164,
-0.26410370019902984, -0.26072023653932774, -0.25775732141141816},
{-0.839762560828035, -0.5619527348944757, -0.4654471779583673,
-0.41510564147529294, -0.38270077174433936, -0.3614379871073652,
-0.3436725987394311, -0.3307493251743381, -0.32011572365536267,
-0.3109923066645024, -0.30308875332843854, -0.296231705666969,
-0.2901934526653349, -0.28480729497255197, -0.2799579234947487,
-0.2755627084770822, -0.2715509987292535, -0.26785921986652284,
-0.26446000767532496, -0.26107345845503005, -0.2581069905734239},
{-0.8398689068046679, -0.5622967663783811, -0.4658455459407378,
-0.41551505449160686, -0.38310941225336137, -0.36184099431716277,
-0.34407104301135405, -0.33114563960771193, -0.32050823027407205,
-0.3113805029074683, -0.30347256440563797, -0.2966120667958876,
-0.29057020654954613, -0.28518049519061606, -0.28032774805569716,
-0.27592920355505157, -0.27191428322726097, -0.268219477518187,
-0.2648173895424861, -0.26142774746699615, -0.25845771529452577},
{-0.8399764984760623, -0.5626422023857458, -0.4662452873840266,
-0.4159258106828929, -0.3835193576230722, -0.36224527222657343,
-0.34447073682508744, -0.3315431877510946, -0.3209019426690247,
-0.3117698826083597, -0.3038575533985295, -0.29699359196297337,
-0.2909481081685499, -0.28555483213472144, -0.28069869595287855,
-0.2762968076999641, -0.27227866507791987, -0.26858082291164465,
-0.2651758489269014, -0.26178310667091864, -0.25880949871543635},
{-0.8400853391885903, -0.5629890468183021, -0.46664640623976084,
-0.41633791391291197, -0.38393061171223053, -0.3626508244587967,
-0.3448716839161534, -0.33194197312604956, -0.3212968641273619,
-0.31216044925281494, -0.30424372385141396, -0.2973762844455905,
-0.29132716064759734, -0.2859303088969227, -0.28107077020695215,
-0.2766655240166074, -0.2726441472420902, -0.2689432590339038,
-0.2655353888649188, -0.2621395390062844, -0.25916234404917304},
{-0.8401954323128393, -0.5633373035303748, -0.46704890649630215,
-0.4167513680031334, -0.384343178137442, -0.3630576546372595,
-0.3452738878929722, -0.33234199934645403, -0.3216929982536385,
-0.31255220638672654, -0.3046310793752127, -0.2977601476563905,
-0.29170736739797576, -0.2863069288664519, -0.28144397404889787,
-0.2770353557357339, -0.27301073314424684, -0.269306789034772,
-0.2658960125224894, -0.2624970477966144, -0.25951625455286376},
{-0.8403067812114386, -0.5636869764528001, -0.4674527922059042,
-0.41716617692009095, -0.38475706084796, -0.3634657665040777,
-0.34567735262953647, -0.33274327021422323, -0.3220903485459985,
-0.31294515773151943, -0.3050196237154523, -0.2981451851358088,
-0.29208873181573836, -0.2866846955255369, -0.28181831071560737,
-0.2774063060771823, -0.27337842602150886, -0.2696714161429554,
-0.2662577231380965, -0.26285563612600527, -0.2598712335231994},
{-0.8404193892807825, -0.5640380694967462, -0.467858067348061,
-0.4175823445398237, -0.38517226366229806, -0.3638751637161022,
-0.3460820817590502, -0.3331457892807066, -0.3224889184255062,
-0.31333930671166854, -0.3054093603398087, -0.2985314001723509,
-0.29247125715596667, -0.2870636120205745, -0.2821937833291486,
-0.2777783780752543, -0.2737472289436482, -0.2700371433895725,
-0.2666205237503618, -0.2632153071067478, -0.2602272841197646},
{-0.8405332599147641, -0.5643905865867964, -0.4682647359627481,
-0.4179998748008984, -0.38558879034007987, -0.36428585007797665,
-0.3464880791136693, -0.3335495602732408, -0.3228887114862573,
-0.31373465700085035, -0.3058002929076338, -0.29891879621845874,
-0.29285494679379553, -0.28744368176126045, -0.2825703949895342,
-0.278151574950698, -0.2741171452071285, -0.2704039738753181,
-0.26698441755320346, -0.2635760638386273, -0.26058440959423024},
{-0.8406483965121652, -0.5647445316536732, -0.46867280209608,
-0.4184187716041379, -0.38600664477644386, -0.3646978292372296,
-0.34689534838594227, -0.33395458683116885, -0.32328973125277116,
-0.31413121222226437, -0.3061924250175707, -0.2993073767133865,
-0.29323980418780593, -0.2878249081629747, -0.28294814906575994,
-0.27852589998065014, -0.2744881781679851, -0.2707719109350819,
-0.26734940782284866, -0.26393790960446495, -0.26094261317530254},
{-0.8407648024942773, -0.5650999086459478, -0.46908226982691303,
-0.418839038875376, -0.38642583077967174, -0.36511110493984233,
-0.3473038933057069, -0.334360872651132, -0.3236919812502492,
-0.31452897594704154, -0.30658576023574824, -0.29969714496837696,
-0.29362583256761354, -0.28820729447193116, -0.2833270485568846,
-0.2789013561734919, -0.2748603308868951, -0.271140957335092,
-0.2677154976061047, -0.2643008472743986, -0.2613018980732704},
{-0.8408824812743205, -0.565456721510941, -0.46949314319658697,
-0.41926068058251076, -0.3868463522435377, -0.3655256809079219,
-0.3477137176942051, -0.3347684215032132, -0.32409546503413367,
-0.31492795190843026, -0.30698030230837503, -0.3000881046550603,
-0.2940130355354995, -0.28859084416603764, -0.2837070968541866,
-0.27927794697689023, -0.2752336068481327, -0.27151111664966265,
-0.26808269026537346, -0.2646648802506206, -0.2616622675832332},
{-0.8410014362837046, -0.5658149742056366, -0.469905426288733,
-0.4196837007052636, -0.38726821303816905, -0.3659415608906329,
-0.3481248253249305, -0.3351772371115658, -0.3245001861982928,
-0.31532814374236295, -0.3073760546740232, -0.3004802591169664,
-0.2944014163722386, -0.2889755606606741, -0.2840882970722305,
-0.2796556754137782, -0.27560800923583884, -0.2718823918155522,
-0.26845098903208964, -0.265030011640647, -0.2620237248574995},
{-0.8411216709769178, -0.5661746707187376, -0.4703191232174504,
-0.42010810318333824, -0.3876914170459713, -0.3663587486964843,
-0.3485372199518224, -0.3355873232085287, -0.3249061482615616,
-0.31572955508568157, -0.30777302101159876, -0.3008736117794797,
-0.29479097860303227, -0.289361447173178, -0.28447065246223247,
-0.28003454475174294, -0.27598354136739545, -0.27225478605578246,
-0.2688203969823917, -0.26539624450765587, -0.2623862731286408},
{-0.8412431887910543, -0.5665358150309885, -0.47073423806386927,
-0.420533892033518, -0.38811596818459293, -0.3667772480569056,
-0.34895090542886464, -0.33599868347505435, -0.32531335489807134,
-0.3161321896411664, -0.30817120495044037, -0.30126816620554564,
-0.2951817255948299, -0.28974850731310653, -0.28485416631042426,
-0.2804145582038018, -0.27636020646968973, -0.2726283025340308,
-0.26919091750255575, -0.26576358208876627, -0.2627499156508293},
{-0.8413659932009523, -0.5668984111349573, -0.4711507749609609,
-0.42096107117799875, -0.3885418703036976, -0.3671970627844985,
-0.3493658854872592, -0.33641132173238475, -0.32572180972192655,
-0.3165360511277413, -0.3085706100871448, -0.30166392586056645,
-0.2955736608500956, -0.2901367443203071, -0.28523884180413006,
-0.28079571907369427, -0.27673800792695147, -0.2730029444669526,
-0.26956255384538963, -0.2661320275860817, -0.2631146557125703},
{-0.8414900876864522, -0.56726246304504, -0.471568738047381,
-0.4213896447076877, -0.3889691273968765, -0.36761819662046946,
-0.3497821640098664, -0.3368252417808435, -0.32613151629425374,
-0.3169411431902063, -0.30897123996351183, -0.30206089423791127,
-0.29596678784832875, -0.2905261617377164, -0.28562468226982674,
-0.28117803054306023, -0.27711694899971917, -0.27337871499457833,
-0.2699353092120873, -0.26650158419215586, -0.2634804963388433},
{-0.8416154756896503, -0.5676279747541457, -0.4719881314340455,
-0.42181961660435263, -0.3893977433717737, -0.3680406534101621,
-0.35019974476358584, -0.3372404473830102, -0.32654247831078465,
-0.31734746959068616, -0.3093730983603109, -0.3024590748657374,
-0.29636111016316136, -0.2909167630214142, -0.28601169094349643,
-0.28156149593905866, -0.27749703303561546, -0.2737556174956808,
-0.27030918699733775, -0.26687225513296653, -0.2638474409079663},
{-0.8417421607360893, -0.567994950302932, -0.47240895931281557,
-0.42225099086817863, -0.38982772211488737, -0.3684644369370744,
-0.3506186315528339, -0.33765694229714427, -0.326954699465432,
-0.31775503398557703, -0.3097761886567696, -0.30285847116761033,
-0.29675663122861806, -0.2913085514719569, -0.28639987109613685,
-0.281946118508813, -0.2778782633406536, -0.274133655030937,
-0.2706841903593613, -0.26724404360356857, -0.2642154925156319},
{-0.841870146321753, -0.5683633937375134, -0.4728312258434926,
-0.42268377161940407, -0.3902590676871114, -0.3688895510756538,
-0.3510388283530119, -0.33807473037654745, -0.3273681833545652,
-0.3181638401313194, -0.31018051466844554, -0.3032590867835552,
-0.29715335453965963, -0.2917015306020403, -0.2867892260753706,
-0.28233190149330767, -0.2782606432194825, -0.2745128308524727,
-0.2710603227365027, -0.26761695279583364, -0.26458465448376955},
{-0.8419994359594511, -0.5687333091058235, -0.47325493518042094,
-0.4231179628272912, -0.390691783993816, -0.3693159996519171,
-0.3514603388541673, -0.33849381538584566, -0.3277829336952891,
-0.31857389172614603, -0.3105860798257254, -0.30366092514782395,
-0.29755128365582095, -0.29209570391913076, -0.2871797591494669,
-0.28271884817627324, -0.2786441760283651, -0.27489314824561006,
-0.2714375872924393, -0.26799098605215477, -0.26495492994831693},
{-0.8421300331526709, -0.5691047004396523, -0.4736800915693493,
-0.4235535685843388, -0.3911258749647004, -0.3697437863734194,
-0.3518831669671272, -0.33891420114082393, -0.32819895421971523,
-0.31898519241804024, -0.31099288790233004, -0.3040639898420068,
-0.2979504220998024, -0.29249107480836756, -0.28757147363194235,
-0.28310696195126184, -0.27902886509696145, -0.2752746104356447,
-0.27181598738320645, -0.26836614649505464, -0.26532632203497997},
{-0.8422619414513974, -0.569477571825928, -0.4741066991543903,
-0.423990592990549, -0.3915613446911266, -0.37017291522874984,
-0.3523073165945334, -0.33933589151888555, -0.32861624861629934,
-0.3193977460050519, -0.311400942481896, -0.3044682843838018,
-0.29835077349048333, -0.2928876467883583, -0.28796437296364275,
-0.2834962460015049, -0.2794147136905849, -0.2756572207183581,
-0.27219552639257927, -0.26874243751808535, -0.2656988341275337},
{-0.8423951643826513, -0.5698519273499869, -0.4745347622042573,
-0.4244290400711179, -0.39199819711552664, -0.3706033900455168,
-0.3527327915614933, -0.33975889030875805, -0.32903482065012213,
-0.31981155613402734, -0.3118102470893973, -0.30487381233774613,
-0.29875234134306083, -0.2932854232808495, -0.28835846031734036,
-0.28388670373124114, -0.2798017252532645, -0.2760409824029466,
-0.27257620748696354, -0.2691198622712818, -0.2660724692370877},
{-0.8425297055160854, -0.5702277710779526, -0.47496428492536324,
-0.4248689140085844, -0.39243643626673475, -0.3710352147368212,
-0.353159595784291, -0.34018320132895496, -0.32945467401054884,
-0.32022662652025247, -0.3122208054357998, -0.3052805772317697,
-0.2991551292486747, -0.29368440779649063, -0.2887537391127353,
-0.2842783384039649, -0.28018990300984115, -0.2764258986860568,
-0.2729580341081146, -0.2694984240242775, -0.266447230673748},
{-0.8426655683921354, -0.5706051071347247, -0.47539527158164674,
-0.42531021885406517, -0.3928760661497108, -0.37146839313209057,
-0.35358773317261694, -0.34060882853214025, -0.329875812619548,
-0.3206429609947463, -0.31263262118613966, -0.3056885827086262,
-0.2995591409071494, -0.29408460395143265, -0.2891502128816228,
-0.2846711535541999, -0.2805792504955207, -0.2768119730296803,
-0.27334100963639685, -0.26987812616562223, -0.26682312171396916},
{-0.8428027565969387, -0.57098393962724, -0.4758277264224944,
-0.42575295870665286, -0.39331709081284316, -0.37190292912760015,
-0.3540172075704504, -0.34103577567884713, -0.33029824011168785,
-0.32106056306997743, -0.31304569791359427, -0.3060978322273513,
-0.2999643797295448, -0.29448601500303084, -0.2895478847385675,
-0.2850651523697252, -0.28096977090353903, -0.2771992085679358,
-0.27372513723867087, -0.2702589717528099, -0.2672001452403947},
{-0.8429412737009443, -0.5713642726744865, -0.4762616537057056,
-0.42619713777980905, -0.39375951432270995, -0.3723388265648282,
-0.3544480229406872, -0.34146404666830676, -0.3307219603309477,
-0.32147943659606426, -0.3134600392854736, -0.3065083294522992,
-0.30037084944797243, -0.2948886446490633, -0.28994675828539584,
-0.28546033825386985, -0.28136146762699354, -0.27758760877668465,
-0.27411042041148903, -0.2706409642348717, -0.2675783047434379},
{-0.8430811233043869, -0.571746110414324, -0.476697057734782,
-0.42664276015716496, -0.3942033407272447, -0.37277608951148977,
-0.354880183209616, -0.34189364541157374, -0.331146977189519,
-0.32189958518392814, -0.31387564896272124, -0.30692007792458753,
-0.3007785537331529, -0.2952924963863097, -0.29034683683107687,
-0.28585671472183094, -0.2817543441306043, -0.2779771770053685,
-0.27449686244813165, -0.2710241068275536, -0.2679576032217028},
{-0.8432223090084108, -0.5721294569881366, -0.47713394282209265,
-0.4270898300196677, -0.39464857412440324, -0.37321472180792625,
-0.3553136923035254, -0.34232457570760744, -0.33157329435789507,
-0.32232101259455703, -0.3142925306160578, -0.3073330812489985,
-0.30118749615212437, -0.29569757365516125, -0.29074812379826653,
-0.28625428503687544, -0.28214840362761606, -0.27836791659501614,
-0.2748844667078174, -0.2714084027413719, -0.2683380439618759},
{-0.8433648344177982, -0.5725143165427653, -0.4775723132067924,
-0.42753835147595964, -0.3950952184754897, -0.3736547273074393,
-0.35574855409799966, -0.34275684143631224, -0.3320009158292123,
-0.3227437224559253, -0.314710687802517, -0.3077473429634665,
-0.3015976802964815, -0.2961038799458038, -0.2911506225955236,
-0.28665305266372343, -0.2825436495775193, -0.27875983090029877,
-0.27527323651725055, -0.27179385527483646, -0.26871963009057254},
{-0.8435087031618878, -0.5729006932475613, -0.4780121733053875,
-0.42798832879202564, -0.3955432780464889, -0.3740961100804725,
-0.35618477266802984, -0.3431904466247033, -0.3324298454579093,
-0.32316771860837434, -0.3151301244572551, -0.30816286686490457,
-0.30200911005022135, -0.2965114189230462, -0.2915543367637383,
-0.2870530212103404, -0.2829400854357118, -0.2791529234780228,
-0.27566317531614004, -0.27218046775738003, -0.2691023647826114},
{-0.8436539188788856, -0.5732885912972279, -0.4784535273920483,
-0.4284397661119783, -0.39599275687578483, -0.37453887397896324,
-0.3566223518869265, -0.34362539503536027, -0.3328600870856917,
-0.323593004594386, -0.315550843980418, -0.30857965636459994,
-0.30242178881576365, -0.29692019404797065, -0.29195926964143837,
-0.28745419392384974, -0.28333771445477396, -0.2795471975905457,
-0.2760542863804858, -0.2725682434152077, -0.26948625119416647},
{-0.8438004852031327, -0.5736780148743037, -0.4788963798430359,
-0.42889266763290834, -0.3964436589972138, -0.3749830230099178,
-0.35706129576260537, -0.3440616906368632, -0.33329164459178173,
-0.3240195841233344, -0.3159728501736936, -0.30899771520125796,
-0.30283572045414076, -0.29733020880439653, -0.29236542471471694,
-0.2878565744185835, -0.28373654009919846, -0.27994265670690766,
-0.27644657321752675, -0.27295718546201897, -0.2698712925594009},
{-0.8439484057806794, -0.5740689681608728, -0.4793407350309735,
-0.42934703761898163, -0.39689598870472764, -0.3754285612114927,
-0.3575016083227638, -0.34449933728910764, -0.3337245219684064,
-0.3244474610078214, -0.3163961467776062, -0.3094170470371864,
-0.30325090859309967, -0.29774146688851033, -0.2927728054655745,
-0.2882601661242461, -0.2841365658000541, -0.2803393044046061,
-0.27684003913259403, -0.2733472972313393, -0.2702574919599101},
{-0.8440976842992995, -0.5744614553898373, -0.4797865973146145,
-0.42980288024841684, -0.39734975000646955, -0.3758754924594996,
-0.35794329346185805, -0.34493833895157877, -0.3341587231468566,
-0.3248766388180684, -0.31682073743763794, -0.30983765534256236,
-0.3036673568801689, -0.2981539716465704, -0.2931814153303094,
-0.28866497248668566, -0.28453779486449093, -0.28073714389711313,
-0.2772346873753122, -0.2737385818936673, -0.2706448526441818},
{-0.8442483244206187, -0.5748554807876189, -0.4802339711204695,
-0.4302601997801503, -0.39780494712931613, -0.3763238208257462,
-0.35838635533195884, -0.34537869957625844, -0.3345942520995777,
-0.32530712135712747, -0.31724662593273933, -0.31025954402343814,
-0.30408506913272504, -0.29856772678908783, -0.2935912578011539,
-0.28907099717162055, -0.2849402308418121, -0.2811361788787963,
-0.2776305215661523, -0.274131042835279, -0.27103337771177394},
{-0.8444003298156986, -0.5752510485579023, -0.48068286079842437,
-0.43071900044833455, -0.3982615842598989, -0.37677355025311954,
-0.35883079779227955, -0.3458204230562387, -0.33503111270511,
-0.32573891226411433, -0.31767381593886057, -0.31068271655749413,
-0.30450404904831885, -0.2989827358023831, -0.2940023364451463,
-0.2894782436744663, -0.2853438771396668, -0.2815364127736757,
-0.2780275450652425, -0.27452468330648117, -0.27142307052031356},
{-0.8445537041963007, -0.5756481629841801, -0.481133270830469,
-0.43117928653714443, -0.39871966548389537, -0.3772246847877341,
-0.3592766249375927, -0.34626351330234684, -0.3354693090202545,
-0.3261720152322596, -0.31810231118288357, -0.3111071766606983,
-0.30492430031313233, -0.2993990022323487, -0.2944146546255979,
-0.2898867154333402, -0.28574873705088066, -0.2819378490821691,
-0.27842576116086093, -0.27491950648686725, -0.271813934086822},
{-0.8447084512644096, -0.5760468283051523, -0.4815852055869527,
-0.43164106230187826, -0.3991791950904826, -0.37767722847434015,
-0.35972384082629105, -0.34670797423109434, -0.3359088449888077,
-0.3266064339979948, -0.31853211543739235, -0.3115329279848993,
-0.30534582658469844, -0.2998165296660318, -0.2948282159027258,
-0.2902964160875854, -0.28615481410474786, -0.2823404913272043,
-0.27882517335092416, -0.2753155157015499, -0.2722059716561489},
{-0.8448645747396313, -0.5764470487956714, -0.48203866955554986,
-0.43210433203080356, -0.3996401772308218, -0.37813118535291323,
-0.3601724494935752, -0.34715380985539923, -0.33634972471645597,
-0.3270421722818355, -0.3189632324936156, -0.3119599742340142,
-0.30576863174496793, -0.3002353216706979, -0.2952430238665329,
-0.2907073493072403, -0.2865621118025956, -0.28274434305581053,
-0.279225785106064, -0.27571271424517363, -0.2725991865370361},
{-0.8450220783558962, -0.5768488287496893, -0.482493667196195,
-0.43256910004743077, -0.40010261613156217, -0.3785865593986273,
-0.3606224549585022, -0.3476010240995038, -0.3367919521335807,
-0.32747923380475186, -0.31939566606229164, -0.3123883191155983,
-0.30619271946625304, -0.30065538181929696, -0.2956590819815119,
-0.29111951853928986, -0.28697063354366037, -0.2831494077129264,
-0.279627599741616, -0.27611110533985084, -0.2729935818388185},
{-0.8451809658416778, -0.5772521724268245, -0.48295020297814517,
-0.43303537063957265, -0.4005665160261742, -0.3790433547169414,
-0.3610738613533613, -0.3480496209042485, -0.3372355313974822,
-0.3279176222440583, -0.3198294199992233, -0.31281796627877156,
-0.3066180935977627, -0.30107671369773925, -0.2960763937676347,
-0.29153292750766013, -0.2873803828229029, -0.28355568901747574,
-0.2800306208166603, -0.2765106924343854, -0.273389160808847},
{-0.8453412409306793, -0.577657084135808, -0.48340828136383607,
-0.4335031480982252, -0.4010318811399429, -0.3795015753539701,
-0.3615266726455957, -0.34849960426709004, -0.337680466503798,
-0.32835734132390826, -0.3202644979942306, -0.31324891945587297,
-0.3070447578325002, -0.30149932087761044, -0.2964949627264559,
-0.2919475797934865, -0.28779136307775843, -0.28396319045441487,
-0.2804348517533981, -0.2769114786872251, -0.27378592663831114},
{-0.8455029074186768, -0.5780635682378943, -0.4838679069077898,
-0.4339724368524003, -0.40149871580319996, -0.37996122548588573,
-0.36198089311028525, -0.34895097815160625, -0.33812676152797394,
-0.3287983948337114, -0.3207009039292643, -0.3136811823046628,
-0.30747271596828796, -0.3019232068809288, -0.2969147924493427,
-0.2923634788783147, -0.2882035778550289, -0.28437191548232477,
-0.28084029587239456, -0.27731346736686646, -0.27418388263913585},
{-0.845665969058814, -0.5784716290145298, -0.4843290840890404,
-0.4344432411323851, -0.40196702414664287, -0.3804223090967298,
-0.3624365265970937, -0.34940374643770156, -0.33857442058251763,
-0.32924078645601185, -0.32113864149528126, -0.31411475853406046,
-0.3079019717902156, -0.3023483753581786, -0.2973358865274349,
-0.29278062855632925, -0.28861703060192667, -0.28478186774259484,
-0.28124695682754464, -0.27771666198668754, -0.274583032030705},
{-0.845830429615944, -0.578881270827651, -0.48479181744687594,
-0.43491556535423115, -0.4024368105035592, -0.38088483024921516,
-0.3628935773751891, -0.34985791314875314, -0.3390234477485592,
-0.32968451994179304, -0.321577714638579, -0.3145496519061908,
-0.3083325290465382, -0.3027748298648021, -0.29775824844341514,
-0.2931990324311755, -0.2890317248416068, -0.2851930508247733,
-0.2816548379937558, -0.2781210656082749, -0.2749833779741948},
{-0.8459962929135827, -0.5792924980237331, -0.4852561115217213,
-0.4353894139237582, -0.402908079225881, -0.38134879315771286,
-0.3633520495186531, -0.35031348234406323, -0.3394738471404253,
-0.3301295990543167, -0.3220181271274214, -0.31498586611792234,
-0.3087643916333036, -0.30320257407151985, -0.2981818818184365,
-0.29361869406875485, -0.28944766410040756, -0.2856054683165894,
-0.28206394280937275, -0.27852668179139073, -0.2753849238190469},
{-0.8461635627249962, -0.5797053149638032, -0.4857219709176661,
-0.43586479115151633, -0.403380834568452, -0.38181420191449433,
-0.3638119471081609, -0.35077045790944794, -0.3399256229461116,
-0.3305760275193279, -0.32245988283966653, -0.31542340486953435,
-0.30919756329512893, -0.30363161151149143, -0.2986067901488241,
-0.29403961719890503, -0.2898648518360005, -0.2860191238473817,
-0.2824742748043718, -0.2789335137622402, -0.275787672720071},
{-0.8463322428867741, -0.5801197260284425, -0.4861894001253404,
-0.43634170149380225, -0.4038550808324999, -0.3822810606282019,
-0.364273274339439, -0.3512288438348605, -0.3403787791914965,
-0.3310238090650728, -0.32290298556927155, -0.3158622719276991,
-0.3096320478268808, -0.30406194576380585, -0.2990329770666449,
-0.29446180537183864, -0.29028329167340416, -0.2864340209018792,
-0.28288583740982176, -0.27934156484957384, -0.276191628020797},
{-0.846502337209813, -0.5805357356243803, -0.48665840382818715,
-0.4368201493275592, -0.40433082235631446, -0.38274937352230154,
-0.3647360353352269, -0.3516886442218947, -0.3408333202442009,
-0.3314729476728644, -0.3233474392648077, -0.31630247108228104,
-0.31006784915825847, -0.3044935805999103, -0.2994604463131054,
-0.29488526240947976, -0.29070298720694154, -0.28685016320696377,
-0.2832986342687036, -0.27975083854698823, -0.276596793009503},
{-0.8466738495375239, -0.5809533481276503, -0.4871289865727704,
-0.4373001390711124, -0.4048080634811413, -0.3832191446260822,
-0.36520023421417136, -0.3521498629193047, -0.34128925002869437,
-0.33192344680446695, -0.32379324773614826, -0.3167440060192348,
-0.31050497098226515, -0.3049265194497366, -0.29988920121718365,
-0.2953099918247517, -0.29112394186404345, -0.28726755419415895,
-0.2837126687381897, -0.28016133799246745, -0.27700317073345104},
{-0.8468467837087701, -0.5813725679458912, -0.48760115296022377,
-0.43778167517598376, -0.4052868085575483, -0.38369037814686635,
-0.36566587515767424, -0.35261250405233113, -0.3417465728416573,
-0.3323753104220941, -0.3242404148825244, -0.31718688056707833,
-0.3109434172829424, -0.305360766098147, -0.30031924558647916,
-0.295735997385691, -0.2915461593647706, -0.2876861976137661,
-0.2841279444699012, -0.28057306683490424, -0.27741076474285364},
{-0.8470211435982264, -0.5817933995269868, -0.48807490767467243,
-0.4382647620868738, -0.4057670619483815, -0.3841630783401797,
-0.3661329623273559, -0.35307657162798023, -0.34220529292133506,
-0.33282854234835213, -0.32468894461771924, -0.3176310984410975,
-0.3113831918460619, -0.30579632410513113, -0.30075058296029056,
-0.29616328274164516, -0.29196964326501984, -0.2881060970771614,
-0.2845444648862667, -0.28098602823592955, -0.277819578138633},
{-0.8471969330694264, -0.5822158473074523, -0.4885502553590868,
-0.43874940428872833, -0.4062488280794696, -0.3846372493514991,
-0.36660149990188984, -0.3535420695702669, -0.34266541431429687,
-0.33328314625191524, -0.3251388408400544, -0.3180766634779957,
-0.3118242985071902, -0.3062331970768355, -0.3011832169036097,
-0.2965918514889836, -0.29239439710067927, -0.28852725615570307,
-0.28496223358320094, -0.28140022570369183, -0.2782296142497671},
{-0.8473741559912469, -0.5826399157151627, -0.48902720060368665,
-0.43923560613961854, -0.4067321112133868, -0.3851128953447187,
-0.3670714920340288, -0.35400900190597895, -0.3431269413545124,
-0.333739125966531, -0.3255901074405756, -0.3185235793814627,
-0.3122667411803377, -0.3066713887135393, -0.30161715121585075,
-0.29702170737778033, -0.292820424603633, -0.2889496784682706,
-0.28538125412273985, -0.28181566257512713, -0.27864087631519396},
{-0.8475528162598494, -0.583065609251662, -0.48950574820150905,
-0.43972337226296077, -0.4072169158810084, -0.3855900206228853,
-0.36754294294655665, -0.3544773727658139, -0.3435898782131517,
-0.33419648546146163, -0.32604274849495596, -0.3189718501491825,
-0.3127105237961132, -0.3071109027939656, -0.3020523894717826,
-0.29745285418880485, -0.2932477294370983, -0.2893733676910415,
-0.28580153004099884, -0.2822323423413309, -0.27905336761568833},
{-0.8477329177932234, -0.5834929323370943, -0.4899859027398179,
-0.4402127071025461, -0.4077032464520016, -0.38606862929123054,
-0.3680158568263323, -0.35494718616496357, -0.34405422908366745,
-0.3346552284408517, -0.32649676776441083, -0.3194214794305026,
-0.31315565015916036, -0.307551742864689, -0.3024889353578146,
-0.2978852954156537, -0.29367631519994575, -0.28979832747290857,
-0.28622306495412886, -0.2826502683892613, -0.2794670915536699},
{-0.8479144644812777, -0.5839218895068825, -0.4904676689786811,
-0.44070361513809075, -0.40819110734241804, -0.3865487257194218,
-0.36849023786157886, -0.35541844607337225, -0.3445199982882059,
-0.33511535871184606, -0.3269521693016486, -0.3198724711401155,
-0.313602124209865, -0.30799391257755815, -0.30292679247327214,
-0.29831903493163736, -0.2941061855610769, -0.2902245614006915,
-0.28664586238051015, -0.2830694441686319, -0.279882051289178},
{-0.8480974602641709, -0.5843524852430164, -0.49095105162109576,
-0.44119610093366646, -0.4086805030101459, -0.387030314095,
-0.36896609032987726, -0.35589115659058734, -0.34498718996792377,
-0.33557688022960974, -0.3274089570884371, -0.3203248291233649,
-0.31404994992203683, -0.30843741577086803, -0.3033659645689113,
-0.29875407635131523, -0.29453734431149314, -0.2906520731914952,
-0.2870699260336096, -0.28348987313097496, -0.28029825011776666},
{-0.8482819090899056, -0.5847847240536339, -0.4914360554223549,
-0.4416901689955921, -0.40917143784736254, -0.38751339870327683,
-0.3694434183685189, -0.35636532170769897, -0.3454558084306427,
-0.3360397967423978, -0.327867135015822, -0.3207785571241857,
-0.31449913109008776, -0.3088822559973323, -0.30380645531840855,
-0.2991904232701472, -0.2949697950537029, -0.2910808664482829,
-0.287495259376783, -0.2839115587021297, -0.2807156913545441},
{-0.8484678148887497, -0.5852186105039436, -0.4919226851206986,
-0.4421858239015819, -0.4096639163974487, -0.38799798376840045,
-0.36992222628373383, -0.3568409455615438, -0.34592585789641817,
-0.33650411223311494, -0.32832670720154056, -0.3212336592023348,
-0.31494967171761346, -0.30932843710911584, -0.30424826841840513,
-0.2996280796287465, -0.2954035416616989, -0.29151094487929186,
-0.28792186616487925, -0.284334504486651, -0.281134378343495},
{-0.8486551816300789, -0.5856541490593372, -0.49241094547573994,
-0.4426830701900144, -0.41015794311670106, -0.38848407359250814,
-0.370402518264882, -0.3573180322111966, -0.3463973426426037,
-0.3369698305566544, -0.3287876775686982, -0.32169013911129696,
-0.3154015758116202, -0.30977596276170516, -0.30469140768900616,
-0.3000670489566346, -0.29583858778391914, -0.29194231215637956,
-0.28834974994424556, -0.28475871393561647, -0.2815543143869945},
{-0.8488440132758797, -0.5860913443443678, -0.4929008412884741,
-0.4431819124613412, -0.41065352247483133, -0.38897167260188326,
-0.3708842985213323, -0.35779658568299055, -0.34687026685605815,
-0.3374369556181591, -0.32925005014703856, -0.32214800076667416,
-0.31585484723359514, -0.3102248367076754, -0.3051358767124839,
-0.30050733507778205, -0.2962749371820337, -0.2923749718795534,
-0.28877891437014114, -0.28518419054444166, -0.28197550276877337},
{-0.8490343138112166, -0.5865302008710387, -0.49339237733420305,
-0.44368235527440447, -0.41115065897156455, -0.38946078502158343,
-0.3713675714454894, -0.3582766100714707, -0.34734463488325673,
-0.3379054913116306, -0.3297138289851773, -0.32260724803427365,
-0.3163094899380212, -0.3106750627425754, -0.3055816793387294,
-0.3009489416347151, -0.2967125936957018, -0.2928089278379957,
-0.2892093631805892, -0.285610937860838, -0.28239794689420705},
{-0.8492260872423003, -0.5869707232461678, -0.49388555844620896,
-0.44418440325443953, -0.4116493571348201, -0.3899514151637504,
-0.3718523411930619, -0.35875810954553344, -0.34782045105475845,
-0.33837544165976396, -0.33017901809603245, -0.32306788496248373,
-0.3167655079423639, -0.31112664456350103, -0.3060288193823908,
-0.3013918724288942, -0.2971515611193354, -0.29324418368059924,
-0.28964109994740284, -0.2860389595100514, -0.28282165010978133},
{-0.8494193375752275, -0.5874129160545181, -0.49438038944140317,
-0.4446880610178141, -0.4121496214954732, -0.3904435673559874,
-0.3723386120404939, -0.35924108808853816, -0.3482977194753403,
-0.3388468105895299, -0.3306456215429989, -0.32352991535458386,
-0.31722290521975083, -0.31157958603284897, -0.3064773004862218,
-0.30183613113672436, -0.2975918432111939, -0.29368074306444214,
-0.2900741282992385, -0.28646825898522366, -0.2832466157333329},
{-0.849614068803703, -0.5878567839040443, -0.4948768751635271,
-0.4451933332138651, -0.412651456597132, -0.39093724604481395,
-0.37282638836427395, -0.359725549909399, -0.3487764445508219,
-0.33931960212953527, -0.331113643447452, -0.32399334325646123,
-0.31768168582107137, -0.31203389089341727, -0.3069271266290343,
-0.3022817216169642, -0.29803344391189057, -0.2941186098048547,
-0.2905084521491972, -0.2868988400316539, -0.283672847296657},
{-0.8498102849721363, -0.588302331376326, -0.49537502046200643,
-0.4457002244018895, -0.4131548669681706, -0.3914324555234998,
-0.3733156743380732, -0.3602114990458176, -0.34925663057583733,
-0.33979382023267135, -0.33158308785209556, -0.3244581726605702,
-0.31814185368557446, -0.31248956297758923, -0.3073783014763194,
-0.3027286475726214, -0.29847636692670676, -0.29455778758415363,
-0.2909440750008798, -0.2873307061754531, -0.2841003481141797},
{-0.850007990129825, -0.5887495631507136, -0.4958748302362892,
-0.4462087393510501, -0.4136598571997183, -0.39192920027699074,
-0.37380647438885717, -0.3606989396728295, -0.3497382817158723,
-0.3402694689470991, -0.33205395880372635, -0.32492440737973993,
-0.31860341280162174, -0.3129466060295272, -0.30783082893435676,
-0.3031769126537256, -0.29892061613077203, -0.29499828004168194,
-0.29138100062868943, -0.28776386104436824, -0.2845291216096939},
{-0.8502071883174267, -0.589198483851078, -0.4963763093298894,
-0.4467188826272377, -0.41416643186062174, -0.3924274845912805,
-0.3742987927307695, -0.3611878758852072, -0.3502214023549186,
-0.3407465522977873, -0.33252626044804856, -0.325392051568997,
-0.31906636725693716, -0.31340502399871184, -0.3082847129326183,
-0.3036265207226734, -0.29936619548016097, -0.29544009102687596,
-0.29181923274904875, -0.2881983083443629, -0.28495917124200787},
{-0.8504078836064082, -0.5896490981185707, -0.49687946268954875,
-0.44723065899052017, -0.4146745955101778, -0.3929273129108424,
-0.3747926337211993, -0.3616783118654894, -0.3507059967362238,
-0.34122507439406036, -0.3329999968730135, -0.32586110921943146,
-0.31953072102760416, -0.3138648205865593, -0.30873995715046476,
-0.30407747561889664, -0.299813108719718, -0.2958832241508844,
-0.29225877512271836, -0.288634051706822, -0.2853905005222259},
{-0.8506100800652803, -0.5901014106414095, -0.4973842952238101,
-0.44774407311115283, -0.41518435282387145, -0.393428689684697,
-0.3752880017248117, -0.36217025170390116, -0.3511920691985324,
-0.3417050394120906, -0.33347517225683987, -0.32633158426619957,
-0.31999647821567123, -0.3143259997723362, -0.309196565740649,
-0.30452978104312933, -0.3002613597795971, -0.29632768329133796,
-0.2926996315050019, -0.2890710949584445, -0.28582311292166196},
{-0.8508137817981378, -0.5905554260823465, -0.49789081185645045,
-0.44825912967939985, -0.41569570836873027, -0.3939316193823288,
-0.37578490105602214, -0.36266369963232137, -0.35167962401578734,
-0.3421864513638866, -0.33395179069862024, -0.32680348091525957,
-0.32046364277630346, -0.31478856535727573, -0.3096545424125452,
-0.3049834407856906, -0.30071095256244007, -0.29677347214897054,
-0.2931418055668473, -0.2895094415778203, -0.28625701192663655},
{-0.8510189928857699, -0.5910111491643875, -0.4983990175473991,
-0.4487758334635146, -0.41620866674702484, -0.39443610642115345,
-0.37628333613110954, -0.3631586597161913, -0.35216866543373726,
-0.34266931449019467, -0.33442985632677846, -0.3272768030617499,
-0.32093221879995326, -0.3152525212026376, -0.3101138910856207,
-0.3054384586394008, -0.30116189094496804, -0.2972205944190591,
-0.2935853011410927, -0.2899490955207966, -0.286692201070764},
{-0.8512257174603519, -0.5914685845707481, -0.4989089172772765,
-0.44929418917377006, -0.4167232326717567, -0.3949421553520551,
-0.37678331126721787, -0.36365513629311863, -0.3526591978563829,
-0.3431536330333529, -0.33490937340957316, -0.32775155494982755,
-0.3214022104473315, -0.31571787131815654, -0.3105746159201317,
-0.3058948384928044, -0.30161417885233277, -0.297669054129301,
-0.2940301220432957, -0.2903900604046612, -0.28712868390584845},
{-0.851433959623364, -0.5919277370505824, -0.4994205160101046,
-0.44981420154636, -0.417239410729735, -0.3954497704839923,
-0.3772848308478842, -0.3641531334171759, -0.3531512254412519,
-0.3436394110683523, -0.33539034597902173, -0.3282277405378409,
-0.3218736216426805, -0.316184619395699, -0.3110367205690636,
-0.30635258412689836, -0.3020678200803104, -0.2981188546780231,
-0.2944762719605478, -0.29083233999404, -0.28756646396709584},
{-0.8516437235227841, -0.5923886113030221, -0.4999338187524245,
-0.4503358753941029, -0.4177572056128156, -0.3959589564522048,
-0.377787899333498, -0.3646526553225158, -0.35364475258620587,
-0.34412665294621547, -0.33587277837887086, -0.32870536406858264,
-0.32234645657172223, -0.31665276951594024, -0.3115002092517898,
-0.3068116994113552, -0.30252281879666043, -0.29857000021070235,
-0.2949237547898065, -0.2912759381952128, -0.28800554496615405},
{-0.851855013313866, -0.5928512121211043, -0.5004488305148698,
-0.45085921546228747, -0.41827662203422733, -0.39646971778779516,
-0.37829252106553213, -0.36515370627216726, -0.354139783596338,
-0.3446153629568016, -0.3363566747182176, -0.32918442965160466,
-0.32282071928807454, -0.3171223256160829, -0.31196508588755023,
-0.3072721881924281, -0.30297917867824253, -0.2990224944369402,
-0.29537257427477925, -0.29172085861523556, -0.28844593034932586},
{-0.852067833152546, -0.5933155442528459, -0.5009655563321758,
-0.4513842265814674, -0.41879766466581714, -0.3969820590375548,
-0.37879870051710895, -0.3656562904038765, -0.3546363226862468,
-0.34510554539428995, -0.33684203919710853, -0.32966494132574553,
-0.3232964139081105, -0.3175932914416535, -0.3124313543860353,
-0.3077340542465663, -0.3034369037336546, -0.299476341063837,
-0.2958227342060127, -0.2921671051822159, -0.2888876238132525},
{-0.852282187193282, -0.5937816124337587, -0.5014840012106561,
-0.4519109134669179, -0.41932033814896386, -0.3974959846113961,
-0.3793064420815426, -0.36616041199772553, -0.3551343742080917,
-0.34559720454558374, -0.3373288760367359, -0.33014690335608066,
-0.32377354442223805, -0.31806567103831185, -0.3128990188909029,
-0.30819730145594804, -0.30389599793875277, -0.29993154404860434,
-0.296274238473643, -0.2926146815696029, -0.2893306290650344},
{-0.8524980796357795, -0.5942494215323677, -0.5020041702932758,
-0.45243928107447573, -0.4198446473264994, -0.3980114991816208,
-0.3798157502239974, -0.3666660753196993, -0.3556339424687849,
-0.34609034491109014, -0.3378171895874402, -0.3306303199585727,
-0.3242521151253186, -0.3185394684194307, -0.31336808339870004,
-0.3086619338712353, -0.30435646520481896, -0.30038810720066067,
-0.2967270909389299, -0.2930635917409745, -0.2897749497474251},
{-0.8527155146907717, -0.5947189762932794, -0.5025260685833928,
-0.4529693341623897, -0.42037059682115796, -0.3985286072818326,
-0.3803266294169134, -0.36717328458007614, -0.35613503175159167,
-0.3465849708532005, -0.3383069840012922, -0.3311151952759701,
-0.3247321299770647, -0.31901468743558326, -0.3138385518789164,
-0.30912795527865455, -0.3048183094547312, -0.30084603444902314,
-0.29718129536672677, -0.29351383942912435, -0.29022058958571506},
{-0.8529344965495511, -0.5951902815568246, -0.5030497012098749,
-0.45350107756848956, -0.4208981913907337, -0.39904731352271483,
-0.3808390840943048, -0.36768204404302196, -0.3566376463297729,
-0.34708108673680726, -0.33879826348334063, -0.33160153354378963,
-0.32521359311704146, -0.31949133205762337, -0.31431042840108603,
-0.30959536953400857, -0.3052815346152329, -0.3013053294691872,
-0.2976368556135185, -0.29396542844870055, -0.2906675521685429},
{-0.853155029432628, -0.5956633421487822, -0.5035750732724864,
-0.45403451621973545, -0.4214274358550938, -0.399567622545419,
-0.3813531188191064, -0.36819235806092365, -0.35714179060869355,
-0.3475786971328034, -0.339291032468509, -0.3320893390339279,
-0.3256965088000925, -0.31996940638373417, -0.3147837170815819,
-0.31006418071910957, -0.3057461447754122, -0.30176599637525214,
-0.29809377574497375, -0.29441836272872024, -0.2911158414090096},
{-0.8533771175752918, -0.5961381629108473, -0.5041021898830422,
-0.454569654904617, -0.42195833492473866, -0.4000895389442576,
-0.38186873801009824, -0.36870423081904846, -0.3576474687845348,
-0.3480778065111281, -0.33978529505588995, -0.33257861592051086,
-0.3261808809922968, -0.32044891426789945, -0.3152584220024437,
-0.3105343926738442, -0.30621214377833894, -0.302228038960493,
-0.2985520593692854, -0.29487264604267693, -0.29156546093463476},
{-0.8536007652276112, -0.5966147487429225, -0.5046310562215695,
-0.45510649862944774, -0.42249089341976287, -0.40061306735242397,
-0.3823859462704604, -0.3692176667982494, -0.35815468524469907,
-0.34857841946654844, -0.34028105576567214, -0.33306936862868497,
-0.326666713965551, -0.3209298597489578, -0.3157345471749977,
-0.3110060094295477, -0.30667953569604833, -0.3026914611589291,
-0.2990117105796344, -0.295328282313676, -0.2920164146185016},
{-0.853825976645453, -0.5970931044582812, -0.5051616773821479,
-0.4556450522450177, -0.4230251161427532, -0.40113821237696357,
-0.3829047480414829, -0.3697326701928887, -0.35866344421992835,
-0.34908054054130844, -0.3407783187910809, -0.3335616013107483,
-0.3271540118246321, -0.32141224685301495, -0.3162120967181181,
-0.31147903501323526, -0.30714832451485563, -0.30315626690116915,
-0.2994727331683862, -0.2957852753916086, -0.29246870622773713},
{-0.854052756103556, -0.5975732349868395, -0.5056940585861867,
-0.4561853206564592, -0.4235610078396803, -0.4016649787511142,
-0.3834251477921953, -0.3702492453594459, -0.35917375003646157,
-0.34958417425104926, -0.3412770884265228, -0.3340553182824806,
-0.32764277863520874, -0.3218960795309158, -0.3166910747027032,
-0.3119534733407363, -0.3076185140587313, -0.303622460101451,
-0.299935131057282, -0.2962436290436017, -0.2929223395453846},
{-0.8542811078669956, -0.5980551452137206, -0.5062282050116664,
-0.4567273088073307, -0.42409857338316215, -0.40219337118878684,
-0.38394715021809134, -0.37076739661347347, -0.35968560703781804,
-0.3500893252653441, -0.3417773689936894, -0.3345505238999067,
-0.3281330185968727, -0.3223813618424174, -0.31717148518805516,
-0.31242932849136196, -0.308090108550914, -0.30409004467219347,
-0.3003989082535554, -0.2967033472832554, -0.29337731844043446},
{-0.8545110362600781, -0.5985388400731608, -0.5067641218668086,
-0.45727102166074474, -0.42463781760443453, -0.4027233943443207,
-0.38447075982730894, -0.37128712839012223, -0.3601990195240887,
-0.3505959983315279, -0.342279164940237, -0.3350472224637997,
-0.32862473588033936, -0.3228680977433669, -0.3176533323071453,
-0.31290660449735697, -0.3085631118692618, -0.30455902469111606,
-0.30086406855798487, -0.29716443396773684, -0.2938336467918816},
{-0.8547425455930124, -0.59902432447916, -0.5073018143400532,
-0.45781646417435695, -0.4251787453151792, -0.40325505285227337,
-0.384995981115253, -0.3718084449822072, -0.3607139917362474,
-0.35110419799616466, -0.34278248051941773, -0.335545418348147,
-0.3291179346017543, -0.3233562913217156, -0.31813662021295386,
-0.3133853054325755, -0.3090375280353328, -0.30502940398991996,
-0.30133061595552135, -0.2976268929555772, -0.29429132841050887},
{-0.8549756401411059, -0.599511603390738, -0.507841287708743,
-0.45836364137517194, -0.4257213614368993, -0.4037883515861722,
-0.3855228187494504, -0.3723313509290165, -0.3612305280655619,
-0.3516139291266427, -0.34328732022299846, -0.3360451158748674,
-0.32961261903324157, -0.32384594668906175, -0.3186213530009354,
-0.31386543546750545, -0.30951336111320416, -0.30550118672499593,
-0.30179855442656844, -0.29809072825264593, -0.29475036730127613},
{-0.8552103242789144, -0.6000006817419035, -0.5083825471833734,
-0.45891255816081866, -0.4262656707910537, -0.40432329518148435,
-0.38605127727987565, -0.37285585052131864, -0.361748632849185,
-0.35212519634319506, -0.3437936883688053, -0.336546319534591,
-0.33010879319454034, -0.3243370677867006, -0.31910753478723564,
-0.31434699863257265, -0.3099906151323921, -0.30597437679307404,
-0.30226788790605497, -0.29855594371792904, -0.2952107672144848},
{-0.8554466023604164, -0.6004915645664823, -0.508925598092901,
-0.45946321964856907, -0.42681167827004174, -0.40485988849104615,
-0.38658136134267806, -0.37338194819903947, -0.3622683102935298,
-0.352638004458413, -0.3443015893462871, -0.33704903354032467,
-0.3306064613589115, -0.32482965869098734, -0.31959516957590495,
-0.31482999907302656, -0.3104692940851237, -0.30644897816773664,
-0.3027386203430069, -0.2990225433059095, -0.2956725322046623},
{-0.8556844787141245, -0.6009842567923442, -0.5094704456469117,
-0.46001563077538776, -0.42735938881128277, -0.40539813632358346,
-0.38711307545486306, -0.373909648373683, -0.36278956479577573,
-0.35315235826328717, -0.34481102759241367, -0.3375532623479103,
-0.3311056276334057, -0.32532372352966377, -0.32008426173206317,
-0.31531444087022464, -0.310949402069582, -0.30692499499127734,
-0.3032107557364725, -0.299490530971525, -0.2961356662262915},
{-0.85592395772278, -0.6014787634369441, -0.5100170951782275,
-0.46056979659056196, -0.427908807270569, -0.4059380432731814,
-0.38764642429168816, -0.3744389555452017, -0.3633124006723847,
-0.353668262544943, -0.34532200744251895, -0.3380590104777639,
-0.33160629617850645, -0.3258192663040518, -0.3205748152176966,
-0.3158003283197104, -0.3114309430998219, -0.3074024312691108,
-0.30368429803229446, -0.2999599107129143, -0.2966001731892902},
{-0.8561650437779917, -0.6019750895241032, -0.5105655520158052,
-0.46112572219544745, -0.4284599385969159, -0.40647961430113355,
-0.3881814124554239, -0.3749698741901284, -0.36383682220821356,
-0.3541857221559894, -0.34583453346226634, -0.33856628222042673,
-0.3321084713054461, -0.32631629119759964, -0.32106683418533066,
-0.316287665550135, -0.31191392127811923, -0.3078812909448061,
-0.3041592512463467, -0.3004306864550017, -0.2970660571204462},
{-0.8564077412738698, -0.6024732401103847, -0.5111158214697298,
-0.4616834126145477, -0.4290127877532086, -0.4070228542127552,
-0.38871804457312464, -0.37550240876976204, -0.36436283379907763,
-0.35470474197745716, -0.34634861002200523, -0.33907508212587345,
-0.3326121570180476, -0.3268148022548303, -0.32156032285774927,
-0.31677645673062216, -0.3123983406148909, -0.30836157828298383,
-0.3046356193876818, -0.30090286214544903, -0.29753332192740345},
{-0.8566520546200991, -0.6029732202175637, -0.5116679088780529,
-0.46224287297036426, -0.4295673596373035, -0.4075677678642933,
-0.3892563253214121, -0.37603656371493344, -0.3648904396943635,
-0.3552253268360346, -0.34686424155006534, -0.3395854145435351,
-0.3331173575875255, -0.3273148035646045, -0.32205528530630545,
-0.3172667061407992, -0.3128842052960863, -0.30884329714854175,
-0.305113406412147, -0.3013764417864877, -0.29800197170516185},
{-0.856897988237165, -0.6034750349163005, -0.5122218196395352,
-0.4628041083039989, -0.43012365928893814, -0.4081143601219992,
-0.3897962593689499, -0.37657234367293313, -0.36541964432376517,
-0.3557474817307593, -0.3473814326337106, -0.3400972840506711,
-0.3336240772960082, -0.32781629941518986, -0.322551725858375,
-0.3177584179866244, -0.313371519332577, -0.30932645186112495,
-0.3055926164088305, -0.30185142941763843, -0.2984720104832377},
{-0.8571455465811368, -0.6039786893113614, -0.5127775590942747,
-0.46336712374522904, -0.4306816915973286, -0.408662635720475,
-0.39033785129845455, -0.3771097529902363, -0.3659504519021084,
-0.3562712114458009, -0.3479001875971335, -0.34061069501672137,
-0.33413232017414884, -0.3283192937178683, -0.32304964838567685,
-0.31825159646905377, -0.31386028685574274, -0.30981104625379885,
-0.3060732533699593, -0.3023278289419977, -0.29894344215608726},
{-0.8573947340640871, -0.6044841884263406, -0.513335132639213,
-0.46393192446430476, -0.4312414616370006, -0.4092125996678533,
-0.3908811057785897, -0.37764879638734783, -0.36648286688000553,
-0.35679652099770465, -0.3484205110223684, -0.3411256520225834,
-0.33464209052090155, -0.32882379078091617, -0.3235490572883464,
-0.3187462459513881, -0.3143505120201553, -0.31029708460528127,
-0.30655532133505403, -0.3028056444845788, -0.29941627101334234},
{-0.8576455551841491, -0.6049915374446755, -0.5138945457276805,
-0.4644985155705399, -0.4318029743801617, -0.4097642568981428,
-0.39142602752281164, -0.37818947833716265, -0.367016893622349,
-0.3573234153300291, -0.34894240744301896, -0.34164215953956045,
-0.33515339255927756, -0.32932979474662716, -0.32404995673778103,
-0.3192423706568661, -0.31484219889671294, -0.3107845710487709,
-0.30703882436546337, -0.3032848799648491, -0.299890500994934},
{-0.8578980144056914, -0.6055007414774991, -0.5144558037482057,
-0.4650669022009879, -0.43236623485017844, -0.410317612255767,
-0.39197262118864273, -0.37873180334941026, -0.36755253634851215,
-0.35785189935108974, -0.34946588124262234, -0.3421602220314526,
-0.3356662304790916, -0.3298373097545664, -0.324552350860813,
-0.3197399748460157, -0.31533535164453497, -0.31127350961469347,
-0.3075237665016175, -0.30376553946007334, -0.30036613618040064},
{-0.8581521162060426, -0.6060118056082047, -0.5150189120934101,
-0.4656370894911106, -0.4329312480158478, -0.4108726706840571,
-0.3925208914185987, -0.3792757760711538, -0.36808979947386433,
-0.3583819780681097, -0.3499909369791112, -0.3426798440350467,
-0.3361806084685668, -0.33034634004025065, -0.3250562438674933,
-0.3202390627852765, -0.31582997440636973, -0.3117639045121905,
-0.3080101518180527, -0.30424762692882723, -0.30084318073113536},
{-0.8584078650948186, -0.6065247350636582, -0.5155838763178053,
-0.4662090827052907, -0.433498019014678, -0.41142943712543456,
-0.3930708429597871, -0.37982140113535934, -0.36862868745015476,
-0.3589136565103672, -0.3505175792076898, -0.3432010301949049,
-0.33669653081051365, -0.3308568898487465, -0.32556163998651755,
-0.32073963890570667, -0.31632607135543367, -0.31225575991675214,
-0.30849798439840015, -0.30473114650931166, -0.3013216387657849},
{-0.8586652655990292, -0.6070395349679529, -0.516150701836068,
-0.4667828870303765, -0.4340665528650334, -0.4119879165459679,
-0.39362248047746107, -0.3803686830933657, -0.36916920456042135,
-0.35944693965507213, -0.3510458124505931, -0.34372378493844735,
-0.3372140017509082, -0.331368963371915, -0.32606854343066516,
-0.3212417074728364, -0.3168236466704002, -0.3127490799838597,
-0.3089872683235626, -0.30521610223149764, -0.30180151444210424},
{-0.858924322232042, -0.6075562105415884, -0.5167193941565529,
-0.4673585076559448, -0.4346368546807753, -0.41254811395197066,
-0.39417580863482726, -0.3809176265961014, -0.3697113551736493,
-0.3599818324780699, -0.3515756412450628, -0.344248112875448,
-0.3377330255043489, -0.3318825648339043, -0.32657695842954126,
-0.3217452727908494, -0.3173227045040221, -0.3132438688567163,
-0.3094780076717143, -0.3057024980676033, -0.30228281183326544},
{-0.8591850395421261, -0.6080747669516313, -0.5172899587680604,
-0.46793594984001174, -0.4352089294650341, -0.413110034345209,
-0.39473083221128036, -0.38146823625947945, -0.37025514370520796,
-0.36051834000500094, -0.35210707011265185, -0.3447740185119983,
-0.33825360636456026, -0.3323976985830086, -0.3270868891718237,
-0.32225033920667556, -0.3178232491382005, -0.3137401307972141,
-0.309970206602884, -0.3061903381526463, -0.30276553524618066},
{-0.8594474220861912, -0.6085952094206277, -0.517862401158709,
-0.4685152187487347, -0.43578278233121637, -0.4136736826565084,
-0.3952875557849893, -0.38202051665439285, -0.3708005744742877,
-0.3610564672339933, -0.3526401035530853, -0.3453015064246756,
-0.33877574854795967, -0.33291436880244873, -0.3275983399780671,
-0.322756910946282, -0.3183252846938558, -0.3142378698980792,
-0.31046386912930757, -0.3066796265352423, -0.30324968872764657},
{-0.8597114744324017, -0.6091175432327418, -0.518436726908476,
-0.4690963197176643, -0.43635841845798495, -0.4142390639660789,
-0.3958459842058346, -0.3825744726029825, -0.37134765193263775,
-0.3615962192398001, -0.3531747462579915, -0.34583058133375744,
-0.33929945637737546, -0.3334325799664839, -0.3281113150028432,
-0.32326499255714225, -0.3188288154797192, -0.3147370904989657,
-0.3109589994896851, -0.30717036725081925, -0.3037352765441028},
{-0.8599772011647246, -0.6096417735484465, -0.5190129415489082,
-0.4696792580255078, -0.43693584292736887, -0.41480618328751007,
-0.39640612208359016, -0.3831301086745498, -0.3718963804606119,
-0.362137601062841, -0.3537110027205017, -0.3463612476302842,
-0.33982473417654546, -0.333952336215134, -0.3286258186226405,
-0.32377458829432726, -0.3193338457040227, -0.31523779668577845,
-0.31145560173990816, -0.3076625645076092, -0.3042223028655826},
{-0.8602446068705376, -0.6101679057101137, -0.5195910506597556,
-0.4702640389093631, -0.43751506084799985, -0.4153750456709986,
-0.39696797413535023, -0.3836874295730013, -0.3724467644535707,
-0.362680617727392, -0.3542488775506172, -0.34689351005135904,
-0.3403515861255073, -0.3344736420403933, -0.3291418550857088,
-0.3242857025466037, -0.3198403795727245, -0.315739992788167,
-0.3119536801068534, -0.3081562222910179, -0.30471077180254724},
{-0.8605136961562039, -0.6106959449807619, -0.5201710597939382,
-0.470850667711602, -0.4380960774283267, -0.41594565624814095,
-0.3975315451966708, -0.38424643995358565, -0.37299880832620147,
-0.3632252742104356, -0.3547883752639791, -0.3474273731944777,
-0.34088001665986667, -0.33499650176054274, -0.3296594286666732,
-0.32479833970819527, -0.3203484214545824, -0.3162436829534272,
-0.31245323868051855, -0.30865134468149336, -0.305200687645538},
{-0.8607844736733341, -0.6112258966561512, -0.5207529745575812,
-0.47143914972116363, -0.43867889780926816, -0.416518020064359,
-0.3980968398816458, -0.38480714457477916, -0.3735525165295712,
-0.3637715757197384, -0.3553295005272048, -0.3479628416816922,
-0.34141003007061954, -0.33552091969340836, -0.3301785436137834,
-0.3253125040964733, -0.32085797556146645, -0.3167488715826039,
-0.3129542816168396, -0.3091479359582081, -0.30569205455594783},
{-0.8610569440302243, -0.6117577660545521, -0.5213368005722714,
-0.4720294903440845, -0.43926352715129724, -0.4170921421628009,
-0.39866386294693257, -0.3853695481059276, -0.37410789342470707,
-0.3643195271042714, -0.35587225792232857, -0.34849992013732844,
-0.34194163067968475, -0.33604690047923214, -0.3306992043721948,
-0.3258282001356747, -0.32136904620165296, -0.31725556277797295,
-0.31345681317725393, -0.3096460001147534, -0.30618487669653405},
{-0.8613311118828051, -0.6122915584796829, -0.5219225434718737,
-0.4726216948670299, -0.43984997072720944, -0.41766802771758194,
-0.3992326191691973, -0.38593365535848534, -0.37466494354953284,
-0.3648691336502452, -0.35641665208731865, -0.34903861321618024,
-0.34247482293494613, -0.3365744483776325, -0.33122141520561854,
-0.32634543228095936, -0.3218816377257099, -0.3177637608741861,
-0.3139608374872296, -0.31014554139119355, -0.3066791582668884},
{-0.861606981879163, -0.6128272793155247, -0.5225102088716085,
-0.4732157686410119, -0.44043823367883306, -0.41824568181618815,
-0.3998031132284723, -0.3864994709608709, -0.3752236713100956,
-0.36542040017957333, -0.3569626876433176, -0.3495789256421631,
-0.3430096110869272, -0.3371035679419947, -0.3317451804491611,
-0.32686420493109836, -0.322395754419631, -0.31827347020225716,
-0.314466358759546, -0.3106465639034468, -0.3071749034234017},
{-0.8618845587379838, -0.6133649339237763, -0.5230998024501332,
-0.4738117171352769, -0.4410283212084778, -0.41882510968321185,
-0.40037534993416557, -0.3870669997013465, -0.3757840810619655,
-0.3659733318459075, -0.35751036916917656, -0.3501208619481986,
-0.3435459995725978, -0.337634263502423, -0.33227050445611894,
-0.3273845223884564, -0.3229114006744567, -0.3187846948562765,
-0.3149733812183513, -0.31114907183473406, -0.3076721164097762},
{-0.8621638471228152, -0.6139045276870547, -0.523691329868825,
-0.4744095456735522, -0.44162023862895694, -0.41940631642296466,
-0.4009493339906385, -0.38763624631496896, -0.376346177420146,
-0.3665279337942593, -0.3580597014347404, -0.35066442686911614,
-0.344083992848482, -0.338166539795111, -0.3327973916693736,
-0.3279063890627185, -0.3234285808312052, -0.31929743941418565,
-0.31548190899502515, -0.3116530694182984, -0.30817080136148434},
{-0.8624448517397241, -0.6144460659652395, -0.5242847967801936,
-0.4750092596052582, -0.4422139910891474, -0.4199893071124734,
-0.4015250701581863, -0.38820721552338, -0.37690996470632854,
-0.3670842108699617, -0.35861068890790193, -0.3512096251861294,
-0.34462359525468855, -0.3387004011465251, -0.3333258464335813,
-0.3284298095691156, -0.3239472991681396, -0.31981170797280356,
-0.31599194640421047, -0.3121585608400892, -0.3086709624612922},
{-0.8627275773119436, -0.6149895542164359, -0.5248802089508899,
-0.4756108645274253, -0.44280958393801484, -0.4205740870718273,
-0.40210256316845516, -0.3887799122335309, -0.37747544756734897,
-0.3676421682725959, -0.3591633364426343, -0.3517564615108313,
-0.34516481125046994, -0.3392358521787173, -0.3338558732752972,
-0.3289547882623083, -0.32446756023909984, -0.3203275049072545,
-0.3165034976404968, -0.31266555035381316, -0.3091726040051981},
{-0.863012028569301, -0.6155349978714639, -0.5254775720768521,
-0.4762143657608249, -0.4434070224745028, -0.42116066143444186,
-0.40268181786314017, -0.3893543410717939, -0.37804263037742203,
-0.3682018110421268, -0.3597176485864111, -0.35230494060942874,
-0.34570764531190434, -0.3397728974882739, -0.3343874765241708,
-0.32948132952424203, -0.32498936824958946, -0.32084483449079926,
-0.3170165670303504, -0.3131740420976712, -0.30967573021325734},
{-0.8632982102728874, -0.6160824023513669, -0.5260768918653866,
-0.47681976880721777, -0.44400631186158535, -0.42174903543377695,
-0.4032628389295496, -0.3899305068553076, -0.37861151759398126,
-0.3687631441148369, -0.36027363001039703, -0.35285506719901605,
-0.3462521018504958, -0.3403115415658249, -0.3349206606144435,
-0.3300094378041649, -0.3255127277370775, -0.32136370108582923,
-0.3175311586751377, -0.31368404043996634, -0.3101803452259446},
{-0.8635861271667409, -0.6166317731576783, -0.526678174133167,
-0.477427079116751, -0.44460745757623954, -0.4223392143444471,
-0.4038456311927803, -0.39050841446760387, -0.3791821139170679,
-0.3693261727266872, -0.360831285463064, -0.3534068460180606,
-0.34679818539416374, -0.3408517891775773, -0.33545543022546553,
-0.33053911764545774, -0.3260376430462202, -0.32188410916614885,
-0.31804727701546653, -0.3141955496794253, -0.3106864534579472},
{-0.863875784037873, -0.6171831157462293, -0.5272814245431618,
-0.47803630216913007, -0.4452104647359647, -0.42293120326985445,
-0.4044301994149464, -0.3910880685666598, -0.3797544236599606,
-0.36989090173165096, -0.3613906195960226, -0.35396028185050454,
-0.34734590041307456, -0.34139364474822287, -0.3359917896264051,
-0.33107037343006596, -0.32656411863627, -0.32240606285722606,
-0.31856492623728627, -0.3147085739033173, -0.31119405910658315},
{-0.8641671856670428, -0.6177364356412909, -0.5278866489395568,
-0.4786474435391028, -0.4458153388484334, -0.4235250075641943,
-0.40501654838590184, -0.3916694740898947, -0.3803284514879124,
-0.37045733629611277, -0.3619516370954443, -0.35451537942708455,
-0.34789525144560685, -0.34193711293528395, -0.33652974352344245,
-0.3316032097477546, -0.32709215907470934, -0.32292956663786754,
-0.31908411065887776, -0.3152231175977249, -0.3117031665497052},
{-0.864460336853881, -0.6182917383650874, -0.52849385313948,
-0.47926050867226877, -0.4464220851925802, -0.4241206325036728,
-0.40560468290141216, -0.39225263578305203, -0.3809042019802291,
-0.3710254814018299, -0.36251434272389815, -0.35507214360086436,
-0.34844624294373716, -0.34248219848905137, -0.33706929636218774,
-0.3321376309781954, -0.3276217685761367, -0.32345462492094157,
-0.31960483458897215, -0.31573918493631936, -0.31221378022883073},
{-0.8647552424451987, -0.618849029452349, -0.5291030428734302,
-0.4798755031467863, -0.4470307091453378, -0.4247180833274342,
-0.40619460776224514, -0.3928375584453079, -0.38148167952476797,
-0.37159534210468337, -0.36307874111344063, -0.3556305791134946,
-0.3489988795122372, -0.3430289059087954, -0.3376104527528696,
-0.3326736416024687, -0.3281529517857962, -0.3239812419951704,
-0.3201271023585832, -0.3162567803528873, -0.3127259044031234},
{-0.865051907226416, -0.6194083144089291, -0.5297142239885488,
-0.48049243244850004, -0.4476412160408927, -0.4253173653239628,
-0.4067863277462038, -0.3934242469306355, -0.38206088886590805,
-0.3721669234801084, -0.3636448370302787, -0.35619069077029053,
-0.3495531657349602, -0.34357724000847156, -0.3381532173307278,
-0.33321124617714304, -0.3286857131547549, -0.3245094224030254,
-0.32065091831555037, -0.31677590806475564, -0.31323954363506346},
{-0.8653503360793593, -0.6199695989187148, -0.5303274024033726,
-0.48111130224833687, -0.44825361136349784, -0.4259184838576857,
-0.40737984778502323, -0.394012706169633, -0.38264183451519784,
-0.3727402305689793, -0.36421263518332125, -0.3567524835034419,
-0.350109106115724, -0.34412720535829067, -0.3386975947087194,
-0.3337504492556036, -0.32922005717682623, -0.3250391704136746,
-0.3211762867899779, -0.3172965724088499, -0.313754702317965},
{-0.8656505338443594, -0.6205328884516348, -0.5309425838916013,
-0.48173211809762506, -0.4488679004550704, -0.42652144416024385,
-0.4079751725432743, -0.3946029409125913, -0.3832245211119698,
-0.37331526842081075, -0.3647821403224043, -0.3573159619818398,
-0.350666705214735, -0.3446788066830777, -0.3392435894711525,
-0.33429125535712956, -0.3297559884272232, -0.3255704904686354,
-0.3217032121860939, -0.31781877771436484, -0.3142713851048029},
{-0.8659525054143842, -0.6210981886874833, -0.5315597743278886,
-0.48235488550153605, -0.4494840887105056, -0.42712625161834694,
-0.4085723069424603, -0.39519495602871757, -0.3838089532164304,
-0.3738920420219074, -0.36535335719463546, -0.3578811312513608,
-0.35122596768314907, -0.34523204865672596, -0.3397912063410331,
-0.33483366892551203, -0.33029351126333495, -0.3261033870517167,
-0.3222316987521481, -0.31834252833823484, -0.31478959638980086},
{-0.8662562556820603, -0.6216655052560327, -0.532178979618493,
-0.48297961024354663, -0.45010218159791293, -0.42773291162029636,
-0.4091712558617928, -0.3957887564115481, -0.3843951355029276,
-0.3744705564781725, -0.36592629050983305, -0.35844799605774824,
-0.35178689811436925, -0.3457869360213408, -0.3403404500099896,
-0.3353776945591562, -0.33083263036405697, -0.32663786456350863,
-0.32276175102379057, -0.31886782863057306, -0.31530934084685214},
{-0.8665617895226205, -0.6222348437713663, -0.5328002056371588,
-0.48360629778130715, -0.45072218457289637, -0.4283414294618524,
-0.4097720240686158, -0.39638434687731205, -0.3849830726098844,
-0.3750508168059241, -0.36650094508695474, -0.3590165612667988,
-0.3523495011254454, -0.34634347341170724, -0.3408913251255399,
-0.33592333676415365, -0.33137335023729975, -0.3271739274864558,
-0.3232933732338097, -0.3193946829019296, -0.3158306230970993},
{-0.8668691118762126, -0.6228062099282852, -0.5334234583749549,
-0.48423495390647986, -0.4513441031288039, -0.42895181054609566,
-0.41037461650034857, -0.39698173243141355, -0.3855727692084656,
-0.37563282811970566, -0.3670773256735629, -0.3595868318866451,
-0.35291378135752893, -0.3469016655790256, -0.3414438364702619,
-0.33647060022394726, -0.33191567542053235, -0.3277115802852677,
-0.3238265700233569, -0.3199230955033272, -0.31635344779624575},
{-0.8671782276669546, -0.6233796093752062, -0.5340487436499188,
-0.48486558418494496, -0.45196794268485974, -0.42956406020061877,
-0.41097903798527113, -0.39758091784460703, -0.38616423002576994,
-0.3762165954030934, -0.3676554370535996, -0.36015881270668615,
-0.35347974340356814, -0.34746151725357777, -0.3419979887594309,
-0.3370194894441738, -0.33245961051534323, -0.32825082732779265,
-0.324361345633406, -0.3204530708044331, -0.31687781970094875},
{-0.8674891418424977, -0.6239550478494493, -0.5346760674744928,
-0.48549819431787, -0.45259370874214255, -0.4301781838428269,
-0.41158529338667904, -0.39818190810638043, -0.3867574596611121,
-0.37680212380655576, -0.36823528404102035, -0.3607325086832134,
-0.3540473919319993, -0.34802303318292616, -0.34255378676971304,
-0.3375700090355167, -0.3330051600760271, -0.32879167326518655,
-0.3248977045950596, -0.3209846131589984, -0.31740374350192724},
{-0.8678018593700472, -0.624532531042405, -0.535305435756527,
-0.4861327900305241, -0.45322140686039347, -0.43079418696356697,
-0.41219338770406466, -0.3987847080602478, -0.3873524629475469,
-0.3773894182922959, -0.3688168714106723, -0.36130792481162644,
-0.3546167316280844, -0.34858621808052703, -0.3431112352973287,
-0.3381221635891052, -0.3335523287369142, -0.3293341224702999,
-0.32543565130026764, -0.321517726973525, -0.3179312240786203},
{-0.8681163852295413, -0.625112064699124, -0.5359368545603047,
-0.48676937700588496, -0.45385104247270647, -0.43141207493522415,
-0.4128033257866264, -0.399389322699335, -0.387949244623087,
-0.37797848406535195, -0.3694002040833766, -0.3618850660072894,
-0.3551877671961847, -0.3491510766693864, -0.3436703390725597,
-0.3386759577083467, -0.3341011211082332, -0.3298781795974719,
-0.3259751903128745, -0.3220524166354153, -0.31846026622088175},
{-0.8684327244072847, -0.6256936546058114, -0.5365703297879918,
-0.4874079609940054, -0.4544826211961208, -0.4320318531417797,
-0.4134151125572316, -0.3999957569158141, -0.38854780938982003,
-0.3785693260906555, -0.36998528675803755, -0.3624639371837475,
-0.35576050318695707, -0.3497176137366296, -0.34423110296302184,
-0.3392313960634965, -0.33465154178975354, -0.3304238490904936,
-0.3265163260493864, -0.32258868646795236, -0.318990874802239},
{-0.8687508819043614, -0.6262773065016063, -0.5372058674806794,
-0.4880485477365255, -0.4551161485915145, -0.4326535270849945,
-0.414028752982631, -0.4006040157132702, -0.38914816216629333,
-0.37916194960462235, -0.3705721244518827, -0.3630445433627756,
-0.356334944478931, -0.3502858339929844, -0.34479353176220684,
-0.3397884833957505, -0.33520359542626466, -0.3309711353967941,
-0.32705906309683996, -0.32312654095858306, -0.3195230547585197},
{-0.8690708627382264, -0.6268630261799899, -0.5378434736608142,
-0.4886911429448446, -0.4557516301886153, -0.4332771021793178,
-0.41464425195226795, -0.40121410404708513, -0.38975030770779995,
-0.3797563595749125, -0.3711607219843245, -0.3636268895397734,
-0.3569110956386794, -0.3508557422474041, -0.34535763037592915,
-0.34034722426895314, -0.3357572866857481, -0.33152004323346773,
-0.32760340591039494, -0.3236659844469614, -0.3200568110360109},
{-0.8693926719708998, -0.6274508194778718, -0.5384831543353812,
-0.489335752472698, -0.4563890715519392, -0.4339025839867645,
-0.41526161458705246, -0.4018260268840095, -0.3903542508214741,
-0.3803525611428995, -0.37175108409246604, -0.3642109807019551,
-0.35748896144741593, -0.35142734325609126, -0.34592340350218365,
-0.3409076233601809, -0.33631262013705054, -0.33207057700974474,
-0.3281493590388891, -0.32420702140325375, -0.3205921486101033},
{-0.8697163146200637, -0.6280406922426209, -0.5391249155854894,
-0.48998238205717826, -0.4570284783083025, -0.43452997796930504,
-0.4158808457232226, -0.4024397891780609, -0.390959996505444,
-0.38095055951953327, -0.3723432159144977, -0.3647968217678681,
-0.35806854661814214, -0.3520006418198136, -0.346490856129094,
-0.34146968536970235, -0.33686960055501913, -0.3326227414636378,
-0.32869692708663933, -0.3247496563267305, -0.32112907250848366},
{-0.8700417957766149, -0.6286326502715838, -0.539768763415168,
-0.4906310374601617, -0.45766985604177535, -0.43515928946771965,
-0.4165019504139309, -0.4030553959819372, -0.39156754948362504,
-0.38155035966656214, -0.37293712219161534, -0.3653844178502368,
-0.3586498558815947, -0.3525756426602129, -0.34705999309562685,
-0.3420334151010138, -0.3374282325275999, -0.3331765410543994,
-0.3292461145933885, -0.325293893565231, -0.32166758771199966},
{-0.8703691205112136, -0.6292266994823876, -0.540414703974875,
-0.4912817246367922, -0.45831321043351636, -0.4357905241922708,
-0.4171249337168774, -0.4036728523428792, -0.3921769148992098,
-0.38215196688952346, -0.37353280791785437, -0.36597377394082287,
-0.35923289396396285, -0.3531523505871519, -0.34763081922983474,
-0.3425988171748031, -0.33798852082190933, -0.33373198034405505,
-0.32979692616436296, -0.3258397376721405, -0.322207699422961},
{-0.8706982939165755, -0.6298228457335426, -0.5410627433252557,
-0.49193444928323515, -0.458958547093971, -0.436423687542856,
-0.41774980063928524, -0.4042921632621983, -0.3927880976089,
-0.38275538630659867, -0.3741302781068043, -0.3665648951323419,
-0.35981766566192164, -0.35373077044096135, -0.3482033395575854,
-0.34316589648915397, -0.33855047009683403, -0.3342890640560654,
-0.3303493664452617, -0.3263871931180802, -0.32274941271998614},
{-0.8710293211104272, -0.6304210949524531, -0.5417128875380968,
-0.49258921737350647, -0.4596058716388143, -0.4370587851217351,
-0.41837655624431136, -0.40491333376303373, -0.39340110259854555,
-0.38336062296957607, -0.37472953761471217, -0.36715778631514695,
-0.3604041757316736, -0.3543109070074024, -0.34877755877960226,
-0.34373465766066147, -0.33911408506355656, -0.3348477967610961,
-0.33090343997264426, -0.3269362643941349, -0.32329273260575064},
{-0.8713622072189082, -0.6310214530740268, -0.5423651428138783,
-0.4932460347247343, -0.46025518985311464, -0.43769582249888117,
-0.4190052056460445, -0.40553636899721823, -0.394015935014977,
-0.3839676822403817, -0.3753305915065539, -0.3677524527256537,
-0.36099242900672834, -0.3548927651577287, -0.34935348201679517,
-0.34430510552601845, -0.3396793704537231, -0.33540818318579113,
-0.3314591515363645, -0.3274869560082152, -0.323837664230723},
{-0.8716969573761162, -0.6316239260283965, -0.5430195152207489,
-0.4939049071642785, -0.4609065072827434, -0.43833480509238143,
-0.4196357538994562, -0.4061612739906195, -0.39463259976946574,
-0.38457656909577054, -0.3759334447413494, -0.3683488992865023,
-0.36158243015916014, -0.3554763496254054, -0.3499311139862584,
-0.34487724491418703, -0.3402463310062558, -0.335970227832604,
-0.3320165056834412, -0.32803927246095554, -0.32438421273673157},
{-0.8720335767368397, -0.6322285197682049, -0.5436760109114402,
-0.49456584074118837, -0.4615598297245924, -0.4389757385993107,
-0.4202682061682026, -0.4067880538582358, -0.3952511020784186,
-0.3851872889317747, -0.3765381024522867, -0.3689471311527086,
-0.36217418411933977, -0.35606166526167726, -0.3505104597593345,
-0.3454510806182043, -0.34081497157012564, -0.3365339354468233,
-0.3325755071077765, -0.3285932183866862, -0.3249323831955735},
{-0.8723720704997504, -0.6328352403318149, -0.544334636118947,
-0.49522884127918587, -0.4622151628957454, -0.4396186285503063,
-0.4209025675659177, -0.40741671381283595, -0.3958714470427367,
-0.38579984687066826, -0.37714456958065057, -0.3695471533192176,
-0.3627676956639334, -0.3566487170187429, -0.351091524241383,
-0.3460266174665776, -0.34138529668598494, -0.3370993106914284,
-0.3331361605173697, -0.32914879822874354, -0.3254821807049666},
{-0.8727124438235023, -0.6334440936871033, -0.544995396951208,
-0.49589391471067756, -0.46287251250328154, -0.44026348059196607,
-0.4215388432671716, -0.4080472588398152, -0.39649363981106944,
-0.3864142481475028, -0.3777528512027857, -0.37014897086010023,
-0.36336296964282155, -0.35723750964280043, -0.35167431233730895,
-0.34660386033920076, -0.34195731125146267, -0.33766635832762404,
-0.3336984706356816, -0.32970601667148003, -0.3260336102516703},
{-0.8730547018974448, -0.6340550858290044, -0.5456582995832377,
-0.4965610669689795, -0.4635318842954348, -0.4409103002840311,
-0.4221770384874617, -0.40867969421969974, -0.3971176856107377,
-0.38703049802370515, -0.37836295249826435, -0.37075258892491547,
-0.36396001088314733, -0.35782804807377033, -0.35225882901568184,
-0.34718281402410867, -0.34253102008096903, -0.33823508299929017,
-0.334262442162526, -0.3302648781482276, -0.32658667689656795},
{-0.8733988499773204, -0.6346682228736427, -0.5463233503444371,
-0.4972303041224677, -0.4641932840818299, -0.4415590932781015,
-0.4228171584259144, -0.40931402515798254, -0.3977435896740644,
-0.3876486017707066, -0.37897487848294986, -0.37135801263957546,
-0.3645588243330167, -0.35842033718336097, -0.3528450793273805,
-0.3477634834930541, -0.3431064279639031, -0.33880548947308853,
-0.3348280798354608, -0.3308253873378817, -0.3271413854185994},
{-0.8737448932838561, -0.6352835108252748, -0.5469905553372882,
-0.4979016320739902, -0.464856717615703, -0.44220986516438643,
-0.4234592082839299, -0.40995025678375896, -0.39837135733387186,
-0.3882685646576647, -0.37958863439007473, -0.371965246934451,
-0.36515941477091474, -0.3590143818564684, -0.35343306815275355,
-0.34834587366276537, -0.34368353975696664, -0.3393775824401928,
-0.3353953883988652, -0.3313875487956466, -0.3276977408891071},
{-0.8740928370446, -0.6359009557647823, -0.5476599208150219,
-0.498575056800064, -0.46552219064324163, -0.44286262156447265,
-0.42410319335704116, -0.4105883943502704, -0.39900099380747633,
-0.38889039196965314, -0.3802042253532818, -0.3725742971228101,
-0.3657617871926959, -0.3596101870766688, -0.3540228005576864,
-0.3489299894067699, -0.3442623601736159, -0.3399513666945495,
-0.3359643726835202, -0.3319513670849119, -0.3282557479960815},
{-0.8744426865566766, -0.6365205638292082, -0.5483314531213637,
-0.4992505844393236, -0.46618970907320545, -0.4435173682504683,
-0.4247491189653374, -0.4112284431248554, -0.39963250449318366,
-0.3895140890103903, -0.3808216564857503, -0.37318516812320013,
-0.3663659464759803, -0.36020775763927304, -0.3546142814443556,
-0.349515835594957, -0.34484289406282187, -0.3405268469805378,
-0.3365350373724141, -0.3325168469777964, -0.32881541154301885},
{-0.87479444707742, -0.6371423411358137, -0.5490051584199591,
-0.49992822091462585, -0.4668592786431418, -0.44417411083486513,
-0.42539699035069134, -0.41187040828526733, -0.4002658947661075,
-0.3901396610312986, -0.38144093303571935, -0.37379786504061485,
-0.36697189754977444, -0.36080709851876236, -0.3552075158718253,
-0.3501034172040818, -0.345425146334037, -0.3411040280866473,
-0.33710738720992595, -0.33308399286943313, -0.32937673609421836},
{-0.8751481239212353, -0.6377662938389221, -0.5496810431232007,
-0.5006079723275434, -0.4675309052740886, -0.44483285501883074,
-0.4260468129405126, -0.4125142952038914, -0.40090117001909675,
-0.3907671134670636, -0.3820620602609779, -0.3744123931173817,
-0.3675796453858311, -0.3614082147460067, -0.35580250883595,
-0.3506927392295438, -0.3460091218053094, -0.34168291482774293,
-0.33768142718781746, -0.33365280950374654, -0.32993972637723346},
{-0.8755037223816089, -0.6383924280521569, -0.5503591134015551,
-0.5012898447607768, -0.4682045948609357, -0.4454936064366848,
-0.4266985920453408, -0.4131601091871744, -0.40153833583190135,
-0.39139645167779236, -0.38268504345751353, -0.37502875732252505,
-0.3681891950368481, -0.36201111120817586, -0.35639926540852684,
-0.3512838066826589, -0.3465948254588511, -0.3422635119750339,
-0.33825716200635725, -0.33422330157645774, -0.3305043869545443},
{-0.8758612477818133, -0.6390207499682674, -0.5510393756308076,
-0.5019738442313155, -0.46888035312576903, -0.44615637076594794,
-0.42735233301073094, -0.4138078554765343, -0.4021773974709504,
-0.39202768092081897, -0.3833098878117198, -0.3756469628419836,
-0.3688005513549797, -0.36261579295614865, -0.35699779057586056,
-0.35187662448788615, -0.34718226201539437, -0.3428458244043213,
-0.3388345965213375, -0.33479547365823237, -0.33107072230814083},
{-0.8762207054944611, -0.6396512658193387, -0.5517218360923835,
-0.502659976899622, -0.4695581860839866, -0.4468211538869582,
-0.42800804140142645, -0.4144575395002903, -0.4028183605605591,
-0.392660806679487, -0.3839365986505072, -0.376267014817131,
-0.36941371947068546, -0.3632222649698633, -0.357598089430212,
-0.35247119765654134, -0.3477714365267275, -0.3434298569331986,
-0.33941373558036503, -0.33536933049481377, -0.3316387369491167},
{-0.8765821008480543, -0.6402839817826589, -0.5524065011618404,
-0.5033482488399841, -0.4702380996125157, -0.44748796144676817,
-0.42866572252023616, -0.4151091665980857, -0.4034612307000316,
-0.3932958343439168, -0.38456518135990336, -0.37688891835614413,
-0.37002870449532566, -0.3638305322801898, -0.35820016692559875,
-0.3530675312722451, -0.3483623538586471, -0.34401561448157736,
-0.33999458410698935, -0.3359448767655522, -0.33220843535173117},
{-0.8769454392413536, -0.6409189041200989, -0.5530933772065509,
-0.5040386662012679, -0.47092009963421333, -0.4481567991610973,
-0.42932538195054804, -0.4157627421191137, -0.4041060133758947,
-0.3939327692992265, -0.38519564124908356, -0.3775126785253633,
-0.3706455113569973, -0.3644406000212257, -0.3588040283116243,
-0.3536656302949268, -0.34895501891878666, -0.3446031019216207,
-0.3405771469697356, -0.336522117126151, -0.3327798219520446},
{-0.8773107260371944, -0.6415560390885275, -0.553782470628903,
-0.5047312351521214, -0.47160419209558313, -0.4488276728175151,
-0.429987025157061, -0.41641827154126076, -0.4047527142806757,
-0.3945716170655942, -0.38582798373954574, -0.3781383005280077,
-0.3712641453203105, -0.3650524731237965, -0.35940967858095973,
-0.35426549989233536, -0.34954943671482397, -0.3451923240645556,
-0.3411614291476326, -0.33710105639147514, -0.3333529012015788},
{-0.8776779666484344, -0.642195392922531, -0.5544737877337411,
-0.5054259618143533, -0.47229038298200976, -0.44950058812446514,
-0.43065065765222243, -0.41707576022599824, -0.4054013389923057,
-0.39521238300449113, -0.38646221420776783, -0.37876578946361406,
-0.37188461141204243, -0.36566615683341297, -0.3600171227476494,
-0.35486714508169825, -0.3501456121484807, -0.34578328597081054,
-0.34174743545327146, -0.3376816992181375, -0.33392767762234143},
{-0.8780471665272671, -0.6428369719735656, -0.5551673349905286,
-0.5061228524286889, -0.47297867822635453, -0.4501755510282237,
-0.4313162850903609, -0.417735213679407, -0.4060518931378283,
-0.3958550726088106, -0.3870983379961217, -0.37939515050402406,
-0.3725069148276816, -0.3662816561936779, -0.3606263659698925,
-0.3554705708643269, -0.35074355016604386, -0.3463759924511578,
-0.3423351708925111, -0.3382640504160008, -0.33450415560082547},
{-0.8784183310863227, -0.6434807825269218, -0.5558631187766423,
-0.5068219131330807, -0.4736690838044524, -0.4508525672476935,
-0.43198391294617977, -0.41839663728387677, -0.4067043824334178,
-0.3964996913905452, -0.3877363607825828, -0.3800263887605979,
-0.373131060808646, -0.36689897640007985, -0.3612374134077072,
-0.3560757824589018, -0.35134325585931947, -0.3469704485960392,
-0.34292464035934245, -0.33884811476946197, -0.33508233968404966},
{-0.8787914657773399, -0.6441268309133648, -0.5565611455235739,
-0.5075231501205053, -0.4743616057230611, -0.4515316424703997,
-0.43265354689856395, -0.4190600365504906, -0.4073588125097558,
-0.39714624479211125, -0.3883762877899244, -0.38065950941108895,
-0.37375705442627805, -0.36751812260672523, -0.3618502701929174,
-0.3566827849949732, -0.35194473413275773, -0.34756665931217867,
-0.34351584892056053, -0.3394338970838362, -0.3356622343899289},
{-0.8791665760825254, -0.644775123492991, -0.5572614217107912,
-0.508226569739918, -0.4750562500835258, -0.4522127827044642,
-0.43332519260729896, -0.4197254171303939, -0.40801518924490665,
-0.39779473848830094, -0.3890181246752036, -0.38129451761642486,
-0.3743849011002567, -0.3681390999940959, -0.3624649413682164,
-0.35729158350068246, -0.35254799005224413, -0.34816462951539506,
-0.34410880145424017, -0.3400214021453394, -0.3362438442918574},
{-0.8795436674893153, -0.6454256666318088, -0.5579639538123047,
-0.5089321781379113, -0.4757530228894211, -0.45289599367561095,
-0.4339988557949255, -0.4203927843536803, -0.40867351825090736,
-0.39844517792425904, -0.38966187688583886, -0.38193141856390866,
-0.37501460593421143, -0.36876191390410895, -0.3630814322232254,
-0.35790218321517386, -0.3531530286609268, -0.3487643643820775,
-0.34470350312449227, -0.34061063481203746, -0.33682717413603314},
{-0.8799227454926495, -0.6460784667287953, -0.5586687482650632,
-0.5096399815961377, -0.4764519301115797, -0.4535812812578115,
-0.43467454206484035, -0.4210621438292037, -0.40933380520937135,
-0.3990975685178455, -0.3903075499656552, -0.38257021735398666,
-0.37564617434418324, -0.36938656949632787, -0.36369974779972836,
-0.35851458926663327, -0.3537598548355163, -0.3493658688457799,
-0.34529995876391695, -0.34120159987833176, -0.3374122283748875},
{-0.8803038156258935, -0.6467335301895218, -0.5593758116190202,
-0.5103499864042078, -0.4771529779732191, -0.4542686514541856,
-0.435352257309205, -0.4217335011740033, -0.4099960560774889,
-0.3997519161925993, -0.3909551495121377, -0.3832109193067481,
-0.376279611629343, -0.370013072159054, -0.36431989343327587,
-0.3591288068041649, -0.35436847379924075, -0.3499691480483307,
-0.34589817357755237, -0.34179430239464637, -0.33799901188149306},
{-0.8806868834074066, -0.6473908634486634, -0.560085150342502,
-0.5110621988542334, -0.47785617240833744, -0.45495810987722507,
-0.43603200720463064, -0.4224068618750607, -0.41066027644410497,
-0.4004082261831172, -0.39160468107911584, -0.38385352950035667,
-0.3769149230383846, -0.3706414270350251, -0.3649418741661066,
-0.35974484101006965, -0.35497889053567633, -0.350574206930105,
-0.34649815251896143, -0.3423887470526097, -0.3385875294093239},
{-0.881071954388517, -0.6480504728974665, -0.5607967709145214,
-0.5117766252619731, -0.4785615195878563, -0.45564966259598805,
-0.4367137975636979, -0.42308223158761393, -0.4113264722009262,
-0.4010665043106201, -0.3922561503063662, -0.38449805322761677,
-0.3775521140505589, -0.3712716396776159, -0.3655656953515063,
-0.3603626971007543, -0.35559111030397617, -0.3511810506265647,
-0.34709990063311125, -0.3429849389276569, -0.33917778581508173},
{-0.8814590341758048, -0.6487123651186266, -0.5615106799973546,
-0.512493271972744, -0.4792690256608694, -0.45634331550627394,
-0.4373976342744754, -0.4237596159559871, -0.41199464911505856,
-0.40172675619396614, -0.3929095627722745, -0.3851444956994783,
-0.3781911900277919, -0.37190371534688893, -0.3661913621385793,
-0.3609823803121799, -0.3562051379149125, -0.35178968424907,
-0.34770342306592283, -0.3435828828000922, -0.339769785954104},
{-0.8818481283215078, -0.6493765464956596, -0.5622268840375,
-0.5132121453184482, -0.47997869675282345, -0.45703907453162174,
-0.43808352317864774, -0.4244390205376476, -0.412664812937237,
-0.40238898738243734, -0.39356492418346534, -0.38579286212143415,
-0.3788321564315993, -0.3725376594966292, -0.3668188798187657,
-0.36160389586666497, -0.35682097859444184, -0.35240011298037643,
-0.3483087248432639, -0.3441825837962824, -0.34036353484952997},
{-0.8822392424178815, -0.6500430235328167, -0.5629453896069663,
-0.513933251573917, -0.4806905389614258, -0.45773694555646216,
-0.43877147014609363, -0.42512045109606333, -0.41333696950096055,
-0.40305320364950603, -0.39422224016470864, -0.3864431577471805,
-0.37947501859662225, -0.37317347749740293, -0.36744825359619426,
-0.36222724896151703, -0.35743863751167737, -0.3530123418486255,
-0.34891581119472903, -0.34478404673609475, -0.34095903749675927},
{-0.8826323821074311, -0.6507118028309833, -0.5636662034544315,
-0.5146565972788721, -0.4814045585681015, -0.45843693463348245,
-0.4394614811790234, -0.42580391325054734, -0.4140111246219931,
-0.4037194106363131, -0.3948815164562802, -0.38709538794000764,
-0.38011978211488895, -0.3738111748839401, -0.368079488911917,
-0.3628524449213728, -0.3580581198020809, -0.3536263761202463,
-0.34952468714936913, -0.34538727668677893, -0.3415562988689089},
{-0.8830275530135623, -0.6513828908484811, -0.5643893319895597,
-0.5153821887377035, -0.4821207616664651, -0.4591390476180095,
-0.440153562159594, -0.42648941264951645, -0.41468728413246936,
-0.40438761400218937, -0.39554275874297673, -0.3877495579454262,
-0.38076645233513773, -0.37445075706909847, -0.368712590989162,
-0.3634794889585464, -0.35867943063931307, -0.35424222079427636,
-0.35013535791267714, -0.34599227854414494, -0.34215532419057126},
{-0.8834247608131136, -0.6520562941934713, -0.5651147819489779,
-0.5161100323541632, -0.4828391544974693, -0.4598432904731453,
-0.44084771912548604, -0.42717695505098163, -0.41536545377903167,
-0.4050578195683556, -0.3962059727527958, -0.38840567292891137,
-0.3814150348221119, -0.3750922295453165, -0.36934756511436717,
-0.3641083864231405, -0.3593025751101777, -0.3548598811339616,
-0.3507478285682737, -0.34659905734315544, -0.3427561184771548},
{-0.8838240111272171, -0.6527320194261392, -0.5658425599192469,
-0.516840134626591, -0.4835597432952454, -0.46054966936299024,
-0.4415439580889142, -0.42786654624205767, -0.41604563936743943,
-0.4057300329932332, -0.39687116417553625, -0.38906373841382447,
-0.3820655351023561, -0.37573559790507716, -0.36998441667310544,
-0.3647391424601665, -0.359927558421532, -0.3554793624539343,
-0.35136210434393433, -0.34720761818061874, -0.34335868711241346},
{-0.8842253096834156, -0.6534100731064427, -0.5665726725458171,
-0.5175725018777939, -0.4842825342161632, -0.4612581901519661,
-0.44224228510120156, -0.42855819181068, -0.4167278467120923,
-0.4064042600666653, -0.3975383389165472, -0.3897237595583647,
-0.3827179586969578, -0.37638086758670397, -0.3706231510145699,
-0.36537176250340053, -0.36055438581479393, -0.3561006698005258,
-0.35197819034101485, -0.347817965960985, -0.3439630353036591},
{-0.8846286621683248, -0.6540904619473622, -0.5673051265562208,
-0.5183071406870567, -0.48500753364260163, -0.4619688589209545,
-0.4429427062686955, -0.42925189771131045, -0.4174120816778668,
-0.4070805065452987, -0.3982075026633538, -0.39038574186542974,
-0.38337231117202464, -0.3770280442013245, -0.37126377355571094,
-0.36600625187338665, -0.36118306248454246, -0.35672380855248775,
-0.35259609194054065, -0.34843010584290823, -0.3445691682222787},
{-0.885034074287887, -0.6547731924583786, -0.5680399285586191,
-0.5190440574976947, -0.4857347477686744, -0.4626816816489736,
-0.4436452276604541, -0.42994766957963293, -0.41809835006188223,
-0.40775877825171847, -0.39887866123126514, -0.391049690631462,
-0.3840285980099907, -0.3776771333141369, -0.3719062897080221,
-0.3666426158874856, -0.36181359375177635, -0.35734878379753354,
-0.3532158142534172, -0.34904404279404844, -0.3451770912979555},
{-0.8854415517942016, -0.6554582713672517, -0.5687770853141956,
-0.5197832587637095, -0.4864641828676213, -0.4633966644460088,
-0.44434985537282046, -0.43064551327779554, -0.41878665753984023,
-0.40843908093347636, -0.39955182048379356, -0.3917156112224802,
-0.384686824813798, -0.3783281405785601, -0.3725507048293366,
-0.3672808598425945, -0.3624459846755599, -0.3579756009276025,
-0.35383736247467823, -0.3496597819566887, -0.3457868099417283},
{-0.8858511004343654, -0.6561457052969217, -0.5695166034804515,
-0.5205247510430127, -0.48719584529771964, -0.46411381341795277,
-0.4450565957722574, -0.4313454346342951, -0.4194770100330061,
-0.4091214204568132, -0.4002269862526191, -0.39238350914683906,
-0.3853469972086714, -0.3789810715375097, -0.3731970244166405,
-0.3679209891593018, -0.36308024068694067, -0.3586042652132164,
-0.35446074197261623, -0.3502773284012619, -0.3463983294523132},
{-0.886262725989809, -0.6568355009944753, -0.5702584898410805,
-0.5212685408141624, -0.4879297413444874, -0.4648331346661507,
-0.4457654548532446, -0.43204743948626856, -0.4201694133598721,
-0.4098058026866056, -0.4009041643630553, -0.3930533897159876,
-0.386009120783001, -0.37963593183712874, -0.3738452538786987,
-0.36856300921681395, -0.36371636698277143, -0.359234781986288,
-0.3550859579600001, -0.35089668731779966, -0.34701165547312485},
{-0.8866764342558326, -0.6575276650917203, -0.5710027511336193,
-0.5220146346969159, -0.48866587736711153, -0.46555463415324994,
-0.4464764389076663, -0.4327515336462966, -0.4208638732775398,
-0.4104922334395269, -0.401583360683162, -0.39372525850376405,
-0.38667320109016146, -0.3802927271071894, -0.374495398797535,
-0.3692069253556838, -0.3643543689249782, -0.3598671566046505,
-0.355713015724632, -0.3515178637894678, -0.3476267932283008},
{-0.8870922309858997, -0.6582222043723505, -0.5717493941122029,
-0.5227630392182618, -0.48940425970158685, -0.4662783181361192,
-0.44718955428334084, -0.433457723065203, -0.4215603956322411,
-0.41118071866003447, -0.40226458122197073, -0.3943991209016531,
-0.3873392438040355, -0.38095146302066496, -0.37514746463921256,
-0.36985274300059245, -0.3649942518259195, -0.36050139416647653,
-0.35634192058796543, -0.35214086302949, -0.34824374843265105},
{-0.8875101220469332, -0.6589191255031892, -0.5724984255932668,
-0.5235137609488447, -0.49014489482078716, -0.46700419270791826,
-0.4479048071825673, -0.43416601363287555, -0.42225898623837566,
-0.4118712642166429, -0.40294783178524085, -0.3950749824016384,
-0.3880072545216535, -0.3816121452960033, -0.3758014568488761,
-0.3705004676730823, -0.36563602106389226, -0.36113750044569315,
-0.35697267788509635, -0.35276569024244964, -0.3488625266681993},
{-0.8879301132769797, -0.6596184353052195, -0.5732498523068443,
-0.5242668065066027, -0.49088778897112206, -0.46773226402183354,
-0.44862220395862096, -0.43487641117962994, -0.42295965080757014,
-0.4125638759192043, -0.403633118279231, -0.395752848543907,
-0.3886772389150792, -0.3822747795002215, -0.37645738099809023,
-0.3711501046491321, -0.366279681787546, -0.3617754804722608,
-0.357605292979315, -0.3533923506042811, -0.3494831333437105},
{-0.8883522105193151, -0.6603201405459913, -0.5740036811437221,
-0.5250221825008339, -0.4916329486259201, -0.4684625383288221,
-0.4493417509374922, -0.43558892170267427, -0.4236623952838272,
-0.41325855987633986, -0.40432044681119805, -0.3964327248572772,
-0.38934920262227024, -0.3829393713913305, -0.3771152427289053,
-0.3718016594607434, -0.3669252396757656, -0.36241533982774854,
-0.3582397711261365, -0.35402084961606306, -0.35010557421037447},
{-0.888776419641772, -0.6610242479714543, -0.574759918870086,
-0.5257798955040016, -0.4923803802162183, -0.46919502164428195,
-0.45006345449019136, -0.4363035511846647, -0.4243672254201556,
-0.4139553218637957, -0.40500982315097644, -0.39711461690967553,
-0.3900231512757273, -0.3836059267100609, -0.37777504756513736,
-0.37245513757716253, -0.3675726999440485, -0.36305708390136715,
-0.3588761178621098, -0.3546511923932485, -0.3507298549075131},
{-0.8892027465458341, -0.6617307644341963, -0.5755185724015064,
-0.5265399522631924, -0.49313009019033416, -0.46992972032967373,
-0.45078732101819696, -0.43702030560552885, -0.4250741470777939,
-0.4146541680447626, -0.40570125336626006, -0.397798530198088,
-0.3906990905729799, -0.3842744510566263, -0.3784368010228718,
-0.3731105444167042, -0.36822206812712466, -0.36370071807323257,
-0.35951433847822045, -0.35528338438552964, -0.351355981110828},
{-0.8896311971427622, -0.6624396967583834, -0.5762796485412309,
-0.5273023593745165, -0.49388208506206865, -0.4706666405768374,
-0.45151335693253714, -0.43773919092336655, -0.425783166067049,
-0.41535510428002453, -0.40639474349336524, -0.3984844704314128,
-0.39137702617472314, -0.3849449503154574, -0.37910050892196523,
-0.37376788556230167, -0.36887334959146756, -0.36434624784988046,
-0.3601544385087436, -0.3559174309316404, -0.35198395861607423},
{-0.8900617773451813, -0.6631510517386232, -0.577043154175044,
-0.5280671235482259, -0.49463637117014514, -0.47140578854396153,
-0.4522415687274588, -0.43846021313993333, -0.4264942881609386,
-0.4160581365149483, -0.40709029939898755, -0.39917244306298016,
-0.39205696370072474, -0.3856174300931343, -0.3797661766384408,
-0.3744271664381813, -0.36952654975402766, -0.3649936786910075,
-0.36079642324057204, -0.35655333741124196, -0.35261379302573914},
{-0.8904944931121008, -0.6638648363036737, -0.577809096287865,
-0.5288342515077602, -0.4953929551647889, -0.47214717068527534,
-0.452971962914944, -0.4391833783852235, -0.42720751933620704,
-0.4167632709695681, -0.40778792728588087, -0.3998624537998694,
-0.39273890902222774, -0.38629189628818494, -0.3804338100731002,
-0.3750883926450115, -0.37018167423320847, -0.3656430161413482,
-0.3614402982966567, -0.35719110941454346, -0.35324549030019625},
{-0.8909293504016205, -0.6645810572956634, -0.5785774816870344,
-0.5296037498987971, -0.49615184343156216, -0.47289079299025616,
-0.45370454587236964, -0.4399086926559903, -0.42792286529538615,
-0.41747051344555075, -0.40848763309350034, -0.4005545082009121,
-0.3934228676735074, -0.3869683545131011, -0.38110341474339293,
-0.37575156960065215, -0.37083872841731136, -0.3662942655346342,
-0.36208606912668984, -0.35783075225936045, -0.3538790561278802},
{-0.8913663551581976, -0.6652997215724099, -0.5793483173326877,
-0.5303756255179906, -0.496913042581582, -0.4736366619845285,
-0.4544393243008926, -0.44063616205085054, -0.42864033203159124,
-0.41817987023478054, -0.4091894228986348, -0.40124861213189433,
-0.3941088454353121, -0.3876468105713684, -0.3817749964359791,
-0.3764167030012686, -0.37149771802660325, -0.3669474325424744,
-0.36273374107486234, -0.35847227160547845, -0.3545144963018174},
{-0.8918055134340648, -0.6660208361120112, -0.5801216102288436,
-0.5311498850978751, -0.4976765591932235, -0.4743847838954025,
-0.45517630462336456, -0.44136579267842535, -0.4293599253173852,
-0.41889134726079646, -0.40989330278489433, -0.4019447710065833,
-0.39479684807429294, -0.3883272703073999, -0.382448560767898,
-0.37708379824380245, -0.37215864843074087, -0.367602522731886,
-0.3633833198591674, -0.3591156728630267, -0.355151816698708},
{-0.8922468312032379, -0.6667444077975233, -0.580897367267653,
-0.5319265354232812, -0.49844239978619953, -0.4751351650907054,
-0.4559154935013794, -0.4420975906446074, -0.4300816510808545,
-0.41960495069315584, -0.4105992788122421, -0.4026429906575686,
-0.3954868812465975, -0.3890097395369594, -0.3831241135512755,
-0.37775286098576544, -0.3728215251776419, -0.36825954151618134,
-0.36403481095157986, -0.35976096167860305, -0.3557910232016184},
{-0.8926903145013512, -0.6674704435736203, -0.5816755954465407,
-0.5327055832176484, -0.4992105708765848, -0.4758878118627763,
-0.45665689755060157, -0.4428315621121328, -0.4308055151673216,
-0.42032068666276245, -0.4113073571579662, -0.4033432767391787,
-0.3961789507957292, -0.38969422399304676, -0.3838016605050143,
-0.37842389690740674, -0.37348635397984253, -0.36891849461380843,
-0.3646882199082029, -0.36040814365651386, -0.35643212164450233},
{-0.8931359693831382, -0.6681989504534158, -0.5824563018454683,
-0.5334870353908627, -0.4999810792487551, -0.47664273065129237,
-0.4574005233889693, -0.44356771334423684, -0.43153152348122603,
-0.42103856119274496, -0.41201754392068324, -0.4040456349989654,
-0.39687306241785336, -0.3903807295982915, -0.3844812074185029,
-0.37909691144159297, -0.3741531403702538, -0.3695793875763229,
-0.3653435522728614, -0.3610572244597279, -0.3570751178003775},
{-0.8935838019281164, -0.6689299353461138, -0.583239493366591,
-0.5342708986986509, -0.5007539314015048, -0.47739992781589535,
-0.45814637765033694, -0.44430605039860893, -0.43225968199794806,
-0.421758580653659, -0.41272984522356637, -0.40475007116310735,
-0.3975692218950826, -0.3910692620197551, -0.3851627600579377,
-0.3797719103667987, -0.3748218900723259, -0.37024222597074186,
-0.36600081370897897, -0.3617082095775004, -0.3577200175991493},
{-0.8940338182151208, -0.6696634053018897, -0.5840251771387557,
-0.5350571799949648, -0.5015291339614123, -0.4781594096025401,
-0.45889446701357883, -0.44504657953257265, -0.43298999645958247,
-0.4224807509681341, -0.413444267214345, -0.4054565908936638,
-0.3982674349676927, -0.3917598272428222, -0.3858463241840582,
-0.38044889922639413, -0.37549260850573773, -0.37090701539409565,
-0.3666600097017181, -0.36236110478739647, -0.3583668268029214},
{-0.8944860243414041, -0.6703993672774686, -0.5848133601737118,
-0.5358458861601321, -0.5023066937014846, -0.47892118273966844,
-0.45964479823760485, -0.44578930705529274, -0.4337224729497393,
-0.42320507855401956, -0.4141608161262411, -0.40616520008779844,
-0.3989677075583131, -0.39245243115510675, -0.3865319056944827,
-0.3811278836783458, -0.37616530157447414, -0.37157376157074395,
-0.3673211460600214, -0.3630159158665265, -0.35901555136160823},
{-0.8949404264158147, -0.6711378282991518, -0.5856040494818444,
-0.5366370239962635, -0.5030866171618982, -0.4796852535137077,
-0.4603973780681372, -0.446534239135417, -0.4344571173874101,
-0.4239315695103869, -0.41487949818929337, -0.4068759044776016,
-0.39967004541404094, -0.393147079508708, -0.387219510392697,
-0.3818088693606114, -0.3768399748587399, -0.37224247018593815,
-0.3679842282858772, -0.3636726484896826, -0.3596661972119364},
{-0.8953970306076826, -0.6718787954823711, -0.5863972522308813,
-0.537430600490552, -0.5038689111279382, -0.48045162836888267,
-0.4611522132358914, -0.4472813821894306, -0.4351939356984076,
-0.424660230083191, -0.41560031956760213, -0.40758870976787875,
-0.4003744543474568, -0.3938437783044719, -0.38790914414812505,
-0.38249186209986874, -0.37751663404196734, -0.3729131468799096,
-0.36864926212820137, -0.3643313084062356, -0.36031876998731605},
{-0.8958558430304038, -0.6726222757981759, -0.5871929754923713,
-0.5382266225351486, -0.5046535823139493, -0.4812203138112636,
-0.4619093105270622, -0.44803074240599017, -0.4359329339135911,
-0.42539106657886805, -0.41632328645528105, -0.40830362191582026,
-0.4010809402625455, -0.39454253335679823, -0.38860081284883563,
-0.38317686743448576, -0.3781952848621586, -0.37358579729561825,
-0.36931625319721206, -0.36499190135782555, -0.36097327570359994},
{-0.8963168699083326, -0.6733682763688194, -0.5879912264233553,
-0.5390250970608577, -0.5054406374742939, -0.4819913162668854,
-0.46266867664508027, -0.4487823261088124, -0.4366741178278062,
-0.4261240852215451, -0.417048405186506, -0.4090206466298696,
-0.40178950891959175, -0.39524335062242244, -0.38929452225147543,
-0.38386389124252673, -0.3788759331127949, -0.37426042722790953,
-0.36998520727820505, -0.365654433209329, -0.36162972017882566},
{-0.8967801173844236, -0.6741168042701702, -0.5887920120685521,
-0.5398260309502803, -0.5062300833342306, -0.4827646423977967,
-0.4634303185994213, -0.4495361396661792, -0.43741749362834526,
-0.42685929230083275, -0.4177756820045033, -0.4097397898458439,
-0.40250016618983864, -0.3959462359362078, -0.38999027839872724,
-0.3845529391260243, -0.37955858450050073, -0.3749370423588516,
-0.3706561300209614, -0.3663189097542272, -0.3622881091559975},
{-0.897245591728506, -0.6748678666360775, -0.5895953396852747,
-0.5406294312306272, -0.5070219266131062, -0.48354029871279636,
-0.46419424309306123, -0.45029218949093774, -0.43816306724011156,
-0.4275966941108891, -0.4185051231743273, -0.41046105728310067,
-0.4032129181773598, -0.3966511953153713, -0.3906880871695648,
-0.38524401686390775, -0.38024324481739313, -0.37561564851375806,
-0.3713290270725338, -0.3669853369133307, -0.3629484487642003},
{-0.8977132991394683, -0.6756214705535513, -0.5904012163703101,
-0.5414353049031888, -0.5078161741907934, -0.4843182916920341,
-0.46496045700996547, -0.4510504819172638, -0.43891084469851194,
-0.42833629695041964, -0.4192367350542554, -0.4111844549465786,
-0.40392777052102247, -0.3973582347430238, -0.3913879544693373,
-0.38593713027239573, -0.3809299198373992, -0.3762962514351784,
-0.3720039042982535, -0.36765372056925116, -0.36361074445585473},
{-0.8981832458446206, -0.6763776231794054, -0.5912096493805166,
-0.5422436589828976, -0.5086128328566701, -0.48509862795162917,
-0.4657289672895786, -0.45181102340757207, -0.43966083210943907,
-0.4290781072536447, -0.419970523882057, -0.41190998867114104,
-0.40464472933535944, -0.39806736009722954, -0.392089886274789,
-0.38663228507994063, -0.381618615474963, -0.3769788568151853,
-0.3726807674174779, -0.368324066666446, -0.3642750023591361},
{-0.8986554381451697, -0.6771363316536281, -0.5920206459036308,
-0.5430545004164742, -0.5094119095010683, -0.4858813140417624,
-0.46649978082359667, -0.4525738203792571, -0.44041303547601274,
-0.4298221313133581, -0.42070649616516675, -0.41263766436759397,
-0.40536380048706633, -0.39877857752208, -0.3927938885403819,
-0.38732948719871274, -0.3823093374576274, -0.37766347070692063,
-0.37335962214774554, -0.36899638107479404, -0.36494122823023645},
{-0.899129882320949, -0.6778976031957882, -0.5928342131128375,
-0.5438678363248073, -0.5102134108583414, -0.4866663566722309,
-0.46727290450280634, -0.4533388792669939, -0.4411674608768408,
-0.43056837543417714, -0.42144465808905807, -0.4133674879499267,
-0.40608499002883036, -0.3994918928683546, -0.39349996715100133,
-0.3880287423662594, -0.3830020917694128, -0.37835009870514114,
-0.3740404742352439, -0.3696706698392518, -0.36560942782034545},
{-0.8996065846654346, -0.6786614449363242, -0.5936503583234298,
-0.5446836737351077, -0.5110173438561105, -0.48745376250826666,
-0.4680483453034867, -0.45410620656139145, -0.44192411454241665,
-0.4313168461244459, -0.4221850161598013, -0.41409946536032294,
-0.4068083039474004, -0.4002073122483125, -0.39420812826074325,
-0.3887300564247198, -0.38369688416059944, -0.3790387467911387,
-0.3747233295312071, -0.37034693901432547, -0.3662796071221237},
{-0.9000855514957493, -0.6794278640838911, -0.5944690887190518,
-0.545502019684136, -0.5118237153815244, -0.4882435380268362,
-0.46882611015143993, -0.4548758087535134, -0.44268300243084013,
-0.4320675495823707, -0.42292757669656567, -0.41483360263509894,
-0.4075337482549912, -0.4009248417164599, -0.39491837780360584,
-0.38943343522851137, -0.3843937206629562, -0.37972942089299977,
-0.37540819385958457, -0.37102519465770456, -0.36695177184128625},
{-0.9005667891633493, -0.6801968678905723, -0.5952904116711579,
-0.5463228813455316, -0.5126325324140453, -0.48903569005915415,
-0.4696062059797441, -0.45564769242355396, -0.44344413087674184,
-0.4328204924599959, -0.4236723461140173, -0.41556990576918906,
-0.4082613290252084, -0.40164448723680835, -0.39563072175360503,
-0.3901388846907139, -0.38509260720138627, -0.3804221267214416,
-0.37609507289243993, -0.3717054427916082, -0.3676259276826386},
{-0.9010503040456115, -0.6809684635591111, -0.5961143344129596,
-0.5471462658260862, -0.5134438018039873, -0.48983022517495556,
-0.47038863995476277, -0.4564218640307445, -0.4442075059828312,
-0.4335756810642124, -0.42441933097961737, -0.41630838061291797,
-0.40899105230573696, -0.4023662550066547, -0.39634516619980786,
-0.3908464107753389, -0.3857935496180289, -0.38111687034779607,
-0.37678397264517116, -0.3723876895619469, -0.3683020807138746},
{-0.9015361024708, -0.6817426583513679, -0.5969408642563394,
-0.5479721802389577, -0.5142575305294486, -0.49062715021909753,
-0.47117341889497766, -0.45719833012208255, -0.4449731340209837,
-0.43433312172737715, -0.42516853751931194, -0.4170490333294765,
-0.4097229242938738, -0.4030901510914191, -0.39706171712350624,
-0.3915560193354395, -0.38649655395875016, -0.3818136577106088,
-0.37747489874845996, -0.37307194095046725, -0.3689802365097421},
{-0.9020241908913249, -0.6825194595392077, -0.5977700086318691,
-0.5488006317614236, -0.5150737255826243, -0.49142647194867095,
-0.47196054997493775, -0.45797709743328596, -0.44574102117894654,
-0.4350928211574683, -0.4259199724742757, -0.41779186994472184,
-0.41045695115917624, -0.40381618172068556, -0.3977803807397322,
-0.39226771635549085, -0.3872016262530451, -0.38251249475433724,
-0.3781678573463978, -0.373758203354555, -0.36966040100332975},
{-0.9025145757020709, -0.6832988744081376, -0.5986017747372898,
-0.5496316275152822, -0.515892393879767, -0.49222819687338415,
-0.47275004009134136, -0.4587581723671974, -0.4465111737963525,
-0.43585478552813584, -0.42667364208273284, -0.41853689654635673,
-0.41119313898525434, -0.40454435281981205, -0.3985011629456494,
-0.39298150773311136, -0.3879087723385055, -0.38321338744526656,
-0.37886285397371466, -0.37444648272912673, -0.3703425799112665},
{-0.9030072633165673, -0.6840809102170624, -0.5994361700318223,
-0.5504651747678508, -0.5167135425172091, -0.4930323319872514,
-0.4735418964114615, -0.4595415617072831, -0.44728359821374397,
-0.43661902151643517, -0.4274295529057781, -0.4192841193075765,
-0.41193149404398355, -0.4052746707538972, -0.3992240699958529,
-0.3936973994409527, -0.38861799843925837, -0.38391634176059597,
-0.37955989462761863, -0.37513678542472917, -0.37102677900020353},
{-0.9035022602231493, -0.6848655743290237, -0.6002732019574069,
-0.551301280696407, -0.5175371785448988, -0.4938388840000698,
-0.47433612598160835, -0.4603272720073619, -0.44805830081941167,
-0.4373855356138847, -0.42818771160955293, -0.4200335441860261,
-0.4126720225895042, -0.4060071416424762, -0.39994910796394834,
-0.39441539769859446, -0.38932931055251174, -0.3846213638171321,
-0.38025898530895574, -0.3758291175768136, -0.37171300409136165},
{-0.9039995728844588, -0.6856528740634076, -0.6011128778231978,
-0.5521399525191555, -0.5183633089873183, -0.4946478597616988,
-0.4751327358380877, -0.4611153099622243, -0.44883528789659977,
-0.43815433428744655, -0.4289481244459239, -0.42078517745494537,
-0.4134147309241598, -0.40674177174696524, -0.4006762829003492,
-0.3951355083445378, -0.39004271462499673, -0.38532845961572093,
-0.38096013185349875, -0.3765234853990478, -0.37240126088545367},
{-0.9044992077542702, -0.6864428167255028, -0.601955205057493,
-0.5529811974861332, -0.519191940840301, -0.49545926606060675,
-0.47593173310178827, -0.46190568227848416, -0.4496145660091315,
-0.4389254240777518, -0.42971079821290914, -0.42153902528025355,
-0.41415962531664263, -0.407478567351518, -0.401405600977796,
-0.39585773751150555, -0.3907582168999397, -0.3860376351717605,
-0.3816633402689149, -0.37721989515694077, -0.373091555398787},
{-0.9050011713975437, -0.6872354097481548, -0.6028001911845422,
-0.553825022961064, -0.5200230813275084, -0.49627310979667527,
-0.47673312486631403, -0.462698395663665, -0.4503961415853155,
-0.43969881149268986, -0.43047573943977113, -0.42229509394246634,
-0.4149067122366432, -0.4082175346097756, -0.4021370684381509,
-0.3965820913595053, -0.3914758234045621, -0.38674889675758095,
-0.3823686163545972, -0.3779183532183197, -0.3737838930901489},
{-0.9055054703337646, -0.6880306604548423, -0.6036478436412835,
-0.5546714361285012, -0.5208567374952509, -0.4970893977997548,
-0.4775369182716531, -0.46349345682483545, -0.45118002122353573,
-0.44047450316247705, -0.43124295456937034, -0.4230533896934503,
-0.4156559979123813, -0.40895867987728707, -0.4028706914200484,
-0.3973085758598245, -0.3921955402756794, -0.3874622502848979,
-0.38307596610911787, -0.3786188656331433, -0.3744782798162305},
{-0.9060121110685486, -0.6888285762504438, -0.6044981699169512,
-0.5555204443394359, -0.5216929165385409, -0.49790813684421664,
-0.47834312039003635, -0.46429087258866275, -0.4519662114253151,
-0.4412525056472987, -0.43201245025602475, -0.4238139186550143,
-0.4164074888499272, -0.409702009481407, -0.40360647604848054,
-0.39803719726751297, -0.3929173736623852, -0.3881777019555557,
-0.383785395627001, -0.3793214388483648, -0.3751747213568706},
{-0.9065211002191518, -0.6896291645646215, -0.6053511774730396,
-0.5563720549648679, -0.52253162558236, -0.4987293340891483,
-0.47915173845149184, -0.4650906496472089, -0.45275471893410213,
-0.4420328255782806, -0.4327842330972089, -0.42457668735005427,
-0.41716119151215025, -0.4104475298113357, -0.40434442857713293,
-0.3987679617075628, -0.39364132971422805, -0.3888952579372926,
-0.3844969108181431, -0.38002607910721053, -0.3758732234086892},
{-0.9070324443484878, -0.6904324327506401, -0.6062068738388007,
-0.5572262752702954, -0.5233728717144004, -0.49955299628709326,
-0.47996277941911103, -0.4658927947957636, -0.4535455502768855,
-0.4428154693723627, -0.4335583096622031, -0.4253417019481276,
-0.4179171123173546, -0.4111952470957476, -0.40508455524741294,
-0.3995008753199727, -0.3943674146539706, -0.3896149242982574,
-0.3852105176670193, -0.38073279260015624, -0.37657379177608163},
{-0.907546150098824, -0.6912383883959592, -0.6070652666048773,
-0.5580831127044803, -0.5242166622506375, -0.5003791304152401,
-0.48077625060432183, -0.4666973148946454, -0.45433871223758615,
-0.4436004438202872, -0.43433468671582887, -0.42610896899032014,
-0.4186752578511914, -0.41194516782843493, -0.4058268623107324,
-0.40023594439480803, -0.3950956345547638, -0.39033670743037874,
-0.3859262223636506, -0.3814415858269058, -0.377276432135659},
{-0.9080622240480807, -0.6920470388288322, -0.6079263633091614,
-0.5589425746420602, -0.5250630044297395, -0.501207743465784,
-0.4815921591548431, -0.4675042167891661, -0.45513421170880974,
-0.44438775551634535, -0.43511337072641254, -0.4268784948594657,
-0.4194356346133645, -0.4126972983917767, -0.40657135601668415,
-0.40097317505706087, -0.3958259958799317, -0.3910606133094916,
-0.38664403082475474, -0.3821524650020365, -0.3779811501931363},
{-0.9085806728689931, -0.6928583915714626, -0.6087901715318367,
-0.5598046685054214, -0.5259119054167058, -0.5020388422954056,
-0.4824105120951572, -0.4683135073696576, -0.4559320553512407,
-0.44517741102026775, -0.43589436838328766, -0.42765028594203613,
-0.4201982491117633, -0.4134516452118078, -0.40731804258621196,
-0.4017125736691014, -0.39655850465214826, -0.3917866482261161,
-0.38736394917759753, -0.3828654364774593, -0.3786879518065689},
{-0.909101503206557, -0.6936724541278636, -0.6096566988535415,
-0.5606694016787515, -0.526763372548885, -0.5028724340804729,
-0.48323131677989295, -0.46912519339366554, -0.45673225013524643,
-0.4459694170673174, -0.4366776863025734, -0.42842434877866253,
-0.42096310801298387, -0.4142082147232031, -0.40806692833712077,
-0.4024541464896174, -0.39729316721513896, -0.3925148183889178,
-0.3880859835771844, -0.38358050654551334, -0.3793968424333798},
{-0.9096247217698874, -0.694489233956574, -0.6105259529203977,
-0.5615367816485559, -0.527617413005828, -0.5037085258372827,
-0.484054580236716, -0.46993928193569445, -0.4575348030484747,
-0.4467637802704303, -0.4374633312527294, -0.4292006899199805,
-0.4217302179940816, -0.4149670134338521, -0.4088180196013127,
-0.40319789968179975, -0.3980299898885278, -0.39324513021210805,
-0.3888101400193591, -0.3842976815390102, -0.3801078281453556},
{-0.9101503352728741, -0.6953087386805237, -0.6113979413667039,
-0.562406815938175, -0.5284740341921861, -0.5045471245184672,
-0.48488030978614916, -0.4707557798283233, -0.45833972093942066,
-0.44756050731621144, -0.43825130981076654, -0.42997931581203375,
-0.42249958558977596, -0.4157280478498251, -0.40957132269431895,
-0.4039438396953301, -0.39876897887188534, -0.39397758972609154,
-0.3895364248628539, -0.38501696788762274, -0.3808209143126078},
{-0.9106783503955285, -0.6961309757491563, -0.6122726718858758,
-0.5632795119604452, -0.5293332434621334, -0.5053882372280896,
-0.485708512544079, -0.4715746940637473, -0.4591470109976399,
-0.4483596049503831, -0.4390416286632899, -0.43076023326011637,
-0.4232712175175948, -0.41649132446536896, -0.41032684396896,
-0.40469197275251645, -0.3995101406753747, -0.39471220326549883,
-0.39026484407349926, -0.3857383720405778, -0.38153610695962925},
{-0.9112087739013077, -0.6969559527565252, -0.6131501521413156,
-0.5641548773533032, -0.5301950481471067, -0.5062318709642568,
-0.4865391957241627, -0.47239603164825894, -0.4599566803149173,
-0.44916107976359854, -0.4398342945405602, -0.43154344859703997,
-0.42404512041821363, -0.4172568499152476, -0.41108458967573824,
-0.4054423053635219, -0.40025348138533445, -0.39544897721407324,
-0.3909954039563672, -0.38646190016652326, -0.3822534116711722},
{-0.9117416125841373, -0.6977836773005492, -0.6140303898300772,
-0.5650329195141239, -0.5310594555580792, -0.5070780330515845,
-0.4873723665396028, -0.4732197995581373, -0.46076873595075085,
-0.4499649384733857, -0.4406293140300477, -0.4323289686849421,
-0.4248213010459949, -0.41802463059730144, -0.41184456629252963,
-0.4061948437611136, -0.40099900755649287, -0.3961879178059462,
-0.39172811070466196, -0.3871875587988143, -0.3829728342366252},
{-0.912276873183373, -0.6986141569338997, -0.614913392667404,
-0.5659136461035814, -0.5319264731065232, -0.5079267304736277,
-0.48820803219496156, -0.4740460048615205, -0.4615831851665462,
-0.45077118785911807, -0.44142669395341727, -0.43311680009401243,
-0.4255997661280162, -0.4187946732840828, -0.41260678010939955,
-0.4069495944618211, -0.40174672557805025, -0.3969290312720659,
-0.39246297052704904, -0.3879153541897722, -0.3836943805417832},
{-0.9128145625263642, -0.699447399287692, -0.6157991683853652,
-0.5667970646268259, -0.5327961082407455, -0.5087779703462729,
-0.48904619989571074, -0.47487465454605626, -0.46240003520051687,
-0.4515798345787516, -0.44222644097226294, -0.43390694964591603,
-0.4263805224859425, -0.41956698449666874, -0.4133712376965377,
-0.40770656377935666, -0.40249664170187316, -0.39767232417716514,
-0.39319998981545723, -0.3886452930619271, -0.3844180562182373},
{-0.913354687419087, -0.7002834120185071, -0.616687724804251,
-0.5676831827427122, -0.5336683684477066, -0.5096317599227405,
-0.48988687688415666, -0.47570575577901764, -0.4632192934941486,
-0.4523908854621368, -0.4430285617404479, -0.43469942404590256,
-0.42716357678818895, -0.42034157077205236, -0.4141379453094487,
-0.4084657582816362, -0.4032487626209331, -0.3984178026189511,
-0.39393917463848993, -0.389377381500708, -0.3851438671586038},
{-0.9138972547229969, -0.7011222027447275, -0.6175790696997865,
-0.5685720080637111, -0.5345432611652541, -0.5104881063398352,
-0.4907300704780937, -0.47653931564536833, -0.4640409672847454,
-0.45320434722771097, -0.443833063027796, -0.43549422997375586,
-0.4279489358355022, -0.42111843903967383, -0.41490690948512565,
-0.40922718444790007, -0.4040030945620856, -0.39916547308121153,
-0.3946805315626989, -0.3901116261658899, -0.38587181912862434},
{-0.9144422712931828, -0.7019637790829165, -0.6184732108049502,
-0.569463548240492, -0.5354207937889441, -0.5113470168571439,
-0.491575787731108, -0.4773753412714541, -0.46486506402561645,
-0.45402022657617636, -0.4446399514795303, -0.4362913743043464,
-0.42873660648319856, -0.42189759566326757, -0.41567813664914866,
-0.4099908486300592, -0.40475964404640763, -0.3999153418831156,
-0.39542406672535435, -0.3908480333411717, -0.3866019179286013},
{-0.9149897440136101, -0.7028081488178941, -0.6193701560760019,
-0.5703578109387308, -0.5363009739244262, -0.512208498721975,
-0.49242403607468077, -0.4782138398304596, -0.46569159119599135,
-0.45483853047198863, -0.4454492339468743, -0.4370908637793036,
-0.4295265955315699, -0.42267904756135977, -0.4164516333080428,
-0.41075675754564145, -0.4055184176881994, -0.4006674154038592,
-0.39616978669391756, -0.39158660969224, -0.38733416954119093},
{-0.9155396797932553, -0.7036553195548549, -0.6202699132477392,
-0.571254803795, -0.5371838090081837, -0.5130725590975089,
-0.4932748226210606, -0.4790548185142143, -0.4665205563364907,
-0.4556592655053464, -0.44626091714053473, -0.43789270530578506,
-0.4303189098186522, -0.42346280129368097, -0.41722740589420937,
-0.4115249175365534, -0.40627942183846244, -0.40142170011813505,
-0.39691769775163266, -0.39232736146686875, -0.3880685797194019},
{-0.9160920855322274, -0.7045052990690692, -0.6211724902245805,
-0.5721545345681989, -0.5380693067077118, -0.51393920537339,
-0.49412815476216565, -0.4798982845795763, -0.4673519670236601,
-0.4564824386907276, -0.44707500769163744, -0.4386969057954957,
-0.4311135562652453, -0.42424886374874404, -0.4180054610260413,
-0.41229533529485707, -0.4070426632379167, -0.40217820233419843,
-0.3976678063067993, -0.3930702953166474, -0.3888051543481197},
{-0.9166469682081697, -0.7053580950698688, -0.6220778949650594,
-0.5730570110517874, -0.5389574745140635, -0.5148084447614565,
-0.4949840396457148, -0.48074424524884307, -0.4681858308372284,
-0.4573080568102341, -0.4478915124232117, -0.4395034718813804,
-0.43191054165481546, -0.42503724158041223, -0.4187858051263902,
-0.41306801745668054, -0.40780814838080914, -0.4029369285408393,
-0.39842011890550566, -0.39381541774082507, -0.3895438991849005},
{-0.9172043347787167, -0.7062137153029653, -0.622986135274914,
-0.5739622408909781, -0.5398483200665396, -0.515680284708651,
-0.49584248471637693, -0.48159270779115104, -0.46902215545242143,
-0.4581361267628381, -0.4487104381378231, -0.44031241068068994,
-0.4327098729318095, -0.4258279415776087, -0.4195684448359316,
-0.4138429705562885, -0.40857588384415067, -0.40369788524776595,
-0.3991746419183073, -0.3945627353268719, -0.39028482031653766},
{-0.9177641921769464, -0.707072167542492, -0.6238972191531502,
-0.5748702318692267, -0.5407418509212221, -0.5165547324777435,
-0.4967034970827626, -0.48244367956749556, -0.46986094866406347,
-0.4589666553420102, -0.4495317915798296, -0.441123728988714,
-0.4335115570634116, -0.42662097057336723, -0.4203533866652833,
-0.4146202011766036, -0.40934587631772956, -0.4044610788432692,
-0.39993138198860834, -0.39531225437485773, -0.39102792367157235},
{-0.9183265474798645, -0.7079334596032822, -0.6248111545965003,
-0.5757809918959538, -0.5416380748097254, -0.517431795502489,
-0.4975670842245563, -0.4832971679165894, -0.4707022181573848,
-0.4597996494730978, -0.45035557949813665, -0.4419374338049238,
-0.43431560097496913, -0.4274163353352378, -0.4211406373169666,
-0.4153997161311054, -0.41011813237946626, -0.40522651590436,
-0.40069034549742355, -0.39606398177284063, -0.39177321491206385},
{-0.918891407673982, -0.7087975992844804, -0.6257279495489456,
-0.5766945287550698, -0.5425369993658933, -0.5183114811852647,
-0.4984332533417728, -0.4841531802112513, -0.4715459717704107,
-0.460635116227877, -0.45118180874669633, -0.44275353215471114,
-0.43512201143767015, -0.42821404273718144, -0.4219302033588974,
-0.4161815219899836, -0.41089265874052217, -0.4059942027292891,
-0.4014515390363158, -0.3968179238981975, -0.3925207001407216},
{-0.9194587797819622, -0.7096645943556723, -0.6266476119626532,
-0.5776108501563613, -0.5434386322499449, -0.519193796829768,
-0.49930201188271894, -0.4850117238938765, -0.47239221730660574,
-0.46147306243619823, -0.4520104860266656, -0.44357203077106533,
-0.4359307956997327, -0.42901409966543724, -0.4227220913871861,
-0.4169656255553491, -0.41166946208386435, -0.4067641460765117,
-0.4022149693000756, -0.39757408737068545, -0.39327038530063874},
{-0.9200286709346983, -0.7105344527608395, -0.6275701499484967,
-0.5785299641820529, -0.5443429812103204, -0.5200787500693878,
-0.5001733671269903, -0.48587280643187114, -0.4732409627426932,
-0.4623134950702479, -0.4528416182015462, -0.4443929367698729,
-0.4367419605073337, -0.4298165129089284, -0.4235163080898019,
-0.4177520334064866, -0.41244854914111784, -0.40753635236524133,
-0.4029806427552103, -0.39833247881688294, -0.3940222762103076},
{-0.9206010881684961, -0.7114071822511505, -0.6284955715013893,
-0.5794518785251057, -0.5452500538794993, -0.5209663483110489,
-0.5010473264228494, -0.48673643517167875, -0.4740922158534886,
-0.4631564210981196, -0.45367521210027917, -0.4452162570210021,
-0.4375555129536224, -0.4306212893175143, -0.4243128601292483,
-0.41854075237552024, -0.4132299265747861, -0.40831082813565445,
-0.40374856602829823, -0.39909310472103243, -0.3947763788951306},
{-0.921176038606518, -0.7122827908049203, -0.6294238847503948,
-0.580376601232274, -0.5461598581346152, -0.521856599021703,
-0.5019238971640334, -0.4876026177607855, -0.4749459846739228,
-0.4640018476043224, -0.4545112746122868, -0.4460419986521629,
-0.43837146008718264, -0.43142843590612756, -0.4251117543130931,
-0.41933178926092296, -0.4140136011769755, -0.4090875801025504,
-0.40451874600239535, -0.3998559719093464, -0.39553269936004654},
{-0.9217535293732908, -0.7131612862776819, -0.6303550977254417,
-0.5813041401875125, -0.5470724016968234, -0.5227495097665269,
-0.502803086826134, -0.48847136165204574, -0.4758022772180084,
-0.464849781581961, -0.4553498124419093, -0.4468701686591885,
-0.4391898088697417, -0.4322379595455459, -0.4259129972829214,
-0.42012515074611656, -0.4147995797220574, -0.4098666147392578,
-0.40529118904578354, -0.40062108681058817, -0.39629124350858547},
{-0.9223335676140323, -0.7140426765872689, -0.6312892185824239,
-0.5822345033252532, -0.5479876923441225, -0.5236450879961012,
-0.5036849026801065, -0.48934267455524605, -0.47666110144336926,
-0.4657002301769353, -0.45619083255451187, -0.4477007739687906,
-0.4400105663648901, -0.43304986717794236, -0.4267165957571706,
-0.4209208438733185, -0.4155878690035024, -0.41064793873874805,
-0.4060659020642561, -0.40138845614501406, -0.39705201729748296},
{-0.9229161605155696, -0.7149269696731153, -0.6322262553858309,
-0.5831676986954335, -0.5489057380023041, -0.5245433414620493,
-0.5045693523911723, -0.49021656394143065, -0.4775224655063539,
-0.4665532005114983, -0.4570343419072742, -0.4485338216773016,
-0.4408337396130264, -0.43386416575549447, -0.42752255662799143,
-0.42171887528093066, -0.41637847591346144, -0.41143155874306103,
-0.40684289169303156, -0.4021580865546639, -0.3978150266702869},
{-0.9235013152519969, -0.7158141734846595, -0.6331662164388945,
-0.5841037342129312, -0.5498265463384087, -0.525444277742281,
-0.5054564432339248, -0.491093037587234, -0.4783863773682242,
-0.4674086996005826, -0.4578803473186781, -0.449369318778281,
-0.44165933581098216, -0.434680862264031, -0.4283308866351945,
-0.4225192518260883, -0.4171714071912902, -0.41221748150110216,
-0.40762216474740853, -0.40292998459563023, -0.3985802778629477},
{-0.924089039034925, -0.716704296015223, -0.6341091097701792,
-0.5850426180145405, -0.5507501253764531, -0.5263479044333508,
-0.5063461827658102, -0.4919721031374138, -0.4792528452449005,
-0.4682667346310154, -0.4587288557008833, -0.45020727239034386,
-0.4424873619977916, -0.435499963660277, -0.42914159268730145,
-0.42332198045733094, -0.4179666696700224, -0.41300571369629324,
-0.40840372791399204, -0.4037041570427391, -0.3993477765325224},
{-0.924679339102795, -0.7175973452638118, -0.635054943718842,
-0.5859843580637971, -0.5516764829258136, -0.5272542291995705,
-0.5072385785524602, -0.4928537682694696, -0.4801218772181528,
-0.46912731292832177, -0.45957987399242484, -0.4510476896621185,
-0.44331782520066554, -0.43632147698463086, -0.42995468160461314,
-0.42412706800269007, -0.4187642703136589, -0.4137962618870006,
-0.4091875880853877, -0.4044806104034251, -0.4001175289990897},
{-0.9252722226879087, -0.7184933292073765, -0.6360037264475977,
-0.5869289624947669, -0.5526056269977744, -0.5281632596474992,
-0.5081336380471839, -0.49373804083734285, -0.4809934815039014,
-0.4699904416333993, -0.4604334092668978, -0.45189057748166306,
-0.4441507326810097, -0.4371454092897693, -0.43077016023562464,
-0.4249345215680478, -0.41956421594113635, -0.41458913301084976,
-0.4099737519663904, -0.40525935142113667, -0.40088954115981323},
{-0.9258676971148816, -0.7193922559017665, -0.6369554662078372,
-0.5878764393105484, -0.5535375654130803, -0.5290750036897407,
-0.5090313688483548, -0.4946249285721933, -0.4818676662048347,
-0.47085612789032893, -0.4612894683123159, -0.4527359429889657,
-0.4449860914942292, -0.4379717675037682, -0.4315880355061381,
-0.4257443478541063, -0.42036651347098086, -0.41538433382675066,
-0.41076222642323046, -0.4060403867583773, -0.401663819020996},
{-0.9264657696267022, -0.7202941334003299, -0.6379101712950614,
-0.5888267967998218, -0.5544723061102559, -0.5299894690251676,
-0.5099317785347921, -0.49551443930567984, -0.4827444395941711,
-0.47172437916060517, -0.46214805838781103, -0.4535837933044604,
-0.44582390885670975, -0.4388005588089072, -0.43240831443927163,
-0.4265565539690215, -0.4211711697494138, -0.4161818710558691,
-0.4115530184030831, -0.40682372292758373, -0.4024403688054008},
{-0.927066447556399, -0.7211989697875651, -0.6388678500029528,
-0.5897800428947448, -0.5554098571533359, -0.5309066633135444,
-0.5108348747407945, -0.4964065809863314, -0.4836238098191643,
-0.47259520267152766, -0.46300918633869514, -0.45443413561861234,
-0.44666419200257224, -0.4396317902710507, -0.43323100405086734,
-0.4273711468899819, -0.42197819179591534, -0.41698175164174245,
-0.41234613467713643, -0.4076093666817542, -0.40321919655843885},
{-0.9276697382485963, -0.7221067731206858, -0.6398285107006814,
-0.590736185951755, -0.5563502265822535, -0.5318265945334133,
-0.5117406650829253, -0.4973013614312549, -0.4845057852135142,
-0.4734686058668558, -0.4638728592526604, -0.4552869770795951,
-0.4475069481090941, -0.44046546892104743, -0.43405611109847086,
-0.42818813354961094, -0.4227875865681199, -0.4177839823832983,
-0.4131415821693736, -0.4083973246779351, -0.4040003084028285},
{-0.9282756490540578, -0.7230175515287556, -0.6407921616751082,
-0.5916952340303396, -0.557293422345083, -0.5327492703154348,
-0.512649157283704, -0.49819878864263956, -0.4853903740017813,
-0.4743445961476027, -0.46473908427014976, -0.4561423247150742,
-0.4483521843562812, -0.44130160199210877, -0.4348836428557661,
-0.42900752114155694, -0.4235993609891011, -0.4185885701404004,
-0.4139393677796761, -0.4091876035458881, -0.4047837104467362},
{-0.9288841873619731, -0.7239313131167364, -0.6417588112899466,
-0.5926571954391875, -0.5582394525044947, -0.5336746987204606,
-0.5135603588978483, -0.4990988704994379, -0.4862775844153475,
-0.4752231807478893, -0.4656078684001841, -0.4570001856604904,
-0.44919990798734943, -0.4421401963822973, -0.43571360623718647,
-0.42982931652340994, -0.4244135219278178, -0.4193955218993324,
-0.4147394984975108, -0.40998020989900397, -0.40556940883925563},
{-0.9294953605924547, -0.7248480660855421, -0.6427284680762568,
-0.5936220783864883, -0.5591883250995124, -0.5346028876415403,
-0.5144742778215914, -0.5000016152125681, -0.4871674248297495,
-0.47610436739932993, -0.4664792188964384, -0.45786056722090507,
-0.45005012641922804, -0.4429812594848954, -0.43654600835770907,
-0.43065352700841686, -0.4252300765133441, -0.4202048445959008,
-0.41554198131552766, -0.410775150372956, -0.40635740994503067},
{-0.9301091761165026, -0.7257678185419536, -0.643701140248595,
-0.5945898910722462, -0.560140048230096, -0.5355338448189286,
-0.5153909216774082, -0.5009070306091417, -0.48805990343089434,
-0.47698816343518047, -0.46735314287707297, -0.4587234764603636,
-0.45090284676462034, -0.4438247983848669, -0.4373808563223065,
-0.43148015940823825, -0.42604903170922626, -0.4210165452050205,
-0.41634682310086646, -0.41157243170300717, -0.4071477198667708},
{-0.9307256414149379, -0.7266905787182623, -0.6446768364203308,
-0.5955606418724528, -0.5610946300948854, -0.5364675783912389,
-0.5163102983506178, -0.5018151249018956, -0.4889550285679434,
-0.47787457647291376, -0.46822964742614204, -0.4595889208153494,
-0.45175807651276045, -0.44467082026949356, -0.43821815726732893,
-0.4323092210424875, -0.4268703945112975, -0.42183063067886906,
-0.4171540309412194, -0.41237206050709574, -0.40794034492910214},
{-0.9313447639653987, -0.7276163548112891, -0.6456555649888287,
-0.5965343391258102, -0.562052078769284, -0.537404096249702,
-0.5172324155964816, -0.5027259062662779, -0.48985280862234504,
-0.4787636141213625, -0.4691087398778109, -0.4604569071152582,
-0.4526158228723034, -0.44551933231650764, -0.4390579182027068,
-0.43314071912072905, -0.42769417188947045, -0.4226471080605734,
-0.41796361179649466, -0.4131740433531377, -0.40873529138707454},
{-0.9319665512323354, -0.7285451550210382, -0.6466373344674139,
-0.5975109910227729, -0.5630124024551151, -0.5383434064797257,
-0.5181572813280582, -0.5036393827285792, -0.4907532518645894,
-0.4796552839775359, -0.4699904273747961, -0.461327442876609,
-0.4534760932251629, -0.4463703417263787, -0.4399001465985748,
-0.4339746606742665, -0.4285203710719543, -0.4234659845915303,
-0.4187755727739386, -0.41397838702505396, -0.40953256561624585},
{-0.9325910107011168, -0.7294769876125429, -0.6476221533066564,
-0.5984906060289177, -0.563975609238696, -0.5392855170989606,
-0.5190849033224367, -0.504555562544283, -0.49165636662974066,
-0.4805495936661828, -0.4708747173253869, -0.46220053534216277,
-0.45433889505329716, -0.4472238558319077, -0.4407448492806907,
-0.43481105294858935, -0.42934899900865275, -0.4242872671511577,
-0.41958992090258107, -0.4147850981189549, -0.41033217403946765},
{-0.9332181499758008, -0.7304118608954013, -0.6486100301740407,
-0.5994731925420638, -0.5649417074200755, -0.5402304362214636,
-0.5200152895781684, -0.5054744539870626, -0.4925621612865143,
-0.48144655090163724, -0.47176161689412766, -0.4630761917496784,
-0.45520423573043445, -0.4480798818144649, -0.4415920338256001,
-0.4356499032483043, -0.43018006276588494, -0.4251109629358325,
-0.420406663308313, -0.41559418336419185, -0.41113412294362206},
{-0.9338479765499414, -0.7313497830859887, -0.6496009735551524,
-0.6004587589209223, -0.5659107052561012, -0.5411781719049031,
-0.5209484479846651, -0.5063960652041715, -0.4934706441549679,
-0.48234616344461756, -0.47265113347702936, -0.4639544194528753,
-0.45607212263621477, -0.4489384270791561, -0.44244170721003684,
-0.4364912187452319, -0.4310135695345707, -0.4259370791692163,
-0.42122580694467615, -0.41640564931822155, -0.4119384189102675},
{-0.9344804980512436, -0.7322907624879917, -0.6505949920315288,
-0.6014473135719527, -0.5668826108558278, -0.542128732117817,
-0.5218843864181508, -0.5073204045702369, -0.4943818235587969,
-0.48324843898308245, -0.47354327427183307, -0.46483522562357393,
-0.456942563215307, -0.44979949878779735, -0.4432938768295571,
-0.4373350067476167, -0.43184952630917905, -0.42676562284896136,
-0.42204735902032553, -0.41721950281043974, -0.4127450683558891},
{-0.9351157220132791, -0.733234807478766, -0.6515920942888442,
-0.6024388650798755, -0.5678574326780108, -0.5430821254117291,
-0.5228231131113716, -0.5082474804898993, -0.4952957079558473,
-0.48415338550967135, -0.47443804680096946, -0.4657186177882977,
-0.457815565184319, -0.45066310430638623, -0.4441485499655755,
-0.4381812746523792, -0.4326879403724888, -0.4275966013760808,
-0.42287132667388505, -0.4180357505047141, -0.4135540777811002},
{-0.9357536560657991, -0.7341819263660909, -0.652592288908636,
-0.6034334217893047, -0.568835178865811, -0.5440383597619984,
-0.5237646359337305, -0.5091773012200065, -0.49621230566754093,
-0.48506101068142016, -0.4753354584022418, -0.4666046032007216,
-0.458691135736899, -0.4515292509613573, -0.4450057340231979,
-0.4390300296213354, -0.43352881876398897, -0.42843002190193147,
-0.42369771697030956, -0.4188543990248945, -0.4143654539616364},
{-0.9363943078947159, -0.7351321275882583, -0.6535955846252364,
-0.6044309923004221, -0.5698158578602488, -0.5449974434054639,
-0.5247089630197479, -0.5101098751897553, -0.49713162506941444,
-0.48597132245686225, -0.4762355165375993, -0.4674931893637222,
-0.459569282699249, -0.4523979460745977, -0.4458654363043024,
-0.43988127914553843, -0.4343721686977915, -0.4292658917211156,
-0.4245265372869653, -0.41967545524448724, -0.41517920328078617},
{-0.9370376851327364, -0.7360854194257627, -0.6546019900624742,
-0.605431585099268, -0.5707994780404988, -0.5459593846399002,
-0.525656102423909, -0.5110452108228856, -0.4980536745997597,
-0.4868843287749769, -0.4771382285407526, -0.46838438378563296,
-0.46045001350830717, -0.45326919713852476, -0.4467276641089484,
-0.4407350306078115, -0.435217997455311, -0.4301042180386503,
-0.4253577944969038, -0.4204989256754743, -0.41599533253474874},
{-0.9376837954662278, -0.7370418103091652, -0.6556115140033398,
-0.6064352087887528, -0.5717860475992893, -0.5469241915329803,
-0.5266060622670921, -0.5119833165981618, -0.49897846247358757,
-0.48780003754154677, -0.47804360189229556, -0.4692781937728796,
-0.4613333357456213, -0.4541430113868046, -0.4475924249172749,
-0.44159129145509723, -0.4360663121260586, -0.4309450082528201,
-0.4261914959997739, -0.4213248173359716, -0.41681384846197034},
{-0.9383326465933806, -0.7380013087213229, -0.6566241650416487,
-0.6074418719003916, -0.5727755751122459, -0.5478918727058044,
-0.527558850780224, -0.512924200949783, -0.49990599725424545,
-0.4887184568246994, -0.47895164412057056, -0.47017462687335865,
-0.4622192570277548, -0.4550193963068523, -0.44845972614939456,
-0.442450069012466, -0.4369171200987694, -0.4317882695709159,
-0.4270276489705793, -0.42215313687302114, -0.41763475773404934},
{-0.938984246279233, -0.7389639230427747, -0.6576399521509302,
-0.6084515830420969, -0.5737680688453111, -0.548862436392028,
-0.5285144761028278, -0.5138678724229067, -0.5008362872704311,
-0.4896395944683718, -0.479862362719814, -0.4710736907286446,
-0.4631077850917791, -0.4558983593346966, -0.4493295752913582,
-0.4433113708369092, -0.43777042854480896, -0.4326340095581145,
-0.42786626053930377, -0.4229838909418504, -0.41845806737501334},
{-0.9396386022503975, -0.7399296617663822, -0.6586588840118566,
-0.6094643508859008, -0.5747635373404592, -0.5498358909317176,
-0.5294729464967531, -0.5148143396240812, -0.5017693409331514,
-0.4905634587771601, -0.480775765245653, -0.4719753928393402,
-0.46399892760337025, -0.45677990780677646, -0.45020197983058097,
-0.44417520439219516, -0.4386262447965237, -0.43348223551720366,
-0.4287073380455695, -0.42381708646462357, -0.41928378401053124},
{-0.940295722273504, -0.7408985333754572, -0.6596809695079173,
-0.6104801840733671, -0.5757619890837304, -0.5508122447281494,
-0.5304342702429494, -0.5157636109397572, -0.502705166645228,
-0.49149005768549614, -0.4816918590759087, -0.47287974098298946,
-0.46489269213543594, -0.457664049392406, -0.45107694728358183,
-0.44504157714300163, -0.43948457625583615, -0.43433295477825595,
-0.4295508887339565, -0.42465273025527495, -0.4201119148892758},
{-0.9409556141388293, -0.7418705463678634, -0.6607062174107341,
-0.611499091303358, -0.5767634325416111, -0.5517915061136591,
-0.5313984555896241, -0.5167156951401921, -0.5036437729067984,
-0.49241939936337076, -0.48261065202495956, -0.4737867426124467,
-0.46578908656692875, -0.4585507914393929, -0.4519544850923012,
-0.44591049677819683, -0.44034543012821814, -0.4351861748718875,
-0.43039691990406936, -0.4254908290995445, -0.4209424667683379},
{-0.9416182857212334, -0.7428457092810277, -0.66173463662426,
-0.6125210812442674, -0.5777678762137839, -0.5527736837589146,
-0.5323655108581988, -0.5176706007919165, -0.5045851680060878,
-0.4933514918648143, -0.4835321513846793, -0.47469640555164005,
-0.4666881185012244, -0.4594401413646665, -0.45283460093423855,
-0.44678197067560177, -0.4412088138456056, -0.4360419032473146,
-0.4312454387359139, -0.42633138987866914, -0.42177544669948475},
{-0.9422837448209975, -0.7438240306587431, -0.6627662361197508,
-0.6135461626790857, -0.578775328568554, -0.553758786020353,
-0.5333354444819633, -0.5186283364873816, -0.5055293604650615,
-0.49428634352852896, -0.484456365006281, -0.4756087375972129,
-0.46758979580499727, -0.4603321069866979, -0.45371730235319774,
-0.44765600655273374, -0.44207473481901616, -0.43690014721869375,
-0.4320964526291391, -0.42717441940067147, -0.4226108619709521},
{-0.9429519992715996, -0.7448055190343439, -0.6638010246738304,
-0.6145743442857565, -0.57978579831979, -0.554746821378103,
-0.5343082648410018, -0.5195889109545533, -0.5064763587379275,
-0.49522396252677936, -0.4853833004626722, -0.47652374658537155,
-0.46849412637584464, -0.4612266956378335, -0.45460259707851947,
-0.44853261194657534, -0.44294320047583824, -0.4377609145176393,
-0.4329499689806653, -0.42801992471368067, -0.4234487196745249},
{-0.943623057015202, -0.7457901830434821, -0.664839011375534,
-0.6156056349987011, -0.5807992940026452, -0.5557377984123377,
-0.5352839802794733, -0.5205523328640993, -0.507426171300267,
-0.49616435711141094, -0.48631296519943135, -0.47744144032321856,
-0.46940111800358864, -0.4621239148627865, -0.4554904925162191,
-0.44941179446777824, -0.4438142183967102, -0.43862421260246265,
-0.4338059949509443, -0.42886791255386925, -0.4242890268874362},
{-0.9442969259362144, -0.7467780312458672, -0.6658802051256316,
-0.6166400435290598, -0.5818158242182108, -0.5567317256527531,
-0.5362625994866903, -0.5215186108362104, -0.5083788065826411,
-0.4971075355610992, -0.48724536710915345, -0.4783618266128542,
-0.4703107783384439, -0.46302377244091986, -0.45638099651478115,
-0.4502935619152595, -0.4446877958580444, -0.4394900489496649,
-0.43466453817245565, -0.42971839000711043, -0.4251317910780017},
{-0.9449736139604283, -0.7477690722666921, -0.6669246149431274,
-0.6176775786866529, -0.5828353976185099, -0.5577286117204494,
-0.5372441306367364, -0.5224877536461463, -0.5093342730060613,
-0.4980535060690272, -0.4881805136915318, -0.4792849134437347,
-0.4712231154762776, -0.46392627577643, -0.45727411667667184,
-0.4511779216859395, -0.4455639404982321, -0.4403584312640305,
-0.4355256058352097, -0.43057136387324135, -0.42597701933800636},
{-0.945653129088214, -0.7487633148084569, -0.6679722499684431,
-0.6187182494750232, -0.5838580228628416, -0.5587284652920061,
-0.538228582496231, -0.5234597700600716, -0.5102925792784845,
-0.49900227717989765, -0.489118412789594, -0.4802107088617049,
-0.4721381373165059, -0.46483143265322724, -0.45816986084309974,
-0.4520648817210713, -0.44644265986153187, -0.44122936700796345,
-0.4363892053861491, -0.43142684128997644, -0.42682471942544},
{-0.9463354792294467, -0.7497607674986284, -0.6690231190659688,
-0.619762064616225, -0.5848837085886771, -0.5597312948375475,
-0.5392159635593998, -0.5244346687877623, -0.5112537336731293,
-0.49995385709644324, -0.49005907213177125, -0.48113922084939986,
-0.4730558517258032, -0.465739250653769, -0.45906823661744056,
-0.45295444950033925, -0.4473239614717386, -0.4421028638430471,
-0.4372553443022298, -0.4322848290394177, -0.4276748983252219},
{-0.9470206724363379, -0.7507614390028721, -0.6700772314516144,
-0.6208090331492713, -0.5859124636135675, -0.5607371091969071,
-0.5402062824182394, -0.5254124585521822, -0.5122177448306502,
-0.5009082542792385, -0.4910024992309445, -0.48207045764047507,
-0.4739762667413743, -0.4666497375314975, -0.45996925182453197,
-0.45384663291360994, -0.4482078530063518, -0.44297892946588036,
-0.4381240300949685, -0.43314533440207015, -0.4285275637844279},
{-0.947708716716761, -0.7517653380969023, -0.6711345962262385,
-0.6218591640167688, -0.5869442966154566, -0.5617459169507129,
-0.5411995476983975, -0.526393148223633, -0.5131846212866549,
-0.5018654772193258, -0.4919487020115412, -0.48300442704203306,
-0.4748993902589973, -0.46756290084431384, -0.46087291420508336,
-0.4547414396051863, -0.44909434205965226, -0.4438575713948012,
-0.4389952701230868, -0.43400836430009804, -0.42938272329547544},
{-0.9483996201381615, -0.7527724734254662, -0.6721952224684173,
-0.6229124661535934, -0.5879792164810169, -0.5627577268846835,
-0.5421957681091953, -0.5273767465509991, -0.5141543715558328,
-0.5028255342731427, -0.4928976882497409, -0.48394113738368105,
-0.47582523034361657, -0.4684787485148263, -0.4617792316912528,
-0.45563887731714203, -0.44998343637007565, -0.44473879752649736,
-0.4398690719035585, -0.434873925913962, -0.43024038436351475},
{-0.9490933906949977, -0.753782853787925, -0.6732591193904227,
-0.623968948527363, -0.5890172318295299, -0.5637725477772619,
-0.5431949522258037, -0.5283632623209087, -0.5151270042597389,
-0.5037884338216827, -0.4938494657844785, -0.4848805969022578,
-0.47675379504380544, -0.4693972882146227, -0.462688211925979,
-0.4565389538161071, -0.45087514364377057, -0.4456226153406533,
-0.44074544307977703, -0.4357420262795131, -0.43110055481201925},
{-0.9497900365861369, -0.7547964879795472, -0.6743262962372683,
-0.6250286202657662, -0.5900583516072402, -0.564790388270012,
-0.544197108861681, -0.5293527043822905, -0.5161025279658134,
-0.5047541846438435, -0.4948040423641942, -0.48582281376002356,
-0.4776850924436076, -0.47031852768395765, -0.46359986306879364,
-0.4574416769769414, -0.45176947152367575, -0.44650903266619935,
-0.44162439106275997, -0.4366126725567483, -0.43196324210202874},
{-0.950489565867656, -0.7558133847483077, -0.675396762186665,
-0.6260914903632511, -0.5911025847035489, -0.5658112573737526,
-0.5452022467816278, -0.5303450814521966, -0.517080951274238,
-0.5057227950323977, -0.49576142588421135, -0.48676779633024125,
-0.4786191305911416, -0.47124247483088766, -0.4645141927499026,
-0.45834705449942703, -0.45266642791330014, -0.44739805728977444,
-0.4425059234231412, -0.4374858719625081, -0.43282845430394445},
{-0.9511919866788503, -0.7568335528844727, -0.6764705264185977,
-0.6271575678883892, -0.5921499398832566, -0.5668351635763429,
-0.5462103746676803, -0.5313404024550437, -0.5180622828129344,
-0.506694273555695, -0.4967216240847847, -0.48771555265102506,
-0.479555917509515, -0.4721691374011243, -0.4654312088964616,
-0.45925509414155385, -0.45356602047559136, -0.4482896967169836,
-0.44339004758830924, -0.43836163175774345, -0.43369619914346913},
{-0.9518973072074459, -0.7578570013261015, -0.6775475983331489,
-0.6282268620261675, -0.5932004261521797, -0.5678621160891453,
-0.5472215014024187, -0.5323386762543123, -0.5190465312575725,
-0.5076686289571626, -0.4976846450267658, -0.4886660913684864,
-0.48049546152287803, -0.47309852337002667, -0.46635091964981257,
-0.460165803903692, -0.45446825717044703, -0.44918395902504926,
-0.4442767712616842, -0.4392399592243237, -0.4345664844217936},
{-0.9526055356286633, -0.758883738802524, -0.6786279871766965,
-0.6292993818442483, -0.5942540523319622, -0.5688921236164788,
-0.5482356357561002, -0.533339911648909, -0.5200337051828683,
-0.5086458696914633, -0.49865049659911165, -0.48961942061487207,
-0.481437770647517, -0.4740306405569754, -0.4672733327606693,
-0.4610791914328729, -0.4553731457790491, -0.4500808518278063,
-0.4451661020134452, -0.44012086167595044, -0.43543931828344284},
{-0.9533166801720654, -0.7599137743322899, -0.6797117022779275,
-0.6303751365044263, -0.5953108275080012, -0.5699251950381949,
-0.5492527866408636, -0.5343441174827603, -0.5210238134086467,
-0.5096260043901566, -0.49961918679946393, -0.4905755489758121,
-0.482382853116178, -0.4749654968509276, -0.4681984563844708,
-0.46199526475265884, -0.45628069426629736, -0.45098038304331567,
-0.4460580475156348, -0.4410043464399678, -0.43631470856917076},
{-0.9540307490326541, -0.7609471166947515, -0.6807987530391983,
-0.631454135275817, -0.5963707607224933, -0.5709613393937616,
-0.5502729629824898, -0.5353513026252585, -0.5220168645178092,
-0.5106090417489213, -0.5005907234267397, -0.4915344848946006,
-0.48333071718661813, -0.4759031003623022, -0.46912629838425346,
-0.4629140316706071, -0.45719091061482686, -0.45188256032815843,
-0.4469526152142862, -0.4418904210265282, -0.4371926634448755},
{-0.9547477504872859, -0.7619837748525242, -0.6818891488333065,
-0.6325363873393144, -0.5974338607502432, -0.5720005653893168,
-0.5512961735530553, -0.5363614759235134, -0.5230128672747014,
-0.5115949904043191, -0.5015651146836717, -0.49249623660398356,
-0.484281370987901, -0.476843458906842, -0.47005686693091775,
-0.46383550013615604, -0.4581038026308306, -0.452787391599486,
-0.4478498129019499, -0.44277909296170037, -0.43807319101870235},
{-0.9554676928134995, -0.7630237577545813, -0.6829828989953057,
-0.6336219019462987, -0.5985001369153906, -0.573042882239406,
-0.5523224275311804, -0.5373746462414601, -0.5240118304182033,
-0.5125838591206957, -0.5025423685524402, -0.49346081271232833,
-0.48523482277596486, -0.47778658060269663, -0.47099017004347843,
-0.4647596779691412, -0.45901937834742057, -0.45369488482538145,
-0.4487496480187474, -0.44367036958919925, -0.4389562993646905},
{-0.9561905843313525, -0.7640670743944611, -0.6840800131026299,
-0.6347106883426932, -0.5995695980750497, -0.5740882989125566,
-0.5533517335306897, -0.5383908225485357, -0.525013762709932,
-0.5135756565155134, -0.503522493067976, -0.4944282218043554,
-0.4861910808558605, -0.4787324735129914, -0.4719262158037054,
-0.4656865731635662, -0.45993764585682584, -0.4546050476678829,
-0.44965212831903045, -0.4445642585860696, -0.4398419970075338},
{-0.956916433379547, -0.7651137337074942, -0.6851805005344431,
-0.635802755909026, -0.6006422535019738, -0.5751368242927128,
-0.5543841008011441, -0.5394100135627014, -0.5260186729037741,
-0.5145703913922262, -0.504505496429374, -0.49539847238656876,
-0.48715015349444, -0.47968114560580943, -0.4728650123715852,
-0.46661619367660023, -0.46085861304391074, -0.4555178881878419,
-0.450557261287031, -0.4454607675997977, -0.44073029173523537},
{-0.9576452482683635, -0.7661637447586145, -0.686284370885005,
-0.6368981139780772, -0.6017181123102091, -0.5761884676448972,
-0.5554195383265323, -0.5404322282374778, -0.5270265698718504,
-0.5155680725697493, -0.5054913867525102, -0.49637157304459834,
-0.48811204905359773, -0.4806326052089389, -0.4738065679252941,
-0.46754854755317865, -0.4617822881828033, -0.4564334141959989,
-0.4514650547180281, -0.4463599042583155, -0.44162119222619367},
{-0.9583770374022151, -0.7672171165636428, -0.687391633617608,
-0.6379967718958142, -0.6027971836210781, -0.5772432377857513,
-0.5564580550671963, -0.5414574754950081, -0.5280374625149307,
-0.516568708790146, -0.5064801722337506, -0.4973475321025944,
-0.4890767757742651, -0.48158686026454234, -0.47475089064300846,
-0.4684836427090886, -0.46270867925295533, -0.4573516336859029,
-0.4523755161817462, -0.44726167642966175, -0.4425147067167927},
{-0.9591118091925637, -0.7682738581875128, -0.6885022982987721,
-0.6390987390041118, -0.6038794766986939, -0.5783011440494192,
-0.5574996601035309, -0.5424857642378811, -0.52905135945457,
-0.5175723087354527, -0.5074718610362652, -0.49832635844541073,
-0.49004434212201886, -0.4825439189894496, -0.47569798869017177,
-0.46942148713333154, -0.4636377944107153, -0.45827255444783077,
-0.4532886533843339, -0.44816609174358746, -0.4434108434979862},
{-0.9598495720333631, -0.7693339787056175, -0.6896163745482227,
-0.6402040249217862, -0.604965000629818, -0.5793621954790069,
-0.558544362459088, -0.5435171032117978, -0.5300682697629782,
-0.5185788815260821, -0.5084664615128531, -0.4993080605904652,
-0.49101475630232017, -0.48350378947361605, -0.4766478703622852,
-0.47036208895042364, -0.46456964177286864, -0.4591961846317645,
-0.4542044739418998, -0.4490731580899592, -0.44430961125635804},
{-0.9605903343760929, -0.7703974872151775, -0.690733871948396,
-0.6413126388379169, -0.6060537648395439, -0.5804264011635496,
-0.5595921712692871, -0.5445515014575903, -0.5310882023472914,
-0.5195884358754483, -0.5094639820117663, -0.5002926472589024,
-0.49198802693172183, -0.484466480246283, -0.4776005439621258,
-0.4713054562234902, -0.4655042296190004, -0.4601225321812308,
-0.4551229855769634, -0.44998288334136305, -0.44521101812097186},
{-0.9613341047302129, -0.7714643928661644, -0.6918548002299758,
-0.6424245904199779, -0.6071457786038081, -0.5814937704321892,
-0.5606430956413533, -0.5455889678241874, -0.5321111660414317,
-0.5206009807257033, -0.5104644307270974, -0.5012801270704585,
-0.49296416229799433, -0.48543199930873016, -0.4785560176155741,
-0.4722515970324821, -0.466441566120011, -0.4610516050943261,
-0.45604419605115254, -0.4508952753858466, -0.44611507286845153},
{-0.9620808915756243, -0.7725347048249205, -0.6929791689631202,
-0.643539889153999, -0.6082410512362912, -0.5825643123125701,
-0.5616971447611832, -0.5466295112119042, -0.5331371698107432,
-0.5216165250130871, -0.5114678162385644, -0.5022705086680617,
-0.49394317088217576, -0.4864003550706002, -0.47951429987051597,
-0.47320051964288723, -0.467381659404964, -0.46198341130366316,
-0.45696811300786067, -0.45181034231336525, -0.4470217838688768},
{-0.9628307034079171, -0.7736084322204988, -0.6941069878853341,
-0.6446585445564779, -0.6093395920634066, -0.5836380362197815,
-0.5627543276455071, -0.5476731404642123, -0.5341662225905566,
-0.5226350775201354, -0.5124741468221146, -0.5032638007578498,
-0.4949250610256968, -0.48737155574326607, -0.48047539902063363,
-0.4741522319282012, -0.468324517799374, -0.46291795901470323,
-0.4578947442159915, -0.452728091928293, -0.44793115959419083},
{-0.9635835488095381, -0.7746855843479352, -0.6952382668141581,
-0.6457805663076215, -0.6104414104152056, -0.5847149513788281,
-0.5638146535816304, -0.54871986465605, -0.5351983335262958,
-0.523656647421376, -0.5134834310870247, -0.5042600121064424,
-0.495909841329194, -0.48834560957811846, -0.4814393233828014,
-0.47510674226487026, -0.4692701496705922, -0.4638552561364122,
-0.4588240974708242, -0.4536485325097601, -0.44884320882647444},
{-0.9643394363308744, -0.7757661703312806, -0.6963730153770484,
-0.646905963807967, -0.611546515813643, -0.5857950668860212,
-0.5648781316485838, -0.5497696925335731, -0.5362335114682537,
-0.524681243660325, -0.5144956774902312, -0.5052591514195228,
-0.49689752020412925, -0.4893225252112643, -0.4824060815590201,
-0.4760640586646332, -0.47021856313858734, -0.4647953108951697,
-0.45975618053580547, -0.4545716720285782, -0.4497579399840106},
{-0.9650983745541453, -0.7768501995005863, -0.6975112435115989,
-0.6480347468427681, -0.612654917691998, -0.5868783923697265,
-0.5659447711791472, -0.5508226330903199, -0.5372717656214263,
-0.5257088752514392, -0.515510894556428, -0.5062612276037726,
-0.4978881063875633, -0.490302310941388, -0.4833756818252368,
-0.4770241896439984, -0.471169766768071, -0.46573813140548737,
-0.46069100132535823, -0.45549751850285247, -0.45067536177339207},
{-0.9658603721354666, -0.777937681106323, -0.698652960954405,
-0.6491669250995074, -0.6137666255590375, -0.5879649369308027,
-0.5670145812905503, -0.551878695231153, -0.5383131049461554,
-0.5267395512723851, -0.5165290909617397, -0.507266249143413,
-0.4988816081568075, -0.4912849750571695, -0.48434813271342136,
-0.47798714334476244, -0.4721237686844688, -0.4666837257464067,
-0.46162856754926906, -0.456426080426354, -0.4515954828775648},
{-0.9666254376959387, -0.7790286244830895, -0.6997981775484732,
-0.6503025082124623, -0.6148816489658202, -0.5890547100980257,
-0.5680875713192108, -0.5529378878723037, -0.5393575386465272,
-0.5277732808181099, -0.5175502753108958, -0.5082742250874617,
-0.499878034143876, -0.49227052622882184, -0.48532344282102713,
-0.4789529280833449, -0.47308057754980837, -0.46763210206245276,
-0.4625688873547915, -0.4573573657480665, -0.4525183118894347},
{-0.967393579893951, -0.7801230389231932, -0.7009469032000197,
-0.6514415059123166, -0.6159999972560399, -0.5901477211841666,
-0.5691637503232414, -0.554000219946829, -0.5404050757251753,
-0.5288100729198959, -0.5185744563295884, -0.5092851641097695,
-0.5008773930067036, -0.4932589728050516, -0.4863016204553787,
-0.479921552050655, -0.47404020146859693, -0.4685832686009235,
-0.46351196843352227, -0.45829138289809634, -0.4534438575774402},
{-0.9681648074392797, -0.781220933853092, -0.7020991478725591,
-0.6525839279756838, -0.617121680294531, -0.5912439797129991,
-0.5702431277850337, -0.5550657004851018, -0.5414557254675856,
-0.5298499367781915, -0.5196016427521499, -0.5102990750920071,
-0.50187969331364, -0.4942503233478419, -0.4872826745304337,
-0.4808930237832101, -0.4750026491128665, -0.4695372333144405,
-0.4644578190263928, -0.45922813991910516, -0.4543721284644562},
{-0.968939129066257, -0.7823223186155701, -0.7032549214627579,
-0.6537297842382941, -0.6182467075868772, -0.5923434951987474,
-0.5713257129550584, -0.5561343382496489, -0.5425094969136808,
-0.5308928816498337, -0.5206318432110493, -0.5113159669590459,
-0.502884943628942, -0.495244586485569, -0.4882666132943996,
-0.4818673516765557, -0.47596792876993277, -0.4704940048222852,
-0.4654064470269077, -0.4601676454240078, -0.45530313360450236},
{-0.9697165534728356, -0.7834272026175313, -0.7044142339259452,
-0.6548790844317409, -0.6193750887669012, -0.5934462768027515,
-0.5724115150374018, -0.5572061423345076, -0.5435663994094284,
-0.5319389166138535, -0.5216650666143323, -0.5123358484988785,
-0.5038931527333261, -0.49624177077657805, -0.48925344557574135,
-0.48284454419808753, -0.4769360489963219, -0.4714535910034101,
-0.4663578605341172, -0.461109907608261, -0.45623688170235255},
{-0.9704970894817961, -0.7845355953163562, -0.7055770953156753,
-0.656031838506351, -0.6205068335893884, -0.5945523345176298,
-0.5735005433434708, -0.5582811216545451, -0.5446264421861997,
-0.5329880508802489, -0.5227013217308922, -0.5133587285840804,
-0.5049043291810449, -0.4972418847382869, -0.49024317990733834,
-0.4838246096151124, -0.4779070182639771, -0.4724160001942437,
-0.4673120675533937, -0.4620549348210261, -0.4571733815664629},
{-0.9712807458242878, -0.7856475061871606, -0.7067435156022839,
-0.657188056279665, -0.6216419516204041, -0.5956616775770271,
-0.5745928072901734, -0.5593592851901121, -0.5456896343589506,
-0.5340402937340514, -0.5237406174192074, -0.514384616037205,
-0.5059184816764173, -0.49824493705636996, -0.4912358249512181,
-0.48480755652963126, -0.4788808450630313, -0.473381240622075,
-0.46826907638933335, -0.46300273575434403, -0.45811264212625247},
{-0.9720675313735683, -0.7867629447569016, -0.7079135049134493,
-0.6583477476692678, -0.6227804527775334, -0.5967743156884353,
-0.5756883162521262, -0.5604406419156476, -0.5467559854728279,
-0.535095654514862, -0.524782962718291, -0.5154135199418306,
-0.5069356189242171, -0.49925093641741114, -0.49223138950310386,
-0.48579339353636897, -0.4798575379700196, -0.47434932062242297,
-0.4692288953146999, -0.4639533187228153, -0.4590546723393345},
{-0.9728574549405948, -0.7878819205061518, -0.7090870733245538,
-0.6595109226441309, -0.6239223468373893, -0.5978902585115975,
-0.5767870795070849, -0.5615252008215066, -0.5478255045973128,
-0.5361541423599192, -0.5258283662678878, -0.516445449316052,
-0.5079557497047062, -0.5002598917026262, -0.4932298820986034,
-0.4867821292573353, -0.4808371055369207, -0.47532024835982156,
-0.4701915324476431, -0.4649066922120255, -0.45999948121516354},
{-0.9736505254347776, -0.7890044430264425, -0.7102642309346265,
-0.6606775912287048, -0.6250676435370224, -0.599009515517082,
-0.5778891064451273, -0.562612970866212, -0.5488982011670487,
-0.5372157668039108, -0.5268768372193335, -0.5174804128437245,
-0.508978882802694, -0.5012718113384835, -0.4942313116043806,
-0.4877737722836173, -0.4818195563066183, -0.4762940321515998,
-0.47115699626556307, -0.46586286509864294, -0.46094707766678766},
{-0.97444675166048, -0.7901305219079404, -0.7114449878663436,
-0.6618477632964641, -0.6262163528517704, -0.6001320965501691,
-0.5789944065695636, -0.5637039610569445, -0.5499740846680652,
-0.5382805370109054, -0.5279283844765814, -0.5185184196443515,
-0.5100050267283223, -0.5022867043226142, -0.49523568658878503,
-0.48876833109261497, -0.4828048988520095, -0.47727068023505126,
-0.47212529501121026, -0.4668218457873081, -0.4618974709710528},
{-0.9752461426437549, -0.7912601667412673, -0.7126293543865359,
-0.6630214490492108, -0.6273684844823038, -0.6012580112892465,
-0.5801029891467806, -0.5647981804390838, -0.5510531643353715,
-0.5393484623959921, -0.5289830170208916, -0.5195594787983282,
-0.5110341905447058, -0.5033045793288693, -0.49624301599851606,
-0.48976581454462575, -0.4837931418524022, -0.47825020090840553,
-0.47309643704829796, -0.46778364298370434, -0.4628506703866151},
{-0.9760487072694559, -0.7923933871743429, -0.7138173406260648,
-0.6641986584854749, -0.6285240485512986, -0.6023872694577221,
-0.5812148636687198, -0.5658956380307245, -0.5521354497172979,
-0.5404195524547504, -0.5300407439676746, -0.520603599316928,
-0.5120663829675323, -0.504325445239374, -0.497253308625659,
-0.49076623123528407, -0.4847842938906979, -0.4792326024517024,
-0.47407043099519797, -0.4687482655963322, -0.46380668465462804},
{-0.9768544545199802, -0.7935301929619527, -0.7150089569545344,
-0.6653794017238397, -0.6296830549881633, -0.6035198809181566,
-0.5823300397046296, -0.5669963428754272, -0.5532209502730439,
-0.5414938165927197, -0.5311015742454401, -0.5216507903242018,
-0.5131016128243573, -0.5053493109398914, -0.49826657312951284,
-0.4917695901276602, -0.485778363650752, -0.48021789328231534,
-0.4750472852565508, -0.4697157221735324, -0.4647655232092802},
{-0.9776633933558969, -0.7946705937288243, -0.7162042135046249,
-0.6665636888728841, -0.6308455137268538, -0.604655855238434,
-0.5834485266032061, -0.5681003039730967, -0.5543096755418446,
-0.542571264117214, -0.5321655170309896, -0.5227010607250122,
-0.5141398889545599, -0.5063761852698008, -0.4992828184394966,
-0.4927758998828722, -0.48677535967726726, -0.4812060815611403,
-0.4760270082861098, -0.47068602181388997, -0.46572719524465356},
{-0.9784755328917072, -0.7958145992251957, -0.7174031206245672,
-0.6677515301339554, -0.6320114347781782, -0.6057952024784754,
-0.5845703338090971, -0.5692075304646096, -0.5554016348869482,
-0.5436519046779722, -0.5332325813160423, -0.5237544197379975,
-0.5151812201893335, -0.5074060771430595, -0.5003020533431481,
-0.4937851692993718, -0.4877752907923423, -0.48219717565461906,
-0.4770096087768252, -0.47165917314032413, -0.4666917098011254},
{-0.9792908820909361, -0.7969622192663337, -0.7186056887017003,
-0.6689429358061716, -0.6331808281988742, -0.6069379324972033,
-0.5856954709192905, -0.5703180313998928, -0.5564968380044775,
-0.5447357476068646, -0.5343027762910424, -0.5248108764653807,
-0.5162256153762428, -0.5084389954390645, -0.5013242866152723,
-0.4947974072492798, -0.4887781655897925, -0.48319118391191296,
-0.47799509512424265, -0.47263518531235604, -0.4676590762965134},
{-0.9801094500528507, -0.7981134636561364, -0.7198119280260471,
-0.6701379159017051, -0.6343537041270793, -0.6080840550166613,
-0.5868239474698385, -0.5714318158175047, -0.5575952944705023,
-0.5458228025340759, -0.5353761110454798, -0.5258704402021976,
-0.5172730835811308, -0.5094749492964183, -0.5023495273517256,
-0.49581262256742775, -0.4897839929253678, -0.484188114749486,
-0.47898347630962235, -0.4736140672239344, -0.46862930376846634},
{-0.9809312458644399, -0.7992683421543916, -0.7210218491322848,
-0.6713364808392726, -0.6355300727464055, -0.6092335802245543,
-0.587955772926307, -0.5725488929188032, -0.5586970138506331,
-0.5469130790115742, -0.5364525947625225, -0.5269331200843226,
-0.5183236338079951, -0.5105139476354452, -0.5033777842527343,
-0.49683082449064386, -0.4907927815474977, -0.4851879765474223,
-0.47997476088676194, -0.4745958278717808, -0.46960240135922504},
{-0.981756278666353, -0.8004268647378012, -0.7222354622886087,
-0.6725386409307248, -0.6367099441458777, -0.6103865178115484,
-0.5890909570512122, -0.5736692716718608, -0.5598020058287148,
-0.5480065865649522, -0.5375322366635373, -0.5279989252630912,
-0.519377274755243, -0.5115559994728756, -0.5044090662631788,
-0.49785202166731324, -0.49180454001452745, -0.4861907775011787,
-0.48096895749131363, -0.4755804763717606, -0.4705783782483195},
{-0.9825845575926451, -0.8015890412139015, -0.7234527779542077,
-0.6737444064278861, -0.6378933284895538, -0.6115428780167349,
-0.5902295091609631, -0.574792961379444, -0.5609102799812717,
-0.5491033345897449, -0.5386150458225529, -0.5290678650681002,
-0.5204340154214151, -0.512601113888195, -0.505443382253361,
-0.4988762230723296, -0.49281927733500197, -0.48719652627096366,
-0.48196607492081966, -0.47656802174697077, -0.4715572434670321},
{-0.9834160918592261, -0.8027548816262424, -0.7246738067765364,
-0.6749537878044976, -0.6390802360419912, -0.6127026707290497,
-0.5913714390744644, -0.5759199711610563, -0.562021846177231,
-0.5502033329721598, -0.5397010315155057, -0.5301399487188974,
-0.5214938650333352, -0.5136492998426547, -0.5064807413473318,
-0.49990343795525405, -0.49383700226917426, -0.4882052311249936,
-0.4829661219682748, -0.47755847330790857, -0.4725390060157224},
{-0.9842508905924205, -0.803924395838294, -0.7258985590942757,
-0.676166795278732, -0.6402706770304576, -0.6138659060216014,
-0.5925167563295872, -0.5770503100288806, -0.563136714059965,
-0.5513065911063677, -0.5407902031292906, -0.5312151856351193,
-0.5225568324458436, -0.5147005666503901, -0.5075211523753751,
-0.5009336751154478, -0.49485772356365487, -0.48921690061524714,
-0.48396910748215305, -0.478551840063119, -0.4735236747565068},
{-0.9850889630918118, -0.8050975939286218, -0.7271270456117236,
-0.6773834394352889, -0.6414646618222832, -0.6150325940593575,
-0.5936654706652007, -0.5781839873661738, -0.5642548933597027,
-0.5524131187139574, -0.5418825696815475, -0.532293585246407,
-0.5236229268630268, -0.5157549233490499, -0.5085646244197051,
-0.5019669440262078, -0.4958814502269888, -0.49023154338556196,
-0.48497504059560015, -0.47954813130672846, -0.474511258750681},
{-0.9859303186040052, -0.8062744858975748, -0.7283592768139897,
-0.6786037307197148, -0.6426622006797515, -0.6162027448285698,
-0.5948175917797016, -0.5793210122797063, -0.5653763938939846,
-0.5535229254592196, -0.5429781405218819, -0.5333751566749925,
-0.5246921571178973, -0.5168123791318067, -0.5096111663842748,
-0.5030032534650672, -0.49690819096940686, -0.49124916774144367,
-0.4859839297760118, -0.4805473564138083, -0.4755017666184358},
{-0.9867749663937957, -0.8074550818373609, -0.7295952633162415,
-0.6798276795748279, -0.6438633040520472, -0.6173763686656457,
-0.5959731293569348, -0.5804613939235423, -0.5665012255399233,
-0.5546360210264538, -0.5440769250253652, -0.5344599095824378,
-0.5257645324936675, -0.5178729432482214, -0.5106607873858593,
-0.5040426127025057, -0.49793795489949844, -0.4922697824285933,
-0.48699578432842827, -0.4815495244656631, -0.47649520704544557},
{-0.9876229157271155, -0.8086393918556496, -0.7308350157577479,
-0.6810552965152965, -0.6450679821173253, -0.6185534755804838,
-0.5971320930757429, -0.5816051416099981, -0.5676293981523486,
-0.5557524148862285, -0.5451789325916252, -0.5355478532392226,
-0.5268400621107503, -0.5189366248896476, -0.51171349642118,
-0.5050850308125518, -0.49897075075386965, -0.4932933961708841,
-0.4880106131085995, -0.4825546448801106, -0.4774915887437601},
{-0.9884741760185989, -0.8098274260860308, -0.7320785448951028,
-0.6822865921890298, -0.6462762455344091, -0.6197340759090366,
-0.5982944928914549, -0.5827522645404315, -0.5687609214874101,
-0.5568721169047421, -0.5462841723638121, -0.5366389972514298,
-0.5279187550177085, -0.5200034332783616, -0.5127693026915949,
-0.5061305171620916, -0.5000065876402005, -0.49432001732657227,
-0.4890284251941921, -0.48356272689125035, -0.47849092013620975},
{-0.9893287565928404, -0.8110191947603198, -0.7333258613580256,
-0.6835215770902323, -0.6474881047133749, -0.6209181799576982,
-0.5994603385306618, -0.5839027720244303, -0.5698958055581897,
-0.5579951367708418, -0.5473926539289096, -0.5377333512087716,
-0.5290006205150348, -0.5210733778458234, -0.5138282151547173,
-0.5071790808924561, -0.5010454744578965, -0.49534965510065376,
-0.4900492296765151, -0.48457377978957084, -0.4794932097502169},
{-0.9901866668019466, -0.8122147080257491, -0.7345769759117502,
-0.6847602619291138, -0.6487035700943125, -0.6221057977759301,
-0.6006296397949882, -0.5850566733583946, -0.57103406051192,
-0.5591214843279886, -0.5485043865828629, -0.5388309246018252,
-0.5300856677567936, -0.5221464679325436, -0.5148902431856186,
-0.5082307314460195, -0.502087420177304, -0.4963823179114115,
-0.4910730356677959, -0.4855878130028941, -0.48049846607318614},
{-0.991047916093521, -0.8134139761777988, -0.7358318993324247,
-0.6860026572530842, -0.6499226522096251, -0.6232969399584363,
-0.6018024065847385, -0.5862139777195807, -0.5721756959455888,
-0.5602511690522078, -0.5496193796770967, -0.5399317269666426,
-0.5311739059907268, -0.5232227127844453, -0.515955395675519,
-0.5092854779250047, -0.5031324338015111, -0.49741801475011016,
-0.4920998523439266, -0.48660483576986735, -0.48150669713413663},
{-0.9919125139247171, -0.8146170094405534, -0.7370906423830093,
-0.6872487738396558, -0.6511453615062237, -0.6244916166797339,
-0.6029786487752062, -0.5873746945148923, -0.573320722036442,
-0.5613842007014682, -0.550737642725835, -0.5410357678083528,
-0.5322653444072785, -0.5243021217202113, -0.5170236818466947,
-0.5103433296608273, -0.5041805243963609, -0.498456754316976,
-0.4931296888498764, -0.4876248573673365, -0.48251791156235413},
{-0.9927804697670126, -0.8158238182736568, -0.7383532158814887,
-0.6884986223271881, -0.6523717087452496, -0.625689838262133,
-0.6041583763594645, -0.5885388329938905, -0.5744691489553588,
-0.5625205891938094, -0.5518591852023746, -0.5421430570168013,
-0.5333599923906149, -0.5253847044023132, -0.5180951111533432,
-0.5114042960030929, -0.5052317008976388, -0.49949854577698716,
-0.49416255456617364, -0.4886478871003419, -0.4835321172949989},
{-0.9936517930721038, -0.8170344129307523, -0.7396196307977334,
-0.6897522135427607, -0.6536017045323206, -0.6268916153485407,
-0.6053415993069393, -0.5897064026321459, -0.5756209865567143,
-0.563660344222626, -0.5529840166018403, -0.5432536042862921,
-0.5344578592830658, -0.5264704702076415, -0.519169692604919,
-0.5124683865287807, -0.5062859725430826, -0.5005433980686576,
-0.4951984589424683, -0.48967393433304096, -0.48454932267395634},
{-0.9945264933560338, -0.818248803815095, -0.7408898978792422,
-0.6910095582320537, -0.6548353593561842, -0.6280969581102909,
-0.6065283275597722, -0.5908774127319703, -0.5767762450468581,
-0.5648034755013214, -0.554112146423904, -0.5443674192165417,
-0.5355589544733448, -0.5275594285167244, -0.5202474356410676,
-0.5135356104838138, -0.5073433481629763, -0.501591320071384,
-0.49623741109007824, -0.4907030083031714, -0.4855695358810408},
{-0.9954045801950997, -0.8194670014268013, -0.7421640281258988,
-0.6922706671757624, -0.656072684112587, -0.6293058772198492,
-0.6077185713425024, -0.5920518725561124, -0.577934934568475,
-0.5659499929552112, -0.5552435841582337, -0.5454845115009448,
-0.5366632870345711, -0.5286515890447845, -0.5213283494276766,
-0.5146059773314846, -0.5084038369395785, -0.5026423210720168,
-0.4972794204368256, -0.49173511825938476, -0.4865927649916557},
{-0.9962860631933381, -0.8206890162173295, -0.7434420324852908,
-0.6935355513478498, -0.6573136893234732, -0.630518383130493,
-0.6089123405517967, -0.593229791748854, -0.5790970653515615,
-0.5670999061840121, -0.5563783395182327, -0.5466048910548125,
-0.5377708669284402, -0.5297469612378336, -0.5224124434471378,
-0.5156794964686924, -0.5094674480787944, -0.5036964100263503,
-0.4983244965605991, -0.4927702731019963, -0.48761901844318345},
{-0.9971709519029446, -0.8219148587068048, -0.7447239218913637,
-0.6948042214689849, -0.6585583858854989, -0.6317344863177823,
-0.6101096454108301, -0.5944111795988647, -0.5802626474096542,
-0.5682532252440069, -0.5575164220190345, -0.5477285677698092,
-0.5388817032271618, -0.530845554665575, -0.5234997270044914,
-0.5167561773678244, -0.5105341903963563, -0.5047535962066831,
-0.4993726488928587, -0.4938084823261306, -0.48864830397269543},
{-0.9980592559738852, -0.823144539452187, -0.7460097075395424,
-0.6960766885513294, -0.6598067846221056, -0.6329541975105712,
-0.6113104961705176, -0.5955960455039531, -0.581431691231046,
-0.5694099598031244, -0.5586578413358438, -0.5488555514493783,
-0.5399958057350887, -0.5319473791796554, -0.5245902095912243,
-0.5178360297704785, -0.5116040732327747, -0.5058138889808106,
-0.500423887051511, -0.49484975489667704, -0.48968063046959287},
{-0.9989509850584, -0.8243780690463609, -0.7472994002878295,
-0.6973529635429259, -0.6610588962103066, -0.6341775271012011,
-0.612514902969906, -0.5967843989810717, -0.5826042069047617,
-0.5705701197211965, -0.5598026071565982, -0.5499858518151086,
-0.5411131837327048, -0.533052444342502, -0.5256839006224254,
-0.5189190629325822, -0.5126771055356585, -0.5068772973691011,
-0.5014782203879804, -0.4958940998503749, -0.4907160055008717},
{-0.9998461488698922, -0.8256154580981274, -0.7485930112870847,
-0.6986330573254236, -0.6623147315622191, -0.6354044859244823,
-0.6137228760039761, -0.5979762495699106, -0.5837802047190053,
-0.5717337148225852, -0.5609507291346745, -0.5511194790378795,
-0.5422338468360977, -0.5341607597965776, -0.5267808096305089,
-0.5200052864474856, -0.5137532962971818, -0.5079438308775934,
-0.5025356588284922, -0.4969415262239636, -0.4917544377476588},
{-1.0007447570578734, -0.8268567173217889, -0.7498905517059029,
-0.6999169810810599, -0.6635743014712716, -0.6366350845119086,
-0.6149344255991309, -0.5991716067737798, -0.5849596950365594,
-0.5729007549853122, -0.5621022170507786, -0.5522564428829355,
-0.5433578047222909, -0.5352723354271802, -0.5278809459950935,
-0.521094710044963, -0.514832654897873, -0.5090134986685371,
-0.5035962117917734, -0.49799204283135623, -0.49279593543451483},
{-1.0016468194162371, -0.8281018573879919, -0.7511920325737265,
-0.7012047456314576, -0.664837617021476, -0.6378693335523167,
-0.6161495621263384, -0.6003704799677507, -0.5861426882311207,
-0.5740712501656162, -0.5632570806565127, -0.5533967535502597,
-0.5444850672192842, -0.5363871808667682, -0.5289843195732828,
-0.5221873430473352, -0.5159151903117163, -0.5100863103953088,
-0.504659889080358, -0.4990456588402594, -0.4938405070342924},
{-1.002552345690674, -0.8293508891301826, -0.7524974652183118,
-0.7024963622257019, -0.666104689169515, -0.6391072439914751,
-0.6173682959870348, -0.6015728789107015, -0.5873291947173129,
-0.5752452101060044, -0.5644153298208039, -0.5545404209196931,
-0.5456156437157915, -0.5375053060261052, -0.5300909396901261,
-0.523283195334443, -0.5170009118446615, -0.5111622755048302,
-0.5057267005977337, -0.5001023828208417, -0.4948881608534066},
{-1.0034613456632542, -0.8306038232517494, -0.7538068607022979,
-0.7037918418527624, -0.667375528752018, -0.6403488263149484,
-0.6185906376767889, -0.6027788130995759, -0.5885192248542808,
-0.5764226449236958, -0.5655769743852943, -0.5556874550384236,
-0.5467495440379935, -0.5386267208259596, -0.5312008162463826,
-0.5243822763941353, -0.5180898283015267, -0.512241403207554,
-0.5067966557644468, -0.5011622237479969, -0.49593890521373396},
{-1.0043738291851696, -0.8318606705734055, -0.7551202303097853,
-0.7050911956894197, -0.668650146825712, -0.6415940914698695,
-0.6198165973655705, -0.6039882920258606, -0.5897127890630145,
-0.5776035641656563, -0.5667420241888976, -0.5568378660518647,
-0.5478867778847416, -0.539751435020662, -0.5323139585852914,
-0.5254845958243095, -0.5191819490319176, -0.5133237033269324,
-0.5078697646631554, -0.5022251901691561, -0.4969927486818051},
{-1.0052898061117048, -0.8331214421082223, -0.7564375854503851,
-0.706394434995218, -0.6699285544718805, -0.6428430502610354,
-0.6210461857699556, -0.605201325555754, -0.5909098978481779,
-0.5787879780828007, -0.567910489249698, -0.5579916639990188,
-0.5490273551458813, -0.5408794584418501, -0.5334303768349855,
-0.5265901634256807, -0.5202772833681593, -0.5144091852971542,
-0.5089460369727021, -0.5032912910883169, -0.4980496998032322},
{-1.0062092862831378, -0.8343861486109745, -0.7577589372476723,
-0.7077015708005092, -0.6712107627217847, -0.6440957134932432,
-0.6222794134628202, -0.6064179231416347, -0.5921105617453577,
-0.5799758966259105, -0.5690823796239783, -0.5591488590634981,
-0.5501712854975267, -0.5420108012458513, -0.5345500805951815,
-0.5276989886424417, -0.521375840188739, -0.5154978588334416,
-0.5100254826047603, -0.5043605348892015, -0.4991097668234943},
{-1.0071322796115965, -0.8356548011647646, -0.7590842971262646,
-0.7090126144357782, -0.6724967828013177, -0.6453520922837015,
-0.6235162909561041, -0.6076380946469726, -0.593314791184639,
-0.5811673296057052, -0.570257705300719, -0.5603094616208182,
-0.5513185790614443, -0.5431454733779901, -0.5356730796165721,
-0.5288110815326945, -0.5224776290942827, -0.51658973357371,
-0.5111081117047434, -0.5054329302602127, -0.500172958717485},
{-1.0080587960728735, -0.83692741067307, -0.7604136765144176,
-0.7103275772233246, -0.6737866257417409, -0.6466121972416659,
-0.6247568289782066, -0.6088618498370124, -0.5945225967443548,
-0.582362287083015, -0.5714364764071433, -0.5614734815617339,
-0.5524692454655451, -0.5442834848518032, -0.536799383889047,
-0.5299264516661424, -0.5235826589760109, -0.5176848191658792,
-0.5121939336895593, -0.5065084858333648, -0.5012392836606523},
{-1.008988845625936, -0.8382039882380923, -0.7617470866930489,
-0.7116464703699421, -0.675080302888091, -0.6478760395989411,
-0.6260010381683969, -0.610089198264177, -0.5957339890483127,
-0.5835607791896109, -0.5726187030850269, -0.5626409291699019,
-0.5536232947079043, -0.5454248456280766, -0.537929003174213,
-0.53104510878984, -0.5246909394854811, -0.518783125517075,
-0.5132829588974346, -0.5075872102397625, -0.5023087503241186},
{-1.0099224381765453, -0.8394845448983688, -0.7630845391704497,
-0.7129693052206676, -0.6763778251724943, -0.6491436301766953,
-0.627248929002235, -0.6113201499301795, -0.5969489786411941,
-0.5847628157007421, -0.5738043955634566, -0.5638118147853675,
-0.5547807368247959, -0.546569565705795, -0.5390619474037521,
-0.5321670626244668, -0.5258024795830352, -0.5198846623925419,
-0.5143751970044832, -0.508669111850395, -0.5033813673571785},
{-1.0108595838473775, -0.8407690918470507, -0.764426045449909,
-0.7142960931446396, -0.677679204191918, -0.6504149801162384,
-0.6285005126428587, -0.6125547145538803, -0.5981675762486702,
-0.5859684068291244, -0.5749935640933472, -0.564986148708158,
-0.5559415817933768, -0.5477176553813479, -0.5401982268458596,
-0.533292322982561, -0.5269172889211404, -0.5209894394620278,
-0.5154706580569837, -0.5097541993100094, -0.5044571434136742},
{-1.0118002926278677, -0.8420576401590552, -0.7657716169960622,
-0.7156268455992176, -0.6789844511026786, -0.6516901005570617,
-0.6297557996331307, -0.6137929021861055, -0.5993897923744953,
-0.5871775627265379, -0.5761862190311149, -0.5661639412583099,
-0.5571058395598811, -0.5488691245909649, -0.541337851273056,
-0.5344208998521935, -0.5280353768184796, -0.522097466937339,
-0.5165693520748391, -0.5108424812124213, -0.5055360873066093},
{-1.012744574642511, -0.8433502011221208, -0.7671212653481234,
-0.7169615739476285, -0.6802935771379452, -0.6529690023098738,
-0.6310148008424221, -0.6150347226430313, -0.6006156377716252,
-0.5883902933537684, -0.5773823705894756, -0.5673452027267558,
-0.5582735202979165, -0.550023983491883, -0.5424808307234343,
-0.5355528029185734, -0.5291567526401195, -0.5232087545618924,
-0.5176712887414396, -0.5119339661923732, -0.5066182073824166},
{-1.0136924399575946, -0.8446467859425866, -0.7684750020853244,
-0.7183002896690596, -0.6816065938101019, -0.6542516968902419,
-0.632277527174665, -0.6162801859645697, -0.6018451232657753,
-0.5896066088589578, -0.5785820294522637, -0.5685299434517219,
-0.5594446341256116, -0.551182242469622, -0.5436271753305846,
-0.5366880421179303, -0.5302814260885498, -0.5243233125247571,
-0.5187764782940576, -0.5130286629073453, -0.5077035125586917},
{-1.0146438986703288, -0.8459474058718115, -0.7698328387823494,
-0.7196430042372413, -0.682923512330035, -0.6555381951557138,
-0.6335439894573938, -0.6175293021942707, -0.603078259358881,
-0.5908265194248088, -0.5797852059395154, -0.5697181738305517,
-0.5606191910919733, -0.5523439113867425, -0.5447768952853949,
-0.537826627427421, -0.5314094065661266, -0.5254411507185068,
-0.5198849304197211, -0.5141265798865788, -0.5087920117057365},
{-1.0155989610311735, -0.8472520723867092, -0.7711947871443954,
-0.7209897292768801, -0.6842443443160846, -0.6568285085068055,
-0.6348141988282805, -0.6187820814384395, -0.6043150570912985,
-0.5920500353231546, -0.5809919107514361, -0.5709099043660899,
-0.5617972015324995, -0.5535090006806058, -0.5459300006959893,
-0.5389685685004224, -0.5325407038062622, -0.5265622793904186,
-0.5209966552547485, -0.5152277260522169, -0.5098837135519716},
{-1.0165576371646239, -0.8485607967254509, -0.772560858788438,
-0.7223404762153223, -0.6855691011528506, -0.6581226481539488,
-0.6360881660939413, -0.6200385337360785, -0.6055555270186233,
-0.593277166619373, -0.5822021543153824, -0.5721051455748238,
-0.5629786756171598, -0.5546775204948062, -0.5470865019024131,
-0.5401138756287764, -0.5336753273932118, -0.527686708796864,
-0.5221116625407376, -0.5163321103427734, -0.5109786267985328},
{-1.0175199373147734, -0.8498735903481247, -0.773931065425586,
-0.7236952567564003, -0.6868977942649508, -0.6594206252566437,
-0.6373659022656284, -0.6212986694517895, -0.6067996800929905,
-0.5945079235934827, -0.5834159472633473, -0.5733039077031208,
-0.5641636236159684, -0.5558494810547927, -0.5482464090464418,
-0.5412625585995556, -0.5348132870785776, -0.5288144489122715,
-0.5232299621666243, -0.5174397415967178, -0.5120767604103094},
{-1.0184858716993404, -0.8511904647602933, -0.7753054187992348,
-0.7250540824570635, -0.6882304353730433, -0.660722451255424,
-0.6386474186247142, -0.6225624987137053, -0.6080475270919123,
-0.5957423165591536, -0.5846333003764812, -0.5745062012174458,
-0.5653520556134026, -0.5570248926533168, -0.5494097324190079,
-0.5424146273871884, -0.5359545926730789, -0.5299455101603598,
-0.5243515640304395, -0.5185506289762998, -0.5131781231939385},
{-1.0194554506379063, -0.8525114314406892, -0.7766839307278133,
-0.7264169650638905, -0.6895670357866948, -0.6620281374107435,
-0.639932726006009, -0.6238300318618712, -0.6092990788411043,
-0.5969803556845363, -0.5858542244513956, -0.575712036808909,
-0.5665439823424094, -0.5582037656022294, -0.5505764822728452,
-0.5435700920324962, -0.5370992540520092, -0.5310799028984547,
-0.5254764779210745, -0.51966478155191, -0.5142827243125794},
{-1.020428684419585, -0.8538365019435332, -0.7780666129401652,
-0.727783916160206, -0.6909076073948199, -0.6633376951504033,
-0.6412218356881567, -0.6251012793600239, -0.6105543462663263,
-0.5982220514051733, -0.5870787302410463, -0.5769214249849028,
-0.5677394138783711, -0.5593861101469884, -0.5517466691790105,
-0.5447289624871701, -0.538247281006079, -0.5322176374183982,
-0.5266047136610723, -0.5207822087804743, -0.5153905722045238},
{-1.021405583393971, -0.855165687913086, -0.7794534773843225,
-0.729154947657662, -0.6922521617220809, -0.664651136109569,
-0.6425147587851825, -0.6263762515773124, -0.6118133404515902,
-0.5994674140656571, -0.5883068285102127, -0.5781343763483164,
-0.5689383607332275, -0.5605719365930781, -0.5529203033092926,
-0.5458912489448267, -0.5393986835970281, -0.5333587243676448,
-0.5277362811202693, -0.5219029200416117, -0.516501676527696},
{-1.0223861579056575, -0.8564990009595022, -0.7808445358405152,
-0.7305300711941527, -0.6936007104118289, -0.6659684713768002,
-0.6438115065921011, -0.6276549590093055, -0.6130760721835031,
-0.6007164540233134, -0.5895385302937939, -0.5793509012955838,
-0.5701408335125961, -0.5617612555533924, -0.5540973953629873,
-0.547056961438102, -0.5405534716937836, -0.5345031738697799,
-0.5288711898601832, -0.5230269249641424, -0.5176160456576326},
{-1.0233704183679038, -0.8578364527406848, -0.7822398002222144,
-0.7319092985699172, -0.6949532652160997, -0.6672897127118631,
-0.6451120902056573, -0.6289374123689413, -0.6143425523741826,
-0.6019691815936312, -0.5907738464165959, -0.5805710106506012,
-0.5713468423191443, -0.5629540770642052, -0.555277955467318,
-0.5482261098341041, -0.541711655419931, -0.5356509966986778,
-0.5300094497906684, -0.5241542330941229, -0.5187336889039216},
{-1.0243583752030645, -0.8591780550236763, -0.7836392825429357,
-0.7332926417716408, -0.6963098377941606, -0.6686148715425588,
-0.6464165208817576, -0.630223622280937, -0.6156127921240113,
-0.6032256073367535, -0.5920127879207939, -0.5817947149389511,
-0.5725563980786319, -0.5641504115428688, -0.5564619944188962,
-0.5493987045119866, -0.5428732448872324, -0.536802203330808,
-0.5311510705560067, -0.5252848542759239, -0.5198546153669668},
{-1.0253500388307657, -0.8605238195732454, -0.7850429947466182,
-0.7346801124431295, -0.6976704401249663, -0.6699439594030991,
-0.647724810114596, -0.6315135993536387, -0.6168868024115,
-0.6044857416127343, -0.5932553657894459, -0.583022024933598,
-0.5737695110656205, -0.5653502696513897, -0.5576495226005136,
-0.5505747551978857, -0.5440382504457375, -0.5379568044791085,
-0.53229606180048, -0.5264187983611919, -0.5209788339643637},
{-1.026345419770223, -0.8618737581782625, -0.7864509488886142,
-0.736071722732504, -0.6990350839446364, -0.6712769881396525,
-0.6490369690109219, -0.6328073545373627, -0.6181645943142939,
-0.6057495949817167, -0.5945015911856899, -0.5842529513520276,
-0.5749861920630792, -0.5665536617161706, -0.5588405505168339,
-0.5517542722409416, -0.5452066821690096, -0.5391148107519257,
-0.5334444334757791, -0.5275560753707396, -0.5221063538319868},
{-1.027344528530648, -0.8632278827735718, -0.7878631569383288,
-0.7374674844359106, -0.7004037810847876, -0.6726139691099888,
-0.6503530092313667, -0.6341048985896123, -0.6194461787326873,
-0.6070171779838347, -0.5957514750534756, -0.5854875047116366,
-0.5762064516920873, -0.5677605981791203, -0.5600350890063055,
-0.5529372658302236, -0.5463785502379324, -0.5402762327721575,
-0.5345961949087723, -0.5286966955400203, -0.5232371840866108},
{-1.0283473756335297, -0.8645862051589575, -0.7892796309829464,
-0.7388674095309398, -0.7017765434629837, -0.6739549141439056,
-0.6516729417699025, -0.6354062424552467, -0.6207315668789306,
-0.608288500900926, -0.5970050286205151, -0.586725695819041,
-0.5774303003836394, -0.5689710893939264, -0.5612331483953312,
-0.5541237457209718, -0.5475538649370719, -0.5414410813318682,
-0.5357513560447842, -0.5298406688716568, -0.5243713338722955},
{-1.0293539716981286, -0.8659487374934542, -0.7907003833156523,
-0.7402715102625734, -0.703153382981327, -0.6752998349156769,
-0.6529967783617394, -0.6367113973756204, -0.6220207698452214,
-0.6095635745305117, -0.5982622629853722, -0.5879675354954088,
-0.5786577491699063, -0.5701851460416947, -0.562434739517812,
-0.5553137223660087, -0.5487326369329821, -0.5426093671085255,
-0.5369099264034958, -0.5309880057293412, -0.5255088124413305},
{-1.0303643272527552, -0.867315491518184, -0.7921254258089903,
-0.7416797983801189, -0.7045343115596552, -0.6766487432496433,
-0.6543245303382719, -0.6380203741809964, -0.6233137986728252,
-0.6108424093717986, -0.5995231895312827, -0.5892130345018813,
-0.5798888084946157, -0.5714027786907536, -0.5636398731412555,
-0.5565072055205746, -0.5499148764783968, -0.5437811011815938,
-0.5380719157210478, -0.5321387167668945, -0.5266496289104907},
{-1.0313784529889745, -0.8686864794690337, -0.7935547709384991,
-0.7430922861813087, -0.7059193414297624, -0.6780016510365385,
-0.6556562092864624, -0.6393331841964027, -0.6246106645612599,
-0.6121250160458658, -0.6007878194322984, -0.5904622037669469,
-0.5811234893508299, -0.5726239977675505, -0.5648485599431297,
-0.5577042057157087, -0.5511005940079485, -0.5449562940839314,
-0.5392373338345351, -0.5332928121215446, -0.527793792648481},
{-1.0323963595669738, -0.8700617133667947, -0.7949884307413413,
-0.7445089857901621, -0.7073084844587356, -0.6793585699042524,
-0.656991826797821, -0.640649838709578, -0.6259113785890804,
-0.6134114051801589, -0.6020561638879371, -0.5917150539971772,
-0.5823618024896859, -0.5738488140405025, -0.5660608103980849,
-0.5589047329222012, -0.5522898000945133, -0.5461349567049183,
-0.5404061901463137, -0.5344503023861762, -0.5289413129066816},
{-1.0334180576637664, -0.8714412053509477, -0.7964264175921016,
-0.7459299093097798, -0.7087017527574062, -0.6807195118917662,
-0.6583313942937821, -0.6419703488718369, -0.6272159520540299,
-0.6147015875194484, -0.6033282342577877, -0.592971596024654,
-0.5836037586077509, -0.5750772379542468, -0.5672766355792191,
-0.5601087972790992, -0.5534825052800443, -0.5473170999730428,
-0.5415784947781503, -0.5356111982955554, -0.5300921989910421},
{-1.0344435579741003, -0.8728249675768893, -0.7978687436798282,
-0.7473550689956028, -0.7100991583574796, -0.6820844888461579,
-0.6596749233740411, -0.6432947262128437, -0.6285243960546723,
-0.615995573397413, -0.6046040418514167, -0.5942318406850973,
-0.5848493688326926, -0.5763092802772007, -0.5684960462340314,
-0.5613164088781559, -0.554678720262018, -0.5485027347658615,
-0.5427542572024322, -0.5367755104571188, -0.5312464605030982},
{-1.0354728713296026, -0.8742130123710012, -0.7993154214882452,
-0.7487844770666925, -0.711500713586247, -0.6834535127409254,
-0.6610224258320159, -0.6446229822358873, -0.6298367218169005,
-0.617293373832581, -0.6058835981320954, -0.5954957990661569,
-0.5860986438729014, -0.577544951609525, -0.5697190531600427,
-0.5625275778702417, -0.555878455700622, -0.549691871811774,
-0.543933487337199, -0.5379432495719811, -0.5324041067951839},
{-1.036506008430024, -0.8756053518814042, -0.8007664632650631,
-0.7502181458839914, -0.7129064305690918, -0.6848265956869,
-0.662373913238298, -0.6459551283587643, -0.6311529406102636,
-0.6185949994951443, -0.6071669145530905, -0.5967634820835883,
-0.5873515946877887, -0.5787842628633371, -0.5709456672029773,
-0.5637423146299625, -0.557081722361545, -0.5508845221329466,
-0.545116195038645, -0.5391144266459378, -0.5335651474706538},
{-1.0375429800938036, -0.8770019984349346, -0.8022218814435291,
-0.7516560877156735, -0.71431632146232, -0.6862037494984179,
-0.6637293972289626, -0.6472911761902651, -0.632473063764337,
-0.6199004609352414, -0.6084540022493456, -0.5980349005367316,
-0.5886082324805102, -0.5800272246460736, -0.5721758992449395,
-0.564960629192683, -0.5582885308667755, -0.5520806963604628,
-0.5463023901784254, -0.5402890525401745, -0.5347295920601027},
{-1.0385837972416994, -0.8784029645321425, -0.8036816885364715,
-0.7530983150377324, -0.7157303987150954, -0.6875849865391501,
-0.6650888896747347, -0.6486311376074809, -0.6337971025450315,
-0.6212097690022347, -0.6097448730406541, -0.5993100655750823,
-0.5898685679712798, -0.5812738478543906, -0.5734097601434769,
-0.5661825320230491, -0.5594988922975972, -0.5532804057202156,
-0.5474920827737151, -0.5414671380949585, -0.535897450239645},
{-1.039628470694879, -0.8798082624466588, -0.8051458969971463,
-0.7545448401747308, -0.7171486743336573, -0.6889703186907354,
-0.666452402260802, -0.6499750241910078, -0.6351250681609599,
-0.6225229344781837, -0.6110395381792841, -0.6005889878351809,
-0.5911326124678453, -0.582524143162118, -0.5746472609134798,
-0.5674080331209552, -0.5607128175097387, -0.5544836608405603,
-0.5486852826252289, -0.542648694206946, -0.5370687320655634},
{-1.040677011400021, -0.88121790478408, -0.8066145193420198,
-0.7559956756222164, -0.7185711608817655, -0.6903597581613212,
-0.6678199468833554, -0.651322847670599, -0.6364569722563829,
-0.6238399681542433, -0.6123380093540618, -0.6018716788339589,
-0.5924003770051058, -0.5837781216232543, -0.575888412346103,
-0.5686371429337669, -0.561930317401675, -0.5556904724362539,
-0.5498820001903368, -0.5438337323203086, -0.5382434468228894},
{-1.041729430257874, -0.882631903940819, -0.8080875681821453,
-0.7574508338248052, -0.7199978708267736, -0.6917533173482298,
-0.6691915353949298, -0.6526746200424896, -0.6377928259362307,
-0.6251608809088793, -0.613640297994607, -0.6031581494753482,
-0.5936718726125036, -0.5850357941308175, -0.5771332256526875,
-0.5698698719616004, -0.5631514030901599, -0.556900851478531,
-0.5510822451906279, -0.5450222630834105, -0.5394216047889131},
{-1.0427857382137518, -0.884050272461991, -0.8095650560198919,
-0.7589103273712681, -0.721428816250409, -0.6931510081758461,
-0.6705671796025854, -0.6540303530973688, -0.6391326406801454,
-0.6264856833877275, -0.6149464158006595, -0.6044484106942036,
-0.5949471105877819, -0.5862971714132073, -0.5783817115334386,
-0.571106230316218, -0.5643760855755318, -0.5581148085720997,
-0.5522860280107125, -0.5462142978021802, -0.5406032159089591},
{-1.0438459463061918, -0.8854730229963934, -0.8110469955008739,
-0.7603741688299124, -0.7228640099419863, -0.694552843114252,
-0.6719468915543985, -0.6553900587914541, -0.6404764279868687,
-0.6278143865511083, -0.6162563741472695, -0.6057424735008681,
-0.59622610194765, -0.587562264873668, -0.5796338812360773,
-0.572346228555034, -0.5656043760163811, -0.5593323547145701,
-0.5534933587896376, -0.5474098474223865, -0.5417882901674602},
{-1.044910065606473, -0.8869001681741793, -0.8125333993411914,
-0.761842370870454, -0.7243034641278427, -0.6959588343997893,
-0.6733306830028596, -0.6567537492865085, -0.6418241991614195,
-0.6291470012447462, -0.6175701848906101, -0.607040349235831,
-0.5975088582754324, -0.588831085217862, -0.5808897456463455,
-0.5735898772572909, -0.5668362857786633, -0.5605535003442128,
-0.5547042479811353, -0.5486089231289952, -0.5429768378235167},
{-1.0459781070935605, -0.8883317206818901, -0.8140242802678586,
-0.7633149460602908, -0.7257471915227143, -0.6973689944543366,
-0.6747185663389246, -0.6581214364396146, -0.6431759659790259,
-0.6304835385044498, -0.6188878595457936, -0.6083420490567732,
-0.5987953906160328, -0.5901036437917355, -0.5821493157973237,
-0.5748371868930917, -0.5680718260491631, -0.5617782564704612,
-0.5559187059061514, -0.549811536408015, -0.5441688691244053},
{-1.0470500819264998, -0.8897676933047478, -0.8155196510624592,
-0.764791907281051, -0.7271952046439765, -0.6987833358025455,
-0.6761105533250884, -0.6594931323761557, -0.6445317398529369,
-0.6318240091286498, -0.6202094099253372, -0.6096475840995481,
-0.6000857103726958, -0.5913799514810307, -0.5834126029412801,
-0.5760881679807426, -0.5693110081347186, -0.563006633533405,
-0.5571367429274687, -0.5510176983871133, -0.5453643946093507},
{-1.048126001156561, -0.8912080987593072, -0.8170195243674243,
-0.7662732671801677, -0.728647516075398, -0.7002018706371018,
-0.6775066562104257, -0.6608688492751753, -0.6458915321782115,
-0.6331684241595212, -0.6215348477135194, -0.6109569654599909,
-0.6013798289068291, -0.5926600197908556, -0.5846796181285754,
-0.5773428312804754, -0.5705538433094262, -0.5642386421213814,
-0.5583583696407004, -0.5522274199183812, -0.5465634244064859},
{-1.0492058760378313, -0.8926529499276512, -0.8185239131053095,
-0.767759038499662, -0.7301041384052951, -0.7016246114935711,
-0.6789068869384209, -0.6622485993129885, -0.6472553548192082,
-0.6345167944427885, -0.6228641845282255, -0.6122702045513506,
-0.602677757584388, -0.593943859551473, -0.5859503724668684,
-0.5786011875215991, -0.5718003431875331, -0.5654742929245913,
-0.5595835965568767, -0.5534407122713674, -0.5477659692778616},
{-1.0502897176984334, -0.8941022596923176, -0.8200328302054913,
-0.7692492342821424, -0.7315650843293042, -0.7030515708265739,
-0.6803112578554646, -0.6636323945413096, -0.648623219257388,
-0.6358691310524591, -0.624197432271103, -0.6135873123839701,
-0.603979508023258, -0.5952314824326095, -0.5872248771238446,
-0.5798632475061822, -0.5730505192141209, -0.5667135965531997,
-0.5608124344662428, -0.5546575868766013, -0.5489720398081772},
{-1.0513775373260614, -0.8955560409508507, -0.8215462884568296,
-0.7707438671932323, -0.7330303666458349, -0.704482761349027,
-0.6817197812479208, -0.6650202472928868, -0.6499951372270516,
-0.6372254451416666, -0.6255346026837287, -0.6149083005784632,
-0.6052850916676107, -0.5965228995137295, -0.588503143249909,
-0.5811290219817238, -0.5743043830889292, -0.5679565635264225,
-0.5620448938934715, -0.5558780550109077, -0.5501816469204641},
{-1.0524693462352843, -0.8970143067053868, -0.8230643008864718,
-0.7722429503655803, -0.7344999980914508, -0.7059181956847169,
-0.6831324692402632, -0.6664121697094743, -0.6513711204015635,
-0.6385857477571335, -0.6268757075304165, -0.6162331802397603,
-0.6065945199343332, -0.5978181222453713, -0.5897851823001474,
-0.5823985219294627, -0.575561946331618, -0.5692032044007647,
-0.5632809856788299, -0.5571021277855834, -0.5513948009793239},
{-1.0535651556961056, -0.8984770700294575, -0.824586880397419,
-0.7737464966794505, -0.7359739914572856, -0.7073578862891736,
-0.6845493344180795, -0.6678081740747075, -0.6527511806580151,
-0.6399500499564965, -0.628220758821044, -0.6175619627829292,
-0.6079078045459028, -0.5991171621790272, -0.5910710052457944,
-0.5836717582833444, -0.5768232204100059, -0.5704535296281392,
-0.5645207207653584, -0.5583298163664949, -0.5526115130141989},
{-1.0546649770149088, -0.8999443438865455, -0.8261140400845761,
-0.7752545191297031, -0.7374523593989579, -0.7088018459298837,
-0.6859703887939759, -0.6692082725685395, -0.6541353295924637,
-0.6413183628983461, -0.6295697682380705, -0.6188946595548259,
-0.6092249571265711, -0.6004200306369967, -0.5923606232463499,
-0.5849487421246522, -0.5780882172975907, -0.5717075499205748,
-0.5657641098850945, -0.559561132113231, -0.553831793651625},
{-1.0557688215599228, -0.9014161415384478, -0.8276457930182914,
-0.7767670309704044, -0.738935115014101, -0.7102500871960729,
-0.6873956450390324, -0.6706124775637363, -0.6555235792511667,
-0.6426906977403632, -0.6309227477686363, -0.6202312819195868,
-0.6105459892505678, -0.6017267390725465, -0.5936540478487586,
-0.5862294844046119, -0.5793569487059358, -0.5729652755353527,
-0.5670111640201867, -0.5607960861452739, -0.5550556539783429},
{-1.0568767006293456, -0.9028924759745678, -0.8291821521834208,
-0.7782840450518052, -0.7404222709983515, -0.711702622964367,
-0.6888251155532998, -0.6720208014439777, -0.6569159413766101,
-0.6440670658366798, -0.6322797095117494, -0.6215718413195646,
-0.6118709126503745, -0.6030372992463526, -0.5949512903916911,
-0.5875139964555274, -0.5806294263966265, -0.5742267172872744,
-0.5682618941827968, -0.5620346899113429, -0.556283104868271},
{-1.0579886257855833, -0.9043733606217756, -0.8307231308881455,
-0.779805574805323, -0.7419138405084595, -0.7131594661095733,
-0.6902588128496063, -0.6734332563664793, -0.6583124280441552,
-0.6454474785350612, -0.6336406651917059, -0.6229163495800094,
-0.613199739218544, -0.6043517226944459, -0.5962523621692526,
-0.5888022894514506, -0.5819056624359291, -0.5754918855418509,
-0.5695163114023671, -0.5632769543508402, -0.5575141574290683},
{-1.0591046083268338, -0.9058588086104464, -0.8322687422742092,
-0.7813316333085822, -0.7434098364064994, -0.7146206292827628,
-0.6916967496390498, -0.674849854646709, -0.6597130511081559,
-0.6468319470805, -0.6350056270403002, -0.624264817911353,
-0.6145324805365817, -0.6056700211793213, -0.5975572742954682,
-0.5900943746037228, -0.5831856683953447, -0.5767607908173886,
-0.5707744267419912, -0.5645228907915225, -0.5587488224655317},
{-1.0602246598159581, -0.9073488332442139, -0.8338189994697132,
-0.7828622338665809, -0.7449102717991991, -0.7160861254242263,
-0.6931389383944406, -0.6762706087047263, -0.6611178226476113,
-0.6482204829644616, -0.6363746069700937, -0.6256172577850521,
-0.6158691485534291, -0.6069922062852129, -0.5988660383454771,
-0.5913902633374164, -0.5844694561774304, -0.5780334437722559,
-0.5720362514557564, -0.5657725104347264, -0.5599871112053734},
{-1.0613487917084967, -0.9088434480017895, -0.8353739157937525,
-0.7843973898270633, -0.7464151595731892, -0.717555967293265,
-0.6945853916531632, -0.6776955308641845, -0.6625267547979092,
-0.6496130973719119, -0.637747617108289, -0.6269736809335882,
-0.6172097552416744, -0.6083182898037194, -0.6001786657452612,
-0.5926899669811974, -0.5857570381540427, -0.5793098550848299,
-0.5733017964430474, -0.5670258244372235, -0.5612290345861766},
{-1.0624770156246086, -0.9103426662277343, -0.836933504643639,
-0.7859371144786564, -0.7479245129325136, -0.7190301680493576,
-0.6960361224728331, -0.6791246334541938, -0.6639398595234525,
-0.6510098021617523, -0.6391246695120572, -0.6283340991567457,
-0.618554312311062, -0.6096482835391726, -0.6014951678362195,
-0.5939934968700982, -0.5870484259339719, -0.580590035280693,
-0.5745710732317093, -0.5682828440067169, -0.5624746039175079},
{-1.06360934306349, -0.9118465013652894, -0.8384977792497921,
-0.7874814212664205, -0.7494383450703026, -0.7205087406355233,
-0.697491143415391, -0.6805579287311048, -0.6653571493425261,
-0.6524106088163535, -0.6405057765296078, -0.6296985239787318,
-0.6199028316978001, -0.610982199328646, -0.6028155560306914,
-0.59530086498944, -0.5883436317344604, -0.5818739951182579,
-0.5758440930021607, -0.5695435802899738, -0.5637238303315826},
{-1.0647457856612164, -0.9133549669991226, -0.8400667530772807,
-0.7890303237272747, -0.7509566692096996, -0.7219916979429399,
-0.6989504674120326, -0.6819954293050614, -0.6667786362495463,
-0.6538155290309078, -0.6418909501326198, -0.631066967109291,
-0.6212553255727471, -0.612320049203845, -0.6041398417892196,
-0.596612082480533, -0.5896426673316455, -0.5831617453977742,
-0.5771208670585111, -0.5708080445929227, -0.564976724816006},
{-1.0658863550597744, -0.9148680766029429, -0.8416404395302379,
-0.790583835223515, -0.7524794984010441, -0.7234790531310864,
-0.7004141071820413, -0.6834371473905776, -0.668204332600908,
-0.6552245742932428, -0.6432802026465652, -0.6324394402854523,
-0.6226118058202701, -0.613661845034585, -0.6054680364832166,
-0.5979271610494834, -0.5909455447754226, -0.5844532967394116,
-0.5784014067239696, -0.5720762476548771, -0.5662332985129979},
{-1.0670310629293454, -0.916385843766875, -0.8432188520205273,
-0.7921419693466305, -0.7540068458401947, -0.7249708191302489,
-0.7018820756802597, -0.6848830954259029, -0.6696342506766086,
-0.6566377565613948, -0.6446735463077857, -0.6338159554006779,
-0.6239722843638447, -0.6150075985897274, -0.6068001514240677,
-0.5992461124269539, -0.5922522762084554, -0.5857486600762059,
-0.5796857230807291, -0.5733482008090505, -0.5674935624583668},
{-1.068179921016963, -0.9179082823170575, -0.8448020041942073,
-0.7937047397044807, -0.7555387250376953, -0.7264670092508823,
-0.703354385921557, -0.6863332857528803, -0.6710684030385892,
-0.6580550877015412, -0.6460709934090119, -0.6351965242929509,
-0.6253367734580024, -0.6163573221319893, -0.6081361982423914,
-0.6005689483517926, -0.5935628735578575, -0.5870478465058113,
-0.5809738279322119, -0.5746239147956658, -0.5687575278016084},
{-1.0693329409941725, -0.9194354057576675, -0.8463899095208944,
-0.7952721599576762, -0.7570751492767158, -0.7279676366633794,
-0.7048310509817384, -0.6877877308206735, -0.6725068020823528,
-0.6594765796662614, -0.6474725563484753, -0.6365811589857913,
-0.6267052851262633, -0.6177110276494204, -0.6094761884342006,
-0.6018956807138238, -0.5948773487680228, -0.5883508667047863,
-0.5822657326925764, -0.5759034011589392, -0.5700252055121382},
{-1.070490134648935, -0.920967227955316, -0.8479825816702942,
-0.7968442437904741, -0.7586161317576625, -0.7294727143480486,
-0.7063120838793111, -0.6892464431293774, -0.673949460350741,
-0.6609022442844434, -0.6488782476426422, -0.637969871061614,
-0.6280778315767748, -0.6190687272410287, -0.6108201332499448,
-0.6032263213510305, -0.5961957139315928, -0.589657731717125,
-0.5835614484331018, -0.5771866703025808, -0.5712966066284935},
{-1.0716515138392424, -0.9225037627124948, -0.8495800341738686,
-0.79842100494443, -0.7601616861174989, -0.7309822557581356,
-0.7077974977428312, -0.6907094349517138, -0.675396390419337,
-0.6623320937296739, -0.650288079492384, -0.6393626728222443,
-0.6294544247175509, -0.6204304331095045, -0.6121680443884543,
-0.604560882052283, -0.5975179805327571, -0.5909684528214711,
-0.5848609871763983, -0.5784737334506644, -0.5725717420245928},
{-1.0728170903744285, -0.9240450238553422, -0.8511822807786302,
-0.8000024572220354, -0.7617118256266622, -0.7324962740522096,
-0.7092873055180462, -0.6921767189169259, -0.6768476049619494,
-0.6637661400754951, -0.651702064276833, -0.6407595761729681,
-0.6308350771823825, -0.62179615734658, -0.6135199330665273,
-0.60589937513123, -0.598844161228044, -0.5922830413255724,
-0.5861643598909723, -0.5797646012597397, -0.5738506228008191},
{-1.073986876134768, -0.9255910253036745, -0.8527893352061255,
-0.8015886144230535, -0.76326656398669, -0.7340147825052554,
-0.7107815207646127, -0.6936483074778153, -0.678303116645111,
-0.6652043956619309, -0.6531202149099045, -0.642160593153676,
-0.6322198007883344, -0.6231659123759528, -0.6148758108347465,
-0.6072418125240802, -0.6001742675725836, -0.5936015082452286,
-0.5874715784939326, -0.5810592850111789, -0.5751332596091743},
{-1.0751608830078112, -0.9271417810691673, -0.854401211331151,
-0.8031794904645722, -0.764825914481662, -0.7355377947742454,
-0.712280156527413, -0.6951242131162871, -0.6797629382890591,
-0.6666468727225947, -0.6545425436879668, -0.6435657361089397,
-0.633608607800852, -0.6245397102429706, -0.6162356891754825,
-0.6085882061424854, -0.6015083112788489, -0.5949238650318875,
-0.5887826543066694, -0.5823577952987762, -0.57641966384017},
{-1.0763391229552326, -0.9286973050789129, -0.8560179227883964,
-0.8047750992682268, -0.7663898909386262, -0.737065323839488,
-0.7137832262096708, -0.6966044482787765, -0.6812270827667817,
-0.6680935834829143, -0.6559690632384445, -0.6449750168658284,
-0.6350015105572311, -0.62591756340953, -0.6175995796866118,
-0.6099385686275127, -0.6028463041448049, -0.5962501230387716,
-0.5900975989188737, -0.5836601428582071, -0.5777098457119791},
{-1.077521607980998, -0.9302576114168915, -0.8576394835563406,
-0.8063754548120414, -0.7679585067662629, -0.7385973832942909,
-0.7152907429781408, -0.6980890255672421, -0.6826955628794167,
-0.669544540485731, -0.65739978626425, -0.6463884478362161,
-0.6363985214247805, -0.627299483956449, -0.6189674937204472,
-0.6112929118626198, -0.6041882581675964, -0.5975802937500703,
-0.591416423987539, -0.5849663385106396, -0.5790038165941951},
{-1.0787083500499648, -0.9318227142057367, -0.8592659075156917,
-0.8079805711658992, -0.7695317756970326, -0.7401339865455157,
-0.7168027202988014, -0.6995779575609049, -0.6841683916272814,
-0.670999756146557, -0.658834725430097, -0.6478060410854596,
-0.6377996525379785, -0.6286854845084235, -0.6203394429212494,
-0.6126512483569968, -0.6055341849632896, -0.5989143886872625,
-0.5927391410423297, -0.5862763933073438, -0.5803015871351818},
{-1.0798993612106642, -0.9333926275890008, -0.8608972085889945,
-0.8095904623105525, -0.7711097114442964, -0.7416751470345844,
-0.7183191718013404, -0.7010712566889197, -0.6856455819633993,
-0.6724592431091878, -0.6602738933906949, -0.6492278091918706,
-0.6392049164578566, -0.6300755774673235, -0.6217154387250048,
-0.6140135906762225, -0.606884096570866, -0.6002524194855141,
-0.5940657617329634, -0.5875903178794033, -0.581603168185211},
{-1.0810946535539188, -0.9349673657798121, -0.8625334008138452,
-0.8112051424604942, -0.7726923277105016, -0.7432208785648982,
-0.7198401105852099, -0.702568935722411, -0.687127146930834,
-0.6739230138591665, -0.6617173029926562, -0.6506537642844705,
-0.6406143253198024, -0.6314697752623033, -0.6230954928314532,
-0.6153799510648241, -0.6082380042871591, -0.6015943978281939,
-0.5953962976436742, -0.5889081229497606, -0.5829085704581303},
{-1.0822942392310324, -0.93654694305269, -0.8641744982132877,
-0.8128246257065257, -0.7742796384300163, -0.7447711943705144,
-0.7213655506666328, -0.7040710073333685, -0.6886130998391309,
-0.6753910812221875, -0.6631649670516708, -0.6520839187151068,
-0.6420278916530151, -0.6328680903088753, -0.6244796167175082,
-0.6167503423966991, -0.6095959197509728, -0.6029403355123577,
-0.5967307607088514, -0.5902298194441755, -0.5842178046550544},
{-1.0834981303119093, -0.9381313736435004, -0.8658205147444278,
-0.8144489262294883, -0.7758716571315745, -0.7463261081929886,
-0.7228955050431978, -0.7055774838399884, -0.6901034534885184,
-0.676863457500076, -0.6646168983397729, -0.6535182848720069,
-0.6434456277193021, -0.6342705351280529, -0.6258678220838192,
-0.6181247767744935, -0.6109578547602723, -0.6042902441704427,
-0.59806916195339, -0.5915554180910476, -0.5855308813297597},
{-1.084706339065633, -0.9397206720482245, -0.8674714647627297,
-0.8160780585476459, -0.7774683979123438, -0.7478856335537785,
-0.7244299876274454, -0.7070883781407247, -0.6915982215623444,
-0.6783401559805498, -0.6660731098418182, -0.6549568753534913,
-0.644867546054229, -0.6356771221471718, -0.6272601206746913,
-0.6195032674449976, -0.612323820918391, -0.6056441358859956,
-0.5994115136545588, -0.5928849297170018, -0.5868478114789468},
{-1.085918877608492, -0.9413148525168253, -0.8691273622171138,
-0.817712036593548, -0.7790698744393012, -0.7494497841271368,
-0.7259690120490632, -0.7086037030558145, -0.6930974170954869,
-0.6798211891773462, -0.6675336144289759, -0.656399702618728,
-0.646293659056937, -0.6370878640473165, -0.6286565240598065,
-0.6208858269046686, -0.6136938298504901, -0.6070020225251938,
-0.600757827124653, -0.594218365402412, -0.5881686055354294},
{-1.0871357582855126, -0.9429139296244102, -0.8707882214130223,
-0.8193508749309331, -0.7806761009214824, -0.7510185737755819,
-0.727512591715822, -0.7101234710489734, -0.694601053549377,
-0.681306570146262, -0.6689984251761416, -0.6578467794170137,
-0.6477239791947795, -0.6385027735022959, -0.6300570442090248,
-0.62227246805287, -0.6150678929216156, -0.6083639158414371,
-0.6021081143126139, -0.5955557360457533, -0.5894932742294259},
{-1.0883569933398576, -0.9445179178610488, -0.8724540566181531,
-0.8209945880162195, -0.7822870913023507, -0.7525920160651367,
-0.7290607408240248, -0.7116476950277502, -0.6961091442599354,
-0.6827963115902094, -0.6704675550963657, -0.6592981180328934,
-0.6491585189869511, -0.6399218629530878, -0.6314616926983945,
-0.6236632037580421, -0.6164460217287342, -0.6097298281683834,
-0.603462386641695, -0.596897052217173, -0.5908218282138478},
{-1.0895825951079132, -0.9461268317995746, -0.8741248821061163,
-0.8226431901694014, -0.7839028595144555, -0.7541701248583195,
-0.7306134728632969, -0.7131763877496269, -0.697621702746801,
-0.6842904268432903, -0.6719410172290736, -0.6607537313066132,
-0.6505972911036224, -0.641345145246305, -0.6328704817306061,
-0.6250580469713896, -0.6178282280279745, -0.6110997714949917,
-0.6048206561763436, -0.5982423253653906, -0.5921542782743927},
{-1.0908125759069662, -0.9477406860141855, -0.8758007121823539,
-0.8242966959423939, -0.7855234195376397, -0.7557529137866368,
-0.7321708013596435, -0.7147095619975516, -0.6991387425332505,
-0.6857889283674012, -0.6734188245372934, -0.662213631967461,
-0.6520403080603501, -0.6427726327419805, -0.6342834231518282,
-0.6264570108487533, -0.6192145232507755, -0.6124737580466899,
-0.6061829342879719, -0.5995915662706466, -0.593490635184935},
{-1.092046948197094, -0.9493594952064086, -0.8774815613514875,
-0.8259551198598274, -0.7871487857319153, -0.7573403968508501,
-0.7337327405557517, -0.7162472307472854, -0.700660277066163,
-0.6872918295603085, -0.6749009904297054, -0.6636778325828345,
-0.6534875822990216, -0.6442043383931377, -0.6357005288837172,
-0.6278601082804016, -0.6206049188658653, -0.6138517999652322,
-0.6075492331501664, -0.6009447860233195, -0.5948309095401783},
{-1.0932857243624312, -0.9509832740855018, -0.8791674439717099,
-0.8276184765391008, -0.7887789720753062, -0.7589325879371245,
-0.7352993041286027, -0.717789406785414, -0.7021863201716769,
-0.6887991435860386, -0.6763875280257707, -0.6651463461948879,
-0.6549391266862585, -0.6456402748808614, -0.637121810975259,
-0.6292673525267674, -0.6219994267630682, -0.6152339091750036,
-0.6089195642962295, -0.6023019961821774, -0.5961751125314549},
{-1.094528916926265, -0.9526120374739548, -0.8808583745121723,
-0.8292867804993875, -0.7904139928341465, -0.760529500782468,
-0.7368705059916465, -0.7193361029721927, -0.7037168854167248,
-0.6903108834267186, -0.6778784503621864, -0.6666191854710632,
-0.6563949535211577, -0.647080454810748, -0.6385472816928086,
-0.6306787567109495, -0.6233980582246659, -0.616620098252497,
-0.61029393951776, -0.6036632074765294, -0.5975232549189968},
{-1.0957765382927391, -0.954245800100125, -0.8825543675939116,
-0.8309600466363918, -0.7920538622438471, -0.7621311494467591,
-0.7384463600419622, -0.7208873325225795, -0.7052519865792419,
-0.6918270621581541, -0.6793737709713241, -0.6680963634526051,
-0.6578550760232247, -0.6485248912013049, -0.6399769532781647,
-0.6320943342880128, -0.6248008251186548, -0.6180103795140894,
-0.6116723708828431, -0.6050284315369936, -0.5988753481151434},
{-1.0970286010219752, -0.9558845768483479, -0.8842554376233238,
-0.8326382895074858, -0.7936985945516426, -0.7637375477697788,
-0.7400268802630308, -0.7224431082349838, -0.7067916374207925,
-0.6933476930271354, -0.6808735028926094, -0.6695778927860374,
-0.6593195066534463, -0.6499735965999207, -0.6414108379231038,
-0.6335140981818768, -0.6262077391811545, -0.6194047650214998,
-0.6130548699811698, -0.6063976797786381, -0.6002314031256901},
{-1.0982851177222983, -0.957528382727105, -0.885961599352413,
-0.8343215240001882, -0.7953482041539246, -0.7653487098941696,
-0.7416120808593405, -0.7240034434489644, -0.7083358518866589,
-0.6948727894668991, -0.6823776598030236, -0.6710637867699916,
-0.6607882581602098, -0.6514265838814026, -0.6428489480922508,
-0.6349380619985823, -0.6276188122419626, -0.6208032677550364,
-0.6144414489008341, -0.6077709634646453, -0.601591431435736},
{-1.0995461009683822, -0.9591772326425598, -0.8876728674313199,
-0.8360097647209841, -0.7970027053879676, -0.7669646498106886,
-0.7432019755706278, -0.7255683510256858, -0.7098846436747408,
-0.6964023644341069, -0.6838862549057012, -0.67255405830565,
-0.6622613434556115, -0.65288386611428, -0.6442912961574621,
-0.6363662391577236, -0.6290340558534808, -0.6222058995308544,
-0.615832119503466, -0.609148294478473, -0.6029554443739471},
{-1.100811563406296, -0.9608311416177457, -0.8893892565538408,
-0.8377030268038652, -0.7986621126465252, -0.7685853815719383,
-0.7447965787614521, -0.7271378441919296, -0.7114380268349123,
-0.6979364312701364, -0.6853993016047752, -0.6740487203896919,
-0.6637387752989525, -0.6543454561178805, -0.645737894584272,
-0.6377986427214637, -0.6304534821229026, -0.6236126728117597,
-0.6172268935961256, -0.6105296840896699, -0.6043234537692115},
{-1.1020815177075747, -0.9624901248257629, -0.8911107814774368,
-0.8394013249662748, -0.800326440428762, -0.7702109192650823,
-0.7463959043770956, -0.7287119361253644, -0.7129960153597494,
-0.6994750031790318, -0.6869168132234336, -0.6755477861343024,
-0.6652205667060116, -0.6558113665951169, -0.647188756012838,
-0.6392352864377244, -0.6318771026126342, -0.6250236004152612,
-0.618625783362404, -0.6119151442781003, -0.6056954710902573},
{-1.103355976651983, -0.9641541973364838, -0.8928374569868538,
-0.8411046743794941, -0.801995703227476, -0.771841276896339,
-0.7479999663864874, -0.7302906403983798, -0.7145586233782524,
-0.7010180937413679, -0.6884388034941367, -0.6770512687653536,
-0.6667067307134857, -0.657281610494465, -0.6486438932179226,
-0.6406761835532961, -0.633304929924634, -0.6264386945404112,
-0.6200288007976269, -0.6133046870490944, -0.6070715085097618},
{-1.1046349529019608, -0.9658233742438824, -0.8945692979332307,
-0.8428130898328163, -0.8036699157191833, -0.7734764689057556,
-0.7496087794297637, -0.731873970147717, -0.7161258646774513,
-0.7025657160829724, -0.6899652858801346, -0.6785591815232692,
-0.6681972800151925, -0.6587562009899557, -0.6501033186214045,
-0.6421213475723562, -0.6347369756322223, -0.6278579678664755,
-0.621435957864378, -0.6146983239577821, -0.6084515777165507},
{-1.105918459278655, -0.967497670982084, -0.8963063193032212,
-0.8445265864738758, -0.8053490921956836, -0.7751165094578027,
-0.7512223573839947, -0.7334619387538623, -0.7176977537938001,
-0.7041178838017004, -0.691496274012934, -0.6800715376120934,
-0.6696922278415514, -0.6602351509618529, -0.6515670451390179,
-0.6435707917389664, -0.6361732520026635, -0.6292814327689484,
-0.6228472666116431, -0.6160960676597824, -0.6098356912898453},
{-1.1072065086227667, -0.969177102723279, -0.8980485359170416,
-0.8462451794694061, -0.8070332476127078, -0.7767614125923501,
-0.7528407146801328, -0.7350545598064855, -0.7192743046571195,
-0.7056746100888631, -0.6930317811065834, -0.6815883502640645,
-0.6711915872865575, -0.6617184735514456, -0.6530350857356098,
-0.6450245295527566, -0.6376137711977208, -0.630709101857974,
-0.6242627394012743, -0.617497929705678, -0.6112238612804504},
{-1.1084991137736324, -0.9708616848097336, -0.8997959628486569,
-0.8479688837942376, -0.8087223964330406, -0.7784111926048354,
-0.7544638653889706, -0.7366518468224967, -0.7208555315446574,
-0.7072359083813353, -0.6945718213028158, -0.6831096328105559,
-0.6726953714687625, -0.6632061815753332, -0.654507453135011,
-0.646482574627953, -0.6390585455337714, -0.6321409878601116,
-0.6256823880430602, -0.6189039226001114, -0.6126161003194284},
{-1.1097962876629026, -0.972551432659202, -0.9015486151038203,
-0.8496977149452505, -0.8104165534996355, -0.7800658639453104,
-0.7560918240906176, -0.7382538136471339, -0.7224414487982358,
-0.7088017922924337, -0.6961164080084927, -0.6846353987220937,
-0.6742035935421882, -0.6646982882148222, -0.6559841605294423,
-0.6479449400521844, -0.6405075875318289, -0.6335771030808246,
-0.6271062252535557, -0.6203140591023839, -0.6140124211078728},
{-1.1110980431535609, -0.9742463617262729, -0.9033065078128857,
-0.8514316879090984, -0.8121157335253884, -0.7817254407409564,
-0.757724605009571, -0.7398604737500136, -0.724032070604153,
-0.7103722751553505, -0.697665554807827, -0.6861656612409206,
-0.6757162668600358, -0.6661948066366676, -0.657465220816448,
-0.649411639436039, -0.6419609096419663, -0.6350174602812331,
-0.6285342630881132, -0.6217283512942231, -0.6154128361440598},
{-1.112404393286397, -0.9759464874987316, -0.905069656080741,
-0.853170818021681, -0.813819951392361, -0.7833899375982583,
-0.7593622224922001, -0.7414718410218484, -0.7256274115925407,
-0.7119473706188728, -0.6992192756397344, -0.687700434135877,
-0.677233404544495, -0.6676957498366392, -0.6589506471536879,
-0.650882685943543, -0.6434185241814703, -0.6364620718923106,
-0.6299665135438772, -0.6231468122095976, -0.6168173587693673},
{-1.1137153510226199, -0.9776518255553128, -0.9068380751141376,
-0.8549151206898387, -0.8155292220344563, -0.7850593688490335,
-0.7610046912905091, -0.7430879294852275, -0.7272274861297774,
-0.7135270921189658, -0.7007775840174872, -0.6892397306273779,
-0.6787550202516286, -0.6692011312352406, -0.6604404530180545,
-0.6523580930979733, -0.6448804439696687, -0.6379109509362024,
-0.6314029897248474, -0.6245694542312776, -0.6182260016767032},
{-1.1150309294475846, -0.979362391406994, -0.908611780031606,
-0.856664611229462, -0.8172435601900361, -0.7867337488187331,
-0.7626520252697446, -0.7447087529089913, -0.7288323082848365,
-0.7151114531225176, -0.7023404937935993, -0.6907835642559803,
-0.6802811270417806, -0.6707109635817687, -0.6619346512707125,
-0.653837873653174, -0.646346681119212, -0.6393641095728526,
-0.6328437032370857, -0.6259962902631742, -0.6196387780200894},
{-1.1163511416466463, -0.9810782008757997, -0.910390786316384,
-0.8584193052165574, -0.8189629808957761, -0.7884130919892414,
-0.7643042394356598, -0.7463343255958534, -0.7304418932662884,
-0.7167004674010968, -0.7039080189169908, -0.6923319486841137,
-0.681811738549186, -0.67222526043588, -0.6634332556250229,
-0.6553220413497911, -0.6478172492115846, -0.6408215606261365,
-0.6342886672027817, -0.627427333288324, -0.6210557013191647},
{-1.1176760006605946, -0.9827992695154535, -0.9121751090569887,
-0.8601792179433687, -0.8206874991465156, -0.7900974129452152,
-0.7659613481573615, -0.7479646616293394, -0.7320562551776675,
-0.7182941483915783, -0.7054801732165288, -0.6938848975669316,
-0.6833468681943486, -0.6737440346150834, -0.6649362789930819,
-0.6568106091290247, -0.649292160576806, -0.6422833169090154,
-0.6357378935153974, -0.6288625962788501, -0.6224767846151735},
{-1.1190055197453148, -0.9845256131829956, -0.9139647639149189,
-0.8619443650750327, -0.82241712997984, -0.7917867263022345,
-0.7676233659067293, -0.749599775277602, -0.7336754088637463,
-0.7198925098909967, -0.7070569703946603, -0.6954424247796851,
-0.6848865298252349, -0.6752672996908586, -0.666443735570283,
-0.6583035901385301, -0.6507714282106463, -0.6437493910925696,
-0.6371913954244519, -0.6303020926943645, -0.6239020415951018},
{-1.1203397120784757, -0.9862572476608875, -0.915759766166957,
-0.8637147621629992, -0.824151888607048, -0.7934810465203554,
-0.7692903075430877, -0.7512396810843711, -0.7352993689855793,
-0.7214955654089863, -0.708638424430319, -0.6970045436764849,
-0.6864307365694913, -0.6767950686034965, -0.6679556382823648,
-0.6598009975705281, -0.6522550650443009, -0.6452197955068186,
-0.638649185047143, -0.631745835044967, -0.6253314853447591},
{-1.1216785908300153, -0.9879941888511894, -0.917560131267237,
-0.8654904248378443, -0.8258917900839151, -0.7951803882178865,
-0.7709621875019366, -0.7528843932723248, -0.7369281502433296,
-0.7231033289526749, -0.7102245493797454, -0.6985712682726444,
-0.6879795027380169, -0.6783273546561759, -0.6694720012455946,
-0.6613028442316136, -0.6537430842108733, -0.646694543389458,
-0.6401112753537745, -0.6331938372959485, -0.6267651299303907},
{-1.1230221693003841, -0.9897364526559613, -0.9193658746953588,
-0.8672713688256408, -0.8276368494889539, -0.7968847659540188,
-0.7726390202733455, -0.754533926633485, -0.7385617674444802,
-0.7247158138543455, -0.711815359089087, -0.7001426122678822,
-0.6895328416967459, -0.6798641709219737, -0.6709928379932535,
-0.6628091433667578, -0.6552354987770741, -0.6481736472824196,
-0.6415776786006973, -0.634646112336668, -0.6282029886069722},
{-1.1243704608832559, -0.9914840550363806, -0.9211770121974041,
-0.8690576098069869, -0.8293870822662939, -0.7985941945544255,
-0.7743208209767545, -0.756188295854372, -0.7402002353665011,
-0.7263330341147594, -0.7134108674517847, -0.7017185896220326,
-0.6910907672518078, -0.6814055309660034, -0.6725181622205127,
-0.6643199076088422, -0.656732321722302, -0.6496571199595564,
-0.6430484079492089, -0.636102673735877, -0.629645074891414},
{-1.125723478818145, -0.9932370120905034, -0.9229935593421033,
-0.8708491635343307, -0.8311425035435605, -0.8003086888402322,
-0.7760076041613502, -0.7578475157015419, -0.741843569010598,
-0.7279550037537774, -0.7150110886586845, -0.7032992142330841,
-0.69265329335758, -0.6829514475039105, -0.6740479879226768,
-0.6658351501637298, -0.6582335663806589, -0.6511449737972725,
-0.6445234759285086, -0.6375635348786091, -0.6310914025598322},
{-1.1270812364723497, -0.9949953397299396, -0.9248155317272904,
-0.8726460459220107, -0.8329031289140403, -0.8020282634097384,
-0.7776993847483027, -0.7595116012116705, -0.7434917834179942,
-0.7295817364620234, -0.7166160368533383, -0.7048845003009774,
-0.694220434134877, -0.6845019344582397, -0.6755823294497532,
-0.6673548842554737, -0.6597392463991127, -0.6526372224288934,
-0.6460028959854753, -0.6390287095591702, -0.6325419853983476},
{-1.128443747350957, -0.9967590543024016, -0.9266429451954536,
-0.8744482727843206, -0.8346689733762105, -0.8037529330867983,
-0.7793961773122646, -0.7611805673186609, -0.7451448932833955,
-0.7312132460547218, -0.7182257257854872, -0.7064744613626317,
-0.6957922031642738, -0.6860570044855194, -0.6771212003486653,
-0.6688791218921324, -0.6612493744169115, -0.6541338777878991,
-0.6474866802473116, -0.6404982104750161, -0.633996836645565},
{-1.1298110249390447, -0.9985281718390979, -0.9284758154335577,
-0.8762558600064949, -0.8364400524660596, -0.8054827125715747,
-0.7810979967116509, -0.7628544291228536, -0.7468029139290593,
-0.7328495466172171, -0.7198401698296948, -0.708069111838995,
-0.6973686146111504, -0.6876166708334495, -0.6786646148730142,
-0.6704078766351813, -0.6627639641465066, -0.6556349533302637,
-0.6489748418889576, -0.6419720519579641, -0.6354559702249389},
{-1.1311830826762161, -1.000302708723666, -0.930314158328656,
-0.878068823747526, -0.8382163818578192, -0.8072176169471277,
-0.7828048581504845, -0.7645332019819762, -0.7484658604362266,
-0.7344906520593213, -0.7214593829066871, -0.7096684655707577,
-0.6989496826017785, -0.6891809469279906, -0.680212587171809,
-0.671941161007453, -0.6642830289429185, -0.6571404617152439,
-0.650467394098996, -0.6434502468173378, -0.6369193994732996},
{-1.132559934136225, -1.0020826811019106, -0.9321579898132768,
-0.8798871796780077, -0.8399979768537378, -0.8089576610145741,
-0.7845167763298377, -0.7662169012328377, -0.750133747752443,
-0.7361365767519601, -0.7230833794346836, -0.7112725372817295,
-0.7005354210905352, -0.6907498460459465, -0.6817651319170182,
-0.6734789879319578, -0.6658065823485231, -0.658650415766715,
-0.6519643497595098, -0.6449328091721327, -0.6383871383022779},
{-1.1339415928409835, -1.0038681054252265, -0.934007325674429,
-0.8817109442743458, -0.8417848531762502, -0.810702859786943,
-0.7862337662400023, -0.7679055424378021, -0.7518065912536258,
-0.7377873345694752, -0.724712173451735, -0.7128813405333858,
-0.7021258445765852, -0.6923233810948659, -0.6833222630602904,
-0.6750213703571717, -0.6673346378165661, -0.6601648284358816,
-0.6534657217662243, -0.6464197521245296, -0.6398591998076881},
{-1.1353280724442811, -1.005658998022227, -0.9358621820074404,
-0.8835401333135451, -0.8435770263258746, -0.8124532281553911,
-0.7879558429831377, -0.7695991410528222, -0.7534844060910473,
-0.7394429398336797, -0.7263457790550092, -0.7144948899476731,
-0.703720966950641, -0.6939015657353593, -0.6848839955036965,
-0.6765683209832787, -0.6688672086056613, -0.6616837129440682,
-0.6549715234959876, -0.6479110893533289, -0.6413355978575055},
{-1.1367193866690286, -1.0074553753752298, -0.937722574792133,
-0.8853747633420426, -0.8453745121287284, -0.8142087811584133,
-0.7896830214276633, -0.7712977129194769, -0.7551672076760951,
-0.7411034067945366, -0.7279842108391676, -0.7161131998700512,
-0.7053208029647067, -0.695484413142367, -0.6864503436027007,
-0.6781198529424728, -0.6704043089048355, -0.6632070819978253,
-0.6564817680255146, -0.6494068341098682, -0.6428163460996075},
{-1.1381155491017125, -1.0092572539911089, -0.9395885201629426,
-0.8872148502287018, -0.8471773261017006, -0.8159695339918471,
-0.7914153168512712, -0.7730012738602454, -0.7568550111909644,
-0.7427687497656734, -0.7296274828340756, -0.7177362846396136,
-0.7069253664594726, -0.6970719365672267, -0.6880213219164943,
-0.6796759789158386, -0.6719459518999429, -0.664734948959449,
-0.6579964682459831, -0.6509070000493011, -0.6443014574842891},
{-1.1395165735220871, -1.0110646504667784, -0.9414600343734492,
-0.8890604104526574, -0.8489854840954649, -0.8177355017287482,
-0.7931527442524384, -0.7747098396994261, -0.7585478323198913,
-0.7444389833071909, -0.7312756093833741, -0.719364158649114,
-0.7085346721023598, -0.6986641493704155, -0.6895969450888515,
-0.6812367119709961, -0.6734921511697394, -0.6662673267501305,
-0.6595156378452884, -0.6524116010459693, -0.6457909456685229},
{-1.1409224737672048, -1.012877581392786, -0.9433371334480398,
-0.8909114603320631, -0.8507990020343641, -0.8195066994403533,
-0.794895319079842, -0.7764234265714549, -0.7602456861613973,
-0.7461141219137062, -0.7329286048816357, -0.7209968365568784,
-0.71014873427157, -0.7002610649860799, -0.6911772282946913,
-0.6828020652619671, -0.6750429208523201, -0.6678042284993353,
-0.6610392900420266, -0.6539206498473504, -0.6472848237099242},
{-1.1423332635799852, -1.014696063415613, -0.9452198337266964,
-0.892768016107766, -0.8526178955689829, -0.8212831423752505,
-0.7966430560218214, -0.7781420505816641, -0.761948588336054,
-0.7477941799261316, -0.7345864835451721, -0.7226343326974529,
-0.7117675673634949, -0.7018626966128068, -0.6927621860713771,
-0.6843720515253153, -0.6765982738188541, -0.6693456674865956,
-0.6625674375782182, -0.6554341600012776, -0.6487831050981185},
{-1.1437489567983903, -1.0165201132140282, -0.9471081514884645,
-0.8946300944126051, -0.8544421806909668, -0.8230648457256393,
-0.7983959706371024, -0.7798657280291081, -0.7636565544562472,
-0.7494791722992886, -0.7362492600241239, -0.7242766617027883,
-0.71339118605556, -0.703469057755683, -0.6943518333682732,
-0.6859466843343398, -0.6781582247313054, -0.6708916570642032,
-0.6641000945774067, -0.6569521450965112, -0.6502858029944036},
{-1.1451695673463291, -1.0183497476864432, -0.9490021031169817,
-0.8964977114810608, -0.8562718734365262, -0.8248518247219181,
-0.8001540782333905, -0.7815944751628194, -0.7653696000415948,
-0.7511691135023284, -0.7379169486421233, -0.7259238383467164,
-0.7150196049788065, -0.7050801620507627, -0.695946185327557,
-0.6875259765993178, -0.6797227868682967, -0.6724422101633536,
-0.6656372737515994, -0.65847461847261, -0.651792930184456},
{-1.1465951091986426, -1.0201849835575558, -0.9509017050095281,
-0.8983708840578402, -0.858106989731823, -0.826644094866424,
-0.8019173939637767, -0.783328308551063, -0.7670877404780185,
-0.7528640185546465, -0.7395895637509966, -0.7275758771329492,
-0.7166528383277182, -0.7066960231049961, -0.6975452567039611,
-0.6891099412941912, -0.6812919739240897, -0.6739973403409749,
-0.6671789887222985, -0.6600015931171583, -0.6533044997941033},
{-1.148025596304251, -1.0220258377366918, -0.9528069736925318,
-0.9002496285820598, -0.8599475457976951, -0.8284416716178384,
-0.803685933557972, -0.7850672447029865, -0.7688109918690316,
-0.754563902351947, -0.7412671200509067, -0.7292327930053943,
-0.7182909015336918, -0.7083166544070991, -0.6991490630880435,
-0.6906985925688787, -0.6828657998048584, -0.6755570612422162,
-0.668725253489356, -0.6615330830472885, -0.6548205249964667},
{-1.149461042639814, -1.0238723271186245, -0.9547179255450828,
-0.9021339616938349, -0.8617935574384319, -0.8302445700501266,
-0.8054597119180471, -0.78681130010591, -0.7705393694332088,
-0.7562687795862075, -0.7429496315435244, -0.7308946003586243,
-0.719933808634778, -0.7099420694603396, -0.7007576189862448,
-0.6922919427279339, -0.6844442780857207, -0.6771213855599854,
-0.6702760807365848, -0.6630691008494978, -0.6563410178487175},
{-1.150901462321599, -1.0257244687586535, -0.9566345773919238,
-0.9040239001569716, -0.8636450410895122, -0.8320528057938645,
-0.8072387446309222, -0.7885604915836666, -0.7722728890184953,
-0.7579786655396674, -0.7446371134046785, -0.7325613143311784,
-0.7215815747431407, -0.7115722822200041, -0.7023709401491942,
-0.6938900060940796, -0.6860274226564798, -0.678690327631557,
-0.671831484647555, -0.6646096603271872, -0.6578659919487109},
{-1.1523468694040275, -1.027582279649323, -0.9585569455257428,
-0.9059194606070378, -0.8655020126780073, -0.8338663943022766,
-0.8090230473690099, -0.7903148360692285, -0.7740115664273617,
-0.7596935752344507, -0.7463295798561376, -0.7342329496914317,
-0.7232342144125141, -0.713207306564982, -0.7039890415617265,
-0.6954927960514397, -0.687615247771646, -0.6802639004954472,
-0.6733914785809247, -0.6661547747035002, -0.6593954592217415},
{-1.1537972780474774, -1.0294457769159635, -0.9604850469513622,
-0.9078206598132965, -0.8673644887112459, -0.8356853512914313,
-0.8108126354891283, -0.7920743504246275, -0.7757554175323094,
-0.7614135242374687, -0.7480270458008818, -0.7359095215115303,
-0.724891742627733, -0.7148471561431506, -0.7056119384778867,
-0.6971003259277495, -0.6892077666561818, -0.6818421179832512,
-0.6749560759953965, -0.667704457585387, -0.6609294323043287},
{-1.155252702395046, -1.031314977668444, -0.9624188983780186,
-0.909727514675069, -0.8692324854328035, -0.8375096922864032,
-0.8126075247328117, -0.7938390515437277, -0.7775044579075256,
-0.7631385273489286, -0.7497295255980134, -0.7375910443697649,
-0.7265541742981441, -0.716491844871598, -0.7072396460844175,
-0.6987126098247245, -0.6908049933736038, -0.6834249933081082,
-0.6765252908789989, -0.6692587220341011, -0.6624679238575482},
{-1.1567131567267097, -1.0331898991171329, -0.9643585163421449,
-0.911640042034378, -0.8711060191408251, -0.8393394329659714,
-0.814407730412313, -0.7956089565213915, -0.7792587036437908,
-0.7648686003058174, -0.7514370338931258, -0.739277533513814,
-0.7282215243085375, -0.7181413872867779, -0.7088721799100313,
-0.70032966132203, -0.6924069419619627, -0.685012540759999,
-0.6780991368668765, -0.6708175814637798, -0.6640109462914552},
{-1.1581786552251288, -1.0350705585296964, -0.9663039179567932,
-0.9135582588796751, -0.8729851062407761, -0.8411745888242876,
-0.8162132680417926, -0.7973840824988656, -0.7810181704035131,
-0.7666037580720513, -0.753149585662868, -0.7409690037657128,
-0.7298938075291517, -0.7197957967327966, -0.710509555155113,
-0.7019514945968695, -0.6940136258644998, -0.6866047735957181,
-0.6796776275505181, -0.672381049453179, -0.6655585111375331},
{-1.15964921228624, -1.0369569732392847, -0.9682551201121896,
-0.9154821821084624, -0.8748697632636322, -0.843015175903929,
-0.8180241538075279, -0.7991644467965671, -0.7827828741237681,
-0.7683440166356377, -0.7548671955546524, -0.7426654703995155,
-0.7315710389384549, -0.7214550879971284, -0.7121517867826697,
-0.7035781233407761, -0.6956250593666482, -0.6882017059533609,
-0.6812607770834802, -0.6739491393400385, -0.6671106311750918},
{-1.161124842184563, -1.0388491605690433, -0.9702121397085648,
-0.9174118287646706, -0.876760006683071, -0.8448612098763988,
-0.8198404031227255, -0.8009500665684754, -0.7845528308298526,
-0.7700893914416156, -0.7565898783414013, -0.7443669482072437,
-0.7332532336758959, -0.723119275060526, -0.7137988902513825,
-0.7052095614526479, -0.697241256210873, -0.689803351190676,
-0.6828485990672561, -0.6755218647267611, -0.6686673185358813},
{-1.1626055592996636, -1.0407471379112394, -0.9721749937898494,
-0.9193472159531666, -0.8786558530955517, -0.8467127067360707,
-0.8216620318262358, -0.8027409592186814, -0.7863280563506123,
-0.7718398980132406, -0.7583176487087258, -0.746073452553901,
-0.7349404069273078, -0.7247883725785869, -0.7154508812454878,
-0.7068458239464235, -0.6988622304443197, -0.6914097239459807,
-0.6844411075635435, -0.6770992391930122, -0.6702285849478358},
{-1.1640913781088784, -1.0426509228173018, -0.9741436994445394,
-0.9212883607960975, -0.8805573190029463, -0.8485696822053796,
-0.8234890554149388, -0.8045371421439995, -0.7881085665367209,
-0.7735955521102369, -0.7600505216178135, -0.7477849983342821,
-0.7366325734064958, -0.7264623946921347, -0.7171077741322733,
-0.7084869238560714, -0.7004879957457888, -0.6930208374642461,
-0.686038316522172, -0.6786812760019529, -0.671794442441751},
{-1.1655823130167846, -1.044560532761352, -0.9761182738284333,
-0.9232352804647235, -0.8824644211381383, -0.8504321522559621,
-0.8253214898850274, -0.8063386328485649, -0.7898943775926455,
-0.7753563697033314, -0.7617885120289429, -0.7495016008397215,
-0.7383297484038849, -0.7281413558494023, -0.7187695848215299,
-0.7101328762792036, -0.7021185663415963, -0.6946367059726981,
-0.6876402396765116, -0.680267989560889, -0.6733649032603353},
{-1.1670783785734784, -1.0464759853384749, -0.9780987341328,
-0.9251879922330772, -0.8843771762221877, -0.8523001330122497,
-0.827159351310911, -0.8081454488365125, -0.7916855053354084,
-0.7771223663348792, -0.7635316347686967, -0.7512232751605552,
-0.7400319470471004, -0.7298252708869768, -0.7204363279433892,
-0.7117836954057566, -0.7037539560205914, -0.6962573436985622,
-0.6892468911864853, -0.6818593927500842, -0.6749399790696771},
{-1.1685795893486102, -1.0483972981728584, -0.980085097691699,
-0.9271465133160746, -0.886295601013444, -0.8541736405131815,
-0.8290026552576819, -0.8099576075810546, -0.7934819657029948,
-0.7788935581938858, -0.7652799049283203, -0.7529500367190849,
-0.741739184414655, -0.7315141543313075, -0.7221080188310225,
-0.7134393953729159, -0.7053941788581142, -0.6978827642187753,
-0.6908582850046514, -0.6834554997276427, -0.6765196822279904},
{-1.1700859598850002, -1.0503244889978305, -0.9820773817500594,
-0.9291108611087111, -0.888219712352111, -0.8560526909232067,
-0.8308514180125712, -0.8117751270265217, -0.7952837748416641,
-0.7806699608963754, -0.767033337499015, -0.7546819004692225,
-0.7434514759015656, -0.7332080210044296, -0.7237846722682661,
-0.7150999910936662, -0.7070392489622463, -0.6995129821016235,
-0.6924744358857424, -0.6850563236885137, -0.6781040243367897},
{-1.1715975048200562, -1.0522575754575882, -0.9840756035955565,
-0.9310810529013906, -0.8901495269574298, -0.8579373003049113,
-0.8327056551361238, -0.8135980243841914, -0.7970909486048185,
-0.7824515906640954, -0.7687919473482907, -0.7564188818541879,
-0.7451688365445079, -0.7349068855492078, -0.7254663034646001,
-0.7167654970207877, -0.708689179877183, -0.7011480112632853,
-0.6940953571747741, -0.6866618790581924, -0.6796930174587033},
{-1.1731142389144225, -1.054196575450078, -0.9860797808432835,
-0.9330571063783282, -0.8920850619961129, -0.8598274848845904,
-0.8345653828728246, -0.8154263177648318, -0.7989035032123866,
-0.7842384634632253, -0.7705557497110931, -0.7581609960270725,
-0.7468912817321325, -0.73661076325061, -0.7271529274867135,
-0.71843592768073, -0.7103439864858956, -0.7027878660137503,
-0.6957210634072908, -0.688272179580963, -0.6812866743193808},
{-1.174636176788681, -1.0561415067313646, -0.9880899308463995,
-0.935039038740797, -0.8940263343047263, -0.8617232611049985,
-0.8364306173552905, -0.817260024825373, -0.8007214542531074,
-0.786030595545526, -0.7723247599533352, -0.7599082585393262,
-0.7486188268094338, -0.7383196688388125, -0.7288445589210824,
-0.7201112978455058, -0.7120036822652764, -0.7044325606375423,
-0.6973515687741383, -0.6898872388765085, -0.6828850064048311},
{-1.176163333279419, -1.0580923873258143, -0.9901060712491017,
-0.9370268676311753, -0.8959733607744056, -0.8636246451678744,
-0.8383013744432901, -0.8190991632645819, -0.8025448183070694,
-0.7878280029854068, -0.7740989929870921, -0.7616606847213916,
-0.7503514869940773, -0.7400336174086988, -0.7305412124824215,
-0.7217916223389693, -0.7136682819136695, -0.7060821093991763,
-0.6989868874716194, -0.6915070715776892, -0.6844880264334279},
{-1.1776957231313645, -1.0600492351577486, -0.9921282196337415,
-0.9390206107400445, -0.8979261587892324, -0.8655316537324325,
-0.8401776705686643, -0.8209437509494819, -0.8043736110203099,
-0.7896307022056135, -0.7758784641064267, -0.7634182896872517,
-0.7520892775164612, -0.741752624304354, -0.7322429030982676,
-0.7234769158385461, -0.7153377992544847, -0.7077365265877233,
-0.7006270342926655, -0.6931316909976886, -0.6860957468570632},
{-1.1792333612406765, -1.0620120681905973, -0.9941563936117745,
-0.9410202854987801, -0.8998847452430709, -0.8674443028121459,
-0.8420595215338835, -0.8227938056734274, -0.8062078484235826,
-0.7914387089249431, -0.7776631888109478, -0.7651810890756678,
-0.7538322140308082, -0.7434767045378976, -0.7339496454642358,
-0.7251671931171586, -0.717012248131141, -0.7093958265559195,
-0.7022720226668753, -0.6947611112100276, -0.6877081800093947},
{-1.1807762624894167, -1.0639809045978836, -0.9961906109401752,
-0.9430259099171963, -0.9018491374672521, -0.8693626092835984,
-0.8439469437635125, -0.8246493454225856, -0.8080475467340875,
-0.7932520399263012, -0.7794531822619319, -0.7669490983180367,
-0.7555803119366828, -0.7452058737480911, -0.7356614544296463,
-0.7268624693551828, -0.7186916435002786, -0.7110600239366249,
-0.7039218679710757, -0.6963953469658009, -0.6893253392481711},
{-1.1823244417719252, -1.065955762393969, -0.9982308894886955,
-0.945037501389379, -0.903819352636674, -0.8712865894949573,
-0.8458399534292766, -0.8265103881085452, -0.8098927217870369,
-0.7950707112149757, -0.7812484599617164, -0.7687223328557593,
-0.7573335864399269, -0.7469401469707009, -0.737378343965247,
-0.7285627593146273, -0.7203759996846202, -0.7127291330780281,
-0.7055765839377273, -0.6980344117382629, -0.690947236640568},
{-1.1838779141303348, -1.067936659866973, -1.0002772470061245,
-0.9470550779687983, -0.9057954078989496, -0.8732162602791504,
-0.8477385668329589, -0.8283769515201129, -0.8117433895786235,
-0.7968947397594093, -0.7830490371770793, -0.7705008083166831,
-0.7590920529910363, -0.7486795401082418, -0.7391003293769245,
-0.7302680779002912, -0.722065330794976, -0.7144031681036722,
-0.7072361848640867, -0.6996783199183483, -0.6925738860418278},
{-1.1854366945599395, -1.0699236151967852, -1.0023297014895434,
-0.9490786573596779, -0.9077773209628504, -0.875151638432726,
-0.8496428005655616, -0.8302490538853817, -0.8135995661532434,
-0.7987241415430617, -0.7848549297823411, -0.7722845399539437,
-0.7608557276553256, -0.750424068569373, -0.7408274249210081,
-0.7319784406599865, -0.7237596511831725, -0.7160821443558234,
-0.7089006863316172, -0.701327086198944, -0.6942053007096547},
{-1.1870007980910486, -1.0719166466651586, -1.0043882707732337,
-0.951108257481792, -0.9097651088723069, -0.8770927403274982,
-0.8515526703586147, -0.8321267127821557, -0.8154612674416057,
-0.8005589329504801, -0.786666152835096, -0.774073543419945,
-0.7626246253084901, -0.7521737480246884, -0.7425596447628777,
-0.7336938620137516, -0.7254589749718434, -0.7177660756424302,
-0.7105701017853789, -0.7029807242042807, -0.6958414934333632},
{-1.1885702399581533, -1.073915772766668, -1.006452973029809,
-0.9531438963831533, -0.9117587892706069, -0.8790395830537818,
-0.8534681930796069, -0.8340099464512605, -0.8173285095426763,
-0.8023991306617972, -0.7884827223570028, -0.7758678343743668,
-0.7643987616729646, -0.7539285944003495, -0.7442970040356158,
-0.7354143573929832, -0.7271633176478645, -0.7194549767773424,
-0.7122444456554149, -0.7046392487427511, -0.6974824786320823},
{-1.1901450351419953, -1.0759210117466864, -1.008523826207238,
-0.9551855919717127, -0.9137583794827151, -0.8809921832953478,
-0.8553893850976237, -0.8358987728006468, -0.8192013083898928,
-0.8042447511061255, -0.7903046536866896, -0.7776674286296839,
-0.7661781525075639, -0.7556886235806815, -0.7460395168345713,
-0.7371399415460473, -0.7288726928600227, -0.7211488631428438,
-0.713923733835145, -0.7063026742289367, -0.6991282700182637},
{-1.191725198948916, -1.0779323821834623, -1.0106008485890925,
-0.9572333623627856, -0.9157638972892528, -0.8829505580588375,
-0.8573162628090358, -0.8377932100174803, -0.8210796798302908,
-0.806095811330124, -0.7921319628867423, -0.7794723419174261,
-0.7679628132382277, -0.757453851459104, -0.7477871976734605,
-0.7388706301344428, -0.7305871159605886, -0.7228477487251439,
-0.7156079793430763, -0.7079710150446772, -0.7007788816417815},
{-1.1933107466065849, -1.0799499026097692, -1.0126840582806835,
-0.9592872256298506, -0.9177753602680241, -0.8849147245955464,
-0.8592488429412697, -0.8396932758705589, -0.8229636400128584,
-0.8079523272454026, -0.7939646653057935, -0.7812825893752233,
-0.7697527594327767, -0.7592242942419034, -0.7495400614579921,
-0.7406064380784301, -0.732306600449192, -0.7245516485108965,
-0.7172971979971408, -0.7096442863021366, -0.702434327266019},
{-1.194901693369502, -1.0819735915583806, -1.0147734736092389,
-0.9613471998227396, -0.9197927860441268, -0.8868846997256696,
-0.8611871418379451, -0.8415989887298565, -0.8248532050820359,
-0.809814315879521, -0.795802777103745, -0.7830981875658836,
-0.7715480070482954, -0.7609999682626949, -0.7512981223208044,
-0.7423473807639311, -0.7340311628367999, -0.7262605774994881,
-0.7189914042719465, -0.7113225019193123, -0.7040946221759441},
{-1.1964980546085826, -1.0840034676284631, -1.0168691128837963,
-0.9634133034005572, -0.9218161922235595, -0.8888605003630801,
-0.8631311759645541, -0.8435103662468464, -0.8267483905347035,
-0.8116817939098837, -0.7976463139257248, -0.7849191516897918,
-0.7733485712178663, -0.7627808894403643, -0.7530613948902101,
-0.744093472957502, -0.7357608161710232, -0.7279745502091828,
-0.7206906124147281, -0.7130056767327915, -0.7057597800467192},
{-1.1980998456965608, -1.0860395496601996, -1.0189709944288552,
-0.9654855544886232, -0.923845596836145, -0.8908421440828533,
-0.865080962286811, -0.8454274268433437, -0.8286492126153462,
-0.8135547779429544, -0.7994952918434137, -0.7867454980532784,
-0.775154467687571, -0.7645670746751421, -0.7548298938454536,
-0.7458447299677573, -0.7374955759833028, -0.7296935818012571,
-0.722394837441243, -0.7146938259647868, -0.7074298159895989},
{-1.1997070820475528, -1.0880818562982313, -1.0210791367517231,
-0.9675639713495912, -0.925881017442407, -0.8928296479407436,
-0.8670365174421022, -0.8473501884573125, -0.830555687274682,
-0.8154332848534978, -0.8013497266520062, -0.788577242366955,
-0.7769657123653815, -0.7663585397049246, -0.756603633868508,
-0.7476011672752065, -0.7392354570829411, -0.7314176870677329,
-0.7241040941062238, -0.7163869641362908, -0.7091047451440318},
{-1.2013197791034145, -1.0901304064273063, -1.0231935584142775,
-0.9696485725726234, -0.9279224722313302, -0.894823029341751,
-0.8689978580823663, -0.8492786692540903, -0.832467830546193,
-0.8173173314744417, -0.803209634628729, -0.790414400613372,
-0.7787823207017937, -0.7681553018637715, -0.758382629515836,
-0.7493628003212507, -0.7409804750741387, -0.733146881580069,
-0.7258183977273802, -0.7180851064613307, -0.7107845823311436},
{-1.202937952409684, -1.0921852189067067, -1.0253142779001791,
-0.9717393763376094, -0.9299699789835358, -0.896822305528076,
-0.8709650008167955, -0.8512128872425819, -0.8343856583151137,
-0.8192069344913762, -0.8050750317006532, -0.7922569888469297,
-0.780604308403781, -0.7699573774934834, -0.7601668961106043,
-0.7511296441452942, -0.742730643763025, -0.734881179570948,
-0.7275377620544532, -0.7197882681784904, -0.7124693427467719},
{-1.2045616174668794, -1.094246312629366, -1.0274413137867668,
-0.9738364011909653, -0.9320235555987892, -0.8988274938819814,
-0.8729379624646754, -0.8531528605526546, -0.836309186647668,
-0.8211021106744738, -0.806945933735733, -0.7941050231729605,
-0.7824316909091067, -0.7717647835188473, -0.7619564481128691,
-0.7529017135848335, -0.7444859788438407, -0.7366205965363406,
-0.7292622029435734, -0.7214964636368677, -0.7141590409710261},
{-1.206190789962875, -1.0963137066992203, -1.029574684876934,
-0.9759396657991601, -0.9340832203051832, -0.9008386120167415,
-0.8749167601536101, -0.855098607526088, -0.8382384312162685,
-0.8230028772859441, -0.8088223574295625, -0.795958519596752,
-0.7842644841484798, -0.7735775367427777, -0.7637512998107923,
-0.7546790241867711, -0.7462464954187453, -0.7383651479385662,
-0.7309917350776232, -0.7232097085479836, -0.7158536930801347},
{-1.2078254854918669, -1.0983874200637729, -1.0317144098735298,
-0.9780491885176161, -0.9361489911707395, -0.9028556773209857,
-0.8769014106392206, -0.857050145962603, -0.8401734087201476,
-0.8249092509340699, -0.810704318637363, -0.797817494722949,
-0.7861027033441133, -0.7753956542674132, -0.7655514671705532,
-0.7564615914061505, -0.7480122083534297, -0.7401148482895223,
-0.7327263732122447, -0.7249280183486917, -0.7175533147892565},
{-1.2094657197067136, -1.1004674718924434, -1.0338605075712621,
-0.9801649881574122, -0.9382208863207779, -0.9048787077981615,
-0.8788919307580727, -0.8590074945414017, -0.8421141344360876,
-0.82682124852181, -0.8125918340165299, -0.7996819641457478,
-0.787946364536765, -0.7772191531275894, -0.7673569646813121,
-0.7582494306716399, -0.7497831332648275, -0.7418697131797671,
-0.7344661326933419, -0.7266514082639333, -0.719257921071403},
{-1.2111115084285302, -1.1025538814019455, -1.036012996786667,
-0.9822870833140769, -0.9402989240770694, -0.9069077206477232,
-0.8808883374031211, -0.860970670874849, -0.8440606248623226,
-0.828738887329564, -0.814484919475035, -0.8015519445871178,
-0.7897954829722948, -0.7790480500461854, -0.769167807760823,
-0.7600425567852653, -0.7515592848403685, -0.7436297577114601,
-0.7362110279746048, -0.7283798929429395, -0.720967527715402},
{-1.212762867402489, -1.1046466677171338, -1.0381718964899846,
-0.9844154928969147, -0.9423831226376933, -0.9089427338121823,
-0.8828906476583143, -0.8629396934220495, -0.8460128959368376,
-0.8306621842439199, -0.8163835918985569, -0.8034274522542546,
-0.791650074565041, -0.7808823629457038, -0.7709840119014189,
-0.7618409858241648, -0.7533406790662411, -0.745394997375115,
-0.7379610746529579, -0.73011348908949, -0.7226821513850155},
{-1.2144198124865397, -1.106745850185689, -1.0403372256487273,
-0.9865502355787612, -0.9444735004490212, -0.9109837651403723,
-0.8848988786639893, -0.864914580716686, -0.8479709636085317,
-0.8325911563933914, -0.8182878674651874, -0.8053085039891812,
-0.793510154597243, -0.7827221088173246, -0.7728055917950769,
-0.7636447323211542, -0.7551273298849992, -0.7471654475575633,
-0.7397162872348417, -0.7318522105906595, -0.7244018067758589},
{-1.2160823595254442, -1.1088514482680694, -1.0425090034386812,
-0.9886913301770619, -0.9465700756372826, -0.9130308323356076,
-0.8869130473349287, -0.8668953505766694, -0.849934844184645,
-0.8345258208682935, -0.8201977627904853, -0.8071951162228288,
-0.7953757391978797, -0.7845673048759636, -0.7746325629223065,
-0.7654538120741563, -0.7569192545406622, -0.748941123521945,
-0.7414766814245013, -0.7335960745340344, -0.7261265114402704},
{-1.2177505244681015, -1.1109634812528384, -1.0446872487464134,
-0.9908387957266314, -0.9486728669680815, -0.9150839536468993,
-0.8889331709788166, -0.8688820214065345, -0.8519045538641876,
-0.836466195122739, -0.8221132944545388, -0.8090873049413858,
-0.7972468434163602, -0.7864179687685464, -0.7764649412756626,
-0.7672682404245279, -0.7587164671194842, -0.7507220407842397,
-0.7432422720621616, -0.7353450958362373, -0.7278562809033247},
{-1.219424323250223, -1.1130819687068652, -1.0468719808295646,
-0.9929926509785219, -0.9507818929005225, -0.9171431466402282,
-0.8909592664103911, -0.8708746115262329, -0.8538801083986982,
-0.8384122958022999, -0.8240344789292067, -0.8109850871560411,
-0.7991234830869871, -0.788274117929177, -0.7783027424165994,
-0.769088032473519, -0.7605189833320765, -0.7525082144920816,
-0.7450130740808163, -0.737099289987782, -0.7295911314486148},
{-1.2211037719102933, -1.1152069301051597, -1.0490632189621465,
-0.9951529152540388, -0.952897171812765, -0.9192084295873428,
-0.8929913510464758, -0.8728731391520341, -0.8558615245638066,
-0.8403641406694078, -0.8259613334730602, -0.8128884796578859,
-0.8010056739931315, -0.7901357701421148, -0.7801459817228533,
-0.7709132041782141, -0.7623268190382078, -0.754299660660763,
-0.7467891034493732, -0.7388586727811344, -0.731331080010932},
{-1.2227888865213572, -1.1173383850964456, -1.0512609823563253,
-0.9973196074552106, -0.9550187225249829, -0.9212798205480794,
-0.8950294421656508, -0.8748776228767383, -0.8578488184266462,
-0.8423217466061033, -0.8278938742687387, -0.8147974993244134,
-0.8028934317226231, -0.7920029424767563, -0.7819946747240465,
-0.7727437705761986, -0.7641399897283918, -0.7560963942596572,
-0.7485703747661319, -0.740623259669519, -0.7330761423327203},
{-1.2244796831841995, -1.1194763533985679, -1.053465290382519,
-0.9994927467387242, -0.9571465634244305, -0.9233573375304331,
-0.8970735568727832, -0.8768880806192101, -0.859842006033432,
-0.8442851314421205, -0.829832118507511, -0.816712162722979,
-0.8047867718096313, -0.7938756529274542, -0.7838488383540607,
-0.7745797471488913, -0.765958510530254, -0.7578984309920997,
-0.7503569036543922, -0.7423930662971543, -0.7348263361272984},
{-1.2261761780523557, -1.1216208546757116, -1.0556761624120554,
-1.0016723523294786, -0.9592807138351418, -0.9254409993382069,
-0.8991237127765999, -0.8789045312842063, -0.8618411043189553,
-0.8462543122441275, -0.8317760827931124, -0.8186324869893724,
-0.806685710340389, -0.7957539189837917, -0.7857084873912754,
-0.7764211499188605, -0.7677823981875918, -0.7597057877155748,
-0.7521487055782927, -0.7441681091531791, -0.7365816771234677},
{-1.2278783873384782, -1.1237719086639117, -1.0578936178799268,
-1.0038584433004871, -0.961421191829686, -0.9275308235210105,
-0.9011799266045273, -0.8809269926705383, -0.8638461285445374,
-0.848229306412577, -0.8337257837119978, -0.8205584886873112,
-0.8085902627899486, -0.7976377581908309, -0.78757363798195,
-0.7782679934880434, -0.769611667056779, -0.7615184778624098,
-0.7539457947314077, -0.7459484023383993, -0.7383421815193287},
{-1.2295863273548093, -1.125929535414798, -1.0601176764275806,
-1.0060510392304423, -0.9635680168103136, -0.9296268288644569,
-0.903242216117178, -0.8829554837893738, -0.8658570962415979,
-0.8502101316908011, -0.8356812390620689, -0.8224901852918265,
-0.8105004449698754, -0.799527188411048, -0.7894443071863861,
-0.7801202938990173, -0.7714463337697453, -0.763336518606593,
-0.7557481884305162, -0.7477339624165324, -0.7401078671755386},
{-1.2313000142353303, -1.1280937546698624, -1.0623483574372585,
-1.008250159158706, -0.96572120723431, -0.9317290335739017,
-0.9053105987304662, -0.8849900227060061, -0.867874023362674,
-0.8521968053046294, -0.8376424658945325, -0.8244275936458507,
-0.8124162724370763, -0.8014222271613107, -0.7913205101003769,
-0.7819780669778993, -0.7732864137760771, -0.7651599252894812,
-0.757555901142041, -0.7495248052146053, -0.7418787497517769},
{-1.2330194645292067, -1.130264586496196, -1.0645856807113887,
-1.0104558227312737, -0.9678807823902389, -0.9338374561766614,
-0.9073850918712196, -0.8870306280214209, -0.8698969265979031,
-0.8541893454203091, -0.8396094805430039, -0.826370731674615,
-0.8143377621727268, -0.803322892335018, -0.7932022635795875,
-0.7838413281342582, -0.7751319234193943, -0.7669887136471516,
-0.7593689485493087, -0.7513209464741522, -0.7436548480527563},
{-1.2347446945277625, -1.1324420510027267, -1.066829665919613,
-1.0126680493831373, -0.9700467613329238, -0.9359521154292452,
-0.909465712875317, -0.8890773183038618, -0.8719258224746227,
-0.8561877688316599, -0.8415823000714227, -0.8283196154470716,
-0.8162649288879038, -0.8052292007632786, -0.7950895838048382,
-0.7857100933279071, -0.7769828775944916, -0.7688228995375539,
-0.761187345129656, -0.7531224009107973, -0.7454361763066117},
{-1.2364757206810282, -1.1346261681846954, -1.0690803327397589,
-1.0148868585465607, -0.9722191630517045, -0.9380730295833928,
-0.9115524794087833, -0.8911301123762314, -0.8739607278721451,
-0.8581920941678618, -0.8435609427042436, -0.8302742632013178,
-0.8181977897866091, -0.8071411707460356, -0.7969824876172424,
-0.787584377908388, -0.7788392935308366, -0.7706624996008031,
-0.7630111088565172, -0.7549291851446469, -0.7472227530452074},
{-1.238212559452677, -1.1368169582901828, -1.071337700966069,
-1.017112269872996, -0.9743980065113647, -0.9402002175420421,
-0.9136454084091383, -0.8931890280591688, -0.8760016587775681,
-0.86020233846466, -0.845545424721422, -0.8322346912063949,
-0.8201363598254829, -0.8090588189088521, -0.7988809907692485,
-0.7894641977873107, -0.780701185874932, -0.7725075278231088,
-0.7648402525992424, -0.7567413150500215, -0.7490145949614089},
{-1.239955227515111, -1.139014441627296, -1.0736017905765038,
-1.0193443030684648, -0.9765833111050597, -0.9423336980935346,
-0.9157445182727315, -0.8952540847139971, -0.8780486325995298,
-0.8622185197009458, -0.8475357641773371, -0.8342009182551919,
-0.8220806559747871, -0.8109821636298875, -0.8007851097236198,
-0.7913495689172123, -0.7825685715670261, -0.7743580012138409,
-0.7666747944731469, -0.7585588047950296, -0.7508117182114802},
{-1.2417037412969876, -1.141218638455939, -1.0758726214371563,
-1.021582977552498, -0.9787750960331323, -0.9444734894113935,
-0.9178498262144785, -0.8973253006970481, -0.8801016659699599,
-0.8642406559638403, -0.8495319778749035, -0.8361729611569899,
-0.8240306944999247, -0.8129112219012313, -0.8026948615442961,
-0.7932405070860113, -0.7844414665742079, -0.7762139360384026,
-0.7685147491556563, -0.7603816720384202, -0.7526141402813664},
{-1.2434581175684798, -1.1434295691215084, -1.0781502135378105,
-1.023828313465856, -0.9809733807887824, -0.9466196112789476,
-0.9199613499249608, -0.8994026945010773, -0.8821607758281971,
-0.866268765194036, -0.8515340833027949, -0.8381508375223348,
-0.8259864914707578, -0.8148460110205633, -0.8046102632451948,
-0.7951370284354198, -0.7863198872255452, -0.7780753478145925,
-0.7703601325683849, -0.7622099309901387, -0.7544218783223187},
{-1.2452183729333228, -1.1456472541367475, -1.0804345869992176,
-1.0260803303754074, -0.9831781845668957, -0.9487720817442096,
-0.9220791068682956, -0.9014862852218357, -0.8842259787616058,
-0.8683028648902109, -0.853542098529033, -0.8401345651955126,
-0.8279480636820153, -0.8167865481318586, -0.8065313305269228,
-0.7970391490052862, -0.7882038489060506, -0.7799422523057729,
-0.7722109606838785, -0.7640435987468663, -0.75623494897809},
{-1.2469845241503208, -1.1478717139307264, -1.0827257617702344,
-1.0283390482209143, -0.9853895266269319, -0.9509309201903307,
-0.9242031148760361, -0.9035760912265687, -0.8862972921597247,
-0.8703429733686789, -0.8555560402774063, -0.8421241611158621,
-0.8299154270580402, -0.8187328504254765, -0.8084580805789301,
-0.798946883809549, -0.7900933687087672, -0.7818146662448271,
-0.7740672486779658, -0.7658826893166406, -0.7580533698383078},
{-1.248756588033757, -1.1501029692608427, -1.0850237581707916,
-1.0306044869812467, -0.9876074268304365, -0.9530961454829594,
-0.9263333915787371, -0.9056721317056144, -0.8883747328773097,
-0.8723891087356606, -0.8575759263358123, -0.8441196443272929,
-0.8318885988310285, -0.820684935344616, -0.8103905300395127,
-0.8008602504996816, -0.7919884627353895, -0.7836926052168565,
-0.7759290144676925, -0.7677272199744039, -0.7598771580560424},
{-1.2505345814129214, -1.1523410406480252, -1.0873285964235038,
-1.0328766663997158, -0.9898319044941672, -0.955267776565961,
-0.9284699549280049, -0.9077744248779709, -0.8904583176454253,
-0.8744412892874607, -0.8596017746940561, -0.8461210316163488,
-0.8338675955583312, -0.8226428192956519, -0.8123286964473664,
-0.8027792645661975, -0.7938891471003444, -0.785576085354478,
-0.7777962716463662, -0.7695772055376437, -0.7617063302986935},
{-1.2523185211707641, -1.1545859488160204, -1.0896402968137409,
-1.0351556069826984, -0.9920629793568878, -0.9574458332490394,
-0.9306128227663066, -0.9098829901840872, -0.8925480641082686,
-0.8764995327674114, -0.8616336026552744, -0.8481283410910692,
-0.8358524340110307, -0.824606519738154, -0.8142725958259689,
-0.8047039423854585, -0.7957954384182813, -0.787465123068614,
-0.7796690385785041, -0.7714326627556147, -0.7635409051108581},
{-1.2541084241433964, -1.156837714572248, -1.0919588795768504,
-1.0374413282434034, -0.9943006709427209, -0.9596303338475991,
-0.9327620124286113, -0.9119978459702907, -0.8946439890660258,
-0.8785638573635879, -0.8636714279218722, -0.850141590538442,
-0.83784313031083, -0.8265760531139676, -0.8162222447026579,
-0.8066342996371532, -0.7977073526926688, -0.7893597338716063,
-0.7815473291120725, -0.7732936057091138, -0.7653808991653932},
{-1.2559043075539194, -1.159096358763236, -1.094284365245585,
-1.0397338509710607, -0.9965449991750575, -0.9618212981322358,
-0.9349175423431006, -0.9141190116361031, -0.8967461101201479,
-0.8806342817233599, -0.8657152689584109, -0.8521607978127577,
-0.8398397029923217, -0.8285514371546014, -0.8181776618421281,
-0.8085703534379718, -0.7996249074749358, -0.7912599353821861,
-0.783431162006309, -0.7751600525843969, -0.7672263303429645},
{-1.2577061882193448, -1.1613619023555657, -1.0966167741444224,
-1.04203319496537, -0.9987959838126699, -0.9640187452223472,
-0.9370794300612033, -0.9162465059944225, -0.8988544440935584,
-0.8827108242448958, -0.8677651424823125, -0.8541859814822601,
-0.8418421676051366, -0.8305326870195131, -0.8201388616271288,
-0.8105121198805136, -0.801548117718994, -0.793165741742996,
-0.7853205514547881, -0.7770320165709563, -0.7690772156929597},
{-1.2595140833291225, -1.1636343663230946, -1.0989561269998376,
-1.0443393805217056, -1.0010536443387537, -0.9662226947484669,
-0.9392476937491665, -0.9183803481100767, -0.9009690085240436,
-0.8847935027561107, -0.869821067389239, -0.8562171594739993,
-0.8438505425965559, -0.832519821356982, -0.8221058628496394,
-0.8124596151483274, -0.8034770011818182, -0.7950771711093694,
-0.7872155145796569, -0.7789095156040275, -0.7709335743020347},
{-1.2613280100117663, -1.1659137717570047, -1.1013024442836468,
-1.0466524281873717, -1.003318001327898, -0.9684331659091185,
-0.9414223513658726, -0.9205205570542603, -0.9030898212913598,
-0.8868823363682168, -0.8718830614634498, -0.8582543494594574,
-0.8458648442774575, -0.83451285564297, -0.824078681969695,
-0.8144128564763378, -0.8054115748072945, -0.7969942388626805,
-0.7891160672352271, -0.7807925653723942, -0.7727954230012983},
{-1.263147985426258, -1.1682001397466593, -1.1036557466977683,
-1.04897235819044, -1.005589074299678, -0.9706501780628969,
-0.9436034204709358, -0.9226671515789349, -0.9052168986700053,
-0.8889773431837966, -0.8739511425028468, -0.8602975697795046,
-0.8478850905721629, -0.836511806353883, -0.826057335600126,
-0.8163718597279512, -0.8073518536020856, -0.7989169619941094,
-0.7910222256014094, -0.7826811808117782, -0.7746627799460839},
{-1.2649740268407186, -1.170493491536945, -1.106016054905922,
-1.0512991912473808, -1.007866883249335, -0.9728737511986765,
-0.9457909197199115, -0.924820151244603, -0.9073502593282683,
-0.8910785417683655, -0.8760253285263389, -0.8623468390596827,
-0.8499112988174602, -0.8385166906355153, -0.828041840941296,
-0.8183366420053062, -0.8092978559579933, -0.8008453560778435,
-0.7929340076207154, -0.7845753779274673, -0.776535663391769},
{-1.2668061514764304, -1.1727938484127662, -1.1083833897209843,
-1.0536329476790343, -1.0101514485968437, -0.975103904504067,
-0.9479848669670901, -0.9269795750433332, -0.9094899200899818,
-0.8931859506337787, -0.8781056381858434, -0.8644021751952096,
-0.8519434867430391, -0.8405275250242994, -0.8300322153118032,
-0.8203072200285533, -0.8112495979912637, -0.8027794386562164,
-0.7948514281051757, -0.7864751737524784, -0.7784140908479458},
{-1.2686443767702258, -1.1751012316663036, -1.1107577720149493,
-1.0559736480354331, -1.0124427900582305, -0.9773406577314745,
-0.950185280329606, -0.9291454421136223, -0.9116358982582824,
-0.8952995886766075, -0.8801920891037298, -0.8664635958848521,
-0.8539816713637265, -0.8425443255437131, -0.8320284759174683,
-0.8222836098702828, -0.8132070964475133, -0.804719225214285,
-0.7967745043533796, -0.7883805825986201, -0.7802980799042416},
{-1.2704887201152815, -1.177415662779822, -1.1131392226770913,
-1.0583213131303637, -1.0147409285009417, -0.9795840312208384,
-0.9523921783056721, -0.9313177722633554, -0.9137882127361081,
-0.8974194747115689, -0.8822847004967116, -0.8685311209374049,
-0.8560258712968789, -0.8445671100234904, -0.8340306396312371,
-0.824265829534852, -0.8151703687253757, -0.8066647326522798,
-0.7987032526580151, -0.7902916226921661, -0.782187649194384},
{-1.2723391988488402, -1.179737163196478, -1.115527762457532,
-1.0606759634147238, -1.017045883562787, -0.9818340437304869,
-0.9546055784176133, -0.9334965841135272, -0.915946879807052,
-0.8995456264619861, -0.8843834891940787, -0.8706047671439592,
-0.858076103935673, -0.8465958938304539, -0.8360387225566228,
-0.8262538945618871, -0.8171394304645219, -0.8086159776157729,
-0.8006376897756127, -0.7922083074190596, -0.7840828159296507},
{-1.2741958306050947, -1.1820657545904396, -1.1179234128649114,
-1.0630376199505918, -1.0193576759393181, -0.9840907158823029,
-0.9568254995865573, -0.935681897163704, -0.9181119178547306,
-0.9016780638185082, -0.8864884749291377, -0.8726845536111796,
-0.8601323866187158, -0.8486306936065375, -0.838052742772561,
-0.8282478219571203, -0.8191142996711278, -0.8105729765757133,
-0.8025778317878576, -0.7941306539032666, -0.7859835979706986},
{-1.2760586327958663, -1.1844014584085016, -1.1203261945984195,
-1.0654063032925478, -1.021676325845874, -0.9863540674632532,
-0.9590519600824337, -0.9378737315055332, -0.9202833444387579,
-0.9038168058232259, -0.8885996755489032, -0.8747704985180462,
-0.8621947388237459, -0.8506715265702951, -0.8400727168227604,
-0.8302476300650596, -0.8210949930053175, -0.8125357457556674,
-0.804523696002434, -0.7960586784229235, -0.7878900142768543},
{-1.2779276231067342, -1.1867442965312875, -1.122736128937504,
-1.0677820346536464, -1.0240018536960633, -0.9886241179865465,
-0.9612849781569821, -0.9400721059537318, -0.9224611776498932,
-0.9059618704513923, -0.8907171097598621, -0.8768626212495292,
-0.8642631778457144, -0.8527184094182303, -0.8420986627770617,
-0.832253334523557, -0.8230815278238879, -0.8145043036493007,
-0.8064752989630506, -0.7979923965503986, -0.7898020820302918},
{-1.2798028192114543, -1.1890942906402415, -1.1251532371179565,
-1.070164834735806, -1.02633428050558, -0.9909008880613328,
-0.9635245724039123, -0.9422770401670277, -0.9246454348904081,
-0.9081132763794812, -0.8928407960975164, -0.8789609387258679,
-0.8663377219945687, -0.8547713583920995, -0.8441305967917287,
-0.8342649530986819, -0.8250739208160667, -0.8164786642591935,
-0.8084326567040989, -0.7999318239853892, -0.7917198189825285},
{-1.2816842387264842, -1.1914514626678283, -1.127577540414677,
-1.0725547245365306, -1.028673626442469, -0.9931843976137316,
-0.965770761233216, -0.9444885541079202, -0.9268361343238212,
-0.9102710435654444, -0.8949707531974127, -0.8810654706830974,
-0.868418390471561, -0.8568303913798445, -0.8461685362944991,
-0.8362825022031757, -0.8270721887438413, -0.8184588472577161,
-0.8103957869825535, -0.8018769772243104, -0.7936432430924469},
{-1.283571899427443, -1.1938158344191834, -1.1300090601262127,
-1.074951725300707, -1.0310199121104233, -0.9954746664952836,
-0.9680235629448362, -0.9467066667903055, -0.9290332941154702,
-0.9124351906120864, -0.8971069997023733, -0.8831762351692305,
-0.8705052009281644, -0.8588955240738869, -0.8482124980218941,
-0.8383060001360718, -0.8290763495442661, -0.8204448671331193,
-0.8123647061074735, -0.8038278728345176, -0.7955723721388495},
{-1.2854658191827184, -1.1961874280350457, -1.1324478178858044,
-1.0773558581777252, -1.033373158390532, -0.9977717152478363,
-0.9702829966381614, -0.9489313983067404, -0.9312369315794058,
-0.9146057364450826, -0.8992495545971906, -0.8852932505651552,
-0.8725981722236611, -0.8609667736418487, -0.850262499985547,
-0.8403354628480884, -0.8310864196610055, -0.8224367425627861,
-0.8143394302478555, -0.8057845248531521, -0.7975072233348328},
{-1.2873660158620623, -1.1985662656215936, -1.1348938350329263,
-1.0797671440541308, -1.0357333861293228, -1.0000755639384806,
-0.9725490810205883, -0.9511627684387349, -0.9334470654830511,
-0.9167827003511775, -0.9013984365556098, -0.8874165361467021,
-0.8746973232991877, -0.8630441572458949, -0.8523185580761492,
-0.8423709080507251, -0.8331024167309806, -0.8244344897484552,
-0.816319977877356, -0.8077469509698858, -0.7994478163200256},
{-1.289272507278838, -1.200952369141305, -1.1373471330689426,
-1.0821856045859022, -1.038100615825897, -1.002386233123616,
-0.9748218344620909, -0.9534007965494311, -0.935663713287795,
-0.9189661009968404, -0.9035536641404178, -0.8895461096217332,
-0.8768026735087915, -0.8651276922373654, -0.854380690596372,
-0.8444123535209656, -0.8351243584183976, -0.8264381258231879,
-0.8183063652813871, -0.809715166749811, -0.8013941657536634},
{-1.2911853115278973, -1.2033457609322795, -1.1398077338189978,
-1.0846112608551266, -1.0404748690089036, -1.0047037428766998,
-0.977101276043868, -0.9556455032789017, -0.9378868938911182,
-0.9211559583345661, -0.9057152569785103, -0.8916819908627076,
-0.8789142414971138, -0.8672173961385852, -0.8564489150321606,
-0.8464598165028292, -0.8371522611432738, -0.82844766794733,
-0.8202986091728235, -0.8116891887821112, -0.8033462917355791},
{-1.29310444652765, -1.2057464632516712, -1.1422756588517586,
-1.0870441343913626, -1.0428561660191917, -1.007028114087916,
-0.9793874245906409, -0.9578969077283546, -0.9401166251063842,
-0.923352290834373, -0.9078832335108018, -0.8938241972282412,
-0.8810320458978822, -0.8693132846583467, -0.8585232474233635,
-0.8485133137019147, -0.8391861417312612, -0.830463132720979,
-0.822296725715205, -0.8136690314313455, -0.8053042110004753},
{-1.2950299304361579, -1.2081544985785513, -1.1447509299350713,
-1.0894842466423142, -1.0452445282326153, -1.0093593667115783,
-0.9816802992399971, -0.960155030682472, -0.942352924923398,
-0.9255551185779041, -0.910057612669334, -0.8959727488363569,
-0.883156106556271, -0.8714153772416466, -0.8606037057343201,
-0.8505728640648158, -0.8412260194199916, -0.8324845398274192,
-0.8243007333094283, -0.8156547134985885, -0.8072679425131355},
{-1.2969617813687364, -1.2105698893137742, -1.1472335689886677,
-1.0919316188446828, -1.0476399766430404, -1.0116975215296407,
-0.9839799190249323, -0.9624198915616944, -0.944595812154148,
-0.9277644599369523, -0.9122384135898756, -0.8981276631984656,
-0.8852864432137721, -0.8735236899228767, -0.8626903072545247,
-0.8526384839824459, -0.8432719097854715, -0.8345119028890622,
-0.8263106475642417, -0.8176462489100231, -0.8092375023970817},
{-1.298900017457072, -1.2129926578654704, -1.149723597927732,
-1.094386273039163, -1.0500425323416493, -1.014042599500499,
-0.9862863032158202, -0.9646915108314715, -0.9468453054887505,
-0.9299803348640125, -0.914425655731975, -0.9002889598723414,
-0.8874230753790471, -0.875638241022898, -0.8647830694699223,
-0.8547101912190556, -0.8453238317251817, -0.8365452412599552,
-0.8283264875444729, -0.8196436546313635, -0.8112129090604867},
{-1.3008446569247099, -1.2154228269600935, -1.1522210385865037,
-1.0968482303660494, -1.052452216711572, -1.0163946205284446,
-0.9885994703136021, -0.9669699080614009, -0.9491014225186518,
-0.9322027619218716, -0.916619357694799, -0.902456657437142,
-0.8895660212874645, -0.8777590476238402, -0.866882009042456,
-0.8567880030277593, -0.8473818014135759, -0.8385845718657947,
-0.8303482676601561, -0.8216469464150578, -0.813194180609571},
{-1.3027957182071077, -1.2178604192995408, -1.1547259132867111,
-1.099317512916059, -1.0548690508130676, -1.0187536062167055,
-0.990919440282596, -0.9692551039415775, -0.9513641827015817,
-0.9344317620507354, -0.9188195397127856, -0.9046307745829836,
-0.8917153027250606, -0.8798861280047277, -0.8689871448696067,
-0.8588719385206787, -0.8494458380337164, -0.8406299131256674,
-0.8323760076309554, -0.8236561411504226, -0.8151813339482032},
{-1.3047532194941596, -1.2203054574511043, -1.157238243898064,
-1.101794142475228, -1.0572930563603222, -1.0211195766269157,
-0.9932462326351015, -0.9715471187300864, -0.9536336042074254,
-0.9366673533404537, -0.9210262195138057, -0.9068113303783321,
-0.8938709378398926, -0.8820194998261286, -0.8710984932076826,
-0.860962014477991, -0.8515159565431532, -0.842681280695615,
-0.8344097235476511, -0.8256712542333844, -0.8171743865405006},
{-1.3067171792490626, -1.222757964404991, -1.1597580527832179,
-1.104278140349379, -1.0597242542271488, -1.0234925529248358,
-0.9955798661085282, -0.9738459727186637, -0.9559097055662278,
-0.9389095551596256, -0.9232394169612235, -0.9089983436424518,
-0.8960329478431959, -0.8841591808395606, -0.8732160715990176,
-0.8630582482164755, -0.853592177034443, -0.8447386938714772,
-0.8364494315210322, -0.8276923025350698, -0.8191733562052832},
{-1.3086876159791245, -1.2252179630422688, -1.162285362235707,
-1.1067695291130804, -1.0621626664069481, -1.025872556185277,
-0.997920361100114, -0.9761516860789925, -0.9581925064503594,
-0.9411583879245882, -0.9254591519911628, -0.9111918331345805,
-0.8982013527111121, -0.8863051895932585, -0.8753398980970815,
-0.8651606592247845, -0.8556745149944618, -0.8468021696462529,
-0.8384951507850928, -0.8297193025282468, -0.8211782610433147},
{-1.3106645480843326, -1.2276854762867515, -1.1648201946545669,
-1.109268330164923, -1.064608314135512, -1.0282596068664134,
-1.0002677365564523, -0.9784642792801606, -0.9604820247732277,
-0.9434138705728401, -0.9276854433519475, -0.913391818636228,
-0.9003761719977774, -0.888457544035191, -0.877469990071404,
-0.8672692644340714, -0.8577629901155888, -0.8488717250711488,
-0.8405468964429019, -0.831752270252764, -0.8231891182640538},
{-1.3126479942288825, -1.2301605271850349, -1.167362572422462,
-1.111774566135864, -1.0670612192789122, -1.0306537265769293,
-1.0026220121426377, -0.9807837731423206, -0.962778280092607,
-0.9456760228749772, -0.9299183108123543, -0.9155983177461167,
-0.9025574268816854, -0.8906162627135927, -0.879606365590007,
-0.8693840817177261, -0.8598576194817724, -0.8509473789545154,
-0.8426046882323135, -0.8337912218466954, -0.8252059448041109},
{-1.3146379730110311, -1.232643138975618, -1.1699125179957264,
-1.1142882586300402, -1.0695214031229625, -1.0330549358732242,
-1.0049832083450383, -0.9831101878753543, -0.9650812915042479,
-0.9479448645834054, -0.9321577732480364, -0.917811350132979,
-0.9047451376845856, -0.892781363631002, -0.8817490423989511,
-0.8715051297458558, -0.8619584201260295, -0.8530291475744889,
-0.8446685425060423, -0.8358361743321439, -0.8272287588915788},
{-1.3166345030817865, -1.2351333346805404, -1.172470054081714,
-1.1168094298800497, -1.0719888874991739, -1.0354632557327932,
-1.007351344673225, -0.9854435439701774, -0.9673910777601122,
-0.9502204149030149, -0.9344038504732453, -0.9200309348889277,
-0.9069393234640302, -0.8949528653192829, -0.883898037545805,
-0.8736324256333319, -0.8640654094961064, -0.8551170490391087,
-0.8467384759787819, -0.8378871436761983, -0.8292575773975841},
{-1.3186376032358567, -1.2376311378111495, -1.175035203380503,
-1.119338102369511, -1.0744636947101753, -1.0378787083045609,
-1.009726441428029, -0.9877838629072357, -0.9697076587799529,
-0.9525026941646502, -0.9366565618165623, -0.922257090698622,
-0.9091400068573421, -0.8971307865231211, -0.8860533701390523,
-0.8757659887414775, -0.8661786070060771, -0.8572111029588996,
-0.848814506918643, -0.8399441466881399, -0.8312924174351792},
{-1.3206472921801833, -1.2401365714022177, -1.1776079884411956,
-1.1218742978662704, -1.0769458456752545, -1.040301313605596,
-1.012108517615161, -0.9901311643388908, -0.9720310528391565,
-0.9547917207946739, -0.9389159267866489, -0.9244898368342547,
-0.9113472072949662, -0.8993151451195445, -0.8882150568642828,
-0.8779058363670629, -0.8682980298399343, -0.859311325388262,
-0.8508966519184469, -0.842007199426007, -0.8333332965685258},
{-1.3226635888331657, -1.2426496591788236, -1.1801884324104321,
-1.1244180391659029, -1.0794353629362377, -1.0427310935901914,
-1.0144975945813712, -0.9924854691034852, -0.9743612801266863,
-0.9570875158096896, -0.941181965145006, -0.9267291917331022,
-0.9135609455133817, -0.90150596085914, -0.8903831162479037,
-0.8800519869128038, -0.8704236952507927, -0.8614177343351912,
-0.8529849299648049, -0.8440763192265877, -0.835380232809257},
{-1.3246865120245275, -1.2451704245377186, -1.1827765579137122,
-1.1269693487029144, -1.0819322685247243, -1.0451680696705807,
-1.0168936919835687, -0.9948467988706398, -0.9766983602148684,
-0.9593900985255459, -0.9434546959091676, -0.92897517455458,
-0.9157812432422361, -0.9037032516916952, -0.8925575663051859,
-0.8822044589433062, -0.8725556216722907, -0.8635303486389603,
-0.8550793583417544, -0.8461515213712119, -0.8374332418134145},
{-1.3267160808036351, -1.2476988910484579, -1.1853723881376936,
-1.1295282484998097, -1.0844365841385297, -1.0476122626696451,
-1.0192968303281305, -0.9972151741148991, -0.9790423122321954,
-0.9616994886418979, -0.945734139506385, -0.931227804894661,
-0.9180081202193833, -0.9059070370894915, -0.8947384259590763,
-0.8843632716761931, -0.8746938270815008, -0.8656491852889303,
-0.8571799542714871, -0.8482328236968897, -0.8394923421601561},
{-1.328752314169833, -1.250235082378822, -1.187975946021652,
-1.1320947615522527, -1.0869483321494045, -1.0500636947090243,
-1.0217070300386695, -0.999590615314446, -0.9813931558819604,
-0.9640157060402998, -0.9480203148596047, -0.9334871005103196,
-0.9202415974250471, -0.908117335418865, -0.896925712166194,
-0.886528441849805, -0.8768383288024779, -0.867774263228057,
-0.8592867346487765, -0.850320242192538, -0.8415575495946541},
{-1.3307952311379267, -1.252779022305731, -1.1905872549514243,
-1.1346689104129837, -1.0894675346771692, -1.0525223870308764,
-1.0241243118889543, -1.0019731444172066, -0.9837509117187437,
-0.9663387703931221, -0.9503132416339213, -0.9357530811066681,
-0.9224816965343052, -0.91033416584105, -0.8991194436057413,
-0.8886999887836282, -0.8789891469696158, -0.8699055998586118,
-0.8613997189113434, -0.8524137939075445, -0.8436288812954444},
{-1.3328448508500514, -1.2553307345760913, -1.1932063379090323,
-1.1372507175910869, -1.0919942137143153, -1.0549883609373865,
-1.0265486961270653, -1.0043627811992337, -0.9861155986745871,
-0.9686687019438978, -0.9526129403511732, -0.9380257652846922,
-0.9247284368084365, -0.9125575475882215, -0.9013196388041251,
-0.8908779316352593, -0.8811462973590096, -0.8720432139507466,
-0.8635189245505899, -0.8545134961623262, -0.8457063556270441},
{-1.3349011925656669, -1.2578902431350798, -1.1958332184703977,
-1.1398402060640365, -1.094528391887252, -1.057461638294626,
-1.028980203320316, -1.0067595480741147, -0.9884872371549136,
-0.9710055200866918, -0.9549194300088857, -0.9403051723602402,
-0.9269818405864498, -0.9147874992086145, -0.9035263162058982,
-0.8930622872358072, -0.8833097997867299, -0.8741871223865019,
-0.8656443686159037, -0.8566193641909194, -0.8477899874178547},
{-1.3369642754814777, -1.2604575718723936, -1.1984679199485981,
-1.1424373982017642, -1.0970700911902895, -1.0599422405239238,
-1.0314188549855317, -1.009163465225356, -0.9908658470012597,
-0.973349245126883, -0.9572327305813815, -0.9425913210179715,
-0.9292419282537594, -0.9170240402690979, -0.9057394940209633,
-0.8952530758597277, -0.8854796722534957, -0.8763373452311498,
-0.867776070808759, -0.8587314157502988, -0.8498797954616748},
{-1.3390341189115134, -1.263032744944212, -1.2011104657522083,
-1.1450423174483149, -1.0996193346582004, -1.0624301900434148,
-1.0338646716190851, -1.0115745545062964, -0.9932514487281878,
-0.9756998973516602, -0.9595528624340659, -0.9448842303954734,
-0.9315087201994174, -0.9192671900509595, -0.9079591905629059,
-0.8974503158769949, -0.8876559321506647, -0.8784938991011586,
-0.8699140471871942, -0.8608496673823538, -0.8519757943195145},
{-1.341110742174351, -1.265615786327544, -1.2037608795480992,
-1.1476549863382388, -1.1021761442461866, -1.064925507690532,
-1.0363176739028859, -1.0139928367680113, -0.9956440622736409,
-0.9780574955821066, -0.961879844271607, -0.9471839188026934,
-0.9337822371235234, -0.9215169671115291, -0.9101854252694466,
-0.8996540250227554, -0.8898385994671116, -0.8806568026757304,
-0.8720583168487792, -0.8629741359000036, -0.8540780029834423},
{-1.3431941647268104, -1.268206720267699, -1.2064191850458883,
-1.1502754280008958, -1.10474054237784, -1.067428215781547,
-1.0387778830154275, -1.0164183331544336, -0.9980437072099448,
-0.9804220607238676, -0.9642136970469437, -0.9494904048224271,
-0.9360624995861144, -0.9237733912013937, -0.912418215386424,
-0.9018642226310476, -0.892027691086696, -0.8828260752052302,
-0.8742088979961409, -0.8651048380233988, -0.8561864358507592},
{-1.345284406056635, -1.2708055710718327, -1.2090854060224956,
-1.1529036656665994, -1.107312552268013, -1.06993833614888,
-1.0412453208191437, -1.0188510656043945, -1.0004504046482907,
-0.9827936128349393, -0.9665544403742388, -0.9518037085945252,
-0.938349529142215, -0.9260364816564106, -0.9146575807590125,
-0.9040809278285451, -0.8942232266745123, -0.8850017342556384,
-0.8763658087173098, -0.8672417914949619, -0.8583011126738711},
{-1.347381485698861, -1.273412363017087, -1.21175956616662,
-1.1555397221336534, -1.1098921959037398, -1.0724558906458697,
-1.0437200076994486, -1.0212910551854293, -1.0028641747358051,
-0.9851721718387125, -0.9689020937858004, -0.9541238485726353,
-0.9406433450149052, -0.9283062572067138, -0.9169035398754204,
-0.9063041583976883, -0.8964252238492918, -0.8871837965871237,
-0.8785290666619403, -0.8693850114214001, -0.8604220475608599},
{-1.3494854232176294, -1.2760271205606841, -1.214441689555315,
-1.158183621063472, -1.1124794964962348, -1.0749809013659615,
-1.046201965522414, -1.0237383232270076, -1.005285038078,
-0.9875577580423851, -0.9712566784019145, -0.9564508432576986,
-0.9429439687974082, -0.9305827380358096, -0.9191561111110786,
-0.9085339343328087, -0.898633702625375, -0.8893722838038229,
-0.8806986908693943, -0.8715345173513924, -0.8625492578212288},
{-1.3515962382871294, -1.2786498681871308, -1.217131800099196,
-1.1608353851543143, -1.1150744766509888, -1.0775133903161986,
-1.0486912154119636, -1.0261928910276765, -1.0077130146146374,
-0.9899503905435267, -0.9736182135293348, -0.958784711532644,
-0.9452514195800177, -0.9328659423299541, -0.9214153131651983,
-0.9107702743312984, -0.9008486803031701, -0.8915672119746887,
-0.8828746997369308, -0.8736903235967475, -0.8646827615211805},
{-1.3537139506606763, -1.2812806303873003, -1.2198299219098772,
-1.1634950386114724, -1.117677159350933, -1.0800533796636955,
-1.0511877790268045, -1.028654780893703, -1.010148125787964,
-0.9923500906825211, -0.9759867196989944, -0.9611254731862573,
-0.9475657186976605, -0.9351558907819708, -0.9236811671999021,
-0.9130131974125106, -0.9030701760766533, -0.8937686008430319,
-0.8850571115963248, -0.8758524494714948, -0.8668225731635175},
{-1.355838580064301, -1.283919431942195, -1.222536079088968,
-1.1661626040631745, -1.1202875674252937, -1.0826008914245904,
-1.0536916778182785, -1.031124013619774, -1.0125903914831724,
-0.9947568778206914, -0.9783622166632995, -0.9634731462247146,
-0.9498868859609502, -0.9374526012234128, -0.9259536888239381,
-0.9152627212515654, -0.9052982086996053, -0.8959764667270065,
-0.8872459455760691, -0.878020909953193, -0.8689687115602283},
{-1.357970146331354, -1.2865662974691077, -1.2252502961955543,
-1.168838105199029, -1.122905723715121, -1.085155947763269,
-1.056202934087196, -1.0336006114775955, -1.0150398327969015,
-0.9971707733784569, -0.980744725011391, -0.96582775052957,
-0.9522149413351144, -0.9397560949000763, -0.9282328995868738,
-0.9175188668614283, -0.9075327981790906, -0.8981908319146896,
-0.8894412190220464, -0.8801957237410534, -0.8711211929476121},
{-1.3601086693997786, -1.2892212517454027, -1.2279725972621236,
-1.1715215658814486, -1.125531651528945, -1.0877185711287893,
-1.058721569050249, -1.036084595742068, -1.0174964703983278,
-0.9995917962114618, -0.983134265323315, -0.9681893046581536,
-0.9545499045125325, -0.942066389372485, -0.9305188171874761,
-0.9197816518390027, -0.9097739620665379, -0.9004117112690437,
-0.8916429510572925, -0.8823769076570898, -0.8732800338020752},
{-1.3622541691693186, -1.2918843196985108, -1.2307030068996028,
-1.1742130091670333, -1.1281653739679314, -1.0902887837855815,
-1.0612476047081145, -1.0385759877626697, -1.0199603248820495,
-1.0020199673581374, -0.9855308577316464, -0.970557828368328,
-0.9568917961605621, -0.944383505233418, -0.932811461350866,
-0.9220510956020007, -0.9120217201834748, -0.9026391258285003,
-0.8938511605629174, -0.8845644781758892, -0.8754452519624465},
{-1.364406665675233, -1.2945555262167545, -1.2334415496388829,
-1.1769124595648464, -1.1308069142514796, -1.0928666081345,
-1.063781062630369, -1.0410748097874603, -1.0224314177448832,
-1.004455307016542, -0.9879345228837337, -0.9729333403029159,
-0.9592406357151049, -0.9467074617696198, -0.935110851922218,
-0.92432721825935, -0.9142760912072845, -0.904873093306378,
-0.8960658665328083, -0.8867584535400965, -0.8776168639378739},
{-1.3665661789591468, -1.29723489641583, -1.236188250167288,
-1.1796199401414924, -1.133456295276119, -1.0954520666018652,
-1.0663219658126764, -1.0435810838062025, -1.0249097696523677,
-1.0068978362105554, -0.990345281223199, -0.9753158605126373,
-0.9615964430104214, -0.9490382785388647, -0.9374170080300246,
-0.9266100379900308, -0.916537094166415, -0.9071136333222967,
-0.8982870880954579, -0.8889588510646718, -0.8797948876563169},
{-1.3687327291909241, -1.2999224552568194, -1.238943132841996,
-1.1823354747893973, -1.1361135404722518, -1.098045181366615,
-1.068870335295287, -1.046094830839138, -1.0273954002859682,
-1.0093475745034084, -0.9927631534701504, -0.9777054071364546,
-0.9639592374478525, -0.9513759735673375, -0.9397299478496279,
-0.9288995741680992, -0.9188047485149582, -0.9093607635404624,
-0.9005148425003426, -0.8911656873351603, -0.8819793390921404},
{-1.3709063366259215, -1.3026182280154899, -1.2417062228350915,
-1.1850590881012977, -1.1387786737514034, -1.1006459758064011,
-1.0714261942430312, -1.0486160733726138, -1.029888332628616,
-1.0118045427916513, -0.995188160242833, -0.9801020012982917,
-0.9663290390544717, -0.9537205679243925, -0.9420496918792196,
-0.931195846562332, -0.9210790739161894, -0.9116145030147891,
-0.9027491504784848, -0.8933789797738427, -0.884170236535283},
{-1.3730870213539674, -1.3053222396856654, -1.2444775446738277,
-1.187790802937343, -1.141451717927339, -1.103254471485343,
-1.0739895641308976, -1.0511448331253632, -1.0323885862617317,
-1.0142687618099444, -0.9976203219448507, -0.9825056613808556,
-0.9687058670897386, -0.9560720806002792, -0.9443762591617997,
-0.9334988738373795, -0.9233600885763735, -0.9138748714849498,
-0.9049900301306479, -0.8955987468780222, -0.8863675980337575},
{-1.3752748038623395, -1.3080345159423814, -1.2472571235730356,
-1.1905306442386063, -1.1441326965104963, -1.1058706919448014,
-1.0765604674215865, -1.0536811317215324, -1.034896183273304,
-1.0167402508632222, -1.0000596598529228, -0.9849164070637926,
-0.9710897409349855, -0.9584305310399941, -0.946709669977281,
-0.9358086754000396, -0.9256478122224507, -0.9161418873227376,
-0.9072375001233013, -0.8978250057334662, -0.8885714400275901},
{-1.3774697044000277, -1.3107550818613163, -1.2500449844483228,
-1.193278635833849, -1.1468216333441887, -1.1084946592891356,
-1.0791389270361833, -1.0562249911690742, -1.0374111441251443,
-1.0192190319503425, -1.0025061954929697, -0.9873342585979117,
-0.9734806803244282, -0.960795938364754, -0.9490499434468802,
-0.9381252715356823, -0.9279422647450701, -0.9184155692255445,
-0.9094915810674138, -0.9000577741717279, -0.8907817816925672},
{-1.3796717435070605, -1.3134839630629358, -1.2528411524881449,
-1.1960348015600175, -1.1495185518142534, -1.1111263963284728,
-1.0817249654428451, -1.0587764339034038, -1.039933490088515,
-1.021705125196604, -1.004959948852047, -0.9897592360248382,
-0.9758787051196123, -0.9631683227216854, -0.9513970993175462,
-0.9404486810944945, -0.9302434659275605, -0.9206959372186247,
-0.911752290381628, -0.9022970698206336, -0.8929986401617498},
{-1.3818809416270597, -1.3162211849821688, -1.2556456529473508,
-1.1987991664145738, -1.1522234758085688, -1.1137659264786635,
-1.0843186050078657, -1.0613354817160143, -1.0424632425092568,
-1.0241985515876877, -1.007420941883538, -0.9921913584821596,
-0.9782838344835909, -0.9655477036230877, -0.9537511575817916,
-0.9427789234832744, -0.9325514338997891, -0.922983009913878,
-0.9140196487169305, -0.9045429104789946, -0.8952220340852364},
{-1.384097319337343, -1.3189667733449824, -1.2584585110762418,
-1.2015717540944024, -1.1549364290749509, -1.1164132722442446,
-1.0869198687578319, -1.06390215672036, -1.0450004229496699,
-1.026699331789132, -1.0098891942034243, -0.994630646893711,
-0.980696088014156, -0.9679341000410204, -0.9561121373426431,
-0.945116018086992, -0.9348661891253869, -0.9252768062397081,
-0.9162936742086458, -0.9067953145458887, -0.8974519810435595},
{-1.3863208972443317, -1.3217207536854403, -1.261279752061455,
-1.2043525891640456, -1.1576574353930482, -1.119068456640889,
-1.089528778609747, -1.0664764807243046, -1.04754505204437,
-1.0292074862481968, -1.0123647290783993, -0.9970771207590587,
-0.9831154846124264, -0.9703275325009599, -0.958480059145586,
-0.9474599845343619, -0.9371877510511695, -0.927577346601538,
-0.9185743869893486, -0.909054300533171, -0.89968850166224},
{-1.3885516960745008, -1.3244831518522915, -1.264109401652604,
-1.2071416964054151, -1.16038651843337, -1.1217315027370205,
-1.0921453582905087, -1.069058475750353, -1.0500971515557467,
-1.0317230365635623, -1.0148475667392631, -0.9995308008092252,
-0.9855420446274366, -0.9727280195093044, -0.960854943115919,
-0.9498108427924308, -0.9395161392039881, -0.9298846487599803,
-0.9208618051270605, -0.9113198858049145, -0.9019316122085002},
{-1.3907897365843382, -1.3272539936242538, -1.2669474852982603,
-1.2099390997545925, -1.163123702404846, -1.124402433004434,
-1.0947696309449384, -1.0716481646995817, -1.0526567429023999,
-1.0342460033243697, -1.0173377287246694, -1.0019917072895623,
-0.9879757874314237, -0.9751355817334115, -0.9632368087713985,
-0.9521686124608095, -0.9418513731052371, -0.9321987333423749,
-0.9231559495165129, -0.9135920890021225, -0.9041813332423771},
{-1.3930350394421112, -1.3300333048136963, -1.2697940285652294,
-1.2127448239480145, -1.1658690111962642, -1.1270812712755287,
-1.0974016186592053, -1.0742455688869086, -1.0552238474083424,
-1.0367764069615077, -1.0198352365860046, -1.004459860474526,
-0.9904167320019042, -0.9775502377797238, -0.9656256760645192,
-0.9545333127316553, -0.9441934729566128, -0.9345196189660783,
-0.9254568385713355, -0.9158709286002704, -0.9064376827536762},
{-1.3952876257717435, -1.3328211116640887, -1.2726490573049887,
-1.215558894107744, -1.1686224689856317, -1.1297680406332802,
-1.1000413450547057, -1.0768507107786718, -1.0577984871397348,
-1.039314269886745, -1.0223401121220377, -1.0069352815244201,
-0.9928648994791729, -0.9799720085720764, -0.9680215661155671,
-0.9569049641049787, -0.9465424578793318, -0.9368473261547479,
-0.9277644922403852, -0.9181564237114799, -0.9087006811078027},
{-1.3975475163206283, -1.3356174398340954, -1.2755125971489178,
-1.2183813347010073, -1.1713840999782406, -1.1324627640897234,
-1.1026888330252405, -1.079463612901236, -1.0603806821109174,
-1.0418596122308372, -1.0248523765312711, -1.0094179905026976,
-0.9953203073073382, -0.9824009132862557, -0.9704244981312513,
-0.9592835865041707, -0.9488983480350726, -0.9391818731837702,
-0.9300789289118256, -0.9204485924619803, -0.9109703470912791},
{-1.399814732174491, -1.33842231577637, -1.2783846741358502,
-1.2212121706306789, -1.174153928346641, -1.1351654654572485,
-1.1053441065414518, -1.0820842972279934, -1.0629704555740318,
-1.044412456190912, -1.027372052647479, -1.011908009135368,
-0.9977829780800676, -0.9848369718911272, -0.9728344929517334,
-0.9616691993142013, -0.95126116406027, -0.9415232809242298,
-0.932400169520406, -0.922747454538694, -0.913246700714808},
{-1.402089294418147, -1.3412357654733569, -1.2812653143955686,
-1.2240514264403828, -1.1769319779523357, -1.1378761672858673,
-1.1080071879387106, -1.0847127866545634, -1.0655678282746521,
-1.0469728216830845, -1.02989916126171, -1.0144053577132581,
-1.0002529292396503, -0.9872802045938442, -0.9752515704367397,
-0.9640618224675563, -0.9536309242175776, -0.9438715689066157,
-0.9347282324106345, -0.9250530278914084, -0.9155297609904665},
{-1.4043712240836612, -1.3440578152649323, -1.284154543661316,
-1.2268991277715031, -1.1797182738155243, -1.140594893900925,
-1.110678101724261, -1.0873491028851276, -1.0681728223280516,
-1.0495407315811462, -1.0324337248366646, -1.0169100575567427,
-1.0027301825630275, -0.9897306308503175, -0.977675751226343,
-0.9664614762950805, -0.9560076497564296, -0.9462267569215328,
-0.9370631376405072, -0.9273653321179154, -0.917819549133128},
{-1.4066605424686713, -1.3468884913645525, -1.2870523880892506,
-1.2297552988911775, -1.18251283972495, -1.1433216678251483,
-1.1133568701843615, -1.0899932683241786, -1.0707854587944894,
-1.0521162052900763, -1.034975765100171, -1.0194221303936501,
-1.0052147576116113, -0.9921882708604244, -0.9801070562207315,
-0.9688681805655506, -0.9583913601072709, -0.948588864544945,
-0.9394049042184633, -0.9296843872016325, -0.9201160846241692},
{-1.408957270819883, -1.3497278202266898, -1.2899588742247943,
-1.2326199655744858, -1.185315700891806, -1.1460565139550454,
-1.1160435180208879, -1.0926453059728374, -1.0734057603021938,
-1.0546992670570035, -1.0375253042730037, -1.021941596569377,
-1.0077066741359886, -0.9946531454297656, -0.982545505539747,
-0.9712819563555968, -0.9607820751753025, -0.9509579118202964,
-0.9417535524225968, -0.932010211290617, -0.9224193876616482},
{-1.4112614303985538, -1.3525758283531104, -1.2928740279603517,
-1.2354931525187567, -1.1881268808592722, -1.148799454447726,
-1.1187380681803916, -1.0953052373624814, -1.076033747589463,
-1.0572899357885035, -1.0400823645268247, -1.0244684785229765,
-1.010205952783508, -0.9971252729756088, -0.9849911193850858,
-0.973702822731866, -0.963179814585601, -0.9533339182944474,
-0.9441091008939111, -0.9343428238553315, -0.9247294785127451},
{-1.4135730426451119, -1.3554325422919646, -1.2957978760941842,
-1.2383748849415497, -1.190946405105933, -1.1515505136630964,
-1.1214405447226454, -1.0979730858234689, -1.0786694438647828,
-1.0598882346803293, -1.042646968484405, -1.0270027977421705,
-1.0127126144943759, -0.9996046755313728, -0.9874439193445141,
-0.9761308008273772, -0.9655845995694108, -0.9557169048075593,
-0.9464715703452384, -0.9366822459123796, -0.9270463782486331},
{-1.4158921289908903, -1.358297988637787, -1.2987304449361545,
-1.241265188727084, -1.1937742976388108, -1.1543097154026327,
-1.1241509712745028, -1.1006488731854915, -1.0813128701829555,
-1.0624941848946037, -1.0452191381791636, -1.0295445758602,
-1.0152266788682027, -1.0020913719454256, -0.9899039248120971,
-0.9785659100034536, -0.9679964495517197, -0.9581068913012132,
-0.9488409794321342, -0.9390284961482394, -0.9293701062833861},
{-1.4182187109599909, -1.3611721940205825, -1.3016717608843464,
-1.244164088706384, -1.196610583772781, -1.1570770831694972,
-1.1268693718757277, -1.1033326223350741, -1.0839640492104081,
-1.0651078081846208, -1.0477988960101356, -1.032093834332045,
-1.0177481672744761, -1.0045853836181777, -0.9923711572064349,
-0.9810081721498136, -0.9704153848524584, -0.9605038982244878,
-0.9512173482889921, -0.941381595466737, -0.9317006844194111},
{-1.4205528101820164, -1.3640551851831333, -1.3046218510016843,
-1.2470716106290638, -1.1994552880987612, -1.1598526412799401,
-1.1295957703368913, -1.1060243557531066, -1.0866230027750134,
-1.0677291262709332, -1.0503862643727189, -1.034650596217034,
-1.0202771000986104, -1.0070867308349989, -0.9948456378388073,
-0.9834576067405578, -0.9728414249129855, -0.9629079453879967,
-0.9536006965263368, -0.9437415629927273, -0.9340381322290341},
{-1.4228944482174484, -1.3669469890628534, -1.307580741651691,
-1.2499877800810282, -1.2023084354004823, -1.1626364132916933,
-1.1323301914344484, -1.108724095951402, -1.089289753639605,
-1.0703581619964098, -1.0529812664244673, -1.0372148834339896,
-1.022813498551841, -1.0095954339140008, -0.9973273871109996,
-0.9859142346795124, -0.9752745914993284, -0.9653190532771987,
-0.9559910440530075, -0.9461084191898408, -0.9363824722531717},
{-1.4252436468150336, -1.3698476323961586, -1.3105484596389942,
-1.2529126225545042, -1.205170050427114, -1.1654284231244674,
-1.1350726577711612, -1.111431865261693, -1.0919643231027294,
-1.0729949365104403, -1.0555839237422333, -1.039786718240066,
-1.0253573833851988, -1.0121115127531084, -0.9998164254302537,
-0.9883780767850112, -0.977714903658125, -0.9677372420992469,
-0.9583884099065472, -0.9484821846599516, -0.9387337230618868},
{-1.4276004278171968, -1.3727571423050904, -1.3135250321674903,
-1.2558461637318032, -1.2080401587209053, -1.1682286952400318,
-1.1378231952494389, -1.1141476872817293, -1.0946467345765996,
-1.0756394715499482, -1.0581942605767836, -1.042366123316242,
-1.0279087757771777, -1.0146349890728743, -1.002312774064194,
-0.9908491533005872, -0.98016238238597, -0.9701625331508694,
-0.9607928144068865, -0.9508628793555545, -0.9410919065703638},
{-1.4299648129899651, -1.3756755454687664, -1.3165104858244376,
-1.2587884292188392, -1.2109187846108398, -1.1710372531324538,
-1.1405818275616184, -1.1168715837629861, -1.0973370100200555,
-1.0782917895940045, -1.0608122986868693, -1.0449531208887493,
-1.0304676970499713, -1.0171658832859976, -1.004816454333195,
-0.9933274858740333, -0.9826170483629539, -0.9725949462299468,
-0.9632042786397506, -0.9532505234947166, -0.9434570434950729},
{-1.4323368243067307, -1.3786028694867127, -1.3195048481338745,
-1.26173944509992, -1.2138059540357062, -1.1738541214908764,
-1.1433485781581112, -1.119603577597445, -1.1000351719794708,
-1.080951913343597, -1.0634380608844367, -1.0475477346335538,
-1.0330341678309196, -1.019704215666934, -1.007327486802751,
-0.995813094508776, -0.9850789212305244, -0.9750345019638189,
-0.9656228192543495, -0.9556451386652043, -0.9458291544378881},
{-1.4347164837090531, -1.3815391411417295, -1.322508145919528,
-1.2646992373429384, -1.2167016915554996, -1.1766793243332359,
-1.1461234727248666, -1.1223436918062362, -1.1027412432704295,
-1.0836198644065007, -1.0660715706126211, -1.0501499868405517,
-1.0356082106955, -1.0222500072486582, -1.0098458929969638,
-0.9983060002905404, -0.9875480219252495, -0.9774812210689561,
-0.9680484595428425, -0.958046745199681, -0.9482082606446056},
{-1.437103813248541, -1.3844843878787287, -1.3255204064798818,
-1.2676678316565813, -1.2196060229434806, -1.179512885879376,
-1.1489065355926869, -1.1250919495887501, -1.1054552471505303,
-1.0862956655091693, -1.068712851314558, -1.0527599016404565,
-1.0381898470877786, -1.0248032797953783, -1.0123716940906888,
-1.0008062255947152, -0.9900243718147976, -0.9799351248657331,
-0.9704812173040409, -0.9604553647168359, -0.9505943821568508},
{-1.43949883503592, -1.3874386367706393, -1.3285416572516624,
-1.2706452542770421, -1.222518973167098, -1.1823548306747398,
-1.1516977907049295, -1.1278483729547588, -1.1081772060879302,
-1.0889793392070715, -1.0713619253383513, -1.0553775022017362,
-1.0407790978733829, -1.027364053443307, -1.014904911033227,
-1.0033137893242383, -0.9925079905497114, -0.9823962335121905,
-0.9729211144167493, -0.9628710172364663, -0.9529875402567995},
{-1.4419015713410772, -1.3904019154815614, -1.3315719256379452,
-1.2736315311722137, -1.2254405676176248, -1.185205183162907,
-1.154497263372832, -1.1306129856729967, -1.1109071428072639,
-1.0916709069169883, -1.0740188157360535, -1.0580028111216961,
-1.0433759850511706, -1.0299323492672556, -1.0174455648248113,
-1.005828714070958, -0.9949988989483245, -0.9848645683705399,
-0.975368169198191, -0.9652937232440308, -0.9553877538401139},
{-1.4443120442838335, -1.393374251176283, -1.3346112388671827,
-1.2766266890084808, -1.2283708319882862, -1.1880639680002787,
-1.1573049777580309, -1.133385810035179, -1.1136450814756245,
-1.0943703927732713, -1.0766835465346958, -1.060635852676569,
-1.045980530572706, -1.0325081893697643, -1.0199936772642104,
-1.0083510202985053, -0.9974971186384209, -0.9873401493041456,
-0.9778224026795215, -0.9677235062317777, -0.9577950459206477},
{-1.4467302763041516, -1.3963556715234517, -1.3376596247071575,
-1.2796307535118103, -1.231309791421154, -1.1909312091665925,
-1.1601209594864486, -1.1361668694862601, -1.1163910444975045,
-1.0970778181144851, -1.0793561401842453, -1.0632766510043439,
-1.0485927565860038, -1.0350915930084739, -1.0225492694444256,
-1.0108807296637679, -1.0000026695233828, -0.9898229977170558,
-0.9802838348605292, -0.9701603864577919, -0.9602094355905137},
{-1.4491562896755568, -1.3993462040771192, -1.3407171109374758,
-1.2826437512194389, -1.2342574720751145, -1.193806931580184,
-1.1629452327124454, -1.138956187211079, -1.1191450554470066,
-1.0997932068021328, -1.082036620064173, -1.065925230304856,
-1.0512126845169405, -1.0376825839521189, -1.0251123629150243,
-1.0134178636217257, -1.0025155732037092, -0.99231313535347,
-0.9827524858119432, -0.9726043843002117, -0.9626309428495006},
{-1.4515901069835309, -1.402345876515028, -1.3437837253377438,
-1.2856657088177599, -1.2372138994105626, -1.1966911599483865,
-1.165777822916425, -1.1417537861871097, -1.1219071375871863,
-1.1025165805331198, -1.0847250105507555, -1.0685816138829978,
-1.0538403370428568, -1.0402811815583846, -1.0276829791419004,
-1.015962442927048, -1.0050358503413008, -0.9948105813982693,
-0.9852283759973943, -0.9750555218070076, -0.9650595884231734},
{-1.4540317506016436, -1.40535471644489, -1.3468594952373678,
-1.2886966525020398, -1.2401790989624715, -1.199583919287761,
-1.1686187548639282, -1.1445596898793156, -1.124677315412555,
-1.105247962888825, -1.0874213339720882, -1.0712458270263596,
-1.056475735953427, -1.042887408455499, -1.0302611389997764,
-1.018514489476729, -1.0075635226075974, -0.9973153587270644,
-0.9877115255294484, -0.9775138213481114, -0.9674953931480559},
{-1.4564812431508471, -1.4083727516017461, -1.3499444489489179,
-1.2917366087731352, -1.2431530966059654, -1.2024852342583472,
-1.1714680535351363, -1.147373921214239, -1.1274556114185543,
-1.107987376224628, -1.0901256143733917, -1.0739178933381481,
-1.0591189035876596, -1.0455012857783004, -1.0328468647476257,
-1.021074024727568, -1.0100986103352625, -0.9998274873141781,
-0.9902019555884181, -0.9799793046095147, -0.9699383761053468},
{-1.458938607399432, -1.411400009928002, -1.3530386144884687,
-1.2947856047012465, -1.246135918652726, -1.2053951294437866,
-1.1743257447615179, -1.1501965038187336, -1.1302420508345676,
-1.1107348449459096, -1.0928378754524601, -1.0765978383187758,
-1.0617698630685481, -1.0481228354419727, -1.035440178182398,
-1.023641070965823, -1.0126411358942278, -1.0023469885363738,
-0.9926996859958308, -0.9824519925732602, -0.972388557758677},
{-1.46140386600473, -1.414436519433366, -1.3561420197293046,
-1.2978436667035567, -1.2491275902284542, -1.2083136301735067,
-1.1771918529848335, -1.1530274610140623, -1.1330366558522655,
-1.1134903902930091, -1.0955581403923134, -1.0792856865464273,
-1.0644286351434857, -1.0507520783157815, -1.0380411001679022,
-1.0262156485023297, -1.0151911197317531, -1.0048738831592345,
-0.9952047375682014, -0.9849319073273364, -0.9748459574839217},
{-1.4638770417195701, -1.4174823078565169, -1.3592546931258767,
-1.3009108219957852, -1.2521281381268636, -1.2112407616368728,
-1.180066403989258, -1.155866816505295, -1.1358394520048023,
-1.1162540369441558, -1.0982864337202045, -1.081981462521071,
-1.0670952431337355, -1.0533890367878485, -1.0406496529321885,
-1.0287977801053785, -1.0177485832664388, -1.0074081928287342,
-0.9977171304544754, -0.9874190720602201, -0.9773105954027415},
{-1.4663581574750424, -1.420537403407252, -1.3623766625378266,
-1.303987096529454, -1.2551375875373196, -1.214176548000978,
-1.1829494233879814, -1.158714593941113, -1.138650462626174,
-1.119025806458012, -1.101022777667822, -1.0846851916885498,
-1.0697697094256, -1.056033732400465, -1.0432658579811687,
-1.0313874863550154, -1.0203135485426174, -1.009949938275895,
-1.000236886075072, -0.9899135067043972, -0.9797824916877289},
{-1.468847236235888, -1.4236018341680392, -1.3655079565623964,
-1.307072518637142, -1.2581559658574406, -1.2171210158267058,
-1.1858409360393125, -1.1615708169665595, -1.141469712867547,
-1.1218057244386728, -1.10376719713895, -1.087396899045416,
-1.0724520567546278, -1.058686187625426, -1.0458897368771432,
-1.0339847902614565, -1.0228860369352333, -1.0124991404791217,
-1.0027640251719276, -0.9924152342882735, -0.9822616645797098},
{-1.4713443009441107, -1.4266756282522692, -1.3686486034730478,
-1.3101671144650027, -1.261183298089236, -1.220074189157458,
-1.1887409673345246, -1.164435509377654, -1.1442972252825712,
-1.1245938119027414, -1.1065197151092434, -1.0901166095063672,
-1.0751423072342732, -1.0613464233701961, -1.0485213123884023,
-1.036589712732166, -1.0254660689370212, -1.0150558207260474,
-1.005298567490172, -0.9949242775746825, -0.9847481342912943},
{-1.473849374785459, -1.429758814080742, -1.371798631987076,
-1.313270911368818, -1.2642196110828081, -1.223036093681003,
-1.1916495438836137, -1.1673086951450387, -1.1471330264848802,
-1.127390094108705, -1.1092803563205962, -1.0928443487318873,
-1.077840483521868, -1.0640144623830565, -1.0511606055224547,
-1.0392022766154696, -1.0280536679529177, -1.0176200005917053,
-1.0078405346393993, -0.9974406573874148, -0.9872419202583842},
{-1.4763624807383167, -1.4328514197877666, -1.3749580704770779,
-1.3163839361950522, -1.2672649313899456, -1.2260067551560496,
-1.194566690852298, -1.170190398588602, -1.1499771394846903,
-1.1301945935592812, -1.1120491441197373, -1.095580142296967,
-1.0805466082547355, -1.0666903268793249, -1.0538076375578385,
-1.0418225022986007, -1.0306488548121706, -1.0201917011472688,
-1.0103899480800465, -0.9999643963128619, -0.989743041118345},
{-1.478883642144865, -1.4359534737986905, -1.378126947731289,
-1.319506216694208, -1.27031928478209, -1.2289861983426817,
-1.1974924334044772, -1.1730806432369718, -1.1528295893294853,
-1.1330073341159732, -1.114826101980725, -1.0983240152600047,
-1.083260704186614, -1.0693740385850106, -1.0564624330399965,
-1.044450412655351, -1.033251651639148, -1.0227709440969193,
-1.0129468284467293, -1.0024955165445135, -0.9922515165690129},
{-1.4814128822918065, -1.4390650045061193, -1.3813052924624571,
-1.3226377802584466, -1.2733826986204804, -1.2319744493543112,
-1.2004267974389222, -1.175979453168111, -1.155690401645188,
-1.1358283399149514, -1.1176112549110258, -1.101075993528866,
-1.0859827938165836, -1.0720656205357955, -1.0591250113775459,
-1.0470860306886607, -1.0358620802326186, -1.0253577495641366,
-1.0155111971616861, -1.0050340407779004, -0.9947673652659432},
{-1.4839502244876712, -1.4421860406246196, -1.3844931335152069,
-1.325778654341775, -1.276455198722033, -1.23497153376411,
-1.2033698098930472, -1.1788868541570992, -1.158559599896762,
-1.138657634588526, -1.1204046264447243, -1.1038361019545846,
-1.08871290017305, -1.074765094634131, -1.0617953963082982,
-1.04972937689854, -1.0384801625750697, -1.0279521405609557,
-1.0180830753834016, -1.0075799908554472, -0.9972906072216574},
{-1.4864956921810517, -1.4453166104149204, -1.3876904995795485,
-1.3289288657670113, -1.279536811851358, -1.2379774765704497,
-1.206321494662916, -1.1818028687339392, -1.1614372095264116,
-1.1414952414452273, -1.1232062401613803, -1.106604367008913,
-1.091451045467693, -1.0774724825987505, -1.064473609194465,
-1.052380474324309, -1.041105922035058, -1.030554136768842,
-1.0206624841139273, -1.0101333894399431, -0.9998212600767147},
{-1.489049308977883, -1.4484567427880393, -1.3908974201804085,
-1.3320884431905142, -1.2826275649131276, -1.2409923044215248,
-1.2092818797409564, -1.184727523193942, -1.1643232558471936,
-1.1443411841755733, -1.1260161206701014, -1.1093808136956795,
-1.094197252736194, -1.0801878082565963, -1.0671596721931564,
-1.0550393438788888, -1.0437393785632594, -1.033163760581374,
-1.0232494449628575, -1.0126942583046912, -1.0023593439436809},
{-1.4916110983213002, -1.451606466262092, -1.394113923702207,
-1.335257413207728, -1.2857274849138776, -1.244016042444855,
-1.2122509897926648, -1.187660840783792, -1.1672177635136904,
-1.1471954878888937, -1.1288342923871824, -1.112165467809973,
-1.0969515440046962, -1.0829110930972092, -1.0698536091185815,
-1.0577060093673936, -1.0463805563449569, -1.0357810333989619,
-1.0258439793578873, -1.0152626198505459, -1.0049048777582357},
{-1.4941810839400205, -1.4547658099299952, -1.3973400399781895,
-1.338435804382243, -1.2888365977341891, -1.2470487166428939,
-1.2152288512425002, -1.1906028473877086, -1.1701207573860302,
-1.1500581754662562, -1.13166077853748, -1.114958354315604,
-1.0997139430892275, -1.085642361027567, -1.0725554404780269,
-1.0603804917700472, -1.0490294763822021, -1.0384059766147402,
-1.0284461091578123, -1.0178384970658954, -1.0074578803796612},
{-1.4967592894363406, -1.4579348021698024, -1.4005757979311966,
-1.3416236443590606, -1.291954931239161, -1.25009035353105,
-1.2182154898364388, -1.1935535676984728, -1.1730322637340578,
-1.1529292722589162, -1.1344956038283271, -1.1177594989512727,
-1.102484472674405, -1.088381633757308, -1.0752651891561982,
-1.0630628146918752, -1.0516861616633832, -1.0410386120474868,
-1.031055855914019, -1.0204219119950722, -1.0100183705544623},
{-1.4993457388236493, -1.4611134722545103, -1.403821226837863,
-1.3448209607468016, -1.295082512375302, -1.2531409784824064,
-1.2212109325191705, -1.1965130270109512, -1.1759523065247777,
-1.155808802408501, -1.1373387928761076, -1.1205689279940998,
-1.1052631552684034, -1.0911289342202508, -1.0779828794766217,
-1.0657529996478843, -1.0543506351605174, -1.0436789612285793,
-1.0336732415653387, -1.023012887008008, -1.0125863681314513},
{-1.501940455717886, -1.4643018490023678, -1.4070763562294815,
-1.3480277821436175, -1.2982193677216856, -1.256200617948707,
-1.2242152049802826, -1.1994812499688123, -1.178880912502791,
-1.1586967886105413, -1.140190369411357, -1.1233866661368666,
-1.1080500139087235, -1.0938842861360172, -1.080708532468634,
-1.0684510689261515, -1.0570229190288956, -1.046327046235092,
-1.036298287266618, -1.025611445074901, -1.0151618933432474},
{-1.504543464308881, -1.4674999615835986, -1.4103412156209743,
-1.3512441358252545, -1.3013655244212714, -1.2592692979687854,
-1.2272283339025307, -1.2024582618087152, -1.181818106189894,
-1.1615932571185112, -1.1430503577721538, -1.1262127370900998,
-1.1108450700248795, -1.0966477111051063, -1.0834421707058937,
-1.0711570450202998, -1.0597030349035776, -1.0489828875706735,
-1.0389310150148958, -1.0282176071359572, -1.0177449642433203},
{-1.507154788326261, -1.4707078387791626, -1.413615834405391,
-1.3544700508409733, -1.304521010051758, -1.262347045196293,
-1.2302503451155644, -1.2054440888732643, -1.1847639137176884,
-1.1644982317302492, -1.1459187825148547, -1.1290471685661032,
-1.1136483483624033, -1.0994192339876463, -1.0861838176806486,
-1.0738709510642366, -1.0623910071444698, -1.0516465087548568,
-1.0415714479822782, -1.0308313978930528, -1.0203356017173064},
{-1.5097744522190624, -1.4739255102404059, -1.416900242513293,
-1.3577055547484633, -1.307685851590577, -1.2654338854808884,
-1.2332812649583502, -1.2084387559170864, -1.1877183595734095,
-1.1674117366728751, -1.1487956672426662, -1.1318899839970982,
-1.1164598706727702, -1.1021988765533024, -1.0889334963812871,
-1.0765928088621877, -1.0650868570774037, -1.0543179301566852,
-1.0442196066342149, -1.0334528380008123, -1.0229338246663247},
{-1.5124024798315077, -1.477153004883803, -1.4201944693259065,
-1.3609506759312353, -1.3108600765081064, -1.2685298454889562,
-1.2363211207157292, -1.2114422895210737, -1.1906814699559618,
-1.1703337973794987, -1.1516810375687783, -1.1347412096474727,
-1.1192796612776874, -1.104986662932788, -1.0916912300726835,
-1.0793226424048044, -1.0677906088913005, -1.0569971741351765,
-1.0468755141773727, -1.0360819509915018, -1.0255396543016104},
{-1.5150388955116796, -1.480390352185168, -1.4234985453549598,
-1.3642054437041224, -1.3140437124202435, -1.2716349520887889,
-1.2393699384429055, -1.2144547148345737, -1.1936532714025816,
-1.1732644380990678, -1.1545749164124572, -1.1376008694478514,
-1.1221077411501028, -1.1077826154451031, -1.0944570406390994,
-1.0820604725231533, -1.0705022844722407, -1.0596842630038736,
-1.0495391914628271, -1.0387187588348752, -1.0281531098407868},
{-1.5176837235867424, -1.4836375814511484, -1.426812499843436,
-1.3674698849408742, -1.3172367865481647, -1.2747492312337272,
-1.242427744624365, -1.2174760579655413, -1.1966337884950917,
-1.1762036838135828, -1.157477329199537, -1.1404689882638195,
-1.1249441340769408, -1.1105867581700295, -1.0972309523331205,
-1.0848063240428019, -1.0732219069177518, -1.062379218685237,
-1.052210662739526, -1.0413632841373328, -1.0307742123040953},
{-1.520336988463896, -1.486894721907447, -1.430136362925623,
-1.3707440294820117, -1.3204393258929485, -1.2778727101103868,
-1.2454945651916205, -1.2205063446144777, -1.1996230477870995,
-1.1791515596087265, -1.1603882992640138, -1.1433455907153984,
-1.1277888637032447, -1.1133991145652544, -1.100012987613809,
-1.087560218242288, -1.0759494987360085, -1.065082063249065,
-1.054889948130949, -1.0440155495816725, -1.0334029825717153},
{-1.5229987145139603, -1.4901618036274158, -1.4334701647530892,
-1.3740279057146836, -1.3236513594165444, -1.281005415108666,
-1.2485704283808445, -1.2235456016242097, -1.2026210745407298,
-1.1821080903409893, -1.1633078516151727, -1.1462307014226099,
-1.1306419516986352, -1.1162197078192548, -1.1028031705118337,
-1.090322178986753, -1.0786850831864285, -1.0677928188179067,
-1.0575770712312078, -1.0466755774341436, -1.0360394414547045},
{-1.525668926362414, -1.4934388555857367, -1.4368139355556195,
-1.3773215416658786, -1.3268729134051682, -1.2841473730259167,
-1.2516553600653424, -1.2265938553118758, -1.2056278946456587,
-1.1850733013379795, -1.1662360094815085, -1.149124345065502,
-1.133503422694048, -1.1190485618517414, -1.10560152382277,
-1.0930922293064214, -1.0814286837648979, -1.070511507401534,
-1.0602720536062407, -1.0493433897336217, -1.0386836104735266},
{-1.5283476485774372, -1.4967259078603092, -1.4401677056466724,
-1.3806249672252306, -1.3301040164824371, -1.287298611494407,
-1.2547493873444182, -1.2296511317144905, -1.2086435347173392,
-1.1880472178054333, -1.169172798834552, -1.152026546169509,
-1.1363732987374533, -1.1218857003277662, -1.1084080714899756,
-1.0958703919222899, -1.084180322714019, -1.0732381518009788,
-1.0629749185009132, -1.052019009450305, -1.0413355106375093},
{-1.5310349057508574, -1.5000229898078032, -1.4435315048049233,
-1.3839382102378295, -1.333344696506174, -1.2904591565111332,
-1.2578525370608986, -1.2327174577767437, -1.2116680208746402,
-1.191029864748998, -1.1721182429591863, -1.154937328723463,
-1.1392516036430607, -1.124731147154307, -1.1112228371021047,
-1.0986566901810875, -1.0869400241899712, -1.0759727740969538,
-1.0656856882251304, -1.0547024588631757, -1.0439951636981277},
{-1.5337307228692225, -1.5033301314942946, -1.4469053639968479,
-1.3872613007843029, -1.3365949811486644, -1.293629036499624,
-1.260964836441417, -1.2357928599067236, -1.2147013787762262,
-1.1940212684603466, -1.1750723662626115, -1.157856716621609,
-1.14213835954979, -1.1275849257217487, -1.1140458439531358,
-1.1014511475368636, -1.0897078103389504, -1.0787153971905354,
-1.0684043852252216, -1.057393760776904, -1.0466625915705663},
{-1.536435124576201, -1.5066473625456638, -1.4502893133940233,
-1.3905942671153753, -1.339854898478734, -1.296808277384116,
-1.2640863122524024, -1.2388773652455711, -1.217743633842474,
-1.197021453634079, -1.1780351922770933, -1.1607847343202593,
-1.145033591239553, -1.1304470599679917, -1.1168771158572781,
-1.1042537872908724, -1.0924837039892736, -1.0814660430805816,
-1.071131031791083, -1.0600929370593803, -1.0493378158535052},
{-1.5391481358310557, -1.5099747130934702, -1.4536833839429164,
-1.3939371381311503, -1.3431244765415613, -1.2999969068714563,
-1.2672169922225294, -1.241971000441481, -1.220794813689281,
-1.2000304463781504, -1.18100674638481, -1.163721406373952,
-1.1479373215279338, -1.1333175741783634, -1.1197166771125922,
-1.1070646326952556, -1.095267729337138, -1.0842247352265986,
-1.0738656510275177, -1.0628000109463756, -1.0520208593479765},
{-1.5418697816558051, -1.513312213079189, -1.4570876057769055,
-1.3972899437485466, -1.3464037434841885, -1.3031949520573107,
-1.2703569027999038, -1.2450737922772532, -1.223854943385959,
-1.2030482720547298, -1.1839870518997486, -1.166666755645565,
-1.150849572961306, -1.1361964919869934, -1.1225645508402522,
-1.1098837071640446, -1.0980599088579766, -1.0869914956201683,
-1.0766082656518847, -1.0655150043912727, -1.0547117429468926},
{-1.5446000871179422, -1.5166598924288337, -1.4605020099534158,
-1.400652713058662, -1.349692727373622, -1.306402440797683,
-1.273506072395321, -1.248185768363328, -1.2269240505684138,
-1.2060749566462619, -1.1869761337948148, -1.1696208067569387,
-1.153770371050996, -1.1390838378938497, -1.1254207616548229,
-1.1127110354900651, -1.1008602661568148, -1.0897663475188892,
-1.079358897779457, -1.0682379402278457, -1.0574104917559453},
{-1.5473390773013307, -1.520017781338538, -1.4639266272733948,
-1.4040254754727357, -1.3529914568371169, -1.3096194006739097,
-1.2766645274623443, -1.2513069556098344, -1.2300021610280965,
-1.2091105263407371, -1.1899740158314671, -1.172583583591404,
-1.156699737008239, -1.1419796359041356, -1.128285333421445,
-1.1155466397722194, -1.10366882418748, -1.0925493138693128,
-1.0821175709079398, -1.0709688410097442, -1.060117125744},
{-1.550086777474462, -1.5233859101163034, -1.4673614882813126,
-1.4074082602091949, -1.3562999602181662, -1.3128458591527306,
-1.2798322965154512, -1.2544373814489518, -1.2330893002654193,
-1.2121550067367934, -1.1929807220967632, -1.1755551102196478,
-1.1596376960278576, -1.144883910095814, -1.131158290349049,
-1.1183905448688165, -1.106485606294882, -1.0953404175743344,
-1.0848843074945762, -1.0737077285139094, -1.062831668949002},
{-1.5528432129040084, -1.526764308849124, -1.4708066243965732,
-1.4108010967847804, -1.3596182652727293, -1.3160818433279928,
-1.2830094062264834, -1.2575770733910758, -1.2361854957234755,
-1.2152084242952697, -1.1959962762266514, -1.1785354109615582,
-1.162584271723972, -1.147796685098001, -1.134039656011737,
-1.1212427745085733, -1.1093106358093792, -1.0981396816969209,
-1.087659131091641, -1.0764546272203006, -1.0655541445303243},
{-1.555608409049455, -1.530153007917761, -1.4742620663437265,
-1.4142040153328708, -1.3629464018013095, -1.3193273815795692,
-1.2861958854900877, -1.260726058815635, -1.239290774170513,
-1.2182708048221684, -1.1990207035923959, -1.1815245083362242,
-1.1655394870522287, -1.150717984779476, -1.1369294553787768,
-1.1241033516016614, -1.1121439355702023, -1.10094712942373,
-1.090442063019509, -1.079209558383809, -1.0682845747342071},
{-1.5583823912329535, -1.533552037642039, -1.4777278452529572,
-1.417617044689905, -1.3662843970487302, -1.3225825016925228,
-1.2893917613437225, -1.2638843653494405, -1.2424051619600505,
-1.2213421753040166, -1.2020540278917906, -1.1845224278040405,
-1.1685033670473786, -1.1536478340549365, -1.1398277125827008,
-1.1269723017521756, -1.1149855303156073, -1.103762784428909,
-1.0932331290678121, -1.0819725453620777, -1.071022983869625},
{-1.5611651850713315, -1.5369614286837532, -1.4812039924927376,
-1.4210402157186763, -1.3696322806372336, -1.3258472313445964,
-1.2925970610904187, -1.2670520204064815, -1.2455286852837162,
-1.2244225607209955, -1.2050962728280865, -1.187529192709917,
-1.1714759347578365, -1.1565862569987075, -1.1427344520579936,
-1.1298496484578209, -1.117835442924843, -1.1065866693788848,
-1.0960323499093647, -1.084743611050726, -1.0737693944793136},
{-1.563956816135942, -1.5403812115036999, -1.4846905393333145,
-1.424473557204692, -1.3729900808084494, -1.3291215985900635,
-1.2958118142360036, -1.270229052302966, -1.248661371628259,
-1.2275119886271568, -1.2081474636488565, -1.190544827217309,
-1.1744572143925325, -1.159533277996161, -1.1456496974587935,
-1.1327354156728688, -1.1206936956677964, -1.109418808526243,
-1.098839749742183, -1.0875227776941756, -1.076523830261067},
{-1.5667573101700327, -1.5438114164544459, -1.4881875171122374,
-1.427917099887054, -1.376357826649837, -1.332405631441361,
-1.2990360477633658, -1.2734154888094054, -1.2518032476946246,
-1.2306104853105353, -1.2112076240700844, -1.1935693559917127,
-1.177447230742473, -1.1624889225167863, -1.148573474971272,
-1.1356296289995953, -1.123560313049893, -1.1122592248721048,
-1.1016553515946725, -1.090310069233965, -1.0792863154329098},
{-1.5695666928741048, -1.5472520746197915, -1.4916949570833822,
-1.4313708733898238, -1.3797355468359456, -1.3356993583238363,
-1.3022697915857862, -1.27661135731978, -1.2549543398145033,
-1.2337180775048182, -1.2142767790028302, -1.1966028021925013,
-1.1804460072562506, -1.1654532144784753, -1.1515058078384754,
-1.138532310802475, -1.1264353191891132, -1.1151079425908392,
-1.1044791790191084, -1.0931055079145153, -1.0820568725557678},
{-1.5723849901523863, -1.5507032165132841, -1.495212890975381,
-1.434834907813638, -1.3831232702887064, -1.3390028070425615,
-1.3055130719931185, -1.2798166860029596, -1.258114676180412,
-1.2368347908050055, -1.2173549517137872, -1.1996451907816663,
-1.1834535687503376, -1.1684261784848786, -1.1544467204203102,
-1.1414434866837837, -1.1293187362880417, -1.1179649845125823,
-1.1073112541071168, -1.095909117066185, -1.084835526526149},
{-1.5752122278418028, -1.5541648729285953, -1.4987413504750293,
-1.4383092338321148, -1.3865210268631927, -1.3423160068014113,
-1.3087659185202938, -1.2830315040337155, -1.2612842823600658,
-1.2399606532453618, -1.220442168369118, -1.2026965465647663,
-1.1864699398774974, -1.171407840161919, -1.1573962387665233,
-1.14436318195294, -1.1322105900344468, -1.1208303758048714,
-1.1101516021353746, -1.0987209205632098, -1.087622301391093},
{-1.5780484319629977, -1.5576370748922272, -1.5022803668634879,
-1.4417938809256157, -1.389928844444512, -1.3456389847706305,
-1.312028359654505, -1.2862558383731084, -1.2644631864714029,
-1.2430956906464417, -1.2235384520226944, -1.205756893281432,
-1.1894951444228354, -1.1743982232492272, -1.1603543865749089,
-1.1472914200367086, -1.1351109018869465, -1.1237041390231752,
-1.113000245190051, -1.101540940167979, -1.090417220695599},
{-1.5808936287339748, -1.5611198532678827, -1.5058299724914832,
-1.4452888799842185, -1.3933467529604968, -1.348971770135904,
-1.3153004238884023, -1.2894897171408957, -1.26765141584292,
-1.2462399307660235, -1.2266438287388155, -1.2088262564811885,
-1.1925292078522034, -1.177397353687411, -1.1633211893149564,
-1.1502282266465045, -1.138019697211348, -1.1265862989785091,
-1.115857207800218, -1.1043692004896002, -1.093220309005119},
{-1.583747844165373, -1.5646132390484127, -1.5093901985947014,
-1.4487942617124645, -1.3967747817441705, -1.352314391588152,
-1.3185821414026577, -1.2927331692571897, -1.270848996908171,
-1.2493933993282553, -1.229758322077032, -1.2119046596981207,
-1.1955721534523036, -1.1804052549832704, -1.1662966710991896,
-1.1531736256492877, -1.1409369993016298, -1.1294768791012757,
-1.118722512101158, -1.1072057244655298, -1.0960315898028057},
{-1.586611104565236, -1.5681172634040195, -1.5129610776220943,
-1.4523100558508304, -1.40021296012128, -1.3556668775945582,
-1.3218735393220413, -1.295986222985448, -1.2740559573903738,
-1.2525561241654941, -1.2328819577232935, -1.2149921295440436,
-1.1986240070782515, -1.1834219538141042, -1.169280857546255,
-1.156127643023865, -1.1438628319374402, -1.132375903918728,
-1.1215961826746934, -1.1100505347530998, -1.0988510878360103},
{-1.589483436286173, -1.5716319572411521, -1.516542641013075,
-1.4558362936149933, -1.4036613169319025, -1.359029256625945,
-1.325174646332016, -1.2992489064345136, -1.2772723247380782,
-1.2557281317785964, -1.236014760866965, -1.2180886891746923,
-1.2016847938084538, -1.186447474790839, -1.172273772484914,
-1.1590903032738424, -1.1467972194459435, -1.1352833970086067,
-1.1244782432513603, -1.1129036559923406, -1.1016788275283034},
{-1.5923648656898877, -1.5751573523466504, -1.5201349214639777,
-1.4593730057586072, -1.4071198829169589, -1.3624015579971456,
-1.328485493973858, -1.3025212481734343, -1.2804981268727715,
-1.258909449865314, -1.2391567553750065, -1.2211943647125736,
-1.204754538151974, -1.1894818422988465, -1.1752754427197942,
-1.1620616317504755, -1.14974018511748, -1.1381993828545092,
-1.1273687178563705, -1.1157651110079314, -1.1045148320936278},
{-1.5952554193117976, -1.578693479589674, -1.5237379507470905,
-1.4629202219293802, -1.4105886865563662, -1.3657838103135873,
-1.331806109754325, -1.3058032772460137, -1.2837333908446453,
-1.2621001045918092, -1.242307967711895, -1.224309181501667,
-1.2078332647743082, -1.1925250822641829, -1.1782858918486454,
-1.1650416533466341, -1.1526917538321868, -1.1411238861255697,
-1.1302676296654681, -1.1186349231993518, -1.1073591266540461},
{-1.5981551237027816, -1.582240370413274, -1.527351761385944,
-1.46647797481819, -1.4140677581908676, -1.3691760426463588,
-1.3351365233611432, -1.3090950216119381, -1.2869781447679998,
-1.2653001239141304, -1.2454684231124702, -1.2274331645730854,
-1.2109209995669517, -1.1955772197125043, -1.1813051452245418,
-1.168030393000663, -1.1556519498863054, -1.1440569305832469,
-1.1331750024728535, -1.1215131163535261, -1.1102117354566872},
{-1.6010640053755196, -1.58579805640602, -1.5309763851855678,
-1.470046293690757, -1.4175571269024658, -1.3725782838973828,
-1.3384767647203262, -1.3123965098166082, -1.2902324164042511,
-1.2685095347715105, -1.248638146702433, -1.2305663402748905,
-1.2140177673427388, -1.1986382798986597, -1.1843332285898214,
-1.1710278769442084, -1.158620797083131, -1.1469985411040398,
-1.1360908613405627, -1.1243997140991269, -1.11307268251403},
{-1.6039820912792493, -1.5893665690937269, -1.534611855100593,
-1.4736252106122265, -1.4210568235266692, -1.375990563288724,
-1.3418268629739032, -1.3157077707601275, -1.2934962334365991,
-1.2717283646197757, -1.251817164127715, -1.2337087334763055,
-1.217123593114593, -1.2017082888560253, -1.1873701665499539,
-1.174034129751817, -1.1615983193787542, -1.1499487411638256,
-1.139015229200595, -1.127294739764693, -1.1159419919313223},
{-1.6069094080494324, -1.5929459397138999, -1.5382582031215861,
-1.477214756238027, -1.424566877016332, -1.379412910066094,
-1.3451868481624842, -1.3190288328441966, -1.2967696235700714,
-1.2749566403472272, -1.2550055012670782, -1.2368603698541847,
-1.2202385027449054, -1.2047872707080387, -1.1904159849746065,
-1.1770491765746556, -1.1645845415441727, -1.1529075563685183,
-1.1419481307275419, -1.1301982174627483, -1.1188196875082213},
{-1.6098459827544502, -1.5965362003780683, -1.5419154625087685,
-1.480814961852957, -1.4280873180250637, -1.3828453539208567,
-1.3485567501775222, -1.3223597254855122, -1.3000526153609826,
-1.2781943890095135, -1.2582031844794983, -1.240021276540574,
-1.2233625221379043, -1.2078752525994787, -1.1934707089185395,
-1.1800730441118503, -1.167579488532283, -1.1558750104795763,
-1.144889590155799, -1.1331101708510687, -1.1217057936737547},
{-1.612791842223487, -1.6001373826511553, -1.5455836653090955,
-1.4844258584125782, -1.4316181763315399, -1.3862879238313326,
-1.3519365986103367, -1.3257004764091107, -1.3033452362797107,
-1.281441639039258, -1.2614102392417408, -1.243191478693916,
-1.2264956762137444, -1.2109722591085301, -1.196534363725732,
-1.183105756446821, -1.1705831845574721, -1.158851128684546,
-1.1478396317033912, -1.1360306235837925, -1.1246003343494522},
{-1.6157470136031407, -1.6037495184064028, -1.5492628442025307,
-1.4880474777455674, -1.4351594819800084, -1.389740649077794,
-1.3553264242254954, -1.3290511156246794, -1.306647515264558,
-1.2846984172156226, -1.2646266919928166, -1.246371003522654,
-1.2296379905765207, -1.2140783165723406, -1.199606975513234,
-1.1861473394710629, -1.173595654336168, -1.161835935414274,
-1.1507982800630998, -1.138959599295049, -1.127503334377252},
{-1.6187115240954881, -1.6073726392287426, -1.5529530325457017,
-1.4916798515750997, -1.4387112659715058, -1.3932035602556425,
-1.3587262561595708, -1.3324116714447882, -1.3099594803115906,
-1.2879647512672818, -1.2678525695173448, -1.2495598757268453,
-1.2327894914651552, -1.2171934501366195, -1.2026885689301707,
-1.1891978193089017, -1.1766169219881704, -1.1648294549613638,
-1.1537655594383978, -1.1418971228413284, -1.1304148160907062},
{-1.6216854007770962, -1.6110067776198775, -1.5566542628057505,
-1.4953230108658317, -1.4422735578973516, -1.3966766861267388,
-1.3621361259956757, -1.335782172747713, -1.3132811593750375,
-1.2912406694013043, -1.2710878981051792, -1.2527581234589888,
-1.2359502048093418, -1.2203176864732086, -1.2057791705101408,
-1.1922572211260558, -1.179647013421345, -1.1678317129553761,
-1.1567414951259707, -1.1448432171273453, -1.1333348051302892},
{-1.6246686709337155, -1.614651965154735, -1.560366567948222,
-1.4989769864987466, -1.4458463882419892, -1.400160056671666,
-1.365556062943142, -1.3391626481425192, -1.3166125815278065,
-1.2945261977911287, -1.2743327039333963, -1.255965772741547,
-1.2391201563259528, -1.223451051313532, -1.2088788061191735,
-1.1953255709413497, -1.1826859529846843, -1.170842733601603,
-1.1597261115402944, -1.14779790645116, -1.1362633239077695},
{-1.6276613622576406, -1.6183082341276531, -1.5640899810314295,
-1.502641811643116, -1.4494297877936333, -1.4036537016691,
-1.3689860984850384, -1.342553127269639, -1.3199537750588206,
-1.2978213651622355, -1.2775870147925161, -1.2591828502700082,
-1.2422993720992963, -1.226593570152545, -1.2119874999680178,
-1.198402893018283, -1.1857337656128948, -1.1738625415564456,
-1.1627194328157202, -1.1507612152290676, -1.1392003964465403},
{-1.6306635018936504, -1.6219756166165098, -1.567824535386535,
-1.5063175172163028, -1.4530237867747928, -1.407157651216039,
-1.3724262625819392, -1.3459536388054403, -1.3233047684188932,
-1.3011261988358456, -1.280850857077894, -1.262409383247359,
-1.2454878783810273, -1.2297452699531277, -1.215105279790805,
-1.2014892146653438, -1.1887904771301692, -1.1768911626422778,
-1.165721484911046, -1.1537331680465286, -1.1421460478231893},
{-1.633675117654093, -1.6256541449347424, -1.5715702641336975,
-1.5100041353725828, -1.4566284163392993, -1.4106719358260307,
-1.3758765859456616, -1.349364211286229, -1.3266655904462823,
-1.3044407272682292, -1.284124258781958, -1.2656453981162485,
-1.248685701228169, -1.2329061770360568, -1.2182321709715325,
-1.2045845610100514, -1.1918561122074607, -1.179928621304498,
-1.168732292495406, -1.1567137887141143, -1.1451003012298315},
{-1.636696236946591, -1.6293438515212983, -1.5753272004403698,
-1.5137016980606859, -1.4602437067496794, -1.4141965843555226,
-1.3793370994735596, -1.3527848749017721, -1.330036269771881,
-1.307764977822444, -1.2874072463746415, -1.2688909219086781,
-1.2518928678382508, -1.2360763167835103, -1.2213681991834164,
-1.2076889570707863, -1.1949306963288109, -1.182974942277724,
-1.1717518809491594, -1.1597031014425738, -1.1480631803806318},
{-1.639726887652614, -1.6330447686577827, -1.5790953780287964,
-1.517410237027434, -1.4638696893780434, -1.4177316287641588,
-1.382807834452251, -1.35621565827023, -1.3334168362271157,
-1.3110989787928702, -1.2906998483213101, -1.2721459831191169,
-1.255109403969982, -1.2392557167622726, -1.2245133913966129,
-1.2108024302397098, -1.1980142545544368, -1.1860301515735046,
-1.174780275201556, -1.1627011312029936, -1.1510347099228966},
{-1.642767097626347, -1.6367569287895094, -1.582874829933644,
-1.5211297845198715, -1.4675063946924638, -1.4212770979956986,
-1.3862888210842357, -1.359656590029772, -1.336807317684361,
-1.3144427579463809, -1.294002092197843, -1.2754106073025469,
-1.258335336120581, -1.2424444031948951, -1.2276677730023948,
-1.2139250046948291, -1.201106813554361, -1.1890942739119055,
-1.177817500754827, -1.165707902307986, -1.1540149136508262},
{-1.6458168947292506, -1.6404803645991706, -1.5866655897825694,
-1.5248603729414754, -1.471153853502983, -1.4248330226910184,
-1.3897800906324846, -1.3631077000336518, -1.3402077431637736,
-1.3177963430371165, -1.2973140057620185, -1.2786848223677225,
-1.2615706912638416, -1.2456424015199445, -1.230831370314263,
-1.2170567067842057, -1.2042083972155524, -1.1921673341148562,
-1.1808635823836084, -1.168723438935558, -1.157003816226279},
{-1.6488763069446577, -1.6442151087367165, -1.5904676914287847,
-1.5286020344774442, -1.4748120977328654, -1.4283994340476056,
-1.3932816747656034, -1.366569018076916, -1.3436181427932752,
-1.321159763576361, -1.3006356174937537, -1.2819686562415882,
-1.264815496337178, -1.2488497408321564, -1.2340042110790819,
-1.220197562734029, -1.2073190328810597, -1.195249358559522,
-1.1839185460885346, -1.1717477671572851, -1.1600014423402172},
{-1.651945362305014, -1.6479611934591958, -1.5942811682944011,
-1.5323548015676351, -1.478481158026625, -1.4319763618877914,
-1.3967936039098277, -1.3700405717299873, -1.3470385450509639,
-1.3245330465342704, -1.3039669557892921, -1.285262135852463,
-1.2680697781033814, -1.2520664462190325, -1.2371863206135458,
-1.2233475987104612, -1.2104387456110999, -1.1983403713475127,
-1.1869824170662469, -1.174780910327172, -1.1630078164107545},
{-1.6550240890237546, -1.6517186523387863, -1.5981060545382206,
-1.536118706140769, -1.482161065498076, -1.4355638373854163,
-1.400315909566416, -1.3735223918465636, -1.3504689790242992,
-1.3279162206454203, -1.3073080490703433, -1.2885652891000063,
-1.2713335634944087, -1.255292545289194, -1.2403777258950868,
-1.2265068396045535, -1.213567561486343, -1.2014403986322577,
-1.190055221750299, -1.1778228941147972, -1.166022963294381},
{-1.658112515349785, -1.6554875175334018, -1.6019423835768976,
-1.5398937813552038, -1.485851851217376, -1.4391618910594843,
-1.4038486230565468, -1.3770145069102, -1.353909474271859,
-1.3313093145879975, -1.3106589264953072, -1.2918781424086774,
-1.2746068792530423, -1.258528064146958, -1.243578453149894,
-1.2296753112750594, -1.2167055060508574, -1.2045494654412323,
-1.193136983898512, -1.1808737430765177, -1.16904690771662},
{-1.6612106696156843, -1.6592678225388227, -1.6057901898602722,
-1.5436800596235116, -1.489553547653486, -1.4427705543330376,
-1.4073917759415053, -1.380516947572687, -1.3573600609033747,
-1.3347123570765689, -1.3140196171552816, -1.29520072530795,
-1.27788975335352, -1.2617730314723303, -1.2467885303194635,
-1.2328530413360568, -1.2198526061529265, -1.2076675983989844,
-1.1962277307702607, -1.1839334817123017, -1.1720796752942988},
{-1.6643185802222433, -1.6630595998976787, -1.609649506981441,
-1.547477573822107, -1.4932661853526952, -1.4463898574940686,
-1.410945399395132, -1.3840297420829302, -1.360820767653422,
-1.338125376656535, -1.3173901502505032, -1.2985330639894528,
-1.2811822128933272, -1.2650274738134613, -1.2500079833716882,
-1.2360400548895996, -1.2230088873020577, -1.2107948219418176,
-1.1993274869710149, -1.1870021362956322, -1.1751212906747242},
{-1.6674362756994014, -1.6668628829556837, -1.61352036921744,
-1.5512863569892943, -1.4969897966348071, -1.4500198324967641,
-1.4145095253588806, -1.3875529207816726, -1.364291624573525,
-1.3415484019224095, -1.3207705552613334, -1.3018751865838567,
-1.284484284447899, -1.2682914179895306, -1.2532368395168305,
-1.239236377650741, -1.2261743755097996, -1.2139311622413516,
-1.2024362790907617, -1.1900797306807362, -1.1781717788162496},
{-1.6705637846607715, -1.6706777048912045, -1.6174028109071514,
-1.555106441010139, -1.5007244124772114, -1.4536605096927815,
-1.4180841843099188, -1.391086513236587, -1.3677726611658727,
-1.3449814616524236, -1.3241608620373881, -1.3052271212691267,
-1.2877959960151202, -1.2715648918074294, -1.2564751265708765,
-1.2424420365787228, -1.2293490981301147, -1.217076645252746,
-1.205554132189718, -1.1931662900169613, -1.1812311654102814},
{-1.67370113576726, -1.6745040988662367, -1.621296866253033,
-1.5589378599943302, -1.5044700652870233, -1.45731192128369,
-1.4216694089736848, -1.394630548722489, -1.3712639071072772,
-1.3484245854997425, -1.3275611006829422, -1.3085888952500682,
-1.2911173756601784, -1.2748479223555478, -1.259722870287078,
-1.2456570573613135, -1.2325330801195378, -1.2202312968947808,
-1.2086810716555192, -1.1962618397446931, -1.1842994760118017},
{-1.6768483576906874, -1.6783420983065298, -1.6252025697212957,
-1.5627806461525324, -1.5082267863926972, -1.4609740979740309,
-1.4252652301584021, -1.3981850575892167, -1.374765392878544,
-1.3518778020225, -1.330971301849786, -1.31196053673375,
-1.2944484506951994, -1.2781405381902005, -1.262980099516426,
-1.2488814663029189, -1.2357263493740902, -1.2233951426896965,
-1.2118171245056146, -1.1993664047859056, -1.1873767360175407},
{-1.6800054796403856, -1.6821917365396075, -1.629119955790884,
-1.566634833921853, -1.511994608279565, -1.4646470714706084,
-1.428871680096563, -1.4017500691425084, -1.3782771471560409,
-1.355341140546443, -1.3343914950819453, -1.3153420734033716,
-1.2977892483577307, -1.2814427662960952, -1.2662468403013918,
-1.2521152901226742, -1.2389289310158347, -1.2265682085362641,
-1.2149623152872664, -1.2024800104536553, -1.1904629706750711},
{-1.6831725300598919, -1.6860530471585662, -1.6330490586715314,
-1.5705004551291495, -1.5157735623197368, -1.4683308730018325,
-1.4324887900238537, -1.4053256138431607, -1.3817992007825524,
-1.3588146303955, -1.3378217114313884, -1.3187335321345017,
-1.3011397971113183, -1.284754633978082, -1.269523121382008,
-1.2553585550886055, -1.2421408520694968, -1.2297505212427495,
-1.218116670677773, -1.2056026815116638, -1.1935582056175917},
{-1.6863495384004636, -1.689926063791063, -1.6369899135916057,
-1.574377543764058, -1.519563681571526, -1.47202553560237,
-1.4361165918944607, -1.4089117214280122, -1.3853315839660354,
-1.3622983011409815, -1.3412619824321155, -1.3221349428094982,
-1.3045001245191088, -1.2880761699816503, -1.2728089697466203,
-1.258611287581516, -1.2453621390141052, -1.2329421067624935,
-1.2212802162648586, -1.2087344438768923, -1.1966624667093129},
{-1.689536533674982, -1.6938108198355621, -1.6409425546335115,
-1.5782661329012626, -1.5233649973815773, -1.4757310896075069,
-1.4397551166857738, -1.4125084215011157, -1.3888743259449257,
-1.3657921825542871, -1.3447123388759792, -1.3255463313053042,
-1.30787025857353, -1.2914074011860066, -1.276104412814675,
-1.2618735134601593, -1.2485928185469675, -1.2361429912380117,
-1.2244529779491131, -1.2118753220911458, -1.1997757795124926},
{-1.6927335449108796, -1.6977073493235366, -1.6449070168746402,
-1.5821662567468593, -1.5271775422770588, -1.4794475675771537,
-1.4434043975834356, -1.416115745298157, -1.392427457634767,
-1.369296303815645, -1.3481728116566956, -1.3289677266966464,
-1.3112502276544546, -1.2947483566640585, -1.2794094792334363,
-1.2651452605095983, -1.2518329181348236, -1.23935320149576,
-1.2276349820640462, -1.215025342615263, -1.202898170466142},
{-1.6959406017040237, -1.7016156858444447, -1.6488833355397219,
-1.5860779483446095, -1.531001348839709, -1.483175001860218,
-1.4470644651410112, -1.4197337221685302, -1.395991008839701,
-1.372810694940199, -1.3516434332759673, -1.3323991562283481,
-1.314640059696103, -1.2980990636278875, -1.282724195967603,
-1.2684265548978146, -1.2550824632908189, -1.242572763501812,
-1.230826254515705, -1.218184530527651, -1.2060296649960947},
{-1.6991577332037195, -1.7055358636971505, -1.6528715452295728,
-1.5900012419479026, -1.5348364495512214, -1.486913424285376,
-1.450735352233096, -1.4233623827931297, -1.3995650105407549,
-1.376335386379651, -1.3551242353132693, -1.3358406482202554,
-1.318039783367567, -1.3014595502554585, -1.2860485917753977,
-1.2717174232202524, -1.2583414815671858, -1.2458017047865724,
-1.2340268218176789, -1.2213529109249066, -1.209170290389011},
{-1.7023849690622228, -1.709467916360154, -1.656871681148914,
-1.5939361703312898, -1.538682876895109, -1.4906628667522455,
-1.4544170896315336, -1.4270017574744998, -1.4031494924493018,
-1.37987040781627, -1.3586152497027797, -1.3392922309649293,
-1.3214494262756489, -1.3048298454141332, -1.2893826946201443,
-1.2750178925762157, -1.2616099998995196, -1.249040051110569,
-1.2372367105108424, -1.2245305103933788, -1.2123200717323925},
{-1.7056223389599836, -1.71341187840153, -1.6608837785061041,
-1.5978827684812131, -1.5425406634112733, -1.494423362062662,
-1.4581097095251607, -1.4306518771209085, -1.4067444853026245,
-1.3834157892633812, -1.3621165086933615, -1.342753931070547,
-1.3248690174204967, -1.3082099763942097, -1.2927265320613515,
-1.2783279892246355, -1.2648880446668045, -1.252287830107889,
-1.2404559462993348, -1.2277173537077033, -1.2154790354798024},
{-1.708869872237301, -1.7173677836035495, -1.6649078723548882,
-1.601841069639704, -1.5464098419724905, -1.4981949424673076,
-1.4618132444556977, -1.4343127716656454, -1.4103500199780683,
-1.3869715612472646, -1.3656280447303288, -1.3462257778028288,
-1.3282985850783007, -1.3115999719866522, -1.296080132960924,
-1.2816477408450737, -1.2681756438742013, -1.255545068257561,
-1.2436845556585467, -1.230913467508799, -1.2186472097273509},
{-1.7121275987847184, -1.7213356663305603, -1.6689439983056218,
-1.605811108076523, -1.5502904454242525, -1.5019776406952587,
-1.4655277249366918, -1.437984472295284, -1.4139661259632703,
-1.3905377541723283, -1.3691498903899628, -1.3497077988358797,
-1.3317381579490757, -1.3149998609042086, -1.2994435256478027,
-1.284977174600499, -1.2714728239061515, -1.2588117930718,
-1.2469225657405332, -1.2341188771115412, -1.2218246208340133},
{-1.7153955486310224, -1.7253155610942486, -1.6729921913974977,
-1.6097929180359642, -1.5541825066429737, -1.5057714890153875,
-1.4692531844702899, -1.4416670096325106, -1.4175928351887706,
-1.394114399463433, -1.3726820785141172, -1.3532000214054278,
-1.3351877640379826, -1.3184096706554556, -1.3028167376633064,
-1.2883163168662577, -1.2747796114017547, -1.2620880311533256,
-1.2501700031898508, -1.2373336087694042, -1.225011294343858},
{-1.7186737514375636, -1.7293075022207631, -1.6770524876919808,
-1.6137865337896073, -1.5580860590216616, -1.5095765208589,
-1.4729896536282467, -1.4453604150367028, -1.4212301776042295,
-1.3977015268628747, -1.3762246421028976, -1.3567024750645942,
-1.338647433274673, -1.32182943094449, -1.306199799024398,
-1.2916651959676528, -1.2780960349064117, -1.2653738102526404,
-1.253426895098528, -1.2405576881392335, -1.2282072587931907},
{-1.721962237425032, -1.7333115241617634, -1.6811249224792846,
-1.6177919895781088, -1.5620011353057635, -1.5133927688602853,
-1.4767371653342707, -1.4490647188667936, -1.4248781843016332,
-1.401299167313482, -1.379777614651175, -1.3602151866616623,
-1.3421171934187441, -1.3252591693762952, -1.3095927367539844,
-1.2950238386601995, -1.2814221206535876, -1.2686691576109297,
-1.256693267603623, -1.2437911412544054, -1.2314125409830012},
{-1.7252610368177557, -1.7373276616053772, -1.6852095315152837,
-1.6218093195166148, -1.5659277682170796, -1.5172202652483975,
-1.4804957503274636, -1.4527799521183624, -1.4285368856926652,
-1.4049073517762736, -1.383341028360519, -1.3637381846801873,
-1.3455970732775313, -1.3286989141379308, -1.3129955797503499,
-1.2983922721505223, -1.2847578956170764, -1.2719741000255453,
-1.2599691483083006, -1.2470339941155544, -1.2346271677561163},
{-1.728570179477174, -1.7413559492724744, -1.6893063505267492,
-1.625838559184558, -1.5698659923255036, -1.5210590445967682,
-1.4842654419499013, -1.4565061463345046, -1.4322063134295604,
-1.4085261123182136, -1.3869149172332982, -1.3672714978765725,
-1.349087102458725, -1.3321486957447632, -1.3164083571755327,
-1.3017705246875266, -1.2881033884459612, -1.2752886657744966,
-1.263254563929877, -1.2502862736309908, -1.237851167063127},
{-1.731889696046892, -1.7453964217093016, -1.6934154152622796,
-1.6298797418712638, -1.5738158400326938, -1.5249091381574544,
-1.488046271044368, -1.4602433323962032, -1.435886497665706,
-1.4121554785397166, -1.3904993135602126, -1.3708151532991906,
-1.3525873092276015, -1.3356085405048361, -1.319831097518545,
-1.3051586237052106, -1.29145862520636, -1.278612881545996,
-1.2665495422043023, -1.253548004613549, -1.2410845652739226},
{-1.7352196167903458, -1.7494491139750608, -1.697536762265372,
-1.6339329028050997, -1.5777773451372923, -1.5287705809005274,
-1.4918382703326643, -1.4639915412863047, -1.4395774705208169,
-1.4157954835754936, -1.3940942523549893, -1.3743691806685092,
-1.3560977233610174, -1.339078479064483, -1.3232638293320633,
-1.3085565972069162, -1.2948236351166997, -1.281946775956385,
-1.2698541102399759, -1.256819213685958, -1.2443273900080385},
{-1.7385599722938423, -1.753514061203532, -1.7016704273428331,
-1.6379980773908756, -1.5817505412669561, -1.5326434055550635,
-1.4956414711632533, -1.4677508049990138, -1.4432792612260528,
-1.4194461569004488, -1.3976997654372099, -1.3779336065326788,
-1.3596183736026433, -1.3425585390559718, -1.3267065804848244,
-1.3119644722319208, -1.2981984435045888, -1.2852903751845588,
-1.2731682941866893, -1.26009992688887, -1.2475796686940157},
{-1.7419107930390965, -1.7575912981974398, -1.705816446308745,
-1.6420752995418297, -1.5857354620129627, -1.5365276454467676,
-1.499455905821378, -1.471521155006485, -1.44699190251049,
-1.423107532054928, -1.4013158875586669, -1.3815084614434454,
-1.3631492887107015, -1.3460487502197793, -1.3301593817595858,
-1.3153822777458117, -1.3015830796430237, -1.2886437078796007,
-1.2764921229390893, -1.2633901711451472, -1.250841428840431},
{-1.7452721096151436, -1.7616808599268552, -1.7099748553027894,
-1.646164604670048, -1.5897321408610878, -1.540423334163279,
-1.5032816061175254, -1.475302621956871, -1.4507154249859013,
-1.4267796394960897, -1.4049426516703534, -1.3850937721490482,
-1.3666904986985173, -1.3495491412941192, -1.3336222602847556,
-1.3188100420447881, -1.304977570884148, -1.2920068013299897,
-1.2798256238093018, -1.2666899727810232, -1.2541126973374048},
{-1.7486439530221105, -1.765782782173119, -1.7141456913795992,
-1.6502660281021235, -1.5937406122993707, -1.5443305058815895,
-1.5071186044406204, -1.479095238571972, -1.4544498603045213,
-1.4304625111926725, -1.4085800905195356, -1.3886895684499905,
-1.3702420326044376, -1.3530597412936913, -1.3370952456280065,
-1.3222477922099642, -1.3083819441835658, -1.2953796831770887,
-1.2831688237492926, -1.2699993582009483, -1.257393501131446},
{-1.752026354028203, -1.7698970998553705, -1.7183289904678531,
-1.654379604226051, -1.5977609098154062, -1.5482491938055318,
-1.5109669323719572, -1.4828990355217684, -1.4581952392218227,
-1.4341561799883493, -1.4122282384250866, -1.392295878060395,
-1.3738039197487524, -1.3565805788730358, -1.3405783666403295,
-1.3256955575525353, -1.3117962284632085, -1.298762381382403,
-1.286521750722386, -1.273318353763898, -1.2606838673746097},
{-1.7554193435980778, -1.7740238486039743, -1.722524789183808,
-1.6585053692942893, -1.6017930677317054, -1.5521794323612994,
-1.5148266221913218, -1.4867140448350256, -1.4619515929389308,
-1.4378606761383708, -1.4158871282124892, -1.3959127300167893,
-1.3773761895517964, -1.360111683683499, -1.3440716514342057,
-1.3291533656501997, -1.3152204511516175, -1.3021549234545091,
-1.2898844321534852, -1.276646986936612, -1.2639838232062175},
{-1.758822952769151, -1.7781630636163754, -1.7267331243547233,
-1.6626433577275748, -1.6058371194849315, -1.5561212553056976,
-1.518697705851082, -1.4905402985950786, -1.4657189531044423,
-1.4415760337997199, -1.4195567933238635, -1.3995401539086743,
-1.380958872150586, -1.3636530848289112, -1.3475751298701653,
-1.332621245925111, -1.3186546402521344, -1.3055573379842826,
-1.2932568964952225, -1.2799852846910653, -1.2672933959020156},
{-1.762237212807122, -1.7823147808448994, -1.7309540324913542,
-1.666793606191277, -1.6098931006090424, -1.560074696843003,
-1.5225802153290715, -1.494377827973949, -1.4694973512996512,
-1.4453022840934864, -1.4232372662263515, -1.4031781774556293,
-1.3845519953647454, -1.3672048120242835, -1.3510888305027038,
-1.3360992263187654, -1.322098823651686, -1.3089696512506634,
-1.2966391709542222, -1.2833332734135183, -1.2706126112443599},
{-1.7656621548558178, -1.7864790358798928, -1.735187550291812,
-1.670956148980622, -1.6139610441496188, -1.5640397906481667,
-1.5264741827159014, -1.4982266649967642, -1.4732868197424978,
-1.4490394592594384, -1.4269285804948595, -1.4068268298378825,
-1.3881555904426932, -1.3707668936585833, -1.3546127825957228,
-1.3395873357003438, -1.3255530292208277, -1.3123918926521583,
-1.3000312842068524, -1.2866909815038525, -1.273941496730913},
{-1.7690978102737063, -1.7906558646172925, -1.7394337149908097,
-1.6751310223862674, -1.61804098522407, -1.5680165718713397,
-1.5303796407115442, -1.5020868421470368, -1.4770873879933788,
-1.45278759174289, -1.4306307694623683, -1.4104861415362393,
-1.3917696867538325, -1.3743393606600876, -1.3581470147400978,
-1.3430856028990092, -1.3290172858360165, -1.3158240893062612,
-1.3034332638471824, -1.2900584352555597, -1.2772800793045462},
{-1.7725442105029288, -1.794845302863905, -1.7436925632919156,
-1.6793182622313907, -1.6221329586060165, -1.5720050745840126,
-1.5342966203188553, -1.505958390134765, -1.4808990891942813,
-1.456546714529395, -1.4343438651576434, -1.4141561395044846,
-1.3953943139968032, -1.3779222413177195, -1.3616915557850007,
-1.346594056165486, -1.332491621189547, -1.3192662701894733,
-1.3068451378312602, -1.2934356634377764, -1.2806283852114575},
{-1.7760013871111369, -1.7990473866120738, -1.747964132535344,
-1.6835179036861518, -1.626236997970409, -1.576005332686691,
-1.5382251541850565, -1.5098413421110308, -1.4847219545299595,
-1.4603168601261132, -1.43806790034796, -1.4178368546508864,
-1.3990295020485064, -1.38151556567027, -1.365246435685549,
-1.3501127251456637, -1.3359760647563235, -1.3227184617971943,
-1.3102669346826588, -1.2968226925841009, -1.2839864414181648},
{-1.7794693717860355, -1.8032621519687382, -1.7522484598139272,
-1.6877299835359736, -1.6303531391804427, -1.5800173816987808,
-1.5421652748063934, -1.5137357297280687, -1.4885560153834376,
-1.4640980608910468, -1.4418029079024564, -1.4215283158828242,
-1.4026752804475109, -1.385119363971171, -1.3688116827615886,
-1.3536416386032215, -1.3394706434337422, -1.326180694055438,
-1.3136986828067165, -1.3002195515036874, -1.2873542742581776},
{-1.7829481961089186, -1.807489635375532, -1.7565455824442324,
-1.691954537836864, -1.634481416314884, -1.5840412558609387,
-1.5461170141607, -1.517641585014644, -1.4924013040526916,
-1.4678903502499452, -1.4455489200045122, -1.4252305524405529,
-1.4063316802967165, -1.3887336658626737, -1.3723873262115376,
-1.3571808253218478, -1.34297538730425, -1.3296529942126654,
-1.3171404110726144, -1.303626267823347, -1.2907319099504093},
{-1.7864378919975934, -1.8117298727393063, -1.7608555378810706,
-1.6961916016134637, -1.6386218646384805, -1.58807698979399,
-1.5500804042476375, -1.5215589397466829, -1.4962578521299292,
-1.471693760549897, -1.4493059686155902, -1.428943595083183,
-1.4099987305889954, -1.3923585010034003, -1.3759733954757394,
-1.3607303146782215, -1.3464903242729633, -1.333135390874304,
-1.320592146990748, -1.3070428695955343, -1.2941193749811646},
{-1.7899384914717302, -1.8159829006217478, -1.7651783634373714,
-1.7004412122769281, -1.6427745185610547, -1.5921246186790086,
-1.5540554770504968, -1.5254878269934125, -1.5001256910218217,
-1.4755083245436253, -1.453074085593471, -1.4326674716176058,
-1.4136764620598115, -1.3959938988664362, -1.3795699198035436,
-1.3642901357252413, -1.3500154835783178, -1.3366279123874847,
-1.3240539182370412, -1.3104693853001663, -1.2975166950272978},
{-1.7934500263581867, -1.820248755548164, -1.7695140964751772,
-1.704703405213877, -1.646939413896689, -1.5961841772423213,
-1.5580422655693837, -1.5294282777122135, -1.504004853006336,
-1.479334075598672, -1.4568533040564944, -1.4364022131976526,
-1.417364904891656, -1.3996398910330754, -1.3831769283642643,
-1.367860317677696, -1.3535508944260073, -1.3401305881543522,
-1.3275257542700274, -1.3139058432243473, -1.3009238970844308},
{-1.7969725288603513, -1.82452747401112, -1.7738627753133187,
-1.708978217879121, -1.651116585599084, -1.6002557006740972,
-1.5620408015056455, -1.5333803251360223, -1.5078953698557598,
-1.48317104697162, -1.4606436546946497, -1.440147849614732,
-1.421064089427091, -1.4032965070528007, -1.3867944510475354,
-1.3714408904997981, -1.3570965855396935, -1.3436434463365003,
-1.3310076833931817, -1.317352271385971, -1.304341006478353},
{-1.800506031252553, -1.8288190929870325, -1.7782244372920104,
-1.7132656861394935, -1.6553060693804582, -1.6043392243846029,
-1.5660511175228748, -1.5373440010607737, -1.511797273387856,
-1.4870192714079167, -1.4644451693329756, -1.443904409507013,
-1.4247740465561947, -1.4069637768661778, -1.3904225160586066,
-1.3750318824950227, -1.3606525857176166, -1.3471665148899774,
-1.334499733593475, -1.3208086984195688, -1.3077680481910647},
{-1.8040505658709662, -1.8331236490612355, -1.7825991206482286,
-1.717565846920479, -1.6595078999725956, -1.6084347835458175,
-1.5700732457626145, -1.5413193377407879, -1.5157105963189679,
-1.4908787826752814, -1.4682578803949582, -1.4476719255017088,
-1.4284948063777847, -1.4106417315924773, -1.3940611536418146,
-1.3786333239131636, -1.3642189249949297, -1.3506998241373367,
-1.3380019337400881, -1.3242751528341614, -1.3112050491363334},
{-1.8076061649080657, -1.837441179108282, -1.7869868627713004,
-1.721878736592771, -1.6637221128148667, -1.6125424134406785,
-1.5741072182936477, -1.5453063680433843, -1.5196353696865117,
-1.494749613746535, -1.4720818187342957, -1.451450425609437,
-1.4322263998692506, -1.4143304015269678, -1.3977103929191799,
-1.3822452438344044, -1.3677956326173444, -1.3542434027003765,
-1.3415143115580577, -1.3277516629568709, -1.3146520342888834},
{-1.8111728612575462, -1.8417717202191852, -1.7913877022201632,
-1.726204391923602, -1.6679487442834215, -1.6166621488155215,
-1.5781530680687865, -1.5493051236171596, -1.5235716259885521,
-1.4986317973980476, -1.4759170151864964, -1.4552399409240024,
-1.435968856974796, -1.4180298164428677, -1.4013702635693335,
-1.3858676717045455, -1.3713827375904657, -1.357797278857106,
-1.3450368955018348, -1.3312382576114032, -1.3181090288817359},
{-1.8147506871864607, -1.8461153095267946, -1.7958016772263363,
-1.730542850542406, -1.672187829592076, -1.6207940265576326,
-1.5822108274878701, -1.5533156376714032, -1.5275193979559845,
-1.5025253687781515, -1.4797635023041948, -1.4590405022790947,
-1.439722210443506, -1.4217400093202741, -1.405040795702007,
-1.3895006381262647, -1.3749802702695888, -1.3613614828391292,
-1.348569715199119, -1.3347349658833991, -1.3215760586863325},
{-1.818339675612151, -1.85047198414577, -1.8002288253192091,
-1.734894149018146, -1.6764394047932, -1.6249380812314485,
-1.586280529088981, -1.5573379419402045, -1.5314787170918862,
-1.5064303597882827, -1.4836213103299087, -1.462852139300594,
-1.4434864896484214, -1.425461009157516, -1.4087220182791498,
-1.393144171734093, -1.3785882598058379, -1.3649360432646063,
-1.3521127976855496, -1.3382418158798828, -1.3250531481280632},
{-1.8219398592318612, -1.854841781561845, -1.804669186103638,
-1.7392583242872206, -1.6807035056626773, -1.6290943490021164,
-1.5903622047353565, -1.5613720696401288, -1.535449615728794,
-1.5103468040688313, -1.4874904715834418, -1.4666748841009394,
-1.447261726778379, -1.4291928472084692, -1.4124139615287277,
-1.396798302537718, -1.3822067362762027, -1.3685209899813344,
-1.3556661732036446, -1.3417588362244715, -1.3285403225090704},
{-1.8255512709993127, -1.8592247389988188, -1.8091227971690387,
-1.743635414099117, -1.6849801685348211, -1.6332628659165493,
-1.5944558880783006, -1.5654180528181314, -1.53943212663944,
-1.5142747367117408, -1.4913710164146323, -1.470508765503837,
-1.451047952299632, -1.4329355554327776, -1.4161166548201436,
-1.4004630606796127, -1.3858357292119763, -1.3721163521367998,
-1.3592298693074554, -1.345286056279292, -1.3320376081428549},
{-1.829173943961905, -1.8636208942607482, -1.81358969719804,
-1.7480254554466228, -1.6892694287653285, -1.637443667417756,
-1.5985616110210685, -1.5694759247726324, -1.5434262823127938,
-1.518214189698483, -1.495262976270169, -1.4743538163111225,
-1.4548451979462698, -1.4366891640711401, -1.4198301282158354,
-1.404138475885702, -1.3894752686246647, -1.375722158842109,
-1.3628039154609723, -1.3488235042459564, -1.3355450285234838},
{-1.832807911186137, -1.8680302845732513, -1.8180699249860481,
-1.752428485544442, -1.6935713236198353, -1.6416367895290023,
-1.6026794055633218, -1.5735457172049792, -1.547432113886316,
-1.5221651974679844, -1.49916638202194, -1.478210065741223,
-1.4586534944501182, -1.44045370497588, -1.4235544113926153,
-1.4078245779455756, -1.3931253841365105, -1.3793384401033109,
-1.3663883401532075, -1.3523712090172921, -1.3390626100626832},
{-1.8364532059777048, -1.8724529480932688, -1.8225635199414683,
-1.7568445423748926, -1.6978858886341186, -1.6458422684172547,
-1.6068093059639068, -1.5776274633208232, -1.5514496553805657,
-1.5261277940480795, -1.503081265189394, -1.4820775457355921,
-1.462472874280138, -1.4442292093499418, -1.4272895349640748,
-1.4115213970690093, -1.3967861056771653, -1.3829652255917608,
-1.369983172906359, -1.3559291999372363, -1.3425903767747513},
{-1.8401098615950104, -1.876888922553917, -1.8270705199665827,
-1.7612736631435837, -1.702213160777319, -1.6500601399602601,
-1.6109513438441354, -1.581721195645514, -1.5554789387642813,
-1.5301020127899392, -1.50700765743386, -1.4859562877827557,
-1.4663033686156268, -1.4480157086927647, -1.4310355291272572,
-1.415228963134723, -1.4004574633509037, -1.3866025445786363,
-1.3735884421294031, -1.3594975053674716, -1.3461283553697285},
{-1.8437779113810393, -1.8813382458811247, -1.8315909646589716,
-1.7657158862530196, -1.7065531764455955, -1.6542904414291115,
-1.6151055527461722, -1.5858269473428663, -1.5595199971539841,
-1.534087888099748, -1.510945589210678, -1.489846322707308,
-1.470145009470798, -1.451813235089503, -1.434792422927785,
-1.4189473056067072, -1.4041394870619115, -1.3902504280486028,
-1.3772041777920094, -1.3630761547756265, -1.3496765704512654},
{-1.8474573888515806, -1.8858009562682128, -1.8361248926612461,
-1.7701712489360943, -1.710905972035107, -1.65853320799215,
-1.619271964967993, -1.5899447520096146, -1.5635728632805694,
-1.5380854529357748, -1.5148950930706633, -1.4937476826453349,
-1.473997828679785, -1.4556218201360025, -1.4385602489564917,
-1.422676455895271, -1.407832208002219, -1.3939089055384102,
-1.3808304097074142, -1.366665176970855, -1.3532350483183109},
{-1.851148327958981, -1.8902770917811722, -1.8406723437419714,
-1.7746397899645672, -1.715271585051596, -1.662788476805872,
-1.6234506131859234, -1.5940746409978601, -1.5676375691546127,
-1.5420947430702654, -1.5188561989089067, -1.497660398388689,
-1.4778618577092857, -1.4594414957264235, -1.442339035391342,
-1.4264164436208375, -1.411535654682666, -1.3975780058790406,
-1.3844671667357034, -1.3702646009078308, -1.3568038137091207},
{-1.854850761963462, -1.8947666906169616, -1.845233356976678,
-1.779121546065653, -1.719650051507415, -1.6670562841263745,
-1.627641531327754, -1.598216648621019, -1.571714148600222,
-1.5461157904301217, -1.5228289396800392, -1.5015845016987441,
-1.4817371292010648, -1.46327229358576, -1.4461288139573298,
-1.4301672994588444, -1.4152498579169333, -1.4012577609646542,
-1.38811447887565, -1.3738744569418486, -1.3603828933555633},
{-1.8585647250665716, -1.8992697914036398, -1.8498079719993257,
-1.7836165565367992, -1.7240414093485015, -1.671336666599018,
-1.6318447519515757, -1.6023708076390903, -1.5758026345283724,
-1.5501486307930463, -1.5268133460340323, -1.5055200250226335,
-1.48562367514387, -1.4671142461302225, -1.4499296154936019,
-1.4339290531097504, -1.418974848009384, -1.4049482001100841,
-1.3917723759295768, -1.3774947722704383, -1.3639723123560543},
{-1.8622902509778214, -1.9037864325000555, -1.8543962275234662,
-1.7881248589146708, -1.7284456943416444, -1.6756296607709373,
-1.6360603073408129, -1.6065371504537325, -1.5799030598718673,
-1.5541932969299523, -1.5308094502797758, -1.509466999073993,
-1.4895215280994307, -1.4709673851502885, -1.453741469696979,
-1.4377017354345298, -1.4227106540711247, -1.4086493539034564,
-1.3954408871140913, -1.3811255780346983, -1.3675720969695249},
{-1.8660273736659292, -1.908316652805297, -1.8589981644199725,
-1.792646492300264, -1.732862945233137, -1.679935303862294,
-1.640288231890736, -1.6107157117457973, -1.5840154578108923,
-1.5582498232797661, -1.5348172840658663, -1.513425457647827,
-1.4934307198400347, -1.474831743620598, -1.457564409054612,
-1.4414853767957538, -1.426457308796671, -1.412361252521805,
-1.399120042729919, -1.384766902145202, -1.3711822745353857},
{-1.869776127460682, -1.9128604905617976, -1.8636138215879328,
-1.797181494488541, -1.737293198460975, -1.6842536322619708,
-1.644528557513695, -1.6149065229710686, -1.588139861862146,
-1.5623182445397106, -1.5388368799158343, -1.5173954313886497,
-1.4973512829128595, -1.4787073532788781, -1.461398463059595,
-1.4452800082872272, -1.430214840307599, -1.4160839258656779,
-1.4028098732269427, -1.388418774928141, -1.3748028697482368},
{-1.873536546687319, -1.917417985301654, -1.8682432391015027,
-1.801729904862441, -1.7417364918910607, -1.6885846832374227,
-1.648781318906913, -1.619109619216033, -1.5922763051312359,
-1.5663985938663245, -1.5428682688216213, -1.5213769525507814,
-1.5012832503889513, -1.4825942468778521, -1.4652436632532044,
-1.4490856595402875, -1.433983279588574, -1.4198174050870875,
-1.4065104082292237, -1.3920812247633876, -1.3784339108024142},
{-1.877308665358214, -1.9219891753800766, -1.8728864568984136,
-1.806291761178727, -1.7461928626998997, -1.6929284934194584,
-1.6530465481955616, -1.6233250325913104, -1.5964248217587738,
-1.5704909056894394, -1.5469114843963325, -1.5253700553894305,
-1.5052266546226747, -1.486492456868291, -1.469100041758793,
-1.4529023624345427, -1.4377626578389027, -1.4235617207559699,
-1.41022167860865, -1.3957542812495376, -1.3820754234366177},
{-1.8810925183133804, -1.9265741004674055, -1.877543515405705,
-1.810867103151395, -1.7506623487788602, -1.6972851007758436,
-1.6573242787471827, -1.6275527971247357, -1.6005854441755218,
-1.574595214025976, -1.5509665574809333, -1.529374769419519,
-1.5091815282939933, -1.4904020158355706, -1.4729676282513537,
-1.4567301469578524, -1.4415530044461775, -1.4273169024745584,
-1.4139437131743762, -1.3994379744799517, -1.3857274347246857},
{-1.884888139726172, -1.931172799106207, -1.88221445425188,
-1.815455968691822, -1.7551449878192216, -1.7016545415499422,
-1.6616145453444915, -1.6317929469532828, -1.6047582075152604,
-1.5787115527837159, -1.5550335221050773, -1.5333911301022454,
-1.5131479041156126, -1.4943229559867177, -1.4768464556836989,
-1.4605690445205255, -1.445354351286369, -1.4310829810965515,
-1.417676543147536, -1.403132333587564, -1.3893899726390373},
{-1.8886955644857153, -1.9357853109795542, -1.8868993139603845,
-1.82005839775411, -1.75964081823804, -1.7060368536476744,
-1.6659173796397226, -1.6360455146132153, -1.608943144316072,
-1.5828399565343716, -1.559112410126545, -1.5374191688970313,
-1.5171258150294307, -1.4982553104528051, -1.4807365546257643,
-1.4644190864164557, -1.449166728903947, -1.4348599877594097,
-1.4214201982504164, -1.4068373884656467, -1.3930630639624724},
{-1.8925148272592196, -1.9404116756268195, -1.8915981350746733,
-1.8246744287062029, -1.7641498769426107, -1.7104320738162642,
-1.6702328156225121, -1.640310534156015, -1.613140288669456,
-1.586980458767357, -1.5632032543198875, -1.5414589181709744,
-1.5211152943302295, -1.5021991118592268, -1.4846379569571582,
-1.4682803023897577, -1.452990167454118, -1.438647951476014,
-1.4251747098714986, -1.410553167872422, -1.3967467363618198},
{-1.8963459631204387, -1.945051932678325, -1.8963109582800826,
-1.8293041016586358, -1.7686722034432023, -1.7148402406583045,
-1.674560888146516, -1.6445880397932342, -1.6173496756964596,
-1.5911330930630356, -1.5673060881472338, -1.5455104124630452,
-1.5251163745997474, -1.5061543931042252, -1.4885506949940464,
-1.4721527254005196, -1.4568246983617428, -1.4424469034092908,
-1.428940107452945, -1.414279702516069, -1.4004410184461449},
{-1.900189006769324, -1.9497061214024143, -1.9010378236744145,
-1.833947455193993, -1.7732078353474208, -1.719261391364853,
-1.6789016300317599, -1.6488780651307025, -1.6215713386536663,
-1.595297893814859, -1.5714209441121056, -1.5495736830198439,
-1.5291290890709206, -1.510121186314791, -1.4924747998993553,
-1.4760363856294134, -1.4606703528188518, -1.4462568750859646,
-1.4327164214046206, -1.4180170220934087, -1.4041459382897301},
{-1.9040439934897222, -1.9543742818750616, -1.9057787724159425,
-1.8386045287243178, -1.777756810259234, -1.723695562379362,
-1.6832550741000887, -1.6531806436069019, -1.6258053116707742,
-1.599474894510422, -1.5755478564460645, -1.5536487642566499,
-1.53315347057287, -1.5140995247311366, -1.496410303418088,
-1.4799313144612825, -1.4645271617773687, -1.4500778955116402,
-1.4365036822782713, -1.421765156006586, -1.4078615245052788},
{-1.9079109583817626, -1.9590564538248145, -1.9105338451190619,
-1.8432753627403144, -1.7823191686875361, -1.7281427930356585,
-1.6876212561819557, -1.6574958102428354, -1.6300516297069407,
-1.6036641297305323, -1.5796868577890564, -1.557735689340916,
-1.537189553346252, -1.5180894419681863, -1.5003572384994186,
-1.4838375453728077, -1.4683951568404154, -1.453909996052971,
-1.4403019211895298, -1.4255241362552624, -1.411587807138858},
{-1.9117899367984137, -1.9637526776368759, -1.915303083102117,
-1.8479599962902284, -1.7868949471485394, -1.7326031202173908,
-1.6920002087463217, -1.6618235977348377, -1.63431032688095,
-1.6078656320205482, -1.5838379815941153, -1.5618344913345936,
-1.541237369630835, -1.5220909702038625, -1.5043156363681192,
-1.4877551075878728, -1.472274369043589, -1.4577532076145872,
-1.4441111678243033, -1.4292939912738802, -1.4153248145157704},
{-1.9156809640335268, -1.968462993077992, -1.9200865270577196,
-1.8526584686005663, -1.7914841858037107, -1.737076582183363,
-1.696391966608644, -1.666164041565935, -1.6385814376499184,
-1.6120794361704611, -1.5880012625239033, -1.5659452042782505,
-1.5452969534890144, -1.5261041421981645, -1.5082855297332571,
-1.4916840343248623, -1.4761648301682726, -1.461607560489938,
-1.4479314539166808, -1.4330747524181788, -1.4190725768603443},
{-1.919584075806597, -1.9731874405024428, -1.924884218184161,
-1.857370820351207, -1.7960869225735223, -1.7415632166339492,
-1.7007965633893036, -1.6705171747471468, -1.6428649968984246,
-1.6163055755896494, -1.5921767332038144, -1.5700678606553993,
-1.549368337400665, -1.5301289910094056, -1.512266950092453,
-1.4956243574342807, -1.4800665714865318, -1.4654730855654634,
-1.4517628083158343, -1.436866450432717, -1.422831124975346},
{-1.9234993075242528, -1.9779260605846503, -1.929696198374586,
-1.8620970909541938, -1.8007031968809315, -1.7460630619971198,
-1.7052140329633403, -1.6748830322885624, -1.6471610395237803,
-1.6205440838530194, -1.5963644287694478, -1.5742024958199181,
-1.5534515559193096, -1.5341655499432818, -1.5162599309405778,
-1.4995761084173864, -1.4839796248852508, -1.46934981436425,
-1.4556052629232, -1.4406691161857452, -1.426600489015982},
{-1.9274266950424135, -1.9826788934333308, -1.934522508576265,
-1.8668373215587053, -1.8053330478014686, -1.7505761565316789,
-1.7096444102535315, -1.6792616482835, -1.6514696004524012,
-1.624794994288095, -1.6005643820899422, -1.5783491424845124,
-1.557546642212401, -1.5382138512286474, -1.5202645034805755,
-1.5035393202670093, -1.487904022433213, -1.473237776903261,
-1.459458848919894, -1.444482781629631, -1.4303807001815585},
{-1.9313662741424196, -1.9874459802758793, -1.9393631900748005,
-1.8715915517223038, -1.809976514583468, -1.7551025381926593,
-1.7140877289893979, -1.6836530576420046, -1.6557907146343496,
-1.6290583412228443, -1.60477662912308, -1.5825078347734234,
-1.5616536295201513, -1.5422739286041178, -1.524280700738018,
-1.5075140244953218, -1.4918397951732913, -1.4771370054113504,
-1.4633235960536695, -1.448307477585331, -1.434171789791435},
{-1.9353180807283934, -1.9922273613519792, -1.9442182850634708,
-1.8763598212171928, -1.8146336366044125, -1.759642245282521,
-1.7185440243811172, -1.6880572942263825, -1.6601244177127228,
-1.6333341579338594, -1.6090012024724274, -1.5866786071092065,
-1.5657725520832173, -1.5463458151134546, -1.528308555323747,
-1.5115002534403175, -1.4957869756763102, -1.481047531033255,
-1.4671995360185974, -1.4521432354231365, -1.437973789194075},
{-1.9392821510737122, -1.997023077616177, -1.9490878353135486,
-1.881142171627289, -1.8193044529889448, -1.7641953166730673,
-1.7230133302346076, -1.6924743932395359, -1.6644707447485416,
-1.63762247809791, -1.6132381372444797, -1.5908614934087382,
-1.5699034429962921, -1.5504295429018384, -1.5323480996121361,
-1.5154980398365296, -1.4997455955635814, -1.4849693845535512,
-1.4710866990753857, -1.4559900870372076, -1.441786731211323},
{-1.943258520962445, -2.00183317005758, -1.9539718822124996,
-1.8859386430976883, -1.8239890035056305, -1.7687617904703075,
-1.727495681740038, -1.6969043890458124, -1.6688297307209723,
-1.6419233357155463, -1.6174874688476848, -1.5950565281418676,
-1.5740463368565543, -1.5545251464354806, -1.536399366614205,
-1.5195074164039397, -1.503715687445947, -1.4889025987031346,
-1.4749851166561712, -1.4598480658569315, -1.4456106487959914},
{-1.94724722713363, -2.006657680392891, -1.9588704685957055,
-1.8907492760699824, -1.8286873286124319, -1.7733417059753265,
-1.73199111347094, -1.7013473164151947, -1.6732014123736008,
-1.6462367641724995, -1.6217492302057508, -1.5992637446106528,
-1.5782012665149523, -1.558632657812268, -1.5404623883077875,
-1.5235284150512598, -1.5076972826864221, -1.4928472035826417,
-1.4788948201203311, -1.4637172034344985, -1.4494455734457006},
{-1.9512483056359997, -2.011496649000037, -1.9637836360616348,
-1.8955741117006255, -1.8333994664171769, -1.777935100852119,
-1.736499660726622, -1.7058032100740093, -1.6775858243254334,
-1.6505627973965602, -1.6260234575311188, -1.6034831783908885,
-1.5823682664704393, -1.562752110305155, -1.544537198729813,
-1.5275610688186134, -1.5116904144597356, -1.496803232399543,
-1.482815840645344, -1.4675975330974325, -1.4532915387535468},
{-1.9552617930567067, -2.0163501179504237, -1.9687114267126162,
-1.9004131900237553, -1.8381254587766307, -1.7825420145163662,
-1.741021358226135, -1.710272105408876, -1.6819830030199228,
-1.6549014685224392, -1.6303101850571693, -1.6077148637014034,
-1.5865473713056417, -1.5668835370815941, -1.548623829468852,
-1.5316054101640475, -1.5156951143144397, -1.5007707161275903,
-1.4867482087902317, -1.4714890860668675, -1.4571485781198135},
{-1.9592877259292436, -2.021218128311375, -1.9736538831239159,
-1.9052665535073174, -1.842865344546226, -1.7871624857743882,
-1.7455562406867102, -1.7147540368841874, -1.6863929844512313,
-1.659252812853083, -1.6346094472137338, -1.6119588343026408,
-1.5907386144099291, -1.5710269716910261, -1.552722313987033,
-1.5356614722804807, -1.5197114150541893, -1.5047496876431978,
-1.490691956198134, -1.4753918973947293, -1.4610167251739767},
{-1.9633261411991043, -2.0261007220742613, -1.9786110475579335,
-1.9101342417507112, -1.8476191638910677, -1.7917965537344571,
-1.7501043445699906, -1.719249040381328, -1.6908158039550472,
-1.6636168627883308, -1.6389212796202628, -1.6162151253884076,
-1.594942029703816, -1.5751824471262807, -1.5568326855609484,
-1.5397292870547972, -1.5237393494826392, -1.508740177629079,
-1.4946471144539828, -1.4793059986986918, -1.4648960132471984},
{-1.9673770754552606, -2.030997940864836, -1.9835829634102993,
-1.9150162976366119, -1.852386957676572, -1.7964442570973915,
-1.7546657040147693, -1.7237571500263584, -1.6952514986369351,
-1.6679936536456808, -1.6432457172886643, -1.6204837720870273,
-1.5991576519008959, -1.5793499962419446, -1.5609549762593815,
-1.5438088883202, -1.5277789507817943, -1.5127422193108941,
-1.4986137155792676, -1.483231425190752, -1.468786476758396},
{-1.9714405658414762, -2.0359098265198554, -1.9885696727506001,
-1.9199127616229816, -1.8571687665535137, -1.8011056359009672,
-1.7592403556882346, -1.7282784020535473, -1.6997001044437638,
-1.6723832189891255, -1.6475827947324433, -1.624764808697364,
-1.6033855156383652, -1.583529653482401, -1.5650892198391375,
-1.547900307828968, -1.5318302501909784, -1.5167558440589346,
-1.50259179020577, -1.4871682092853007, -1.472688149962778},
{-1.9755166490213014, -2.0408364210870786, -1.9935712182996213,
-1.9248236746352632, -1.8619646299503074, -1.8057807281857094,
-1.763828335540893, -1.73281283128199, -1.7041616576934757,
-1.6767855932121165, -1.6519325476583617, -1.6290582711626485,
-1.6076256549604295, -1.587721451291145, -1.5692354498314671,
-1.5520035793633724, -1.5358932813214778, -1.5207810851425165,
-1.5065813715118566, -1.4911163852993923, -1.47660106553667},
{-1.9796053628697337, -2.0457777671181248, -1.9985876436257968,
-1.9297490795215708, -1.8667745896364067, -1.810469574507806,
-1.768429678204484, -1.737360473809531, -1.7086361953442974,
-1.6812008102679101, -1.6562950101942988, -1.633364191493456,
-1.6118781042569026, -1.5919254229738726, -1.573393698061409,
-1.556118734584743, -1.5399680764639925, -1.5248179737136525,
-1.510582489438093, -1.4950759871935588, -1.4805252597325307},
{-1.9837067439630118, -2.0507339060332015, -2.0036189913571434,
-1.9346890168671962, -1.8715986859424447, -1.8151722132643044,
-1.7730444210883434, -1.7419213653502084, -1.7131237541834707,
-1.6856289061179268, -1.6606702187054907, -1.6376826083942433,
-1.6161428982923098, -1.5961416027967061, -1.577563999544509,
-1.5602458075154573, -1.544054669135221, -1.5288665428633976,
-1.5145951776321454, -1.4990470496777561, -1.4844607659506437},
{-1.9878208298659956, -2.0557048811697314, -2.008665304778333,
-1.9396435296530399, -1.876436960130377, -1.819888685058686,
-1.777672600113874, -1.7464955408067908, -1.7176243706126115,
-1.6900699135294417, -1.665058207428956, -1.6420135551416024,
-1.6204200717220374, -1.6003700232176925, -1.581746386407758,
-1.5643848305953725, -1.5481530923316313, -1.5329268249406596,
-1.5186194673769933, -1.5030296066433948, -1.488407619537611},
{-1.991947658328172, -2.060690734651871, -2.013726627401411,
-1.9446126589937194, -1.8812894528564357, -1.8246190283607575,
-1.782314250976924, -1.7510830360770342, -1.722138081338926,
-1.6945238683620119, -1.6694590120569046, -1.64635706629997,
-1.6247096597471682, -1.604610718684853, -1.5859408920478018,
-1.5685358369628375, -1.5522633772779955, -1.5369988514758006,
-1.5226553908250935, -1.5070236933206616, -1.4923658539919415},
{-1.996087266896211, -2.0656915092349664, -2.0188030028220965,
-1.9495964469333558, -1.886156205278894, -1.8293632842651277,
-1.7869694110613636, -1.755683887808118, -1.7266649245102599,
-1.6989908049254154, -1.6738726677904197, -1.6507131784783269,
-1.629011696906673, -1.6088637227294385, -1.5901475501777895,
-1.57269885961432, -1.5563855584041448, -1.5410826558654662,
-1.5267029814749549, -1.5110293432771869, -1.4963355052786937},
{-2.0002396929648967, -2.070707247559767, -2.023894474354165,
-1.9545949362418469, -1.8910372591599298, -1.8341214915781165,
-1.7916381179911696, -1.7602981320742401, -1.7312049369247688,
-1.7034707597122178, -1.6782992094158544, -1.6550819261101424,
-1.6333262183325132, -1.6131290683515545, -1.5943663943726278,
-1.576873932073795, -1.5605196678006905, -1.5451782709969848,
-1.530762270464038, -1.5150465913611697, -1.500316606641718},
{-2.0044049748748876, -2.0757379927636066, -2.0290010857152083,
-1.9596081685594982, -1.895932654833814, -1.8388936901865236,
-1.7963204071802465, -1.7649258042583824, -1.7357581547330483,
-1.7079637661336164, -1.6827386725271936, -1.6594633445711224,
-1.637653259014769, -1.6174067892679886, -1.5985974574905413,
-1.5810610865082708, -1.5646657377110387, -1.5492857275858114,
-1.534833290206734, -1.519075472246186, -1.5043091944135085},
{-2.008583150276536, -2.0807837882184685, -2.034122880832001,
-1.9646361873310525, -1.900842435677987, -1.843679921445073,
-1.8010163166254642, -1.7695669422100764, -1.7403246170215425,
-1.7124698614061344, -1.6871910925219709, -1.6638574704738858,
-1.64199285504219, -1.621696920836257, -1.6028407737976522,
-1.5852603576167894, -1.5688238029615604, -1.5534050601236231,
-1.538916074878216, -1.523116022330214, -1.5083133030821045},
{-2.012774257334968, -2.085844676284978, -2.039259903922357,
-1.9696790341367887, -1.9057666420612804, -1.8484802238453995,
-1.8057258839817223, -1.7742215808721085, -1.7449043607521162,
-1.7169890802797454, -1.6916565047831682, -1.6682643375024782,
-1.6463450405462936, -1.6259994956926676, -1.607096377396374,
-1.5894717778755876, -1.5729938941585715, -1.5575363002790255,
-1.5430106570274802, -1.5271682743659767, -1.5123289675757405},
{-2.0169783341507355, -2.0909207011773105, -2.0444121987675317,
-1.974736751517412, -1.9107053158058989, -1.853294638420266,
-1.8104491472731752, -1.7788897577265743, -1.7494974233013636,
-1.721521458159259, -1.6961349439734477, -1.672683982844319,
-1.6507098516085534, -1.6303145483143453, -1.611364300511923,
-1.593695380644931, -1.5771760459028883, -1.5616794800916978,
-1.547117069014348, -1.531232264056598, -1.5163562225861824},
{-2.0211954190099277, -2.096011905963678, -2.0495798093343183,
-1.9798093832414452, -1.9156584987904353, -1.8581232058841124,
-1.81518614271954, -1.783571509149624, -1.754103842551558,
-1.7260670319119527, -1.7006264455849305, -1.677116440343525,
-1.6550873239539214, -1.634642112239817, -1.615644577308558,
-1.597931200027233, -1.581370289390179, -1.5658346339550917,
-1.5512353438207356, -1.5353080248314654, -1.520395104205818},
{-2.025425550579712, -2.101118334356215, -2.054762780575402,
-1.9848969712566031, -1.92062623334823, -1.8629659660418838,
-1.8199369099147589, -1.7882668728925637, -1.7587236564468185,
-1.7306258373209857, -1.7051310457063664, -1.6815617478714557,
-1.6594774927762046, -1.6389822221208306, -1.6199372430201038,
-1.6021792694991746, -1.585576659632352, -1.5700017934323114,
-1.5553655151052226, -1.5393955923173053, -1.5244456466825795},
{-2.0296687672207554, -2.106240029903347, -2.0599611565739906,
-1.9899995590803883, -1.9256085619363148, -1.867822959780824,
-1.8247014865555684, -1.7929758849240898, -1.7633569030185754,
-1.7351979109771491, -1.7096487784474448, -1.6860199398724944,
-1.6638803945461405, -1.6433349120670755, -1.6242423303665419,
-1.6064396230613056, -1.5897951883198402, -1.5741809915562044,
-1.5595076169483946, -1.54349500043827, -1.5285078858760244},
{-2.0339251075947686, -2.111377037155762, -2.065174982204553,
-1.9951171902703209, -1.9306055262459267, -1.8726942273497116,
-1.8294799111426983, -1.797698583217425, -1.7680036206365912,
-1.7397832893911982, -1.7141796798459836, -1.6904910526172898,
-1.6682960647449363, -1.6477002170322521, -1.6285598732210929,
-1.6107122940775298, -1.5940259093549685, -1.578372261417826,
-1.5636616826122918, -1.54760628306758, -1.5325818574456207},
{-2.038194610615392, -2.116529399097999, -2.0704043026053114,
-2.000249906484896, -1.9356171688723407, -1.8775798095393839,
-1.834272222549771, -1.8024350047344342, -1.7726638470121543,
-1.7443820094013063, -1.7187237857106084, -1.6949751217252924,
-1.6727245393121848, -1.6520781705876288, -1.6328899066320446,
-1.61499731706499, -1.5982688558469818, -1.582575635457033,
-1.5678277454644558, -1.551729474154854, -1.5366675960831344},
{-2.042477314987991, -2.12169716063363, -2.075649161644833,
-2.005397753093348, -1.9406435321398021, -1.8824797477500397,
-1.8390784591647389, -1.8071851880486065, -1.7773376210934657,
-1.7489941083658778, -1.7232811304347706, -1.6994721833070798,
-1.6771658545767423, -1.6564688080761698, -1.6372324635340192,
-1.6192947255185572, -1.602524060956057, -1.5867911473178538,
-1.5720058391307248, -1.5558646061654144, -1.5407651378409355},
{-2.046773259582551, -2.126880365793113, -2.080909604970657,
-2.0105607720925036, -1.9456846592602233, -1.8873940826179023,
-1.8438986609253334, -1.8119491701800143, -1.7820249818250886,
-1.7536196237269905, -1.7278517503873445, -1.7039822738843213,
-1.6816200477151142, -1.6608721643642639, -1.6415875794373278,
-1.6236045542573265, -1.6067915591374913, -1.5910188302877941,
-1.5761959982737608, -1.5600117143148964, -1.544874518593133},
{-2.0510824840694113, -2.1320790594145365, -2.0861856776682544,
-2.0157390085114457, -1.9507405927124637, -1.892322855488601,
-1.848732866365026, -1.8167269884470443, -1.786725966790982,
-1.7582585926320462, -1.7324356805329444, -1.7085054292656423,
-1.6860871534518083, -1.6652882735179446, -1.6459552882988646,
-1.6279268372309161, -1.6110713830275927, -1.5952587167412275,
-1.580398256512126, -1.5641708303883206, -1.5489957737190707},
{-2.0554050270293374, -2.1372932852827944, -2.0914774247339665,
-2.0209325045834703, -1.9558113750899793, -1.8972661066873115,
-1.8535811154579278, -1.8215186821471434, -1.7914406157724443,
-1.7629110533380299, -1.7370329560617392, -1.713041685470671,
-1.690567209803703, -1.6697171707965026, -1.650335624908621,
-1.6322616093275428, -1.615363567314489, -1.599510840671428,
-1.5846126483338594, -1.5683419879023859, -1.5531289393693442},
{-2.059740928323663, -2.1425230887216458, -2.096784891989955,
-2.0261413049483963, -1.9608970495755784, -1.9022238782454224,
-1.8584434482254437, -1.8263242884058855, -1.7961689668300096,
-1.7675770434580045, -1.7416436139428697, -1.7175910798687255,
-1.6950602525976137, -1.674158891375555, -1.6547286231725593,
-1.6366089041803207, -1.6196681448018353, -1.6037752350603114,
-1.5888392074957665, -1.5725252189404273, -1.5572740507632261},
{-2.0640902271843515, -2.1477685143872804, -2.102108124719962,
-2.0313654536184913, -1.965997659299319, -1.9071962112338952,
-1.8633199032810808, -1.8311438463206287, -1.8009110598941334,
-1.7722566017328063, -1.746267687620275, -1.722153648159292,
-1.6995663189591141, -1.6786134705325821, -1.6591343184663856,
-1.6409687570667302, -1.6239851500140503, -1.6080519334536802,
-1.5930779682639695, -1.5767205563788593, -1.5614311441640893},
{-2.068452963270829, -2.153029607294229, -2.107447168586077,
-2.0366049945241684, -1.9711132475749764, -1.9121831476441002,
-1.8682105224397674, -1.8359773942502216, -1.8056669334073376,
-1.7769497665867675, -1.7509052152599907, -1.7267294272169238,
-1.7040854454753571, -1.6830809434468392, -1.6635527462494792,
-1.645341202220152, -1.628314617810247, -1.6123409695210285,
-1.5973289655339613, -1.5809280329813191, -1.5656002558171167},
{-2.0728291762061417, -2.1583064124661178, -2.1128020696014573,
-2.0418599721197097, -1.9762438579437003, -1.9171847283541865,
-1.8731153448934492, -1.8408249711101234, -1.8104366272418702,
-1.781656577699323, -1.7555562310517416, -1.731318454054417,
-1.7086176698030613, -1.6875613452684775, -1.6679839401367644,
-1.649726274463319, -1.6326565821509575, -1.6166423768445384,
-1.601592233433621, -1.5851476806928986, -1.5697814213453967},
{-2.0772189061208337, -2.1635989753249305, -2.118172873839285,
-2.047130430732068, -1.9813895338211296, -1.9222009956447437,
-1.8780344113110914, -1.8456866149354028, -1.8152201804077777,
-1.7863770733820274, -1.7602207708878268, -1.7359207644476555,
-1.7131630283911363, -1.6920547115187219, -1.672427936387976,
-1.6541240085025493, -1.6370110762763943, -1.6209561885989388,
-1.605867806414608, -1.5893795314295858, -1.5739746772524086},
{-2.081622192696159, -2.1689073410179844, -2.1235596266560606,
-2.0524164142643713, -1.9865503186665592, -1.9272319907140627,
-1.8829677627763886, -1.8505623659293633, -1.8200176328791713,
-1.7911112935798883, -1.764898871206242, -1.7405363966499863,
-1.7177215589472326, -1.6965610782608564, -1.6768847700004699,
-1.6585344397681183, -1.64137813576599, -1.6252824399925885,
-1.6101557199799572, -1.593623617602134, -1.5781800587828911},
{-2.0860390762500174, -2.174231555318329, -2.128962374963521,
-2.0577179677839013, -1.991726255917456, -1.9322777559500537,
-1.887915439223434, -1.8554522619524505, -1.8248290238698246,
-1.7958592779687024, -1.7695905672553636, -1.7451653860553051,
-1.7222932980548649, -1.7010804801466293, -1.681354475695116,
-1.662957602260576, -1.645757794201927, -1.6296211639746616,
-1.6144560071006708, -1.5978799713775516, -1.582397602567653},
{-2.090469596640105, -2.1795716638171143, -2.134381164691149,
-2.0630351359905035, -1.9969173899571615, -1.9373383331148943,
-1.8928774825690198, -1.860356343586318, -1.8296543938558898,
-1.8006210669555003, -1.7742958958260715, -1.7498077721938898,
-1.7268782835853926, -1.7056129537304514, -1.6858370903501054,
-1.6673935324179183, -1.650150087003567, -1.6339723944984144,
-1.6187687038327567, -1.602148625490372, -1.5866273446263222},
{-2.094913794320746, -2.184927711921773, -2.139816042723396,
-2.0683679642625066, -2.002123765005308, -1.9424137649402837,
-1.8978539338640985, -1.8652746496736654, -1.834493782480422,
-1.8053967011073837, -1.7790148931526346, -1.7544635904450843,
-1.7314765529918077, -1.7101585349737434, -1.6903326482643024,
-1.6718422649464628, -1.6545550486480352, -1.6383361673506442,
-1.6230938447697554, -1.6064296114491299, -1.5908693205092277},
{-2.0993717099918285, -2.1902997463294014, -2.145267055264412,
-2.073716496619454, -2.007345424244704, -1.9475040924480709,
-1.9028448332792323, -1.8702072191845218, -1.8393472296302207,
-1.810186220689502, -1.78374759439248, -1.7591328781963966,
-1.736088144032692, -1.714717259437748, -1.6948411851662968,
-1.6763038344979577, -1.6589727130776737, -1.6427125151094515,
-1.6274314639704244, -1.6107229629888025, -1.5951235674547206},
{-2.1038433841076767, -2.1956878126620722, -2.1507342497006903,
-2.0790807786870573, -2.0125824130700494, -1.952609359366761,
-1.9078502234660846, -1.8751540927514725, -1.8442147768037103,
-1.8149896670256567, -1.7884940373478457, -1.7638156744469597,
-1.7407130938554474, -1.7192891633349063, -1.6993627374358766,
-1.680778277470381, -1.6634031153444084, -1.647101472979557,
-1.6317815971269738, -1.6150287116070103, -1.5993901199144602},
{-2.1083288570462173, -2.201091957203971, -2.156217672269122,
-2.0844608555944433, -2.017834774696894, -1.95772960728209,
-1.9128701452136738, -1.8801153101412638, -1.849096463080059,
-1.819807082269108, -1.7932542574344552, -1.7685120151145384,
-1.74535144015681, -1.7238742822119093, -1.703897340270487,
-1.6852656285773264, -1.6678462908203073, -1.651503076955123,
-1.6361442781999358, -1.6193468902965833, -1.6036690148284833},
{-2.1128281699984655, -2.2065122262520163, -2.1617173701852153,
-2.089856771974155, -2.023102553688659, -1.9628648790021543,
-1.917904640220513, -1.8850909099492128, -1.853992328615277,
-1.824638507241616, -1.7980282915159478, -1.7732219378558511,
-1.7500032207826735, -1.7284726525540464, -1.7084450296788418,
-1.6897659238420601, -1.6723022732476238, -1.655917359446903,
-1.6405195428160368, -1.6236775317120191, -1.6079602878744481},
{-2.1173413637225167, -2.211948666290482, -2.1672333911465103,
-2.09526857495257, -2.0283857957547298, -1.9680152177134005,
-1.9229537510291266, -1.8900809339211264, -1.8589024157481617,
-1.829483984180115, -1.802816176070337, -1.7779454824412824,
-1.7546684740991623, -1.7330843110757996, -1.7130058418551926,
-1.6942791989495163, -1.6767710987005557, -1.6603443575622805,
-1.644907425299607, -1.6280206701921998, -1.6122639756504213},
{-2.121868479269324, -2.217401324345701, -2.1727657819083106,
-2.100696308507395, -2.033684544812786, -1.9731806649833743,
-1.9280175186067936, -1.8950854211761907, -1.8638267644055304,
-1.8343435560709622, -1.8076179476993275, -1.782682684573956,
-1.7593472364860645, -1.737709293334774, -1.7175798122225387,
-1.698805488715152, -1.681252801015944, -1.6647841051672003,
-1.6493079613137525, -1.6323763386280916, -1.6165801135502988},
{-2.1264095579444984, -2.2228702468491974, -2.1783145903409604,
-2.106140018981023, -2.038998845835522, -1.9783612650826399,
-1.9330959854560206, -1.9001044124997861, -1.868765415132657,
-1.839217264936451, -1.812433644223347, -1.7874335841588618,
-1.764039547269931, -1.7423476364565431, -1.722166977255256,
-1.7033448295260314, -1.685747416151571, -1.6692366385905189,
-1.653721185419272, -1.6367445705764112, -1.620908737910213},
{-2.130964641008177, -2.2283554805580934, -2.18387986360176,
-2.111599751999165, -2.044328743018923, -1.98355705976428,
-1.9381891927114339, -1.9051379472221015, -1.87371840832202,
-1.8441051539957698, -1.817263300610648, -1.7921982170228148,
-1.7687454426159093, -1.7469993754275492, -1.7267673721944448,
-1.7078972558774694, -1.6902549772639759, -1.6737019925785717,
-1.658147132195154, -1.6411253992046113, -1.625249884549703},
{-2.1355337699260417, -2.2338570730898937, -2.189461649850273,
-2.117075553676841, -2.0496742821724183, -1.9887680933534284,
-1.9432971834721684, -1.9101860669870803, -1.8786857867089566,
-1.84900726725391, -1.8221069559185707, -1.7969766238165903,
-1.7734649616213574, -1.7516645484502078, -1.731381033634534,
-1.712462804705865, -1.694775521678821, -1.6781802026671357,
-1.6625858374682139, -1.6455188597647066, -1.629603589834005},
{-2.1401169859964284, -2.239375070985261, -2.1950599967312883,
-2.1225674701981916, -2.0550355088362267, -1.993994408287108,
-1.9484200000224519, -1.9152488124454976, -1.8836675904458389,
-1.8539236474825884, -1.8269646468179417, -1.8017688422514766,
-1.778198142470501, -1.7563431910748477, -1.7360079977152054,
-1.7170415108157613, -1.699309083105618, -1.682671305788972,
-1.6670373359411315, -1.649924986399128, -1.6339698894480534},
{-2.1447143311670516, -2.244909522265516, -2.200674952515328,
-2.128075548040215, -2.060412467602873, -1.9992360481955984,
-1.9535576839916757, -1.9203262225564686, -1.8886638613439573,
-1.8588543394762382, -1.831836409844982, -1.8065749094530474,
-1.7829450221142906, -1.7610353400559688, -1.7406483008235227,
-1.7216334097647632, -1.7038556968982448, -1.6871753365194309,
-1.671501662749506, -1.6543438135267934, -1.6383488201536238},
{-2.1493258470545697, -2.250460473698695, -2.206306565172781,
-2.1335998324429966, -2.0658052045491786, -2.00449305663642,
-1.9587102780169516, -1.9254183391676634, -1.8936746403342113,
-1.8637993866432225, -1.8367222826163925, -1.8113948656464345,
-1.7877056388460915, -1.7657410322135547, -1.7453019785461947,
-1.7262385372632707, -1.7084153986543242, -1.6916923314056476,
-1.6759788531380764, -1.658775375897676, -1.642740416857123},
{-2.1539515759413916, -2.2560279735971562, -2.2119548832524742,
-2.1391403712841566, -2.071213764236745, -2.009765477003384,
-1.9638778247026494, -1.930525203115394, -1.898699969315203,
-1.8687588334651082, -1.8416223029962566, -1.8162287484483386,
-1.7924800305736426, -1.7704603044439864, -1.7499690667318646,
-1.730856929163565, -1.7129882229637587, -1.6962223269401875,
-1.68046894184954, -1.6632197085345979, -1.6471447163057746},
{-2.158591559447814, -2.2616120694401616, -2.2176199548339355,
-2.1446972100075072, -2.0766381932480726, -2.0150533534615533,
-1.9690603664639639, -1.9356468550176942, -1.9037398894070066,
-1.8737327253984404, -1.8465365086885868, -1.8210765971962246,
-1.7972682356376026, -1.7751931933999003, -1.754649602844438,
-1.7354886213761347, -1.71757420627182, -1.700765359109937,
-1.6849719644851575, -1.667676847504481, -1.6515617545228451},
{-2.1632458402273187, -2.2672128091853665, -2.223301829128104,
-2.150270396245105, -2.0820785375108244, -2.020356729179184,
-1.9742579457924876, -1.9407833357436175, -1.9087944426864851,
-1.878721106735611, -1.8514649370263214, -1.8259384504017362,
-1.8020702911817352, -1.7799397356611735, -1.7593436220668082,
-1.740133649094787, -1.722173382408073, -1.7053214643892716,
-1.6894879565006704, -1.6721468267242017, -1.6559915675534285},
{-2.167914460069369, -2.272830240563053, -2.229000554032609,
-2.1558599760919606, -2.0875348421359377, -2.0256756478302123,
-1.9794706051980029, -1.9459346861367521, -1.9138636706047691,
-1.8837240228858718, -1.8564076257498527, -1.8308143466092588,
-1.8068862357795297, -1.7846999680368754, -1.7640511616882577,
-1.7447920485683426, -1.7267857886763522, -1.7098906795363291,
-1.694016952525999, -1.6766296838213748, -1.6604341915844998},
{-2.1725974618930195, -2.278464411952882, -2.234716179416864,
-2.1614659962906444, -2.093007153522194, -2.0310101542454504,
-1.9846983878342144, -1.951100947404484, -1.9189476155406737,
-1.8887415182034601, -1.8613646134108421, -1.835704326236737,
-1.81171610718593, -1.7894739280854992, -1.7687722575683438,
-1.749463855416252, -1.7314114590699319, -1.7144730407817406,
-1.69855898777314, -1.6811254527929123, -1.664889661842608},
{-2.17729488797886, -2.284115371759981, -2.2404487537442037,
-2.1670885049661592, -2.0984955173626076, -2.036360292298923,
-1.9899413353232376, -1.9562821603467455, -1.9240463187452406,
-1.893773639378196, -1.866335937025724, -1.8406084268463019,
-1.8165599427993584, -1.794261652554269, -1.773506946672569,
-1.7541491061310808, -1.7360504297212174, -1.719068585698551,
-1.7031140980761847, -1.6856341706443345, -1.6693580153369112},
{-2.182006781171367, -2.2897831687059806, -2.2461983263310685,
-2.172727548679177, -2.1039999806089327, -2.0417261058501026,
-1.9951994917755655, -1.9614783664001152, -1.929159822888323,
-1.8988204310517176, -1.8713216357282363, -1.8455266884229786,
-1.8214177814625145, -1.7990631781358388, -1.7782552653952735,
-1.758847836197674, -1.74070273713005, -1.723677350255457,
-1.707682317970466, -1.6901558740028122, -1.6738392876322905},
{-2.1867331841694977, -2.2954678507976496, -2.2519649462938105,
-2.1783831751399703, -2.1095205897327105, -2.047107639944443,
-2.0004728995227197, -1.9666896065791661, -1.9342881694319658,
-1.9038819394736493, -1.876321747990005, -1.850459149798553,
-1.8262896609812742, -1.803878542210441, -1.7830172505127848,
-1.7635600826506561, -1.7453684163519938, -1.7282993717344652,
-1.712263682838966, -1.6946905978293216, -1.678333515272243},
{-2.1914741400196363, -2.30116946742055, -2.257748663485472,
-2.1840554315385816, -2.115057390736183, -2.0525049388706975,
-2.005761600961705, -1.9719159226224292, -1.939431400031026,
-1.9089582094129582, -1.881336311387713, -1.855405850266834,
-1.831175619172427, -1.8087077821255662, -1.7877929392088845,
-1.768285881204065, -1.7500475039378216, -1.7329346871338203,
-1.7168582289814367, -1.6992383800534299, -1.6828407343637082},
{-2.196229691735425, -2.306888067174441, -2.2635495275026187,
-2.189744365237857, -2.1206104306584166, -2.0579180462918885,
-2.011065640250308, -1.9771573552607151, -1.9445895583776291,
-1.9140492877049837, -1.886365365517122, -1.8603668302712322,
-1.8360756939800922, -1.8135509352177905, -1.7925823688383389,
-1.7730252689325425, -1.7547400356270373, -1.737583333531802,
-1.7214659911769559, -1.7037992561236024, -1.687360980289668},
{-2.2009998827234085, -2.3126236989282916, -2.269367587648958,
-2.1954500245865347, -2.126179754992336, -2.0633470077445963,
-2.0163850587086927, -1.9824139457959973, -1.9497626852717076,
-1.919155218591186, -1.8914089471254556, -1.865342127133772,
-1.8409899241451058, -1.8184080381251988, -1.797385575111548,
-1.7777782817793195, -1.7594460468317266, -1.742245348443248,
-1.7260870042046008, -1.7083732629180304, -1.691894290244818},
{-2.2057847562027746, -2.3183764119985426, -2.275202894130416,
-2.2011724568546924, -2.1317654120393854, -2.0687918677795096,
-2.02171990066563, -1.987685735904961, -1.9549508239433635,
-1.9242760490051296, -1.8964670967434358, -1.8703317825529666,
-1.845918346542021, -1.8232791289992747, -1.8022025967184163,
-1.7825449572010257, -1.7641655750085192, -1.7469207676549559,
-1.7307213037856854, -1.7129604375222698, -1.6964406995175523},
{-2.2105843554309104, -2.324146255697997, -2.281055497343914,
-2.206911710818531, -2.137367448922305, -2.074252671627619,
-2.0270702088455437, -1.9929727675516915, -1.9601540156982082,
-1.9294118242542027, -1.9015398535593704, -1.8753358350732015,
-1.850861000468285, -1.828164244430809, -1.807033470737224,
-1.7873253323668905, -1.7688986569919507, -1.7516096303334052,
-1.7353689267110894, -1.7175608170618943, -1.7010002452734625},
{-2.2153987243891606, -2.3299332794103975, -2.286925446967871,
-2.212667833930027, -2.1429859116178704, -2.0797294643052737,
-2.0324360259510286, -1.9982750813214807, -1.9653723043411446,
-1.9345625892710814, -1.9066272551172005, -1.8803543238755083,
-1.8558179231913527, -1.8330634230769647, -1.8118782339224708,
-1.7921194432856282, -1.773645327804843, -1.7563119724909484,
-1.7400299063956481, -1.7221744378366566, -1.7055729643325321},
{-2.2202279065077164, -2.335737533401698, -2.2928127935556404,
-2.2184408745961264, -2.148620847987331, -2.085222290159436,
-2.037817396045284, -2.003592720004235, -1.9706057314797363,
-1.9397283901125775, -1.9117293418348709, -1.8853872897561814,
-1.8607891533756629, -1.8379767011683725, -1.816736924716679,
-1.796927327850426, -1.778405625216692, -1.7610278312058654,
-1.7447042794592562, -1.7268013373213762, -1.7101588916848414},
{-2.2250719457588275, -2.3415590662734758, -2.2987175875987305,
-2.2242308815093565, -2.154272305098857, -2.090731195607077,
-2.043214361550781, -2.008925724599976, -1.9758543397510948,
-1.944909271911456, -1.9168461521003337, -1.8904347718562349,
-1.8657747294782894, -1.842904117591388, -1.8216095806856174,
-1.8017490229285613, -1.7831795855308883, -1.7657572455646005,
-1.7493920817760227, -1.7314415528380778, -1.714758064626949},
{-2.2299308863330225, -2.347397928848295, -2.3046398793085245,
-2.2300379029202304, -2.1599403296750097, -2.0962562245331355,
-2.0486269658031233, -2.0142741363233654, -1.9811181712830148,
-1.950105279320269, -1.9219777262042044, -1.895496809440374,
-1.8707746888358088, -1.8478457084092952, -1.8264962385401304,
-1.80658456594756, -1.7879672458257119, -1.7705002507827885,
-1.754093348121387, -1.7360951207883772, -1.7193705201279954},
{-2.234804772231655, -2.3532541708227654, -2.310579720477108,
-2.235861988396209, -2.1656249719635525, -2.101797424027609,
-2.0540552531347203, -2.0196379985500243, -1.986397269709414,
-1.9553164585049672, -1.9271241035166895, -1.900573444134352,
-1.8757890709202911, -1.8528015139854688, -1.831396938436228,
-1.8114339947205735, -1.7927686445364088, -1.775256885728595,
-1.758808115071588, -1.740762080255081, -1.7239962951280177},
{-2.239693647637978, -2.3591278422245523, -2.31653716112487,
-2.2417031853474327, -2.1713262767480046, -2.107354838935862,
-2.059499265422346, -2.0250173520398675, -1.9916916772526747,
-1.9605428523100272, -1.9322853232188208, -1.9056647141260328,
-1.8808179133775411, -1.857771570354089, -1.8363117156659428,
-1.816297346696956, -1.7975838178645063, -1.78002718784046,
-1.7635364183406637, -1.7454424675197515, -1.7286354254792968},
{-2.2445975570335577, -2.3650189935797243, -2.3225122526946507,
-2.2475615434559586, -2.1770442932029255, -2.112928514237865,
-2.0649590475004516, -2.0304122389643453, -1.9970014365353563,
-1.9657845069814357, -1.9374614255139022, -1.910770660964772,
-1.8858612546937366, -1.8627559159576776, -1.8412406106763228,
-1.821174658707605, -1.8024128034630849, -1.7848111939019873,
-1.7682782928714005, -1.7501363200499327, -1.733287949260557},
{-2.2495165448435728, -2.3709276751596917, -2.3285050459526246,
-2.2534371116780676, -2.1827790683273633, -2.1185184963069332,
-2.070434641587781, -2.0358227011856798, -2.0023265902200365,
-1.971041465512826, -1.942652450328751, -1.9158913232349732,
-1.8909191330130852, -1.8677545887840097, -1.8461836598180525,
-1.826065968900366, -1.8072556385777716, -1.7896089420937642,
-1.7730337757420784, -1.7548436751167173, -1.7379539028916042},
{-2.2544506560134323, -2.3768539378033893, -2.334515592769094,
-2.259329939239251, -2.1885306510448572, -2.124124831309018,
-2.0759260925478884, -2.041248781635659, -2.007667181391298,
-1.976313773124275, -1.947858437855757, -1.921026741980313,
-1.8959915878840548, -1.8727676273665566, -1.8511409028651542,
-1.830971315230272, -1.812112362091284, -1.79442046927943,
-1.7778029021355906, -1.7595645707806398, -1.7426333245675778},
{-2.2593999349355727, -2.3827978320732655, -2.3405439444923104,
-2.2652400761326135, -2.1942990898569406, -2.1297475656429015,
-2.0814334430797317, -2.046690522609424, -2.0130232534393144,
-1.9816014732750773, -1.953079428676574, -1.926176957818825,
-1.901078657429025, -1.8777950707371929, -1.856112377885438,
-1.8358907355504925, -1.8169830123551947, -1.7992458143489785,
-1.7825857087409531, -1.7642990445565374, -1.7473262512467045},
{-2.2643644270083314, -2.388759409164777, -2.3465901529143594,
-2.271167571281694, -2.2000844322683406, -2.135386744452262,
-2.08695673724651, -2.05214796627115, -2.018394849030301,
-1.9869046096719103, -1.9583154625470343, -1.9313420107937418,
-1.9061803805016098, -1.8828369563598244, -1.861098123521515,
-1.8408242674959183, -1.8218676263350062, -1.8040850136967492,
-1.7873822316578298, -1.7690471339919895, -1.7520327209531388},
{-2.2693441768860794, -2.394738719740417, -2.352654269470804,
-2.277112474101159, -2.205886726893368, -2.1410424139903625,
-2.0924960185839154, -2.0576211548250285, -2.023782011186995,
-1.9922232251374226, -1.9635665799978597, -1.9365219412866281,
-1.9112967956098146, -1.8878933238484024, -1.8660981779576105,
-1.8457719482976245, -1.8267662431317149, -1.8089381052413955,
-1.7921925068185374, -1.7738088760561368, -1.7567527711653383},
{-2.274339230016267, -2.4007358150611253, -2.3587363465594535,
-2.283074835126172, -2.211706022022554, -2.1467146215363755,
-2.0980513308277295, -2.063110131697613, -2.0291847833759675,
-1.9975573640040238, -1.9688328218326205, -1.9417167901374341,
-1.9164279419128434, -1.8929642114017042, -1.8711125803783943,
-1.8507338168201386, -1.8316789012387744, -1.813805127163505,
-1.797016571093991, -1.77858430872584, -1.7614864399729413},
{-2.279349631686273, -2.4067507466370444, -2.364836435741381,
-2.2890547034367046, -2.217542366903217, -2.1524034130379732,
-2.1036227180011338, -2.068614939093095, -2.034603208710905,
-2.0029070684431645, -1.9741142293751182, -1.9469265976767929,
-1.9215738593775313, -1.8980496582516935, -1.876141370175901,
-1.8557099105673842, -1.8366056397026114, -1.8186861172289355,
-1.801854459947208, -1.78337346923945, -1.7662337661895435},
{-2.2843754274217645, -2.412783565956488, -2.3709545895817428,
-2.2950521301900153, -2.223395810215152, -2.158108835163148,
-2.109210224207345, -2.074135620619927, -2.0400373305819812,
-2.008272381590359, -1.9794108425812738, -1.9521514048065,
-1.9267345855259919, -1.9031497035975917, -1.8811845854434068,
-1.8607002674798423, -1.8415464969039022, -1.8235811124359316,
-1.806706211194978, -1.7881763950827008, -1.770994787086238},
{-2.2894166626683727, -2.4188343243295094, -2.377090860360113,
-2.301067164506094, -2.2292664000378863, -2.16383093418699,
-2.114813892643724, -2.079672218831547, -2.045487192684959,
-2.0136533459190105, -1.9847227027275949, -1.957391252512025,
-1.931910160881671, -1.9082643864348938, -1.8862422663260077,
-1.8657049265784735, -1.8465015126967046, -1.8284901510087366,
-1.8115718606641167, -1.7929931244143518, -1.7757695421205426},
{-2.2944733834992803, -2.4249030739738373, -2.383245300499766,
-2.3070998573202814, -2.2351541863645252, -2.169569757163117,
-2.1204337686685903, -2.0852247777220327, -2.0509528383845463,
-2.019050003553275, -1.9900498513779894, -1.962646182088065,
-1.9371006239889539, -1.9133937466431234, -1.8913144513535372,
-1.8707239244358789, -1.8514707256108522, -1.8334132706586388,
-1.8164514448435511, -1.7978236934977758, -1.78055806863631},
{-2.299545635469258, -2.4309898660594627, -2.389417962916923,
-2.313150259156828, -2.241059217314614, -2.1753253510105424,
-2.1260698950536607, -2.0907933397902525, -2.056434311623889,
-2.024462397021125, -1.9953923290559032, -1.9679162339562026,
-1.9423060145563795, -1.9185378231486538, -1.8964011791358644,
-1.8757573004986625, -1.856454174812825, -1.8383505096062436,
-1.8213450006878702, -1.8026681401279347, -1.7853604054071184},
{-2.3046334647515323, -2.4370947535826417, -2.3956088998857012,
-2.319218420660036, -2.246981542855792, -2.181097762808349,
-2.131722317131789, -2.096377949725138, -2.0619316561933374,
-2.029890568635892, -2.000750178063754, -1.97320144999685,
-1.9475263730164443, -1.923696655758249, -1.9015024903346784,
-1.8808050928419107, -1.8614519008115167, -1.843301904416876,
-1.8262525652244221, -1.8075265021398081, -1.7901765904971398},
{-2.3097369175447966, -2.4432177878970833, -2.4018181653736974,
-2.3253043926852115, -2.2529212127374194, -2.1868870397738647,
-2.1373910786642227, -2.101978651193349, -2.0674449156176706,
-2.0353345603762136, -2.0061234390996106, -1.9785018711590965,
-1.9527617384774203, -1.9288702849189576, -1.9066184229995997,
-1.8858673397153325, -1.8664639429043746, -1.8482674942606536,
-1.8311741751494992, -1.8123988163315516, -1.795006662279775},
{-2.314856040165978, -2.4493590220135957, -2.408045811447664,
-2.331408226167696, -2.2588782752682164, -2.1926932288224634,
-2.1430762242998753, -2.1075954877342156, -2.0729741343166097,
-2.0407944138278253, -2.011512154047523, -1.9838175387158117,
-1.958012150873401, -1.9340587491751648, -1.9117490169664961,
-1.890944079383189, -1.8714903404143115, -1.853247316339548,
-1.8361098677414702, -1.817285120512679, -1.799850658797368},
{-2.319990879004763, -2.455518507735178, -2.4142918919806107,
-2.3375299718427414, -2.264852781314403, -2.198516377244232,
-2.1487777991351322, -2.1132285037419933, -2.0785193571427953,
-2.046270170547359, -2.016916364984354, -1.9891484955478518,
-1.9632776503131026, -1.9392620896178414, -1.9168943114491412,
-1.8960353502734506, -1.87653113343913, -1.858241408939648,
-1.8410596798494225, -1.8221854520379566, -1.8047086173392017},
{-2.32514148075461, -2.4616962984055135, -2.420556460003354,
-2.343669681406027, -2.270844779046456, -2.2043565327403485,
-2.154495846305508, -2.118877743363555, -2.084080627097137,
-2.0517618726662477, -2.0223361129792465, -1.994494781432877,
-1.968558277192642, -1.9444803454825887, -1.9220543448464014,
-1.9011411907995353, -1.881586361239897, -1.8632498096048948,
-1.8460236485188943, -1.827099847185309, -1.8095805761440715},
{-2.3303078919307154, -2.467892446269616, -2.4268395690251054,
-2.3498274060293625, -2.276854319505219, -2.2102137426263653,
-2.1602304125954106, -2.1245432519353926, -2.089657989668922,
-2.057269562057627, -2.0277714406038285, -1.9998564403394994,
-1.9738540714570263, -1.9497135575693392, -1.92722915810009,
-1.906261640968296, -1.886656065344141, -1.8682725564212888,
-1.8510018105662311, -1.8320283445609675, -1.8144665717736643},
{-2.3354901594411785, -2.4741070044619846, -2.4331412730207376,
-2.3560031977758626, -2.2828814528984367, -2.2160880551055016,
-2.1659815416023775, -2.1302250740263844, -2.095251488946815,
-2.0627932802999567, -2.0332223898185475, -2.005233512874838,
-1.9791650739643956, -1.9549617655429756, -1.9324187892707414,
-1.911396738145413, -1.8917402849911014, -1.8733096875439514,
-1.855994204266608, -1.8369709806902392, -1.8193666418192151},
{-2.3406883304414805, -2.4803400261826027, -2.439461625639524,
-2.362197107879183, -2.288926228244236, -2.22197951747512,
-2.171749278488278, -2.13592325396894, -2.100861170394637,
-2.068333068556967, -2.0386890020454302, -2.010626041166688,
-1.9844913243978226, -1.9602250097123033, -1.9376232782014995,
-1.916546521919372, -1.8968390602785803, -1.8783612412116781,
-1.8610008658979496, -1.8419277930552198, -1.8242808224204055},
{-2.3459024520579987, -2.486591564513219, -2.4458006810818915,
-2.36840918807502, -2.2949886963833706, -2.2278881773236208,
-2.177533669397235, -2.14163783775075, -2.1064870784175582,
-2.0738889685417234, -2.044171320812893, -2.0160340683978575,
-1.9898328642229899, -1.965503330440697, -1.9428426644408319,
-1.9217110307217808, -1.9019524314062437, -1.8834272543499537,
-1.8660218336735852, -1.846898818621412, -1.829209150022507},
{-2.351132571391645, -2.492861672761137, -2.452158493024399,
-2.3746394908812363, -2.301068907541776, -2.233814084025653,
-2.1833347584797593, -2.1473688704136293, -2.112129258650384,
-2.079461022927717, -2.0496693876157224, -2.0214576366524852,
-1.9951897339851712, -1.9707967681715672, -1.9480769871624943,
-1.9268903043557657, -1.9070804387556564, -1.8885077670638566,
-1.871057144831866, -1.851884095234709, -1.8341516598229646},
{-2.356378736161787, -2.499150404597458, -2.458535116042185,
-2.3808880675824184, -2.307166911676177, -2.23975728359801,
-2.1891525918290426, -2.153116396824771, -2.1177877549489494,
-2.085049272671313, -2.0551832445962646, -2.026896788018348,
-2.00056197426602, -1.9761053623078624, -1.9533262857257796,
-1.932084381540335, -1.9122231229302997, -1.8936028157731926,
-1.8761068369894929, -1.8568836593913147, -1.8391083868737041},
{-2.3616409938476863, -2.5054578138206125, -2.464930604701294,
-2.387154971824202, -2.313282760715083, -2.245717826670443,
-2.194987215971196, -2.1588804641360184, -2.123462614516029,
-2.0906537599585135, -2.0607129357413214, -2.032351566314901,
-2.005949626716756, -1.9814291552684153, -1.9585906010215695,
-1.9372933021622885, -1.9173805248683493, -1.8987124397062871,
-1.8811709474684903, -1.8618975488861906, -1.844079367150698},
{-2.3669193917849043, -2.511783953932536, -2.4713450130275305,
-2.3934402552986285, -2.319416503956745, -2.2516957594234555,
-2.2008386754059757, -2.164661116908974, -2.1291538820805727,
-2.0962745262295357, -2.0662585019708786, -2.037822013226105,
-2.011352731482475, -1.9867681857795105, -1.9638699718016142,
-1.9425171052425867, -1.922552684594848, -1.9038366773093003,
-1.8862495153953205, -1.866925801459729, -1.8490646330319578},
{-2.3722139784495084, -2.518128879231881, -2.4777783961944806,
-2.3997439703343844, -2.3255681928822014, -2.257691131417232,
-2.2067070177654386, -2.1704584024846554, -2.134861603331956,
-2.101911613764969, -2.071819987369963, -2.043308173051628,
-2.0167713302580523, -1.992122495026706, -1.969164438352891,
-1.9477558306825813, -1.9277396424331528, -1.9089755666791461,
-1.8913425772552728, -1.871968453622685, -1.8540642198386195},
{-2.377524801551772, -2.5244926434352237, -2.4842308086499543,
-2.4060661701842037, -2.331737877761043, -2.263703990742215,
-2.212592288131418, -2.176272366239573, -2.140585823883157,
-2.10756506501275, -2.077397433844453, -2.048810087831953,
-2.0222054644254968, -1.9974921233369969, -1.974474040318455,
-1.9530095183035883, -1.9329414385319978, -1.9141291464475216,
-1.8964501714472135, -1.8770255428244127, -1.8590781606762903},
{-2.3828519091766793, -2.5308753009303473, -2.4907023059877247,
-2.4124069073659484, -2.3379256099760823, -2.2697343864092545,
-2.218494533415651, -2.182103054426989, -2.1463265904785658,
-2.1132349224790232, -2.0829908848354535, -2.0543278019649733,
-2.027655174872052, -2.002877111550333, -1.9797988180762331,
-1.9582782083452912, -1.9381581148409168, -1.9192974548022903,
-1.901572336380923, -1.882097106292349, -1.8641064872026618},
{-2.3881953494583286, -2.5372769065197645, -2.4971929427028954,
-2.4187662355943758, -2.3441314408883045, -2.2757823675492546,
-2.2244138007699803, -2.187950514991826, -2.15208394880392,
-2.11892122817153, -2.08860038295461, -2.059861358615308,
-2.033120503714599, -2.008277500885015, -1.9851388122733624,
-1.963561940148793, -1.9433897115886793, -1.9244805312046083,
-1.9067091099277604, -1.8871831815704354, -1.8691492333491624},
{-2.3935551713584573, -2.543697514473024, -2.503702774489284,
-2.425144207867561, -2.350355422080611, -2.28184798242728,
-2.2303501366586715, -2.193814793139609, -2.157857945490832,
-2.12462402465826, -2.094225971814012, -2.0654108008166077,
-2.038601491913141, -2.0136933314242924, -1.9904940634987724,
-1.9688607547759602, -1.948636268669361, -1.9296784139223746,
-1.911860530701233, -1.892283805875195, -1.8742064296311582},
{-2.398931423067552, -2.550137179563535, -2.5102318564568122,
-2.4315408766415203, -2.3565976045538264, -2.287931279908662,
-2.236303588222654, -2.199695936644275, -2.163648626767099,
-2.130343354827346, -2.0998676942836028, -2.07097617330146,
-2.0440981811298116, -2.0191246447575395, -1.9958646122613573,
-1.9741746925428743, -1.9538978277450951, -1.934891141620028,
-1.9170266364853887, -1.897399017081625, -1.8792781085358001},
{-2.4043241533054243, -2.5565959567284153, -2.516780244255642,
-2.437956296649645, -2.3628580388503906, -2.294032309000613,
-2.24227420313764, -2.2055939924466657, -2.1694560395953886,
-2.1360792617597326, -2.1055255936553294, -2.0765575194745907,
-2.0496106131831766, -2.0245714815428073, -2.0012504982623796,
-1.979503794322227, -1.959174429102859, -1.9401187536459474,
-1.9222074665158289, -1.9025288514567364, -1.8843643010550295},
{-2.4097334110338124, -2.563073900713789, -2.5233479937378434,
-2.4443905208499928, -2.3691367776664265, -2.3001511200382083,
-2.248262029112084, -2.2115090078659705, -2.1752802305782097,
-2.141831788667332, -2.1111997131702083, -2.0821548836793227,
-2.055138829982752, -2.030033882940188, -2.006651763975242,
-1.984848101001262, -1.964466113873641, -1.9453612893339596,
-1.92740305915504, -1.9076733475776564, -1.8894650379297673},
{-2.4151592455637, -2.569571067344441, -2.529935161001049,
-2.450843604390684, -2.375433873523434, -2.3062877613847377,
-2.2542671139599406, -2.217441030603368, -2.1811212472857733,
-2.147600978369155, -2.1168900968623348, -2.087768309902458,
-2.0606828732270515, -2.0355118902225513, -2.0120684497414913,
-1.990207653190737, -1.9697729225190415, -1.9506187871920702,
-1.9326134530601848, -1.9128325420242618, -1.8945803494025313},
{-2.420601705347508, -2.576087511210062, -2.5365418015790056,
-2.457315599443973, -2.3817493767273845, -2.312442282527627,
-2.260289506037225, -2.2233901073559537, -2.1869791359749797,
-2.1533868746737426, -2.122596787612565, -2.093397842403647,
-2.06624278486197, -2.0410055455358815, -2.0175005965138553,
-1.9955824927601498, -1.975094896817609, -1.955891286543192,
-1.9378386871758266, -1.9180064727588615, -1.899710266465263},
{-2.4260608404565573, -2.5826232882682234, -2.5431679720240936,
-2.4638065610088233, -2.388083340214507, -2.3186147328924562,
-2.266329253481672, -2.229356286850816, -2.1928539449945674,
-2.159189521538792, -2.1283198296368937, -2.0990435262101528,
-2.071818607051682, -2.0465148897892504, -2.022948245965381,
-2.000972661320702, -1.9804320765433658, -1.96117882677936,
-1.94307880053384, -1.9231951767069404, -1.90485481869473},
{-2.4315366997725505, -2.5891784538398497, -2.5498137278555078,
-2.4703165433711547, -2.394435814985627, -2.324805162366829,
-2.272386404667486, -2.2353396156759118, -2.198745721132582,
-2.1650089624963584, -2.134059265586984, -2.104705404552078,
-2.077410381356458, -2.052039964532014, -2.028411438812327,
-2.0063782001816435, -1.9857845024453127, -1.9664814472525904,
-1.9483338310928957, -1.9283986911068496, -1.9100140355621988},
{-2.4370293332667643, -2.595753064359087, -2.5564791267897817,
-2.476845600951492, -2.400806854297116, -2.3310136203035654,
-2.2784610096132383, -2.241340142161789, -2.2046545118209906,
-2.1708452414241037, -2.1398151409011916, -2.110383523726341,
-2.0830181505189103, -2.0575808121029695, -2.0338902171606605,
-2.0117991514525784, -1.9911522169786622, -1.9717991870566038,
-1.9536038196165464, -1.9336170544847846, -1.915187948008679},
{-2.4425387906103424, -2.602347175210525, -2.563164224222419,
-2.4833937886432977, -2.4071965107068536, -2.3372401575943513,
-2.284553116558527, -2.2473579149518628, -2.210580365437636,
-2.176698403447517, -2.1455874984894763, -2.1160779268429906,
-2.088641956801439, -2.06313747384047, -2.0393846220104024,
-2.017235557494132, -1.9965352597573656, -1.9771320861909771,
-1.9588888041289465, -1.9388503032350854, -1.920376584475889},
{-2.448065121732725, -2.6089608429138025, -2.5698690777317097,
-2.4899611608852865, -2.413604835732258, -2.3434848230463103,
-2.2906627749507606, -2.2533929813071154, -2.216523329665506,
-2.1825684917494073, -2.1513763818875304, -2.121788659347658,
-2.0942818419534888, -2.0687099922070047, -2.044894695503899,
-2.0226874603395117, -2.0019336727600603, -1.982480184360611,
-1.9641888244259462, -1.9440984751927317, -1.9255799761413073},
{-2.4536083765051444, -2.615594123099072, -2.576593743688136,
-2.4965477725490928, -2.420031882429612, -2.3497476668017043,
-2.2967900356634345, -2.259445390689507, -2.222483453264431,
-2.1884555517463014, -2.157181836937525, -2.1275157667878375,
-2.0999378489505034, -2.0742984104072093, -2.050420479314198,
-2.0281549025203276, -2.0073474959681334, -1.9878435208593146,
-1.9695039207435912, -1.9493616078034393, -1.930798152647185},
{-2.459168605499144, -2.6222470730226632, -2.583338279131567,
-2.5031536785318167, -2.4264777031057747, -2.3560287394357147,
-2.3029349466705753, -2.265515189847065, -2.2284607831170433,
-2.1943596276796598, -2.1630039056653914, -2.133259292368166,
-2.1056100193709426, -2.079902768949978, -2.055962013972021,
-2.033637926557276, -2.012776770719938, -1.993222135330143,
-1.9748341310114483, -1.954639738683909, -1.9360311438031204},
{-2.464745858696915, -2.6289197485675686, -2.5901027413747215,
-2.5097789347964863, -2.4329423508279433, -2.362328090632218,
-2.3090975601917307, -2.271602428092592, -2.234455368557974,
-2.2002807650242175, -2.1688426338369027, -2.1390192823782854,
-2.1112983964703744, -2.085523111582006, -2.061519343063992,
-2.0391365759169275, -2.018221537960926, -1.9986160675471183,
-1.9801794952763885, -1.9599329050943197, -1.941278980277275},
{-2.470340186608155, -2.6356122070465062, -2.596887188112305,
-2.516423596403911, -2.439425879125338, -2.368645771719457,
-2.3152779260562966, -2.2777071547425294, -2.2404672573320568,
-2.206219009040069, -2.1746980663810973, -2.1447957814853,
-2.1170030227040115, -2.0911594803292246, -2.067092507128109,
-2.044650893221842, -2.023681839596975, -2.004025358150102,
-1.9855400542037387, -1.965241145055188, -1.9465416934945097},
{-2.4759516402373265, -2.642324504922726, -2.6036916760422173,
-2.5230877182621043, -2.44592833986826, -2.374981831846526,
-2.321476094326499, -2.2838294166249398, -2.2464964987048006,
-2.2121744041796774, -2.1805702460005705, -2.1505888337596843,
-2.122723940436117, -2.0968119181416114, -2.07268154904159,
-2.0501809219495044, -2.0291577160205634, -2.009450046622078,
-1.9909158463706262, -1.9705644958921766, -1.9518193136573245},
{-2.481580270165068, -2.6490566996872076, -2.610516263433965,
-2.52977135686524, -2.4524497868878825, -2.3813363219123858,
-2.3276921172182483, -2.289969264249521, -2.2525431414578634,
-2.218146996034193, -2.1864592192869168, -2.1563984855056333,
-2.1284611931369, -2.1024804680746456, -2.078286510251928,
-2.055726705460984, -2.034649208166229, -2.014890173155436,
-1.9963069132099918, -1.975902995585784, -1.9571118734274933},
{-2.487226127354006, -2.6558088482961466, -2.617361007636646,
-2.536474567714322, -2.458990273549716, -2.3877092939510476,
-2.333926044695545, -2.2961267460304953, -2.2586072339217935,
-2.2241368304676143, -2.1923650299322617, -2.162224781455734,
-2.1342148226285644, -2.108165173063753, -2.083907432439446,
-2.0612882865971187, -2.0401563571685983, -2.0203457780298777,
-2.001713293695502, -1.9812566824293754, -1.9624194051320956},
{-2.4928892629013717, -2.662581008113193, -2.624225966173981,
-2.543197405662795, -2.4655498520223773, -2.3941007961366267,
-2.3401779294254084, -2.302301909905509, -2.2646888249473704,
-2.230143953100196, -2.198287723309477, -2.168067765847809,
-2.1399848720429873, -2.1138660752912983, -2.0895443580229767,
-2.066865709883132, -2.04567920442787, -2.0258169011030986,
-2.00713502796134, -1.9866255923298013, -1.9677419419494981},
{-2.498569728424627, -2.669373236845786, -2.6311111981849535,
-2.5499399299478682, -2.472128577675903, -2.4005108819801535,
-2.3464478230562236, -2.308494806278759, -2.2707879646259244,
-2.23616840925024, -2.204227345489926, -2.1739274852225208,
-2.1457713849631546, -2.1195832201810845, -2.095197330130759,
-2.0724590183053806, -2.051217791860836, -2.0313035834587936,
-2.0125721559670637, -1.9920097646790964, -1.9730795180621499},
{-2.504267574799087, -2.6761855922031828, -2.6380167610841454,
-2.5567021937567915, -2.478726502820791, -2.406939600361511,
-2.352735776810732, -2.314705483338912, -2.2769047018518904,
-2.2422102450655075, -2.210183940096613, -2.1798039828572655,
-2.1515744037860713, -2.1253166487549606, -2.100866390072042,
-2.0780682563963637, -2.056772160121909, -2.0368058651110914,
-2.0180247196549317, -1.9974092375014152, -1.9784321674596868},
{-2.5099828538150177, -2.6830181321001874, -2.6449427132138226,
-2.5634842547078733, -2.4853436816265457, -2.41338700270353,
-2.359041843985324, -2.320933991082711, -2.283039085690689,
-2.248269506570068, -2.2161575534919393, -2.185697305489157,
-2.1573939719892223, -2.13106640713886, -2.10655158042573,
-2.0836934677136014, -2.062342350727704, -2.04232378730012,
-2.0234927585406695, -2.0028240480969544, -1.983799927180371},
{-2.5157156173027033, -2.6898709144243185, -2.6518891135056037,
-2.5702861691206635, -2.4919801673349866, -2.419853141051135,
-2.3653660762502113, -2.3271803779134643, -2.2891911653641728,
-2.2543462397297844, -2.222148231248866, -2.1916074972723436,
-2.1632301326972083, -2.136832536478323, -2.11225294329779,
-2.089334696342121, -2.0679284046236717, -2.047857390207355,
-2.0289763132059306, -2.0082542341369845, -1.9891828342733788},
{-2.521465917101523, -2.696743997708836, -2.658856019967061,
-2.5771079943078803, -2.498636014333897, -2.42633806518279,
-2.3717085270145617, -2.333444693860656, -2.295360990861809,
-2.260440490619658, -2.228156018878508, -2.1975346031904337,
-2.169082929904107, -2.142615082208067, -2.117970521267125,
-2.094991986781679, -2.0735303643305087, -2.053406714458106,
-2.0344754242578347, -2.01369983431141, -1.9945809262499097},
{-2.5272338051454426, -2.703637439866725, -2.6658434917662817,
-2.583949786854646, -2.5053112767636776, -2.4328418277800665,
-2.378069248778047, -2.339726988113398, -2.3015486116782995,
-2.2665523050673073, -2.234180962372193, -2.203478669234755,
-2.1749524054575886, -2.1484140877364553, -2.1237043572036782,
-2.1006653825752437, -2.079148270586302, -2.058971801518055,
-2.039990132463572, -2.019160886051395, -1.9999942416106933},
{-2.5330193338231766, -2.7105513000151404, -2.6728515876129677,
-2.5908116035570856, -2.5120060083536373, -2.439364479298092,
-2.3844482947461074, -2.3460273099808546, -2.3077540773556393,
-2.2726817298098467, -2.240223107368365, -2.2094397393229883,
-2.1808386043012433, -2.154229597112135, -2.129454493497178,
-2.1063549290447554, -2.0847821658680914, -2.0645526922853605,
-2.045520479692641, -2.0246374280468444, -2.005422821643151},
{-2.5388225553142547, -2.7174856362453284, -2.6798803665260493,
-2.59769350130955, -2.51872026442652, -2.445906070726778,
-2.390845718295168, -2.3523457100382075, -2.313977438119764,
-2.2788288106348773, -2.2462825009570224, -2.215417860123125,
-2.186741569723381, -2.1600616545074445, -2.1352209738106467,
-2.1120606691656576, -2.0904320908375666, -2.070149427410797,
-2.051066506995994, -2.0301294980599778, -2.0108667088388756},
{-2.5446435224184825, -2.724440507688996, -2.686929888150189,
-2.604595538450667, -2.5254540976020508, -2.452466655329772,
-2.397261572739808, -2.3586822372271854, -2.320218744011072,
-2.284993594203115, -2.25235918823455, -2.2214130754546204,
-2.192661345787201, -2.1659103034398868, -2.141003839475161,
-2.11778264865643, -2.0960980883974116, -2.0757620495751326,
-2.056628255322721, -2.0356371336238226, -2.0163259453511273},
{-2.550482287273553, -2.7314159736106376, -2.6940002109040506,
-2.6115177714818856, -2.5322075635522197, -2.4590462829728494,
-2.403695912769763, -2.3650369412789587, -2.326478044851683,
-2.2911761270261195, -2.2584532171422325, -2.227425431847223,
-2.1985979765122465, -2.1717755885656516, -2.1468031348122167,
-2.123520911682135, -2.1017801993439207, -2.0813905993200024,
-2.0622057653745287, -2.041160374399624, -2.021800577203976},
{-2.556338903334108, -2.738412093323859, -2.701091395403637,
-2.618460258872801, -2.538980717137747, -2.4656450070324354,
-2.4101487917541817, -2.37140987287421, -2.3327553905983223,
-2.297376454960613, -2.264564633533155, -2.2334549726438127,
-2.204551506169082, -2.177657553795143, -2.152618902102404,
-2.1292755017711897, -2.1074784675438423, -2.087035117630876,
-2.0677990804833826, -2.0466992576548364, -2.027290647467453},
{-2.5622134227887727, -2.745428925478336, -2.7082035005369107,
-2.6254230581689626, -2.5457736124881194, -2.4722628780291416,
-2.4166202639607945, -2.3778010815294692, -2.339050831982604,
-2.303594625009282, -2.2706934840571193, -2.239501744919835,
-2.2105219788900285, -2.1835562435371685, -2.158451185659942,
-2.1350464659444697, -2.1131929343100637, -2.092695646904758,
-2.0734082411581767, -2.052253822424973, -2.032796205396153},
{-2.5681058996196953, -2.7524665303699294, -2.7153365863050567,
-2.6324062269268325, -2.5525863047478197, -2.4788999482298095,
-2.423110383831954, -2.3842106177726237, -2.345364418688405,
-2.309830682719621, -2.2768398163789243, -2.2455657930004236,
-2.216509439294896, -2.1894717019858945, -2.1643000275289523,
-2.1408338468318107, -2.118923641377478, -2.098372228563676,
-2.0790332899377972, -2.0578241067414638, -2.0383172979381925},
{-2.574016386453877, -2.7595249670721387, -2.7224907126910693,
-2.6394098232012766, -2.559418847624329, -2.4855562694065156,
-2.429619205162453, -2.3906385313603096, -2.3516962020585197,
-2.3160846753999067, -2.283003676933731, -2.251647161792789,
-2.2225139321308234, -2.1954039730007935, -2.170165472172812,
-2.1466376894713903, -2.1246706305209955, -2.1040649049646163,
-2.084674267563969, -2.0634101495088544, -2.0438539753085934},
{-2.5799449371988885, -2.766604296391961, -2.7296659392741276,
-2.6464339054546144, -2.566271297815547, -2.4922318938079115,
-2.43614678378799, -2.3970848730568832, -2.3580462317404454,
-2.322356649052381, -2.289185113426356, -2.2577458972991735,
-2.228535501908482, -2.2013531011834857, -2.1760475626906555,
-2.1524580393524957, -2.130433945621917, -2.109773717751523,
-2.0903312169648416, -2.0690119892169605, -2.049406286332669},
{-2.5858916052147833, -2.7737045775938896, -2.7368623273032426,
-2.6534785328221915, -2.573143709625583, -2.4989268749741314,
-2.442693173798034, -2.403549692920933, -2.3644145583821228,
-2.3286466500649112, -2.2953841732960427, -2.263862044488633,
-2.2345741944009205, -2.207319130531687, -2.181946343574964,
-2.158294940920314, -2.136213628520636, -2.1154987082736625,
-2.0960041803809872, -2.0746296644574613, -2.0549742821276595},
{-2.5918564444746153, -2.780825871250272, -2.744079936070193,
-2.6605437625112245, -2.5800361386936856, -2.5056412634330627,
-2.449258430595364, -2.4100330423279956, -2.3708012325150776,
-2.334954725629359, -2.3016009033017326, -2.2699956487267627,
-2.2406300537550123, -2.213302105275943, -2.187861858670658,
-2.1641484391657286, -2.1420097221052856, -2.1212399206124246,
-2.1016931997946813, -2.080263214349543, -2.0605580139235826},
{-2.597839508600373, -2.787968237455061, -2.751318827020441,
-2.6676296538644237, -2.586948640364426, -2.5123751111932506,
-2.4558426095100003, -2.416534971078363, -2.3772063053656893,
-2.341280921420548, -2.307835353014525, -2.276146755913942,
-2.24670312616945, -2.219302071400307, -2.1937941525757196,
-2.1700185778281593, -2.1478222689038375, -2.126997395465878,
-2.107398318614287, -2.0859126783579995, -2.0661575341728167},
{-2.6038408521635574, -2.795131737495467, -2.7585790595039725,
-2.674736265140382, -2.593881269443955, -2.5191284725660807,
-2.462445764478616, -2.4230555304020527, -2.383629827065306,
-2.347625284081005, -2.314087568774994, -2.2823154106699803,
-2.252793456591462, -2.2253190707087924, -2.199743268854945,
-2.1759054031317646, -2.1536513112187095, -2.132771176053211,
-2.1131195772177307, -2.0915780946888844, -2.0717728944473492},
{-2.6098605290808337, -2.802316431479994, -2.7658606955483265,
-2.6818636559655715, -2.600834082106303, -2.525901398064889,
-2.469067952806654, -2.429594771223492, -2.3900718484001118,
-2.353987860115012, -2.320357598880946, -2.288501659208123,
-2.258901090492145, -2.231353150225914, -2.2057092530048976,
-2.181808960165654, -2.159496891712479, -2.1385613044876663,
-2.118857019369898, -2.097259503290843, -2.0774041460208537},
{-2.6158985934580414, -2.8095223805958085, -2.7731637957913335,
-2.689011885697255, -2.6078071341216855, -2.532693942743208,
-2.475709229205677, -2.4361527451037546, -2.3965324205200886,
-2.360368696401565, -2.3266454922413686, -2.2947055469740008,
-2.2650260745940614, -2.2374043533563963, -2.211692149601731,
-2.187729293196753, -2.1653590545247425, -2.144367823148059,
-2.124610687733366, -2.1029569430502306, -2.0830513413238805},
{-2.621955100556079, -2.8167496456280787, -2.7804884208417207,
-2.6961810123029863, -2.6148004812384897, -2.5395061574199644,
-2.48236964908574, -2.442729501868598, -2.40301159333103,
-2.366767838910164, -2.332951295578823, -2.30092711929683,
-2.2711684535825043, -2.2434727247818955, -2.2176920037127275,
-2.1936664471941185, -2.1712378420234018, -2.150190775999363,
-2.13038062468695, -2.1086704538138292, -2.08871453077154},
{-2.628030104757272, -2.823998288558869, -2.7878346326760948,
-2.703371096511546, -2.621814178972272, -2.5463380948422127,
-2.489049268533563, -2.449325094021333, -2.409509418961534,
-2.3731853346362186, -2.3392750590646756, -2.307166422604496,
-2.277328273943567, -2.2495583106538106, -2.223708860867191,
-2.1996204680617666, -2.1771332972966775, -2.1560302044890705,
-2.1361668737154105, -2.114400075512094, -2.0943937663214456},
{-2.6341236610496708, -2.8312683698641194, -2.7952024922815326,
-2.7105821974982973, -2.62884828380993, -2.5531898093686323,
-2.4957481433812063, -2.4559395734468126, -2.416025947295566,
-2.379621230687917, -2.345616830727522, -2.3134235025718226,
-2.2835055812647624, -2.2556611549152876, -2.229742766234267,
-2.2055914000156918, -2.1830454633018235, -2.1618861535316682,
-2.1419694768665067, -2.120145848235552, -2.1000890973227797},
{-2.6402358244122297, -2.838559951956995, -2.8025920605541614,
-2.717814373801957, -2.6359028511215, -2.5600613522219646,
-2.5024663298463565, -2.4625729897052224, -2.422561228657287,
-2.38607557254727, -2.351976657701016, -2.319698404335213,
-2.2897004223377735, -2.261781303124735, -2.235793766365532,
-2.2115792878248612, -2.1889743834653927, -2.1677586642617825,
-2.147788477501308, -2.125907811026991, -2.1058005737213534},
{-2.6463666501531407, -2.845873096923242, -2.810003400398273,
-2.7250676874100463, -2.642977938590775, -2.5669527789395943,
-2.509203884143062, -2.4692253965040436, -2.429115315037052,
-2.3925484076244175, -2.3583545913024864, -2.325991175523086,
-2.2959128435177263, -2.2679188012589293, -2.2418619067357213,
-2.2175841773678258, -2.1949201014867867, -2.17364778117917,
-2.1536239178603864, -2.1316860049664683, -2.111528243363864},
{-2.652516193513293, -2.853207865722652, -2.817436572906445,
-2.732342196497484, -2.6500736013440473, -2.5738641403295333,
-2.5159608613539604, -2.4758968448950327, -2.4356882561660314,
-2.3990397829729773, -2.3647506780653202, -2.3323018605078687,
-2.3021428903193737, -2.274073694337858, -2.2479472337290645,
-2.2236061130352027, -2.2008826611090626, -2.17955354703372,
-2.159475841664971, -2.13748047050467, -2.117272155057435},
{-2.658684510475723, -2.8605643212904397, -2.8248916404190823,
-2.7396379617966886, -2.6571898966649314, -2.58079549093236,
-2.5227373197667475, -2.4825873870540818, -2.442280104260135,
-2.405549744842574, -2.371164968564699, -2.338630507554626,
-2.308390610080096, -2.2802460287748545, -2.2540497943846276,
-2.22964514117848, -2.206862106013432, -2.1854760067035386,
-2.1653442919305235, -2.14329124815049, -2.1230323560776014},
{-2.6648716559520835, -2.8679425251139037, -2.8323686639596417,
-2.7469550432506367, -2.664326879530563, -2.587746883782529,
-2.5295333131143707, -2.4892970745022467, -2.4488909076499112,
-2.412078340181324, -2.377597511458589, -2.344977161337738,
-2.314656048107281, -2.286435849073314, -2.2601696350648126,
-2.2357013059918245, -2.2128584786660213, -2.191415202629287,
-2.171229311017669, -2.1491183789003117, -2.128808893259702},
{-2.671077686794888, -2.875342540877682, -2.839867707065423,
-2.7542935015808325, -2.671484608465107, -2.594718372052739,
-2.536348900586745, -2.496025959870167, -2.455520718729531,
-2.4186256164284714, -2.3840483556232357, -2.35134186961659,
-2.320939251963864, -2.2926432028507406, -2.2663068028450652,
-2.241774652786262, -2.2188718243996846, -2.197371178710455,
-2.177130942705844, -2.1549619036813965, -2.134601811729226},
{-2.677302658390545, -2.882764430689349, -2.847388831902208,
-2.7616533978798543, -2.6786631396280427, -2.6017100109347666,
-2.5431841374884243, -2.50277409571936, -2.462169587270182,
-2.425191620073747, -2.3905175502259226, -2.3577246786553587,
-2.3272402672555472, -2.298868135054363, -2.272461344506155,
-2.247865226250724, -2.224902186640975, -2.203343978868361,
-2.183049230268807, -2.160821862911689, -2.1404111567571817},
{-2.6835466273205384, -2.8902082578715635, -2.8549321008613333,
-2.76903479221437, -2.685862529753649, -2.6087218525972276,
-2.5500390796223655, -2.509541534425807, -2.4688375641562743,
-2.4317763986982754, -2.3970051444266574, -2.3641256346199953,
-2.3335591410395864, -2.3051106927705405, -2.2786333086987725,
-2.253973073362431, -2.230949609511299, -2.209333647690073,
-2.1889842170785414, -2.166698299712152, -2.146236973512714},
{-2.689809650037205, -2.8976740846010216, -2.86249757657788,
-2.776437744829309, -2.693082836241956, -2.615753950620274,
-2.55691378515985, -2.516328328390955, -2.4755246991771855,
-2.438379998508026, -2.403511188647826, -2.3705447860666027,
-2.3398959205478604, -2.311370922405331, -2.2848227428257815,
-2.260098237406055, -2.237014137146616, -2.2153402294570697,
-2.1949359459249536, -2.172591254719009, -2.152079307641543},
{-2.696091782670919, -2.905161974733346, -2.870085322017985,
-2.7838623180468858, -2.7003241152342525, -2.622806360719551,
-2.5638083093326713, -2.523134530918469, -2.4822310435665713,
-2.445002468146413, -2.4100357314491703, -2.3769821791283903,
-2.3462506517716974, -2.3176488699245965, -2.2910296943337016,
-2.266240765038674, -2.243095813875698, -2.221363768399897,
-2.200904460874881, -2.1785007702674193, -2.157938201333309},
{-2.7023930822142574, -2.9126719917312585, -2.877695399973163,
-2.791308571850095, -2.707586424818146, -2.6298791354092828,
-2.570722710537666, -2.5299601939841523, -2.488956646848237,
-2.451643854514259, -2.4165788233003695, -2.3834378616265894,
-2.3526233821066853, -2.3239445829858596, -2.2972542122151935,
-2.2724007020115096, -2.249194684827671, -2.2274043098805123,
-2.206889805926039, -2.1844268889835803, -2.1638137002446456},
{-2.70871360590354, -2.9202041992830345, -2.885327873784263,
-2.7987765681464225, -2.7148698224882537, -2.636972329721175,
-2.5776570444322715, -2.536805371681112, -2.495701559331792,
-2.4583042048288917, -2.423140513339604, -2.389911880087311,
-2.35901415821354, -2.33025810660547, -2.303496343542065,
-2.2785780920967227, -2.2553107930070837, -2.2334618969034636,
-2.212892023690074, -2.1903696520203084, -2.1697058449863107},
{-2.7150534098218486, -2.9277586605167016, -2.8929828064210596,
-2.8062663677883393, -2.7221743650297867, -2.644085997420916,
-2.58461136835831, -2.5436701167855063, -2.502465831254085,
-2.4649835673299094, -2.4297208507850883, -2.3964042834486463,
-2.3654230277970782, -2.3365894897360704, -2.309756138118246,
-2.2847729833447374, -2.261444185020082, -2.2395365753436636,
-2.2189111589905224, -2.1963291033425776, -2.1756146827101475},
{-2.721412552300535, -2.935335439968185, -2.9006602620756894,
-2.813778032967093, -2.729500110988738, -2.6512201928999275,
-2.5915857392101316, -2.550554482761072, -2.509249513164832,
-2.4716819893583306, -2.4363198872197245, -2.4029151187860407,
-2.371850037932745, -2.342938778543612, -2.3160336441615073,
-2.29098542004067, -2.267594905439182, -2.2456283907704346,
-2.224947254082508, -2.202305285150942, -2.1815402544707467},
{-2.727791090219398, -2.9429346017459466, -2.908360303059453,
-2.821311624793452, -2.736847116237186, -2.658374970953446,
-2.5985802138529834, -2.557458522296656, -2.516052654158557,
-2.4783995189354755, -2.44293767110139, -2.4094444328802638,
-2.378295235637779, -2.3493060195833095, -2.3223289096567896,
-2.2972154477574804, -2.273762997778249, -2.251737387065077,
-2.231000353800482, -2.2082982405627263, -2.1874826054263394},
{-2.734189081034856, -2.950556210373179, -2.9160829945358273,
-2.8288672053786286, -2.7442154403943277, -2.6655503856563882,
-2.605594850010675, -2.5643822900128725, -2.5228753047049395,
-2.485136204104492, -2.44957425346729, -2.415992275589815,
-2.384758668962604, -2.355691260065214, -2.3286419844880584,
-2.3034631131704373, -2.2799485083742184, -2.2578636106809427,
-2.237070502320421, -2.214308013153641, -2.193441778788838},
{-2.740606582705368, -2.9582003301802615, -2.923828399863851,
-2.8364448368520243, -2.7516051403290476, -2.6727464928226254,
-2.6126297038208577, -2.571325839006022, -2.52971751424775,
-2.491892092861235, -2.456229684063146, -2.4225586945285613,
-2.391240385331912, -2.362094547788729, -2.3349729179353744,
-2.30972846197983, -2.2861514821634046, -2.264007105943165,
-2.2431577433017083, -2.220334645939147, -2.199417817646463},
{-2.747043653294895, -2.965867025857733, -2.9315965824207524,
-2.8440445811938844, -2.759016274514579, -2.679963347134617,
-2.6196848335239338, -2.5782892231363803, -2.5365793335113267,
-2.4986672335835465, -2.462904012467334, -2.4291437375613896,
-2.397740433072613, -2.368515929509158, -2.3413217598354095,
-2.316011539693136, -2.292371965275379, -2.27016791877395,
-2.2492621204655734, -2.2263781825058686, -2.205410765865963},
{-2.7535003504472115, -2.9735563619615277, -2.9393876072390412,
-2.851666500180727, -2.7664489015842264, -2.6872010020160815,
-2.626760296167049, -2.5852724963551736, -2.5434608121213387,
-2.505461674896651, -2.469597291557875, -2.4357474540593103,
-2.404258859438414, -2.374955453135044, -2.3476885579111695,
-2.3223123928546556, -2.298610001893394, -2.2763460953610775,
-2.2553836794795643, -2.232438667477254, -2.2114206696824112},
{-2.7599767327610607, -2.981268403971626, -2.9472015380015364,
-2.859310656629532, -2.7739030780758185, -2.694459514488699,
-2.633856147811457, -2.5922757126427314, -2.55036199877577,
-2.512275465156563, -2.476309569166915, -2.442369890981354,
-2.410795712883555, -2.3814131652543438, -2.354073362563213,
-2.3286310674011474, -2.304865638336196, -2.282541679804126,
-2.261522463097208, -2.238516144148889, -2.2174475720748887},
{-2.766472858513225, -2.9890032175026136, -2.9550384398608003,
-2.866977112746099, -2.781378863743157, -2.701738938634662,
-2.640972447632521, -2.5992989261176263, -2.5572829446100513,
-2.519108652271825, -2.4830408972084115, -2.44901109881539,
-2.417351042098744, -2.3878891138992913, -2.3604762235918315,
-2.334967610993772, -2.311138919827499, -2.288754719600547,
-2.2676785159237625, -2.244610656744044, -2.2234915178923984},
{-2.7729887863624754, -2.996760867350531, -2.962898377201782,
-2.874665932104108, -2.7888763172850304, -2.709039331173699,
-2.648109252219001, -2.6063421925246075, -2.564223699580907,
-2.52596128733785, -2.489791327097919, -2.4556711249242653,
-2.423924895381788, -2.394383347032999, -2.3668971909173706,
-2.341322068550653, -2.3174298933008686, -2.29498525919189,
-2.273851882928284, -2.25072225063559, -2.2295525510016887},
{-2.7795245751312905, -3.004541419300949, -2.970781414584053,
-2.882377176418231, -2.7963954961815034, -2.7163607461225183,
-2.655266618265159, -2.6134055639595317, -2.571184312724654,
-2.5328334162477404, -2.4965609074970416, -2.4623500188536127,
-2.430517320859508, -2.4008959114980826, -2.373336313808977,
-2.3476944873618777, -2.3237386038381374, -2.301233344729553,
-2.2800426085632353, -2.256850969242805, -2.2356307167538034},
{-2.786080283756746, -3.0123449397251534, -2.9786876168836898,
-2.89011090933127, -2.803936460026307, -2.723703239684255,
-2.6624446048263053, -2.6204890964254446, -2.578164835085772,
-2.5397250902278756, -2.5033496923970233, -2.4690478305674333,
-2.4371283680884517, -2.407426856269012, -2.3797936419396137,
-2.3540849140154023, -2.3300650978308113, -2.3074990228524257,
-2.286250736535294, -2.2629968575492967, -2.241726060026849},
{-2.792655971239583, -3.020171493975795, -2.9866170494133257,
-2.897867193878483, -2.8114992671180516, -2.731066868349444,
-2.669643267930951, -2.6275928444629244, -2.5851653158606496,
-2.5466363581181213, -2.510157731412619, -2.475764608094323,
-2.4437580854428234, -2.413976228759566, -2.386269226353761,
-2.3604933949245606, -2.3364094206190202, -2.3137823398246837,
-2.292476312839426, -2.2691599616409803, -2.2478386257353122},
{-2.79925169703165, -3.028021148587868, -2.994569777376455,
-2.905646091894596, -2.8190839761591633, -2.7384516859856376,
-2.6768626660632435, -2.6347168615720875, -2.5921858049150615,
-2.5535672689875355, -2.516985074751574, -2.4825004002268543,
-2.45040652217358, -2.4205440758596524, -2.3927631155784184,
-2.366919976851932, -2.3427716204132594, -2.3200833405717276,
-2.298719381375122, -2.2753403240130865, -2.2539684576622676},
{-2.8058675206157204, -3.035893970154575, -3.0025458660602453,
-2.913447669659945, -2.826690646914358, -2.7458577516626974,
-2.6841028575181554, -2.6418612044471956, -2.599226354384882,
-2.5605178724326834, -2.523831776852603, -2.4892552579622134,
-2.457073728310206, -2.4271304473804776, -2.399275361269247,
-2.37336470691298, -2.3491517421825847, -2.3264020717651874,
-2.3049799870459537, -2.2815379921266867, -2.2601155993324937},
{-2.8125035013945308, -3.0437900249671657, -3.0105453812320775,
-2.921271988776425, -2.8343193385480845, -2.753285118877102,
-2.6913638980513497, -2.6490259273341508, -2.606287012593384,
-2.567488218723156, -2.53069788619905, -2.496029229787382,
-2.4637597521759744, -2.4337353901355527, -2.4058060124807525,
-2.379827631666558, -2.3555498329151305, -2.332738579625584,
-2.311258175253897, -2.2877530113910325, -2.2662800950056408},
{-2.819159699456577, -3.051709379786189, -3.018568388419226,
-2.9291191127231286, -2.8419701100574457, -2.7607338448869996,
-2.698645847645821, -2.6562110846898577, -2.613367831629148,
-2.5744783574446046, -2.5375834569495055, -2.50282236590283,
-2.4704646446080005, -2.4403589543326234, -2.4123551206103,
-2.386308799876133, -2.361965940475784, -2.339092911930493,
-2.3175539907242637, -2.293985425734718, -2.272461988373834},
{-2.825836175126824, -3.0596521023398964, -3.026614953403623,
-2.9369891057394852, -2.849643020235817, -2.7682039861065277,
-2.705948761693435, -2.6634167324045848, -2.620468860390247,
-2.581488337698829, -2.544488539628219, -2.5096347140606667,
-2.477188453070994, -2.4470011854791665, -2.418922733893851,
-2.392808256128774, -2.368400109040522, -2.3454651118736365,
-2.323867477796739, -2.3002352814146434, -2.2786613201642467},
{-2.8325329878134653, -3.0676182587594667, -3.0346851422691543,
-2.94488203182118, -2.85733812923354, -2.7756955984805245,
-2.713272700286325, -2.670642925382708, -2.6275901510962285,
-2.588518211228802, -2.5514131869349512, -2.516466326898808,
-2.4839312303593033, -2.4536621351799113, -2.425508904576418,
-2.399326050268428, -2.3748523883186863, -2.3518552291461674,
-2.3301986833866977, -2.306502625331632, -2.2848781346365286},
{-2.839250197957881, -3.075607916802255, -3.0427790209178056,
-2.952797955200367, -2.8650554972300597, -2.783208740351256,
-2.720617720769951, -2.6778897197145852, -2.6347317544641555,
-2.595568027529225, -2.558357451365737, -2.523317253388086,
-2.490693025087239, -2.460341851157864, -2.4321136823054985,
-2.40586222784259, -2.3813228255421564, -2.3582633087753493,
-2.336547653125308, -2.3127875029094866, -2.2911124714446487},
{-2.8459878667745215, -3.083621144232893, -3.0508966563720605,
-2.9607369398399896, -2.8727951833425323, -2.790743466874119,
-2.727983880231477, -2.6851571698935004, -2.6418937217458733,
-2.6026378375609056, -2.565321384827257, -2.5301875424229365,
-2.497473887866363, -2.467040382543928, -2.438737118129211,
-2.4124168375747104, -2.3878114668041235, -2.3646893977638683,
-2.342914431323152, -2.319089960994461, -2.297364370297146},
{-2.8527460542700283, -3.091658008779632, -3.0590381142683327,
-2.968699050019495, -2.8805572478049726, -2.7982998354891606,
-2.7353712377807824, -2.692445331991621, -2.6490761041786755,
-2.609727691648004, -2.5723050399501517, -2.537077246033732,
-2.5042738693700812, -2.473757778396248, -2.4453792623826303,
-2.418989926663926, -2.394318360598845, -2.371133543099859,
-2.349299063989747, -2.325410047356854, -2.3036338729871204},
{-2.8595248218025517, -3.0997185782980523, -3.0672034614653967,
-2.9766843506295118, -2.8883417501238, -2.8058779036473425,
-2.7427798503085796, -2.699754262681381, -2.6562789535237243,
-2.6168376413006627, -2.5793084700708278, -2.543986412583763,
-2.511093019882537, -2.4804940881185757, -2.452040164356731,
-2.425581542727741, -2.4008435544674285, -2.3775957908255805,
-2.3557015973965463, -2.331747806780186, -2.309921016865701},
{-2.866324229955353, -3.107802920781978, -3.0753927647310775,
-2.9846929061532137, -2.8961487510459847, -2.813477727373538,
-2.750209777314012, -2.7070840157102793, -2.6635023208145867,
-2.6239677365992975, -2.5863317280054616, -2.5509150935868092,
-2.5179313900589477, -2.487249361063732, -2.4587198761037143,
-2.4321917339802894, -2.4073870955762686, -2.384076189417101,
-2.36212207671997, -2.338103287609556, -2.3162258398988342},
{-2.8731443407832558, -3.1159111050437787, -3.0836060914589325,
-2.992724781859579, -2.90397831073642, -2.821099365959526,
-2.757661076346267, -2.714434648922179, -2.670746258321742,
-2.631118029457866, -2.59337486685763, -2.557863338592142,
-2.5247890308928618, -2.494023646959249, -2.465418446718104,
-2.438820547529758, -2.4139490326851956, -2.3905747836688533,
-2.3685605497521465, -2.3444765367239597, -2.3225483776077454},
{-2.879985214838598, -3.1240431994265236, -3.0918435076382593,
-3.0007800416788086, -2.9118304897638154, -2.82874287476443,
-2.7651338057257817, -2.7218062174943043, -2.6780108189450402,
-2.63828857147746, -2.6004379395308206, -2.5648311987461057,
-2.5316659940144746, -2.500816995754576, -2.472135928193893,
-2.4454680328017275, -2.4205294144812797, -2.397091621605796,
-2.3750170618732227, -2.350867602217477, -2.3288886689406354},
{-2.8868469141707465, -3.1321992724842858, -3.100105081604852,
-3.0088587512836966, -2.9197053482712363, -2.836408311526611,
-2.7726280238821346, -2.729198777811689, -2.685296054871287,
-2.6454794139463047, -2.6075210004819382, -2.5718187249003677,
-2.538562328340049, -2.507629458206793, -2.478872370054887,
-2.4521342375519453, -2.427128288469248, -2.4036267518276873,
-2.3814916579103738, -2.3572765316057485, -2.3352467475524463},
{-2.8937295005162014, -3.140379394069896, -3.108390879617218,
-3.01696097607055, -2.9276029468710476, -2.844095735828887,
-2.780143788397254, -2.7366123858118954, -2.692602017752506,
-2.6526906089056865, -2.6146241025053314, -2.5788259667424427,
-2.545478087198717, -2.5144610840397945, -2.4856278240513348,
-2.458819210252841, -2.43374570359083, -2.4101802197073994,
-2.3879843867871386, -2.363703373732278, -2.3416226497720345},
{-2.900633035842475, -3.1485836318715883, -3.1167009705022792,
-3.0250867808535986, -2.9355233468049846, -2.851805202997639,
-2.7876811590831494, -2.744047097825387, -2.6999287623875716,
-2.659922208302305, -2.6217473004908243, -2.585852976379101,
-2.552413320110645, -2.5213119245890994, -2.492402339099499,
-2.465522998256347, -2.440381708667701, -2.4167520737973973,
-2.3944952936253685, -2.370148176771181, -2.3480164080974646},
{-2.9075575823044346, -3.156812056313356, -3.1250354208204953,
-3.0332362319568347, -2.9434666086417565, -2.8595367731541046,
-2.7952401936418028, -2.7515029707610665, -2.7072763406322338,
-2.667174264541245, -2.6288906487643544, -2.5928998036506528,
-2.5593680797173874, -2.528182030058815, -2.499195967138803,
-2.47224565216311, -2.4470363529908354, -2.4233423600344395,
-2.4010244264209177, -2.376610989605979, -2.3544280563728535},
{-2.9145032024334796, -3.1650647369206126, -3.1333942991004733,
-3.0414093943982152, -2.951432793484855, -2.8672905034072755,
-2.8028209507283464, -2.7589800606692734, -2.7146448066887388,
-2.674446829871158, -2.6360541995927633, -2.599966500449227,
-2.566342415888357, -2.53507145263211, -2.5060087592864875,
-2.4789872196124634, -2.453709685116337, -2.4299511278913997,
-2.4075718311905803, -2.383091859497654, -2.360857628773374},
{-2.9214699581934838, -3.17334174302232, -3.1417776732450875,
-3.0496063346981828, -2.9594219633181638, -2.8750664510153,
-2.8104234898273717, -2.7664784248736396, -2.722034215221356,
-2.6817399566207314, -2.643238010328787, -2.607053117459145,
-2.573336381028639, -2.541980244375736, -2.5128407652264286,
-2.4857477500117966, -2.460401753865881, -2.436578423701576,
-2.4141375556137064, -2.389590837959986, -2.367305157989904},
{-2.928457912932572, -3.1816431448678486, -3.1501856107934145,
-3.0578271172089444, -2.9674341781319526, -2.882864675975725,
-2.8180478677895735, -2.773998118704185, -2.7294446186460846,
-2.689053697849886, -2.650442133704928, -2.6141597056885075,
-2.5803500241709116, -2.54890845544287, -2.5196920367707207,
-2.492527292248269, -2.4671126091343467, -2.443224295777327,
-2.4207216463328223, -2.3961079723849252, -2.3737706755127874},
{-2.935467129200333, -3.1899690126956557, -3.1586181807142566,
-3.0660718095023185, -2.975469500193867, -2.8906852349209657,
-2.825694145358284, -2.781539200550469, -2.7368760725476022,
-2.696388106276572, -2.6576666254877637, -2.6212863176260726,
-2.5873833990517596, -2.5558561385332723, -2.5265626238870027,
-2.499325895361835, -2.473842300238175, -2.449888792292768,
-2.4273241511436936, -2.4026433137332788, -2.380254214458546},
{-2.942497669821023, -3.1983194166205067, -3.1670754513324937,
-3.07434047804054, -2.9835279912476835, -2.898528188597993,
-2.8333623807993717, -2.7891017273577745, -2.7443286316374724,
-2.7037432368524605, -2.6649115405489283, -2.6284330031594436,
-2.5944365562136227, -2.562823347405356, -2.533452577674325,
-2.5061436097166734, -2.4805908774069394, -2.456571959221037,
-2.4339451179366733, -2.4091969103938027, -2.3867558060082956},
{-2.9495495986757305, -3.206694427623006, -3.175557491107611,
-3.0826331878488418, -2.9916097127643297, -2.9063935941958334,
-2.841052632105857, -2.7966857546816755, -2.7518023518132395,
-2.7111191401090764, -2.6721769337164005, -2.6355998156905116,
-2.6015095474176633, -2.569810133205465, -2.5403619495991734,
-2.5129804841271834, -2.487358389695146, -2.4632738470136246,
-2.440584593663516, -2.41576881230867, -2.393275482671015},
{-2.956622978679661, -3.21509411639272, -3.1840643689174613,
-3.090950006560888, -2.9997147264439263, -2.914281510402361,
-2.848764960155677, -2.80429134123915, -2.759297288288508,
-2.7185158720276377, -2.679462861171487, -2.6427868061618938,
-2.6086024243595602, -2.576816549884825, -2.54729079020035,
-2.5198365688775084, -2.49414488696857, -2.46999450281146,
-2.447242625821673, -2.4223590706533287, -2.399813277679641},
{-2.9637178737411887, -3.2235185539720987, -3.1925961539236596,
-3.0992910003733414, -3.0078430949142785, -2.922191996491165,
-2.8564994221051165, -2.811918544146465, -2.766813496597024,
-2.7259334856644273, -2.6867693777167005, -2.64999402677131,
-2.615715237952827, -2.583842650954466, -2.5542391511262394,
-2.526711912956671, -2.5009504189147265, -2.4767339748796076,
-2.453919264495198, -2.428967734609614, -2.4063692230338347},
{-2.9708343474558205, -3.2319678112398833, -3.2011529141709616,
-3.1076562351736357, -3.0159948793952935, -2.9301251108554425,
-2.864256078883045, -2.8195674195994798, -2.7743510332838923,
-2.7333720348506176, -2.694096539125894, -2.657221528712398,
-2.622848040620738, -2.5908884893469804, -2.56120708351591,
-2.533606566470553, -2.5077750356031174, -2.4834923115195124,
-2.4606145560901496, -2.435594853690418, -2.41294335101702},
{-2.977972464166669, -3.24044196027171, -3.209734720257984,
-3.1160457803889585, -3.0241701431841648, -2.9380809149770357,
-2.8720349892500963, -2.8272380260459613, -2.781909956389427,
-2.7408315738866804, -2.70144440137301, -2.6644693665002706,
-2.6300008844009426, -2.597954120061331, -2.5681946383047034,
-2.540520580656448, -2.514618787863583, -2.4902695601012965,
-2.4673285491371644, -2.442240479234897, -2.4195356942509534},
{-2.9851322876038466, -3.2489410719608713, -3.2183416408588528,
-3.12445970056433, -3.0323689481665497, -2.9460594655174646,
-2.8798362114939664, -2.834930420769524, -2.789490322375059,
-2.7483121570039657, -2.708813019864465, -2.671737590684643,
-2.637173821556644, -2.6050395959900925, -2.5752018670718826,
-2.547454004725296, -2.5214817251762724, -2.4970657706981,
-2.474061292818078, -2.448904661585402, -2.426146287310985},
{-2.9923138824760827, -3.2574652191651694, -3.2269737455462746,
-3.132898064377514, -3.0405913573267753, -2.954060823216423,
-2.88765980736207, -2.84264466147215, -2.7970921892192564,
-2.755813839889015, -2.7162024514909717, -2.6790262561116833,
-2.6443669043219415, -2.612144973300019, -2.582228821927856,
-2.554406890016253, -2.5283638986911683, -2.5038809921679785,
-2.4808128347067395, -2.4555874518482597, -2.4327751640157658},
{-2.999517312946409, -3.266014472919778, -3.2356311038747663,
-3.141360938705475, -3.048837432390428, -2.9620850474821054,
-2.895505834108917, -2.850380805783061, -2.804715614129236,
-2.7633366761219804, -2.7236127516734996, -2.686335412756307,
-2.6515801847963303, -2.619270305523969, -2.589275553200423,
-2.561379286536976, -2.5352653574482247, -2.5107152723030595,
-2.4875832247853396, -2.46228890036582, -2.439422359013406},
{-3.0067426443620207, -3.2745889062061906, -3.2443137866466714,
-3.149848390643456, -3.0571072375169024, -2.9701321971333527,
-2.9033743532672815, -2.8581389119026426, -2.812360657208046,
-2.7708807213421096, -2.731043976487854, -2.693665117069031,
-2.6588137166218075, -2.6264156484066916, -2.5963421133492375,
-2.5683712447389553, -2.542186153383227, -2.5175686609800323,
-2.4943725113771507, -2.469009057756921, -2.4460879068283248},
{-3.0139899409568898, -3.2831885912928556, -3.253021862677997,
-3.15836048896017, -3.065400834999309, -2.9782023342304456,
-2.9112654237287643, -2.8659190374564787, -2.8200273773363733,
-2.778446030748455, -2.738496182813833, -2.7010154202253034,
-2.666067551883316, -2.6335810576019867, -2.603428554797574,
-2.575382816212368, -2.5491263365947816, -2.524441205419862,
-2.5011807447081083, -2.4757479753388907, -2.4527718427270884},
{-3.0212592685293203, -3.291813600968453, -3.261755402723793,
-3.1668973006671877, -3.073718288087548, -2.986295516770042,
-2.9191791058401577, -2.8737212404812453, -2.8277158337259607,
-2.786032659379998, -2.7459694260032848, -2.7083863767038565,
-2.6733417441428173, -2.6407665875085513, -2.6105349295321503,
-2.582414052078093, -2.5560859577162773, -2.5313329571326904,
-2.508007973585336, -2.4825057043126435, -2.4594742038461845},
{-3.0285506919317413, -3.3004640081635443, -3.270514477204415,
-3.175458893609175, -3.0820596604062303, -2.9944118052808335,
-2.9271154594280233, -2.8815455791627755, -2.835426087334781,
-2.793640663527185, -2.753463763216132, -2.7157780410743726,
-2.680636347089603, -2.6479722958210914, -2.6176612882409245,
-2.5894650034642837, -2.563065067744901, -2.5382439653549227,
-2.5148542475435534, -2.4892822967958637, -2.466195028478978},
{-3.0358642769715516, -3.3091398860124173, -3.2792991564092517,
-3.1840453358527157, -3.0904250143612444, -3.002551261026383,
-2.9350745437914156, -2.8893921119597508, -2.8431581979602925,
-2.8012700979415968, -2.7609792510120315, -2.723190465632797,
-2.6879514133979683, -2.655198237080185, -2.62480768424939,
-2.596535720698739, -2.570063716451841, -2.5451742780132918,
-2.5217196168014198, -2.4960778033273527, -2.472934352590528},
{-3.0432000891087228, -3.3178413082205225, -3.2881095111697505,
-3.1926566959118645, -3.0988144153088797, -3.010713942552684,
-2.94305642152176, -2.8972608964504616, -2.850912227106164,
-2.8089210201105743, -2.7685159450556966, -2.730623706280312,
-2.6952869975793874, -2.662444467863679, -2.631974169653404,
-2.6036262578090827, -2.5770819562130782, -2.5521239480076474,
-2.528604131184693, -2.5028922756100656, -2.479692216787953},
{-3.050558194434416, -3.326568347903958, -3.2969456121318217,
-3.201293042526231, -3.1072279256441107, -3.018899912829511,
-2.951061151077738, -2.9051519917302357, -2.8586882368726947,
-2.8165934848257166, -2.776073902605276, -2.7380778164406365,
-2.7026431526464876, -2.6697110447676096, -2.6391607964760624,
-2.6107366639953398, -2.5841198376510874, -2.559093021314766,
-2.5355078422799124, -2.5097257664019708, -2.486468657683872},
{-3.0579386585122847, -3.3353210792665777, -3.3058075304761587,
-3.2099544433331175, -3.1156656095554354, -3.027109230737551,
-2.9590887937920343, -2.9130654564360157, -2.8664862889818323,
-2.8242875487449055, -2.7836531790198933, -2.745552851491084,
-2.7100199332453485, -2.676998023969645, -2.646367617544456,
-2.61786699282311, -2.5911774119522306, -2.5660815501541947,
-2.5424307994326227, -2.516578327602474, -2.4932637183883344},
{-3.065341548559445, -3.344099576213921, -3.3146953369614494,
-3.2186409670430294, -3.1241275320135173, -3.035341957354831,
-2.96713940990594, -2.921001348822756, -2.874306447007257,
-2.8320032692790846, -2.791253832692746, -2.7530488664779114,
-2.717417393647338, -2.6843054638593458, -2.6535946861295088,
-2.62501729682117, -2.5982547308085486, -2.5730895850938396,
-2.549373052563169, -2.5234500117367133, -2.500077439210145},
{-3.072766929966747, -3.3529039129825833, -3.323609103241324,
-3.2273526830031187, -3.132613754718477, -3.0435981549198914,
-2.9752130600754754, -2.9289597272545507, -2.8821487730419904,
-2.8397407017364458, -2.7988759186955576, -2.7605659143810044,
-2.7248355876581627, -2.691633419068239, -2.6608420536540507,
-2.6321876267611515, -2.605351843922108, -2.5801171755156247,
-2.556334654982493, -2.530340871315275, -2.5069098628373467},
{-3.0802148701604892, -3.3617341638018843, -3.332548900438269,
-3.236089659450954, -3.14112434506751, -3.051877882440749,
-2.983309806604666, -2.9369406506302767, -2.8900133313873084,
-2.847499903953576, -2.806519494199165, -2.7681040527604637,
-2.7322745706951537, -2.6989819484551845, -2.6681097732616763,
-2.639378035812115, -2.6124688049094402, -2.587164372918778,
-2.5633156558542396, -2.5372509593726136, -2.5137610320962267},
{-3.087685435588355, -3.370590404396353, -3.3415148006861273,
-3.2448519666031643, -3.1496593655683682, -3.0601812040076766,
-2.9914297091127082, -2.9449441787401156, -2.8979001861262077,
-2.855280933003087, -2.8141846168109623, -2.775663335003628,
-2.739734397033317, -2.7063511085252685, -2.675397899118252,
-2.646588577896182, -2.6196056652333937, -2.5942312259139726,
-2.570316107594408, -2.54418032936519, -2.5206309906134265},
{-3.095178693627531, -3.3794727086642524, -3.3505068753802334,
-3.2536396721225174, -3.1582188817410497, -3.0685081794545113,
-2.9995728297108144, -2.9529703692533076, -2.905809401992883,
-2.863083845586516, -2.821871340947837, -2.783243818750634,
-2.7472151206420676, -2.713740957020491, -2.682706483596121,
-2.6538193045707885, -2.6267624753600103, -2.601317788292363,
-2.5773360619932646, -2.5511290334616206, -2.52751978446031},
{-3.1026947110422043, -3.388381151969952, -3.3595251962615293,
-3.262452846240194, -3.166802958905464, -3.076858870095748,
-3.007739229593426, -2.961019281672634, -2.9137410446965077,
-2.870908699482243, -2.829579726578231, -2.790845558338333,
-2.7547167981247185, -2.721151552104857, -2.6900355794205097,
-2.6610702700781985, -2.63393928820733, -2.6084241100834333,
-2.584375570710108, -2.5580971266463166, -2.5344274605449755},
{-3.110233555737068, -3.3973158098815475, -3.3685698360168317,
-3.2712915579213586, -3.175411659947713, -3.085233338748367,
-3.0159289688999706, -2.9690909750934225, -2.9216951785056153,
-2.8787555520029855, -2.8373098272058996, -2.798468608660187,
-2.7622394828213146, -2.7285829503998684, -2.697385240753647,
-2.668341526914446, -2.641136155129061, -2.615550241469464,
-2.5914346852950985, -2.5650846613789327, -2.5413540648514754},
{-3.1177952948091843, -3.406276757843443, -3.3776408665289637,
-3.2801558772771386, -3.184045051842986, -3.0936316458646616,
-3.024142111691617, -2.9771855086582946, -2.929671869980666,
-2.8866244606979308, -2.8450617016205797, -2.8061130262758525,
-2.769783231055044, -2.736035209381953, -2.704755520397157,
-2.6756331289725495, -2.6483531282501644, -2.622696234509931,
-2.5985134582952014, -2.5720916927675717, -2.548299646412488},
{-3.1253799965215876, -3.4152640723550576, -3.3867383600445464,
-3.2890458741203474, -3.1927031994928257, -3.102053856397106,
-3.032378718697146, -2.9853029424484703, -2.937671185391082,
-2.8945154841385374, -2.852835406207305, -2.8137788671810995,
-2.777348098188668, -2.743508388797636, -2.7121464727679268,
-2.6829451303565293, -2.655590260568715, -2.6298621400928823,
-2.605611943472468, -2.5791182738612406, -2.5552642536495114},
{-3.1329877287098498, -3.4242778284460655, -3.3958623892431206,
-3.297961617099645, -3.201386167998862, -3.110500030510593,
-3.040638851671247, -2.993443335082702, -2.945693192057661,
-2.9024286801723065, -2.8606309972128656, -2.8214661874335434,
-2.784934138835524, -2.751002545344818, -2.719558150944067,
-2.6902775853086496, -2.662847602972761, -2.6370480109544587,
-2.6127301911838003, -2.5861644587421324, -2.5622479381563608},
{-3.1406185595951683, -3.433318103063357, -3.4050130270225054,
-3.3069031778431963, -3.2100940231503046, -3.1189702305782703,
-3.048922573623713, -3.001606746118341, -2.9537379557150416,
-2.910364106293855, -2.868448532808543, -2.8291750431380933,
-2.792541409657133, -2.7585177373330225, -2.726990609182394,
-2.6976305477364804, -2.6701252088023466, -2.644253899139585,
-2.61986825583881, -2.593230302707525, -2.5692507512503653},
{-3.148272557578821, -3.442384972709988, -3.414190346495161,
-3.315870625567186, -3.2188268307472754, -3.1274645215708006,
-3.057229945297877, -3.009793236706173, -2.961805544080562,
-2.918321821343852, -2.876288069244765, -2.836905490628851,
-2.800169965128589, -2.7660540230281185, -2.7344439021035214,
-2.7050040712565533, -2.6774231306189904, -2.6514798557327595,
-2.6270261914032744, -2.600315858500835, -2.576272745813185},
{-3.155949791373132, -3.4514785139072046, -3.423394420005934,
-3.3248640298261307, -3.227584656342515, -3.1359829621433164,
-3.065561031267862, -3.018002864308073, -2.9698960241694294,
-2.9263018841775192, -2.884149663052085, -2.844657584773813,
-2.8078198623479693, -2.773611460652319, -2.7419180826691445,
-2.712398211187974, -2.684741420096543, -2.6587259342559264,
-2.6342040499075665, -2.607421181637619, -2.583313973947952},
{-3.163650329795928, -3.4605988040857483, -3.432625321478554,
-3.333883463143138, -3.2363675662600144, -3.144525619856722,
-3.0739158934447914, -3.026235691013426, -2.978009464513889,
-2.934304352649633, -2.8920333720561757, -2.85243138455553,
-2.8154911567107774, -2.781190108951705, -2.749413206227473,
-2.7198130230390234, -2.6920801308442606, -2.665992185815412,
-2.641401885608502, -2.614546325188712, -2.5903744909810484},
{-3.1713742412430292, -3.4697459198432625, -3.441883123887237,
-3.342928993937676, -3.2451756267691962, -3.1530925550723623,
-3.082294593703409, -3.034491775189963, -2.986145932391082,
-2.9423292866777047, -2.899939253591583, -2.860226944732858,
-2.82318390403816, -2.788790025631897, -2.7569293268752517,
-2.7272485602952656, -2.699439315860218, -2.6732786630673218,
-2.648619751940714, -2.6216913440730423, -2.5974543524644105},
{-3.179121595896504, -3.478919939032494, -3.4511679009738145,
-3.352000693757873, -3.2540089047761285, -3.1616838320333045,
-3.0906971968870494, -3.0427711778211233, -2.994305495849403,
-2.950376744305686, -2.9078673638832697, -2.8680443235498387,
-2.830898161548248, -2.796411270290264, -2.76446650071739,
-2.7347048789306427, -2.7068190274803783, -2.6805854216145235,
-2.6558577033065376, -2.628856293791614, -2.60455361471395},
{-3.186892462152173, -3.4881209392442543, -3.4604797267893446,
-3.36109863420279, -3.2628674656261865, -3.170299515270017,
-3.0991237653943244, -3.0510739593519247, -3.0024882227444323,
-2.958446786047716, -2.9158177624813106, -2.8758835767948767,
-2.838633985404158, -2.8040539014764363, -2.7720247823745012,
-2.7421820345916785, -2.714219319408585, -2.6879125118939555,
-2.663115795738122, -2.636041228484828, -2.611672336788615},
{-3.194686910353994, -3.4973489981275634, -3.469818674177077,
-3.3702228844340425, -3.271751376465545, -3.17893966542033,
-3.1075743627188785, -3.0594001800163824, -3.0106941803860536,
-2.9665394687253865, -2.923790503744385, -2.883744761631533,
-2.846391430888616, -2.8117179757537087, -2.7796042242989643,
-2.7496800809021806, -2.721640243617003, -2.695259987798636,
-2.6703940812367364, -2.6432462005031994, -2.618810574662348},
{-3.2025050100019143, -3.5066041940699506, -3.4791848178465443,
-3.3793735170329455, -3.280660704462207, -3.1876043497613864,
-3.1160490525471687, -3.067749900426861, -3.0189234371719067,
-2.9746548540351796, -2.931785646807839, -2.8916279359109467,
-2.8541705563111464, -2.819403554116434, -2.787204884705716,
-2.7571990745855146, -2.7290818550027325, -2.702627902246604,
-2.677692615550768, -2.6504712653913884, -2.6259683891330496},
{-3.2103468313871417, -3.5158866052952362, -3.488578231790598,
-3.388550602034229, -3.289595516391273, -3.1962936308445933,
-3.124547898572928, -3.0761231809483434, -3.0271760610303318,
-2.982793000570382, -2.9398032494027575, -2.8995331568148686,
-2.8619714175219997, -2.8271106943502673, -2.7948268172403914,
-2.7647390715719666, -2.7365442057853215, -2.7100163103241357,
-2.685011454806954, -2.6577164780610474, -2.6331458399581606},
{-3.218212444016899, -3.5251963102527952, -3.4979989906350966,
-3.397754211076972, -3.2985558795480756, -3.2050075719125743,
-3.133070965643128, -3.084520083055395, -3.035452120919217,
-2.990953969736438, -2.947843368507165, -2.90746048209985,
-2.869794072554214, -2.8348394549902878, -2.8024700798559934,
-2.77230012727523, -2.744027350760007, -2.717425265298516,
-2.69235065261455, -2.664981894515222, -2.6403429886340746},
{-3.226101918897257, -3.53453338815234, -3.507447168674844,
-3.406984416207706, -3.307541860620404, -3.213746240016917,
-3.1416183168075804, -3.092940666996583, -3.043751682525908,
-2.999137819992029, -2.955906063230941, -2.9154099706356646,
-2.87763857858954, -2.8425898956120363, -2.8101347251431434,
-2.7798822970944457, -2.7515313441253966, -2.724854821797635,
-2.6997102649402223, -2.672267567293602, -2.6475598978213384},
{-3.2340153264558467, -3.5438979175669374, -3.5169228404047317,
-3.416241288628953, -3.316553527954966, -3.2225096970687446,
-3.150190018430294, -3.1013849952469172, -3.0520748146809638,
-3.007344611796725, -2.9639913904757123, -2.9233816786145326,
-2.8855049930280074, -2.850362075267185, -2.8178208119861665,
-2.7874856377675314, -2.759056237686309, -2.7323050352933933,
-2.707090349358623, -2.679573551824433, -2.654796629169141},
{-3.241952737491374, -3.5532899779936997, -3.5264260812873545,
-3.4255249006819213, -3.32559094870885, -3.231298010061437,
-3.158786134685215, -3.109853128546092, -3.0604215847451997,
-3.015574406104861, -2.972099408732902, -2.931375665437372,
-2.8933933731532306, -2.858156051079277, -2.825528394881985,
-2.795110203936929, -2.7666020879114512, -2.7397759582745493,
-2.714490960650437, -2.6868999031867133, -2.6620532454180648},
{-3.249914222769803, -3.5627096490643453, -3.535956965846708,
-3.4348353229834174, -3.3346541916289425, -3.2401112427287444,
-3.167406730241055, -3.11834512868154, -3.0687920599302743,
-3.023827263881685, -2.980230176486657, -2.9393919900539913,
-2.901303777223802, -2.8659718839626294, -2.833257531543495,
-2.8027560544142034, -2.7741689491740544, -2.747267647413537,
-2.7219121547896066, -2.6942466771652107, -2.669329811440548},
{-3.25789985393385, -3.57215701010864, -3.5455155699673924,
-3.444172628067463, -3.343743323817762, -3.248949460034055,
-3.1760518706469156, -3.1268610560036905, -3.0771863069021492,
-3.03210324630345, -2.988383752803202, -2.9474307110285736,
-2.9092362646842957, -2.873809632874327, -2.841008276962384,
-2.8104232434925507, -2.781756874595885, -2.7547801587861613,
-2.729353987786453, -2.7016139289553394, -2.6766263915560558},
{-3.265909702015051, -3.581632140914735, -3.5551019675804127,
-3.453536888031522, -3.352858412774367, -3.257812728126737,
-3.184721621713834, -3.1354009743554343, -3.085604393239919,
-3.0404024135350483, -2.996560195708298, -2.9554918864523643,
-2.9171908919888665, -2.8816693551343633, -2.848780689666455,
-2.81811182796082, -2.7893659193068743, -2.762313545397774,
-2.7368165184452664, -2.7090017130831257, -2.683943050840753},
{-3.2739438386506663, -3.5911351222712256, -3.5647162351560837,
-3.462928175289562, -3.361999528857268, -3.2667011110461317,
-3.1934160493510717, -3.143964944538311, -3.094046384045214,
-3.048724826963735, -3.004759564806591, -2.963575576679432,
-2.9251677198917605, -2.8895511118898867, -2.8565748245455325,
-2.825821864702448, -2.79699613921548, -2.7698678652668605,
-2.744299801714078, -2.7164100865848013, -2.691279854363529},
{-3.2820023359090555, -3.6006660346210992, -3.57435844882275,
-3.472346562117309, -3.371166737873864, -3.275614676542318,
-3.2021352187002776, -3.1525530296203215, -3.1025123471408733,
-3.0570705492646084, -3.012981918276637, -2.971681839640951,
-2.9331668071754393, -2.8974549606864457, -2.864390740345698,
-2.8335534106518026, -2.804647589153319, -2.7774431727448246,
-2.751803895283956, -2.7238391050996142, -2.698636866924062},
{-3.2900852657749056, -3.610224957781611, -3.584028683402721,
-3.4817921209578344, -3.3803601111831085, -3.284553489458631,
-3.2108791977552755, -3.161165291610814, -3.1110023481815006,
-3.0654396417739918, -3.021227315752185, -2.9798107368551427,
-2.9411882119093207, -2.9053809638353414, -2.8722284940376994,
-2.8413065217173425, -2.8123203237119014, -2.7850395256391494,
-2.7593288568459684, -2.731288824681542, -2.706014155810408},
{-3.2981927001801523, -3.619811973265314, -3.5937270161812194,
-3.4912649250400136, -3.389579716280423, -3.293517615140445,
-3.219648052505363, -3.169801793024817, -3.1195164539531106,
-3.0738321663739043, -3.0294958184604184, -2.9879623277374776,
-2.9492319955970743, -2.9133291778489365, -2.8800881429051515,
-2.8490812563395593, -2.820014398872445, -2.792656980913307,
-2.7668747438365244, -2.7387593029634445, -2.713411786760844},
{-3.3063247117479477, -3.6294271615552134, -3.603453521769552,
-3.5007650459738215, -3.398825621097785, -3.302507120795781,
-3.228441847844806, -3.1784625974469236, -3.1280547278074664,
-3.0822481854556827, -3.0377874843397876, -2.996136671412387,
-2.9572982167373993, -2.921299663175887, -2.8879697448865045,
-2.8568776696702116, -2.827729869481118, -2.800295593602641,
-2.7744416138593806, -2.7462505949442857, -2.72082982500433},
{-3.3144813731851173, -3.6390706041165686, -3.613208277954982,
-3.5102925572027743, -3.408097895942774, -3.311522071071522,
-3.2372606540338893, -3.187147766828275, -3.1366172363996156,
-3.090687761672598, -3.0461023745228886, -3.004333828786912,
-2.9653869370959, -2.92929247936263, -2.895873357425444,
-2.8646958197059575, -2.835466791773797, -2.807955421762017,
-2.7820295244673616, -2.753762759384699, -2.728268338556518},
{-3.3226627570657, -3.648742383098579, -3.6229913607239723,
-3.5198475321303704, -3.417396610475407, -3.320562535434874,
-3.246104536941857, -3.195857366139535, -3.145204045853461,
-3.0991509582745493, -3.0544405475448, -3.012553860862681,
-2.9734982176378253, -2.9373076867632335, -2.9037990392316715,
-2.8725357645816985, -2.843225223426998, -2.815636521241686,
-2.7896385352651123, -2.7612958526224247, -2.735727391882392},
{-3.3308689366913313, -3.6584425793480477, -3.632802846859704,
-3.529430043516186, -3.426721833388001, -3.329628578008851,
-3.254973563387466, -3.204591457211791, -3.1538152195862494,
-3.107637837747461, -3.0628020665535587, -3.0207968279792112,
-2.9816321176549536, -2.9453453443202307, -2.911746847406903,
-2.8803975612463546, -2.851005219388753, -2.823338952199265,
-2.797268701819121, -2.7688499322903226, -2.743207052597427},
{-3.3390999852599634, -3.668171275370696, -3.642642812923441,
-3.5390401645636302, -3.436073635781213, -3.3387202668745886,
-3.263867803303583, -3.213350104753772, -3.162450823430845,
-3.1161484639596893, -3.071186990411661, -3.0290627920694533,
-2.989788701153884, -2.9534055132899084, -2.9197168424725533,
-2.8882812669617124, -2.858806835283758, -2.8310627719329204,
-2.8049200843888684, -2.776425056894368, -2.750707386621798},
{-3.347355976131439, -3.67792855289008, -3.652511336906173,
-3.5486779691018455, -3.445452085492434, -3.3478376688508433,
-3.2727873212788836, -3.2221333724046417, -3.1711109218085767,
-3.124682900321204, -3.079595380622777, -3.0373518135093036,
-2.997968028881587, -2.9614882523819688, -2.927709082272486,
-2.8961869392514927, -2.866630128439283, -2.8388080373842968,
-2.812592742156994, -2.784021284423943, -2.7582284606905887},
{-3.3556369830421318, -3.687714494542888, -3.6624084946524817,
-3.5583435294356605, -3.454857253109367, -3.356980849926913,
-3.2817321898219234, -3.2309413247348857, -3.179795579111669,
-3.133241209689004, -3.088027298603265, -3.045663954282645,
-3.006170163003844, -2.969593622518005, -2.9357236249779817,
-2.9041146360250423, -2.8744751557169366, -2.8465748078306206,
-2.8202867332438473, -2.79163867153693, -2.765770337959111},
{-3.363943080368699, -3.6975291832313815, -3.6723343655139615,
-3.5680369215806422, -3.46428920897597, -3.3661498799228866,
-3.2907024747000833, -3.239774025456427, -3.188504859681416,
-3.1418234577722615, -3.096482805820415, -3.053999276329705,
-3.0143951675781864, -2.977721683884738, -2.9437605305720353,
-2.912064415650093, -2.8823419742984697, -2.8543631413922412,
-2.828002115347772, -2.79927727697941, -2.773333085133345},
{-3.3722743410762632, -3.707372701352142, -3.6822890258081316,
-3.5777582175069256, -3.4737480236981355, -3.3753448242132436,
-3.299698245140462, -3.2486315404130437, -3.1972388289213995,
-3.1504297078136005, -3.104961963777896, -3.0623578417653334,
-3.0226431047412916, -2.9858724977020756, -2.951819858615636,
-2.920036335613986, -2.8902306416857755, -2.8621730959930574,
-2.835738949783263, -2.8069371605160995, -2.7809167667801376},
{-3.380630840361846, -3.7172451316764636, -3.6922725534932397,
-3.587507491643919, -3.4832337682382786, -3.3845657516903884,
-3.3087195712141693, -3.2575139334367123, -3.2059975497977575,
-3.159060025078361, -3.113464834073966, -3.0707397126680007,
-3.0309140382596524, -2.99404612298531, -2.959901669601095,
-2.9280304546118714, -2.8981412152570556, -2.8700047346937936,
-2.8434972943141474, -2.814618380689353, -2.7885214477719273},
{-3.3890126523801882, -3.7271465577869094, -3.702285026352911,
-3.597284817296895, -3.492746510892175, -3.3938127299697953,
-3.317766520267469, -3.266421269829152, -3.21478108647716,
-3.167714474067907, -3.121991479922144, -3.0791449507159996,
-3.0392080325545976, -3.002242621645564, -2.9680060218670405,
-2.9360468304366805, -2.906073751866643, -2.877858112893591,
-2.8512772100730217, -2.8223209938805667, -2.796147192006174},
{-3.3974198519608763, -3.7370770637389796, -3.7123265232112317,
-3.6070902701758314, -3.5022863248741487, -3.4030858264595736,
-3.326839163844852, -3.2753536152813467, -3.2235895040575997,
-3.17639311941457, -3.130541962796997, -3.0875736195011996,
-3.0475251521420432, -3.0104620543133933, -2.976132976153167,
-2.9440855217471835, -2.914028310944559, -2.885733292889199,
-2.8590787537032156, -2.83004506083671, -2.803794063234818},
{-3.4058525138862024, -3.747036731954722, -3.722397122066468,
-3.6169239237424335, -3.5118532808264717, -3.4123851106523944,
-3.3359375695654307, -3.284311036019062, -3.2324228667494026,
-3.1850960275842226, -3.139116344973445, -3.096025781269418,
-3.0558654610504163, -3.0187044820850133, -2.9842825935556903,
-2.952146586518211, -2.922004949185066, -2.8936303333903197,
-2.8669019888620824, -2.8377906397217885, -2.8114621236818493},
{-3.4143107134405, -3.7570256478938973, -3.7324969021137804,
-3.6267858528735815, -3.521447449376865, -3.421710650327441,
-3.3450618086280883, -3.2932935969147366, -3.2412812386537553,
-3.193823262794467, -3.1477146900142543, -3.104501498179161,
-3.0642290257601417, -3.0269699660493643, -2.9924549341449165,
-2.960230084871, -2.930003726753057, -2.9015492948965402,
-2.874746972724097, -2.845557787681173, -2.819151437433902},
{-3.4227945257825922, -3.7670438941422617, -3.742625940929429,
-3.636676131078275, -3.5310689023863233, -3.4310625134094153,
-3.354211950707395, -3.302301364179584, -3.2501646836972213,
-3.2025748923697392, -3.1563370609947015, -3.11300083452079,
-3.0726159110708977, -3.0352585674918373, -3.0006500599047286,
-2.9683360750277643, -2.9380247002700344, -2.9094902394062956,
-2.882613766567374, -2.853346565818356, -2.826862065710884},
{-3.4313040269225894, -3.777091555570223, -3.7527843186726386,
-3.6465948343175114, -3.5407177099841647, -3.4404407699948933,
-3.363388064710307, -3.311334405101661, -3.2590732679745997,
-3.2113509804403293, -3.164983520109672, -3.1215238515869714,
-3.0810261832521064, -3.043570347574132, -3.008868030628946,
-2.9764646141047706, -2.9460679302283097, -2.9174532262040884,
-2.890502430345805, -2.861157030063623, -2.8345940724175307},
{-3.4398392921866616, -3.7871687173319515, -3.7629721139783214,
-3.6565420369588537, -3.5503939459267713, -3.4498454871027207,
-3.3725902239530114, -3.320392785506556, -3.268007053840847,
-3.220151595356583, -3.1736541320278775, -3.130070614271972,
-3.0894599084422225, -3.0519053686439293, -3.01710890832328,
-2.9846157639403827, -2.954133475483104, -2.9254383183579193,
-2.898413026196067, -2.8689892398251686, -2.8423475187737495},
{-3.448400398092417, -3.7972754636066384, -3.773189406205347,
-3.666517814519466, -3.5600976807072584, -3.4592767362191807,
-3.381818495276093, -3.32947657242039, -3.2769661080819787,
-3.2289768020418705, -3.1823489592570695, -3.138641183330037,
-3.0979171527869767, -3.0602636912226444, -3.0253727544040885,
-2.992789581170655, -2.962221395711822, -2.9334455751013593,
-2.906345613155281, -2.8768432524520904, -2.850122465417371},
{-3.4569874196095043, -3.8074118795448157, -3.7834362746616534,
-3.676522241185012, -3.5698289870379085, -3.468734585410857,
-3.391072952079412, -3.338585833829711, -3.2859504955777084,
-3.2378266678133514, -3.1910680655855685, -3.147235624943278,
-3.1063979849786847, -3.0686453783055185, -3.0336596313863993,
-3.0009861276266747, -2.9703317511448404, -2.9414750591749907,
-2.914300253833062, -2.884719128582219, -2.857918975147186},
{-3.4656004347871203, -3.8175780501733243, -3.7937127998811775,
-3.686555393564049, -3.5795879377183155, -3.478219103824813,
-3.4003536637101206, -3.347720636826125, -3.294960280160012,
-3.246701259893598, -3.1998115167443757, -3.155854001051921,
-3.1149024697369896, -3.0770504918764345, -3.0419696016106172,
-3.0092054616470705, -2.9784646003172384, -2.9495268339305767,
-2.9222770075211884, -2.8926169249243685, -2.8657371086228522},
{-3.474239519035109, -3.8277740606790758, -3.8040190610954596,
-3.6966173460859864, -3.589374603365286, -3.487730362023285,
-3.409660701523535, -3.356881047518982, -3.30399552849849,
-3.25560064396268, -3.2085793744627154, -3.1644963753424236,
-3.1234306774058496, -3.0854790914963814, -3.050302726740483,
-3.0174476420506835, -2.986620005001896, -2.957600958805415,
-2.9302759368365514, -2.9005366988203605, -2.873576925776433},
{-3.482904749453155, -3.8379999971984944, -3.81435513825636,
-3.706708174380765, -3.5991890585355577, -3.49726842826567,
-3.4189941374279442, -3.366067135524645, -3.3130563051599893,
-3.264524888996675, -3.217371704544348, -3.173162812170631,
-3.1319826735852985, -3.093931242787221, -3.058659068425186,
-3.0257127306977054, -2.9947980254364666, -2.9656974983226974,
-2.93829710240243, -2.908478510726127, -2.881438490774599},
{-3.491596203715744, -3.8482559453623253, -3.82472111286188,
-3.7168279548313876, -3.609031374431652, -3.5068333743438416,
-3.4283540407486726, -3.375278968247585, -3.3221426767631783,
-3.273474061228626, -3.2261885708285263, -3.1818533753757947,
-3.1405585286556743, -3.102407006881549, -3.0670386914425762,
-3.0340007870618138, -3.00299872343021, -2.973816514459031,
-2.9463405673450325, -2.916442416913924, -2.8893218623124994},
{-3.5003139584914607, -3.858541990892263, -3.835117064194492,
-3.7269767622747167, -3.618901625290164, -3.516425270026957,
-3.4377404846600257, -3.384516614751192, -3.331254709373752,
-3.2824482287687715, -3.235030038515106, -3.190568129575695,
-3.1491583091265056, -3.1109064471456804, -3.0754416581694386,
-3.042311870798585, -3.011222159737372, -2.981958069540269,
-2.9544063926587114, -2.924428475824243, -2.8972271022357745},
{-3.5090580910618883, -3.868858220313996, -3.845543074188754,
-3.737154674647172, -3.6287998852749297, -3.526044184996863,
-3.4471535397678963, -3.393780143254844, -3.3403924701487995,
-3.291447460076597, -3.2438961732405005, -3.1993071386095835,
-3.157782085312647, -3.119429625759949, -3.083868030771555,
-3.050646043404413, -3.0194683948284364, -2.9901222300322843,
-2.9624946411931887, -2.9324367468361743, -2.9051542729430366},
{-3.5178286799455236, -3.879204720036796, -3.855999223429535,
-3.7473617653595284, -3.638726224155107, -3.535690190805326,
-3.4565932762197917, -3.403069622501789, -3.3495560243172804,
-3.3004718224110547, -3.2527870379417436, -3.2080704674808658,
-3.1664299247131567, -3.1279766057414236, -3.0923178730736254,
-3.0590033647822565, -3.0277374911674997, -2.9983090546447784,
-2.970605374437582, -2.94046728694957, -2.913103433966171},
{-3.5266258024021226, -3.8895815766009036, -3.866485592956451,
-3.7575981130139553, -3.6486807185247017, -3.54536335652665,
-3.4660597682304797, -3.4123851214608294, -3.35874543931277,
-3.3095213835986215, -3.2617026995285414, -3.2168581804435235,
-3.1751018969880533, -3.1365474497360992, -3.1007912477798527,
-3.0673838953807717, -3.036029511713423, -3.0065186094871024,
-2.9787386551251984, -2.9485201549177873, -2.921074647041678},
{-3.535449536564556, -3.8999888775688305, -3.87700226441666,
-3.767863793182187, -3.6586634418672475, -3.5550637559317693,
-3.4755530849361094, -3.4217267105923383, -3.367960783180024,
-3.3185962129427935, -3.27064322221122, -3.2256703439634293,
-3.1837980719355983, -3.1451422230893513, -3.1092882210796233,
-3.0757876971983933, -3.044344518588332, -3.0147509580419865,
-2.9868945455164067, -2.956595410112641, -2.9290679755213205},
{-3.544299961107754, -3.9104267086477194, -3.8875493193918373,
-3.7781588819671015, -3.668674467229721, -3.5647914581059013,
-3.4850732998384046, -3.4310944579701754, -3.377202122093877,
-3.3276963782627718, -3.2796086721864413, -3.2345070223527728,
-3.192518517818826, -3.1537609875231283, -3.1178088531523827,
-3.0842148313313373, -3.052682574823848, -3.0230061631955323,
-2.9950731095304945, -2.9646931073220912, -2.9370834784349427},
{-3.553177154437435, -3.920895158295025, -3.898126839529141,
-3.7884834581709583, -3.678713870318461, -3.57454653448076,
-3.494620484416373, -3.440488435298903, -3.38646952581621,
-3.336821949305886, -3.2885991160947015, -3.243368282550364,
-3.201263306538749, -3.1624038080117316, -3.1263532097436837,
-3.09266535921779, -3.0610437419163645, -3.0312842914063367,
-3.0032744096242823, -2.972813308777404, -2.9451212206331547},
{-3.5620811955814133, -3.9313943137822207, -3.908734907709004,
-3.7988375962886494, -3.688781723019929, -3.5843290586017247,
-3.504194709654257, -3.4499087109506945, -3.3957630614968366,
-3.3459729937821976, -3.297614617891668, -3.252254189203086,
-3.2100325056744623, -3.171070747601334, -3.134921355267579,
-3.1011393426379072, -3.0694280852912925, -3.039585405771504,
-3.0114985091786366, -2.9809560709181824, -2.953181262491853},
{-3.5710121628908382, -3.941924262428074, -3.9193736049637664,
-3.8092213737800193, -3.6988781023101183, -3.594139099426684,
-3.513796048682707, -3.459355356542801, -3.4050827979663154,
-3.355149581191654, -3.3066552449017763, -3.261164809395268,
-3.218826186384831, -3.179761871797382, -3.1435133528357255,
-3.1096368421713123, -3.0778356673472445, -3.0479095705450163,
-3.019745471625356, -2.9891214534654864, -2.961263666024024},
{-3.579970136692282, -3.9524850929046806, -3.930043015159754,
-3.8196348694182234, -3.7090030815779755, -3.6039767315014615,
-3.523424571598298, -3.4688284422445577, -3.4144288035167847,
-3.364351780845027, -3.3157210625431617, -3.270100210349483,
-3.2276444194067153, -3.1884772435150808, -3.1521292678880855,
-3.118157922908722, -3.0862665521053714, -3.056256851130456,
-3.028015360039717, -2.997309513259097, -2.969368493933871},
{-3.588955195245944, -3.963076892792742, -3.9407432203406643,
-3.8300781596226443, -3.7191567363988725, -3.613842025784834,
-3.5330803516990272, -3.478328040371707, -3.4238011483030277,
-3.3735796619585017, -3.3248121376382187, -3.2790604579495266,
-3.236487274429237, -3.19721692946041, -3.1607691629906185,
-3.1267026452478603, -3.0947208053185022, -3.0646273114543874,
-3.03630823855201, -3.00552030937979, -2.9774958086709375},
{-3.5979674188347417, -3.973699750724336, -3.9514743041290785,
-3.840551321853127, -3.7293391425228037, -3.6237350554583827,
-3.542763461577124, -3.487854220875306, -3.4331999010173604,
-3.3828332951452467, -3.3339285364345415, -3.2880456196144223,
-3.2453548224584665, -3.2059809927013703, -3.1694331059406977,
-3.135271072096657, -3.1031984893925255, -3.0730210201145383,
-3.0446241704848944, -3.0137539042843855, -2.9856456738634733},
{-3.607006887003081, -3.9843537550659676, -3.962236348874285,
-3.8510544337768806, -3.739550373298698, -3.63365589226305,
-3.552473971285508, -3.497407055758231, -3.442625130970555,
-3.3921127488065395, -3.343070326416637, -3.29705576266133,
-3.254247133532772, -3.214769498576061, -3.178121157841815,
-3.143863265438995, -3.111699670283997, -3.081438037879707,
-3.0529632207835675, -3.02201035318285, -2.9938181523175444},
{-3.6160736805177294, -3.9950389950099634, -3.97302943860268,
-3.8615875737159513, -3.7497905068339605, -3.643604608849273,
-3.562211955526436, -3.5069866167759756, -3.4520769092123373,
-3.4014180934318574, -3.35223757395579, -3.3060909548730706,
-3.2631642777996603, -3.2235825134412153, -3.1868333860766143,
-3.152479288415634, -3.1202244139203685, -3.0898784328674083,
-3.0613254537820467, -3.03028971672029, -3.0020133057332714},
{-3.6251678793196334, -4.005755559155659, -3.983853657009604,
-3.872150819897797, -3.760059617601655, -3.6535812793663354,
-3.571977483574301, -3.5165929757858976, -3.461555304900685,
-3.4107493995907134, -3.361430345234112, -3.315151263246662,
-3.2721063276185305, -3.232420102067408, -3.195569854360656,
-3.1611192057971493, -3.1287727842354798, -3.0983422706340207,
-3.069710932140879, -3.0385920558401267, -3.010231200038106},
{-3.6342895638299524, -4.016503537095559, -3.9947090877649316,
-3.8827442495203286, -3.7703577819120255, -3.663585976937611,
-3.5817706298912526, -3.526226206267893, -3.471060390038474,
-3.4201067371614045, -3.3706487083109096, -3.324236756445316,
-3.2810733533478924, -3.241282330614922, -3.2043306286941515,
-3.1697830799384974, -3.137344849121291, -3.106829615899187,
-3.0781197210308164, -3.0469174272730015, -3.0184718974269344},
{-3.643438814957335, -4.027283017971058, -4.005595815699053,
-3.893367941658653, -3.7806850763045077, -3.6736187743008486,
-3.5915914649667684, -3.5358863794681383, -3.4805922337109223,
-3.4294901771791046, -3.3798927314783214, -3.333347503117693,
-3.2900654256882262, -3.250169265003933, -3.213115774495236,
-3.1784709746571025, -3.1459406731810304, -3.115340537697193,
-3.086551885440713, -3.0552658952510683, -3.0267354627503664},
{-3.6526157137013797, -4.038094092047686, -4.016513924376341,
-3.904021974893112, -3.791041576754651, -3.6836797465366544,
-3.601440060934692, -3.5455735702853417, -3.490150907979114,
-3.4388997902569827, -3.389162480722007, -3.3424835714467918,
-3.2990826161185396, -3.2590809707908193, -3.2219253565272084,
-3.1871829536758014, -3.1545603235426825, -3.1238750991760753,
-3.095007489697309, -3.0636375170433894, -3.03502196057525},
{-3.661820341130806, -4.048936848939775, -4.027463499249279,
-3.9147064277021855, -3.8014273602057074, -3.6937689663027413,
-3.611316491769685, -3.5552878513917676, -3.4997364838709473,
-3.4483356481869123, -3.39845802544005, -3.3516450303141028,
-3.3081249951719656, -3.2680175155983306, -3.230759440062684,
-3.1959190816196497, -3.163203866890399, -3.1324333693628432,
-3.103486599349708, -3.072032354430121, -3.0433314543261076},
{-3.671052779071033, -4.059811378570885, -4.038444624573458,
-3.9254213795538817, -3.8118425036118424, -3.7038865084177814,
-3.6212208268625545, -3.565029295939894, -3.5093490323924925,
-3.4577978208326385, -3.4077794330660254, -3.36083194702951,
-3.317192634145613, -3.276978965353919, -3.239618091698503,
-3.204679422924528, -3.1718713703085086, -3.1410154135810444,
-3.1119892789356527, -3.08045046801999, -3.051664009959495},
{-3.6803131084343477, -4.070717771854106, -4.049457385448477,
-3.936166909039457, -3.8222870851604966, -3.7140324475622037,
-3.6311531409883173, -3.5747979788429802, -3.518988626135979,
-3.467286381390295, -3.417126772365009, -3.370044393770513,
-3.326285605748126, -3.285965387811302, -3.248501377274806,
-3.213464042652049, -3.1805629034060985, -3.1496212988568004,
-3.1205155935604125, -3.088891920320748, -3.0600196934319683},
{-3.689601411973854, -4.081656118934916, -4.060501867825224,
-3.9469430960052705, -3.8327611813620024, -3.724206858263642,
-3.6411135039743385, -3.5845939741193433, -3.5286553354235366,
-3.4768014002620475, -3.4265001132080215, -3.379282437694201,
-3.3354039793121046, -3.294976849319937, -3.2574093623334193,
-3.2222730061548646, -3.1892785303643905, -3.1582510946682305,
-3.129065607827215, -3.097356773178035, -3.068398568968405},
{-3.698917771303968, -4.092626510995615, -4.071578156748728,
-3.957750018525985, -3.843264868886763, -3.7344098148387275,
-3.6511019891986507, -3.5944173560783383, -3.538349233858753,
-3.4863429504766827, -3.4358995224174578, -3.388546147667512,
-3.3445478280846146, -3.30401341583638, -3.266342113012797,
-3.231106376806565, -3.198018321112613, -3.1669048650583136,
-3.13763938970078, -3.1058450871205423, -3.0768007022343227},
{-3.7082622689194977, -4.103629038938379, -4.082686338253552,
-3.9685877575539052, -3.8537982273737725, -3.744641393182974,
-3.661118669449934, -3.6042681998878834, -3.548070392032969,
-3.4959111036368995, -3.4453250709120766, -3.397835594652861,
-3.3537172219221247, -3.3130751576973125, -3.275299695233116,
-3.2399642208838486, -3.2067823441466317, -3.1755826793742017,
-3.1462370025983546, -3.114356927231711, -3.0852261617037584},
{-3.7176349874789594, -4.114663794422086, -4.09382649932013,
-3.979456392939028, -3.864361333886336, -3.754901667853119,
-3.671163614402758, -3.6141465817272547, -3.557818883404252,
-3.505505932836968, -3.4547768271513632, -3.4071508486304083,
-3.3629122343845665, -3.322162142205343, -3.2842821765807457,
-3.24884660589305, -3.215570669461158, -3.184284606060828,
-3.15485851419362, -3.1228923554808716, -3.093675013151369},
{-3.7270360095935757, -4.1257308687709155, -4.104998724520556,
-3.990356003803754, -3.8749542674340773, -3.7651907157778624,
-3.6812368983446504, -3.6240525755274575, -3.5675947787894984,
-3.5151275108582922, -3.4642548616975546, -3.4164919792310684,
-3.372132935335685, -3.331274436779495, -3.293289623405144,
-3.257753597390547, -3.224383363245579, -3.193010711169336,
-3.163503988987941, -3.131451434986957, -3.102147323945246},
{-3.736465417998261, -4.136830353669211, -4.116203101748397,
-4.001286671787966, -3.885577106892015, -3.775508611994155,
-3.691338592856482, -3.633986259039375, -3.577398153283866,
-3.5247759112899075, -3.473759245920519, -3.425859056529589,
-3.3813793978915783, -3.3404121102939826, -3.302322101990285,
-3.2666852614929667, -3.23322049628041, -3.2017610663097003,
-3.1721734951643157, -3.1400342321794597, -3.1106431614243775},
{-3.74592329654115, -4.147962341306993, -4.127439717725792,
-4.01224847488993, -3.8962299288541544, -3.7858554330086918,
-3.7014687685805256, -3.643947707329062, -3.587229077180382,
-3.534451206032827, -3.483290048163326, -3.4352521520122536,
-3.390651691777748, -3.3495752303570043, -3.3113796783218277,
-3.2756416654156055, -3.242082136501267, -3.2105357372493017,
-3.1808670971222455, -3.148640810046345, -3.1191625939754886},
{-3.755409728433733, -4.159126924230804, -4.138708659476833,
-4.023241496535775, -3.9069128154369537, -3.796231254011218,
-3.7116275004009367, -3.6539369962411, -3.5970876239734935,
-3.544153469854791, -3.4928473409672733, -3.4446713345096214,
-3.399949891201686, -3.358763866533991, -3.3204624201753177,
-3.2846228755734046, -3.250968356638623, -3.219334791858273,
-3.18958486354677, -3.1572712341076112, -3.1277056899343734},
{-3.7649247971239674, -4.170324195132707, -4.150010014102008,
-4.03426581554595, -3.9176258440493257, -3.8066361535165925,
-3.7218148577740067, -3.6639542039411026, -3.606973866299086,
-3.5538827773780213, -3.5024311940796906, -3.4541166760755004,
-3.4092740675623645, -3.3679780891470728, -3.3295703964904533,
-3.2936289598510484, -3.259879225261102, -3.228158301586518,
-3.1983268608455546, -3.165925571382104, -3.1362725183862494},
{-3.774468586900184, -4.181554246108135, -4.161343869101984,
-4.045321513003728, -3.928369095068774, -3.817070207456709,
-3.73203091443429, -3.6739994068193482, -3.6168878768003196,
-3.5636392017040635, -3.512041679030517, -3.463588248123415,
-3.418624291472952, -3.377217965971795, -3.3387036702988553,
-3.3026599866716424, -3.268814811715856, -3.2370063328489778,
-3.2070931554117124, -3.174603884392127, -3.144863146037096},
{-3.7840411818287976, -4.1928171709041635, -4.1727103128541785,
-4.056408671527606, -3.9391426487854915, -3.827533493087685,
-3.742275742806669, -3.6840726825757883, -3.62682972841867,
-3.5734228187648114, -3.5216788681063917, -3.4730861227435526,
-3.4280006370318006, -3.3864835682543344, -3.347862312424695,
-3.311716023243207, -3.27777518700168, -3.245878957975947,
-3.2158838158356957, -3.183306245082349, -3.1534776448024786},
{-3.7936426662236045, -4.204113062598481, -4.1841094329392945,
-4.067527370909374, -3.9499465834669536, -3.8380260876583634,
-3.7525494131696178, -3.6941741073460435, -3.6367994956453913,
-3.583233702403959, -3.5313428332301555, -3.4826103694795165,
-3.437403175790678, -3.3957749660039553, -3.35704638925381,
-3.3207971395240747, -3.2867604228958953, -3.2547762439062353,
-3.2246989095147, -3.1920327182670007, -3.162116083803994},
{-3.803273124485713, -4.215442014687142, -4.195541317840252,
-4.07867769301447, -3.9607809811423067, -3.8485480683666538,
-3.7628520012221998, -3.704303760910989, -3.646797249020892,
-3.5930719288808177, -3.541033646077267, -3.4921610606397735,
-3.446831979767012, -3.405092228393187, -3.366255968059704,
-3.3299034019946703, -3.295770589240419, -3.2636982598196482,
-3.23353850433341, -3.200783371241414, -3.1707785312028136},
{-3.8129326421330916, -4.2268041214192635, -4.2070060563855805,
-4.089859721119865, -3.971645921788877, -3.8590995146951173,
-3.7731835758313537, -3.7144617196026957, -3.6568230635966756,
-3.602937572468363, -3.550751378359564, -3.5017382698570145,
-3.456287122280628, -3.414435426799173, -3.3754911191063,
-3.339034882825217, -3.304805757565191, -3.272645077391644,
-3.2424026691296604, -3.2095582737165387, -3.179465057932248},
{-3.822621303566848, -4.238199476789305, -4.218503737483843,
-4.1010735356285295, -3.9825414868391817, -3.8696805034123827,
-3.7835442111245357, -3.7246480635440093, -3.6668770116957603,
-3.6128307105900603, -3.560496102880279, -3.511342069366947,
-3.46576867573458, -3.4238046330356156, -3.384751907622558,
-3.348191649361979, -3.3138660004769918, -3.2816167642376968,
-3.251291472413868, -3.2183574909504387, -3.1881757334340364},
{-3.832339194166707, -4.249628174682584, -4.230034449810773,
-4.112319219355413, -3.9934677571000066, -3.88029111380456,
-3.7939339810909587, -3.734862869598146, -3.6769591670890804,
-3.62275141968712, -3.5702678938396275, -3.5209725305830943,
-3.4752767135432805, -3.433199916864396, -3.3940384050947614,
-3.357373772691062, -3.3229513877013233, -3.2906133934666286,
-3.260204981859715, -3.227181099180598, -3.196910627950274},
{-3.8420863999162975, -4.261090310577856, -4.24159828289703,
-4.123596853882191, -4.004424812810612, -3.890931424270093,
-3.80435295625648, -3.745106217174907, -3.6870696031837724,
-3.632699774832872, -3.5800668232914177, -3.530629727538326,
-3.4848113076513982, -3.4426213512560935, -3.4033506768973893,
-3.3665813222542056, -3.332061992448871, -3.299635033872619,
-3.269143270175846, -3.2360291627046536, -3.205669811621192},
{-3.851863006126223, -4.272585978913412, -4.253195326873538,
-4.134906523278914, -4.015412737178849, -3.901601513491187,
-3.8148012116289465, -3.755378185567679, -3.6972083932269015,
-3.6426758541201707, -3.5898929640534334, -3.5403137326356955,
-3.4943725318662473, -3.452069007085811, -3.4126887932943646,
-3.3758143677550834, -3.341197886307782, -3.3086817548028193,
-3.2781064027221873, -3.244901753743761, -3.214453352811688},
{-3.8616690986746107, -4.284115274920623, -4.26482567081257,
-4.146248309847579, -4.026431611411681, -3.912301461052266,
-3.8252788178724586, -3.7656788536842214, -3.707375609767041,
-3.652679734674166, -3.5997463880339637, -3.550024620068143,
-3.5039604594858247, -3.461542956007179, -3.422052822978003,
-3.3850729820187553, -3.350359142081288, -3.3177536274888553,
-3.287094450512086, -3.2537989430857124, -3.223261324237683},
{-3.8715047643127036, -4.295678294260142, -4.2764894053580065,
-4.157622295893816, -4.037481518113054, -3.923031347170763,
-3.8357858503513853, -3.7760083007160574, -3.7175713285105303,
-3.66271149336535, -3.6096271720089135, -3.559762464275991,
-3.513575163327914, -3.4710432713036425, -3.431442835222697,
-3.3943572343996493, -3.3595458320414764, -3.326850722260133,
-3.296107484762615, -3.2627208014164353, -3.2320937934491667},
{-3.8813700889331813, -4.307275132283394, -4.288186620899069,
-4.16902856562956, -4.048562539108389, -3.9337912511909963,
-3.846322382429207, -3.78636660684424, -3.727795621918631,
-3.6727712098072516, -3.619535388352233, -3.569527338935586,
-3.523216717490868, -3.480570026251371, -3.440858900132298,
-3.4036671988578746, -3.36875802805298, -3.3359731102755177,
-3.3051455749373417, -3.2716674055409385, -3.2409508334385464},
{-3.8912651597456716, -4.318905885633285, -4.299917407719477,
-4.180467201702413, -4.059674757045286, -3.944581253315846,
-3.8568884864944266, -3.796753851333051, -3.738048564417113,
-3.682858960790327, -3.629471109750739, -3.5793193195495405,
-3.5328851963640773, -3.49012329269317, -3.450301085758838,
-3.413002945781045, -3.377995804483362, -3.3451208625047,
-3.314208793497528, -3.280638823096524, -3.249832513211004},
{-3.9011900634868653, -4.3305706506289425, -4.3116818572925695,
-4.191938289612153, -4.07081825586647, -3.955401434097439,
-3.8674842391119455, -3.807170114450855, -3.748330229645944,
-3.692974825462443, -3.6394344113068655, -3.5891384819042287,
-3.542580672976328, -3.4997031441162108, -3.459769462911936,
-3.4223645466408925, -3.387259233786608, -3.35429404937895,
-3.3232972094556317, -3.289635128916416, -3.258738901677134},
{-3.911144887584669, -4.342269523229334, -4.323480060062138,
-4.203441911649861, -4.081993117455568, -3.9662518736586208,
-3.8781097119717742, -3.8176154763204977, -3.7586406910340884,
-3.7031188816326903, -3.6494253676573862, -3.598984899246716,
-3.55230322155694, -3.509309654153185, -3.469264102219313,
-3.4317520752956625, -3.3965483897482045, -3.363492745134863,
-3.3324108953238465, -3.298656397193554, -3.2676700714655453},
{-3.9211297184047, -4.354002601121465, -4.335312108323706,
-4.214978151911055, -4.093199426723004, -3.9771326535919798,
-3.888764981638815, -3.828090017857903, -3.7689800248481333,
-3.713291211068281, -3.659444053308107, -3.608858650739421,
-3.562052916327957, -3.5189428957455675, -3.4787850732682273,
-3.4411656062002294, -3.4058633470267523, -3.372717016231036,
-3.34154992258118, -3.307702701262315, -3.2766260920616332},
{-3.9311446446699847, -4.365769980693585, -4.3471780931868125,
-4.22654709584458, -4.1044372667965945, -3.988043855140859,
-3.89945012213866, -3.838593819149537, -3.7793483033019584,
-3.7234918905523955, -3.669490543376014, -3.6187598113538115,
-3.571829830550996, -3.528602943595615, -3.48833244627167,
-3.4506052112265024, -3.415204177326814, -3.381966940527491,
-3.350714363892621, -3.3167741161669255, -3.285607031881227},
{-3.9411897537756886, -4.377571760294813, -4.359078106364905,
-4.238148827418627, -4.115706720484013, -3.9989855602179887,
-3.9101652085082605, -3.8491269609876326, -3.7897456032587797,
-3.7337210007826798, -3.6795649112245883, -3.6286884577712044,
-3.5816340405872324, -3.5382898697280325, -3.4979062917045667,
-3.4600709624864976, -3.424570955830859, -3.391242584264546,
-3.3599042909190757, -3.3258707161803613, -3.294612962330575},
{-3.9512651341428864, -4.389408037022804, -4.371012240808341,
-4.2497834315217915, -4.127007873968978, -4.009957850204955,
-3.920910318825918, -3.8596895241644233, -3.800171996874269,
-3.7439786208196892, -3.689667234371882, -3.63864466855739,
-3.5914656201857724, -3.5480037508532405, -3.5075066824283567,
-3.4695629367633956, -3.4339637578377733, -3.400544021897076,
-3.3691197765801917, -3.334992576215882, -3.30364395257493},
{-3.9613708736214903, -4.401278909343091, -4.382980588303326,
-4.261450993923063, -4.138340810866794, -4.020960806949006,
-3.931685524985369, -3.8702815916767577, -3.8106275612371974,
-3.754264832001354, -3.6997975861886516, -3.648628521608771,
-3.6013246458605863, -3.557744659454329, -3.517133688663307,
-3.47908120827924, -3.443382657118491, -3.409871326504799,
-3.378360895032529, -3.3441397727292497, -3.3127000723106903},
{-3.9715070614147407, -4.413184475459275, -4.394983241611044,
-4.273151599110861, -4.149705616146093, -4.03199451425462,
-3.9424909074878087, -3.880903242235945, -3.8211123712171684,
-3.7645797144723474, -3.7099560452843434, -3.658640095331066,
-3.6112111889160587, -3.567512671907025, -3.5267873813500046,
-3.488625851459801, -3.452827729364799, -3.4192245678495965,
-3.387627717551368, -3.3533123798915767, -3.321781390273827},
{-3.981673785503517, -4.425124834004237, -4.407020294387621,
-4.284885333938291, -4.161102376012423, -4.043059053437901,
-3.953326542265131, -3.891554559842916, -3.8316265024259337,
-3.7749233480353723, -3.7201426861283835, -3.66867946821003,
-3.6211253283690894, -3.5773078617130523, -3.536467833611823,
-3.4981969419823145, -3.4622990473508253, -3.4286038226055098,
-3.396920321712969, -3.3625104753737105, -3.3308879758842522},
{-3.9918711356913263, -4.43710008389462, -4.419091839034081,
-4.296652281824208, -4.172531173135212, -4.0541545094238245,
-3.9641925054675085, -3.902235624867899, -3.8421700293110916,
-3.785295813533594, -3.730357584434387, -3.678746721074276,
-3.6310671368264593, -3.5871303037638427, -3.546175115654478,
-3.507794555363944, -3.4717966882817564, -3.4380091609127703,
-3.4062387776357355, -3.3717341338051483, -3.3400198974995874},
{-4.00209920090856, -4.449110324505455, -4.431197969151981,
-4.308452531106013, -4.183992095771828, -4.0652809630701086,
-3.975088877021335, -3.9129465195001103, -3.8527430282338173,
-3.795697192203079, -3.740600819372048, -3.68884193192207,
-3.6410366912168683, -3.5969800719831255, -3.5559092999028508,
-3.517418765797629, -3.4813207268016413, -3.44744065519626,
-3.4155831613752525, -3.380983432791254, -3.3491772234119708},
{-4.012358070533082, -4.461155655753828, -4.443338779368787,
-4.320286168062012, -4.195485229181941, -4.076438500916993,
-3.9860157321891165, -3.9236873278350686, -3.8633455761519144,
-3.806127566334908, -3.750872465214343, -3.6989651836192934,
-3.6510340674285544, -3.606857245620631, -3.5656704628345324,
-3.5270696537627373, -3.490871240159322, -3.4568983817080152,
-3.424953549299971, -3.390258448504028, -3.358360023761634},
{-4.022647834710369, -4.473236176469072, -4.455514362489339,
-4.332153277100588, -4.207010659549269, -4.087627205772151,
-3.9969731529490673, -3.934458130141138, -3.8739777483642683,
-3.8165870147931855, -3.761172602236911, -3.709116557096422,
-3.661059340745851, -3.6167618952094926, -3.5754586707407725,
-3.5367472917641862, -3.5004483023658395, -3.4663824112794828,
-3.4343500136601506, -3.39955925510003, -3.3675683640831267},
{-4.03296858327667, -4.485351988147158, -4.467724813763198,
-4.344053947577777, -4.218568473050254, -4.09884716187662,
-4.007961218434502, -3.945259010666632, -3.884639622090617,
-3.827075620800315, -3.7715013062406797, -3.7192961332548293,
-3.6711125881411135, -3.6266940994755714, -3.585274002303777,
-3.5464517582804547, -3.510051989054773, -3.475892820926674,
-3.443772633523622, -3.408885931581608, -3.376802315884561},
{-4.043320406330167, -4.497503190148564, -4.479970227275771,
-4.355988265066117, -4.2301587563197245, -4.110098453711544,
-4.01898000647634, -3.9560900518044946, -3.89533127409959,
-3.837593464551901, -3.7818586559442338, -3.7295039935197565,
-3.6811938852406456, -3.63665393285919, -3.5951165277365362,
-3.5561831326558604, -3.5196823786609457, -3.48542968230322,
-3.453221482617664, -3.418238555350399, -3.3860619479892193},
{-4.0537033944856375, -4.509689883503597, -4.492250697094278,
-4.367956316185882, -4.24178159677831, -4.12138116609276,
-4.030029600224225, -3.966951337213686, -3.90605278097064,
-3.8481406288265134, -3.7922447299424675, -3.739740222139517,
-3.6913033082382753, -3.646641471917974, -3.6049863222724525,
-3.5659414898618707, -3.5293395470216637, -3.4949930702132406,
-3.4626966377691133, -3.4276172013996984, -3.395347325800685},
{-4.064117638685275, -4.521912169959251, -4.504566319996229,
-4.379958190875186, -4.25343708179571, -4.1326953854368185,
-4.0411100775090745, -3.9778429507059627, -3.91680422132049,
-3.8587171947801835, -3.802659606706584, -3.750004900706699,
-3.701440935539722, -3.6566567924819537, -3.6148834599152906,
-3.5757269093810464, -3.5390235704471706, -3.5045830606177333,
-3.472198175782978, -3.4370219444463146, -3.4046585220785346},
{-4.074563229161868, -4.534170150127466, -4.516917190045206,
-4.3919939747065655, -4.2651252989744535, -4.144041196756007,
-4.052221522062609, -3.9887649763186346, -3.9275856718522846,
-3.869323244514817, -3.8131033649187884, -3.760298114400939,
-3.7116068433606415, -3.666699970548507, -3.6248080141231185,
-3.5855394692043774, -3.548734526455519, -3.5141997281170916,
-3.4817261741991388, -3.446452861899161, -3.4139956049257307},
{-4.085040258029039, -4.546463925944408, -4.529303403185622,
-4.404063756701362, -4.276846337066672, -4.155418686103076,
-4.063364015928528, -3.999717498132668, -3.938397211721167,
-3.8799588606561883, -3.8235760853713145, -3.770619946299121,
-3.7218011083095917, -3.676771081831248, -3.6347600607623463,
-3.595379247875826, -3.5584724917280255, -3.523843148977903,
-3.491280710331921, -3.4559100314218085, -3.4233586438786006},
{-4.095548815686925, -4.5587935991279664, -4.541725054568815,
-4.416167624462105, -4.288600281302934, -4.166827939297946,
-4.074537640372, -4.010700599515985, -3.9492389187144,
-3.8906241246513673, -3.8340778464480536, -3.7809704807732487,
-3.732023808734084, -3.6868702041829238, -3.644739673953154,
-3.605246325234475, -3.5682375433680136, -3.5335133974731434,
-3.5008618619467597, -3.465393526661501, -3.4327477112819906},
{-4.106088995049504, -4.571159272480145, -4.554182241328817,
-4.428305667199311, -4.300387222923746, -4.178269042626198,
-4.085742480805493, -4.0217143669651705, -3.9601108705755905,
-3.9013191188132623, -3.8446087293268647, -3.7913498034176882,
-3.7422750220284797, -3.6969974139719852, -3.6547469289871515,
-3.615140777998022, -3.578029759679339, -3.543210551099037,
-3.5104697079368634, -3.474903424466902, -3.4421628763739136},
{-4.116660887018952, -4.5835610483336495, -4.566675059380941,
-4.4404779738906655, -4.3122072500991635, -4.189742083974124,
-4.096978617133573, -4.032758884663053, -3.971013147762278,
-3.912043926298793, -3.8551688133302378, -3.8017579990337254,
-3.75255482695502, -3.7071527881198563, -3.664781903127732,
-3.625062688588514, -3.587849217619805, -3.5529346865805564,
-3.5201043247361667, -3.4844398007553536, -3.451604213230894},
{-4.127264584454679, -4.595999029810628, -4.579203604698705,
-4.452684632618912, -4.324060451843252, -4.201247150725976,
-4.108246137322567, -4.043834238604177, -3.981945829029428,
-3.9227986286132364, -3.86575818030542, -3.8121951533539686,
-3.762863300893514, -3.7173364032496465, -3.674844670582388,
-3.635012134698627, -3.5976959945910494, -3.5626858778414316,
-3.529765793005936, -3.494002728490159, -3.461071792546136},
{-4.1379001792374766, -4.60847331979312, -4.591767975347466,
-4.464925733554992, -4.335946917402907, -4.2127843296620995,
-4.119545123983698, -4.05494051407004, -3.992908993852325,
-3.933583308797097, -3.8763769122306257, -3.8226613531296607,
-3.773200522722618, -3.727548336799373, -3.6849353096986306,
-3.6449891979209497, -3.6075701695808675, -3.5724642065979424,
-3.5394541929126717, -3.5035922870665672, -3.4705656899386668},
{-4.148567764153995, -4.620984022065386, -4.6043682678027835,
-4.477201365763904, -4.347866734904528, -4.22435370907624,
-4.130875662260223, -4.066077796866011, -4.003902722390194,
-3.9443980490395916, -3.887025088930386, -3.833156683984271,
-3.7835665709280875, -3.7377886654794565, -3.695053895273304,
-3.6549939579199417, -3.6174718198235496, -3.5822697465555393,
-3.549169601959875, -3.5132085501536494, -3.4800859796014265},
{-4.159267432427441, -4.633531240688171, -4.617004579864442,
-4.489511619794939, -4.3598199961707, -4.235955376396305,
-4.1422378403221956, -4.077246174150787, -4.014927094685845,
-3.9552429334216868, -3.8977027935834485, -3.8436812333820853,
-3.79396152577101, -3.7480574683868326, -3.7052005052901222,
-3.665026494541962, -3.6274010248162085, -3.5921025773714064,
-3.5589121016382705, -3.5228515929120476, -3.489632737771899},
{-4.169999277084571, -4.646115079151059, -4.629677008306317,
-4.501856584523921, -4.37180678974255, -4.247589420694567,
-4.153631739987759, -4.088445731875254, -4.0259821915242355,
-3.9661180434632115, -3.908410107360396, -3.854235087230336,
-3.8043854647985427, -3.7583548217298812, -3.7153752187732607,
-3.675086888251826, -3.6373578621423803, -3.60196277758223,
-3.5686817706446163, -3.5325214926342596, -3.4992060397853493},
{-4.180763391079381, -4.658735642959073, -4.642385651848599,
-4.514236351344152, -4.383827208075672, -4.259255931858206,
-4.165057452773908, -4.099676558456849, -4.037068095291033,
-3.9770234633397195, -3.9191471142403316, -3.8648183344630525,
-3.814838469515962, -3.768680803499592, -3.725578112229414,
-3.6851752233487787, -3.6473424117502873, -3.6118504245605436,
-3.5784786909862305, -3.5422183229238726, -3.5088059673071257},
{-4.191559868708282, -4.6713930357545905, -4.655130608465697,
-4.52665101018647, -4.395881339842163, -4.270954997169611,
-4.176515062259568, -4.110938740137499, -4.048184885366936,
-3.987959275538742, -3.9299138975693495, -3.87543106279918,
-3.825320617223042, -3.7790354915487114, -3.7358092644717544,
-3.6952915769870742, -3.657354749375372, -3.6217655995860696,
-3.5883029432297917, -3.551942162499472, -3.5184325959562557},
{-4.202388803136273, -4.684087363239087, -4.6679119762229675,
-4.539100652233174, -4.40796927606425, -4.282686707221728,
-4.18800465798995, -4.122232364912634, -4.05933264514897,
-3.9989255631662672, -3.9407105381178553, -3.8860733587134746,
-3.8358319891485735, -3.7894189639846445, -3.7460687533093733,
-3.7054360324764275, -3.6673949564938084, -3.6317083777539665,
-3.5981546083494322, -3.5616930845862953, -3.528086007798265},
{-4.213250289296411, -4.696818730739324, -4.680729854288074,
-4.551585368491942, -4.420091109532223, -4.294451151705289,
-4.199526328869979, -4.133557521010516, -4.0705114552765735,
-4.009922409735736, -3.9515371209490695, -3.8967453121294966,
-3.8463726668269373, -3.7998313001953647, -3.7563566590470145,
-3.7156086722025066, -3.6774631128719193, -3.6416788428250584,
-3.6080337672901805, -3.571471167022537, -3.5377662824103027},
{-4.22414442068839, -4.709587243825808, -4.693584341752285,
-4.5641052510545705, -4.432246930227848, -4.30624842022371,
-4.211080160377605, -4.144914297787182, -4.08172139985254,
-4.020949899815605, -3.962393728819734, -3.9074470111518167,
-3.8569427301627, -3.8102725771314, -3.7666730621931492,
-3.7258095778379356, -3.687559296435211, -3.6516770747693954,
-3.617940500662371, -3.5812764866423095, -3.547473500810156},
{-4.235071292714565, -4.722393008905783, -4.706475537223014,
-4.576660390215693, -4.444436830468476, -4.318078604526818,
-4.222666245092114, -4.1563027835290995, -4.092962560593151,
-4.032008115689678, -3.9732804470841074, -3.9181785452965414,
-3.8675422593805706, -3.8207428738096496, -3.77701804053504,
-3.7360388323650113, -3.6976835871173535, -3.6617031503046746,
-3.6278748912154697, -3.591109118424356, -3.5572077447286574},
{-4.246030999795039, -4.73523613197176, -4.719403540890198,
-4.589250879638712, -4.4566609033354325, -4.329941794065235,
-4.234284671023488, -4.16772306815983, -4.104235022430657,
-4.043097142326587, -3.9841973595539457, -3.9289400025372743,
-3.8781713358985144, -3.831242269727227, -3.7873916776225087,
-3.7462965171944234, -3.707836064611911, -3.67175715661142,
-3.6378370230158907, -3.6009691408398794, -3.5669690969225485},
{-4.257023636975646, -4.748116719827522, -4.732368451768707,
-4.6018768097346765, -4.468919238548551, -4.341838081221795,
-4.245935527687834, -4.179175240416953, -4.115538867292344,
-4.0542170629050815, -3.995144548920507, -3.9397314721063594,
-3.8888300412509125, -3.8417708428460173, -3.7977940507917083,
-3.7565827157595777, -3.7180168088088976, -3.681839169963496,
-3.647826974040072, -3.610856631225033, -3.5767576366706635},
{-4.268049300160783, -4.761034879535146, -4.745370370328601,
-4.614538274916413, -4.48121193121915, -4.353767555207014,
-4.257618907220603, -4.190659390325891, -4.126874180190498,
-4.065367961578886, -4.006122100683569, -3.9505530433743843,
-3.8995184570594574, -3.8523286724011996, -3.8082252416934352,
-3.766897510497074, -3.728225900544203, -3.6919492725501186,
-3.6578448283471516, -3.620771665191569, -3.5865734468243318},
{-4.279108084076142, -4.773990718167624, -4.758409397247306,
-4.6272353661988745, -4.493539073053398, -4.3657303106665495,
-4.2693348974280525, -4.202175610764243, -4.138241045322502,
-4.076549923578568, -4.017130099789938, -3.961404807654617,
-3.9102366663355497, -3.862915839512425, -3.818685335376358,
-3.7772409858516767, -3.7384634203335736, -3.7020875484668068,
-3.6678906685410766, -3.6307143265221384, -3.596416609696462},
{-4.290200085561082, -4.786984342841606, -4.771485631841642,
-4.639968177434639, -4.505900758289499, -4.377726437895035,
-4.281083592301002, -4.213723990171275, -4.1496395477443,
-4.087763032766816, -4.028168630364235, -3.9722868531316635,
-3.9209847501770128, -3.8735324200533796, -3.8291744084417587,
-3.7876132238379796, -3.748729447746882, -3.7122540780328563,
-3.6779645763890585, -3.640684685771703, -3.6062872011680156},
{-4.301325400138012, -4.800015862532746, -4.784599176236952,
-4.652736802308937, -4.518297078931937, -4.389756029893761,
-4.292865083152719, -4.225304620544193, -4.161069772941119,
-4.099007374315988, -4.039237778393726, -3.983199270609475,
-3.931762791093206, -3.8841784965770785, -3.8396925487031695,
-3.79801430941734, -3.7590240631761844, -3.7224489470245317,
-3.6880666356591973, -3.650682827188575, -3.6161853085213806},
{-4.312484124169714, -4.813085385125305, -4.797750131023349,
-4.665541333597503, -4.530728129488125, -4.4018191802097135,
-4.304679460365151, -4.2369175943531445, -4.172531808180793,
-4.110283033274754, -4.050337629625574, -3.9941421495896066,
-3.9425708744238364, -3.8948541497811675, -3.850239836370747,
-3.808444328518817, -3.769347350935277, -3.7326722368088667,
-3.6981969283806393, -3.6607088298915187, -3.6261110134219052},
{-4.323676354444615, -4.826193018900085, -4.810938596820051,
-4.678381865516712, -4.543194003832468, -4.41391597972688,
-4.316526818918646, -4.248563003362506, -4.184025736612966,
-4.121590093986015, -4.061468268759199, -4.0051155815745005,
-3.9534090800589183, -3.9055594576566364, -3.8608163543394767,
-3.8189033624512376, -3.7796993895608466, -3.742924031059374,
-3.708355537557509, -3.670762772911985, -3.636064393504057},
{-4.334902188158594, -4.839338872316148, -4.824164676676446,
-4.691258492799534, -4.555694795955787, -4.4260465234547155,
-4.328407248518488, -4.26024094006425, -4.195551647033426,
-4.132928643251944, -4.072629781752767, -4.016119655505463,
-3.964277494371345, -3.916294502087112, -3.8714221887858002,
-3.8293914965033764, -3.7900802622025367, -3.7532044156760094,
-3.7185425470161135, -3.680844738635642, -3.6460455372944125},
{-4.346161721630779, -4.852523055458732, -4.837428471058956,
-4.7041713089784025, -4.568230601696996, -4.4382109057260095,
-4.340320844385133, -4.271951498143608, -4.207109625385783,
-4.144298765546409, -4.083822254135157, -4.027154463110492,
-3.9751762002706528, -3.9270593635519617, -3.8820574207638856,
-3.8399088172300253, -3.8004900508385617, -3.7635134721640497,
-3.7287580369156785, -3.690954802768829, -3.656054524544743},
{-4.357455052813748, -4.865745677485393, -4.850730082995142,
-4.717120409295603, -4.580801514959603, -4.450409219200083,
-4.352267699810909, -4.283694770289003, -4.218699760145682,
-4.155700548901223, -4.095045775233302, -4.038220094225835,
-3.9861052824926446, -3.9378541219848557, -3.892722138640238,
-3.8504554081955575, -3.8109288368432317, -3.7738512892465224,
-3.7390020952298073, -3.701093054303783, -3.666091447470535},
{-4.368782279092557, -4.879006847928395, -4.8640696144721005,
-4.730105888462276, -4.593407629901776, -4.462641559090116,
-4.364247908335528, -4.295470850389393, -4.230322139490454,
-4.1671340774337295, -4.106300430074043, -4.049316640441248,
-3.997064826085989, -3.9486788609356154, -3.903416424327588,
-3.861031356427702, -3.821396706669475, -3.7842179513536394,
-3.749274804365996, -3.7112595696453354, -3.676156388777599},
{-4.3801434984998195, -4.89230667708398, -4.877447168415529,
-4.743127842382819, -4.606049043315579, -4.474908019677969,
-4.376261565470486, -4.307279834458313, -4.24197684986575,
-4.178599437895173, -4.1175863048410974, -4.060444191512943,
-4.00805491504434, -3.9595336586862686, -3.9141403648245614,
-3.871636745381693, -3.831893738672079, -3.794613541729632,
-3.759576244832715, -3.721454432052269, -3.686249437821971},
{-4.391538809068152, -4.9056452755176, -4.890862847365497,
-4.75618636674335, -4.618725851054478, -4.487208695863956,
-4.388308762339875, -4.319121814922255, -4.253663981384307,
-4.190096718855784, -4.128903487660864, -4.071602838383114,
-4.019075634925684, -3.9704185987866367, -3.9248940463221516,
-3.8822716617723927, -3.842420017506811, -3.805038150305336,
-3.7699065015403903, -3.731677724434121, -3.6963706837632344},
{-4.402968309306743, -4.919022753503668, -4.904316755040782,
-4.7692815562477335, -4.631438148622692, -4.499543684447417,
-4.400389597649337, -4.330996887903893, -4.265383622689114,
-4.201626005407888, -4.140252067329129, -4.082792673063523,
-4.030127072306641, -3.981333762247232, -3.9356775527776335,
-3.8929361902482924, -3.8529756277639535, -3.8154918596264906,
-3.7802656574058346, -3.74192952629528, -3.706520218780497},
{-4.414432097615645, -4.932439222884568, -4.917808994810912,
-4.782413508488389, -4.644186031800928, -4.5119130797320395,
-4.412504165869905, -4.342905149751459, -4.277135863725562,
-4.213187386267236, -4.151632132015948, -4.094013786256255,
-4.041209312439605, -3.992279231810244, -3.9464909756425186,
-3.9036304191613453, -3.863560652913293, -3.8259747604679433,
-3.7906537995077088, -3.7522099262059783, -3.7166981356203905},
{-4.425930272991536, -4.9458947942948726, -4.931339670001762,
-4.795582318714878, -4.656969597388525, -4.524316978466231,
-4.424652560286631, -4.3548466946595, -4.288920794264413,
-4.224780948701664, -4.163043769047363, -4.105266267804836,
-4.052322442432342, -4.00325509061804, -3.957334397091472,
-3.9143544348262367, -3.8741751788766123, -3.8364869378856383,
-3.8010710084199673, -3.7625190028120414, -3.7269045236316742},
{-4.437462934805808, -4.959389579704293, -4.944908884986944,
-4.808788085123524, -4.669788942919695, -4.536755476605322,
-4.436834880580136, -4.36682162143552, -4.300738504345645,
-4.2364067809976405, -4.174487067684822, -4.116550212260336,
-4.063466550171142, -4.0142614195356146, -3.968207907550095,
-3.925108321964217, -3.8848192888399353, -3.8470284789145808,
-3.8115173697151477, -3.7728568403763347, -3.737139478289464},
{-4.449030182364368, -4.972923691228061, -4.958516744307417,
-4.822030903909763, -4.682644164393423, -4.549228670439334,
-4.44905121964257, -4.378830024790659, -4.312589085660875,
-4.2480649706412805, -4.185962118070165, -4.1278657062212005,
-4.074641720500949, -4.025298304775788, -3.9791115958141745,
-3.9358921680177446, -3.895493069991062, -3.857599475493771,
-3.8219929676124593, -3.7832235250170925, -3.747403090877924},
{-4.460632114751206, -4.9864972416144155, -4.972163352118514,
-4.83531087305164, -4.695535361221118, -4.561736659190501,
-4.461301677300071, -4.3908720038234605, -4.324472629006777,
-4.259755609498825, -4.197469009362976, -4.139212846734154,
-4.0858480441820575, -4.036365826577821, -3.990045549297065,
-3.9467060643437435, -3.906196606316371, -3.8682000126718776,
-3.8324978858727263, -3.7936191373082693, -3.7576954572214163},
{-4.472268832621921, -5.000110342338303, -4.985848813230405,
-4.848628089654085, -4.708462628841517, -4.574279537824623,
-4.473586347339733, -4.402947654903983, -4.33638922512182,
-4.271478782648046, -4.20900783372781, -4.1505917208342,
-4.097085604291351, -4.0474640676766285, -4.001009855986922,
-3.95755009016284, -3.9169299834466074, -3.8788301799359033,
-3.8430322081476334, -3.804043761883804, -3.768016664267634},
{-4.483940435926343, -5.013763107581326, -4.999573233239062,
-4.861982651702419, -4.72142606601119, -4.586857406080526,
-4.485905329856905, -4.415057075115328, -4.348338967429299,
-4.283234580463613, -4.220578678025049, -4.162002421981015,
-4.108354491865612, -4.058593114517862, -4.01200460542168,
-3.968424338643672, -3.9276932895882055, -3.8894900655577658,
-3.8535960221342975, -3.8144974832903245, -3.7783668086485704},
{-4.4956470250144775, -5.027455649633339, -5.013336716932827,
-4.875374658222427, -4.734425771952374, -4.599470360612031,
-4.498258721650927, -4.427200364225428, -4.3603219470824115,
-4.295023093101918, -4.232181634717563, -4.173445042113599,
-4.119654796370014, -4.069753050469444, -4.023029886790027,
-3.979328896239167, -3.9384866095060715, -3.9001797585369786,
-3.8641894094762392, -3.8249803867656738, -3.788745976948121},
{-4.507388700563752, -5.041188082501321, -5.027139370176883,
-4.888804208007059, -4.747461843951896, -4.612118499877397,
-4.510646619855834, -4.43937762164569, -4.3723382573371055,
-4.306844410479243, -4.2438167944710585, -4.184919672268734,
-4.130986605618091, -4.080943960427248, -4.0340857918636175,
-3.990263849213079, -3.9493100343534024, -3.9108993497502524,
-3.8748124567064224, -3.835492557955149, -3.7991542633535573},
{-4.519165563859133, -5.054960520206805, -5.040981298821862,
-4.902271398590528, -4.76053438217059, -4.624801924437634,
-4.523069123912137, -4.451588943535171, -4.384387990874529,
-4.318698622271768, -4.255484249923029, -4.196426406415412,
-4.14235000579356, -4.092165927671886, -4.045172408710641,
-4.001229286339367, -3.9601636466177297, -3.921648926108901,
-3.885465245868545, -3.8460340761957923, -3.80959175460157},
{-4.530977715447079, -5.068773076909565, -5.054862609584234,
-4.915776331930829, -4.773643485539651, -4.637520732205303,
-4.535526333143935, -4.463834433568991, -4.396471242420375,
-4.330585819436237, -4.267184091819217, -4.207965336056077,
-4.153745091338351, -4.103419038263382, -4.05628983254428,
-4.012225297170517, -3.9710475383981247, -3.9324285840266384,
-3.89614787055325, -3.8566050304216333, -3.8200585389713524},
{-4.542825257482036, -5.082625866860326, -5.068783408511081,
-4.9293191049437155, -4.786789252095332, -4.650275022962887,
-4.548018345412856, -4.476114187455096, -4.408588104306546,
-4.342506092405529, -4.278916412135004, -4.219536551820056,
-4.165171947694034, -4.114703378028935, -4.067438148602378,
-4.023251968465047, -3.981961798177508, -3.943238405852753,
-3.9068604075800977, -3.867205502872821, -3.830554709325952},
{-4.554708291478164, -5.096519005252048, -5.082743802398909,
-4.942899819587183, -4.799971782857028, -4.663064895539719,
-4.56054526042135, -4.488428306947753, -4.420738670312858,
-4.354459531590692, -4.290681301521545, -4.231140146948746,
-4.176630664303957, -4.126019030067255, -4.0786174480454065,
-4.034309386712266, -3.9929065111791715, -3.954078482958721,
-3.9176029458176345, -3.8778355759131955, -3.8410803444348858},
{-4.566626919011469, -5.110452607088519, -5.096743898560817,
-4.956518575454538, -4.81319117849489, -4.67589045096247,
-4.573107177195197, -4.500776892644353, -4.432923037893488,
-4.366446229440044, -4.302478854660876, -4.242776216073253,
-4.188121334758762, -4.1373660841200035, -4.089827828785928,
-4.045397643531032, -4.003881769385771, -3.9649489096773323,
-3.9283755698415916, -3.8884953414963093, -3.8516355368410586},
{-4.578581242993096, -5.124426787777338, -5.11078380348772,
-4.970175472575647, -4.826447539031506, -4.68875179119641,
-4.585704196964798, -4.513160043890821, -4.445141298310773,
-4.378466275986284, -4.314309163433791, -4.254444849997526,
-4.1996440447474015, -4.148744624289975, -4.1010693749267375,
-4.05651682640746, -4.0148876627281425, -3.9758497724760673,
-3.939178368236753, -3.89918487380055, -3.862220370239811},
{-4.590571365453798, -5.13844166319177, -5.124863625977014,
-4.983870612872124, -4.839740964205703, -4.70164901487442,
-4.598336420465785, -4.525577862295904, -4.457393548560503,
-4.390519764565397, -4.3261723210525815, -4.266146142515936,
-4.211198887285718, -4.160154737532139, -4.112342183878354,
-4.067667022289243, -4.025924279514584, -3.986781164268905,
-3.95001142664114, -3.9099042628513416, -3.8728349318771507},
{-4.602597389202856, -5.152497349441546, -5.138983472948894,
-4.99760409747978, -4.853071556055511, -4.714582225555205,
-4.611003947589779, -4.538030449752114, -4.469679884787183,
-4.402606785544776, -4.338068421886419, -4.277880185552931,
-4.222785954625579, -4.171596512802353, -4.123646347252361,
-4.078848325414583, -4.036991714507167, -3.9977431738952873,
-3.9608748305836343, -3.9206535916091525, -3.8834793104688288},
{-4.614659417300572, -5.166593962756451, -5.153143452604127,
-5.011376027847291, -4.866439415309287, -4.727551522511931,
-4.623706879894598, -4.550517906718596, -4.482000401025289,
-4.414727431918436, -4.349997557001188, -4.289647074627283,
-4.234405333416362, -4.183070036684512, -4.13498195570719,
-4.0900608207521145, -4.048090055432112, -4.008735894938582,
-3.9717686666117515, -3.9314329442640883, -3.8941535863268655},
{-4.626757553702191, -5.180731620203005, -5.167343674496806,
-5.02518650690763, -4.879844644339755, -4.740557009310578,
-4.636445318581536, -4.563040334993275, -4.49435519506369,
-4.426881798099203, -4.361959822046629, -4.301446900914016,
-4.246057117867167, -4.1945753958571, -4.146349105249101,
-4.101304599069408, -4.059219394388492, -4.019759416609304,
-3.98269302323024, -3.9422424081494682, -3.904857850364351},
{-4.638891901042371, -5.194910438702209, -5.1815842462092405,
-5.039035635913024, -4.893287345803401, -4.753598788498493,
-4.64921936544124, -4.575597836752422, -4.506744362450263,
-4.439069973399455, -4.3739553090927075, -4.313279759859142,
-4.257741396300844, -4.206112680381921, -4.157747885925346,
-4.11257975071203, -4.0703798253816785, -4.030813829151157,
-3.9936479835159844, -3.95308205717447, -3.9155921817582566},
{-4.651062563658343, -5.20913053509139, -5.195865276728,
-5.052923518240277, -4.906767620217579, -4.7666769620918785,
-4.66202912251174, -4.588190514099551, -4.519167999576894,
-4.451292052937788, -4.385984115884639, -4.325145743561734,
-4.269458262817352, -4.217681978967448, -4.169178394309711,
-4.12388636553078, -4.081571438291576, -4.041899224765075,
-4.00463363918243, -3.9639519853299134, -3.9263566698282375},
{-4.663269645214314, -5.2233920274084085, -5.210186875665386,
-5.066850255905592, -4.9202855705225375, -4.77979163305281,
-4.6748746930170455, -4.600818468803482, -4.531626205323846,
-4.463548129788251, -4.398046334026731, -4.337044948457333,
-4.281207808809995, -4.229283381624555, -4.1806407242766,
-4.135224534271401, -4.092794332224003, -4.053015698715171,
-4.0156500772354775, -3.9748522727459203, -3.9371513967125793},
{-4.675513250862423, -5.237695033967611, -5.224549152211694,
-5.080815954337595, -4.933841300771746, -4.792942905754899,
-4.687756179366261, -4.61348180341156, -4.544119074867922,
-4.475838296537404, -4.410142060078215, -4.348977465298958,
-4.292990123627533, -4.240916975439177, -4.192134967277525,
-4.146594345533231, -4.104048589404556, -4.064163334405748,
-4.02669738138502, -3.985783001357049, -3.9479764500865713},
{-4.687793484470603, -5.252039672537649, -5.2389522167504765,
-5.094820716403774, -4.947434913709003, -4.806130882418074,
-4.700673683670175, -4.626180621904496, -4.556646706550964,
-4.488162647423451, -4.422271386581997, -4.3609433906312915,
-4.304805301624583, -4.252582854838693, -4.203661220279173,
-4.157995893307088, -4.115334314701613, -4.075342229181842,
-4.037775643155328, -3.9967442563574878, -3.9588319116446655},
{-4.700110451143701, -5.266426061392849, -5.25339617922873,
-5.10886464631767, -4.9610665135332965, -4.819355669606011,
-4.713627310862648, -4.638915025701863, -4.5692091986275045,
-4.500521277775988, -4.4344344100609305, -4.372942817564763,
-4.316653434012551, -4.264281105068221, -4.215219577439711,
-4.169429264169594, -4.126651595906878, -4.086552471853793,
-4.048884944917518, -4.007736116131127, -3.9697178628412075},
{-4.712464256277599, -5.280854319960781, -5.267881149855384,
-5.122947848023614, -4.974736202828353, -4.832617370157095,
-4.726617163942137, -4.6516851184060215, -4.581806649628561,
-4.512914278951939, -4.446631227889156, -4.3849758430878865,
-4.328534612817748, -4.276011820125859, -4.226810132684477,
-4.180894556215208, -4.13800053291925, -4.097794158937177,
-4.060025381353626, -4.018758671452815, -3.9806343889940763},
{-4.724855005122663, -5.295324567639909, -5.282407239174063,
-5.13707042777969, -4.988444086404343, -4.845916089958337,
-4.739643345725199, -4.66449100158934, -4.594439156840963,
-4.5253417467320105, -4.45886193348997, -4.3970425577426795,
-4.340448929215199, -4.287775091288495, -4.2384329831184,
-4.192391854187008, -4.149381215116591, -4.109067374054575,
-4.071197032164491, -4.029812000444508, -3.9915815721906256},
{-4.737282803253038, -5.309836923370312, -5.296974558783404,
-5.151232490396069, -5.002190269595303, -4.8592519336234545,
-4.7527059637141065, -4.677332781793666, -4.607106819588807,
-4.537803775448992, -4.471126623509917, -4.409143060343922,
-4.352396479880554, -4.299571011637454, -4.250088223074272,
-4.2039212534582475, -4.160793745089904, -4.120372214194504,
-4.0823999931890285, -4.04089618971193, -4.002559490909334},
{-4.749747757297882, -5.324391507310793, -5.311583218921442,
-5.165434141177684, -5.015974856243702, -4.872625005111331,
-4.765805118782737, -4.69021055950725, -4.61980973691243,
-4.5503004609490745, -4.4834253957960755, -4.421277444394946,
-4.3643773522853735, -4.311399672093103, -4.261775949889852,
-4.215482846222585, -4.1722382122898125, -4.131708771776175,
-4.093634347082116, -4.052011318111909, -4.013568227033829},
{-4.762249972325662, -5.3389884396056, -5.326233331950789,
-5.179675487204804, -5.029797953902744, -4.886035414907383,
-4.778940918855369, -4.70312444044248, -4.632548009161837,
-4.562831898751028, -4.495758345430659, -4.433445806440432,
-4.376391644480464, -4.323261166617158, -4.273496258880186,
-4.227076726885571, -4.183714717255498, -4.143077138913213,
-4.104900185186125, -4.063157475065964, -4.02460785923904},
{-4.7747895558677556, -5.353627840195259, -5.34092500909901,
-5.193956634029746, -5.043659665083396, -4.899483265435265,
-4.79211346644297, -4.7160745255459915, -4.645321732823504,
-4.575398181375931, -4.508125571141136, -4.445648241104209,
-4.388439445399854, -4.335155585598841, -4.285249246044259,
-4.238702984875999, -4.1952233560950845, -4.154477406817023,
-4.116197595249105, -4.07433473807032, -4.035678470732819},
{-4.787366614011262, -5.368309829984355, -5.35565836270689,
-5.2082776885072235, -5.057560097280657, -4.9129686648302595,
-4.805322869193333, -4.729060919649783, -4.658131011376099,
-4.5879994060233, -4.520527169712295, -4.457884843708598,
-4.400520851377223, -4.347083026936161, -4.297035006689839,
-4.250361717335181, -4.206764226524683, -4.165909666175139,
-4.127526665972255, -4.085543195462378, -4.046780135024164},
{-4.799981254305749, -5.383034529942961, -5.370433504438552,
-5.222638759252732, -5.071499356985441, -4.926491720165359,
-4.818569231989386, -4.7420837265235605, -4.67097594273946,
-4.6006356696088915, -4.5329632387074525, -4.470155710798281,
-4.412635952961864, -4.35904358150583, -4.308853641072346,
-4.262053016696882, -4.218337427075312, -4.177374013095687,
-4.1388874857802875, -4.096782927525055, -4.057912932890758},
{-4.812633583955176, -5.3978020615941205, -5.38525054857746,
-5.23703995244432, -5.085477550463111, -4.940052536709118,
-4.831852661074663, -4.75514304972603, -4.683856628536887,
-4.6133070665746345, -4.545433876526658, -4.48246093941998,
-4.4247848471059115, -4.371037347606034, -4.32070524484152,
-4.27377697625343, -4.229943054429896, -4.188870537858747,
-4.150280146255682, -4.108054024305602, -4.069076943662367},
{-4.825323710378143, -5.412612546424498, -5.400109606045589,
-5.2514813769375905, -5.099494785317802, -4.953651226700458,
-4.845173261586751, -4.768238992350234, -4.696773167721403,
-4.626013695058646, -4.557939181904658, -4.494800625565404,
-4.436967625209945, -4.383064417117566, -4.332589915866265,
-4.285533693240723, -4.241581205184048, -4.200399335859402,
-4.1617047304680455, -4.119356565846829, -4.080272242499632},
{-4.838051741513482, -5.427466106746579, -5.4150107915265835,
-5.265963141711836, -5.113551168426056, -4.96728789491317,
-4.858531142337597, -4.781371659519209, -4.709725664280995,
-4.638755649750237, -4.5704792569740675, -4.507174865619163,
-4.449184380864608, -4.395124888600549, -4.344507752517529,
-4.297323262340797, -4.253251981615904, -4.211960499029374,
-4.17316133602435, -4.130690641737601, -4.091498906956986},
{-4.850817785714753, -5.44236286382511, -5.429954217783234,
-5.28048535400012, -5.127646806147823, -4.9809626506394125,
-4.871926406143757, -4.794541151924932, -4.722714216775785,
-4.651533027870755, -4.583054196278681, -4.519583757370128,
-4.461435209203046, -4.407218856293184, -4.356458850234048,
-4.3091457754562725, -4.264955479222408, -4.223554119897017,
-4.184650044349837, -4.142056331853382, -4.1027570166261285},
{-4.863621951139066, -5.457302940827503, -5.4449399983132025,
-5.2950481249863515, -5.141781808481028, -4.9946756015051506,
-4.885359164378315, -4.807747574101086, -4.735738927571219,
-4.664345927871182, -4.595664103428135, -4.532027395885962,
-4.473720203211997, -4.419346416994813, -4.368443308143469,
-4.3210013316056575, -4.276691800034314, -4.235180292002042,
-4.196170951858221, -4.153453724517021, -4.114046645190683},
{-4.876464346340072, -5.472286460790201, -5.459968248353107,
-5.309651563358784, -5.15595628459414, -5.008426859159954,
-4.898829520614527, -4.820991031410813, -4.748799900546146,
-4.677194446856447, -4.608309079332685, -4.544505882608064,
-4.486039459443418, -4.431507670182327, -4.380461228152853,
-4.3328900288033765, -4.288461041673145, -4.246839108520362,
-4.207724145853717, -4.16488291179121, -4.125367875727534},
{-4.889345080413477, -5.487313545971119, -5.475039080352872,
-5.324295779122622, -5.170170340978075, -5.022216531106096,
-4.912337584391935, -4.834271624720714, -4.761897235563083,
-4.690078682622698, -4.620989222603384, -4.557019312524062,
-4.49839306902868, -4.443702711752849, -4.392512704573164,
-4.344811960560037, -4.300263302931853, -4.258530665378203,
-4.219309718391742, -4.176343977844226, -4.136720783812052},
{-4.902264262731478, -5.5023843203453, -5.4901526104149525,
-5.338980884065677, -5.1844240872815135, -5.036044727057742,
-4.925883462346974, -4.847589458047878, -4.775031036391738,
-4.702998733642744, -4.633704637097253, -4.569567782760714,
-4.510781128054077, -4.455931639568007, -4.404597838780319,
-4.356767224562645, -4.312098684349621, -4.270255055489542,
-4.230927755474113, -4.1878370066406205, -4.148105443404347},
{-4.915222002797236, -5.517498907975096, -5.505308952771884,
-5.353706987771147, -5.198717633233173, -5.049911558744498,
-4.939467263109691, -4.860944634245243, -4.788201406656299,
-4.715954697414418, -4.646455426103785, -4.582151393209642,
-4.523203732976981, -4.468194555083755, -4.416716727057064,
-4.3687559218888055, -4.323967284581158, -4.282012373696489,
-4.242578353114368, -4.199362094142998, -4.159521940629929},
{-4.928218410237605, -5.53265743162774, -5.520508222281933,
-5.368474201648496, -5.213051088772772, -5.063817135014688,
-4.953089094997267, -4.874337255925639, -4.801408449522569,
-4.728946675393672, -4.659241691675561, -4.594770244162646,
-4.535660977679072, -4.480491556445486, -4.428869471332291,
-4.380778147104138, -4.335869207337964, -4.29380271192349,
-4.2542616024948074, -4.210919328448654, -4.170970354163728},
{-4.941253595330636, -5.547860016864433, -5.535750535025727,
-5.383282638751552, -5.227424565520778, -5.077761565735273,
-4.96674906345288, -4.8877674273826415, -4.814652267188649,
-4.7419747640014975, -4.67206353716756, -4.607424431167601,
-4.548152956711419, -4.492822742126009, -4.441056171126547,
-4.392834000696894, -4.347804550168803, -4.305626167995797,
-4.265977593058778, -4.2225088027407764, -4.182450763306406},
{-4.954327668092446, -5.56310678783484, -5.551036006036156,
-5.398132409485697, -5.2418381724346546, -5.091744965196995,
-4.980447279500368, -4.901235248238663, -4.827932965170476,
-4.755039064708399, -4.684921065469098, -4.6201140558114275,
-4.560679765621899, -4.505188212686335, -4.453276921529323,
-4.404923579357273, -4.359773410462367, -4.317482831473171,
-4.277726418018574, -4.234130600460048, -4.193963243793405},
{-4.967440739590529, -5.578397869299806, -5.566364751881338,
-5.413023629414965, -5.256292019636021, -5.105767442662909,
-4.994183852810238, -4.914740825530316, -4.8412506499298615,
-4.768139681822504, -4.6978143866872415, -4.632839217221772,
-4.5732415014572325, -4.517588071059436, -4.465531829824613,
-4.417046987953654, -4.371775893800077, -4.32937280312035,
-4.289508170229965, -4.245784822982387, -4.2055078839475755},
{-4.980592920390336, -5.593733386202075, -5.581736888678279,
-5.427956408064347, -5.270786220738955, -5.119829110692081,
-5.007958890091686, -4.928284258588974, -4.854605423897738,
-4.781276709480153, -4.71074360331113, -4.645600014584488,
-4.585838258317381, -4.530022415994608, -4.477820990541659,
-4.429204321582802, -4.383812098785711, -4.341296172133298,
-4.301322942767001, -4.257471560296835, -4.2170847631423385},
{-4.993784321934072, -5.6091134642701945, -5.597152532507607,
-5.442930861237983, -5.285320885282999, -5.133930079326092,
-5.02177250085515, -4.941865650922409, -4.867997391935205,
-4.794450251494709, -4.723708821053151, -4.65839654863521,
-4.598470132150396, -4.542491350854107, -4.490144502968178,
-4.441395682602888, -4.395882123812044, -4.353253036068054,
-4.3131708278742735, -4.269190903338313, -4.228693961333192},
{-5.007015054943622, -5.624538229407335, -5.6126118002066505,
-5.457947102266189, -5.299896127551619, -5.1480704631176195,
-5.035624795345939, -4.955485103462706, -4.881426661078876,
-4.8076604119632975, -4.736710149598366, -4.671228918974521,
-4.611137222716934, -4.5549949795386055, -4.502502476025256,
-4.453621175067383, -4.40798607677425, -4.365243491418369,
-4.325051922824059, -4.280942956720537, -4.240335567796137},
{-5.020285232280003, -5.640007807072834, -5.628114808940154,
-5.473005245177774, -5.314512058575929, -5.162250374596624,
-5.0495158827034174, -4.969142721056414, -4.894893337121175,
-4.820907290559262, -4.749747693014797, -4.684097227167513,
-4.623839623447566, -4.567533400258981, -4.514894998181262,
-4.465880893854774, -4.420124047348509, -4.37726763288083,
-4.336966315902828, -4.292727802770969, -4.2520096581065445},
{-5.0335949650689145, -5.6555223240939085, -5.643661676294869,
-5.488105405245733, -5.329168790856784, -5.176469925616402,
-5.063445871921431, -4.9828386033841525, -4.9083975280227605,
-4.834190990863135, -4.7628215643635485, -4.697001575201284,
-4.636577431490878, -4.580106719884498, -4.5273221778916195,
-4.478174950862012, -4.432296146384033, -4.389325555181131,
-4.348914107205928, -4.30454554935568, -4.263716323286644},
{-5.046944366022217, -5.671081906853942, -5.659252519457368,
-5.503247697168263, -5.343866437804536, -5.190729230998841,
-5.077414873798261, -4.996572853568068, -4.921939337495132,
-4.847511616528209, -4.775931868796761, -4.709942061155743,
-4.649350744366529, -4.592715041602787, -4.539784113396308,
-4.490503439548775, -4.44450247061468, -4.401417350527481,
-4.360895388344943, -4.316396285954397, -4.275455642120505},
{-5.060333547855407, -5.686686682623986, -5.674887457527802,
-5.518432237586239, -5.358605113971862, -5.205028402197058,
-5.091423000128998, -5.010345574955863, -4.935518875317939,
-4.860869269352406, -4.789078717025404, -4.722918790750555,
-4.662159659746976, -4.60535846822313, -4.552280906216765,
-4.502866469105356, -4.456743120397732, -4.413543117967492,
-4.372910257516196, -4.328280114859808, -4.287227705717669},
{-5.07376262345133, -5.7023367780129774, -5.690566606011998,
-5.533659141852695, -5.373384932863701, -5.219367553574557,
-5.105470357601007, -5.024156867228157, -4.949136247545539,
-4.8742640541895526, -4.802262221863202, -4.735931863462611,
-4.675004273871309, -4.618037104264658, -4.564812656048161,
-4.515264138863131, -4.469018196978141, -4.425702951251878,
-4.384958807146177, -4.3401971268394846, -4.299032594215532},
{-5.08723170525991, -5.71803232095408, -5.706290086112858,
-5.5489285267249215, -5.388206009331043, -5.233746801895904,
-5.1195570607014815, -5.038006836635759, -4.962791565856605,
-4.887696077057626, -4.815482493497257, -4.748981382370403,
-4.6878846840627375, -4.630751056552981, -4.577379467169521,
-4.527696557866875, -4.4813278048313805, -4.4378969490499,
-4.397041136879125, -4.352147428537137, -4.310870397624967},
{-5.100740907488216, -5.733773439111246, -5.722058015257062,
-5.564240508574585, -5.403068456987967, -5.248166259065329,
-5.13368321757298, -5.051895582742873, -4.9764849337079795,
-4.90116543903423, -4.828739641190623, -4.762067449672031,
-4.70080099079496, -4.643500426966057, -4.5899814387230435,
-4.540163825826312, -4.493672040596721, -4.450125204282813,
-4.409157342000981, -4.364131114125485, -4.3227412052074214},
{-5.114290343517496, -5.749560260301223, -5.7378705123774125,
-5.57959520498116, -5.417972390590876, -5.262626040581381,
-5.147848940345284, -5.065823207318317, -4.990216462254466,
-4.914672247265116, -4.8420337809293414, -4.775190167827532,
-4.713753290605382, -4.656285321252653, -4.602618670433003,
-4.552666052382847, -4.506051008764189, -4.462387810788641,
-4.421307520089613, -4.37614828923688, -4.33464510061458},
{-5.127880127376557, -5.765392913192045, -5.7537276965304045,
-5.594992734360858, -5.432917927275412, -5.277126262219099,
-5.162054341475596, -5.079789815201366, -5.003986262330727,
-4.928216610649542, -4.855365022471233, -4.788349642934918,
-4.726741681872227, -4.669105847642641, -4.615291271416936,
-4.565203339989239, -4.5184648109498085, -4.474684870765486,
-4.433491770309047, -4.388199044849898, -4.346582174992363},
{-5.141510373581696, -5.781271526393539, -5.769629688184068,
-5.610433215420926, -5.447905182787508, -5.291667037316074,
-5.176299530859978, -5.0937955097761005, -5.017794442115701,
-4.941798629683035, -4.868733481198433, -4.801545977352362,
-4.73976626656804, -4.681962114853377, -4.627999336124049,
-4.577775797602953, -4.530913547918317, -4.487016476785357,
-4.4457101923107984, -4.4002834933344275, -4.358552520723606},
{-5.155181196914782, -5.797196228522807, -5.785576605805545,
-5.625916764816793, -5.4629342729531345, -5.3062484841866535,
-5.190584621457674, -5.1078403919163975, -5.03164111134538,
-4.95541841317754, -4.882139272587665, -4.814779276166519,
-4.752827138661814, -4.694854223431321, -4.640742973409942,
-4.590383530841791, -4.543397319954238, -4.499382728594355,
-4.4579628800056526, -4.412401728310215, -4.370556226458575},
{-5.168892711364606, -5.813167149222863, -5.8015685707723605,
-5.641443504013296, -5.478005314747861, -5.320870718140213,
-5.204909725478501, -5.121924566949019, -5.045526382004027,
-4.969076069886796, -4.895582510063832, -4.828049642310361,
-4.765924401785014, -4.7077822847277275, -4.653522280714242,
-4.603026647637307, -4.5559162324498175, -4.511783716872742,
-4.470249937723565, -4.424553853430552, -4.38259338127682},
{-5.182645032960863, -5.829184417401848, -5.817605702512083,
-5.657013550924603, -5.493118424179556, -5.335533856014081,
-5.21927495476848, -5.136048137232137, -5.0594503643369535,
-4.982771703194885, -4.9090633078158135, -4.841357180594059,
-4.779058152584184, -4.720746403807425, -4.666337365422805,
-4.615705255608191, -4.56847038421256, -4.524219543513027,
-4.482571462860506, -4.436739974844386, -4.394664081133669},
{-5.196438276518165, -5.845248163350334, -5.833688121936575,
-5.672627026317059, -5.508273719671706, -5.350238011225883,
-5.233680421806639, -5.150211207270331, -5.073413166166574,
-4.996505421724578, -4.92258178198972, -4.854701998308883,
-4.79222849423968, -4.73374669036275, -4.679188326765143,
-4.628419461238082, -4.5810598808311624, -4.536690305663797,
-4.494927556159382, -4.4489601953901, -4.406768418812135},
{-5.2102725586846645, -5.861358517591725, -5.8498159501396,
-5.688284051248047, -5.523471321233956, -5.364983305000351,
-5.248126239006524, -5.164413883263478, -5.087414905916376,
-5.010277334105922, -4.936138048840803, -4.8680842014582595,
-4.80543552483141, -4.746783251059242, -4.692075272134389,
-4.641169376263861, -4.593684818726615, -4.5491960965737235,
-4.507318315416342, -4.46121461592702, -4.41890648642584},
{-5.224147994435043, -5.877515608910471, -5.865989307385462,
-5.703984744883201, -5.538711343564501, -5.379769852850586,
-5.262612520105904, -5.178656268049963, -5.101455688942224,
-5.02408754692442, -4.949732226777996, -4.881503896249342,
-4.818679345786222, -4.759856195509201, -4.704998301604064,
-4.653955107401998, -4.606345307496667, -4.561737020500004,
-4.519743847791688, -4.473503345994686, -4.431078386412992},
{-5.238064700890391, -5.893719569248788, -5.8822083166087396,
-5.719729230579105, -5.553993907735276, -5.394597771490226,
-5.27713937896624, -5.19293846662913, -5.115535630568047,
-5.037936169224849, -4.963364429335343, -4.894961186044384,
-4.8319600560716935, -4.772965629854298, -4.71795752345497,
-4.666776763071539, -4.619041444988397, -4.5743131685158005,
-4.5322042503685225, -4.485826483876735, -4.443284208289697},
{-5.25202279428413, -5.909970529850398, -5.898473098131944,
-5.7355176287164795, -5.569319131805969, -5.409467181947548,
-5.291706928037456, -5.207260585091717, -5.1296548456084565,
-5.0518233102120575, -4.977034777271911, -4.908456181110523,
-4.845277762397018, -4.786111666879151, -4.730953040721943,
-4.679634456806525, -4.631773334564059, -4.586924643110251,
-4.544699627738737, -4.49818414026231, -4.455524053730187},
{-5.266022391238948, -5.92626862006, -5.914783773499948,
-5.751350061902485, -5.584687134462001, -5.424378197894839,
-5.306315282534342, -5.221622730437957, -5.143813440576196,
-5.065749077621149, -4.990743386493705, -4.921988989612146,
-4.858632560775732, -4.79929441423883, -4.743984956985514,
-4.692528293664509, -4.644541080087947, -4.599571543592901,
-4.557230077232816, -4.510576420863799, -4.467798018697067},
{-5.280063610160141, -5.942613973675179, -5.931140467379009,
-5.767226653377293, -5.600098040013108, -5.439330941335356,
-5.320964554397506, -5.23602500987181, -5.158011535524565,
-5.0797135837201495, -5.004490376850299, -4.935559716832358,
-4.872024559081183, -4.812513978838979, -4.757053381654259,
-4.705458388016268, -4.657344786464819, -4.612253967592551,
-4.569795707851881, -4.523003430527751, -4.480106207287463},
{-5.29414656690642, -5.959006721372134, -5.9475432995241135,
-5.783147524300148, -5.6155519639578415, -5.454325530947244,
-5.335654858201451, -5.250467527359433, -5.172249238450604,
-5.093716933311953, -5.018275862472365, -4.9491684721870115,
-4.885453852744831, -4.8257704755233135, -4.7701584138776525,
-4.7184248446064885, -4.670184552996943, -4.624972012497892,
-4.582396617515769, -4.535465270739223, -4.492448708922893},
{-5.30827138038876, -5.975446994845697, -5.963992394397792,
-5.799112801309093, -5.6310490297255456, -5.469362085670582,
-5.350386311169132, -5.264950395212509, -5.1865266677123145,
-5.107759244121553, -5.032099970878335, -4.96281536774768,
-4.898920552805066, -4.8390640123107005, -4.7833001685430645,
-4.731427784201514, -4.683060487659532, -4.637725783373753,
-4.595032917932258, -4.547962055781682, -4.504825636759051},
{-5.322438168281224, -5.991934926918475, -5.98048787368316,
-5.815122604588396, -5.646589357522316, -5.484440722975705,
-5.365159023232991, -5.279473718459485, -5.200843936007004,
-5.1218406183688785, -5.04596281391423, -4.976500506403681,
-4.912424755639222, -4.852394699664728, -4.796478746298817,
-4.7444673083446105, -4.695972687681206, -4.65051537832187,
-4.607704703877971, -4.560493890872749, -4.517237082720385},
{-5.336647049229214, -6.008470651060634, -5.997029862010095,
-5.831177061838389, -5.662173069205892, -5.499561565411568,
-5.379973114148015, -5.294037608728104, -5.215201156337571,
-5.135961173138639, -5.059864511778869, -4.990223999833688,
-4.925966569338925, -4.86576264687028, -4.809694251365727,
-4.757543532148702, -4.7089212597420556, -4.6633408948619035,
-4.620412080665119, -4.5730608795784065, -4.52968314710597},
{-5.3508981416489405, -6.0250542993380805, -6.0136184829243575,
-5.847276297077769, -5.677800288467552, -5.514724731656315,
-5.3948286966915475, -5.308642174197303, -5.229598446530872,
-5.150121019367361, -5.07380518901482, -5.003985960778664,
-4.939546097302809, -4.879167969411355, -4.82294680148334,
-4.770656568100094, -4.72190631122794, -4.676202439186454,
-4.633155156516295, -4.585663132696936, -4.542163939593593},
{-5.365191564713314, -6.0416860043260385, -6.030253859418735,
-5.863420434361615, -5.693471136335575, -5.529930343822343,
-5.409725886027445, -5.323287525287014, -5.244035918971349,
-5.164320267023868, -5.087784960487625, -5.017786497883208,
-4.9531634454469895, -4.892610773909837, -4.836236497772916,
-4.783806525694672, -4.734927941179194, -4.689100112052984,
-4.645934035615937, -4.598300756624667, -4.554679555410985},
{-5.37952743736605, -6.058365901109937, -6.04693611611583,
-5.879609600044205, -5.709185735460778, -5.54517852106801,
-5.424664798629237, -5.337973774934653, -5.258513691602275,
-5.178559027946903, -5.101803952078626, -5.0316257197919185,
-4.966818717075512, -4.906091177806957, -4.849563449140987,
-4.796993519317766, -4.7479862538020825, -4.702034012712829,
-4.658748821246263, -4.610973860093509, -4.567230097447464},
{-5.393905879995145, -6.075094122730661, -6.063665377099824,
-5.895843920494372, -5.724944209068781, -5.560469387688499,
-5.439645549922716, -5.352701033159974, -5.273031877237372,
-5.192837418348063, -5.115862277096312, -5.045503737565014,
-4.980512018213631, -4.919609289150685, -4.862927765760105,
-4.810217655962333, -4.761081354175985, -4.715004244833835,
-4.671599615714513, -4.623682551973616, -4.57981566953822},
{-5.408327011657093, -6.091870803495112, -6.0804417679901235,
-5.91212352259754, -5.740746681796736, -5.575803059749887,
-5.454668254598801, -5.367469413860817, -5.2875905945693376,
-5.207155548254377, -5.129960059588484, -5.059420664096251,
-4.994243456785625, -4.933165221103991, -4.876329556151177,
-4.823479052080074, -4.774213345364842, -4.728010913662729,
-4.684486532591109, -4.636426939352532, -4.592436374121462},
{-5.4227909531546175, -6.108696077848435, -6.0972654127690475,
-5.9284485323150875, -5.756593278580112, -5.591179662791546,
-5.4697330309063545, -5.3822790291233105, -5.30218995953328,
-5.221513533229881, -5.144097420197795, -5.073376606822421,
-5.008013138358365, -4.9467590858839685, -4.889768930188438,
-4.836777817072289, -4.787382330017863, -4.741054120553599,
-4.697409666863678, -4.649207131500589, -4.605092312180204},
{-5.4372978240207885, -6.125570080374018, -6.114136437303387,
-5.944819077645661, -5.772484124019684, -5.6065993221636745,
-5.484839995100629, -5.39712999623589, -5.316830088515417,
-5.235911490148283, -5.15827448238997, -5.087371682595403,
-5.021821168571478, -4.9603909982251935, -4.903245999979845,
-4.850114065462549, -4.800588416212122, -4.754133971138799,
-4.7103691336815245, -4.662023239245173, -4.6177835859998595},
{-5.451847745698615, -6.142492946302809, -6.131054966863303,
-5.961235286551528, -5.788419341042754, -5.622062154507148,
-5.499989261224982, -5.4120224285143195, -5.33151109902974,
-5.250349528214429, -5.172491363649897, -5.1014059978188016,
-5.035667657764861, -4.974061068358424, -4.916760874366446,
-4.8634879071541945, -4.813831705003395, -4.767250569588214,
-4.723365031328285, -4.674875371885719, -4.630510302929906},
{-5.466440839543793, -6.159464810771169, -6.148021127060929,
-5.97769728689309, -5.8043990559745, -5.6375682867874275,
-5.515180948670604, -5.426956442010123, -5.346233107688022,
-5.264827764163783, -5.186748184445605, -5.115479668464104,
-5.049552713018784, -4.987769412546186, -4.930313664066489,
-4.876899456241517, -4.8271123008889845, -4.7804040208720835,
-4.736397471904638, -4.687763641690253, -4.643272564324434},
{-5.481077226504567, -6.1764858092865325, -6.1650350440177135,
-5.994205207753112, -5.820423396420665, -5.653117840229243,
-5.530415175024245, -5.441932154972164, -5.360996234398044,
-5.279346316361625, -5.201045068344683, -5.12959280639916,
-5.063476444018306, -5.001516142816399, -4.943904484753148,
-4.8903488242285675, -4.8404303109273314, -4.793594430651865,
-4.7494665593258105, -4.700688154771342, -4.656070468845428},
{-5.495757028471417, -6.193556077967514, -6.1820968446772895,
-6.0107591785126715, -5.836492488379008, -5.668710938509321,
-5.545692055398831, -5.45694968704629, -5.37580059535685,
-5.29390529885859, -5.21538213679014, -5.143745521156234,
-5.077438960310246, -5.015301373801776, -4.957533448585309,
-4.903836125806265, -4.853785836719908, -4.8068219063279685,
-4.762572403647937, -4.713649028301006, -4.668904130012379},
{-5.510480367647688, -6.210675753180112, -6.199206655437592,
-6.027359327425074, -5.85260645771632, -5.684347707981942,
-5.561011707868602, -5.472009154516854, -5.390646309504518,
-5.308504828935838, -5.229759510795702, -5.157937928663159,
-5.0914403687856975, -5.029125221532013, -4.971200664127537,
-4.917361469371826, -4.867178984510247, -4.82008655257232,
-4.775715103329276, -4.726646370298113, -4.681773640040774},
{-5.525247365643736, -6.22784497167595, -6.216364603620605,
-6.044005786134221, -5.868765432947839, -5.7000282713052,
-5.576374251482775, -5.4871106801438145, -5.405533498356817,
-5.3231450225866865, -5.244177311302337, -5.172170139609079,
-5.105480783051462, -5.042987797693058, -4.984906251811481,
-4.9309249713260215, -4.880609859406832, -4.833388478582492,
-4.788894775178051, -4.739680292463163, -4.694679109365097},
{-5.540058145794319, -6.2450638690643245, -6.23357081557333,
-6.060698683919327, -5.884969539794838, -5.715752753589186,
-5.591779802009114, -5.502254383805848, -5.420462279435014,
-5.337826000482892, -5.258635659229185, -5.18644226804463,
-5.119560313745751, -5.056889217623393, -4.998650320107117,
-4.944526742510789, -4.894078562996583, -4.846727791140438,
-4.802111520984909, -4.752750910978648, -4.707620638888329},
{-5.5549128308666695, -6.262332583617535, -6.25082541978918,
-6.0774381524461205, -5.901218908416922, -5.7315212801258895,
-5.607228481363563, -5.517440388772229, -5.435432772268541,
-5.352547879178019, -5.2731346782893525, -5.200754427467473,
-5.133679070386279, -5.070829594034876, -5.012432985604391,
-4.958166895157774, -4.907585203953204, -4.860104599836632,
-4.815365449976525, -4.7658583352167625, -4.72059833505773},
{-5.569811543544347, -6.279651253040356, -6.268128543881176,
-6.094224322223454, -5.917513668020547, -5.747333975712536,
-5.622720402556297, -5.532668820160325, -5.450445099137141,
-5.3673107756258105, -5.287674488143239, -5.215106730109255,
-5.147837167671241, -5.0848090450963355, -5.026254366683133,
-4.971845543332165, -4.921129886482959, -4.873519011714961,
-4.828656669458724, -4.779002676674281, -4.733612303374684},
{-5.58475440796974, -6.297020013407746, -6.285480315244058,
-6.111057324538706, -5.933853945680312, -5.763190967729315,
-5.638255687445053, -5.547939799304004, -5.465499376710795,
-5.382114810825442, -5.302255212147429, -5.229499292188848,
-5.162034717061033, -5.098827685033029, -5.040114574112522,
-4.985562800458865, -4.93471271636372, -4.886971137049841,
-4.841985289924196, -4.792184053629171, -4.746662648321944},
{-5.599741547914164, -6.314439004199812, -6.302880863244354,
-6.1279372929930105, -5.950239871213853, -5.779092379882059,
-5.653834455370088, -5.5632534553078585, -5.480595729561173,
-5.396960104131722, -5.31687697081361, -5.243932224846503,
-5.176271829906909, -5.112885630383971, -5.054013730346924,
-4.999318778660381, -4.948333801177796, -4.900461088225711,
-4.855351417485508, -4.8054025769088184, -4.759749475386343},
{-5.614773087629146, -6.331908364249102, -6.320330317226762,
-6.144864359186613, -5.966671575632063, -5.795038343232591,
-5.669456823321525, -5.5786099130200455, -5.495734279109456,
-5.41184677342244, -5.331539887316467, -5.258405640859564,
-5.190548623431823, -5.126982991758268, -5.067951946213725,
-5.013113590524881, -4.961993239383446, -4.913988967469777,
-4.868755162053276, -4.8186583594215335, -4.772872884946992},
{-5.629849151129747, -6.349428230263584, -6.337828804615128,
-6.16183865590574, -5.983149187806703, -5.811028979376715,
-5.685122914372187, -5.594009303938947, -5.510915147293417,
-5.426774942679913, -5.346244083644706, -5.27291965821496,
-5.204865210376738, -5.141119889871334, -5.081929346139077,
-5.026947350444971, -4.9756911465810845, -4.927554891866748,
-4.882196629376267, -4.831951516971458, -4.786032993230037},
{-5.644969863951701, -6.366998743164004, -6.355376456333033,
-6.178860316780629, -5.999672841622669, -5.827064418466762,
-5.700832844981051, -5.609451754280599, -5.526138455839828,
-5.441744729905622, -5.360989680659259, -5.2874743878346635,
-5.219221704763186, -5.155296438708319, -5.095946045257733,
-5.040820169742801, -4.9894276258855825, -4.941158973961137,
-4.895675936029875, -4.84528216032777, -4.799229902331717},
{-5.660135350193741, -6.38462004106259, -6.372973400648334,
-6.195929475339653, -6.016242665027676, -5.843144789047074,
-5.716586734029988, -5.624937395870802, -5.541404326846532,
-5.456756257386587, -5.375776800829044, -5.302069944591494,
-5.2336182240906055, -5.169512752283481, -5.110002161498414,
-5.054732162941946, -5.003202782390872, -4.954801318919635,
-4.9091931869479595, -4.858650404770742, -4.812463717345963},
{-5.675345736293821, -6.402292263766867, -6.390619768586475,
-6.213046266610036, -6.032858791651961, -5.85927021758107,
-5.732384706250741, -5.6404663633366, -5.556712886507739,
-5.471809644324821, -5.390605569409672, -5.316706445795717,
-5.248054884839803, -5.183768949791556, -5.124097816180438,
-5.068683446312207, -5.017016725323629, -4.968482045660494,
-4.92274849183741, -4.872056365333265, -4.825734549347544},
{-5.690601147038251, -6.420015551484539, -6.408315690103336,
-6.230210823574453, -6.049521352666488, -5.875440834017354,
-5.748226879593858, -5.656038786401041, -5.572064258012688,
-5.486905015692173, -5.4054761066581705, -5.33138400316966,
-5.262531802953163, -5.198065147647867, -5.138233130899607,
-5.082674129924271, -5.030869564856403, -4.982201260805596,
-4.936341966371401, -4.885500156698981, -4.839042508567218},
{-5.705901709647151, -6.43779004424141, -6.426061296209809,
-6.247423282817181, -6.066230481133971, -5.891656764797517,
-5.764113375415036, -5.671654802084959, -5.5874585646160995,
-5.502042491403699, -5.420388532584184, -5.346102732088184,
-5.277049094380345, -5.212401457654778, -5.152408223584644,
-5.096704327064799, -5.044761400480638, -4.995959076462896,
-4.949973713301006, -4.898981889360584, -4.8523876998369815},
{-5.72124754912511, -6.4556158829291235, -6.443856717960443,
-6.264683780500491, -6.082986311652348, -5.907918141449045,
-5.7800443148298655, -5.687314544717083, -5.602895934302069,
-5.517222195230715, -5.4353429752227385, -5.360862748821091,
-5.29160688284901, -5.226778003008803, -5.166623218625318,
-5.1107741578889545, -5.058692353020888, -5.009755610721186,
-4.963643852650421, -4.91250168235274, -4.865770238218829},
{-5.736638793176098, -6.473493207769934, -6.461702085362049,
-6.28199245032738, -6.099788975297997, -5.924225093251152,
-5.796019819754292, -5.703018150517892, -5.618376488673675,
-5.532444247415697, -5.450339555318351, -5.375664166807837,
-5.306205279004644, -5.241194895745139, -5.180878232917166,
-5.124883727199631, -5.072662521983148, -5.023590971759404,
-4.97735248914978, -4.926059647026705, -4.879190228646621},
{-5.752075568500004, -6.491422160412185, -6.479597532379557,
-6.299349430235452, -6.116638608138601, -5.9405777501669945,
-5.812040013086516, -5.718765759571397, -5.633900356500817,
-5.547708771766338, -5.46537839659868, -5.390507101488765,
-5.3208444072224665, -5.255652256513713, -5.195173393949517,
-5.139033157072845, -5.08667201983917, -5.037465274886927,
-4.991099737555487, -4.939655901223887, -4.892647787695751},
{-5.767558002469741, -6.50940288221318, -6.497543188241252,
-6.316754856394255, -6.133535340937669, -5.956976241614029,
-5.8281050154037075, -5.734557508782018, -5.649467663366522,
-5.563015890911629, -5.480459618360328, -5.405391665757634,
-5.335524384863675, -5.270150197291514, -5.209508822590578,
-5.153222555949469, -5.100720956630539, -5.051378632284468,
-5.004885709742666, -4.953290558696608, -4.906143021362368},
{-5.783086222523707, -6.527435515490652, -6.515539187901595,
-6.334208866908739, -6.150479312658717, -5.973420699941926,
-5.844214952900074, -5.750393539965444, -5.665078536767396,
-5.578365729881625, -5.495583348158107, -5.420317981624976,
-5.350245335546788, -5.284688841056777, -5.223884642240591,
-5.167452044202946, -5.114809443126433, -5.0653311606438365,
-5.018710518925218, -4.966963732600561, -4.9196760456688935},
{-5.798660356740584, -6.545520200976171, -6.533585661461984,
-6.351711597664689, -6.167470657521335, -5.989911251803278,
-5.860369944355625, -5.7662739927036455, -5.6807331051677465,
-5.593758406823326, -5.510749706438219, -5.435286155130598,
-5.365007377011352, -5.299268302071141, -5.238300975121092,
-5.1817217295465525, -5.128937589601264, -5.079322968857014,
-5.032574275377556, -4.980675539598451, -4.933246969871107},
{-5.814280533617421, -6.563657083148428, -6.551682744713617,
-6.3692631885714945, -6.1845095112221316, -6.006448036823713,
-5.876570118613017, -5.782199011329794, -5.696431496202422,
-5.609194051838131, -5.525958819620428, -5.450296312526916,
-5.379810632090084, -5.313888699747622, -5.252757947688224,
-5.196031731087714, -5.143105508454028, -5.093354177879519,
-5.04647709481651, -4.994426096440293, -4.946855909802252},
{-5.82994688144754, -6.58184630364849, -6.569830569009355,
-6.386863777479448, -6.201596007711487, -6.023031179865939,
-5.892815595143475, -5.7981687375795445, -5.712173837251612,
-5.624672782920243, -5.541210811548808, -5.465348559198901,
-5.394655221971334, -5.328550150996307, -5.26725568297843,
-5.2103821601194795, -5.157313307514414, -5.107424896807061,
-5.060419086861657, -5.008215516791097, -4.960502978850855},
{-5.845659529473778, -6.600088005354337, -6.588029267615639,
-6.404513502347982, -6.21873028477421, -6.03966081651015,
-5.909106501967472, -5.814183314192633, -5.727960258729581,
-5.640194727675407, -5.556505803018808, -5.480443017688231,
-5.409541268381872, -5.343252776510781, -5.281794306720258,
-5.224773135589203, -5.1715611077524954, -5.121535242316895,
-5.074400371697266, -5.022043918201234, -4.974188293912448},
{-5.861418606953521, -6.618382332329929, -6.606278975887108,
-6.42221250385046, -6.235912480275147, -6.056337079455261,
-5.925442964566173, -5.830242888951034, -5.743790892745892,
-5.655760012836254, -5.5718439198390115, -5.495579802940483,
-5.424468899145722, -5.357996694932808, -5.29637394339079,
-5.239204768658965, -5.185849013621919, -5.135685330576962,
-5.088421060310793, -5.035911416969611, -4.987911966454703},
{-5.877224242696684, -6.6367294283845695, -6.6245798288000515,
-6.439960922696628, -6.25314273389813, -6.073060099348368,
-5.941825107947807, -5.846347605889605, -5.759665866564319,
-5.671368756848096, -5.587225287090405, -5.510759029290057,
-5.4394382316677365, -5.372782024205662, -5.310994720101007,
-5.253677174376207, -5.200177143051405, -5.149875273506041,
-5.102481264984817, -5.049818126135506, -5.001674118364463},
{-5.8930765679397155, -6.65512943729118, -6.642931958915142,
-6.457758895674488, -6.270421179215191, -6.08983001447632,
-5.9582530566476635, -5.8624976108185365, -5.775585310533643,
-5.687021089572227, -5.6026500295702135, -5.5259808139526285,
-5.454449392200331, -5.387608884382644, -5.325656759159756,
-5.268190468123066, -5.214545610971982, -5.164105191171984,
-5.116581100737676, -5.063764163729502, -5.015474861633265},
{-5.908975711779931, -6.673582504074147, -6.661335503777082,
-6.475606566731585, -6.287747956994281, -6.106646954132884,
-5.974726941240078, -5.878693051505252, -5.791549358793418,
-5.702717134074192, -5.61811827083875, -5.541245271961088,
-5.469502506311983, -5.402477393756271, -5.340360189075,
-5.282744765558164, -5.228954527454334, -5.178375195726403,
-5.130720684188418, -5.0777496456721565, -5.029314316183445},
{-5.924921805621125, -6.692088772288116, -6.679790597583633,
-6.493504076148383, -6.305123204183474, -6.123511055811832,
-5.991246886507724, -5.894934073097829, -5.8075581407756545,
-5.718457017930632, -5.63363013228809, -5.556552523194114,
-5.484597697548452, -5.417387676789076, -5.355105136011844,
-5.297340178978629, -5.24340401252266, -5.192685404486838,
-5.144900130704627, -5.091774690619786, -5.043192603785428},
{-5.94091498009584, -6.7106483884344925, -6.6982973761842,
-6.511451565704192, -6.322547060495708, -6.140422451047925,
-6.007813020594767, -5.911220825946657, -5.823611788007838,
-5.734240865975153, -5.6491857437067665, -5.5719026816950645,
-5.499735092249466, -5.432339849838172, -5.369891723748879,
-5.311976824887097, -5.257894180176663, -5.20703593431972,
-5.159119555246434, -5.105839413212379, -5.057109840156045},
{-5.956955366054899, -6.72926149777777, -6.7168559768251725,
-6.529449176763592, -6.340019669216417, -6.15738127813529,
-6.024425472554867, -5.927553458997863, -5.839710436157475,
-5.750068804278271, -5.664785229906556, -5.587295865829219,
-5.514914815226803, -5.447334037089604, -5.384720084024593,
-5.3266548197716475, -5.272425147282775, -5.221426899443031,
-5.173379073414253, -5.119943928497378, -5.071066151736886},
{-5.97304309548781, -6.747928245436924, -6.73546653403173,
-6.547497050923994, -6.3575411667407025, -6.174387672595913,
-6.041084371187026, -5.943932117901568, -5.855854217188607,
-5.765940963799949, -5.680428716324968, -5.602732195562567,
-5.530136996312649, -5.462370361288777, -5.399590338463895,
-5.341374278083094, -5.286997035043896, -5.235858422573074,
-5.187678803078597, -5.134088359365705, -5.085061657926417},
{-5.989178300020285, -6.766648777833325, -6.754129187022045,
-6.56559533309337, -6.375111692410428, -6.191441766881326,
-6.057789845879597, -5.960356954128656, -5.872043260038481,
-5.781857465932262, -5.696116325256298, -5.61821178131504,
-5.545401756287902, -5.477448938821908, -5.414502617481048,
-5.3561353119876, -5.301609954127343, -5.250330615075654,
-5.202018858995871, -5.148272814432858, -5.099096477541025},
{-6.005361112464016, -6.785423242305114, -6.772844072562293,
-6.583744166069664, -6.392731389976689, -6.208543701235612,
-6.074542025933624, -5.976828112354269, -5.888277703896165,
-5.797818440492847, -5.711848182691028, -5.63373474367836,
-5.560709224635502, -5.492569896465284, -5.42945704307931,
-5.370938036619918, -5.3162640234368155, -5.264843594093691,
-5.216399359007482, -5.162497415294638, -5.113170733005973},
{-6.021591664546577, -6.804251784364169, -6.791611327731516,
-6.601943693385692, -6.410400398861384, -6.225693610540475,
-6.0913410443026805, -5.993345747170679, -5.904557679947175,
-5.813824017866864, -5.727624417690095, -5.649301205718075,
-5.576059529048507, -5.507733357953839, -5.444453747782973,
-5.385782572135213, -5.330959365266608, -5.279397481339402,
-5.230820418975782, -5.176762276736554, -5.127284554328071},
{-6.037870090105571, -6.823134551872499, -6.810431093043007,
-6.620194059920323, -6.428118864329008, -6.242891632275132,
-6.108187029931287, -6.009910004293488, -5.920883324528404,
-5.829874326445861, -5.743445155443624, -5.664911278232466,
-5.591452798733371, -5.522939447750105, -5.459492855719873,
-5.40066903072875, -5.345696099931956, -5.293992395090754,
-5.245282159259659, -5.191067517953343, -5.141438062099041},
{-6.0541965213669755, -6.842071693157777, -6.829303503676783,
-6.638495409330062, -6.445886924389924, -6.260137907040189,
-6.125080114659795, -6.026521031744778, -5.937254768490675,
-5.845969491332653, -5.759310520865256, -5.680565083122929,
-5.606889160044375, -5.53818828400108, -5.47457449400099,
-5.4155975262547145, -5.36047434246575, -5.308628451719414,
-5.259784697773284, -5.205413252202561, -5.15563137891877},
{-6.070571092899627, -6.861063355085207, -6.848228701062908,
-6.656847888225457, -6.463704723675619, -6.277432567534561,
-6.142020430990669, -6.04317898183217, -5.953672148607438,
-5.862109644978773, -5.775220644165529, -5.6962627397006145,
-5.622368743293919, -5.553479994792724, -5.489698790057446,
-5.430568179086549, -5.375294214798487, -5.323305772675667,
-5.274328148312634, -5.219799596176017, -5.16986463246576},
{-6.0869939377844275, -6.880109686120704, -6.86720682453597,
-6.675251640255738, -6.481572405748011, -6.294775758149626,
-6.159008114875178, -6.059884001384489, -5.970135603245581,
-5.878294917332823, -5.791175649719662, -5.712004364570021,
-5.637891676844447, -5.568814708545688, -5.504865874609095,
-5.44558110149228, -5.390155838642386, -5.338024473137921,
-5.28891263405967, -5.234226671178476, -5.1841379491379485},
{-6.103465191037685, -6.899210835174017, -6.886238013255934,
-6.693706813792232, -6.499490112328203, -6.312167613396014,
-6.176043293242401, -6.076636237099592, -5.986645261305966,
-5.894525436277036, -5.807175663547241, -5.727790076940437,
-5.653458087617764, -5.584192545109545, -5.520075868305867,
-5.460636409494327, -5.405059332362725, -5.352784675051225,
-5.30353827305953, -5.248694585607154, -5.198451448130072},
{-6.119984986456984, -6.918366950987547, -6.905322407626954,
-6.71221355455782, -6.517457990616094, -6.329608273263148,
-6.193126103658869, -6.093435840652091, -6.003201263039955,
-5.910801334408461, -5.8232208158297, -5.743619998116628,
-5.669068110684748, -5.599613635728019, -5.535328906669747,
-5.475734219144215, -5.420004822852206, -5.367586500447942,
-5.318205185903935, -5.26320346207649, -5.212805265982752},
{-6.13655345972802, -6.9375781827184255, -6.924460147813079,
-6.730772008901113, -6.535476180943078, -6.347097880738147,
-6.210256678394217, -6.110282956309675, -6.019803738949122,
-5.927122739958577, -5.83931123430375, -5.759494244848611,
-5.684721872152295, -5.615078102448024, -5.550625107687665,
-5.490874651397462, -5.434992427704856, -5.382430067678797,
-5.332913491132786, -5.277753414135077, -5.227199519475107},
{-6.153170745859825, -6.956844680702488, -6.943651376743219,
-6.749382325091574, -6.553544830050669, -6.364636571684969,
-6.227435155022249, -6.127177734786528, -6.0364528294157935,
-5.943489784229314, -5.855447045469191, -5.775412939416128,
-5.700419502551085, -5.630586077371845, -5.565964606648777,
-5.5060578192496905, -5.450022266144515, -5.397315498470562,
-5.347663307591574, -5.2923445542983245, -5.241634338919539},
{-6.169836980694527, -6.976166594526148, -6.962896233890206,
-6.768044650874799, -6.571664082548523, -6.382224491280795,
-6.244661666009051, -6.144120322620438, -6.053148668710492,
-5.959902601491194, -5.871628377251909, -5.791376199951628,
-5.716161135031143, -5.646137684787391, -5.5813475275208475,
-5.52128383978561, -5.46509446692653, -5.4122429111012025,
-5.362454757487285, -5.306977004089276, -5.256109847992775},
{-6.186552299568575, -6.995544074365171, -6.982194862110191,
-6.786759134847671, -6.589834084814356, -6.3998617777760956,
-6.261936347313167, -6.161110867615207, -6.069891390725388,
-5.976361320135766, -5.887855360007961, -5.807384150408325,
-5.731946899890318, -5.66173305643315, -5.596773999786819,
-5.536552833989845, -5.480209152083262, -5.4272124319541035,
-5.377287960640388, -5.321650876998319, -5.270626176439691},
{-6.203316839721083, -7.014977271661337, -7.001547405023302,
-6.805525927033159, -6.608054983851616, -6.417548570687359,
-6.279259334332892, -6.178149514686083, -6.086681134009268,
-5.992866072730976, -5.904128122594557, -5.823436905673589,
-5.747776927688392, -5.677372319711139, -5.612244147603633,
-5.551864916007617, -5.495366440824, -5.442224176673335,
-5.392163039461593, -5.336366285482654, -5.285183445783332},
{-6.220130736852298, -7.03446633709973, -7.020954003666702,
-6.824345174492919, -6.626326924575551, -6.43528501909168,
-6.296630763936264, -6.195236412080703, -6.103518032468855,
-6.009416993372724, -5.920446794101736, -5.839534591941629,
-5.7636513548350194, -5.693055604075198, -5.627758100279607,
-5.567220205208287, -5.510566460725386, -5.457278275251156,
-5.407080113291158, -5.351123349479167, -5.299781779831392},
{-6.236994128576043, -7.054011423475458, -7.040414802446321,
-6.8432170296873664, -6.644650053749501, -6.453071258154523,
-6.314050773144118, -6.212371705129044, -6.120402222324628,
-6.026014210685389, -5.936811505496735, -5.855677327635931,
-5.779570305821835, -5.708783041263814, -5.643315987865208,
-5.582618822620134, -5.525809331273194, -5.472374843884609,
-5.422039302997291, -5.365922179931658, -5.314421308459714},
{-6.253907152273314, -7.073612680520455, -7.059929943759926,
-6.862141639467154, -6.663024517794838, -6.470907434500987,
-6.331519497805857, -6.229555537909619, -6.1373338403354865,
-6.042657859274186, -5.953222384094261, -5.871865236447775,
-5.795533920187154, -5.72455476297182, -5.658917934561032,
-5.59806088503683, -5.541095181746641, -5.487514005828416,
-5.437040733551839, -5.380762900604168, -5.3291021546465345},
{-6.270869945612503, -7.093270261779253, -7.079499573614157,
-6.881119159537775, -6.6814504674403, -6.488793690594321,
-6.349037078718538, -6.246788058881066, -6.154313024308067,
-6.05934807707672, -5.969679561138037, -5.888098439405439,
-5.811542329684016, -5.740370899293339, -5.674564071538043,
-5.613546513370238, -5.556424131282256, -5.502695886490983,
-5.452084526521503, -5.3956456184678245, -5.343824437717558},
{-6.287882646338403, -7.112984320054238, -7.099123836320359,
-6.900149737884931, -6.699928050511517, -6.506730169792718,
-6.36660364967247, -6.264069415396079, -6.171339907188667,
-6.076084990054369, -5.986183165980037, -5.904377057697275,
-5.827595665527042, -5.7562315874383785, -5.69025452308415,
-5.629075827993802, -5.5717963102360955, -5.5179206060565775,
-5.467170799456653, -5.410570451407693, -5.3585882903280435},
{-6.304945393174421, -7.132755008271488, -7.1188028762699105,
-6.919233526517928, -6.718457412775024, -6.524717019223317,
-6.3842193494638195, -6.281399743951624, -6.188414624964935,
-6.0928687356063165, -6.002733334855293, -5.920701215844019,
-5.843694063441944, -5.772136955260066, -5.705989421810955,
-5.644648950023111, -5.587211839738302, -5.533188294997672,
-5.482299678973504, -5.425537520713988, -5.373393828704138},
{-6.322058325094986, -7.1525824806522, -7.1385368399569415,
-6.938370679228683, -6.737038706174644, -6.542754378308018,
-6.401884319813689, -6.298779197095428, -6.205537315443507,
-6.109699446198647, -6.019330192779307, -5.937071038439171,
-5.859837654134026, -5.788087138018454, -5.721768891584361,
-5.660265999089461, -5.602670843014494, -5.548499070981052,
-5.497471283946652, -5.440546935671591, -5.38824117812328},
{-6.339221581063612, -7.172466888849158, -7.158325872384012,
-6.957561347153387, -6.755672077553754, -6.5608423978919745,
-6.419598696767935, -6.316207915879204, -6.222708116634749,
-6.1265772570623085, -6.03597387301852, -5.953486645870726,
-5.876026575351716, -5.804082272516098, -5.73759306363354,
-5.67592709933524, -5.618173449402093, -5.563853059473331,
-5.512685740774032, -5.455598817396094, -5.403130460210377},
{-6.35643530021116, -7.192408389062621, -7.178170121194853,
-6.976805685677391, -6.774357678179513, -6.578981218728586,
-6.43736262107268, -6.333686046607909, -6.239927161732339,
-6.143502304708818, -6.052664509625174, -5.969948165977257,
-5.892260961642023, -5.820122493154486, -5.7534620643855305,
-5.691632373578614, -5.63371978320356, -5.579250388924265,
-5.527943168752245, -5.470693286784808, -5.418061801392469},
{-6.3736996231200465, -7.21240713615407, -7.198069733472948,
-6.996103846955521, -6.793095660592371, -6.597170988097787,
-6.455176231102087, -6.3512137325597, -6.257194585909019,
-6.16047471841739, -6.069402233086294, -5.986455722697428,
-5.908540944263223, -5.83620793686714, -5.769376024152734,
-5.707381941159838, -5.649309969114256, -5.594691179110669,
-5.543243692198303, -5.485830450037611, -5.433035317546455},
{-6.391014689179428, -7.232463282511162, -7.218024854963005,
-7.0154559863804025, -6.811886171621154, -6.615411855622369,
-6.473039665899705, -6.36879111971939, -6.274510530027328,
-6.177494639734505, -6.086187178691034, -6.0030094393587206,
-5.924866663379362, -5.852338739830884, -5.785335069274879,
-5.723175929058925, -5.664944136005943, -5.610175564230303,
-5.558587433828507, -5.501010435691569, -5.448051138140727},
{-6.408380639826646, -7.2525769863132155, -7.238035635287815,
-7.034862257736677, -6.830729364301078, -6.6337039644495235,
-6.490953067972441, -6.386418349837186, -6.291875124690705,
-6.194562200878863, -6.1030194766499335, -6.019609443406807,
-5.941238251092727, -5.868515038950136, -5.801339331708732,
-5.739014461170882, -5.680622408282943, -5.625703660931322,
-5.573974516388262, -5.516233355854638, -5.46310937848466},
{-6.425797615273041, -7.27274840271275, -7.258102223473543,
-7.0543228168317, -6.8496253896009875, -6.652047462739574,
-6.508916576509364, -6.40409556812665, -6.309288509728503,
-6.211677537226933, -6.1198992606659885, -6.036255858081859,
-5.957655841732048, -5.884736972977407, -5.817388932744507,
-5.7548976624239, -5.6963449125760235, -5.641275599205983,
-5.589405058795819, -5.53149933271925, -5.47821016087255},
{-6.44326575670857, -7.292977686491213, -7.278224765876075,
-7.073837819174514, -6.868574399341014, -6.670442499074852,
-6.526930334381177, -6.421822919684928, -6.326750822176109,
-6.228840786934597, -6.13682666583918, -6.052948815457057,
-5.974119573511416, -5.901004678977188, -5.833484006914659,
-5.770825657993555, -5.712111779037514, -5.656891507780529,
-5.604879186896142, -5.546808481391054, -5.493353609694168},
{-6.460785206902074, -7.313264996169892, -7.298403415494249,
-7.093407421576558, -6.887576548491779, -6.6888892187562305,
-6.544994479467277, -6.439600548023009, -6.344262195198098,
-6.246052085494739, -6.153801823602407, -6.06968843593495,
-5.990629579551751, -5.917318300213083, -5.849624683658476,
-5.786798573608394, -5.727923133817967, -5.672551511219353,
-5.620397024569684, -5.562160926972865, -5.508539844115148},
{-6.4783561064177775, -7.333610487621627, -7.318638319025922,
-7.113031780412712, -6.906631986210414, -6.707387775488314,
-6.563109154449194, -6.457428598558181, -6.361822766935802,
-6.263311571237864, -6.170824873726815, -6.086474854571861,
-6.0071859982126625, -5.933677974186139, -5.865811086347094,
-5.802816536583123, -5.7437791038973955, -5.688255739136366,
-5.635958693921566, -5.577556784104672, -5.523768987914082},
{-6.495978599086811, -7.354014319120324, -7.338929628509504,
-7.1327110543934396, -6.925740868166031, -6.725938315750682,
-6.581274503143504, -6.475307217406225, -6.379432675938006,
-6.280619379787822, -6.187895948532969, -6.1033081969217164,
-6.023788966500433, -5.9500838429812575, -5.882043347068247,
-5.818879675556673, -5.759679816605058, -5.704004317871295,
-5.651564316067379, -5.5929961783695035, -5.539041160867782},
{-6.513652826259204, -7.374476646677067, -7.359277495081187,
-7.152445398358395, -6.9449033478304045, -6.744540987208893,
-6.599490665961639, -6.493236547525157, -6.39709205662075,
-6.297975652341847, -6.205015182000352, -6.120188589702593,
-6.040438618219923, -5.966536048959824, -5.898321592947468,
-5.834988117901958, -5.775625405920437, -5.719797374782502,
-5.667214014014462, -5.608479230577359, -5.554356489301426},
{-6.531378932086227, -7.394997630704893, -7.379682069476985,
-7.17223497320083, -6.964119577452948, -6.763195942003222,
-6.617757783009438, -6.511216732891626, -6.41480104465154,
-6.315380524669308, -6.222182713085203, -6.137116165016778,
-6.057135089140502, -5.98303472828411, -5.914645952609135,
-5.851141991326585, -5.791615994618041, -5.735635039993213,
-5.682907912749215, -5.62400606108713, -5.569715089062811},
{-6.549157060042489, -7.415577428997494, -7.40014350463025,
-7.1920799387589796, -6.983389716573583, -6.781903329429042,
-6.636076003764174, -6.529247925253003, -6.432559783133911,
-6.332834138243925, -6.2393986779643456, -6.154091051997966,
-6.073878520022845, -5.999580028976197, -5.931016555608949,
-5.86734142737987, -5.807651717681438, -5.75151744451432,
-5.698646133867442, -5.639576793531887, -5.585117092370638},
{-6.566987352860451, -7.4362162003453705, -7.420661952201044,
-7.211980451575073, -7.002713914771448, -6.800663302317844,
-6.654445465552271, -6.547330264947959, -6.4503684020310175,
-6.350336631046957, -6.256663212014246, -6.171113385382341,
-6.090669045748655, -6.016172093295609, -5.94743352959631,
-5.8835865548753645, -5.823732700897381, -5.767444716679165,
-5.714428800842143, -5.655191553581972, -5.600562618317781},
{-6.584869956001057, -7.456914104630414, -7.441237565093616,
-7.231936673306336, -7.022092329527368, -6.819476009128266,
-6.672866313543636, -6.565463901250041, -6.468227044431842,
-6.367888146094629, -6.27397645493329, -6.188183290869347,
-6.1075068029313115, -6.03281106344366, -5.963897005378385,
-5.899877505202312, -5.839859074651031, -5.783416982158087,
-5.730256036898936, -5.670850465103285, -5.61605179401522},
{-6.602805013368197, -7.477671301341616, -7.461870497056225,
-7.251948764656845, -7.041525116583216, -6.838341602953733,
-6.691338690376142, -6.583648977815756, -6.48613584501436,
-6.38548882122268, -6.291338540933793, -6.205300903617172,
-6.124391927922261, -6.049497080777655, -5.980407106748316,
-5.91621440956078, -5.856030973169254, -5.799434374348493,
-5.746127963808249, -5.686553651758004, -5.631584745628061},
{-6.6207926706265425, -7.498487951728748, -7.48256090299401,
-7.272016885581252, -7.06101243289595, -6.857260236196453,
-6.7098627438244876, -6.601885646392475, -6.504094942982192,
-6.4031388030416565, -6.308749612609972, -6.222466355859069,
-6.141324561598594, -6.0662302937416825, -5.996963966317708,
-5.932597398379585, -5.87224852637155, -5.815497024625074,
-5.762044707124005, -5.70230124387308, -5.647161601373227},
{-6.638833073018759, -7.51936421575374, -7.503308935694804,
-7.292141197802266, -7.080554434993246, -6.8762320585374255,
-6.728438614780316, -6.620174051640788, -6.522104477407993,
-6.420838227670174, -6.326209805221879, -6.239679780701408,
-6.1583048368338495, -6.083010843402008, -6.013567711008363,
-5.949026604968822, -5.888511863318854, -5.831605061117443,
-5.778006387263304, -5.718093361356296, -5.662782488070661},
{-6.6569263649580535, -7.540300254353497, -7.524114751882735,
-7.312321863901161, -7.100151280203136, -6.895257228228729,
-6.747066449112026, -6.638514342557755, -6.540164584177546,
-6.43858724423626, -6.3437192603887524, -6.256941315092263,
-6.175332895392785, -6.099838875772548, -6.030218468411476,
-5.965502159233438, -5.904821117568645, -5.847758616742794,
-5.794013131977408, -5.7339301371976035, -5.678447537778993},
{-6.675072694451956, -7.561296230305743, -7.544978505298786,
-7.332559045818925, -7.119803123685415, -6.914335892914096,
-6.76574639264436, -6.656906667267322, -6.558275403091102,
-6.456385992249125, -6.361278117488837, -6.274251089242171,
-6.192408873030217, -6.116714534829953, -6.046916368213715,
-5.98202419950394, -5.921176417876268, -5.863957817942719,
-5.8100650642154505, -5.749811694142409, -5.694156881450908},
{-6.693272206699476, -7.582352304212691, -7.565900353452889,
-7.352852906602493, -7.13951012546022, -6.933468208662816,
-6.784478593195672, -6.675351176032564, -6.576437077470473,
-6.474234620080097, -6.378886516962666, -6.291609241132392,
-6.209532910244889, -6.133637967635877, -6.063661539563327,
-5.998592856092728, -5.937577903445344, -5.8802028022910235,
-5.826162305136677, -5.765738168294774, -5.709910650955862},
{-6.711525048805925, -7.60346863992163, -7.586880451795878,
-7.373203611881763, -7.159272445875104, -6.952654330161749,
-6.803263194247847, -6.693848016730044, -6.594649743812624,
-6.492133273583022, -6.396544598377659, -6.309015908249421,
-6.22670514244237, -6.150609317512135, -6.0804541108664125,
-6.015208264769171, -5.954025701561477, -5.896493696622201,
-5.842304982797941, -5.781709680901258, -5.725708980200579},
{-6.729831368589657, -7.62464539987559, -7.607918959882227,
-7.393611323765072, -7.179090241443191, -6.971894411850371,
-6.82210034475429, -6.712397344541387, -6.612913543212926,
-6.510082097840495, -6.414252502814634, -6.326471227512229,
-6.243925711823977, -6.167628733368474, -6.097294214487192,
-6.031870558013907, -5.970519949682057, -5.912830635905266,
-5.858493220584933, -5.797726367323776, -5.7415520070208},
{-6.748191313286952, -7.6458827472743, -7.629016032507934,
-7.414076206434402, -7.198963671944512, -6.991188607906224,
-6.840990188691649, -6.730999303486897, -6.631228612750419,
-6.528081240074243, -6.432010373478988, -6.343975332783884,
-6.2611947542463895, -6.184696357260691, -6.114181973040104,
-6.048579871785478, -5.987060777217266, -5.929213750976487,
-5.874727142450865, -5.813788355240831, -5.757439865585184},
{-6.766605030563369, -7.667180846307019, -7.6501718306026305,
-7.434598428211757, -7.218892897013575, -7.010537075082539,
-6.859932878636755, -6.7496540479769465, -6.649595099195722,
-6.546130848102621, -6.449818348424742, -6.361528366338462,
-6.278512410062831, -6.201812335915747, -6.13111751973338,
-6.06533633977233, -6.003648318088381, -5.9456431680882815,
-5.891006872829166, -5.829895774702891, -5.773372693976853},
{-6.785072669452347, -7.688539860777382, -7.6713865104393335,
-7.455178152224107, -7.238878075608227, -7.02993996735313,
-6.878928558289772, -6.768361731243203, -6.668013140326366,
-6.564231074153213, -6.467676572065102, -6.379130465167691,
-6.295878819815698, -6.21897681694827, -6.148100982885808,
-6.082140103986603, -6.020282710320316, -5.962119025789434,
-5.907332538743503, -5.846048758729012, -5.7893506358377635},
{-6.803594378703565, -7.709959955587692, -7.692660232620256,
-7.475815545411024, -7.258919371415686, -7.0493974414421245,
-6.897977380387601, -6.787122504319996, -6.686482878430979,
-6.582382067426806, -6.4855851890315535, -6.396781773364637,
-6.313294124789536, -6.236189948118408, -6.165132495079888,
-6.098991291582934, -6.036964085345971, -5.978641455600155,
-5.9237042669410584, -5.862247439610655, -5.805373826209689},
{-6.822170307030319, -7.731441297139099, -7.713993157929508,
-7.496510775970819, -7.279016945481999, -7.068909655790776,
-6.917079490973265, -6.805936520482646, -6.705004456511233,
-6.600583975116024, -6.50354433778557, -6.4144824260729365,
-6.3307584617869, -6.253451871118159, -6.182212181593059,
-6.115890043292893, -6.053692580302595, -5.9952105861739255,
-5.940122180560138, -5.878491945084534, -5.821442407206632},
{-6.840800604324613, -7.7529840484276065, -7.735385444750136,
-7.517264009373321, -7.299170956343005, -7.088476764634834,
-6.936235042070621, -6.824803932860959, -6.723578017670661,
-6.61883695499273, -6.521554166058195, -6.432232568200561,
-6.348271975381067, -6.270762736719917, -6.199340176870464,
-6.132836495191441, -6.0704683296062285, -6.011826550602564,
-5.956586407512077, -5.894782413772191, -5.837556528291316},
{-6.859485420281999, -7.774588377840701, -7.756837255394203,
-7.538075416137872, -7.319381567431265, -7.10809892891848,
-6.955444183637155, -6.843724897466018, -6.742203701782273,
-6.63714115935727, -6.53961481283477, -6.450032341206679,
-6.365834804571932, -6.288122688914882, -6.216516613101703,
-6.1498307857400505, -6.087291470859782, -6.0284894823271316,
-5.973097075650003, -5.911118973774137, -5.853716322846594},
{-6.878224905725801, -7.79625445142301, -7.778348750965961,
-7.558945163094904, -7.339648940513143, -7.127776301596896,
-6.9747070679295575, -6.862699564459035, -6.760881658046856,
-6.65549673649366, -6.557726421902771, -6.467881886230316,
-6.383447089800029, -6.3055318734113825, -6.233741612799349,
-6.1668730476812925, -6.104162135568913, -6.045199508604128,
-5.989654308577883, -5.927501757541904, -5.869921938414336},
{-6.897019210497092, -7.817982435357408, -7.799920092787943,
-7.579873419228534, -7.359973239712417, -7.147509045724291,
-6.994023844687035, -6.881728091393597, -6.779612025493407,
-6.67390384603641, -6.575889139669016, -6.485781349736499,
-6.40110897514387, -6.322990437824046, -6.251015314730466,
-6.183963422648958, -6.1210804646107135, -6.061956766643561,
-6.006258235473069, -5.943930898632971, -5.886173519655131},
{-6.915868487376429, -7.839772498686216, -7.821551445114892,
-7.600860357269994, -7.380354630411603, -7.167297317442717,
-7.013394669294939, -6.900810635605012, -6.798394952216768,
-6.692362644898822, -6.59410310984822, -6.503730874290341,
-6.41882060279022, -6.340498531455523, -6.268337853209232,
-6.201102045204607, -6.1380465950933285, -6.078761387383565,
-6.022908986269613, -5.960406532554771, -5.902471212364617},
{-6.934772886066639, -7.861624808007036, -7.843242969502171,
-7.6219061419251375, -7.400793271677685, -7.187141276241164,
-7.032819688785821, -6.919947348214919, -6.81723058008356,
-6.71087328507565, -6.6123684750346, -6.521730604625191,
-6.436582115216879, -6.358056295561255, -6.285709352086997,
-6.21828905462462, -6.155060659570154, -6.0956134995794855,
-6.039606684164028, -5.97692878433736, -5.918815156444907},
{-6.9537325597630115, -7.88353953211481, -7.864994831550575,
-7.643010950741882, -7.421289329227875, -7.20704108173959,
-7.052299064263934, -6.939138391884626, -6.8361190566647565,
-6.729435927089071, -6.630685381998774, -6.539780689810868,
-6.454393658699701, -6.375663880520733, -6.303129948995775,
-6.235524589079432, -6.172122800984653, -6.112513239699183,
-6.056351460865699, -5.993497791496338, -5.93520549677487},
{-6.972747660547611, -7.905516840888595, -7.886807195238362,
-7.664174951816676, -7.441842971515143, -7.22699689467845,
-7.071832944726339, -6.95838391855068, -6.855060528891045,
-6.748050727706868, -6.649053971748799, -6.55788127190317,
-6.472255372296786, -6.393321430543438, -6.320599777289317,
-6.252808787554386, -6.189233154829708, -6.129460733223823,
-6.073143441361026, -6.0101136865559965, -5.951642377025564},
{-6.991818340939062, -7.927556902250217, -7.908680223132251,
-7.685398315916245, -7.462454358232208, -7.247008872567676,
-7.091421485893079, -6.977684085373767, -6.874055137770483,
-6.766717845777748, -6.667474392728764, -6.576032500961446,
-6.49016740101797, -6.411029092210811, -6.338118970263167,
-6.2701417894422775, -6.206391857893323, -6.146456117130583,
-6.089982758334372, -6.026776601138408, -5.968125941886683},
{-7.010944753797958, -7.949659887337475, -7.930614083270484,
-7.706681217896403, -7.483123660102137, -7.267077178621548,
-7.111064843847998, -6.997039053560002, -6.893103037189576,
-6.785437443249975, -6.685946788318688, -6.594234523494379,
-6.508129895300954, -6.428787014709087, -6.355687664574361,
-6.287523733335547, -6.223599056451349, -6.163499526286614,
-6.106869539114996, -6.0434866653668, -5.984656337546767},
{-7.030127053134493, -7.971825965214521, -7.9526089397477335,
-7.728023829768063, -7.503851038170978, -7.287201973507763,
-7.130763175533502, -7.016448976894026, -6.9122043701208895,
-6.804209677444305, -6.704471304095932, -6.6124874899105635,
-6.526142997885472, -6.446595342451474, -6.37330599235429,
-6.304954757462838, -6.240854884323198, -6.180591086027562,
-6.123803917216719, -6.060244011270697, -6.001233704315382},
{-7.049365392573236, -7.9940553080887184, -7.974664961140661,
-7.749426325477543, -7.524636662463308, -7.307383417835808,
-7.150516635243548, -7.035914015577873, -6.931359285095823,
-6.823034711604123, -6.72304808604531, -6.630791547519038,
-6.544206854974618, -6.464454222601489, -6.390974089386873,
-6.322435005422449, -6.258159477583831, -6.197730930100079,
-6.140786018353538, -6.077048771781847, -6.017858183637145},
{-7.068659926582768, -8.016348086421203, -7.996782313872245,
-7.770888879924314, -7.5454806989000645, -7.3276216745289275,
-7.170325383340241, -7.055434328591218, -6.950567930369289,
-6.841912707386655, -6.741677278128918, -6.649146845462383,
-6.562321614954271, -6.482363801202155, -6.408692094366415,
-6.339964614802739, -6.27551298410981, -6.214919192439993,
-6.157815972692333, -6.093901076703332, -6.0345299184991745},
{-7.088010810584819, -8.038704472397512, -8.018961165194924,
-7.792411667680426, -7.566383314071572, -7.347916904749582,
-7.190189575558179, -7.075010073851445, -6.96983045473462,
-6.860843828966608, -6.760359026651713, -6.667553538762149,
-6.580487422004808, -6.500324225125951, -6.426460144110024,
-6.357543728852761, -6.292915542027913, -6.232156003505224,
-6.174893911273102, -6.110801055066986, -6.051249052150524},
{-7.10741819877876, -8.061124637861212, -8.041201683154213,
-7.8139948630778235, -7.5873446776822675, -7.368269267943106,
-7.21010937000392, -7.094641411022167, -6.989147005559062,
-6.879828235687455, -6.779093476361595, -6.686011768309982,
-6.598704426563927, -6.518335640139412, -6.444278374212445,
-6.375172484782524, -6.3103672891593305, -6.249441498293891,
-6.192019967013039, -6.1277488382474985, -6.0680157230526675},
{-7.126882247081085, -8.08360875723156, -8.063504038924293,
-7.835638645898143, -7.608364957966842, -7.388678936025826,
-7.230084927403368, -7.114328497016686, -7.008517736016074,
-6.89886609534733, -6.7978807760518976, -6.704521697552991,
-6.616972779331263, -6.536398196141818, -6.462146922494867,
-6.392851027441793, -6.32786836764717, -6.266775806550868,
-6.209194269991713, -6.144744552584598, -6.084830068954034},
{-7.146403111815744, -8.106157002192049, -8.085868399997707,
-7.857343188552477, -7.629444321457413, -7.409146064470406,
-7.250116406488814, -7.134071495514945, -7.0279427919886075,
-6.917957570869476, -6.816721069088089, -6.723083471850259,
-6.635292627412127, -6.554512034563231, -6.48006592944148,
-6.41057949748938, -6.345418920143857, -6.2841590615717,
-6.226416953999433, -6.161788331490243, -6.1016922334820265},
{-7.165980948477227, -8.128769547212869, -8.108294936952007,
-7.879108670531423, -7.650582938877051, -7.429670818703016,
-7.270203968437272, -7.153870562615339, -7.047422327683307,
-6.93710282977554, -6.835614503652323, -6.741697245932301,
-6.65366412421281, -6.572677308038692, -6.498035540120327,
-6.4283580395858735, -6.36301909154281, -6.301591397073935,
-6.243688149188529, -6.178880303559708, -6.11860235084896},
{-7.185615915397648, -8.15144656666962, -8.130783821754449,
-7.90093526950659, -7.671780981137999, -7.450253366390825,
-7.290347773654503, -7.173725861081039, -7.066956490307348,
-6.956302035614499, -6.854561223721248, -6.760363172652433,
-6.672087416693103, -6.590894159686286, -6.516055884654634,
-6.446186795990798, -6.3806690173223615, -6.319072945276275,
-6.261007986264303, -6.196020590999979, -6.135560562703176},
{-7.205308168311603, -8.174188236152986, -8.153335225491901,
-7.922823163724388, -7.693038619516301, -7.470893867808627,
-7.3105479833175195, -7.193637551914435, -7.086545435260632,
-6.975555354743847, -6.873561375861755, -6.779081405693432,
-6.690562657677219, -6.609162736131111, -6.534127113991417,
-6.4640659082942875, -6.398368843525532, -6.3366038416425,
-6.278376601811033, -6.213209327557706, -6.152567000826821},
{-7.225057865944109, -8.196994728998106, -8.17594931757776,
-7.944772531394847, -7.714356021766434, -7.491592491627671,
-7.330804758428712, -7.213605792960152, -7.106189308149624,
-6.994862954947166, -6.892615107324673, -6.79785210051341,
-6.70909000368556, -6.627483185700839, -6.552249363507144,
-6.4819955169950845, -6.416118711116724, -6.354184217547299,
-6.295794128760463, -6.2304466364730615, -6.169621799563174},
{-7.244865165142983, -8.219866224142606, -8.198626275014249,
-7.966783553099958, -7.7357333600957645, -7.512349398020888,
-7.3511182644433575, -7.233630742804962, -7.12588826668798,
-7.014225002072635, -6.911722562726936, -6.816675410736934,
-6.7276696019252995, -6.645855651106103, -6.570422777440399,
-6.4999757724726805, -6.433918760943925, -6.3718142041616375,
-6.313260699491366, -6.247732644289499, -6.186725089282845},
{-7.2647302257682895, -8.242802895525529, -8.221366267855046,
-7.9888564090797445, -7.757170804645284, -7.533164758715429,
-7.371488660661271, -7.253712566496688, -7.145642460382078,
-7.033641665650066, -6.930883887165692, -6.835551489479258,
-6.7463016117108054, -6.664280283934204, -6.588647499695071,
-6.518006817132118, -6.451769141247496, -6.389493939394015,
-6.330776449845871, -6.265067481188453, -6.2038770058134105},
{-7.2846532060502796, -8.265804921131348, -8.244169471341593,
-8.010991279661539, -7.77866853235173, -7.55403873596515,
-7.391916114705964, -7.273851424353779, -7.16545204295835,
-7.0531131134484895, -6.950099234411027, -6.854480498092016,
-6.764986187510658, -6.682757229995332, -6.606923675877624,
-6.5360887954739155, -6.469669987083762, -6.407223559028353,
-6.348341513890773, -6.282451271166792, -6.22107767581474},
{-7.30463426544884, -8.288872479453858, -8.267036060671671,
-8.03318834627862, -7.800226713196025, -7.574971498033847,
-7.412400785106001, -7.2940474773495225, -7.185317167488392,
-7.072639511621674, -6.969368741789367, -6.873462587478571,
-6.783723482192727, -6.701286632131087, -6.625251448567724,
-6.554221851634793, -6.487621449341532, -6.425003194308374,
-6.365956026726053, -6.299884141160874, -6.238327226557885},
{-7.324673563394754, -8.312005745829083, -8.289966209435079,
-8.055447790713515, -7.821845519443741, -7.595963213199866,
-7.4329428429482505, -7.31430088786874, -7.2052379912056495,
-7.092221034530667, -6.988692563434597, -6.892497920867754,
-6.802513655857183, -6.719868639411288, -6.643630962818861,
-6.572406131774187, -6.505623664372251, -6.442832982342225,
-6.383620124266599, -6.317366215909715, -6.255625787802273},
{-7.3447712605047855, -8.33520490177034, -8.312960094510345,
-8.077769795476343, -7.843525125674205, -7.617014045928954,
-7.453542449264205, -7.334611814789241, -7.225214662918006,
-7.111857847354258, -7.008070839045104, -6.911586651505786,
-6.821356865111738, -6.738503398490138, -6.662062369417981,
-6.590641784190666, -6.523676779033849, -6.460713056658278,
-6.40133394622535, -6.334897623964935, -6.272973477534833},
{-7.364927517563046, -8.358470125225722, -8.336017892383097,
-8.100154543906683, -7.865265705317142, -7.63812416397559,
-7.4741997681121575, -7.354980420466745, -7.245247340717469,
-7.131550117308507, -7.027503720091772, -6.930728934283252,
-6.8402532648760825, -6.757191053155111, -6.680545806622831,
-6.608928949674009, -6.541780932820984, -6.478643551468849,
-6.4190976222162135, -6.352478490531212, -6.290370417031227},
{-7.385142494713364, -8.381801594383433, -8.359139778498502,
-8.122602219053078, -7.88706743401417, -7.659293737844564,
-7.494914971743128, -7.375406870036386, -7.265336175027187,
-7.151298020107788, -7.046991352151963, -6.949924933258444,
-6.859203017447726, -6.775931747833965, -6.6990814277669415,
-6.627267780859256, -6.559936270699836, -6.496624604580575,
-6.436911293145386, -6.370108940434875, -6.307816732703941},
{-7.405416355009947, -8.405199492663087, -8.382325934551773,
-8.145113006292377, -7.908930488556507, -7.680522934781038,
-7.515688220766606, -7.395891322390526, -7.28548132943979,
-7.171101722386084, -7.066533880337374, -6.969174803351052,
-6.878206282053725, -6.7947256357292645, -6.717669380363077,
-6.645658421621192, -6.578142935410142, -6.514656355851912,
-6.454775096819503, -6.387789106549462, -6.3253125398478005},
{-7.425749258523865, -8.428663997889089, -8.405576534350985,
-8.167687088556704, -7.930855041442555, -7.701811926992377,
-7.536519683082588, -7.416433941398282, -7.305682953854557,
-7.190961394298938, -7.08613145405252, -6.98847870460304,
-6.897263221719186, -6.813572855477105, -6.736309808329679,
-6.6641010189196095, -6.596401069167769, -6.532738935798989,
-6.472689172194805, -6.4055191090737935, -6.342857957599335},
{-7.446141368964163, -8.452195293313707, -8.428891761679552,
-8.190324654031429, -7.952841268226621, -7.723160877882037,
-7.557409529821598, -7.4370348905649735, -7.325941207862343,
-7.210877208679449, -7.1057842172449455, -7.0078367982496275,
-6.916373993706657, -6.832473558199126, -6.7550028639961965,
-6.682595722231781, -6.614710816662409, -6.550872485458967,
-6.4906536559719825, -6.423299079193384, -6.360453102883184},
{-7.466592848482833, -8.47579356037022, -8.452271792943066,
-8.213025886245305, -7.974889349468867, -7.744569964022958,
-7.57835792475089, -7.457694330092636, -7.34625624740147,
-7.230849333209335, -7.125492320556077, -7.027249243852566,
-6.93553876412625, -6.851427884190343, -6.773748693638481,
-6.701142679696204, -6.633072316995822, -6.5690571367013035,
-6.508668684225995, -6.4411291450378485, -6.378098091765423},
{-7.487103860337811, -8.49945898016449, -8.475716809407459,
-8.23579097079346, -7.99699945973407, -7.766039351685322,
-7.5993650363670895, -7.478412426717114, -7.366628229923663,
-7.250877940052305, -7.145255908442778, -7.046716200362425,
-6.954757694489672, -6.870435982185882, -6.792547449891572,
-6.719742040600977, -6.651485714974115, -6.58729303367727,
-6.52673439924547, -6.459009438258363, -6.3957930452306755},
{-7.5076745683763875, -8.523191737869638, -8.499226995030767,
-8.25862009935372, -8.019171778491, -7.7875692127563525,
-7.620431038158131, -7.499189344001934, -7.387057314277627,
-7.270963201837731, -7.1650751302804565, -7.066237829887541,
-6.974030949888402, -6.889497999363812, -6.8113992819417035,
-6.738393951614853, -6.6699511560145766, -6.605580313174869,
-6.544850941078039, -6.476940087391995, -6.413538078893907},
{-7.528305137027928, -8.546992014882562, -8.522802527950262,
-8.281513454625383, -8.041406482690945, -7.8091597209713655,
-7.6415560942550655, -7.5200252436770825, -7.407543659981457,
-7.29110528662568, -7.184950132141239, -7.085814293008298,
-6.993358694773633, -6.9086140761646675, -6.830304339047871,
-6.757098566493369, -6.688468778957031, -6.623919111676514,
-6.563018448126968, -6.4949212220235495, -6.431333313448704},
{-7.54899572989234, -8.570859997234948, -8.54644359309168,
-8.30447122908663, -8.06370375023107, -7.830811044928851,
-7.6627403792663245, -7.540920289087808, -7.428087424777914,
-7.311304369111895, -7.204881063924404, -7.105445753375534,
-7.012741094673402, -6.927784365907428, -6.849262773423106,
-6.775856029562419, -6.707038726715837, -6.642309568575001,
-6.581237061589491, -6.51295297240722, -6.44917886708572},
{-7.56974651269411, -8.594795868571964, -8.570150372841454,
-8.327493607328506, -8.086063760478282, -7.8525233591062715,
-7.683984058981878, -7.561874645776697, -7.44868877044064,
-7.331560618564254, -7.224868067147327, -7.125132370885694,
-7.032178315785131, -6.947009004550637, -6.86827473458834,
-6.794666495465208, -6.7256611439806875, -6.660751823190367,
-6.599506918049883, -6.531035476800753, -6.467074859756394},
{-7.590557650975825, -8.618799814066733, -8.593923051732418,
-8.35058078255679, -8.108486695593456, -7.874296835099813,
-7.705287307340768, -7.582888480334077, -7.469347857069806,
-7.351874207350193, -7.244911297631916, -7.144874307807186,
-7.051670523869689, -6.966288145078579, -6.887340374523774,
-6.8135301162838005, -6.744336172254407, -6.679246014886303,
-6.617828160262434, -6.54916886499268, -6.485021419546683},
{-7.611429310381936, -8.642872019539936, -8.617761814763071,
-8.37373294151621, -8.130972734710667, -7.896131643647095,
-7.726650292883278, -7.6039619546500035, -7.490064843557775,
-7.3722453063383, -7.265010899791378, -7.164671726844972,
-7.071217885139049, -6.985621928412002, -6.9064598478144035,
-6.832447037537349, -6.763063954029349, -6.697792284496245,
-6.636200930661289, -6.567353271137108, -6.503018663992407},
{-7.632361656622379, -8.66701267236931, -8.641666847543092,
-8.396950275579002, -8.153522057938972, -7.918027967054513,
-7.748073188326089, -7.6250952344125835, -7.510839892915101,
-7.392674087677733, -7.28516702070192, -7.184524792668526,
-7.0908205699088285, -7.005010500753997, -6.925633299848414,
-6.8514174149458995, -6.7818446306628175, -6.716390771034639,
-6.654625368522829, -6.5855888314399635, -6.52106672503578},
{-7.653354857233353, -8.69122195894306, -8.665638335573021,
-8.420232977921842, -8.176134844761691, -7.939985971010174,
-7.769556168132112, -7.646288487390848, -7.531673168035923,
-7.413160724623594, -7.3053798109758645, -7.204433668113779,
-7.110478747083107, -7.024454010068439, -6.944860888499534,
-6.870441401610151, -6.80067834824149, -6.735041613996145,
-6.673101616965141, -6.603875683562364, -6.539165732770925},
{-7.674409079285397, -8.715500066391542, -8.689676465910452,
-8.44358123683196, -8.198811278358335, -7.962005835186574,
-7.791099402791588, -7.667541877628537, -7.55256483348785,
-7.433705387462396, -7.325649416961824, -7.224398515885696,
-7.130192584474571, -7.0439526023110375, -6.9641427693131845,
-6.8895191487972625, -6.819565250523738, -6.75374495977303,
-6.691629816079512, -6.622213968512369, -6.557315815080074},
{-7.6955244904820574, -8.739847182951053, -8.713781425794878,
-8.466995247275918, -8.221551543829264, -7.984087732198532,
-7.812703065879759, -7.688855571032036, -7.573515052266885,
-7.454308249914902, -7.345975991527666, -7.244419500319054,
-7.149962251540273, -7.063506422098726, -6.983479089656612,
-6.908650809113169, -6.838505475388956, -6.772500945691718,
-6.710210110395565, -6.640603819512762, -6.575517112010857},
{-7.71670125858509, -8.764263498189393, -8.737953406533052,
-8.490475201484514, -8.24435582132719, -8.006231839506654,
-7.8343673333583865, -7.710229737742338, -7.594523987703724,
-7.47496948549815, -7.366359676991124, -7.264496784628136,
-7.169787917242502, -7.083115615852876, -7.002870006283047,
-6.927836537317489, -6.857499170771916, -6.791309716136311,
-6.728842640470248, -6.6590453818498645, -6.59376975808118},
{-7.7379395528842, -8.788749200612074, -8.762192594491353,
-8.514021290291566, -8.26722429509391, -8.028438336594263,
-7.856092374320724, -7.73166453972226, -7.61559180180484,
-7.495689263305394, -7.38680062747153, -7.284630532027222,
-7.18966975233343, -7.102780329878442, -7.022315670954413,
-6.947076485055732, -6.876546476923977, -6.810171413177159,
-6.747527550527593, -6.677538790419931, -6.612073894124478},
{-7.759239542065188, -8.813304480754596, -8.786499181624094,
-8.537633709813235, -8.290157147770515, -8.050707394315396,
-7.877878369443351, -7.753160146618029, -7.636718666180968,
-7.5164677558641415, -7.407298991543939, -7.304820912802825,
-7.209607925309683, -7.122500710262102, -7.041816240234766,
-6.966370808397187, -6.895647538025514, -6.829086176381679,
-6.766264985213638, -6.696084188908571, -6.630429657932837},
{-7.7806013957670075, -8.837929528315726, -8.810873356705997,
-8.56131265409931, -8.313154564020806, -8.07303919410333,
-7.899725489638513, -7.7747167254419765, -7.6579047417180846,
-7.537305139601813, -7.427854916270007, -7.32506808382459,
-7.229602609673748, -7.142276906830375, -7.061371864576358,
-6.98571966176678, -6.914802499435609, -6.848054153291741,
-6.785055084939813, -6.714681724042748, -6.648837199434638},
{-7.802025283868716, -8.862624534471252, -8.83531531204062,
-8.5850583188585, -8.336216731535387, -8.09543391490297,
-7.921633914273116, -7.796334446727997, -7.679150199939613,
-7.558201586245559, -7.448468558024615, -7.345372215466341,
-7.249653976134141, -7.162109068362042, -7.080982706218492,
-7.005123201015522, -6.934011504548835, -6.867075488131377,
-6.803898000434856, -6.733331538984203, -6.667296662009903},
{-7.823511376402166, -8.88738969215774, -8.859825241459475,
-8.608870896248845, -8.359343833493767, -8.11789173266152,
-7.943603818974225, -7.818013476906344, -7.7004552037251415,
-7.579157267420669, -7.469140060944483, -7.365733469865518,
-7.269762194366194, -7.181997338673682, -7.100648916879436,
-7.0245815821690485, -6.953274696556036, -6.886150327758514,
-6.822793872415787, -6.7520337753376225, -6.685808198613813},
{-7.845059844876232, -8.912225191779726, -8.884403336203832,
-8.632750585660688, -8.382536057193647, -8.140412830674904,
-7.965635380081949, -7.839753985332209, -7.721819923026487,
-7.600172356367693, -7.4898695775918895, -7.386152015358675,
-7.289927436548169, -7.201941870385781, -7.120370652759448,
-7.044094959012, -6.972592221660307, -6.905278811318567,
-6.841742847129353, -6.770788581576198, -6.704371958971024},
{-7.866670860305021, -8.93713122740155, -8.909049790134304,
-8.656697583239293, -8.405793585683568, -8.162997384235496,
-7.98772877502779, -7.8615561399492435, -7.743244524128386,
-7.621247027287609, -7.510657259292202, -7.406628016658942,
-7.3101498750038445, -7.2219428112584865, -7.140148070568102,
-7.0636634874972515, -6.991964223445393, -6.924461088550743,
-6.860745074678562, -6.789596103204531, -6.7229880948143546},
{-7.8883445949686575, -8.962107992665551, -8.933764799607161,
-8.68071208409674, -8.429116609404446, -8.185645575489616,
-8.009884180792142, -7.8834201093704905, -7.764729176531546,
-7.642381451674737, -7.531503255362622, -7.427161634463118,
-7.330429679248482, -7.242000309852301, -7.159981327349669,
-7.08328732274822, -7.011390849293093, -6.943697301612701,
-6.879800693539437, -6.808456484795897, -6.741656756566954},
{-7.9100812206670525, -8.987155680413707, -8.958548557813629,
-8.704794286662946, -8.45250531466445, -8.208357587020146,
-8.032101782067912, -7.905346066778293, -7.786274047481129,
-7.663575803802814, -7.552407717521419, -7.447753038839437,
-7.350767021969659, -7.262114516677684, -7.179870577485417,
-7.102966624239343, -7.030872239236487, -6.962987601727946,
-6.898909856550745, -6.827369875070872, -6.760378105609561},
{-7.931880910582549, -9.012274486362003, -8.983401264529675,
-8.728944390866673, -8.475959892966785, -8.231133598266752,
-8.054381752328482, -7.927334181498736, -7.807879312545992,
-7.684830259313458, -7.573370801474084, -7.468402394617442,
-7.371162073264713, -7.282285585984937, -7.1998159871582175,
-7.122701546715689, -7.050408544964739, -6.9823321381700225,
-6.918072711690911, -6.846336430768133, -6.779152295770473},
{-7.953743837540969, -9.037464605411515, -9.008323112066137,
-8.753162591252476, -8.49948052871332, -8.253973795071943,
-8.076724272861611, -7.9493846215627855, -7.829545132670319,
-7.706144985786523, -7.594392655912088, -7.489109866655781,
-7.391615009561065, -7.302513664399157, -7.219817704899469,
-7.142492245460744, -7.069999908460886, -7.001731050040689,
-6.937289407884236, -6.865356296446407, -6.797979485083488},
{-7.97567017593974, -9.06272623391851, -9.033314301937935,
-8.777449091605376, -8.523067411486409, -8.276878355449298,
-8.099129526221077, -7.971497561928118, -7.851271683030063,
-7.727520164160524, -7.615473433324951, -7.509875624557026,
-7.412125998613192, -7.322798910696292, -7.239875894665602,
-7.162338877504226, -7.089646478314535, -7.021184488738072,
-6.956560089558479, -6.884429618046852, -6.816859829297755},
{-7.997660098873894, -9.088059566536685, -9.058375031658215,
-8.801804088856443, -8.546720733938855, -8.299847467933432,
-8.121597694203956, -7.993673171513365, -7.873059134857613,
-7.74895596447459, -7.636613287919317, -7.530699832102982,
-7.432695212031831, -7.343141471865238, -7.259990715130698,
-7.182241602102295, -7.109348399870214, -7.040692602604395,
-6.975884908970329, -6.9035565537487855, -6.835793487698538},
{-8.019713782079634, -9.113464802212548, -9.083505500209867,
-8.826227783662034, -8.570440683382913, -8.322881310523371,
-8.144128955405904, -8.015911622031126, -7.89490765487426,
-7.770452560274862, -7.657812374964124, -7.551582655258244,
-7.453322822402697, -7.363541504193563, -7.280162324968842,
-7.202200573316077, -7.129105820480618, -7.06025554263033,
-6.995264014956774, -6.922737252010847, -6.854780621797545},
{-8.041831400536466, -9.138942138735729, -9.108705909951823,
-8.850720378090045, -8.59422745462507, -8.345980071477243,
-8.166723495276528, -8.03821308798797, -7.916817419099971,
-7.79201012836711, -7.679070845406386, -7.572524261238868,
-7.474009003650281, -7.383999163546832, -7.300390885939123,
-7.222215948524536, -7.148918888589833, -7.079873455761117,
-7.014697558013722, -6.941971867956454, -6.873821387940552},
{-8.064013129471277, -9.164491773044574, -9.133976459008409,
-8.875282070963294, -8.618081235079444, -8.369143938980415,
-8.189381497140857, -8.060577739248401, -7.938788594387006,
-7.813628838252043, -7.700388855591882, -7.593524817988509,
-7.494753923863755, -7.40451460427721, -7.320676557865227,
-7.242287884204416, -7.1687877515360015, -7.099546491794172,
-7.034185689495644, -6.9612605506699765, -6.892915950724273},
{-8.086259145624354, -9.190113904951431, -9.159317351834034,
-8.899913067172747, -8.642002219465212, -8.39237309404416,
-8.212103145458968, -8.083005752137979, -7.960821355809458,
-7.835308866851847, -7.721766564063728, -7.614584492737777,
-7.515557757506031, -7.425087983196136, -7.341019501167466,
-7.262416536657838, -7.188712555391248, -7.119274797325488,
-7.05372855947644, -6.980603453805088, -6.912064466785523},
{-8.108569625226664, -9.215808733126323, -9.184728789536166,
-8.924613566574408, -8.665990597219206, -8.41566772267106,
-8.234888621518621, -8.105497297772672, -7.9829158760549035,
-7.857050390521181, -7.743204121172312, -7.635703451538575,
-7.536420677861315, -7.44571945547068, -7.361419877095614,
-7.282602063758532, -7.208693452630541, -7.139058525848668,
-7.073326319499756, -7.000000733823981, -6.931267094536452},
{-8.130944745411398, -9.241576458902273, -9.210210976976668,
-8.949383773535374, -8.690046564137447, -8.439028018547106,
-8.257738115120446, -8.128052550688153, -8.00507232597738,
-7.878853581452859, -7.7647016870905645, -7.656881864415482,
-7.557342852145666, -7.466409182656207, -7.381877849678858,
-7.302844623569399, -7.22873059057747, -7.158897827393957,
-7.092979120890959, -7.019452544322121, -6.950524001775193},
{-8.153384683799231, -9.267417281771486, -9.235764117111103,
-8.974223889483255, -8.714170312683564, -8.462454159744084,
-8.280651808498078, -8.150671684721601, -8.027290878162603,
-7.900718612436322, -7.786259415894165, -7.678119894801057,
-7.578324453366804, -7.487157318813843, -7.402393581054639,
-7.323144367168425, -7.248824114576564, -7.178792849343154,
-7.112687118933536, -7.038959035053267, -6.969835341064027},
{-8.175889618498331, -9.293331403358025, -9.261388417347916,
-8.999134120720555, -8.738362038944615, -8.485946343615069,
-8.303629890375305, -8.173354875165387, -8.049571708397707,
-7.922645661383285, -7.80787746871647, -7.699417717798497,
-7.599365654721623, -7.5079640283220215, -7.422967230173526,
-7.343501455092337, -7.26897417861619, -7.198743747518165,
-7.13245046310476, -7.058520362799754, -6.989201279444387},
{-8.198459728257149, -9.31931902582437, -9.287084081021021,
-9.024114670231938, -8.762621934467461, -8.509504754008958,
-8.326672548035276, -8.196102299058111, -8.071914989035577,
-7.944634901010431, -7.829556002514437, -7.720775497553404,
-7.620466627296992, -7.528829468370532, -7.443598964557168,
-7.363916041678749, -7.289180932275485, -7.218750667525455,
-7.152269308688119, -7.078136681331671, -7.008621974629932},
{-8.22109519168589, -9.345380351114727, -9.312851316833985,
-9.049165743490448, -8.786950195339159, -8.533129579547676,
-8.349779968004441, -8.218914127966855, -8.09432089497568,
-7.9666865075269016, -7.851295176849817, -7.742193403551937,
-7.641627543242066, -7.549753801795305, -7.464288947492605,
-7.384388285572641, -7.309444527272717, -7.2388137676462065,
-7.172143806936219, -7.097808144768351, -7.028097584581701},
{-8.243796188718989, -9.371515582490247, -9.338690332704573,
-9.074287545503466, -8.811347018534434, -8.556821012331056,
-8.372952341014752, -8.241790542539093, -8.116789601219352,
-7.988800657403772, -7.8730951507313875, -7.763671607594006,
-7.662848572945222, -7.570737190602813, -7.485037341495627,
-7.404918340587756, -7.329765110800508, -7.258933195378631,
-7.192074113379931, -7.117534908247762, -7.047628274885938},
{-8.2665628996765, -9.397724926013325, -9.364601337336353,
-9.09948028330109, -8.835812601653743, -8.580579244939145,
-8.396189856124693, -8.264731718460098, -8.139321283786558,
-8.010977524740156, -7.894956084273872, -7.785210278991144,
-7.684129888613825, -7.591779798240168, -7.505844312967383,
-7.4255063646123745, -7.350142837763997, -7.279109105526004,
-7.212060383695643, -7.137317124681431, -7.06721420341637},
{-8.289395504660206, -9.424008581903763, -9.390584539214615,
-9.124744159998954, -8.860347137437202, -8.604404467638233,
-8.419492700515548, -8.287737831124105, -8.161916116048815,
-8.033217283475096, -7.916878141040797, -7.806809586909367,
-7.705471663168282, -7.6128817865101155, -7.526710027523222,
-7.4461525096267, -7.370577857625904, -7.299341651290888,
-7.232102770838537, -7.157154947170056, -7.086855531932088},
{-8.312294185168867, -9.450366758748714, -9.416640149211162,
-9.150079387560254, -8.884950827981811, -8.628296869646874,
-8.442861068091588, -8.310809057176812, -8.184574276485364,
-8.055520112538943, -7.9388614810450235, -7.828469706611941,
-7.726874064726871, -7.634043319951161, -7.547634648231906,
-7.4668569360655965, -7.391070323908934, -7.319630981713999,
-7.252201429364504, -7.177048527839361, -7.1065524160221685},
{-8.335259122352, -9.476799659321841, -9.442768377572065,
-9.175486169289798, -8.909623865853064, -8.652256645014859,
-8.466295146427, -8.333945576683618, -8.20729594034492,
-8.077886184983072, -7.9609062671952415, -7.850190802695579,
-7.748337267126772, -7.65526456302905, -7.568618339209934,
-7.487619797742809, -7.4116203884914285, -7.339977255833219,
-7.272356514411513, -7.196998028943199, -7.126305015844991},
{-8.358290498654242, -9.503307491235319, -9.468969436478801,
-9.200964714982547, -8.934366454239353, -8.676283986540511,
-8.489795131798019, -8.35714756984089, -8.230081286877976,
-8.100315680436324, -7.983012666620198, -7.87197305499285,
-7.769861442706315, -7.676545688693295, -7.589661273945239,
-7.508441255558864, -7.432228206307627, -7.360380628859275,
-7.29256818680733, -7.217003597164876, -7.146113489143318},
{-8.381388496345608, -9.529890462828916, -9.495243541532545,
-9.226515234287945, -8.959178790275473, -8.700379089583294,
-8.513361213335884, -8.380415212974185, -8.252930491624284,
-8.122808772313874, -8.005180837921216, -7.893816631330992,
-7.7914467596274335, -7.6978868526930455, -7.61076361531741,
-7.529321457288461, -7.452893929192214, -7.38084125664318,
-7.3128365979209775, -7.23706539007253, -7.165977993878187},
{-8.40455329859833, -9.556548778069555, -9.521590902644675,
-9.252137932839105, -8.984061074923375, -8.724542148411274,
-8.536993584653828, -8.403748684708262, -8.275843735420494,
-8.145365638818475, -8.027410953131039, -7.915721705823671,
-7.813093391232542, -7.719288228152436, -7.63192553143017,
-7.550260564676137, -7.473617713272688, -7.401359290233813,
-7.333161904272856, -7.257183557361714, -7.18589868779236},
{-8.42778508939955, -9.583282647596207, -9.54801173506712,
-9.277833023967105, -9.009013505550683, -8.748773357045138,
-8.560692440441926, -8.427148168411804, -8.298821196032804,
-8.167986458094674, -8.049703175289324, -7.937688458536286,
-7.8348015090450644, -7.740749983378919, -7.653147192060715,
-7.5712587326270295, -7.494399714079918, -7.42193488839257,
-7.3535442676220555, -7.2773582582885865, -7.205875719999312},
{-8.4510840530711, -9.610092279668606, -9.574506254779408,
-9.303600716186338, -9.034036283846945, -8.773072909607436,
-8.584457972887321, -8.450613839770085, -8.321863049583044,
-8.190671404227032, -8.072057669836795, -7.959717054487555,
-7.856571282696677, -7.762272284468054, -7.674428761485615,
-7.592316116933944, -7.515240084263496, -7.442568207814475,
-7.373983838348067, -7.297589641297236, -7.225909244894865},
{-8.474450372712454, -9.636977882182691, -9.60107467857597,
-9.329441218302236, -9.059129612549441, -8.79744100345124,
-8.608290379648679, -8.474145884320023, -8.344969481026055,
-8.21342065652425, -8.094474606754375, -7.981807675663731,
-7.878402880989597, -7.783855299145216, -7.69577041323646,
-7.613432875703438, -7.5361389806785155, -7.463259406926227,
-7.394480782371829, -7.317877863635658, -7.245999413644313},
{-8.497884235839592, -9.663939666803344, -9.627717223323998,
-9.355354743122007, -9.084293692751089, -8.82187783603149,
-8.632189854353783, -8.497744481428526, -8.36814066885563,
-8.23623439365474, -8.116954154407722, -8.003960497822845,
-7.900296478474047, -7.805499199545011, -7.717172317657969,
-7.634609165004804, -7.557096560602076, -7.484008644911228,
-7.415035254831309, -7.338223083876073, -7.266146374779055},
{-8.52138582598127, -9.690977842612483, -9.65443410523585,
-9.381341501604766, -9.109528726301505, -8.84638360500685,
-8.656156592085608, -8.521409812776255, -8.391376793180825,
-8.259112791842199, -8.139496484873234, -8.026175696533755,
-7.922252245232812, -7.827204152592458, -7.738634638633812,
-7.655845140121528, -7.57811298200977, -7.50481607785332,
-7.435647416132269, -7.358625450899126, -7.286350277470774},
{-8.544955330318771, -9.718092622286349, -9.68122554468573,
-9.40740170769277, -9.134834915734245, -8.870958506246097,
-8.680190792962094, -8.545142060378566, -8.414678037850535,
-8.282056030118838, -8.162101768815774, -8.048453450770467,
-7.9442703474196605, -7.848970334060141, -7.760157551878365,
-7.677140959611279, -7.599188399704872, -7.525681864790386,
-7.45631741991383, -7.379085118722287, -7.3066112608939875},
{-8.568592936404457, -9.745284217133303, -9.70809176073817,
-9.433535571399261, -9.160212465154473, -8.895602740172762,
-8.704292651789729, -8.56894140834629, -8.438044583090232,
-8.305064288710128, -8.184770177540486, -8.070793939230498,
-7.9663509599195095, -7.8707979079772485, -7.781741228100145,
-7.698496779805282, -7.620322974893497, -7.546606167554273,
-7.477045432286104, -7.399602247867733, -7.326929471659241},
{-8.592298829811625, -9.772552838214324, -9.735032972792396,
-9.459743305531447, -9.18566157881287, -8.92031650415447,
-8.728462363869767, -8.592808037123177, -8.461476611846592,
-8.328137744116248, -8.207501882003271, -8.093197340684128,
-7.98849424844957, -7.892687049024971, -7.803385834951769,
-7.719912758315331, -7.641516861374839, -7.5675891447172035,
-7.49783161203959, -7.420176990141044, -7.347305049057468},
{-8.616073199082166, -9.799898699922778, -9.762049403347191,
-9.48602512787329, -9.211182460945565, -8.945099999094964,
-8.752700132652535, -8.616742136422545, -8.48497431112628,
-8.351276576417149, -8.230297059300938, -8.11566383606987,
-8.010700385231758, -7.914637927693548, -7.825091551494552,
-7.7413890544412425, -7.662770222304971, -7.588630958343856,
-7.5186761198419845, -7.440809506122605, -7.36773812994943},
{-8.639916232903488, -9.8273220148767, -9.789141273926361,
-9.512381246691803, -9.23677531607973, -8.969953427906148,
-8.777006154152332, -8.640743883472169, -8.508537861343939,
-8.374480965328985, -8.253155882892315, -8.138193607548601,
-8.032969541061902, -7.936650714240386, -7.846858544362476,
-7.762925823946716, -7.68408321464085, -7.609731767850462,
-7.539579114381922, -7.461499953758903, -7.38822885202535},
{-8.663828119788377, -9.854822998808231, -9.81630880710145,
-9.538811881488073, -9.262440349004464, -8.994876985932933,
-8.8013806289091, -8.664813467068598, -8.532167446843232,
-8.397751090305974, -8.276078529044753, -8.160786835520412,
-8.055301882093772, -7.9587255868682405, -7.868686986272223,
-7.784523225520388, -7.705455998249818, -7.630891738925129,
-7.560540762453456, -7.482248485539458, -7.408777347460273},
{-8.687809048708004, -9.882401864822896, -9.843552226098836,
-9.565317245243932, -9.288177768874448, -9.019870878531947,
-8.825823754596058, -8.68895107107528, -8.55586325385957,
-8.42108713221387, -8.29906517334166, -8.183443704547244,
-8.077697577449726, -7.980862713317038, -7.89057705149753,
-7.80618141607556, -7.726888732941006, -7.652111025367049,
-7.581561219427385, -7.503055264271097, -7.429383751688874},
{-8.711859209957765, -9.910058829489572, -9.870871756371344,
-9.591897553749732, -9.313987779940362, -9.044935308469576,
-8.850335733353859, -8.713156882949988, -8.57962546707131,
-8.44448927231133, -8.322115999209927, -8.206164397386601,
-8.100156798624084, -8.003062268137, -7.912528915476287,
-7.827900561125716, -7.7483815800223965, -7.673389800096629,
-7.602640652665286, -7.523920455627376, -7.4500481955037685},
{-8.735978794495168, -9.937794108991511, -9.898267623095307,
-9.618553022650303, -9.339870589203201, -9.070070474830572,
-8.874916764892987, -8.73743108472263, -8.603454272262752,
-8.4679576887429, -8.345231180253904, -8.22894910305331,
-8.122679714346305, -8.02532442296797, -7.934542750692344,
-7.849680814280873, -7.769934696771088, -7.694728219372337,
-7.623779223649763, -7.544844208154245, -7.470770809391979},
{-8.76016799241188, -9.965607920246839, -9.925740051141474,
-9.645283868347178, -9.365826405686676, -9.095276584324893,
-8.899567052314524, -8.761773865582654, -8.627349854752538,
-8.491492563916836, -8.368410897091962, -8.25179800252954,
-8.14526649081381, -8.047649356201873, -7.956618726384477,
-7.871522331741289, -7.791548248278559, -7.716126447892748,
-7.644977095071226, -7.565826692909468, -7.491551718339906},
{-8.784426994912792, -9.993500479737122, -9.953289267781656,
-9.672090308828047, -9.391855434791069, -9.120553838845808,
-8.924286796696833, -8.786185413046042, -8.65131240435585,
-8.515094082351425, -8.391655332801747, -8.274711285412195,
-8.167917299128021, -8.070037242127, -7.978757021744968,
-7.893425283487886, -7.8132223951251945, -7.73758465044375,
-7.666234431162593, -7.586868063779548, -7.512391061070957},
{-8.808755995305546, -10.021472005260875, -9.980915501757408,
-9.698972562211566, -9.417957887824741, -9.14590244217834,
-8.949076200762647, -8.81066591135459, -8.675342102811555,
-8.538762421128922, -8.414964668278117, -8.297689140104922,
-8.190632306155749, -8.092488249851158, -8.000957806332735,
-7.915389822170255, -7.834957297993242, -7.759102993106353,
-7.687551391296438, -7.607968490876374, -7.533288957609329},
{-8.833155186206568, -10.049522716908541, -10.008618979700259,
-9.725930846703704, -9.444133976794546, -9.171322601207066,
-8.973935467685806, -8.835215550265275, -8.699439140575123,
-8.562497766295564, -8.438339085740154, -8.320731757048634,
-8.213411680597346, -8.115002561491565, -8.023221259572892,
-7.937416108339676, -7.856753118947381, -7.780681639080285,
-7.708928146603284, -7.629128127868171, -7.5542455440881895},
{-8.857624759781174, -10.077652832609601, -10.036399934338988,
-9.752965379753732, -9.470383907246287, -9.19681452246732,
-8.998864801760647, -8.85983452067012, -8.723603705060668,
-8.586300300565199, -8.461778770419187, -8.34383932298806,
-8.236255590818473, -8.137580350929056, -8.045547553192591,
-7.959504307233146, -7.878610022497014, -7.802320754650282,
-7.730364856572123, -7.650347142480314, -7.575260950878146},
{-8.882164910108258, -10.105862573000195, -10.064258592115948,
-9.7800763813284, -9.496707891550614, -9.222378412741818,
-9.0238644038036, -8.88452300557401, -8.747835979433148,
-8.610170205283794, -8.485283906193217, -8.367012033777428,
-8.259164209463052, -8.16022179297579, -8.067936863284558,
-7.981654574658023, -7.90052816979005, -7.824020503976499,
-7.751861689263023, -7.671625699076685, -7.596335307898698},
{-8.906775830910192, -10.134152158636425, -10.092195185745368,
-9.807264069648227, -9.523106139007723, -9.248014474360389,
-9.048934481354081, -8.909281195621588, -8.77213615780056,
-8.634107668185607, -8.508854679545038, -8.390250078955432,
-8.282137696121936, -8.182927066285629, -8.090389359364053,
-8.003867075720336, -7.9225077272130875, -7.845781052441453,
-7.7734188076719875, -7.69296395542915, -7.617468753858702},
{-8.931457718281308, -10.16252180961601, -10.12020994622435,
-9.834528668303392, -9.54957886315242, -9.273722917845589,
-9.074075236610952, -8.9341092826362, -8.796504423342412,
-8.65811287026736, -8.532491277364898, -8.413553650971153,
-8.30517623090418, -8.20569634581625, -8.112905219415552,
-8.026141972310143, -7.944548855637549, -7.8676025663735345,
-7.795036372976028, -7.714362077807891, -7.638661421398865},
{-8.95621076671523, -10.190971748677839, -10.148303106820094,
-9.861870396518498, -9.576126277213916, -9.299503950969665,
-9.099286879369174, -8.959007455414394, -8.820940969220828,
-8.682186000063666, -8.556193887954578, -8.436922949331347,
-8.328279974666657, -8.228529817322851, -8.135484616286703,
-8.048479426070116, -7.966651718947105, -7.889485217892798,
-7.816714559143293, -7.735820232133847, -7.659913449722808},
{-8.981035172284464, -10.21950219887367, -10.176474900290486,
-9.889289472921519, -9.602748590157717, -9.325357782916399,
-9.124569612176856, -8.98397590253444, -8.845445978193311,
-8.706327238847734, -8.579962693620473, -8.460358165742946,
-8.351449097084696, -8.251427649243851, -8.158127723625512,
-8.070879598904867, -7.988816486889846, -7.9114291729347315,
-7.838453526652302, -7.757338577808696, -7.681224983040011},
{-9.005931131148827, -10.248113380817813, -10.204725560353836,
-9.916786122805206, -9.6294460202771, -9.351284624164691,
-9.149923641758505, -9.009014816416311, -8.870019647307345,
-8.730536774193752, -8.603797891628346, -8.483859497500816,
-8.374683771966374, -8.274390024569584, -8.180834719125414,
-8.093342659092741, -8.01104332007526, -7.933434595252038,
-7.860253443621332, -7.778917283911142, -7.702596163871931},
{-9.030898841083399, -10.276805520945345, -10.233055321790744,
-9.94436056750419, -9.6562187737145, -9.377284684131155,
-9.17534917712328, -9.034124386293115, -8.894662160630105,
-8.754814792991965, -8.627699670847505, -8.507427143747918,
-8.397984166731476, -8.29741712663963, -8.203605773494928,
-8.115868761364254, -8.03333239047788, -7.955501657052082,
-7.882114474923583, -7.8005565142666455, -7.724027138858219},
{-9.05593849876459, -10.30557884251175, -10.261464421884739,
-9.972013030841481, -9.683067071557161, -9.40335816955485,
-9.200846420266316, -9.059304802955012, -8.919373707467457,
-8.779161482743802, -8.651668215708924, -8.53106129943626,
-8.421350451011676, -8.320509129960556, -8.226441055972828,
-8.138458077984978, -8.055683860351564, -7.9776305236591725,
-7.904036787440418, -7.822256428509718, -7.745518055453431},
{-9.081050302906078, -10.334433568401437, -10.289953094019438,
-9.999743732449133, -9.70999112642312, -9.42950529405789,
-9.226415583412745, -9.084556259389501, -8.944154478886048,
-8.803577028709697, -8.675703722983599, -8.554762166677392,
-8.444782794133062, -8.343666216896963, -8.249340746740927,
-8.161110769302468, -8.078097895922838, -7.999821367120603,
-7.92602054811141, -7.8440171982801985, -7.767069067267585},
{-9.106234452905483, -10.363369928963948, -10.31852157972753,
-10.027552902087336, -9.73699115497584, -9.455726271058666,
-9.252056876808638, -9.109878950243, -8.969004669808783,
-8.828061622130917, -8.699806383272517, -8.578529945458286,
-8.468281368695898, -8.36688856726687, -8.272305019389023,
-8.183827006039792, -8.100574669690104, -8.022074358988903,
-7.948065924880211, -7.865838989266194, -7.788680332741933},
{-9.13149114618136, -10.392388145439327, -10.347170110588195,
-10.05544075742364, -9.764067371259443, -9.482021311618155,
-9.27777050343866, -9.135273063438945, -8.99392446478305,
-8.852615448253346, -8.723976392808254, -8.602364838894573,
-8.491846348188119, -8.390176366418018, -8.295334040769376,
-8.206606946216198, -8.123114349480602, -8.044389666552888,
-7.97017308609793, -7.88772196546779, -7.8103520042059245},
{-9.15682058443781, -10.421488446707372, -10.37589893063705,
-10.083407530735712, -9.791219991268008, -9.50839062788873,
-9.303556676051812, -9.160738794744248, -9.01891406244249,
-8.877238697255962, -8.74821394160972, -8.626267046216526,
-8.515477902663406, -8.41352979534713, -8.318427989070187,
-8.229450759637984, -8.145717103645438, -8.066767459895345,
-7.992342195400852, -7.909666292282054, -7.832084239897085},
{-9.182222967305279, -10.450671061043977, -10.40470827781246,
-10.11145344284887, -9.818449233978754, -9.53483443389996,
-9.329415603540838, -9.186276335080038, -9.043973648702377,
-8.90193156148598, -8.772519225007272, -8.650236770801712,
-8.539176203179522, -8.436949032751727, -8.341587034839904,
-8.252358612633543, -8.168383103417, -8.089207913624705,
-8.014573421140085, -7.931672140548471, -7.853877207700862},
{-9.207698496051307, -10.479936214687768, -10.433598391871783,
-10.13957871918683, -9.845755318077863, -9.561352943695965,
-9.35534749290673, -9.211885881915805, -9.069103417466977,
-8.926694225301617, -8.796892439291696, -8.674274215023615,
-8.562941422511358, -8.460434263499337, -8.364811351129902,
-8.275330674645375, -8.191112513217377, -8.111711196237593,
-8.03686693412601, -7.953739670483628, -7.875731069187168},
{-9.233247372016194, -10.509284138359362, -10.462569514129427,
-10.167783590310137, -9.873138458497124, -9.587946369705605,
-9.381352560885716, -9.237567626783857, -9.094303564736038,
-8.95152688291273, -8.821333780288114, -8.698379586290685,
-8.586773738468764, -8.483985673621646, -8.388101115633617,
-8.298367114999564, -8.213905513897771, -8.13427748423419,
-8.059222903626505, -7.97586905733624, -7.897645991688478},
{-9.258869797369698, -10.538715060654795, -10.491621885928907,
-10.196068280230975, -9.90059887561074, -9.61461493220122,
-9.40743101334374, -9.263321763501153, -9.119574280513916,
-8.976429720190936, -8.845843443006743, -8.722553086496191,
-8.610673322153161, -8.507603445119457, -8.411456490226556,
-8.321468095644377, -8.236762269560131, -8.156906945296214,
-8.081641490512993, -7.998060463301954, -7.919622137953411},
{-9.284565975089208, -10.568229211028665, -10.520755751102115,
-10.22443301952444, -9.928136789661949, -9.641358843116905,
-9.433583064455888, -9.289148491632659, -9.144915763405152,
-9.001402935289661, -8.870421627056203, -8.746794921215042,
-8.63464035265497, -8.531287762787542, -8.434877656531171,
-8.344633789762156, -8.259682955904282, -8.179599752242211,
-8.10412287102372, -8.020314059074735, -7.941659683812759},
{-9.310336108239426, -10.597826821016497, -10.549971351400018,
-10.252878034094465, -9.955752418434713, -9.668178318039281,
-9.459808922299999, -9.315048002681579, -9.170328202730161,
-9.026446713498444, -8.895068528028787, -8.771105296807946,
-8.658675001497613, -8.555038808641257, -8.45836478259298,
-8.367864366955473, -8.282667744730134, -8.202356083333143,
-8.126667210934102, -8.042630007883417, -7.963758797530318},
{-9.336180401107413, -10.627508120902348, -10.579268930508988,
-10.28140355386131, -9.98344598581025, -9.695073576789582,
-9.48610880060005, -9.341020495616249, -9.195811796947964,
-9.051561250598752, -8.919784347541281, -8.795484421774745,
-8.68277744842635, -8.578856775086024, -8.481918041507015,
-8.39116000093054, -8.305716810456943, -8.225176111329347,
-8.14927467731468, -8.065008481193217, -7.985919657978229},
{-9.362099058293097, -10.657273343385896, -10.608648733177688,
-10.31000980627141, -10.011217708990443, -9.722044834226836,
-9.51248291398224, -9.367066166349105, -9.221366738420329,
-9.076746736027417, -8.944569282757584, -8.819932497834088,
-8.706947872124147, -8.60274183913134, -8.505537609715248,
-8.414520853883005, -8.328830324680894, -8.248060005862499,
-8.17194544323138, -8.087449643440777, -8.008142426915583},
{-9.388092284163577, -10.687122720657499, -10.638111007414409,
-10.338697022540146, -10.039067812816938, -9.749092311554705,
-9.538931471004616, -9.393185210908996, -9.246993224267499,
-9.102003361433162, -8.969423532180372, -8.84444973396603,
-8.731186446399079, -8.62669419478334, -8.529223650024505,
-8.437947101760074, -8.352008462446975, -8.271007947347243,
-8.19467967262608, -8.109953665727517, -8.030427287187194},
{-9.414160284781246, -10.71705648623174, -10.667655995915993,
-10.367465434770565, -10.066996513924096, -9.776216224767268,
-9.565454687384772, -9.419377828628058, -9.272691454723827,
-9.12733132269932, -8.994347298983485, -8.869036339252489,
-8.755493357908563, -8.650714027578942, -8.552976343940827,
-8.461438916099723, -8.375251404751907, -8.294020104134688,
-8.217477538695675, -8.132520709652454, -8.052774413459701},
{-9.440303266586852, -10.747074873826932, -10.697283948364202,
-10.396315273450455, -10.095004041286302, -9.803416793292854,
-9.592052777195931, -9.44564421880932, -9.298461620492162,
-9.152730809728382, -9.019340784667293, -8.893692520112381,
-8.779868783531128, -8.674801520974142, -8.576795860135462,
-8.484996472951025, -8.39855931821512, -8.31709665840026,
-8.240339211726678, -8.155150945924106, -8.075183983222814},
{-9.46652143621759, -10.777178118281881, -10.726995110104326,
-10.425246769504156, -10.123090618129936, -9.830694234216935,
-9.618725952735986, -9.471984579198761, -9.324303923960542,
-9.178202017123112, -9.044404186250176, -8.918418484405265,
-8.80431290132401, -8.698956868320238, -8.600682370044524,
-8.508619936037576, -8.42193238096661, -8.340237779557356,
-8.26326485745085, -8.177844540696242, -8.097656169135007},
{-9.492815001089184, -10.807366454042494, -10.756789731807658,
-10.454260154103395, -10.151256461293087, -9.858048771508038,
-9.64547442755429, -9.498399110671016, -9.350218558349297,
-9.203745137274382, -9.069537708419375, -8.9432144373568,
-8.828825900724041, -8.723180258297361, -8.624636052671121,
-8.532309483285644, -8.445370771936723, -8.363443651527632,
-8.286254649909097, -8.200601659307722, -8.120191156849614},
{-9.519184170181688, -10.837640117955743, -10.7866680608131,
-10.483355660777306, -10.17950180223852, -9.885480627519428,
-9.672298416873673, -9.5248880150466, -9.376205725056934,
-9.229360360957799, -9.09474155663338, -8.968080590173486,
-8.85340796111268, -8.747471873735776, -8.648657071549678,
-8.55606528588396, -8.468874667378259, -8.386714444233803,
-8.309308758965926, -8.223422471535741, -8.142789119112422},
{-9.545629150998138, -10.867999346010038, -10.816630349800107,
-10.51253352528147, -10.207826862708316, -9.912990017721313,
-9.699198135887855, -9.55145148820884, -9.402265621145489,
-9.255047885220847, -9.12001592766319, -8.993017150773085,
-8.878059266266064, -8.771831907652086, -8.672745604373631,
-8.579887519066688, -8.49244424617791, -8.410050330479862,
-8.332427354005631, -8.246307135923416, -8.165450238142512},
{-9.572150153282564, -10.898444374892279, -10.846676846515038,
-10.54179397864209, -10.236231867398601, -9.940577165529248,
-9.72617379714211, -9.578089736227412, -9.428398443284095,
-9.280807905059191, -9.145361027767649, -9.01802432576369,
-8.90278000215767, -8.796260551724117, -8.6969018222444,
-8.603776358024334, -8.516079680717667, -8.43345149612287,
-8.355610603306559, -8.269255826162407, -8.188174693728797},
{-9.598747387441108, -10.928975441740477, -10.876807803389966,
-10.5711372566293, -10.264717048237799, -9.968242293936783,
-9.753225618434954, -9.604802961825044, -9.454604395548813,
-9.306640609909664, -9.170777066756273, -9.043102326104417,
-8.927570356143406, -8.820757999521447, -8.721125902957283,
-8.627731975066126, -8.539781153813237, -8.456918114272412,
-8.37885868405283, -8.29226870254206, -8.210962669618311},
{-9.625421063057729, -10.959592788931332, -10.907023473584559,
-10.600563594372943, -10.293282622675179, -9.995985624904279,
-9.780353813854163, -9.631591365658096, -9.48088367098535,
-9.332546197838383, -9.19626423936279, -9.068251355973189,
-8.952430514415028, -8.845324435795192, -8.74541801707528,
-8.651754544916912, -8.563548844482284, -8.480450362883857,
-8.402171766021638, -8.315345932001946, -8.233814345498104},
{-9.652171391426236, -10.990296649019001, -10.937324109341716,
-10.630073227061075, -10.321928827645024, -10.02380738343345,
-9.80755860087811, -9.65845515205001, -9.507236477831611,
-9.358524857758312, -9.221822758423514, -9.093471627507824,
-8.977360664139269, -8.869960057447315, -8.769778337256867,
-8.675844244789914, -8.587382930942113, -8.50404841962154,
-8.42555001868459, -8.338487683126004, -8.256729902670486},
{-9.678998584655346, -11.021087266970426, -10.967709963166271,
-10.659666392064537, -10.350655882022693, -10.051707790931687,
-9.834840193478158, -9.685394529005862, -9.533663011025055,
-9.38457678949635, -9.247452824667562, -9.11876334673434,
-9.002360995087656, -8.894665057203383, -8.794207040293259,
-8.700001247736509, -8.611283592123073, -8.527712460461771,
-8.448993613783387, -8.36169412106392, -8.279709525057115},
{-9.705902855253953, -11.051964881145977, -10.998181291244691,
-10.689343327045208, -10.379464020152227, -10.079687070159707,
-9.86219880921999, -9.712409696163377, -9.560163473244756,
-9.410702182969544, -9.273154642854934, -9.144126723040245,
-9.027431695256382, -8.919439623176004, -8.818704296383657,
-8.724225734258653, -8.63525100624247, -8.55144266365096,
-8.472502725519007, -8.384965402379748, -8.302753395648324},
{-9.732884414945147, -11.082929732976481, -11.028738347114995,
-10.719104266318027, -10.408353471168084, -10.107745445871842,
-9.889634663719335, -9.73950086327386, -9.586738060417701,
-9.436901232591481, -9.298928421616438, -9.169561963324668,
-9.052572953500203, -8.944283954391722, -8.843270281795412,
-8.748517872882076, -8.65928535797866, -8.575239211626467,
-8.496077526724548, -8.408301698902505, -8.325861695382628},
{-9.759943479199137, -11.113982063965523, -11.059381388142356,
-10.748949450833607, -10.437324461468961, -10.135883145660046,
-9.917147977132117, -9.766668236770784, -9.61338698284817,
-9.463174137548776, -9.324774366410566, -9.195069276349386,
-9.077784966895706, -8.969198239094112, -8.867905176914064,
-8.77287785380031, -8.683386829157826, -8.599102279069484,
-8.519718191149877, -8.431703178430325, -8.349034612881951},
{-9.787080260575749, -11.145122115616687, -11.090110669712885,
-10.778879116813187, -10.466377222212031, -10.164100394787965,
-9.94473896312411, -9.79391202199622, -9.640110436666873,
-9.489521086754394, -9.35069268393272, -9.220648869973957,
-9.103067922464106, -8.994182676600758, -8.892609148548217,
-8.7973058445059, -8.707555597226019, -8.623032047806191,
-8.543424889983726, -8.455170000044745, -8.372272319771582},
{-9.814294974668883, -11.176350132998778, -11.120926450792467,
-10.808893508045003, -10.495511983550387, -10.192397415739833,
-9.972407839319203, -9.821232427450013, -9.666908627797966,
-9.515942275160342, -9.37668358256633, -9.246300952421734,
-9.128422015055548, -9.019237462896854, -8.917382376646856,
-8.821802026242949, -8.73179185090703, -8.647028692023014,
-8.567197798460256, -8.478702328546206, -8.395575003654812},
{-9.8415878369633, -11.207666358022834, -11.151828989372007,
-10.838992862729356, -10.524728980395594, -10.220774436893407,
-10.000154827735969, -9.848629663596512, -9.693781756592216,
-9.54243790259352, -9.402747266474762, -9.272025731115718,
-9.153847438181401, -9.044362788874423, -8.942225036589662,
-8.846366580110043, -8.756095768403611, -8.671092399599729,
-8.591037090911414, -8.502300330001162, -8.418942842152319},
{-9.868959062710928, -11.239071035641246, -11.182818542438326,
-10.869177416985622, -10.55402844317723, -10.249231682842947,
-10.027980140817817, -9.876103936665459, -9.720730027271202,
-9.569008153921459, -9.428883942237007, -9.297823412853177,
-9.17934438122029, -9.069558847972075, -8.967137303363415,
-8.870999679566012, -8.780467532007606, -8.69522334098292,
-8.61494294089789, -8.525964164873585, -8.442376010207226},
{-9.896408869833976, -11.270564411926898, -11.213895370849059,
-10.899447418923955, -10.583410599458148, -10.277769382766564,
-10.055884002125822, -9.903655461515882, -9.747753644856857,
-9.595653231066535, -9.455093817057787, -9.323694206032087,
-9.204913042805856, -9.09482584016223, -8.99211935600033,
-8.89570151620137, -8.804907328289119, -8.719421698624501,
-8.638915523188189, -8.549694000335876, -8.465874692905345},
{-9.923937474894046, -11.302146729867673, -11.245059733919334,
-10.929803104809253, -10.612875687991618, -10.306387763441307,
-10.083866628439864, -9.931284443169716, -9.774852810165612,
-9.62237332186487, -9.481377100048121, -9.349638316882192,
-9.230553615358076, -9.12016395945102, -9.017171367857372,
-8.920472259414964, -8.829415337575483, -8.74368765471445,
-8.662955012463499, -8.573490000329912, -8.489439058466814},
{-9.95154509677377, -11.3338182381558, -11.276311894733226,
-10.960244720423361, -10.642423939701985, -10.33508705123677,
-10.111928239421104, -9.958991096282261, -9.802027734767762,
-9.649168624760932, -9.507734000566415, -9.375655953612295,
-9.256266295909882, -9.145573401299771, -9.042293515332858,
-8.94531209570414, -8.85399175225757, -8.768021383948508,
-8.687061586024356, -8.59735232674575, -8.513069287466351},
{-9.97923195243493, -11.365579182238434, -11.307652114657685,
-10.990772508041118, -10.672055591232493, -10.363867474836297,
-10.14006905327551, -9.986775633020443, -9.829278618984972,
-9.676039333236986, -9.534164722354035, -9.401747326424811,
-9.282051281319582, -9.17105436208658, -9.067485980092897,
-8.970221209383453, -8.8786367510329, -8.792423070161021,
-8.711235418537399, -8.621281145140529, -8.536765552082215},
{-10.006998262542766, -11.397429811317124, -11.339080654724967,
-11.021386712032836, -10.701770877582021, -10.39272926709964,
-10.168289294073475, -10.014638264387031, -9.856605674547609,
-9.702985642157728, -9.560669477839838, -9.42791263734398,
-9.30790876802348, -9.19660703887348, -9.092748940631282,
-8.995199783777934, -8.903350521446555, -8.816892896589707,
-8.735476688219933, -8.645276623559766, -8.560528027490363},
{-10.034844246372813, -11.429370371814002, -11.370597779445234,
-11.052087572796154, -10.731570030460716, -10.421672649754328,
-10.19658917922061, -10.042579205692164, -9.884009100758703,
-9.730007742138696, -9.587248470532359, -9.454152094287565,
-9.333838948106859, -9.222231626568828, -9.118082574786968,
-9.020247999680578, -8.928133251669351, -8.841431037086295,
-8.759785567744984, -8.669338923806208, -8.584356881066924},
{-10.062770124488452, -11.461401115433546, -11.402203753823414,
-11.082875342763145, -10.761453290295321, -10.450697861320805,
-10.224968929993338, -10.070598667123704, -9.91148911343771,
-9.757105827273335, -9.613901911565335, -9.480465905144229,
-9.359842025180114, -9.247928319848143, -9.14348705743032,
-9.045366039616056, -8.952985125099076, -8.86603767631459,
-8.784162236333941, -8.693468214347376, -8.608252286081552},
{-10.090776118420763, -11.493522288132226, -11.433898839895846,
-11.11375026058522, -10.79142089013476, -10.479805125447456,
-10.25342877053481, -10.098696866407408, -9.93904591705359,
-9.78428009543859, -9.640630010107998, -9.506854276143713,
-9.38591819665453, -9.273697317228653, -9.168962573472527,
-9.070554092773818, -8.977906334112049, -8.890712992317276,
-8.808606874459656, -8.71766465397377, -8.632214412689791},
{-10.118862449307926, -11.525734143404406, -11.46568330633454,
-11.144712577675818, -10.821473070405773, -10.50899467447016,
-10.28196892075357, -10.126874018693343, -9.966679725199356,
-9.811530737031717, -9.667432972360984, -9.533317413108307,
-9.412067657118314, -9.299538811217644, -9.194509302687948,
-9.095812348925392, -9.002897063503042, -8.915457171417074,
-8.833119654271286, -8.741928418676252, -8.656243428209564},
{-10.147029340565496, -11.558036931004608, -11.497557418653741,
-11.175762538478011, -10.851610069614253, -10.538266739065875,
-10.3105896012421, -10.15513033705065, -9.994390743318945,
-9.83885794863454, -9.694311007740907, -9.559855521671125,
-9.438290608741227, -9.32545300143829, -9.220127421504003,
-9.121140983799705, -9.0279574971064, -8.940270386257907,
-8.857700759806903, -8.766259670126601, -8.680339496146189},
{-10.175277014473977, -11.590430903510423, -11.529521443662816,
-11.206900389879593, -10.88183212171134, -10.567621552720084,
-10.339291038661031, -10.183466037677135, -10.022179186053108,
-9.866261921051773, -9.72126432452933, -9.586468805515324,
-9.464587249909528, -9.351440081882174, -9.245817120885476,
-9.146540190966334, -9.053087829204742, -8.965152827324346,
-8.88235036698461, -8.790658578116563, -8.704502787237288},
{-10.203605696187878, -11.622916311549488, -11.561575649160659,
-11.238126380078029, -10.912139471343835, -10.597059347332106,
-10.368073452991666, -10.2118813394045, -10.050045264695655,
-9.893742847794783, -9.748293132608524, -9.613157470870647,
-9.49095778237097, -9.37750024649722, -9.271578572675935,
-9.172010155132739, -9.078288245364092, -8.990104673081078,
-8.907068656524643, -8.815125313820317, -8.728733459720388},
{-10.232015607856738, -11.655493409693008, -11.593720304314047,
-11.269440759861027, -10.942532352200942, -10.626580354073667,
-10.396937070647255, -10.240376454778016, -10.077989197190618,
-9.921300923699164, -9.775397642151802, -9.639921724505257,
-9.51740240525396, -9.403633687223191, -9.297411960636964,
-9.19755106921366, -9.103558938804781, -9.01512609970814,
-8.931855804054067, -8.839660039782757, -8.753031681553693},
{-10.260506976519537, -11.688162450736854, -11.625955678158789,
-11.300843779943534, -10.973011008783942, -10.65618480592093,
-10.425882112729596, -10.268951604055474, -10.106011190859135,
-9.948936344182584, -9.802578059607185, -9.666761766638956,
-9.543921317977947, -9.429840604076162, -9.323317474074429,
-9.223163117421791, -9.128900089563103, -9.040217298010248,
-8.956711992417695, -8.864262934308499, -8.777397616300732},
{-10.289080027076125, -11.720923689063056, -11.6582820405456,
-11.33233568634023, -11.00357568639447, -10.68587293800374,
-10.454908804764273, -10.297607006839826, -10.13411146926228,
-9.976649301679572, -9.829834599193418, -9.693677804534673,
-9.570514725419343, -9.456121194161824, -9.349295291118324,
-9.248846488262643, -9.154311897800653, -9.065378445957322,
-8.981637405639049, -8.888934161019279, -8.801831424643751},
{-10.317734986936557, -11.753777381585678, -11.690699664497515,
-11.363916734117083, -11.034226615374791, -10.715644982963568,
-10.484017373251845, -10.32634287775727, -10.162290242864401,
-10.004439991083927, -9.8571674649138, -9.72067004215205,
-9.597182828947552, -9.48247564441408, -9.375345601336448,
-9.274601379642263, -9.17979454730812, -9.090609728067648,
-9.006632223405177, -8.913673898583511, -8.826333270582836},
{-10.3464720816919, -11.7867237823084, -11.723208819967113,
-11.395587170612998, -11.06496405004873, -10.745501178127597,
-10.51320804480929, -10.355159434853704, -10.190547736201552,
-10.03230860248732, -9.884576874028426, -9.747738679856411,
-9.62392583025212, -9.508904150876333, -9.401468585041584,
-9.30042797238275, -9.205348230389063, -9.115911324799526,
-9.031696625141194, -8.938482314842986, -8.850903316459153},
{-10.375291539967293, -11.819763147039339, -11.75580978054495,
-11.42734725162154, -11.0957882245566, -10.775441761143156,
-10.542481041920837, -10.38405689963838, -10.2188841682364,
-10.060255335702095, -9.912063034906168, -9.774883923382731,
-9.650743937745574, -9.53540691229864, -9.42766443103028,
-9.326326463662554, -9.230973141995491, -9.141283422213746,
-9.056830792222172, -8.963359586836305, -8.87554172342061},
{-10.404193590366049, -11.852895734715275, -11.78850281846826,
-11.459197231059079, -11.12669938900217, -10.805466960009653,
-10.57183659367729, -10.413035488731111, -10.24729975889204,
-10.088280380601645, -9.939626152510755, -9.802105971917626,
-9.677637345390394, -9.561984113504877, -9.45393332184176,
-9.352297045377782, -9.256669463822618, -9.166726202500286,
-9.082034910679795, -8.988305878971005, -8.900248653895687},
{-10.43317846149148, -11.886121801726404, -11.82128820764774,
-11.491137356992112, -11.157697782749892, -10.83557701446989,
-10.60127492423635, -10.442095423277351, -10.275794727349421,
-10.116383931148448, -9.96726644487353, -9.829405028765905,
-9.704606263665482, -9.588635954045458, -9.480275443245773,
-9.378339899587445, -9.282437393354485, -9.192239847470773,
-9.107309162587626, -9.013321370788617, -8.925024271244183},
{-10.462246384129685, -11.919441608159104, -11.854166224613436,
-11.523167888924945, -11.188783652658458, -10.86577216720616,
-10.63079626551189, -10.47123692331661, -10.304369304256397,
-10.144566184593714, -9.994984124947223, -9.85678129644657,
-9.731650899047963, -9.615362622702378, -9.50669099172228,
-9.40445523627568, -9.308277124306187, -9.217824547871714,
-9.132653735665372, -9.038406242529163, -8.949868738476653},
{-10.491397587014944, -11.952855411698692, -11.887137143159634,
-11.555289077557973, -11.21995724302542, -10.896052652256913,
-10.66040084195265, -10.50046020980517, -10.333023712679278,
-10.17282733535103, -10.02277939945634, -9.884234976241714,
-9.758771457956755, -9.64216431658133, -9.533180147176608,
-9.43064323568251, -9.334188840322895, -9.24348048667889,
-9.158068805671064, -9.06356066747685, -8.974782215693267},
{-10.52063230296335, -11.986363473624806, -11.920201242552139,
-11.587501182133565, -11.251218800898641, -10.92641870751686,
-10.690088883740827, -10.529765499319183, -10.361758180821198,
-10.201167574210558, -10.05065248644678, -9.911766265548067,
-9.78596814321645, -9.669041226850823, -9.55974309235171,
-9.456904093560297, -9.360172740765847, -9.269207839970477,
-9.183554563962389, -9.088784815568943, -8.999764868145576},
{-10.549950762695516, -12.019966053281678, -11.953358796949033,
-11.619804457790451, -11.282568574257311, -10.956870572423213,
-10.71986061935604, -10.559153015492484, -10.390572932257783,
-10.229587100577191, -10.078603595800814, -9.939375367961475,
-9.813241162555641, -9.695993543355144, -9.586380028864369,
-9.483238005341263, -9.386229014809942, -9.295006803964498,
-9.209111194708385, -9.114078867220087, -9.024816857039696},
{-10.579353199726029, -12.053663412909373, -11.98661008712952,
-11.652199158736039, -11.314006810294813, -10.987408487329958,
-10.749716275531682, -10.588622978088097, -10.419468203021097,
-10.258086103727692, -10.106632942188298, -9.967062481911853,
-9.84059072198579, -9.723021458412404, -9.613091136881849,
-9.509645165118854, -9.412357853318099, -9.320877561112866,
-9.23473888222361, -9.13944300301955, -9.049938344891416},
{-10.608839846448973, -12.087455814471468, -12.01995539109339,
-11.684685548418202, -11.345533755476936, -11.0180326935224,
-10.779656090802746, -10.618175611452898, -10.44844422256574,
-10.286664785380708, -10.134740742112626, -9.994827808288392,
-9.868017034372315, -9.750125169361127, -9.639876609842759,
-9.536125773185631, -9.438559455418726, -9.346820296748774,
-9.260437817021739, -9.164877402363345, -9.07512949674856},
{-10.638410937172011, -12.121343520091614, -12.053394986593048,
-11.717263877450023, -11.377149659238057, -11.048743432751507,
-10.809680286765797, -10.647811132032075, -10.477501224391744,
-10.315323334754794, -10.162927206678432, -10.022671546015772,
-9.895520306221442, -9.777304865245242, -9.666736633313121,
-9.562680017901585, -9.464834005309967, -9.37283519693301,
-9.286208176461514, -9.190382242493797, -9.100390471779974},
{-10.668066706610261, -12.15532679381431, -12.086929156896076,
-11.749934411491267, -11.408854770095786, -11.079540945313056,
-10.839789096877212, -10.677529765162035, -10.506639442013693,
-10.344061952811899, -10.19119255784608, -10.050593893654877,
-9.923100745363627, -9.804560735967243, -9.693671400164021,
-9.58930810081074, -9.491181701101596, -9.398922448744997,
-9.312050154956523, -9.215957700798754, -9.125721438147593},
{-10.697807389886293, -12.189405899858684, -12.120558182432433,
-11.782697407077649, -11.440649339536321, -11.110425472288625,
-10.869982754287776, -10.70733173332701, -10.535859112031176,
-10.372880830735085, -10.21953700616723, -10.078595052051242,
-9.950758560677059, -9.831892974325456, -9.720681101898663,
-9.616010217927396, -9.517602734005777, -9.425082239991752,
-9.337963937374298, -9.241603961592773, -9.15112255627173},
{-10.727633222624718, -12.223581102429307, -12.154282345451065,
-11.815553125430597, -11.472533621810726, -11.141397260449594,
-10.900261491929996, -10.737217258632882, -10.565160475118319,
-10.401780168584082, -10.24796077751671, -10.106675220726174,
-9.978493965711095, -9.859301775781205, -9.747765929379966,
-9.642786566575523, -9.54409730003681, -9.451314760139212,
-9.363949716062052, -9.267321207444184, -9.176593995769508},
{-10.75754444195627, -12.257852667258703, -12.188101927211392,
-11.848501825763378, -11.504507857869612, -11.172456551750656,
-10.93062553863274, -10.767186563403811, -10.59454376292706,
-10.430760159535566, -10.276464079957805, -10.134834594937274,
-10.006307169271167, -9.886787328548962, -9.774926078389399,
-9.669637346174568, -9.570665588893462, -9.477620193647454,
-9.390007670532214, -9.293109621823533, -9.20213591682841},
{-10.787541284800682, -12.29222086093796, -12.22201721399324,
-11.88154377003957, -11.536572311320924, -11.203603593079606,
-10.961075131650432, -10.797239871069905, -10.62400922528468,
-10.459821000695229, -10.305047138943337, -10.163073375879321,
-10.034198382141767, -9.914349826984107, -9.802161731640808,
-9.696562752418686, -9.59730779522215, -9.503998734755442,
-9.416137995140161, -9.318969385843957, -9.227748488570796},
{-10.817623989882122, -12.326685950742103, -12.256028488525772,
-11.914679222172708, -11.568727224701433, -11.234838627526187,
-10.9916105040611, -10.827377404973959, -10.653557095225551,
-10.48896289098775, -10.333710173814325, -10.191391763757565,
-10.06216782136471, -9.941989461571211, -9.829473090561805,
-9.723562987404875, -9.624024115124485, -9.530450561171165,
-9.442340875510126, -9.344900685100583, -9.253431879624259},
{-10.847792795575515, -12.361248203436844, -12.290136037336197,
-11.947908445843495, -11.600972860309412, -11.266161902080057,
-11.022231889801333, -10.857599390015821, -10.683187621543766,
-10.518186027009506, -10.362453403606196, -10.21978995866084,
-10.090215695090592, -9.969706424453761, -9.856860344792949,
-9.750638256140519, -9.650814744789386, -9.556975877872901,
-9.468616501486395, -9.370903707836987, -9.279186257423135},
{-10.87804794141266, -12.39590788797068, -12.324340145161841,
-11.981231702113291, -11.633309468670632, -11.297573660500348,
-11.052939521483495, -10.887906047617435, -10.712901046936167,
-10.547490607612417, -10.391277050919598, -10.248268157869461,
-10.118342213594588, -9.99750091083115, -9.88432368816575,
-9.777788745879661, -9.677679868851556, -9.583574859425426,
-9.494965064979624, -9.396978638455039, -9.305011795135215},
{-10.908389667951269, -12.430665273685008, -12.358641103317495,
-12.014649257238489, -11.665737302100752, -11.329074154113187,
-11.08373363991268, -10.918297605210682, -10.742697619687533,
-10.576876831793925, -10.42018134072714, -10.27682655872195,
-10.146547599229962, -10.025373110285727, -9.911863324407022,
-9.805014671204844, -9.704619692463893, -9.610247706441442,
-9.521386755484855, -9.423125668196008, -9.330908661999274},
{-10.938818215610809, -12.465520630037645, -12.393039194023004,
-12.048161373852054, -11.698256621326436, -11.360663634011871,
-11.114614475285634, -10.94877428925247, -10.772577582843951,
-10.606344893516507, -10.449166492733639, -10.305465366109274,
-10.174832061544294, -10.053323219151935, -9.939479438471608,
-9.83231622632593, -9.731634399737231, -9.636994609754765,
-9.547881760110613, -9.449344987806398, -9.356877029669704},
{-10.96933382692805, -12.500474227563245, -12.427534708898747,
-12.081768318719696, -11.730867674006731, -11.392342341074254,
-11.145582267796271, -10.97933632117929, -10.802541187484167,
-10.635894997321884, -10.4782327364519, -10.334184779901989,
-10.203195813053753, -10.08135142386891, -9.967172227712581,
-9.859693614969729, -9.758724193379749, -9.663815751759103,
-9.574450266285567, -9.475636783317896, -9.38291707483586},
{-10.999936743144644, -12.535526337771444, -12.462127937586047,
-12.115470361648477, -11.763570723487646, -11.424110528445453,
-11.176637254844536, -11.009983926735003, -10.832588680103072,
-10.665527341363486, -10.507380295428447, -10.362984996754676,
-10.231639071251266, -10.109457922779256, -9.994941894139629,
-9.887147042987635, -9.785889265273, -9.690711334638763,
-9.601092471566517, -9.50200125403353, -9.409028975613182},
{-11.030627207997895, -12.570677233132301, -12.496819171181414,
-12.149267765518744, -11.796366028225748, -11.455968448950443,
-11.207779675838538, -11.040717338735703, -10.86272031403496,
-10.695242129266262, -10.536609398564906, -10.391866223828401,
-10.260162054357352, -10.13764291224652, -10.022788633039454,
-9.914676708896877, -9.813129813177511, -9.717681543668732,
-9.627808567864122, -9.528438588458812, -9.435212903888896},
{-11.061405465239659, -12.605927185737528, -12.5316086991661,
-12.183160798274912, -11.829253840784077, -11.487916350059095,
-11.239009769677068, -11.071536777541041, -10.892936341289897,
-10.725039559300058, -10.565920271590585, -10.420828657515813,
-10.288764976896346, -10.165906578913564, -10.050712644937448,
-9.942282816919032, -9.840446025773417, -9.744726574921515,
-9.65459874246153, -9.554948985722149, -9.461469047499122},
{-11.092271758614515, -12.641276469192235, -12.566496816056315,
-12.217149730422534, -11.862234426109353, -11.51995448624075,
-11.270327770820586, -11.102442473827978, -10.923237013761536,
-10.754919833358144, -10.595313147379784, -10.449872503901133,
-10.317448058689479, -10.194249121268513, -10.078714126575505,
-9.969965576339746, -9.867838105885312, -9.77184662289801,
-9.681463194428943, -9.581532641605008, -9.487797574111028},
{-11.12322633452277, -12.676725357901887, -12.601483813545201,
-12.251234831710462, -11.895308034261689, -11.552083108836086,
-11.301733926637098, -11.133434656439931, -10.95362258508976,
-10.784883157393779, -10.624788260960486, -10.47899796787533,
-10.34621151938336, -10.222670735209249, -10.106793278187979,
-9.997725188091863, -9.895306245278334, -9.799041879974538,
-9.708402106974972, -9.608189755643252, -9.514198676741216},
{-11.154269438971824, -12.712274126897682, -12.63656998485385,
-12.2854163688462, -11.928474935470149, -11.584302468283568,
-11.333228473420604, -11.164513549636467, -10.984093308376032,
-10.814929730579024, -10.65434583518072, -10.508205246616853,
-10.375055568409152, -10.251171608979348, -10.134950303268852,
-10.025561854447005, -9.922850640810793, -9.826312536926707,
-9.735415683244355, -9.634920517913997, -9.540672533825273},
{-11.185401317510696, -12.747923050206737, -12.671755624367506,
-12.319694612771855, -11.961735384407802, -11.616612820551381,
-11.364811654682853, -11.195679384487448, -11.014649438933702,
-10.845059760831646, -10.683986107527744, -10.537494551332202,
-10.403980432252865, -10.279751942609437, -10.163185397163033,
-10.05347578015062, -9.950471486663446, -9.853658794047078,
-9.762504110694863, -9.66172514038044, -9.567219329503132},
{-11.216622219064448, -12.783672407676931, -12.707041031535482,
-12.354069836816052, -11.99508964396955, -11.649014421229367,
-11.396483711650944, -11.226932397388737, -11.045291238246136,
-10.875273448997177, -10.713709317758912, -10.566866087232484,
-10.432986333791632, -10.308411929989234, -10.191498769650934,
-10.081467180105392, -9.978168986912351, -9.881080849532736,
-9.789667589910096, -9.688603821094148, -9.593839252978796},
{-11.247932390877395, -12.819522473713732, -12.74242649890948,
-12.38854231062578, -12.028537977996166, -11.681507525907364,
-11.428244889335474, -11.258272811144707, -11.076018956533517,
-10.905571007780964, -10.743515698210103, -10.596320058772108,
-10.4620734861237, -10.337151770916535, -10.219890622334788,
-10.109536254953127, -10.005943328083958, -9.90857889628387,
-9.816906315099914, -9.715556765877409, -9.620532484783325},
{-11.279332082543988, -12.855473527029972, -12.777912325967918,
-12.423112308300915, -12.06208064405655, -11.714092388356221,
-11.4600954305497, -11.28970085727633, -11.106832856603432,
-10.935952637693845, -10.77340548945358, -10.62585667410167,
-10.491242114367196, -10.365971656196052, -10.248361152305733,
-10.137683210050454, -10.033794714981923, -9.936153125192504,
-9.844220479018986, -9.742584175954107, -9.647299220669083},
{-11.310821543513157, -12.891525848594029, -12.813498811534373,
-12.457780103519326, -12.095717910124222, -11.746769264893373,
-11.492035579460207, -11.321216769050807, -11.137733190509607,
-10.966418547934154, -10.803378924872959, -10.655476139421808,
-10.520492438023211, -10.394871778902598, -10.276910572283668,
-10.165908246126492, -10.061723340448225, -9.963803741062293,
-9.871610278234584, -9.769686258747242, -9.674139640381327},
{-11.34240102343756, -12.927679712345707, -12.84918625242426,
-12.492545966510079, -12.129450042019016, -11.77953841019189,
-11.52406557937502, -11.35282077906595, -11.168720222791308,
-10.996968949446455, -10.833436251676176, -10.685178668238223,
-10.549824681249447, -10.423852346022613, -10.30553908267757,
-10.194211578200338, -10.089729409344727, -9.99153094177018,
-9.899075914203422, -9.796863224444678, -9.70105394217535},
{-11.37407077478565, -12.96393540360441, -12.884974949847674,
-12.527410175796831, -12.163277297600871, -11.81240008745226,
-11.556185683220974, -11.384513123746729, -11.199794213738642,
-11.02760405279696, -10.863577709591482, -10.714964470476843,
-10.579239068814786, -10.452913552115206, -10.334246894868556,
-10.222593418089673, -10.11781311503728, -10.01933492536773,
-9.92661758203758, -9.82411528925877, -9.72804231607006},
{-11.405831048490654, -13.000293199555017, -12.920865205218433,
-12.562373003704124, -12.197199947186164, -11.845354555378435,
-11.58839613274904, -11.41629403384286, -11.23095541827206,
-11.058324064302724, -10.893803543120157, -10.744833756500157,
-10.60873581978376, -10.482055593864061, -10.363034209964098,
-10.251053966232575, -10.145974656916223, -10.047215887898346,
-9.954235481854994, -9.851442657673033, -9.755104950920213},
{-11.437682097799552, -13.036753384920303, -12.956857319935807,
-12.597434726456413, -12.231218254222767, -11.878402067217394,
-11.620697175516398, -11.448163743378245, -11.262204098893562,
-11.089129197003786, -10.924113995890366, -10.774786739930278,
-10.638315157819306, -10.511278668156592, -10.391901235096157,
-10.279593428276712, -10.174214232043596, -10.075174023397267,
-9.981929808389395, -9.878845545026707, -9.78224203796708},
{-11.46962417531904, -13.073316239519045, -12.992951597290812,
-12.632595623930683, -12.265332487528212, -11.911542885223753,
-11.65308906174323, -11.480122491135262, -11.293540519836824,
-11.120019666937878, -10.954509314411553, -10.804823635233333,
-10.667977310426068, -10.540582977817394, -10.42084818179137,
-10.308212020201609, -10.202532043302199, -10.103209542838158,
-10.009700767608592, -9.90632416633889, -9.809453778521856},
{-11.501657536937273, -13.109982048539678, -13.029148340647225,
-12.66785597067792, -12.299542916647624, -11.944777272932697,
-11.685572039423278, -11.512170507689007, -11.324964937084587,
-11.150995684962254, -10.984989746910287, -10.834944657224696,
-10.697722496464849, -10.569968722498743, -10.449875255784718,
-10.336909942998318, -10.230928290722659, -10.131322638015263,
-10.037548555061221, -9.933878739946522, -9.836740360304248},
{-11.533782435886678, -13.146751093765488, -13.065447854809463,
-12.703216042893473, -12.333849802569603, -11.978105485162814,
-11.718146357030491, -11.544308034150163, -11.35647761222208,
-11.182057465950493, -11.015555542631773, -10.865150019672,
-10.727550942829112, -10.599436097516445, -10.478982670843834,
-10.365687409008387, -10.259403173433384, -10.159513513906859,
-10.065473367983941, -9.961509483400732, -9.864101979677798},
{-11.56599912886304, -13.183623661665479, -13.101850444159936,
-12.738676120818127, -12.368253419772373, -12.011527789174579,
-11.750812268714071, -11.576535306259757, -11.388078809366561,
-11.21320522663882, -11.046206948783947, -10.895439942163648,
-10.757462874345947, -10.628985312243458, -10.508170628541848,
-10.394544627488358, -10.287956889689667, -10.187782368215267,
-10.093475414556451, -9.989216612506425, -9.891538832103834},
{-11.598307871623547, -13.220600037137046, -13.138356415278395,
-12.7742364849546, -12.402754034716054, -12.045044445840176,
-11.783570022773347, -11.60885256313486, -11.419768789695809,
-11.244439185218653, -11.076944220083533, -10.925814642483601,
-10.787458517937921, -10.658616562082898, -10.53743934672093,
-10.42348180746194, -10.316589644353371, -10.216129396518227,
-10.121554891695268, -10.017000351945171, -9.919051118718926},
{-11.630708922391932, -13.257680506270844, -13.174966078877333,
-12.809897417086177, -12.437351920685614, -12.078655714387423,
-11.816419873925042, -11.64126004226273, -11.451547813921934,
-11.275759561685845, -11.107767606154084, -10.956274341442622,
-10.81753809255315, -10.68833005183842, -10.566789031930966,
-10.452499160688603, -10.345301640219986, -10.244554814504227,
-10.149712001148146, -10.044860919268103, -9.946639034547843},
{-11.663202538788028, -13.294865355375805, -13.211679737229133,
-12.845659191603772, -12.472047345640021, -12.112361858788063,
-11.849362073611701, -11.673757984593976, -11.48341614549281,
-11.307166572165443, -11.138677361101145, -10.986819257144816,
-10.84770182496868, -10.718125983519712, -10.59621989930747,
-10.481596884754254, -10.374093074147822, -10.273058808787027,
-10.177946948388126, -10.07279853709042, -9.974302780348808},
{-11.695788979552162, -13.332154873700347, -13.248497705571936,
-12.881522094816319, -12.506840580215794, -12.146163146637264,
-11.882396875618724, -11.706346626917366, -11.515374046895886,
-11.338660438690567, -11.169673739932477, -11.017449612845667,
-10.87794994621072, -10.748004561755806, -10.625732161104679,
-10.510775204835227, -10.402964154753136, -10.301641590544023,
-10.206259936996503, -10.100813432916766, -10.002042555657681},
{-11.728468504385091, -13.369549348019063, -13.285420290063485,
-12.917486404912779, -12.541731898425496, -12.1800598413829,
-11.915524533600546, -11.739026213152101, -11.547421778988792,
-11.370241384516703, -11.200756995473057, -11.048165628715651,
-10.908282673131907, -10.77796599076828, -10.655326029343996,
-10.540034321777057, -10.431915075081633, -10.330303360911785,
-10.234651166800177, -10.128905823803507, -10.029858558817068},
{-11.761241373453231, -13.407049068133347, -13.322447801576345,
-12.953552407940151, -12.576721572244423, -12.2140522042464,
-11.94874530438392, -11.77179698436521, -11.579559605102986,
-11.401909631706076, -11.231927387154428, -11.078967533743707,
-10.938700234837597, -10.808010473032482, -10.685001714358805,
-10.569374448386952, -10.460946049512131, -10.359044318058295,
-10.263120838528266, -10.157075934694149, -10.057751001935685},
{-11.794107847708801, -13.444654323582654, -13.35958055422816,
-12.98972038795182, -12.611809874913888, -12.24814050324494,
-11.982059443325852, -11.804659178247675, -11.611787786678178,
-11.43366541035357, -11.26318517155596, -11.109855545597384,
-10.969202850974398, -10.838138217281085, -10.714759436348686,
-10.598795794561738, -10.490057275106665, -10.387864671793068,
-10.291669166879728, -10.185323993035126, -10.085720085102366},
{-11.827068190024875, -13.482365406802273, -13.396818858600454,
-13.02599062435911, -12.646997081508744, -12.282325001331628,
-12.01546720789338, -11.83761304320069, -11.644106587598799,
-11.465508941124426, -11.294530604965985, -11.140829892159672,
-10.999790748406667, -10.86834942776477, -10.74459940532688,
-10.628298569557955, -10.519248959200922, -10.416764623019844,
-10.320296351419529, -10.213650216610404, -10.113766011869302},
{-11.86012266218313, -13.520182608204777, -13.434163029465708,
-13.062363405973883, -12.68228346350952, -12.316605970510864,
-12.048968856179272, -11.870658815896604, -11.676516269362764,
-11.497440454026219, -11.325963942450471, -11.171890800644178,
-11.030464152892819, -10.898644313536352, -10.774521841231035,
-10.657882981497096, -10.548521305667236, -10.445744376978837,
-10.349002598173684, -10.242054838541662, -10.141888993850444},
{-11.893271527333127, -13.558106219788897, -13.471613382484065,
-13.09883901529247, -12.717669302699505, -12.350983672658913,
-12.082564643438673, -11.903796742786653, -11.709017095214222,
-11.52946017490467, -11.35748544940725, -11.203038496605586,
-11.061223283584695, -10.929023078962928, -10.804526958090719,
-10.68754924464156, -10.577874520851765, -10.47480413885205,
-10.377788113604765, -10.270538072567433, -10.170089232327882},
{-11.926515051338356, -13.59613653588167, -13.509170231409371,
-13.135417742319987, -12.75315486760519, -12.385458380245836,
-12.116254832857521, -11.937027067615418, -11.741609329881612,
-11.561568341770908, -11.389095385035034, -11.234273211244727,
-11.092068371392088, -10.959485934203258, -10.834614974242868,
-10.7172975713911, -10.607308810926042, -10.503944114869228,
-10.406653105397709, -10.299100151722087, -10.198366944183363},
{-11.959853498075972, -13.634273847957957, -13.546833892018185,
-13.172099871808314, -12.78874043788528, -12.420030351684545,
-12.150039683576324, -11.97035003072233, -11.774293231486809,
-11.59376517709461, -11.420794003177434, -11.265595166536514,
-11.122999626357341, -10.990033080161083, -10.864786105055828,
-10.7471281659964, -10.636824379122118, -10.53316450843704,
-10.435597777366638, -10.3277412908501, -10.226722337392857},
{-11.993287133285776, -13.672518451727228, -13.584604684045189,
-13.208885689338786, -12.824426292791031, -12.454699862093548,
-12.183919453833369, -12.003765879606362, -11.807069063972449,
-11.626050920545822, -11.452581567980815, -11.297004595893668,
-11.154017279535765, -11.020664734794991, -10.895040567324031,
-10.777041240595281, -10.666421434521908, -10.562465525639709,
-10.464622336323373, -10.356461719202343, -10.255155621882295},
{-12.026816224926733, -13.71087064484891, -13.622482924518408,
-13.245775484261685, -12.86021270841593, -12.489467181585496,
-12.217894408706343, -12.03727486077696, -11.839937092998298,
-11.658425800735131, -11.484458343766164, -11.328501730051357,
-11.185121555783553, -11.051381104887696, -10.925378589163302,
-10.807037013932131, -10.69610018961248, -10.591847383155255,
-10.49372700470849, -10.385261657531373, -10.283667010371573},
{-12.06044103847671, -13.749330720398575, -13.660468932939693,
-13.28276954597095, -12.896099965801113, -12.524332575732842,
-12.251964808645425, -12.070877219521208, -11.872897577501135,
-11.69089006082504, -11.51642458641436, -11.360086799424607,
-11.21631267038174, -11.082182399579324, -10.955800381751033,
-10.837115691771032, -10.725860846199794, -10.621310282644117,
-10.522911974665476, -10.414141327724792, -10.31225670920685},
{-12.094161843902839, -13.78789897770912, -13.698563029029174,
-13.319868165592197, -12.932088338915491, -12.559296313251252,
-12.286130915948888, -12.104573194112163, -11.905950782966102,
-11.72344393125968, -11.548480558383744, -11.391760032507591,
-11.24759084507241, -11.113068826816743, -10.986306164064445,
-10.86727748339763, -10.755703615373932, -10.65085442995769,
-10.552177462377585, -10.44310095248511, -10.340924939810066},
{-12.127978910561069, -13.82657571278105, -13.73676553167752,
-13.357071627789992, -12.968178111725138, -12.594358661590377,
-12.320392994763097, -12.138363036327064, -11.939096967922524,
-11.756087649788242, -11.580626521259546, -11.423521658784011,
-11.278956301772268, -11.144040597457206, -11.016896164073842,
-10.89752260223031, -10.785628706624266, -10.680480039765825,
-10.581523675558856, -10.472140743222553, -10.369671911292244},
{-12.161892506177537, -13.865361224292428, -13.775076766192797,
-13.394380229205126, -13.004369567614049, -12.629519896829152,
-12.354751310427673, -12.172246993373847, -11.9723363982921,
-11.788821461726911, -11.612862737645628, -11.4553719185933,
-11.310409262630856, -11.17509792704368, -11.047570598952007,
-10.927851259533782, -10.815636332379654, -10.710187325108564,
-10.61095082529937, -10.50126093334984, -10.398497836082242},
{-12.19590290391352, -13.904255814370117, -13.813497051538434,
-13.43179425993003, -13.040662982457434, -12.664780285747838,
-12.389206131221727, -12.206225310539594, -12.005669335834682,
-11.821645604330115, -11.645189469360048, -11.487311040895293,
-11.341949947673129, -11.206241027277429, -11.078329693700653,
-10.958263674285263, -10.845726700790692, -10.739976487326203,
-10.640459126589121, -10.530461739981547, -10.427402926317882},
{-12.230010373546975, -13.943259779654909, -13.852026716354885,
-13.469314009911614, -13.077058643044438, -12.700140101616853,
-12.423757717158878, -12.240298235439695, -12.039096043998143,
-11.854560321487952, -11.677606974059017, -11.51933926017955,
-11.373578575876309, -11.237470107298577, -11.109173666482093,
-10.988760049454868, -10.87590002414072, -10.769847744581057,
-10.670048785337713, -10.559743370104115, -10.456387397862272},
{-12.264215189003153, -13.982373423481476, -13.890666081133531,
-13.506939775004867, -13.113556826108834, -12.735599614403327,
-12.45840634018532, -12.274466014176141, -12.072616782767,
-11.887565853772685, -11.710115519614192, -11.5514568084036,
-11.405295368196676, -11.268785381835187, -11.140102740522707,
-11.019340606260812, -10.906156512734015, -10.799801307613961,
-10.699720012256876, -10.589106057712343, -10.485451469372492},
{-12.298517621791689, -14.021597044673399, -13.929415472463006,
-13.54467184888199, -13.150157822456094, -12.771159090771107,
-12.493152264156379, -12.308728896430694, -12.106231813289924,
-11.92066244475427, -11.742715361702722, -11.58366391994059,
-11.437100539013045, -11.30018706311239, -11.171117144083837,
-11.050005549535854, -10.936496376612922, -10.829837385419523,
-10.72947302038665, -10.61855000659125, -10.5145953471947},
{-12.33291794724937, -14.060930949737667, -13.96827521630621,
-13.582510524793179, -13.186861913680332, -12.806818810495315,
-12.527995758748148, -12.343087128101615, -12.1399413991021,
-11.953850348276319, -11.775406768778339, -11.61596083722543,
-11.46899431454949, -11.331675368943252, -11.202217099285917,
-11.08075509799528, -10.966919836821035, -10.85995619968162,
-10.759308020118624, -10.648075442615664, -10.543819260667078},
{-12.367416439155932, -14.100375439826166, -14.007245640197652,
-13.620456095450209, -13.223669378799968, -12.842579038071563,
-12.562937090493506, -12.377540958841564, -12.173745800741017,
-11.987129799555987, -11.808189997827867, -11.648347789945547,
-11.500976910116151, -11.363250513531966, -11.233402830810519,
-11.111589460721007, -10.99742709932616, -10.89015795616433,
-10.789225224085385, -10.677682580426335, -10.573123411042616},
{-12.402013373808586, -14.139930818317225, -14.046327071511769,
-13.658508859472931, -13.260580509828287, -12.878440050320933,
-12.597976532037137, -12.41209063999122, -12.207645282847807,
-12.020501052611507, -11.841065309388796, -11.680825014569564,
-11.533048542245524, -11.394912716030376, -11.26467455967213,
-11.142508859746158, -11.028018379234709, -10.920442870585248,
-10.819224843202392, -10.707371635071468, -10.602508019772358},
{-12.436709026951576, -14.179597392780124, -14.085519838772598,
-13.696669112832751, -13.297595589188859, -12.91440211769077,
-12.633114348602248, -12.446736416139174, -12.24164010482491,
-12.053964358201483, -11.874032966094092, -11.713392752368236,
-11.565209434658755, -11.426662187586771, -11.296032521757297,
-11.173513501416892, -11.058693889004644, -10.950811155344127,
-10.849307092896197, -10.737142825761111, -10.631973308714805},
{-12.471503676613793, -14.2193754658947, -14.12482427235227,
-13.734937154571526, -13.3347149064939, -12.950465512723895,
-12.66835081615136, -12.481478538305964, -12.275730527180713,
-12.087519962136867, -11.9070932266186, -11.746051238995278,
-11.597459798154887, -11.458499149302952, -11.327476925624069,
-11.204603608115576, -11.089453847613186, -10.98126303643221,
-10.87947218347108, -10.766996360966004, -10.661519489338389},
{-12.506397601260687, -14.259265347514884, -14.164240704194526,
-13.773313279947615, -13.37193875068624, -12.986630507744849,
-12.703686199936783, -12.51631725858897, -12.309916814905591,
-12.121168119832873, -11.940246356796706, -11.77880071249092,
-11.629799858637853, -11.490423819748685, -11.359008013736457,
-11.235779381502653, -11.120298468129477, -11.011798717838246,
-10.909720326249953, -10.796932460565586, -10.691146778146503},
{-12.541391078804736, -14.299267342241365, -14.203769465442747,
-13.81179778664955, -13.40926740244322, -13.022897377319168,
-12.73912077708519, -12.551252824428957, -12.344199226121418,
-12.154909076081822, -11.973492614604766, -11.811641416454222,
-11.662229832611047, -11.52243641539826, -11.39062600795296,
-11.26704105277895, -11.151227961672703, -11.04241842275951,
-10.94005173642654, -10.82695133809466, -10.720855394087266},
{-12.576484389981488, -14.339381761223194, -14.24341088545043,
-13.850390976440394, -13.446701156921335, -13.059266398398904,
-12.774654812790686, -12.58628549115383, -12.378578022238798,
-12.188743091450306, -12.00683225793182, -11.844573585956823,
-11.69474993541371, -11.55453716503689, -11.422331136884168,
-11.29838883021148, -11.182242545270128, -11.073122367088217,
-10.970466623955872, -10.85705320953275, -10.750645544787403},
{-12.611677815380972, -14.379608910196112, -14.283165298606036,
-13.889093146543019, -13.484240299119847, -13.095737838448258,
-12.810288582928479, -12.621415506815538, -12.413053463300457,
-12.222670416755136, -12.040265548537718, -11.877597464917926,
-11.727360386576038, -11.586726278299466, -11.454123621049803,
-11.32982293140958, -11.213342441566056, -11.103910765610635,
-11.000965203507803, -10.887238284834893, -10.780517457285896},
{-12.646971635476802, -14.419949101516977, -14.323033041131566,
-13.927904602634953, -13.521885122303502, -13.132311973982723,
-12.846022361278301, -12.656643122609239, -12.44762581033865,
-12.256691311107716, -12.07379274899722, -11.910713290446438,
-11.760061402397696, -11.619003983243601, -11.486003698169952,
-11.361343568889424, -11.244527858449146, -11.134783839574084,
-11.031547684629913, -10.917506785481237, -10.810471334407339},
{-12.682366133783944, -14.460402645680006, -14.363014444941655,
-13.966825640163734, -13.559635919591528, -13.168989079073071,
-12.881856419931864, -12.691968595026992, -12.48229532915866,
-12.290806027274812, -12.107414117112057, -11.94392131161294,
-11.792853205202846, -11.651370502426289, -11.517971586348722,
-11.392950963490875, -11.275799020804698, -11.165741809469182,
-11.0622142846114, -10.94785891432548, -10.840507397457259},
{-12.717861592944246, -14.50096985467826, -14.403109848499298,
-14.005856568037416, -13.597492975619389, -13.205769429187058,
-12.91779103333829, -12.727392172935652, -12.517062272614567,
-12.325014821690274, -12.141129908413859, -11.97722176645766,
-11.825736009690445, -11.68382606000523, -11.550027523335302,
-11.424645334860543, -11.30715613940265, -11.196784890576964,
-11.092965215590084, -10.978294897213345, -10.870625862211455},
{-12.75345829660364, -14.541651038554846, -14.443319586178404,
-14.044997680786764, -13.63545658858493, -13.242653299617814,
-12.953826469893102, -12.762914113729494, -12.551926907064626,
-12.35931795410579, -12.174940383643843, -12.010614898259519,
-11.85871003268403, -11.716370877955342, -11.582171732006827,
-11.456426895805635, -11.338599434035132, -11.227913303649984,
-11.123800689994823, -11.00881494017085, -10.900826927332673},
{-12.789156531609478, -14.582446513930336, -14.483643994914019,
-14.084249286737759, -13.67352704393852, -13.279640963184647,
-12.989963011350483, -12.798534669651417, -12.5868894951127,
-12.393715683341725, -12.208845807879698, -12.044100955012254,
-11.891775499505457, -11.74900518739014, -11.614404448337154,
-11.488295870105503, -11.3701291262405, -11.259127272118349,
-11.154720922873821, -11.03941926229163, -10.931110825826181},
{-12.824956580850994, -14.623356593365315, -14.524083414376946,
-14.123611694245483, -13.711704642366385, -13.316732692124788,
-13.026200928143226, -12.83425409294432, -12.621950290747918,
-12.428208267694572, -12.24284642652492, -12.077680175076239,
-11.924932618974708, -11.781729206384625, -11.646725892554969,
-11.5202524701308, -11.401745433016913, -11.290427012281725,
-11.18572612371645, -11.070108073152369, -10.961477759119589},
{-12.860858732979978, -14.664381591355777, -14.564638183364877,
-14.163085198175395, -13.749989675940014, -13.35392876737751,
-13.062540491373511, -12.870072640274884, -12.657109552877955,
-12.462795968400314, -12.276942505384795, -12.11135280795861,
-11.958181613503257, -11.814543167245574, -11.679136293329066,
-11.552296916866908, -11.433448571682675, -11.321812748996308,
-11.216816504718736, -11.100881591439247, -10.99192794400733},
{-12.896863275746, -14.705521826646873, -14.605308639496798,
-14.202670115031651, -13.788382437938708, -13.391229467408266,
-13.098981986782746, -12.90599057439249, -12.692367552983342,
-12.497479047742672, -12.31113430383266, -12.145119102933677,
-11.991522709198762, -11.847447298059706, -11.711635890911566,
-11.584429436683422, -11.465238769567804, -11.353284710174194,
-11.247992291639093, -11.131740031560184, -11.02246160179493},
{-12.93297049519606, -14.746777611479047, -14.646095125193824,
-14.2423667426483, -13.826883221699973, -13.42863506093272,
-13.135525678429985, -12.942008146055741, -12.727724544296507,
-12.532257769285934, -12.345422070793575, -12.17897930261097,
-12.024956114590168, -11.880441826273454, -11.74422491027508,
-11.616650245472556, -11.497116234706482, -11.384843106818153,
-11.279253682965646, -11.162683607632061, -11.053078947617905},
{-12.969180683154264, -14.788149266212713, -14.68699798140733,
-14.282175393935177, -13.865492326964159, -13.4661458277551,
-13.172171846526908, -12.978125610010466, -12.76318078787881,
-12.567132393829525, -12.379806067765458, -12.212933655857341,
-12.058482052903855, -11.91352697898401, -11.776903572957963,
-11.64895956456894, -11.529081203712849, -11.416488170303637,
-11.310600903845625, -11.193712535197847, -11.08378020033706},
{-13.005494129567523, -14.829637112852652, -14.728017552057281,
-14.32209637775668, -13.904210051114205, -13.503762042557355,
-13.208920767967356, -13.014343229064252, -12.7987365462468,
-12.602103185578017, -12.414286546118092, -12.246982406300958,
-12.092100742971525, -11.946702990622725, -11.809672126430087,
-11.681357615540037, -11.561133889481425, -11.448220125137595,
-11.342034162080381, -11.224827030382585, -11.114565583033254},
{-13.041911123291356, -14.871241464003106, -14.769154174835421,
-14.362129993867711, -13.943036689510336, -13.541483985551167,
-13.245772710448364, -13.050661262794165, -12.834392077231314,
-12.637170408503152, -12.448863759462256, -12.281125808745855,
-12.125812405953184, -11.979970088024857, -11.842530783556867,
-11.713844616955612, -11.59327452085563, -11.48003918901668,
-11.37355367586133, -11.256027306459146, -11.145435317535885},
{-13.078431958128931, -14.912962644608342, -14.810408197226934,
-14.40227656144998, -13.981972537963884, -13.579311928304378,
-13.282727961108321, -13.087079966266174, -12.870147641777294,
-12.672334331204183, -12.48353796871379, -12.315364110079827,
-12.159617260971572, -12.01332850806648, -11.875479783600895,
-11.746420797950123, -11.62550331602688, -11.511945592268603,
-11.405159659305355, -11.287313585344236, -11.176389634696534},
{-13.11505692526407, -14.954800974344835, -14.851779962627916,
-14.442536385642597, -14.021017896622652, -13.617246158013586,
-13.319786789768841, -13.12359960534377, -12.90600350513705,
-12.707595211890293, -12.518309420906007, -12.349697560013738,
-12.193515525927069, -12.046778476360487, -11.908519356773468,
-11.77908638207009, -11.657820501975948, -11.543939553463133,
-11.436852326209191, -11.318686078826431, -11.20742875841097},
{-13.151786319547682, -14.996756775712129, -14.893269816908287,
-14.482909777550958, -14.060173065809067, -13.65528694211389,
-13.356949472858105, -13.160220437508542, -12.941959921619855,
-12.742953323147958, -12.553178369125817, -12.384126410383033,
-12.227507428004174, -12.080320229259087, -11.941649730521021,
-11.811841585702496, -11.690226301521761, -11.576021301967558,
-11.468631892756093, -11.350145005999366, -11.23855292002554},
{-13.188620434797485, -15.038830372592201, -14.934878104744712,
-14.523397054275847, -14.099438343429938, -13.693434560613241,
-13.39421628540731, -13.19694272550987, -12.978017157380236,
-12.7784089295601, -12.588145069486927, -12.41865091145155,
-12.261593177041505, -12.11395399903995, -11.97487113653915,
-11.844686639582505, -11.72272094109212, -11.608191063132836,
-11.500498575740494, -11.38169058089261, -11.269762351177633},
{-13.225559567901655, -15.081022090045735, -14.976605172108975,
-14.563998521931353, -14.138814035337418, -13.731689300737344,
-13.43158750780276, -13.233766733261291, -13.014175471151248,
-12.81396230313112, -12.623209768964443, -12.453271321428474,
-12.295773004414514, -12.147680028690957, -12.008183805039153,
-11.87762176952674, -11.755304653837811, -11.640449064027052,
-11.532452585961437, -11.413323024549754, -11.301057288364973},
{-13.262604012765223, -15.123332249990199, -15.018451368028764,
-14.604714494766085, -14.178300436353311, -13.770051431609318,
-13.469063413795084, -13.270692722027889, -13.05043512233533,
-12.849613707716344, -12.658372719975887, -12.4879878826614,
-12.330047131777974, -12.18149854161311, -12.04158797301352,
-11.910647194948979, -11.787977661850164, -11.672795529448194,
-11.564494148595259, -11.445042552251834, -11.332437960314564},
{-13.299754068400944, -15.165761181444395, -15.060417041313485,
-14.645545288352878, -14.21789785209694, -13.808521239610855,
-13.506644280831097, -13.307720957091078, -13.086796376504935,
-12.885363409412093, -12.693634171126178, -12.522800855804235,
-12.36441577511141, -12.215409782336792, -12.075083861360326,
-11.943763151939493, -11.820740187278716, -11.70523068093462,
-11.596623475285014, -11.476849381288048, -11.363904594036285},
{-13.337010031478712, -15.208309209163417, -15.102502537803957,
-14.686491216358263, -14.257606578845298, -13.847099000529852,
-13.544330383534543, -13.344851701258449, -13.123259490035707,
-12.921211684326408, -12.728994370787404, -12.55771049586474,
-12.398879165528342, -12.249413981568068, -12.108671706053428,
-11.976969865703722, -11.853592465544352, -11.737754751025932,
-11.628840783523628, -11.508743730402784, -11.395457438571611},
{-13.374372202466475, -15.25097666333022, -15.144708210675162,
-14.727552599375485, -14.297426930541405, -13.885784993763082,
-13.582122003514087, -13.38208522676723, -13.159824728791136,
-12.957158794946736, -12.764453569776379, -12.592717058054404,
-12.43343751973589, -12.283511381334392, -12.142351740098093,
-12.010267559118802, -11.886534723336808, -11.770367958961288,
-11.661146295780782, -11.540725818398641, -11.42709672084311},
{-13.41184088002774, -15.293763871173724, -15.187034405287704,
-14.768729746807367, -14.337359205295797, -13.924579501064727,
-13.620019414054696, -13.419421792583307, -13.19649235237739,
-12.993205014849082, -12.800012014602544, -12.627820792840794,
-12.468091064190958, -12.317702216823818, -12.176124189281836,
-12.043656459223712, -11.919567191216629, -11.803070540947374,
-11.693540223757736, -11.572795857588062, -11.458822668384528},
{-13.449416365852812, -15.336671163095161, -15.229481479647802,
-14.810022977631888, -14.37740370442043, -13.963482804159867,
-13.658022895338945, -13.45686166654923, -13.233262625406496,
-13.029350613302086, -12.835669954569312, -12.663021966262022,
-12.502840028784703, -12.351986732886871, -12.20998929219786,
-12.07713679864537, -11.95269009846379, -11.8358627166308,
-11.726022792019648, -11.604954072856344, -11.490635517053306},
{-13.48709896201035, -15.37969887041254, -15.27204977949441,
-14.851432610637858, -14.41756073810393, -14.002495187189197,
-13.696132719313027, -13.494405119359726, -13.27013580253697,
-13.065595857449807, -12.871427631442202, -12.698320827097632,
-12.537684633862227, -12.38636516421684, -12.243947277602274,
-12.110708806547336, -11.985903674736619, -11.868744711275212,
-11.758594218350481, -11.63720067893155, -11.522535498574143},
{-13.524888969375752, -15.422847323599854, -15.31473965884652,
-14.892958964424906, -14.457830606785137, -14.041616926522693,
-13.734349170699716, -13.53205241530668, -13.307112151407637,
-13.101941021857783, -12.90728529196349, -12.733717638649978,
-12.572625106113264, -12.420837749232305, -12.277998373872833,
-12.144372715323698, -12.019208159996197, -11.90171675386955,
-11.79125472420128, -11.669535894674482, -11.554522838821867},
{-13.562786692389636, -15.466116858209716, -15.35755147135933,
-14.934602361638099, -14.498213622020558, -14.080848305718973,
-13.772672522231005, -13.569803825521376, -13.344191935204435,
-13.13838637698791, -12.943243187270127, -12.769212659302866,
-12.607661672111135, -12.455404734384501, -12.312142818671418,
-12.178128746250877, -12.052603772142902, -11.93477906860062,
-11.824004530732054, -11.701959938829532, -11.586597770510707},
{-13.600792436307529, -15.509507806709735, -15.400485571008176,
-14.976363116729772, -14.538710091175744, -14.120189609879162,
-13.811103055631975, -13.607659617555328, -13.381375416036462,
-13.174932189373067, -12.97930155848735, -12.804806149739306,
-12.642794560495531, -12.4900663587905, -12.346380838454934,
-12.211977139115334, -12.086090758122737, -11.96793188911397,
-11.856843861343805, -11.734473028889624, -11.61876051343279},
{-13.638906505118939, -15.553020505292807, -15.443542311768397,
-15.018241555182613, -14.579320315446239, -14.159641123143956,
-13.849641047912883, -13.645620064984541, -13.418662855197908,
-13.211578736867523, -13.015460646885913, -12.84049836845952,
-12.678024002729217, -12.524822866456816, -12.380712674959796,
-12.245918118715053, -12.119669342617271, -12.001175438228529,
-11.889772934344364, -11.767075384152122, -11.651011302164989},
{-13.677129205985693, -15.596655287939939, -15.486722049157834,
-15.06023799610557, -14.620044611248886, -14.19920312918839,
-13.888286776724271, -13.68368543087854, -13.456054518494057,
-13.248326286004158, -13.051720702671446, -12.876289579289733,
-12.713350219943095, -12.559674502001144, -12.415138549782569,
-12.279951916367281, -12.153339759272058, -12.034509939490817,
-11.92279197910102, -11.799767217802582, -11.683350350154797},
{-13.715460845909547, -15.640412493637996, -15.530025139945792,
-15.102352763628005, -14.660883279750124, -14.238875910436036,
-13.927040524431504, -13.721855994459474, -13.493550669285469,
-13.285175111232093, -13.08808197005419, -12.912180042621912,
-12.748773451690795, -12.59462151239859, -12.449658707220806,
-12.314078777417308, -12.187102254974889, -12.067935625003884,
-11.955901220819214, -11.832548754115123, -11.715777887206059},
{-13.753901732663508, -15.68429245929292, -15.573451937860227,
-15.144586182417697, -14.701836638589157, -14.278659750387305,
-13.965902568015736, -13.760132021910977, -13.531151567352936,
-13.322125478618545, -13.124544686608715, -12.94817001814954,
-12.784293914679438, -12.62966413461254, -12.484273372974712,
-12.348298913624603, -12.220957048790297, -12.101452716393396,
-11.98910087699187, -11.865420200745575, -11.748294131975854},
{-13.792452174588107, -15.72829552438634, -15.617002801620401,
-15.186938573780935, -14.742904993268894, -14.318554938217858,
-14.004873184254393, -13.7985137841315, -13.568857479112921,
-13.359177667298354, -13.16110910254065, -12.984259773016674,
-12.81991184852086, -12.664802618848626, -12.518982778914506,
-12.38261257155682, -12.254904386179987, -12.135061446984764,
-12.022391169302864, -11.898381776642054, -11.780899296485586},
{-13.831112483880133, -15.772422032081522, -15.660678090236615,
-15.229410266852938, -14.784088655171217, -14.35856176292873,
-14.043952662323136, -13.83700155664701, -13.606668677995913,
-13.39633194511407, -13.197775462671416, -13.020449570583878,
-12.855627487850143, -12.700037215399789, -12.553787170065334,
-12.417019982036436, -12.288944503001403, -12.168762041081209,
-12.055772343126591, -11.931433700490743, -11.813593606289942},
{-13.86988297040807, -15.816672319546342, -15.704478161482257,
-15.272001582168741, -14.825387936056359, -14.39868050912628,
-14.083141274284571, -13.875595612218603, -13.644585419970099,
-13.433588585612597, -13.2345440016652, -13.056739671330433,
-12.891441051877337, -12.73536816498381, -12.588686771603534,
-12.45152138028061, -12.323077630571788, -12.202554725285154,
-12.089244602771942, -11.964576185157057, -11.846377267764183},
{-13.908763944869861, -15.861046731690294, -15.748403374120244,
-15.314712851977674, -14.86680314692785, -14.438911460572854,
-14.122439302969724, -13.914296217350056, -13.682607971975813,
-13.470947861147579, -13.27141497444245, -13.093130343477242,
-12.927352788014105, -12.77079571824288, -12.623681821365608,
-12.486117001157254, -12.357304015837144, -12.236439728731057,
-12.122808189073112, -11.997809435182717, -11.879250498110196},
{-13.947755722416332, -15.9055456128699, -15.792454087888473,
-15.35754440157325, -14.908334602427203, -14.479254904057598,
-14.161847029521596, -13.953103648556862, -13.720736601651879,
-13.508410038310103, -13.308388618926983, -13.129621843516361,
-12.963362911948934, -12.806320121773751, -12.658772552473238,
-12.520807068591239, -12.391623887087917, -12.270417277264642,
-12.156463319493923, -12.031133669283008, -11.912213506671833},
{-13.98685861346894, -15.950169306597672, -15.836630662277457,
-15.400496555521386, -14.9499826215324, -14.519711137050763,
-14.201364742417354, -13.992018186254427, -13.75897157905274,
-13.545975398272276, -13.345465183956549, -13.166214444121579,
-12.99947167429491, -12.841941628197674, -12.693959205236752,
-12.555591831100173, -12.426037495664787, -12.304487602843437,
-12.190210223721806, -12.064549094502581, -11.945266491122311},
{-14.026072936496348, -15.994918160344241, -15.880933462816756,
-15.443569653230952, -14.991747507709078, -14.560280442616204,
-14.240992719540372, -14.031040096655488, -13.797313168324763,
-13.583644212922081, -13.382644913624972, -13.202908407576615,
-13.035679299617186, -12.877660486556124, -12.729242012748728,
-12.590471523930319, -12.460545071051456, -12.338650924968533,
-12.224049132870277, -12.098055915703299, -11.978409668372478},
{-14.065399003811763, -16.039792520328774, -15.92536284646485,
-15.486764015367953, -15.03362958386424, -14.600963117496576,
-14.28073124482762, -14.070169657759834, -13.835761638882104,
-13.621416750684148, -13.419928050367162, -13.23970399814425,
-13.071986021386692, -12.913476944639115, -12.76462121217628,
-12.625446378980996, -12.495146854198538, -12.37290747766383,
-12.257980268797837, -12.131654344382696, -12.011643225763692},
{-14.104837134291301, -16.084792734036455, -15.969919179100543,
-15.530079976510024, -15.075629162427504, -14.641759444552008,
-14.320580601895927, -14.109407140989788, -13.874317259149393,
-13.659293286240427, -13.457314845494693, -13.27660147738061,
-13.108392079389887, -12.949391253641807, -12.800097036291845,
-12.660516636329703, -12.52984308989835, -12.407257492624922,
-12.292003860813566, -12.165344584180275, -12.044967369234655},
{-14.144387643304071, -16.129919151760987, -16.01460282005428,
-15.573517870798241, -15.117746561067179, -14.682669715752127,
-14.360541072470369, -14.148752823733957, -13.912980296910973,
-13.697274093225133, -13.494805544120027, -13.3136011150782,
-13.144897704187315, -12.985403663449688, -12.835669728025096,
-12.695682536315871, -12.564634013193427, -12.441701195493806,
-12.326120133249788, -12.199126829364104, -12.078382295614574},
{-14.184050852345536, -16.175172125833342, -16.059414137343992,
-15.617078028590186, -15.1599820999254, -14.723694232670823,
-14.40061294886982, -14.188206981751136, -13.951751027692808,
-13.735359449754469, -13.532400390453404, -13.350703172996873,
-13.18150313734077, -13.02151443209732, -12.871339521545451,
-12.730944316484965, -12.599519875046099, -12.476238817936974,
-12.36032931538648, -12.233001296670409, -12.11188819995732},
{-14.223827078094473, -16.220552005106583, -16.10435349108593,
-15.660760777682299, -15.202336089976598, -14.764833277789876,
-14.440796510403743, -14.22776988815167, -13.990629710024223,
-13.773549624020234, -13.570099639036926, -13.387907911033835,
-13.218208612379385, -13.057723801321117, -12.907106655358803,
-12.7663022132474, -12.634500907646725, -12.510870584577788,
-12.39463163309847, -12.266968174866633, -12.145485267887125},
{-14.263716642337386, -16.266059146248153, -16.14942125113157,
-15.704566463507945, -15.24480885406956, -14.806087152828695,
-14.481092045432888, -14.267441819625674, -14.02961662679445,
-13.811844895681133, -13.607903534808429, -13.425215599447256,
-13.255014364985982, -13.094032031687675, -12.942971370677697,
-12.801756472676061, -12.669577353168279, -12.545596732961712,
-12.429027313919505, -12.301027663779678, -12.179173691867618},
{-14.30371986659884, -16.31169389974093, -16.19461777646211,
-15.748495411447948, -15.287400707456982, -14.847456145798787,
-14.52149984339485, -14.307223051146138, -14.06871204104391,
-13.850245539477328, -13.645812326081796, -13.462626493303105,
-13.29192063777009, -13.130439372151159, -12.97893389937235,
-12.83730733388802, -12.704749456461286, -12.580417484947247,
-12.463516584975878, -12.335179964487907, -12.212953659851337},
{-14.3438370723743, -16.35745662402769, -16.239943440901698,
-15.792547966149868, -15.33011197700398, -14.88894055451965,
-14.562020190001931, -14.347113864525454, -14.107916229200782,
-13.888751826656517, -13.683826268475968, -13.500140864751302,
-13.32892766603618, -13.16694608060061, -13.014994489320088,
-12.872955039638327, -12.74001745856367, -12.61533308113576,
-12.498099674849072, -12.369425269658677, -12.246825368114514},
{-14.384068582687178, -16.403347673869575, -16.28539860523597,
-15.836724457156379, -15.372942980902735, -14.930540673842188,
-14.602653375797672, -14.387114531738916, -14.14722946297843,
-13.927364042028785, -13.721945612458512, -13.53775896973093,
-13.366035694081802, -13.203552402934292, -13.051153376989532,
-12.90869983000448, -12.775381604355061, -12.650343752233312,
-12.532776809617644, -12.403763777663698, -12.280788996518822},
{-14.424414724708186, -16.449367409644765, -16.33098364120815,
-15.881025226932252, -15.415894035686506, -14.972256802400807,
-14.643399690918159, -14.427225328690838, -14.186652012867853,
-13.96608245576499, -13.760170613473747, -13.575481070904061,
-13.40324496125686, -13.240258598758373, -13.087410799693316,
-12.944541949604172, -12.810842131846584, -12.685449724667706,
-12.56754821605864, -12.43819567374885, -12.314844740030821},
{-14.464875820136513, -16.495516188035253, -16.376698913692962,
-15.925450608570827, -15.458965466998052, -15.014089239848545,
-14.684259421715979, -14.467446534952614, -14.226184154831572,
-14.004907343594823, -13.79850152003928, -13.613307426508982,
-13.440555706503801, -13.277064922702266, -13.123767010081792,
-12.980481641599908, -12.846399284811923, -12.720651236653794,
-12.60241412706091, -12.472721157304477, -12.348992770595942},
{-14.505452196710394, -16.541794370263233, -16.422544791246764,
-15.970000945904758, -15.502157595474273, -15.056038276408799,
-14.725232865224825, -14.507778425555443, -14.265826156712137,
-14.043838988465723, -13.836938589520287, -13.651238303660648,
-13.477968174993293, -13.313971621188102, -13.160222236154368,
-13.016519158700248, -12.882053309032926, -12.755948518984951,
-12.637374767713482, -12.507340420997934, -12.383233290252974},
{-14.546144181702402, -16.58820232033031, -16.468521647067973,
-16.014676583261462, -15.545470747252693, -15.098104217555374,
-14.766320308990544, -14.548221279896097, -14.305578298895853,
-14.082877674343763, -13.875482084142277, -13.6892739571922,
-13.515482606977457, -13.350978963630041, -13.196776730415877,
-13.052654730709037, -12.917804443801288, -12.791341813455801,
-12.672430368926143, -12.542053651151946, -12.417566480842652},
{-14.58695210357837, -16.634740398425492, -16.51462984655518,
-16.059477851900738, -15.58890524841263, -15.140287359274225,
-14.807522049290128, -14.588775381678715, -14.345440853503533,
-14.122023671283387, -13.914132255595177, -13.727414651511936,
-13.55309925484471, -13.388087188563077, -13.233430730353575,
-13.08888861889136, -12.953652934142156, -12.82683135138359,
-12.707581160764676, -12.576861042762175, -12.451992540882202},
{-14.627876290716813, -16.6814089709369, -16.560869763154187,
-16.104405102756573, -15.632461416593287, -15.182588005351136,
-14.84883837911184, -14.629441002383828, -14.385414090880658,
-14.161277269391576, -13.95288936237921, -13.765660637931433,
-13.590818355907686, -13.425296561181312, -13.27018448515446,
-13.125221062626224, -12.989599021297181, -12.862417365889996,
-12.742827369685983, -12.61176278773928, -12.486511649563909},
{-14.668917074304773, -16.728208401807933, -16.607241768593667,
-16.14945867174538, -15.676139583985787, -15.225006456137635,
-14.890269594965503, -14.67021842088434, -14.425498291151598,
-14.200638745707693, -13.99175367114367, -13.80401218048064,
-13.628640155307949, -13.462607332621701, -13.30703823568183,
-13.161652311187936, -13.025642946537118, -12.89810010229121,
-12.77816923276987, -12.646759069582913, -12.521124007704202},
{-14.710074785456527, -16.77513905975502, -16.65374623250682,
-16.194638904504245, -15.719940073788166, -15.267543015943374,
-14.93181598893716, -14.711107924726093, -14.465693727892358,
-14.240108386788052, -14.030725439806702, -13.842469535535201,
-13.666564915183699, -13.500019763829187, -13.343992230365984,
-13.198182620835723, -13.061784959194483, -12.93387979074032,
-12.813606979412725, -12.681850095279515, -12.555829806020483},
{-14.751349754660623, -16.82220131154463, -16.70038352854317,
-16.239946151705226, -15.763863216241589, -15.310197978891665,
-14.973477861582069, -14.75210978690302, -14.506000675493851,
-14.279686469293665, -14.06980492643197, -13.88103295781184,
-13.704592864291044, -13.537534107192187, -13.381046711001545,
-13.234812224487541, -13.098025295621483, -12.969756674050586,
-12.849140838923631, -12.717036046640715, -12.590629244106822},
{-14.792742316465592, -16.869395526620792, -16.747154026903445,
-16.28538074833341, -15.807909335504519, -15.352971653919667,
-15.015255503094522, -14.793224286026089, -14.54641940415604,
-14.319373286649352, -14.108992398454575, -13.919702705403324,
-13.74272426115931, -13.57515060986043, -13.418201926135225,
-13.271541383874137, -13.134364201163407, -13.005730989971198,
-12.884771037352039, -12.752317121921806, -12.625522513088072},
{-14.834252805507276, -16.916722078356543, -16.79405810512253,
-16.330943048669724, -15.852078764146427, -15.39586435048841,
-15.057149223459419, -14.834451713191811, -14.58695020081359,
-14.359169125382323, -14.148288127034903, -13.958479034161428,
-13.780959360679844, -13.61286954060779, -13.4554581217526,
-13.308370348095195, -13.170801920670783, -13.041802973864833,
-12.920497823826736, -12.787693519378081, -12.660509815235855},
{-14.875881555723026, -16.96418133660336, -16.841096137519344,
-16.376633398293052, -15.896371828275733, -15.438876368192723,
-15.099159313074779, -14.875792347505921, -14.62759333269787,
-14.399074266810203, -14.187692364881514, -13.997362200694624,
-13.819298408023315, -13.650691149116028, -13.492815552279353,
-13.34529936639592, -13.207338692067424, -13.077972869185032,
-12.956321416859282, -12.823165443522157, -12.69559134868905},
{-14.917628904266167, -17.011773675112636, -16.88826849675388,
-16.422452142520342, -15.940788856503787, -15.48200801020721,
-15.141286074678646, -14.917246462107869, -14.668349079845939,
-14.439089007966686, -14.2272053900233, -14.036352454771986,
-13.857741659041494, -13.688615689490689, -13.530274458491476,
-13.382328693580348, -13.243974762939615, -13.114240919501754,
-12.992242056498071, -12.858733087196015, -12.730767319764709},
{-14.959495188144501, -17.059499469891307, -16.93557555838197,
-16.46839963286766, -15.985330185620114, -15.525259588495828,
-15.183529808506137, -14.958814351994079, -14.709217715339037,
-14.479213630140293, -14.26682746480219, -14.075450055854162,
-13.896289360825904, -13.726643424248323, -13.567835091293091,
-13.41945857796236, -13.280710373277543, -13.15060735467705,
-13.028259968734346, -12.894396663585212, -12.76603792674723},
{-15.001480746475863, -17.107359096538858, -16.983017701699282,
-16.514476216310868, -16.029996144061442, -15.568631407804787,
-15.225890815985622, -15.000496293359902, -14.750199514528504,
-14.519448429637123, -14.306558862241218, -14.114655254525132,
-13.934941774699837, -13.764774599578232, -13.605497705430025,
-13.456689275306417, -13.317545768717537, -13.187072425149381,
-13.064375397807453, -12.930156379734399, -12.801403378078248},
{-15.043585916413576, -17.15535293398716, -17.03059529887105,
-16.560682245559292, -16.07478706506663, -15.612123778031673,
-15.268369406985585, -15.04229257410043, -14.791294757305877,
-14.559793703840114, -14.346399852976901, -14.15396830625832,
-13.973699153633788, -13.803009478171589, -13.643262543046148,
-13.494021040853113, -13.354481195652625, -13.22363636069349,
-13.100588571629487, -12.966012448101537, -12.83686388132628},
{-15.085811039578402, -17.20348135943641, -17.07830873108469,
-16.60701806997531, -16.11970327832387, -15.655737009714358,
-15.310965876851697, -15.084203477599658, -14.832503716053907,
-14.600249739276478, -14.38635070392047, -14.193389464955544,
-14.012561751063913, -13.841348317451775, -13.681129861826776,
-13.531454127485631, -13.39151688615675, -13.260299413203029,
-13.136899726028787, -13.00196508676163, -12.872419642604655},
{-15.128156457547448, -17.25174475359381, -17.126158375060186,
-16.653484043548815, -16.164745119342115, -15.699471404688666,
-15.353680531261489, -15.126229289948242, -14.873826672002906,
-14.640816837840248, -14.426411687483778, -14.232918977621011,
-14.051529829681385, -13.879791366314748, -13.7190999094164,
-13.568988795101177, -13.428653097042115, -13.297061813704204,
-13.173309096921002, -13.038014520076104, -12.908070866658818},
{-15.170622511592228, -17.30014350071724, -17.174144609074574,
-16.700080521724885, -16.209912927472033, -15.743327281525126,
-15.39651367708575, -15.168370297004003, -14.915263895120006,
-14.681495293974876, -14.466583083703881, -14.27255710324971,
-14.090603640477639, -13.918338888615835, -13.757172937534051,
-13.606625296815764, -13.46589005892747, -13.333923809259431,
-13.209816913469695, -13.074160969961667, -12.943817774445051},
{-15.213209546142025, -17.34867798120831, -17.222267812874634,
-16.74680785369128, -16.255207036389038, -15.787304951430997,
-15.439465624192962, -15.210626789368689, -14.956815666664625,
-14.722285412601195, -14.506865160103189, -14.312304092309205,
-14.12978345103329, -13.956991139246384, -13.795349201915087,
-13.644363889558008, -13.503228029352613, -13.370885638374602,
-13.246423421922373, -13.110404678765917, -12.97966056712903},
{-15.255917903690715, -17.39734857925214, -17.270528366381768,
-16.793666395009495, -16.300627775781322, -15.83140472220839,
-15.482536673283903, -15.252999048505444, -14.99848225529422,
-14.763187489821576, -14.547258196165785, -14.352160192705924,
-14.169069514377043, -13.995748369110515, -13.833628948195837,
-13.682204828597605, -13.54066724452423, -13.40794753524824,
-13.283128844253952, -13.146745875506895, -13.01559946659836},
{-15.298747932349215, -17.44615568383597, -17.318926648498746,
-16.840656502521597, -16.346175489830784, -15.87562691126368,
-15.52572713745758, -15.295487368450267, -15.040263947710628,
-14.804201828781515, -14.587762464390835, -14.392125659651356,
-14.208462091191905, -14.034610846603755, -13.872012435953366,
-13.720148373977281, -13.578207950369688, -13.445109749707626,
-13.319933423685143, -13.183184808935039, -13.051634683797602},
{-15.341699975921074, -17.49509967934864, -17.36746304424014,
-16.887778532109223, -16.391850511805387, -15.919971827912377,
-15.569037322857184, -15.338092032936402, -15.082161007390823,
-14.845328738621902, -14.62837823558948, -14.432200742245186,
-14.247961444896646, -14.073578813520726, -13.910499913385138,
-13.758194788097171, -13.615850390051492, -13.482372511760332,
-13.356837401923258, -13.219721723988187, -13.087766434793593},
{-15.384774383855984, -17.544180956974742, -17.416137932275888,
-16.93503284911276, -16.43765318582882, -15.964439790113829,
-15.612467540922808, -15.380813337891595, -15.124173718155362,
-14.886568520159926, -14.669105801789556, -14.472385698201833,
-14.287567838531686, -14.112652538198745, -13.949091641610721,
-13.796344327856787, -13.653594812116353, -13.519736069138162,
-13.39384100137977, -13.256356885336572, -13.123994941735873},
{-15.42797150289698, -17.5933999051922, -17.464951696339995,
-16.982419796666363, -16.483583846653346, -16.009031110617798,
-15.656018098787172, -15.42365156323649, -15.166302355239168,
-14.92792148963781, -14.709945430367952, -14.512680768006248,
-14.32728153426433, -14.151832272240426, -13.987787868652958,
-13.834597250126535, -13.691441460890928, -13.557200668990845,
-13.430944470805116, -13.293090548162581, -13.16032042214647},
{-15.471291684923926, -17.642756915985956, -17.51390471958439,
-17.029939744767034, -16.52964283534675, -16.053746107703773,
-15.699689314846182, -15.466607004636899, -15.20854719055933,
-14.969387946766801, -14.750897405407159, -14.55308620998403,
-14.367102797928965, -14.191118271817686, -14.026588851644192,
-13.872953819372924, -13.729390584892826, -13.594766536232783,
-13.468148035404738, -13.329922978271497, -13.196743108826922},
{-15.514735278105945, -17.69225238407671, -17.562997385772178,
-17.077593047899427, -16.575830492947716, -16.098585101310164,
-15.743481494340813, -15.509679954237072, -15.250908500718651,
-15.010968209302519, -14.791962003568187, -14.593602272419957,
-14.407031893235398, -14.230510800494812, -14.065494850219693,
-13.911414291244, -13.767442427837523, -13.632433928520186,
-13.505451940145576, -13.366854454769054, -13.233263210364385},
{-15.558302635836299, -17.74188669952855, -17.612230078142602,
-17.12538007067633, -16.622147158777807, -16.143548400548752,
-15.787394950486487, -15.552870702231303, -15.293386559962528,
-15.052662595495349, -14.833139507012675, -14.634229209070327,
-14.447069089510478, -14.270010110922158, -14.104506115283584,
-13.949978934746468, -13.80559723690385, -13.67020307976054,
-13.542856424086494, -13.40388525245362, -13.269880971580278},
{-15.6019941100094, -17.791660262839287, -17.661603183834814,
-17.17330117552774, -16.66859317664057, -16.188636329665314,
-15.831429995538201, -15.596179533575196, -15.335981641721446,
-15.094471414369764, -14.87443019656348, -14.674967266415479,
-14.487214646156644, -14.309616464190185, -14.143622907344252,
-13.988647997757653, -13.843855263199657, -13.708074232999934,
-13.580361715808976, -13.441015651158523, -13.306596609414555},
{-15.64581005430955, -17.8415734689479, -17.71111708911485,
-17.221356720518088, -16.715168894996168, -16.233849208569154,
-15.875586950947763, -15.639606749406084, -15.37869402335491,
-15.136394991219277, -14.91583435825305, -14.715816701587755,
-14.527468837826746, -14.349330118653597, -14.182845486444421,
-14.02742175696767, -13.882216759258881, -13.746047641674522,
-13.617968062811997, -13.478245940292254, -13.343410369590856},
{-15.689750824021758, -17.89162671788654, -17.76077217812417,
-17.26954707110417, -16.76187464784016, -16.279187354579335,
-15.919866125448607, -15.683152635407168, -15.421523974975571,
-15.178433640685398, -14.957352269964758, -14.756777754810173,
-14.5678319313447, -14.389151328650769, -14.222174103750149,
-14.066300462320214, -13.920681963150855, -13.784123533638194,
-13.655675701360451, -13.51557640871033, -13.380322487239027},
{-15.733816772932187, -17.94182040762098, -17.81056883992278,
-17.31787259216071, -16.8087107858737, -16.324651089205872,
-15.964267832314363, -15.726817488321103, -15.464471773535479,
-15.22058768235729, -14.998984219681006, -14.79785068507772,
-14.608304192021023, -14.429080356960185, -14.261609029228566,
-14.105284378980286, -13.959251134598162, -13.822302164277062,
-13.693484874878777, -13.553007345151855, -13.417333202960435},
{-15.778008262335788, -17.992154943116475, -17.860507462144597,
-17.36633365022135, -16.855677653336897, -16.370240739604924,
-16.008792396256467, -15.770601600932423, -15.507537696626969,
-15.262857450230513, -15.040730492357397, -14.839035748154856,
-14.648885907314252, -14.469117462693248, -14.301150518789655,
-14.144373778341105, -13.997924532159232, -13.860583772824612,
-13.73139582676231, -13.590539052063832, -13.454442760325037},
{-15.822325646673562, -18.04263072446338, -17.910588431957876,
-17.414930608996656, -16.902775596216088, -16.41595661675092,
-16.053440123214386, -15.81450525636319, -15.550722006883007,
-15.305243260867428, -15.082591371494345, -14.880333183071343,
-14.689577326440485, -14.509262909297831, -14.340798831748543,
-14.183568907435983, -14.0367023946892, -13.898968607827555,
-13.769408790103626, -13.628171816293616, -13.491651412943611},
{-15.866769285566988, -18.093248156219488, -17.96081213944126,
-17.46366383181885, -16.950004960526712, -16.461799052223796,
-16.098211331263883, -15.858528764656512, -15.594024980819086,
-15.347745445120381, -15.124567143502645, -14.92174325036467,
-14.730378731386736, -14.549516945990035, -14.380554229195695,
-14.222870035038795, -14.075584977166727, -13.937456913728965,
-13.807524013594957, -13.665905934700277, -13.528959406889044},
{-15.911339539830806, -18.14400764614402, -18.01117897676886,
-17.5125336938072, -16.997366096882615, -16.507768371899147,
-16.14310634692083, -15.902672412688844, -15.63744689815212,
-15.390364330785815, -15.166658102476504, -14.9632661989599,
-14.771290402975865, -14.589879844221286, -14.420416974666296,
-14.262277423054911, -14.114572540158406, -13.976048934739083,
-13.84574174421141, -13.703741706180153, -13.566367003484629},
{-15.956036771080107, -18.194909600366373, -18.061689331254456,
-17.56154055846855, -17.044859348447062, -16.55386489428929,
-16.188125475047855, -15.946936489228392, -15.680988025327679,
-15.433100251189899, -15.208864526124671, -15.004902282205876,
-14.81231260576169, -14.630351861240342, -14.460387342580361,
-14.301791335397866, -14.153665325400652, -14.014744917250937,
-13.884062223194633, -13.741679422179004, -13.603874462743988},
{-16.00086134095909, -18.245954427984543, -18.112343597371364,
-17.610684798302827, -17.092485066212248, -16.60008894733619,
-16.233269041607855, -15.991321297449758, -15.724648642877582,
-15.475953535613371, -15.251186715671793, -15.046651751938043,
-14.853445625281893, -14.670933250308735, -14.500465578312287,
-14.341412037145346, -14.192863607197069, -14.053545115602901,
-13.922485702263657, -13.779719371115789, -13.641482049482875},
{-16.04581361405144, -18.297142542141955, -18.16314216700266,
-17.65996678202646, -17.140243605099386, -16.646440858545247,
-16.278537362028146, -16.035827129293466, -15.76842901139753,
-15.518924517964479, -15.293624955229461, -15.088514858856797,
-14.894689724344062, -14.711624286981532, -14.540651963790879,
-14.381139780802187, -14.232167621492408, -14.092449770629173,
-13.961012425512308, -13.817861847783206, -13.679190030612517},
{-16.09089395236515, -18.34847434797848, -18.21408542917925,
-17.709386877104407, -17.188135309901554, -16.692920952104032,
-16.323930753249442, -16.080454280192498, -15.812329408712685,
-15.562013534101425, -15.336179535166593, -15.130491860647453,
-14.9360451909306, -14.752425221551675, -14.580946755042532,
-14.420974838110851, -14.27157763481955, -14.131459124881076,
-13.999642647599103, -13.856107136292849, -13.716998673189664},
{-16.136102722695796, -18.39995026390534, -18.265173780702753,
-17.758945461042458, -17.236160530912457, -16.73952955804998,
-16.369449535530293, -16.12520304613281, -15.856350106827449,
-15.605220923724119, -15.378850750421407, -15.172583006875357,
-14.977512298268266, -14.793336324888514, -14.621350221335888,
-14.460917466756655, -14.311093901313143, -14.170573430688819,
-14.038376608717954, -13.894455525529338, -13.754908255854389},
{-16.181440292304615, -18.451570700650336, -18.316407614183845,
-17.808642902906286, -17.284319621772738, -16.786267004412366,
-16.41509402412339, -16.17007372752414, -15.900491375621641,
-15.64854701978038, -15.421638891246403, -15.214788553596009,
-15.019091327267233, -14.834357854822883, -14.661862633394776,
-14.500967927131569, -14.350716669112444, -14.209792940615444,
-14.077214569202624, -13.932907294714823, -13.79291905037826},
{-16.226907029020367, -18.50333607761422, -18.36778732656967,
-17.858479578077095, -17.332612935773795, -16.833133618172724,
-16.46086454059696, -16.21506661683088, -15.94475348960259,
-15.691992163250688, -15.464544257032685, -15.257108754391083,
-15.060782558401115, -14.875490074948175, -14.702484255918534,
-14.541126487805741, -14.390446207631612, -14.249117894098163,
-14.116156786127249, -13.971462723246077, -13.831031338952016},
{-16.272503300308017, -18.555246810545214, -18.419313311605947,
-17.908455860015238, -17.381040825595846, -16.88012973300647,
-16.50676139976713, -16.260182017926127, -15.989136716874782,
-15.735556694271509, -15.507567139342427, -15.299543873639777,
-15.102586267195875, -14.916733252437552, -14.743215361988405,
-14.581393407308497, -14.430282762012212, -14.288548545300728,
-14.155203503993107, -14.010122091334779, -13.86924540961627},
{-16.31822947738692, -18.60730331898958, -18.470985968684545,
-17.958572125964565, -17.42960364726605, -16.92725567679736,
-16.55278492407524, -16.305420224292902, -16.033641330199316,
-15.779240956704598, -15.550707830494503, -15.342094153253129,
-15.144502737239236, -14.958087652747054, -14.784056223317748,
-14.621768949349644, -14.470226596866269, -14.328085145389196,
-14.19435498828534, -14.048885668133153, -13.907561545696808},
{-16.364085930865258, -18.659506022784626, -18.52280569137656,
-18.008828746387735, -17.478301752416883, -16.974511782405898,
-16.59893543252838, -16.350781538145384, -16.07826759899035,
-15.82304528763052, -15.593966637097765, -15.384759855543962,
-15.186532257590443, -14.999553535686573, -14.825007100735093,
-14.662253373797284, -14.510277963330736, -14.367727931879926,
-14.233611482894048, -14.0877537294582, -13.945980024000164},
{-16.41007303200604, -18.71185534421238, -18.57477287965594,
-18.05922610621201, -17.527135499898577, -17.021898386301473,
-16.645213238458382, -16.396266261435812, -16.12301579877385,
-15.866970033908729, -15.637343849375611, -15.427541243989253,
-15.228675099118846, -15.041131177044008, -14.866068279719912,
-14.702846939384472, -14.550437114783563, -14.407477167143952,
-14.27297325906693, -14.12672653872869, -13.98450114170555},
{-16.456191156365094, -18.764351705482113, -18.62688793311827,
-18.109764576045563, -17.576105238782475, -17.069415812235093,
-16.691618661337998, -16.441874686308438, -16.167886193783488,
-15.911015539022628, -15.680839768378064, -15.470438572141575,
-15.270931547507644, -15.082820829818957, -14.907240023399936,
-14.743549920909572, -14.590704314003233, -14.44733309163712,
-14.312440573005006, -14.165804362070048, -14.023125185573008},
{-16.502440675758407, -18.816995532353758, -18.6791512510099,
-18.160444542212645, -17.62521133883274, -17.117064403835684,
-16.73815202564583, -16.487607126386138, -16.212879060098203,
-15.95518214214826, -15.724454696493922, -15.513452097540721,
-15.313301890710136, -15.12462277719169, -14.948522612568922,
-14.78436256898567, -14.631079813552788, -14.487295956671005,
-14.352013674739283, -14.204987476987299, -14.061852453945903},
{-16.548821967066033, -18.869787249917863, -18.731563232431654,
-18.21126637540874, -17.674454149062512, -17.16484448753181,
-16.78481364430627, -16.53346387282363, -16.25799466666649,
-15.999470196664333, -15.768188923888374, -15.556582080520457,
-15.355786410073051, -15.166537275916198, -14.989916316379094,
-14.82528515564627, -14.671563868701924, -14.527366017689928,
-14.39169283665251, -14.244276131765218, -14.100683232303709},
{-16.59533540670236, -18.922727287514135, -18.784124282188714,
-18.262230461783474, -17.72383402689593, -17.21275640348904,
-16.83160383978975, -16.579445234063314, -16.303233284445014,
-16.04388004145585, -15.812042768782703, -15.59982878190931,
-15.398385395179503, -15.208564595057396, -15.031421405845322,
-14.866317931591766, -14.712156742287334, -14.567543515207944,
-14.431478314392734, -14.283670595876174, -14.139617820095737},
{-16.641981372929877, -18.97581607371103, -18.836834798072232,
-18.31333718120004, -17.7733513348212, -17.260800492571434,
-16.878522929066094, -16.62555151374545, -16.348595184099395,
-16.08841202277108, -15.856016518722754, -15.643192458577687,
-15.441099126037443, -15.250705010199454, -15.073038172762608,
-14.907461170863826, -14.752858686406398, -14.607828709529713,
-14.47137036654749, -14.323171124677174, -14.178656507981941},
{-16.688760244243895, -19.029054035650915, -18.88969518331578,
-18.364586911571678, -17.82300642694463, -17.308977077220334,
-16.92557122753351, -16.67178301504464, -16.39408063419978,
-16.133066485403106, -15.900110487244092, -15.6866733757779,
-15.483927892579231, -15.292958787904354, -15.114766878570663,
-14.9487151367357, -14.7936699577549, -14.64822184323566,
-14.511369261483196, -14.362777977919905, -14.217799584963359},
{-16.735672399343457, -19.082441607912187, -18.942705842287978,
-18.41598004315165, -17.872799669683445, -17.35728650915553,
-16.97274905568338, -16.71814004110638, -16.439689910708694,
-16.177843778539682, -15.94432497274829, -15.730271795619046,
-15.526871967012994, -15.335326205153251, -15.156607803306542,
-14.990080081479391, -14.834590812970418, -14.688723173370818,
-14.551475256099366, -14.402491418441059, -14.257047354039969},
{-16.78271822039096, -19.135979225917254, -18.99586717991042,
-18.46751695452258, -17.922731428057887, -17.4057291202771,
-17.020056738256244, -16.764622905146098, -16.485423281410476,
-16.222744246275397, -15.98866028644261, -15.773987981374376,
-15.569931654725224, -15.37780752661638, -15.198561235389207,
-15.031556282629026, -14.875621518091066, -14.72933296096744,
-14.59168861884973, -14.442311700695427, -14.296400098624872},
{-16.829898089941707, -19.18966732005356, -19.049179601774085,
-18.51919803066994, -17.972802054689964, -17.454305251478218,
-17.06749458744889, -16.811231907835463, -16.531281015486456,
-16.267768238583812, -16.033116725826403, -15.817822186363628,
-15.613107230630703, -15.420403026073473, -15.240627439256059,
-15.073143995687133, -14.916762319509871, -14.770051438681548,
-14.632009608234512, -14.482239083736204, -14.335858112637652},
{-16.877212391264038, -19.24350632846472, -19.102643513469957,
-18.571023656317266, -18.02301191506558, -17.503015241003595,
-17.115062924451195, -16.85796735645272, -16.577263389888685,
-16.312916095426772, -16.077694608597085, -15.86177468317328,
-15.6563989892893, -15.463112979545258, -15.282806712610181,
-15.114843484712765, -14.958013480878435, -14.810878881660756,
-14.672438489826163, -14.522273824783042, -14.37542167972424},
{-16.924661508965073, -19.297496689396212, -19.15625932023977,
-18.622994218952954, -18.073361373215448, -17.55185943574179,
-17.162762071326142, -16.90482956857886, -16.623370675340993,
-16.358188172074733, -16.12239424136351, -15.905845737754134,
-15.69980721961474, -15.505937658279436, -15.32509932454559,
-15.156655031518312, -14.999375271348981, -14.851815533300396,
-14.712975532165729, -14.56241617820342, -14.415091091097565},
{-16.972245827462757, -19.351638841428212, -19.21002743212739,
-18.675110108277295, -18.12385079418891, -17.600838168727932,
-17.21059234367567, -16.95181884523481, -16.669603142188862,
-16.40358480051509, -16.167215926223435, -15.950035608693724,
-15.7433321941935, -15.548877341672778, -15.367505557223922,
-15.198578879208071, -15.040847936674254, -14.892861658358015,
-14.753620991774369, -14.602666408551158, -14.454866628540913},
{-17.019965732833953, -19.405933221496525, -19.26394825358875,
-18.727371703454992, -18.174480538873468, -17.649951784231234,
-17.258554063009797, -16.998935498151695, -16.715961060486734,
-16.4491063413152, -16.212159979972057, -15.994344559294404,
-15.786974212765926, -15.591932292591082, -15.410025697085075,
-15.240615307237022, -15.08243174283416, -14.9340175097459,
-14.79437513454468, -14.64302475459408, -14.494748572265962},
{-17.06782161774754, -19.460380277683726, -19.31802219900419,
-18.779779399977997, -18.225250979565317, -17.699200630304404,
-17.306647554243682, -17.04617984345532, -16.762444706750102,
-16.49475313772564, -16.257226717367303, -16.038772863626946,
-15.830733567214338, -15.635102804255439, -15.45266002000426,
-15.282764579751529, -15.124126949522179, -14.975283344043419,
-14.835238227678929, -14.683491491770837, -14.534737198555376},
{-17.115813865879318, -19.514980449690484, -19.37224967626389,
-18.83233358472353, -18.27616247528931, -17.748585052409908,
-17.35487313469639, -17.093552191159688, -16.809054356184788,
-16.5405255263031, -16.302416439633816, -16.08332078580861,
-15.874610534752719, -15.678389137901831, -15.495408823073376,
-15.325026962265838, -15.165933818352642, -15.016659428045386,
-14.876210533315316, -14.724066866736393, -14.574832778103882},
{-17.163942870451137, -19.56973418148118, -19.426631095062476,
-18.88503464779933, -18.32721539362683, -17.79810538009042,
-17.403231122647412, -17.141052852297435, -16.855790281755617,
-16.58642386063002, -16.34772947570309, -16.127988588035805,
-15.918605410843156, -15.721791575429961, -15.538272376346868,
-15.367402731644688, -15.20785260933917, -15.058146020659478,
-14.917292313708458, -14.764751126203919, -14.615035593975335},
{-17.212209021439776, -19.624641919508576, -19.481166868499713,
-18.937882982369047, -18.378410107950913, -17.84776197897736,
-17.45172184833791, -17.18868214727263, -16.902652759250486,
-16.632448485674104, -16.39316612755647, -16.172776547871763,
-15.962718484719517, -15.765310404327465, -15.581250971881673,
-15.409892156225396, -15.249883589247474, -15.099743389815558,
-14.95848383900011, -14.80554453530931, -14.655345908686286},
{-17.260612712590955, -19.679704112597392, -19.535857409908203,
-18.990878975659143, -18.429746980546042, -17.89755518140737,
-17.50034562658402, -17.23644038135535, -16.949642062012572,
-16.67859973956365, -16.43872671254212, -16.21768492515548,
-16.006950039125513, -15.8089458841132, -15.624344895390095,
-15.45249550009612, -15.292027013376355, -15.141451787145343,
-14.99978537420975, -14.846447338204598, -14.69576397916535},
{-17.309154336719075, -19.73492121003801, -19.59070313043776,
-19.044023022870533, -18.481226380128646, -17.947485335636884,
-17.54910278765601, -17.284327875473537, -16.996758461988065,
-16.72487797748181, -16.48441155254841, -16.262713993462967,
-16.05130037086201, -15.85269830992911, -15.667554425541312,
-15.4952130355814, -15.334283148229588, -15.183271489397157,
-15.041197169106454, -14.887459777819458, -14.73629007281852},
{-17.357834288282902, -19.790293659971212, -19.645704447902972,
-19.097315517399693, -18.532848678849405, -17.997552793414798,
-17.59799365067738, -17.332344942580676, -17.044002243259456,
-16.771283531037625, -16.530220959335566, -16.307864024915034,
-16.095769760664552, -15.896567947987933, -15.710879856836982,
-15.538045032852096, -15.37665225454839, -15.225202761066612,
-15.082719505211571, -14.92858211530256, -14.776924447069177},
{-17.406652966456022, -19.845821916504065, -19.700861773628276,
-19.15075685008196, -18.584614240331575, -18.047757899708813,
-17.647018541785656, -17.380491906340467, -17.091373678063974,
-16.817816749418853, -16.576155251153978, -16.353135286743054,
-16.140358502947493, -15.940555081062485, -15.75432146777166,
-15.580991770111723, -15.419134602503618, -15.267245872499188,
-15.124352633632952, -14.969814571959432, -14.817667351773707},
{-17.455610764576704, -19.901506429741858, -19.75617552609765,
-19.204347420629347, -18.636523443943588, -18.098101009847596,
-17.69617778583779, -17.42876907659229, -17.138873049785616,
-16.864477974100737, -16.62221474936814, -16.398528061428806,
-16.18506688447087, -15.984659994050162, -15.79787955363281,
-15.624053528241348, -15.461730442126282, -15.309401092701592,
-15.16609682541457, -15.011157415137859, -14.858519044326385},
{-17.50470808224054, -19.95734765805537, -19.811646122601815,
-19.25808762406814, -18.68857665878022, -18.148582466004882,
-17.74547171461745, -17.477176777931163, -17.186500638490543,
-16.911267554096412, -16.668399771442637, -16.444042615796207,
-16.229895196622238, -16.028882969956612, -15.841554398095468,
-15.667230567429215, -15.504440053773578, -15.351668696734123,
-15.207952348893741, -15.052610873623053, -14.89947977400152},
{-17.553945319581544, -20.013346052903216, -19.867273979034508,
-19.31197785108816, -18.74077425757423, -18.199202620919095,
-17.794900649721967, -17.525715326075442, -17.23425672049052,
-16.958185820723884, -16.714710641244892, -16.489679221383994,
-16.274843728460837, -16.073224282998126, -15.885346280265367,
-15.710523164045298, -15.547263690124964, -15.394048947171541,
-15.249919456313364, -15.094175177189754, -14.940549772465602},
{-17.60332287744677, -20.069502073456533, -19.92305951565504,
-19.36601850646548, -18.793116608110722, -18.249961833207635,
-17.844464923487976, -17.57438504396123, -17.282141576200956,
-17.005233117670286, -16.761147672048537, -16.53543816364254,
-16.319912765844492, -16.117684222845128, -15.929255494469544,
-15.75393159763189, -15.590201614162652, -15.436542129289592,
-15.291998416185379, -15.135850564809516, -14.981729286868358},
{-17.652841155446367, -20.125816180021502, -19.979003148851916,
-19.42020998056978, -18.845604084286606, -18.300860442774137,
-17.894164859812008, -17.623186250741128, -17.330155492702033,
-17.052409788710065, -16.807711191504495, -16.581319717224687,
-16.36510259786155, -16.162263064470608, -15.973282328341156,
-15.7974561440642, -15.633254100364866, -15.479148510319646,
-15.334189495100873, -15.177637258166214, -15.023018566367682},
{-17.70250055989891, -20.182288831972983, -20.035105304355966,
-19.474552682659123, -18.898237067187438, -18.351898815337336,
-17.94400080034393, -17.67211927298922, -17.378298750612885,
-17.099716165481368, -16.854401516058715, -16.627324153116206,
-16.41041351761669, -16.20696109891287, -16.01742706503137,
-15.841097075433936, -15.6764214108116, -15.521868367563002,
-15.376492951792898, -15.219535500829807, -15.06441783873015},
{-17.752301493674167, -20.23892048903508, -20.091366399108665,
-19.529047000512946, -18.951015928876586, -18.40307729251799,
-17.993973067437764, -17.721184428664856, -17.4265716385853,
-17.14715259236982, -16.90121896797791, -16.673451764218044,
-16.455845811986364, -16.25177860810072, -16.06168999779038,
-15.884854670701316, -15.719703797949478, -15.564701981609687,
-15.418909053289099, -15.26154549754574, -15.105927347554825},
{-17.80224436224671, -20.295711615210166, -20.147786859452026,
-19.583693343156483, -19.003941043367377, -18.454396237269975,
-18.04408199962927, -17.77038204247947, -17.474974435579497,
-17.194719399121823, -16.94816387319588, -16.71970282107941,
-16.50139977253275, -16.296715874952497, -16.10607140394859,
-15.928729194914922, -15.76310154152452, -15.607649620622396,
-15.461438059370266, -15.303667480417062, -15.147547318396391},
{-17.85232957234257, -20.352662674093153, -20.20436710352078,
-19.6384921069548, -19.05701278327615, -18.505856005096575,
-18.09432793324231, -17.81971244030865, -17.523507440229878,
-17.24241692639771, -16.995236547023524, -16.766077611624496,
-16.547075689566555, -16.341773195104906, -16.1505715844105,
-15.972720939142164, -15.806614901666762, -15.650711572758155,
-15.504080231126864, -15.34590165806003, -15.18927798079676},
{-17.90255753234669, -20.409774131752783, -20.261107556463685,
-19.693443694151938, -19.110231529921293, -18.557456942711724,
-18.14471119910013, -17.869175953936065, -17.57217092748033,
-17.290245505573694, -17.042437313415576, -16.812576413038187,
-16.592873849527678, -16.386950842133956, -16.195190811908105,
-16.016830168518936, -15.850244140194263, -15.693888105277438,
-15.54683583448059, -15.388248246745206, -15.231119569565635},
{-17.952928649174282, -20.467046454985393, -20.31800864386605,
-19.748548512521666, -19.163597659266088, -18.60919941854081,
-18.195232138590654, -17.918772903067293, -17.6209651955578,
-17.33820547364303, -17.089766493212664, -16.859199516678927,
-16.638794537924696, -16.432249118515756, -16.239929380913964,
-16.06105716075399, -15.893989527481608, -15.737179508520057,
-15.589705133839743, -15.430707454273943, -15.273072316369507},
{-18.003443336550845, -20.524480112595484, -20.375070792622864,
-19.803806958225323, -19.217111557198223, -18.661083783576032,
-18.245891094236868, -17.968503622338176, -17.669890540157212,
-17.386297156917863, -17.13722441374557, -16.905947209568694,
-16.684838054556167, -16.477668306150008, -16.28478757836274,
-16.105402194312774, -15.937851330527337, -15.780586060864152,
-15.632688392011914, -15.473279491212452, -15.315136441378854},
{-18.054102003370645, -20.582075574813643, -20.43229442971642,
-19.859219441539608, -19.270773589320015, -18.713110396289267,
-18.296688402595464, -18.01836843712954, -17.71894724262529,
-17.434520893235458, -17.184811385552166, -16.952819769794587,
-16.731004681583727, -16.523208692204207, -16.32976568758022,
-16.14986554297502, -15.981829807016766, -15.824108023691224,
-15.675785859581083, -15.515964563179296, -15.357312170584919},
{-18.104905062369653, -20.639833308348898, -20.489679977676133,
-19.91478636377724, -19.32458414498251, -18.76527961838292,
-18.347624408634147, -18.068367679428775, -17.768135604070267,
-17.482876997906715, -17.232527731976006, -16.99981749188737,
-16.777294713567244, -16.568870573159074, -16.374864004261326,
-16.1944474724296, -16.0259252388787, -15.867745703319088,
-15.71899781387765, -15.55876287072897, -15.399599731928902},
{-18.155852929732646, -20.697753790562274, -20.54722786997445,
-19.970508135447744, -19.378543602098944, -18.817591808154248,
-18.398699461395154, -18.118501690245466, -17.817455927230185,
-17.531365817645565, -17.28037377964938, -17.046940671047196,
-16.823708444513613, -16.61465424322523, -16.420082810509484,
-16.239148276596097, -16.07013789084158, -15.91149936261354,
-15.762324513751082, -15.60167461266974, -15.441999356640736},
{-18.206946017220616, -20.7558374935179, -20.604938532807864,
-20.026385159726487, -19.432652340066852, -18.870047325937776,
-18.449913903459674, -18.168770786607638, -17.86690849720617,
-17.57998766019591, -17.328349840041483, -17.094189588271547,
-16.870246153441258, -16.660559985088184, -16.465422384935664,
-16.283968228264712, -16.114468028506963, -15.955369292525575,
-15.805766221572412, -15.644699993223185, -15.484511252812808},
{-18.25818474314292, -20.81408489079331, -20.66281239798991,
-20.082417841418646, -19.486910743027693, -18.922646530234488,
-18.50126808290952, -18.219175318750786, -17.91649362182943,
-17.628742860630155, -17.376456235913793, -17.141564539982937,
-16.91690813587047, -16.706588100612862, -16.510883021255722,
-16.328907588671427, -16.15891591773834, -15.999355756357545,
-15.84932318990468, -15.687839198450092, -15.527135648822878},
{-18.309569524906692, -20.87249646021519, -20.720849895384163,
-20.13860659499187, -19.5413191934349, -18.97538978990633,
-18.552762361068744, -18.26971561429673, -17.966211599792587,
-17.677631743135862, -17.424693283857778, -17.189065818180097,
-16.96369468930061, -16.75273888860829, -16.556465002620826,
-16.373966650658986, -16.2034818410757, -16.043459054693813,
-15.892995693779085, -15.731092442263616, -15.56987277159351},
{-18.36110078112688, -20.931072679231875, -20.779051457357127,
-20.194951829267666, -19.595878071442712, -19.028277469507884,
-18.604397082177456, -18.320392012421507, -18.01606273636571,
-17.726654621743364, -17.473061292548664, -17.23669371739379,
-17.010606098920107, -16.799012641480658, -16.602168629149674,
-16.41914567159256, -16.248166062141536, -16.087679457617924,
-15.936783992423443, -15.774459907232085, -15.612722837016918},
{-18.41277893142251, -20.989814026281238, -20.837417515402194,
-20.251453949545976, -19.650587765296223, -19.081309914879967,
-18.656172606133623, -18.371204850875074, -18.066047336324118,
-17.775811821426032, -17.521560592664173, -17.284448537160642,
-17.05764266726328, -16.845409645466134, -16.64799416443566,
-16.464444957702653, -16.29296886661905, -16.132017245108727,
-15.980688349285629, -15.817941783665447, -15.65568607460591},
{-18.464604398337542, -21.048720982274972, -20.89594850319554,
-20.308113369479543, -19.705448653694475, -19.13448750815587,
-18.708089289313648, -18.42215446429327, -18.116165696730604,
-17.825103659764864, -17.57019148377003, -17.3323305681115,
-17.104804654663894, -16.891930205281824, -16.693941908568377,
-16.509864761930658, -16.337890510621946, -16.176472696039127,
-16.024709016579436, -15.861538278084481, -15.69876269789529},
{-18.516577602000325, -21.107794028619537, -20.954644858604297,
-20.364930500014452, -19.760461128607858, -19.187810610921588,
-18.760147496999707, -18.473241206578678, -18.16641813790193,
-17.87453045687289, -17.618954294070136, -17.380340116855223,
-17.152092389005702, -16.93857462858432, -16.74001215311,
-16.555405368912034, -16.382931286090752, -16.221046100341482,
-16.06884626977262, -15.905249582225224, -15.741952942713397},
{-18.568698968971148, -21.16703365041758, -21.013507012976333,
-20.421905756287742, -19.815625575836748, -19.241279584297445,
-18.812347597646294, -18.524465407215757, -18.21680496877525,
-17.924092532572104, -17.667849330056924, -17.428477470879443,
-17.199506147269858, -16.985343209526036, -16.786205178243108,
-16.60106706302031, -16.428091471723747, -16.265737730864203,
-16.113100372604094, -15.949075895710848, -15.785257035779068},
{-18.620968922259635, -21.2264403271256, -21.072535408398835,
-20.47903955291258, -19.87094237713609, -19.294894799910253,
-18.86468995246105, -18.575827416585525, -18.267326497938484,
-17.973790191987064, -17.716876900900388, -17.47674294488388,
-17.247046223463258, -17.03223625049577, -16.832521275879117,
-16.646850118529983, -16.473371339263394, -16.310547872737516,
-16.157471590820933, -15.9930174179608, -15.828675183351152},
{-18.673387888629804, -21.286014548066305, -21.131730473629432,
-20.53633229646948, -19.926411924214335, -19.34865662199445,
-18.917174928967142, -18.62732757383492, -18.31798304230324,
-18.02362375552184, -17.766037322988268, -17.52513683156576,
-17.2947129161912, -17.0792540483817, -16.878960726142395,
-16.6927548131207, -16.518771180475596, -16.35547679910087,
-16.20196017512353, -16.037074326595757, -15.872207634936785},
{-18.72595629436546, -21.345756799681112, -21.19109265273437,
-20.59378441082663, -19.982034604850924, -19.40256542232237,
-18.96980290254578, -18.678966224222677, -18.368774914299138,
-18.073593532230007, -17.815330904559232, -17.57365943293553,
-17.342506512475666, -17.126396906911395, -16.92552382100257,
-16.73878143238835, -16.564291266346117, -16.400524794386,
-16.246566404850455, -16.081246849062154, -15.91585461347131},
{-18.778674570276053, -21.405667569488287, -21.250622381980065,
-20.65139630905469, -20.037810808076756, -19.45662156806793,
-19.02257425271091, -18.730743717576843, -18.41970243238029,
-18.123699844174553, -17.864757954957895, -17.622311058657942,
-17.390427312639076, -17.173665133159375, -16.972210856096353,
-16.784930255264044, -16.60993188933935, -16.445692150620744,
-16.29129054333316, -16.125535166356713, -15.95961636249558},
{-18.83154314447893, -21.465747347130673, -21.310320101852994,
-20.709168401750503, -20.09374092138023, -19.510825420788024,
-19.075489352748264, -18.78266039394657, -18.470765917823883,
-18.173942991590593, -17.9143187784357, -17.6710920020123,
-17.438475603732513, -17.22105902421754, -17.01902209990658,
-16.831201554916333, -16.65569332888117, -16.49097911635181,
-16.336132850323338, -16.169939484534552, -16.00349309365265},
{-18.884562447914504, -21.525996622629464, -21.370186253858265,
-20.767101116944104, -20.14982534054434, -19.565177369717276,
-19.128548586944817, -18.83471660714713, -18.52196569085936,
-18.224323283327976, -17.96401368259103, -17.72000258375192,
-17.48665169373271, -17.268578899092972, -17.065957867947873,
-16.877595617464976, -16.701575882179895, -16.536386003455846,
-16.381093592877733, -16.21446002050652, -16.047485077404417},
{-18.93773291488469, -21.586415888159536, -21.430221278744284,
-20.82519486331148, -20.206064446247183, -19.61967776567326,
-19.18175233443617, -18.886912702495465, -18.57330207596533,
-18.274841040198226, -18.013842976506567, -17.769043104402954,
-17.53495586189092, -17.316225051123183, -17.113018427829957,
-16.92411272463505, -16.7475798324449, -16.58191306804656,
-16.426173041341826, -16.259096962952754, -16.091592533746734},
{-18.991054977479507, -21.647005638835253, -21.49042561944225,
-20.883450073335553, -20.262458645389415, -19.674326994805597,
-19.235100992867956, -18.93924903377774, -18.624775399279315,
-18.32549656528863, -18.063806962018134, -17.81821387456148,
-17.583388419938274, -17.363997797918273, -17.160204092331696,
-16.970753157162108, -16.793705464544473, -16.627560610097134,
-16.47137146772002, -16.30385053975624, -16.135815722256666},
{-19.04452907157247, -21.707766365230782, -21.550799720251234,
-20.94186715516844, -20.319008323654998, -19.72912542373524,
-19.288594941812335, -18.991725950094406, -18.67638598062331,
-18.376290161977522, -18.113905945210718, -17.86751520249527,
-17.631949652917683, -17.41189743959694, -17.207515134679852,
-17.017517197848065, -16.83995307859732, -16.673328884731745,
-16.51668912457535, -16.348720943991793, -16.18015487806406},
{-19.098155632149428, -21.76869856598205, -21.61134402200696,
-21.000446534133516, -20.37571386914351, -19.784073423972586,
-19.342234585492406, -19.04434379452141, -18.728134156845044,
-18.427222148427973, -18.16414022957906, -17.91694739452214,
-17.680639874539338, -17.45992428919999, -17.254951850161888,
-17.064405121811433, -16.88632296770811, -16.719218185840873,
-16.56212630547816, -16.393708413874265, -16.22461027224199},
{-19.151935098518152, -21.82980273826979, -21.672058975178516,
-21.059188634419115, -20.43257568316767, -19.83917138489778,
-19.396020317450166, -19.097102932806592, -18.780020256672287,
-18.478292825515382, -18.214510110381525, -17.96651077424758,
-17.72945937133045, -17.508078659011517, -17.302514547336614,
-17.11141722506727, -16.932815424486762, -16.76522879433469,
-16.607683265174273, -16.43881315778708, -16.269182151561836},
{-19.205867908123764, -21.89107937697554, -21.732945019815816,
-21.118093874509213, -20.489594160899287, -19.894419658667175,
-19.449952528986614, -19.150003713177284, -18.83204460973502,
-18.529502498393413, -18.265015898476122, -18.016205646825256,
-17.778408445592504, -17.556360858347034, -17.35020350164268,
-17.158553775050677, -16.979430739273084, -16.81136097444687,
-16.65336027313606, -16.484035389119526, -16.313870759797283},
{-19.25995450031769, -21.952528985741083, -21.794002606213326,
-21.177162686013617, -20.54676969148568, -19.949818641878664,
-19.504031630291138, -19.20304648723686, -18.884207549359417,
-18.580851479811827, -18.315657886705594, -18.066032331291353,
-17.827487392147304, -17.604771197482478, -17.398019016807666,
-17.205815068416996, -17.02616920764558, -16.857615020649973,
-16.699157605529763, -16.529375352081843, -16.358676377421943},
{-19.314195317710983, -22.01415206407546, -21.85523218396702,
-21.236395487649133, -20.604102684592362, -20.005368695390644,
-19.55825802561594, -19.256231614592252, -18.936509416409535,
-18.632340076117544, -18.366436380922096, -18.115991145576118,
-17.876696523599094, -17.653309992485447, -17.445961384742986,
-17.253201379615348, -17.073031136387726, -16.903991205210332,
-16.74507552679279, -16.574833264312474, -16.40359924986842},
{-19.36859080287104, -22.075949111400405, -21.916634197870735,
-21.29579270706745, -20.6615935243899, -20.061070206487784,
-19.61263212605263, -19.30955944309244, -18.988950548140565,
-18.683968600438675, -18.417351673007943, -18.16608239832567,
-17.926036127697444, -17.701977550052106, -17.49403090175474,
-17.300712983153062, -17.120016807311913, -16.950489791459404,
-16.791114317195024, -16.620409370574635, -16.44863964727847},
{-19.423141398860025, -22.137920631910674, -21.978209100518143,
-21.355354769766564, -20.719242614053655, -20.1169235536654,
-19.667154332477367, -19.363030333595816, -19.041531271621352,
-18.7357373535051, -18.46840406116098, -18.21630641593947,
-17.975506515271263, -17.75077419623267, -17.54222787200706,
-17.348350175045198, -17.16712652426213, -16.997111082659103,
-16.837274246296147, -16.66610391312861, -16.493797844974324},
{-19.47784755282919, -22.20006713256589, -22.039957343949936,
-21.415082107589114, -20.777050354954554, -20.172929115768056,
-19.72182506878744, -19.416644656390417, -19.09425195073709,
-18.78764665251947, -18.519593857199652, -18.266663518821588,
-18.025108000205364, -17.799700238771038, -17.590552595444024,
-17.39611324330326, -17.214360602927627, -17.043855336640263,
-16.883555599488318, -16.711917127657216, -16.53907410224201},
{-19.53270970705489, -22.26238911386463, -22.101879374065902,
-21.474975144665223, -20.835017145931488, -20.229087271232856,
-19.77664474589983, -19.470402750303037, -19.147112906503025,
-18.839696801296668, -18.570921337930486, -18.317154025367927,
-18.07484086675686, -17.848755993909435, -17.639005353470566,
-17.444002454867586, -17.261719320347765, -17.090722849039594,
-16.92995863503893, -16.757849280256778, -16.584468686254695},
{-19.587728312486433, -22.32488708430901, -22.163975643576123,
-21.535034311091295, -20.89314338332042, -20.285398396721575,
-19.831613776565064, -19.52430498789181, -19.200114490406122,
-18.891888114158064, -18.622386812930927, -18.36777825129684,
-18.12470541987568, -17.897941769479075, -17.687586454238044,
-17.49201810557861, -17.309202970500337, -17.137713873002212,
-16.976483625592664, -16.803900591214187, -16.629981876001693},
{-19.642903818603372, -22.38756155371084, -22.226246613106923,
-21.595260038069682, -20.95142947920249, -20.34186288053752,
-19.88673259256757, -19.578351723903324, -19.253257054515416,
-18.94422090385342, -18.67399057612056, -18.41853652530699,
-18.174701983836712, -17.94725789761287, -17.736296201386722,
-17.54016047526966, -17.356811883248156, -17.184828703815583,
-17.02313085953938, -16.850071360298898, -16.67561395006487},
{-19.698236673357314, -22.450413028680487, -22.28869273062446,
-21.655652762245154, -21.009875822783215, -20.398481110314606,
-19.942001602379605, -19.63254332463839, -19.30654094167403,
-18.996695476176683, -18.72573291824665, -18.469429171818774,
-18.224830841383664, -17.996704691526247, -17.785134889156325,
-17.588429847644875, -17.404546335950727, -17.23206762195332,
-17.069900614966173, -16.896361836232245, -16.721365175093524},
{-19.753727329021785, -22.513442018738715, -22.351314452680526,
-21.716212906176224, -21.068482825066894, -20.455253456777427,
-19.997421235602815, -19.686880151362857, -19.359966498654103,
-19.04931215016404, -18.77761413960252, -18.52045651600929,
-18.27509231856675, -18.04628245445201, -17.834102808323223,
-17.636826514615677, -17.452406627126038, -17.279430893191602,
-17.116793150547892, -16.942772267619148, -16.76723583327839},
{-19.809376243676525, -22.57664904172998, -22.414112238329835,
-21.77694091279409, -21.127250890334835, -20.512180315708974,
-20.052991921344073, -19.74136257005739, -19.413534082239494,
-19.102071244938998, -18.82963453180855, -18.57161888346309,
-18.32548671020777, -18.095991517941002, -17.88320027309237,
-17.685350757761626, -17.500393067952245, -17.32691880117636,
-17.16380875761388, -16.989302953879815, -16.81322622706648},
{-19.86518386262469, -22.64003459661035, -22.477086538623553,
-21.837837206287077, -21.18618042342132, -20.569262064032955,
-20.1087140799209, -19.7959909447236, -19.46724403440021,
-19.154973063064972, -18.881794387911214, -18.62291659080074,
-18.37601432777592, -18.14583219270571, -17.932427570369327,
-17.734002861659974, -17.54850595392054, -17.374531620240305,
-17.210947702871636, -17.035954148392193, -16.85933661699528},
{-19.921150645939633, -22.70359920815099, -22.5402378118888,
-21.898902228014776, -21.24527182150632, -20.626499092322774,
-20.16458814201178, -19.8507656424772, -19.521096722892253,
-19.20801793859573, -18.93409400858218, -18.67434997324017,
-18.426675478200195, -18.195804792514537, -17.981785007868893,
-17.782783124916023, -17.59674558416009, -17.422269633272663,
-17.258210278872866, -17.082726157910656, -16.90556730690878},
{-19.977277051701094, -22.767343385639833, -22.60356652145856,
-21.960136413457803, -21.304525499697775, -20.6838917939167,
-20.220614532852778, -19.90568703066674, -19.57509249242139,
-19.26120618294226, -18.986533676012186, -18.72591936282697,
-18.47747047827579, -18.245909654477146, -18.031272882508347,
-17.83169182483107, -17.64511225721799, -17.470133122056723,
-17.30559674813412, -17.129619255953003, -16.9519185986137},
{-20.033563534438144, -22.831267643079627, -22.667073122313013,
-22.021540197369177, -21.36394186297548, -20.741440538171446,
-20.276793684490258, -19.960755481326487, -19.629231706814608,
-19.314538108563283, -19.039113689010264, -18.777625074784737,
-18.52839962451253, -18.296147072222084, -18.080891486490145,
-17.880729256372433, -17.693606278684456, -17.518122352019418,
-17.353107389586512, -17.17663371609524, -16.99839078099467},
{-20.090010557178175, -22.89537250107969, -22.73075807886198,
-22.08311402145773, -21.42352131687221, -20.799145735159982,
-20.33312602600199, -20.015971367625752, -19.683514720993116,
-19.368014054052765, -19.09183434949955, -18.829467454866972,
-18.57946323780925, -18.346517376805423, -18.13064112662687,
-17.929895717068575, -17.742227944545448, -17.566237621940672,
-17.40074249380268, -17.223769866279326, -17.04498418222647},
{-20.14661857917963, -22.95965847664047, -22.79462184853037,
-22.144858321698848, -21.48326427928987, -20.857007762941066,
-20.389611999504268, -20.071335062908474, -19.73794189657201,
-19.421634336176794, -19.144695938302903, -18.881446819461416,
-18.630661628121743, -18.397020890872227, -18.180522104143165,
-17.979191491031088, -17.79097755998373, -17.614479198586196,
-17.44850233150646, -17.27102796989493, -17.091699102369603},
{-20.203388061388978, -23.024126086209435, -22.858664895786205,
-22.20677353432984, -21.543171150551643, -20.91502701412537,
-20.446252020279644, -20.126846935716458, -19.792513590859016,
-19.475399279792327, -19.1976987553644, -18.93356349755777,
-18.68199509877013, -18.447657918615732, -18.230534703703597,
-18.028616876050364, -17.83985540823778, -17.662847361934837,
-17.496387179300655, -17.318408347957302, -17.138535861915443},
{-20.260319469554815, -23.088775849959347, -22.92288768425351,
-22.26886011249735, -21.603242342098383, -20.973203884641407,
-20.50304653091007, -20.18250736722257, -19.847230170998955,
-19.5293092065549, -19.250843087938847, -18.985817830689484,
-18.733463966287673, -18.498428787424928, -18.280679238785524,
-18.078172171546612, -17.888861812942196, -17.71134240052197,
-17.544397329271305, -17.3659113018075, -17.185494802542962},
{-20.317413266879157, -23.153608290915145, -22.987290677265264,
-22.33111848452245, -21.663478267146274, -21.031538753391942,
-20.55999595593312, -20.238316738483263, -19.902091998024844,
-19.583364451886155, -19.304129236668814, -19.03821014732239,
-18.785068547556875, -18.549333815841237, -18.33095600438537,
-18.127857664891053, -17.937997053551953, -17.759964588447474,
-17.592533050104976, -17.413537124055438, -17.23257624800317},
{-20.37466992205009, -23.21862392948242, -23.051874341472285,
-22.393549099127995, -21.72387933798018, -21.09003203647444,
-20.617100737581495, -20.29427542933263, -19.95709944536793,
-19.637565348821227, -19.357557492679916, -19.090740771964192,
-18.83680915669538, -18.600373313878663, -18.38136530801421,
-18.177673671219964, -17.987261443398893, -17.808714217098895,
-17.640794641978573, -17.46128614578629, -17.279780552431475},
{-20.43208989908453, -23.283823286532424, -23.116639139218023,
-22.456152397353435, -21.784445973898983, -21.14868410176132,
-20.674361300625606, -20.350383821234573, -20.01225287115085,
-19.69191222282825, -19.41112814587541, -19.143410042859614,
-18.888686098944163, -18.651547601737548, -18.43190743861487,
-18.22762048279401, -18.0366552657797, -17.85759156459244,
-17.68918236711761, -17.509158661123365, -17.32710806047544},
{-20.489673668911564, -23.34920688829152, -23.181585541489767,
-22.518928827659693, -21.845178576855687, -21.207495361799374,
-20.731778082146775, -20.406642300920794, -20.067552647698903,
-19.74640541471308, -19.464841498236638, -19.196218286000658,
-18.940699703933205, -18.702857003954705, -18.48258269717917,
-18.277698403398972, -18.086178827972617, -17.906596909859218,
-17.737696526630316, -17.55715500190854, -17.374559144023806},
{-20.54742170040845, -23.414775258948794, -23.2467140124063,
-22.581878832017537, -21.90607756827376, -21.266466212749947,
-20.789351510466076, -20.463051253726007, -20.122999138897285,
-19.80104525553179, -19.518697830470046, -19.2491658385552,
-18.992850279377308, -18.75430183269782, -18.53339139703894,
-18.327907739963848, -18.135832436266355, -17.955730543239042,
-17.786337398341857, -17.60527547937818, -17.422134167863987},
{-20.60533446590125, -23.480528919986682, -23.312025021616137,
-22.645002854143968, -21.96714336241712, -21.325597035203828,
-20.847082017717184, -20.519611068884842, -20.178592720709275,
-19.85583207590389, -19.572697452735156, -19.30225302663166,
-19.045138131652493, -18.80588239739882, -18.58433383179363,
-18.37824879278196, -18.185616366157774, -18.00499274005415,
-17.835105259960983, -17.65352039108984, -17.469833500450477},
{-20.663412438108935, -23.546468404092593, -23.377519041416235,
-22.70830134951393, -22.028376375004882, -21.384888245404,
-20.90497003844939, -20.576322138454998, -20.234333763393806,
-19.910766223591054, -19.626840650540544, -19.355480193189578,
-19.097563595161773, -18.8575990278041, -18.63541029993212,
-18.428721883276012, -18.235530932666734, -18.054383804788813,
-17.884000419289805, -17.701890082855243, -17.517657531425357},
{-20.721656091773184, -23.61259423784213, -23.443196540581994,
-22.771774757275125, -22.0897770288866, -21.444340224639745,
-20.963016002177028, -20.63318486267235, -20.290222636482213,
-19.96584803223959, -19.68112772179302, -19.408847666549264,
-19.150126983760856, -18.9094520372455, -18.68662110774312,
-18.479327307315543, -18.28557643154636, -18.10390401101904,
-17.933023154211696, -17.75038485910045, -17.56560664117569},
{-20.780065900238696, -23.67890694757807, -23.50905799146858,
-22.83542353316443, -22.151345734659117, -21.503953381441534,
-21.021220340422587, -20.690199627482798, -20.34625971195055,
-20.021077855781186, -19.735558963846415, -19.462355771887815,
-19.2028286162531, -18.961441738414578, -18.737966555228923,
-18.53006537660258, -18.335753146384377, -18.153553635522258,
-17.982173758617137, -17.799005053762812, -17.61368121986743},
{-20.838642343966058, -23.74540706211701, -23.575103865092387,
-22.899248120113043, -22.213082913309336, -21.563728114881087,
-21.07958347912063, -20.74736683437368, -20.402445367275504,
-20.07645602436969, -19.79013466698234, -19.5160048478283,
-19.25566881679697, -19.013568448543083, -18.789446951530408,
-18.580936416692566, -18.386061392026022, -18.20333299000049,
-18.03145251708338, -17.847750985529274, -17.661881666339468},
{-20.897385898511857, -23.81209511353518, -23.641334636806278,
-22.963248977583135, -22.274988989927806, -21.62366482440848,
-21.138105856371112, -20.80468689533882, -20.458779984212015,
-20.131982886552578, -19.844855140545405, -19.5697952384362,
-19.30864790547639, -19.06583249825053, -18.841062600375153,
-18.631940736086108, -18.436501457879785, -18.253242337377742,
-18.08085973287234, -17.89662298129406, -17.7102083718637},
{-20.956297042837832, -23.878971632919274, -23.707750779984053,
-23.027426550892415, -22.337064376304625, -21.683763911394635,
-21.19678789746831, -20.862160195421893, -20.515263921086444,
-20.187658785202075, -19.899720675573917, -19.623727259109728,
-19.361766205111053, -19.118234184395988, -18.892813786223996,
-18.68307864642702, -18.48707362927962, -18.303281988599338,
-18.130395699467044, -17.94562137342291, -17.758661726024002},
{-21.015376261231722, -23.946037149551557, -23.77435276695178,
-23.091781293362146, -22.39930950140115, -21.7440257682465,
-21.255630026513245, -20.91978715235018, -20.57189756265143,
-20.2434840677015, -19.95473157192464, -19.677801251062192,
-19.415024027810432, -19.170773820602335, -18.944700837309938,
-18.734350463957526, -18.537778205936775, -18.353452215960715,
-18.180060699407477, -17.994746463256888, -17.807242120266892},
{-21.07462403360114, -24.013292201037984, -23.841141079261433,
-23.15631365979789, -22.461724785913248, -21.804450812924188,
-21.314632684952812, -20.977568171918392, -20.62868128917762,
-20.29945909284288, -20.009888129337924, -19.7320175524801,
-19.468421727360692, -19.22345175157534, -18.99672405095771,
-18.785756510624196, -18.58861549786525, -18.40375332062831,
-18.2298550477135, -18.043998619541526, -17.85594995354768},
{-21.134040844073752, -24.080737318348838, -23.908116192149464,
-23.221024107391713, -22.524310651177075, -21.865039442491252,
-21.37379629095085, -21.035503665392753, -20.685615474765655,
-20.355584192991955, -20.065190632652957, -19.786376485193614,
-19.52195960719837, -19.27626827324275, -19.04888372682035,
-18.83729710272746, -18.639585784461815, -18.45418558496749,
-18.279779026517645, -18.093378139776178, -17.9047855954268},
{-21.193627176326117, -24.148373035597615, -23.975278581958264,
-23.28591308556497, -22.58706752071157, -21.925792050227756,
-21.433121272275457, -21.093594036385184, -20.742700493574375,
-20.411859724321403, -20.12063941330416, -19.840878387039993,
-19.575638006266672, -19.329223706328776, -19.101180172292516,
-18.888972559943795, -18.69068936316762, -18.504749297280796,
-18.329832932155114, -18.142885360866785, -17.953749423206318},
{-21.25338351742539, -24.21619988803286, -24.04262872930849,
-23.350981051422423, -22.64999581873417, -21.986709060205612,
-21.492608066822868, -21.151839715137612, -20.79993672805722,
-20.468286050338065, -20.176234745245893, -19.89552360161906,
-19.629457244765945, -19.38231838052161, -19.15361369360471,
-18.940783213824034, -18.741926539805718, -18.55544477107469,
-18.380017086979933, -18.192520622862503, -18.00284182484029},
{-21.313310358920717, -24.284218411979964, -24.110167116683442,
-23.41622846570681, -22.71309597644722, -22.047790856915526,
-21.552257092116633, -21.210241106222384, -20.857324555079686,
-20.52486350852996, -20.23197694052942, -19.950312440749258,
-19.683417655003723, -19.435552587441634, -19.20618459506659,
-18.99272936489433, -18.79329759266693, -18.60627226019278,
-18.43033176654717, -18.242284232983366, -18.052063130948227},
{-21.373408187864698, -24.352429150079843, -24.177894223714247,
-23.48165578604676, -22.77636841792264, -22.109037859889213,
-21.612068778340472, -21.268798632750986, -20.914864351798315,
-20.58159246420837, -20.28786630189279, -20.00524525094079,
-19.73751956835622, -19.488926670863293, -19.25889317842666,
-19.044811344821937, -18.8448028214043, -18.65723208419513,
-18.480777282151394, -18.292176530929282, -18.10141371365171},
{-21.433677494133008, -24.42083263283712, -24.24581053177826,
-23.547263466462027, -22.83981356775621, -22.17045047256397,
-21.67204356304137, -21.327512713178294, -20.972556501365034,
-20.63847326397081, -20.34390312305186, -20.060322368517518,
-19.791763321089093, -19.54244094126625, -19.311739748867694,
-19.097029476368334, -18.896442532306537, -18.708324527658988,
-18.53135392634431, -18.342197837366257, -18.15089390479261},
{-21.494118770133355, -24.489429401612142, -24.31391652431921,
-23.613051969965454, -22.903431853832444, -22.232029095524922,
-21.732181850617053, -21.38638376785093, -21.030401374940993,
-20.6955062650959, -20.400087718619034, -20.115544107800815,
-19.846149243123364, -19.596095713670366, -19.364724618382752,
-19.149384079733863, -18.948217006400228, -18.759549880342092,
-18.582062008033972, -18.3923484752886, -18.20050404034555},
{-21.55473250777868, -24.55821999613545, -24.382212685624836,
-23.679021757561713, -22.967223709536484, -22.293774148478406,
-21.792484089848585, -21.44541223073611, -21.08839935946162,
-20.752691834466532, -20.456420386675745, -20.17091082734987,
-19.90067766304128, -19.649891317123547, -19.417848085577134,
-19.20187547558453, -19.00012654508464, -18.810908442887012,
-18.632901829085313, -18.442628780030645, -18.25024444423616},
{-21.615519206796307, -24.627204957039794, -24.450699503155192,
-23.745173291303217, -23.03118956752587, -22.355686028429773,
-21.852950703643728, -21.504598521307344, -21.146550832520006,
-20.810030327003915, -20.51290143613005, -20.226422845444176,
-19.95534892944852, -19.703828070079908, -19.471110461861826,
-19.25450400117552, -19.052171443181578, -18.862400505226105,
-18.6838736901409, -18.493039061431773, -18.300115427642595},
{-21.67647935617424, -24.69638482289156, -24.519377459742827,
-23.811507025704486, -23.095329849777045, -22.41776514722733,
-21.913582111505093, -21.56394306960283, -21.20485617412487,
-20.867522098124027, -20.5695311712916, -20.282080492936075,
-20.0101633691811, -19.75790629297262, -19.52451204380486,
-19.307269953365903, -19.104351986316033, -18.9140263608424,
-18.73497789009707, -18.54357965500094, -18.350117287773173},
{-21.737613459685235, -24.76576013705926, -24.588247042614967,
-23.87802343585645, -23.159644994797418, -22.480011919134995,
-21.974378749728203, -21.623446309764404, -21.263315763877472,
-20.925167513720226, -20.626309893850703, -20.33788410341367,
-20.06512132147327, -19.812126317992806, -19.578053147881292,
-19.36017369030742, -19.156668496667407, -18.96578630671138,
-18.78621475060936, -18.594250857655425, -18.4002503301017},
{-21.798922011919785, -24.835331440961454, -24.657308743306203,
-23.944722977437777, -23.224135426804423, -22.542426738596987,
-22.035341032460565, -21.68310866394313, -21.321929983445443,
-20.982966934272554, -20.683237914869096, -20.393834015005268,
-20.12022312823683, -19.866488454164937, -19.631734075315762,
-19.41321549913846, -19.20912124653114, -19.01768064039061,
-18.83758453372866, -18.64505299978191, -18.45051481918199},
{-21.86040551777114, -24.90509928035317, -24.726563049538527,
-24.01160612012609, -23.288801590155344, -22.605010040628258,
-22.09646940769744, -21.74293057405157, -21.380699212662876,
-21.04092073260108, -20.740315546281636, -20.449930564849637,
-20.17546913237311, -19.92099303402938, -19.685555135889445,
-19.46639572834829, -19.261710546677932, -19.069709665083792,
-18.88908759120386, -18.695986402162816, -18.500911056995392},
{-21.922064476049854, -24.975064195110463, -24.796010449208552,
-24.07867332090973, -23.35364391640178, -22.667762209224747,
-22.157764287665486, -21.80291247263085, -21.43962383334292,
-21.099029259057716, -20.7975430857623, -20.50617407547543,
-20.230859667120967, -19.97564037691336, -19.73951663490152,
-19.519714687368833, -19.31443668261636, -19.121873666357715,
-18.940724185667932, -18.747051374753937, -18.551439285627566},
{-21.983899390266743, -25.04522673250176, -24.86565144074848,
-24.14592505636392, -23.418662837182637, -22.73068367812084,
-22.219226109446026, -21.86305479274597, -21.4987042316352,
-21.157292889547534, -20.85492085776059, -20.562564882216975,
-20.28639508440392, -20.030430824728683, -19.79361887689447,
-19.573172708100174, -19.367299959412776, -19.17417296062922,
-18.99249465682078, -18.798248238454107, -18.602099799958523},
{-22.04591076694487, -25.11558743866044, -24.935486506612506,
-24.21336178726051, -23.48385878300178, -22.793774853809737,
-22.280855295801302, -21.92335797296255, -21.557940783910453,
-21.215711987926625, -20.91244915977586, -20.61910332349362,
-20.342075722350273, -20.08536468684906, -19.84786217502551,
-19.626770116272382, -19.420300677767955, -19.22660783858737,
-19.044399280508514, -18.84957729902817, -18.652892839629203},
{-22.108099110773765, -25.186146853287937, -25.005516149976756,
-24.280983981268946, -23.549232197983656, -22.857036128087202,
-22.342652275809087, -21.983822454465553, -21.617333867237903,
-21.27428692020476, -20.970128316723276, -20.675789725559298,
-20.397901919845026, -20.140442305244505, -19.902246838028077,
-19.6805072191637, -19.473439130815677, -19.279178596334532,
-19.0964383733226, -18.901038850017358, -18.703818646201398},
{-22.170464927796274, -25.256905530346557, -25.07574085757369,
-24.3487921138003, -23.614783521246864, -22.92046794630005,
-22.40461748058442, -22.044448670494603, -21.67688387754606,
-21.333018069446553, -21.027958632912487, -20.732624424272217,
-20.45387403620407, -20.1956639898126, -19.956773178942967,
-19.734384351002518, -19.52671562397154, -19.331885555118788,
-19.14861224917695, -18.952633225359023, -18.75487747445004},
{-22.233008729599533, -25.327864013670478, -25.146161132171983,
-24.41678664923529, -23.68051319089136, -22.9840706960822,
-22.46675134054385, -22.10523706843378, -21.736591193592176,
-21.391905787633732, -21.08594042342156, -20.789607757877093,
-20.50999240652891, -20.251030085084494, -20.011441501090303,
-19.788401829835493, -19.58013045747066, -19.384729015175253,
-19.20092119666515, -19.004360723367427, -18.80606957327109},
{-22.295731025311397, -25.3990228525945, -25.216777465480845,
-24.4849680577463, -23.746421639283653, -23.04784480051603,
-22.529054288985208, -22.16618808460771, -21.796456191164907,
-21.450950464932248, -21.144074008974712, -20.846740047913045,
-20.56625738600269, -20.30654090840835, -20.06625212961808,
-19.842559977376368, -19.63368392031407, -19.43770927801961,
-19.253365533950273, -19.05622165184468, -18.85739516961621},
{-22.358632326868246, -25.470382591505768, -25.28759035791154,
-24.553336811892223, -23.812509307375876, -23.111790678754915,
-22.591526748496108, -22.227302164159482, -21.856479267647956,
-21.510152458562516, -21.20235969760688, -20.90402164455736,
-20.622669327887706, -20.362196801637765, -20.12120536447037,
-19.896859113534447, -19.687376333924476, -19.490826647437643,
-19.305945565283764, -19.10821631003637, -18.908854495442938},
{-22.421713149436982, -25.541943785501644, -25.358600308041787,
-24.621893386851298, -23.878776646073675, -23.175908741453895,
-22.654169158195145, -22.288579751213547, -21.91666080954019,
-21.569512160727754, -21.260797823488247, -20.96145287656691,
-20.679228581895586, -20.417998077871744, -20.176301540399436,
-19.95129957073368, -19.741207998653408, -19.544081438041758,
-19.358661613136064, -19.16034501825925, -18.960447794990614},
{-22.48497400477936, -25.613706979958806, -25.429807815729873,
-24.690638253145153, -23.945224083872745, -23.24019940555445,
-22.716981943813153, -22.350021277205087, -21.97700118838111,
-21.629029941395856, -21.31938870169688, -21.01903407217469,
-20.73593549011275, -20.473945079138502, -20.23154096509097,
-20.005881656019483, -19.79517920257058, -19.597473972826265,
-19.411513971630484, -19.212608070170972, -19.012175267969724},
{-22.548415410492453, -25.685672727238853, -25.501213380281115,
-24.75957187806489, -24.011852070892928, -23.30466307187453,
-22.779965530731715, -22.411627202876844, -22.037500800390262,
-21.68870616197819, -21.37813263660064, -21.07676556071965,
-20.792790407373104, -20.530038103461266, -20.286923946870957,
-20.06060568592511, -19.84929025103338, -19.651004538522102,
-19.464502949966118, -19.265005744236987, -19.064037139178254},
{-22.612037882965524, -25.75784157923772, -25.57281751121627,
-24.828694746276597, -24.078661053063115, -23.36930017825216,
-22.843120371806435, -22.47339796234155, -22.09816003841115,
-21.748541222244967, -21.437029983382672, -21.134647694474552,
-20.849793698522262, -20.586277525755577, -20.34245083242422,
-20.11547199380584, -19.903541464183945, -19.704673469241243,
-19.51762887975201, -19.31753839418525, -19.116033645521384},
{-22.67584194338997, -25.830214085232, -25.64462070146692,
-24.89800732844742, -24.14565146397217, -23.434111135924468,
-22.90644687670283, -22.535333997453563, -22.158979281783104,
-21.80853549647145, -21.49608103663195, -21.192680802196264,
-20.90694570663618, -20.642663645965513, -20.398121923964936,
-20.17048088723095, -19.957933137600776, -19.75848107074853,
-19.5708920591278, -19.37020629190374, -19.16816497372929},
{-22.739828110061353, -25.902790798485512, -25.716623463726137,
-24.967510102753295, -24.212823754700366, -23.49909634576761,
-22.96994548596558, -22.597435754491016, -22.219958928821143,
-21.86868935485836, -21.555286148330197, -21.250865217414685,
-20.964246786374133, -20.699196788016707, -20.453937547979876,
-20.2256326903007, -20.012465578329284, -19.812427650264,
-19.624292788037565, -19.42300973192323, -19.220431322522927},
{-22.803996906397515, -25.975572273047874, -25.788826302043162,
-25.03720354117104, -24.280178370070644, -23.564256245386787,
-23.03361663548276, -22.659703683224507, -22.28109936544206,
-21.929003192170057, -21.614645619003568, -21.309201269526966,
-21.02169729938032, -20.75587729254039, -20.509898045042064,
-20.28092771646334, -20.06713908392703, -19.866513539513107,
-19.677831405366305, -19.475949042767752, -19.272832908900455},
{-22.86834885526332, -26.048559060844127, -25.86122972256271,
-25.107088125369046, -24.347715761570726, -23.629591239092406,
-23.09746075468138, -22.72213822475169, -22.34240098349983,
-21.98947738163406, -21.6741598045337, -21.367689309525304,
-21.079297600139398, -20.812705481192097, -20.566003735293634,
-20.336366286035627, -20.121953970752656, -19.920739038847387,
-19.731508210592438, -19.529024514136836, -19.325369915226474},
{-22.932884482841473, -26.121751718223095, -25.933834231604123,
-25.177164333610563, -24.41543636942515, -23.6951017541287,
-23.161478281137533, -22.784739821683615, -22.403864183987025,
-22.05011231545359, -21.7338290286134, -21.426329666224774,
-21.13704803667497, -20.869681693904568, -20.6222549493541,
-20.39194871892687, -20.1769105453277, -19.975104479817674,
-19.78532353724586, -19.58223647577688, -19.378042545111384},
{-22.9976043132192, -26.19515079734265, -26.006640341860475,
-25.247432644537184, -24.483340643462725, -23.760788206855068,
-23.225669642008143, -22.847508921578992, -22.4654893593397,
-22.11090837995289, -21.79365361353848, -21.485122684098314,
-21.19494898035191, -20.926806245581247, -20.67865202878602,
-20.44767533126287, -20.232009117433336, -20.029610169993248,
-19.839277678227518, -19.63558521948289, -19.430850969743915},
{-23.06250887569331, -26.26875685469713, -26.079648562154034,
-25.317893541388912, -24.55142903039814, -23.826651008508634,
-23.290035265497863, -22.91044595959829, -22.52727690077154,
-22.171865949756466, -21.853633906459436, -21.544068689690903,
-21.25300077762222, -20.98407946433872, -20.735195299610496,
-20.503546432068106, -20.287249980610795, -20.08425642742077,
-19.893370960722677, -19.68907104677055, -19.483795364620164},
{-23.127598698381917, -26.342570446402533, -26.152859404915944,
-25.38854750036262, -24.619701980700484, -23.8926905944827,
-23.354575593199115, -22.973551390052307, -22.589227215677965,
-22.232985426846426, -21.913770245504566, -21.603168040688615,
-21.31120378919877, -21.041501687199343, -20.791885103739332,
-20.55956233746838, -20.34263346181251, -20.13904358103173,
-19.947603701555636, -19.742694301123265, -19.536875895864796},
{-23.192874314132496, -26.416592129011406, -26.22627338502207,
-25.45939500653185, -24.68815995269688, -23.958907369786175,
-23.419291059835814, -23.036825654795393, -22.651340699580032,
-22.294267194112763, -21.9740629591397, -21.662421061308123,
-21.369558382430114, -21.099073244724423, -20.848721777438186,
-20.615723379945848, -20.398159860866144, -20.19397194002522,
-20.00197621359257, -19.796455270436127, -19.59009274787968},
{-23.258336251383298, -26.490822460473282, -26.299891009257408,
-25.530436537141213, -24.75680338923121, -24.025301759917056,
-23.48418209241936, -23.1002691910835, -22.713617754750885,
-22.355711643758696, -22.034512390499003, -21.721828099456616,
-21.42806489870418, -21.156794454087503, -20.90570566052338,
-20.672029853973072, -20.45382947602775, -20.249041832983494,
-20.056488813075703, -19.8503542773542, -19.64344605972292},
{-23.323985047536553, -26.56526199754444, -26.37371279936633,
-25.601672584132757, -24.825632740132278, -24.091874195204582,
-23.549249120638706, -23.163882448803633, -22.77605878264876,
-22.417319166765083, -22.095118878525682, -21.78138949739514,
-21.486723706650082, -21.214665662439074, -20.962837092287373,
-20.72848209150834, -20.509642642748076, -20.304253561946098,
-20.111141812696587, -19.904391628107987, -19.69693600712344},
{-23.38982123619644, -26.639911297650542, -26.447739270312013,
-25.67310362312128, -24.894648461136967, -24.15862507960992,
-23.61449257354252, -23.227665860496927, -22.838664190203417,
-22.479090151493438, -22.155882766994182, -21.841105593077373,
-21.545535153651144, -21.272687176708132, -21.020116422034334,
-20.785080386849586, -20.5655996488058, -20.35960745648481,
-20.16593552462291, -19.958567633118946, -19.750562706962228},
{-23.455845355201745, -26.714770924212644, -26.52197094130679,
-25.744730146514485, -24.96385100937914, -24.225554853619542,
-23.679912896594033, -23.291619877621997, -22.901434395927936,
-22.541025001031812, -22.216804411436897, -21.900976734235883,
-21.60449961957056, -21.330859345092904, -21.077543991268612,
-20.8418250711984, -20.6217008184758, -20.415103850653395,
-20.220870282209944, -20.012882626033388, -19.80432633770397},
{-23.52205793967005, -26.789841430378146, -26.596408327895915,
-25.816552632226376, -25.033240840071812, -24.29266392198042,
-23.745510507258587, -23.355744934175164, -22.964369791792706,
-22.603124105196912, -22.277884136128705, -21.961003268545028,
-21.663617437472567, -21.38918248587288, -21.13512014882872,
-20.89871645491803, -20.677946456416976, -20.470743041834794,
-20.275946381152608, -20.06733688566601, -19.85822701518191},
{-23.588459532533307, -26.865123380935984, -26.671051953104325,
-25.88857157318853, -25.1028184008901, -24.35995272229775,
-23.811285847448744, -23.42004148074193, -23.027470807603095,
-22.665387868124526, -22.339122304925695, -22.02118552965112,
-21.722888984018937, -21.447656948002987, -21.192845247045625,
-20.95575485250447, -20.734336880675983, -20.52652537537506,
-20.331164148112293, -20.121930761728436, -19.912264903541654},
{-23.655050674715312, -26.940617335698335, -26.745902336202562,
-25.96078745473642, -25.17258414963726, -24.427421674714424,
-23.877239334280603, -23.48450994375162, -23.0907378505799,
-22.727816675091162, -22.40051925490843, -22.08152387442533,
-21.782314609386958, -21.50628304289421, -21.250719605130143,
-21.012940581480507, -20.790872409008443, -20.582451147318352,
-20.386523890774697, -20.176664530939888, -19.966440112621058},
{-23.72183190623764, -27.016323853546055, -26.82095999928424,
-26.03320076307864, -25.242538542253897, -24.495071193989133,
-23.943371398025192, -23.54915077111218, -23.15417133149458,
-22.790410926856566, -22.462075349292718, -22.142018635815475,
-21.841894659854006, -21.56506111304043, -21.308743604051415,
-21.070273938239552, -20.847553342289757, -20.638520681823138,
-20.442025903787, -20.23153850453673, -20.02075276907999},
{-23.788803773146356, -27.092243499995675, -26.89622546796454,
-26.105811990972143, -25.31268203741638, -24.56290171618457,
-24.009682472329587, -23.613964402349666, -23.217771684750915,
-22.853171028662473, -22.523790927021764, -22.20267017860897,
-21.901629513595253, -21.623991483298596, -21.366917575418483,
-21.127755271969363, -20.90438001608709, -20.694734332035296,
-20.497670530341566, -20.286552999692503, -20.075203012500424},
{-23.855966821633046, -27.1683768373332, -26.97169926838251,
-26.178621625585947, -25.383015102503123, -24.630913659057114,
-24.07617298484547, -23.678951275825966, -23.281539326591883,
-22.916097378358245, -22.585666351020336, -22.263478841108736,
-21.961519517702982, -21.683074494590983, -21.425241872435436,
-21.185384877724573, -20.961352742568124, -20.75109239423182,
-20.55345806531841, -20.34170831053052, -20.129790966631845},
{-23.92332159698708, -27.244724428543122, -27.047381923446665,
-26.251630155020393, -25.4535381810565, -24.699107446416747,
-24.14284336019773, -23.744111822918057, -23.34547467844095,
-22.97919038357213, -22.647701969894115, -22.324444970523473,
-22.02156502509024, -21.742310469096992, -21.483716851682402,
-21.243163065984845, -21.01847183040809, -20.807595205667894,
-20.609388812619727, -20.39700474520214, -20.184516745095607},
{-23.99086864865967, -27.32128683431074, -27.123273962904932,
-26.3248380763398, -25.524251735798316, -24.76748351531569,
-24.20969402132323, -23.80944648012519, -23.40957817126764,
-23.042450437205844, -22.709898131375667, -22.385568916331977,
-22.08176639478188, -21.801699740812182, -21.542342852102593,
-21.30109016771894, -21.075737613253295, -20.86424308322603,
-20.665463094657753, -20.45244259556057, -20.23938046582043},
{-24.05860852848855, -27.398064626351697, -27.199375915748533,
-26.398245882126503, -25.595156237162882, -24.836042283161078,
-24.276725393894594, -23.874955699429847, -23.47385024878895,
-23.105877952068113, -22.77225522423396, -22.44685104326345,
-22.14212399185635, -21.86124266544357, -21.60112023615511,
-21.359166498761624, -21.133150425797794, -20.92103635944659,
-20.7216812283732, -20.508022186229937, -20.29438226361526},
{-24.12654178534285, -27.47505836264463, -27.275688310619444,
-26.47185405853088, -25.666252136637922, -24.904784178885166,
-24.34393790428294, -23.94063989300048, -23.53829132433748,
-23.169473323621787, -22.834773581533227, -22.50829167768825,
-22.20263816229999, -21.920939540548716, -21.660049345577136,
-21.417392359755468, -21.190710561349988, -20.977975367801264,
-20.77804351702798, -20.56374378030887, -20.34952222352149},
{-24.194668973213993, -27.552268610714236, -27.352211675985018,
-26.54566310282098, -25.737539900728734, -24.97370962111745,
-24.411331966752186, -24.006499508570414, -23.602901846927125,
-23.233236953557935, -22.89745356491767, -22.56989118392812,
-22.26330925471848, -21.980790702800732, -21.719130530080292,
-21.475768083008006, -21.248418358387426, -21.035060413123574,
-20.8345502706361, -20.619607685657684, -20.404800488671754},
{-24.262990648363484, -27.629695942188846, -27.4289465508773,
-26.61967351238127, -25.80901999134221, -25.0428190533421,
-24.478908016288187, -24.072534989390988, -23.66768226545537,
-23.297169264988042, -22.960295557626523, -22.631649919669144,
-22.324137648858596, -22.040796516113915, -21.778364161786158,
-21.534293989709113, -21.30627416417701, -21.092291878769174,
-20.89120182604529, -20.675614224921446, -20.460217182640918},
{-24.331507365772268, -27.707340918306727, -27.505893465480767,
-26.693885784130543, -25.88069286791142, -25.112112899660133,
-24.54666646232363, -24.138746751414146, -23.73263300798135,
-23.36127064813627, -23.02329989831196, -22.693568227812648,
-22.38512367848307, -22.10095728992019, -21.837750563398004,
-21.59297039185185, -21.364278280409053, -21.149670043610968,
-20.94799848383991, -20.731763676565606, -20.515772425220348},
{-24.40021968210931, -27.785204109561164, -27.583052954025334,
-26.768300407973584, -25.95255899761105, -25.181591575732455,
-24.61460772238206, -24.205135227181017, -23.797754525381606,
-23.425541501725093, -23.086466973938514, -22.755646474135574,
-22.446267707215156, -22.161273355188314, -21.897290103079285,
-21.65179760887986, -21.422431045386475, -21.20719524542801,
-21.004940552520566, -20.788056322315242, -20.571466327412054},
{-24.469128158525564, -27.863286081526894, -27.660425552428933,
-26.842917884292547, -26.024618843541248, -25.25125552568352,
-24.682732226443477, -24.27170086168917, -23.863047272141557,
-23.489982247294392, -23.14979713590583, -22.81788499938557,
-22.507570082205348, -22.22174504940631, -21.956983122974634,
-21.710775965475477, -21.480732797528617, -21.26486784289591,
-21.062028371961787, -20.84449250070611, -20.627299039741047},
{-24.538233355648117, -27.941587408538908, -27.738011801498942,
-26.917738710384583, -26.096872879366856, -25.32110517070396,
-24.751040379574988, -24.33844407624565, -23.92851169826463,
-23.554593281063717, -23.21329077251721, -22.880284167651553,
-22.569031166029163, -22.28237270034151, -22.016829972621053,
-21.76990578189725, -21.53918385715224, -21.322688146319706,
-21.11926225561183, -20.9010724737891, -20.683270695561077},
{-24.607535834860755, -28.020108658762183, -27.8158122364257,
-26.99276338823256, -26.169321563793346, -25.39114094816614,
-24.81953261292074, -24.40536530711688, -23.994148262951057,
-23.61937501031207, -23.276948241109494, -22.942844327364583,
-22.630651318177115, -22.343156659626402, -22.076831026177388,
-21.829187380324584, -21.59778456413187, -21.38065650576027,
-21.17664253700059, -20.957796571427025, -20.73938146571163},
{-24.67703616133076, -28.09885040053632, -27.89382740142173,
-27.06799241848057, -26.24196536335512, -25.461363291949965,
-24.888209325959906, -24.472464979917277, -24.059957419056445,
-23.68432784214383, -23.34076991979964, -23.0055658473284,
-22.692430885508657, -22.404097239661496, -22.13698659511283,
-21.88862109114416, -21.656535258865915, -21.438773249275982,
-21.23416953458218, -21.014665090478957, -20.795631511427928},
{-24.746734899963485, -28.177813207905274, -27.97205783420941,
-27.143426296272082, -26.3148047447321, -25.53177261276869,
-24.957070932316128, -24.539743523462676, -24.125939625315368,
-23.74945217021741, -23.404756179312244, -23.068449068523478,
-22.754370221111458, -22.46519478096161, -22.197297049569897,
-21.948207212786656, -21.715436263300944, -21.49703868769575,
-21.291843550396152, -21.071678313310258, -20.85202098474838},
{-24.81663261691574, -28.25699765110039, -28.05050407772069,
-27.219065528566716, -26.387840182724176, -25.602369372965768,
-25.026117854227778, -24.607201372040436, -24.192095354024787,
-23.814748412463814, -23.468907394679263, -23.131494365865365,
-22.816469694429543, -22.526449625904206, -22.257762749912217,
-22.007946082449052, -21.774487921444234, -21.555453195178416,
-21.349664952256717, -21.128836586896796, -20.908550107094925},
{-24.88672988206963, -28.336404305009637, -28.129166676750174,
-27.294910618278664, -26.46107214744552, -25.673153977957554,
-25.09535050415434, -24.67483894585166, -24.258425071486272,
-23.880216964054853, -23.53322395379655, -23.194702105713077,
-22.878729653835762, -22.587862102489453, -22.31838402309222,
-22.06783805345185, -21.833690583822317, -21.614017086976673,
-21.407634040690027, -21.1861402001814, -20.965219124918804},
{-24.95702726318268, -28.41603374108672, -28.208046173589537,
-27.370962059532758, -26.53450110432459, -25.74412687594304,
-25.16476929106284, -24.74265667324653, -24.324929237249307,
-23.945858225924894, -23.597706217726227, -23.258072621247265,
-22.94115044485079, -22.649432538542897, -22.379161227901932,
-22.12788341025589, -21.893044561729766, -21.672730688005686,
-21.465751135896426, -21.24358945764834, -21.022028209641576}};
double wreg[] = {0.04,
0.088,
0.136,
0.18400000000000002,
0.232,
0.27999999999999997,
0.328,
0.376,
0.424,
0.472,
0.52,
0.5680000000000001,
0.6160000000000001,
0.664,
0.7120000000000001,
0.76,
0.808,
0.8560000000000001,
0.904,
0.9520000000000001,
1.0};
double ularge[] = {0.,
0.000999525142261537,
0.0019980512340131984,
0.002995579273830762,
0.0039921102592925806,
0.00498764518697925,
0.00598218505247583,
0.006975730850371842,
0.007968283574262824,
0.008959844216751223,
0.009950413769447386,
0.010939993222970568,
0.011928583566949591,
0.012916185790024404,
0.013902800879846744,
0.014888429823081029,
0.015873073605405685,
0.016856733211513708,
0.01783940962511399,
0.018821103828932206,
0.019801816804711603,
0.020781549533214427,
0.02176030299422238,
0.022738078166538056,
0.0237148760279855,
0.024690697555411423,
0.025665543724686435,
0.026639415510705367,
0.02761231388738883,
0.028584239827683988,
0.029555194303565346,
0.03052517828603607,
0.03149419274512877,
0.03246223864990638,
0.033429316968463296,
0.03439542866792622,
0.035360574714455306,
0.036324756073245035,
0.03728797370852488,
0.03825022858356075,
0.03921152166065589,
0.0401718539011513,
0.04113122626542742,
0.04208963971290469,
0.043047095202044416,
0.04400359369035023,
0.044959136134368416,
0.04591372348968936,
0.046867356710948216,
0.04782003675182578,
0.04877176456505006,
0.04972254110239649,
0.05067236731468905,
0.05162124415180169,
0.052569172562658695,
0.053516153495236085,
0.05446218789656199,
0.05540727671271839,
0.056351420888841375,
0.057294621369122334,
0.05823687909680919,
0.059178195014206625,
0.060118570062677845,
0.061058005182645037,
0.061996501313590135,
0.06293405939405661,
0.06387068036164922,
0.06480636515303595,
0.0657411147039485,
0.06667492994918323,
0.067607811822602,
0.06853976125713368,
0.06947077918477418,
0.07040086653658806,
0.07133002424270929,
0.07225825323234214,
0.07318555443376207,
0.07411192877431683,
0.07503737718042691,
0.07596190057758734,
0.07688549989036764,
0.07780817604241341,
0.07872992995644712,
0.07965076255426873,
0.08057067475675705,
0.08148966748387021,
0.08240774165464715,
0.0833248981872079,
0.08424113799875499,
0.08515646200557414,
0.08607087112303513,
0.0869843662655928,
0.0878969483467883,
0.08880861827924913,
0.08971937697469112,
0.09062922534391848,
0.09153816429682515,
0.09244619474239557,
0.09335331758870569,
0.09425953374292384,
0.09516484411131154,
0.09606924959922447,
0.09697275111111336,
0.09787534955052513,
0.09877704582010327,
0.09967784082158937,
0.10057773545582349,
0.1014767306227452,
0.10237482722139479,
0.10327202614991393,
0.10416832830554645,
0.10506373458463925,
0.10595824588264358,
0.10685186309411554,
0.10774458711271706,
0.10863641883121689,
0.10952735914149136,
0.11041740893452556,
0.1113065691004137,
0.11219484052836048,
0.113082224106682,
0.11396872072280606,
0.11485433126327382,
0.11573905661374018,
0.1166228976589746,
0.11750585528286273,
0.11838793036840611,
0.11926912379772414,
0.12014943645205434,
0.1210288692117536,
0.12190742295629853,
0.12278509856428699,
0.12366189691343843,
0.12453781888059534,
0.12541286534172336,
0.1262870371719128,
0.12716033524537929,
0.12803276043546474,
0.12890431361463794,
0.12977499565449568,
0.1306448074257638,
0.13151374979829733,
0.13238182364108242,
0.1332490298222363,
0.13411536920900857,
0.1349808426677821,
0.13584545106407353,
0.13670919526253478,
0.1375720761269531,
0.13843409452025268,
0.13929525130449505,
0.1401555473408801,
0.14101498348974706,
0.141873560610575,
0.14273127956198417,
0.14358814120173635,
0.1444441463867362,
0.1452992959730317,
0.14615359081581536,
0.14700703176942476,
0.1478596196873435,
0.14871135542220237,
0.14956223982577965,
0.15041227374900246,
0.15126145804194713,
0.1521097935538407,
0.15295728113306095,
0.15380392162713807,
0.1546497158827549,
0.15549466474574802,
0.15633876906110877,
0.15718202967298356,
0.15802444742467525,
0.15886602315864384,
0.15970675771650733,
0.16054665193904216,
0.16138570666618468,
0.1622239227370318,
0.1630613009898414,
0.16389784226203374,
0.16473354739019208,
0.1655684172100632,
0.16640245255655883,
0.1672356542637562,
0.16806802316489855,
0.1688995600923966,
0.1697302658778289,
0.17056014135194286,
0.17138918734465547,
0.1722174046850543,
0.17304479420139818,
0.17387135672111798,
0.1746970930708177,
0.17552200407627494,
0.1763460905624421,
0.17716935335344708,
0.17799179327259362,
0.17881341114236304,
0.1796342077844143,
0.18045418401958513,
0.1812733406678928,
0.18209167854853503,
0.18290919847989073,
0.18372590127952082,
0.18454178776416885,
0.18535685874976227,
0.18617111505141282,
0.18698455748341758,
0.18779718685925983,
0.18860900399160963,
0.18942000969232464,
0.19023020477245134,
0.19103959004222526,
0.19184816631107227,
0.1926559343876092,
0.19346289507964443,
0.1942690491941792,
0.19507439753740796,
0.19587894091471936,
0.19668268013069712,
0.19748561598912073,
0.1982877492929661,
0.1990890808444069,
0.19988961144481487,
0.2006893418947604,
0.20148827299401428,
0.20228640554154742,
0.20308374033553256,
0.2038802781733442,
0.20467601985156025,
0.20547096616596217,
0.20626511791153612,
0.2070584758824735,
0.2078510408721722,
0.20864281367323678,
0.20943379507747983,
0.21022398587592217,
0.21101338685879434,
0.21180199881553674,
0.21258982253480097,
0.21337685880445012,
0.21416310841155983,
0.21494857214241914,
0.21573325078253125,
0.2165171451166138,
0.2173002559286007,
0.2180825840016417,
0.21886413011810424,
0.21964489505957363,
0.22042487960685375,
0.22120408453996832,
0.2219825106381612,
0.22276015867989762,
0.22353702944286447,
0.22431312370397138,
0.22508844223935165,
0.22586298582436248,
0.2266367552335864,
0.2274097512408314,
0.22818197461913237,
0.2289534261407512,
0.22972410657717812,
0.23049401669913228,
0.23126315727656221,
0.2320315290786471,
0.23279913287379717,
0.23356596942965469,
0.23433203951309467,
0.2350973438902254,
0.2358618833263898,
0.23662565858616547,
0.23738867043336598,
0.2381509196310414,
0.23891240694147908,
0.23967313312620442,
0.24043309894598175,
0.2411923051608149,
0.24195075252994824,
0.24270844181186702,
0.24346537376429855,
0.24422154914421257,
0.24497696870782248,
0.24573163321058555,
0.24648554340720408,
0.24723870005162618,
0.24799110389704615,
0.24874275569590532,
0.2494936561998935,
0.25024380615994857,
0.250993206326258,
0.2517418574482596,
0.2524897602746421,
0.2532369155533455,
0.25398332403156276,
0.2547289864557396,
0.25547390357157584,
0.25621807612402603,
0.25696150485729974,
0.25770419051486304,
0.2584461338394388,
0.25918733557300766,
0.2599277964568082,
0.2606675172313385,
0.26140649863635645,
0.2621447414108805,
0.26288224629319024,
0.26361901402082755,
0.26435504533059706,
0.2650903409585671,
0.2658249016400699,
0.26655872810970294,
0.26729182110132965,
0.2680241813480796,
0.2687558095823497,
0.26948670653580487,
0.27021687293937857,
0.2709463095232739,
0.27167501701696406,
0.27240299614919283,
0.2731302476479759,
0.27385677224060123,
0.2745825706536297,
0.27530764361289617,
0.2760319918435099,
0.2767556160698553,
0.277478517015593,
0.27820069540366,
0.278922151956271,
0.2796428873949186,
0.2803629024403743,
0.2810821978126893,
0.281800774231195,
0.2825186324145037,
0.2832357730805096,
0.2839521969463893,
0.2846679047286026,
0.285382897142893,
0.2860971749042889,
0.2868107387271036,
0.2875235893249368,
0.2882357274106748,
0.2889471536964914,
0.28965786889384837,
0.2903678737134967,
0.2910771688654765,
0.29178575505911875,
0.292493633003045,
0.29320080340516863,
0.2939072669726954,
0.29461302441212445,
0.29531807642924834,
0.29602242372915455,
0.2967260670162256,
0.2974290069941401,
0.2981312443658731,
0.29883277983369727,
0.2995336140991832,
0.30023374786320023,
0.3009331818259171,
0.3016319166868029,
0.3023299531446274,
0.30302729189746225,
0.3037239336426808,
0.30441987907696,
0.3051151288962799,
0.3058096837959252,
0.3065035444704858,
0.30719671161385675,
0.3078891859192402,
0.30858096807914515,
0.3092720587853881,
0.3099624587290948,
0.31065216860069933,
0.31134118908994646,
0.3120295208858911,
0.31271716467689936,
0.31340412115064964,
0.3140903909941327,
0.31477597489365294,
0.3154608735348283,
0.3161450876025921,
0.3168286177811924,
0.3175114647541937,
0.31819362920447714,
0.31887511181424144,
0.3195559132650032,
0.32023603423759806,
0.3209154754121809,
0.32159423746822724,
0.32227232108453296,
0.32294972693921553,
0.3236264557097148,
0.3243025080727936,
0.3249778847045379,
0.3256525862803583,
0.32632661347499015,
0.32699996696249445,
0.32767264741625823,
0.32834465550899594,
0.329015991912749,
0.3296866572988876,
0.33035665233811085,
0.33102597770044706,
0.33169463405525534,
0.33236262207122547,
0.33302994241637884,
0.3336965957580693,
0.3343625827629836,
0.3350279040971421,
0.33569256042589946,
0.33635655241394513,
0.33701988072530453,
0.33768254602333925,
0.3383445489707475,
0.3390058902295656,
0.3396665704611681,
0.340326590326268,
0.3409859504849183,
0.34164465159651225,
0.3423026943197839,
0.3429600793128089,
0.34361680723300536,
0.34427287873713386,
0.3449282944812989,
0.3455830551209491,
0.3462371613108777,
0.3468906137052238,
0.3475434129574725,
0.34819555972045557,
0.3488470546463528,
0.34949789838669143,
0.35014809159234794,
0.350797634913548,
0.3514465289998677,
0.3520947745002333,
0.3527423720629229,
0.35338932233556664,
0.35403562596514704,
0.3546812835980001,
0.3553262958798159,
0.355970663455639,
0.35661438696986913,
0.35725746706626205,
0.3578999043879303,
0.35854169957734305,
0.35918285327632793,
0.3598233661260706,
0.36046323876711595,
0.3611024718393687,
0.3617410659820941,
0.362379021833918,
0.36301634003282846,
0.3636530212161755,
0.3642890660206721,
0.364924475082395,
0.36555924903678516,
0.36619338851864824,
0.3668268941621554,
0.36745976660084423,
0.36809200646761864,
0.3687236143947503,
0.3693545910138788,
0.3699849369560123,
0.3706146528515283,
0.3712437393301742,
0.3718721970210681,
0.3725000265526991,
0.3731272285529281,
0.3737538036489887,
0.3743797524674871,
0.3750050756344038,
0.3756297737750931,
0.3762538475142845,
0.3768772974760829,
0.3775001242839695,
0.3781223285608024,
0.3787439109288169,
0.37936487200962665,
0.3799852124242238,
0.3806049327929798,
0.38122403373564595,
0.3818425158713544,
0.38246037981861813,
0.38307762619533214,
0.38369425561877357,
0.3843102687056029,
0.38492566607186385,
0.38554044833298484,
0.38615461610377877,
0.3867681699984443,
0.387381110630566,
0.3879934386131151,
0.38860515455845035,
0.38921625907831825,
0.38982675278385404,
0.390436636285582,
0.39104591019341606,
0.3916545751166608,
0.39226263166401154,
0.3928700804435552,
0.3934769220627712,
0.39408315712853126,
0.39468878624710113,
0.39529381002414,
0.39589822906470207,
0.39650204397323663,
0.39710525535358887,
0.39770786380900036,
0.3983098699421097,
0.3989112743549532,
0.39951207764896535,
0.4001122804249797,
0.4007118832832288,
0.4013108868233458,
0.4019092916443642,
0.40250709834471876,
0.403104307522246,
0.4037009197741851,
0.4042969356971783,
0.40489235588727124,
0.405487180939914,
0.40608141144996135,
0.40667504801167365,
0.4072680912187171,
0.40786054166416463,
0.40845239994049654,
0.40904366663960046,
0.40963434235277296,
0.4102244276707191,
0.4108139231835539,
0.4114028294808024,
0.4119911471514004,
0.412578876783695,
0.41316601896544525,
0.4137525742838227,
0.4143385433254122,
0.4149239266762119,
0.4155087249216347,
0.4160929386465081,
0.41667656843507506,
0.4172596148709945,
0.4178420785373421,
0.41842396001661075,
0.41900525989071113,
0.41958597874097203,
0.42016611714814156,
0.4207456756923872,
0.4213246549532964,
0.4219030555098775,
0.42248087794056,
0.4230581228231952,
0.42363479073505705,
0.4242108822528422,
0.42478639795267104,
0.4253613384100883,
0.4259357042000629,
0.4265094958969896,
0.4270827140746889,
0.4276553593064074,
0.4282274321648194,
0.4287989332220261,
0.4293698630495574,
0.42994022221837147,
0.43051001129885624,
0.43107923086082933,
0.4316478814735387,
0.4322159637056635,
0.4327834781253145,
0.4333504253000344,
0.4339168057967989,
0.43448262018201667,
0.4350478690215307,
0.43561255288061784,
0.4361766723239906,
0.43674022791579636,
0.437303220219619,
0.4378656497984792,
0.4384275172148344,
0.4389888230305805,
0.4395495678070511,
0.44010975210501935,
0.4406693764846975,
0.4412284415057379,
0.4417869477272336,
0.44234489570771884,
0.44290228600516945,
0.44345911917700376,
0.44401539578008276,
0.4445711163707109,
0.4451262815046366,
0.44568089173705294,
0.44623494762259774,
0.4467884497153548,
0.4473413985688538,
0.4478937947360714,
0.44844563876943133,
0.4489969312208053,
0.4495476726415134,
0.4500978635823246,
0.45064750459345737,
0.4511965962245804,
0.4517451390248126,
0.4522931335427245,
0.4528405803263378,
0.4533874799231269,
0.45393383288001865,
0.45447963974339356,
0.45502490105908566,
0.45556961737238355,
0.4561137892280309,
0.4566574171702269,
0.4572005017426266,
0.4577430434883418,
0.45828504294994143,
0.4588265006694522,
0.4593674171883587,
0.45990779304760476,
0.46044762878759327,
0.46098692494818694,
0.4615256820687089,
0.46206390068794345,
0.462601581344136,
0.46313872457499405,
0.463675330917688,
0.46421140090885094,
0.46474693508457965,
0.46528193398043516,
0.46581639813144315,
0.46635032807209464,
0.4668837243363463,
0.46741658745762094,
0.46794891796880855,
0.4684807164022662,
0.46901198328981897,
0.46954271916276036,
0.4700729245518529,
0.47060259998732845,
0.4711317459988891,
0.47166036311570714,
0.47218845186642633,
0.47271601277916186,
0.47324304638150105,
0.47376955320050385,
0.4742955337627035,
0.47482098859410693,
0.4753459182201951,
0.47587032316592426,
0.4763942039557253,
0.4769175611135055,
0.477440395162648,
0.47796270662601326,
0.4784844960259388,
0.47900576388424,
0.4795265107222111,
0.48004673706062484,
0.48056644341973376,
0.4810856303192701,
0.48160429827844675,
0.4821224478159578,
0.48264007944997867,
0.4831571936981668,
0.4836737910776625,
0.484189872105089,
0.48470543729655313,
0.485220487167646,
0.485735022233443,
0.48624904300850535,
0.4867625500068793,
0.4872755437420976,
0.48778802472717975,
0.4882999934746325,
0.4888114504964499,
0.489322396304115,
0.4898328314085989,
0.4903427563203624,
0.490852171549356,
0.49136107760502024,
0.49186947499628686,
0.49237736423157863,
0.49288474581881025,
0.49339162026538874,
0.49389798807821395,
0.4944038497636789,
0.49490920582767084,
0.49541405677557093,
0.49591840311225555,
0.4964222453420961,
0.49692558396896036,
0.49742841949621197,
0.4979307524267116,
0.4984325832628175,
0.4989339125063855,
0.4994347406587699,
0.49993506822082423,
0.5004348956929009,
0.5009342235748524,
0.5014330523660315,
0.5019313825652923,
0.5024292146709898,
0.502926549180981,
0.5034233865926253,
0.5039197274027851,
0.5044155721078261,
0.5049109212036176,
0.5054057751855336,
0.5059001345484531,
0.5063939997867599,
0.5068873713943443,
0.5073802498646023,
0.5078726356904373,
0.5083645293642596,
0.5088559313779877,
0.509346842223048,
0.5098372623903762,
0.5103271923704167,
0.5108166326531243,
0.5113055837279636,
0.5117940460839104,
0.5122820202094513,
0.512769506592585,
0.5132565057208223,
0.5137430180811866,
0.5142290441602146,
0.5147145844439569,
0.5151996394179781,
0.5156842095673573,
0.5161682953766891,
0.5166518973300833,
0.5171350159111663,
0.5176176516030808,
0.5180998048884866,
0.5185814762495615,
0.5190626661680005,
0.5195433751250178,
0.5200236036013465,
0.5205033520772391,
0.520982621032468,
0.5214614109463263,
0.5219397222976279,
0.5224175555647079,
0.5228949112254238,
0.5233717897571548,
0.5238481916368037,
0.524324117340796,
0.5247995673450814,
0.5252745421251336,
0.5257490421559512,
0.5262230679120579,
0.5266966198675034,
0.5271696984958631,
0.5276423042702396,
0.5281144376632623,
0.5285860991470881,
0.5290572891934022,
0.5295280082734183,
0.5299982568578788,
0.5304680354170561,
0.5309373444207524,
0.5314061843382998,
0.5318745556385619,
0.5323424587899335,
0.5328098942603412,
0.5332768625172439,
0.5337433640276331,
0.5342093992580338,
0.5346749686745045,
0.5351400727426381,
0.5356047119275616,
0.5360688866939378,
0.5365325975059647,
0.5369958448273762,
0.5374586291214427,
0.5379209508509719,
0.5383828104783088,
0.5388442084653358,
0.5393051452734743,
0.539765621363684,
0.5402256371964641,
0.5406851932318535,
0.5411442899294313,
0.5416029277483172,
0.5420611071471718,
0.5425188285841976,
0.542976092517139,
0.5434328994032828,
0.5438892496994587,
0.5443451438620399,
0.5448005823469433,
0.5452555656096303,
0.545710094105107,
0.5461641682879246,
0.5466177886121801,
0.5470709555315163,
0.5475236694991231,
0.547975930967737,
0.5484277403896421,
0.5488790982166706,
0.5493300049002028,
0.5497804608911678,
0.5502304666400446,
0.5506800225968611,
0.551129129211196,
0.5515777869321782,
0.5520259962084881,
0.5524737574883574,
0.5529210712195696,
0.5533679378494609,
0.5538143578249206,
0.5542603315923906,
0.5547058595978674,
0.5551509422869012,
0.5555955801045968,
0.5560397734956144,
0.5564835229041696,
0.5569268287740341,
0.5573696915485361,
0.5578121116705604,
0.5582540895825492,
0.5586956257265027,
0.559136720543979,
0.5595773744760952,
0.5600175879635272,
0.5604573614465106,
0.5608966953648409,
0.5613355901578738,
0.5617740462645263,
0.5622120641232764,
0.562649644172164,
0.563086786848791,
0.563523492590322,
0.5639597618334845,
0.5643955950145696,
0.5648309925694325,
0.5652659549334924,
0.5657004825417333,
0.5661345758287051,
0.5665682352285222,
0.567001461174866,
0.5674342541009842,
0.5678666144396916,
0.5682985426233697,
0.5687300390839687,
0.5691611042530064,
0.5695917385615696,
0.5700219424403146,
0.5704517163194662,
0.5708810606288202,
0.5713099757977423,
0.5717384622551692,
0.5721665204296088,
0.5725941507491406,
0.5730213536414165,
0.5734481295336606,
0.5738744788526705,
0.5743004020248167,
0.5747258994760436,
0.5751509716318699,
0.5755756189173893,
0.57599984175727,
0.5764236405757566,
0.5768470157966687,
0.577269967843403,
0.5776924971389326,
0.5781146041058078,
0.5785362891661572,
0.5789575527416864,
0.5793783952536805,
0.5797988171230029,
0.5802188187700965,
0.5806384006149841,
0.5810575630772683,
0.581476306576133,
0.5818946315303423,
0.5823125383582423,
0.5827300274777606,
0.5831470993064074,
0.5835637542612753,
0.5839799927590401,
0.5843958152159614,
0.5848112220478823,
0.5852262136702302,
0.5856407904980179,
0.5860549529458426,
0.586468701427888,
0.5868820363579228,
0.587294958149303,
0.5877074672149709,
0.5881195639674562,
0.5885312488188764,
0.5889425221809369,
0.5893533844649317,
0.5897638360817437,
0.590173877441845,
0.5905835089552973,
0.5909927310317531,
0.5914015440804545,
0.5918099485102354,
0.5922179447295205,
0.5926255331463264,
0.5930327141682621,
0.5934394882025289,
0.5938458556559212,
0.5942518169348268,
0.5946573724452273,
0.5950625225926989,
0.5954672677824113,
0.5958716084191307,
0.5962755449072175,
0.5966790776506286,
0.5970822070529168,
0.597484933517232,
0.5978872574463205,
0.5982891792425268,
0.5986906993077923,
0.5990918180436576,
0.5994925358512614,
0.5998928531313414,
0.6002927702842353,
0.6006922877098799,
0.6010914058078128,
0.6014901249771722,
0.6018884456166971,
0.6022863681247279,
0.6026838928992075,
0.6030810203376802,
0.6034777508372935,
0.6038740847947976,
0.6042700226065467,
0.604665564668498,
0.6050607113762136,
0.6054554631248601,
0.6058498203092088,
0.6062437833236366,
0.6066373525621265,
0.6070305284182671,
0.6074233112852543,
0.6078157015558905,
0.6082076996225856,
0.6085993058773573,
0.6089905207118316,
0.6093813445172427,
0.6097717776844341,
0.6101618206038586,
0.6105514736655786,
0.6109407372592666,
0.6113296117742056,
0.6117180975992899,
0.6121061951230246,
0.6124939047335266,
0.6128812268185251,
0.6132681617653614,
0.6136547099609899,
0.6140408717919783,
0.6144266476445075,
0.6148120379043729,
0.6151970429569841,
0.6155816631873652,
0.6159658989801557,
0.616349750719611,
0.6167332187896015,
0.617116303573615,
0.6174990054547553,
0.6178813248157433,
0.6182632620389177,
0.6186448175062347,
0.6190259915992689,
0.6194067846992136,
0.6197871971868809,
0.6201672294427024,
0.6205468818467292,
0.6209261547786331,
0.6213050486177056,
0.6216835637428597,
0.6220617005326295,
0.6224394593651708,
0.6228168406182611,
0.6231938446693008,
0.6235704718953128,
0.623946722672943,
0.6243225973784614,
0.6246980963877612,
0.6250732200763602,
0.625447968819401,
0.6258223429916512,
0.6261963429675036,
0.626569969120977,
0.626943221825716,
0.6273161014549923,
0.6276886083817041,
0.6280607429783769,
0.6284325056171641,
0.6288038966698469,
0.6291749165078349,
0.6295455655021667,
0.6299158440235095,
0.6302857524421607,
0.6306552911280471,
0.6310244604507258,
0.6313932607793848,
0.631761692482843,
0.6321297559295502,
0.6324974514875885,
0.6328647795246719,
0.6332317404081467,
0.6335983345049923,
0.6339645621818211,
0.634330423804879,
0.6346959197400462,
0.6350610503528369,
0.6354258160083996,
0.6357902170715188,
0.6361542539066134,
0.6365179268777388,
0.6368812363485858,
0.6372441826824823,
0.6376067662423928,
0.637968987390919,
0.6383308464903001,
0.6386923439024137,
0.6390534799887748,
0.6394142551105377,
0.6397746696284959,
0.6401347239030817,
0.6404944182943675,
0.6408537531620657,
0.6412127288655292,
0.6415713457637514,
0.6419296042153675,
0.6422875045786538,
0.6426450472115286,
0.6430022324715523,
0.6433590607159283,
0.6437155323015025,
0.6440716475847644,
0.6444274069218472,
0.644782810668528,
0.6451378591802283,
0.6454925528120143,
0.6458468919185978,
0.6462008768543352,
0.6465545079732293,
0.6469077856289291,
0.6472607101747299,
0.6476132819635738,
0.6479655013480502,
0.6483173686803962,
0.6486688843124969,
0.6490200485958855,
0.6493708618817435,
0.6497213245209023,
0.6500714368638417,
0.6504211992606918,
0.6507706120612324,
0.6511196756148938,
0.6514683902707571,
0.6518167563775543,
0.6521647742836691,
0.6525124443371368,
0.652859766885645,
0.6532067422765333,
0.6535533708567947,
0.6538996529730751,
0.654245588971674,
0.6545911791985446,
0.6549364239992945,
0.655281323719186,
0.6556258787031358,
0.6559700892957163,
0.6563139558411553,
0.6566574786833363,
0.6570006581657999,
0.6573434946317424,
0.6576859884240174,
0.658028139885136,
0.6583699493572668,
0.6587114171822364,
0.6590525437015295,
0.6593933292562899,
0.6597337741873203,
0.6600738788350825,
0.6604136435396983,
0.6607530686409493,
0.6610921544782778,
0.6614309013907864,
0.6617693097172392,
0.6621073797960614,
0.6624451119653398,
0.6627825065628238,
0.6631195639259246,
0.6634562843917167,
0.6637926682969373,
0.6641287159779872,
0.664464427770931,
0.6647998040114971,
0.6651348450350785,
0.6654695511767332,
0.6658039227711843,
0.6661379601528197,
0.6664716636556935,
0.6668050336135264,
0.6671380703597047,
0.6674707742272818,
0.6678031455489785,
0.6681351846571825,
0.6684668918839496,
0.6687982675610038,
0.6691293120197371,
0.6694600255912108,
0.6697904086061548,
0.670120461394969,
0.6704501842877223,
0.6707795776141544,
0.671108641703675,
0.6714373768853648,
0.6717657834879753,
0.6720938618399296,
0.6724216122693225,
0.6727490351039208,
0.6730761306711638,
0.6734028992981633,
0.6737293413117047,
0.6740554570382458,
0.674381246803919,
0.6747067109345304,
0.6750318497555603,
0.6753566635921638,
0.6756811527691712,
0.6760053176110876,
0.6763291584420945,
0.6766526755860485,
0.6769758693664834,
0.6772987401066086,
0.6776212881293115,
0.6779435137571563,
0.6782654173123844,
0.6785869991169158,
0.6789082594923481,
0.6792291987599581,
0.6795498172407008,
0.6798701152552111,
0.6801900931238029,
0.68050975116647,
0.6808290897028865,
0.681148109052407,
0.6814668095340666,
0.6817851914665822,
0.6821032551683512,
0.6824210009574536,
0.682738429151651,
0.6830555400683873,
0.6833723340247895,
0.6836888113376672,
0.684004972323514,
0.6843208172985062,
0.6846363465785049,
0.6849515604790553,
0.6852664593153867,
0.6855810434024139,
0.6858953130547369,
0.6862092685866409,
0.6865229103120971,
0.6868362385447633,
0.687149253597983,
0.687461955784787,
0.6877743454178934,
0.6880864228097073,
0.6883981882723218,
0.6887096421175178,
0.689020784656765,
0.6893316162012213,
0.689642137061734,
0.6899523475488394,
0.6902622479727635,
0.6905718386434223,
0.6908811198704219,
0.6911900919630591,
0.6914987552303216,
0.6918071099808879,
0.6921151565231283,
0.6924228951651047,
0.6927303262145712,
0.6930374499789742,
0.6933442667654529,
0.6936507768808395,
0.6939569806316594,
0.6942628783241318,
0.6945684702641695,
0.6948737567573798,
0.6951787381090646,
0.6954834146242206,
0.6957877866075393,
0.6960918543634081,
0.69639561819591,
0.696699078408824,
0.6970022353056254,
0.6973050891894865,
0.6976076403632763,
0.697909889129561,
0.6982118357906046,
0.6985134806483688,
0.6988148240045138,
0.6991158661603977,
0.699416607417078,
0.6997170480753109,
0.7000171884355522,
0.7003170287979572,
0.7006165694623812,
0.70091581072838,
0.70121475289521,
0.7015133962618281,
0.7018117411268927,
0.7021097877887635,
0.7024075365455023,
0.7027049876948726,
0.7030021415343406,
0.7032989983610749,
0.7035955584719471,
0.7038918221635324,
0.7041877897321093,
0.7044834614736599,
0.7047788376838712,
0.7050739186581338,
0.7053687046915438,
0.7056631960789016,
0.7059573931147136,
0.7062512960931917,
0.7065449053082533,
0.7068382210535225,
0.7071312436223296,
0.7074239733077119,
0.7077164104024138,
0.7080085551988871,
0.7083004079892912,
0.7085919690654933,
0.7088832387190692,
0.7091742172413034,
0.7094649049231885,
0.7097553020554271,
0.7100454089284309,
0.710335225832321,
0.7106247530569292,
0.710913990891797,
0.7112029396261766,
0.7114915995490315,
0.711779970949036,
0.7120680541145756,
0.7123558493337485,
0.712643356894364,
0.7129305770839439,
0.713217510189723,
0.7135041564986487,
0.7137905162973818,
0.7140765898722963,
0.7143623775094801,
0.7146478794947352,
0.7149330961135778,
0.715218027651239,
0.7155026743926645,
0.7157870366225152,
0.7160711146251676,
0.7163549086847141,
0.7166384190849628,
0.7169216461094383,
0.7172045900413819,
0.7174872511637518,
0.7177696297592231,
0.7180517261101884,
0.7183335404987586,
0.718615073206762,
0.7188963245157451,
0.7191772947069739,
0.7194579840614321,
0.7197383928598236,
0.7200185213825707,
0.7202983699098164,
0.7205779387214231,
0.7208572280969736,
0.7211362383157713,
0.7214149696568404,
0.721693422398926,
0.721971596820495,
0.7222494931997359,
0.7225271118145585,
0.7228044529425958,
0.7230815168612027,
0.7233583038474569,
0.7236348141781592,
0.7239110481298339,
0.7241870059787288,
0.7244626880008155,
0.7247380944717898,
0.7250132256670722,
0.7252880818618073,
0.7255626633308654,
0.7258369703488414,
0.7261110031900564,
0.7263847621285567,
0.7266582474381151,
0.7269314593922306,
0.7272043982641287,
0.7274770643267621,
0.7277494578528104,
0.7280215791146809,
0.7282934283845084,
0.7285650059341557,
0.7288363120352142,
0.7291073469590034,
0.7293781109765718,
0.7296486043586969,
0.7299188273758861,
0.7301887802983753,
0.7304584633961313,
0.7307278769388508,
0.7309970211959604,
0.7312658964366184,
0.7315345029297131,
0.7318028409438646,
0.7320709107474244,
0.7323387126084755,
0.7326062467948335,
0.7328735135740458,
0.7331405132133925,
0.7334072459798867,
0.7336737121402745,
0.7339399119610356,
0.7342058457083829,
0.7344715136482635,
0.7347369160463587,
0.7350020531680842,
0.7352669252785904,
0.7355315326427627,
0.7357958755252216,
0.7360599541903234,
0.7363237689021598,
0.736587319924559,
0.7368506075210848,
0.7371136319550383,
0.737376393489457,
0.7376388923871158,
0.7379011289105265,
0.7381631033219388,
0.7384248158833402,
0.7386862668564566,
0.7389474565027518,
0.7392083850834286,
0.7394690528594288,
0.7397294600914328,
0.7399896070398615,
0.7402494939648745,
0.7405091211263718,
0.7407684887839936,
0.7410275971971204,
0.7412864466248739,
0.7415450373261161,
0.7418033695594508,
0.7420614435832235,
0.7423192596555206,
0.7425768180341715,
0.7428341189767473,
0.7430911627405619,
0.743347949582672,
0.7436044797598771,
0.7438607535287203,
0.7441167711454884,
0.7443725328662114,
0.7446280389466643,
0.7448832896423658,
0.7451382852085793,
0.7453930259003132,
0.7456475119723209,
0.7459017436791014,
0.746155721274899,
0.746409445013704,
0.7466629151492529,
0.7469161319350285,
0.7471690956242603,
0.7474218064699245,
0.7476742647247447,
0.7479264706411921,
0.7481784244714849,
0.7484301264675894,
0.7486815768812207,
0.7489327759638414,
0.7491837239666634,
0.7494344211406472,
0.7496848677365024,
0.7499350640046882,
0.7501850101954137,
0.7504347065586372,
0.7506841533440677,
0.7509333508011645,
0.7511822991791376,
0.7514309987269479,
0.751679449693307,
0.7519276523266788,
0.7521756068752782,
0.752423313587072,
0.7526707727097796,
0.7529179844908723,
0.7531649491775743,
0.7534116670168628,
0.7536581382554678,
0.753904363139873,
0.7541503419163156,
0.7543960748307865,
0.7546415621290313,
0.7548868040565494,
0.755131800858595,
0.7553765527801771,
0.75562106006606,
0.7558653229607633,
0.7561093417085618,
0.7563531165534869,
0.7565966477393253,
0.7568399355096207,
0.7570829801076727,
0.7573257817765384,
0.7575683407590315,
0.757810657297723,
0.7580527316349417,
0.7582945640127741,
0.7585361546730646,
0.7587775038574159,
0.7590186118071897,
0.7592594787635054,
0.7595001049672425,
0.759740490659039,
0.7599806360792927,
0.7602205414681611,
0.7604602070655615,
0.7606996331111716,
0.7609388198444295,
0.7611777675045337,
0.761416476330444,
0.7616549465608811,
0.7618931784343271,
0.762131172189026,
0.7623689280629833,
0.762606446293967,
0.762843727119507,
0.7630807707768961,
0.7633175775031897,
0.7635541475352068,
0.7637904811095287,
0.7640265784625013,
0.7642624398302336,
0.7644980654485987,
0.7647334555532339,
0.7649686103795416,
0.7652035301626878,
0.7654382151376045,
0.7656726655389883,
0.7659068816013012,
0.7661408635587711,
0.7663746116453917,
0.7666081260949227,
0.7668414071408904,
0.7670744550165873,
0.7673072699550733,
0.7675398521891746,
0.7677722019514854,
0.768004319474367,
0.7682362049899485,
0.7684678587301269,
0.7686992809265678,
0.768930471810705,
0.7691614316137406,
0.7693921605666464,
0.7696226589001627,
0.7698529268447993,
0.7700829646308358,
0.7703127724883215,
0.7705423506470759,
0.7707716993366883,
0.7710008187865192,
0.7712297092256994,
0.7714583708831309,
0.7716868039874866,
0.7719150087672111,
0.7721429854505208,
0.7723707342654037,
0.77259825543962,
0.7728255492007022,
0.7730526157759556,
0.773279455392458,
0.7735060682770605,
0.7737324546563873,
0.773958614756836,
0.7741845488045782,
0.7744102570255591,
0.7746357396454984,
0.77486099688989,
0.7750860289840023,
0.7753108361528785,
0.7755354186213375,
0.7757597766139727,
0.7759839103551534,
0.7762078200690246,
0.776431505979507,
0.7766549683102981,
0.7768782072848712,
0.7771012231264764,
0.7773240160581409,
0.7775465863026686,
0.777768934082641,
0.7779910596204169,
0.7782129631381333,
0.7784346448577044,
0.7786561050008232,
0.778877343788961,
0.7790983614433675,
0.7793191581850717,
0.7795397342348812,
0.7797600898133831,
0.779980225140944,
0.7802001404377104,
0.7804198359236085,
0.7806393118183448,
0.7808585683414061,
0.7810776057120601,
0.781296424149355,
0.7815150238721202,
0.7817334050989665,
0.7819515680482858,
0.7821695129382523,
0.7823872399868217,
0.7826047494117317,
0.7828220414305029,
0.7830391162604382,
0.7832559741186232,
0.7834726152219267,
0.7836890397870004,
0.7839052480302802,
0.7841212401679847,
0.784337016416117,
0.7845525769904642,
0.7847679221065977,
0.7849830519798734,
0.7851979668254319,
0.7854126668581988,
0.7856271522928848,
0.7858414233439863,
0.786055480225785,
0.7862693231523483,
0.7864829523375302,
0.7866963679949702,
0.786909570338095,
0.7871225595801175,
0.7873353359340374,
0.7875478996126419,
0.7877602508285053,
0.7879723897939895,
0.7881843167212441,
0.7883960318222065,
0.7886075353086026,
0.7888188273919463,
0.7890299082835402,
0.7892407781944761,
0.7894514373356343,
0.7896618859176843,
0.7898721241510854,
0.7900821522460864,
0.7902919704127259,
0.7905015788608325,
0.7907109778000253,
0.7909201674397135,
0.7911291479890974,
0.7913379196571678,
0.7915464826527071,
0.7917548371842886,
0.7919629834602773,
0.7921709216888297,
0.7923786520778948,
0.7925861748352132,
0.792793490168318,
0.7930005982845352,
0.7932074993909828,
0.7934141936945727,
0.7936206814020093,
0.7938269627197908,
0.7940330378542089,
0.7942389070113488,
0.7944445703970903,
0.7946500282171067,
0.7948552806768664,
0.7950603279816321,
0.7952651703364613,
0.7954698079462066,
0.795674241015516,
0.7958784697488326,
0.7960824943503956,
0.7962863150242396,
0.7964899319741956,
0.7966933454038909,
0.7968965555167487,
0.7970995625159897,
0.7973023666046308,
0.7975049679854864,
0.7977073668611679,
0.7979095634340845,
0.7981115579064427,
0.7983133504802473,
0.7985149413573007,
0.7987163307392042,
0.798917518827357,
0.7991185058229575,
0.7993192919270025,
0.7995198773402883,
0.7997202622634103,
0.7999204468967637,
0.8001204314405428,
0.8003202160947424,
0.800519801059157,
0.8007191865333817,
0.800918372716812,
0.8011173598086438,
0.8013161480078745,
0.8015147375133019,
0.8017131285235258,
0.8019113212369471,
0.802109315851768,
0.8023071125659935,
0.8025047115774301,
0.8027021130836867,
0.8028993172821746,
0.803096324370108,
0.8032931345445038,
0.8034897480021821,
0.803686164939766,
0.8038823855536825,
0.8040784100401619,
0.8042742385952387,
0.8044698714147511,
0.8046653086943416,
0.8048605506294575,
0.8050555974153505,
0.805250449247077,
0.8054451063194986,
0.8056395688272824,
0.8058338369649003,
0.8060279109266304,
0.8062217909065561,
0.8064154770985675,
0.8066089696963602,
0.8068022688934365,
0.8069953748831056,
0.8071882878584826,
0.8073810080124906,
0.8075735355378592,
0.8077658706271256,
0.8079580134726345,
0.8081499642665384,
0.8083417232007978,
0.8085332904671811,
0.8087246662572652,
0.8089158507624357,
0.8091068441738862,
0.8092976466826202,
0.8094882584794493,
0.8096786797549951,
0.8098689106996885,
0.8100589515037697,
0.8102488023572891,
0.8104384634501073,
0.8106279349718947,
0.8108172171121322,
0.8110063100601117,
0.8111952140049353,
0.8113839291355168,
0.8115724556405804,
0.8117607937086623,
0.8119489435281099,
0.8121369052870824,
0.812324679173551,
0.812512265375299,
0.8126996640799221,
0.8128868754748282,
0.8130738997472382,
0.8132607370841858,
0.8134473876725176,
0.8136338516988935,
0.8138201293497869,
0.8140062208114848,
0.814192126270088,
0.8143778459115112,
0.8145633799214833,
0.8147487284855478,
0.8149338917890624,
0.8151188700171998,
0.8153036633549473,
0.8154882719871077,
0.8156726960982986,
0.8158569358729537,
0.8160409914953217,
0.8162248631494677,
0.8164085510192725,
0.8165920552884329,
0.8167753761404626,
0.8169585137586917,
0.8171414683262668,
0.8173242400261517,
0.8175068290411273,
0.8176892355537917,
0.8178714597465606,
0.8180535018016672,
0.8182353619011631,
0.8184170402269169,
0.8185985369606164,
0.8187798522837673,
0.818960986377694,
0.8191419394235397,
0.8193227116022666,
0.8195033030946558,
0.8196837140813078,
0.8198639447426428,
0.8200439952589003,
0.82022386581014,
0.8204035565762413,
0.8205830677369041,
0.8207623994716485,
0.8209415519598153,
0.8211205253805658,
0.8212993199128824,
0.8214779357355688,
0.8216563730272495,
0.821834631966371,
0.8220127127312008,
0.8221906154998289,
0.8223683404501668,
0.8225458877599486,
0.8227232576067303,
0.8229004501678905,
0.823077465620631,
0.8232543041419758,
0.8234309659087724,
0.8236074510976914,
0.8237837598852269,
0.8239598924476964,
0.8241358489612414,
0.824311629601827,
0.824487234545243,
0.8246626639671029,
0.8248379180428449,
0.825012996947732,
0.8251879008568518,
0.8253626299451169,
0.8255371843872652,
0.8257115643578599,
0.8258857700312896,
0.8260598015817688,
0.8262336591833378,
0.8264073430098628,
0.8265808532350365,
0.8267541900323776,
0.8269273535752317,
0.827100344036771,
0.8272731615899946,
0.8274458064077288,
0.827618278662627,
0.82779057852717,
0.8279627061736664,
0.8281346617742524,
0.8283064455008924,
0.8284780575253785,
0.8286494980193315,
0.8288207671542003,
0.8289918651012627,
0.8291627920316252,
0.8293335481162234,
0.8295041335258218,
0.8296745484310144,
0.8298447930022248,
0.8300148674097056,
0.8301847718235403,
0.8303545064136416,
0.8305240713497526,
0.8306934668014466,
0.8308626929381278,
0.8310317499290305,
0.8312006379432204,
0.8313693571495938,
0.8315379077168785,
0.8317062898136335,
0.8318745036082493,
0.832042549268948,
0.8322104269637839,
0.8323781368606429,
0.8325456791272434,
0.832713053931136,
0.8328802614397041,
0.8330473018201633,
0.8332141752395624,
0.8333808818647833,
0.8335474218625409,
0.8337137953993836,
0.8338800026416932,
0.8340460437556851,
0.8342119189074092,
0.8343776282627485,
0.8345431719874209,
0.8347085502469783,
0.8348737632068073,
0.8350388110321292,
0.8352036938879999,
0.8353684119393107,
0.8355329653507878,
0.8356973542869929,
0.8358615789123232,
0.8360256393910115,
0.8361895358871263,
0.8363532685645727,
0.8365168375870914,
0.8366802431182595,
0.8368434853214908,
0.8370065643600357,
0.8371694803969815,
0.8373322335952522,
0.8374948241176092,
0.8376572521266514,
0.8378195177848147,
0.8379816212543728,
0.8381435626974376,
0.8383053422759583,
0.838466960151723,
0.8386284164863572,
0.8387897114413256,
0.8389508451779313,
0.8391118178573159,
0.8392726296404602,
0.8394332806881842,
0.8395937711611469,
0.8397541012198466,
0.8399142710246217,
0.8400742807356499,
0.8402341305129489,
0.8403938205163765,
0.8405533509056307,
0.8407127218402499,
0.840871933479613,
0.8410309859829395,
0.8411898795092901,
0.8413486142175661,
0.8415071902665103,
0.8416656078147067,
0.8418238670205807,
0.8419819680423992,
0.8421399110382716,
0.8422976961661485,
0.842455323583823,
0.8426127934489304,
0.8427701059189485,
0.8429272611511976,
0.8430842593028409,
0.8432411005308843,
0.8433977849921769,
0.8435543128434111,
0.8437106842411225,
0.8438668993416903,
0.8440229583013376,
0.844178861276131,
0.8443346084219814,
0.8444901998946436,
0.844645635849717,
0.8448009164426452,
0.8449560418287168,
0.8451110121630647,
0.8452658276006672,
0.8454204882963473,
0.8455749944047737,
0.8457293460804599,
0.8458835434777657,
0.8460375867508959,
0.8461914760539017,
0.84634521154068,
0.8464987933649739,
0.8466522216803731,
0.8468054966403136,
0.8469586183980778,
0.8471115871067953,
0.8472644029194426,
0.8474170659888429,
0.8475695764676672,
0.8477219345084333,
0.847874140263507,
0.8480261938851019,
0.8481780955252789,
0.8483298453359475,
0.8484814434688648,
0.8486328900756369,
0.8487841853077177,
0.8489353293164102,
0.849086322252866,
0.8492371642680854,
0.8493878555129181,
0.8495383961380629,
0.8496887862940679,
0.8498390261313309,
0.8499891158000991,
0.8501390554504697,
0.85028884523239,
0.8504384852956572,
0.8505879757899191,
0.8507373168646731,
0.8508865086692684,
0.8510355513529038,
0.8511844450646298,
0.8513331899533472,
0.8514817861678088,
0.8516302338566177,
0.8517785331682296,
0.8519266842509509,
0.85207468725294,
0.8522225423222076,
0.8523702496066161,
0.8525178092538801,
0.8526652214115666,
0.8528124862270953,
0.8529596038477383,
0.8531065744206205,
0.85325339809272,
0.8534000750108679,
0.8535466053217482,
0.8536929891718986,
0.8538392267077105,
0.8539853180754285,
0.8541312634211514,
0.8542770628908319,
0.8544227166302768,
0.8545682247851469,
0.8547135875009579,
0.8548588049230796,
0.855003877196737,
0.8551488044670092,
0.8552935868788312,
0.8554382245769923,
0.8555827177061375,
0.8557270664107673,
0.8558712708352376,
0.8560153311237599,
0.856159247420402,
0.8563030198690871,
0.856446648613595,
0.8565901337975617,
0.8567334755644793,
0.8568766740576972,
0.8570197294204205,
0.8571626417957122,
0.8573054113264916,
0.8574480381555355,
0.8575905224254777,
0.8577328642788098,
0.8578750638578807,
0.858017121304897,
0.8581590367619234,
0.8583008103708825,
0.8584424422735549,
0.8585839326115796,
0.8587252815264541,
0.8588664891595343,
0.859007555652035,
0.8591484811450298,
0.8592892657794511,
0.8594299096960906,
0.8595704130355993,
0.8597107759384877,
0.8598509985451255,
0.8599910809957425,
0.860131023430428,
0.8602708259891318,
0.860410488811663,
0.8605500120376919,
0.8606893958067482,
0.860828640258223,
0.8609677455313677,
0.8611067117652944,
0.8612455390989764,
0.8613842276712479,
0.8615227776208045,
0.861661189086203,
0.861799462205862,
0.8619375971180612,
0.8620755939609428,
0.8622134528725103,
0.8623511739906297,
0.8624887574530288,
0.8626262033972982,
0.8627635119608905,
0.8629006832811212,
0.8630377174951687,
0.8631746147400738,
0.8633113751527407,
0.8634479988699366,
0.8635844860282923,
0.8637208367643016,
0.863857051214322,
0.863993129514575,
0.8641290718011454,
0.8642648782099827,
0.8644005488768997,
0.8645360839375741,
0.8646714835275477,
0.8648067477822269,
0.8649418768368826,
0.8650768708266509,
0.8652117298865323,
0.8653464541513926,
0.8654810437559629,
0.8656154988348397,
0.8657498195224845,
0.8658840059532249,
0.8660180582612541,
0.8661519765806309,
0.8662857610452807,
0.8664194117889943,
0.8665529289454292,
0.8666863126481095,
0.8668195630304253,
0.8669526802256338,
0.8670856643668587,
0.8672185155870911,
0.8673512340191886,
0.8674838197958764,
0.8676162730497469,
0.86774859391326,
0.8678807825187431,
0.8680128389983915,
0.8681447634842684,
0.8682765561083047,
0.8684082170022998,
0.868539746297921,
0.8686711441267043,
0.868802410620054,
0.8689335459092434,
0.8690645501254142,
0.8691954233995772,
0.8693261658626122,
0.8694567776452683,
0.8695872588781637,
0.8697176096917862,
0.8698478302164931,
0.8699779205825117,
0.8701078809199386,
0.8702377113587407,
0.8703674120287551,
0.8704969830596888,
0.8706264245811194,
0.8707557367224948,
0.8708849196131337,
0.8710139733822255,
0.8711428981588305,
0.8712716940718797,
0.8714003612501755,
0.8715288998223918,
0.8716573099170732,
0.8717855916626367,
0.87191374518737,
0.8720417706194334,
0.8721696680868585,
0.8722974377175494,
0.8724250796392818,
0.8725525939797045,
0.8726799808663378,
0.8728072404265751,
0.8729343727876824,
0.8730613780767983,
0.8731882564209346,
0.8733150079469759,
0.8734416327816801,
0.8735681310516784,
0.8736945028834754,
0.8738207484034491,
0.8739468677378517,
0.8740728610128086,
0.8741987283543193,
0.8743244698882576,
0.8744500857403713,
0.8745755760362827,
0.8747009409014881,
0.8748261804613587,
0.8749512948411405,
0.8750762841659541,
0.8752011485607949,
0.8753258881505338,
0.8754505030599165,
0.8755749934135642,
0.8756993593359733,
0.8758236009515162,
0.8759477183844406,
0.8760717117588703,
0.8761955811988048,
0.8763193268281196,
0.8764429487705668,
0.8765664471497743,
0.8766898220892468,
0.8768130737123654,
0.8769362021423878,
0.8770592075024486,
0.8771820899155596,
0.877304849504609,
0.8774274863923627,
0.8775500007014637,
0.8776723925544325,
0.8777946620736671,
0.877916809381443,
0.8780388345999137,
0.8781607378511106,
0.878282519256943,
0.8784041789391985,
0.8785257170195427,
0.8786471336195198,
0.8787684288605526,
0.8788896028639424,
0.8790106557508692,
0.879131587642392,
0.8792523986594486,
0.8793730889228563,
0.8794936585533112,
0.8796141076713891,
0.8797344363975452,
0.8798546448521141,
0.8799747331553104,
0.8800947014272282,
0.8802145497878422,
0.8803342783570063,
0.8804538872544554,
0.8805733765998042,
0.880692746512548,
0.8808119971120629,
0.8809311285176054,
0.8810501408483128,
0.8811690342232034,
0.8812878087611765,
0.8814064645810127,
0.8815250018013736,
0.8816434205408026,
0.8817617209177241,
0.8818799030504446,
0.881997967057152,
0.8821159130559164,
0.8822337411646896,
0.8823514515013056,
0.8824690441834806,
0.8825865193288132,
0.8827038770547845,
0.882821117478758,
0.8829382407179801,
0.8830552468895799,
0.8831721361105693,
0.8832889084978436,
0.8834055641681807,
0.8835221032382424,
0.8836385258245736,
0.8837548320436025,
0.8838710220116414,
0.8839870958448859,
0.8841030536594157,
0.8842188955711945,
0.8843346216960699,
0.8844502321497738,
0.8845657270479226,
0.884681106506017,
0.8847963706394419,
0.8849115195634676,
0.8850265533932485,
0.8851414722438244,
0.8852562762301199,
0.8853709654669446,
0.8854855400689936,
0.8856000001508472,
0.8857143458269712,
0.8858285772117169,
0.8859426944193215,
0.886056697563908,
0.8861705867594852,
0.886284362119948,
0.8863980237590774,
0.8865115717905409,
0.886625006327892,
0.8867383274845709,
0.8868515353739047,
0.8869646301091068,
0.8870776118032776,
0.8871904805694044,
0.8873032365203618,
0.8874158797689111,
0.8875284104277016,
0.8876408286092692,
0.8877531344260379,
0.8878653279903191,
0.887977409414312,
0.8880893788101037,
0.8882012362896692,
0.8883129819648714,
0.8884246159474617,
0.8885361383490797,
0.8886475492812533,
0.8887588488553992,
0.8888700371828224,
0.8889811143747167,
0.889092080542165,
0.8892029357961391,
0.8893136802474997,
0.8894243140069966,
0.8895348371852695,
0.8896452498928469,
0.8897555522401469,
0.8898657443374777,
0.8899758262950366,
0.8900857982229112,
0.8901956602310791,
0.8903054124294075,
0.8904150549276544,
0.8905245878354675,
0.8906340112623854,
0.890743325317837,
0.8908525301111416,
0.8909616257515098,
0.8910706123480425,
0.8911794900097318,
0.8912882588454608,
0.8913969189640039,
0.8915054704740264,
0.8916139134840855,
0.8917222481026295,
0.8918304744379983,
0.8919385925984241,
0.8920466026920302,
0.892154504826832,
0.8922622991107373,
0.8923699856515456,
0.8924775645569488,
0.8925850359345313,
0.8926923998917698,
0.8927996565360339,
0.8929068059745852,
0.8930138483145786,
0.893120783663062,
0.893227612126976,
0.8933343338131544,
0.8934409488283243,
0.8935474572791059,
0.8936538592720131,
0.8937601549134532,
0.8938663443097271,
0.8939724275670298,
0.8940784047914494,
0.8941842760889689,
0.8942900415654645,
0.8943957013267073,
0.8945012554783621,
0.8946067041259885,
0.8947120473750404,
0.8948172853308664,
0.8949224180987094,
0.8950274457837079,
0.8951323684908944,
0.8952371863251972,
0.8953418993914393,
0.8954465077943389,
0.8955510116385097,
0.8956554110284607,
0.8957597060685968,
0.8958638968632179,
0.8959679835165203,
0.8960719661325957,
0.896175844815432,
0.896279619668913,
0.8963832907968189,
0.8964868583028258,
0.8965903222905067,
0.8966936828633305,
0.896796940124663,
0.8969000941777667,
0.8970031451258009,
0.8971060930718215,
0.8972089381187818,
0.8973116803695318,
0.8974143199268191,
0.8975168568932882,
0.8976192913714813,
0.8977216234638381,
0.8978238532726956,
0.8979259809002891,
0.8980280064487509,
0.8981299300201119,
0.8982317517163008,
0.8983334716391442,
0.8984350898903674,
0.8985366065715934,
0.8986380217843444,
0.8987393356300403,
0.8988405482100001,
0.8989416596254416,
0.8990426699774813,
0.8991435793671343,
0.8992443878953154,
0.8993450956628379,
0.8994457027704149,
0.8995462093186584,
0.8996466154080798,
0.8997469211390905,
0.8998471266120011,
0.8999472319270221,
0.9000472371842639,
0.9001471424837368,
0.900246947925351,
0.9003466536089169,
0.9004462596341453,
0.9005457661006472,
0.9006451731079339,
0.9007444807554176,
0.9008436891424108,
0.9009427983681269,
0.9010418085316799,
0.9011407197320853,
0.9012395320682589,
0.9013382456390182,
0.9014368605430817,
0.9015353768790692,
0.9016337947455018,
0.9017321142408026,
0.9018303354632957,
0.9019284585112075,
0.9020264834826659,
0.9021244104757008,
0.902222239588244,
0.9023199709181295,
0.9024176045630937,
0.9025151406207751,
0.9026125791887144,
0.9027099203643554,
0.9028071642450438,
0.9029043109280286,
0.9030013605104612,
0.9030983130893961,
0.9031951687617908,
0.9032919276245058,
0.9033885897743048,
0.9034851553078548,
0.9035816243217261,
0.9036779969123925,
0.9037742731762315,
0.9038704532095243,
0.9039665371084555,
0.9040625249691141,
0.9041584168874925,
0.9042542129594877,
0.9043499132809003,
0.9044455179474356,
0.9045410270547029,
0.9046364406982161,
0.9047317589733939,
0.904826981975559,
0.9049221097999394,
0.9050171425416674,
0.9051120802957809,
0.9052069231572222,
0.9053016712208388,
0.9053963245813839,
0.905490883333515,
0.9055853475717961,
0.9056797173906961,
0.9057739928845893,
0.905868174147756,
0.9059622612743823,
0.90605625435856,
0.9061501534942868,
0.9062439587754667,
0.9063376702959095,
0.9064312881493316,
0.9065248124293553,
0.9066182432295098,
0.9067115806432304,
0.9068048247638594,
0.9068979756846454,
0.9069910334987441,
0.9070839982992178,
0.9071768701790361,
0.9072696492310757,
0.90736233554812,
0.90745492922286,
0.9075474303478941,
0.9076398390157281,
0.9077321553187752,
0.9078243793493563,
0.9079165111997002,
0.9080085509619433,
0.9081004987281299,
0.9081923545902124,
0.9082841186400513,
0.9083757909694153,
0.9084673716699811,
0.9085588608333344,
0.9086502585509685,
0.9087415649142858,
0.9088327800145974,
0.908923903943123,
0.9090149367909909,
0.9091058786492385,
0.9091967296088124,
0.909287489760568,
0.9093781591952699,
0.9094687380035923,
0.9095592262761184,
0.9096496241033409,
0.9097399315756625,
0.9098301487833949,
0.9099202758167598,
0.910010312765889,
0.9101002597208238,
0.9101901167715155,
0.910279884007826,
0.9103695615195267,
0.9104591493962999,
0.9105486477277378,
0.9106380566033433,
0.9107273761125296,
0.9108166063446208,
0.9109057473888515,
0.9109947993343673,
0.9110837622702247,
0.9111726362853909,
0.9112614214687444,
0.911350117909075,
0.9114387256950834,
0.911527244915382,
0.9116156756584941,
0.9117040180128553,
0.9117922720668121,
0.9118804379086232,
0.9119685156264585,
0.9120565053084004,
0.9121444070424432,
0.9122322209164925,
0.9123199470183669,
0.9124075854357969,
0.9124951362564252,
0.9125825995678071,
0.9126699754574101,
0.9127572640126148,
0.912844465320714,
0.9129315794689131,
0.913018606544331,
0.9131055466339988,
0.9131923998248612,
0.9132791662037757,
0.9133658458575129,
0.9134524388727568,
0.9135389453361049,
0.913625365334068,
0.9137116989530703,
0.9137979462794497,
0.9138841073994579,
0.9139701823992605,
0.9140561713649367,
0.9141420743824795,
0.9142278915377967,
0.9143136229167095,
0.9143992686049536,
0.9144848286881788,
0.9145703032519499,
0.9146556923817453,
0.9147409961629587,
0.914826214680898,
0.914911348020786,
0.9149963962677603,
0.9150813595068735,
0.9151662378230931,
0.9152510313013016,
0.9153357400262967,
0.9154203640827914,
0.9155049035554139,
0.9155893585287082,
0.9156737290871331,
0.9157580153150636,
0.9158422172967903,
0.9159263351165191,
0.9160103688583723,
0.9160943186063876,
0.916178184444519,
0.9162619664566368,
0.9163456647265269,
0.916429279337892,
0.9165128103743506,
0.9165962579194382,
0.9166796220566065,
0.9167629028692236,
0.9168461004405747,
0.9169292148538615,
0.9170122461922025,
0.9170951945386331,
0.917178059976106,
0.9172608425874909,
0.9173435424555741,
0.9174261596630601,
0.91750869429257,
0.9175911464266425,
0.9176735161477341,
0.9177558035382184,
0.917838008680387,
0.9179201316564493,
0.9180021725485321,
0.9180841314386807,
0.9181660084088579,
0.9182478035409449,
0.9183295169167409,
0.9184111486179632,
0.9184926987262478,
0.9185741673231488,
0.9186555544901389,
0.9187368603086093,
0.91881808485987,
0.9188992282251496,
0.9189802904855953,
0.9190612717222737,
0.91914217201617,
0.9192229914481884,
0.9193037300991527,
0.9193843880498053,
0.9194649653808084,
0.9195454621727431,
0.9196258785061104,
0.9197062144613308,
0.919786470118744,
0.91986664555861,
0.9199467408611078,
0.9200267561063371,
0.9201066913743171,
0.9201865467449869,
0.920266322298206,
0.9203460181137539,
0.9204256342713305,
0.9205051708505558,
0.9205846279309705,
0.9206640055920355,
0.9207433039131326,
0.920822522973564,
0.9209016628525528,
0.9209807236292428,
0.9210597053826987,
0.9211386081919062,
0.9212174321357721,
0.9212961772931243,
0.921374843742712,
0.9214534315632054,
0.9215319408331963,
0.921610371631198,
0.9216887240356452,
0.9217669981248942,
0.9218451939772229,
0.9219233116708312,
0.9220013512838408,
0.922079312894295,
0.9221571965801594,
0.9222350024193217,
0.9223127304895915,
0.9223903808687008,
0.9224679536343039,
0.9225454488639774,
0.9226228666352204,
0.9227002070254546,
0.9227774701120243,
0.9228546559721964,
0.9229317646831606,
0.9230087963220295,
0.9230857509658387,
0.9231626286915464,
0.9232394295760346,
0.9233161536961076,
0.9233928011284936,
0.923469371949844,
0.9235458662367332,
0.9236222840656594,
0.9236986255130443,
0.9237748906552331,
0.9238510795684949,
0.9239271923290222,
0.9240032290129317,
0.924079189696264,
0.9241550744549836,
0.9242308833649787,
0.9243066165020624,
0.9243822739419714,
0.9244578557603671,
0.9245333620328349,
0.9246087928348851,
0.924684148241952,
0.9247594283293951,
0.9248346331724979,
0.9249097628464693,
0.9249848174264427,
0.9250597969874763,
0.9251347016045535,
0.9252095313525827,
0.9252842863063973,
0.9253589665407561,
0.9254335721303429,
0.9255081031497674,
0.9255825596735638,
0.925656941776193,
0.9257312495320402,
0.9258054830154173,
0.9258796423005613,
0.9259537274616354,
0.9260277385727282,
0.9261016757078547,
0.9261755389409557,
0.9262493283458981,
0.9263230439964751,
0.9263966859664059,
0.9264702543293363,
0.9265437491588382,
0.9266171705284102,
0.9266905185114773,
0.9267637931813913,
0.9268369946114303,
0.9269101228747997,
0.9269831780446312,
0.9270561601939835,
0.9271290693958427,
0.9272019057231216,
0.9272746692486601,
0.9273473600452253,
0.9274199781855118,
0.9274925237421413,
0.9275649967876629,
0.9276373973945535,
0.9277097256352171,
0.9277819815819857,
0.9278541653071188,
0.9279262768828038,
0.9279983163811558,
0.9280702838742181,
0.9281421794339615,
0.9282140031322854,
0.928285755041017,
0.9283574352319117,
0.9284290437766536,
0.9285005807468545,
0.9285720462140551,
0.9286434402497245,
0.9287147629252601,
0.9287860143119884,
0.9288571944811643,
0.9289283035039714,
0.9289993414515223,
0.9290703083948587,
0.9291412044049508,
0.9292120295526985,
0.9292827839089303,
0.9293534675444041,
0.929424080529807,
0.9294946229357557,
0.929565094832796,
0.9296354962914034,
0.9297058273819829,
0.9297760881748691,
0.9298462787403263,
0.9299163991485486,
0.9299864494696598,
0.9300564297737139,
0.9301263401306946,
0.9301961806105158,
0.9302659512830215,
0.9303356522179858,
0.9304052834851132,
0.9304748451540383,
0.9305443372943265,
0.9306137599754734,
0.9306831132669048,
0.9307523972379779,
0.9308216119579799,
0.9308907574961289,
0.9309598339215742,
0.9310288413033956,
0.9310977797106037,
0.9311666492121407,
0.9312354498768791,
0.9313041817736235,
0.931372844971109,
0.9314414395380023,
0.9315099655429013,
0.9315784230543356,
0.931646812140766,
0.9317151328705849,
0.9317833853121168,
0.9318515695336174,
0.9319196856032741,
0.9319877335892067,
0.9320557135594665,
0.9321236255820369,
0.9321914697248331,
0.932259246055703,
0.9323269546424261,
0.9323945955527144,
0.9324621688542122,
0.9325296746144962,
0.9325971129010756,
0.932664483781392,
0.9327317873228197,
0.9327990235926655,
0.9328661926581692,
0.9329332945865031,
0.9330003294447725,
0.9330672973000157,
0.9331341982192038,
0.9332010322692412,
0.9332677995169653,
0.9333345000291465,
0.9334011338724888,
0.9334677011136294,
0.9335342018191388,
0.933600636055521,
0.9336670038892136,
0.9337333053865879,
0.9337995406139487,
0.9338657096375342,
0.9339318125235172,
0.9339978493380036,
0.9340638201470336,
0.9341297250165813,
0.9341955640125549,
0.9342613372007967,
0.9343270446470832,
0.934392686417125,
0.9344582625765674,
0.9345237731909896,
0.9345892183259056,
0.9346545980467639,
0.9347199124189474,
0.9347851615077736,
0.9348503453784951,
0.934915464096299,
0.9349805177263071,
0.9350455063335765,
0.935110429983099,
0.9351752887398014,
0.9352400826685459,
0.9353048118341294,
0.9353694763012845,
0.9354340761346789,
0.9354986113989157,
0.9355630821585332,
0.9356274884780056,
0.9356918304217424,
0.9357561080540887,
0.9358203214393254,
0.935884470641669,
0.935948555725272,
0.9360125767542229,
0.9360765337925455,
0.9361404269042004,
0.9362042561530837,
0.936268021603028,
0.9363317233178019,
0.9363953613611101,
0.9364589357965942,
0.9365224466878316,
0.9365858940983364,
0.9366492780915591,
0.936712598730887,
0.9367758560796439,
0.9368390502010903,
0.9369021811584234,
0.9369652490147774,
0.9370282538332233,
0.9370911956767691,
0.9371540746083598,
0.9372168906908774,
0.9372796439871413,
0.9373423345599077,
0.9374049624718706,
0.9374675277856607,
0.9375300305638467,
0.9375924708689344,
0.9376548487633674,
0.9377171643095265,
0.9377794175697305,
0.9378416086062357,
0.9379037374812362,
0.9379658042568643,
0.9380278089951894,
0.9380897517582198,
0.9381516326079011,
0.9382134516061174,
0.9382752088146906,
0.9383369042953812,
0.9383985381098876,
0.9384601103198469,
0.9385216209868342,
0.9385830701723633,
0.9386444579378865,
0.9387057843447948,
0.9387670494544174,
0.9388282533280224,
0.9388893960268172,
0.9389504776119472,
0.9390114981444971,
0.9390724576854905,
0.9391333562958901,
0.9391941940365974,
0.9392549709684533,
0.9393156871522378,
0.93937634264867,
0.9394369375184085,
0.9394974718220512,
0.9395579456201354,
0.9396183589731381,
0.9396787119414755,
0.9397390045855035,
0.939799236965518,
0.9398594091417544,
0.9399195211743876,
0.9399795731235329,
0.9400395650492452,
0.9400994970115194,
0.9401593690702905,
0.9402191812854336,
0.9402789337167637,
0.9403386264240365,
0.9403982594669476,
0.940457832905133,
0.940517346798169,
0.9405768012055726,
0.9406361961868013,
0.9406955318012529,
0.940754808108266,
0.9408140251671199,
0.9408731830370346,
0.9409322817771709,
0.9409913214466307,
0.9410503021044564,
0.9411092238096317,
0.9411680866210813,
0.9412268905976708,
0.9412856357982075,
0.941344322281439,
0.9414029501060551,
0.9414615193306864,
0.9415200300139053,
0.941578482214225,
0.941636875990101,
0.9416952113999298,
0.9417534885020499,
0.9418117073547411,
0.9418698680162253,
0.941927970544666,
0.9419860149981688,
0.942044001434781,
0.9421019299124918,
0.9421598004892326,
0.942217613222877,
0.9422753681712407,
0.9423330653920813,
0.9423907049430991,
0.9424482868819364,
0.9425058112661782,
0.9425632781533515,
0.9426206876009263,
0.9426780396663149,
0.9427353344068722,
0.9427925718798956,
0.9428497521426258,
0.9429068752522458,
0.9429639412658815,
0.9430209502406017,
0.9430779022334184,
0.9431347973012864,
0.9431916355011035,
0.943248416889711,
0.9433051415238928,
0.9433618094603766,
0.9434184207558332,
0.9434749754668766,
0.9435314736500644,
0.9435879153618977,
0.9436443006588208,
0.943700629597222,
0.9437569022334331,
0.9438131186237295,
0.9438692788243304,
0.9439253828913987,
0.9439814308810415,
0.9440374228493094,
0.9440933588521973,
0.9441492389456438,
0.9442050631855321,
0.944260831627689,
0.9443165443278859,
0.9443722013418382,
0.9444278027252058,
0.9444833485335926,
0.9445388388225474,
0.9445942736475633,
0.9446496530640779,
0.9447049771274733,
0.9447602458930763,
0.9448154594161584,
0.9448706177519361,
0.9449257209555705,
0.9449807690821673,
0.9450357621867775,
0.9450907003243971,
0.9451455835499669,
0.9452004119183728,
0.9452551854844459,
0.9453099043029627,
0.9453645684286445,
0.9454191779161585,
0.9454737328201165,
0.9455282331950765,
0.9455826790955414,
0.9456370705759599,
0.9456914076907262,
0.9457456904941802,
0.9457999190406073,
0.9458540933842389,
0.9459082135792518,
0.9459622796797692,
0.9460162917398598,
0.9460702498135383,
0.9461241539547656,
0.9461780042174485,
0.9462318006554398,
0.9462855433225388,
0.9463392322724908,
0.9463928675589875,
0.9464464492356669,
0.9464999773561132,
0.9465534519738573,
0.9466068731423766,
0.9466602409150947,
0.9467135553453823,
0.9467668164865563,
0.9468200243918806,
0.9468731791145658,
0.9469262807077692,
0.9469793292245952,
0.9470323247180947,
0.9470852672412661,
0.9471381568470545,
0.9471909935883521,
0.9472437775179985,
0.94729650868878,
0.9473491871534305,
0.9474018129646311,
0.9474543861750104,
0.947506906837144,
0.9475593750035554,
0.9476117907267152,
0.9476641540590419,
0.9477164650529015,
0.9477687237606074,
0.947820930234421,
0.9478730845265516,
0.9479251866891558,
0.9479772367743386,
0.9480292348341526,
0.9480811809205985,
0.9481330750856248,
0.9481849173811285,
0.9482367078589544,
0.9482884465708956,
0.9483401335686935,
0.9483917689040374,
0.9484433526285655,
0.9484948847938639,
0.9485463654514675,
0.9485977946528595,
0.9486491724494717,
0.9487004988926844,
0.9487517740338266,
0.9488029979241761,
0.9488541706149594,
0.9489052921573515,
0.9489563626024767,
0.9490073820014081,
0.9490583504051674,
0.9491092678647257,
0.949160134431003,
0.9492109501548684,
0.9492617150871402,
0.9493124292785858,
0.949363092779922,
0.9494137056418149,
0.9494642679148797,
0.9495147796496815,
0.9495652408967342,
0.9496156517065018,
0.9496660121293976,
0.9497163222157846,
0.9497665820159753,
0.949816791580232,
0.9498669509587669,
0.9499170602017419,
0.9499671193592686,
0.9500171284814088,
0.950067087618174,
0.9501169968195261,
0.9501668561353764,
0.950216665615587,
0.95026642530997,
0.9503161352682872,
0.9503657955402512,
0.9504154061755249,
0.9504649672237213,
0.950514478734404,
0.9505639407570868,
0.9506133533412344,
0.9506627165362619,
0.9507120303915347,
0.9507612949563694,
0.9508105102800329,
0.9508596764117431,
0.9509087934006684,
0.9509578612959284,
0.9510068801465934,
0.9510558500016847,
0.9511047709101746,
0.9511536429209866,
0.951202466082995,
0.9512512404450253,
0.9512999660558547,
0.9513486429642107,
0.9513972712187732,
0.9514458508681726,
0.9514943819609909,
0.9515428645457619,
0.9515912986709704,
0.951639684385053,
0.9516880217363978,
0.9517363107733446,
0.951784551544185,
0.951832744097162,
0.9518808884804706,
0.9519289847422577,
0.9519770329306219,
0.9520250330936136,
0.9520729852792358,
0.9521208895354427,
0.9521687459101411,
0.9522165544511899,
0.9522643152063998,
0.9523120282235341,
0.9523596935503081,
0.9524073112343896,
0.9524548813233987,
0.9525024038649078,
0.9525498789064418,
0.9525973064954781,
0.9526446866794468,
0.9526920195057305,
0.952739305021664,
0.9527865432745356,
0.9528337343115858,
0.952880878180008,
0.9529279749269484,
0.952975024599506,
0.9530220272447331,
0.9530689829096344,
0.9531158916411682,
0.9531627534862454,
0.9532095684917301,
0.9532563367044399,
0.9533030581711452,
0.95334973293857,
0.953396361053391,
0.953442942562239,
0.9534894775116978,
0.9535359659483046,
0.9535824079185502,
0.9536288034688788,
0.9536751526456884,
0.9537214554953305,
0.9537677120641102,
0.9538139223982863,
0.9538600865440717,
0.9539062045476328,
0.9539522764550896,
0.9539983023125167,
0.9540442821659421,
0.9540902160613478,
0.9541361040446703,
0.9541819461617997,
0.9542277424585806,
0.9542734929808112,
0.9543191977742447,
0.954364856884588,
0.9544104703575026,
0.9544560382386041,
0.9545015605734628,
0.9545470374076034,
0.9545924687865047,
0.9546378547556006,
0.9546831953602793,
0.9547284906458837,
0.9547737406577113,
0.9548189454410143,
0.9548641050409999,
0.9549092195028299,
0.954954288871621,
0.9549993131924449,
0.9550442925103281,
0.9550892268702522,
0.9551341163171537,
0.9551789608959246,
0.9552237606514113,
0.9552685156284162,
0.9553132258716963,
0.9553578914259641,
0.9554025123358874,
0.9554470886460894,
0.9554916204011485,
0.9555361076455989,
0.95558055042393,
0.9556249487805867,
0.9556693027599696,
0.955713612406435,
0.9557578777642948,
0.9558020988778163,
0.9558462757912232,
0.9558904085486943,
0.9559344971943647,
0.9559785417723254,
0.956022542326623,
0.9560664989012603,
0.956110411540196,
0.9561542802873452,
0.9561981051865784,
0.9562418862817232,
0.9562856236165626,
0.956329317234836,
0.9563729671802396,
0.9564165734964252,
0.9564601362270014,
0.9565036554155332,
0.9565471311055419,
0.9565905633405053,
0.9566339521638578,
0.9566772976189906,
0.9567205997492512,
0.9567638585979438,
0.9568070742083294,
0.956850246623626,
0.9568933758870082,
0.9569364620416071,
0.9569795051305112,
0.9570225051967658,
0.9570654622833731,
0.9571083764332923,
0.9571512476894396,
0.9571940760946885,
0.9572368616918696,
0.9572796045237706,
0.9573223046331365,
0.9573649620626694,
0.9574075768550291,
0.9574501490528323,
0.9574926786986535,
0.9575351658350244,
0.9575776105044342,
0.9576200127493298,
0.9576623726121156,
0.9577046901351536,
0.9577469653607632,
0.9577891983312219,
0.9578313890887649,
0.9578735376755849,
0.9579156441338328,
0.9579577085056168,
0.9579997308330038,
0.958041711158018,
0.9580836495226418,
0.9581255459688157,
0.9581674005384384,
0.9582092132733664,
0.9582509842154145,
0.9582927134063559,
0.9583344008879218,
0.9583760467018017,
0.9584176508896436,
0.9584592134930536,
0.9585007345535966,
0.9585422141127957,
0.9585836522121325,
0.9586250488930471,
0.9586664041969384,
0.9587077181651635,
0.9587489908390389,
0.9587902222598389,
0.9588314124687972,
0.958872561507106,
0.9589136694159165,
0.9589547362363385,
0.9589957620094411,
0.959036746776252,
0.9590776905777579,
0.9591185934549049,
0.9591594554485977,
0.9592002765997005,
0.9592410569490364,
0.9592817965373879,
0.9593224954054964,
0.9593631535940631,
0.9594037711437481,
0.9594443480951709,
0.9594848844889106,
0.9595253803655055,
0.9595658357654537,
0.9596062507292125,
0.9596466252971988,
0.9596869595097893,
0.9597272534073203,
0.9597675070300876,
0.9598077204183469,
0.9598478936123136,
0.9598880266521629,
0.9599281195780297,
0.9599681724300092,
0.9600081852481561,
0.9600481580724852,
0.9600880909429714,
0.9601279838995496,
0.9601678369821147,
0.9602076502305217,
0.960247423684586,
0.9602871573840829,
0.9603268513687482,
0.9603665056782777,
0.9604061203523281,
0.9604456954305156,
0.9604852309524174,
0.9605247269575712,
0.9605641834854747,
0.9606036005755866,
0.9606429782673258,
0.9606823166000722,
0.9607216156131659,
0.960760875345908,
0.9608000958375601,
0.9608392771273447,
0.9608784192544451,
0.9609175222580052,
0.9609565861771302,
0.9609956110508859,
0.9610345969182992,
0.9610735438183576,
0.9611124517900103,
0.9611513208721671,
0.9611901511036991,
0.9612289425234383,
0.9612676951701782,
0.9613064090826733,
0.9613450842996396,
0.9613837208597541,
0.9614223188016553,
0.9614608781639432,
0.9614993989851791,
0.9615378813038855,
0.961576325158547,
0.961614730587609,
0.9616530976294793,
0.9616914263225265,
0.9617297167050812,
0.961767968815436,
0.9618061826918447,
0.9618443583725231,
0.9618824958956489,
0.9619205952993615,
0.9619586566217622,
0.9619966799009141,
0.9620346651748426,
0.9620726124815346,
0.9621105218589396,
0.9621483933449688,
0.9621862269774956,
0.9622240227943553,
0.9622617808333459,
0.9622995011322271,
0.9623371837287212,
0.9623748286605127,
0.9624124359652485,
0.9624500056805375,
0.9624875378439517,
0.9625250324930248,
0.9625624896652534,
0.9625999093980967,
0.9626372917289762,
0.962674636695276,
0.9627119443343432,
0.9627492146834871,
0.9627864477799798,
0.9628236436610567,
0.962860802363915,
0.9628979239257157,
0.9629350083835821,
0.9629720557746004,
0.9630090661358199,
0.9630460395042529,
0.9630829759168746,
0.9631198754106232,
0.9631567380224,
0.9631935637890695,
0.9632303527474594,
0.9632671049343604,
0.9633038203865266,
0.9633404991406752,
0.9633771412334868,
0.9634137467016054,
0.9634503155816384,
0.9634868479101563,
0.9635233437236933,
0.963559803058747,
0.9635962259517787,
0.9636326124392132,
0.9636689625574386,
0.9637052763428069,
0.9637415538316336,
0.9637777950601983,
0.9638140000647438,
0.9638501688814769,
0.9638863015465684,
0.9639223980961527,
0.9639584585663281,
0.9639944829931569,
0.9640304714126654,
0.9640664238608437,
0.9641023403736462,
0.9641382209869911,
0.9641740657367608,
0.9642098746588019,
0.9642456477889251,
0.9642813851629054,
0.9643170868164818,
0.9643527527853578,
0.9643883831052014,
0.9644239778116442,
0.9644595369402832,
0.964495060526679,
0.964530548606357,
0.9645660012148072,
0.9646014183874839,
0.964636800159806,
0.964672146567157,
0.9647074576448853,
0.9647427334283036,
0.9647779739526894,
0.9648131792532851,
0.9648483493652977,
0.964883484323899,
0.9649185841642259,
0.96495364892138,
0.9649886786304276,
0.9650236733264003,
0.9650586330442945,
0.9650935578190717,
0.9651284476856584,
0.9651633026789463,
0.965198122833792,
0.9652329081850176,
0.9652676587674099,
0.9653023746157215,
0.9653370557646699,
0.965371702248938,
0.9654063141031739,
0.9654408913619912,
0.965475434059969,
0.9655099422316518,
0.9655444159115493,
0.965578855134137,
0.9656132599338558,
0.9656476303451124,
0.9656819664022788,
0.9657162681396926,
0.9657505355916576,
0.9657847687924427,
0.965818967776283,
0.965853132577379,
0.9658872632298974,
0.9659213597679704,
0.9659554222256964,
0.9659894506371396,
0.9660234450363299,
0.9660574054572635,
0.9660913319339025,
0.9661252245001752,
0.9661590831899757,
0.9661929080371645,
0.9662266990755681,
0.9662604563389793,
0.966294179861157,
0.9663278696758262,
0.9663615258166788,
0.9663951483173723,
0.966428737211531,
0.9664622925327455,
0.9664958143145729,
0.9665293025905365,
0.9665627573941263,
0.9665961787587988,
0.966629566717977,
0.9666629213050505,
0.9666962425533756,
0.9667295304962753,
0.9667627851670392,
0.9667960065989235,
0.9668291948251513,
0.9668623498789126,
0.9668954717933641,
0.9669285606016293,
0.9669616163367988,
0.9669946390319298,
0.9670276287200469,
0.9670605854341412,
0.9670935092071712,
0.9671264000720622,
0.9671592580617068,
0.9671920832089647,
0.9672248755466625,
0.9672576351075943,
0.9672903619245214,
0.9673230560301721,
0.9673557174572422,
0.9673883462383949,
0.9674209424062603,
0.9674535059934364,
0.9674860370324885,
0.967518535555949,
0.9675510015963183,
0.967583435186064,
0.9676158363576213,
0.967648205143393,
0.9676805415757495,
0.9677128456870288,
0.9677451175095366,
0.9677773570755466,
0.9678095644172997,
0.9678417395670049,
0.9678738825568391,
0.9679059934189468,
0.9679380721854405,
0.9679701188884005,
0.9680021335598752,
0.9680341162318808,
0.9680660669364016,
0.9680979857053901,
0.9681298725707663,
0.9681617275644189,
0.9681935507182045,
0.9682253420639476,
0.9682571016334415,
0.9682888294584471,
0.9683205255706939,
0.9683521900018797,
0.9683838227836703,
0.9684154239477002,
0.9684469935255722,
0.9684785315488573,
0.9685100380490952,
0.968541513057794,
0.9685729566064303,
0.9686043687264491,
0.9686357494492642,
0.9686670988062578,
0.968698416828781,
0.9687297035481532,
0.9687609589956628,
0.9687921832025668,
0.9688233762000908,
0.9688545380194298,
0.9688856686917466,
0.968916768248174,
0.9689478367198127,
0.9689788741377328,
0.9690098805329734,
0.9690408559365423,
0.9690718003794166,
0.9691027138925423,
0.9691335965068344,
0.969164448253177,
0.9691952691624235,
0.9692260592653962,
0.9692568185928869,
0.9692875471756565,
0.9693182450444349,
0.9693489122299217,
0.9693795487627855,
0.9694101546736645,
0.9694407299931661,
0.9694712747518671,
0.9695017889803138,
0.969532272709022,
0.9695627259684769,
0.9695931487891333,
0.9696235412014156,
0.9696539032357177,
0.9696842349224031,
0.9697145362918049,
0.9697448073742264,
0.9697750481999398,
0.9698052587991876,
0.9698354392021818,
0.9698655894391046,
0.9698957095401075,
0.969925799535312,
0.9699558594548099,
0.9699858893286625,
0.9700158891869011,
0.9700458590595271,
0.970075798976512,
0.970105708967797,
0.9701355890632939,
0.9701654392928839,
0.970195259686419,
0.970225050273721,
0.970254811084582,
0.9702845421487643,
0.9703142434960004,
0.9703439151559932,
0.9703735571584158,
0.9704031695329117,
0.9704327523090949,
0.9704623055165494,
0.97049182918483,
0.970521323343462,
0.9705507880219407,
0.9705802232497326,
0.9706096290562742,
0.9706390054709729,
0.9706683525232065,
0.9706976702423235,
0.9707269586576431,
0.9707562177984552,
0.9707854476940205,
0.9708146483735702,
0.9708438198663066,
0.9708729622014026,
0.9709020754080019,
0.9709311595152192,
0.9709602145521401,
0.9709892405478212,
0.9710182375312897,
0.9710472055315442,
0.9710761445775542,
0.97110505469826,
0.9711339359225735,
0.971162788279377,
0.9711916117975244,
0.9712204065058408,
0.9712491724331224,
0.9712779096081362,
0.9713066180596213,
0.9713352978162871,
0.9713639489068152,
0.9713925713598579,
0.9714211652040392,
0.9714497304679544,
0.9714782671801699,
0.9715067753692243,
0.9715352550636268,
0.9715637062918587,
0.9715921290823728,
0.9716205234635931,
0.9716488894639155,
0.9716772271117072,
0.9717055364353077,
0.9717338174630274,
0.9717620702231489,
0.9717902947439263,
0.9718184910535854,
0.9718466591803243,
0.9718747991523122,
0.9719029109976907,
0.9719309947445728,
0.9719590504210439,
0.9719870780551609,
0.972015077674953,
0.9720430493084211,
0.9720709929835383,
0.9720989087282497,
0.9721267965704723,
0.9721546565380955,
0.9721824886589806,
0.9722102929609611,
0.9722380694718427,
0.9722658182194033,
0.9722935392313931,
0.9723212325355344,
0.972348898159522,
0.9723765361310227,
0.9724041464776761,
0.9724317292270939,
0.97245928440686,
0.9724868120445312,
0.9725143121676365,
0.9725417848036774,
0.9725692299801277,
0.9725966477244341,
0.9726240380640159,
0.9726514010262645,
0.9726787366385443,
0.9727060449281925,
0.9727333259225185,
0.9727605796488048,
0.9727878061343064,
0.9728150054062513,
0.97284217749184,
0.972869322418246,
0.9728964402126155,
0.9729235309020677,
0.9729505945136948,
0.9729776310745616,
0.9730046406117061,
0.9730316231521391,
0.9730585787228445,
0.9730855073507793,
0.9731124090628733,
0.9731392838860299,
0.973166131847125,
0.9731929529730079,
0.9732197472905011,
0.9732465148264003,
0.9732732556074746,
0.9732999696604656,
0.9733266570120892,
0.9733533176890338,
0.9733799517179614,
0.9734065591255076,
0.9734331399382808,
0.9734596941828635,
0.973486221885811,
0.9735127230736524,
0.9735391977728904,
0.9735656460100008,
0.9735920678114333,
0.9736184632036109,
0.9736448322129304,
0.973671174865762,
0.97369749118845,
0.9737237812073116,
0.9737500449486385,
0.9737762824386956,
0.9738024937037217,
0.9738286787699294,
0.973854837663505,
0.9738809704106088,
0.9739070770373749,
0.9739331575699112,
0.9739592120342994,
0.9739852404565954,
0.9740112428628289,
0.9740372192790037,
0.9740631697310973,
0.9740890942450617,
0.9741149928468226,
0.9741408655622797,
0.9741667124173073,
0.9741925334377536,
0.9742183286494406,
0.974244098078165,
0.9742698417496974,
0.974295559689783,
0.9743212519241409,
0.9743469184784644,
0.9743725593784217,
0.9743981746496548,
0.9744237643177803,
0.974449328408389,
0.9744748669470465,
0.9745003799592925,
0.9745258674706414,
0.9745513295065817,
0.974576766092577,
0.9746021772540651,
0.9746275630164584,
0.9746529234051439,
0.9746782584454833,
0.9747035681628129,
0.9747288525824436,
0.9747541117296613,
0.9747793456297262,
0.9748045543078736,
0.9748297377893134,
0.9748548960992303,
0.9748800292627838,
0.9749051373051085,
0.9749302202513137,
0.9749552781264835,
0.974980310955677,
0.9750053187639284,
0.9750303015762467,
0.9750552594176158,
0.9750801923129951,
0.9751051002873187,
0.9751299833654956,
0.9751548415724102,
0.975179674932922,
0.9752044834718657,
0.9752292672140509,
0.9752540261842627,
0.9752787604072614,
0.9753034699077822,
0.9753281547105359,
0.9753528148402087,
0.975377450321462,
0.9754020611789322,
0.9754266474372317,
0.9754512091209478,
0.9754757462546435,
0.9755002588628573,
0.9755247469701027,
0.9755492106008693,
0.9755736497796219,
0.9755980645308009,
0.9756224548788222,
0.9756468208480774,
0.9756711624629337,
0.9756954797477341,
0.9757197727267968,
0.9757440414244162,
0.9757682858648621,
0.9757925060723803,
0.9758167020711921,
0.9758408738854948,
0.9758650215394612,
0.9758891450572404,
0.9759132444629572,
0.975937319780712,
0.9759613710345814,
0.9759853982486177,
0.9760094014468497,
0.9760333806532815,
0.9760573358918936,
0.9760812671866423,
0.9761051745614603,
0.9761290580402561,
0.9761529176469144,
0.9761767534052959,
0.9762005653392375,
0.9762243534725525,
0.9762481178290303,
0.9762718584324361,
0.9762955753065121,
0.9763192684749761,
0.9763429379615225,
0.976366583789822,
0.9763902059835216,
0.9764138045662447,
0.976437379561591,
0.9764609309931368,
0.9764844588844346,
0.9765079632590135,
0.976531444140379,
0.9765549015520133,
0.9765783355173748,
0.9766017460598988,
0.9766251332029969,
0.9766484969700576,
0.9766718373844456,
0.9766951544695026,
0.9767184482485469,
0.9767417187448734,
0.9767649659817537,
0.9767881899824362,
0.9768113907701461,
0.9768345683680855,
0.9768577227994328,
0.976880854087344,
0.9769039622549514,
0.9769270473253642,
0.9769501093216687,
0.976973148266928,
0.9769961641841823,
0.9770191570964487,
0.9770421270267212,
0.9770650739979708,
0.9770879980331457,
0.9771108991551711,
0.9771337773869494,
0.9771566327513597,
0.9771794652712585,
0.9772022749694799,
0.9772250618688342,
0.9772478259921098,
0.9772705673620717,
0.9772932860014627,
0.9773159819330024,
0.9773386551793879,
0.9773613057632935,
0.9773839337073711,
0.9774065390342496,
0.9774291217665356,
0.9774516819268129,
0.9774742195376427,
0.977496734621564,
0.9775192272010926,
0.9775416972987226,
0.9775641449369251,
0.9775865701381488,
0.97760897292482,
0.9776313533193427,
0.9776537113440984,
0.9776760470214462,
0.9776983603737229,
0.977720651423243,
0.9777429201922987,
0.9777651667031598,
0.977787390978074,
0.9778095930392666,
0.977831772908941,
0.9778539306092778,
0.977876066162436,
0.9778981795905525,
0.9779202709157415,
0.9779423401600955,
0.9779643873456849,
0.9779864124945581,
0.9780084156287411,
0.9780303967702384,
0.978052355941032,
0.9780742931630824,
0.9780962084583277,
0.9781181018486845,
0.9781399733560472,
0.9781618230022883,
0.9781836508092586,
0.9782054567987871,
0.9782272409926809,
0.9782490034127251,
0.9782707440806833,
0.9782924630182973,
0.9783141602472871,
0.978335835789351,
0.9783574896661656,
0.9783791218993859,
0.9784007325106453,
0.9784223215215553,
0.9784438889537062,
0.9784654348286663,
0.9784869591679828,
0.9785084619931809,
0.9785299433257645,
0.9785514031872162,
0.9785728415989968,
0.9785942585825458,
0.9786156541592813,
0.9786370283506,
0.978658381177877,
0.9786797126624662,
0.9787010228257004,
0.9787223116888905,
0.9787435792733267,
0.9787648256002774,
0.9787860506909902,
0.9788072545666913,
0.9788284372485855,
0.9788495987578565,
0.9788707391156669,
0.9788918583431582,
0.9789129564614506,
0.9789340334916433,
0.9789550894548145,
0.9789761243720211,
0.978997138264299,
0.9790181311526632,
0.9790391030581078,
0.9790600540016056,
0.9790809840041086,
0.9791018930865478,
0.9791227812698335,
0.9791436485748548,
0.9791644950224802,
0.9791853206335569,
0.9792061254289117,
0.9792269094293505,
0.9792476726556584,
0.9792684151285995,
0.9792891368689174,
0.9793098378973348,
0.979330518234554,
0.979351177901256,
0.9793718169181018,
0.9793924353057314,
0.979413033084764,
0.9794336102757988,
0.9794541668994137,
0.9794747029761663,
0.979495218526594,
0.9795157135712134,
0.9795361881305202,
0.9795566422249903,
0.9795770758750786,
0.97959748910122,
0.9796178819238286,
0.9796382543632982,
0.9796586064400025,
0.9796789381742943,
0.9796992495865066,
0.9797195406969517,
0.9797398115259216,
0.9797600620936885,
0.9797802924205036,
0.9798005025265984,
0.9798206924321842,
0.9798408621574517,
0.9798610117225717,
0.9798811411476946,
0.9799012504529511,
0.9799213396584514,
0.9799414087842857,
0.9799614578505241,
0.9799814868772169,
0.9800014958843938,
0.980021484892065,
0.9800414539202204,
0.98006140298883,
0.9800813321178442,
0.9801012413271928,
0.980121130636786,
0.9801410000665143,
0.9801608496362479,
0.9801806793658376,
0.980200489275114,
0.980220279383888,
0.9802400497119508,
0.9802598002790734,
0.9802795311050079,
0.9802992422094856,
0.9803189336122188,
0.9803386053328998,
0.9803582573912015,
0.9803778898067769,
0.9803975025992593,
0.9804170957882624,
0.9804366693933806,
0.9804562234341883,
0.9804757579302406,
0.9804952729010729,
0.9805147683662011,
0.9805342443451219,
0.9805537008573121,
0.9805731379222291,
0.9805925555593111,
0.9806119537879766,
0.9806313326276249,
0.9806506920976357,
0.9806700322173695,
0.9806893530061673,
0.980708654483351,
0.9807279366682229,
0.9807471995800663,
0.980766443238145,
0.9807856676617036,
0.9808048728699674,
0.9808240588821429,
0.9808432257174167,
0.9808623733949567,
0.9808815019339117,
0.980900611353411,
0.9809197016725651,
0.9809387729104653,
0.9809578250861836,
0.9809768582187732,
0.9809958723272685,
0.9810148674306841,
0.9810338435480163,
0.9810528006982421,
0.9810717389003196,
0.9810906581731881,
0.9811095585357675,
0.9811284400069595,
0.9811473026056462,
0.9811661463506913,
0.9811849712609395,
0.9812037773552166,
0.9812225646523296,
0.9812413331710668,
0.9812600829301976,
0.9812788139484727,
0.9812975262446242,
0.9813162198373652,
0.9813348947453903,
0.9813535509873752,
0.9813721885819772,
0.9813908075478348,
0.981409407903568,
0.9814279896677779,
0.9814465528590472,
0.9814650974959402,
0.9814836235970025,
0.9815021311807608,
0.981520620265724,
0.9815390908703817,
0.9815575430132057,
0.9815759767126492,
0.9815943919871465,
0.9816127888551139,
0.9816311673349494,
0.981649527445032,
0.9816678692037231,
0.9816861926293652,
0.9817044977402827,
0.9817227845547816,
0.9817410530911496,
0.9817593033676563,
0.9817775354025526,
0.9817957492140718,
0.9818139448204283,
0.9818321222398189,
0.9818502814904216,
0.981868422590397,
0.9818865455578868,
0.9819046504110148,
0.981922737167887,
0.981940805846591,
0.9819588564651963,
0.9819768890417545,
0.9819949035942991,
0.9820129001408454,
0.982030878699391,
0.9820488392879153,
0.9820667819243798,
0.9820847066267281,
0.9821026134128856,
0.9821205023007602,
0.9821383733082416,
0.9821562264532018,
0.9821740617534945,
0.9821918792269564,
0.9822096788914054,
0.9822274607646424,
0.98224522486445,
0.9822629712085932,
0.9822806998148191,
0.9822984107008575,
0.98231610388442,
0.9823337793832007,
0.9823514372148759,
0.9823690773971044,
0.9823866999475273,
0.982404304883768,
0.9824218922234321,
0.9824394619841083,
0.9824570141833667,
0.9824745488387608,
0.982492065967826,
0.9825095655880802,
0.9825270477170239,
0.9825445123721404,
0.9825619595708949,
0.9825793893307355,
0.9825968016690929,
0.9826141966033805,
0.9826315741509938,
0.9826489343293114,
0.9826662771556943,
0.9826836026474861,
0.9827009108220134,
0.982718201696585,
0.9827354752884928,
0.9827527316150111,
0.9827699706933972,
0.9827871925408911,
0.9828043971747153,
0.9828215846120756,
0.98283875487016,
0.9828559079661399,
0.9828730439171689,
0.9828901627403841,
0.9829072644529051,
0.9829243490718345,
0.9829414166142576,
0.9829584670972431,
0.982975500537842,
0.9829925169530889,
0.9830095163600009,
0.9830264987755782,
0.9830434642168042,
0.9830604127006453,
0.9830773442440505,
0.9830942588639524,
0.9831111565772664,
0.9831280374008912,
0.9831449013517083,
0.9831617484465826,
0.9831785787023619,
0.9831953921358775,
0.9832121887639435,
0.9832289686033575,
0.9832457316709001,
0.9832624779833352,
0.98327920755741,
0.9832959204098549,
0.9833126165573836,
0.983329296016693,
0.9833459588044636,
0.9833626049373588,
0.9833792344320257,
0.9833958473050944,
0.9834124435731789,
0.9834290232528763,
0.9834455863607668,
0.9834621329134147,
0.9834786629273671,
0.983495176419155,
0.9835116734052926,
0.9835281539022778,
0.983544617926592,
0.9835610654946999,
0.9835774966230499,
0.983593911328074,
0.9836103096261878,
0.9836266915337903,
0.9836430570672643,
0.9836594062429761,
0.9836757390772757,
0.9836920555864969,
0.9837083557869567,
0.9837246396949564,
0.9837409073267807,
0.983757158698698,
0.9837733938269604,
0.9837896127278039,
0.9838058154174483,
0.9838220019120969,
0.9838381722279372,
0.9838543263811403,
0.9838704643878611,
0.9838865862642384,
0.983902692026395,
0.9839187816904373,
0.9839348552724559,
0.9839509127885252,
0.9839669542547035,
0.9839829796870329,
0.9839989891015398,
0.9840149825142345,
0.9840309599411109,
0.9840469213981475,
0.9840628669013066,
0.9840787964665343,
0.9840947101097611,
0.9841106078469013,
0.9841264896938536,
0.9841423556665005,
0.9841582057807089,
0.9841740400523297,
0.9841898584971978,
0.9842056611311325,
0.9842214479699374,
0.9842372190293999,
0.984252974325292,
0.9842687138733697,
0.9842844376893733,
0.9843001457890276,
0.9843158381880414,
0.9843315149021077,
0.9843471759469041,
0.9843628213380926,
0.9843784510913193,
0.9843940652222145,
0.9844096637463934,
0.9844252466794552,
0.9844408140369836,
0.9844563658345468,
0.9844719020876973,
0.9844874228119721,
0.9845029280228929,
0.9845184177359654,
0.9845338919666803,
0.9845493507305125,
0.9845647940429216,
0.9845802219193517,
0.9845956343752315,
0.984611031425974,
0.9846264130869772,
0.9846417793736235,
0.98465713030128,
0.9846724658852982,
0.9846877861410148,
0.9847030910837505,
0.9847183807288112,
0.9847336550914872,
0.9847489141870537,
0.9847641580307706,
0.9847793866378823,
0.9847946000236184,
0.9848097982031929,
0.9848249811918048,
0.9848401490046379,
0.9848553016568607,
0.9848704391636267,
0.984885561540074,
0.9849006688013259,
0.9849157609624903,
0.9849308380386602,
0.9849459000449133,
0.9849609469963125,
0.9849759789079056,
0.9849909957947249,
0.9850059976717884,
0.9850209845540986,
0.9850359564566431,
0.9850509133943947,
0.9850658553823107,
0.9850807824353344,
0.9850956945683931,
0.9851105917963999,
0.9851254741342528,
0.9851403415968348,
0.9851551941990142,
0.9851700319556443,
0.9851848548815636,
0.9851996629915957,
0.9852144563005495,
0.9852292348232191,
0.9852439985743838,
0.9852587475688079,
0.9852734818212413,
0.9852882013464189,
0.9853029061590611,
0.9853175962738733,
0.9853322717055464,
0.9853469324687566,
0.9853615785781653,
0.9853762100484195,
0.9853908268941513,
0.9854054291299782,
0.9854200167705033,
0.985434589830315,
0.9854491483239869,
0.9854636922660783,
0.9854782216711341,
0.9854927365536841,
0.9855072369282442,
0.9855217228093152,
0.9855361942113839,
0.9855506511489224,
0.9855650936363883,
0.9855795216882249,
0.9855939353188611,
0.9856083345427109,
0.9856227193741744,
0.9856370898276373,
0.9856514459174707,
0.9856657876580313,
0.9856801150636616,
0.9856944281486897,
0.9857087269274295,
0.9857230114141805,
0.9857372816232278,
0.9857515375688424,
0.9857657792652809,
0.9857800067267858,
0.9857942199675851,
0.985808419001893,
0.985822603843909,
0.9858367745078188,
0.9858509310077938,
0.9858650733579911,
0.9858792015725538,
0.9858933156656108,
0.985907415651277,
0.985921501543653,
0.9859355733568254,
0.9859496311048668,
0.9859636748018354,
0.985977704461776,
0.9859917200987187,
0.9860057217266799,
0.9860197093596619,
0.986033683011653,
0.9860476426966276,
0.9860615884285462,
0.986075520221355,
0.9860894380889866,
0.9861033420453598,
0.9861172321043788,
0.9861311082799347,
0.9861449705859042,
0.9861588190361503,
0.9861726536445223,
0.9861864744248554,
0.9862002813909709,
0.9862140745566769,
0.9862278539357668,
0.9862416195420209,
0.9862553713892055,
0.9862691094910729,
0.9862828338613623,
0.9862965445137984,
0.9863102414620928,
0.9863239247199429,
0.9863375943010327,
0.9863512502190327,
0.9863648924875992,
0.9863785211203753,
0.9863921361309902,
0.9864057375330597,
0.986419325340186,
0.9864328995659574,
0.9864464602239488,
0.9864600073277215,
0.9864735408908235,
0.986487060926789,
0.9865005674491385,
0.9865140604713794,
0.9865275400070052,
0.9865410060694964,
0.9865544586723194,
0.9865678978289277,
0.9865813235527612,
0.986594735857246,
0.9866081347557953,
0.9866215202618087,
0.9866348923886723,
0.9866482511497588,
0.9866615965584278,
0.9866749286280253,
0.986688247371884,
0.9867015528033234,
0.9867148449356495,
0.9867281237821551,
0.9867413893561199,
0.98675464167081,
0.9867678807394782,
0.9867811065753644,
0.9867943191916952,
0.9868075186016838,
0.9868207048185303,
0.9868338778554214,
0.9868470377255311,
0.9868601844420196,
0.9868733180180345,
0.98688643846671,
0.986899545801167,
0.9869126400345138,
0.9869257211798451,
0.9869387892502428,
0.9869518442587756,
0.9869648862184991,
0.9869779151424559,
0.9869909310436757,
0.987003933935175,
0.9870169238299573,
0.9870299007410132,
0.9870428646813201,
0.9870558156638428,
0.9870687537015329,
0.987081678807329,
0.9870945909941569,
0.9871074902749294,
0.9871203766625465,
0.9871332501698951,
0.9871461108098495,
0.9871589585952708,
0.9871717935390077,
0.9871846156538956,
0.9871974249527573,
0.9872102214484026,
0.9872230051536289,
0.9872357760812205,
0.9872485342439488,
0.9872612796545726,
0.9872740123258381,
0.9872867322704785,
0.9872994395012145,
0.9873121340307538,
0.9873248158717918,
0.9873374850370107,
0.9873501415390804,
0.9873627853906581,
0.9873754166043884,
0.9873880351929029,
0.9874006411688209,
0.987413234544749,
0.9874258153332813,
0.9874383835469991,
0.9874509391984714,
0.9874634823002543,
0.9874760128648915,
0.9874885309049144,
0.9875010364328416,
0.9875135294611792,
0.9875260100024209,
0.9875384780690477,
0.9875509336735286,
0.9875633768283196,
0.9875758075458645,
0.9875882258385947,
0.9876006317189291,
0.9876130251992742,
0.9876254062920241,
0.9876377750095605,
0.9876501313642527,
0.9876624753684577,
0.9876748070345203,
0.9876871263747725,
0.9876994334015344,
0.9877117281271136,
0.9877240105638055,
0.9877362807238932,
0.9877485386196473,
0.9877607842633264,
0.9877730176671767,
0.9877852388434324,
0.9877974478043151,
0.9878096445620345,
0.9878218291287878,
0.9878340015167603,
0.987846161738125,
0.9878583098050427,
0.9878704457296622,
0.9878825695241198,
0.98789468120054,
0.9879067807710352,
0.9879188682477055,
0.9879309436426388,
0.9879430069679114,
0.987955058235587,
0.9879670974577176,
0.987979124646343,
0.987991139813491,
0.9880031429711773,
0.9880151341314057,
0.988027113306168,
0.9880390805074439,
0.9880510357472013,
0.988062979037396,
0.9880749103899719,
0.9880868298168608,
0.9880987373299829,
0.9881106329412462,
0.988122516662547,
0.9881343885057696,
0.9881462484827863,
0.988158096605458,
0.988169932885633,
0.9881817573351485,
0.9881935699658293,
0.9882053707894889,
0.9882171598179285,
0.9882289370629377,
0.9882407025362944,
0.9882524562497647,
0.9882641982151028,
0.9882759284440514,
0.9882876469483413,
0.9882993537396915,
0.9883110488298094,
0.9883227322303907,
0.9883344039531193,
0.9883460640096676,
0.9883577124116962,
0.9883693491708542,
0.9883809742987788,
0.9883925878070957,
0.9884041897074192,
0.9884157800113514,
0.9884273587304836,
0.9884389258763949,
0.988450481460653,
0.9884620254948141,
0.9884735579904228,
0.9884850789590122,
0.9884965884121037,
0.9885080863612077,
0.9885195728178223,
0.9885310477934348,
0.9885425112995208,
0.988553963347544,
0.9885654039489574,
0.9885768331152021,
0.9885882508577076,
0.9885996571878926,
0.9886110521171636,
0.9886224356569164,
0.988633807818535,
0.9886451686133921,
0.9886565180528493,
0.9886678561482563,
0.9886791829109518,
0.9886904983522632,
0.9887018024835066,
0.9887130953159865,
0.9887243768609966,
0.9887356471298187,
0.9887469061337236,
0.9887581538839713,
0.9887693903918097,
0.988780615668476,
0.988791829725196,
0.9888030325731845,
0.9888142242236446,
0.9888254046877688,
0.988836573976738,
0.9888477321017219,
0.9888588790738796,
0.9888700149043582,
0.9888811396042942,
0.9888922531848131,
0.9889033556570287,
0.9889144470320442,
0.9889255273209516,
0.9889365965348316,
0.988947654684754,
0.9889587017817776,
0.9889697378369499,
0.9889807628613076,
0.9889917768658762,
0.9890027798616704,
0.9890137718596937,
0.9890247528709386,
0.9890357229063866,
0.9890466819770084,
0.9890576300937636,
0.9890685672676007,
0.9890794935094577,
0.9890904088302612,
0.9891013132409272,
0.9891122067523606,
0.9891230893754552,
0.9891339611210946,
0.9891448220001509,
0.9891556720234855,
0.989166511201949,
0.989177339546381,
0.9891881570676105,
0.9891989637764557,
0.9892097596837236,
0.9892205448002107,
0.9892313191367028,
0.9892420827039746,
0.9892528355127904,
0.9892635775739034,
0.9892743088980562,
0.9892850294959807,
0.9892957393783981,
0.9893064385560187,
0.9893171270395423,
0.9893278048396579,
0.9893384719670437,
0.9893491284323677,
0.9893597742462864,
0.9893704094194467,
0.9893810339624839,
0.9893916478860232,
0.989402251200679,
0.9894128439170553,
0.9894234260457453,
0.9894339975973315,
0.9894445585823862,
0.9894551090114708,
0.9894656488951362,
0.989476178243923,
0.9894866970683608,
0.9894972053789692,
0.9895077031862569,
0.9895181905007223,
0.9895286673328533,
0.9895391336931271,
0.9895495895920107,
0.9895600350399604,
0.9895704700474223,
0.9895808946248319,
0.9895913087826141,
0.989601712531184,
0.9896121058809455,
0.9896224888422926,
0.9896328614256089,
0.9896432236412673,
0.9896535754996306,
0.9896639170110513,
0.9896742481858712,
0.9896845690344223,
0.9896948795670256,
0.9897051797939924,
0.9897154697256234,
0.9897257493722089,
0.9897360187440293,
0.9897462778513544,
0.9897565267044437,
0.9897667653135467,
0.9897769936889025,
0.9897872118407399,
0.9897974197792777,
0.9898076175147242,
0.9898178050572778,
0.9898279824171264,
0.989838149604448,
0.9898483066294104,
0.9898584535021707,
0.9898685902328768,
0.9898787168316655,
0.9898888333086643,
0.9898989396739899,
0.9899090359377491,
0.9899191221100391,
0.9899291982009462,
0.989939264220547,
0.9899493201789082,
0.9899593660860863,
0.9899694019521275,
0.9899794277870683,
0.9899894436009349,
0.9899994494037438,
0.9900094452055012,
0.9900194310162035,
0.9900294068458368,
0.9900393727043777,
0.9900493286017924,
0.9900592745480372,
0.9900692105530589,
0.9900791366267935,
0.990089052779168,
0.9900989590200988,
0.9901088553594928,
0.9901187418072468,
0.9901286183732476,
0.9901384850673723,
0.9901483418994883,
0.9901581888794527,
0.9901680260171132,
0.9901778533223071,
0.9901876708048625,
0.9901974784745972,
0.9902072763413193,
0.9902170644148274,
0.9902268427049099,
0.9902366112213457,
0.9902463699739036,
0.990256118972343,
0.9902658582264133,
0.9902755877458543,
0.9902853075403961,
0.9902950176197588,
0.990304717993653,
0.9903144086717797,
0.9903240896638299,
0.9903337609794852,
0.9903434226284173,
0.9903530746202884,
0.990362716964751,
0.9903723496714477,
0.990381972750012,
0.9903915862100674,
0.9904011900612276,
0.9904107843130973,
0.9904203689752709,
0.9904299440573336,
0.9904395095688613,
0.9904490655194195,
0.990458611918565,
0.9904681487758444,
0.9904776761007953,
0.9904871939029453,
0.9904967021918127,
0.9905062009769064,
0.9905156902677256,
0.99052517007376,
0.9905346404044899,
0.9905441012693862,
0.9905535526779101,
0.9905629946395136,
0.990572427163639,
0.9905818502597195,
0.9905912639371784,
0.9906006682054301,
0.9906100630738793,
0.9906194485519212,
0.9906288246489419,
0.9906381913743177,
0.9906475487374162,
0.9906568967475949,
0.9906662354142024,
0.9906755647465779,
0.990684884754051,
0.9906941954459425,
0.9907034968315632,
0.9907127889202152,
0.990722071721191,
0.9907313452437737,
0.9907406094972375,
0.990749864490847,
0.9907591102338578,
0.9907683467355158,
0.9907775740050584,
0.9907867920517129,
0.9907960008846981,
0.9908052005132233,
0.9908143909464884,
0.9908235721936843,
0.9908327442639928,
0.9908419071665866,
0.9908510609106287,
0.9908602055052735,
0.9908693409596662,
0.9908784672829424,
0.990887584484229,
0.9908966925726438,
0.9909057915572952,
0.9909148814472826,
0.9909239622516964,
0.9909330339796181,
0.9909420966401195,
0.9909511502422638,
0.9909601947951052,
0.9909692303076887,
0.99097825678905,
0.9909872742482164,
0.9909962826942057,
0.9910052821360267,
0.9910142725826793,
0.9910232540431544,
0.9910322265264339,
0.9910411900414908,
0.9910501445972891,
0.9910590902027837,
0.9910680268669207,
0.9910769545986372,
0.9910858734068615,
0.9910947833005126,
0.991103684288501,
0.9911125763797282,
0.9911214595830866,
0.9911303339074599,
0.9911391993617228,
0.9911480559547413,
0.9911569036953725,
0.9911657425924644,
0.9911745726548564,
0.9911833938913791,
0.991192206310854,
0.9912010099220943,
0.9912098047339036,
0.9912185907550775,
0.9912273679944023,
0.9912361364606557,
0.9912448961626066,
0.9912536471090152,
0.9912623893086328,
0.9912711227702021,
0.991279847502457,
0.9912885635141226,
0.9912972708139155,
0.9913059694105433,
0.991314659312705,
0.9913233405290911,
0.9913320130683831,
0.9913406769392541,
0.9913493321503682,
0.9913579787103813,
0.9913666166279402,
0.9913752459116834,
0.9913838665702405,
0.9913924786122327,
0.9914010820462722,
0.9914096768809633,
0.9914182631249009,
0.9914268407866718,
0.9914354098748541,
0.9914439703980173,
0.9914525223647225,
0.9914610657835219,
0.9914696006629594,
0.9914781270115702,
0.9914866448378814,
0.9914951541504109,
0.9915036549576687,
0.9915121472681557,
0.991520631090365,
0.9915291064327808,
0.9915375733038786,
0.991546031712126,
0.9915544816659816,
0.9915629231738958,
0.9915713562443107,
0.9915797808856597,
0.9915881971063678,
0.9915966049148518,
0.9916050043195197,
0.9916133953287716,
0.9916217779509986,
0.9916301521945841,
0.9916385180679025,
0.9916468755793202,
0.9916552247371951,
0.9916635655498768,
0.9916718980257065,
0.9916802221730171,
0.9916885380001332,
0.9916968455153711,
0.9917051447270385,
0.9917134356434353,
0.9917217182728526,
0.9917299926235736,
0.991738258703873,
0.9917465165220174,
0.9917547660862649,
0.9917630074048654,
0.9917712404860609,
0.9917794653380847,
0.9917876819691621,
0.9917958903875103,
0.9918040906013378,
0.9918122826188455,
0.9918204664482256,
0.9918286420976626,
0.9918368095753324,
0.991844968889403,
0.9918531200480339,
0.9918612630593768,
0.9918693979315752,
0.9918775246727644,
0.9918856432910714,
0.9918937537946152,
0.9919018561915068,
0.9919099504898491,
0.9919180366977367,
0.9919261148232561,
0.991934184874486,
0.9919422468594967,
0.9919503007863508,
0.9919583466631026,
0.9919663844977981,
0.9919744142984758,
0.9919824360731658,
0.9919904498298904,
0.9919984555766637,
0.9920064533214917,
0.9920144430723727,
0.9920224248372969,
0.9920303986242462,
0.9920383644411951,
0.9920463222961097,
0.9920542721969482,
0.9920622141516608,
0.9920701481681902,
0.9920780742544705,
0.9920859924184282,
0.992093902667982,
0.9921018050110426,
0.9921096994555125,
0.9921175860092868,
0.9921254646802522,
0.9921333354762879,
0.9921411984052652,
0.9921490534750471,
0.9921569006934893,
0.9921647400684395,
0.9921725716077372,
0.9921803953192145,
0.9921882112106954,
0.9921960192899965,
0.9922038195649258,
0.9922116120432842,
0.9922193967328647,
0.9922271736414522,
0.992234942776824,
0.9922427041467496,
0.9922504577589909,
0.9922582036213018,
0.9922659417414286,
0.9922736721271098,
0.9922813947860761,
0.9922891097260506,
0.9922968169547486,
0.9923045164798778,
0.992312208309138,
0.9923198924502215,
0.9923275689108128,
0.9923352376985887,
0.9923428988212184,
0.9923505522863635,
0.9923581981016776,
0.9923658362748072,
0.9923734668133907,
0.992381089725059,
0.9923887050174354,
0.9923963126981357,
0.9924039127747678,
0.9924115052549322,
0.9924190901462218,
0.9924266674562219,
0.9924342371925101,
0.9924417993626565,
0.9924493539742238,
0.9924569010347669,
0.9924644405518332,
0.9924719725329627,
0.9924794969856876,
0.9924870139175329,
0.9924945233360157,
0.9925020252486461,
0.9925095196629261,
0.9925170065863507,
0.992524486026407,
0.9925319579905749,
0.9925394224863268,
0.9925468795211275,
0.9925543291024345,
0.9925617712376975,
0.9925692059343594,
0.9925766331998549,
0.9925840530416119,
0.9925914654670505,
0.9925988704835835,
0.9926062680986163,
0.9926136583195468,
0.9926210411537658,
0.9926284166086563,
0.9926357846915943,
0.992643145409948,
0.9926504987710788,
0.9926578447823401,
0.9926651834510786,
0.9926725147846331,
0.9926798387903354,
0.9926871554755099,
0.9926944648474736,
0.9927017669135362,
0.9927090616810001,
0.9927163491571607,
0.9927236293493056,
0.9927309022647154,
0.9927381679106634,
0.9927454262944155,
0.9927526774232306,
0.9927599213043602,
0.9927671579450484,
0.9927743873525323,
0.9927816095340417,
0.9927888244967992,
0.9927960322480198,
0.992803232794912,
0.9928104261446765,
0.992817612304507,
0.9928247912815902,
0.9928319630831052,
0.9928391277162243,
0.9928462851881125,
0.9928534355059275,
0.9928605786768201,
0.9928677147079338,
0.992874843606405,
0.9928819653793629,
0.9928890800339297,
0.9928961875772204,
0.992903288016343,
0.992910381358398,
0.9929174676104794,
0.9929245467796736,
0.9929316188730601,
0.9929386838977117,
0.9929457418606933,
0.9929527927690636,
0.9929598366298736,
0.9929668734501677,
0.992973903236983,
0.9929809259973496,
0.9929879417382905,
0.9929949504668222,
0.9930019521899534,
0.9930089469146862,
0.9930159346480159,
0.9930229153969304,
0.9930298891684108,
0.9930368559694314,
0.9930438158069591,
0.9930507686879543,
0.9930577146193701,
0.9930646536081528,
0.9930715856612417,
0.9930785107855693,
0.993085428988061,
0.9930923402756354,
0.993099244655204,
0.9931061421336718,
0.9931130327179364,
0.9931199164148887,
0.993126793231413,
0.9931336631743861,
0.9931405262506785,
0.9931473824671536,
0.993154231830668,
0.9931610743480713,
0.9931679100262065,
0.9931747388719095,
0.9931815608920096,
0.993188376093329,
0.9931951844826833,
0.9932019860668814,
0.9932087808527249,
0.9932155688470092,
0.9932223500565226,
0.9932291244880466,
0.9932358921483558,
0.9932426530442185,
0.9932494071823958,
0.9932561545696422,
0.9932628952127054,
0.9932696291183263,
0.9932763562932393,
0.9932830767441718,
0.9932897904778447,
0.9932964975009719,
0.9933031978202609,
0.9933098914424123,
0.99331657837412,
0.9933232586220715,
0.9933299321929471,
0.9933365990934209,
0.9933432593301599,
0.9933499129098249,
0.9933565598390698,
0.9933632001245417,
0.9933698337728815,
0.9933764607907228,
0.9933830811846932,
0.9933896949614135,
0.9933963021274975,
0.993402902689553,
0.9934094966541808,
0.993416084027975,
0.9934226648175236,
0.9934292390294076,
0.9934358066702015,
0.9934423677464733,
0.9934489222647844,
0.9934554702316897,
0.9934620116537374,
0.9934685465374693,
0.9934750748894206,
0.9934815967161199,
0.9934881120240896,
0.9934946208198451,
0.9935011231098956,
0.9935076189007438,
0.9935141081988856,
0.9935205910108108,
0.9935270673430024,
0.9935335372019374,
0.9935400005940855,
0.9935464575259106,
0.9935529080038702,
0.9935593520344148,
0.9935657896239889,
0.9935722207790303,
0.9935786455059705,
0.9935850638112347,
0.9935914757012414,
0.9935978811824028,
0.9936042802611247,
0.9936106729438066,
0.9936170592368414,
0.9936234391466158,
0.9936298126795099,
0.9936361798418976,
0.9936425406401465,
0.9936488950806175,
0.9936552431696656,
0.9936615849136391,
0.99366792031888,
0.993674249391724,
0.9936805721385007,
0.993686888565533,
0.9936931986791376,
0.9936995024856251,
0.9937057999912995,
0.9937120912024585,
0.9937183761253939,
0.9937246547663908,
0.9937309271317282,
0.9937371932276787,
0.9937434530605088,
0.9937497066364785,
0.9937559539618419,
0.9937621950428465,
0.9937684298857337,
0.9937746584967386,
0.9937808808820903,
0.9937870970480114,
0.9937933070007183,
0.9937995107464214,
0.9938057082913246,
0.993811899641626,
0.9938180848035171,
0.9938242637831832,
0.9938304365868039,
0.9938366032205522,
0.993842763690595,
0.993848918003093,
0.9938550661642012,
0.9938612081800675,
0.9938673440568346,
0.9938734738006387,
0.9938795974176097,
0.9938857149138716,
0.9938918262955421,
0.993897931568733,
0.9939040307395498,
0.9939101238140922,
0.9939162107984532,
0.9939222916987204,
0.9939283665209748,
0.9939344352712917,
0.99394049795574,
0.9939465545803828,
0.9939526051512771,
0.9939586496744736,
0.9939646881560171,
0.9939707206019466,
0.9939767470182946,
0.993982767411088,
0.9939887817863475,
0.9939947901500877,
0.9940007925083173,
0.9940067888670389,
0.9940127792322491,
0.9940187636099388,
0.9940247420060925,
0.9940307144266889,
0.9940366808777007,
0.9940426413650948,
0.9940485958948319,
0.9940545444728667,
0.9940604871051483,
0.9940664237976194,
0.9940723545562172,
0.9940782793868728,
0.994084198295511,
0.9940901112880512,
0.9940960183704068,
0.994101919548485,
0.9941078148281874,
0.9941137042154096,
0.994119587716041,
0.9941254653359657,
0.9941313370810615,
0.9941372029572004,
0.9941430629702487,
0.9941489171260666,
0.9941547654305085,
0.9941606078894232,
0.9941664445086532,
0.9941722752940355,
0.9941781002514013,
0.9941839193865758,
0.9941897327053784,
0.9941955402136226,
0.9942013419171163,
0.9942071378216615,
0.9942129279330544,
0.9942187122570855,
0.9942244907995391,
0.9942302635661944,
0.9942360305628242,
0.9942417917951958,
0.9942475472690709,
0.9942532969902051,
0.9942590409643486,
0.9942647791972453,
0.9942705116946341,
0.9942762384622477,
0.994281959505813,
0.9942876748310514,
0.9942933844436785,
0.9942990883494043,
0.9943047865539328,
0.9943104790629628,
0.9943161658821867,
0.9943218470172919,
0.9943275224739597,
0.994333192257866,
0.9943388563746806,
0.994344514830068,
0.9943501676296871,
0.9943558147791908,
0.9943614562842266,
0.9943670921504362,
0.9943727223834559,
0.9943783469889161,
0.9943839659724417,
0.9943895793396521,
0.9943951870961607,
0.9944007892475758,
0.9944063857994997,
0.9944119767575292,
0.9944175621272556,
0.9944231419142645,
0.9944287161241361,
0.9944342847624447,
0.9944398478347592,
0.9944454053466432,
0.9944509573036543,
0.9944565037113448,
0.9944620445752613,
0.994467579900945,
0.9944731096939317,
0.9944786339597511,
0.9944841527039279,
0.9944896659319812,
0.9944951736494245,
0.9945006758617656,
0.9945061725745072,
0.9945116637931463,
0.9945171495231743,
0.9945226297700771,
0.9945281045393354,
0.9945335738364242,
0.994539037666813,
0.9945444960359658,
0.9945499489493417,
0.9945553964123934,
0.9945608384305689,
0.9945662750093103,
0.9945717061540547,
0.9945771318702332,
0.9945825521632722,
0.9945879670385919,
0.9945933765016075,
0.9945987805577289,
0.9946041792123603,
0.9946095724709006,
0.9946149603387435,
0.9946203428212771,
0.9946257199238839,
0.9946310916519416,
0.994636458010822,
0.9946418190058918,
0.9946471746425122,
0.9946525249260391,
0.9946578698618231,
0.9946632094552095,
0.994668543711538,
0.9946738726361432,
0.9946791962343542,
0.994684514511495,
0.9946898274728841,
0.9946951351238347,
0.9947004374696548,
0.9947057345156468,
0.9947110262671082,
0.994716312729331,
0.9947215939076018,
0.9947268698072023,
0.9947321404334084,
0.9947374057914912,
0.994742665886716,
0.9947479207243436,
0.9947531703096287,
0.9947584146478214,
0.9947636537441662,
0.9947688876039025,
0.9947741162322644,
0.9947793396344808,
0.9947845578157753,
0.9947897707813665,
0.9947949785364675,
0.9948001810862863,
0.9948053784360258,
0.9948105705908835,
0.9948157575560519,
0.9948209393367182,
0.9948261159380645,
0.9948312873652675,
0.994836453623499,
0.9948416147179255,
0.9948467706537084,
0.9948519214360039,
0.994857067069963,
0.9948622075607315,
0.9948673429134502,
0.9948724731332549,
0.9948775982252759,
0.9948827181946385,
0.9948878330464629,
0.9948929427858644,
0.994898047417953,
0.9949031469478333,
0.9949082413806054,
0.9949133307213638,
0.9949184149751982,
0.9949234941471929,
0.9949285682424277,
0.9949336372659766,
0.9949387012229092,
0.9949437601182893,
0.9949488139571764,
0.9949538627446244,
0.9949589064856825,
0.9949639451853945,
0.9949689788487995,
0.9949740074809315,
0.9949790310868191,
0.9949840496714862,
0.994989063239952,
0.9949940717972299,
0.994999075348329,
0.9950040738982528,
0.9950090674520005,
0.9950140560145655,
0.9950190395909368,
0.9950240181860983,
0.9950289918050287,
0.995033960452702,
0.995038924134087,
0.9950438828541476,
0.9950488366178429,
0.9950537854301268,
0.9950587292959484,
0.9950636682202518,
0.9950686022079762,
0.9950735312640558,
0.99507845539342,
0.995083374600993,
0.9950882888916944,
0.9950931982704387,
0.9950981027421355,
0.9951030023116895,
0.9951078969840006,
0.9951127867639636,
0.9951176716564686,
0.9951225516664007,
0.9951274267986403,
0.9951322970580625,
0.9951371624495381,
0.9951420229779325,
0.9951468786481066,
0.9951517294649163,
0.9951565754332126,
0.9951614165578417,
0.995166252843645,
0.9951710842954592,
0.9951759109181157,
0.9951807327164416,
0.9951855496952587,
0.9951903618593845,
0.9951951692136313,
0.9951999717628065,
0.9952047695117132,
0.9952095624651491,
0.9952143506279076,
0.9952191340047771,
0.9952239126005411,
0.9952286864199785,
0.9952334554678633,
0.995238219748965,
0.9952429792680478,
0.9952477340298717,
0.9952524840391915,
0.9952572293007577,
0.9952619698193155,
0.9952667055996058,
0.9952714366463649,
0.9952761629643235,
0.9952808845582086,
0.9952856014327419,
0.9952903135926405,
0.9952950210426169,
0.9952997237873786,
0.9953044218316287,
0.9953091151800655,
0.9953138038373824,
0.9953184878082685,
0.995323167097408,
0.9953278417094803,
0.9953325116491603,
0.9953371769211181,
0.9953418375300194,
0.9953464934805248,
0.9953511447772908,
0.9953557914249686,
0.9953604334282052,
0.9953650707916429,
0.9953697035199193,
0.9953743316176673,
0.9953789550895152,
0.9953835739400867,
0.995388188174001,
0.9953927977958725,
0.995397402810311,
0.9954020032219217,
0.9954065990353055,
0.9954111902550582,
0.9954157768857713,
0.9954203589320317,
0.9954249363984217,
0.9954295092895189,
0.9954340776098966,
0.9954386413641231,
0.9954432005567625,
0.9954477551923743,
0.9954523052755132,
0.9954568508107297,
0.9954613918025694,
0.9954659282555736,
0.995470460174279,
0.9954749875632176,
0.9954795104269173,
0.9954840287699008,
0.9954885425966871,
0.9954930519117899,
0.995497556719719,
0.9955020570249792,
0.9955065528320712,
0.995511044145491,
0.9955155309697301,
0.9955200133092755,
0.9955244911686099,
0.9955289645522113,
0.9955334334645533,
0.995537897910105,
0.9955423578933312,
0.9955468134186921,
0.9955512644906432,
0.9955557111136362,
0.9955601532921176,
0.9955645910305299,
0.9955690243333111,
0.9955734532048947,
0.9955778776497097,
0.995582297672181,
0.9955867132767287,
0.9955911244677687,
0.9955955312497122,
0.9955999336269664,
0.9956043316039339,
0.9956087251850128,
0.995613114374597,
0.9956174991770758,
0.9956218795968342,
0.995626255638253,
0.9956306273057085,
0.9956349946035723,
0.9956393575362121,
0.9956437161079911,
0.995648070323268,
0.9956524201863972,
0.9956567657017289,
0.9956611068736088,
0.9956654437063782,
0.9956697762043742,
0.9956741043719296,
0.9956784282133726,
0.9956827477330275,
0.9956870629352138,
0.995691373824247,
0.9956956804044383,
0.9956999826800944,
0.9957042806555179,
0.9957085743350067,
0.9957128637228551,
0.9957171488233524,
0.9957214296407839,
0.9957257061794309,
0.99572997844357,
0.9957342464374737,
0.99573851016541,
0.9957427696316432,
0.9957470248404329,
0.9957512757960342,
0.9957555225026986,
0.9957597649646729,
0.9957640031861998,
0.9957682371715177,
0.995772466924861,
0.9957766924504593,
0.9957809137525385,
0.9957851308353203,
0.9957893437030217,
0.995793552359856,
0.9957977568100319,
0.9958019570577542,
0.9958061531072232,
0.9958103449626353,
0.9958145326281826,
0.9958187161080528,
0.9958228954064298,
0.9958270705274929,
0.9958312414754176,
0.9958354082543749,
0.9958395708685319,
0.9958437293220515,
0.995847883619092,
0.9958520337638084,
0.9958561797603507,
0.9958603216128652,
0.9958644593254941,
0.9958685929023751,
0.9958727223476421,
0.9958768476654247,
0.9958809688598484,
0.9958850859350348,
0.995889198895101,
0.9958933077441602,
0.9958974124863215,
0.9959015131256896,
0.9959056096663658,
0.9959097021124464,
0.9959137904680244,
0.9959178747371882,
0.9959219549240222,
0.9959260310326069,
0.9959301030670187,
0.9959341710313295,
0.9959382349296079,
0.9959422947659177,
0.995946350544319,
0.9959504022688679,
0.9959544499436163,
0.9959584935726119,
0.9959625331598987,
0.9959665687095164,
0.9959706002255008,
0.9959746277118836,
0.9959786511726926,
0.9959826706119512,
0.9959866860336793,
0.9959906974418925,
0.9959947048406023,
0.9959987082338163,
0.9960027076255381,
0.9960067030197673,
0.9960106944204996,
0.9960146818317265,
0.9960186652574355,
0.9960226447016105,
0.996026620168231,
0.9960305916612726,
0.9960345591847071,
0.996038522742502,
0.9960424823386215,
0.996046437977025,
0.9960503896616684,
0.9960543373965037,
0.9960582811854788,
0.9960622210325376,
0.9960661569416203,
0.9960700889166628,
0.9960740169615975,
0.9960779410803524,
0.996081861276852,
0.9960857775550167,
0.9960896899187629,
0.9960935983720031,
0.9960975029186461,
0.9961014035625965,
0.9961053003077552,
0.9961091931580192,
0.9961130821172814,
0.9961169671894311,
0.9961208483783535,
0.99612472568793,
0.996128599122038,
0.9961324686845513,
0.9961363343793396,
0.9961401962102687,
0.9961440541812008,
0.9961479082959939,
0.9961517585585024,
0.9961556049725766,
0.9961594475420633,
0.9961632862708052,
0.9961671211626412,
0.9961709522214064,
0.9961747794509319,
0.9961786028550454,
0.9961824224375704,
0.9961862382023265,
0.99619005015313,
0.9961938582937927,
0.996197662628123,
0.9962014631599255,
0.996205259893001,
0.9962090528311464,
0.9962128419781546,
0.9962166273378151,
0.9962204089139135,
0.9962241867102315,
0.9962279607305472,
0.9962317309786346,
0.9962354974582642,
0.9962392601732029,
0.9962430191272131,
0.9962467743240545,
0.9962505257674822,
0.9962542734612478,
0.9962580174090994,
0.996261757614781,
0.9962654940820328,
0.9962692268145917,
0.9962729558161907,
0.9962766810905587,
0.9962804026414214,
0.9962841204725003,
0.9962878345875137,
0.9962915449901757,
0.996295251684197,
0.9962989546732843,
0.996302653961141,
0.9963063495514665,
0.9963100414479565,
0.9963137296543032,
0.996317414174195,
0.9963210950113164,
0.9963247721693486,
0.9963284456519688,
0.9963321154628508,
0.9963357816056646,
0.9963394440840765,
0.9963431029017491,
0.9963467580623415,
0.9963504095695089,
0.9963540574269032,
0.9963577016381723,
0.9963613422069605,
0.9963649791369087,
0.9963686124316541,
0.9963722420948299,
0.9963758681300662,
0.9963794905409891,
0.9963831093312211,
0.9963867245043814,
0.9963903360640851,
0.9963939440139442,
0.9963975483575667,
0.996401149098557,
0.9964047462405163,
0.9964083397870417,
0.996411929741727,
0.9964155161081624,
0.9964190988899343,
0.9964226780906258,
0.9964262537138161,
0.9964298257630813,
0.9964333942419933,
0.996436959154121,
0.9964405205030293,
0.9964440782922799,
0.9964476325254307,
0.9964511832060361,
0.996454730337647,
0.9964582739238106,
0.9964618139680707,
0.9964653504739676,
0.9964688834450379,
0.9964724128848149,
0.996475938796828,
0.9964794611846035,
0.9964829800516638,
0.996486495401528,
0.9964900072377116,
0.9964935155637267,
0.9964970203830816,
0.9965005216992816,
0.996504019515828,
0.9965075138362187,
0.9965110046639485,
0.9965144920025081,
0.9965179758553852,
0.9965214562260636,
0.9965249331180241,
0.9965284065347437,
0.996531876479696,
0.9965353429563509,
0.9965388059681755,
0.9965422655186325,
0.9965457216111818,
0.9965491742492798,
0.9965526234363793,
0.9965560691759294,
0.9965595114713763,
0.9965629503261624,
0.9965663857437266,
0.9965698177275045,
0.9965732462809284,
0.996576671407427,
0.9965800931104255,
0.9965835113933458,
0.9965869262596064,
0.9965903377126223,
0.9965937457558052,
0.9965971503925631,
0.9966005516263011,
0.9966039494604204,
0.9966073438983192,
0.9966107349433918,
0.9966141225990297,
0.9966175068686206,
0.9966208877555489,
0.9966242652631958,
0.9966276393949388,
0.9966310101541523,
0.9966343775442073,
0.9966377415684712,
0.9966411022303083,
0.9966444595330795,
0.996647813480142,
0.9966511640748501,
0.9966545113205546,
0.9966578552206029,
0.996661195778339,
0.9966645329971036,
0.9966678668802342,
0.9966711974310648,
0.996674524652926,
0.9966778485491454,
0.9966811691230469,
0.9966844863779514,
0.9966878003171761,
0.9966911109440353,
0.9966944182618397,
0.9966977222738967,
0.9967010229835107,
0.9967043203939825,
0.9967076145086096,
0.9967109053306862,
0.9967141928635034,
0.996717477110349,
0.9967207580745072,
0.9967240357592593,
0.9967273101678831,
0.9967305813036531,
0.9967338491698406,
0.9967371137697139,
0.9967403751065373,
0.9967436331835727,
0.9967468880040782,
0.9967501395713086,
0.996753387888516,
0.9967566329589486,
0.9967598747858517,
0.9967631133724674,
0.9967663487220342,
0.9967695808377879,
0.9967728097229606,
0.9967760353807813,
0.996779257814476,
0.9967824770272671,
0.9967856930223742,
0.9967889058030133,
0.9967921153723973,
0.9967953217337361,
0.9967985248902361,
0.9968017248451007,
0.9968049216015298,
0.9968081151627206,
0.9968113055318666,
0.9968144927121585,
0.9968176767067836,
0.9968208575189259,
0.9968240351517667,
0.9968272096084834,
0.9968303808922508,
0.9968335490062404,
0.9968367139536204,
0.996839875737556,
0.9968430343612089,
0.9968461898277381,
0.9968493421402992,
0.9968524913020447,
0.9968556373161237,
0.9968587801856826,
0.9968619199138644,
0.996865056503809,
0.996868189958653,
0.9968713202815301,
0.9968744474755709,
0.9968775715439024,
0.9968806924896492,
0.9968838103159322,
0.9968869250258695,
0.9968900366225759,
0.9968931451091632,
0.9968962504887399,
0.9968993527644117,
0.996902451939281,
0.996905548016447,
0.9969086409990061,
0.9969117308900514,
0.9969148176926728,
0.9969179014099574,
0.9969209820449891,
0.9969240596008486,
0.9969271340806137,
0.9969302054873589,
0.9969332738241559,
0.9969363390940731,
0.9969394013001759,
0.9969424604455267,
0.9969455165331849,
0.9969485695662066,
0.996951619547645,
0.9969546664805503,
0.9969577103679697,
0.9969607512129469,
0.9969637890185231,
0.9969668237877363,
0.9969698555236214,
0.9969728842292102,
0.9969759099075316,
0.9969789325616115,
0.9969819521944727,
0.9969849688091348,
0.9969879824086149,
0.9969909929959263,
0.9969940005740802,
0.996997005146084,
0.9970000067149426,
0.9970030052836576,
0.9970060008552278,
0.9970089934326489,
0.9970119830189136,
0.9970149696170117,
0.9970179532299299,
0.997020933860652,
0.9970239115121587,
0.997026886187428,
0.9970298578894344,
0.99703282662115,
0.9970357923855436,
0.9970387551855812,
0.9970417150242256,
0.9970446719044368,
0.997047625829172,
0.9970505768013851,
0.9970535248240273,
0.9970564699000467,
0.9970594120323886,
0.9970623512239953,
0.997065287477806,
0.9970682207967573,
0.9970711511837824,
0.9970740786418122,
0.9970770031737739,
0.9970799247825926,
0.9970828434711896,
0.9970857592424841,
0.9970886720993918,
0.9970915820448258,
0.9970944890816963,
0.9970973932129102,
0.997100294441372,
0.997103192769983,
0.9971060882016417,
0.9971089807392436,
0.9971118703856815,
0.9971147571438451,
0.9971176410166214,
0.9971205220068943,
0.997123400117545,
0.9971262753514517,
0.9971291477114899,
0.997132017200532,
0.9971348838214477,
0.9971377475771036,
0.9971406084703638,
0.9971434665040892,
0.9971463216811381,
0.9971491740043658,
0.9971520234766246,
0.9971548701007643,
0.9971577138796316,
0.9971605548160704,
0.9971633929129218,
0.997166228173024,
0.9971690605992125,
0.9971718901943198,
0.9971747169611757,
0.997177540902607,
0.9971803620214379,
0.9971831803204895,
0.9971859958025804,
0.9971888084705262,
0.9971916183271395,
0.9971944253752306,
0.9971972296176066,
0.9972000310570718,
0.9972028296964278,
0.9972056255384734,
0.9972084185860046,
0.9972112088418146,
0.9972139963086937,
0.9972167809894296,
0.997219562886807,
0.9972223420036082,
0.9972251183426122,
0.9972278919065956,
0.9972306626983319,
0.9972334307205923,
0.9972361959761449,
0.997238958467755,
0.9972417181981854,
0.9972444751701958,
0.9972472293865432,
0.9972499808499823,
0.9972527295632644,
0.9972554755291385,
0.9972582187503507,
0.9972609592296443,
0.9972636969697599,
0.9972664319734356,
0.9972691642434062,
0.9972718937824042,
0.9972746205931595,
0.9972773446783989,
0.9972800660408465,
0.997282784683224,
0.99728550060825,
0.9972882138186407,
0.9972909243171094,
0.9972936321063668,
0.9972963371891207,
0.9972990395680763,
0.9973017392459363,
0.9973044362254003,
0.9973071305091656,
0.9973098220999266,
0.9973125110003749,
0.9973151972131995,
0.997317880741087,
0.9973205615867208,
0.997323239752782,
0.9973259152419489,
0.9973285880568971,
0.9973312582002996,
0.9973339256748266,
0.9973365904831457,
0.997339252627922,
0.9973419121118176,
0.9973445689374921,
0.9973472231076026,
0.9973498746248034,
0.9973525234917461,
0.9973551697110796,
0.9973578132854504,
0.9973604542175022,
0.9973630925098759,
0.9973657281652101,
0.9973683611861405,
0.9973709915753003,
0.99737361933532,
0.9973762444688276,
0.9973788669784481,
0.9973814868668044,
0.9973841041365163,
0.9973867187902014,
0.9973893308304744,
0.9973919402599475,
0.9973945470812302,
0.9973971512969294,
0.9973997529096497,
0.9974023519219926,
0.9974049483365572,
0.9974075421559404,
0.9974101333827358,
0.9974127220195348,
0.9974153080689263,
0.9974178915334965,
0.9974204724158288,
0.9974230507185042,
0.9974256264441015,
0.9974281995951961,
0.9974307701743617,
0.9974333381841686,
0.9974359036271853,
0.997438466505977,
0.9974410268231071,
0.9974435845811357,
0.997446139782621,
0.997448692430118,
0.9974512425261798,
0.9974537900733564,
0.9974563350741955,
0.9974588775312424,
0.9974614174470394,
0.9974639548241269,
0.997466489665042,
0.99746902197232,
0.9974715517484932,
0.9974740789960915,
0.9974766037176422,
0.9974791259156703,
0.9974816455926981,
0.9974841627512454,
0.9974866773938293,
0.9974891895229648,
0.9974916991411641,
0.9974942062509368,
0.9974967108547903,
0.9974992129552294,
0.9975017125547561,
0.9975042096558702,
0.9975067042610689,
0.9975091963728471,
0.9975116859936968,
0.997514173126108,
0.9975166577725677,
0.9975191399355609,
0.9975216196175697,
0.997524096821074,
0.9975265715485512,
0.997529043802476,
0.9975315135853209,
0.9975339808995557,
0.9975364457476479,
0.9975389081320624,
0.9975413680552618,
0.9975438255197061,
0.997546280527853,
0.9975487330821574,
0.9975511831850722,
0.9975536308390476,
0.9975560760465312,
0.9975585188099685,
0.9975609591318022,
0.997563397014473,
0.9975658324604187,
0.997568265472075,
0.997570696051875,
0.9975731242022493,
0.9975755499256264,
0.9975779732244319,
0.9975803941010892,
0.9975828125580196,
0.9975852285976414,
0.9975876422223708,
0.9975900534346217,
0.9975924622368053,
0.9975948686313306,
0.997597272620604,
0.9975996742070298,
0.9976020733930094,
0.9976044701809424,
0.9976068645732256,
0.9976092565722535,
0.9976116461804182,
0.9976140334001096,
0.9976164182337147,
0.9976188006836187,
0.9976211807522042,
0.9976235584418512,
0.9976259337549378,
0.9976283066938391,
0.9976306772609284,
0.9976330454585761,
0.9976354112891509,
0.9976377747550185,
0.9976401358585425,
0.9976424946020842,
0.9976448509880025,
0.9976472050186538,
0.9976495566963922,
0.9976519060235696,
0.9976542530025354,
0.9976565976356369,
0.9976589399252184,
0.9976612798736227,
0.9976636174831898,
0.9976659527562572,
0.9976682856951605,
0.9976706163022329,
0.9976729445798047,
0.9976752705302047,
0.9976775941557586,
0.9976799154587905,
0.9976822344416216,
0.9976845511065711,
0.9976868654559558,
0.9976891774920899,
0.9976914872172858,
0.9976937946338534,
0.9976960997441001,
0.9976984025503312,
0.9977007030548495,
0.9977030012599557,
0.9977052971679481,
0.9977075907811227,
0.9977098821017734,
0.9977121711321913,
0.997714457874666,
0.9977167423314839,
0.9977190245049299,
0.997721304397286,
0.9977235820108326,
0.997725857347847,
0.9977281304106049,
0.9977304012013795,
0.9977326697224416,
0.9977349359760598,
0.9977371999645005,
0.9977394616900279,
0.9977417211549038,
0.9977439783613876,
0.997746233311737,
0.9977484860082066,
0.9977507364530496,
0.9977529846485164,
0.9977552305968552,
0.9977574743003123,
0.9977597157611312,
0.9977619549815538,
0.9977641919638193,
0.9977664267101647,
0.997768659222825,
0.9977708895040327,
0.9977731175560183,
0.9977753433810099,
0.9977775669812335,
0.9977797883589128,
0.9977820075162691,
0.997784224455522,
0.9977864391788883,
0.9977886516885829,
0.9977908619868185,
0.9977930700758054,
0.9977952759577519,
0.9977974796348638,
0.9977996811093451,
0.9978018803833973,
0.9978040774592198,
0.9978062723390098,
0.9978084650249622,
0.99781065551927,
0.9978128438241235,
0.9978150299417113,
0.9978172138742196,
0.9978193956238326,
0.9978215751927318,
0.9978237525830973,
0.9978259277971062,
0.9978281008369341,
0.997830271704754,
0.997832440402737,
0.9978346069330518,
0.9978367712978652,
0.9978389334993414,
0.9978410935396429,
0.9978432514209298,
0.9978454071453601,
0.9978475607150896,
0.9978497121322721,
0.997851861399059,
0.9978540085175998,
0.9978561534900414,
0.9978582963185293,
0.9978604370052062,
0.997862575552213,
0.9978647119616882,
0.9978668462357685,
0.9978689783765882,
0.9978711083862795,
0.9978732362669726,
0.9978753620207953,
0.9978774856498738,
0.9978796071563315,
0.9978817265422902,
0.9978838438098694,
0.9978859589611864,
0.9978880719983565,
0.9978901829234927,
0.9978922917387063,
0.997894398446106,
0.9978965030477986,
0.997898605545889,
0.9979007059424798,
0.9979028042396713,
0.9979049004395619,
0.9979069945442481,
0.9979090865558241,
0.9979111764763818,
0.9979132643080114,
0.9979153500528009,
0.9979174337128359,
0.9979195152902003,
0.9979215947869758,
0.997923672205242,
0.9979257475470765,
0.9979278208145546,
0.9979298920097497,
0.9979319611347331,
0.9979340281915742,
0.9979360931823399,
0.9979381561090954,
0.9979402169739038,
0.997942275778826,
0.997944332525921,
0.9979463872172454,
0.9979484398548543,
0.9979504904408002,
0.9979525389771339,
0.997954585465904,
0.9979566299091572,
0.997958672308938,
0.9979607126672888,
0.9979627509862501,
0.9979647872678604,
0.997966821514156,
0.9979688537271714,
0.9979708839089386,
0.9979729120614882,
0.9979749381868483,
0.9979769622870452,
0.997978984364103,
0.997981004420044,
0.9979830224568883,
0.997985038476654,
0.9979870524813573,
0.9979890644730123,
0.9979910744536309,
0.9979930824252234,
0.9979950883897979,
0.9979970923493603,
0.9979990943059147,
0.9980010942614633,
0.998003092218006,
0.9980050881775409,
0.998007082142064,
0.9980090741135694,
0.9980110640940493,
0.9980130520854936,
0.9980150380898906,
0.9980170221092262,
0.9980190041454845,
0.9980209842006479,
0.9980229622766963,
0.9980249383756079,
0.9980269124993589,
0.9980288846499238,
0.9980308548292744,
0.9980328230393813,
0.9980347892822128,
0.998036753559735,
0.9980387158739126,
0.9980406762267077,
0.9980426346200809,
0.9980445910559907,
0.9980465455363937,
0.9980484980632444,
0.9980504486384952,
0.9980523972640972,
0.9980543439419989,
0.9980562886741471,
0.9980582314624865,
0.9980601723089603,
0.9980621112155091,
0.9980640481840721,
0.9980659832165863,
0.9980679163149869,
0.9980698474812071,
0.998071776717178,
0.9980737040248291,
0.9980756294060876,
0.9980775528628794,
0.9980794743971275,
0.9980813940107539,
0.9980833117056783,
0.9980852274838183,
0.99808714134709,
0.9980890532974072,
0.9980909633366819,
0.9980928714668245,
0.9980947776897429,
0.9980966820073436,
0.9980985844215309,
0.9981004849342074,
0.9981023835472739,
0.9981042802626288,
0.9981061750821689,
0.9981080680077893,
0.998109959041383,
0.998111848184841,
0.9981137354400527,
0.9981156208089054,
0.9981175042932844,
0.9981193858950734,
0.9981212656161542,
0.9981231434584065,
0.9981250194237082,
0.9981268935139355,
0.9981287657309624,
0.9981306360766614};
//Find the correct [j][k] element for a given x1 and x2
if ( x1 == wreg[JMAX] ) {
j = JMAX;
} else {
for ( int y = 0; y <= JMAX; y++ ) {
if ( ( wreg[y] <= x1 ) && ( x1 < wreg[y + 1] ) ) {
j = y;
break;
}
}
}
if ( x2 > ularge[KMAX - 1] ) {
k = KMAX;
} else {
for ( int z = 0; z <= KMAX; z++ ) {
if ( ( ularge[z] <= x2 ) && ( x2 < ularge[z + 1] ) ) {
k = z;
break;
}
}
}
//Calculate sigma() using Bi-Linear interpolaion
double y0, y1, y2, y3;
double t, u;
if ( k == KMAX ) {
ans = sigma[k][j];
}
else {
y0 = sigma[k][j];
y1 = sigma[k][j + 1];
y2 = sigma[k + 1][j + 1];
y3 = sigma[k + 1][j];
t = ( x1 - wreg[j] ) / ( wreg[j + 1] - wreg[j] );
u = ( x2 - ularge[k] ) / ( ularge[k + 1] - ularge[k] );
ans = ( 1 - t ) * ( 1 - u ) * y0 + t * ( 1 - u ) * y1 + t * u * y2 +
( 1 - t ) * u * y3;
}
}
return ans;
}
diff --git a/src/EvtGenModels/EvtVubBLNP.cpp b/src/EvtGenModels/EvtVubBLNP.cpp
index 7bacd41..548dae9 100644
--- a/src/EvtGenModels/EvtVubBLNP.cpp
+++ b/src/EvtGenModels/EvtVubBLNP.cpp
@@ -1,1041 +1,1031 @@
-//////////////////////////////////////////////////////////////////////
-//
-// Module: EvtVubBLNP.cc
-//
-// Description: Modeled on Riccardo Faccini's EvtVubNLO module
-//
-// tripleDiff from BLNP's notebook (based on BLNP4, hep-ph/0504071)
-//
-//////////////////////////////////////////////////////////////////
-
#include "EvtGenModels/EvtVubBLNP.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtItgPtrFunction.hh"
#include "EvtGenModels/EvtItgSimpsonIntegrator.hh"
#include "EvtGenModels/EvtPFermi.hh"
#include <stdlib.h>
#include <string>
// For incomplete gamma function
#include "math.h"
#include "signal.h"
#define ITMAX 100
#define EPS 3.0e-7
#define FPMIN 1.0e-30
using std::cout;
using std::endl;
std::string EvtVubBLNP::getName()
{
return "VUB_BLNP";
}
EvtDecayBase* EvtVubBLNP::clone()
{
return new EvtVubBLNP;
}
void EvtVubBLNP::init()
{
// get parameters (declared in the header file)
// Input parameters
mBB = 5.2792;
lambda2 = 0.12;
// Shape function parameters
b = getArg( 0 );
Lambda = getArg( 1 );
Ecut = 1.8;
wzero = mBB - 2 * Ecut;
// SF and SSF modes
itype = (int)getArg( 5 );
dtype = getArg( 5 );
isubl = (int)getArg( 6 );
// flags
flag1 = (int)getArg( 7 );
flag2 = (int)getArg( 8 );
flag3 = (int)getArg( 9 );
// Quark mass
mb = 4.61;
// hidden parameter what and SF stuff
const double xlow = 0;
const double xhigh = mBB;
const int aSize = 10000;
EvtPFermi pFermi( Lambda, b );
// pf is the cumulative distribution normalized to 1.
_pf.resize( aSize );
for ( int i = 0; i < aSize; i++ ) {
double what = xlow + (double)( i + 0.5 ) / ( (double)aSize ) *
( xhigh - xlow );
if ( i == 0 )
_pf[i] = pFermi.getSFBLNP( what );
else
_pf[i] = _pf[i - 1] + pFermi.getSFBLNP( what );
}
for ( size_t i = 0; i < _pf.size(); i++ ) {
_pf[i] /= _pf[_pf.size() - 1];
}
// Matching scales
muh = mBB * getArg( 2 ); // 0.5
mui = getArg( 3 ); // 1.5
mubar = getArg( 4 ); // 1.5
// Perturbative quantities
CF = 4.0 / 3.0;
CA = 3.0;
double nf = 4.0;
beta0 = 11.0 / 3.0 * CA - 2.0 / 3.0 * nf;
beta1 = 34.0 / 3.0 * CA * CA - 10.0 / 3.0 * CA * nf - 2.0 * CF * nf;
beta2 = 2857.0 / 54.0 * CA * CA * CA +
( CF * CF - 205.0 / 18.0 * CF * CA - 1415.0 / 54.0 * CA * CA ) * nf +
( 11.0 / 9.0 * CF + 79.0 / 54.0 * CA ) * nf * nf;
zeta3 = 1.0 + 1 / 8.0 + 1 / 27.0 + 1 / 64.0;
Gamma0 = 4 * CF;
Gamma1 = CF * ( ( 268.0 / 9.0 - 4.0 * M_PI * M_PI / 3.0 ) * CA -
40.0 / 9.0 * nf );
Gamma2 = 16 * CF *
( ( 245.0 / 24.0 - 67.0 / 54.0 * M_PI * M_PI +
+11.0 / 180.0 * pow( M_PI, 4 ) + 11.0 / 6.0 * zeta3 ) *
CA * CA *
+( -209.0 / 108.0 + 5.0 / 27.0 * M_PI * M_PI -
7.0 / 3.0 * zeta3 ) *
CA * nf +
( -55.0 / 24.0 + 2 * zeta3 ) * CF * nf - nf * nf / 27.0 );
gp0 = -5.0 * CF;
gp1 = -8.0 * CF *
( ( 3.0 / 16.0 - M_PI * M_PI / 4.0 + 3 * zeta3 ) * CF +
( 1549.0 / 432.0 + 7.0 / 48.0 * M_PI * M_PI - 11.0 / 4.0 * zeta3 ) *
CA -
( 125.0 / 216.0 + M_PI * M_PI / 24.0 ) * nf );
// Lbar and mupisq
Lbar = Lambda; // all models
mupisq = 3 * Lambda * Lambda / b;
if ( itype == 1 )
mupisq = 3 * Lambda * Lambda / b;
if ( itype == 2 )
mupisq = 3 * Lambda * Lambda *
( Gamma( 1 + 0.5 * b ) * Gamma( 0.5 * b ) /
pow( Gamma( 0.5 + 0.5 * b ), 2 ) -
1 );
// moment2 for SSFs
moment2 = pow( 0.3, 3 );
// inputs for total rate (T for Total); use BLNP notebook defaults
flagpower = 1;
flag2loop = 1;
// stuff for the integrator
maxLoop = 20;
//precision = 1.0e-3;
precision = 2.0e-2;
// vector of global variables, to pass to static functions (which can't access globals);
gvars.push_back( 0.0 ); // 0
gvars.push_back( 0.0 ); // 1
gvars.push_back( mui ); // 2
gvars.push_back( b ); // 3
gvars.push_back( Lambda ); // 4
gvars.push_back( mBB ); // 5
gvars.push_back( mb ); // 6
gvars.push_back( wzero ); // 7
gvars.push_back( beta0 ); // 8
gvars.push_back( beta1 ); // 9
gvars.push_back( beta2 ); // 10
gvars.push_back( dtype ); // 11
// check that there are 3 daughters and 10 arguments
checkNDaug( 3 );
checkNArg( 10 );
}
void EvtVubBLNP::initProbMax()
{
noProbMax();
}
void EvtVubBLNP::decay( EvtParticle* Bmeson )
{
int j;
EvtParticle *xuhad( 0 ), *lepton( 0 ), *neutrino( 0 );
EvtVector4R p4;
double Pp, Pm, Pl, pdf, EX, sh, ml, mpi, ratemax;
double El( 0. );
double xhigh, xlow, what;
Bmeson->initializePhaseSpace( getNDaug(), getDaugs() );
xuhad = Bmeson->getDaug( 0 );
lepton = Bmeson->getDaug( 1 );
neutrino = Bmeson->getDaug( 2 );
mBB = Bmeson->mass();
ml = lepton->mass();
// get SF value
xlow = 0;
xhigh = mBB;
// the case for alphas = 0 is not considered
what = 2 * xhigh;
while ( what > xhigh || what < xlow ) {
what = findBLNPWhat();
what = xlow + what * ( xhigh - xlow );
}
bool tryit = true;
while ( tryit ) {
// generate pp between 0 and
// Flat(min, max) gives R(max - min) + min, where R = random btwn 0 and 1
Pp = EvtRandom::Flat( 0, mBB ); // P+ = EX - |PX|
Pl = EvtRandom::Flat( 0, mBB ); // mBB - 2El
Pm = EvtRandom::Flat( 0, mBB ); // P- = EX + |PX|
sh = Pm * Pp;
EX = 0.5 * ( Pm + Pp );
El = 0.5 * ( mBB - Pl );
// Need maximum rate. Waiting for Mr. Paz to give it to me.
// Meanwhile, use this.
ratemax = 3.0; // From trial and error - most events below 3.0
// kinematic bounds (Eq. 2)
mpi = 0.14;
if ( ( Pp > 0 ) && ( Pp <= Pl ) && ( Pl <= Pm ) && ( Pm < mBB ) &&
( El > ml ) && ( sh > 4 * mpi * mpi ) ) {
// Probability of pass proportional to PDF
pdf = rate3( Pp, Pl, Pm );
double testRan = EvtRandom::Flat( 0., ratemax );
if ( pdf >= testRan )
tryit = false;
}
}
// o.k. we have the three kineamtic variables
// now calculate a flat cos Theta_H [-1,1] distribution of the
// hadron flight direction w.r.t the B flight direction
// because the B is a scalar and should decay isotropic.
// Then chose a flat Phi_H [0,2Pi] w.r.t the B flight direction
// and and a flat Phi_L [0,2Pi] in the W restframe w.r.t the
// W flight direction.
double ctH = EvtRandom::Flat( -1, 1 );
double phH = EvtRandom::Flat( 0, 2 * M_PI );
double phL = EvtRandom::Flat( 0, 2 * M_PI );
// now compute the four vectors in the B Meson restframe
double ptmp, sttmp;
// calculate the hadron 4 vector in the B Meson restframe
sttmp = sqrt( 1 - ctH * ctH );
ptmp = sqrt( EX * EX - sh );
double pHB[4] = {EX, ptmp * sttmp * cos( phH ), ptmp * sttmp * sin( phH ),
ptmp * ctH};
p4.set( pHB[0], pHB[1], pHB[2], pHB[3] );
xuhad->init( getDaug( 0 ), p4 );
bool _storeWhat( true );
if ( _storeWhat ) {
// cludge to store the hidden parameter what with the decay;
// the lifetime of the Xu is abused for this purpose.
// tau = 1 ps corresponds to ctau = 0.3 mm -> in order to
// stay well below BaBars sensitivity we take what/(10000 GeV).
// To extract what back from the StdHepTrk its necessary to get
// delta_ctau = Xu->decayVtx()->point().distanceTo(XuDaughter->decayVtx()->point());
//
// what = delta_ctau * 100000 * Mass_Xu/Momentum_Xu
//
xuhad->setLifetime( what / 10000. );
}
// calculate the W 4 vector in the B Meson restrframe
double apWB = ptmp;
double pWB[4] = {mBB - EX, -pHB[1], -pHB[2], -pHB[3]};
// first go in the W restframe and calculate the lepton and
// the neutrino in the W frame
double mW2 = mBB * mBB + sh - 2 * mBB * EX;
double beta = ptmp / pWB[0];
double gamma = pWB[0] / sqrt( mW2 );
double pLW[4];
ptmp = ( mW2 - ml * ml ) / 2 / sqrt( mW2 );
pLW[0] = sqrt( ml * ml + ptmp * ptmp );
double ctL = ( El - gamma * pLW[0] ) / beta / gamma / ptmp;
if ( ctL < -1 )
ctL = -1;
if ( ctL > 1 )
ctL = 1;
sttmp = sqrt( 1 - ctL * ctL );
// eX' = eZ x eW
double xW[3] = {-pWB[2], pWB[1], 0};
// eZ' = eW
double zW[3] = {pWB[1] / apWB, pWB[2] / apWB, pWB[3] / apWB};
double lx = sqrt( xW[0] * xW[0] + xW[1] * xW[1] );
for ( j = 0; j < 2; j++ )
xW[j] /= lx;
// eY' = eZ' x eX'
double yW[3] = {-pWB[1] * pWB[3], -pWB[2] * pWB[3],
pWB[1] * pWB[1] + pWB[2] * pWB[2]};
double ly = sqrt( yW[0] * yW[0] + yW[1] * yW[1] + yW[2] * yW[2] );
for ( j = 0; j < 3; j++ )
yW[j] /= ly;
// p_lep = |p_lep| * ( sin(Theta) * cos(Phi) * eX'
// + sin(Theta) * sin(Phi) * eY'
// + cos(Theta) * eZ')
for ( j = 0; j < 3; j++ )
pLW[j + 1] = sttmp * cos( phL ) * ptmp * xW[j] +
sttmp * sin( phL ) * ptmp * yW[j] + ctL * ptmp * zW[j];
double apLW = ptmp;
// boost them back in the B Meson restframe
double appLB = beta * gamma * pLW[0] + gamma * ctL * apLW;
ptmp = sqrt( El * El - ml * ml );
double ctLL = appLB / ptmp;
if ( ctLL > 1 )
ctLL = 1;
if ( ctLL < -1 )
ctLL = -1;
double pLB[4] = {El, 0, 0, 0};
double pNB[4] = {pWB[0] - El, 0, 0, 0};
for ( j = 1; j < 4; j++ ) {
pLB[j] = pLW[j] + ( ctLL * ptmp - ctL * apLW ) / apWB * pWB[j];
pNB[j] = pWB[j] - pLB[j];
}
p4.set( pLB[0], pLB[1], pLB[2], pLB[3] );
lepton->init( getDaug( 1 ), p4 );
p4.set( pNB[0], pNB[1], pNB[2], pNB[3] );
neutrino->init( getDaug( 2 ), p4 );
return;
}
double EvtVubBLNP::rate3( double Pp, double Pl, double Pm )
{
// rate3 in units of GF^2*Vub^2/pi^3
double factor = 1.0 / 16 * ( mBB - Pp ) * U1lo( muh, mui ) *
pow( ( Pm - Pp ) / ( mBB - Pp ), alo( muh, mui ) );
double doneJS = DoneJS( Pp, Pm, mui );
double done1 = Done1( Pp, Pm, mui );
double done2 = Done2( Pp, Pm, mui );
double done3 = Done3( Pp, Pm, mui );
// The EvtSimpsonIntegrator returns zero for bad integrals.
// So if any of the integrals are zero (ie bad), return zero.
// This will cause pdf = 0, so the event will not pass.
// I hope this will not introduce a bias.
if ( doneJS * done1 * done2 * done3 == 0.0 ) {
//cout << "Integral failed: (Pp, Pm, Pl) = (" << Pp << ", " << Pm << ", " << Pl << ")" << endl;
return 0.0;
}
// if (doneJS*done1*done2*done3 != 0.0) {
// cout << "Integral OK: (Pp, Pm, Pl) = (" << Pp << ", " << Pm << ", " << Pl << ")" << endl;
//}
double f1 = F1( Pp, Pm, muh, mui, mubar, doneJS, done1 );
double f2 = F2( Pp, Pm, muh, mui, mubar, done3 );
double f3 = F3( Pp, Pm, muh, mui, mubar, done2 );
double answer = factor * ( ( mBB + Pl - Pp - Pm ) * ( Pm - Pl ) * f1 +
2 * ( Pl - Pp ) * ( Pm - Pl ) * f2 +
( mBB - Pm ) * ( Pm - Pp ) * f3 );
return answer;
}
double EvtVubBLNP::F1( double Pp, double Pm, double muh, double mui,
double mubar, double doneJS, double done1 )
{
std::vector<double> vars( 12 );
vars[0] = Pp;
vars[1] = Pm;
for ( int j = 2; j < 12; j++ ) {
vars[j] = gvars[j];
}
double y = ( Pm - Pp ) / ( mBB - Pp );
double ah = CF * alphas( muh, vars ) / 4 / M_PI;
double ai = CF * alphas( mui, vars ) / 4 / M_PI;
double abar = CF * alphas( mubar, vars ) / 4 / M_PI;
double lambda1 = -mupisq;
double t1 = -4 * ai / ( Pp - Lbar ) * ( 2 * log( ( Pp - Lbar ) / mui ) + 1 );
double t2 = 1 + dU1nlo( muh, mui ) + anlo( muh, mui ) * log( y );
double t3 = -4.0 * pow( log( y * mb / muh ), 2 ) +
10.0 * log( y * mb / muh ) - 4.0 * log( y ) -
2.0 * log( y ) / ( 1 - y ) - 4.0 * PolyLog( 2, 1 - y ) -
M_PI * M_PI / 6.0 - 12.0;
double t4 = 2 * pow( log( y * mb * Pp / ( mui * mui ) ), 2 ) -
3 * log( y * mb * Pp / ( mui * mui ) ) + 7 - M_PI * M_PI;
double t5 = -wS( Pp ) + 2 * t( Pp ) +
( 1.0 / y - 1.0 ) * ( u( Pp ) - v( Pp ) );
double t6 = -( lambda1 + 3.0 * lambda2 ) / 3.0 +
1.0 / pow( y, 2 ) * ( 4.0 / 3.0 * lambda1 - 2.0 * lambda2 );
double shapePp = Shat( Pp, vars );
double answer = ( t2 + ah * t3 + ai * t4 ) * shapePp + ai * doneJS +
1 / ( mBB - Pp ) * ( flag2 * abar * done1 + flag1 * t5 ) +
1 / pow( mBB - Pp, 2 ) * flag3 * shapePp * t6;
if ( Pp > Lbar + mui / exp( 0.5 ) )
answer = answer + t1;
return answer;
}
double EvtVubBLNP::F2( double Pp, double Pm, double muh, double /*mui*/,
double mubar, double done3 )
{
std::vector<double> vars( 12 );
vars[0] = Pp;
vars[1] = Pm;
for ( int j = 2; j < 12; j++ ) {
vars[j] = gvars[j];
}
double y = ( Pm - Pp ) / ( mBB - Pp );
double lambda1 = -mupisq;
double ah = CF * alphas( muh, vars ) / 4 / M_PI;
double abar = CF * alphas( mubar, vars ) / 4 / M_PI;
double t6 = -wS( Pp ) - 2 * t( Pp ) + 1.0 / y * ( t( Pp ) + v( Pp ) );
double t7 = 1 / pow( y, 2 ) * ( 2.0 / 3.0 * lambda1 + 4.0 * lambda2 ) -
1 / y * ( 2.0 / 3.0 * lambda1 + 3.0 / 2.0 * lambda2 );
double shapePp = Shat( Pp, vars );
double answer = ah * log( y ) / ( 1 - y ) * shapePp +
1 / ( mBB - Pp ) *
( flag2 * abar * 0.5 * done3 + flag1 / y * t6 ) +
1.0 / pow( mBB - Pp, 2 ) * flag3 * shapePp * t7;
return answer;
}
double EvtVubBLNP::F3( double Pp, double Pm, double /*muh*/, double /*mui*/,
double mubar, double done2 )
{
std::vector<double> vars( 12 );
vars[0] = Pp;
vars[1] = Pm;
for ( int j = 2; j < 12; j++ ) {
vars[j] = gvars[j];
}
double y = ( Pm - Pp ) / ( mBB - Pp );
double lambda1 = -mupisq;
double abar = CF * alphas( mubar, vars ) / 4 / M_PI;
double t7 = 1.0 / pow( y, 2 ) * ( -2.0 / 3.0 * lambda1 + lambda2 );
double shapePp = Shat( Pp, vars );
double answer = 1.0 / ( Pm - Pp ) * flag2 * 0.5 * y * abar * done2 +
1.0 / pow( mBB - Pp, 2 ) * flag3 * shapePp * t7;
return answer;
}
double EvtVubBLNP::DoneJS( double Pp, double Pm, double /*mui*/ )
{
std::vector<double> vars( 12 );
vars[0] = Pp;
vars[1] = Pm;
for ( int j = 2; j < 12; j++ ) {
vars[j] = gvars[j];
}
double lowerlim = 0.001 * Pp;
double upperlim = ( 1.0 - 0.001 ) * Pp;
auto func = EvtItgPtrFunction{&IntJS, lowerlim, upperlim, vars};
auto integ = EvtItgSimpsonIntegrator{func, precision, maxLoop};
return integ.evaluate( lowerlim, upperlim );
}
double EvtVubBLNP::Done1( double Pp, double Pm, double /*mui*/ )
{
std::vector<double> vars( 12 );
vars[0] = Pp;
vars[1] = Pm;
for ( int j = 2; j < 12; j++ ) {
vars[j] = gvars[j];
}
double lowerlim = 0.001 * Pp;
double upperlim = ( 1.0 - 0.001 ) * Pp;
auto func = EvtItgPtrFunction{&Int1, lowerlim, upperlim, vars};
auto integ = EvtItgSimpsonIntegrator{func, precision, maxLoop};
return integ.evaluate( lowerlim, upperlim );
}
double EvtVubBLNP::Done2( double Pp, double Pm, double /*mui*/ )
{
std::vector<double> vars( 12 );
vars[0] = Pp;
vars[1] = Pm;
for ( int j = 2; j < 12; j++ ) {
vars[j] = gvars[j];
}
double lowerlim = 0.001 * Pp;
double upperlim = ( 1.0 - 0.001 ) * Pp;
auto func = EvtItgPtrFunction{&Int2, lowerlim, upperlim, vars};
auto integ = EvtItgSimpsonIntegrator{func, precision, maxLoop};
return integ.evaluate( lowerlim, upperlim );
}
double EvtVubBLNP::Done3( double Pp, double Pm, double /*mui*/ )
{
std::vector<double> vars( 12 );
vars[0] = Pp;
vars[1] = Pm;
for ( int j = 2; j < 12; j++ ) {
vars[j] = gvars[j];
}
double lowerlim = 0.001 * Pp;
double upperlim = ( 1.0 - 0.001 ) * Pp;
auto func = EvtItgPtrFunction{&Int3, lowerlim, upperlim, vars};
auto integ = EvtItgSimpsonIntegrator{func, precision, maxLoop};
return integ.evaluate( lowerlim, upperlim );
}
double EvtVubBLNP::Int1( double what, const std::vector<double>& vars )
{
return Shat( what, vars ) * g1( what, vars );
}
double EvtVubBLNP::Int2( double what, const std::vector<double>& vars )
{
return Shat( what, vars ) * g2( what, vars );
}
double EvtVubBLNP::Int3( double what, const std::vector<double>& vars )
{
return Shat( what, vars ) * g3( what, vars );
}
double EvtVubBLNP::IntJS( double what, const std::vector<double>& vars )
{
double Pp = vars[0];
double Pm = vars[1];
double mui = vars[2];
double mBB = vars[5];
double mb = vars[6];
double y = ( Pm - Pp ) / ( mBB - Pp );
return 1 / ( Pp - what ) * ( Shat( what, vars ) - Shat( Pp, vars ) ) *
( 4 * log( y * mb * ( Pp - what ) / ( mui * mui ) ) - 3 );
}
double EvtVubBLNP::g1( double w, const std::vector<double>& vars )
{
double Pp = vars[0];
double Pm = vars[1];
double mBB = vars[5];
double y = ( Pm - Pp ) / ( mBB - Pp );
double x = ( Pp - w ) / ( mBB - Pp );
double q1 = ( 1 + x ) * ( 1 + x ) * y * ( x + y );
double q2 = y * ( -9 + 10 * y ) + x * x * ( -12.0 + 13.0 * y ) +
2 * x * ( -8.0 + 6 * y + 3 * y * y );
double q3 = 4 / x * log( y + y / x );
double q4 = 3.0 * pow( x, 4 ) * ( -2.0 + y ) - 2 * pow( y, 3 ) -
4 * pow( x, 3 ) * ( 2.0 + y ) - 2 * x * y * y * ( 4 + y ) -
x * x * y * ( 12 + 4 * y + y * y );
double q5 = log( 1 + y / x );
double answer = q2 / q1 - q3 - 2 * q4 * q5 / ( q1 * y * x );
return answer;
}
double EvtVubBLNP::g2( double w, const std::vector<double>& vars )
{
double Pp = vars[0];
double Pm = vars[1];
double mBB = vars[5];
double y = ( Pm - Pp ) / ( mBB - Pp );
double x = ( Pp - w ) / ( mBB - Pp );
double q1 = ( 1 + x ) * ( 1 + x ) * pow( y, 3 ) * ( x + y );
double q2 = 10.0 * pow( x, 4 ) + y * y +
3.0 * pow( x, 2 ) * y * ( 10.0 + y ) +
pow( x, 3 ) * ( 12.0 + 19.0 * y ) +
x * y * ( 8.0 + 4.0 * y + y * y );
double q3 = 5 * pow( x, 4 ) + 2.0 * y * y +
6.0 * pow( x, 3 ) * ( 1.0 + 2.0 * y ) +
4.0 * x * y * ( 1 + 2.0 * y ) + x * x * y * ( 18.0 + 5.0 * y );
double q4 = log( 1 + y / x );
double answer = 2.0 / q1 * ( y * q2 - 2 * x * q3 * q4 );
return answer;
}
double EvtVubBLNP::g3( double w, const std::vector<double>& vars )
{
double Pp = vars[0];
double Pm = vars[1];
double mBB = vars[5];
double y = ( Pm - Pp ) / ( mBB - Pp );
double x = ( Pp - w ) / ( mBB - Pp );
double q1 = ( 1 + x ) * ( 1 + x ) * pow( y, 3 ) * ( x + y );
double q2 = 2.0 * pow( y, 3 ) * ( -11.0 + 2.0 * y ) -
10.0 * pow( x, 4 ) * ( 6 - 6 * y + y * y ) +
x * y * y * ( -94.0 + 29.0 * y + 2.0 * y * y ) +
2.0 * x * x * y * ( -72.0 + 18.0 * y + 13.0 * y * y ) -
x * x * x * ( 72.0 + 42.0 * y - 70.0 * y * y + 3.0 * y * y * y );
double q3 = -6.0 * x * ( -5.0 + y ) * pow( y, 3 ) + 4 * pow( y, 4 ) +
5 * pow( x, 5 ) * ( 6 - 6 * y + y * y ) -
4 * x * x * y * y * ( -20.0 + 6 * y + y * y ) +
pow( x, 3 ) * y * ( 90.0 - 10.0 * y - 28.0 * y * y + y * y * y ) +
pow( x, 4 ) * ( 36.0 + 36.0 * y - 50.0 * y * y + 4 * y * y * y );
double q4 = log( 1 + y / x );
double answer = q2 / q1 + 2 / q1 / y * q3 * q4;
return answer;
}
double EvtVubBLNP::Shat( double w, const std::vector<double>& vars )
{
double mui = vars[2];
double b = vars[3];
double Lambda = vars[4];
double wzero = vars[7];
int itype = (int)vars[11];
double norm = 0.0;
double shape = 0.0;
if ( itype == 1 ) {
double Lambar = ( Lambda / b ) *
( Gamma( 1 + b ) - Gamma( 1 + b, b * wzero / Lambda ) ) /
( Gamma( b ) - Gamma( b, b * wzero / Lambda ) );
double muf = wzero - Lambar;
double mupisq = 3 * pow( Lambda, 2 ) / pow( b, 2 ) *
( Gamma( 2 + b ) -
Gamma( 2 + b, b * wzero / Lambda ) ) /
( Gamma( b ) - Gamma( b, b * wzero / Lambda ) ) -
3 * Lambar * Lambar;
norm = Mzero( muf, mui, mupisq, vars ) * Gamma( b ) /
( Gamma( b ) - Gamma( b, b * wzero / Lambda ) );
shape = pow( b, b ) / Lambda / Gamma( b ) * pow( w / Lambda, b - 1 ) *
exp( -b * w / Lambda );
}
if ( itype == 2 ) {
double dcoef = pow( Gamma( 0.5 * ( 1 + b ) ) / Gamma( 0.5 * b ), 2 );
double t1 = wzero * wzero * dcoef / ( Lambda * Lambda );
double Lambar =
Lambda * ( Gamma( 0.5 * ( 1 + b ) ) - Gamma( 0.5 * ( 1 + b ), t1 ) ) /
pow( dcoef, 0.5 ) / ( Gamma( 0.5 * b ) - Gamma( 0.5 * b, t1 ) );
double muf = wzero - Lambar;
double mupisq = 3 * Lambda * Lambda *
( Gamma( 1 + 0.5 * b ) - Gamma( 1 + 0.5 * b, t1 ) ) /
dcoef / ( Gamma( 0.5 * b ) - Gamma( 0.5 * b, t1 ) ) -
3 * Lambar * Lambar;
norm = Mzero( muf, mui, mupisq, vars ) * Gamma( 0.5 * b ) /
( Gamma( 0.5 * b ) -
Gamma( 0.5 * b, wzero * wzero * dcoef / ( Lambda * Lambda ) ) );
shape = 2 * pow( dcoef, 0.5 * b ) / Lambda / Gamma( 0.5 * b ) *
pow( w / Lambda, b - 1 ) *
exp( -dcoef * w * w / ( Lambda * Lambda ) );
}
double answer = norm * shape;
return answer;
}
double EvtVubBLNP::Mzero( double muf, double mu, double mupisq,
const std::vector<double>& vars )
{
double CF = 4.0 / 3.0;
double amu = CF * alphas( mu, vars ) / M_PI;
double answer = 1 -
amu * ( pow( log( muf / mu ), 2 ) + log( muf / mu ) +
M_PI * M_PI / 24.0 ) +
amu * ( log( muf / mu ) - 0.5 ) * mupisq / ( 3 * muf * muf );
return answer;
}
double EvtVubBLNP::wS( double w )
{
double answer = ( Lbar - w ) * Shat( w, gvars );
return answer;
}
double EvtVubBLNP::t( double w )
{
double t1 = -3 * lambda2 / mupisq * ( Lbar - w ) * Shat( w, gvars );
double myf = myfunction( w, Lbar, moment2 );
double myBIK = myfunctionBIK( w, Lbar, moment2 );
double answer = t1;
if ( isubl == 1 )
answer = t1;
if ( isubl == 3 )
answer = t1 - myf;
if ( isubl == 4 )
answer = t1 + myf;
if ( isubl == 5 )
answer = t1 - myBIK;
if ( isubl == 6 )
answer = t1 + myBIK;
return answer;
}
double EvtVubBLNP::u( double w )
{
double u1 = -2 * ( Lbar - w ) * Shat( w, gvars );
double myf = myfunction( w, Lbar, moment2 );
double myBIK = myfunctionBIK( w, Lbar, moment2 );
double answer = u1;
if ( isubl == 1 )
answer = u1;
if ( isubl == 3 )
answer = u1 + myf;
if ( isubl == 4 )
answer = u1 - myf;
if ( isubl == 5 )
answer = u1 + myBIK;
if ( isubl == 6 )
answer = u1 - myBIK;
return answer;
}
double EvtVubBLNP::v( double w )
{
double v1 = 3 * lambda2 / mupisq * ( Lbar - w ) * Shat( w, gvars );
double myf = myfunction( w, Lbar, moment2 );
double myBIK = myfunctionBIK( w, Lbar, moment2 );
double answer = v1;
if ( isubl == 1 )
answer = v1;
if ( isubl == 3 )
answer = v1 - myf;
if ( isubl == 4 )
answer = v1 + myf;
if ( isubl == 5 )
answer = v1 - myBIK;
if ( isubl == 6 )
answer = v1 + myBIK;
return answer;
}
double EvtVubBLNP::myfunction( double w, double Lbar, double mom2 )
{
double bval = 5.0;
double x = w / Lbar;
double factor = 0.5 * mom2 * pow( bval / Lbar, 3 );
double answer = factor * exp( -bval * x ) *
( 1 - 2 * bval * x + 0.5 * bval * bval * x * x );
return answer;
}
double EvtVubBLNP::myfunctionBIK( double w, double Lbar, double /*mom2*/ )
{
double aval = 10.0;
double normBIK = ( 4 - M_PI ) * M_PI * M_PI / 8 / ( 2 - M_PI ) / aval + 1;
double z = 3 * M_PI * w / 8 / Lbar;
double q = M_PI * M_PI * 2 * pow( M_PI * aval, 0.5 ) * exp( -aval * z * z ) /
( 4 * M_PI - 8 ) * ( 1 - 2 * pow( aval / M_PI, 0.5 ) * z ) +
8 / pow( 1 + z * z, 4 ) *
( z * log( z ) + 0.5 * z * ( 1 + z * z ) -
M_PI / 4 * ( 1 - z * z ) );
double answer = q / normBIK;
return answer;
}
double EvtVubBLNP::dU1nlo( double muh, double mui )
{
double ai = alphas( mui, gvars );
double ah = alphas( muh, gvars );
double q1 = ( ah - ai ) / ( 4 * M_PI * beta0 );
double q2 = log( mb / muh ) * Gamma1 + gp1;
double q3 = 4 * beta1 * ( log( mb / muh ) * Gamma0 + gp0 ) +
Gamma2 * ( 1 - ai / ah );
double q4 = beta1 * beta1 * Gamma0 * ( -1.0 + ai / ah ) /
( 4 * pow( beta0, 3 ) );
double q5 = -beta2 * Gamma0 * ( 1.0 + ai / ah ) +
beta1 * Gamma1 * ( 3 - ai / ah );
double q6 = beta1 * beta1 * Gamma0 * ( ah - ai ) / beta0 -
beta2 * Gamma0 * ah + beta1 * Gamma1 * ai;
double answer =
q1 * ( q2 - q3 / 4 / beta0 + q4 + q5 / ( 4 * beta0 * beta0 ) ) +
1 / ( 8 * M_PI * beta0 * beta0 * beta0 ) * log( ai / ah ) * q6;
return answer;
}
double EvtVubBLNP::U1lo( double muh, double mui )
{
double epsilon = 0.0;
double answer = pow( mb / muh, -2 * aGamma( muh, mui, epsilon ) ) *
exp( 2 * Sfun( muh, mui, epsilon ) -
2 * agp( muh, mui, epsilon ) );
return answer;
}
double EvtVubBLNP::Sfun( double mu1, double mu2, double epsilon )
{
double a1 = alphas( mu1, gvars ) / 4 / M_PI;
double a2 = alphas( mu2, gvars ) / alphas( mu1, gvars );
double answer = S0( a1, a2 ) + S1( a1, a2 ) + epsilon * S2( a1, a2 );
return answer;
}
double EvtVubBLNP::S0( double a1, double r )
{
double answer = -Gamma0 / ( 4.0 * beta0 * beta0 * a1 ) *
( -1.0 + 1.0 / r + log( r ) );
return answer;
}
double EvtVubBLNP::S1( double /*a1*/, double r )
{
double answer = Gamma0 / ( 4 * beta0 * beta0 ) *
( 0.5 * log( r ) * log( r ) * beta1 / beta0 +
( Gamma1 / Gamma0 - beta1 / beta0 ) * ( 1 - r + log( r ) ) );
return answer;
}
double EvtVubBLNP::S2( double a1, double r )
{
double w1 = pow( beta1, 2 ) / pow( beta0, 2 ) - beta2 / beta0 -
beta1 * Gamma1 / ( beta0 * Gamma0 ) + Gamma2 / Gamma0;
double w2 = pow( beta1, 2 ) / pow( beta0, 2 ) - beta2 / beta0;
double w3 = beta1 * Gamma1 / ( beta0 * Gamma0 ) - beta2 / beta0;
double w4 = a1 * Gamma0 / ( 4 * beta0 * beta0 );
double answer = w4 *
( -0.5 * pow( 1 - r, 2 ) * w1 + w2 * ( 1 - r ) * log( r ) +
w3 * ( 1 - r + r * log( r ) ) );
return answer;
}
double EvtVubBLNP::aGamma( double mu1, double mu2, double epsilon )
{
double a1 = alphas( mu1, gvars );
double a2 = alphas( mu2, gvars );
double answer = Gamma0 / ( 2 * beta0 ) * log( a2 / a1 ) +
epsilon * ( a2 - a1 ) / ( 8.0 * M_PI ) *
( Gamma1 / beta0 - beta1 * Gamma0 / ( beta0 * beta0 ) );
return answer;
}
double EvtVubBLNP::agp( double mu1, double mu2, double epsilon )
{
double a1 = alphas( mu1, gvars );
double a2 = alphas( mu2, gvars );
double answer = gp0 / ( 2 * beta0 ) * log( a2 / a1 ) +
epsilon * ( a2 - a1 ) / ( 8.0 * M_PI ) *
( gp1 / beta0 - beta1 * gp0 / ( beta0 * beta0 ) );
return answer;
}
double EvtVubBLNP::alo( double muh, double mui )
{
return -2.0 * aGamma( muh, mui, 0 );
}
double EvtVubBLNP::anlo( double muh, double mui )
{ // d/depsilon of aGamma
double ah = alphas( muh, gvars );
double ai = alphas( mui, gvars );
double answer = ( ah - ai ) / ( 8.0 * M_PI ) *
( Gamma1 / beta0 - beta1 * Gamma0 / ( beta0 * beta0 ) );
return answer;
}
double EvtVubBLNP::alphas( double mu, const std::vector<double>& vars )
{
// Note: Lambda4 and Lambda5 depend on mbMS = 4.25
// So if you change mbMS, then you will have to recalculate them.
double beta0 = vars[8];
double beta1 = vars[9];
double beta2 = vars[10];
double Lambda4 = 0.298791;
double lg = 2 * log( mu / Lambda4 );
double answer = 4 * M_PI / ( beta0 * lg ) *
( 1 - beta1 * log( lg ) / ( beta0 * beta0 * lg ) +
beta1 * beta1 / ( beta0 * beta0 * beta0 * beta0 * lg * lg ) *
( ( log( lg ) - 0.5 ) * ( log( lg ) - 0.5 ) -
5.0 / 4.0 + beta2 * beta0 / ( beta1 * beta1 ) ) );
return answer;
}
double EvtVubBLNP::PolyLog( double v, double z )
{
if ( z >= 1 )
cout << "Error in EvtVubBLNP: 2nd argument to PolyLog is >= 1." << endl;
double sum = 0.0;
for ( int k = 1; k < 101; k++ ) {
sum = sum + pow( z, k ) / pow( k, v );
}
return sum;
}
double EvtVubBLNP::Gamma( double z )
{
if ( z <= 0 )
return 0;
double v = lgamma( z );
return exp( v );
}
double EvtVubBLNP::Gamma( double a, double x )
{
double LogGamma;
/* if (x<0.0 || a<= 0.0) raise(SIGFPE);*/
if ( x < 0.0 )
x = 0.0;
if ( a <= 0.0 )
a = 1.e-50;
LogGamma = lgamma( a );
if ( x < ( a + 1.0 ) )
return gamser( a, x, LogGamma );
else
return 1.0 - gammcf( a, x, LogGamma );
}
/* ------------------Incomplete gamma function-----------------*/
/* ------------------via its series representation-------------*/
double EvtVubBLNP::gamser( double a, double x, double LogGamma )
{
double n;
double ap, del, sum;
ap = a;
del = sum = 1.0 / a;
for ( n = 1; n < ITMAX; n++ ) {
++ap;
del *= x / ap;
sum += del;
if ( fabs( del ) < fabs( sum ) * EPS )
return sum * exp( -x + a * log( x ) - LogGamma );
}
raise( SIGFPE );
return 0.0;
}
/* ------------------Incomplete gamma function complement------*/
/* ------------------via its continued fraction representation-*/
double EvtVubBLNP::gammcf( double a, double x, double LogGamma )
{
double an, b, c, d, del, h;
int i;
b = x + 1.0 - a;
c = 1.0 / FPMIN;
d = 1.0 / b;
h = d;
for ( i = 1; i < ITMAX; i++ ) {
an = -i * ( i - a );
b += 2.0;
d = an * d + b;
if ( fabs( d ) < FPMIN )
d = FPMIN;
c = b + an / c;
if ( fabs( c ) < FPMIN )
c = FPMIN;
d = 1.0 / d;
del = d * c;
h *= del;
if ( fabs( del - 1.0 ) < EPS )
return exp( -x + a * log( x ) - LogGamma ) * h;
}
raise( SIGFPE );
return 0.0;
}
double EvtVubBLNP::findBLNPWhat()
{
double ranNum = EvtRandom::Flat();
double oOverBins = 1.0 / ( float( _pf.size() ) );
int nBinsBelow = 0; // largest k such that I[k] is known to be <= rand
int nBinsAbove = _pf.size(); // largest k such that I[k] is known to be > rand
int middle;
while ( nBinsAbove > nBinsBelow + 1 ) {
middle = ( nBinsAbove + nBinsBelow + 1 ) >> 1;
if ( ranNum >= _pf[middle] ) {
nBinsBelow = middle;
} else {
nBinsAbove = middle;
}
}
double bSize = _pf[nBinsAbove] - _pf[nBinsBelow];
// binMeasure is always aProbFunc[nBinsBelow],
if ( bSize == 0 ) {
// rand lies right in a bin of measure 0. Simply return the center
// of the range of that bin. (Any value between k/N and (k+1)/N is
// equally good, in this rare case.)
return ( nBinsBelow + .5 ) * oOverBins;
}
double bFract = ( ranNum - _pf[nBinsBelow] ) / bSize;
return ( nBinsBelow + bFract ) * oOverBins;
}
diff --git a/src/EvtGenModels/EvtVubBLNPHybrid.cpp b/src/EvtGenModels/EvtVubBLNPHybrid.cpp
index 35600ef..d54b4f1 100644
--- a/src/EvtGenModels/EvtVubBLNPHybrid.cpp
+++ b/src/EvtGenModels/EvtVubBLNPHybrid.cpp
@@ -1,1173 +1,1162 @@
-
-//////////////////////////////////////////////////////////////////////
-//
-// Module: EvtVubBLNPHybrid.cc
-//
-// Description: Modeled on Riccardo Faccini's EvtVubNLO module
-//
-// tripleDiff from BLNP's notebook (based on BLNP4, hep-ph/0504071)
-//
-//////////////////////////////////////////////////////////////////
-
#include "EvtGenModels/EvtVubBLNPHybrid.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtItgPtrFunction.hh"
#include "EvtGenModels/EvtItgSimpsonIntegrator.hh"
#include "EvtGenModels/EvtPFermi.hh"
#include <stdlib.h>
#include <string>
// For incomplete gamma function
#include "math.h"
#include "signal.h"
#define ITMAX 100
#define EPS 3.0e-7
#define FPMIN 1.0e-30
using std::cout;
using std::endl;
std::string EvtVubBLNPHybrid::getName()
{
return "VUB_BLNPHYBRID";
}
EvtDecayBase* EvtVubBLNPHybrid::clone()
{
return new EvtVubBLNPHybrid;
}
void EvtVubBLNPHybrid::init()
{
// check that there are at least 3 arguments
if ( getNArg() < EvtVubBLNPHybrid::nParameters ) {
EvtGenReport( EVTGEN_ERROR, "EvtVubBLNPHybrid" )
<< "EvtVubBLNPHybrid generator expected "
<< "at least " << EvtVubBLNPHybrid::nParameters
<< " arguments but found: " << getNArg()
<< "\nWill terminate execution!" << endl;
::abort();
} else if ( getNArg() == EvtVubBLNPHybrid::nParameters ) {
EvtGenReport( EVTGEN_WARNING, "EvtVubBLNPHybrid" )
<< "EvtVubBLNPHybrid: generate B -> Xu l nu events "
<< "without using the hybrid reweighting." << endl;
_noHybrid = true;
} else if ( getNArg() <
EvtVubBLNPHybrid::nParameters + EvtVubBLNPHybrid::nVariables ) {
EvtGenReport( EVTGEN_ERROR, "EvtVubBLNPHybrid" )
<< "EvtVubBLNPHybrid could not read number of bins for "
<< "all variables used in the reweighting\n"
<< "Will terminate execution!" << endl;
::abort();
}
// get parameters (declared in the header file)
// Input parameters
mBB = 5.2792;
lambda2 = 0.12;
// Shape function parameters
b = getArg( 0 );
Lambda = getArg( 1 );
Ecut = 1.8;
wzero = mBB - 2 * Ecut;
// SF and SSF modes
itype = (int)getArg( 5 );
dtype = getArg( 5 );
isubl = (int)getArg( 6 );
// flags
flag1 = (int)getArg( 7 );
flag2 = (int)getArg( 8 );
flag3 = (int)getArg( 9 );
// Quark mass
mb = 4.61;
// hidden parameter what and SF stuff
const double xlow = 0;
const double xhigh = mBB;
const int aSize = 10000;
EvtPFermi pFermi( Lambda, b );
// pf is the cumulative distribution normalized to 1.
_pf.resize( aSize );
for ( int i = 0; i < aSize; i++ ) {
double what = xlow + (double)( i + 0.5 ) / ( (double)aSize ) *
( xhigh - xlow );
if ( i == 0 )
_pf[i] = pFermi.getSFBLNP( what );
else
_pf[i] = _pf[i - 1] + pFermi.getSFBLNP( what );
}
for ( size_t i = 0; i < _pf.size(); i++ ) {
_pf[i] /= _pf[_pf.size() - 1];
}
// Matching scales
muh = mBB * getArg( 2 ); // 0.5
mui = getArg( 3 ); // 1.5
mubar = getArg( 4 ); // 1.5
// Perturbative quantities
CF = 4.0 / 3.0;
CA = 3.0;
double nf = 4.0;
beta0 = 11.0 / 3.0 * CA - 2.0 / 3.0 * nf;
beta1 = 34.0 / 3.0 * CA * CA - 10.0 / 3.0 * CA * nf - 2.0 * CF * nf;
beta2 = 2857.0 / 54.0 * CA * CA * CA +
( CF * CF - 205.0 / 18.0 * CF * CA - 1415.0 / 54.0 * CA * CA ) * nf +
( 11.0 / 9.0 * CF + 79.0 / 54.0 * CA ) * nf * nf;
zeta3 = 1.0 + 1 / 8.0 + 1 / 27.0 + 1 / 64.0;
Gamma0 = 4 * CF;
Gamma1 = CF * ( ( 268.0 / 9.0 - 4.0 * M_PI * M_PI / 3.0 ) * CA -
40.0 / 9.0 * nf );
Gamma2 = 16 * CF *
( ( 245.0 / 24.0 - 67.0 / 54.0 * M_PI * M_PI +
+11.0 / 180.0 * pow( M_PI, 4 ) + 11.0 / 6.0 * zeta3 ) *
CA * CA *
+( -209.0 / 108.0 + 5.0 / 27.0 * M_PI * M_PI -
7.0 / 3.0 * zeta3 ) *
CA * nf +
( -55.0 / 24.0 + 2 * zeta3 ) * CF * nf - nf * nf / 27.0 );
gp0 = -5.0 * CF;
gp1 = -8.0 * CF *
( ( 3.0 / 16.0 - M_PI * M_PI / 4.0 + 3 * zeta3 ) * CF +
( 1549.0 / 432.0 + 7.0 / 48.0 * M_PI * M_PI - 11.0 / 4.0 * zeta3 ) *
CA -
( 125.0 / 216.0 + M_PI * M_PI / 24.0 ) * nf );
// Lbar and mupisq
Lbar = Lambda; // all models
mupisq = 3 * Lambda * Lambda / b;
if ( itype == 1 )
mupisq = 3 * Lambda * Lambda / b;
if ( itype == 2 )
mupisq = 3 * Lambda * Lambda *
( Gamma( 1 + 0.5 * b ) * Gamma( 0.5 * b ) /
pow( Gamma( 0.5 + 0.5 * b ), 2 ) -
1 );
// moment2 for SSFs
moment2 = pow( 0.3, 3 );
// inputs for total rate (T for Total); use BLNP notebook defaults
flagpower = 1;
flag2loop = 1;
// stuff for the integrator
maxLoop = 20;
//precision = 1.0e-3;
precision = 2.0e-2;
// vector of global variables, to pass to static functions (which can't access globals);
gvars.push_back( 0.0 ); // 0
gvars.push_back( 0.0 ); // 1
gvars.push_back( mui ); // 2
gvars.push_back( b ); // 3
gvars.push_back( Lambda ); // 4
gvars.push_back( mBB ); // 5
gvars.push_back( mb ); // 6
gvars.push_back( wzero ); // 7
gvars.push_back( beta0 ); // 8
gvars.push_back( beta1 ); // 9
gvars.push_back( beta2 ); // 10
gvars.push_back( dtype ); // 11
// check that there are 3 daughters and 10 arguments
checkNDaug( 3 );
// A. Volk: check for number of arguments is not necessary
//checkNArg(10);
if ( _noHybrid )
return; // Without hybrid weighting, nothing else to do
_bins_mX = std::vector<double>( abs( (int)getArg( 10 ) ) );
_bins_q2 = std::vector<double>( abs( (int)getArg( 11 ) ) );
_bins_El = std::vector<double>( abs( (int)getArg( 12 ) ) );
int nextArg = EvtVubBLNPHybrid::nParameters + EvtVubBLNPHybrid::nVariables;
_nbins = _bins_mX.size() * _bins_q2.size() *
_bins_El.size(); // Binning of weight table
int expectArgs = nextArg + _bins_mX.size() + _bins_q2.size() +
_bins_El.size() + _nbins;
if ( getNArg() < expectArgs ) {
EvtGenReport( EVTGEN_ERROR, "EvtVubBLNPHybrid" )
<< " finds " << getNArg() << " arguments, expected " << expectArgs
<< ". Something is wrong with the tables of weights or thresholds."
<< "\nWill terminate execution!" << endl;
::abort();
}
// read bin boundaries from decay.dec
for ( auto& b : _bins_mX )
b = getArg( nextArg++ );
_masscut = _bins_mX[0];
for ( auto& b : _bins_q2 )
b = getArg( nextArg++ );
for ( auto& b : _bins_El )
b = getArg( nextArg++ );
// read in weights (and rescale to range 0..1)
readWeights( nextArg );
}
void EvtVubBLNPHybrid::initProbMax()
{
noProbMax();
}
void EvtVubBLNPHybrid::decay( EvtParticle* Bmeson )
{
int j;
EvtParticle *xuhad( nullptr ), *lepton( nullptr ), *neutrino( nullptr );
EvtVector4R p4;
double EX( 0. ), sh( 0. ), El( 0. ), ml( 0. );
double Pp, Pm, Pl, pdf, qsq, mpi, ratemax;
double xhigh, xlow, what;
double mX;
bool rew( true );
while ( rew ) {
Bmeson->initializePhaseSpace( getNDaug(), getDaugs() );
xuhad = Bmeson->getDaug( 0 );
lepton = Bmeson->getDaug( 1 );
neutrino = Bmeson->getDaug( 2 );
mBB = Bmeson->mass();
ml = lepton->mass();
// get SF value
xlow = 0;
xhigh = mBB;
// the case for alphas = 0 is not considered
what = 2 * xhigh;
while ( what > xhigh || what < xlow ) {
what = findBLNPWhat();
what = xlow + what * ( xhigh - xlow );
}
bool tryit = true;
while ( tryit ) {
// generate pp between 0 and
// Flat(min, max) gives R(max - min) + min, where R = random btwn 0 and 1
Pp = EvtRandom::Flat( 0, mBB ); // P+ = EX - |PX|
Pl = EvtRandom::Flat( 0, mBB ); // mBB - 2El
Pm = EvtRandom::Flat( 0, mBB ); // P- = EX + |PX|
sh = Pm * Pp;
EX = 0.5 * ( Pm + Pp );
qsq = ( mBB - Pp ) * ( mBB - Pm );
El = 0.5 * ( mBB - Pl );
// Need maximum rate. Waiting for Mr. Paz to give it to me.
// Meanwhile, use this.
ratemax = 3.0; // From trial and error - most events below 3.0
// kinematic bounds (Eq. 2)
mpi = 0.14;
if ( ( Pp > 0 ) && ( Pp <= Pl ) && ( Pl <= Pm ) && ( Pm < mBB ) &&
( El > ml ) && ( sh > 4 * mpi * mpi ) ) {
// Probability of pass proportional to PDF
pdf = rate3( Pp, Pl, Pm );
double testRan = EvtRandom::Flat( 0., ratemax );
if ( pdf >= testRan )
tryit = false;
}
}
// compute all kinematic variables needed for reweighting
mX = sqrt( sh );
// Reweighting in bins of mX, q2, El
if ( _nbins > 0 ) {
double xran1 = EvtRandom::Flat();
double w = 1.0;
if ( !_noHybrid )
w = getWeight( mX, qsq, El );
if ( w >= xran1 )
rew = false;
} else {
rew = false;
}
}
// o.k. we have the three kineamtic variables
// now calculate a flat cos Theta_H [-1,1] distribution of the
// hadron flight direction w.r.t the B flight direction
// because the B is a scalar and should decay isotropic.
// Then chose a flat Phi_H [0,2Pi] w.r.t the B flight direction
// and and a flat Phi_L [0,2Pi] in the W restframe w.r.t the
// W flight direction.
double ctH = EvtRandom::Flat( -1, 1 );
double phH = EvtRandom::Flat( 0, 2 * M_PI );
double phL = EvtRandom::Flat( 0, 2 * M_PI );
// now compute the four vectors in the B Meson restframe
double ptmp, sttmp;
// calculate the hadron 4 vector in the B Meson restframe
sttmp = sqrt( 1 - ctH * ctH );
ptmp = sqrt( EX * EX - sh );
double pHB[4] = {EX, ptmp * sttmp * cos( phH ), ptmp * sttmp * sin( phH ),
ptmp * ctH};
p4.set( pHB[0], pHB[1], pHB[2], pHB[3] );
xuhad->init( getDaug( 0 ), p4 );
if ( _storeWhat ) {
// cludge to store the hidden parameter what with the decay;
// the lifetime of the Xu is abused for this purpose.
// tau = 1 ps corresponds to ctau = 0.3 mm -> in order to
// stay well below BaBars sensitivity we take what/(10000 GeV).
// To extract what back from the StdHepTrk its necessary to get
// delta_ctau = Xu->decayVtx()->point().distanceTo(XuDaughter->decayVtx()->point());
//
// what = delta_ctau * 100000 * Mass_Xu/Momentum_Xu
//
xuhad->setLifetime( what / 10000. );
}
// calculate the W 4 vector in the B Meson restrframe
double apWB = ptmp;
double pWB[4] = {mBB - EX, -pHB[1], -pHB[2], -pHB[3]};
// first go in the W restframe and calculate the lepton and
// the neutrino in the W frame
double mW2 = mBB * mBB + sh - 2 * mBB * EX;
double beta = ptmp / pWB[0];
double gamma = pWB[0] / sqrt( mW2 );
double pLW[4];
ptmp = ( mW2 - ml * ml ) / 2 / sqrt( mW2 );
pLW[0] = sqrt( ml * ml + ptmp * ptmp );
double ctL = ( El - gamma * pLW[0] ) / beta / gamma / ptmp;
if ( ctL < -1 )
ctL = -1;
if ( ctL > 1 )
ctL = 1;
sttmp = sqrt( 1 - ctL * ctL );
// eX' = eZ x eW
double xW[3] = {-pWB[2], pWB[1], 0};
// eZ' = eW
double zW[3] = {pWB[1] / apWB, pWB[2] / apWB, pWB[3] / apWB};
double lx = sqrt( xW[0] * xW[0] + xW[1] * xW[1] );
for ( j = 0; j < 2; j++ )
xW[j] /= lx;
// eY' = eZ' x eX'
double yW[3] = {-pWB[1] * pWB[3], -pWB[2] * pWB[3],
pWB[1] * pWB[1] + pWB[2] * pWB[2]};
double ly = sqrt( yW[0] * yW[0] + yW[1] * yW[1] + yW[2] * yW[2] );
for ( j = 0; j < 3; j++ )
yW[j] /= ly;
// p_lep = |p_lep| * ( sin(Theta) * cos(Phi) * eX'
// + sin(Theta) * sin(Phi) * eY'
// + cos(Theta) * eZ')
for ( j = 0; j < 3; j++ )
pLW[j + 1] = sttmp * cos( phL ) * ptmp * xW[j] +
sttmp * sin( phL ) * ptmp * yW[j] + ctL * ptmp * zW[j];
double apLW = ptmp;
// boost them back in the B Meson restframe
double appLB = beta * gamma * pLW[0] + gamma * ctL * apLW;
ptmp = sqrt( El * El - ml * ml );
double ctLL = appLB / ptmp;
if ( ctLL > 1 )
ctLL = 1;
if ( ctLL < -1 )
ctLL = -1;
double pLB[4] = {El, 0, 0, 0};
double pNB[4] = {pWB[0] - El, 0, 0, 0};
for ( j = 1; j < 4; j++ ) {
pLB[j] = pLW[j] + ( ctLL * ptmp - ctL * apLW ) / apWB * pWB[j];
pNB[j] = pWB[j] - pLB[j];
}
p4.set( pLB[0], pLB[1], pLB[2], pLB[3] );
lepton->init( getDaug( 1 ), p4 );
p4.set( pNB[0], pNB[1], pNB[2], pNB[3] );
neutrino->init( getDaug( 2 ), p4 );
}
double EvtVubBLNPHybrid::rate3( double Pp, double Pl, double Pm )
{
// rate3 in units of GF^2*Vub^2/pi^3
double factor = 1.0 / 16 * ( mBB - Pp ) * U1lo( muh, mui ) *
pow( ( Pm - Pp ) / ( mBB - Pp ), alo( muh, mui ) );
double doneJS = DoneJS( Pp, Pm, mui );
double done1 = Done1( Pp, Pm, mui );
double done2 = Done2( Pp, Pm, mui );
double done3 = Done3( Pp, Pm, mui );
// The EvtSimpsonIntegrator returns zero for bad integrals.
// So if any of the integrals are zero (ie bad), return zero.
// This will cause pdf = 0, so the event will not pass.
// I hope this will not introduce a bias.
if ( doneJS * done1 * done2 * done3 == 0.0 ) {
//cout << "Integral failed: (Pp, Pm, Pl) = (" << Pp << ", " << Pm << ", " << Pl << ")" << endl;
return 0.0;
}
// if (doneJS*done1*done2*done3 != 0.0) {
// cout << "Integral OK: (Pp, Pm, Pl) = (" << Pp << ", " << Pm << ", " << Pl << ")" << endl;
//}
double f1 = F1( Pp, Pm, muh, mui, mubar, doneJS, done1 );
double f2 = F2( Pp, Pm, muh, mui, mubar, done3 );
double f3 = F3( Pp, Pm, muh, mui, mubar, done2 );
double answer = factor * ( ( mBB + Pl - Pp - Pm ) * ( Pm - Pl ) * f1 +
2 * ( Pl - Pp ) * ( Pm - Pl ) * f2 +
( mBB - Pm ) * ( Pm - Pp ) * f3 );
return answer;
}
double EvtVubBLNPHybrid::F1( double Pp, double Pm, double muh, double mui,
double mubar, double doneJS, double done1 )
{
std::vector<double> vars( 12 );
vars[0] = Pp;
vars[1] = Pm;
for ( int j = 2; j < 12; j++ ) {
vars[j] = gvars[j];
}
double y = ( Pm - Pp ) / ( mBB - Pp );
double ah = CF * alphas( muh, vars ) / 4 / M_PI;
double ai = CF * alphas( mui, vars ) / 4 / M_PI;
double abar = CF * alphas( mubar, vars ) / 4 / M_PI;
double lambda1 = -mupisq;
double t1 = -4 * ai / ( Pp - Lbar ) * ( 2 * log( ( Pp - Lbar ) / mui ) + 1 );
double t2 = 1 + dU1nlo( muh, mui ) + anlo( muh, mui ) * log( y );
double t3 = -4.0 * pow( log( y * mb / muh ), 2 ) +
10.0 * log( y * mb / muh ) - 4.0 * log( y ) -
2.0 * log( y ) / ( 1 - y ) - 4.0 * PolyLog( 2, 1 - y ) -
M_PI * M_PI / 6.0 - 12.0;
double t4 = 2 * pow( log( y * mb * Pp / ( mui * mui ) ), 2 ) -
3 * log( y * mb * Pp / ( mui * mui ) ) + 7 - M_PI * M_PI;
double t5 = -wS( Pp ) + 2 * t( Pp ) +
( 1.0 / y - 1.0 ) * ( u( Pp ) - v( Pp ) );
double t6 = -( lambda1 + 3.0 * lambda2 ) / 3.0 +
1.0 / pow( y, 2 ) * ( 4.0 / 3.0 * lambda1 - 2.0 * lambda2 );
double shapePp = Shat( Pp, vars );
double answer = ( t2 + ah * t3 + ai * t4 ) * shapePp + ai * doneJS +
1 / ( mBB - Pp ) * ( flag2 * abar * done1 + flag1 * t5 ) +
1 / pow( mBB - Pp, 2 ) * flag3 * shapePp * t6;
if ( Pp > Lbar + mui / exp( 0.5 ) )
answer = answer + t1;
return answer;
}
double EvtVubBLNPHybrid::F2( double Pp, double Pm, double muh, double /* mui */,
double mubar, double done3 )
{
std::vector<double> vars( 12 );
vars[0] = Pp;
vars[1] = Pm;
for ( int j = 2; j < 12; j++ ) {
vars[j] = gvars[j];
}
double y = ( Pm - Pp ) / ( mBB - Pp );
double lambda1 = -mupisq;
double ah = CF * alphas( muh, vars ) / 4 / M_PI;
double abar = CF * alphas( mubar, vars ) / 4 / M_PI;
double t6 = -wS( Pp ) - 2 * t( Pp ) + 1.0 / y * ( t( Pp ) + v( Pp ) );
double t7 = 1 / pow( y, 2 ) * ( 2.0 / 3.0 * lambda1 + 4.0 * lambda2 ) -
1 / y * ( 2.0 / 3.0 * lambda1 + 3.0 / 2.0 * lambda2 );
double shapePp = Shat( Pp, vars );
double answer = ah * log( y ) / ( 1 - y ) * shapePp +
1 / ( mBB - Pp ) *
( flag2 * abar * 0.5 * done3 + flag1 / y * t6 ) +
1.0 / pow( mBB - Pp, 2 ) * flag3 * shapePp * t7;
return answer;
}
double EvtVubBLNPHybrid::F3( double Pp, double Pm, double /*muh*/,
double /* mui */, double mubar, double done2 )
{
std::vector<double> vars( 12 );
vars[0] = Pp;
vars[1] = Pm;
for ( int j = 2; j < 12; j++ ) {
vars[j] = gvars[j];
}
double y = ( Pm - Pp ) / ( mBB - Pp );
double lambda1 = -mupisq;
double abar = CF * alphas( mubar, vars ) / 4 / M_PI;
double t7 = 1.0 / pow( y, 2 ) * ( -2.0 / 3.0 * lambda1 + lambda2 );
double shapePp = Shat( Pp, vars );
double answer = 1.0 / ( Pm - Pp ) * flag2 * 0.5 * y * abar * done2 +
1.0 / pow( mBB - Pp, 2 ) * flag3 * shapePp * t7;
return answer;
}
double EvtVubBLNPHybrid::DoneJS( double Pp, double Pm, double /* mui */ )
{
std::vector<double> vars( 12 );
vars[0] = Pp;
vars[1] = Pm;
for ( int j = 2; j < 12; j++ ) {
vars[j] = gvars[j];
}
double lowerlim = 0.001 * Pp;
double upperlim = ( 1.0 - 0.001 ) * Pp;
auto func = EvtItgPtrFunction{&IntJS, lowerlim, upperlim, vars};
auto integ = EvtItgSimpsonIntegrator{func, precision, maxLoop};
return integ.evaluate( lowerlim, upperlim );
}
double EvtVubBLNPHybrid::Done1( double Pp, double Pm, double /* mui */ )
{
std::vector<double> vars( 12 );
vars[0] = Pp;
vars[1] = Pm;
for ( int j = 2; j < 12; j++ ) {
vars[j] = gvars[j];
}
double lowerlim = 0.001 * Pp;
double upperlim = ( 1.0 - 0.001 ) * Pp;
auto func = EvtItgPtrFunction{&Int1, lowerlim, upperlim, vars};
auto integ = EvtItgSimpsonIntegrator{func, precision, maxLoop};
return integ.evaluate( lowerlim, upperlim );
}
double EvtVubBLNPHybrid::Done2( double Pp, double Pm, double /* mui */ )
{
std::vector<double> vars( 12 );
vars[0] = Pp;
vars[1] = Pm;
for ( int j = 2; j < 12; j++ ) {
vars[j] = gvars[j];
}
double lowerlim = 0.001 * Pp;
double upperlim = ( 1.0 - 0.001 ) * Pp;
auto func = EvtItgPtrFunction{&Int2, lowerlim, upperlim, vars};
auto integ = EvtItgSimpsonIntegrator{func, precision, maxLoop};
return integ.evaluate( lowerlim, upperlim );
}
double EvtVubBLNPHybrid::Done3( double Pp, double Pm, double /* mui */ )
{
std::vector<double> vars( 12 );
vars[0] = Pp;
vars[1] = Pm;
for ( int j = 2; j < 12; j++ ) {
vars[j] = gvars[j];
}
double lowerlim = 0.001 * Pp;
double upperlim = ( 1.0 - 0.001 ) * Pp;
auto func = EvtItgPtrFunction{&Int3, lowerlim, upperlim, vars};
auto integ = EvtItgSimpsonIntegrator{func, precision, maxLoop};
return integ.evaluate( lowerlim, upperlim );
}
double EvtVubBLNPHybrid::Int1( double what, const std::vector<double>& vars )
{
return Shat( what, vars ) * g1( what, vars );
}
double EvtVubBLNPHybrid::Int2( double what, const std::vector<double>& vars )
{
return Shat( what, vars ) * g2( what, vars );
}
double EvtVubBLNPHybrid::Int3( double what, const std::vector<double>& vars )
{
return Shat( what, vars ) * g3( what, vars );
}
double EvtVubBLNPHybrid::IntJS( double what, const std::vector<double>& vars )
{
double Pp = vars[0];
double Pm = vars[1];
double mui = vars[2];
double mBB = vars[5];
double mb = vars[6];
double y = ( Pm - Pp ) / ( mBB - Pp );
return 1 / ( Pp - what ) * ( Shat( what, vars ) - Shat( Pp, vars ) ) *
( 4 * log( y * mb * ( Pp - what ) / ( mui * mui ) ) - 3 );
}
double EvtVubBLNPHybrid::g1( double w, const std::vector<double>& vars )
{
double Pp = vars[0];
double Pm = vars[1];
double mBB = vars[5];
double y = ( Pm - Pp ) / ( mBB - Pp );
double x = ( Pp - w ) / ( mBB - Pp );
double q1 = ( 1 + x ) * ( 1 + x ) * y * ( x + y );
double q2 = y * ( -9 + 10 * y ) + x * x * ( -12.0 + 13.0 * y ) +
2 * x * ( -8.0 + 6 * y + 3 * y * y );
double q3 = 4 / x * log( y + y / x );
double q4 = 3.0 * pow( x, 4 ) * ( -2.0 + y ) - 2 * pow( y, 3 ) -
4 * pow( x, 3 ) * ( 2.0 + y ) - 2 * x * y * y * ( 4 + y ) -
x * x * y * ( 12 + 4 * y + y * y );
double q5 = log( 1 + y / x );
double answer = q2 / q1 - q3 - 2 * q4 * q5 / ( q1 * y * x );
return answer;
}
double EvtVubBLNPHybrid::g2( double w, const std::vector<double>& vars )
{
double Pp = vars[0];
double Pm = vars[1];
double mBB = vars[5];
double y = ( Pm - Pp ) / ( mBB - Pp );
double x = ( Pp - w ) / ( mBB - Pp );
double q1 = ( 1 + x ) * ( 1 + x ) * pow( y, 3 ) * ( x + y );
double q2 = 10.0 * pow( x, 4 ) + y * y +
3.0 * pow( x, 2 ) * y * ( 10.0 + y ) +
pow( x, 3 ) * ( 12.0 + 19.0 * y ) +
x * y * ( 8.0 + 4.0 * y + y * y );
double q3 = 5 * pow( x, 4 ) + 2.0 * y * y +
6.0 * pow( x, 3 ) * ( 1.0 + 2.0 * y ) +
4.0 * x * y * ( 1 + 2.0 * y ) + x * x * y * ( 18.0 + 5.0 * y );
double q4 = log( 1 + y / x );
double answer = 2.0 / q1 * ( y * q2 - 2 * x * q3 * q4 );
return answer;
}
double EvtVubBLNPHybrid::g3( double w, const std::vector<double>& vars )
{
double Pp = vars[0];
double Pm = vars[1];
double mBB = vars[5];
double y = ( Pm - Pp ) / ( mBB - Pp );
double x = ( Pp - w ) / ( mBB - Pp );
double q1 = ( 1 + x ) * ( 1 + x ) * pow( y, 3 ) * ( x + y );
double q2 = 2.0 * pow( y, 3 ) * ( -11.0 + 2.0 * y ) -
10.0 * pow( x, 4 ) * ( 6 - 6 * y + y * y ) +
x * y * y * ( -94.0 + 29.0 * y + 2.0 * y * y ) +
2.0 * x * x * y * ( -72.0 + 18.0 * y + 13.0 * y * y ) -
x * x * x * ( 72.0 + 42.0 * y - 70.0 * y * y + 3.0 * y * y * y );
double q3 = -6.0 * x * ( -5.0 + y ) * pow( y, 3 ) + 4 * pow( y, 4 ) +
5 * pow( x, 5 ) * ( 6 - 6 * y + y * y ) -
4 * x * x * y * y * ( -20.0 + 6 * y + y * y ) +
pow( x, 3 ) * y * ( 90.0 - 10.0 * y - 28.0 * y * y + y * y * y ) +
pow( x, 4 ) * ( 36.0 + 36.0 * y - 50.0 * y * y + 4 * y * y * y );
double q4 = log( 1 + y / x );
double answer = q2 / q1 + 2 / q1 / y * q3 * q4;
return answer;
}
double EvtVubBLNPHybrid::Shat( double w, const std::vector<double>& vars )
{
double mui = vars[2];
double b = vars[3];
double Lambda = vars[4];
double wzero = vars[7];
int itype = (int)vars[11];
double norm = 0.0;
double shape = 0.0;
if ( itype == 1 ) {
double Lambar = ( Lambda / b ) *
( Gamma( 1 + b ) - Gamma( 1 + b, b * wzero / Lambda ) ) /
( Gamma( b ) - Gamma( b, b * wzero / Lambda ) );
double muf = wzero - Lambar;
double mupisq = 3 * pow( Lambda, 2 ) / pow( b, 2 ) *
( Gamma( 2 + b ) -
Gamma( 2 + b, b * wzero / Lambda ) ) /
( Gamma( b ) - Gamma( b, b * wzero / Lambda ) ) -
3 * Lambar * Lambar;
norm = Mzero( muf, mui, mupisq, vars ) * Gamma( b ) /
( Gamma( b ) - Gamma( b, b * wzero / Lambda ) );
shape = pow( b, b ) / Lambda / Gamma( b ) * pow( w / Lambda, b - 1 ) *
exp( -b * w / Lambda );
}
if ( itype == 2 ) {
double dcoef = pow( Gamma( 0.5 * ( 1 + b ) ) / Gamma( 0.5 * b ), 2 );
double t1 = wzero * wzero * dcoef / ( Lambda * Lambda );
double Lambar =
Lambda * ( Gamma( 0.5 * ( 1 + b ) ) - Gamma( 0.5 * ( 1 + b ), t1 ) ) /
pow( dcoef, 0.5 ) / ( Gamma( 0.5 * b ) - Gamma( 0.5 * b, t1 ) );
double muf = wzero - Lambar;
double mupisq = 3 * Lambda * Lambda *
( Gamma( 1 + 0.5 * b ) - Gamma( 1 + 0.5 * b, t1 ) ) /
dcoef / ( Gamma( 0.5 * b ) - Gamma( 0.5 * b, t1 ) ) -
3 * Lambar * Lambar;
norm = Mzero( muf, mui, mupisq, vars ) * Gamma( 0.5 * b ) /
( Gamma( 0.5 * b ) -
Gamma( 0.5 * b, wzero * wzero * dcoef / ( Lambda * Lambda ) ) );
shape = 2 * pow( dcoef, 0.5 * b ) / Lambda / Gamma( 0.5 * b ) *
pow( w / Lambda, b - 1 ) *
exp( -dcoef * w * w / ( Lambda * Lambda ) );
}
double answer = norm * shape;
return answer;
}
double EvtVubBLNPHybrid::Mzero( double muf, double mu, double mupisq,
const std::vector<double>& vars )
{
double CF = 4.0 / 3.0;
double amu = CF * alphas( mu, vars ) / M_PI;
double answer = 1 -
amu * ( pow( log( muf / mu ), 2 ) + log( muf / mu ) +
M_PI * M_PI / 24.0 ) +
amu * ( log( muf / mu ) - 0.5 ) * mupisq / ( 3 * muf * muf );
return answer;
}
double EvtVubBLNPHybrid::wS( double w )
{
double answer = ( Lbar - w ) * Shat( w, gvars );
return answer;
}
double EvtVubBLNPHybrid::t( double w )
{
double t1 = -3 * lambda2 / mupisq * ( Lbar - w ) * Shat( w, gvars );
double myf = myfunction( w, Lbar, moment2 );
double myBIK = myfunctionBIK( w, Lbar, moment2 );
double answer = t1;
if ( isubl == 1 )
answer = t1;
if ( isubl == 3 )
answer = t1 - myf;
if ( isubl == 4 )
answer = t1 + myf;
if ( isubl == 5 )
answer = t1 - myBIK;
if ( isubl == 6 )
answer = t1 + myBIK;
return answer;
}
double EvtVubBLNPHybrid::u( double w )
{
double u1 = -2 * ( Lbar - w ) * Shat( w, gvars );
double myf = myfunction( w, Lbar, moment2 );
double myBIK = myfunctionBIK( w, Lbar, moment2 );
double answer = u1;
if ( isubl == 1 )
answer = u1;
if ( isubl == 3 )
answer = u1 + myf;
if ( isubl == 4 )
answer = u1 - myf;
if ( isubl == 5 )
answer = u1 + myBIK;
if ( isubl == 6 )
answer = u1 - myBIK;
return answer;
}
double EvtVubBLNPHybrid::v( double w )
{
double v1 = 3 * lambda2 / mupisq * ( Lbar - w ) * Shat( w, gvars );
double myf = myfunction( w, Lbar, moment2 );
double myBIK = myfunctionBIK( w, Lbar, moment2 );
double answer = v1;
if ( isubl == 1 )
answer = v1;
if ( isubl == 3 )
answer = v1 - myf;
if ( isubl == 4 )
answer = v1 + myf;
if ( isubl == 5 )
answer = v1 - myBIK;
if ( isubl == 6 )
answer = v1 + myBIK;
return answer;
}
double EvtVubBLNPHybrid::myfunction( double w, double Lbar, double mom2 )
{
double bval = 5.0;
double x = w / Lbar;
double factor = 0.5 * mom2 * pow( bval / Lbar, 3 );
double answer = factor * exp( -bval * x ) *
( 1 - 2 * bval * x + 0.5 * bval * bval * x * x );
return answer;
}
double EvtVubBLNPHybrid::myfunctionBIK( double w, double Lbar, double /* mom2 */ )
{
double aval = 10.0;
double normBIK = ( 4 - M_PI ) * M_PI * M_PI / 8 / ( 2 - M_PI ) / aval + 1;
double z = 3 * M_PI * w / 8 / Lbar;
double q = M_PI * M_PI * 2 * pow( M_PI * aval, 0.5 ) * exp( -aval * z * z ) /
( 4 * M_PI - 8 ) * ( 1 - 2 * pow( aval / M_PI, 0.5 ) * z ) +
8 / pow( 1 + z * z, 4 ) *
( z * log( z ) + 0.5 * z * ( 1 + z * z ) -
M_PI / 4 * ( 1 - z * z ) );
double answer = q / normBIK;
return answer;
}
double EvtVubBLNPHybrid::dU1nlo( double muh, double mui )
{
double ai = alphas( mui, gvars );
double ah = alphas( muh, gvars );
double q1 = ( ah - ai ) / ( 4 * M_PI * beta0 );
double q2 = log( mb / muh ) * Gamma1 + gp1;
double q3 = 4 * beta1 * ( log( mb / muh ) * Gamma0 + gp0 ) +
Gamma2 * ( 1 - ai / ah );
double q4 = beta1 * beta1 * Gamma0 * ( -1.0 + ai / ah ) /
( 4 * pow( beta0, 3 ) );
double q5 = -beta2 * Gamma0 * ( 1.0 + ai / ah ) +
beta1 * Gamma1 * ( 3 - ai / ah );
double q6 = beta1 * beta1 * Gamma0 * ( ah - ai ) / beta0 -
beta2 * Gamma0 * ah + beta1 * Gamma1 * ai;
double answer =
q1 * ( q2 - q3 / 4 / beta0 + q4 + q5 / ( 4 * beta0 * beta0 ) ) +
1 / ( 8 * M_PI * beta0 * beta0 * beta0 ) * log( ai / ah ) * q6;
return answer;
}
double EvtVubBLNPHybrid::U1lo( double muh, double mui )
{
double epsilon = 0.0;
double answer = pow( mb / muh, -2 * aGamma( muh, mui, epsilon ) ) *
exp( 2 * Sfun( muh, mui, epsilon ) -
2 * agp( muh, mui, epsilon ) );
return answer;
}
double EvtVubBLNPHybrid::Sfun( double mu1, double mu2, double epsilon )
{
double a1 = alphas( mu1, gvars ) / 4 / M_PI;
double a2 = alphas( mu2, gvars ) / alphas( mu1, gvars );
double answer = S0( a1, a2 ) + S1( a1, a2 ) + epsilon * S2( a1, a2 );
return answer;
}
double EvtVubBLNPHybrid::S0( double a1, double r )
{
double answer = -Gamma0 / ( 4.0 * beta0 * beta0 * a1 ) *
( -1.0 + 1.0 / r + log( r ) );
return answer;
}
double EvtVubBLNPHybrid::S1( double /* a1 */, double r )
{
double answer = Gamma0 / ( 4 * beta0 * beta0 ) *
( 0.5 * log( r ) * log( r ) * beta1 / beta0 +
( Gamma1 / Gamma0 - beta1 / beta0 ) * ( 1 - r + log( r ) ) );
return answer;
}
double EvtVubBLNPHybrid::S2( double a1, double r )
{
double w1 = pow( beta1, 2 ) / pow( beta0, 2 ) - beta2 / beta0 -
beta1 * Gamma1 / ( beta0 * Gamma0 ) + Gamma2 / Gamma0;
double w2 = pow( beta1, 2 ) / pow( beta0, 2 ) - beta2 / beta0;
double w3 = beta1 * Gamma1 / ( beta0 * Gamma0 ) - beta2 / beta0;
double w4 = a1 * Gamma0 / ( 4 * beta0 * beta0 );
double answer = w4 *
( -0.5 * pow( 1 - r, 2 ) * w1 + w2 * ( 1 - r ) * log( r ) +
w3 * ( 1 - r + r * log( r ) ) );
return answer;
}
double EvtVubBLNPHybrid::aGamma( double mu1, double mu2, double epsilon )
{
double a1 = alphas( mu1, gvars );
double a2 = alphas( mu2, gvars );
double answer = Gamma0 / ( 2 * beta0 ) * log( a2 / a1 ) +
epsilon * ( a2 - a1 ) / ( 8.0 * M_PI ) *
( Gamma1 / beta0 - beta1 * Gamma0 / ( beta0 * beta0 ) );
return answer;
}
double EvtVubBLNPHybrid::agp( double mu1, double mu2, double epsilon )
{
double a1 = alphas( mu1, gvars );
double a2 = alphas( mu2, gvars );
double answer = gp0 / ( 2 * beta0 ) * log( a2 / a1 ) +
epsilon * ( a2 - a1 ) / ( 8.0 * M_PI ) *
( gp1 / beta0 - beta1 * gp0 / ( beta0 * beta0 ) );
return answer;
}
double EvtVubBLNPHybrid::alo( double muh, double mui )
{
return -2.0 * aGamma( muh, mui, 0 );
}
double EvtVubBLNPHybrid::anlo( double muh, double mui )
{ // d/depsilon of aGamma
double ah = alphas( muh, gvars );
double ai = alphas( mui, gvars );
double answer = ( ah - ai ) / ( 8.0 * M_PI ) *
( Gamma1 / beta0 - beta1 * Gamma0 / ( beta0 * beta0 ) );
return answer;
}
double EvtVubBLNPHybrid::alphas( double mu, const std::vector<double>& vars )
{
// Note: Lambda4 and Lambda5 depend on mbMS = 4.25
// So if you change mbMS, then you will have to recalculate them.
double beta0 = vars[8];
double beta1 = vars[9];
double beta2 = vars[10];
double Lambda4 = 0.298791;
double lg = 2 * log( mu / Lambda4 );
double answer = 4 * M_PI / ( beta0 * lg ) *
( 1 - beta1 * log( lg ) / ( beta0 * beta0 * lg ) +
beta1 * beta1 / ( beta0 * beta0 * beta0 * beta0 * lg * lg ) *
( ( log( lg ) - 0.5 ) * ( log( lg ) - 0.5 ) -
5.0 / 4.0 + beta2 * beta0 / ( beta1 * beta1 ) ) );
return answer;
}
double EvtVubBLNPHybrid::PolyLog( double v, double z )
{
if ( z >= 1 )
cout << "Error in EvtVubBLNPHybrid: 2nd argument to PolyLog is >= 1."
<< endl;
double sum = 0.0;
for ( int k = 1; k < 101; k++ ) {
sum = sum + pow( z, k ) / pow( k, v );
}
return sum;
}
double EvtVubBLNPHybrid::Gamma( double z )
{
if ( z <= 0 )
return 0;
double v = lgamma( z );
return exp( v );
}
double EvtVubBLNPHybrid::Gamma( double a, double x )
{
double LogGamma;
/* if (x<0.0 || a<= 0.0) raise(SIGFPE);*/
if ( x < 0.0 )
x = 0.0;
if ( a <= 0.0 )
a = 1.e-50;
LogGamma = lgamma( a );
if ( x < ( a + 1.0 ) )
return gamser( a, x, LogGamma );
else
return 1.0 - gammcf( a, x, LogGamma );
}
/* ------------------Incomplete gamma function-----------------*/
/* ------------------via its series representation-------------*/
double EvtVubBLNPHybrid::gamser( double a, double x, double LogGamma )
{
double n;
double ap, del, sum;
ap = a;
del = sum = 1.0 / a;
for ( n = 1; n < ITMAX; n++ ) {
++ap;
del *= x / ap;
sum += del;
if ( fabs( del ) < fabs( sum ) * EPS )
return sum * exp( -x + a * log( x ) - LogGamma );
}
raise( SIGFPE );
return 0.0;
}
/* ------------------Incomplete gamma function complement------*/
/* ------------------via its continued fraction representation-*/
double EvtVubBLNPHybrid::gammcf( double a, double x, double LogGamma )
{
double an, b, c, d, del, h;
int i;
b = x + 1.0 - a;
c = 1.0 / FPMIN;
d = 1.0 / b;
h = d;
for ( i = 1; i < ITMAX; i++ ) {
an = -i * ( i - a );
b += 2.0;
d = an * d + b;
if ( fabs( d ) < FPMIN )
d = FPMIN;
c = b + an / c;
if ( fabs( c ) < FPMIN )
c = FPMIN;
d = 1.0 / d;
del = d * c;
h *= del;
if ( fabs( del - 1.0 ) < EPS )
return exp( -x + a * log( x ) - LogGamma ) * h;
}
raise( SIGFPE );
return 0.0;
}
double EvtVubBLNPHybrid::findBLNPWhat()
{
double ranNum = EvtRandom::Flat();
double oOverBins = 1.0 / ( float( _pf.size() ) );
int nBinsBelow = 0; // largest k such that I[k] is known to be <= rand
int nBinsAbove = _pf.size(); // largest k such that I[k] is known to be > rand
int middle;
while ( nBinsAbove > nBinsBelow + 1 ) {
middle = ( nBinsAbove + nBinsBelow + 1 ) >> 1;
if ( ranNum >= _pf[middle] ) {
nBinsBelow = middle;
} else {
nBinsAbove = middle;
}
}
double bSize = _pf[nBinsAbove] - _pf[nBinsBelow];
// binMeasure is always aProbFunc[nBinsBelow],
if ( bSize == 0 ) {
// rand lies right in a bin of measure 0. Simply return the center
// of the range of that bin. (Any value between k/N and (k+1)/N is
// equally good, in this rare case.)
return ( nBinsBelow + .5 ) * oOverBins;
}
double bFract = ( ranNum - _pf[nBinsBelow] ) / bSize;
return ( nBinsBelow + bFract ) * oOverBins;
}
double EvtVubBLNPHybrid::getWeight( double mX, double q2, double El )
{
int ibin_mX = -1;
int ibin_q2 = -1;
int ibin_El = -1;
for ( unsigned i = 0; i < _bins_mX.size(); i++ ) {
if ( mX >= _bins_mX[i] )
ibin_mX = i;
}
for ( unsigned i = 0; i < _bins_q2.size(); i++ ) {
if ( q2 >= _bins_q2[i] )
ibin_q2 = i;
}
for ( unsigned i = 0; i < _bins_El.size(); i++ ) {
if ( El >= _bins_El[i] )
ibin_El = i;
}
int ibin = ibin_mX + ibin_q2 * _bins_mX.size() +
ibin_El * _bins_mX.size() * _bins_q2.size();
if ( ( ibin_mX < 0 ) || ( ibin_q2 < 0 ) || ( ibin_El < 0 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtVubHybrid" )
<< "Cannot determine hybrid weight "
<< "for this event "
<< "-> assign weight = 0" << endl;
return 0.0;
}
return _weights[ibin];
}
void EvtVubBLNPHybrid::readWeights( int startArg )
{
_weights.resize( _nbins );
double maxw = 0.0;
for ( auto& w : _weights ) {
w = getArg( startArg++ );
if ( w > maxw )
maxw = w;
}
if ( maxw == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtVubBLNPHybrid" )
<< "EvtVub generator expected at least one "
<< " weight > 0, but found none! "
<< "Will terminate execution!" << endl;
::abort();
}
// rescale weights (to be in range 0..1)
for ( auto& w : _weights )
w /= maxw;
}
diff --git a/src/EvtGenModels/EvtVubHybrid.cpp b/src/EvtGenModels/EvtVubHybrid.cpp
index ffb06a4..609b3b6 100644
--- a/src/EvtGenModels/EvtVubHybrid.cpp
+++ b/src/EvtGenModels/EvtVubHybrid.cpp
@@ -1,465 +1,445 @@
-//---------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVubHybrid.cc
-//
-// Description: Routine to decay a particle according to phase space.
-//
-// Modification history:
-//
-// Jochen Dingfelder February 1, 2005 Created Module as update of the
-// original module EvtVub by Sven Menke
-//---------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVubHybrid.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtPFermi.hh"
#include "EvtGenModels/EvtVubdGamma.hh"
#include <fstream>
#include <iostream>
#include <stdlib.h>
#include <string>
using std::cout;
using std::endl;
using std::ifstream;
std::string EvtVubHybrid::getName()
{
return "VUBHYBRID";
}
EvtDecayBase* EvtVubHybrid::clone()
{
return new EvtVubHybrid;
}
void EvtVubHybrid::init()
{
// check that there are at least 3 arguments
if ( getNArg() < EvtVubHybrid::nParameters ) {
EvtGenReport( EVTGEN_ERROR, "EvtVubHybrid" )
<< "EvtVub generator expected "
<< "at least " << EvtVubHybrid::nParameters
<< " arguments but found: " << getNArg()
<< "\nWill terminate execution!" << endl;
::abort();
} else if ( getNArg() == EvtVubHybrid::nParameters ) {
EvtGenReport( EVTGEN_WARNING, "EvtVubHybrid" )
<< "EvtVub: generate B -> Xu l nu events "
<< "without using the hybrid reweighting." << endl;
_noHybrid = true;
} else if ( getNArg() < EvtVubHybrid::nParameters + EvtVubHybrid::nVariables ) {
EvtGenReport( EVTGEN_ERROR, "EvtVubHybrid" )
<< "EvtVub could not read number of bins for "
<< "all variables used in the reweighting\n"
<< "Will terminate execution!" << endl;
::abort();
}
// check that there are 3 daughters
checkNDaug( 3 );
// read minimum required parameters from decay.dec
_mb = getArg( 0 );
_a = getArg( 1 );
_alphas = getArg( 2 );
// the maximum dGamma*p2 value depends on alpha_s only:
const double dGMax0 = 3.;
_dGMax = 0.21344 + 8.905 * _alphas;
if ( _dGMax < dGMax0 )
_dGMax = dGMax0;
// for the Fermi Motion we need a B-Meson mass - but it's not critical
// to get an exact value; in order to stay in the phase space for
// B+- and B0 use the smaller mass
static double mB0 = EvtPDL::getMaxMass( EvtPDL::getId( "B0" ) );
static double mBP = EvtPDL::getMaxMass( EvtPDL::getId( "B+" ) );
static double mB = ( mB0 < mBP ? mB0 : mBP );
const double xlow = -_mb;
const double xhigh = mB - _mb;
const int aSize = 10000;
EvtPFermi pFermi( _a, mB, _mb );
// pf is the cumulative distribution normalized to 1.
_pf.resize( aSize );
for ( int i = 0; i < aSize; i++ ) {
double kplus = xlow + (double)( i + 0.5 ) / ( (double)aSize ) *
( xhigh - xlow );
if ( i == 0 )
_pf[i] = pFermi.getFPFermi( kplus );
else
_pf[i] = _pf[i - 1] + pFermi.getFPFermi( kplus );
}
for ( size_t index = 0; index < _pf.size(); index++ ) {
_pf[index] /= _pf[_pf.size() - 1];
}
_dGamma = std::make_unique<EvtVubdGamma>( _alphas );
if ( _noHybrid )
return; // Without hybrid weighting, nothing else to do
_bins_mX.resize( abs( (int)getArg( 3 ) ) );
_bins_q2.resize( abs( (int)getArg( 4 ) ) );
_bins_El.resize( abs( (int)getArg( 5 ) ) );
int nextArg = EvtVubHybrid::nParameters + EvtVubHybrid::nVariables;
_nbins = _bins_mX.size() * _bins_q2.size() *
_bins_El.size(); // Binning of weight table
int expectArgs = nextArg + _bins_mX.size() + _bins_q2.size() +
_bins_El.size() + _nbins;
if ( getNArg() < expectArgs ) {
EvtGenReport( EVTGEN_ERROR, "EvtVubHybrid" )
<< " finds " << getNArg() << " arguments, expected " << expectArgs
<< ". Something is wrong with the tables of weights or thresholds."
<< "\nWill terminate execution!" << endl;
::abort();
}
// read bin boundaries from decay.dec
for ( auto& b : _bins_mX )
b = getArg( nextArg++ );
_masscut = _bins_mX[0];
for ( auto& b : _bins_q2 )
b = getArg( nextArg++ );
for ( auto& b : _bins_El )
b = getArg( nextArg++ );
// read in weights (and rescale to range 0..1)
readWeights( nextArg );
}
void EvtVubHybrid::initProbMax()
{
noProbMax();
}
void EvtVubHybrid::decay( EvtParticle* p )
{
int j;
// B+ -> u-bar specflav l+ nu
EvtParticle *xuhad( 0 ), *lepton( 0 ), *neutrino( 0 );
EvtVector4R p4;
// R. Faccini 21/02/03
// move the reweighting up , before also shooting the fermi distribution
double x, z, p2;
double sh = 0.0;
double mB, ml, xlow, xhigh, qplus;
double El = 0.0;
double Eh = 0.0;
double kplus;
double q2, mX;
const double lp2epsilon = -10;
bool rew( true );
while ( rew ) {
p->initializePhaseSpace( getNDaug(), getDaugs() );
xuhad = p->getDaug( 0 );
lepton = p->getDaug( 1 );
neutrino = p->getDaug( 2 );
mB = p->mass();
ml = lepton->mass();
xlow = -_mb;
xhigh = mB - _mb;
// Fermi motion does not need to be computed inside the
// tryit loop as m_b in Gamma0 does not need to be replaced by (m_b+kplus).
// The difference however should be of the Order (lambda/m_b)^2 which is
// beyond the considered orders in the paper anyway ...
// for alpha_S = 0 and a mass cut on X_u not all values of kplus are
// possible. The maximum value is mB/2-_mb + sqrt(mB^2/4-_masscut^2)
kplus = 2 * xhigh;
while ( kplus >= xhigh || kplus <= xlow ||
( _alphas == 0 &&
kplus >= mB / 2 - _mb +
sqrt( mB * mB / 4 - _masscut * _masscut ) ) ) {
kplus = findPFermi(); //_pFermi->shoot();
kplus = xlow + kplus * ( xhigh - xlow );
}
qplus = mB - _mb - kplus;
if ( ( mB - qplus ) / 2. <= ml )
continue;
int tryit = 1;
while ( tryit ) {
x = EvtRandom::Flat();
z = EvtRandom::Flat( 0, 2 );
p2 = EvtRandom::Flat();
p2 = pow( 10, lp2epsilon * p2 );
El = x * ( mB - qplus ) / 2;
if ( El > ml && El < mB / 2 ) {
Eh = z * ( mB - qplus ) / 2 + qplus;
if ( Eh > 0 && Eh < mB ) {
sh = p2 * pow( mB - qplus, 2 ) +
2 * qplus * ( Eh - qplus ) + qplus * qplus;
if ( sh > _masscut * _masscut &&
mB * mB + sh - 2 * mB * Eh > ml * ml ) {
double xran = EvtRandom::Flat();
double y = _dGamma->getdGdxdzdp( x, z, p2 ) / _dGMax * p2;
if ( y > 1 )
EvtGenReport( EVTGEN_WARNING, "EvtVubHybrid" )
<< "EvtVubHybrid decay probability > 1 found: "
<< y << endl;
if ( y >= xran )
tryit = 0;
}
}
}
}
// compute all kinematic variables needed for reweighting (J. Dingfelder)
mX = sqrt( sh );
q2 = mB * mB + sh - 2 * mB * Eh;
// Reweighting in bins of mX, q2, El (J. Dingfelder)
if ( !_weights.empty() ) {
double xran1 = EvtRandom::Flat();
double w = 1.0;
if ( !_noHybrid )
w = getWeight( mX, q2, El );
if ( w >= xran1 )
rew = false;
} else {
rew = false;
}
}
// o.k. we have the three kineamtic variables
// now calculate a flat cos Theta_H [-1,1] distribution of the
// hadron flight direction w.r.t the B flight direction
// because the B is a scalar and should decay isotropic.
// Then chose a flat Phi_H [0,2Pi] w.r.t the B flight direction
// and and a flat Phi_L [0,2Pi] in the W restframe w.r.t the
// W flight direction.
double ctH = EvtRandom::Flat( -1, 1 );
double phH = EvtRandom::Flat( 0, 2 * M_PI );
double phL = EvtRandom::Flat( 0, 2 * M_PI );
// now compute the four vectors in the B Meson restframe
double ptmp, sttmp;
// calculate the hadron 4 vector in the B Meson restframe
sttmp = sqrt( 1 - ctH * ctH );
ptmp = sqrt( Eh * Eh - sh );
double pHB[4] = {Eh, ptmp * sttmp * cos( phH ), ptmp * sttmp * sin( phH ),
ptmp * ctH};
p4.set( pHB[0], pHB[1], pHB[2], pHB[3] );
xuhad->init( getDaug( 0 ), p4 );
if ( _storeQplus ) {
// cludge to store the hidden parameter q+ with the decay;
// the lifetime of the Xu is abused for this purpose.
// tau = 1 ps corresponds to ctau = 0.3 mm -> in order to
// stay well below BaBars sensitivity we take q+/(10000 GeV) which
// goes up to 0.0005 in the most extreme cases as ctau in mm.
// To extract q+ back from the StdHepTrk its necessary to get
// delta_ctau = Xu->anyDaughter->getVertexTime()-Xu->getVertexTime()
// where these pseudo calls refere to the StdHep time stored at
// the production vertex in the lab for each particle. The boost
// has to be reversed and the result is:
//
// q+ = delta_ctau * 10000 GeV/mm * Mass_Xu/Energy_Xu
//
xuhad->setLifetime( qplus / 10000. );
}
// calculate the W 4 vector in the B Meson restrframe
double apWB = ptmp;
double pWB[4] = {mB - Eh, -pHB[1], -pHB[2], -pHB[3]};
// first go in the W restframe and calculate the lepton and
// the neutrino in the W frame
double mW2 = mB * mB + sh - 2 * mB * Eh;
double beta = ptmp / pWB[0];
double gamma = pWB[0] / sqrt( mW2 );
double pLW[4];
ptmp = ( mW2 - ml * ml ) / 2 / sqrt( mW2 );
pLW[0] = sqrt( ml * ml + ptmp * ptmp );
double ctL = ( El - gamma * pLW[0] ) / beta / gamma / ptmp;
if ( ctL < -1 )
ctL = -1;
if ( ctL > 1 )
ctL = 1;
sttmp = sqrt( 1 - ctL * ctL );
// eX' = eZ x eW
double xW[3] = {-pWB[2], pWB[1], 0};
// eZ' = eW
double zW[3] = {pWB[1] / apWB, pWB[2] / apWB, pWB[3] / apWB};
double lx = sqrt( xW[0] * xW[0] + xW[1] * xW[1] );
for ( j = 0; j < 2; j++ )
xW[j] /= lx;
// eY' = eZ' x eX'
double yW[3] = {-pWB[1] * pWB[3], -pWB[2] * pWB[3],
pWB[1] * pWB[1] + pWB[2] * pWB[2]};
double ly = sqrt( yW[0] * yW[0] + yW[1] * yW[1] + yW[2] * yW[2] );
for ( j = 0; j < 3; j++ )
yW[j] /= ly;
// p_lep = |p_lep| * ( sin(Theta) * cos(Phi) * eX'
// + sin(Theta) * sin(Phi) * eY'
// + cos(Theta) * eZ')
for ( j = 0; j < 3; j++ )
pLW[j + 1] = sttmp * cos( phL ) * ptmp * xW[j] +
sttmp * sin( phL ) * ptmp * yW[j] + ctL * ptmp * zW[j];
double apLW = ptmp;
// calculate the neutrino 4 vector in the W restframe
//double pNW[4] = {sqrt(mW2)-pLW[0],-pLW[1],-pLW[2],-pLW[3]};
// boost them back in the B Meson restframe
double appLB = beta * gamma * pLW[0] + gamma * ctL * apLW;
ptmp = sqrt( El * El - ml * ml );
double ctLL = appLB / ptmp;
if ( ctLL > 1 )
ctLL = 1;
if ( ctLL < -1 )
ctLL = -1;
double pLB[4] = {El, 0, 0, 0};
double pNB[4] = {pWB[0] - El, 0, 0, 0};
for ( j = 1; j < 4; j++ ) {
pLB[j] = pLW[j] + ( ctLL * ptmp - ctL * apLW ) / apWB * pWB[j];
pNB[j] = pWB[j] - pLB[j];
}
p4.set( pLB[0], pLB[1], pLB[2], pLB[3] );
lepton->init( getDaug( 1 ), p4 );
p4.set( pNB[0], pNB[1], pNB[2], pNB[3] );
neutrino->init( getDaug( 2 ), p4 );
return;
}
double EvtVubHybrid::findPFermi()
{
double ranNum = EvtRandom::Flat();
double oOverBins = 1.0 / ( float( _pf.size() ) );
int nBinsBelow = 0; // largest k such that I[k] is known to be <= rand
int nBinsAbove = _pf.size(); // largest k such that I[k] is known to be > rand
int middle;
while ( nBinsAbove > nBinsBelow + 1 ) {
middle = ( nBinsAbove + nBinsBelow + 1 ) >> 1;
if ( ranNum >= _pf[middle] ) {
nBinsBelow = middle;
} else {
nBinsAbove = middle;
}
}
double bSize = _pf[nBinsAbove] - _pf[nBinsBelow];
// binMeasure is always aProbFunc[nBinsBelow],
if ( bSize == 0 ) {
// rand lies right in a bin of measure 0. Simply return the center
// of the range of that bin. (Any value between k/N and (k+1)/N is
// equally good, in this rare case.)
return ( nBinsBelow + .5 ) * oOverBins;
}
double bFract = ( ranNum - _pf[nBinsBelow] ) / bSize;
return ( nBinsBelow + bFract ) * oOverBins;
}
double EvtVubHybrid::getWeight( double mX, double q2, double El )
{
int ibin_mX = -1;
int ibin_q2 = -1;
int ibin_El = -1;
for ( unsigned i = 0; i < _bins_mX.size(); i++ ) {
if ( mX >= _bins_mX[i] )
ibin_mX = i;
}
for ( unsigned i = 0; i < _bins_q2.size(); i++ ) {
if ( q2 >= _bins_q2[i] )
ibin_q2 = i;
}
for ( unsigned i = 0; i < _bins_El.size(); i++ ) {
if ( El >= _bins_El[i] )
ibin_El = i;
}
int ibin = ibin_mX + ibin_q2 * _bins_mX.size() +
ibin_El * _bins_mX.size() * _bins_q2.size();
if ( ( ibin_mX < 0 ) || ( ibin_q2 < 0 ) || ( ibin_El < 0 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtVubHybrid" )
<< "Cannot determine hybrid weight "
<< "for this event "
<< "-> assign weight = 0" << endl;
return 0.0;
}
return _weights[ibin];
}
void EvtVubHybrid::readWeights( int startArg )
{
_weights.resize( _nbins );
double maxw = 0.0;
for ( auto& w : _weights ) {
w = getArg( startArg++ );
if ( w > maxw )
maxw = w;
}
if ( maxw == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtVubHybrid" )
<< "EvtVub generator expected at least one "
<< " weight > 0, but found none! "
<< "Will terminate execution!" << endl;
::abort();
}
// rescale weights (to be in range 0..1)
for ( auto& w : _weights )
w /= maxw;
}
diff --git a/src/EvtGenModels/EvtVubNLO.cpp b/src/EvtGenModels/EvtVubNLO.cpp
index 6bba4a2..9237c6d 100644
--- a/src/EvtGenModels/EvtVubNLO.cpp
+++ b/src/EvtGenModels/EvtVubNLO.cpp
@@ -1,733 +1,712 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information:
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtVubNLO.cc
-//
-// Description: Routine to decay B->Xulnu according to Bosch, Lange, Neubert, and Paz hep-ph/0402094
-// Equation numbers refer to this paper
-//
-// Modification history:
-//
-// Riccardo Faccini Feb. 11, 2004
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtVubNLO.hh"
#include "EvtGenBase/EvtDiLog.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenModels/EvtBtoXsgammaFermiUtil.hh"
#include "EvtGenModels/EvtItgPtrFunction.hh"
#include "EvtGenModels/EvtItgSimpsonIntegrator.hh"
#include "EvtGenModels/EvtPFermi.hh"
#include <array>
#include <stdlib.h>
#include <string>
using std::cout;
using std::endl;
EvtVubNLO::~EvtVubNLO()
{
cout << " max pdf : " << _gmax << endl;
cout << " efficiency : " << (float)_ngood / (float)_ntot << endl;
}
std::string EvtVubNLO::getName()
{
return "VUB_NLO";
}
EvtDecayBase* EvtVubNLO::clone()
{
return new EvtVubNLO;
}
void EvtVubNLO::init()
{
// max pdf
_gmax = 0;
_ntot = 0;
_ngood = 0;
_lbar = -1000;
_mupi2 = -1000;
// check that there are at least 6 arguments
int npar = 8;
if ( getNArg() < npar ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVubNLO generator expected "
<< " at least npar arguments but found: " << getNArg() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
// this is the shape function parameter
_mb = getArg( 0 );
_b = getArg( 1 );
_lambdaSF = getArg( 2 ); // shape function lambda is different from lambda
_mui = 1.5; // GeV (scale)
_kpar = getArg( 3 ); // 0
_idSF = abs( (int)getArg(
4 ) ); // type of shape function 1: exponential (from Neubert)
int nbins = abs( (int)getArg( 5 ) );
_masses.resize( nbins );
_weights.resize( nbins );
// Shape function normalization
_mB = 5.28; // temporary B meson mass for normalization
std::vector<double> sCoeffs( 11 );
sCoeffs[3] = _b;
sCoeffs[4] = _mb;
sCoeffs[5] = _mB;
sCoeffs[6] = _idSF;
sCoeffs[7] = lambda_SF();
sCoeffs[8] = mu_h();
sCoeffs[9] = mu_i();
sCoeffs[10] = 1.;
_SFNorm = SFNorm( sCoeffs ); // SF normalization;
cout << " pdf 0.66, 1.32 , 4.32 " << tripleDiff( 0.66, 1.32, 4.32 ) << endl;
cout << " pdf 0.23,0.37,3.76 " << tripleDiff( 0.23, 0.37, 3.76 ) << endl;
cout << " pdf 0.97,4.32,4.42 " << tripleDiff( 0.97, 4.32, 4.42 ) << endl;
cout << " pdf 0.52,1.02,2.01 " << tripleDiff( 0.52, 1.02, 2.01 ) << endl;
cout << " pdf 1.35,1.39,2.73 " << tripleDiff( 1.35, 1.39, 2.73 ) << endl;
if ( getNArg() - npar + 2 != int( 2 * _weights.size() ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVubNLO generator expected " << _weights.size()
<< " masses and weights but found: " << ( getNArg() - npar ) / 2
<< endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
int j = npar - 2;
double maxw = 0.;
for ( unsigned i = 0; i < _masses.size(); i++ ) {
_masses[i] = getArg( j++ );
if ( i > 0 && _masses[i] <= _masses[i - 1] ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVubNLO generator expected "
<< " mass bins in ascending order!"
<< "Will terminate execution!" << endl;
::abort();
}
_weights[i] = getArg( j++ );
if ( _weights[i] < 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVubNLO generator expected "
<< " weights >= 0, but found: " << _weights[i] << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
if ( _weights[i] > maxw )
maxw = _weights[i];
}
if ( maxw == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVubNLO generator expected at least one "
<< " weight > 0, but found none! "
<< "Will terminate execution!" << endl;
::abort();
}
for ( auto& w : _weights )
w /= maxw;
// the maximum dGamma*p2 value depends on alpha_s only:
// _dGMax = 0.05;
_dGMax = 150.;
// for the Fermi Motion we need a B-Meso\n mass - but it's not critical
// to get an exact value; in order to stay in the phase space for
// B+- and B0 use the smaller mass
// check that there are 3 daughters
checkNDaug( 3 );
}
void EvtVubNLO::initProbMax()
{
noProbMax();
}
void EvtVubNLO::decay( EvtParticle* p )
{
// B+ -> u-bar specflav l+ nu
EvtParticle *xuhad, *lepton, *neutrino;
EvtVector4R p4;
double pp, pm, pl, ml, El( 0.0 ), Eh( 0.0 ), sh( 0.0 );
p->initializePhaseSpace( getNDaug(), getDaugs() );
xuhad = p->getDaug( 0 );
lepton = p->getDaug( 1 );
neutrino = p->getDaug( 2 );
_mB = p->mass();
ml = lepton->mass();
bool tryit = true;
while ( tryit ) {
// pm=(E_H+P_H)
pm = EvtRandom::Flat( 0., 1 );
pm = pow( pm, 1. / 3. ) * _mB;
// pl=mB-2*El
pl = EvtRandom::Flat( 0., 1 );
pl = sqrt( pl ) * pm;
// pp=(E_H-P_H)
pp = EvtRandom::Flat( 0., pl );
_ntot++;
El = ( _mB - pl ) / 2.;
Eh = ( pp + pm ) / 2;
sh = pp * pm;
double pdf( 0. );
if ( pp < pl && El > ml && sh > _masses[0] * _masses[0] &&
_mB * _mB + sh - 2 * _mB * Eh > ml * ml ) {
double xran = EvtRandom::Flat( 0, _dGMax );
pdf = tripleDiff( pp, pl, pm ); // triple differential distribution
// cout <<" P+,P-,Pl,Pdf= "<<pp <<" "<<pm<<" "<<pl<<" "<<pdf<<endl;
if ( pdf > _dGMax ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVubNLO pdf above maximum: " << pdf
<< " P+,P-,Pl,Pdf= " << pp << " " << pm << " " << pl << " "
<< pdf << endl;
//::abort();
}
if ( pdf >= xran )
tryit = false;
if ( pdf > _gmax )
_gmax = pdf;
} else {
// cout <<" EvtVubNLO incorrect kinematics sh= "<<sh<<"EH "<<Eh<<endl;
}
// reweight the Mx distribution
if ( !tryit && !_weights.empty() ) {
_ngood++;
double xran1 = EvtRandom::Flat();
double m = sqrt( sh );
unsigned j = 0;
while ( j < _masses.size() && m > _masses[j] )
j++;
double w = _weights[j - 1];
if ( w < xran1 )
tryit = true; // through away this candidate
}
}
// cout <<" max prob "<<gmax<<" " << pp<<" "<<y<<" "<<x<<endl;
// o.k. we have the three kineamtic variables
// now calculate a flat cos Theta_H [-1,1] distribution of the
// hadron flight direction w.r.t the B flight direction
// because the B is a scalar and should decay isotropic.
// Then chose a flat Phi_H [0,2Pi] w.r.t the B flight direction
// and and a flat Phi_L [0,2Pi] in the W restframe w.r.t the
// W flight direction.
double ctH = EvtRandom::Flat( -1, 1 );
double phH = EvtRandom::Flat( 0, 2 * M_PI );
double phL = EvtRandom::Flat( 0, 2 * M_PI );
// now compute the four vectors in the B Meson restframe
double ptmp, sttmp;
// calculate the hadron 4 vector in the B Meson restframe
sttmp = sqrt( 1 - ctH * ctH );
ptmp = sqrt( Eh * Eh - sh );
double pHB[4] = {Eh, ptmp * sttmp * cos( phH ), ptmp * sttmp * sin( phH ),
ptmp * ctH};
p4.set( pHB[0], pHB[1], pHB[2], pHB[3] );
xuhad->init( getDaug( 0 ), p4 );
// calculate the W 4 vector in the B Meson restrframe
double apWB = ptmp;
double pWB[4] = {_mB - Eh, -pHB[1], -pHB[2], -pHB[3]};
// first go in the W restframe and calculate the lepton and
// the neutrino in the W frame
double mW2 = _mB * _mB + sh - 2 * _mB * Eh;
// if(mW2<0.1){
// cout <<" low Q2! "<<pp<<" "<<epp<<" "<<x<<" "<<y<<endl;
//}
double beta = ptmp / pWB[0];
double gamma = pWB[0] / sqrt( mW2 );
double pLW[4];
ptmp = ( mW2 - ml * ml ) / 2 / sqrt( mW2 );
pLW[0] = sqrt( ml * ml + ptmp * ptmp );
double ctL = ( El - gamma * pLW[0] ) / beta / gamma / ptmp;
if ( ctL < -1 )
ctL = -1;
if ( ctL > 1 )
ctL = 1;
sttmp = sqrt( 1 - ctL * ctL );
// eX' = eZ x eW
double xW[3] = {-pWB[2], pWB[1], 0};
// eZ' = eW
double zW[3] = {pWB[1] / apWB, pWB[2] / apWB, pWB[3] / apWB};
double lx = sqrt( xW[0] * xW[0] + xW[1] * xW[1] );
for ( int j = 0; j < 2; j++ )
xW[j] /= lx;
// eY' = eZ' x eX'
double yW[3] = {-pWB[1] * pWB[3], -pWB[2] * pWB[3],
pWB[1] * pWB[1] + pWB[2] * pWB[2]};
double ly = sqrt( yW[0] * yW[0] + yW[1] * yW[1] + yW[2] * yW[2] );
for ( int j = 0; j < 3; j++ )
yW[j] /= ly;
// p_lep = |p_lep| * ( sin(Theta) * cos(Phi) * eX'
// + sin(Theta) * sin(Phi) * eY'
// + cos(Theta) * eZ')
for ( int j = 0; j < 3; j++ )
pLW[j + 1] = sttmp * cos( phL ) * ptmp * xW[j] +
sttmp * sin( phL ) * ptmp * yW[j] + ctL * ptmp * zW[j];
double apLW = ptmp;
// boost them back in the B Meson restframe
double appLB = beta * gamma * pLW[0] + gamma * ctL * apLW;
ptmp = sqrt( El * El - ml * ml );
double ctLL = appLB / ptmp;
if ( ctLL > 1 )
ctLL = 1;
if ( ctLL < -1 )
ctLL = -1;
double pLB[4] = {El, 0, 0, 0};
double pNB[8] = {pWB[0] - El, 0, 0, 0};
for ( int j = 1; j < 4; j++ ) {
pLB[j] = pLW[j] + ( ctLL * ptmp - ctL * apLW ) / apWB * pWB[j];
pNB[j] = pWB[j] - pLB[j];
}
p4.set( pLB[0], pLB[1], pLB[2], pLB[3] );
lepton->init( getDaug( 1 ), p4 );
p4.set( pNB[0], pNB[1], pNB[2], pNB[3] );
neutrino->init( getDaug( 2 ), p4 );
return;
}
double EvtVubNLO::tripleDiff( double pp, double pl, double pm )
{
std::vector<double> sCoeffs( 11 );
sCoeffs[0] = pp;
sCoeffs[1] = pl;
sCoeffs[2] = pm;
sCoeffs[3] = _b;
sCoeffs[4] = _mb;
sCoeffs[5] = _mB;
sCoeffs[6] = _idSF;
sCoeffs[7] = lambda_SF();
sCoeffs[8] = mu_h();
sCoeffs[9] = mu_i();
sCoeffs[10] = _SFNorm; // SF normalization;
double c1 = ( _mB + pl - pp - pm ) * ( pm - pl );
double c2 = 2 * ( pl - pp ) * ( pm - pl );
double c3 = ( _mB - pm ) * ( pm - pp );
double aF1 = F10( sCoeffs );
double aF2 = F20( sCoeffs );
double aF3 = F30( sCoeffs );
double td0 = c1 * aF1 + c2 * aF2 + c3 * aF3;
auto func = EvtItgPtrFunction{&integrand, 0., _mB, sCoeffs};
auto jetSF = EvtItgSimpsonIntegrator{func, 0.01, 25};
double smallfrac =
0.000001; // stop a bit before the end to avoid problems with numerical integration
double tdInt = jetSF.evaluate( 0, pp * ( 1 - smallfrac ) );
double SU = U1lo( mu_h(), mu_i() ) *
pow( ( pm - pp ) / ( _mB - pp ), alo( mu_h(), mu_i() ) );
double TD = ( _mB - pp ) * SU * ( td0 + tdInt );
return TD;
}
double EvtVubNLO::integrand( double omega, const std::vector<double>& coeffs )
{
//double pp=coeffs[0];
double c1 = ( coeffs[5] + coeffs[1] - coeffs[0] - coeffs[2] ) *
( coeffs[2] - coeffs[1] );
double c2 = 2 * ( coeffs[1] - coeffs[0] ) * ( coeffs[2] - coeffs[1] );
double c3 = ( coeffs[5] - coeffs[2] ) * ( coeffs[2] - coeffs[0] );
return c1 * F1Int( omega, coeffs ) + c2 * F2Int( omega, coeffs ) +
c3 * F3Int( omega, coeffs );
}
double EvtVubNLO::F10( const std::vector<double>& coeffs )
{
double pp = coeffs[0];
double y = ( coeffs[2] - coeffs[0] ) / ( coeffs[5] - coeffs[0] );
double mui = coeffs[9];
double muh = coeffs[8];
double z = 1 - y;
double result = U1nlo( muh, mui ) / U1lo( muh, mui );
result += anlo( muh, mui ) * log( y );
result += C_F( muh ) *
( -4 * pow( log( y * coeffs[4] / muh ), 2 ) +
10 * log( y * coeffs[4] / muh ) - 4 * log( y ) -
2 * log( y ) / ( 1 - y ) - 4.0 * EvtDiLog::DiLog( z ) -
pow( EvtConst::pi, 2 ) / 6. - 12 );
result += C_F( mui ) *
( 2 * pow( log( y * coeffs[4] * pp / pow( mui, 2 ) ), 2 ) -
3 * log( y * coeffs[4] * pp / pow( mui, 2 ) ) + 7 -
pow( EvtConst::pi, 2 ) );
result *= shapeFunction( pp, coeffs );
// changes due to SSF
result += ( -subS( coeffs ) + 2 * subT( coeffs ) +
( subU( coeffs ) - subV( coeffs ) ) * ( 1 / y - 1. ) ) /
( coeffs[5] - pp );
result += shapeFunction( pp, coeffs ) / pow( ( coeffs[5] - coeffs[0] ), 2 ) *
( -5 * ( lambda1() + 3 * lambda2() ) / 6 +
2 * ( 2 * lambda1() / 3 - lambda2() ) / pow( y, 2 ) );
// result += (subS(coeffs)+subT(coeffs)+(subU(coeffs)-subV(coeffs))/y)/(coeffs[5]-pp);
// this part has been added after Feb '05
//result += shapeFunction(pp,coeffs)/pow((coeffs[5]-coeffs[0]),2)*((lambda1()+3*lambda2())/6+2*(2*lambda1()/3-lambda2())/pow(y,2));
return result;
}
double EvtVubNLO::F1Int( double omega, const std::vector<double>& coeffs )
{
double pp = coeffs[0];
double y = ( coeffs[2] - coeffs[0] ) / ( coeffs[5] - coeffs[0] );
// mubar == mui
return C_F( coeffs[9] ) *
( ( shapeFunction( omega, coeffs ) - shapeFunction( pp, coeffs ) ) *
( 4 * log( y * coeffs[4] * ( pp - omega ) / pow( coeffs[9], 2 ) ) -
3 ) /
( pp - omega ) +
( g1( y, ( pp - omega ) / ( coeffs[5] - coeffs[0] ) ) /
( coeffs[5] - pp ) * shapeFunction( omega, coeffs ) ) );
}
double EvtVubNLO::F20( const std::vector<double>& coeffs )
{
double pp = coeffs[0];
double y = ( coeffs[2] - coeffs[0] ) / ( coeffs[5] - coeffs[0] );
double result = C_F( coeffs[8] ) * log( y ) / ( 1 - y ) *
shapeFunction( pp, coeffs ) -
1 / y *
( subS( coeffs ) + 2 * subT( coeffs ) -
( subT( coeffs ) + subV( coeffs ) ) / y ) /
( coeffs[5] - pp );
// added after Feb '05
result += shapeFunction( pp, coeffs ) /
pow( ( coeffs[5] - coeffs[0] ) * y, 2 ) *
( 2 * lambda1() / 3 + 4 * lambda2() -
y * ( 7 / 6 * lambda1() + 3 * lambda2() ) );
return result;
}
double EvtVubNLO::F2Int( double omega, const std::vector<double>& coeffs )
{
double pp = coeffs[0];
double y = ( coeffs[2] - coeffs[0] ) / ( coeffs[5] - coeffs[0] );
return C_F( coeffs[9] ) *
g3( y, ( pp - omega ) / ( coeffs[5] - coeffs[0] ) ) *
shapeFunction( omega, coeffs ) / ( coeffs[5] - pp );
}
double EvtVubNLO::F30( const std::vector<double>& coeffs )
{
double y = ( coeffs[2] - coeffs[0] ) / ( coeffs[5] - coeffs[0] );
return shapeFunction( coeffs[0], coeffs ) /
pow( ( coeffs[5] - coeffs[0] ) * y, 2 ) *
( -2 * lambda1() / 3 + lambda2() );
}
double EvtVubNLO::F3Int( double omega, const std::vector<double>& coeffs )
{
double pp = coeffs[0];
double y = ( coeffs[2] - coeffs[0] ) / ( coeffs[5] - coeffs[0] );
return C_F( coeffs[9] ) *
g3( y, ( pp - omega ) / ( coeffs[5] - coeffs[0] ) ) / 2 *
shapeFunction( omega, coeffs ) / ( coeffs[2] - coeffs[0] );
}
double EvtVubNLO::g1( double y, double x )
{
double result = ( y * ( -9 + 10 * y ) + x * x * ( -12 + 13 * y ) +
2 * x * ( -8 + 6 * y + 3 * y * y ) ) /
y / pow( 1 + x, 2 ) / ( x + y );
result -= 4 * log( ( 1 + 1 / x ) * y ) / x;
result -= 2 * log( 1 + y / x ) *
( 3 * pow( x, 4 ) * ( -2 + y ) - 2 * pow( y, 3 ) -
4 * pow( x, 3 ) * ( 2 + y ) - 2 * x * y * y * ( 4 + y ) -
x * x * y * ( 12 + 4 * y + y * y ) ) /
x / pow( ( 1 + x ) * y, 2 ) / ( x + y );
return result;
}
double EvtVubNLO::g2( double y, double x )
{
double result = y * ( 10 * pow( x, 4 ) + y * y + 3 * x * x * y * ( 10 + y ) +
pow( x, 3 ) * ( 12 + 19 * y ) +
x * y * ( 8 + 4 * y + y * y ) );
result -= 2 * x * log( 1 + y / x ) *
( 5 * pow( x, 4 ) + 2 * y * y + 6 * pow( x, 3 ) * ( 1 + 2 * y ) +
4 * y * x * ( 1 + 2 * y ) + x * x * y * ( 18 + 5 * y ) );
result *= 2 / ( pow( y * ( 1 + x ), 2 ) * y * ( x + y ) );
return result;
}
double EvtVubNLO::g3( double y, double x )
{
double result = ( 2 * pow( y, 3 ) * ( -11 + 2 * y ) -
10 * pow( x, 4 ) * ( 6 - 6 * y + y * y ) +
x * y * y * ( -94 + 29 * y + 2 * y * y ) +
2 * x * x * y * ( -72 + 18 * y + 13 * y * y ) -
pow( x, 3 ) *
( 72 + 42 * y - 70 * y * y + 3 * pow( y, 3 ) ) ) /
( pow( y * ( 1 + x ), 2 ) * y * ( x + y ) );
result += 2 * log( 1 + y / x ) *
( -6 * x * pow( y, 3 ) * ( -5 + y ) + 4 * pow( y, 4 ) +
5 * pow( x, 5 ) * ( 6 - 6 * y + y * y ) -
4 * pow( x * y, 2 ) * ( -20 + 6 * y + y * y ) +
pow( x, 3 ) * y * ( 90 - 10 * y - 28 * y * y + pow( y, 3 ) ) +
pow( x, 4 ) * ( 36 + 36 * y - 50 * y * y + 4 * pow( y, 3 ) ) ) /
( pow( ( 1 + x ) * y * y, 2 ) * ( x + y ) );
return result;
}
/* old version (before Feb 05 notebook from NNeubert
double
EvtVubNLO::F1Int(double omega,const std::vector<double> &coeffs){
double pp=coeffs[0];
double y=(coeffs[2]-coeffs[0])/(coeffs[5]-coeffs[0]);
// mubar == mui
return C_F(coeffs[9])*(
(shapeFunction(omega,coeffs)-shapeFunction(pp,coeffs))*(4*log(y*coeffs[4]*(pp-omega)/pow(coeffs[9],2))-3)/(pp-omega)-
(1./y/(coeffs[5]-pp)*shapeFunction(omega,coeffs)*(5-6*y+4*(3-y)*log((pp-omega)/y/coeffs[4])))
);
}
double
EvtVubNLO::F2Int(double omega,const std::vector<double> &coeffs){
double pp=coeffs[0];
double y=(coeffs[2]-coeffs[0])/(coeffs[5]-coeffs[0]);
return C_F(coeffs[9])*shapeFunction(omega,coeffs)*(2-11/y-4/y*log((pp-omega)/y/coeffs[4]))/(coeffs[5]-pp);
}
double
EvtVubNLO::F3(const std::vector<double> &coeffs){
return C_F(coeffs[9])*shapeFunction(omega,coeffs)/(coeffs[2]-coeffs[0]);
}
*/
double EvtVubNLO::SFNorm( const std::vector<double>& /*coeffs*/ )
{
double omega0 = 1.68; //normalization scale (mB-2*1.8)
if ( _idSF == 1 ) { // exponential SF
double omega0 = 1.68; //normalization scale (mB-2*1.8)
return M0( mu_i(), omega0 ) * pow( _b, _b ) / lambda_SF() /
( Gamma( _b ) - Gamma( _b, _b * omega0 / lambda_SF() ) );
} else if ( _idSF == 2 ) { // Gaussian SF
double c = cGaus( _b );
return M0( mu_i(), omega0 ) * 2 / lambda_SF() /
pow( c, -( 1 + _b ) / 2. ) /
( Gamma( ( 1 + _b ) / 2 ) -
Gamma( ( 1 + _b ) / 2, pow( omega0 / lambda_SF(), 2 ) * c ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "unknown SF " << _idSF << endl;
return -1;
}
}
double EvtVubNLO::shapeFunction( double omega, const std::vector<double>& sCoeffs )
{
if ( sCoeffs[6] == 1 ) {
return sCoeffs[10] * expShapeFunction( omega, sCoeffs );
} else if ( sCoeffs[6] == 2 ) {
return sCoeffs[10] * gausShapeFunction( omega, sCoeffs );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtVubNLO : unknown shape function # " << sCoeffs[6] << endl;
}
return -1.;
}
// SSF
double EvtVubNLO::subS( const std::vector<double>& c )
{
return ( lambda_bar( 1.68 ) - c[0] ) * shapeFunction( c[0], c );
}
double EvtVubNLO::subT( const std::vector<double>& c )
{
return -3 * lambda2() * subS( c ) / mu_pi2( 1.68 );
}
double EvtVubNLO::subU( const std::vector<double>& c )
{
return -2 * subS( c );
}
double EvtVubNLO::subV( const std::vector<double>& c )
{
return -subT( c );
}
double EvtVubNLO::lambda_bar( double omega0 )
{
if ( _lbar < 0 ) {
if ( _idSF == 1 ) { // exponential SF
double rat = omega0 * _b / lambda_SF();
_lbar = lambda_SF() / _b *
( Gamma( 1 + _b ) - Gamma( 1 + _b, rat ) ) /
( Gamma( _b ) - Gamma( _b, rat ) );
} else if ( _idSF == 2 ) { // Gaussian SF
double c = cGaus( _b );
_lbar = lambda_SF() *
( Gamma( 1 + _b / 2 ) -
Gamma( 1 + _b / 2, pow( omega0 / lambda_SF(), 2 ) * c ) ) /
( Gamma( ( 1 + _b ) / 2 ) -
Gamma( ( 1 + _b ) / 2,
pow( omega0 / lambda_SF(), 2 ) * c ) ) /
sqrt( c );
}
}
return _lbar;
}
double EvtVubNLO::mu_pi2( double omega0 )
{
if ( _mupi2 < 0 ) {
if ( _idSF == 1 ) { // exponential SF
double rat = omega0 * _b / lambda_SF();
_mupi2 = 3 * ( pow( lambda_SF() / _b, 2 ) *
( Gamma( 2 + _b ) - Gamma( 2 + _b, rat ) ) /
( Gamma( _b ) - Gamma( _b, rat ) ) -
pow( lambda_bar( omega0 ), 2 ) );
} else if ( _idSF == 2 ) { // Gaussian SF
double c = cGaus( _b );
double m1 = Gamma( ( 3 + _b ) / 2 ) -
Gamma( ( 3 + _b ) / 2,
pow( omega0 / lambda_SF(), 2 ) * c );
double m2 = Gamma( 1 + _b / 2 ) -
Gamma( 1 + _b / 2, pow( omega0 / lambda_SF(), 2 ) * c );
double m3 = Gamma( ( 1 + _b ) / 2 ) -
Gamma( ( 1 + _b ) / 2,
pow( omega0 / lambda_SF(), 2 ) * c );
_mupi2 = 3 * pow( lambda_SF(), 2 ) *
( m1 / m3 - pow( m2 / m3, 2 ) ) / c;
}
}
return _mupi2;
}
double EvtVubNLO::M0( double mui, double omega0 )
{
double mf = omega0 - lambda_bar( omega0 );
return 1 + 4 * C_F( mui ) *
( -pow( log( mf / mui ), 2 ) - log( mf / mui ) -
pow( EvtConst::pi / 2, 2 ) / 6. +
mu_pi2( omega0 ) / 3 / pow( mf, 2 ) *
( log( mf / mui ) - 0.5 ) );
}
double EvtVubNLO::alphas( double mu )
{
double Lambda4 = 0.302932;
double lg = 2 * log( mu / Lambda4 );
return 4 * EvtConst::pi / lg / beta0() *
( 1 - beta1() * log( lg ) / pow( beta0(), 2 ) / lg +
pow( beta1() / lg, 2 ) / pow( beta0(), 4 ) *
( pow( log( lg ) - 0.5, 2 ) - 1.25 +
beta2() * beta0() / pow( beta1(), 2 ) ) );
}
double EvtVubNLO::gausShapeFunction( double omega,
const std::vector<double>& sCoeffs )
{
double b = sCoeffs[3];
double l = sCoeffs[7];
double wL = omega / l;
return pow( wL, b ) * exp( -cGaus( b ) * wL * wL );
}
double EvtVubNLO::expShapeFunction( double omega,
const std::vector<double>& sCoeffs )
{
double b = sCoeffs[3];
double l = sCoeffs[7];
double wL = omega / l;
return pow( wL, b - 1 ) * exp( -b * wL );
}
double EvtVubNLO::Gamma( double z )
{
std::array<double, 6> gammaCoeffs{
76.18009172947146, -86.50532032941677, 24.01409824083091,
-1.231739572450155, 0.1208650973866179e-2, -0.5395239384953e-5};
//Lifted from Numerical Recipies in C
double y = z;
double x = z;
double tmp = x + 5.5;
tmp = tmp - ( x + 0.5 ) * log( tmp );
double ser = 1.000000000190015;
for ( const auto& gammaCoeff : gammaCoeffs ) {
y += 1.0;
ser += gammaCoeff / y;
}
return exp( -tmp + log( 2.5066282746310005 * ser / x ) );
}
double EvtVubNLO::Gamma( double z, double tmin )
{
std::vector<double> c( 1 );
c[0] = z;
auto func = EvtItgPtrFunction{&dgamma, tmin, 100., c};
auto jetSF = EvtItgSimpsonIntegrator{func, 0.001};
return jetSF.evaluate( tmin, 100. );
}
diff --git a/src/EvtGenModels/EvtVubdGamma.cpp b/src/EvtGenModels/EvtVubdGamma.cpp
index 8e65330..db7fefd 100644
--- a/src/EvtGenModels/EvtVubdGamma.cpp
+++ b/src/EvtGenModels/EvtVubdGamma.cpp
@@ -1,271 +1,232 @@
-//-----------------------------------------------------------------------
-// File and Version Information:
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-//
-// Description:
-// 3 2 2
-// d Gamma / _ _ _2 mb _2 mb
-// ---------- = 12 Gamma | (1+x-z)(z-x-p ) -- W + (1-z+p ) -- W
-// _ 2 0 \ 2 1 2 2
-// dx dz dp 2
-// _ _ _2 mb 2 \.
-// + [x(z-x)-p ] -- (W + 2mb W + mb W ) |
-// 4 3 4 5 /
-//
-// with
-// 2 E 2
-// l _2 p 2 v.p _
-// x = ------ , p = --- , z = ------ , x = 1-x
-// mb 2 mb
-// mb
-//
-// the triple differential decay rate according to
-// hep-ph/9905351 v2
-//
-// Environment:
-// Software developed for the BaBar Detector at the SLAC B-Factory.
-//
-// Author List:
-// Sven Menke
-//
-//-----------------------------------------------------------------------
-//-----------------------
-// This Class's Header --
-//-----------------------
#include "EvtGenModels/EvtVubdGamma.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtDiLog.hh"
#include "EvtGenBase/EvtPatches.hh"
-//---------------
-// C Headers --
-//---------------
#include <math.h>
//----------------
// Constructors --
//----------------
EvtVubdGamma::EvtVubdGamma( const double& alphas )
{
_alphas = alphas;
// the range for the delta distribution in p2 is from _epsilon1 to
// _epsilon2. It was checked with the single differential formulae
// in the paper that these values are small enough to imitate p2 = 0
// for the regular terms.
// The ()* distributions, however need further treatment. In order to
// generate the correct spectrum in z a threshold need to be computed
// from the desired value of the coupling alphas. The idea is that
// for z=1 p2=0 is not allowed and therefore the part of dGamma proportional
// to delta(p2) should go to 0 for z->1.
// Using equation (3.1) and (3.2) it is possible to find the correct value
// for log(_epsilon3) from this requirement.
_epsilon1 = 1e-10;
_epsilon2 = 1e-5;
if ( alphas > 0 ) {
double lne3 = 9. / 16. - 2 * EvtConst::pi * EvtConst::pi / 3. +
6 * EvtConst::pi / 4 / alphas;
if ( lne3 > 0 )
lne3 = -7. / 4. - sqrt( lne3 );
else
lne3 = -7. / 4.;
_epsilon3 = exp( lne3 );
} else
_epsilon3 = 1;
}
//-----------
// Methods --
//-----------
double EvtVubdGamma::getdGdxdzdp( const double& x, const double& z,
const double& p2 )
{
// check phase space
double xb = ( 1 - x );
if ( x < 0 || x > 1 || z < xb || z > ( 1 + xb ) )
return 0;
double p2min = ( 0 > z - 1. ? 0 : z - 1. );
double p2max = ( 1. - x ) * ( z - 1. + x );
if ( p2 < p2min || p2 > p2max )
return 0;
// // check the phase space
// return 1.;
double dG;
if ( p2 > _epsilon1 && p2 < _epsilon2 ) {
double W1 = getW1delta( x, z );
double W4plus5 = getW4plus5delta( x, z );
dG = 12. * delta( p2, p2min, p2max ) *
( ( 1. + xb - z ) * ( z - xb ) * W1 + xb * ( z - xb ) * ( W4plus5 ) );
} else {
double W1 = getW1nodelta( x, z, p2 );
double W2 = getW2nodelta( x, z, p2 );
double W3 = getW3nodelta( x, z, p2 );
double W4 = getW4nodelta( x, z, p2 );
double W5 = getW5nodelta( x, z, p2 );
dG = 12. *
( ( 1. + xb - z ) * ( z - xb - p2 ) * W1 + ( 1. - z + p2 ) * W2 +
( xb * ( z - xb ) - p2 ) * ( W3 + W4 + W5 ) );
}
return dG;
}
double EvtVubdGamma::delta( const double& x, const double& xmin,
const double& xmax )
{
if ( xmin > 0 || xmax < 0 )
return 0.;
if ( _epsilon1 < x && x < _epsilon2 )
return 1. / ( _epsilon2 - _epsilon1 );
return 0.0;
}
double EvtVubdGamma::getW1delta( const double&, const double& z )
{
double mz = 1. - z;
double lz;
if ( z == 1 )
lz = -1.;
else
lz = log( z ) / ( 1. - z );
// ddilog_(&z) is actually the dilog of (1-z) in maple,
// also in Neuberts paper the limit dilog(1) = pi^2/6 is used
// this corresponds to maple's dilog(0), so
// I take ddilog_(&mz) where mz=1-z in order to satisfy Neubert's definition
// and to compare with Maple the argument in maple should be (1-mz) ...
double dl = 4. * EvtDiLog::DiLog( mz ) + 4. * pow( EvtConst::pi, 2 ) / 3.;
double w = -( 8. * pow( log( z ), 2 ) - 10. * log( z ) + 2. * lz + dl + 5. ) +
( 8. * log( z ) - 7. ) * log( _epsilon3 ) -
2. * pow( log( _epsilon3 ), 2 );
return ( 1. + w * _alphas / 3. / EvtConst::pi );
}
double EvtVubdGamma::getW1nodelta( const double&, const double& z,
const double& p2 )
{
double z2 = z * z;
double t2 = 1. - 4. * p2 / z2;
double t = sqrt( t2 );
double w = 0;
if ( p2 > _epsilon2 )
w += 4. / p2 * ( log( ( 1. + t ) / ( 1. - t ) ) / t + log( p2 / z2 ) ) +
1. - ( 8. - z ) * ( 2. - z ) / z2 / t2 +
( ( 2. - z ) / 2. / z + ( 8. - z ) * ( 2. - z ) / 2. / z2 / t2 ) *
log( ( 1. + t ) / ( 1. - t ) ) / t;
if ( p2 > _epsilon3 )
w += ( 8. * log( z ) - 7. ) / p2 - 4. * log( p2 ) / p2;
return w * _alphas / 3. / EvtConst::pi;
}
double EvtVubdGamma::getW2nodelta( const double&, const double& z,
const double& p2 )
{
double z2 = z * z;
double t2 = 1. - 4. * p2 / z2;
double t = sqrt( t2 );
double w11 = ( 32. - 8. * z + z2 ) / 4. / z / t2;
double w = 0;
if ( p2 > _epsilon2 )
w -= ( z * t2 / 8. + ( 4. - z ) / 4. + w11 / 2. ) *
log( ( 1. + t ) / ( 1. - t ) ) / t;
if ( p2 > _epsilon2 )
w += ( 8. - z ) / 4. + w11;
return ( w * _alphas / 3. / EvtConst::pi );
}
double EvtVubdGamma::getW3nodelta( const double&, const double& z,
const double& p2 )
{
double z2 = z * z;
double t2 = 1. - 4. * p2 / z2;
double t4 = t2 * t2;
double t = sqrt( t2 );
double w = 0;
if ( p2 > _epsilon2 )
w += ( z * t2 / 16. + 5. * ( 4. - z ) / 16. -
( 64. + 56. * z - 7. * z2 ) / 16. / z / t2 +
3. * ( 12. - z ) / 16. / t4 ) *
log( ( 1. + t ) / ( 1. - t ) ) / t;
if ( p2 > _epsilon2 )
w += -( 8. - 3. * z ) / 8. + ( 32. + 22. * z - 3. * z2 ) / 4. / z / t2 -
3. * ( 12. - z ) / 8. / t4;
return ( w * _alphas / 3. / EvtConst::pi );
}
double EvtVubdGamma::getW4nodelta( const double&, const double& z,
const double& p2 )
{
double z2 = z * z;
double t2 = 1. - 4. * p2 / z2;
double t4 = t2 * t2;
double t = sqrt( t2 );
double w = 0;
if ( p2 > _epsilon2 )
w -= ( ( 8. - 3. * z ) / 4. / z - ( 22. - 3. * z ) / 2. / z / t2 +
3. * ( 12. - z ) / 4. / z / t4 ) *
log( ( 1. + t ) / ( 1. - t ) ) / t;
if ( p2 > _epsilon2 )
w += -1. - ( 32. - 5. * z ) / 2. / z / t2 +
3. * ( 12. - z ) / 2. / z / t4;
return w * _alphas / 3. / EvtConst::pi;
}
double EvtVubdGamma::getW4plus5delta( const double&, const double& z )
{
double w = 0;
if ( z == 1 )
w = -2;
else
w = 2. * log( z ) / ( 1. - z );
return ( w * _alphas / 3. / EvtConst::pi );
}
double EvtVubdGamma::getW5nodelta( const double&, const double& z,
const double& p2 )
{
double z2 = z * z;
double t2 = 1. - 4. * p2 / z2;
double t4 = t2 * t2;
double t = sqrt( t2 );
double w = 0;
if ( p2 > _epsilon2 )
w += ( 1. / 4. / z - ( 2. - z ) / 2. / z2 / t2 +
3. * ( 12. - z ) / 4. / z2 / t4 ) *
log( ( 1. + t ) / ( 1. - t ) ) / t;
if ( p2 > _epsilon2 )
w += -( 8. + z ) / 2. / z2 / t2 - 3. * ( 12. - z ) / 2. / z2 / t4;
return ( w * _alphas / 3. / EvtConst::pi );
}
diff --git a/src/EvtGenModels/EvtWHad.cpp b/src/EvtGenModels/EvtWHad.cpp
index f6ebb79..c9b91e7 100644
--- a/src/EvtGenModels/EvtWHad.cpp
+++ b/src/EvtGenModels/EvtWHad.cpp
@@ -1,324 +1,306 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-//
-// Module: EvtWHad.cc
-//
-// Description: Routine to calculate W -> (n pi) + (m K) current
-// according to [Kuhn, Was, Acta.Phys.Polon B39 (2008) 147]
-//
-// Modification history:
-// A V Luchinsky 20 Jan, 2013 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtWHad.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtTensor4C.hh"
EvtWHad::EvtWHad() : mRho_(), gamma0_(), cK_( 0 )
{
// cK coefficients from Eur. Phys. J. C39, 41 (2005), arXiv:hep-ph/0409080 [hep-ph]
// rho(770)
mRho_.push_back( 0.77511 );
gamma0_.push_back( 0.1491 );
cK_.push_back( 1.195 );
// rho(1450)
mRho_.push_back( 1.465 );
gamma0_.push_back( 0.400 );
cK_.push_back( -0.112 );
// rho(1700)
mRho_.push_back( 1.72 );
gamma0_.push_back( 0.250 ); // rho(1700)
cK_.push_back( -0.083 );
// rho(2150), PRD 76 092005
mRho_.push_back( 2.150 );
gamma0_.push_back( 0.310 );
cK_.push_back( 0.0 );
}
EvtComplex EvtWHad::BWKK( double s, int i ) const
{
double m2 = pow( mRho_[i], 2 );
EvtComplex qs = pcm( s );
EvtComplex qm = pcm( m2 );
if ( abs( qm ) < 1e-10 ) {
return 0;
}
EvtComplex rat = qs / qm;
EvtComplex rat3 = rat * rat * rat;
if ( abs( s ) < 1e-10 ) {
return 0;
}
EvtComplex gamma = m2 * rat3 * gamma0_[i] / s;
EvtComplex I( 0.0, 1.0 );
EvtComplex denBW = m2 - s - I * sqrt( s ) * gamma;
if ( abs( denBW ) < 1e-10 ) {
return 0;
}
return cK_[i] * m2 / denBW;
}
EvtVector4C EvtWHad::WCurrent_KSK( const EvtVector4R& pKS,
const EvtVector4R& pKplus ) const
{
double s = ( pKS + pKplus ).mass2();
EvtComplex f = BWKK( s, 0 ) + BWKK( s, 1 ) + BWKK( s, 2 );
return f * ( pKS - pKplus );
}
EvtComplex EvtWHad::pcm( double s ) const
{
double mpi2 = pow( 0.140, 2 );
if ( abs( s ) < 1e-10 )
return 0;
double pcm2 = 1.0 - 4.0 * mpi2 / s;
EvtComplex result;
if ( pcm2 >= 0.0 ) {
result = EvtComplex( sqrt( pcm2 ), 0.0 );
} else {
result = EvtComplex( 0.0, sqrt( -pcm2 ) );
}
return result;
}
// =================== W+ -> pi_ current ========================================
EvtVector4C EvtWHad::WCurrent( const EvtVector4R& q1 ) const
{
return q1;
}
//====================== W+ -> pi+ pi0 current =========================================
EvtVector4C EvtWHad::WCurrent( const EvtVector4R& q1, const EvtVector4R& q2 ) const
{
return BWr( q1 + q2 ) * ( q1 - q2 );
}
//========================= W+ -> pi+ pi+ pi- current ==============================================
EvtVector4C EvtWHad::WCurrent( const EvtVector4R& q1, const EvtVector4R& q2,
const EvtVector4R& q3 ) const
{
EvtVector4R Q = q1 + q2 + q3;
EvtVector4R q13 = q1 - q3, q23 = q2 - q3;
double Q2 = Q.mass2();
return BWa( Q ) * ( q13 - ( Q * ( Q * q13 ) / Q2 ) * BWr( q2 + q3 ) + q23 -
( Q * ( Q * q23 ) / Q2 ) * BWr( q1 + q3 ) );
}
// ================= W+ -> pi+ pi+ pi- pi- pi+ current with symmetrization ================================
EvtVector4C EvtWHad::WCurrent( const EvtVector4R& q1, const EvtVector4R& q2,
const EvtVector4R& q3, const EvtVector4R& q4,
const EvtVector4R& q5 ) const
{
EvtVector4C term1 = JB( q1, q2, q3, q4, q5 );
EvtVector4C term2 = JB( q5, q2, q3, q4, q1 );
EvtVector4C term3 = JB( q1, q5, q3, q4, q2 );
EvtVector4C term4 = JB( q1, q2, q4, q3, q5 );
EvtVector4C term5 = JB( q5, q2, q4, q3, q1 );
EvtVector4C term6 = JB( q1, q5, q4, q3, q2 );
EvtVector4C V = term1 + term2 + term3 + term4 + term5 + term6;
return V;
}
// =========================W+ -> K+ K- pi+ current ==================================================
EvtVector4C EvtWHad::WCurrent_KKP( const EvtVector4R& pKplus,
const EvtVector4R& pKminus,
const EvtVector4R& pPiPlus ) const
{
const double mK_892( 0.892 ), gammaK_892( 0.051 );
const double mA1( 1.239 ), gammaA1( 0.600 );
EvtVector4R q = pKplus + pKminus + pPiPlus;
double q2 = q.mass2();
EvtVector4R pK = pKminus + pPiPlus;
double pK2 = pK.mass2();
EvtComplex I( 0.0, 1.0 ), den1, den2;
den1 = 1.0 / ( q2 - mA1 * mA1 + I * mA1 * gammaA1 );
den2 = 1.0 / ( pK2 - mK_892 * mK_892 + I * mK_892 * gammaK_892 );
EvtTensor4C ten = EvtTensor4C::g() -
( 1.0 / q2 ) * EvtGenFunctions::directProd( q, q );
EvtVector4C vec = den1 * den2 * ( pKminus - pPiPlus );
vec = ten.cont2( vec );
return vec;
}
// hadronic current W+ -> K+ pi+ pi-
EvtVector4C EvtWHad::WCurrent_KPP( const EvtVector4R& pKplus,
const EvtVector4R& pPiPlus,
const EvtVector4R& pPiMinus ) const
{
const double cK1p = 0.210709, cK1r = -0.0152997, cK2p = 0.0945309,
cK2r = 0.504315;
const double mK1_1270 = 1.270, gammaK1_1270 = 0.090, gK1270_Krho = 2.71,
gK1270_KsPi = 0.792;
const double mK1_1400 = 1.400, gammaK1_1400 = 0.174, gK11400_Krho = 0.254,
gK11400_KsPi = 2.509;
const double mK_892 = 0.892, gammaK_892 = 0.051, gK892_Kpi = 3.26;
const double mRho = 0.770, gammaRho = 0.150, gRho_PiPi = 6.02;
EvtVector4R q = pKplus + pPiPlus + pPiMinus;
double q2 = q.mass2(), pp2( 0.0 );
EvtVector4C curr( 0, 0, 0, 0 ), curr1;
EvtComplex I( 0.0, 1.0 ), den1, den2;
// W+ -> K1+(1270) -> K+ rho0 -> K+ pi+ pi-
den1 = gK1270_Krho /
( q2 - mK1_1270 * mK1_1270 + I * mK1_1270 * gammaK1_1270 );
pp2 = ( pPiPlus + pPiMinus ).mass2();
den2 = gRho_PiPi / ( pp2 - mRho * mRho + I * mRho * gammaRho );
curr1 = ( pPiPlus - pPiMinus ) * den1 * den2;
curr = curr + cK1r * curr1;
// W+ -> K1+(1270) -> K*(892)0 pi+ -> K+ pi- pi-
den1 = gK1270_KsPi /
( q2 - mK1_1270 * mK1_1270 + I * mK1_1270 * gammaK1_1270 );
pp2 = ( pKplus + pPiMinus ).mass2();
den2 = gK892_Kpi / ( pp2 - mK_892 * mK_892 + I * mK_892 * gammaK_892 );
curr1 = ( pKplus - pPiMinus ) * den1 * den2;
curr = curr + cK1p * curr1;
// W+ -> K1+(1400) -> K+ rho0 -> K+ pi+ pi-
den1 = gK11400_Krho /
( q2 - mK1_1400 * mK1_1400 + I * mK1_1400 * gammaK1_1400 );
pp2 = ( pPiMinus + pPiPlus ).mass2();
den2 = gRho_PiPi / ( pp2 - mRho * mRho + I * mRho * gammaRho );
curr1 = ( pPiPlus - pPiMinus ) * den1 * den2;
curr = curr + cK2r * curr1;
// W+ -> K1+(1400) -> K*(892)0 pi+ -> K+ pi- pi+
den1 = gK11400_KsPi /
( q2 - mK1_1400 * mK1_1400 + I * mK1_1400 * gammaK1_1400 );
pp2 = ( pKplus + pPiMinus ).mass2();
den2 = gK892_Kpi / ( pp2 - mK_892 * mK_892 + I * mK_892 * gammaK_892 );
curr1 = ( pKplus - pPiPlus ) * den1 * den2;
curr = curr + cK2p * curr1;
EvtTensor4C ten = EvtTensor4C::g() -
( 1.0 / q2 ) * EvtGenFunctions::directProd( q, q );
curr = ten.cont2( curr );
return curr;
}
// a1 -> pi+ pi+ pi- BW
EvtComplex EvtWHad::BWa( const EvtVector4R& q ) const
{
double _mA1( 1.26 ), _GA1( 0.4 );
double _mA1Sq = _mA1 * _mA1;
EvtComplex I( 0.0, 1.0 );
double Q2 = q.mass2();
double GA1 = _GA1 * pi3G( Q2 ) / pi3G( _mA1Sq );
EvtComplex denBA1( _mA1Sq - Q2, -1.0 * _mA1 * GA1 );
return _mA1Sq / denBA1;
}
EvtComplex EvtWHad::BWf( const EvtVector4R& q ) const
{
double mf( 0.8 ), Gf( 0.6 );
double mfSq = mf * mf;
EvtComplex I( 0.0, 1.0 );
double Q2 = q.mass2();
return mfSq / ( mfSq - Q2 - I * mf * Gf );
}
EvtComplex EvtWHad::BWr( const EvtVector4R& q ) const
{
double _mRho( 0.775 ), _gammaRho( 0.149 ), _mRhopr( 1.364 ),
_gammaRhopr( 0.400 ), _beta( -0.108 );
double m1 = EvtPDL::getMeanMass( EvtPDL::getId( "pi+" ) ),
m2 = EvtPDL::getMeanMass( EvtPDL::getId( "pi+" ) );
double mQ2 = q.mass2();
double m1Sq = m1 * m1, m2Sq = m2 * m2, m12Sq = m1Sq * m2Sq;
// momenta in the rho->pipi decay
double dRho = _mRho * _mRho - m1Sq - m2Sq;
double pPiRho = ( 1.0 / _mRho ) * sqrt( ( dRho * dRho ) / 4.0 - m12Sq );
double dRhopr = _mRhopr * _mRhopr - m1Sq - m2Sq;
double pPiRhopr = ( 1.0 / _mRhopr ) *
sqrt( ( dRhopr * dRhopr ) / 4.0 - m12Sq );
double dQ = mQ2 - m1Sq - m2Sq;
double pPiQ = ( 1.0 / sqrt( mQ2 ) ) * sqrt( ( dQ * dQ ) / 4.0 - m12Sq );
double gammaRho = _gammaRho * _mRho / sqrt( mQ2 ) *
pow( ( pPiQ / pPiRho ), 3 );
EvtComplex BRhoDem( _mRho * _mRho - mQ2, -1.0 * _mRho * gammaRho );
EvtComplex BRho = _mRho * _mRho / BRhoDem;
double gammaRhopr = _gammaRhopr * _mRhopr / sqrt( mQ2 ) *
pow( ( pPiQ / pPiRhopr ), 3 );
EvtComplex BRhoprDem( _mRhopr * _mRhopr - mQ2, -1.0 * _mRho * gammaRhopr );
EvtComplex BRhopr = _mRhopr * _mRhopr / BRhoprDem;
return ( BRho + _beta * BRhopr ) / ( 1.0 + _beta );
}
double EvtWHad::pi3G( double m2 ) const
{
double mPi = EvtPDL::getMeanMass( EvtPDL::getId( "pi+" ) );
double mRho( 0.775 );
double val( 0.0 );
if ( m2 > ( mRho + mPi ) ) {
val = m2 * ( 1.623 + 10.38 / m2 - 9.32 / ( m2 * m2 ) +
0.65 / ( m2 * m2 * m2 ) );
} else {
double t1 = m2 - 9.0 * mPi * mPi;
val = 4.1 * pow( t1, 3.0 ) * ( 1.0 - 3.3 * t1 + 5.8 * t1 * t1 );
}
return val;
}
EvtVector4C EvtWHad::JB( const EvtVector4R& p1, const EvtVector4R& p2,
const EvtVector4R& p3, const EvtVector4R& p4,
const EvtVector4R& p5 ) const
{
EvtVector4R Qtot = p1 + p2 + p3 + p4 + p5, Qa = p1 + p2 + p3;
EvtTensor4C T = ( 1.0 / Qtot.mass2() ) *
EvtGenFunctions::directProd( Qtot, Qtot ) -
EvtTensor4C::g();
EvtVector4R p13 = p1 - p3, p23 = p2 - p3;
EvtVector4R V13 = Qa * ( p2 * p13 ) / Qa.mass2() - p13;
EvtVector4R V23 = Qa * ( p1 * p23 ) / Qa.mass2() - p23;
return BWa( Qtot ) * BWa( Qa ) * BWf( p4 + p5 ) *
( T.cont1( V13 ) * BWr( p1 + p3 ) + T.cont1( V23 ) * BWr( p2 + p3 ) );
}
diff --git a/src/EvtGenModels/EvtWilsonCoefficients.cpp b/src/EvtGenModels/EvtWilsonCoefficients.cpp
index 7e95fd0..3551e89 100644
--- a/src/EvtGenModels/EvtWilsonCoefficients.cpp
+++ b/src/EvtGenModels/EvtWilsonCoefficients.cpp
@@ -1,571 +1,556 @@
-//---------------------------------------------------------------------------------
-//
-// Wilson coeficients according to A.J.Buras and M.Munz, Phys.Rev. D52, 186. (1995)
-// Thanks to N. Nikitine for example code for Pythia
-// Coefficient C8eff and C2 correction to C7eff taken from:
-// A.J.Buras, M.Misiak, M.Munz, S.Pokorski, Nucl.Phys. B424, 374 (1994)
-//
-// Used constants come from PDG 2004
-//
-// P. Reznicek 18.02.2005
-//
-// 04/03/2005 PR Added h-function
-//
-//---------------------------------------------------------------------------------
-
#include "EvtGenModels/EvtWilsonCoefficients.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <stdlib.h>
double li2spence( double );
EvtWilsonCoefficients::EvtWilsonCoefficients()
{
int i, j;
double tmpa[8] = {14. / 23., 16. / 23., 6. / 23., -12. / 23.,
0.4086, -0.4230, -0.8994, 0.1456};
double tmph[8] = {2.2996, -1.0880, -3. / 7., -1. / 14.,
-0.6494, -0.0380, -0.0186, -0.0057};
double tmpp[8] = {0, 0, -80. / 203., 8. / 33.,
0.0433, 0.1384, 0.1648, -0.0073};
double tmps[8] = {0, 0, -0.2009, -0.3579, 0.0490, -0.3616, -0.3554, 0.0072};
double tmpq[8] = {0, 0, 0, 0, 0.0318, 0.0918, -0.2700, 0.0059};
double tmpg[8] = {313063. / 363036., 0, 0, 0,
-0.9135, 0.0873, -0.0571, -0.0209};
double tmpk[6][8] = {
{0, 0, 1. / 2., -1. / 2., 0, 0, 0, 0},
{0, 0, 1. / 2., +1. / 2., 0, 0, 0, 0},
{0, 0, -1. / 14., +1. / 6., 0.0510, -0.1403, -0.0113, 0.0054},
{0, 0, -1. / 14., -1. / 6., 0.0984, +0.1214, +0.0156, 0.0026},
{0, 0, 0, 0, -0.0397, 0.0117, -0.0025, +0.0304},
{0, 0, 0, 0, +0.0335, 0.0239, -0.0462, -0.0112}};
double tmpr[2][8] = {
{0, 0, +0.8966, -0.1960, -0.2011, 0.1328, -0.0292, -0.1858},
{0, 0, -0.1193, +0.1003, -0.0473, 0.2323, -0.0133, -0.1799}};
for ( i = 0; i < 8; i++ ) {
a[i] = tmpa[i];
h[i] = tmph[i];
p[i] = tmpp[i];
s[i] = tmps[i];
q[i] = tmpq[i];
g[i] = tmpg[i];
for ( j = 0; j < 6; j++ )
k[j][i] = tmpk[j][i];
for ( j = 0; j < 2; j++ )
r[j][i] = tmpr[j][i];
}
m_n_f = 5;
m_Lambda = 0.2167;
m_alphaMZ = 0.1187;
m_mu = 4.8;
m_M_Z = 91.1876;
m_M_t = 174.3;
m_M_W = 80.425;
m_alphaS = 0;
m_eta = 0;
m_sin2W = 0.23120;
m_ialpha = 137.036;
m_C1 = m_C2 = m_C3 = m_C4 = m_C5 = m_C6 = m_C7 = m_C7eff0 = m_C8 =
m_C8eff0 = m_C9 = m_C9tilda = m_C10 = m_C10tilda = m_P0 = 0;
m_A = m_B = m_C = m_D = m_E = m_F = m_Y = m_Z = m_PE = 0;
m_ksi = 0;
}
void EvtWilsonCoefficients::SetRenormalizationScheme( std::string scheme )
{
if ( scheme == "NDR" )
m_ksi = 0;
else if ( scheme == "HV" )
m_ksi = 1;
else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "ERROR: EvtWilsonCoefficients knows only NDR and HV schemes !"
<< std::endl;
::abort();
}
}
double EvtWilsonCoefficients::alphaS( double mu = 4.8, int n_f = 5,
double Lambda = 0.2167 )
{
// calculate strong coupling constant for n_f flavours and scale mu
double beta0 = 11. - 2. / 3. * n_f;
double beta1 = 51. - 19. / 3. * n_f;
double beta2 = 2857. - 5033. / 9. * n_f + 325. / 27. * n_f * n_f;
double lnratio = log( mu * mu / Lambda / Lambda );
double aS = 4. * EvtConst::pi / beta0 / lnratio *
( 1. - 2 * beta1 / beta0 / beta0 * log( lnratio ) / lnratio +
4 * beta1 * beta1 / beta0 / beta0 / beta0 / beta0 / lnratio /
lnratio *
( ( log( lnratio ) - 0.5 ) * ( log( lnratio ) - 0.5 ) +
beta2 * beta0 / 8 / beta1 / beta1 - 5. / 4. ) );
return aS;
}
double EvtWilsonCoefficients::Lambda( double alpha = 0.1187, int n_f = 5,
double mu = 91.1876,
double epsilon = 0.00005,
int maxstep = 1000 )
{
// calculate Lambda matching alphaS using simple iterative method
int i;
double difference = 0;
double Lambda = mu * 0.9999999999;
double step = -mu / 20;
for ( i = 0;
i < maxstep &&
( difference = fabs( alphaS( mu, n_f, Lambda ) - alpha ) ) >= epsilon;
i++ ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< " Difference of alpha_S from " << alpha << " is " << difference
<< " at Lambda = " << Lambda << std::endl;
if ( alphaS( mu, n_f, Lambda ) > alpha ) {
if ( step > 0 )
step *= -0.4;
if ( alphaS( mu, n_f, Lambda + step - epsilon ) <
alphaS( mu, n_f, Lambda + step ) )
Lambda += step;
else
step *= 0.4;
} else {
if ( step < 0 )
step *= -0.4;
if ( Lambda + step < mu )
Lambda += step;
else
step *= 0.4;
}
}
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< " Difference of alpha_S from " << alpha << " is " << difference
<< " at Lambda = " << Lambda << std::endl;
if ( difference >= epsilon ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< " ERROR: Did not converge Lambda for alpha_s = " << alpha
<< " , difference " << difference << " >= " << epsilon << " after "
<< i << " steps !" << std::endl;
::abort();
return -1;
} else {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " For alpha_s = " << alphaS( mu, n_f, Lambda )
<< " was found Lambda = " << Lambda << std::endl;
return Lambda;
}
}
double EvtWilsonCoefficients::eta( double mu = 4.8, int n_f = 5,
double Lambda = 0.2167, double M_W = 80.425 )
{
return alphaS( M_W, n_f, Lambda ) / alphaS( mu, n_f, Lambda );
}
EvtComplex EvtWilsonCoefficients::C1( double mu = 4.8, int n_f = 5,
double Lambda = 0.2167, double M_W = 80.425 )
{
int i;
EvtComplex myC1( 0, 0 );
for ( i = 0; i < 8; i++ )
myC1 += k[0][i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] );
return myC1;
}
EvtComplex EvtWilsonCoefficients::C2( double mu = 4.8, int n_f = 5,
double Lambda = 0.2167, double M_W = 80.425 )
{
int i;
EvtComplex myC2( 0, 0 );
for ( i = 0; i < 8; i++ )
myC2 += k[1][i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] );
return myC2;
}
EvtComplex EvtWilsonCoefficients::C3( double mu = 4.8, int n_f = 5,
double Lambda = 0.2167, double M_W = 80.425 )
{
int i;
EvtComplex myC3( 0, 0 );
for ( i = 0; i < 8; i++ )
myC3 += k[2][i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] );
return myC3;
}
EvtComplex EvtWilsonCoefficients::C4( double mu = 4.8, int n_f = 5,
double Lambda = 0.2167, double M_W = 80.425 )
{
int i;
EvtComplex myC4( 0, 0 );
for ( i = 0; i < 8; i++ )
myC4 += k[3][i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] );
return myC4;
}
EvtComplex EvtWilsonCoefficients::C5( double mu = 4.8, int n_f = 5,
double Lambda = 0.2167, double M_W = 80.425 )
{
int i;
EvtComplex myC5( 0, 0 );
for ( i = 0; i < 8; i++ )
myC5 += k[4][i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] );
return myC5;
}
EvtComplex EvtWilsonCoefficients::C6( double mu = 4.8, int n_f = 5,
double Lambda = 0.2167, double M_W = 80.425 )
{
int i;
EvtComplex myC6( 0, 0 );
for ( i = 0; i < 8; i++ )
myC6 += k[5][i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] );
return myC6;
}
EvtComplex EvtWilsonCoefficients::C7( double M_t = 174.3, double M_W = 80.425 )
{
return EvtComplex( -0.5 * A( M_t * M_t / M_W / M_W ), 0 );
}
EvtComplex EvtWilsonCoefficients::C8( double M_t = 174.3, double M_W = 80.425 )
{
return EvtComplex( -0.5 * F( M_t * M_t / M_W / M_W ), 0 );
}
EvtComplex EvtWilsonCoefficients::C7eff0( double mu = 4.8, int n_f = 5,
double Lambda = 0.2167,
double M_t = 174.3, double M_W = 80.425 )
{
int i;
EvtComplex myC7eff( 0, 0 );
for ( i = 0; i < 8; i++ )
myC7eff += h[i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] );
myC7eff *= C2( mu, n_f, Lambda, M_W );
myC7eff += pow( eta( mu, n_f, Lambda, M_W ), 16. / 23. ) * C7( M_t, M_W );
myC7eff += 8. / 3. *
( pow( eta( mu, n_f, Lambda, M_W ), 14. / 23. ) -
pow( eta( mu, n_f, Lambda, M_W ), 16. / 23. ) ) *
C8( M_t, M_W );
return myC7eff;
}
EvtComplex EvtWilsonCoefficients::C8eff0( double mu = 4.8, int n_f = 5,
double Lambda = 0.2167,
double M_t = 174.3, double M_W = 80.425 )
{
int i;
EvtComplex myC8eff( 0, 0 );
for ( i = 0; i < 8; i++ )
myC8eff += g[i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] );
myC8eff += pow( eta( mu, n_f, Lambda, M_W ), 14. / 23. ) * C8( M_t, M_W );
return myC8eff;
}
EvtComplex EvtWilsonCoefficients::C10tilda( double sin2W = 0.23120,
double M_t = 174.3,
double M_W = 80.425 )
{
return EvtComplex( -Y( M_t * M_t / M_W / M_W ) / sin2W, 0 );
}
EvtComplex EvtWilsonCoefficients::C10( double sin2W = 0.23120,
double M_t = 174.3, double M_W = 80.425,
double ialpha = 137.036 )
{
return ( 1. / 2 / EvtConst::pi / ialpha * C10tilda( sin2W, M_t, M_W ) );
}
double EvtWilsonCoefficients::A( double x )
{
return ( x * ( 8 * x * x + 5 * x - 7 ) / 12 / pow( x - 1, 3 ) +
x * x * ( 2 - 3 * x ) * log( x ) / 2 / pow( x - 1, 4 ) );
}
double EvtWilsonCoefficients::B( double x )
{
return ( x / 4 / ( 1 - x ) + x / 4 / ( x - 1 ) / ( x - 1 ) * log( x ) );
}
double EvtWilsonCoefficients::C( double x )
{
return ( x * ( x - 6 ) / 8 / ( x - 1 ) +
x * ( 3 * x + 2 ) / 8 / ( x - 1 ) / ( x - 1 ) * log( x ) );
}
double EvtWilsonCoefficients::D( double x )
{
return ( ( -19 * x * x * x + 25 * x * x ) / 36 / pow( x - 1, 3 ) +
x * x * ( 5 * x * x - 2 * x - 6 ) / 18 / pow( x - 1, 4 ) * log( x ) -
4. / 9 * log( x ) );
}
double EvtWilsonCoefficients::E( double x )
{
return ( x * ( 18 - 11 * x - x * x ) / 12 / pow( 1 - x, 3 ) +
x * x * ( 15 - 16 * x + 4 * x * x ) / 6 / pow( 1 - x, 4 ) * log( x ) -
2. / 3 * log( x ) );
}
double EvtWilsonCoefficients::F( double x )
{
return ( x * ( x * x - 5 * x - 2 ) / 4 / pow( x - 1, 3 ) +
3 * x * x / 2 / pow( x - 1, 4 ) * log( x ) );
}
double EvtWilsonCoefficients::Y( double x )
{
return ( C( x ) - B( x ) );
}
double EvtWilsonCoefficients::Z( double x )
{
return ( C( x ) + 1. / 4 * D( x ) );
}
EvtComplex EvtWilsonCoefficients::C9( int ksi = 0, double mu = 4.8, int n_f = 5,
double Lambda = 0.2167,
double sin2W = 0.23120,
double M_t = 174.3, double M_W = 80.425,
double ialpha = 137.036 )
{
return ( 1. / 2 / EvtConst::pi / ialpha *
C9tilda( ksi, mu, n_f, Lambda, sin2W, M_t, M_W ) );
}
EvtComplex EvtWilsonCoefficients::C9tilda( int ksi = 0, double mu = 4.8,
int n_f = 5, double Lambda = 0.2167,
double sin2W = 0.23120,
double M_t = 174.3,
double M_W = 80.425 )
{
return ( P0( ksi, mu, n_f, Lambda, M_W ) +
Y( M_t * M_t / M_W / M_W ) / sin2W - 4 * Z( M_t * M_t / M_W / M_W ) +
PE( mu, n_f, Lambda, M_W ) * E( M_t * M_t / M_W / M_W ) );
}
EvtComplex EvtWilsonCoefficients::P0( int ksi = 0, double mu = 4.8, int n_f = 5,
double Lambda = 0.2167, double M_W = 80.425 )
{
int i;
EvtComplex myP0( 0, 0 );
for ( i = 0; i < 8; i++ )
myP0 += p[i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] + 1 );
myP0 = EvtConst::pi / alphaS( M_W, n_f, Lambda ) * ( -0.1875 + myP0 );
myP0 += 1.2468 -
ksi * 4. / 9. *
( 3 * C1( mu, n_f, Lambda, M_W ) + C2( mu, n_f, Lambda, M_W ) -
C3( mu, n_f, Lambda, M_W ) - 3 * C4( mu, n_f, Lambda, M_W ) );
for ( i = 0; i < 8; i++ )
myP0 += pow( eta( mu, n_f, Lambda, M_W ), a[i] ) *
( r[ksi][i] + s[i] * eta( mu, n_f, Lambda, M_W ) );
return myP0;
}
double EvtWilsonCoefficients::PE( double mu = 4.8, int n_f = 5,
double Lambda = 0.2167, double M_W = 80.425 )
{
int i;
double myPE = 0.1405;
for ( i = 0; i < 8; i++ )
myPE += q[i] * pow( eta( mu, n_f, Lambda, M_W ), a[i] + 1 );
return myPE;
}
void EvtWilsonCoefficients::CalculateAllCoefficients()
{
m_Lambda = Lambda( m_alphaMZ, m_n_f, m_M_Z );
m_C1 = C1( m_mu, m_n_f, m_Lambda, m_M_W );
m_C2 = C2( m_mu, m_n_f, m_Lambda, m_M_W );
m_C3 = C3( m_mu, m_n_f, m_Lambda, m_M_W );
m_C4 = C4( m_mu, m_n_f, m_Lambda, m_M_W );
m_C5 = C5( m_mu, m_n_f, m_Lambda, m_M_W );
m_C6 = C6( m_mu, m_n_f, m_Lambda, m_M_W );
m_C7 = C7( m_M_t, m_M_W );
m_C8 = C8( m_M_t, m_M_W );
m_C7eff0 = C7eff0( m_mu, m_n_f, m_Lambda, m_M_t, m_M_W );
m_C8eff0 = C8eff0( m_mu, m_n_f, m_Lambda, m_M_t, m_M_W );
m_C10tilda = C10tilda( m_sin2W, m_M_t, m_M_W );
m_C10 = C10( m_sin2W, m_M_t, m_M_W, m_ialpha );
m_A = A( m_M_t * m_M_t / m_M_W / m_M_W );
m_B = B( m_M_t * m_M_t / m_M_W / m_M_W );
m_C = C( m_M_t * m_M_t / m_M_W / m_M_W );
m_D = D( m_M_t * m_M_t / m_M_W / m_M_W );
m_E = E( m_M_t * m_M_t / m_M_W / m_M_W );
m_F = F( m_M_t * m_M_t / m_M_W / m_M_W );
m_Y = Y( m_M_t * m_M_t / m_M_W / m_M_W );
m_Z = Z( m_M_t * m_M_t / m_M_W / m_M_W );
m_C9 = C9( m_ksi, m_mu, m_n_f, m_Lambda, m_sin2W, m_M_t, m_M_W, m_ialpha );
m_C9tilda = C9tilda( m_ksi, m_mu, m_n_f, m_Lambda, m_sin2W, m_M_t, m_M_W );
m_P0 = P0( m_ksi, m_mu, m_n_f, m_Lambda, m_M_W );
m_PE = PE( m_mu, m_n_f, m_Lambda, m_M_W );
m_alphaS = alphaS( m_mu, m_n_f, m_Lambda );
m_eta = eta( m_mu, m_n_f, m_Lambda, m_M_W );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " +---------------------------------------" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " | Table of Wilson coeficients:" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " +---------------------------------------" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C1 = " << m_C1 << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C2 = " << m_C2 << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C3 = " << m_C3 << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C4 = " << m_C4 << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C5 = " << m_C5 << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C6 = " << m_C6 << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C7 = " << m_C7 << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " | C7eff0 = " << m_C7eff0 << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C8 = " << m_C8 << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " | C8eff0 = " << m_C8eff0 << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | C9 = " << m_C9 << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " | C10 = " << m_C10 << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " +---------------------------------------" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " | Other constants:" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " +---------------------------------------" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " | Scale = " << m_mu << " GeV" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " | Number of effective flavors = " << m_n_f << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " | Corresponding to aS(M_Z)"
<< "=" << m_alphaMZ << " Lambda = " << m_Lambda << " GeV" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " | Strong coupling constant = " << m_alphaS << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " | Electromagnetic constant = 1/" << m_ialpha << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " | Top mass = " << m_M_t << " GeV" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " | W-boson mass = " << m_M_W << " GeV" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " | Z-boson mass = " << m_M_Z << " GeV" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " | Sinus squared of Weinberg angle = " << m_sin2W << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " +---------------------------------------" << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< " | Intermediate functions:" << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< " +---------------------------------------" << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | A = " << m_A << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | B = " << m_B << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | C = " << m_C << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | D = " << m_D << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | E = " << m_E << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | F = " << m_F << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | Y = " << m_Y << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | Z = " << m_Z << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | eta = " << m_eta << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< " | C9~ = " << m_C9tilda << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< " | C10~ = " << m_C10tilda << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | P0 = " << m_P0 << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << " | PE = " << m_PE << std::endl;
EvtGenReport( EVTGEN_DEBUG, "EvtGen" )
<< " +--------------------------------------" << std::endl;
}
EvtComplex EvtWilsonCoefficients::hzs( double z, double shat, double mu = 4.8,
double M_b = 4.8 )
{
EvtComplex i1( 0, 1 );
double x = 4. * z * z / shat;
if ( x == 0 )
return ( 8. / 27. - 8. / 9. * log( M_b / mu ) - 4. / 9. * log( shat ) +
4. / 9. * i1 * EvtConst::pi );
else if ( x > 1 )
return ( 8. / 27. - 8. / 9. * log( M_b / mu ) - 8. / 9. * log( z ) +
4. / 9. * x -
2. / 9. * ( 2. + x ) * sqrt( x - 1. ) * 2 *
atan( 1. / sqrt( x - 1. ) ) );
else
return (
8. / 27. - 8. / 9. * log( M_b / mu ) - 8. / 9. * log( z ) +
4. / 9. * x -
2. / 9. * ( 2. + x ) * sqrt( 1. - x ) *
( log( fabs( sqrt( 1. - x ) + 1 ) / fabs( sqrt( 1. - x ) - 1 ) ) -
i1 * EvtConst::pi ) );
}
double EvtWilsonCoefficients::fz( double z )
{
return ( 1. - 8. * z * z + 8. * pow( z, 6. ) - pow( z, 8. ) -
24. * pow( z, 4. ) * log( z ) );
}
double EvtWilsonCoefficients::kappa( double z, double alpha_S )
{
return ( 1. - 2. * alpha_S / 3. / EvtConst::pi *
( ( EvtConst::pi * EvtConst::pi - 31. / 4. ) *
( 1. - z ) * ( 1. - z ) +
1.5 ) );
}
double EvtWilsonCoefficients::etatilda( double shat, double alpha_S )
{
return ( 1. + alpha_S / EvtConst::pi * omega( shat ) );
}
double EvtWilsonCoefficients::omega( double shat )
{
double o = 0;
o -= ( 2. / 9. ) * EvtConst::pi * EvtConst::pi;
o -= ( 4. / 3. ) * li2spence( shat );
o -= ( 2. / 3. ) * log( shat ) * log( 1. - shat );
o -= log( 1. - shat ) * ( 5. + 4. * shat ) / ( 3. + 6. * shat );
o -= log( shat ) * 2. * shat * ( 1. + shat ) * ( 1. - 2. * shat ) / 3. /
( 1. - shat ) / ( 1. - shat ) / ( 1. + 2. * shat );
o += ( 5. + 9. * shat - 6. * shat * shat ) / 6. / ( 1. - shat ) /
( 1. + 2. * shat );
return o;
}
EvtComplex EvtWilsonCoefficients::C9efftilda( double z, double shat,
double alpha_S, EvtComplex c1,
EvtComplex c2, EvtComplex c3,
EvtComplex c4, EvtComplex c5,
EvtComplex c6, EvtComplex c9tilda,
int ksi = 0 )
{
EvtComplex c( 0, 0 );
c += ( c9tilda + ksi * 4. / 9. * ( 3. * c1 + c2 - c3 - 3. * c4 ) ) *
etatilda( shat, alpha_S );
c += hzs( z, shat ) * ( 3. * c1 + c2 + 3. * c3 + c4 + 3. * c5 + c6 );
c -= 0.5 * hzs( 1, shat ) * ( 4. * c3 + 4. * c4 + 3. * c5 + c6 );
c -= 0.5 * hzs( 0, shat ) * ( c3 + 3. * c4 );
c += 2. / 9. * ( 3. * c3 + c4 + 3. * c5 + c6 );
return c;
}
EvtComplex EvtWilsonCoefficients::C7b2sg( double alpha_S, double et,
EvtComplex c2, double M_t = 174.3,
double M_W = 80.425 )
{
EvtComplex i1( 0, 1 );
return ( i1 * alpha_S *
( 2. / 9. * pow( et, 14. / 23. ) *
( 0.5 * F( M_t * M_t / M_W / M_W ) - 0.1687 ) -
0.03 * c2 ) );
}
EvtComplex EvtWilsonCoefficients::Yld( double q2, double* ki, double* Gi,
double* Mi, int ni, EvtComplex c1,
EvtComplex c2, EvtComplex c3,
EvtComplex c4, EvtComplex c5,
EvtComplex c6, double ialpha = 137.036 )
{
EvtComplex i1( 0, 1 );
EvtComplex y( 0, 0 );
int i;
for ( i = 0; i < ni; i++ )
y += ki[i] * Gi[i] * Mi[i] / ( q2 - Mi[i] * Mi[i] - i1 * Mi[i] * Gi[i] );
return ( -3. * ialpha * ialpha * y * EvtConst::pi *
( 3. * c1 + c2 + 3. * c3 + c4 + 3. * c5 + c6 ) );
}
diff --git a/src/EvtGenModels/EvtWnPi.cpp b/src/EvtGenModels/EvtWnPi.cpp
index 54b1b1d..56282a2 100644
--- a/src/EvtGenModels/EvtWnPi.cpp
+++ b/src/EvtGenModels/EvtWnPi.cpp
@@ -1,157 +1,137 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtTVP.cc
-//
-// Description: Routine to calculate W -> (n pi) current
-// according to [Kuhn, Was, Acta.Phys.Polon B39 (2008) 147]
-//
-// Modification history:
-// AVL 6 July, 2012 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtWnPi.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParser.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenModels/EvtTauHadnu.hh"
#include <ctype.h>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;
// W+ -> pi_ current
EvtVector4C EvtWnPi::WCurrent( EvtVector4R q1 )
{
return q1;
}
// W+ -> pi+ pi0 current
EvtVector4C EvtWnPi::WCurrent( EvtVector4R q1, EvtVector4R q2 )
{
return BWr( q1 + q2 ) * ( q1 - q2 );
}
// W+ -> pi+ pi+ pi- current
EvtVector4C EvtWnPi::WCurrent( EvtVector4R q1, EvtVector4R q2, EvtVector4R q3 )
{
EvtVector4R Q = q1 + q2 + q3;
double Q2 = Q.mass2();
return BWa( Q ) *
( ( q1 - q3 ) - ( Q * ( Q * ( q1 - q3 ) ) / Q2 ) * BWr( q2 + q3 ) +
( q2 - q3 ) - ( Q * ( Q * ( q2 - q3 ) ) / Q2 ) * BWr( q1 + q3 ) );
}
// W+ -> pi+ pi+ pi- pi- pi+ current with symmetrization
EvtVector4C EvtWnPi::WCurrent( EvtVector4R q1, EvtVector4R q2, EvtVector4R q3,
EvtVector4R q4, EvtVector4R q5 )
{
// double Q2 = Qtot*Qtot;
// return q1-Qtot*(q1*Qtot)/Q2;
EvtVector4C V = JB( q1, q2, q3, q4, q5 ) + JB( q5, q2, q3, q4, q1 ) +
JB( q1, q5, q3, q4, q2 ) + JB( q1, q2, q4, q3, q5 ) +
JB( q5, q2, q4, q3, q1 ) + JB( q1, q5, q4, q3, q2 );
// cout<<"BC2: Qtot="<<Qtot<<", V="<<V<<endl;
return V;
}
// a1 -> pi+ pi+ pi- BW
EvtComplex EvtWnPi::BWa( EvtVector4R q )
{
double const _mA1 = 1.26, _GA1 = 0.4;
EvtComplex I( 0, 1 );
double Q2 = q.mass2();
double GA1 = _GA1 * pi3G( Q2 ) / pi3G( _mA1 * _mA1 );
EvtComplex denBA1( _mA1 * _mA1 - Q2, -1. * _mA1 * GA1 );
return _mA1 * _mA1 / denBA1;
}
EvtComplex EvtWnPi::BWf( EvtVector4R q )
{
double const mf = 0.8, Gf = 0.6;
EvtComplex I( 0, 1 );
double Q2 = q.mass2();
return mf * mf / ( mf * mf - Q2 - I * mf * Gf );
}
EvtComplex EvtWnPi::BWr( EvtVector4R q )
{
double _mRho = 0.775, _gammaRho = 0.149, _mRhopr = 1.364,
_gammaRhopr = 0.400, _beta = -0.108;
double m1 = EvtPDL::getMeanMass( EvtPDL::getId( "pi+" ) ),
m2 = EvtPDL::getMeanMass( EvtPDL::getId( "pi+" ) );
double mQ2 = q.mass2();
// momenta in the rho->pipi decay
double dRho = _mRho * _mRho - m1 * m1 - m2 * m2;
double pPiRho = ( 1.0 / _mRho ) *
sqrt( ( dRho * dRho ) / 4.0 - m1 * m1 * m2 * m2 );
double dRhopr = _mRhopr * _mRhopr - m1 * m1 - m2 * m2;
double pPiRhopr = ( 1.0 / _mRhopr ) *
sqrt( ( dRhopr * dRhopr ) / 4.0 - m1 * m1 * m2 * m2 );
double dQ = mQ2 - m1 * m1 - m2 * m2;
double pPiQ = ( 1.0 / sqrt( mQ2 ) ) *
sqrt( ( dQ * dQ ) / 4.0 - m1 * m1 * m2 * m2 );
double gammaRho = _gammaRho * _mRho / sqrt( mQ2 ) *
pow( ( pPiQ / pPiRho ), 3 );
EvtComplex BRhoDem( _mRho * _mRho - mQ2, -1.0 * _mRho * gammaRho );
EvtComplex BRho = _mRho * _mRho / BRhoDem;
double gammaRhopr = _gammaRhopr * _mRhopr / sqrt( mQ2 ) *
pow( ( pPiQ / pPiRhopr ), 3 );
EvtComplex BRhoprDem( _mRhopr * _mRhopr - mQ2, -1.0 * _mRho * gammaRhopr );
EvtComplex BRhopr = _mRhopr * _mRhopr / BRhoprDem;
return ( BRho + _beta * BRhopr ) / ( 1 + _beta );
}
double EvtWnPi::pi3G( double m2 )
{
double mPi = EvtPDL::getMeanMass( EvtPDL::getId( "pi+" ) );
double _mRho = 0.775;
if ( m2 > ( _mRho + mPi ) ) {
return m2 * ( 1.623 + 10.38 / m2 - 9.32 / ( m2 * m2 ) +
0.65 / ( m2 * m2 * m2 ) );
} else {
double t1 = m2 - 9.0 * mPi * mPi;
return 4.1 * pow( t1, 3.0 ) * ( 1.0 - 3.3 * t1 + 5.8 * t1 * t1 );
};
}
EvtVector4C EvtWnPi::JB( EvtVector4R p1, EvtVector4R p2, EvtVector4R p3,
EvtVector4R p4, EvtVector4R p5 )
{
EvtVector4R Qtot = p1 + p2 + p3 + p4 + p5, Qa = p1 + p2 + p3;
EvtTensor4C T = ( 1 / Qtot.mass2() ) *
EvtGenFunctions::directProd( Qtot, Qtot ) -
EvtTensor4C::g();
EvtVector4R V13 = Qa * ( p2 * ( p1 - p3 ) ) / Qa.mass2() - ( p1 - p3 );
EvtVector4R V23 = Qa * ( p1 * ( p2 - p3 ) ) / Qa.mass2() - ( p2 - p3 );
return BWa( Qtot ) * BWa( Qa ) * BWf( p4 + p5 ) *
( T.cont1( V13 ) * BWr( p1 + p3 ) + T.cont1( V23 ) * BWr( p2 + p3 ) );
}
diff --git a/src/EvtGenModels/EvtXPsiGamma.cpp b/src/EvtGenModels/EvtXPsiGamma.cpp
index d128633..c98e3f1 100644
--- a/src/EvtGenModels/EvtXPsiGamma.cpp
+++ b/src/EvtGenModels/EvtXPsiGamma.cpp
@@ -1,200 +1,179 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtXPsiGamma.cc
-//
-// Description: Routine to implement radiative decay X3872(2-+) -> J/psi gamma
-// according to [F. Brazzi et al, arXiv:1103.3155
-//
-// Modification history:
-//
-// May, 7, 2012 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtXPsiGamma.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtTensorParticle.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
std::string EvtXPsiGamma::getName()
{
return "X38722-+_PSI_GAMMA";
}
EvtDecayBase* EvtXPsiGamma::clone()
{
// cout<<" (* AVL: === EvtXPsiGamma::clone() ============ *)"<<endl;
return new EvtXPsiGamma;
}
EvtComplex EvtXPsiGamma::fT2( EvtVector4R p, EvtVector4R q, EvtTensor4C epsPI,
EvtVector4C epsEps, EvtVector4C epsEta )
{
// T2 term from [Bazi](10)
EvtTensor4C epsPQ =
EvtGenFunctions::directProd( q, p ); // e_{mu nu a b} p^a q^b;
epsPQ = dual( epsPQ );
EvtVector4C tmp1 = epsPI.cont1( epsEps );
EvtVector4C tmp2 = epsPQ.cont1( tmp1 );
EvtComplex T2 =
tmp2 * epsEta; // epa^a pi_{a mu} e_{mu nu rho si} p_nu q_rho eta_si
tmp1 = epsPI.cont1( epsEta );
tmp2 = epsPQ.cont1( tmp1 );
T2 += tmp2 *
epsEps; // T2 - eta^a pi_{a mu} e_{mu nu rho si} q_nu p_rhi eps_si
return T2;
}
EvtComplex EvtXPsiGamma::fT3( EvtVector4R p, EvtVector4R q, EvtTensor4C epsPI,
EvtVector4C epsEps, EvtVector4C epsEta )
{
// T3 term from [Bazi](11)
EvtVector4R Q = p - q, P = p + q;
EvtVector4C tmp1 = epsPI.cont1( Q ); // Q_a pi_{a mu}
EvtTensor4C tmp3 = dual( EvtGenFunctions::directProd(
P, epsEps ) ); // e_{mu nu rho si} P^rho eps^si
EvtVector4C tmp4 = tmp3.cont1( tmp1 );
EvtComplex T3 =
tmp4 * epsEta; // Q_a pi_{a mu} e_{mu nu rho si} P^rho eps_si eta_nu
return T3;
}
void EvtXPsiGamma::decay( EvtParticle* root )
{
ncall++;
root->initializePhaseSpace( getNDaug(), getDaugs() );
double gOmega = 1.58,
gPOmega = -0.74; // X -> omega psi couplings from table II
double gRho = 1.58, gPRho = -0.74; // X -> omega psi couplings from table II
double fRho = 0.121, mRho2 = 0.770 * 0.770, fOmega = 0.036,
mOmega2 = 0.782 * 0.782;
EvtComplex amp;
if ( _ID0 == EvtPDL::getId( "gamma" ) ) {
for ( int iPsi = 0; iPsi < 4; iPsi++ ) {
for ( int iGamma = 0; iGamma < 1; iGamma++ ) {
for ( int iChi = 0; iChi < 4; iChi++ ) {
EvtComplex T2 = fT2(
root->getDaug( 1 )->getP4(),
root->getDaug( 0 )->getP4(), root->epsTensor( iChi ),
root->getDaug( 1 )->epsParent( iPsi ).conj(),
root->getDaug( 0 )->epsParentPhoton( iGamma ).conj() );
EvtComplex T3 = fT3(
root->getDaug( 1 )->getP4(),
root->getDaug( 0 )->getP4(), root->epsTensor( iChi ),
root->getDaug( 1 )->epsParent( iPsi ).conj(),
root->getDaug( 0 )->epsParentPhoton( iGamma ).conj() );
amp = ( fOmega / mOmega2 * gOmega + fRho / mRho2 * gRho ) *
T2 +
( fOmega / mOmega2 * gPOmega + fRho / mRho2 * gPRho ) *
T3;
vertex( iChi, iGamma, iPsi, amp );
};
};
};
} else if ( _ID0 == EvtPDL::getId( "omega" ) ) {
for ( int iPsi = 0; iPsi < 4; iPsi++ ) {
for ( int iGamma = 0; iGamma < 4; iGamma++ ) {
for ( int iChi = 0; iChi < 4; iChi++ ) {
EvtComplex T2 = fT2(
root->getDaug( 1 )->getP4(),
root->getDaug( 0 )->getP4(), root->epsTensor( iChi ),
root->getDaug( 1 )->epsParent( iPsi ).conj(),
root->getDaug( 0 )->epsParent( iGamma ).conj() );
EvtComplex T3 = fT3(
root->getDaug( 1 )->getP4(),
root->getDaug( 0 )->getP4(), root->epsTensor( iChi ),
root->getDaug( 1 )->epsParent( iPsi ).conj(),
root->getDaug( 0 )->epsParent( iGamma ).conj() );
// cout << "AVL:: omega"<<endl;
amp = gOmega * T2 + gPOmega * T3;
vertex( iChi, iGamma, iPsi, amp );
};
};
};
} else if ( _ID0 == EvtPDL::getId( "rho0" ) ) {
for ( int iPsi = 0; iPsi < 4; iPsi++ ) {
for ( int iGamma = 0; iGamma < 4; iGamma++ ) {
for ( int iChi = 0; iChi < 4; iChi++ ) {
EvtComplex T2 = fT2(
root->getDaug( 1 )->getP4(),
root->getDaug( 0 )->getP4(), root->epsTensor( iChi ),
root->getDaug( 1 )->epsParent( iPsi ).conj(),
root->getDaug( 0 )->epsParent( iGamma ).conj() );
EvtComplex T3 = fT3(
root->getDaug( 1 )->getP4(),
root->getDaug( 0 )->getP4(), root->epsTensor( iChi ),
root->getDaug( 1 )->epsParent( iPsi ).conj(),
root->getDaug( 0 )->epsParent( iGamma ).conj() );
// cout << "AVL:: rho"<<endl;
amp = gRho * T2 + gPRho * T3;
vertex( iChi, iGamma, iPsi, amp );
};
};
};
} else {
cout << "AVL:: Not realized yet" << endl;
};
}
void EvtXPsiGamma::init()
{
// cout<<" (* AVL: ==== EvtXPsiGamma::init() ============ *)"<<endl;
ncall = 0;
checkNArg( 0 );
checkNDaug( 2 );
checkSpinParent( EvtSpinType::TENSOR );
// checkSpinDaughter(0,EvtSpinType::PHOTON);
checkSpinDaughter( 1, EvtSpinType::VECTOR );
_ID0 = getDaug( 0 );
/* if(_ID0 == EvtPDL::getId("gamma") ) {
cout << "AVL:: gamma"<<endl;
}
else if(_ID0 == EvtPDL::getId("omega") ) {
cout << "AVL:: omega"<<endl;
}
else if(_ID0 == EvtPDL::getId("rho0") ) {
cout << "AVL:: rho"<<endl;
};
*/
}
void EvtXPsiGamma::initProbMax()
{
if ( _ID0 == EvtPDL::getId( "gamma" ) )
setProbMax( 2.400 );
else if ( _ID0 == EvtPDL::getId( "omega" ) )
setProbMax( 16. );
else if ( _ID0 == EvtPDL::getId( "rho0" ) )
setProbMax( 70. );
}
diff --git a/src/EvtGenModels/EvtY3SToY1SpipiMoxhay.cpp b/src/EvtGenModels/EvtY3SToY1SpipiMoxhay.cpp
index 37937a0..50fc9a0 100644
--- a/src/EvtGenModels/EvtY3SToY1SpipiMoxhay.cpp
+++ b/src/EvtGenModels/EvtY3SToY1SpipiMoxhay.cpp
@@ -1,147 +1,110 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtVVpipiMoxhay.hh
-//
-// Description: This model is based on the proposal by Tuan and Lipkin
-// (Phys.Lett.B206:349-353,1988) and the subsequent model
-// by Moxhay (Phys.Rev.D39:3497,1989) for the dipion spectrum
-// in Y(3S) -> pi+ pi- Y(1S). Please Note: in Moxhay's paper,
-// he wrote the fitted value of the parameter Im(B)/A as
-// -0.2983. However, using his quoted value leads to the wrong
-// spectrum. Changing the sign of his quoted Im(B)/A fixes the
-// shape and reproduces his result. Therefore, please pass
-// Im(B)/A = 0.2983 and Re(B)/A = 0.2196 to get the correct shape
-// based on his fit to the CLEO data.
-//
-// Example:
-//
-// Decay Upsilon(3S)
-// 1.0000 Upsilon pi+ pi- Y3STOY1SPIPIMOXHAY 0.2196 0.2983;
-// Enddecay
-//
-// --> the order of parameters is: Re(B)/A Im(B)/A
-//
-// Modification history:
-//
-// SEKULA November 02, 2007 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtY3SToY1SpipiMoxhay.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtY3SToY1SpipiMoxhay::getName()
{
return "Y3STOY1SPIPIMOXHAY";
}
EvtDecayBase* EvtY3SToY1SpipiMoxhay::clone()
{
return new EvtY3SToY1SpipiMoxhay;
}
void EvtY3SToY1SpipiMoxhay::init()
{
static EvtId PIP = EvtPDL::getId( "pi+" );
static EvtId PIM = EvtPDL::getId( "pi-" );
static EvtId PI0 = EvtPDL::getId( "pi0" );
// check that there are 2 arguments
checkNArg( 2 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
if ( ( !( getDaug( 1 ) == PIP && getDaug( 2 ) == PIM ) ) &&
( !( getDaug( 1 ) == PI0 && getDaug( 2 ) == PI0 ) ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtY3SToY1SpipiMoxhay generator expected "
<< " pi+ and pi- (or pi0 and pi0) "
<< "as 2nd and 3rd daughter. " << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
void EvtY3SToY1SpipiMoxhay::initProbMax()
{
setProbMax( 0.2 );
}
void EvtY3SToY1SpipiMoxhay::decay( EvtParticle* p )
{
p->initializePhaseSpace( getNDaug(), getDaugs() );
EvtParticle *v, *s1, *s2;
v = p->getDaug( 0 );
s1 = p->getDaug( 1 );
s2 = p->getDaug( 2 );
// setup the parameters needed for this model
double g_spp = 0.64;
double lambda = -0.73;
double m_sigma = 0.71;
double f_pi = 0.094;
double m_pi = s1->getP4().mass();
double MV1 = p->getP4().mass();
double MV2 = v->getP4().mass();
double q = ( s1->getP4() + s2->getP4() ).mass();
double EV2 = ( MV1 * MV1 - MV2 * MV2 - q * q ) / ( 2.0 * q );
double ReB_over_A = getArg( 0 );
double ImB_over_A = getArg( 1 );
EvtComplex Xi;
Xi = EvtComplex( 2.0 / EvtConst::pi *
( 1.0 - sqrt( 1.0 - 4 * m_pi * m_pi / ( q * q ) ) *
log( ( sqrt( q * q ) +
sqrt( q * q - 4.0 * m_pi * m_pi ) ) /
( 2 * m_pi ) ) ),
sqrt( 1.0 - 4 * m_pi * m_pi / ( q * q ) ) );
// The form factor
EvtComplex F;
F = ( g_spp * g_spp + lambda * ( m_sigma * m_sigma - q * q ) ) /
( ( ( m_sigma * m_sigma - q * q ) * ( 1.0 - lambda * Xi ) -
( g_spp * g_spp * Xi ) ) *
1.0 / ( 8.0 * EvtConst::pi * f_pi * f_pi ) * q * q );
EvtComplex B_over_A;
B_over_A = EvtComplex( ReB_over_A, ImB_over_A );
// The dGamma/d(M_pipi) spectrum
EvtComplex dGdMpp;
dGdMpp = abs2( ( q * q * F - B_over_A ) ) * q *
sqrt( q * q - 4 * m_pi * m_pi ) * sqrt( EV2 * EV2 - MV2 * MV2 );
setProb( real( dGdMpp ) );
return;
}
diff --git a/src/EvtGenModels/EvtYmSToYnSpipiCLEO.cpp b/src/EvtGenModels/EvtYmSToYnSpipiCLEO.cpp
index 8e69a9e..0a49bc5 100644
--- a/src/EvtGenModels/EvtYmSToYnSpipiCLEO.cpp
+++ b/src/EvtGenModels/EvtYmSToYnSpipiCLEO.cpp
@@ -1,270 +1,230 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtYmSToYnSpipiCLEO.hh
-//
-// Description: This model is based on matrix element method used by
-// CLEO in Phys.Rev.D76:072001,2007 to model the dipion mass
-// and helicity angle distribution in the decays Y(mS) -> pi pi Y(nS),
-// where m,n are integers and m>n and m<4.
-// This model has two parameters, Re(B/A) and Im(B/A), which
-// are coefficients of the matrix element's terms determined by
-// the CLEO fits.
-//
-// Example:
-//
-// Decay Upsilon(3S)
-// 1.0000 Upsilon pi+ pi- YMSTOYNSPIPICLEO -2.523 1.189;
-// Enddecay
-// Decay Upsilon(3S)
-// 1.0000 Upsilon(2S) pi+ pi- YMSTOYNSPIPICLEO -0.395 0.001;
-// Enddecay
-// Decay Upsilon(2S)
-// 1.0000 Upsilon pi+ pi- YMSTOYNSPIPICLEO -0.753 0.000;
-// Enddecay
-//
-// --> the order of parameters is: Re(B/A) Im(B/A)
-//
-// Modification history:
-//
-// SEKULA Jan. 28, 2008 Module created
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtYmSToYnSpipiCLEO.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtYmSToYnSpipiCLEO::getName()
{
return "YMSTOYNSPIPICLEO";
}
EvtDecayBase* EvtYmSToYnSpipiCLEO::clone()
{
return new EvtYmSToYnSpipiCLEO;
}
void EvtYmSToYnSpipiCLEO::init()
{
static EvtId PIP = EvtPDL::getId( "pi+" );
static EvtId PIM = EvtPDL::getId( "pi-" );
static EvtId PI0 = EvtPDL::getId( "pi0" );
// check that there are 2 arguments
checkNArg( 2 );
checkNDaug( 3 );
checkSpinParent( EvtSpinType::VECTOR );
checkSpinDaughter( 0, EvtSpinType::VECTOR );
if ( ( !( getDaug( 1 ) == PIP && getDaug( 2 ) == PIM ) ) &&
( !( getDaug( 1 ) == PI0 && getDaug( 2 ) == PI0 ) ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtYmSToYnSpipiCLEO generator expected "
<< " pi+ and pi- (or pi0 and pi0) "
<< "as 2nd and 3rd daughter. " << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
}
void EvtYmSToYnSpipiCLEO::initProbMax()
{
setProbMax( 2.0 );
}
void EvtYmSToYnSpipiCLEO::decay( EvtParticle* p )
{
// We want to simulate the following process:
//
// Y(mS) -> Y(nS) X, X -> pi+ pi- (pi0 pi0)
//
// The CLEO analysis assumed such an intermediate process
// were occurring, and wrote down the matrix element
// and its components according to this assumption.
//
//
double ReB_over_A = getArg( 0 );
double ImB_over_A = getArg( 1 );
p->makeDaughters( getNDaug(), getDaugs() );
EvtParticle *v, *s1, *s2;
v = p->getDaug( 0 );
s1 = p->getDaug( 1 );
s2 = p->getDaug( 2 );
double m_pi = s1->getP4().mass();
double M_mS = p->getP4().mass();
double M_nS = v->getP4().mass();
// // EvtGenReport(EVTGEN_INFO,"EvtYmSToYnSpipiCLEO") << "M_nS = " << v->getP4().mass() << endl;
EvtVector4R P_nS;
EvtVector4R P_pi1;
EvtVector4R P_pi2;
// Perform a simple accept/reject until we get a configuration of the
// dipion system that passes
bool acceptX = false;
while ( false == acceptX ) {
// Begin by generating a random X mass between the kinematic
// boundaries, 2*m_pi and M(mS) - M(nS)
double mX = EvtRandom::Flat( 2.0 * m_pi, M_mS - M_nS );
// EvtGenReport(EVTGEN_INFO,"EvtYmSToYnSpipiCLEO") << "m_X = " << mX << endl;
// Now create a two-body decay from the Y(mS) in its rest frame
// of Y(mS) -> Y(nS) + X
double masses[2];
masses[0] = M_nS;
masses[1] = mX;
EvtVector4R p4[2];
EvtGenKine::PhaseSpace( 2, masses, p4, M_mS );
P_nS = p4[0];
EvtVector4R P_X = p4[1];
// Now create the four-vectors for the two pions in the X
// rest frame, X -> pi pi
masses[0] = s1->mass();
masses[1] = s2->mass();
EvtGenKine::PhaseSpace( 2, masses, p4, P_X.mass() );
// compute cos(theta), the polar helicity angle between a pi+ and
// the direction opposite the Y(mS) in the X rest frame. If the pions are pi0s, then
// choose the one where cos(theta) = [0:1].
EvtVector4R P_YmS_X = boostTo( p->getP4(), P_X );
double costheta = -p4[0].dot( P_YmS_X ) /
( p4[0].d3mag() * P_YmS_X.d3mag() );
if ( EvtPDL::name( s1->getId() ) == "pi0" ) {
if ( costheta < 0 ) {
costheta = -p4[1].dot( P_YmS_X ) /
( p4[1].d3mag() * P_YmS_X.d3mag() );
}
}
if ( EvtPDL::name( s1->getId() ) == "pi-" ) {
costheta = -p4[1].dot( P_YmS_X ) /
( p4[1].d3mag() * P_YmS_X.d3mag() );
}
// // EvtGenReport(EVTGEN_INFO,"EvtYmSToYnSpipiCLEO") << "cos(theta) = " << costheta << endl;
// Now boost the pion four vectors into the Y(mS) rest frame
P_pi1 = boostTo( p4[0], P_YmS_X );
P_pi2 = boostTo( p4[1], P_YmS_X );
// Use a simple accept-reject to test this dipion system
// Now compute the components of the matrix-element squared
//
// M(x,y)^2 = Q(x,y)^2 + |B/A|^2 * E1E2(x,y)^2 + 2*Re(B/A)*Q(x,y)*E1E2(x,y)
//
// x=m_pipi^2 and y = cos(theta), and where
//
// Q(x,y) = (x^2 + 2*m_pi^2)
//
// E1E2(x,y) = (1/4) * ( (E1 + E2)^2 - (E2 - E1)^2_max * cos(theta)^2 )
//
// and E1 + E2 = M_mS - M_nS and (E2 - E1)_max is the maximal difference
// in the energy of the two pions allowed for a given mX value.
//
double Q = ( mX * mX - 2.0 * m_pi * m_pi );
double deltaEmax = -2.0 *
sqrt( P_nS.get( 0 ) * P_nS.get( 0 ) - M_nS * M_nS ) *
sqrt( 0.25 - pow( m_pi / mX, 2.0 ) );
double sumE = ( M_mS * M_mS - M_nS * M_nS + mX * mX ) / ( 2.0 * M_mS );
double E1E2 = 0.25 *
( pow( sumE, 2.0 ) - pow( deltaEmax * costheta, 2.0 ) );
double M2 = Q * Q +
( pow( ReB_over_A, 2.0 ) + pow( ImB_over_A, 2.0 ) ) * E1E2 *
E1E2 +
2.0 * ReB_over_A * Q * E1E2;
// phase space factor
//
// this is given as d(PS) = C * p(*)_X * p(X)_{pi+} * d(cosTheta) * d(m_X)
//
// where C is a normalization constant, p(*)_X is the X momentum magnitude in the
// Y(mS) rest frame, and p(X)_{pi+} is the pi+/pi0 momentum in the X rest frame
//
double dPS = sqrt( ( M_mS * M_mS - pow( M_nS + mX, 2.0 ) ) *
( M_mS * M_mS - pow( M_nS - mX, 2.0 ) ) ) * // p(*)_X
sqrt( mX * mX - 4 * m_pi * m_pi ); // p(X)_{pi}
// the double-differential decay rate dG/(dcostheta dmX)
double dG = M2 * dPS;
// Throw a uniform random number from 0 --> probMax and do accept/reject on this
double rnd = EvtRandom::Flat( 0.0, getProbMax( 0.0 ) );
if ( rnd < dG )
acceptX = true;
}
// initialize the daughters
v->init( getDaugs()[0], P_nS );
s1->init( getDaugs()[1], P_pi1 );
s2->init( getDaugs()[2], P_pi2 );
// EvtGenReport(EVTGEN_INFO,"EvtYmSToYnSpipiCLEO") << "M_nS = " << v->getP4().mass() << endl;
// EvtGenReport(EVTGEN_INFO,"EvtYmSToYnSpipiCLEO") << "m_pi = " << s1->getP4().mass() << endl;
// EvtGenReport(EVTGEN_INFO,"EvtYmSToYnSpipiCLEO") << "m_pi = " << s2->getP4().mass() << endl;
// EvtGenReport(EVTGEN_INFO,"EvtYmSToYnSpipiCLEO") << "M2 = " << M2 << endl;
// Pass the polarization of the parent Upsilon
EvtVector4C ep0, ep1, ep2;
ep0 = p->eps( 0 );
ep1 = p->eps( 1 );
ep2 = p->eps( 2 );
vertex( 0, 0, ( ep0 * v->epsParent( 0 ).conj() ) );
vertex( 0, 1, ( ep0 * v->epsParent( 1 ).conj() ) );
vertex( 0, 2, ( ep0 * v->epsParent( 2 ).conj() ) );
vertex( 1, 0, ( ep1 * v->epsParent( 0 ).conj() ) );
vertex( 1, 1, ( ep1 * v->epsParent( 1 ).conj() ) );
vertex( 1, 2, ( ep1 * v->epsParent( 2 ).conj() ) );
vertex( 2, 0, ( ep2 * v->epsParent( 0 ).conj() ) );
vertex( 2, 1, ( ep2 * v->epsParent( 1 ).conj() ) );
vertex( 2, 2, ( ep2 * v->epsParent( 2 ).conj() ) );
return;
}
diff --git a/src/EvtGenModels/EvtbTosllAli.cpp b/src/EvtGenModels/EvtbTosllAli.cpp
index 20063ca..8d68415 100644
--- a/src/EvtGenModels/EvtbTosllAli.cpp
+++ b/src/EvtGenModels/EvtbTosllAli.cpp
@@ -1,105 +1,85 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech, UCSB
-//
-// Module: EvtbTosllAli.cc
-//
-// Description: Routine to implement b->sll decays according to Ali '02 et al.
-//
-// Modification history:
-//
-// Ryd March 30, 2003 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtbTosllAli.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtbTosllAliFF.hh"
#include "EvtGenModels/EvtbTosllAmp.hh"
#include "EvtGenModels/EvtbTosllScalarAmp.hh"
#include "EvtGenModels/EvtbTosllVectorAmp.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtbTosllAli::getName()
{
return "BTOSLLALI";
}
EvtDecayBase* EvtbTosllAli::clone()
{
return new EvtbTosllAli;
}
void EvtbTosllAli::decay( EvtParticle* p )
{
setWeight( p->initializePhaseSpace( getNDaug(), getDaugs(), false,
_poleSize, 1, 2 ) );
_calcamp->CalcAmp( p, _amp2, _aliffmodel.get() );
}
void EvtbTosllAli::initProbMax()
{
EvtId parnum, mesnum, l1num, l2num;
parnum = getParentId();
mesnum = getDaug( 0 );
l1num = getDaug( 1 );
l2num = getDaug( 2 );
//This routine sets the _poleSize.
double mymaxprob = _calcamp->CalcMaxProb( parnum, mesnum, l1num, l2num,
_aliffmodel.get(), _poleSize );
setProbMax( mymaxprob );
}
void EvtbTosllAli::init()
{
checkNArg( 0 );
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be X lepton+ lepton-
checkSpinParent( EvtSpinType::SCALAR );
EvtSpinType::spintype mesontype = EvtPDL::getSpinType( getDaug( 0 ) );
if ( !( mesontype == EvtSpinType::VECTOR ||
mesontype == EvtSpinType::SCALAR ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtbTosllAli generator expected "
<< " a SCALAR or VECTOR 1st daughter, found:"
<< EvtPDL::name( getDaug( 0 ) ).c_str() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::DIRAC );
_aliffmodel = std::make_unique<EvtbTosllAliFF>();
if ( mesontype == EvtSpinType::SCALAR ) {
_calcamp = std::make_unique<EvtbTosllScalarAmp>();
}
if ( mesontype == EvtSpinType::VECTOR ) {
_calcamp = std::make_unique<EvtbTosllVectorAmp>();
}
}
diff --git a/src/EvtGenModels/EvtbTosllAliFF.cpp b/src/EvtGenModels/EvtbTosllAliFF.cpp
index e3b7eb8..3c8d669 100644
--- a/src/EvtGenModels/EvtbTosllAliFF.cpp
+++ b/src/EvtGenModels/EvtbTosllAliFF.cpp
@@ -1,66 +1,47 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module:
-// Description: Form factors for b->sll according to Ali '02 et al.
-// PRD 66 34002
-//
-// Modification history:
-//
-// Ryd March 30, 2003 Module created
-//
-//------------------------------------------------------------------------
#include "EvtGenModels/EvtbTosllAliFF.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <math.h>
EvtbTosllAliFF::EvtbTosllAliFF()
{
}
void EvtbTosllAliFF::getScalarFF( EvtId parent, EvtId /*daught*/, double t,
double /*mass*/, double& fp, double& f0,
double& ft )
{
double m = EvtPDL::getMeanMass( parent );
//double md=EvtPDL::getMeanMass(daught);
double shat = t / ( m * m );
double shat2 = shat * shat;
double shat3 = shat2 * shat;
fp = 0.278 * exp( 1.568 * shat + 0.470 * shat2 + 0.885 * shat3 );
f0 = 0.278 * exp( 0.740 * shat + 0.080 * shat2 + 0.425 * shat3 );
ft = 0.300 * exp( 1.600 * shat + 0.501 * shat2 + 0.796 * shat3 );
}
void EvtbTosllAliFF::getVectorFF( EvtId parent, EvtId /*daught*/, double t,
double /*mass*/, double& a1, double& a2,
double& a0, double& v, double& t1, double& t2,
double& t3 )
{
double m = EvtPDL::getMeanMass( parent );
double shat = t / ( m * m );
double shat2 = shat * shat;
//this is Ali 'minimum allowed form factors'
a1 = 0.294 * exp( 0.656 * shat + 0.456 * shat2 );
a2 = 0.246 * exp( 1.237 * shat + 0.822 * shat2 );
a0 = 0.412 * exp( 1.543 * shat + 0.954 * shat2 );
v = 0.399 * exp( 1.537 * shat + 1.123 * shat2 );
t1 = 0.334 * exp( 1.575 * shat + 1.140 * shat2 );
t2 = 0.334 * exp( 0.562 * shat + 0.481 * shat2 );
t3 = 0.234 * exp( 1.230 * shat + 1.089 * shat2 );
}
diff --git a/src/EvtGenModels/EvtbTosllAmp.cpp b/src/EvtGenModels/EvtbTosllAmp.cpp
index 6481716..86e9792 100644
--- a/src/EvtGenModels/EvtbTosllAmp.cpp
+++ b/src/EvtGenModels/EvtbTosllAmp.cpp
@@ -1,686 +1,665 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtbTosllAmp.cc
-//
-// Description: Routine to implement semileptonic decays to pseudo-scalar
-// mesons.
-//
-// Modification history:
-//
-// DJL April 17,1998 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtbTosllAmp.hh"
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtDiLog.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVectorParticle.hh"
double EvtbTosllAmp::CalcMaxProb( EvtId parent, EvtId meson, EvtId lepton1,
EvtId lepton2, EvtbTosllFF* FormFactors,
double& poleSize )
{
//This routine takes the arguements parent, meson, and lepton
//number, and a form factor model, and returns a maximum
//probability for this semileptonic form factor model. A
//brute force method is used. The 2D cos theta lepton and
//q2 phase space is probed.
//Start by declaring a particle at rest.
//It only makes sense to have a scalar parent. For now.
//This should be generalized later.
EvtScalarParticle* scalar_part;
EvtParticle* root_part;
scalar_part = new EvtScalarParticle;
//cludge to avoid generating random numbers!
scalar_part->noLifeTime();
EvtVector4R p_init;
p_init.set( EvtPDL::getMass( parent ), 0.0, 0.0, 0.0 );
scalar_part->init( parent, p_init );
root_part = (EvtParticle*)scalar_part;
root_part->setDiagonalSpinDensity();
EvtParticle *daughter, *lep1, *lep2;
EvtAmp amp;
EvtId listdaug[3];
listdaug[0] = meson;
listdaug[1] = lepton1;
listdaug[2] = lepton2;
amp.init( parent, 3, listdaug );
root_part->makeDaughters( 3, listdaug );
daughter = root_part->getDaug( 0 );
lep1 = root_part->getDaug( 1 );
lep2 = root_part->getDaug( 2 );
//cludge to avoid generating random numbers!
daughter->noLifeTime();
lep1->noLifeTime();
lep2->noLifeTime();
//Initial particle is unpolarized, well it is a scalar so it is
//trivial
EvtSpinDensity rho;
rho.setDiag( root_part->getSpinStates() );
double mass[3];
double m = root_part->mass();
EvtVector4R p4meson, p4lepton1, p4lepton2, p4w;
double q2max;
double q2, elepton, plepton;
int i, j;
double erho, prho, costl;
double maxfoundprob = 0.0;
double prob = -10.0;
int massiter;
double maxpole = 0;
for ( massiter = 0; massiter < 3; massiter++ ) {
mass[0] = EvtPDL::getMeanMass( meson );
mass[1] = EvtPDL::getMeanMass( lepton1 );
mass[2] = EvtPDL::getMeanMass( lepton2 );
if ( massiter == 1 ) {
mass[0] = EvtPDL::getMinMass( meson );
}
if ( massiter == 2 ) {
mass[0] = EvtPDL::getMaxMass( meson );
if ( ( mass[0] + mass[1] + mass[2] ) > m )
mass[0] = m - mass[1] - mass[2] - 0.00001;
}
q2max = ( m - mass[0] ) * ( m - mass[0] );
//loop over q2
//cout << "m " << m << "mass[0] " << mass[0] << " q2max "<< q2max << endl;
for ( i = 0; i < 25; i++ ) {
//want to avoid picking up the tail of the photon propagator
q2 = ( ( i + 1.5 ) * q2max ) / 26.0;
if ( i == 0 )
q2 = 4 * ( mass[1] * mass[1] );
erho = ( m * m + mass[0] * mass[0] - q2 ) / ( 2.0 * m );
prho = sqrt( erho * erho - mass[0] * mass[0] );
p4meson.set( erho, 0.0, 0.0, -1.0 * prho );
p4w.set( m - erho, 0.0, 0.0, prho );
//This is in the W rest frame
elepton = ( q2 + mass[1] * mass[1] ) / ( 2.0 * sqrt( q2 ) );
plepton = sqrt( elepton * elepton - mass[1] * mass[1] );
double probctl[3];
for ( j = 0; j < 3; j++ ) {
costl = 0.99 * ( j - 1.0 );
//These are in the W rest frame. Need to boost out into
//the B frame.
p4lepton1.set( elepton, 0.0,
plepton * sqrt( 1.0 - costl * costl ),
plepton * costl );
p4lepton2.set( elepton, 0.0,
-1.0 * plepton * sqrt( 1.0 - costl * costl ),
-1.0 * plepton * costl );
EvtVector4R boost( ( m - erho ), 0.0, 0.0, 1.0 * prho );
p4lepton1 = boostTo( p4lepton1, boost );
p4lepton2 = boostTo( p4lepton2, boost );
//Now initialize the daughters...
daughter->init( meson, p4meson );
lep1->init( lepton1, p4lepton1 );
lep2->init( lepton2, p4lepton2 );
CalcAmp( root_part, amp, FormFactors );
//Now find the probability at this q2 and cos theta lepton point
//and compare to maxfoundprob.
//Do a little magic to get the probability!!
//cout <<"amp:"<<amp.getSpinDensity()<<endl;
prob = rho.normalizedProb( amp.getSpinDensity() );
//cout << "prob:"<<q2<<" "<<costl<<" "<<prob<<endl;
probctl[j] = prob;
}
//probclt contains prob at ctl=-1,0,1.
//prob=a+b*ctl+c*ctl^2
double a = probctl[1];
double b = 0.5 * ( probctl[2] - probctl[0] );
double c = 0.5 * ( probctl[2] + probctl[0] ) - probctl[1];
prob = probctl[0];
if ( probctl[1] > prob )
prob = probctl[1];
if ( probctl[2] > prob )
prob = probctl[2];
if ( fabs( c ) > 1e-20 ) {
double ctlx = -0.5 * b / c;
if ( fabs( ctlx ) < 1.0 ) {
double probtmp = a + b * ctlx + c * ctlx * ctlx;
if ( probtmp > prob )
prob = probtmp;
}
}
//EvtGenReport(EVTGEN_DEBUG,"EvtGen") << "prob,probctl:"<<prob<<" "
// << probctl[0]<<" "
// << probctl[1]<<" "
// << probctl[2]<<endl;
if ( i == 0 ) {
maxpole = prob;
continue;
}
if ( prob > maxfoundprob ) {
maxfoundprob = prob;
}
//cout << "q2,maxfoundprob:"<<q2<<" "<<maxfoundprob<<endl;
}
if ( EvtPDL::getWidth( meson ) <= 0.0 ) {
//if the particle is narrow dont bother with changing the mass.
massiter = 4;
}
}
root_part->deleteTree();
poleSize = 0.04 * ( maxpole / maxfoundprob ) * 4 * ( mass[1] * mass[1] );
//poleSize=0.002;
//cout <<"maxfoundprob,maxpole,poleSize:"<<maxfoundprob<<" "
// <<maxpole<<" "<<poleSize<<endl;
maxfoundprob *= 1.15;
return maxfoundprob;
}
EvtComplex EvtbTosllAmp::GetC7Eff( double q2, bool nnlo )
{
if ( !nnlo )
return -0.313;
double mbeff = 4.8;
double shat = q2 / mbeff / mbeff;
double logshat;
logshat = log( shat );
double muscale;
muscale = 2.5;
double alphas;
alphas = 0.267;
double A7;
A7 = -0.353 + 0.023;
double A8;
A8 = -0.164;
double C1;
C1 = -0.697;
double C2;
C2 = 1.046;
double Lmu;
Lmu = log( muscale / mbeff );
EvtComplex uniti( 0.0, 1.0 );
EvtComplex c7eff;
if ( shat > 0.25 ) {
c7eff = A7;
return c7eff;
}
// change energy scale to 5.0 for full NNLO calculation below shat = 0.25
muscale = 5.0;
alphas = 0.215;
A7 = -0.312 + 0.008;
A8 = -0.148;
C1 = -0.487;
C2 = 1.024;
Lmu = log( muscale / mbeff );
EvtComplex F71;
EvtComplex f71;
EvtComplex k7100( -0.68192, -0.074998 );
EvtComplex k7101( 0.0, 0.0 );
EvtComplex k7110( -0.23935, -0.12289 );
EvtComplex k7111( 0.0027424, 0.019676 );
EvtComplex k7120( -0.0018555, -0.175 );
EvtComplex k7121( 0.022864, 0.011456 );
EvtComplex k7130( 0.28248, -0.12783 );
EvtComplex k7131( 0.029027, -0.0082265 );
f71 = k7100 + k7101 * logshat + shat * ( k7110 + k7111 * logshat ) +
shat * shat * ( k7120 + k7121 * logshat ) +
shat * shat * shat * ( k7130 + k7131 * logshat );
F71 = ( -208.0 / 243.0 ) * Lmu + f71;
EvtComplex F72;
EvtComplex f72;
EvtComplex k7200( 4.0915, 0.44999 );
EvtComplex k7201( 0.0, 0.0 );
EvtComplex k7210( 1.4361, 0.73732 );
EvtComplex k7211( -0.016454, -0.11806 );
EvtComplex k7220( 0.011133, 1.05 );
EvtComplex k7221( -0.13718, -0.068733 );
EvtComplex k7230( -1.6949, 0.76698 );
EvtComplex k7231( -0.17416, 0.049359 );
f72 = k7200 + k7201 * logshat + shat * ( k7210 + k7211 * logshat ) +
shat * shat * ( k7220 + k7221 * logshat ) +
shat * shat * shat * ( k7230 + k7231 * logshat );
F72 = ( 416.0 / 81.0 ) * Lmu + f72;
EvtComplex F78;
F78 = ( -32.0 / 9.0 ) * Lmu + 8.0 * EvtConst::pi * EvtConst::pi / 27.0 +
( -44.0 / 9.0 ) + ( -8.0 * EvtConst::pi / 9.0 ) * uniti +
( 4.0 / 3.0 * EvtConst::pi * EvtConst::pi - 40.0 / 3.0 ) * shat +
( 32.0 * EvtConst::pi * EvtConst::pi / 9.0 - 316.0 / 9.0 ) * shat *
shat +
( 200.0 * EvtConst::pi * EvtConst::pi / 27.0 - 658.0 / 9.0 ) * shat *
shat * shat +
( -8.0 * logshat / 9.0 ) * ( shat + shat * shat + shat * shat * shat );
c7eff = A7 - alphas / ( 4.0 * EvtConst::pi ) *
( C1 * F71 + C2 * F72 + A8 * F78 );
return c7eff;
}
EvtComplex EvtbTosllAmp::GetC9Eff( double q2, bool nnlo, bool btod )
{
if ( !nnlo )
return 4.344;
double mbeff = 4.8;
double shat = q2 / mbeff / mbeff;
double logshat;
logshat = log( shat );
double mchat = 0.29;
double muscale;
muscale = 2.5;
double alphas;
alphas = 0.267;
double A8;
A8 = -0.164;
double A9;
A9 = 4.287 + ( -0.218 );
double C1;
C1 = -0.697;
double C2;
C2 = 1.046;
double T9;
T9 = 0.114 + 0.280;
double U9;
U9 = 0.045 + 0.023;
double W9;
W9 = 0.044 + 0.016;
double Lmu;
Lmu = log( muscale / mbeff );
EvtComplex uniti( 0.0, 1.0 );
EvtComplex hc;
double xarg;
xarg = 4.0 * mchat / shat;
hc = -4.0 / 9.0 * log( mchat * mchat ) + 8.0 / 27.0 + 4.0 * xarg / 9.0;
if ( xarg < 1.0 ) {
hc = hc - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
( log( fabs( ( sqrt( 1.0 - xarg ) + 1.0 ) /
( sqrt( 1.0 - xarg ) - 1.0 ) ) ) -
uniti * EvtConst::pi );
} else {
hc = hc - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
2.0 * atan( 1.0 / sqrt( xarg - 1.0 ) );
}
EvtComplex h1;
xarg = 4.0 / shat;
h1 = 8.0 / 27.0 + 4.0 * xarg / 9.0;
if ( xarg < 1.0 ) {
h1 = h1 - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
( log( fabs( ( sqrt( 1.0 - xarg ) + 1.0 ) /
( sqrt( 1.0 - xarg ) - 1.0 ) ) ) -
uniti * EvtConst::pi );
} else {
h1 = h1 - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
2.0 * atan( 1.0 / sqrt( xarg - 1.0 ) );
}
EvtComplex h0;
h0 = 8.0 / 27.0 - 4.0 * log( 2.0 ) / 9.0 + 4.0 * uniti * EvtConst::pi / 9.0;
// X=V_{ud}^* V_ub / V_{td}^* V_tb * (4/3 C_1 +C_2) * (h(\hat m_c^2, hat s)-
// h(\hat m_u^2, hat s))
EvtComplex Vudstar( 1.0 - 0.2279 * 0.2279 / 2.0, 0.0 );
EvtComplex Vub( ( 0.118 + 0.273 ) / 2.0, -1.0 * ( 0.305 + 0.393 ) / 2.0 );
EvtComplex Vtdstar( 1.0 - ( 0.118 + 0.273 ) / 2.0, ( 0.305 + 0.393 ) / 2.0 );
EvtComplex Vtb( 1.0, 0.0 );
EvtComplex Xd;
Xd = ( Vudstar * Vub / Vtdstar * Vtb ) * ( 4.0 / 3.0 * C1 + C2 ) *
( hc - h0 );
EvtComplex c9eff = 4.344;
if ( shat > 0.25 ) {
c9eff = A9 + T9 * hc + U9 * h1 + W9 * h0;
if ( btod ) {
c9eff += Xd;
}
return c9eff;
}
// change energy scale to 5.0 for full NNLO calculation below shat = 0.25
muscale = 5.0;
alphas = 0.215;
A9 = 4.174 + ( -0.035 );
C1 = -0.487;
C2 = 1.024;
A8 = -0.148;
T9 = 0.374 + 0.252;
U9 = 0.033 + 0.015;
W9 = 0.032 + 0.012;
Lmu = log( muscale / mbeff );
EvtComplex F91;
EvtComplex f91;
EvtComplex k9100( -11.973, 0.16371 );
EvtComplex k9101( -0.081271, -0.059691 );
EvtComplex k9110( -28.432, -0.25044 );
EvtComplex k9111( -0.040243, 0.016442 );
EvtComplex k9120( -57.114, -0.86486 );
EvtComplex k9121( -0.035191, 0.027909 );
EvtComplex k9130( -128.8, -2.5243 );
EvtComplex k9131( -0.017587, 0.050639 );
f91 = k9100 + k9101 * logshat + shat * ( k9110 + k9111 * logshat ) +
shat * shat * ( k9120 + k9121 * logshat ) +
shat * shat * shat * ( k9130 + k9131 * logshat );
F91 = ( -1424.0 / 729.0 + 16.0 * uniti * EvtConst::pi / 243.0 +
64.0 / 27.0 * log( mchat ) ) *
Lmu -
16.0 * Lmu * logshat / 243.0 +
( 16.0 / 1215.0 - 32.0 / 135.0 / mchat / mchat ) * Lmu * shat +
( 4.0 / 2835.0 - 8.0 / 315.0 / mchat / mchat / mchat / mchat ) * Lmu *
shat * shat +
( 16.0 / 76545.0 -
32.0 / 8505.0 / mchat / mchat / mchat / mchat / mchat / mchat ) *
Lmu * shat * shat * shat -
256.0 * Lmu * Lmu / 243.0 + f91;
EvtComplex F92;
EvtComplex f92;
EvtComplex k9200( 6.6338, -0.98225 );
EvtComplex k9201( 0.48763, 0.35815 );
EvtComplex k9210( 3.3585, 1.5026 );
EvtComplex k9211( 0.24146, -0.098649 );
EvtComplex k9220( -1.1906, 5.1892 );
EvtComplex k9221( 0.21115, -0.16745 );
EvtComplex k9230( -17.12, 15.146 );
EvtComplex k9231( 0.10552, -0.30383 );
f92 = k9200 + k9201 * logshat + shat * ( k9210 + k9211 * logshat ) +
shat * shat * ( k9220 + k9221 * logshat ) +
shat * shat * shat * ( k9230 + k9231 * logshat );
F92 = ( 256.0 / 243.0 - 32.0 * uniti * EvtConst::pi / 81.0 -
128.0 / 9.0 * log( mchat ) ) *
Lmu +
32.0 * Lmu * logshat / 81.0 +
( -32.0 / 405.0 + 64.0 / 45.0 / mchat / mchat ) * Lmu * shat +
( -8.0 / 945.0 + 16.0 / 105.0 / mchat / mchat / mchat / mchat ) *
Lmu * shat * shat +
( -32.0 / 25515.0 +
64.0 / 2835.0 / mchat / mchat / mchat / mchat / mchat / mchat ) *
Lmu * shat * shat * shat +
512.0 * Lmu * Lmu / 81.0 + f92;
EvtComplex F98;
F98 = 104.0 / 9.0 - 32.0 * EvtConst::pi * EvtConst::pi / 27.0 +
( 1184.0 / 27.0 - 40.0 * EvtConst::pi * EvtConst::pi / 9.0 ) * shat +
( 14212.0 / 135.0 - 32.0 * EvtConst::pi * EvtConst::pi / 3.0 ) *
shat * shat +
( 193444.0 / 945.0 - 560.0 * EvtConst::pi * EvtConst::pi / 27.0 ) *
shat * shat * shat +
16.0 * logshat / 9.0 *
( 1.0 + shat + shat * shat + shat * shat * shat );
Xd = ( Vudstar * Vub / Vtdstar * Vtb ) * ( 4.0 / 3.0 * C1 + C2 ) *
( hc - h0 );
c9eff = A9 + T9 * hc + U9 * h1 + W9 * h0 -
alphas / ( 4.0 * EvtConst::pi ) * ( C1 * F91 + C2 * F92 + A8 * F98 );
if ( btod ) {
c9eff += Xd;
}
return c9eff;
}
EvtComplex EvtbTosllAmp::GetC10Eff( double /*q2*/, bool nnlo )
{
if ( !nnlo )
return -4.669;
double A10;
A10 = -4.592 + 0.379;
EvtComplex c10eff;
c10eff = A10;
return c10eff;
}
double EvtbTosllAmp::dGdsProb( double mb, double ms, double ml, double s )
{
// Compute the decay probability density function given a value of s
// according to Ali's paper
double delta, lambda, prob;
double f1, f2, f3, f4;
double msh, mlh, sh;
mlh = ml / mb;
msh = ms / mb;
sh = s / ( mb * mb );
EvtComplex c9eff = EvtbTosllAmp::GetC9Eff( sh * mb );
EvtComplex c7eff = EvtbTosllAmp::GetC7Eff( sh * mb );
EvtComplex c10eff = EvtbTosllAmp::GetC10Eff( sh * mb );
double alphas = 0.119 /
( 1 + 0.119 * log( pow( 4.8, 2 ) / pow( 91.1867, 2 ) ) *
23.0 / 12.0 / EvtConst::pi );
double omega9 = -2.0 / 9.0 * EvtConst::pi * EvtConst::pi -
4.0 / 3.0 * EvtDiLog::DiLog( sh ) -
2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
( 5.0 + 4.0 * sh ) / ( 3.0 * ( 1.0 + 2.0 * sh ) ) *
log( 1.0 - sh ) -
2.0 * sh * ( 1.0 + sh ) * ( 1.0 - 2.0 * sh ) /
( 3.0 * pow( 1.0 - sh, 2 ) * ( 1.0 + 2.0 * sh ) ) *
log( sh ) +
( 5.0 + 9.0 * sh - 6.0 * sh * sh ) /
( 6.0 * ( 1.0 - sh ) * ( 1.0 + 2.0 * sh ) );
double eta9 = 1.0 + alphas * omega9 / EvtConst::pi;
double omega7 = -8.0 / 3.0 * log( 4.8 / mb ) -
4.0 / 3.0 * EvtDiLog::DiLog( sh ) -
2.0 / 9.0 * EvtConst::pi * EvtConst::pi -
2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
log( 1 - sh ) * ( 8.0 + sh ) / ( 2.0 + sh ) / 3.0 -
2.0 / 3.0 * sh * ( 2.0 - 2.0 * sh - sh * sh ) * log( sh ) /
pow( ( 1.0 - sh ), 2 ) / ( 2.0 + sh ) -
( 16.0 - 11.0 * sh - 17.0 * sh * sh ) / 18.0 /
( 2.0 + sh ) / ( 1.0 - sh );
double eta7 = 1.0 + alphas * omega7 / EvtConst::pi;
double omega79 = -4.0 / 3.0 * log( 4.8 / mb ) -
4.0 / 3.0 * EvtDiLog::DiLog( sh ) -
2.0 / 9.0 * EvtConst::pi * EvtConst::pi -
2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
1.0 / 9.0 * ( 2.0 + 7.0 * sh ) * log( 1.0 - sh ) / sh -
2.0 / 9.0 * sh * ( 3.0 - 2.0 * sh ) * log( sh ) /
pow( ( 1.0 - sh ), 2 ) +
1.0 / 18.0 * ( 5.0 - 9.0 * sh ) / ( 1.0 - sh );
double eta79 = 1.0 + alphas * omega79 / EvtConst::pi;
double c7c9 = abs( c7eff ) * real( c9eff );
c7c9 *= pow( eta79, 2 );
double c7c7 = pow( abs( c7eff ), 2 );
c7c7 *= pow( eta7, 2 );
double c9c9plusc10c10 = pow( abs( c9eff ), 2 ) + pow( abs( c10eff ), 2 );
c9c9plusc10c10 *= pow( eta9, 2 );
double c9c9minusc10c10 = pow( abs( c9eff ), 2 ) - pow( abs( c10eff ), 2 );
c9c9minusc10c10 *= pow( eta9, 2 );
lambda = 1.0 + sh * sh + pow( msh, 4 ) -
2.0 * ( sh + sh * msh * msh + msh * msh );
f1 = pow( 1.0 - msh * msh, 2 ) - sh * ( 1.0 + msh * msh );
f2 = 2.0 * ( 1.0 + msh * msh ) * pow( 1.0 - msh * msh, 2 ) -
sh * ( 1.0 + 14.0 * msh * msh + pow( msh, 4 ) ) -
sh * sh * ( 1.0 + msh * msh );
f3 = pow( 1.0 - msh * msh, 2 ) + sh * ( 1.0 + msh * msh ) - 2.0 * sh * sh +
lambda * 2.0 * mlh * mlh / sh;
f4 = 1.0 - sh + msh * msh;
delta = ( 12.0 * c7c9 * f1 + 4.0 * c7c7 * f2 / sh ) *
( 1.0 + 2.0 * mlh * mlh / sh ) +
c9c9plusc10c10 * f3 + 6.0 * mlh * mlh * c9c9minusc10c10 * f4;
prob = sqrt( lambda * ( 1.0 - 4.0 * mlh * mlh / sh ) ) * delta;
return prob;
}
double EvtbTosllAmp::dGdsdupProb( double mb, double ms, double ml, double s,
double u )
{
// Compute the decay probability density function given a value of s and u
// according to Ali's paper
double prob;
double f1sp, f2sp, f3sp;
double sh = s / ( mb * mb );
EvtComplex c9eff = EvtbTosllAmp::GetC9Eff( sh * mb );
EvtComplex c7eff = EvtbTosllAmp::GetC7Eff( sh * mb );
EvtComplex c10eff = EvtbTosllAmp::GetC10Eff( sh * mb );
double alphas = 0.119 /
( 1 + 0.119 * log( pow( 4.8, 2 ) / pow( 91.1867, 2 ) ) *
23.0 / 12.0 / EvtConst::pi );
double omega9 = -2.0 / 9.0 * EvtConst::pi * EvtConst::pi -
4.0 / 3.0 * EvtDiLog::DiLog( sh ) -
2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
( 5.0 + 4.0 * sh ) / ( 3.0 * ( 1.0 + 2.0 * sh ) ) *
log( 1.0 - sh ) -
2.0 * sh * ( 1.0 + sh ) * ( 1.0 - 2.0 * sh ) /
( 3.0 * pow( 1.0 - sh, 2 ) * ( 1.0 + 2.0 * sh ) ) *
log( sh ) +
( 5.0 + 9.0 * sh - 6.0 * sh * sh ) /
( 6.0 * ( 1.0 - sh ) * ( 1.0 + 2.0 * sh ) );
double eta9 = 1.0 + alphas * omega9 / EvtConst::pi;
double omega7 = -8.0 / 3.0 * log( 4.8 / mb ) -
4.0 / 3.0 * EvtDiLog::DiLog( sh ) -
2.0 / 9.0 * EvtConst::pi * EvtConst::pi -
2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
log( 1 - sh ) * ( 8.0 + sh ) / ( 2.0 + sh ) / 3.0 -
2.0 / 3.0 * sh * ( 2.0 - 2.0 * sh - sh * sh ) * log( sh ) /
pow( ( 1.0 - sh ), 2 ) / ( 2.0 + sh ) -
( 16.0 - 11.0 * sh - 17.0 * sh * sh ) / 18.0 /
( 2.0 + sh ) / ( 1.0 - sh );
double eta7 = 1.0 + alphas * omega7 / EvtConst::pi;
double omega79 = -4.0 / 3.0 * log( 4.8 / mb ) -
4.0 / 3.0 * EvtDiLog::DiLog( sh ) -
2.0 / 9.0 * EvtConst::pi * EvtConst::pi -
2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
1.0 / 9.0 * ( 2.0 + 7.0 * sh ) * log( 1.0 - sh ) / sh -
2.0 / 9.0 * sh * ( 3.0 - 2.0 * sh ) * log( sh ) /
pow( ( 1.0 - sh ), 2 ) +
1.0 / 18.0 * ( 5.0 - 9.0 * sh ) / ( 1.0 - sh );
double eta79 = 1.0 + alphas * omega79 / EvtConst::pi;
double c7c9 = abs( c7eff ) * real( c9eff );
c7c9 *= pow( eta79, 2 );
double c7c7 = pow( abs( c7eff ), 2 );
c7c7 *= pow( eta7, 2 );
double c9c9plusc10c10 = pow( abs( c9eff ), 2 ) + pow( abs( c10eff ), 2 );
c9c9plusc10c10 *= pow( eta9, 2 );
double c9c9minusc10c10 = pow( abs( c9eff ), 2 ) - pow( abs( c10eff ), 2 );
c9c9minusc10c10 *= pow( eta9, 2 );
double c7c10 = abs( c7eff ) * real( c10eff );
c7c10 *= eta7;
c7c10 *= eta9;
double c9c10 = real( c9eff ) * real( c10eff );
c9c10 *= pow( eta9, 2 );
f1sp = ( pow( mb * mb - ms * ms, 2 ) - s * s ) * c9c9plusc10c10 +
4.0 *
( pow( mb, 4 ) - ms * ms * mb * mb -
pow( ms, 4 ) * ( 1.0 - ms * ms / ( mb * mb ) ) -
8.0 * s * ms * ms - s * s * ( 1.0 + ms * ms / ( mb * mb ) ) ) *
mb * mb * c7c7 /
s
// kludged mass term
* ( 1.0 + 2.0 * ml * ml / s ) -
8.0 * ( s * ( mb * mb + ms * ms ) - pow( mb * mb - ms * ms, 2 ) ) *
c7c9
// kludged mass term
* ( 1.0 + 2.0 * ml * ml / s );
f2sp = 4.0 * s * c9c10 + 8.0 * ( mb * mb + ms * ms ) * c7c10;
f3sp = -( c9c9plusc10c10 ) + 4.0 * ( 1.0 + pow( ms / mb, 4 ) ) * mb * mb *
c7c7 /
s
// kludged mass term
* ( 1.0 + 2.0 * ml * ml / s );
prob = ( f1sp + f2sp * u + f3sp * u * u ) / pow( mb, 3 );
return prob;
}
diff --git a/src/EvtGenModels/EvtbTosllBall.cpp b/src/EvtGenModels/EvtbTosllBall.cpp
index 7345801..dd7efda 100644
--- a/src/EvtGenModels/EvtbTosllBall.cpp
+++ b/src/EvtGenModels/EvtbTosllBall.cpp
@@ -1,119 +1,98 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtbTosllBall.cc
-//
-// Description: Routine to implement b->sll decays according to Ball et al.
-//
-// Modification history:
-//
-// Ryd January 5, 2000 Module created
-//
-// jjhollar October 7, 2005 Option to select form factors at runtime
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtbTosllBall.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtbTosllAmp.hh"
#include "EvtGenModels/EvtbTosllBallFF.hh"
#include "EvtGenModels/EvtbTosllScalarAmp.hh"
#include "EvtGenModels/EvtbTosllVectorAmp.hh"
#include <stdlib.h>
#include <string>
using std::endl;
std::string EvtbTosllBall::getName()
{
return "BTOSLLBALL";
}
EvtDecayBase* EvtbTosllBall::clone()
{
return new EvtbTosllBall;
}
void EvtbTosllBall::decay( EvtParticle* p )
{
setWeight( p->initializePhaseSpace( getNDaug(), getDaugs(), false,
_poleSize, 1, 2 ) );
_calcamp->CalcAmp( p, _amp2, _ballffmodel.get() );
}
void EvtbTosllBall::initProbMax()
{
EvtId parnum, mesnum, l1num, l2num;
parnum = getParentId();
mesnum = getDaug( 0 );
l1num = getDaug( 1 );
l2num = getDaug( 2 );
//This routine sets the _poleSize.
double mymaxprob = _calcamp->CalcMaxProb( parnum, mesnum, l1num, l2num,
_ballffmodel.get(), _poleSize );
setProbMax( mymaxprob );
}
void EvtbTosllBall::init()
{
// First choose form factors from the .DEC file
// 1 = Ali-Ball '01 LCSR
// 2 = Ali-Ball '99 LCSR
// 3 = Colangelo 3pt QCD
// 4 = Melikhov Lattice/Quark dispersion
// 5 = ???
// 6 = Ball-Zwicky '05 LCSR (mb = 480)
// 7 = Ball-Zwicky '05 LCSR (mb = 460 - pseudoscalar modes only)
// The default is Ali '01
int theFormFactorModel = 1;
if ( getNArg() == 1 )
theFormFactorModel = (int)getArg( 0 );
checkNDaug( 3 );
//We expect the parent to be a scalar
//and the daughters to be X lepton+ lepton-
checkSpinParent( EvtSpinType::SCALAR );
EvtSpinType::spintype mesontype = EvtPDL::getSpinType( getDaug( 0 ) );
if ( !( mesontype == EvtSpinType::VECTOR ||
mesontype == EvtSpinType::SCALAR ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtbTosllBall generator expected "
<< " a SCALAR or VECTOR 1st daughter, found:"
<< EvtPDL::name( getDaug( 0 ) ).c_str() << endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << endl;
::abort();
}
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::DIRAC );
_ballffmodel = std::make_unique<EvtbTosllBallFF>( theFormFactorModel );
if ( mesontype == EvtSpinType::SCALAR ) {
_calcamp = std::make_unique<EvtbTosllScalarAmp>();
} else if ( mesontype == EvtSpinType::VECTOR ) {
_calcamp = std::make_unique<EvtbTosllVectorAmp>();
}
}
diff --git a/src/EvtGenModels/EvtbTosllBallFF.cpp b/src/EvtGenModels/EvtbTosllBallFF.cpp
index 7070077..b14324b 100644
--- a/src/EvtGenModels/EvtbTosllBallFF.cpp
+++ b/src/EvtGenModels/EvtbTosllBallFF.cpp
@@ -1,443 +1,422 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module:
-// Description: Form factors for b->sll according to Ali, Ball et al.
-// hep-ph/9910221v2
-//
-// Modification history:
-//
-// Ryd January 5, 2000 Module created
-//
-// jjhollar October 7 2005 Add Ball & Zwicky '05 LCSR
-// ofte August 2006 Add some more pi l l FF models
-//------------------------------------------------------------------------
#include "EvtGenModels/EvtbTosllBallFF.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include <cmath>
EvtbTosllBallFF::EvtbTosllBallFF( int ffmodel )
{
_theFFModel = ffmodel;
}
void EvtbTosllBallFF::getScalarFF( EvtId parent, EvtId daught, double t,
double /*mass*/, double& fp, double& f0,
double& ft )
{
int model = _theFFModel;
double m = EvtPDL::getMeanMass( parent );
double md = EvtPDL::getMeanMass( daught );
double shat = t / ( m * m );
double shat2 = shat * shat;
double shat3 = shat2 * shat;
if ( daught == EvtPDL::getId( std::string( "K+" ) ) ||
daught == EvtPDL::getId( std::string( "K-" ) ) ||
daught == EvtPDL::getId( std::string( "K_S0" ) ) ||
daught == EvtPDL::getId( std::string( "K0" ) ) ||
daught == EvtPDL::getId( std::string( "anti-K0" ) ) ||
daught == EvtPDL::getId( std::string( "K_L0" ) ) ) {
// B --> K form factors
if ( model == 1 ) {
//this is Ali-Ball '01 (or really Ali-Ball'99 minimum allowed)
fp = 0.278 * exp( 1.568 * shat + 0.470 * shat2 + 0.885 * shat3 );
f0 = 0.278 * exp( 0.740 * shat + 0.080 * shat2 + 0.425 * shat3 );
ft = 0.300 * exp( 1.600 * shat + 0.501 * shat2 + 0.796 * shat3 );
}
if ( model == 2 ) {
//this is Ali-Ball '99 (central values)
fp = 0.319 * exp( 1.465 * shat + 0.372 * shat2 + 0.782 * shat3 );
f0 = 0.319 * exp( 0.633 * shat - 0.095 * shat2 + 0.591 * shat3 );
ft = 0.355 * exp( 1.478 * shat + 0.373 * shat2 + 0.700 * shat3 );
}
if ( model == 3 ) {
//QCD sum rules (Colangelo et al)
fp = 0.25 / ( 1. - t / ( 5.0 * 5.0 ) );
f0 = 0.25 / ( 1. - t / ( 7.0 * 7.0 ) );
ft = -0.14 /
( ( 1.0 - t / ( 5.0 * 5.0 ) ) * ( 1.0 - t / ( 7.0 * 7.0 ) ) );
}
if ( model == 4 ) {
// Quark model (Melikhov et al - hep-ph/9711362)
fp = 0.36 / ( 1. - 0.048 * t + 0.00063 * t * t );
double fm = -0.30 / ( 1. - 0.050 * t + 0.00061 * t * t );
f0 = fp + fm * ( t / ( m * m - md * md ) );
ft = -( m + md ) * 0.06 / ( 1 - 0.049 * t + 0.00064 * t * t );
}
if ( model == 5 ) {
fp = 0.341 / ( 1. - 1.41 * shat + 0.406 * shat * shat );
f0 = 0.341 / ( 1. - 0.41 * shat - 0.361 * shat * shat );
ft = 0.374 / ( 1. - 1.42 * shat + 0.434 * shat * shat );
}
if ( model == 6 ) {
// Ball-Zwicky LCSR '05 "set 2" (mb = 4.8)
fp = ( 0.1616 / ( 1. - ( t / 29.30 ) ) ) +
( 0.1730 / ( 1. - ( t / 29.30 ) ) / ( 1. - ( t / 29.30 ) ) );
f0 = ( 0.3302 / ( 1. - ( t / 37.46 / 37.46 ) ) );
ft = ( 0.1614 / ( 1. - ( t / 29.30 ) ) ) +
( 0.1981 / ( 1. - ( t / 29.30 ) ) / ( 1. - ( t / 29.30 ) ) );
}
if ( model == 7 ) {
// Ball-Zwicky LCSR '05 "set 4" (mb = 4.6)
fp = ( 0.1903 / ( 1. - ( t / 29.30 ) ) ) +
( 0.1478 / ( 1. - ( t / 29.30 ) ) / ( 1. - ( t / 29.30 ) ) );
f0 = ( 0.3338 / ( 1. - ( t / 38.98 / 38.98 ) ) );
ft = ( 0.1851 / ( 1. - ( t / 29.30 ) ) ) +
( 0.1905 / ( 1. - ( t / 29.30 ) ) / ( 1. - ( t / 29.30 ) ) );
}
} else if ( daught == EvtPDL::getId( std::string( "pi+" ) ) ||
daught == EvtPDL::getId( std::string( "pi-" ) ) ||
daught == EvtPDL::getId( std::string( "pi0" ) ) ) {
if ( model == 1 ) {
// B --> pi form factors from Ball-Zwicky'01 (tabulated in hep-ph/0306251)
fp = 0.261 / ( 1. - 2.03 * shat + 1.293 * shat * shat );
f0 = 0.261 / ( 1. - 0.27 * shat - 0.752 * shat * shat );
ft = 0.296 / ( 1. - 1.28 * shat + 0.193 * shat * shat );
}
// The following two (2) and (3) should preferably be replaced with
// something better. ft not provided by the papers, and the ft formula
// (from Colangelo'96 (hep-ph/9510403v2) equation (5.1)) seem to be no good.
// if (model == 2) {
// // LatticeQCD: Okamoto'04
// // ... with f_T from eq. (5.1) of Colangelo'95
// fp = 0.23/((1.-shat)*(1.-0.63*shat));
// f0 = 0.23/((1.-shat)/1.18);
// ft = ( -(m+md)/(2*m) )/ (fp - (m*m-md*md) * ((f0-fp)/t) );
// }
// if (model == 3) {
// // LatticeQCD: Shigemitsu'04
// // ... with f_T from eq. (5.1) of Colangelo'95
// fp = 0.42*(1.0-0.41)/((1.-shat)*(1.-0.63*shat));
// f0 = 0.42*(1.0-0.41)/((1.-shat)/1.18);
// ft = ( -(m+md)/(2*m) )/ (fp - (m*m-md*md) * ((f0-fp)/t) );
// }
if ( model == 4 ) {
// Quark model - B -> pi set 1 (Melikhov-Nikitin'96)
fp = 0.29 / pow( ( 1. - t / ( 6.48 * 6.48 ) ), 2.54 );
double fm = -0.26 / pow( ( 1. - t / ( 6.34 * 6.34 ) ), 2.49 );
f0 = fp + fm * ( t / ( m * m - md * md ) );
ft = -( m + md ) * 0.05 / pow( ( 1. - t / ( 6.47 * 6.47 ) ), 2.50 );
}
if ( model == 5 ) {
// Melikhov-Stech '00. (hep-ph/0001113)
// relativistic dispersion approach based on constituent quark picture
fp = 0.29 / ( ( 1. - shat ) * ( 1. - 0.48 * shat ) );
f0 = 0.29 / ( 1. - 0.76 * shat + 0.28 * shat * shat );
ft = 0.28 / ( ( 1. - shat ) * ( 1. - 0.48 * shat ) );
}
if ( model == 6 ) {
// Ball-Zwicky LCSR '05 "set 2" (mb = 4.8)
fp = ( 0.744 / ( 1. - ( t / ( 5.32 * 5.32 ) ) ) ) +
( -0.486 / ( 1. - ( t / 40.73 ) ) );
f0 = ( 0.258 / ( 1. - ( t / 33.81 ) ) );
ft = ( 1.387 / ( 1. - ( t / ( 5.32 * 5.32 ) ) ) ) +
( -1.134 / ( 1. - ( t / 32.22 ) ) );
}
if ( model == 7 ) {
// Ball-Zwicky LCSR '05 "set 4" (mb = 4.6)
fp = ( 0.944 / ( 1. - ( t / ( 5.32 * 5.32 ) ) ) ) +
( -0.669 / ( 1. - ( t / 34.27 ) ) );
f0 = ( 0.270 / ( 1. - ( t / 33.63 ) ) );
ft = ( 0.152 / ( 1. - ( t / ( 5.32 * 5.32 ) ) ) ) +
( 0.122 / ( 1. - ( t / 28.40 ) ) / ( 1. - ( t / 28.40 ) ) );
}
} else if ( daught == EvtPDL::getId( std::string( "eta" ) ) ||
daught == EvtPDL::getId( std::string( "eta'" ) ) ) {
if ( model == 1 ) {
// B --> eta form factors
fp = 0.261 / ( 1. - 2.03 * shat + 1.293 * shat * shat );
f0 = 0.261 / ( 1. - 0.27 * shat - 0.752 * shat * shat );
ft = 0.296 / ( 1. - 1.28 * shat + 0.193 * shat * shat );
}
if ( model == 6 ) {
// Ball-Zwicky LCSR '05 "set 2" (mb = 4.8)
fp = ( 0.1220 / ( 1. - ( t / 28.40 ) ) ) +
( 0.1553 / ( 1. - ( t / 28.40 ) ) / ( 1. - ( t / 28.40 ) ) );
f0 = ( 0.2734 / ( 1. - ( t / 31.03 / 31.03 ) ) );
ft = ( 0.1108 / ( 1. - ( t / 28.40 ) ) ) +
( 0.1752 / ( 1. - ( t / 28.40 ) ) / ( 1. - ( t / 28.40 ) ) );
}
if ( model == 7 ) {
// Ball-Zwicky LCSR '05 "set 2" (mb = 4.8)
fp = ( 0.1380 / ( 1. - ( t / 28.40 ) ) ) +
( 0.1462 / ( 1. - ( t / 28.40 ) ) / ( 1. - ( t / 28.40 ) ) );
f0 = ( 0.2799 / ( 1. - ( t / 30.46 / 30.46 ) ) );
ft = ( 0.1160 / ( 1. - ( t / 28.40 ) ) ) +
( 0.1841 / ( 1. - ( t / 28.40 ) ) / ( 1. - ( t / 28.40 ) ) );
}
}
// cout << "shat "<<shat<<"\t"<<"fp "<<fp<<"\t"<<"f0 "<<f0<<"\t"
// <<"ft "<<ft<<endl;
}
void EvtbTosllBallFF::getVectorFF( EvtId parent, EvtId daught, double t,
double /*mass*/, double& a1, double& a2,
double& a0, double& v, double& t1,
double& t2, double& t3 )
{
int model = _theFFModel;
double m = EvtPDL::getMeanMass( parent );
double md = EvtPDL::getMeanMass( daught );
double shat = t / ( m * m );
double shat2 = shat * shat;
if (
// B_s decay form factors
parent == EvtPDL::getId( std::string( "B_s0" ) ) ||
parent == EvtPDL::getId( std::string( "anti-B_s0" ) ) ) {
if (
// B_s --> K* form factors
daught == EvtPDL::getId( std::string( "K*0" ) ) ||
daught == EvtPDL::getId( std::string( "anti-K*0" ) ) ) {
if ( model == 6 ) {
// Ball-Zwicky LCSR '05 (mb = 4.8)
a1 = 0.231 / ( 1. - ( t / 32.94 ) );
a2 = ( -0.011 / ( 1. - ( t / 40.14 ) ) ) +
( 0.192 / ( 1. - ( t / 40.14 ) ) / ( 1. - ( t / 40.14 ) ) );
a0 = ( 2.813 / ( 1. - ( t / ( 5.37 * 5.37 ) ) ) ) +
( -2.509 / ( 1. - ( t / 31.58 ) ) );
v = ( 2.351 / ( 1. - ( t / ( 5.42 * 5.42 ) ) ) ) +
( -2.039 / ( 1. - ( t / 33.10 ) ) );
t1 = ( 2.047 / ( 1. - ( t / ( 5.42 * 5.42 ) ) ) ) +
( -1.787 / ( 1 - ( t / 32.83 ) ) );
t2 = 0.260 / ( 1. - ( t / 33.01 ) );
double t3tilde = ( 0.043 / ( 1. - ( t / 39.38 ) ) ) +
( 0.217 / ( 1. - ( t / 39.38 ) ) /
( 1. - ( t / 39.38 ) ) );
t3 = 0.0;
if ( fabs( t ) > 1e-10 ) {
t3 = ( m * m - md * md ) * ( t3tilde - t2 ) / t;
}
}
}
else if (
// B_s --> phi form factors
daught == EvtPDL::getId( std::string( "phi" ) ) ) {
if ( model == 6 ) {
// Ball-Zwicky LCSR '05 (mb = 4.8)
a1 = 0.308 / ( 1. - ( t / 36.54 ) );
a2 = ( -0.054 / ( 1. - ( t / 48.94 ) ) ) +
( 0.288 / ( 1. - ( t / 48.94 ) ) / ( 1. - ( t / 48.94 ) ) );
a0 = ( 3.310 / ( 1. - ( t / ( 5.28 * 5.28 ) ) ) ) +
( -2.835 / ( 1. - ( t / 31.57 ) ) );
v = ( 1.484 / ( 1. - ( t / ( 5.32 * 5.32 ) ) ) ) +
( -1.049 / ( 1. - ( t / 39.52 ) ) );
t1 = ( 1.303 / ( 1. - ( t / ( 5.32 * 5.32 ) ) ) ) +
( -0.954 / ( 1 - ( t / 38.28 ) ) );
t2 = 0.348 /
( 1. - ( t / 37.21 ) ); //0.349 caused a pole in T3 for q2 -> 0. 0.348 has correct behaviour
double t3tilde = ( 0.027 / ( 1. - ( t / 45.56 ) ) ) +
( 0.321 / ( 1. - ( t / 45.56 ) ) /
( 1. - ( t / 45.56 ) ) );
t3 = 0.0;
if ( fabs( t ) > 1e-10 ) {
t3 = ( m * m - md * md ) * ( t3tilde - t2 ) / t;
}
}
}
} else if ( daught == EvtPDL::getId( std::string( "K*+" ) ) ||
daught == EvtPDL::getId( std::string( "K*-" ) ) ||
daught == EvtPDL::getId( std::string( "K*0" ) ) ||
daught == EvtPDL::getId( std::string( "anti-K*0" ) ) ||
daught == EvtPDL::getId( std::string( "K_1+" ) ) ||
daught == EvtPDL::getId( std::string( "K_1-" ) )
) {
if ( model == 1 ) {
//this is Ali-Ball '01
a1 = 0.294 * exp( 0.656 * shat + 0.456 * shat2 );
a2 = 0.246 * exp( 1.237 * shat + 0.822 * shat2 );
a0 = 0.412 * exp( 1.543 * shat + 0.954 * shat2 );
v = 0.399 * exp( 1.537 * shat + 1.123 * shat2 );
t1 = 0.334 * exp( 1.575 * shat + 1.140 * shat2 );
t2 = 0.334 * exp( 0.562 * shat + 0.481 * shat2 );
t3 = 0.234 * exp( 1.230 * shat + 1.089 * shat2 );
}
if ( model == 2 ) {
//this is Ali-Ball '99
a1 = 0.337 * exp( 0.602 * shat + 0.258 * shat2 );
a2 = 0.282 * exp( 1.172 * shat + 0.567 * shat2 );
a0 = 0.471 * exp( 1.505 * shat + 0.710 * shat2 );
v = 0.457 * exp( 1.482 * shat + 1.015 * shat2 );
t1 = 0.379 * exp( 1.519 * shat + 1.030 * shat2 );
t2 = 0.379 * exp( 0.517 * shat + 0.426 * shat2 );
t3 = 0.260 * exp( 1.129 * shat + 1.128 * shat2 );
}
if ( model == 3 ) {
//QCD sum rules (Colangelo et al)
// JJH - Changed in accordance with erratum (Phys. Rev. D 57, 3186 (1998))
a1 = 0.37 * ( 1 - 0.023 * t );
a2 = 0.40 * ( 1 + 0.034 * t );
a0 = 0.3 / ( 1. - t / ( 4.8 * 4.8 ) );
v = 0.47 / ( 1. - t / ( 5.0 * 5.0 ) );
t1 = 0.19 / ( 1. - t / ( 5.3 * 5.3 ) );
t2 = 0.19 * ( 1. - 0.02 * t );
t3 = 0.3 * ( 1. + 0.01 * t );
}
if ( model == 4 ) {
// Quark model (Melikhov et al)
a1 = 1.6 / ( 1 - 0.0288 * t + 0.00028 * t * t );
a1 = a1 / ( m + md );
a2 = ( m + md ) * 0.036 / ( 1. - 0.053 * t + 0.00082 * t * t );
double aminus = 0.041 / ( 1. - 0.055 * t + 0.00088 * t * t );
double f = 1.60 / ( 1. - 0.0288 * t + 0.00028 * t * t );
double aplus = -0.036 / ( 1. - 0.053 * t + 0.00082 * t * t );
a0 = ( t * aminus + f + ( m * m - md * md ) * aplus ) / ( 2.0 * md );
v = ( m + md ) * 0.048 / ( 1. - 0.057 * t + 0.00085 * t * t );
t1 = 0.28 / ( 1. - 0.058 * t + 0.0009 * t * t );
double gplus = -0.28 / ( 1. - 0.058 * t + 0.0009 * t * t );
double gminus = 0.24 / ( 1. - 0.059 * t + 0.00096 * t * t );
t2 = -gplus - ( t * gminus ) / ( m * m - md * md );
double h = 0.0037 / ( 1. - 0.075 * t + 0.0016 * t * t );
t3 = ( m + md ) * ( m + md ) *
( ( gminus / ( m * m - md * md ) - h / 2. ) );
}
if ( model == 5 ) {
a1 = 0.337 / ( 1. - 0.60 * shat - 0.023 * shat * shat );
a2 = 0.283 / ( 1. - 1.18 * shat + 0.281 * shat * shat );
a0 = 0.470 / ( 1. - 1.55 * shat + 0.680 * shat * shat );
v = 0.458 / ( 1. - 1.55 * shat + 0.575 * shat * shat );
t1 = 0.379 / ( 1. - 1.59 * shat + 0.615 * shat * shat );
t2 = 0.379 / ( 1. - 0.49 * shat - 0.241 * shat * shat );
t3 = 0.261 / ( 1. - 1.20 * shat + 0.098 * shat * shat );
}
if ( model == 6 ) {
// Ball-Zwicky LCSR '05 (mb = 4.8)
a1 = 0.290 / ( 1. - ( t / 40.38 ) );
a2 = ( -0.084 / ( 1. - ( t / 52.00 ) ) ) +
( 0.342 / ( 1. - ( t / 52.00 ) ) / ( 1. - ( t / 52.00 ) ) );
a0 = ( 1.364 / ( 1. - ( t / ( 5.28 * 5.28 ) ) ) ) +
( -0.990 / ( 1. - ( t / 36.78 ) ) );
v = ( 0.923 / ( 1. - ( t / ( 5.32 * 5.32 ) ) ) ) +
( -0.511 / ( 1. - ( t / 49.40 ) ) );
t1 = ( 0.823 / ( 1. - ( t / ( 5.32 * 5.32 ) ) ) ) +
( -0.491 / ( 1 - ( t / 46.31 ) ) );
t2 = 0.332 /
( 1. - ( t / 41.41 ) ); //0.333 caused a pole in T3 for q2 -> 0. 0.332 has correct behaviour
double t3tilde = ( -0.036 / ( 1. - ( t / 48.10 ) ) ) +
( 0.368 / ( 1. - ( t / 48.10 ) ) /
( 1. - ( t / 48.10 ) ) );
t3 = 0.0;
if ( fabs( t ) > 1e-10 ) {
t3 = ( m * m - md * md ) * ( t3tilde - t2 ) / t;
}
}
if ( model == 8 ) {
// Khodjamirian et al. LCSR '10
double taup = ( 5.280 + 0.892 ) * ( 5.280 + 0.892 );
double taum = ( 5.280 - 0.892 ) * ( 5.280 - 0.892 );
double tau0 = taup - ( sqrt( taup - taum ) * sqrt( taup ) );
double z = ( sqrt( taup - t ) - sqrt( taup - tau0 ) ) /
( sqrt( taup - t ) + sqrt( taup - tau0 ) );
double z0 = ( sqrt( taup ) - sqrt( taup - tau0 ) ) /
( sqrt( taup ) + sqrt( taup - tau0 ) );
a1 = ( 0.25 / ( 1 - ( t / ( 5.829 * 5.829 ) ) ) ) *
( 1 + 0.34 * ( z - z0 + 0.5 * ( ( z * z ) - ( z0 * z0 ) ) ) );
a2 = ( 0.23 / ( 1 - ( t / ( 5.829 * 5.829 ) ) ) ) *
( 1 +
( -0.85 ) * ( z - z0 + 0.5 * ( ( z * z ) - ( z0 * z0 ) ) ) );
a0 = ( 0.29 / ( 1 - ( t / ( 5.366 * 5.366 ) ) ) ) *
( 1 +
( -18.2 ) * ( z - z0 + 0.5 * ( ( z * z ) - ( z0 * z0 ) ) ) );
v = ( 0.36 / ( 1 - ( t / ( 5.412 * 5.412 ) ) ) ) *
( 1 + ( -4.8 ) * ( z - z0 + 0.5 * ( ( z * z ) - ( z0 * z0 ) ) ) );
t1 = ( 0.31 / ( 1 - ( t / ( 5.412 * 5.412 ) ) ) ) *
( 1 + ( -4.6 ) * ( z - z0 + 0.5 * ( ( z * z ) - ( z0 * z0 ) ) ) );
t2 = ( 0.31 / ( 1 - ( t / ( 5.829 * 5.829 ) ) ) ) *
( 1 + ( -3.2 ) * ( z - z0 + 0.5 * ( ( z * z ) - ( z0 * z0 ) ) ) );
t3 = ( 0.22 / ( 1 - ( t / ( 5.829 * 5.829 ) ) ) ) *
( 1 +
( -10.3 ) * ( z - z0 + 0.5 * ( ( z * z ) - ( z0 * z0 ) ) ) );
}
} else if ( daught == EvtPDL::getId( std::string( "rho+" ) ) ||
daught == EvtPDL::getId( std::string( "rho-" ) ) ||
daught == EvtPDL::getId( std::string( "rho0" ) ) ) {
if ( model == 1 ) {
// B --> rho form factors
a1 = 0.261 / ( 1. - 0.29 * shat - 0.415 * shat * shat );
a2 = 0.223 / ( 1. - 0.93 * shat - 0.092 * shat * shat );
a0 = 0.372 / ( 1. - 1.40 * shat + 0.437 * shat * shat );
v = 0.338 / ( 1. - 1.37 * shat + 0.315 * shat * shat );
t1 = 0.285 / ( 1. - 1.41 * shat + 0.361 * shat * shat );
t2 = 0.285 / ( 1. - 0.28 * shat - 0.500 * shat * shat );
t3 = 0.202 / ( 1. - 1.06 * shat - 0.076 * shat * shat );
}
if ( model == 6 ) {
// Ball-Zwicky LCSR '05 (mb = 4.8)
a1 = 0.240 / ( 1. - ( t / 37.51 ) );
a2 = ( 0.009 / ( 1. - ( t / 40.82 ) ) ) +
( 0.212 / ( 1. - ( t / 40.82 ) ) / ( 1. - ( t / 40.82 ) ) );
a0 = ( 1.527 / ( 1. - ( t / ( 5.28 * 5.28 ) ) ) ) +
( -1.220 / ( 1. - ( t / 33.36 ) ) );
v = ( 1.045 / ( 1. - ( t / ( 5.32 * 5.32 ) ) ) ) +
( -0.721 / ( 1. - ( t / 38.34 ) ) );
t1 = ( 0.897 / ( 1. - ( t / ( 5.32 * 5.32 ) ) ) ) +
( -0.629 / ( 1 - ( t / 38.04 ) ) );
t2 = 0.268 /
( 1. - ( t / 38.59 ) ); // 0.267 caused pole in T3 for q2 -> 0. 0.268 has correct behaviour
double t3tilde = ( 0.022 / ( 1. - ( t / 40.88 ) ) ) +
( 0.246 / ( 1. - ( t / 40.88 ) ) /
( 1. - ( t / 40.88 ) ) );
t3 = 0.0;
if ( fabs( t ) > 1e-10 ) {
t3 = ( m * m - md * md ) * ( t3tilde - t2 ) / t;
}
}
} else if ( daught == EvtPDL::getId( std::string( "omega" ) ) ) {
if ( model == 1 ) {
// B --> rho form factors
a1 = 0.261 / ( 1. - 0.29 * shat - 0.415 * shat * shat );
a2 = 0.223 / ( 1. - 0.93 * shat - 0.092 * shat * shat );
a0 = 0.372 / ( 1. - 1.40 * shat + 0.437 * shat * shat );
v = 0.338 / ( 1. - 1.37 * shat + 0.315 * shat * shat );
t1 = 0.285 / ( 1. - 1.41 * shat + 0.361 * shat * shat );
t2 = 0.285 / ( 1. - 0.28 * shat - 0.500 * shat * shat );
t3 = 0.202 / ( 1. - 1.06 * shat - 0.076 * shat * shat );
}
if ( model == 6 ) {
// Ball-Zwicky LCSR '05 (mb = 4.8)
a1 = -0.217 / ( 1. - ( t / 37.01 ) );
a2 = ( 0.006 / ( 1. - ( t / 41.24 ) ) ) +
( 0.192 / ( 1. - ( t / 41.24 ) ) / ( 1. - ( t / 41.24 ) ) );
a0 = ( 1.321 / ( 1. - ( t / ( 5.28 * 5.28 ) ) ) ) +
( -1.040 / ( 1. - ( t / 34.47 ) ) );
v = ( 1.006 / ( 1. - ( t / ( 5.32 * 5.32 ) ) ) ) +
( -0.713 / ( 1. - ( t / 37.45 ) ) );
t1 = ( 0.865 / ( 1. - ( t / ( 5.32 * 5.32 ) ) ) ) +
( -0.622 / ( 1 - ( t / 37.19 ) ) );
t2 = 0.243 /
( 1. - ( t / 37.95 ) ); // 0.242 caused pole in T3 for q2 -> 0. 0.243 has correct behaviour
double t3tilde = ( 0.023 / ( 1. - ( t / 40.87 ) ) ) +
( 0.220 / ( 1. - ( t / 40.87 ) ) /
( 1. - ( t / 40.87 ) ) );
t3 = 0.0;
if ( fabs( t ) > 1e-10 ) {
t3 = ( m * m - md * md ) * ( t3tilde - t2 ) / t;
}
}
}
}
diff --git a/src/EvtGenModels/EvtbTosllMS.cpp b/src/EvtGenModels/EvtbTosllMS.cpp
index 3f0214c..8e4332f 100644
--- a/src/EvtGenModels/EvtbTosllMS.cpp
+++ b/src/EvtGenModels/EvtbTosllMS.cpp
@@ -1,185 +1,163 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech, UCSB
-//
-// Module: EvtbTosllMS.ccp
-//
-// Description:
-//
-// Modification history:
-//
-// N.Nikitin March 28, 2008 Module created
-// N.Nikitin May 20, 2008 Add B -> Pll channels
-// N.Nikitin June 04, 2008 Add CKM matrix elements
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtbTosllMS.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtbTosllAmpNew.hh"
#include "EvtGenModels/EvtbTosllMSFF.hh"
#include "EvtGenModels/EvtbTosllScalarAmpNew.hh"
#include "EvtGenModels/EvtbTosllVectorAmpNew.hh"
#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh"
#include <stdlib.h>
#include <string.h>
EvtbTosllMS::~EvtbTosllMS()
{
// if ( _wilscoeff ) delete _wilscoeff;
// if ( _msffmodel ) delete _msffmodel;
// if ( _calcamp ) delete _calcamp ;
delete _wilscoeff;
delete _msffmodel;
delete _calcamp;
}
// The module name specification
std::string EvtbTosllMS::getName()
{
return "BTOSLLMS";
}
// The implementation of the clone() method
EvtDecayBase* EvtbTosllMS::clone()
{
return new EvtbTosllMS;
}
// The inicialization of the decay model
//
// Tn the our model we have are following 4 arguments:
//
// mu - the scale parameter, GeV;
// Nf - number of "effective" flavors (for b-quark Nf=5);
// res_swch - resonant switching parametr:
// = 0 the resonant contribution switched OFF,
// = 1 the resonant contribution switched ON;
// ias - switching parametr for \alpha_s(M_Z) value:
// = 0 PDG 1sigma minimal alpha_s(M_Z),
// = 1 PDG average value alpha_s(M_Z),
// = 2 PDG 1sigma maximal alpha_s(M_Z).
// Wolfenstein parameterization for CKM matrix
// CKM_A, CKM_lambda, CKM_barrho, CKM_bareta
//
void EvtbTosllMS::init()
{
// check that there are 8 arguments
checkNArg( 8 );
// check that there are 3 daughteres
checkNDaug( 3 );
// We expect that the parent to be a scalar (B-meson)
// and the daughters to be K^*, l^+ and l^-
checkSpinParent( EvtSpinType::SCALAR );
// We expect that the first daughter is the K* == VECTOR
EvtSpinType::spintype mesontype = EvtPDL::getSpinType( getDaug( 0 ) );
if ( !( mesontype == EvtSpinType::VECTOR ||
mesontype == EvtSpinType::SCALAR ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtbTosllMS generator expected "
<< " a SCALAR or VECTOR 1st daughter, found:"
<< EvtPDL::name( getDaug( 0 ) ).c_str() << std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << std::endl;
::abort();
}
// We expect that the second and third daughters
// are the ell+ and ell- == DIRAC
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::DIRAC );
_msffmodel = new EvtbTosllMSFF();
_wilscoeff = new EvtbTosllWilsCoeffNLO();
if ( mesontype == EvtSpinType::VECTOR ) {
_calcamp = new EvtbTosllVectorAmpNew();
}
if ( mesontype == EvtSpinType::SCALAR ) {
_calcamp = new EvtbTosllScalarAmpNew();
}
}
// Set the maximum probability of the decay
// differencial distribution d^2\Gamma/d\hat s d\cos\theta
void EvtbTosllMS::initProbMax()
{
double mymaxprob = -10.0; // maximum of the probability
EvtId parnum, mesnum, l1num, l2num;
parnum = getParentId();
mesnum = getDaug( 0 );
l1num = getDaug( 1 );
l2num = getDaug( 2 );
// EvtSpinType::spintype mesontype=EvtPDL::getSpinType(getDaug(0));
double mu = getArg( 0 ); // the scale parameter
int Nf = (int)getArg( 1 ); // number of "effective" flavors
int res_swch = (int)getArg( 2 ); // resonant switching parametr
int ias = (int)getArg( 3 ); // switching parametr for \alpha_s(M_Z)
double CKM_A = getArg( 4 );
double CKM_lambda = getArg( 5 );
double CKM_barrho = getArg( 6 );
double CKM_bareta = getArg( 7 );
mymaxprob = _calcamp->CalcMaxProb( parnum, mesnum, l1num, l2num, _msffmodel,
_wilscoeff, mu, Nf, res_swch, ias, CKM_A,
CKM_lambda, CKM_barrho, CKM_bareta );
if ( mymaxprob <= 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The function void EvtbTosllMS::initProbMax()"
<< "\n Unexpected value of the probability maximum!"
<< "\n mymaxprob = " << mymaxprob << std::endl;
::abort();
}
setProbMax( mymaxprob );
}
void EvtbTosllMS::decay( EvtParticle* p )
{
double mu = getArg( 0 ); // the scale parameter
int Nf = (int)getArg( 1 ); // number of "effective" flavors
int res_swch = (int)getArg( 2 ); // resonant switching parametr
int ias = (int)getArg( 3 ); // switching parametr for \alpha_s(M_Z)
double CKM_A = getArg( 4 );
double CKM_lambda = getArg( 5 );
double CKM_barrho = getArg( 6 );
double CKM_bareta = getArg( 7 );
p->initializePhaseSpace( getNDaug(), getDaugs() );
// The class "EvtbTosllVectorAmpNew" is the derived class of the
// class "EvtbTosllAmpNew" (see the file "EvtbTosllVectorAmpNew.hh")
// and
// the class "EvtbTosllMSFF" is the derived class of the
// class "EvtbTosllFFNew" (see the file "EvtbTosllMSFF.hh")
_calcamp->CalcAmp( p, _amp2, _msffmodel, _wilscoeff, mu, Nf, res_swch, ias,
CKM_A, CKM_lambda, CKM_barrho, CKM_bareta );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n The function EvtbTosllMS::decay(...) passed with arguments:"
// << "\n mu = " << mu << " Nf =" << Nf
// << " res_swch = " << res_swch
// << " ias = " << ias
// << " CKM_A = " << CKM_A
// << " CKM_lambda = " << CKM_lambda
// << " CKM_barrho = " << CKM_barrho
// << " CKM_bareta = " << CKM_bareta << std::endl;
}
diff --git a/src/EvtGenModels/EvtbTosllMSExt.cpp b/src/EvtGenModels/EvtbTosllMSExt.cpp
index 828a64e..b8c217e 100644
--- a/src/EvtGenModels/EvtbTosllMSExt.cpp
+++ b/src/EvtGenModels/EvtbTosllMSExt.cpp
@@ -1,198 +1,177 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech, UCSB
-//
-// Module: EvtbTosllMSExt.ccp
-//
-// Description:
-//
-// Modification history:
-//
-// N.Nikitin July 07, 2011 Module created
-// N.Nikitin July 07, 2011 Include the nonstandart models simuliakr
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtbTosllMSExt.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtbTosllAmpNewExt.hh"
#include "EvtGenModels/EvtbTosllMSFF.hh"
#include "EvtGenModels/EvtbTosllScalarAmpNewExt.hh"
#include "EvtGenModels/EvtbTosllVectorAmpNewExt.hh"
#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh"
#include <stdlib.h>
#include <string.h>
EvtbTosllMSExt::~EvtbTosllMSExt()
{
delete _msffmodel;
if ( _calcamp )
delete _calcamp;
}
// The module name specification
std::string EvtbTosllMSExt::getName()
{
return "BTOSLLMSEXT";
}
// The implementation of the clone() method
EvtDecayBase* EvtbTosllMSExt::clone()
{
return new EvtbTosllMSExt;
}
// The inicialization of the decay model
//
// Tn the our model we have are following 4 arguments:
//
// mu - the scale parameter, GeV;
// Nf - number of "effective" flavors (for b-quark Nf=5);
// res_swch - resonant switching parametr:
// = 0 the resonant contribution switched OFF,
// = 1 the resonant contribution switched ON;
// ias - switching parametr for \alpha_s(M_Z) value:
// = 0 PDG 1sigma minimal alpha_s(M_Z),
// = 1 PDG average value alpha_s(M_Z),
// = 2 PDG 1sigma maximal alpha_s(M_Z).
// Wolfenstein parameterization for CKM matrix
// CKM_A, CKM_lambda, CKM_barrho, CKM_bareta
// Complex multiplication coefficients
// A7 = ReA7 + i*ImA7
// A10 = ReA10 + i*ImA10
//
void EvtbTosllMSExt::init()
{
// check that there are 12 arguments
checkNArg( 12 );
// check that there are 3 daughteres
checkNDaug( 3 );
// We expect that the parent to be a scalar (B-meson)
// and the daughters to be K^*, l^+ and l^-
checkSpinParent( EvtSpinType::SCALAR );
// We expect that the first daughter is the K* == VECTOR
EvtSpinType::spintype mesontype = EvtPDL::getSpinType( getDaug( 0 ) );
if ( !( mesontype == EvtSpinType::VECTOR ||
mesontype == EvtSpinType::SCALAR ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "EvtbTosllMSExt generator expected "
<< " a SCALAR or VECTOR 1st daughter, found:"
<< EvtPDL::name( getDaug( 0 ) ).c_str() << std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << std::endl;
::abort();
}
// We expect that the second and third daughters
// are the ell+ and ell- == DIRAC
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::DIRAC );
_msffmodel = new EvtbTosllMSFF();
_wilscoeff = new EvtbTosllWilsCoeffNLO();
if ( mesontype == EvtSpinType::VECTOR ) {
_calcamp = new EvtbTosllVectorAmpNewExt();
}
if ( mesontype == EvtSpinType::SCALAR ) {
_calcamp = new EvtbTosllScalarAmpNewExt();
}
}
// Set the maximum probability of the decay
// differencial distribution d^2\Gamma/d\hat s d\cos\theta
void EvtbTosllMSExt::initProbMax()
{
double mymaxprob = -10.0; // maximum of the probability
EvtId parnum, mesnum, l1num, l2num;
parnum = getParentId();
mesnum = getDaug( 0 );
l1num = getDaug( 1 );
l2num = getDaug( 2 );
// EvtSpinType::spintype mesontype=EvtPDL::getSpinType(getDaug(0));
double mu = getArg( 0 ); // the scale parameter
int Nf = (int)getArg( 1 ); // number of "effective" flavors
int res_swch = (int)getArg( 2 ); // resonant switching parametr
int ias = (int)getArg( 3 ); // switching parametr for \alpha_s(M_Z)
double CKM_A = getArg( 4 );
double CKM_lambda = getArg( 5 );
double CKM_barrho = getArg( 6 );
double CKM_bareta = getArg( 7 );
double ReA7 = getArg( 8 );
double ImA7 = getArg( 9 );
double ReA10 = getArg( 10 );
double ImA10 = getArg( 11 );
mymaxprob = _calcamp->CalcMaxProb( parnum, mesnum, l1num, l2num, _msffmodel,
_wilscoeff, mu, Nf, res_swch, ias, CKM_A,
CKM_lambda, CKM_barrho, CKM_bareta, ReA7,
ImA7, ReA10, ImA10 );
if ( mymaxprob <= 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The function void EvtbTosllMSExt::initProbMax()"
<< "\n Unexpected value of the probability maximum!"
<< "\n mymaxprob = " << mymaxprob << std::endl;
::abort();
}
setProbMax( mymaxprob );
}
void EvtbTosllMSExt::decay( EvtParticle* p )
{
double mu = getArg( 0 ); // the scale parameter
int Nf = (int)getArg( 1 ); // number of "effective" flavors
int res_swch = (int)getArg( 2 ); // resonant switching parametr
int ias = (int)getArg( 3 ); // switching parametr for \alpha_s(M_Z)
double CKM_A = getArg( 4 );
double CKM_lambda = getArg( 5 );
double CKM_barrho = getArg( 6 );
double CKM_bareta = getArg( 7 );
double ReA7 = getArg( 8 );
double ImA7 = getArg( 9 );
double ReA10 = getArg( 10 );
double ImA10 = getArg( 11 );
p->initializePhaseSpace( getNDaug(), getDaugs() );
// The class "EvtbTosllVectorAmpNewExt" is the derived class of the
// class "EvtbTosllAmpNewExt" (see the file "EvtbTosllVectorAmpNewExt.hh")
// and
// the class "EvtbTosllMSFF" is the derived class of the
// class "EvtbTosllFFNew" (see the file "EvtbTosllMSFF.hh")
_calcamp->CalcAmp( p, _amp2, _msffmodel, _wilscoeff, mu, Nf, res_swch, ias,
CKM_A, CKM_lambda, CKM_barrho, CKM_bareta, ReA7, ImA7,
ReA10, ImA10 );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n The function EvtbTosllMSExt::decay(...) passed with arguments:"
// << "\n mu = " << mu << " Nf =" << Nf
// << " res_swch = " << res_swch
// << " ias = " << ias
// << " CKM_A = " << CKM_A
// << " CKM_lambda = " << CKM_lambda
// << " CKM_barrho = " << CKM_barrho
// << " CKM_bareta = " << CKM_bareta
// << " ReA7 = " << ReA7
// << " ImA7 = " << ImA7
// << " ReA10 = " << ReA10
// << " ImA10 = " << ImA10 << std::endl;
}
diff --git a/src/EvtGenModels/EvtbTosllMSFF.cpp b/src/EvtGenModels/EvtbTosllMSFF.cpp
index 286cd08..6422863 100644
--- a/src/EvtGenModels/EvtbTosllMSFF.cpp
+++ b/src/EvtGenModels/EvtbTosllMSFF.cpp
@@ -1,663 +1,635 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtbTosllMSFF.cpp
-// Description: Form factors for B -> (P, V) ell^+ ell^- transitions according
-// to the paper: D.Melikhov, B.Stech, PRD62, 014006 (2000).
-//
-// Modification history:
-//
-// N.Nikitin (nnikit@mail.cern.ch) March 13, 2008 Module created
-// N.Nikitin (nnikit@mail.cern.ch) March 27, 2008 add \bar B -> \bar (K,K^*) transition ff
-// N.Nikitin (nnikit@mail.cern.ch) April 26, 2008 add \bar Bs -> phi transition ff
-// N.Nikitin (nnikit@mail.cern.ch) April 26, 2008 add \bar Bs -> K* transition ff
-// N.Nikitin (nnikit@mail.cern.ch) April 27, 2008 add \bar B -> \bar rho transition ff
-// N.Nikitin (nnikit@mail.cern.ch) Nvmbr 04, 2011 add \bar B -> omega transition ff
-// N.Nikitin (nnikit@mail.cern.ch) Dec 16, 2011 add \bar B -> \bar K_1(1270) transition ff (from H.Hatanaka and Kwei-Chou Yang, PRD78, 074007 (2008))
-// N.Nikitin (nnikit@mail.cern.ch) Dec 16, 2011 add \bar B -> \bar K_1(1400) transition ff (from H.Hatanaka and Kwei-Chou Yang, PRD78, 074007 (2008))
-// N.Nikitin (nnikit@mail.cern.ch) May 11, 2012 add \bar Bs -> f_0(980) transition ff with NLO corrections from Table II (see P.Colangelo et al., PRD81, 074001 (2010))
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/EvtbTosllMSFF.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include <cmath>
#include <cstdlib>
EvtbTosllMSFF::EvtbTosllMSFF()
{
}
double EvtbTosllMSFF::equation9_10( double ff0, double M2, double q2,
double sigma1, double sigma2, int eq_num )
{
double ff = 1.0;
switch ( eq_num ) {
case 9:
ff = 1. / ( 1. - q2 / M2 );
[[fallthrough]];
case 10:
ff = ff * ff0 /
( 1. - sigma1 * q2 / M2 + sigma2 * pow( q2, 2 ) / pow( M2, 2 ) );
break;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "In the function EvtbTosllMSFF::equation9_10 \n"
<< "the parameter eq_num non equal to the 9 or 10! \n"
<< "eq_num =" << eq_num << std::endl;
::abort();
}
return ff;
}
void EvtbTosllMSFF::getScalarFF( EvtId parent, EvtId daught, double t,
double& fp, double& f0, double& ft )
{
int models_counter = 0; // counter of the accepted models
// B -> K transition form factors
if ( ( parent == EvtPDL::getId( std::string( "B+" ) ) &&
daught == EvtPDL::getId( std::string( "K+" ) ) ) ||
( parent == EvtPDL::getId( std::string( "B-" ) ) &&
daught == EvtPDL::getId( std::string( "K-" ) ) ) ||
( parent == EvtPDL::getId( std::string( "B0" ) ) &&
daught == EvtPDL::getId( std::string( "K0" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
daught == EvtPDL::getId( std::string( "anti-K0" ) ) ) ||
( parent == EvtPDL::getId( std::string( "B0" ) ) &&
daught == EvtPDL::getId( std::string( "K_S0" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
daught == EvtPDL::getId( std::string( "K_S0" ) ) ) ||
( parent == EvtPDL::getId( std::string( "B0" ) ) &&
daught == EvtPDL::getId( std::string( "K_L0" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
daught == EvtPDL::getId( std::string( "K_L0" ) ) ) ) {
double ff0[] = {0.36, 0.36, 0.35};
double sigma1[] = {0.43, 0.70, 0.43};
double sigma2[] = {0.00, 0.27, 0.00};
int eq_num[] = {9, 10, 9};
double M_P2 = 5.37 * 5.37; // GeV^2 for B^0_s - meson
double M_V2 = 5.42 * 5.42; // GeV^2 for B^*_s - meson
fp = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
f0 = equation9_10( ff0[1], M_V2, t, sigma1[1], sigma2[1], eq_num[1] );
ft = equation9_10( ff0[2], M_P2, t, sigma1[2], sigma2[2], eq_num[2] );
models_counter = models_counter + 1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n B -> K transition form factors"
// << std::endl;
}
// B -> \pi transition form factors
if ( ( parent == EvtPDL::getId( std::string( "B+" ) ) &&
daught == EvtPDL::getId( std::string( "pi+" ) ) ) ||
( parent == EvtPDL::getId( std::string( "B-" ) ) &&
daught == EvtPDL::getId( std::string( "pi-" ) ) ) ||
( parent == EvtPDL::getId( std::string( "B0" ) ) &&
daught == EvtPDL::getId( std::string( "pi0" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
daught == EvtPDL::getId( std::string( "pi0" ) ) ) ) {
double ff0[] = {0.29, 0.29, 0.28};
double sigma1[] = {0.48, 0.76, 0.48};
double sigma2[] = {0.00, 0.28, 0.00};
int eq_num[] = {9, 10, 9};
double M_P2 = 5.27 * 5.27; // GeV^2 for B^0 - meson
double M_V2 = 5.32 * 5.32; // GeV^2 for B^* - meson
fp = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
f0 = equation9_10( ff0[1], M_V2, t, sigma1[1], sigma2[1], eq_num[1] );
ft = equation9_10( ff0[2], M_P2, t, sigma1[2], sigma2[2], eq_num[2] );
models_counter = models_counter + 1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n B -> pi transition form factors"
// << std::endl;
}
// B_d -> \eta transition form factors
if ( ( parent == EvtPDL::getId( std::string( "B0" ) ) &&
daught == EvtPDL::getId( std::string( "eta" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
daught == EvtPDL::getId( std::string( "eta" ) ) ) ) {
double ff0[] = {0.36, 0.36, 0.36};
double sigma1[] = {0.60, 0.80, 0.58};
double sigma2[] = {0.20, 0.40, 0.18};
int eq_num[] = {9, 10, 9};
double M_P2 = 5.27 * 5.27; // GeV^2 for B_d^0 - meson
double M_V2 = 5.32 * 5.32; // GeV^2 for B_d^* - meson
fp = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
fp = -0.5 * fp;
f0 = equation9_10( ff0[1], M_V2, t, sigma1[1], sigma2[1], eq_num[1] );
f0 = -0.5 * f0;
ft = equation9_10( ff0[2], M_P2, t, sigma1[2], sigma2[2], eq_num[2] );
ft = -0.5 * ft;
models_counter = models_counter + 1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n Bd -> eta transition form factors"
// << std::endl;
}
// B_d -> \eta' transition form factors
if ( ( parent == EvtPDL::getId( std::string( "B0" ) ) &&
daught == EvtPDL::getId( std::string( "eta'" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
daught == EvtPDL::getId( std::string( "eta'" ) ) ) ) {
double ff0[] = {0.36, 0.36, 0.39};
double sigma1[] = {0.60, 0.80, 0.58};
double sigma2[] = {0.20, 0.45, 0.18};
int eq_num[] = {9, 10, 9};
double M_P2 = 5.27 * 5.27; // GeV^2 for B_d^0 - meson
double M_V2 = 5.32 * 5.32; // GeV^2 for B_d^* - meson
fp = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
f0 = equation9_10( ff0[1], M_V2, t, sigma1[1], sigma2[1], eq_num[1] );
ft = equation9_10( ff0[2], M_P2, t, sigma1[2], sigma2[2], eq_num[2] );
models_counter = models_counter + 1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n Bd -> eta transition form factors"
// << std::endl;
}
// B_s -> \eta transition form factors
if ( ( parent == EvtPDL::getId( std::string( "B_s0" ) ) &&
daught == EvtPDL::getId( std::string( "eta" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
daught == EvtPDL::getId( std::string( "eta" ) ) ) ) {
double ff0[] = {0.36, 0.36, 0.36};
double sigma1[] = {0.60, 0.80, 0.58};
double sigma2[] = {0.20, 0.40, 0.18};
int eq_num[] = {9, 10, 9};
double M_P2 = 5.37 * 5.37; // GeV^2 for B_s^0 - meson
double M_V2 = 5.42 * 5.42; // GeV^2 for B_s^* - meson
fp = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
f0 = equation9_10( ff0[1], M_V2, t, sigma1[1], sigma2[1], eq_num[1] );
ft = equation9_10( ff0[2], M_P2, t, sigma1[2], sigma2[2], eq_num[2] );
models_counter = models_counter + 1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n Bs -> eta transition form factors"
// << std::endl;
}
// B_s -> \eta' transition form factors
if ( ( parent == EvtPDL::getId( std::string( "B_s0" ) ) &&
daught == EvtPDL::getId( std::string( "eta'" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
daught == EvtPDL::getId( std::string( "eta'" ) ) ) ) {
double ff0[] = {0.36, 0.36, 0.39};
double sigma1[] = {0.60, 0.80, 0.58};
double sigma2[] = {0.20, 0.45, 0.18};
int eq_num[] = {9, 10, 9};
double M_P2 = 5.37 * 5.37; // GeV^2 for B_s^0 - meson
double M_V2 = 5.42 * 5.42; // GeV^2 for B_s^* - meson
fp = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
f0 = equation9_10( ff0[1], M_V2, t, sigma1[1], sigma2[1], eq_num[1] );
ft = equation9_10( ff0[2], M_P2, t, sigma1[2], sigma2[2], eq_num[2] );
models_counter = models_counter + 1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n Bs -> eta transition form factors"
// << std::endl;
}
// B_s -> f_0(980) transition form factors
if ( ( parent == EvtPDL::getId( std::string( "B_s0" ) ) &&
daught == EvtPDL::getId( std::string( "f_0" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
daught == EvtPDL::getId( std::string( "f_0" ) ) ) ) {
double ff0[] = {0.238, 0.238, 0.308};
double sigma1[] = {1.50, 0.53, 1.46};
double sigma2[] = {0.58, -0.36, 0.58};
int eq_num[] = {10, 10, 10};
double M_P2 = 5.366 * 5.366; // GeV^2 for B_s^0 - meson
fp = 0.0 -
equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
f0 = 0.0 -
equation9_10( ff0[1], M_P2, t, sigma1[1], sigma2[1], eq_num[1] );
ft = equation9_10( ff0[2], M_P2, t, sigma1[2], sigma2[2], eq_num[2] );
models_counter = models_counter + 1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n Bs -> eta transition form factors"
// << std::endl;
}
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n models_counter = " << models_counter
// << "\n Scalar form-factors at q^2 = " << t
// << " for B -> P transition:"
// << "\n fp = " << fp
// << "\n f0 = " << f0
// << "\n ft = " << ft << std::endl;
if ( models_counter != 1 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n In the function EvtbTosllMSFF::getScalarFF(...) \n"
<< "the parameter models_counter not equal 1! \n"
<< "models_counter = " << models_counter << std::endl;
::abort();
}
}
void EvtbTosllMSFF::getVectorFF( EvtId parent, EvtId daught, double t,
double& a1, double& a2, double& a0, double& v,
double& t1, double& t2, double& t3 )
{
int models_counter = 0; // counter of the accepted models
double thetaK = -34.0 * 3.14159 / 180; // K_1(1270) - K_1(1400) mixing angle
// \bar B -> \bar K* transition form factors
if ( ( parent == EvtPDL::getId( std::string( "B+" ) ) &&
daught == EvtPDL::getId( std::string( "K*+" ) ) ) ||
( parent == EvtPDL::getId( std::string( "B-" ) ) &&
daught == EvtPDL::getId( std::string( "K*-" ) ) ) ||
( parent == EvtPDL::getId( std::string( "B0" ) ) &&
daught == EvtPDL::getId( std::string( "K*0" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
daught == EvtPDL::getId( std::string( "anti-K*0" ) ) ) ) {
double ff0[] = {0.44, 0.45, 0.36, 0.32, 0.39, 0.39, 0.27};
double sigma1[] = {0.45, 0.46, 0.64, 1.23, 0.45, 0.72, 1.31};
double sigma2[] = {0.00, 0.00, 0.36, 0.38, 0.00, 0.62, 0.41};
int eq_num[] = {9, 9, 10, 10, 9, 10, 10};
double M_P2 = 5.37 * 5.37; // GeV^2 for B^0_s - meson
double M_V2 = 5.42 * 5.42; // GeV^2 for B^*_s - meson
v = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
a0 = equation9_10( ff0[1], M_P2, t, sigma1[1], sigma2[1], eq_num[1] );
a1 = equation9_10( ff0[2], M_V2, t, sigma1[2], sigma2[2], eq_num[2] );
a2 = equation9_10( ff0[3], M_V2, t, sigma1[3], sigma2[3], eq_num[3] );
t1 = equation9_10( ff0[4], M_P2, t, sigma1[4], sigma2[4], eq_num[4] );
t2 = equation9_10( ff0[5], M_V2, t, sigma1[5], sigma2[5], eq_num[5] );
t3 = equation9_10( ff0[6], M_V2, t, sigma1[6], sigma2[6], eq_num[6] );
models_counter = models_counter + 1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n barB -> barK* transition form factors"
// << std::endl;
}
// \bar B -> \bar\rho transition form factors
if ( ( parent == EvtPDL::getId( std::string( "B+" ) ) &&
daught == EvtPDL::getId( std::string( "rho+" ) ) ) ||
( parent == EvtPDL::getId( std::string( "B-" ) ) &&
daught == EvtPDL::getId( std::string( "rho-" ) ) ) ||
( parent == EvtPDL::getId( std::string( "B0" ) ) &&
daught == EvtPDL::getId( std::string( "rho0" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
daught == EvtPDL::getId( std::string( "rho0" ) ) ) ) {
double ff0[] = {0.31, 0.30, 0.26, 0.24, 0.27, 0.27, 0.19};
double sigma1[] = {0.59, 0.54, 0.73, 1.40, 0.60, 0.74, 1.42};
double sigma2[] = {0.00, 0.00, 0.10, 0.50, 0.00, 0.19, 0.51};
int eq_num[] = {9, 9, 10, 10, 9, 10, 10};
double M_P2 = 5.27 * 5.27; // GeV^2 for B - meson
double M_V2 = 5.32 * 5.32; // GeV^2 for B^* - meson
v = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
a0 = equation9_10( ff0[1], M_P2, t, sigma1[1], sigma2[1], eq_num[1] );
a1 = equation9_10( ff0[2], M_V2, t, sigma1[2], sigma2[2], eq_num[2] );
a2 = equation9_10( ff0[3], M_V2, t, sigma1[3], sigma2[3], eq_num[3] );
t1 = equation9_10( ff0[4], M_P2, t, sigma1[4], sigma2[4], eq_num[4] );
t2 = equation9_10( ff0[5], M_V2, t, sigma1[5], sigma2[5], eq_num[5] );
t3 = equation9_10( ff0[6], M_V2, t, sigma1[6], sigma2[6], eq_num[6] );
models_counter = models_counter + 1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n barB -> bar rho transition form factors"
// << std::endl;
}
// \bar B -> \omega transition form factors (exactly as for \bar B -> \rho^0 ff!)
if ( ( parent == EvtPDL::getId( std::string( "B0" ) ) &&
daught == EvtPDL::getId( std::string( "omega" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
daught == EvtPDL::getId( std::string( "omega" ) ) ) ) {
double ff0[] = {0.31, 0.30, 0.26, 0.24, 0.27, 0.27, 0.19};
double sigma1[] = {0.59, 0.54, 0.73, 1.40, 0.60, 0.74, 1.42};
double sigma2[] = {0.00, 0.00, 0.10, 0.50, 0.00, 0.19, 0.51};
int eq_num[] = {9, 9, 10, 10, 9, 10, 10};
double M_P2 = 5.27 * 5.27; // GeV^2 for B - meson
double M_V2 = 5.32 * 5.32; // GeV^2 for B^* - meson
v = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
a0 = equation9_10( ff0[1], M_P2, t, sigma1[1], sigma2[1], eq_num[1] );
a1 = equation9_10( ff0[2], M_V2, t, sigma1[2], sigma2[2], eq_num[2] );
a2 = equation9_10( ff0[3], M_V2, t, sigma1[3], sigma2[3], eq_num[3] );
t1 = equation9_10( ff0[4], M_P2, t, sigma1[4], sigma2[4], eq_num[4] );
t2 = equation9_10( ff0[5], M_V2, t, sigma1[5], sigma2[5], eq_num[5] );
t3 = equation9_10( ff0[6], M_V2, t, sigma1[6], sigma2[6], eq_num[6] );
models_counter = models_counter + 1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n barB -> omega transition form factors"
// << std::endl;
}
// \bar Bs -> phi transition form factors
if ( ( parent == EvtPDL::getId( std::string( "B_s0" ) ) &&
daught == EvtPDL::getId( std::string( "phi" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
daught == EvtPDL::getId( std::string( "phi" ) ) ) ) {
double ff0[] = {0.44, 0.42, 0.34, 0.31, 0.38, 0.38, 0.26};
double sigma1[] = {0.62, 0.55, 0.73, 1.30, 0.62, 0.83, 1.41};
double sigma2[] = {0.20, 0.12, 0.42, 0.52, 0.20, 0.71, 0.57};
int eq_num[] = {9, 9, 10, 10, 9, 10, 10};
double M_P2 = 5.37 * 5.37; // GeV^2 for B^0_s - meson
double M_V2 = 5.42 * 5.42; // GeV^2 for B^*_s - meson
v = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
a0 = equation9_10( ff0[1], M_P2, t, sigma1[1], sigma2[1], eq_num[1] );
a1 = equation9_10( ff0[2], M_V2, t, sigma1[2], sigma2[2], eq_num[2] );
a2 = equation9_10( ff0[3], M_V2, t, sigma1[3], sigma2[3], eq_num[3] );
t1 = equation9_10( ff0[4], M_P2, t, sigma1[4], sigma2[4], eq_num[4] );
t2 = equation9_10( ff0[5], M_V2, t, sigma1[5], sigma2[5], eq_num[5] );
t3 = equation9_10( ff0[6], M_V2, t, sigma1[6], sigma2[6], eq_num[6] );
models_counter = models_counter + 1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n barBs -> phi transition form factors"
// << std::endl;
}
// \bar Bs -> K* (without \bar !) transition form factors
if ( ( parent == EvtPDL::getId( std::string( "B_s0" ) ) &&
daught == EvtPDL::getId( std::string( "anti-K*0" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
daught == EvtPDL::getId( std::string( "K*0" ) ) ) ) {
double ff0[] = {0.38, 0.37, 0.29, 0.26, 0.32, 0.32, 0.23};
double sigma1[] = {0.66, 0.60, 0.86, 1.32, 0.66, 0.98, 1.42};
double sigma2[] = {0.30, 0.16, 0.60, 0.54, 0.31, 0.90, 0.62};
int eq_num[] = {9, 9, 10, 10, 9, 10, 10};
double M_P2 = 5.27 * 5.27; // GeV^2 for B - meson
double M_V2 = 5.32 * 5.32; // GeV^2 for B^* - meson
v = equation9_10( ff0[0], M_P2, t, sigma1[0], sigma2[0], eq_num[0] );
a0 = equation9_10( ff0[1], M_P2, t, sigma1[1], sigma2[1], eq_num[1] );
a1 = equation9_10( ff0[2], M_V2, t, sigma1[2], sigma2[2], eq_num[2] );
a2 = equation9_10( ff0[3], M_V2, t, sigma1[3], sigma2[3], eq_num[3] );
t1 = equation9_10( ff0[4], M_P2, t, sigma1[4], sigma2[4], eq_num[4] );
t2 = equation9_10( ff0[5], M_V2, t, sigma1[5], sigma2[5], eq_num[5] );
t3 = equation9_10( ff0[6], M_V2, t, sigma1[6], sigma2[6], eq_num[6] );
models_counter = models_counter + 1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n barBs -> K* transition form factors"
// << std::endl;
}
// \bar B -> \bar K_1(1270) transition form factors
// See the paper: H.Hatanaka and Kwei-Chou Yang, PRD78, 074007 (2008)
if ( ( parent == EvtPDL::getId( std::string( "B+" ) ) &&
daught == EvtPDL::getId( std::string( "K_1+" ) ) ) ||
( parent == EvtPDL::getId( std::string( "B-" ) ) &&
daught == EvtPDL::getId( std::string( "K_1-" ) ) ) ||
( parent == EvtPDL::getId( std::string( "B0" ) ) &&
daught == EvtPDL::getId( std::string( "K_10" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
daught == EvtPDL::getId( std::string( "anti-K_10" ) ) ) ) {
double ff0A[] = {0.450, 0.340, 0.41, 0.22, 0.31, 0.310, 0.28};
double sigma1A[] = {1.600, 0.635, 1.51, 2.40, 2.01, 0.629, 1.36};
double sigma2A[] = {0.974, 0.211, 1.18, 1.78, 1.50, 0.387, 0.72};
double ff0B[] = {-0.37, -0.29, -0.17, -0.45, -0.25, -0.250, -0.11};
double sigma1B[] = {1.72, 0.729, 0.919, 1.34, 1.59, 0.378, -1.61};
double sigma2B[] = {0.912, 0.074, 0.855, 0.69, 0.79, -0.755, 10.2};
int eq_num[] = {10, 10, 10, 10, 10, 10, 10};
double MM2 = 5.279 * 5.279; // GeV^2
double MB = 5.279; // GeV
double MK1 = 1.272; // GeV
double MK1A = 1.31; // GeV
double MK1B = 1.34; // GeV
double sinK = sin( thetaK ); // sin(-34^o)
double cosK = cos( thetaK ); // cos(-34^o)
double a, v0, v1, v2;
a = sinK *
equation9_10( ff0A[0], MM2, t, sigma1A[0], sigma2A[0], eq_num[0] ) *
( MB + MK1 ) / ( MB + MK1A );
a = a + cosK *
equation9_10( ff0B[0], MM2, t, sigma1B[0], sigma2B[0],
eq_num[0] ) *
( MB + MK1 ) / ( MB + MK1B );
v0 = sinK *
equation9_10( ff0A[1], MM2, t, sigma1A[1], sigma2A[1], eq_num[1] ) *
MK1A / MK1;
v0 = v0 + cosK *
equation9_10( ff0B[1], MM2, t, sigma1B[1], sigma2B[1],
eq_num[1] ) *
MK1B / MK1;
v1 = sinK *
equation9_10( ff0A[2], MM2, t, sigma1A[2], sigma2A[2], eq_num[2] ) *
( MB + MK1A ) / ( MB + MK1 );
v1 = v1 + cosK *
equation9_10( ff0B[2], MM2, t, sigma1B[2], sigma2B[2],
eq_num[2] ) *
( MB + MK1B ) / ( MB + MK1 );
v2 = sinK *
equation9_10( ff0A[3], MM2, t, sigma1A[3], sigma2A[3], eq_num[3] ) *
( MB + MK1 ) / ( MB + MK1A );
v2 = v2 + cosK *
equation9_10( ff0B[3], MM2, t, sigma1B[3], sigma2B[3],
eq_num[3] ) *
( MB + MK1 ) / ( MB + MK1B );
v = a;
a0 = v0;
a1 = v1;
a2 = v2;
t1 = sinK *
equation9_10( ff0A[4], MM2, t, sigma1A[4], sigma2A[4], eq_num[4] );
t1 = t1 + cosK * equation9_10( ff0B[4], MM2, t, sigma1B[4], sigma2B[4],
eq_num[4] );
t2 = sinK *
equation9_10( ff0A[5], MM2, t, sigma1A[5], sigma2A[5], eq_num[5] ) *
( MB * MB - MK1A * MK1A ) / ( MB * MB - MK1 * MK1 );
t2 = t2 + cosK *
equation9_10( ff0B[5], MM2, t, sigma1B[5], sigma2B[5],
eq_num[5] ) *
( MB * MB - MK1B * MK1B ) / ( MB * MB - MK1 * MK1 );
t3 = sinK *
equation9_10( ff0A[6], MM2, t, sigma1A[6], sigma2A[6], eq_num[6] );
t3 = t3 + cosK * equation9_10( ff0B[6], MM2, t, sigma1B[6], sigma2B[6],
eq_num[6] );
models_counter = models_counter + 1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n barB -> bar K_1(1270) transition form factors"
// << std::endl;
}
// \bar B -> \bar K_1(1400) transition form factors
// See the paper: H.Hatanaka and Kwei-Chou Yang, PRD78, 074007 (2008)
if ( ( parent == EvtPDL::getId( std::string( "B+" ) ) &&
daught == EvtPDL::getId( std::string( "K'_1+" ) ) ) ||
( parent == EvtPDL::getId( std::string( "B-" ) ) &&
daught == EvtPDL::getId( std::string( "K'_1-" ) ) ) ||
( parent == EvtPDL::getId( std::string( "B0" ) ) &&
daught == EvtPDL::getId( std::string( "K'_10" ) ) ) ||
( parent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
daught == EvtPDL::getId( std::string( "anti-K'_10" ) ) ) ) {
double ff0A[] = {0.450, 0.340, 0.41, 0.22, 0.31, 0.310, 0.28};
double sigma1A[] = {1.600, 0.635, 1.51, 2.40, 2.01, 0.629, 1.36};
double sigma2A[] = {0.974, 0.211, 1.18, 1.78, 1.50, 0.387, 0.72};
double ff0B[] = {-0.37, -0.29, -0.17, -0.45, -0.25, -0.250, -0.11};
double sigma1B[] = {1.72, 0.729, 0.919, 1.34, 1.59, 0.378, -1.61};
double sigma2B[] = {0.912, 0.074, 0.855, 0.69, 0.79, -0.755, 10.2};
int eq_num[] = {10, 10, 10, 10, 10, 10, 10};
double MM2 = 5.279 * 5.279; // GeV^2
double MB = 5.279; // GeV
double MK1 = 1.403; // GeV
double MK1A = 1.31; // GeV
double MK1B = 1.34; // GeV
double sinK = sin( thetaK ); // sin(-34^o)
double cosK = cos( thetaK ); // cos(-34^o)
double a, v0, v1, v2;
a = cosK *
equation9_10( ff0A[0], MM2, t, sigma1A[0], sigma2A[0], eq_num[0] ) *
( MB + MK1 ) / ( MB + MK1A );
a = a - sinK *
equation9_10( ff0B[0], MM2, t, sigma1B[0], sigma2B[0],
eq_num[0] ) *
( MB + MK1 ) / ( MB + MK1B );
v0 = cosK *
equation9_10( ff0A[1], MM2, t, sigma1A[1], sigma2A[1], eq_num[1] ) *
MK1A / MK1;
v0 = v0 - sinK *
equation9_10( ff0B[1], MM2, t, sigma1B[1], sigma2B[1],
eq_num[1] ) *
MK1B / MK1;
v1 = cosK *
equation9_10( ff0A[2], MM2, t, sigma1A[2], sigma2A[2], eq_num[2] ) *
( MB + MK1A ) / ( MB + MK1 );
v1 = v1 - sinK *
equation9_10( ff0B[2], MM2, t, sigma1B[2], sigma2B[2],
eq_num[2] ) *
( MB + MK1B ) / ( MB + MK1 );
v2 = cosK *
equation9_10( ff0A[3], MM2, t, sigma1A[3], sigma2A[3], eq_num[3] ) *
( MB + MK1 ) / ( MB + MK1A );
v2 = v2 - sinK *
equation9_10( ff0B[3], MM2, t, sigma1B[3], sigma2B[3],
eq_num[3] ) *
( MB + MK1 ) / ( MB + MK1B );
v = a;
a0 = v0;
a1 = v1;
a2 = v2;
t1 = cosK *
equation9_10( ff0A[4], MM2, t, sigma1A[4], sigma2A[4], eq_num[4] );
t1 = t1 - sinK * equation9_10( ff0B[4], MM2, t, sigma1B[4], sigma2B[4],
eq_num[4] );
t2 = cosK *
equation9_10( ff0A[5], MM2, t, sigma1A[5], sigma2A[5], eq_num[5] ) *
( MB * MB - MK1A * MK1A ) / ( MB * MB - MK1 * MK1 );
t2 = t2 - sinK *
equation9_10( ff0B[5], MM2, t, sigma1B[5], sigma2B[5],
eq_num[5] ) *
( MB * MB - MK1B * MK1B ) / ( MB * MB - MK1 * MK1 );
t3 = cosK *
equation9_10( ff0A[6], MM2, t, sigma1A[6], sigma2A[6], eq_num[6] );
t3 = t3 - sinK * equation9_10( ff0B[6], MM2, t, sigma1B[6], sigma2B[6],
eq_num[6] );
models_counter = models_counter + 1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n barB -> bar K_1(1270) transition form factors"
// << std::endl;
}
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n models_counter = " << models_counter
// << "\n Vector form-factors at q^2 = " << t
// << " for B -> V transition:"
// << "\n v = " << v
// << "\n a0 = " << a0
// << "\n a1 = " << a1
// << "\n a2 = " << a2
// << "\n t1 = " << t1
// << "\n t2 = " << t2
// << "\n t3 = " << t3 << std::endl;
if ( models_counter != 1 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n In the function EvtbTosllMSFF::getVectorFF(...) \n"
<< "the parameter models_counter not equal 1! \n"
<< "models_counter = " << models_counter << std::endl;
::abort();
}
}
// Getting the quark mass (in GeV) using to the dispersion quark model
// of D.Melikhov, B.Stech, PRD62, 014006 (2000).
//
// i=1 => return m_u;
// i=2 => return m_d;
// i=3 => return m_s;
// i=4 => return m_c;
// i=5 => return m_b;
double EvtbTosllMSFF::getQuarkMass( int i )
{
double qm = 0.0;
switch ( i ) {
case 1:
qm = 0.23; // m_u
break;
case 2:
qm = 0.23; // m_d = m_u
break;
case 3:
qm = 0.35; // m_s
break;
case 4:
qm = 1.45; // m_c
break;
case 5:
qm = 4.85; // m_b
break;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "In the function EvtbTosllMSFF::getQuarkMass \n"
<< "the parameter i not equal 1, 2, 3, 4 or 5! \n"
<< "i =" << i << std::endl;
::abort();
}
return qm;
}
diff --git a/src/EvtGenModels/EvtbTosllScalarAmp.cpp b/src/EvtGenModels/EvtbTosllScalarAmp.cpp
index 4a85289..718fa9b 100644
--- a/src/EvtGenModels/EvtbTosllScalarAmp.cpp
+++ b/src/EvtGenModels/EvtbTosllScalarAmp.cpp
@@ -1,158 +1,137 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtbTosllScalarAmp.cc
-//
-// Description: Routine to implement bTosll decays to pseudo-scalar
-// mesons.
-//
-// Modification history:
-//
-// Ryd January 5,2000 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtbTosllScalarAmp.hh"
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenModels/EvtbTosllAmp.hh"
#include "EvtGenModels/EvtbTosllFF.hh"
void EvtbTosllScalarAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtbTosllFF* formFactors )
{
//Add the lepton and neutrino 4 momenta to find q2
EvtVector4R q = parent->getDaug( 1 )->getP4() + parent->getDaug( 2 )->getP4();
double q2 = ( q.mass2() );
double fp( 0. ), f0( 0. ), ft( 0. );
double mesonmass = parent->getDaug( 0 )->mass();
double parentmass = parent->mass();
formFactors->getScalarFF( parent->getId(), parent->getDaug( 0 )->getId(),
q2, mesonmass, fp, f0, ft );
EvtId daught = parent->getDaug( 0 )->getId();
bool btod = false;
bool nnlo = true;
if ( daught == EvtPDL::getId( std::string( "pi+" ) ) ||
daught == EvtPDL::getId( std::string( "pi-" ) ) ||
daught == EvtPDL::getId( std::string( "pi0" ) ) ||
daught == EvtPDL::getId( std::string( "eta" ) ) ||
daught == EvtPDL::getId( std::string( "eta'" ) ) )
btod = true;
EvtVector4R p4b;
p4b.set( parent->mass(), 0.0, 0.0, 0.0 );
EvtVector4C l11, l12;
EvtVector4C l21, l22;
EvtVector4C a11, a12;
EvtVector4C a21, a22;
EvtId l_num = parent->getDaug( 1 )->getId();
EvtVector4C T1, T2;
EvtVector4R phat = p4b / parentmass;
EvtVector4R qhat = q / parentmass;
EvtComplex c7eff = EvtbTosllAmp::GetC7Eff( q2, nnlo );
EvtComplex c9eff = EvtbTosllAmp::GetC9Eff( q2, nnlo, btod );
EvtComplex c10eff = EvtbTosllAmp::GetC10Eff( q2, nnlo );
//double mbhat=1;
double mbhat = 4.4 / ( parentmass );
//double mkhat = 0.15;
double mkhat = mesonmass / ( parentmass );
double shat = q2 / ( parentmass * parentmass );
double fm = ( f0 - fp ) * ( 1 - mkhat * mkhat ) / shat;
EvtComplex aprime;
aprime = c9eff * fp + 2.0 * mbhat * c7eff * ft / ( 1 + mkhat );
EvtComplex bprime;
bprime = c9eff * fm - 2 * mbhat * c7eff * ft * ( 1 - mkhat ) / shat;
EvtComplex cprime;
cprime = c10eff * fp;
EvtComplex dprime;
dprime = c10eff * fm;
static EvtIdSet leptons( "e-", "mu-", "tau-" );
static EvtIdSet antileptons( "e+", "mu+", "tau+" );
if ( leptons.contains( l_num ) ) {
T1 = aprime * phat + bprime * qhat;
T2 = cprime * phat + dprime * qhat;
l11 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParent( 0 ) );
l21 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParent( 0 ) );
l12 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParent( 1 ) );
l22 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParent( 1 ) );
a11 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParent( 0 ) );
a21 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParent( 0 ) );
a12 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParent( 1 ) );
a22 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParent( 1 ) );
} else {
if ( antileptons.contains( l_num ) ) {
T1 = aprime * phat + bprime * qhat;
T2 = cprime * phat + dprime * qhat;
l11 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParent( 1 ) );
l21 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParent( 1 ) );
l12 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParent( 0 ) );
l22 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParent( 0 ) );
a11 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParent( 1 ) );
a21 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParent( 1 ) );
a12 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 1 ),
parent->getDaug( 2 )->spParent( 0 ) );
a22 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 0 ),
parent->getDaug( 2 )->spParent( 0 ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Wrong lepton number\n";
}
}
amp.vertex( 0, 0, l11 * T1 + a11 * T2 );
amp.vertex( 0, 1, l12 * T1 + a12 * T2 );
amp.vertex( 1, 0, l21 * T1 + a21 * T2 );
amp.vertex( 1, 1, l22 * T1 + a22 * T2 );
}
diff --git a/src/EvtGenModels/EvtbTosllScalarAmpNew.cpp b/src/EvtGenModels/EvtbTosllScalarAmpNew.cpp
index ff1a0ed..f77822c 100644
--- a/src/EvtGenModels/EvtbTosllScalarAmpNew.cpp
+++ b/src/EvtGenModels/EvtbTosllScalarAmpNew.cpp
@@ -1,945 +1,918 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtbTosllScalarAmpNew.cpp
-//
-// Description: Preparation of the decay amplitude for the process:
-// B_{d,s}(p1,M1) -> P(p2,M2) ell^+(k1,m) ell^-(k2,m).
-// New version.
-//
-//
-// Modification history:
-//
-// N.Nikitin (nnikit@mail.cern.ch) May 06 2008 Module created
-// N.Nikitin May 20 2008 Add maximum prabability
-// N.Nikitin June 04 2008 Add CKM matrix elements
-// N.Nikitin Feb 21 2011 CalcMaxProb(...) optimisation
-// N.Nikitin Sept 24 2012 Memory distribution optimization
-//
-//------------------------------------------------------------------------
-//
+#include "EvtGenModels/EvtbTosllScalarAmpNew.hh"
+
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenModels/EvtbTosllAmpNew.hh"
#include "EvtGenModels/EvtbTosllFFNew.hh"
#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh"
-// The header file for current class memeber functions description
-#include "EvtGenModels/EvtbTosllScalarAmpNew.hh"
#include <cstdlib>
//
// The main functiom for the amplitude calculation
//
// input: *parent - the pointer to the parent particle (B-meson, the
// object of the EvtParticle class);
// *formFactors - the pointer to instance of EvtbTosllFFNew class object;
// *WilsCoeff - the pointer to
// mu - the scale parameter, GeV;
// Nf - number of "effective" flavors (for b-quark Nf=5);
// res_swch - resonant switching parameter:
// = 0 the resonant contribution switched OFF,
// = 1 the resonant contribution switched ON;
// ias - switching parameter for \alpha_s(M_Z) value:
// = 0 PDG 1sigma minimal alpha_s(M_Z),
// = 1 PDG average value alpha_s(M_Z),
// = 2 PDG 1sigma maximal alpha_s(M_Z).
// Wolfenstein parameterization for CKM matrix
// CKM_A, CKM_lambda, CKM_barrho, CKM_bareta
//
// return: amp - amplitude for the decay B -> P ell^+ ell^-
//
// Note: in our calculations we assume, that pseudoscalar meson is the first
// daughter particle (iP=0) and leptons are the second and thirds
// daughter particles (il1=1 and il2=2).
//
void EvtbTosllScalarAmpNew::CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtbTosllFFNew* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff,
double mu, int Nf, int res_swch, int ias,
double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta )
{
// FILE *mytest;
EvtComplex unit1( 1.0, 0.0 ); // real unit
EvtComplex uniti( 0.0, 1.0 ); // imaginary unit
int iP = 0; // pseudoscalar meson is the first daughter particle
int il1 = 1,
il2 = 2; // leptons are the second and thirds daughter particles
// transition momentum of the leptonic pair q=k1+k2 or q=p1-p2
EvtVector4R q = parent->getDaug( il1 )->getP4() +
parent->getDaug( il2 )->getP4();
// Mandelstam variable t=q^2
double q2 = q.mass2();
double M1 = parent->mass(); // B - meson mass
double M2 = parent->getDaug( iP )->mass(); // pseudoscalar meson mass
double ml = parent->getDaug( il1 )->mass(); // leptonic mass
double ms = 0.0; // light quark mass from the dispersion QM
double mc = formFactors->getQuarkMass( 4 ); // m_c mass from the dispersion QM
double mb = formFactors->getQuarkMass( 5 ); // m_b mass from the dispersion QM
// double Mw = EvtPDL::getNominalMass("W+"); // W-boson mass
// double mt = EvtPDL::getNominalMass("t"); // t-quark mass
double Mw = 80.403; // GeV W-boson mass
double mt = 174.2; // GeV t-quark mass
EvtComplex Vtb, Vtq, Vub, Vuq; // V_{tb}, V_{tq}, V_{ub} and V_{uq}
EvtComplex CKM_factor; // V^*_{tq}*V_{tb}, where q={d,s}
EvtComplex lambda_qu; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}, where q={d,s}
double Relambda_qu, Imlambda_qu;
EvtId idparent = parent->getId(); // B-meson Id
EvtId iddaught = parent->getDaug( iP )->getId(); // The pseudoscalar meson Id
// set of the light quark mass value
if ( ( idparent == EvtPDL::getId( std::string( "B+" ) ) &&
iddaught == EvtPDL::getId( std::string( "K+" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B-" ) ) &&
iddaught == EvtPDL::getId( std::string( "K-" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "K0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "anti-K0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta'" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta'" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "f_0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "f_0" ) ) ) ) {
ms = formFactors->getQuarkMass( 3 ); // m_s mass from the dispersion QM
// V_{ts}
Vtq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) +
pow( CKM_lambda, 2.0 ) *
( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
Vtq = -CKM_A * pow( CKM_lambda, 2.0 ) * Vtq;
// V_{us}
Vuq = CKM_lambda * unit1;
// EvtGenReport(EVTGEN_ERROR,"EvtGen")
// << "\n\n In the function EvtbTosllScalarAmpNew::CalcScalarMaxProb(...)"
// << "\n ms = " << ms
// << "\n idparent = " << idparent << ", " << EvtPDL::getId(std::string("B_s0"))
// << "\n iddaught = " << iddaught << ", " << EvtPDL::getId(std::string("f_0"))
// << std::endl;
}
if ( ( idparent == EvtPDL::getId( std::string( "B+" ) ) &&
iddaught == EvtPDL::getId( std::string( "pi+" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B-" ) ) &&
iddaught == EvtPDL::getId( std::string( "pi-" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "pi0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "pi0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta'" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta'" ) ) ) ) {
ms = formFactors->getQuarkMass( 2 ); // m_d mass from the dispersion QM
// V_{td}
Vtq = unit1 - ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) *
( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
Vtq = CKM_A * pow( CKM_lambda, 3.0 ) * Vtq;
// V_{ud}
Vuq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) -
0.125 * pow( CKM_lambda, 4.0 ) );
}
if ( ms < 0.001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbTosllScalarAmpNew::CalcAmp(...)"
<< "\n Error in the model set!"
<< " ms = " << ms << std::endl;
::abort();
}
Vtb = unit1 * ( 1.0 - 0.5 * pow( CKM_A * CKM_lambda * CKM_lambda,
2.0 ) ); // V_{tb}
Vub = CKM_A * pow( CKM_lambda, 3.0 ) *
( CKM_barrho * unit1 - CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ); // V_{ub}
CKM_factor = conj( Vtq ) * Vtb; // V^*_{tq}*V_{tb}
lambda_qu = conj( Vuq ) * Vub /
CKM_factor; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}
Relambda_qu = real( lambda_qu );
Imlambda_qu = imag( lambda_qu );
double fp, f0, ft; // B -> P transition form-factors
// To get the B -> P transition form-factors
formFactors->getScalarFF( parent->getId(), parent->getDaug( iP )->getId(),
q2, fp, f0, ft );
// The Wilson Coefficients preparation according to the paper
// A.J.Buras, M.Munz, Phys.Rev.D52, p.189 (1995)
EvtComplex c7gam = WilsCoeff->GetC7Eff( mu, Mw, mt, Nf, ias );
EvtComplex c9eff_b2q = WilsCoeff->GetC9Eff( 0, res_swch, ias, Nf, q2, mb,
ms, mc, mu, mt, Mw, ml,
Relambda_qu, Imlambda_qu );
EvtComplex c9eff_barb2barq = WilsCoeff->GetC9Eff( 1, res_swch, ias, Nf, q2,
mb, ms, mc, mu, mt, Mw, ml,
Relambda_qu, Imlambda_qu );
EvtComplex c10a = WilsCoeff->GetC10Eff( mt, Mw );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n\n The function EvtbTosllScalarAmpNew::CalcAmp(...) passed."
// << "\n Particle masses:"
// << "\n B - meson mass M1 = " << M1
// << "\n P - meson mass M2 = " << M2
// << "\n leptonic mass ml = " << ml
// << "\n light quark mass = " << ms
// << "\n c - quark mass mc = " << mc
// << "\n b - quark mass mb = " << mb
// << "\n t - quark mass mt = " << mt
// << "\n W - boson mass Mw = " << Mw
// << "\n ============================================================================"
// << "\n Input parameters:"
// << "\n scale parameter mu = " << mu
// << "\n number of flavors Nf = " << Nf
// << "\n resonant switching = " << res_swch
// << "\n parameter for alpha_s(M_Z) = " << ias
// << "\n ============================================================================"
// << "\n Vector form-factors at q^2 = " << q2
// << " for B -> P transition:"
// << "\n fp = " << fp
// << "\n f0 = " << f0
// << "\n ft = " << ft
// << "\n ============================================================================"
// << "\n Wilson Coefficients:"
// << "\n Re(c7gam) = " << real(c7gam) << " Im(c7gam) = " << imag(c7gam)
// << "\n Re(c9eff_b2q) = " << real(c9eff_b2q)
// << " Im(c9eff_b2q) = " << imag(c9eff_b2q)
// << "\n Re(c9eff_barb2barq) = " << real(c9eff_barb2barq)
// << " Im(c9eff_barb2barq) = " << imag(c9eff_barb2barq)
// << "\n Re(c10a) = " << real(c10a) << " Im(c10a) = " << imag(c10a)
// << std::endl;
// mytest = fopen("scalaroutput.txt","a");
// if(mytest != NULL){
// fprintf(mytest,"%lf\n",q2);
// fclose(mytest);
// }
// else{
// EvtGenReport(EVTGEN_ERROR,"EvtGen") << "\n Error in writing to file.\n"
// << std::endl;
// return;
// }
// 4- momentum of the B-meson in the the B-meson rest frame
EvtVector4R p1 = parent->getP4Restframe();
EvtVector4R hatp1 = p1 / M1;
// 4-momentum of the pseudoscalar meson in the B-meson rest frame
EvtVector4R p2 = parent->getDaug( 0 )->getP4();
EvtVector4R hatp2 = p2 / M1;
// 4-vector \hat q = q/M1
EvtVector4R hatq = q / M1;
// 4-vector \hat P= (p1 + p2)/M1
EvtVector4R hatP = hatp1 + hatp2;
double hats = q2 / pow( M1, 2 );
double hatM2 = M2 / M1;
double hatmb = mb / M1;
double hatms = ms / M1;
// Hadronic matrix element with m_s.NE.0
EvtComplex a_b2q, a_barb2barq, b_b2q, b_barb2barq, c, d;
a_b2q = c9eff_b2q * fp -
2.0 * c7gam * ( hatmb + hatms ) * ft / ( 1.0 + hatM2 );
a_barb2barq = c9eff_barb2barq * fp -
2.0 * c7gam * ( hatmb + hatms ) * ft / ( 1.0 + hatM2 );
b_b2q = ( c9eff_b2q * ( f0 - fp ) +
2.0 * c7gam * ( hatmb + hatms ) * ft / ( 1.0 + hatM2 ) ) *
( 1 - pow( hatM2, 2.0 ) ) / hats;
b_barb2barq = ( c9eff_barb2barq * ( f0 - fp ) +
2.0 * c7gam * ( hatmb + hatms ) * ft / ( 1.0 + hatM2 ) ) *
( 1 - pow( hatM2, 2.0 ) ) / hats;
c = c10a * fp;
d = c10a * ( 1.0 - pow( hatM2, 2 ) ) * ( f0 - fp ) / hats;
// to find ell^+ and ell^- in the B-meson daughters
int charge1 = EvtPDL::chg3( parent->getDaug( 1 )->getId() );
int charge2 = EvtPDL::chg3( parent->getDaug( 2 )->getId() );
EvtParticle* lepPlus = 0;
EvtParticle* lepMinus = 0;
lepPlus = ( charge1 > charge2 ) ? parent->getDaug( 1 ) : parent->getDaug( 2 );
lepMinus = ( charge1 < charge2 ) ? parent->getDaug( 1 )
: parent->getDaug( 2 );
EvtVector4C T1, T2; // hadronic matrix element vector structures
EvtVector4C lvc11, lvc12; // spin structures for
EvtVector4C lvc21, lvc22; // the leptonic vector current
EvtVector4C lac11, lac12; // spin structures for
EvtVector4C lac21, lac22; // the leptonic axial current
// B - and barB - mesons descriptors
EvtIdSet bmesons( "B-", "anti-B0", "anti-B_s0", "B_c-" );
EvtIdSet bbarmesons( "B+", "B0", "B_s0", "B_c+" );
EvtId parentID = parent->getId();
if ( bmesons.contains( parentID ) ) {
// The amplitude for the decay barB -> barP ell^+ ell^-
// (b -> q ell^+ ell^- transition)
T1 = a_b2q * hatP + b_b2q * hatq;
T2 = c * hatP + d * hatq;
lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lac11 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lac21 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lac12 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lac22 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
amp.vertex( 0, 0, CKM_factor * ( lvc11 * T1 + lac11 * T2 ) );
amp.vertex( 0, 1, CKM_factor * ( lvc12 * T1 + lac12 * T2 ) );
amp.vertex( 1, 0, CKM_factor * ( lvc21 * T1 + lac21 * T2 ) );
amp.vertex( 1, 1, CKM_factor * ( lvc22 * T1 + lac22 * T2 ) );
} else {
if ( bbarmesons.contains( parentID ) ) {
// The amplitude for the decay B -> K* ell^+ ell^-
// (barb -> barq ell^+ ell^- transition)
T1 = a_barb2barq * hatP + b_barb2barq * hatq;
T2 = c * hatP + d * hatq;
lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lac11 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lac21 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lac12 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lac22 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
amp.vertex( 0, 0, conj( CKM_factor ) * ( lvc11 * T1 + lac11 * T2 ) );
amp.vertex( 0, 1, conj( CKM_factor ) * ( lvc12 * T1 + lac12 * T2 ) );
amp.vertex( 1, 0, conj( CKM_factor ) * ( lvc21 * T1 + lac21 * T2 ) );
amp.vertex( 1, 1, conj( CKM_factor ) * ( lvc22 * T1 + lac22 * T2 ) );
}
else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbTosllScalarAmpNew::CalcAmp(...)"
<< "\n Wrong B-meson number" << std::endl;
::abort();
}
}
}
//
// The decays B -> P ell^+ ell^- maximum probability calculation for the
// d^2\Gamma/dq^2 d\cos\theta distribution.
//
// \theta - the angle between the final P-meson and ell^- directions in the
// B-meson rest frame.
//
// If ias=0 (nonresonant case), the maximum is achieved at (s,t) plane!
// If ias=1 (resonant case), the maximum is achieved at q2=M^2_{J/\psi}.
//
double EvtbTosllScalarAmpNew::CalcMaxProb(
EvtId parnum, EvtId mesnum, EvtId l1num, EvtId l2num,
EvtbTosllFFNew* formFactors, EvtbTosllWilsCoeffNLO* WilsCoeff, double mu,
int Nf, int res_swch, int ias, double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta )
{
double maxfoundprob = -100.0; // maximum of the probability
double M1 = EvtPDL::getMeanMass( parnum ); // B - meson mass
double M2 = EvtPDL::getMeanMass( mesnum ); // P - meson mass
double ml = EvtPDL::getMeanMass( l1num ); // leptonic mass
if ( res_swch == 0 ) {
double s, t_for_s; // Mandelstam variables
double s_min, s_max; // s-variable boundaries
double t_plus, t_minus; // t-variable boundaries for current s-variable
double ds, dt;
int j, k;
int max_j, max_k;
s_min = 4.0 * pow( ml, 2.0 ); // minimum value of s-variable
s_max = pow( ( M1 - M2 ), 2.0 ); // maximum value of s-variable
max_j = 1000;
ds = ( s_max - s_min ) / ( (double)max_j );
if ( ds < 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcScalarMaxProb(...)"
<< "\n ds = " << ds << " < 0."
<< "\n s_min = " << s_min << "\n s_max = " << s_max
<< "\n M1 = " << M1 << "\n M2 = " << M2
<< "\n ml = " << ml << std::endl;
::abort();
}
// The maximum probability calculation
// from s_min to s_max
for ( j = max_j / 3; j < max_j; j++ ) {
s = s_min + ds * ( (double)j );
t_plus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_plus = t_plus +
sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
t_plus *= 0.5;
t_minus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_minus = t_minus -
sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
t_minus *= 0.5;
max_k = 1000;
dt = ( t_plus - t_minus ) / ( (double)max_k );
if ( fabs( dt ) < 0.00001 )
dt = 0.0;
if ( dt <= ( -0.00001 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcScalarMaxProb(...)"
<< "\n dt = " << dt << " < 0."
<< "\n s = " << s << "\n s_min = " << s_min
<< "\n s_max = " << s_max << "\n ds = " << ds
<< "\n j = " << j << "\n t_plus = " << t_plus
<< "\n t_minus = " << t_minus << "\n M1 = " << M1
<< "\n M2 = " << M2 << "\n ml = " << ml
<< std::endl;
::abort();
}
// from t_minus to t_plus
for ( k = 0; k < max_k; k++ ) {
t_for_s = t_minus + dt * ( (double)k );
if ( ( t_for_s > t_plus ) && ( t_for_s <= ( 1.0001 * t_plus ) ) ) {
t_for_s = t_plus;
}
if ( t_for_s > ( 1.0001 * t_plus ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcScalarMaxProb(...)"
<< "\n t_for_s = " << t_for_s
<< " > t_plus = " << t_plus << " ! "
<< "\n t_minus = " << t_minus << "\n dt = " << dt
<< "\n k = " << k << "\n s = " << s
<< "\n M1 = " << M1 << "\n M2 = " << M2
<< "\n ml = " << ml << std::endl;
::abort();
}
// B-meson rest frame particles and they kinematics inicialization
double EV, El1, El2;
EV = ( pow( M1, 2.0 ) + pow( M2, 2.0 ) - s ) /
( 2.0 * M1 ); // P-meson energy
if ( EV < M2 ) {
EV = 1.0000001 * M2;
}
El1 = ( pow( M1, 2.0 ) + pow( ml, 2.0 ) - t_for_s ) /
( 2.0 * M1 ); // ell^+ energy
if ( El1 < ml ) {
El1 = 1.0000001 * ml;
}
El2 = ( s + t_for_s - pow( M2, 2.0 ) - pow( ml, 2.0 ) ) /
( 2.0 * M1 ); // ell^- energy
if ( El2 < ml ) {
El2 = 1.0000001 * ml;
}
double modV, modl2;
modV = sqrt( pow( EV, 2.0 ) - pow( M2, 2.0 ) );
modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) );
double cosVellminus; // angle between the P-meson and ell^- directions
cosVellminus = ( pow( M2, 2.0 ) + pow( ml, 2.0 ) +
2.0 * EV * El2 - t_for_s ) /
( 2.0 * modV * modl2 );
if ( ( fabs( cosVellminus ) > 1.0 ) &&
( fabs( cosVellminus ) <= 1.0001 ) ) {
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
// << "\n cos(theta) = " << cosVellminus
// << std::endl;
cosVellminus = cosVellminus / fabs( cosVellminus );
}
if ( ( modV <= 0.000001 ) || ( modl2 <= 0.000001 ) ) {
cosVellminus = cosVellminus / fabs( cosVellminus );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
// << "\n modV = " << modV
// << "\n modl2 = " << modl2
// << "\n cos(theta) = " << cosVellminus
// << "\n s = " << s
// << "\n t_for_s = " << t_for_s
// << "\n s_min = " << s_min
// << "\n s_max = " << s_max
// << "\n t_plus = " << t_plus
// << "\n t_minus = " << t_minus
// << "\n dt = " << dt
// << "\n EV = " << EV
// << "\n El2 = " << El2
// << "\n M2 = " << M2
// << "\n ml = " << ml
// << std::endl;
}
if ( fabs( cosVellminus ) > 1.0001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
<< "\n |cos(theta)| = " << fabs( cosVellminus ) << " > 1"
<< "\n s = " << s << "\n t_for_s = " << t_for_s
<< "\n s_min = " << s_min << "\n s_max = " << s_max
<< "\n t_plus = " << t_plus << "\n t_minus = " << t_minus
<< "\n dt = " << dt << "\n EV = " << EV
<< "\n El2 = " << El2 << "\n modV = " << modV
<< "\n modl2 = " << modl2 << "\n M2 = " << M2
<< "\n ml = " << ml << std::endl;
::abort();
}
double sin2Vellminus = 1.0 - pow( cosVellminus, 2.0 );
if ( ( sin2Vellminus < 0.0 ) && ( sin2Vellminus >= -0.0001 ) ) {
sin2Vellminus = 0.0;
}
if ( sin2Vellminus <= -0.0001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
<< "\n cos^2(theta) = " << sin2Vellminus << " < -0.001"
<< "\n s = " << s << "\n t_for_s = " << t_for_s
<< "\n s_min = " << s_min << "\n s_max = " << s_max
<< "\n t_plus = " << t_plus << "\n t_minus = " << t_minus
<< "\n dt = " << dt << "\n EV = " << EV
<< "\n El2 = " << El2 << "\n modV = " << modV
<< "\n modl2 = " << modl2 << "\n M2 = " << M2
<< "\n ml = " << ml << std::endl;
::abort();
}
EvtVector4R p1, p2, k1, k2;
p1.set( M1, 0.0, 0.0, 0.0 );
p2.set( EV, modV, 0.0, 0.0 );
k2.set( El2, modl2 * cosVellminus,
-modl2 * sqrt( sin2Vellminus ), 0.0 );
k1 = p1 - p2 - k2;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
// << "\n mu =" << mu << " Nf =" << Nf
// << " res_swch =" << res_swch
// << " ias =" << ias
// << "\n M1 = " << M1
// << "\n M2 = " << M2
// << "\n ml = " << ml
// << "\n s = " << s
// << "\n t_for_s = " << t_for_s
// << "\n EV = " << EV
// << "\n El1 = " << El1
// << "\n El2 = " << El2
// << "\n modV = " << modV
// << "\n modl1 = " << modl1
// << "\n modl2 = " << modl2
// << "\n cos(theta) = " << cosVellminus
// << "\n p1 =" << p1
// << "\n p2 =" << p2
// << "\n k1 =" << k1
// << "\n k2 =" << k2
// << std::endl;
// B-meson state preparation at the rest frame of B-meson
EvtScalarParticle* scalar_part;
EvtParticle* root_part;
scalar_part = new EvtScalarParticle;
scalar_part->noLifeTime();
scalar_part->init( parnum, p1 );
root_part = (EvtParticle*)scalar_part;
root_part->setDiagonalSpinDensity();
// Amplitude initialization
EvtId listdaug[3];
listdaug[0] = mesnum;
listdaug[1] = l1num;
listdaug[2] = l2num;
EvtAmp amp;
amp.init( parnum, 3, listdaug );
// Daughters states preparation at the rest frame of B-meson
root_part->makeDaughters( 3, listdaug );
EvtParticle *vect, *lep1, *lep2;
vect = root_part->getDaug( 0 );
lep1 = root_part->getDaug( 1 );
lep2 = root_part->getDaug( 2 );
vect->noLifeTime();
lep1->noLifeTime();
lep2->noLifeTime();
// EvtGenReport(EVTGEN_ERROR,"EvtGen")
// << "\n\n In the function EvtbTosllScalarAmpNew::CalcScalarMaxProb(...)"
// << "\n M1 = " << M1
// << "\n M2 = " << M2
// << "\n s = " << s
// << "\n t_for_s = " << t_for_s
// << "\n p1 = " << p1
// << "\n p2 = " << p2
// << "\n k1 = " << k1
// << "\n k2 = " << k2
// << "\n mesnum = " << mesnum
// << "\n l1num = " << l1num
// << "\n l2num = " << l2num
// << std::endl;
vect->init( mesnum, p2 );
lep1->init( l1num, k1 );
lep2->init( l2num, k2 );
// EvtGenReport(EVTGEN_ERROR,"EvtGen")
// << "\n vect = " << vect
// << "\n lep1 = " << lep1
// << "\n lep2 = " << lep2
// << std::endl;
EvtSpinDensity rho;
rho.setDiag( root_part->getSpinStates() );
// The amplitude calculation at the
// "maximum amplitude" kinematical configuration
CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf, res_swch,
ias, CKM_A, CKM_lambda, CKM_barrho, CKM_bareta );
// Now find the probability at this q2 and cos theta lepton point
double nikmax = rho.normalizedProb( amp.getSpinDensity() );
if ( nikmax > maxfoundprob ) {
maxfoundprob = nikmax;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n maxfoundprob ( s =" << s << ", t = " << t_for_s << " ) = "
// << maxfoundprob
// << "\n k =" << k
// << std::endl;
}
delete scalar_part;
// delete root_part;
delete vect;
delete lep1;
delete lep2;
} // for(k=0; k<=max_k; k++)
} // for(j=0; j<max_j; j++)
} // if(res_swch==0)
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if ( res_swch == 1 ) {
double s, t_for_s; // Mandelstam variables
double t_plus, t_minus; // t-variable boundaries for current s-variable
double dt;
int k;
s = pow( 3.09688, 2.0 ); // s = (M_{J/\psi})^2
t_plus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_plus = t_plus + sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
t_plus *= 0.5;
t_minus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_minus = t_minus -
sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
t_minus *= 0.5;
dt = ( t_plus - t_minus ) / 1000.0;
// The maximum probability calculation
for ( k = 0; k < 1000; k++ ) {
t_for_s = t_minus + dt * ( (double)k );
if ( ( t_for_s > t_plus ) && ( t_for_s <= ( 1.0001 * t_plus ) ) ) {
t_for_s = t_plus;
}
if ( t_for_s > ( 1.0001 * t_plus ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
<< "\n t_for_s = " << t_for_s << " > t_plus = " << t_plus
<< " ! "
<< "\n t_minus = " << t_minus << "\n dt = " << dt
<< "\n k = " << k << "\n s = " << s
<< "\n M1 = " << M1 << "\n M2 = " << M2
<< "\n ml = " << ml << std::endl;
::abort();
}
// B-meson rest frame particles and they kinematics inicialization
double EV, El2;
EV = ( pow( M1, 2.0 ) + pow( M2, 2.0 ) - s ) /
( 2.0 * M1 ); // V-meson energy
El2 = ( s + t_for_s - pow( M2, 2.0 ) - pow( ml, 2.0 ) ) /
( 2.0 * M1 ); // ell^- energy
double modV, modl2;
modV = sqrt( pow( EV, 2.0 ) - pow( M2, 2.0 ) );
modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) );
double cosVellminus; // angle between the vector meson and ell^- directions
cosVellminus = ( pow( M2, 2.0 ) + pow( ml, 2.0 ) + 2.0 * EV * El2 -
t_for_s ) /
( 2.0 * modV * modl2 );
if ( ( fabs( cosVellminus ) > 1.0 ) &&
( fabs( cosVellminus ) <= 1.0001 ) ) {
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
// << "\n cos(theta) = " << cosVellminus
// << std::endl;
cosVellminus = cosVellminus / fabs( cosVellminus );
}
if ( ( modV <= 0.000001 ) || ( modl2 <= 0.000001 ) ) {
cosVellminus = cosVellminus / fabs( cosVellminus );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
// << "\n modV = " << modV
// << "\n modl2 = " << modl2
// << "\n cos(theta) = " << cosVellminus
// << "\n s = " << s
// << "\n t_for_s = " << t_for_s
// << "\n t_plus = " << t_plus
// << "\n t_minus = " << t_minus
// << "\n dt = " << dt
// << "\n EV = " << EV
// << "\n El2 = " << El2
// << "\n M2 = " << M2
// << "\n ml = " << ml
// << std::endl;
}
if ( fabs( cosVellminus ) > 1.0001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
<< "\n |cos(theta)| = " << fabs( cosVellminus ) << " > 1"
<< "\n s = " << s << "\n t_for_s = " << t_for_s
<< "\n t_plus = " << t_plus << "\n t_minus = " << t_minus
<< "\n dt = " << dt << "\n EV = " << EV
<< "\n El2 = " << El2 << "\n modV = " << modV
<< "\n modl2 = " << modl2 << "\n M2 = " << M2
<< "\n ml = " << ml << std::endl;
::abort();
}
double sin2Vellminus = 1.0 - pow( cosVellminus, 2.0 );
if ( ( sin2Vellminus < 0.0 ) && ( sin2Vellminus >= -0.0001 ) ) {
sin2Vellminus = 0.0;
}
if ( sin2Vellminus <= -0.0001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
<< "\n cos^2(theta) = " << sin2Vellminus << " < -0.001"
<< "\n s = " << s << "\n t_for_s = " << t_for_s
<< "\n t_plus = " << t_plus << "\n t_minus = " << t_minus
<< "\n dt = " << dt << "\n EV = " << EV
<< "\n El2 = " << El2 << "\n modV = " << modV
<< "\n modl2 = " << modl2 << "\n M2 = " << M2
<< "\n ml = " << ml << std::endl;
::abort();
}
EvtVector4R p1, p2, k1, k2;
p1.set( M1, 0.0, 0.0, 0.0 );
p2.set( EV, modV, 0.0, 0.0 );
k2.set( El2, modl2 * cosVellminus, -modl2 * sqrt( sin2Vellminus ),
0.0 );
k1 = p1 - p2 - k2;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
// << "\n mu =" << mu << " Nf =" << Nf
// << " res_swch =" << res_swch
// << " ias =" << ias
// << "\n M1 = " << M1
// << "\n M2 = " << M2
// << "\n ml = " << ml
// << "\n s = " << s
// << "\n t_for_s = " << t_for_s
// << "\n EV = " << EV
// << "\n El1 = " << El1
// << "\n El2 = " << El2
// << "\n modV = " << modV
// << "\n modl1 = " << modl1
// << "\n modl2 = " << modl2
// << "\n cos(theta) = " << cosVellminus
// << "\n p1 =" << p1
// << "\n p2 =" << p2
// << "\n k1 =" << k1
// << "\n k2 =" << k2
// << std::endl;
// B-meson state preparation at the rest frame of B-meson
EvtScalarParticle* scalar_part;
EvtParticle* root_part;
scalar_part = new EvtScalarParticle;
scalar_part->noLifeTime();
scalar_part->init( parnum, p1 );
root_part = (EvtParticle*)scalar_part;
root_part->setDiagonalSpinDensity();
// Amplitude initialization
EvtId listdaug[3];
listdaug[0] = mesnum;
listdaug[1] = l1num;
listdaug[2] = l2num;
EvtAmp amp;
amp.init( parnum, 3, listdaug );
// Daughters states preparation at the rest frame of B-meson
root_part->makeDaughters( 3, listdaug );
EvtParticle *vect, *lep1, *lep2;
vect = root_part->getDaug( 0 );
lep1 = root_part->getDaug( 1 );
lep2 = root_part->getDaug( 2 );
vect->noLifeTime();
lep1->noLifeTime();
lep2->noLifeTime();
vect->init( mesnum, p2 );
lep1->init( l1num, k1 );
lep2->init( l2num, k2 );
EvtSpinDensity rho;
rho.setDiag( root_part->getSpinStates() );
// The amplitude calculation at the
// "maximum amplitude" kinematical configuration
CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf, res_swch,
ias, CKM_A, CKM_lambda, CKM_barrho, CKM_bareta );
// Now find the probability at this q2 and cos theta lepton point
double nikmax = rho.normalizedProb( amp.getSpinDensity() );
if ( nikmax > maxfoundprob ) {
maxfoundprob = nikmax;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n maxfoundprob ( s =" << s << ", t = " << t_for_s << " ) = "
// << maxfoundprob
// << "\n k =" << k
// << std::endl;
}
delete scalar_part;
// delete root_part;
delete vect;
delete lep1;
delete lep2;
} // for(k=0; k<=1000; k++)
} // if(res_swch==1)
if ( maxfoundprob <= 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
<< "\n maxfoundprob = " << maxfoundprob << " <0 or =0!"
<< "\n res_swch = " << res_swch << std::endl;
::abort();
}
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n maxfoundprob (...) = " << maxfoundprob << std::endl;
maxfoundprob *= 1.01;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n ***************************************************************************"
// << "\n The function EvtbTosllScalarAmpNew::CalcMaxProb(...) passed with arguments:"
// << "\n mu =" << mu << " Nf =" << Nf
// << " res_swch =" << res_swch
// << " ias =" << ias
// << " \n s_at_max = " << s_at_max
// << " t_at_max = " << t_at_max
// << "\n The distribution maximum maxfoundprob =" << maxfoundprob
// << "\n ***************************************************************************"
// << std::endl;
return maxfoundprob;
}
// Triangular function
double EvtbTosllScalarAmpNew::lambda( double a, double b, double c )
{
double l;
l = pow( a, 2.0 ) + pow( b, 2.0 ) + pow( c, 2.0 ) - 2.0 * a * b -
2.0 * a * c - 2.0 * b * c;
return l;
}
diff --git a/src/EvtGenModels/EvtbTosllScalarAmpNewExt.cpp b/src/EvtGenModels/EvtbTosllScalarAmpNewExt.cpp
index bce0358..2be42e5 100644
--- a/src/EvtGenModels/EvtbTosllScalarAmpNewExt.cpp
+++ b/src/EvtGenModels/EvtbTosllScalarAmpNewExt.cpp
@@ -1,878 +1,851 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtbTosllScalarAmpNew.cpp
-//
-// Description: Preparation of the decay amplitude for the process:
-// B_{d,s}(p1,M1) -> P(p2,M2) ell^+(k1,m) ell^-(k2,m).
-// New version.
-//
-//
-// Modification history:
-//
-// N.Nikitin (nnikit@mail.cern.ch) May 06 2008 Module created
-// N.Nikitin May 20 2008 Add maximum prabability
-// N.Nikitin June 04 2008 Add CKM matrix elements
-// N.Nikitin Feb 21 2011 CalcMaxProb(...) optimisation
-// N.Nikitin Sept 24 2012 Memory distribution optimization
-//
-//------------------------------------------------------------------------
-//
+#include "EvtGenModels/EvtbTosllScalarAmpNewExt.hh"
+
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenModels/EvtbTosllAmpNewExt.hh"
#include "EvtGenModels/EvtbTosllFFNew.hh"
#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh"
-// The header file for current class memeber functions description
-#include "EvtGenModels/EvtbTosllScalarAmpNewExt.hh"
#include <cstdlib>
//
// The main functiom for the amplitude calculation
//
// input: *parent - the pointer to the parent particle (B-meson, the
// object of the EvtParticle class);
// *formFactors - the pointer to instance of EvtbTosllFFNew class object;
// *WilsCoeff - the pointer to
// mu - the scale parameter, GeV;
// Nf - number of "effective" flavors (for b-quark Nf=5);
// res_swch - resonant switching parameter:
// = 0 the resonant contribution switched OFF,
// = 1 the resonant contribution switched ON;
// ias - switching parameter for \alpha_s(M_Z) value:
// = 0 PDG 1sigma minimal alpha_s(M_Z),
// = 1 PDG average value alpha_s(M_Z),
// = 2 PDG 1sigma maximal alpha_s(M_Z).
// Wolfenstein parameterization for CKM matrix
// CKM_A, CKM_lambda, CKM_barrho, CKM_bareta
//
// return: amp - amplitude for the decay B -> P ell^+ ell^-
//
// Note: in our calculations we assume, that pseudoscalar meson is the first
// daughter particle (iP=0) and leptons are the second and thirds
// daughter particles (il1=1 and il2=2).
//
void EvtbTosllScalarAmpNewExt::CalcAmp(
EvtParticle* parent, EvtAmp& amp, EvtbTosllFFNew* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf, int res_swch, int ias,
double CKM_A, double CKM_lambda, double CKM_barrho, double CKM_bareta,
double ReA7, double ImA7, double ReA10, double ImA10 )
{
// FILE *mytest;
EvtComplex unit1( 1.0, 0.0 ); // real unit
EvtComplex uniti( 0.0, 1.0 ); // imaginary unit
EvtComplex A7 = ReA7 * unit1 + ImA7 * uniti;
EvtComplex A10 = ReA10 * unit1 + ImA10 * uniti;
int iP = 0; // pseudoscalar meson is the first daughter particle
int il1 = 1,
il2 = 2; // leptons are the second and thirds daughter particles
// transition momentum of the leptonic pair q=k1+k2 or q=p1-p2
EvtVector4R q = parent->getDaug( il1 )->getP4() +
parent->getDaug( il2 )->getP4();
// Mandelstam variable t=q^2
double q2 = q.mass2();
double M1 = parent->mass(); // B - meson mass
double M2 = parent->getDaug( iP )->mass(); // pseudoscalar meson mass
double ml = parent->getDaug( il1 )->mass(); // leptonic mass
double ms = 0.0; // light quark mass from the dispersion QM
double mc = formFactors->getQuarkMass( 4 ); // m_c mass from the dispersion QM
double mb = formFactors->getQuarkMass( 5 ); // m_b mass from the dispersion QM
// double Mw = EvtPDL::getNominalMass("W+"); // W-boson mass
// double mt = EvtPDL::getNominalMass("t"); // t-quark mass
double Mw = 80.403; // GeV W-boson mass
double mt = 174.2; // GeV t-quark mass
EvtComplex Vtb, Vtq, Vub, Vuq; // V_{tb}, V_{tq}, V_{ub} and V_{uq}
EvtComplex CKM_factor; // V^*_{tq}*V_{tb}, where q={d,s}
EvtComplex lambda_qu; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}, where q={d,s}
double Relambda_qu, Imlambda_qu;
EvtId idparent = parent->getId(); // B-meson Id
EvtId iddaught = parent->getDaug( iP )->getId(); // The pseudoscalar meson Id
// set of the light quark mass value
if ( ( idparent == EvtPDL::getId( std::string( "B+" ) ) &&
iddaught == EvtPDL::getId( std::string( "K+" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B-" ) ) &&
iddaught == EvtPDL::getId( std::string( "K-" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "K0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "anti-K0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta'" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta'" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "f_0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "f_0" ) ) ) ) {
ms = formFactors->getQuarkMass( 3 ); // m_s mass from the dispersion QM
// V_{ts}
Vtq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) +
pow( CKM_lambda, 2.0 ) *
( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
Vtq = -CKM_A * pow( CKM_lambda, 2.0 ) * Vtq;
// V_{us}
Vuq = CKM_lambda * unit1;
}
if ( ( idparent == EvtPDL::getId( std::string( "B+" ) ) &&
iddaught == EvtPDL::getId( std::string( "pi+" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B-" ) ) &&
iddaught == EvtPDL::getId( std::string( "pi-" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "pi0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "pi0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta'" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "eta'" ) ) ) ) {
ms = formFactors->getQuarkMass( 2 ); // m_d mass from the dispersion QM
// V_{td}
Vtq = unit1 - ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) *
( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
Vtq = CKM_A * pow( CKM_lambda, 3.0 ) * Vtq;
// V_{ud}
Vuq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) -
0.125 * pow( CKM_lambda, 4.0 ) );
}
if ( ms < 0.001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbTosllScalarAmpNew::CalcAmp(...)"
<< "\n Error in the model set!"
<< " ms = " << ms << std::endl;
::abort();
}
Vtb = unit1 * ( 1.0 - 0.5 * pow( CKM_A * CKM_lambda * CKM_lambda,
2.0 ) ); // V_{tb}
Vub = CKM_A * pow( CKM_lambda, 3.0 ) *
( CKM_barrho * unit1 - CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ); // V_{ub}
CKM_factor = conj( Vtq ) * Vtb; // V^*_{tq}*V_{tb}
lambda_qu = conj( Vuq ) * Vub /
CKM_factor; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}
Relambda_qu = real( lambda_qu );
Imlambda_qu = imag( lambda_qu );
double fp, f0, ft; // B -> P transition form-factors
// To get the B -> P transition form-factors
formFactors->getScalarFF( parent->getId(), parent->getDaug( iP )->getId(),
q2, fp, f0, ft );
// The Wilson Coefficients preparation according to the paper
// A.J.Buras, M.Munz, Phys.Rev.D52, p.189 (1995)
EvtComplex c7gam = WilsCoeff->GetC7Eff( mu, Mw, mt, Nf, ias );
c7gam = c7gam * A7;
EvtComplex c9eff_b2q = WilsCoeff->GetC9Eff( 0, res_swch, ias, Nf, q2, mb,
ms, mc, mu, mt, Mw, ml,
Relambda_qu, Imlambda_qu );
EvtComplex c9eff_barb2barq = WilsCoeff->GetC9Eff( 1, res_swch, ias, Nf, q2,
mb, ms, mc, mu, mt, Mw, ml,
Relambda_qu, Imlambda_qu );
EvtComplex c10a = WilsCoeff->GetC10Eff( mt, Mw );
c10a = c10a * A10;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n\n The function EvtbTosllScalarAmpNew::CalcAmp(...) passed."
// << "\n Particle masses:"
// << "\n B - meson mass M1 = " << M1
// << "\n P - meson mass M2 = " << M2
// << "\n leptonic mass ml = " << ml
// << "\n light quark mass = " << ms
// << "\n c - quark mass mc = " << mc
// << "\n b - quark mass mb = " << mb
// << "\n t - quark mass mt = " << mt
// << "\n W - boson mass Mw = " << Mw
// << "\n ============================================================================"
// << "\n Input parameters:"
// << "\n scale parameter mu = " << mu
// << "\n number of flavors Nf = " << Nf
// << "\n resonant switching = " << res_swch
// << "\n parameter for alpha_s(M_Z) = " << ias
// << "\n ============================================================================"
// << "\n Vector form-factors at q^2 = " << q2
// << " for B -> P transition:"
// << "\n fp = " << fp
// << "\n f0 = " << f0
// << "\n ft = " << ft
// << "\n ============================================================================"
// << "\n Wilson Coefficients:"
// << "\n Re(c7gam) = " << real(c7gam) << " Im(c7gam) = " << imag(c7gam)
// << "\n Re(c9eff_b2q) = " << real(c9eff_b2q)
// << " Im(c9eff_b2q) = " << imag(c9eff_b2q)
// << "\n Re(c9eff_barb2barq) = " << real(c9eff_barb2barq)
// << " Im(c9eff_barb2barq) = " << imag(c9eff_barb2barq)
// << "\n Re(c10a) = " << real(c10a) << " Im(c10a) = " << imag(c10a)
// << std::endl;
// mytest = fopen("scalaroutput.txt","a");
// if(mytest != NULL){
// fprintf(mytest,"%lf\n",q2);
// fclose(mytest);
// }
// else{
// EvtGenReport(EVTGEN_ERROR,"EvtGen") << "\n Error in writing to file.\n"
// << std::endl;
// return;
// }
// 4- momentum of the B-meson in the the B-meson rest frame
EvtVector4R p1 = parent->getP4Restframe();
EvtVector4R hatp1 = p1 / M1;
// 4-momentum of the pseudoscalar meson in the B-meson rest frame
EvtVector4R p2 = parent->getDaug( 0 )->getP4();
EvtVector4R hatp2 = p2 / M1;
// 4-vector \hat q = q/M1
EvtVector4R hatq = q / M1;
// 4-vector \hat P= (p1 + p2)/M1
EvtVector4R hatP = hatp1 + hatp2;
double hats = q2 / pow( M1, 2 );
double hatM2 = M2 / M1;
double hatmb = mb / M1;
double hatms = ms / M1;
// Hadronic matrix element with m_s.NE.0
EvtComplex a_b2q, a_barb2barq, b_b2q, b_barb2barq, c, d;
a_b2q = c9eff_b2q * fp -
2.0 * c7gam * ( hatmb + hatms ) * ft / ( 1.0 + hatM2 );
a_barb2barq = c9eff_barb2barq * fp -
2.0 * c7gam * ( hatmb + hatms ) * ft / ( 1.0 + hatM2 );
b_b2q = ( c9eff_b2q * ( f0 - fp ) +
2.0 * c7gam * ( hatmb + hatms ) * ft / ( 1.0 + hatM2 ) ) *
( 1 - pow( hatM2, 2.0 ) ) / hats;
b_barb2barq = ( c9eff_barb2barq * ( f0 - fp ) +
2.0 * c7gam * ( hatmb + hatms ) * ft / ( 1.0 + hatM2 ) ) *
( 1 - pow( hatM2, 2.0 ) ) / hats;
c = c10a * fp;
d = c10a * ( 1.0 - pow( hatM2, 2 ) ) * ( f0 - fp ) / hats;
// to find ell^+ and ell^- in the B-meson daughters
int charge1 = EvtPDL::chg3( parent->getDaug( 1 )->getId() );
int charge2 = EvtPDL::chg3( parent->getDaug( 2 )->getId() );
EvtParticle* lepPlus = 0;
EvtParticle* lepMinus = 0;
lepPlus = ( charge1 > charge2 ) ? parent->getDaug( 1 ) : parent->getDaug( 2 );
lepMinus = ( charge1 < charge2 ) ? parent->getDaug( 1 )
: parent->getDaug( 2 );
EvtVector4C T1, T2; // hadronic matrix element vector structures
EvtVector4C lvc11, lvc12; // spin structures for
EvtVector4C lvc21, lvc22; // the leptonic vector current
EvtVector4C lac11, lac12; // spin structures for
EvtVector4C lac21, lac22; // the leptonic axial current
// B - and barB - mesons descriptors
EvtIdSet bmesons( "B-", "anti-B0", "anti-B_s0", "B_c-" );
EvtIdSet bbarmesons( "B+", "B0", "B_s0", "B_c+" );
EvtId parentID = parent->getId();
if ( bmesons.contains( parentID ) ) {
// The amplitude for the decay barB -> barP ell^+ ell^-
// (b -> q ell^+ ell^- transition)
T1 = a_b2q * hatP + b_b2q * hatq;
T2 = c * hatP + d * hatq;
lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lac11 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lac21 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lac12 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lac22 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
amp.vertex( 0, 0, CKM_factor * ( lvc11 * T1 + lac11 * T2 ) );
amp.vertex( 0, 1, CKM_factor * ( lvc12 * T1 + lac12 * T2 ) );
amp.vertex( 1, 0, CKM_factor * ( lvc21 * T1 + lac21 * T2 ) );
amp.vertex( 1, 1, CKM_factor * ( lvc22 * T1 + lac22 * T2 ) );
} else {
if ( bbarmesons.contains( parentID ) ) {
// The amplitude for the decay B -> K* ell^+ ell^-
// (barb -> barq ell^+ ell^- transition)
T1 = a_barb2barq * hatP + b_barb2barq * hatq;
T2 = c * hatP + d * hatq;
lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lac11 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lac21 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lac12 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lac22 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
amp.vertex( 0, 0, conj( CKM_factor ) * ( lvc11 * T1 + lac11 * T2 ) );
amp.vertex( 0, 1, conj( CKM_factor ) * ( lvc12 * T1 + lac12 * T2 ) );
amp.vertex( 1, 0, conj( CKM_factor ) * ( lvc21 * T1 + lac21 * T2 ) );
amp.vertex( 1, 1, conj( CKM_factor ) * ( lvc22 * T1 + lac22 * T2 ) );
}
else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbTosllScalarAmpNew::CalcAmp(...)"
<< "\n Wrong B-meson number" << std::endl;
::abort();
}
}
}
//
// The decays B -> P ell^+ ell^- maximum probability calculation for the
// d^2\Gamma/dq^2 d\cos\theta distribution.
//
// \theta - the angle between the final P-meson and ell^- directions in the
// B-meson rest frame.
//
// If ias=0 (nonresonant case), the maximum is achieved at (s,t) plane!
// If ias=1 (resonant case), the maximum is achieved at q2=M^2_{J/\psi}.
//
double EvtbTosllScalarAmpNewExt::CalcMaxProb(
EvtId parnum, EvtId mesnum, EvtId l1num, EvtId l2num,
EvtbTosllFFNew* formFactors, EvtbTosllWilsCoeffNLO* WilsCoeff, double mu,
int Nf, int res_swch, int ias, double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta, double ReA7, double ImA7,
double ReA10, double ImA10 )
{
double maxfoundprob = -100.0; // maximum of the probability
double M1 = EvtPDL::getMeanMass( parnum ); // B - meson mass
double M2 = EvtPDL::getMeanMass( mesnum ); // P - meson mass
double ml = EvtPDL::getMeanMass( l1num ); // leptonic mass
if ( res_swch == 0 ) {
double s, t_for_s; // Mandelstam variables
double s_min, s_max; // s-variable boundaries
double t_plus, t_minus; // t-variable boundaries for current s-variable
double ds, dt;
int j, k;
int max_j, max_k;
s_min = 4.0 * pow( ml, 2.0 ); // minimum value of s-variable
s_max = pow( ( M1 - M2 ), 2.0 ); // maximum value of s-variable
max_j = 1000;
ds = ( s_max - s_min ) / ( (double)max_j );
if ( ds < 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcScalarMaxProb(...)"
<< "\n ds = " << ds << " < 0."
<< "\n s_min = " << s_min << "\n s_max = " << s_max
<< "\n M1 = " << M1 << "\n M2 = " << M2
<< "\n ml = " << ml << std::endl;
::abort();
}
// The maximum probability calculation
// from s_min to s_max
for ( j = max_j / 3; j < max_j; j++ ) {
s = s_min + ds * ( (double)j );
t_plus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_plus = t_plus +
sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
t_plus *= 0.5;
t_minus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_minus = t_minus -
sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
t_minus *= 0.5;
max_k = 1000;
dt = ( t_plus - t_minus ) / ( (double)max_k );
if ( fabs( dt ) < 0.00001 )
dt = 0.0;
if ( dt <= ( -0.00001 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcScalarMaxProb(...)"
<< "\n dt = " << dt << " < 0."
<< "\n s = " << s << "\n s_min = " << s_min
<< "\n s_max = " << s_max << "\n ds = " << ds
<< "\n j = " << j << "\n t_plus = " << t_plus
<< "\n t_minus = " << t_minus << "\n M1 = " << M1
<< "\n M2 = " << M2 << "\n ml = " << ml
<< std::endl;
::abort();
}
// from t_minus to t_plus
for ( k = 0; k < max_k; k++ ) {
t_for_s = t_minus + dt * ( (double)k );
if ( ( t_for_s > t_plus ) && ( t_for_s <= ( 1.0001 * t_plus ) ) ) {
t_for_s = t_plus;
}
if ( t_for_s > ( 1.0001 * t_plus ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcScalarMaxProb(...)"
<< "\n t_for_s = " << t_for_s
<< " > t_plus = " << t_plus << " ! "
<< "\n t_minus = " << t_minus << "\n dt = " << dt
<< "\n k = " << k << "\n s = " << s
<< "\n M1 = " << M1 << "\n M2 = " << M2
<< "\n ml = " << ml << std::endl;
::abort();
}
// B-meson rest frame particles and they kinematics inicialization
double EV, El2;
EV = ( pow( M1, 2.0 ) + pow( M2, 2.0 ) - s ) /
( 2.0 * M1 ); // P-meson energy
El2 = ( s + t_for_s - pow( M2, 2.0 ) - pow( ml, 2.0 ) ) /
( 2.0 * M1 ); // ell^- energy
double modV, modl2;
modV = sqrt( pow( EV, 2.0 ) - pow( M2, 2.0 ) );
modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) );
double cosVellminus; // angle between the P-meson and ell^- directions
cosVellminus = ( pow( M2, 2.0 ) + pow( ml, 2.0 ) +
2.0 * EV * El2 - t_for_s ) /
( 2.0 * modV * modl2 );
if ( ( fabs( cosVellminus ) > 1.0 ) &&
( fabs( cosVellminus ) <= 1.0001 ) ) {
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
// << "\n cos(theta) = " << cosVellminus
// << std::endl;
cosVellminus = cosVellminus / fabs( cosVellminus );
}
if ( ( modV <= 0.000001 ) || ( modl2 <= 0.000001 ) ) {
cosVellminus = cosVellminus / fabs( cosVellminus );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
// << "\n modV = " << modV
// << "\n modl2 = " << modl2
// << "\n cos(theta) = " << cosVellminus
// << "\n s = " << s
// << "\n t_for_s = " << t_for_s
// << "\n s_min = " << s_min
// << "\n s_max = " << s_max
// << "\n t_plus = " << t_plus
// << "\n t_minus = " << t_minus
// << "\n dt = " << dt
// << "\n EV = " << EV
// << "\n El2 = " << El2
// << "\n M2 = " << M2
// << "\n ml = " << ml
// << std::endl;
}
if ( fabs( cosVellminus ) > 1.0001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
<< "\n |cos(theta)| = " << fabs( cosVellminus ) << " > 1"
<< "\n s = " << s << "\n t_for_s = " << t_for_s
<< "\n s_min = " << s_min << "\n s_max = " << s_max
<< "\n t_plus = " << t_plus << "\n t_minus = " << t_minus
<< "\n dt = " << dt << "\n EV = " << EV
<< "\n El2 = " << El2 << "\n modV = " << modV
<< "\n modl2 = " << modl2 << "\n M2 = " << M2
<< "\n ml = " << ml << std::endl;
::abort();
}
EvtVector4R p1, p2, k1, k2;
p1.set( M1, 0.0, 0.0, 0.0 );
p2.set( EV, modV, 0.0, 0.0 );
k2.set( El2, modl2 * cosVellminus,
-modl2 * sqrt( 1.0 - pow( cosVellminus, 2.0 ) ), 0.0 );
k1 = p1 - p2 - k2;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
// << "\n mu =" << mu << " Nf =" << Nf
// << " res_swch =" << res_swch
// << " ias =" << ias
// << "\n M1 = " << M1
// << "\n M2 = " << M2
// << "\n ml = " << ml
// << "\n s = " << s
// << "\n t_for_s = " << t_for_s
// << "\n EV = " << EV
// << "\n El1 = " << El1
// << "\n El2 = " << El2
// << "\n modV = " << modV
// << "\n modl1 = " << modl1
// << "\n modl2 = " << modl2
// << "\n cos(theta) = " << cosVellminus
// << "\n p1 =" << p1
// << "\n p2 =" << p2
// << "\n k1 =" << k1
// << "\n k2 =" << k2
// << std::endl;
// B-meson state preparation at the rest frame of B-meson
EvtScalarParticle* scalar_part;
EvtParticle* root_part;
scalar_part = new EvtScalarParticle;
scalar_part->noLifeTime();
scalar_part->init( parnum, p1 );
root_part = (EvtParticle*)scalar_part;
root_part->setDiagonalSpinDensity();
// Amplitude initialization
EvtId listdaug[3];
listdaug[0] = mesnum;
listdaug[1] = l1num;
listdaug[2] = l2num;
EvtAmp amp;
amp.init( parnum, 3, listdaug );
// Daughters states preparation at the rest frame of B-meson
root_part->makeDaughters( 3, listdaug );
EvtParticle *vect, *lep1, *lep2;
vect = root_part->getDaug( 0 );
lep1 = root_part->getDaug( 1 );
lep2 = root_part->getDaug( 2 );
vect->noLifeTime();
lep1->noLifeTime();
lep2->noLifeTime();
vect->init( mesnum, p2 );
lep1->init( l1num, k1 );
lep2->init( l2num, k2 );
EvtSpinDensity rho;
rho.setDiag( root_part->getSpinStates() );
// The amplitude calculation at the
// "maximum amplitude" kinematical configuration
CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf,
res_swch, ias, CKM_A, CKM_lambda, CKM_barrho,
CKM_bareta, ReA7, ImA7, ReA10, ImA10 );
// Now find the probability at this q2 and cos theta lepton point
double nikmax = rho.normalizedProb( amp.getSpinDensity() );
if ( nikmax > maxfoundprob ) {
maxfoundprob = nikmax;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n maxfoundprob ( s =" << s << ", t = " << t_for_s << " ) = "
// << maxfoundprob
// << "\n k =" << k
// << std::endl;
}
delete scalar_part;
// delete root_part;
delete vect;
delete lep1;
delete lep2;
} // for(k=0; k<=max_k; k++)
} // for(j=0; j<=max_j; j++)
} // if(res_swch==0)
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if ( res_swch == 1 ) {
double s, t_for_s; // Mandelstam variables
double t_plus, t_minus; // t-variable boundaries for current s-variable
double dt;
int k;
s = pow( 3.09688, 2.0 ); // s = (M_{J/\psi})^2
t_plus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_plus = t_plus + sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
t_plus *= 0.5;
t_minus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_minus = t_minus -
sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
t_minus *= 0.5;
dt = ( t_plus - t_minus ) / 1000.0;
// The maximum probability calculation
for ( k = 0; k < 1000; k++ ) {
t_for_s = t_minus + dt * ( (double)k );
if ( ( t_for_s > t_plus ) && ( t_for_s <= ( 1.0001 * t_plus ) ) ) {
t_for_s = t_plus;
}
if ( t_for_s > ( 1.0001 * t_plus ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
<< "\n t_for_s = " << t_for_s << " > t_plus = " << t_plus
<< " ! "
<< "\n t_minus = " << t_minus << "\n dt = " << dt
<< "\n k = " << k << "\n s = " << s
<< "\n M1 = " << M1 << "\n M2 = " << M2
<< "\n ml = " << ml << std::endl;
::abort();
}
// B-meson rest frame particles and they kinematics inicialization
double EV, El2;
EV = ( pow( M1, 2.0 ) + pow( M2, 2.0 ) - s ) /
( 2.0 * M1 ); // V-meson energy
El2 = ( s + t_for_s - pow( M2, 2.0 ) - pow( ml, 2.0 ) ) /
( 2.0 * M1 ); // ell^- energy
double modV, modl2;
modV = sqrt( pow( EV, 2.0 ) - pow( M2, 2.0 ) );
modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) );
double cosVellminus; // angle between the vector meson and ell^- directions
cosVellminus = ( pow( M2, 2.0 ) + pow( ml, 2.0 ) + 2.0 * EV * El2 -
t_for_s ) /
( 2.0 * modV * modl2 );
if ( ( fabs( cosVellminus ) > 1.0 ) &&
( fabs( cosVellminus ) <= 1.0001 ) ) {
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
// << "\n cos(theta) = " << cosVellminus
// << std::endl;
cosVellminus = cosVellminus / fabs( cosVellminus );
}
if ( ( modV <= 0.000001 ) || ( modl2 <= 0.000001 ) ) {
cosVellminus = cosVellminus / fabs( cosVellminus );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
// << "\n modV = " << modV
// << "\n modl2 = " << modl2
// << "\n cos(theta) = " << cosVellminus
// << "\n s = " << s
// << "\n t_for_s = " << t_for_s
// << "\n t_plus = " << t_plus
// << "\n t_minus = " << t_minus
// << "\n dt = " << dt
// << "\n EV = " << EV
// << "\n El2 = " << El2
// << "\n M2 = " << M2
// << "\n ml = " << ml
// << std::endl;
}
if ( fabs( cosVellminus ) > 1.0001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
<< "\n |cos(theta)| = " << fabs( cosVellminus ) << " > 1"
<< "\n s = " << s << "\n t_for_s = " << t_for_s
<< "\n t_plus = " << t_plus << "\n t_minus = " << t_minus
<< "\n dt = " << dt << "\n EV = " << EV
<< "\n El2 = " << El2 << "\n modV = " << modV
<< "\n modl2 = " << modl2 << "\n M2 = " << M2
<< "\n ml = " << ml << std::endl;
::abort();
}
EvtVector4R p1, p2, k1, k2;
p1.set( M1, 0.0, 0.0, 0.0 );
p2.set( EV, modV, 0.0, 0.0 );
k2.set( El2, modl2 * cosVellminus,
-modl2 * sqrt( 1.0 - pow( cosVellminus, 2.0 ) ), 0.0 );
k1 = p1 - p2 - k2;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n Debug in the function EvtbTosllScalarAmpNew::CalcMaxProb(...):"
// << "\n mu =" << mu << " Nf =" << Nf
// << " res_swch =" << res_swch
// << " ias =" << ias
// << "\n M1 = " << M1
// << "\n M2 = " << M2
// << "\n ml = " << ml
// << "\n s = " << s
// << "\n t_for_s = " << t_for_s
// << "\n EV = " << EV
// << "\n El1 = " << El1
// << "\n El2 = " << El2
// << "\n modV = " << modV
// << "\n modl1 = " << modl1
// << "\n modl2 = " << modl2
// << "\n cos(theta) = " << cosVellminus
// << "\n p1 =" << p1
// << "\n p2 =" << p2
// << "\n k1 =" << k1
// << "\n k2 =" << k2
// << std::endl;
// B-meson state preparation at the rest frame of B-meson
EvtScalarParticle* scalar_part;
EvtParticle* root_part;
scalar_part = new EvtScalarParticle;
scalar_part->noLifeTime();
scalar_part->init( parnum, p1 );
root_part = (EvtParticle*)scalar_part;
root_part->setDiagonalSpinDensity();
// Amplitude initialization
EvtId listdaug[3];
listdaug[0] = mesnum;
listdaug[1] = l1num;
listdaug[2] = l2num;
EvtAmp amp;
amp.init( parnum, 3, listdaug );
// Daughters states preparation at the rest frame of B-meson
root_part->makeDaughters( 3, listdaug );
EvtParticle *vect, *lep1, *lep2;
vect = root_part->getDaug( 0 );
lep1 = root_part->getDaug( 1 );
lep2 = root_part->getDaug( 2 );
vect->noLifeTime();
lep1->noLifeTime();
lep2->noLifeTime();
vect->init( mesnum, p2 );
lep1->init( l1num, k1 );
lep2->init( l2num, k2 );
EvtSpinDensity rho;
rho.setDiag( root_part->getSpinStates() );
// The amplitude calculation at the
// "maximum amplitude" kinematical configuration
CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf, res_swch,
ias, CKM_A, CKM_lambda, CKM_barrho, CKM_bareta, ReA7, ImA7,
ReA10, ImA10 );
// Now find the probability at this q2 and cos theta lepton point
double nikmax = rho.normalizedProb( amp.getSpinDensity() );
if ( nikmax > maxfoundprob ) {
maxfoundprob = nikmax;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n maxfoundprob ( s =" << s << ", t = " << t_for_s << " ) = "
// << maxfoundprob
// << "\n k =" << k
// << std::endl;
}
delete scalar_part;
// delete root_part;
delete vect;
delete lep1;
delete lep2;
} // for(k=0; k<=1000; k++)
} // if(res_swch==1)
if ( maxfoundprob <= 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllScalarAmpNew::CalcMaxProb(...)"
<< "\n maxfoundprob = " << maxfoundprob << " <0 or =0!"
<< "\n res_swch = " << res_swch << std::endl;
::abort();
}
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n maxfoundprob (...) = " << maxfoundprob << std::endl;
maxfoundprob *= 1.01;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n ***************************************************************************"
// << "\n The function EvtbTosllScalarAmpNew::CalcMaxProb(...) passed with arguments:"
// << "\n mu =" << mu << " Nf =" << Nf
// << " res_swch =" << res_swch
// << " ias =" << ias
// << " \n s_at_max = " << s_at_max
// << " t_at_max = " << t_at_max
// << "\n The distribution maximum maxfoundprob =" << maxfoundprob
// << "\n ***************************************************************************"
// << std::endl;
return maxfoundprob;
}
// Triangular function
double EvtbTosllScalarAmpNewExt::lambda( double a, double b, double c )
{
double l;
l = pow( a, 2.0 ) + pow( b, 2.0 ) + pow( c, 2.0 ) - 2.0 * a * b -
2.0 * a * c - 2.0 * b * c;
return l;
}
diff --git a/src/EvtGenModels/EvtbTosllVectorAmp.cpp b/src/EvtGenModels/EvtbTosllVectorAmp.cpp
index f7fe556..1c1bec4 100644
--- a/src/EvtGenModels/EvtbTosllVectorAmp.cpp
+++ b/src/EvtGenModels/EvtbTosllVectorAmp.cpp
@@ -1,216 +1,195 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtbTosllVectorAmp.cc
-//
-// Description: Routine to implement bTosll decays to vector
-// mesons.
-//
-// Modification history:
-//
-// Ryd January 5,2000 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtbTosllVectorAmp.hh"
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenModels/EvtbTosllAmp.hh"
#include "EvtGenModels/EvtbTosllFF.hh"
void EvtbTosllVectorAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtbTosllFF* formFactors )
{
//Add the lepton and neutrino 4 momenta to find q2
EvtVector4R q = parent->getDaug( 1 )->getP4() + parent->getDaug( 2 )->getP4();
double q2 = ( q.mass2() );
double a1, a2, a0, v, t1, t2, t3;
double mesonmass = parent->getDaug( 0 )->mass();
double parentmass = parent->mass();
formFactors->getVectorFF( parent->getId(), parent->getDaug( 0 )->getId(),
q2, mesonmass, a1, a2, a0, v, t1, t2, t3 );
EvtId daught = parent->getDaug( 0 )->getId();
EvtId parentId = parent->getId();
bool btod = false;
bool nnlo = true;
if ( ( parentId == EvtPDL::getId( "B0" ) ||
parentId == EvtPDL::getId( "anti-B0" ) ||
parentId == EvtPDL::getId( "B+" ) ||
parentId == EvtPDL::getId( "B-" ) ) &&
( daught == EvtPDL::getId( std::string( "rho+" ) ) ||
daught == EvtPDL::getId( std::string( "rho-" ) ) ||
daught == EvtPDL::getId( std::string( "rho0" ) ) ||
daught == EvtPDL::getId( std::string( "omega" ) ) ) ) {
btod = true;
}
if ( ( parentId == EvtPDL::getId( "B_s0" ) ||
parentId == EvtPDL::getId( "anti-B_s0" ) ) &&
( daught == EvtPDL::getId( std::string( "K*0" ) ) ||
daught == EvtPDL::getId( std::string( "anti-K*0" ) ) ||
daught == EvtPDL::getId( std::string( "K*+" ) ) ||
daught == EvtPDL::getId( std::string( "K*-" ) ) ) ) {
btod = true;
}
EvtVector4R p4b;
p4b.set( parent->mass(), 0.0, 0.0, 0.0 );
EvtVector4R p4meson = parent->getDaug( 0 )->getP4();
EvtVector4C l11, l12;
EvtVector4C l21, l22;
EvtVector4C a11, a12;
EvtVector4C a21, a22;
EvtId parentID = parent->getId();
//EvtId l_num = parent->getDaug(1)->getId();
EvtVector4R pbhat = p4b / parentmass;
EvtVector4R qhat = q / parentmass;
EvtVector4R pkstarhat = p4meson / parentmass;
EvtVector4R phat = pbhat + pkstarhat;
EvtComplex c7eff = EvtbTosllAmp::GetC7Eff( q2, nnlo );
EvtComplex c9eff = EvtbTosllAmp::GetC9Eff( q2, nnlo, btod );
EvtComplex c10eff = EvtbTosllAmp::GetC10Eff( q2, nnlo );
EvtComplex uniti( 0.0, 1.0 );
double mhatb = 4.4 / ( parentmass );
double mhatkstar = mesonmass / ( parentmass );
double shat = q2 / ( parentmass * parentmass );
EvtComplex a;
a = c9eff * v * 2 / ( 1 + mhatkstar ) + 4 * mhatb * c7eff * t1 / shat;
EvtComplex b;
b = ( 1 + mhatkstar ) *
( c9eff * a1 + 2 * mhatb * ( 1 - mhatkstar ) * c7eff * t2 / shat );
EvtComplex c;
c = ( ( 1 - mhatkstar ) * c9eff * a2 +
2 * mhatb * c7eff * ( t3 + ( 1 - mhatkstar * mhatkstar ) * t2 / shat ) ) /
( 1 - mhatkstar * mhatkstar );
EvtComplex d;
d = ( c9eff * ( ( 1 + mhatkstar ) * a1 - ( 1 - mhatkstar ) * a2 -
2 * mhatkstar * a0 ) -
2 * mhatb * c7eff * t3 ) /
shat;
EvtComplex e;
e = 2 * c10eff * v / ( 1 + mhatkstar );
EvtComplex f;
f = ( 1 + mhatkstar ) * c10eff * a1;
EvtComplex g;
g = c10eff * a2 / ( 1 + mhatkstar );
EvtComplex h;
h = c10eff *
( ( 1 + mhatkstar ) * a1 - ( 1 - mhatkstar ) * a2 - 2 * mhatkstar * a0 ) /
shat;
EvtTensor4C T1, T2;
static EvtIdSet bmesons( "B-", "anti-B0", "anti-B_s0" );
static EvtIdSet bbarmesons( "B+", "B0", "B_s0" );
EvtParticle* lepPlus = 0;
EvtParticle* lepMinus = 0;
int charge1 = EvtPDL::chg3( parent->getDaug( 1 )->getId() );
int charge2 = EvtPDL::chg3( parent->getDaug( 2 )->getId() );
lepPlus = ( charge1 > charge2 ) ? parent->getDaug( 1 ) : parent->getDaug( 2 );
lepMinus = ( charge1 < charge2 ) ? parent->getDaug( 1 )
: parent->getDaug( 2 );
if ( bmesons.contains( parentID ) ) {
T1 = a * dual( EvtGenFunctions::directProd( pbhat, pkstarhat ) ) -
b * uniti * EvtTensor4C::g() +
c * uniti * EvtGenFunctions::directProd( pbhat, phat ) +
d * uniti * EvtGenFunctions::directProd( pbhat, qhat );
T2 = e * dual( EvtGenFunctions::directProd( pbhat, pkstarhat ) ) -
f * uniti * EvtTensor4C::g() +
g * uniti * EvtGenFunctions::directProd( pbhat, phat ) +
h * uniti * EvtGenFunctions::directProd( pbhat, qhat );
l11 = EvtLeptonVCurrent( lepPlus->spParent( 0 ), lepMinus->spParent( 0 ) );
l21 = EvtLeptonVCurrent( lepPlus->spParent( 1 ), lepMinus->spParent( 0 ) );
l12 = EvtLeptonVCurrent( lepPlus->spParent( 0 ), lepMinus->spParent( 1 ) );
l22 = EvtLeptonVCurrent( lepPlus->spParent( 1 ), lepMinus->spParent( 1 ) );
a11 = EvtLeptonACurrent( lepPlus->spParent( 0 ), lepMinus->spParent( 0 ) );
a21 = EvtLeptonACurrent( lepPlus->spParent( 1 ), lepMinus->spParent( 0 ) );
a12 = EvtLeptonACurrent( lepPlus->spParent( 0 ), lepMinus->spParent( 1 ) );
a22 = EvtLeptonACurrent( lepPlus->spParent( 1 ), lepMinus->spParent( 1 ) );
} else {
if ( bbarmesons.contains( parentID ) ) {
T1 = -a * dual( EvtGenFunctions::directProd( pbhat, pkstarhat ) ) -
b * uniti * EvtTensor4C::g() +
c * uniti * EvtGenFunctions::directProd( pbhat, phat ) +
d * uniti * EvtGenFunctions::directProd( pbhat, qhat );
T2 = -e * dual( EvtGenFunctions::directProd( pbhat, pkstarhat ) ) -
f * uniti * EvtTensor4C::g() +
g * uniti * EvtGenFunctions::directProd( pbhat, phat ) +
h * uniti * EvtGenFunctions::directProd( pbhat, qhat );
l11 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
l21 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
l12 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
l22 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
a11 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
a21 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
a12 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
a22 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << "Wrong lepton number\n";
T1.zero();
T2.zero(); // Set all tensor terms to zero.
}
}
int i;
for ( i = 0; i < 3; i++ ) {
EvtVector4C eps = parent->getDaug( 0 )->epsParent( i ).conj();
EvtVector4C E1 = T1.cont1( eps );
EvtVector4C E2 = T2.cont1( eps );
amp.vertex( i, 0, 0, l11 * E1 + a11 * E2 );
amp.vertex( i, 0, 1, l12 * E1 + a12 * E2 );
amp.vertex( i, 1, 0, l21 * E1 + a21 * E2 );
amp.vertex( i, 1, 1, l22 * E1 + a22 * E2 );
}
}
diff --git a/src/EvtGenModels/EvtbTosllVectorAmpNew.cpp b/src/EvtGenModels/EvtbTosllVectorAmpNew.cpp
index 3ac7df4..3e5038b 100644
--- a/src/EvtGenModels/EvtbTosllVectorAmpNew.cpp
+++ b/src/EvtGenModels/EvtbTosllVectorAmpNew.cpp
@@ -1,881 +1,852 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtbTosllVectorAmpNew.cpp
-//
-// Description: Preparation of the decay amplitude for the process:
-// B_{d,s}(p1,M1) -> V(p2,M2) ell^+(k1,m) ell^-(k2,m).
-// New version.
-//
-// 1. The code of this module is based on the EvtbTosllVectorAmp.cpp
-// module code.
-//
-// Modification history:
-//
-// N.Nikitin (nnikit@mail.cern.ch) April 18,2008 Module created
-// N.Nikitin June 04,2008 Add CKM matrix elements
-// N.Nikitin Jan 03,2009 Vector meson polarisation modification
-// N.Nikitin Feb 21 2011 CalcMaxProb(...) optimisation
-// N.Nikitin Sept 24 2012 Memory distribution optimization
-//
-//------------------------------------------------------------------------
-//
+#include "EvtGenModels/EvtbTosllVectorAmpNew.hh"
+
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVectorParticle.hh"
#include "EvtGenModels/EvtbTosllAmpNew.hh"
#include "EvtGenModels/EvtbTosllFFNew.hh"
#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh"
-// The header file for current class memeber functions description
-#include "EvtGenModels/EvtbTosllVectorAmpNew.hh"
#include <cstdlib>
//
// The main functiom for the amplitude calculation
//
// input: *parent - the pointer to the parent particle (B-meson, the
// object of the EvtParticle class);
// *formFactors - the pointer to instance of EvtbTosllFFNew class object;
// *WilsCoeff - the pointer to the Standart Model Wilson Coefficients class;
// mu - the scale parameter, GeV;
// Nf - number of "effective" flavors (for b-quark Nf=5);
// res_swch - resonant switching parameter:
// = 0 the resonant contribution switched OFF,
// = 1 the resonant contribution switched ON;
// ias - switching parameter for \alpha_s(M_Z) value:
// = 0 PDG 1sigma minimal alpha_s(M_Z),
// = 1 PDG average value alpha_s(M_Z),
// = 2 PDG 1sigma maximal alpha_s(M_Z).
// Wolfenstein parameterization for CKM matrix
// CKM_A, CKM_lambda, CKM_barrho, CKM_bareta
//
// return: amp - amplitude for the decay B -> V ell^+ ell^-
//
// Note: in our calculations we assume, that V-meson is the first
// daughter particle (iV=0) and leptons are the second and thirds
// daughter particles (il1=1 and il2=2).
//
void EvtbTosllVectorAmpNew::CalcAmp( EvtParticle* parent, EvtAmp& amp,
EvtbTosllFFNew* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff,
double mu, int Nf, int res_swch, int ias,
double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta )
{
// FILE *mytest;
EvtComplex unit1( 1.0, 0.0 ); // real unit
EvtComplex uniti( 0.0, 1.0 ); // imaginary unit
int iV = 0; // V-meson is the first daughter particle
int il1 = 1,
il2 = 2; // leptons are the second and thirds daughter particles
// transition momentum of the leptonic pair q=k1+k2 or q=p1-p2
EvtVector4R q = parent->getDaug( il1 )->getP4() +
parent->getDaug( il2 )->getP4();
// Mandelstam variable t=q^2
double q2 = q.mass2();
double M1 = parent->mass(); // B - meson mass
double M2 = parent->getDaug( iV )->mass(); // V - meson mass
double ml = parent->getDaug( il1 )->mass(); // leptonic mass
double ms = 0.0; // light quark mass from the dispersion QM
double mc = formFactors->getQuarkMass( 4 ); // m_c mass from the dispersion QM
double mb = formFactors->getQuarkMass( 5 ); // m_b mass from the dispersion QM
// double Mw = EvtPDL::getNominalMass("W+"); // W-boson mass
// double mt = EvtPDL::getNominalMass("t"); // t-quark mass
double Mw = 80.403; // GeV W-boson mass
double mt = 174.2; // GeV t-quark mass
EvtComplex Vtb, Vtq, Vub, Vuq; // V_{tb}, V_{tq}, V_{ub} and V_{uq}
EvtComplex CKM_factor; // V^*_{tq}*V_{tb}, where q={d,s}
EvtComplex lambda_qu; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}, where q={d,s}
double Relambda_qu, Imlambda_qu;
EvtId idparent = parent->getId(); // B-meson Id
EvtId iddaught = parent->getDaug( iV )->getId(); // The vector meson Id
// set of the light quark mass value
if ( ( idparent == EvtPDL::getId( std::string( "B+" ) ) &&
iddaught == EvtPDL::getId( std::string( "K*+" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B-" ) ) &&
iddaught == EvtPDL::getId( std::string( "K*-" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "K*0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "anti-K*0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "phi" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "phi" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B+" ) ) &&
iddaught == EvtPDL::getId( std::string( "K_1+" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B-" ) ) &&
iddaught == EvtPDL::getId( std::string( "K_1-" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "K_10" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "anti-K_10" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B+" ) ) &&
iddaught == EvtPDL::getId( std::string( "K'_1+" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B-" ) ) &&
iddaught == EvtPDL::getId( std::string( "K'_1-" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "K'_10" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "anti-K'_10" ) ) ) ) {
ms = formFactors->getQuarkMass( 3 ); // m_s mass from the dispersion QM
// V_{ts}
Vtq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) +
pow( CKM_lambda, 2.0 ) *
( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
Vtq = -CKM_A * pow( CKM_lambda, 2.0 ) * Vtq;
// V_{us}
Vuq = CKM_lambda * unit1;
}
if ( ( idparent == EvtPDL::getId( std::string( "B+" ) ) &&
iddaught == EvtPDL::getId( std::string( "rho+" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B-" ) ) &&
iddaught == EvtPDL::getId( std::string( "rho-" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "rho0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "rho0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "omega" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "omega" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "anti-K*0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "K*0" ) ) ) ) {
ms = formFactors->getQuarkMass( 2 ); // m_d mass from the dispersion QM
// V_{td}
Vtq = unit1 - ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) *
( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
Vtq = CKM_A * pow( CKM_lambda, 3.0 ) * Vtq;
// V_{ud}
Vuq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) -
0.125 * pow( CKM_lambda, 4.0 ) );
}
if ( ms < 0.001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbTosllVectorAmpNew::CalcAmp(...)"
<< "\n Error in the model set!"
<< " ms = " << ms << std::endl;
::abort();
}
Vtb = unit1 * ( 1.0 - 0.5 * pow( CKM_A * CKM_lambda * CKM_lambda,
2.0 ) ); // V_{tb}
Vub = CKM_A * pow( CKM_lambda, 3.0 ) *
( CKM_barrho * unit1 - CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ); // V_{ub}
CKM_factor = conj( Vtq ) * Vtb; // V^*_{tq}*V_{tb}
lambda_qu = conj( Vuq ) * Vub /
CKM_factor; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}
Relambda_qu = real( lambda_qu );
Imlambda_qu = imag( lambda_qu );
double a1, a2, a0, v, t1, t2, t3; // B -> V transition form-factors
// To get the B -> V transition form-factors
formFactors->getVectorFF( parent->getId(), parent->getDaug( iV )->getId(),
q2, a1, a2, a0, v, t1, t2, t3 );
// The Wilson Coefficients preparation according to the paper
// A.J.Buras, M.Munz, Phys.Rev.D52, p.189 (1995)
EvtComplex c7gam = WilsCoeff->GetC7Eff( mu, Mw, mt, Nf, ias );
EvtComplex c9eff_b2q = WilsCoeff->GetC9Eff( 0, res_swch, ias, Nf, q2, mb,
ms, mc, mu, mt, Mw, ml,
Relambda_qu, Imlambda_qu );
EvtComplex c9eff_barb2barq = WilsCoeff->GetC9Eff( 1, res_swch, ias, Nf, q2,
mb, ms, mc, mu, mt, Mw, ml,
Relambda_qu, Imlambda_qu );
EvtComplex c10a = WilsCoeff->GetC10Eff( mt, Mw );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n\n The function EvtbTosllVectorAmpNew::CalcAmp(...) passed."
// << "\n Particle masses:"
// << "\n B - meson mass M1 = " << M1
// << "\n V - meson mass M2 = " << M2
// << "\n leptonic mass ml = " << ml
// << "\n light quark mass = " << ms
// << "\n c - quark mass mc = " << mc
// << "\n b - quark mass mb = " << mb
// << "\n t - quark mass mt = " << mt
// << "\n W - boson mass Mw = " << Mw
// << "\n ============================================================================"
// << "\n Input parameters:"
// << "\n scale parameter mu = " << mu
// << "\n number of flavors Nf = " << Nf
// << "\n resonant switching = " << res_swch
// << "\n parameter for alpha_s(M_Z) = " << ias
// << "\n ============================================================================"
// << "\n Vector form-factors at q^2 = " << q2
// << " for B -> V transition:"
// << "\n v = " << v
// << "\n a0 = " << a0
// << "\n a1 = " << a1
// << "\n a2 = " << a2
// << "\n t1 = " << t1
// << "\n t2 = " << t2
// << "\n t3 = " << t3
// << "\n ============================================================================"
// << "\n Wilson Coefficients:"
// << "\n Re(c7gam) = " << real(c7gam) << " Im(c7gam) = " << imag(c7gam)
// << "\n Re(c9eff_b2q) = " << real(c9eff_b2q)
// << " Im(c9eff_b2q) = " << imag(c9eff_b2q)
// << "\n Re(c9eff_barb2barq) = " << real(c9eff_barb2barq)
// << " Im(c9eff_barb2barq) = " << imag(c9eff_barb2barq)
// << "\n Re(c10a) = " << real(c10a) << " Im(c10a) = " << imag(c10a)
// << std::endl;
// mytest = fopen("output.txt","a");
//
// if(mytest != NULL){
// fprintf(mytest,"%lf\n",q2);
// fclose(mytest);
// }
// else{
// EvtGenReport(EVTGEN_ERROR,"EvtGen") << "\n Error in writing to file.\n"
// << std::endl;
// return;
// }
// 4- momentum of the B-meson in the the B-meson rest frame
EvtVector4R p1 = parent->getP4Restframe();
EvtVector4R hatp1 = p1 / M1;
// 4-momentum of the V-meson in the B-meson rest frame
EvtVector4R p2 = parent->getDaug( 0 )->getP4();
EvtVector4R hatp2 = p2 / M1;
double hats = q2 / pow( M1, 2 );
double hatM2 = M2 / M1;
double hatmb = mb / M1;
double hatms = ms / M1;
// Hadronic matrix element coefficients according to the paper
// A. Ali, A. Salim Safir, Eur.Phys.J.C25, pp.583-601 (2002)
// with m_s.NE.0
EvtComplex a_b2q, a_barb2barq, b_b2q, b_barb2barq, c_b2q, c_barb2barq, e, f,
g, h;
a_b2q = 2.0 * c9eff_b2q * v / ( 1.0 + hatM2 ) +
4.0 * ( hatmb + hatms ) * c7gam * t1 / hats;
a_barb2barq = 2.0 * c9eff_barb2barq * v / ( 1.0 + hatM2 ) +
4.0 * ( hatmb + hatms ) * c7gam * t1 / hats;
b_b2q = ( c9eff_b2q * a1 +
2.0 * ( hatmb - hatms ) * ( 1.0 - hatM2 ) * c7gam * t2 / hats ) *
( 1.0 + hatM2 );
b_barb2barq = ( c9eff_barb2barq * a1 + 2.0 * ( hatmb - hatms ) *
( 1.0 - hatM2 ) * c7gam * t2 /
hats ) *
( 1.0 + hatM2 );
c_b2q = ( c9eff_b2q * ( 1.0 - hatM2 ) * a2 +
2.0 * ( hatmb - hatms ) * ( 1.0 - pow( hatM2, 2 ) ) * c7gam * t2 /
hats +
2.0 * ( hatmb - hatms ) * c7gam * t3 ) /
( 1 - pow( hatM2, 2 ) );
c_barb2barq = ( c9eff_barb2barq * ( 1.0 - hatM2 ) * a2 +
2.0 * ( hatmb - hatms ) * ( 1.0 - pow( hatM2, 2 ) ) *
c7gam * t2 / hats +
2.0 * ( hatmb - hatms ) * c7gam * t3 ) /
( 1 - pow( hatM2, 2 ) );
e = 2.0 * c10a * v / ( 1 + hatM2 );
f = ( 1.0 + hatM2 ) * c10a * a1;
g = c10a * a2 / ( 1 + hatM2 );
h = ( ( 1.0 + hatM2 ) * a1 - ( 1.0 - hatM2 ) * a2 - 2.0 * hatM2 * a0 ) *
c10a / hats;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << " a_b2q = " << a_b2q
// << " a_barb2barq = " << a_barb2barq
// << " b_b2q = " << b_b2q
// << " b_barb2barq = " << b_barb2barq
// << " c_b2q = " << c_b2q
// << " c_barb2barq = " << c_barb2barq
// << " e = " << e
// << " f = " << f
// << " g = " << g
// << " h = " << h
// << std::endl;
// to find ell^+ and ell^- in the B-meson daughters
int charge1 = EvtPDL::chg3( parent->getDaug( 1 )->getId() );
int charge2 = EvtPDL::chg3( parent->getDaug( 2 )->getId() );
EvtParticle* lepPlus = 0;
EvtParticle* lepMinus = 0;
lepPlus = ( charge1 > charge2 ) ? parent->getDaug( 1 ) : parent->getDaug( 2 );
lepMinus = ( charge1 < charge2 ) ? parent->getDaug( 1 )
: parent->getDaug( 2 );
EvtTensor4C T1, T2; // hadronic matrix element tensor structures
EvtVector4C epsV; // vector meson polarisation vector
int i; // vector meson polarisations counter
EvtVector4C lvc11, lvc12; // spin structures for
EvtVector4C lvc21, lvc22; // the leptonic vector current
EvtVector4C lac11, lac12; // spin structures for
EvtVector4C lac21, lac22; // the leptonic axial current
// B - and barB - mesons descriptors
EvtIdSet bmesons( "B-", "anti-B0", "anti-B_s0", "B_c-" );
EvtIdSet bbarmesons( "B+", "B0", "B_s0", "B_c+" );
EvtId parentID = parent->getId();
if ( bmesons.contains( parentID ) ) {
// The amplitude for the decay barB -> barV ell^+ ell^-
// (b -> q ell^+ ell^- transition)
T1 = -a_b2q * unit1 * dual( EvtGenFunctions::directProd( hatp1, hatp2 ) ) -
b_b2q * uniti * EvtTensor4C::g() +
c_b2q * uniti *
EvtGenFunctions::directProd( ( hatp1 + hatp2 ), hatp1 );
T2 = -e * unit1 * dual( EvtGenFunctions::directProd( hatp1, hatp2 ) ) -
f * uniti * EvtTensor4C::g() +
g * uniti * EvtGenFunctions::directProd( ( hatp1 + hatp2 ), hatp1 ) +
h * uniti * EvtGenFunctions::directProd( ( hatp1 - hatp2 ), hatp1 );
lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lac11 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lac21 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lac12 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lac22 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
// summing up vector meson polarisations \epsilon^*_{\nu}(i)
for ( i = 0; i < 3; i++ ) {
EvtVector4C epsV = parent->getDaug( 0 )->epsParent( i ).conj();
EvtVector4C E1 = M1 * T1.cont2( epsV );
EvtVector4C E2 = M1 * T2.cont2( epsV );
amp.vertex( i, 0, 0, CKM_factor * ( lvc11 * E1 + lac11 * E2 ) );
amp.vertex( i, 0, 1, CKM_factor * ( lvc12 * E1 + lac12 * E2 ) );
amp.vertex( i, 1, 0, CKM_factor * ( lvc21 * E1 + lac21 * E2 ) );
amp.vertex( i, 1, 1, CKM_factor * ( lvc22 * E1 + lac22 * E2 ) );
}
} else {
if ( bbarmesons.contains( parentID ) ) {
// The amplitude for the decay B -> V ell^+ ell^-
// (barb -> barq ell^+ ell^- transition)
T1 = a_barb2barq * unit1 *
dual( EvtGenFunctions::directProd( hatp1, hatp2 ) ) -
b_barb2barq * uniti * EvtTensor4C::g() +
c_barb2barq * uniti *
EvtGenFunctions::directProd( ( hatp1 + hatp2 ), hatp1 );
T2 = e * unit1 * dual( EvtGenFunctions::directProd( hatp1, hatp2 ) ) -
f * uniti * EvtTensor4C::g() +
g * uniti *
EvtGenFunctions::directProd( ( hatp1 + hatp2 ), hatp1 ) +
h * uniti *
EvtGenFunctions::directProd( ( hatp1 - hatp2 ), hatp1 );
lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lac11 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lac21 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lac12 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lac22 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
// summing up vector meson polarisations \epsilon^*_{\nu}(i)
for ( i = 0; i < 3; i++ ) {
EvtVector4C barepsV = parent->getDaug( 0 )->epsParent( i ).conj();
EvtVector4C E3 = M1 * T1.cont2( barepsV );
EvtVector4C E4 = M1 * T2.cont2( barepsV );
amp.vertex( i, 0, 0,
conj( CKM_factor ) * ( lvc11 * E3 + lac11 * E4 ) );
amp.vertex( i, 0, 1,
conj( CKM_factor ) * ( lvc12 * E3 + lac12 * E4 ) );
amp.vertex( i, 1, 0,
conj( CKM_factor ) * ( lvc21 * E3 + lac21 * E4 ) );
amp.vertex( i, 1, 1,
conj( CKM_factor ) * ( lvc22 * E3 + lac22 * E4 ) );
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbTosllVectorAmpNew::CalcAmp(...)"
<< "\n Wrong B-meson number" << std::endl;
::abort();
}
}
// Test of the signature for Levi-Civita tensor
// EvtVector4C Vec0, Vec1, Vec2, Vec3;
// EvtTensor4C Ttest;
// Vec0.set(1.0,0.0,0.0,0.0);
// Vec1.set(0.0,1.0,0.0,0.0);
// Vec2.set(0.0,0.0,1.0,0.0);
// Vec3.set(0.0,0.0,0.0,1.0);
// Ttest=dual(directProd(Vec2,Vec3));
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n\n\n e^{0123} =" << Ttest.get(0,1) << std::endl;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << " e^{1023} =" << Ttest.get(1,0) << std::endl;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << " e^{1123} =" << Ttest.get(1,1) << "\n" << std::endl;
// EvtVector4C Vtest=Ttest.cont2(Vec1);
// for(i=0;i<=3;i++){
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << " Vtest =" << Vtest.get(i) << std::endl;
// }
// EvtComplex Atest;
// Atest=Vec0*Vtest;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n Atest =" << Atest << "\n\n\n" << std::endl;
}
//
// The decays B -> V ell^+ ell^- maximum probability calculation for the
// d^2\Gamma/dq^2 d\cos\theta distribution.
//
// \theta - the angle between the vector meson and ell^- directions in the
// B-meson rest frame.
//
// If ias=0 (nonresonant case), the maximum is achieved at q2=q2_min=4*ml^2.
// If ias=1 (resonant case), the maximum is achieved at q2=M^2_{J/\psi}.
//
double EvtbTosllVectorAmpNew::CalcMaxProb(
EvtId parnum, EvtId mesnum, EvtId l1num, EvtId l2num,
EvtbTosllFFNew* formFactors, EvtbTosllWilsCoeffNLO* WilsCoeff, double mu,
int Nf, int res_swch, int ias, double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta )
{
double maxfoundprob = -100.0; // maximum of the probability
int katmax = 0;
double M1 = EvtPDL::getMeanMass( parnum ); // B - meson mass
double M2 = EvtPDL::getMeanMass( mesnum ); // V - meson mass
double ml = EvtPDL::getMeanMass( l1num ); // leptonic mass
if ( res_swch == 0 ) {
// B-meson rest frame particles and they kinematics inicialization
double s_min, t_for_s;
s_min = 4.0 * pow( ml, 2.0 );
t_for_s = 0.5 *
( pow( M1, 2.0 ) + pow( M2, 2.0 ) - 2.0 * pow( ml, 2.0 ) );
double EV, El2;
EV = ( pow( M1, 2.0 ) + pow( M2, 2.0 ) - s_min ) /
( 2.0 * M1 ); // V-meson energy
El2 = ( s_min + t_for_s - pow( M2, 2.0 ) - pow( ml, 2.0 ) ) /
( 2.0 * M1 ); // ell^- energy
double modV, modl2;
modV = sqrt( pow( EV, 2.0 ) - pow( M2, 2.0 ) );
modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) );
double cosVellminus; // angle between the vector meson and ell^- directions
cosVellminus = ( pow( M2, 2.0 ) + pow( ml, 2.0 ) + 2.0 * EV * El2 -
t_for_s ) /
( 2.0 * modV * modl2 );
if ( ( fabs( cosVellminus ) > 1.0 ) &&
( fabs( cosVellminus ) <= 1.0001 ) ) {
// EvtGenReport(EVTGEN_DEBUG,"EvtGen")
// << "\n Debug in the function EvtbTosllVectorAmpNew::CalcMaxProb(...):"
// << "\n cos(theta) = " << cosVellminus
// << std::endl;
cosVellminus = cosVellminus / fabs( cosVellminus );
}
if ( ( modV <= 0.000001 ) || ( modl2 <= 0.000001 ) ) {
cosVellminus = cosVellminus / fabs( cosVellminus );
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n Debug in the function EvtbTosllVectorAmpNew::CalcMaxProb(...):"
<< "\n modV = " << modV << "\n modl2 = " << modl2
<< "\n cos(theta) = " << cosVellminus
<< "\n t_for_s = " << t_for_s << "\n s_min = " << s_min
<< "\n EV = " << EV << "\n El2 = " << El2
<< "\n M2 = " << M2 << "\n ml = " << ml
<< std::endl;
}
if ( fabs( cosVellminus ) > 1.0001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllVectorAmpNew::CalcMaxProb(...)"
<< "\n |cos(theta)| = " << fabs( cosVellminus ) << " > 1"
<< "\n s_min = " << s_min << "\n t_for_s = " << t_for_s
<< "\n EV = " << EV << "\n El2 = " << El2
<< "\n modV = " << modV << "\n modl2 = " << modl2
<< "\n M2 = " << M2 << "\n ml = " << ml << std::endl;
::abort();
}
EvtVector4R p1, p2, k1, k2;
p1.set( M1, 0.0, 0.0, 0.0 );
p2.set( EV, modV, 0.0, 0.0 );
k2.set( El2, modl2 * cosVellminus,
-modl2 * sqrt( 1.0 - pow( cosVellminus, 2.0 ) ), 0.0 );
k1 = p1 - p2 - k2;
// EvtGenReport(EVTGEN_DEBUG,"EvtGen")
// << "\n Debug in the function EvtbTosllVectorAmpNew::CalcMaxProb(...):"
// << "\n mu =" << mu << " Nf =" << Nf
// << " res_swch =" << res_swch
// << " ias =" << ias
// << "\n CKM_A = " << CKM_A
// << " CKM_lambda = " << CKM_lambda
// << "\n CKM_barrho = " << CKM_barrho
// << " CKM_bareta = " << CKM_bareta
// << "\n M1 = " << M1
// << "\n M2 = " << M2
// << "\n ml = " << ml
// << "\n s_min = " << s_min
// << "\n t_for_s = " << t_for_s
// << "\n EV = " << EV
// << "\n El1 = " << El1
// << "\n El2 = " << El2
// << "\n modV = " << modV
// << "\n modl1 = " << modl1
// << "\n modl2 = " << modl2
// << "\n cos(theta) = " << cosVellminus
// << "\n p1 =" << p1
// << "\n p2 =" << p2
// << "\n k1 =" << k1
// << "\n k2 =" << k2
// << std::endl;
// B-meson state preparation at the rest frame of B-meson
EvtScalarParticle* scalar_part;
EvtParticle* root_part;
scalar_part = new EvtScalarParticle;
scalar_part->noLifeTime();
scalar_part->init( parnum, p1 );
root_part = (EvtParticle*)scalar_part;
root_part->setDiagonalSpinDensity();
// Amplitude initialization
EvtId listdaug[3];
listdaug[0] = mesnum;
listdaug[1] = l1num;
listdaug[2] = l2num;
EvtAmp amp;
amp.init( parnum, 3, listdaug );
// Daughters states preparation at the rest frame of B-meson
root_part->makeDaughters( 3, listdaug );
EvtParticle *vect, *lep1, *lep2;
vect = root_part->getDaug( 0 );
lep1 = root_part->getDaug( 1 );
lep2 = root_part->getDaug( 2 );
vect->noLifeTime();
lep1->noLifeTime();
lep2->noLifeTime();
vect->init( mesnum, p2 );
lep1->init( l1num, k1 );
lep2->init( l2num, k2 );
EvtSpinDensity rho;
rho.setDiag( root_part->getSpinStates() );
// The amplitude calculation at the
// "maximum amplitude" kinematical configuration
CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf, res_swch, ias,
CKM_A, CKM_lambda, CKM_barrho, CKM_bareta );
// Now find the probability at this q2 and cos theta lepton point
maxfoundprob = rho.normalizedProb( amp.getSpinDensity() );
delete scalar_part;
// delete root_part;
delete vect;
delete lep1;
delete lep2;
} // if(res_swch==0)
if ( res_swch == 1 ) {
double s, t_for_s; // Mandelstam variables
double t_plus, t_minus; // t-variable boundaries for current s-variable
double dt;
int k;
s = pow( 3.09688, 2.0 ); // s = (M_{J/\psi})^2
t_plus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_plus = t_plus + sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
t_plus *= 0.5;
t_minus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_minus = t_minus -
sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
t_minus *= 0.5;
dt = ( t_plus - t_minus ) / 1000.0;
// The maximum probability calculation
for ( k = 0; k <= 1000; k++ ) {
t_for_s = t_plus - dt * ( (double)k );
if ( ( t_for_s < t_minus ) && ( t_for_s >= ( 0.9999 * t_minus ) ) ) {
t_for_s = t_minus;
}
if ( t_for_s < ( 0.9999 * t_minus ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllVectorAmpNew::CalcMaxProb(...)"
<< "\n t_for_s = " << t_for_s << " < t_minus = " << t_minus
<< " ! "
<< "\n t_plus = " << t_plus << "\n dt = " << dt
<< "\n k = " << k << "\n s = " << s
<< "\n M1 = " << M1 << "\n M2 = " << M2
<< "\n ml = " << ml << std::endl;
::abort();
}
// B-meson rest frame particles and they kinematics inicialization
double EV, El2;
EV = ( pow( M1, 2.0 ) + pow( M2, 2.0 ) - s ) /
( 2.0 * M1 ); // V-meson energy
El2 = ( s + t_for_s - pow( M2, 2.0 ) - pow( ml, 2.0 ) ) /
( 2.0 * M1 ); // ell^- energy
double modV, modl2;
modV = sqrt( pow( EV, 2.0 ) - pow( M2, 2.0 ) );
modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) );
double cosVellminus; // angle between the vector meson and ell^- directions
cosVellminus = ( pow( M2, 2.0 ) + pow( ml, 2.0 ) + 2.0 * EV * El2 -
t_for_s ) /
( 2.0 * modV * modl2 );
if ( ( fabs( cosVellminus ) > 1.0 ) &&
( fabs( cosVellminus ) <= 1.0001 ) ) {
// EvtGenReport(EVTGEN_DEBUG,"EvtGen")
// << "\n Debug in the function EvtbTosllVectorAmpNew::CalcMaxProb(...):"
// << "\n cos(theta) = " << cosVellminus
// << std::endl;
cosVellminus = cosVellminus / fabs( cosVellminus );
}
if ( ( modV <= 0.000001 ) || ( modl2 <= 0.000001 ) ) {
cosVellminus = cosVellminus / fabs( cosVellminus );
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n Debug in the function EvtbTosllVectorAmpNew::CalcMaxProb(...):"
<< "\n modV = " << modV << "\n modl2 = " << modl2
<< "\n cos(theta) = " << cosVellminus
<< "\n s = " << s << "\n t_for_s = " << t_for_s
<< "\n t_plus = " << t_plus
<< "\n t_minus = " << t_minus << "\n dt = " << dt
<< "\n EV = " << EV << "\n El2 = " << El2
<< "\n M2 = " << M2 << "\n ml = " << ml
<< std::endl;
}
if ( fabs( cosVellminus ) > 1.0001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllVectorAmpNew::CalcMaxProb(...)"
<< "\n |cos(theta)| = " << fabs( cosVellminus ) << " > 1"
<< "\n s = " << s << "\n t_for_s = " << t_for_s
<< "\n EV = " << EV << "\n El2 = " << El2
<< "\n modV = " << modV << "\n modl2 = " << modl2
<< "\n M2 = " << M2 << "\n ml = " << ml
<< std::endl;
::abort();
}
EvtVector4R p1, p2, k1, k2;
p1.set( M1, 0.0, 0.0, 0.0 );
p2.set( EV, modV, 0.0, 0.0 );
k2.set( El2, modl2 * cosVellminus,
-modl2 * sqrt( 1.0 - pow( cosVellminus, 2.0 ) ), 0.0 );
k1 = p1 - p2 - k2;
// EvtGenReport(EVTGEN_DEBUG,"EvtGen")
// << "\n Debug in the function EvtbTosllVectorAmpNew::CalcMaxProb(...):"
// << "\n mu =" << mu << " Nf =" << Nf
// << " res_swch =" << res_swch
// << " ias =" << ias
// << "\n CKM_A = " << CKM_A
// << " CKM_lambda = " << CKM_lambda
// << "\n CKM_barrho = " << CKM_barrho
// << " CKM_bareta = " << CKM_bareta
// << "\n M1 = " << M1
// << "\n M2 = " << M2
// << "\n ml = " << ml
// << "\n s = " << s
// << "\n t_for_s = " << t_for_s
// << "\n EV = " << EV
// << "\n El1 = " << El1
// << "\n El2 = " << El2
// << "\n modV = " << modV
// << "\n modl1 = " << modl1
// << "\n modl2 = " << modl2
// << "\n cos(theta) = " << cosVellminus
// << "\n p1 =" << p1
// << "\n p2 =" << p2
// << "\n k1 =" << k1
// << "\n k2 =" << k2
// << std::endl;
// B-meson state preparation at the rest frame of B-meson
EvtScalarParticle* scalar_part;
EvtParticle* root_part;
scalar_part = new EvtScalarParticle;
scalar_part->noLifeTime();
scalar_part->init( parnum, p1 );
root_part = (EvtParticle*)scalar_part;
root_part->setDiagonalSpinDensity();
// Amplitude initialization
EvtId listdaug[3];
listdaug[0] = mesnum;
listdaug[1] = l1num;
listdaug[2] = l2num;
EvtAmp amp;
amp.init( parnum, 3, listdaug );
// Daughters states preparation at the rest frame of B-meson
root_part->makeDaughters( 3, listdaug );
EvtParticle *vect, *lep1, *lep2;
vect = root_part->getDaug( 0 );
lep1 = root_part->getDaug( 1 );
lep2 = root_part->getDaug( 2 );
vect->noLifeTime();
lep1->noLifeTime();
lep2->noLifeTime();
vect->init( mesnum, p2 );
lep1->init( l1num, k1 );
lep2->init( l2num, k2 );
EvtSpinDensity rho;
rho.setDiag( root_part->getSpinStates() );
// The amplitude calculation at the
// "maximum amplitude" kinematical configuration
CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf, res_swch,
ias, CKM_A, CKM_lambda, CKM_barrho, CKM_bareta );
// Now find the probability at this q2 and cos theta lepton point
double nikmax = rho.normalizedProb( amp.getSpinDensity() );
if ( nikmax > maxfoundprob ) {
maxfoundprob = nikmax;
katmax = k;
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n maxfoundprob ( s =" << s << ", t = " << t_for_s
<< " ) = " << maxfoundprob << "\n k =" << katmax
<< std::endl;
}
delete scalar_part;
// delete root_part;
delete vect;
delete lep1;
delete lep2;
} // for(k=0; k<=1000; k++)
} // if(res_swch==1)
if ( maxfoundprob <= 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllVectorAmpNew::CalcMaxProb(...)"
<< "\n maxfoundprob = " << maxfoundprob << " <0 or =0!"
<< "\n res_swch = " << res_swch << std::endl;
::abort();
}
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n maxfoundprob (...) = " << maxfoundprob << std::endl;
maxfoundprob *= 1.01;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n ***************************************************************************"
// << "\n The function EvtbTosllVectorAmpNew::CalcMaxProb(...) passed with arguments:"
// << "\n mu =" << mu << " Nf =" << Nf
// << " res_swch =" << res_swch
// << " ias =" << ias
// << "\n CKM_A = " << CKM_A
// << " CKM_lambda = " << CKM_lambda
// << "\n CKM_barrho = " << CKM_barrho
// << " CKM_bareta = " << CKM_bareta
// << "\n The distribution maximum maxfoundprob =" << maxfoundprob
// << "\n k = " << katmax
// << "\n ***************************************************************************"
// << std::endl;
return maxfoundprob;
}
// Triangular function
double EvtbTosllVectorAmpNew::lambda( double a, double b, double c )
{
double l;
l = pow( a, 2.0 ) + pow( b, 2.0 ) + pow( c, 2.0 ) - 2.0 * a * b -
2.0 * a * c - 2.0 * b * c;
return l;
}
diff --git a/src/EvtGenModels/EvtbTosllVectorAmpNewExt.cpp b/src/EvtGenModels/EvtbTosllVectorAmpNewExt.cpp
index 3f0f303..9c81811 100644
--- a/src/EvtGenModels/EvtbTosllVectorAmpNewExt.cpp
+++ b/src/EvtGenModels/EvtbTosllVectorAmpNewExt.cpp
@@ -1,890 +1,862 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtbTosllVectorAmpNewExt.cpp
-//
-// Description: Preparation of the decay amplitude for the process:
-// B_{d,s}(p1,M1) -> (V(p2,M2) or A(p2,M2)) ell^+(k1,m) ell^-(k2,m)
-// for the SM extensions.
-//
-// 1. The code of this module is based on the EvtbTosllVectorAmpNew.cpp
-// module code.
-//
-// Modification history:
-//
-// N.Nikitin (nnikit@mail.cern.ch) June 18,2011 Module created
-// N.Nikitin (nnikit@mail.cern.ch) Nov 09,2011 Module retested
-// N.Nikitin (nnikit@mail.cern.ch) Jan 26,2012 Add B -> (K_1(1270), B -> K_1(1400)) ell^+ ell^- decya channels
-// N.Nikitin Sept 24 2012 Memory distribution optimization
-//
-//------------------------------------------------------------------------
-//
+#include "EvtGenModels/EvtbTosllVectorAmpNewExt.hh"
+
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVectorParticle.hh"
#include "EvtGenModels/EvtbTosllAmpNewExt.hh"
#include "EvtGenModels/EvtbTosllFFNew.hh"
#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh"
-// The header file for current class memeber functions description
-#include "EvtGenModels/EvtbTosllVectorAmpNewExt.hh"
#include <cstdlib>
//
// The main functiom for the amplitude calculation
//
// input: *parent - the pointer to the parent particle (B-meson, the
// object of the EvtParticle class);
// *formFactors - the pointer to instance of EvtbTosllFFNew class object;
// *WilsCoeff - the pointer to the Standart Model Wilson Coefficients class;
// mu - the scale parameter, GeV;
// Nf - number of "effective" flavors (for b-quark Nf=5);
// res_swch - resonant switching parameter:
// = 0 the resonant contribution switched OFF,
// = 1 the resonant contribution switched ON;
// ias - switching parameter for \alpha_s(M_Z) value:
// = 0 PDG 1sigma minimal alpha_s(M_Z),
// = 1 PDG average value alpha_s(M_Z),
// = 2 PDG 1sigma maximal alpha_s(M_Z).
// Wolfenstein parameterization for CKM matrix
// CKM_A, CKM_lambda, CKM_barrho, CKM_bareta
// Multiplication coefficients
// A7 = ReA7 + i*ImA7
// A10 = ReA10 + i*ImA10
//
// return: amp - amplitude for the decay B -> V ell^+ ell^-
//
// Note: in our calculations we assume, that V-meson is the first
// daughter particle (iV=0) and leptons are the second and thirds
// daughter particles (il1=1 and il2=2).
//
void EvtbTosllVectorAmpNewExt::CalcAmp(
EvtParticle* parent, EvtAmp& amp, EvtbTosllFFNew* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf, int res_swch, int ias,
double CKM_A, double CKM_lambda, double CKM_barrho, double CKM_bareta,
double ReA7, double ImA7, double ReA10, double ImA10 )
{
// FILE *mytest;
EvtComplex unit1( 1.0, 0.0 ); // real unit
EvtComplex uniti( 0.0, 1.0 ); // imaginary unit
EvtComplex A7 = ReA7 * unit1 + ImA7 * uniti;
EvtComplex A10 = ReA10 * unit1 + ImA10 * uniti;
int iV = 0; // V-meson is the first daughter particle
int il1 = 1,
il2 = 2; // leptons are the second and thirds daughter particles
// transition momentum of the leptonic pair q=k1+k2 or q=p1-p2
EvtVector4R q = parent->getDaug( il1 )->getP4() +
parent->getDaug( il2 )->getP4();
// Mandelstam variable t=q^2
double q2 = q.mass2();
double M1 = parent->mass(); // B - meson mass
double M2 = parent->getDaug( iV )->mass(); // V - meson mass
double ml = parent->getDaug( il1 )->mass(); // leptonic mass
double ms = 0.0; // light quark mass from the dispersion QM
double mc = formFactors->getQuarkMass( 4 ); // m_c mass from the dispersion QM
double mb = formFactors->getQuarkMass( 5 ); // m_b mass from the dispersion QM
// double Mw = EvtPDL::getNominalMass("W+"); // W-boson mass
// double mt = EvtPDL::getNominalMass("t"); // t-quark mass
double Mw = 80.403; // GeV W-boson mass
double mt = 174.2; // GeV t-quark mass
EvtComplex Vtb, Vtq, Vub, Vuq; // V_{tb}, V_{tq}, V_{ub} and V_{uq}
EvtComplex CKM_factor; // V^*_{tq}*V_{tb}, where q={d,s}
EvtComplex lambda_qu; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}, where q={d,s}
double Relambda_qu, Imlambda_qu;
EvtId idparent = parent->getId(); // B-meson Id
EvtId iddaught = parent->getDaug( iV )->getId(); // The vector meson Id
// set of the light quark mass value
if ( ( idparent == EvtPDL::getId( std::string( "B+" ) ) &&
iddaught == EvtPDL::getId( std::string( "K*+" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B-" ) ) &&
iddaught == EvtPDL::getId( std::string( "K*-" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "K*0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "anti-K*0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "phi" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "phi" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B+" ) ) &&
iddaught == EvtPDL::getId( std::string( "K_1+" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B-" ) ) &&
iddaught == EvtPDL::getId( std::string( "K_1-" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "K_10" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "anti-K_10" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B+" ) ) &&
iddaught == EvtPDL::getId( std::string( "K'_1+" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B-" ) ) &&
iddaught == EvtPDL::getId( std::string( "K'_1-" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "K'_10" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "anti-K'_10" ) ) ) ) {
ms = formFactors->getQuarkMass( 3 ); // m_s mass from the dispersion QM
// V_{ts}
Vtq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) +
pow( CKM_lambda, 2.0 ) *
( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
Vtq = -CKM_A * pow( CKM_lambda, 2.0 ) * Vtq;
// V_{us}
Vuq = CKM_lambda * unit1;
}
if ( ( idparent == EvtPDL::getId( std::string( "B+" ) ) &&
iddaught == EvtPDL::getId( std::string( "rho+" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B-" ) ) &&
iddaught == EvtPDL::getId( std::string( "rho-" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "rho0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "rho0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "omega" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) &&
iddaught == EvtPDL::getId( std::string( "omega" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "anti-K*0" ) ) ) ||
( idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) &&
iddaught == EvtPDL::getId( std::string( "K*0" ) ) ) ) {
ms = formFactors->getQuarkMass( 2 ); // m_d mass from the dispersion QM
// V_{td}
Vtq = unit1 - ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) *
( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
Vtq = CKM_A * pow( CKM_lambda, 3.0 ) * Vtq;
// V_{ud}
Vuq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) -
0.125 * pow( CKM_lambda, 4.0 ) );
}
if ( ms < 0.001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbTosllVectorAmpNew::CalcAmp(...)"
<< "\n Error in the model set!"
<< " ms = " << ms << std::endl;
::abort();
}
Vtb = unit1 * ( 1.0 - 0.5 * pow( CKM_A * CKM_lambda * CKM_lambda,
2.0 ) ); // V_{tb}
Vub = CKM_A * pow( CKM_lambda, 3.0 ) *
( CKM_barrho * unit1 - CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ); // V_{ub}
CKM_factor = conj( Vtq ) * Vtb; // V^*_{tq}*V_{tb}
lambda_qu = conj( Vuq ) * Vub /
CKM_factor; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}
Relambda_qu = real( lambda_qu );
Imlambda_qu = imag( lambda_qu );
double a1, a2, a0, v, t1, t2, t3; // B -> V transition form-factors
// To get the B -> V transition form-factors
formFactors->getVectorFF( parent->getId(), parent->getDaug( iV )->getId(),
q2, a1, a2, a0, v, t1, t2, t3 );
// The Wilson Coefficients preparation according to the paper
// A.J.Buras, M.Munz, Phys.Rev.D52, p.189 (1995)
EvtComplex c7gam = WilsCoeff->GetC7Eff( mu, Mw, mt, Nf, ias );
c7gam = c7gam * A7;
EvtComplex c9eff_b2q = WilsCoeff->GetC9Eff( 0, res_swch, ias, Nf, q2, mb,
ms, mc, mu, mt, Mw, ml,
Relambda_qu, Imlambda_qu );
EvtComplex c9eff_barb2barq = WilsCoeff->GetC9Eff( 1, res_swch, ias, Nf, q2,
mb, ms, mc, mu, mt, Mw, ml,
Relambda_qu, Imlambda_qu );
EvtComplex c10a = WilsCoeff->GetC10Eff( mt, Mw );
c10a = c10a * A10;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n\n The function EvtbTosllVectorAmpNew::CalcAmp(...) passed."
// << "\n Particle masses:"
// << "\n B - meson mass M1 = " << M1
// << "\n V - meson mass M2 = " << M2
// << "\n leptonic mass ml = " << ml
// << "\n light quark mass = " << ms
// << "\n c - quark mass mc = " << mc
// << "\n b - quark mass mb = " << mb
// << "\n t - quark mass mt = " << mt
// << "\n W - boson mass Mw = " << Mw
// << "\n ============================================================================"
// << "\n Input parameters:"
// << "\n scale parameter mu = " << mu
// << "\n number of flavors Nf = " << Nf
// << "\n resonant switching = " << res_swch
// << "\n parameter for alpha_s(M_Z) = " << ias
// << "\n ============================================================================"
// << "\n Vector form-factors at q^2 = " << q2
// << " for B -> V transition:"
// << "\n v = " << v
// << "\n a0 = " << a0
// << "\n a1 = " << a1
// << "\n a2 = " << a2
// << "\n t1 = " << t1
// << "\n t2 = " << t2
// << "\n t3 = " << t3
// << "\n ============================================================================"
// << "\n Wilson Coefficients:"
// << "\n Re(c7gam) = " << real(c7gam) << " Im(c7gam) = " << imag(c7gam)
// << "\n Re(c9eff_b2q) = " << real(c9eff_b2q)
// << " Im(c9eff_b2q) = " << imag(c9eff_b2q)
// << "\n Re(c9eff_barb2barq) = " << real(c9eff_barb2barq)
// << " Im(c9eff_barb2barq) = " << imag(c9eff_barb2barq)
// << "\n Re(c10a) = " << real(c10a) << " Im(c10a) = " << imag(c10a)
// << std::endl;
// mytest = fopen("output.txt","a");
//
// if(mytest != NULL){
// fprintf(mytest,"%lf\n",q2);
// fclose(mytest);
// }
// else{
// EvtGenReport(EVTGEN_ERROR,"EvtGen") << "\n Error in writing to file.\n"
// << std::endl;
// return;
// }
// 4- momentum of the B-meson in the the B-meson rest frame
EvtVector4R p1 = parent->getP4Restframe();
EvtVector4R hatp1 = p1 / M1;
// 4-momentum of the V-meson in the B-meson rest frame
EvtVector4R p2 = parent->getDaug( 0 )->getP4();
EvtVector4R hatp2 = p2 / M1;
double hats = q2 / pow( M1, 2 );
double hatM2 = M2 / M1;
double hatmb = mb / M1;
double hatms = ms / M1;
// Hadronic matrix element coefficients according to the paper
// A. Ali, A. Salim Safir, Eur.Phys.J.C25, pp.583-601 (2002)
// with m_s.NE.0
EvtComplex a_b2q, a_barb2barq, b_b2q, b_barb2barq, c_b2q, c_barb2barq, e, f,
g, h;
a_b2q = 2.0 * c9eff_b2q * v / ( 1.0 + hatM2 ) +
4.0 * ( hatmb + hatms ) * c7gam * t1 / hats;
a_barb2barq = 2.0 * c9eff_barb2barq * v / ( 1.0 + hatM2 ) +
4.0 * ( hatmb + hatms ) * c7gam * t1 / hats;
b_b2q = ( c9eff_b2q * a1 +
2.0 * ( hatmb - hatms ) * ( 1.0 - hatM2 ) * c7gam * t2 / hats ) *
( 1.0 + hatM2 );
b_barb2barq = ( c9eff_barb2barq * a1 + 2.0 * ( hatmb - hatms ) *
( 1.0 - hatM2 ) * c7gam * t2 /
hats ) *
( 1.0 + hatM2 );
c_b2q = ( c9eff_b2q * ( 1.0 - hatM2 ) * a2 +
2.0 * ( hatmb - hatms ) * ( 1.0 - pow( hatM2, 2 ) ) * c7gam * t2 /
hats +
2.0 * ( hatmb - hatms ) * c7gam * t3 ) /
( 1 - pow( hatM2, 2 ) );
c_barb2barq = ( c9eff_barb2barq * ( 1.0 - hatM2 ) * a2 +
2.0 * ( hatmb - hatms ) * ( 1.0 - pow( hatM2, 2 ) ) *
c7gam * t2 / hats +
2.0 * ( hatmb - hatms ) * c7gam * t3 ) /
( 1 - pow( hatM2, 2 ) );
e = 2.0 * c10a * v / ( 1 + hatM2 );
f = ( 1.0 + hatM2 ) * c10a * a1;
g = c10a * a2 / ( 1 + hatM2 );
h = ( ( 1.0 + hatM2 ) * a1 - ( 1.0 - hatM2 ) * a2 - 2.0 * hatM2 * a0 ) *
c10a / hats;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << " a_b2q = " << a_b2q
// << " a_barb2barq = " << a_barb2barq
// << " b_b2q = " << b_b2q
// << " b_barb2barq = " << b_barb2barq
// << " c_b2q = " << c_b2q
// << " c_barb2barq = " << c_barb2barq
// << " e = " << e
// << " f = " << f
// << " g = " << g
// << " h = " << h
// << std::endl;
// to find ell^+ and ell^- in the B-meson daughters
int charge1 = EvtPDL::chg3( parent->getDaug( 1 )->getId() );
int charge2 = EvtPDL::chg3( parent->getDaug( 2 )->getId() );
EvtParticle* lepPlus = 0;
EvtParticle* lepMinus = 0;
lepPlus = ( charge1 > charge2 ) ? parent->getDaug( 1 ) : parent->getDaug( 2 );
lepMinus = ( charge1 < charge2 ) ? parent->getDaug( 1 )
: parent->getDaug( 2 );
EvtTensor4C T1, T2; // hadronic matrix element tensor structures
EvtVector4C epsV; // vector meson polarisation vector
int i; // vector meson polarisations counter
EvtVector4C lvc11, lvc12; // spin structures for
EvtVector4C lvc21, lvc22; // the leptonic vector current
EvtVector4C lac11, lac12; // spin structures for
EvtVector4C lac21, lac22; // the leptonic axial current
// B - and barB - mesons descriptors
EvtIdSet bmesons( "B-", "anti-B0", "anti-B_s0", "B_c-" );
EvtIdSet bbarmesons( "B+", "B0", "B_s0", "B_c+" );
EvtId parentID = parent->getId();
if ( bmesons.contains( parentID ) ) {
// The amplitude for the decay barB -> barV ell^+ ell^-
// (b -> q ell^+ ell^- transition)
T1 = -a_b2q * unit1 * dual( EvtGenFunctions::directProd( hatp1, hatp2 ) ) -
b_b2q * uniti * EvtTensor4C::g() +
c_b2q * uniti *
EvtGenFunctions::directProd( ( hatp1 + hatp2 ), hatp1 );
T2 = -e * unit1 * dual( EvtGenFunctions::directProd( hatp1, hatp2 ) ) -
f * uniti * EvtTensor4C::g() +
g * uniti * EvtGenFunctions::directProd( ( hatp1 + hatp2 ), hatp1 ) +
h * uniti * EvtGenFunctions::directProd( ( hatp1 - hatp2 ), hatp1 );
lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lac11 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lac21 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lac12 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lac22 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
// summing up vector meson polarisations \epsilon^*_{\nu}(i)
for ( i = 0; i < 3; i++ ) {
EvtVector4C epsV = parent->getDaug( 0 )->epsParent( i ).conj();
EvtVector4C E1 = M1 * T1.cont2( epsV );
EvtVector4C E2 = M1 * T2.cont2( epsV );
amp.vertex( i, 0, 0, CKM_factor * ( lvc11 * E1 + lac11 * E2 ) );
amp.vertex( i, 0, 1, CKM_factor * ( lvc12 * E1 + lac12 * E2 ) );
amp.vertex( i, 1, 0, CKM_factor * ( lvc21 * E1 + lac21 * E2 ) );
amp.vertex( i, 1, 1, CKM_factor * ( lvc22 * E1 + lac22 * E2 ) );
}
} else {
if ( bbarmesons.contains( parentID ) ) {
// The amplitude for the decay B -> V ell^+ ell^-
// (barb -> barq ell^+ ell^- transition)
T1 = a_barb2barq * unit1 *
dual( EvtGenFunctions::directProd( hatp1, hatp2 ) ) -
b_barb2barq * uniti * EvtTensor4C::g() +
c_barb2barq * uniti *
EvtGenFunctions::directProd( ( hatp1 + hatp2 ), hatp1 );
T2 = e * unit1 * dual( EvtGenFunctions::directProd( hatp1, hatp2 ) ) -
f * uniti * EvtTensor4C::g() +
g * uniti *
EvtGenFunctions::directProd( ( hatp1 + hatp2 ), hatp1 ) +
h * uniti *
EvtGenFunctions::directProd( ( hatp1 - hatp2 ), hatp1 );
lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lac11 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lac21 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lac12 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lac22 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
// summing up vector meson polarisations \epsilon^*_{\nu}(i)
for ( i = 0; i < 3; i++ ) {
EvtVector4C barepsV = parent->getDaug( 0 )->epsParent( i ).conj();
EvtVector4C E3 = M1 * T1.cont2( barepsV );
EvtVector4C E4 = M1 * T2.cont2( barepsV );
amp.vertex( i, 0, 0,
conj( CKM_factor ) * ( lvc11 * E3 + lac11 * E4 ) );
amp.vertex( i, 0, 1,
conj( CKM_factor ) * ( lvc12 * E3 + lac12 * E4 ) );
amp.vertex( i, 1, 0,
conj( CKM_factor ) * ( lvc21 * E3 + lac21 * E4 ) );
amp.vertex( i, 1, 1,
conj( CKM_factor ) * ( lvc22 * E3 + lac22 * E4 ) );
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbTosllVectorAmpNew::CalcAmp(...)"
<< "\n Wrong B-meson number" << std::endl;
::abort();
}
}
// Test of the signature for Levi-Civita tensor
// EvtVector4C Vec0, Vec1, Vec2, Vec3;
// EvtTensor4C Ttest;
// Vec0.set(1.0,0.0,0.0,0.0);
// Vec1.set(0.0,1.0,0.0,0.0);
// Vec2.set(0.0,0.0,1.0,0.0);
// Vec3.set(0.0,0.0,0.0,1.0);
// Ttest=dual(directProd(Vec2,Vec3));
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n\n\n e^{0123} =" << Ttest.get(0,1) << std::endl;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << " e^{1023} =" << Ttest.get(1,0) << std::endl;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << " e^{1123} =" << Ttest.get(1,1) << "\n" << std::endl;
// EvtVector4C Vtest=Ttest.cont2(Vec1);
// for(i=0;i<=3;i++){
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << " Vtest =" << Vtest.get(i) << std::endl;
// }
// EvtComplex Atest;
// Atest=Vec0*Vtest;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n Atest =" << Atest << "\n\n\n" << std::endl;
}
//
// The decays B -> V ell^+ ell^- maximum probability calculation for the
// d^2\Gamma/dq^2 d\cos\theta distribution.
//
// \theta - the angle between the vector meson and ell^- directions in the
// B-meson rest frame.
//
// If ias=0 (nonresonant case), the maximum is achieved at q2=q2_min=4*ml^2.
// If ias=1 (resonant case), the maximum is achieved at q2=M^2_{J/\psi}.
//
double EvtbTosllVectorAmpNewExt::CalcMaxProb(
EvtId parnum, EvtId mesnum, EvtId l1num, EvtId l2num,
EvtbTosllFFNew* formFactors, EvtbTosllWilsCoeffNLO* WilsCoeff, double mu,
int Nf, int res_swch, int ias, double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta, double ReA7, double ImA7,
double ReA10, double ImA10 )
{
double maxfoundprob = -100.0; // maximum of the probability
int katmax = 0;
double M1 = EvtPDL::getMeanMass( parnum ); // B - meson mass
double M2 = EvtPDL::getMeanMass( mesnum ); // V - meson mass
double ml = EvtPDL::getMeanMass( l1num ); // leptonic mass
if ( res_swch == 0 ) {
// B-meson rest frame particles and they kinematics inicialization
double s_min, t_for_s;
s_min = 4.0 * pow( ml, 2.0 );
t_for_s = 0.5 *
( pow( M1, 2.0 ) + pow( M2, 2.0 ) - 2.0 * pow( ml, 2.0 ) );
double EV, El2;
EV = ( pow( M1, 2.0 ) + pow( M2, 2.0 ) - s_min ) /
( 2.0 * M1 ); // V-meson energy
El2 = ( s_min + t_for_s - pow( M2, 2.0 ) - pow( ml, 2.0 ) ) /
( 2.0 * M1 ); // ell^- energy
double modV, modl2;
modV = sqrt( pow( EV, 2.0 ) - pow( M2, 2.0 ) );
modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) );
double cosVellminus; // angle between the vector meson and ell^- directions
cosVellminus = ( pow( M2, 2.0 ) + pow( ml, 2.0 ) + 2.0 * EV * El2 -
t_for_s ) /
( 2.0 * modV * modl2 );
if ( ( fabs( cosVellminus ) > 1.0 ) &&
( fabs( cosVellminus ) <= 1.0001 ) ) {
// EvtGenReport(EVTGEN_DEBUG,"EvtGen")
// << "\n Debug in the function EvtbTosllVectorAmpNew::CalcMaxProb(...):"
// << "\n cos(theta) = " << cosVellminus
// << std::endl;
cosVellminus = cosVellminus / fabs( cosVellminus );
}
if ( ( modV <= 0.000001 ) || ( modl2 <= 0.000001 ) ) {
cosVellminus = cosVellminus / fabs( cosVellminus );
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n Debug in the function EvtbTosllVectorAmpNew::CalcMaxProb(...):"
<< "\n modV = " << modV << "\n modl2 = " << modl2
<< "\n cos(theta) = " << cosVellminus
<< "\n t_for_s = " << t_for_s << "\n s_min = " << s_min
<< "\n EV = " << EV << "\n El2 = " << El2
<< "\n M2 = " << M2 << "\n ml = " << ml
<< std::endl;
}
if ( fabs( cosVellminus ) > 1.0001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllVectorAmpNew::CalcMaxProb(...)"
<< "\n |cos(theta)| = " << fabs( cosVellminus ) << " > 1"
<< "\n s_min = " << s_min << "\n t_for_s = " << t_for_s
<< "\n EV = " << EV << "\n El2 = " << El2
<< "\n modV = " << modV << "\n modl2 = " << modl2
<< "\n M2 = " << M2 << "\n ml = " << ml << std::endl;
::abort();
}
EvtVector4R p1, p2, k1, k2;
p1.set( M1, 0.0, 0.0, 0.0 );
p2.set( EV, modV, 0.0, 0.0 );
k2.set( El2, modl2 * cosVellminus,
-modl2 * sqrt( 1.0 - pow( cosVellminus, 2.0 ) ), 0.0 );
k1 = p1 - p2 - k2;
// EvtGenReport(EVTGEN_DEBUG,"EvtGen")
// << "\n Debug in the function EvtbTosllVectorAmpNew::CalcMaxProb(...):"
// << "\n mu =" << mu << " Nf =" << Nf
// << " res_swch =" << res_swch
// << " ias =" << ias
// << "\n CKM_A = " << CKM_A
// << " CKM_lambda = " << CKM_lambda
// << "\n CKM_barrho = " << CKM_barrho
// << " CKM_bareta = " << CKM_bareta
// << "\n M1 = " << M1
// << "\n M2 = " << M2
// << "\n ml = " << ml
// << "\n s_min = " << s_min
// << "\n t_for_s = " << t_for_s
// << "\n EV = " << EV
// << "\n El1 = " << El1
// << "\n El2 = " << El2
// << "\n modV = " << modV
// << "\n modl1 = " << modl1
// << "\n modl2 = " << modl2
// << "\n cos(theta) = " << cosVellminus
// << "\n p1 =" << p1
// << "\n p2 =" << p2
// << "\n k1 =" << k1
// << "\n k2 =" << k2
// << std::endl;
// B-meson state preparation at the rest frame of B-meson
EvtScalarParticle* scalar_part;
EvtParticle* root_part;
scalar_part = new EvtScalarParticle;
scalar_part->noLifeTime();
scalar_part->init( parnum, p1 );
root_part = (EvtParticle*)scalar_part;
root_part->setDiagonalSpinDensity();
// Amplitude initialization
EvtId listdaug[3];
listdaug[0] = mesnum;
listdaug[1] = l1num;
listdaug[2] = l2num;
EvtAmp amp;
amp.init( parnum, 3, listdaug );
// Daughters states preparation at the rest frame of B-meson
root_part->makeDaughters( 3, listdaug );
EvtParticle *vect, *lep1, *lep2;
vect = root_part->getDaug( 0 );
lep1 = root_part->getDaug( 1 );
lep2 = root_part->getDaug( 2 );
vect->noLifeTime();
lep1->noLifeTime();
lep2->noLifeTime();
vect->init( mesnum, p2 );
lep1->init( l1num, k1 );
lep2->init( l2num, k2 );
EvtSpinDensity rho;
rho.setDiag( root_part->getSpinStates() );
// The amplitude calculation at the
// "maximum amplitude" kinematical configuration
CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf, res_swch, ias,
CKM_A, CKM_lambda, CKM_barrho, CKM_bareta, ReA7, ImA7, ReA10,
ImA10 );
// Now find the probability at this q2 and cos theta lepton point
maxfoundprob = rho.normalizedProb( amp.getSpinDensity() );
delete scalar_part;
// delete root_part;
delete vect;
delete lep1;
delete lep2;
} // if(res_swch==0)
if ( res_swch == 1 ) {
double s, t_for_s; // Mandelstam variables
double t_plus, t_minus; // t-variable boundaries for current s-variable
double dt;
int k;
s = pow( 3.09688, 2.0 ); // s = (M_{J/\psi})^2
t_plus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_plus = t_plus + sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
t_plus *= 0.5;
t_minus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_minus = t_minus -
sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
sqrt( lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
t_minus *= 0.5;
dt = ( t_plus - t_minus ) / 1000.0;
// The maximum probability calculation
for ( k = 0; k <= 1000; k++ ) {
t_for_s = t_plus - dt * ( (double)k );
if ( ( t_for_s < t_minus ) && ( t_for_s >= ( 0.9999 * t_minus ) ) ) {
t_for_s = t_minus;
}
if ( t_for_s < ( 0.9999 * t_minus ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllVectorAmpNew::CalcMaxProb(...)"
<< "\n t_for_s = " << t_for_s << " < t_minus = " << t_minus
<< " ! "
<< "\n t_plus = " << t_plus << "\n dt = " << dt
<< "\n k = " << k << "\n s = " << s
<< "\n M1 = " << M1 << "\n M2 = " << M2
<< "\n ml = " << ml << std::endl;
::abort();
}
// B-meson rest frame particles and they kinematics inicialization
double EV, El2;
EV = ( pow( M1, 2.0 ) + pow( M2, 2.0 ) - s ) /
( 2.0 * M1 ); // V-meson energy
El2 = ( s + t_for_s - pow( M2, 2.0 ) - pow( ml, 2.0 ) ) /
( 2.0 * M1 ); // ell^- energy
double modV, modl2;
modV = sqrt( pow( EV, 2.0 ) - pow( M2, 2.0 ) );
modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) );
double cosVellminus; // angle between the vector meson and ell^- directions
cosVellminus = ( pow( M2, 2.0 ) + pow( ml, 2.0 ) + 2.0 * EV * El2 -
t_for_s ) /
( 2.0 * modV * modl2 );
if ( ( fabs( cosVellminus ) > 1.0 ) &&
( fabs( cosVellminus ) <= 1.0001 ) ) {
// EvtGenReport(EVTGEN_DEBUG,"EvtGen")
// << "\n Debug in the function EvtbTosllVectorAmpNew::CalcMaxProb(...):"
// << "\n cos(theta) = " << cosVellminus
// << std::endl;
cosVellminus = cosVellminus / fabs( cosVellminus );
}
if ( ( modV <= 0.000001 ) || ( modl2 <= 0.000001 ) ) {
cosVellminus = cosVellminus / fabs( cosVellminus );
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n Debug in the function EvtbTosllVectorAmpNew::CalcMaxProb(...):"
<< "\n modV = " << modV << "\n modl2 = " << modl2
<< "\n cos(theta) = " << cosVellminus
<< "\n s = " << s << "\n t_for_s = " << t_for_s
<< "\n t_plus = " << t_plus
<< "\n t_minus = " << t_minus << "\n dt = " << dt
<< "\n EV = " << EV << "\n El2 = " << El2
<< "\n M2 = " << M2 << "\n ml = " << ml
<< std::endl;
}
if ( fabs( cosVellminus ) > 1.0001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllVectorAmpNew::CalcMaxProb(...)"
<< "\n |cos(theta)| = " << fabs( cosVellminus ) << " > 1"
<< "\n s = " << s << "\n t_for_s = " << t_for_s
<< "\n EV = " << EV << "\n El2 = " << El2
<< "\n modV = " << modV << "\n modl2 = " << modl2
<< "\n M2 = " << M2 << "\n ml = " << ml
<< std::endl;
::abort();
}
EvtVector4R p1, p2, k1, k2;
p1.set( M1, 0.0, 0.0, 0.0 );
p2.set( EV, modV, 0.0, 0.0 );
k2.set( El2, modl2 * cosVellminus,
-modl2 * sqrt( 1.0 - pow( cosVellminus, 2.0 ) ), 0.0 );
k1 = p1 - p2 - k2;
// EvtGenReport(EVTGEN_DEBUG,"EvtGen")
// << "\n Debug in the function EvtbTosllVectorAmpNew::CalcMaxProb(...):"
// << "\n mu =" << mu << " Nf =" << Nf
// << " res_swch =" << res_swch
// << " ias =" << ias
// << "\n CKM_A = " << CKM_A
// << " CKM_lambda = " << CKM_lambda
// << "\n CKM_barrho = " << CKM_barrho
// << " CKM_bareta = " << CKM_bareta
// << "\n M1 = " << M1
// << "\n M2 = " << M2
// << "\n ml = " << ml
// << "\n s = " << s
// << "\n t_for_s = " << t_for_s
// << "\n EV = " << EV
// << "\n El1 = " << El1
// << "\n El2 = " << El2
// << "\n modV = " << modV
// << "\n modl1 = " << modl1
// << "\n modl2 = " << modl2
// << "\n cos(theta) = " << cosVellminus
// << "\n p1 =" << p1
// << "\n p2 =" << p2
// << "\n k1 =" << k1
// << "\n k2 =" << k2
// << std::endl;
// B-meson state preparation at the rest frame of B-meson
EvtScalarParticle* scalar_part;
EvtParticle* root_part;
scalar_part = new EvtScalarParticle;
scalar_part->noLifeTime();
scalar_part->init( parnum, p1 );
root_part = (EvtParticle*)scalar_part;
root_part->setDiagonalSpinDensity();
// Amplitude initialization
EvtId listdaug[3];
listdaug[0] = mesnum;
listdaug[1] = l1num;
listdaug[2] = l2num;
EvtAmp amp;
amp.init( parnum, 3, listdaug );
// Daughters states preparation at the rest frame of B-meson
root_part->makeDaughters( 3, listdaug );
EvtParticle *vect, *lep1, *lep2;
vect = root_part->getDaug( 0 );
lep1 = root_part->getDaug( 1 );
lep2 = root_part->getDaug( 2 );
vect->noLifeTime();
lep1->noLifeTime();
lep2->noLifeTime();
vect->init( mesnum, p2 );
lep1->init( l1num, k1 );
lep2->init( l2num, k2 );
EvtSpinDensity rho;
rho.setDiag( root_part->getSpinStates() );
// The amplitude calculation at the
// "maximum amplitude" kinematical configuration
CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf, res_swch,
ias, CKM_A, CKM_lambda, CKM_barrho, CKM_bareta, ReA7, ImA7,
ReA10, ImA10 );
// Now find the probability at this q2 and cos theta lepton point
double nikmax = rho.normalizedProb( amp.getSpinDensity() );
if ( nikmax > maxfoundprob ) {
maxfoundprob = nikmax;
katmax = k;
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n maxfoundprob ( s =" << s << ", t = " << t_for_s
<< " ) = " << maxfoundprob << "\n k =" << katmax
<< std::endl;
}
delete scalar_part;
// delete root_part;
delete vect;
delete lep1;
delete lep2;
} // for(k=0; k<=1000; k++)
} // if(res_swch==1)
if ( maxfoundprob <= 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbTosllVectorAmpNew::CalcMaxProb(...)"
<< "\n maxfoundprob = " << maxfoundprob << " <0 or =0!"
<< "\n res_swch = " << res_swch << std::endl;
::abort();
}
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n maxfoundprob (...) = " << maxfoundprob << std::endl;
maxfoundprob *= 1.01;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n ***************************************************************************"
// << "\n The function EvtbTosllVectorAmpNew::CalcMaxProb(...) passed with arguments:"
// << "\n mu =" << mu << " Nf =" << Nf
// << " res_swch =" << res_swch
// << " ias =" << ias
// << "\n CKM_A = " << CKM_A
// << " CKM_lambda = " << CKM_lambda
// << "\n CKM_barrho = " << CKM_barrho
// << " CKM_bareta = " << CKM_bareta
// << "\n The distribution maximum maxfoundprob =" << maxfoundprob
// << "\n k = " << katmax
// << "\n ***************************************************************************"
// << std::endl;
return maxfoundprob;
}
// Triangular function
double EvtbTosllVectorAmpNewExt::lambda( double a, double b, double c )
{
double l;
l = pow( a, 2.0 ) + pow( b, 2.0 ) + pow( c, 2.0 ) - 2.0 * a * b -
2.0 * a * c - 2.0 * b * c;
return l;
}
diff --git a/src/EvtGenModels/EvtbTosllWilsCoeffNLO.cpp b/src/EvtGenModels/EvtbTosllWilsCoeffNLO.cpp
index 7b194a7..415e4e1 100644
--- a/src/EvtGenModels/EvtbTosllWilsCoeffNLO.cpp
+++ b/src/EvtGenModels/EvtbTosllWilsCoeffNLO.cpp
@@ -1,1269 +1,1241 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtbTosllWilsCoeffNLO.cpp
-//
-// Description: The calculation of the Wilson coefficients for
-// b -> (d,s) ell+ ell- transitions in the SM at NLO
-// according to the paper:
-// A.J.Buras, M.Munz, Phys.Rev.D52, p.189 (1995).
-//
-//
-//
-// Modification history:
-//
-// N.Nikitin March 17, 2008 Module created
-// June 14, 2008 New equation for As
-// January 12, 2010 New representation of
-// the resonant contribution
-//
-//------------------------------------------------------------------------
-//
+#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh"
+
#include "EvtGenBase/EvtDiLog.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
-// The header file for current class memeber functions description
-#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh"
#include <cstdlib>
// **************************************************************
// * *
// * The strong running coupling constant from PDG *
// * *
// * mu - the scale parameter ( in GeV ); *
// * Nf - number of "effective" flavours ( Nf=5 for b-quark); *
// * the colors number = 3; *
// * ias - the number for alpha_s(M_Z) choice: *
// * = 0 PDG 1sigma minimal alpha_s(M_Z); *
// * = 1 PDG average value alpha_s(M_Z); *
// * = 2 PDG 1sigma maximal alpha_s(M_Z). *
// * *
// **************************************************************
double EvtbTosllWilsCoeffNLO::As( double mu, int Nf, int ias )
{
double as, ll;
double b0, b1, b2; /* terms in the series of the beta-function */
double alpha_strong[] = {0.1156, 0.1176, 0.1196}; /* at M_Z scale */
double MZ = 91.19; /* in GeV */
b0 = 11. - 2. * ( (double)Nf ) / 3.;
b1 = 51. - 19. * ( (double)Nf ) / 3.;
b2 = 2857. - 5033. * ( (double)Nf ) / 9. +
325. * pow( ( (double)Nf ), 2. ) / 27.;
// RG Equation solution
alpha_strong[ias] = alpha_strong[ias] / ( 4.0 * EvtConst::pi );
ll = 0.0 - log( MZ / mu ) +
( b0 * b2 - b1 * b1 ) * alpha_strong[ias] / ( 2.0 * pow( b0, 3.0 ) );
ll = ll + 1.0 / ( 2.0 * b0 * alpha_strong[ias] );
ll = ll + b1 * log( alpha_strong[ias] ) / ( 2.0 * b0 * b0 );
// Running coupling constant from M_Z to mu
as = pow( ( log( log( 2.0 * ll ) ) - 0.5 ), 2.0 ) +
b2 * b0 / ( 8.0 * b1 * b1 ) - 5.0 / 4.0;
as = as * pow( ( b1 / ( b0 * b0 * ll ) ), 2.0 );
as = 1.0 - b1 * log( 2.0 * ll ) / ( b0 * b0 * ll ) - as;
as = 2.0 * EvtConst::pi * as / ( b0 * ll );
if ( as <= 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The function EvtbTosllWilsCoeffNLO::As"
<< "\n Unexpected value of the running coupling constant!"
<< "\n alpha_s(" << mu << ") = " << as << ";"
<< "\n Nf =" << Nf << ", ias = " << ias << ";"
<< "\n ln(mu/lambda_QCD) = " << ll << ";" << std::endl;
::abort();
}
return as;
}
// ************************************************************
// * *
// * Spencer function *
// * in serial representation *
// * ( w <= 1.0 ) *
// * *
// * *
// ************************************************************
double EvtbTosllWilsCoeffNLO::Li2( double w )
{
double Lii = 0.0;
double k = 1.0;
while ( k <= 20.0 ) {
Lii = Lii + pow( w, k ) / pow( k, 2.0 );
k++;
};
/* printf("\n Spencer function value: Lii(%f)=%f \n\n",w,Lii); */
return Lii;
}
/* Coefficient C1(mu) *
* by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
double EvtbTosllWilsCoeffNLO::C1( double mu, double Mw, int Nf, int ias )
{
double CC1;
double eta;
double asW; /* the strong coupling constant at the scale Mw */
double asmu; /* the strong coupling constant at the scale mu */
int i;
double a[] = {14.0 / 23.0, 16.0 / 23.0, 6.0 / 23.0, -12.0 / 23.0,
0.4086, -0.4230, -0.8994, 0.1456};
double k1[] = {0.0, 0.0, 0.5, -0.5, 0.0, 0.0, 0.0, 0.0};
asW = As( Mw, Nf, ias );
asmu = As( mu, Nf, ias );
eta = asW / asmu;
CC1 = 0.0;
i = 0;
while ( i < 8 ) {
CC1 = CC1 + k1[i] * pow( eta, a[i] );
i++;
};
return CC1;
}
/* Coefficient C2(mu) *
* by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
double EvtbTosllWilsCoeffNLO::C2( double mu, double Mw, int Nf, int ias )
{
double CC2;
double eta;
double asW; /* the strong coupling constant at the scale Mw */
double asmu; /* the strong coupling constant at the scale mu */
int i;
double a[] = {14.0 / 23.0, 16.0 / 23.0, 6.0 / 23.0, -12.0 / 23.0,
0.4086, -0.4230, -0.8994, 0.1456};
double k2[] = {0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0};
asW = As( Mw, Nf, ias );
asmu = As( mu, Nf, ias );
eta = asW / asmu;
CC2 = 0.0;
i = 0;
while ( i < 8 ) {
CC2 = CC2 + k2[i] * pow( eta, a[i] );
i++;
};
return CC2;
}
/* Coefficient C3(mu) *
* by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
double EvtbTosllWilsCoeffNLO::C3( double mu, double Mw, int Nf, int ias )
{
double CC3;
double eta;
double asW; /* the strong coupling constant at the scale Mw */
double asmu; /* the strong coupling constant at the scale mu */
int i;
double a[] = {14.0 / 23.0, 16.0 / 23.0, 6.0 / 23.0, -12.0 / 23.0,
0.4086, -0.4230, -0.8994, 0.1456};
double k3[] = {0.0, 0.0, -1.0 / 14.0, 1.0 / 6.0,
0.0510, -0.1403, -0.0113, 0.0054};
asW = As( Mw, Nf, ias );
asmu = As( mu, Nf, ias );
eta = asW / asmu;
CC3 = 0.0;
i = 0;
while ( i < 8 ) {
CC3 = CC3 + k3[i] * pow( eta, a[i] );
i++;
};
return CC3;
}
/* Coefficient C4(mu) *
* by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
double EvtbTosllWilsCoeffNLO::C4( double mu, double Mw, int Nf, int ias )
{
double CC4;
double eta;
double asW; /* the strong coupling constant at the scale Mw */
double asmu; /* the strong coupling constant at the scale mu */
int i;
double a[] = {14.0 / 23.0, 16.0 / 23.0, 6.0 / 23.0, -12.0 / 23.0,
0.4086, -0.4230, -0.8994, 0.1456};
double k4[] = {0.0, 0.0, -1.0 / 14.0, -1.0 / 6.0,
0.0984, 0.1214, 0.0156, 0.0026};
asW = As( Mw, Nf, ias );
asmu = As( mu, Nf, ias );
eta = asW / asmu;
CC4 = 0.0;
i = 0;
while ( i < 8 ) {
CC4 = CC4 + k4[i] * pow( eta, a[i] );
i++;
};
return CC4;
}
/* Coefficient C5(mu) *
* by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
double EvtbTosllWilsCoeffNLO::C5( double mu, double Mw, int Nf, int ias )
{
double CC5;
double eta;
double asW; /* the strong coupling constant at the scale Mw */
double asmu; /* the strong coupling constant at the scale mu */
int i;
double a[] = {14.0 / 23.0, 16.0 / 23.0, 6.0 / 23.0, -12.0 / 23.0,
0.4086, -0.4230, -0.8994, 0.1456};
double k5[] = {0.0, 0.0, 0.0, 0.0, -0.0397, 0.0117, -0.0025, 0.0304};
asW = As( Mw, Nf, ias );
asmu = As( mu, Nf, ias );
eta = asW / asmu;
CC5 = 0.0;
i = 0;
while ( i < 8 ) {
CC5 = CC5 + k5[i] * pow( eta, a[i] );
i++;
};
return CC5;
}
/* Coefficient C6(mu) *
* by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
double EvtbTosllWilsCoeffNLO::C6( double mu, double Mw, int Nf, int ias )
{
double CC6;
double eta;
double asW; /* the strong coupling constant at the scale Mw */
double asmu; /* the strong coupling constant at the scale mu */
int i;
double a[] = {14.0 / 23.0, 16.0 / 23.0, 6.0 / 23.0, -12.0 / 23.0,
0.4086, -0.4230, -0.8994, 0.1456};
double k6[] = {0.0, 0.0, 0.0, 0.0, 0.0335, 0.0239, -0.0462, -0.0112};
asW = As( Mw, Nf, ias );
asmu = As( mu, Nf, ias );
eta = asW / asmu;
CC6 = 0.0;
i = 0;
while ( i < 8 ) {
CC6 = CC6 + k6[i] * pow( eta, a[i] );
i++;
};
return CC6;
}
/* by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
double EvtbTosllWilsCoeffNLO::A( double z )
{
double AA;
AA = z * ( 8.0 * pow( z, 2.0 ) + 5.0 * z - 7.0 ) /
( 12.0 * pow( ( z - 1.0 ), 3.0 ) );
AA = AA + pow( z, 2.0 ) * ( 2.0 - 3.0 * z ) * log( z ) /
( 2.0 * pow( ( z - 1.0 ), 4.0 ) );
return AA;
}
/* by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
double EvtbTosllWilsCoeffNLO::B( double z )
{
double BB;
BB = z / ( 4.0 * ( 1.0 - z ) ) +
z * log( z ) / ( 4.0 * pow( ( 1.0 - z ), 2.0 ) );
return BB;
}
/* by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
double EvtbTosllWilsCoeffNLO::C_Bur( double z )
{
double CC;
CC = z * ( z - 6.0 ) / ( 8.0 * ( z - 1.0 ) );
CC = CC +
z * ( 3.0 * z + 2.0 ) * log( z ) / ( 8.0 * pow( ( z - 1.0 ), 2.0 ) );
return CC;
}
/* by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
double EvtbTosllWilsCoeffNLO::D_Bur( double z )
{
double DD;
DD = ( 25.0 * pow( z, 2.0 ) - 19.0 * pow( z, 3.0 ) ) /
( 36.0 * pow( ( z - 1.0 ), 3.0 ) );
DD = DD + pow( z, 2.0 ) * ( 5.0 * pow( z, 2.0 ) - 2.0 * z - 6.0 ) *
log( z ) / ( 18.0 * pow( ( z - 1.0 ), 4.0 ) );
DD = DD - ( 4.0 / 9.0 ) * log( z );
return DD;
}
/* by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
double EvtbTosllWilsCoeffNLO::E( double z )
{
double EE;
EE = z * ( 18.0 - 11.0 * z - z * z ) / ( 12.0 * pow( ( 1.0 - z ), 3.0 ) );
EE = EE + pow( z, 2.0 ) * ( 15.0 - 16.0 * z + 4.0 * z * z ) * log( z ) /
( 6.0 * pow( ( 1.0 - z ), 4.0 ) );
EE = EE - ( 2.0 / 3.0 ) * log( z );
return EE;
}
/* by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
double EvtbTosllWilsCoeffNLO::F_Bur( double z )
{
double FF;
FF = z * ( pow( z, 2.0 ) - 5.0 * z - 2.0 ) /
( 4.0 * pow( ( z - 1.0 ), 3.0 ) );
FF = FF + 3.0 * pow( z, 2.0 ) * log( z ) / ( 2.0 * pow( ( z - 1.0 ), 4.0 ) );
return FF;
}
/* by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
double EvtbTosllWilsCoeffNLO::Y( double z )
{
double YY;
YY = C_Bur( z ) - B( z );
return YY;
}
/* by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
double EvtbTosllWilsCoeffNLO::Z( double z )
{
double ZZ;
ZZ = C_Bur( z ) + 0.25 * D_Bur( z );
return ZZ;
}
/* Coefficient C7gamma(mu) in the SM *
* by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
double EvtbTosllWilsCoeffNLO::C7gamma( double mu, double Mw, double mt, int Nf,
int ias )
{
double C7, C70, C80, sum;
double AA, FF;
double x, eta;
double asW, asmu;
int i;
double a[] = {14.0 / 23.0, 16.0 / 23.0, 6.0 / 23.0, -12.0 / 23.0,
0.4086, -0.4230, -0.8994, 0.1456};
double h[] = {2.2996, -1.0880, -3.0 / 7.0, -1.0 / 14.0,
-0.6494, -0.0380, -0.0186, -0.0057};
x = pow( mt / Mw, 2.0 );
asW = As( Mw, Nf, ias );
asmu = As( mu, Nf, ias );
eta = asW / asmu;
AA = A( x );
FF = F_Bur( x );
C70 = -0.5 * AA;
C80 = -0.5 * FF;
C7 = pow( eta, ( 16.0 / 23.0 ) ) * C70;
C7 = C7 + ( 8.0 / 3.0 ) *
( pow( eta, ( 14.0 / 23.0 ) ) - pow( eta, ( 16.0 / 23.0 ) ) ) *
C80;
sum = 0.0;
i = 0;
while ( i < 8 ) {
sum = sum + h[i] * pow( eta, a[i] );
i++;
};
C7 = C7 + sum;
return C7;
}
/* Coefficient P_E *
* by A.J.Buras and M.Munz, Phys.Rev. D52, 186; *
* see formula (2.12). */
double EvtbTosllWilsCoeffNLO::Pe( double eta )
{
double sum;
double Pee;
int i;
double a[] = {14.0 / 23.0, 16.0 / 23.0, 6.0 / 23.0, -12.0 / 23.0,
0.4086, -0.4230, -0.8994, 0.1456};
double q[] = {0.0, 0.0, 0.0, 0.0, 0.0318, 0.0918, -0.2700, 0.0059};
sum = 0.0;
i = 0;
while ( i < 8 ) {
sum = sum + q[i] * pow( eta, ( a[i] + 1.0 ) );
i++;
};
Pee = 0.1405 + sum;
return Pee;
}
/* Coefficient P^{NDR}_0 *
* by A.J.Buras and M.Munz, Phys.Rev. D52, 186; *
* see formula (2.11). */
double EvtbTosllWilsCoeffNLO::P0ndr( double asW, double eta )
{
double P00ndr;
double sum;
int i;
double a[] = {14.0 / 23.0, 16.0 / 23.0, 6.0 / 23.0, -12.0 / 23.0,
0.4086, -0.4230, -0.8994, 0.1456};
double p[] = {0.0, 0.0, -80.0 / 203.0, 8.0 / 33.0,
0.0433, 0.1384, 0.1648, -0.0073};
double r[] = {0.0, 0.0, 0.8966, -0.1960, -0.2011, 0.1328, -0.0292, -0.1858};
double s[] = {0.0, 0.0, -0.2009, -0.3579, 0.0490, -0.3616, -0.3554, 0.0072};
sum = 0.0;
i = 0;
while ( i < 8 ) {
sum = sum + p[i] * pow( eta, ( a[i] + 1.0 ) );
i++;
};
P00ndr = EvtConst::pi * ( -0.1875 + sum ) / asW;
P00ndr = P00ndr + 1.2468;
sum = 0.0;
i = 0;
while ( i < 8 ) {
sum = sum + ( r[i] + s[i] * eta ) * pow( eta, a[i] );
i++;
};
P00ndr = P00ndr + sum;
return P00ndr;
}
/* Coefficient C_{9V} (in the NDR schime) *
* by A.J.Buras and M.Munz, Phys.Rev. D52, 186 *
* accordint to the equation (2.10). */
double EvtbTosllWilsCoeffNLO::C9v( double mu, double Mw, double mt, int Nf,
int ias )
{
double C9;
double x, eta;
double asW, asmu;
double sin2W = 0.224; /* the square of the weak angle */
x = pow( mt / Mw, 2.0 );
asW = As( Mw, Nf, ias );
asmu = As( mu, Nf, ias );
eta = asW / asmu;
/* C9 */
C9 = P0ndr( asW, eta ) + ( Y( x ) / sin2W ) - 4.0 * Z( x ) +
Pe( eta ) * E( x );
return C9;
}
/* Coefficient C_{10A} *
* by A.J.Buras and M.Munz, Phys.Rev. D52, 186; *
* see formula (2.8). */
double EvtbTosllWilsCoeffNLO::C10a( double mt, double Mw )
{
double C10;
double x;
double sin2W = 0.224; /* the square of the Winberg angle */
x = pow( mt / Mw, 2.0 );
C10 = -Y( x ) / sin2W;
return C10;
}
/* The real part of the q\bar q loop contribution *
* Re(h(z,\hat s)) *
* A.J.Buras and M.Munz, Phys.Rev. D52, 186; *
* the equation (2.29). *
* *
* mu - the scale parameter (GeV); *
* mQ - the mass of the u- or c-quark (GeV); *
* q2 - the square of transition 4-momentum (GeV^2). */
double EvtbTosllWilsCoeffNLO::Reh( double mu, double mQ, double q2 )
{
double reh, swh;
double x; /* Buras variable "x" from (2.29) */
x = 4.0 * pow( mQ, 2.0 ) / q2;
reh = 8.0 / 27.0 - 8.0 * log( mQ / mu ) / 9.0 + 4.0 * x / 9.0;
swh = 2.0 * ( 2.0 + x ) * sqrt( fabs( 1.0 - x ) ) / 9.0;
if ( x <= 1.0 ) {
swh = swh * log( fabs( ( sqrt( 1.0 - x ) + 1.0 ) /
( sqrt( 1.0 - x ) - 1.0 ) ) );
} else {
swh = swh * 2.0 * atan( 1.0 / sqrt( x - 1.0 ) );
};
reh = reh - swh;
return reh;
}
/* Im(h(z,\hat s)) by Buras */
double EvtbTosllWilsCoeffNLO::Imh( double mQ, double q2 )
{
double x; /* Buras variable "x" from (2.29) */
double imh;
x = 4.0 * pow( mQ, 2.0 ) / q2;
if ( x <= 1.0 ) {
imh = 2.0 * EvtConst::pi * ( 2.0 + x ) * sqrt( fabs( 1.0 - x ) ) / 9.0;
} else {
imh = 0.0;
};
return imh;
}
/* The real part of the one resonant contribution *
* q2 - the square of transition 4-momentum (GeV^2); *
* GV - the decay width of the resonance (GeV); *
* GllV - the decay width of the resonance into l^+ l^- - pair (GeV); *
* MV - the mass of the resonance. */
double EvtbTosllWilsCoeffNLO::ReResonant( double q2, double GV, double GllV,
double MV )
{
double reresonant;
double resa, resb;
resa = q2 * ( MV * MV - q2 ) * GllV;
resb = MV * ( ( MV * MV - q2 ) * ( MV * MV - q2 ) + MV * MV * GV * GV );
reresonant = resa / resb;
return reresonant;
}
/* The imaginary part of the one resonant contribution *
* q2 - the square of transition 4-momentum (GeV^2); *
* GV - the decay width of the resonance (GeV); *
* GllV - the decay width of the resonance into l^+ l^- - pair (GeV); *
* MV - the mass of the resonance. */
double EvtbTosllWilsCoeffNLO::ImResonant( double q2, double GV, double GllV,
double MV )
{
double imresonant;
double resa, resb;
resa = q2 * GV * GllV;
resb = ( MV * MV - q2 ) * ( MV * MV - q2 ) + MV * MV * GV * GV;
imresonant = resa / resb;
return imresonant;
}
/* The real part of the total q\barq-contribution *
* *
* qflavour = 0 corresponding the u-quark contribution *
* = 1 corresponding the c-quark contribution; *
* *
* res_swch = 0 the resonant contribution switch OFF *
* = 1 the resonant contribution switch ON; *
* *
* ias -- switching parameter for Lms[] in the As(..) function. *
* *
* Nf - number of "effective" flavours (for b-quark Nf=5); *
* mu - the scale parameter (GeV); *
* mQ - the mass of the u- or c-quark (GeV); *
* q2 - the square of transition 4-momentum (GeV^2); *
* ml - the mass of the final leptons (GeV); *
* Mw - the mass of the W--meson (GeV). *
* */
double EvtbTosllWilsCoeffNLO::ReHtot( int qflavour, int res_swch, int ias,
int Nf, double mu, double mQ, double q2,
double ml, double Mw )
{
double rehtot;
double rehres, c1, c2;
int i;
/* Total decay widths of the resonances (GeV) */
double Gamma[6];
/* The decay width of the resonances into l^+ l^- - pair (GeV) */
double Gamma_ll[6];
/* The mass of the resonances */
double M[6];
double alpha_qed = 1.0 / 137.0;
switch ( qflavour ) {
/* u-quark contribution */
case 0:
switch ( res_swch ) {
/* The resonant contribution switch OFF */
case 0:
rehtot = EvtbTosllWilsCoeffNLO::Reh( mu, mQ, q2 );
rehres = 0.0;
break;
/* the resonant contribution switch ON */
case 1:
rehtot = EvtbTosllWilsCoeffNLO::Reh( mu, mQ, q2 );
/* \pho */
M[0] = 0.7755; /* GeV */
Gamma[0] = 0.1494; /* GeV */
/* \omega' */
M[1] = 0.7827; /* GeV */
Gamma[1] = 0.0085; /* GeV */
if ( ml < 1.0 ) {
/* in e^+e^- or mu^+mu^- */
Gamma_ll[0] = 0.000007; /* \rho */
Gamma_ll[1] = 0.0000006; /* \omega */
} else {
/* in \tau^+\tau^- */
Gamma_ll[0] = 0.0; /* \rho */
Gamma_ll[1] = 0.0; /* \omega */
};
c1 = EvtbTosllWilsCoeffNLO::C1( mu, Mw, Nf, ias );
c2 = EvtbTosllWilsCoeffNLO::C2( mu, Mw, Nf, ias );
i = 0;
rehres = 0.0;
while ( i < 2 ) {
rehres = rehres +
3.0 * EvtConst::pi *
EvtbTosllWilsCoeffNLO::ReResonant(
q2, Gamma[i], Gamma_ll[i], M[i] ) /
( sqrt( 2.0 ) * ( 3.0 * c1 + c2 ) *
alpha_qed * alpha_qed );
i++;
};
/* The sign plus are corresponded to the relation:
\kappa*(3C_1+C_2)=1
with sign of Wilson coefficien C_2(M_W)=+1 as at work
A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
rehtot = rehtot + rehres;
break;
default:
rehtot = 0.0;
rehres = 0.0;
};
break;
/* c-quark contribution */
case 1:
switch ( res_swch ) {
/* The resonant contribution switch OFF */
case 0:
rehtot = EvtbTosllWilsCoeffNLO::Reh( mu, mQ, q2 );
rehres = 0.0;
break;
/* the resonant contribution switch ON */
case 1:
rehtot = EvtbTosllWilsCoeffNLO::Reh( mu, mQ, q2 );
/* J/psi */
M[0] = 3.096916; /* GeV */
Gamma[0] = 0.000093; /* GeV */
/* psi' */
M[1] = 3.68609; /* GeV */
Gamma[1] = 0.000317; /* GeV */
/* psi(3770) */
M[2] = 3.77292; /* GeV */
Gamma[2] = 0.0273; /* GeV */
/* psi(4040) */
M[3] = 4.039; /* GeV */
Gamma[3] = 0.08; /* GeV */
/* psi(4160) */
M[4] = 4.153; /* GeV */
Gamma[4] = 0.103; /* GeV */
/* psi(4415) */
M[5] = 4.421; /* GeV */
Gamma[5] = 0.062; /* GeV */
if ( ml < 1.0 ) {
/* in e^+e^- or mu^+mu^- */
Gamma_ll[0] = Gamma[0] * 0.059; /* J/psi */
Gamma_ll[1] = Gamma[1] * 0.0075; /* psi' */
Gamma_ll[2] = Gamma[2] * 0.0000097; /* psi(3770) */
Gamma_ll[3] = Gamma[3] * 0.00001; /* psi(4040) */
Gamma_ll[4] = Gamma[4] * 0.0000081; /* psi(4160) */
Gamma_ll[5] = Gamma[5] * 0.0000094; /* psi(4415) */
} else {
/* in \tau^+\tau^- */
Gamma_ll[0] = 0.0; /* J/psi */
Gamma_ll[1] = Gamma[1] * 0.003; /* psi' */
Gamma_ll[2] = Gamma[2] * 0.0; /* psi(3770) */
Gamma_ll[3] = Gamma[3] * 0.0; /* psi(4040) */
Gamma_ll[4] = Gamma[4] * 0.0; /* psi(4160) */
Gamma_ll[5] = Gamma[5] * 0.0; /* psi(4415) */
};
c1 = EvtbTosllWilsCoeffNLO::C1( mu, Mw, Nf, ias );
c2 = EvtbTosllWilsCoeffNLO::C2( mu, Mw, Nf, ias );
i = 0;
rehres = 0.0;
while ( i < 6 ) {
rehres = rehres +
3.0 * EvtConst::pi *
EvtbTosllWilsCoeffNLO::ReResonant(
q2, Gamma[i], Gamma_ll[i], M[i] ) /
( ( 3.0 * c1 + c2 ) * alpha_qed * alpha_qed );
i++;
};
/* The sign plus are corresponded to the relation:
\kappa*(3C_1+C_2)=1
with sign of Wilson coefficien C_2(M_W)=+1 as at work
A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
rehtot = rehtot + rehres;
break;
default:
rehtot = 0.0;
rehres = 0.0;
};
break;
default:
rehtot = 0.0;
rehres = 0.0;
};
return rehtot;
}
/* The imaginary of the total q\barq-contribution *
* *
* qflavour = 0 corresponding the u-quark contribution *
* = 1 corresponding the c-quark contribution; *
* *
* res_swch = 0 the resonant contribution switch OFF *
* = 1 the resonant contribution switch ON; *
* *
* ias -- switching parameter for Lms[] in the As(..) function. *
* *
* Nf - number of "effective" flavours (for b-quark Nf=5); *
* mu - the scale parameter (GeV); *
* mQ - the mass of the u- or c-quark (GeV); *
* q2 - the square of transition 4-momentum (GeV^2); *
* ml - the mass of the final leptons (GeV); *
* Mw - the mass of the W--meson (GeV). *
* */
double EvtbTosllWilsCoeffNLO::ImHtot( int qflavour, int res_swch, int ias,
int Nf, double mu, double mQ, double q2,
double ml, double Mw )
{
double imhtot;
double imhres, c1, c2;
int i;
/* Total decay widths of the resonances (GeV) */
double Gamma[6];
/* The decay width of the resonances into l^+ l^- - pair (GeV) */
double Gamma_ll[6];
/* The mass of the resonances */
double M[6];
double alpha_qed = 1.0 / 137.0;
switch ( qflavour ) {
/* u-quark contribution */
case 0:
switch ( res_swch ) {
/* The resonant contribution switch OFF */
case 0:
imhtot = EvtbTosllWilsCoeffNLO::Imh( mQ, q2 );
imhres = 0.0;
break;
/* the resonant contribution switch ON */
case 1:
imhtot = EvtbTosllWilsCoeffNLO::Imh( mQ, q2 );
/* \pho */
M[0] = 0.7755; /* GeV */
Gamma[0] = 0.1494; /* GeV */
/* \omega' */
M[1] = 0.7827; /* GeV */
Gamma[1] = 0.0085; /* GeV */
if ( ml < 1.0 ) {
/* in e^+e^- or mu^+mu^- */
Gamma_ll[0] = 0.000007; /* \rho */
Gamma_ll[1] = 0.0000006; /* \omega */
} else {
/* in \tau^+\tau^- */
Gamma_ll[0] = 0.0; /* \rho */
Gamma_ll[1] = 0.0; /* \omega */
};
c1 = EvtbTosllWilsCoeffNLO::C1( mu, Mw, Nf, ias );
c2 = EvtbTosllWilsCoeffNLO::C2( mu, Mw, Nf, ias );
i = 0;
imhres = 0.0;
while ( i < 2 ) {
imhres = imhres +
3.0 * EvtConst::pi *
EvtbTosllWilsCoeffNLO::ImResonant(
q2, Gamma[i], Gamma_ll[i], M[i] ) /
( sqrt( 2.0 ) * ( 3.0 * c1 + c2 ) *
alpha_qed * alpha_qed );
i++;
};
/* The sign plus are corresponded to the relation:
\kappa*(3C_1+C_2)=1
with sign of Wilson coefficien C_2(M_W)=+1 as at work
A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
imhtot = imhtot + imhres;
break;
default:
imhtot = 0.0;
imhres = 0.0;
};
break;
/* c-quark contribution */
case 1:
switch ( res_swch ) {
/* The resonant contribution switch OFF */
case 0:
imhtot = EvtbTosllWilsCoeffNLO::Imh( mQ, q2 );
imhres = 0.0;
break;
/* the resonant contribution switch ON */
case 1:
imhtot = EvtbTosllWilsCoeffNLO::Imh( mQ, q2 );
/* J/psi */
M[0] = 3.096916; /* GeV */
Gamma[0] = 0.000093; /* GeV */
/* psi' */
M[1] = 3.68609; /* GeV */
Gamma[1] = 0.000317; /* GeV */
/* psi(3770) */
M[2] = 3.77292; /* GeV */
Gamma[2] = 0.0273; /* GeV */
/* psi(4040) */
M[3] = 4.039; /* GeV */
Gamma[3] = 0.08; /* GeV */
/* psi(4160) */
M[4] = 4.153; /* GeV */
Gamma[4] = 0.103; /* GeV */
/* psi(4415) */
M[5] = 4.421; /* GeV */
Gamma[5] = 0.062; /* GeV */
if ( ml < 1.0 ) {
/* in e^+e^- or mu^+mu^- */
Gamma_ll[0] = Gamma[0] * 0.059; /* J/psi */
Gamma_ll[1] = Gamma[1] * 0.0075; /* psi' */
Gamma_ll[2] = Gamma[2] * 0.0000097; /* psi(3770) */
Gamma_ll[3] = Gamma[3] * 0.00001; /* psi(4040) */
Gamma_ll[4] = Gamma[4] * 0.0000081; /* psi(4160) */
Gamma_ll[5] = Gamma[5] * 0.0000094; /* psi(4415) */
} else {
/* in \tau^+\tau^- */
Gamma_ll[0] = 0.0; /* J/psi */
Gamma_ll[1] = Gamma[1] * 0.003; /* psi' */
Gamma_ll[2] = Gamma[2] * 0.0; /* psi(3770) */
Gamma_ll[3] = Gamma[3] * 0.0; /* psi(4040) */
Gamma_ll[4] = Gamma[4] * 0.0; /* psi(4160) */
Gamma_ll[5] = Gamma[5] * 0.0; /* psi(4415) */
};
c1 = EvtbTosllWilsCoeffNLO::C1( mu, Mw, Nf, ias );
c2 = EvtbTosllWilsCoeffNLO::C2( mu, Mw, Nf, ias );
i = 0;
imhres = 0.0;
while ( i < 6 ) {
imhres = imhres +
3.0 * EvtConst::pi *
EvtbTosllWilsCoeffNLO::ImResonant(
q2, Gamma[i], Gamma_ll[i], M[i] ) /
( ( 3.0 * c1 + c2 ) * alpha_qed * alpha_qed );
i++;
};
/* The sign plus are corresponded to the relation:
\kappa*(3C_1+C_2)=1
with sign of Wilson coefficien C_2(M_W)=+1 as at work
A.J.Buras and M.Munz, Phys.Rev. D52, 186. */
imhtot = imhtot + imhres;
break;
default:
imhtot = 0.0;
imhres = 0.0;
};
break;
default:
imhtot = 0.0;
imhres = 0.0;
};
return imhtot;
}
/* Function \omega(\hat s) *
* by A.J.Buras, M.Munz, Phys.Rev.D52 (1995), p189. *
* *
* q2 - the square of transition 4-momentum (GeV^2); *
* m2 - the mass of the b-quark (GeV). */
double EvtbTosllWilsCoeffNLO::omega( double q2, double m2 )
{
double oomega;
double s;
s = q2 / ( m2 * m2 ); /* see definition in the equation (2.26) */
if ( s > 1.0 ) {
s = 0.999999;
}
oomega = -2.0 * pow( EvtConst::pi, 2.0 ) / 9.0 - 4.0 * Li2( s ) / 3.0;
oomega = oomega - 2.0 * log( s ) * log( 1.0 - s ) / 3.0;
oomega = oomega -
( 5.0 + 4.0 * s ) * log( 1.0 - s ) / ( 3.0 * ( 1.0 + 2.0 * s ) );
oomega = oomega - 2.0 * s * ( 1.0 + s ) * ( 1.0 - 2.0 * s ) * log( s ) /
( 3.0 * pow( ( 1.0 - s ), 2.0 ) * ( 1.0 + 2.0 * s ) );
oomega = oomega + ( 5.0 + 9.0 * s - 6.0 * s * s ) /
( 6.0 * ( 1.0 - s ) * ( 1.0 + 2.0 * s ) );
return oomega;
}
/* REAL PART of the effective coefficient C_9V^{eff}: *
* *
* by A.J.Buras, M.Munz, Phys.Rev.D52 (1995), p189; *
* F.Kruger, L.M.Sehgal, Phys.Rev.D55 (1997), p.2799. *
* *
* decay_id = 0 for b -> q l^+ i^- transitions *
* 1 for \bar b -> \bar q l^+ l^- transitions; *
* *
* res_swch = 0 the resonant contribution switch OFF *
* = 1 the resonant contribution switch ON; *
* *
* ias -- switching parameter for Lms[] in the As(..) function. *
* *
* Nf -- number of "effective" flavors (for b-quark Nf=5); *
* *
* q2 -- the square of transition 4-momentum; *
* m2 -- b-quark mass (in the heavy meson M1), GeV; *
* md -- mass of the u- and d-quarks, GeV; *
* mc -- c-quark mass, GeV; *
* mu -- scale parameter, GeV; *
* mt -- t-quark mass, GeV; *
* Mw -- mass of the W, GeV; *
* ml -- leptonic mass, GeV; *
* *
* Relambda_qu -- Re(V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}), q={d,s}; *
* Imlambda_qu -- Im(V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}), q={d,s}; *
* */
double EvtbTosllWilsCoeffNLO::ReC9eff( int decay_id, int res_swch, int ias,
int Nf, double q2, double m2, double md,
double mc, double mu, double mt,
double Mw, double ml, double Relambda_qu,
double Imlambda_qu )
{
double RReC9eff;
double tilde_eta; /* Buras variable " \tilde\eta" in (2.33) */
double c1, c2, c3, c4, c5, c6, c9;
double RReh_d, RReh_b, RReHtot_u, IImHtot_u, RReHtot_c, IImHtot_c;
tilde_eta = 1.0 + EvtbTosllWilsCoeffNLO::As( mu, Nf, ias ) *
EvtbTosllWilsCoeffNLO::omega( q2, m2 ) / EvtConst::pi;
c1 = EvtbTosllWilsCoeffNLO::C1( mu, Mw, Nf, ias );
c2 = EvtbTosllWilsCoeffNLO::C2( mu, Mw, Nf, ias );
c3 = EvtbTosllWilsCoeffNLO::C3( mu, Mw, Nf, ias );
c4 = EvtbTosllWilsCoeffNLO::C4( mu, Mw, Nf, ias );
c5 = EvtbTosllWilsCoeffNLO::C5( mu, Mw, Nf, ias );
c6 = EvtbTosllWilsCoeffNLO::C6( mu, Mw, Nf, ias );
c9 = EvtbTosllWilsCoeffNLO::C9v( mu, Mw, mt, Nf, ias );
RReh_d = EvtbTosllWilsCoeffNLO::Reh( mu, md, q2 );
RReh_b = EvtbTosllWilsCoeffNLO::Reh( mu, m2, q2 );
RReHtot_u = EvtbTosllWilsCoeffNLO::ReHtot( 0, res_swch, ias, Nf, mu, md, q2,
ml, Mw );
IImHtot_u = EvtbTosllWilsCoeffNLO::ImHtot( 0, res_swch, ias, Nf, mu, md, q2,
ml, Mw );
RReHtot_c = EvtbTosllWilsCoeffNLO::ReHtot( 1, res_swch, ias, Nf, mu, mc, q2,
ml, Mw );
IImHtot_c = EvtbTosllWilsCoeffNLO::ImHtot( 1, res_swch, ias, Nf, mu, mc, q2,
ml, Mw );
RReC9eff = c9 * tilde_eta + 2.0 * ( 3.0 * c3 + c4 + 3.0 * c5 + c6 ) / 9.0;
RReC9eff = RReC9eff +
( 3.0 * c1 + c2 + 3.0 * c3 + c4 + 3.0 * c5 + c6 ) * RReHtot_c;
RReC9eff = RReC9eff - 0.5 * ( 4.0 * c3 + 4.0 * c4 + 3.0 * c5 + c6 ) * RReh_b;
RReC9eff = RReC9eff - 0.5 * ( c3 + 3.0 * c4 ) * RReh_d;
switch ( decay_id ) {
/* b -> q l^+ i^- transitions */
case 0:
RReC9eff = RReC9eff + ( 3.0 * c1 + c2 ) *
( Relambda_qu * ( RReHtot_c - RReHtot_u ) -
Imlambda_qu * ( IImHtot_c - IImHtot_u ) );
break;
/* \bar b -> \bar q l^+ i^- transitions */
case 1:
RReC9eff = RReC9eff + ( 3.0 * c1 + c2 ) *
( Relambda_qu * ( RReHtot_c - RReHtot_u ) +
Imlambda_qu * ( IImHtot_c - IImHtot_u ) );
break;
};
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n =============================================================="
// << "\n =============================================================="
// << "\n\n The function EvtbTosllWilsCoeffNLO::ReC9eff(...) passed."
// << "\n Particle masses:"
// << "\n q2 = " << q2
// << "\n s = " << q2/(m2*m2)
// << "\n leptonic mass ml = " << ml
// << "\n u or d - quarks mass md = " << md
// << "\n c - quark mass mc = " << mc
// << "\n b - quark mass mb = " << m2
// << "\n t - quark mass mt = " << mt
// << "\n W - boson mass Mw = " << Mw
// << "\n ==============================================================="
// << "\n Input parameters:"
// << "\n scale parameter mu = " << mu
// << "\n number of flavors Nf = " << Nf
// << "\n resonant switching = " << res_swch
// << "\n decay id = " << decay_id
// << "\n parameter for alpha_s(M_Z) = " << ias
// << "\n Relambda_qu = " << Relambda_qu
// << "\n Imlambda_qu = " << Imlambda_qu
// << "\n ================================================================"
// << "\n Wilson Coefficients:"
// << "\n c1 = " << c1
// << "\n c2 = " << c2
// << "\n c3 = " << c3
// << "\n c4 = " << c4
// << "\n c5 = " << c5
// << "\n c6 = " << c6
// << "\n c9 = " << c9
// << "\n Reh_d = " << RReh_d
// << "\n Reh_b = " << RReh_b
// << "\n ReHtot_u = " << RReHtot_u
// << "\n ReHtot_c = " << RReHtot_c
// << "\n ImHtot_u = " << IImHtot_u
// << "\n ImHtot_c = " << IImHtot_c
// << "\n RReC9eff = " << RReC9eff
// << "\n tilde_eta = " << tilde_eta
// << "\n ================================================================="
// << "\n ================================================================="
// << std::endl;
return RReC9eff;
}
/* IMAGINARY PART of the effective coefficient C_9V^{eff}: *
* *
* by A.J.Buras, M.Munz, Phys.Rev.D52 (1995), p189; *
* F.Kruger, L.M.Sehgal, Phys.Rev.D55 (1997), p.2799. *
* *
* decay_id = 0 for b -> q l^+ i^- transitions *
* 1 for \bar b -> \bar q l^+ l^- transitions; *
* *
* res_swch = 0 the resonant contribution switch OFF *
* = 1 the resonant contribution switch ON; *
* *
* ias -- switching parameter for Lms[] in the As(..) function. *
* *
* Nf -- number of "effective" flavors (for b-quark Nf=5); *
* *
* q2 -- the square of transition 4-momentum; *
* m2 -- b-quark mass (in the heavy meson M1), GeV; *
* md -- mass of the u- and d-quarks, GeV; *
* mc -- c-quark mass, GeV; *
* mu -- scale parameter, GeV; *
* Mw -- mass of the W, GeV; *
* ml -- leptonic mass, GeV; *
* *
* Relambda_qu -- Re(V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}), q={d,s}; *
* Imlambda_qu -- Im(V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}), q={d,s}; *
* */
double EvtbTosllWilsCoeffNLO::ImC9eff( int decay_id, int res_swch, int ias,
int Nf, double q2, double m2, double md,
double mc, double mu, double Mw, double ml,
double Relambda_qu, double Imlambda_qu )
{
double IImC9eff;
double c1, c2, c3, c4, c5, c6;
double IImh_d, IImh_b, RReHtot_u, IImHtot_u, RReHtot_c, IImHtot_c;
c1 = EvtbTosllWilsCoeffNLO::C1( mu, Mw, Nf, ias );
c2 = EvtbTosllWilsCoeffNLO::C2( mu, Mw, Nf, ias );
c3 = EvtbTosllWilsCoeffNLO::C3( mu, Mw, Nf, ias );
c4 = EvtbTosllWilsCoeffNLO::C4( mu, Mw, Nf, ias );
c5 = EvtbTosllWilsCoeffNLO::C5( mu, Mw, Nf, ias );
c6 = EvtbTosllWilsCoeffNLO::C6( mu, Mw, Nf, ias );
IImh_d = EvtbTosllWilsCoeffNLO::Imh( md, q2 );
IImh_b = EvtbTosllWilsCoeffNLO::Imh( m2, q2 );
RReHtot_u = EvtbTosllWilsCoeffNLO::ReHtot( 0, res_swch, ias, Nf, mu, md, q2,
ml, Mw );
IImHtot_u = EvtbTosllWilsCoeffNLO::ImHtot( 0, res_swch, ias, Nf, mu, md, q2,
ml, Mw );
RReHtot_c = EvtbTosllWilsCoeffNLO::ReHtot( 1, res_swch, ias, Nf, mu, mc, q2,
ml, Mw );
IImHtot_c = EvtbTosllWilsCoeffNLO::ImHtot( 1, res_swch, ias, Nf, mu, mc, q2,
ml, Mw );
IImC9eff = ( 3.0 * c1 + c2 + 3.0 * c3 + c4 + 3.0 * c5 + c6 ) * IImHtot_c;
IImC9eff = IImC9eff - 0.5 * ( 4.0 * c3 + 4.0 * c4 + 3.0 * c5 + c6 ) * IImh_b;
IImC9eff = IImC9eff - 0.5 * ( c3 + 3.0 * c4 ) * IImh_d;
switch ( decay_id ) {
/* b -> q l^+ i^- transitions */
case 0:
IImC9eff = IImC9eff + ( 3.0 * c1 + c2 ) *
( Relambda_qu * ( IImHtot_c - IImHtot_u ) +
Imlambda_qu * ( RReHtot_c - RReHtot_u ) );
break;
/* \bar b -> \bar q l^+ i^- transitions */
case 1:
IImC9eff = IImC9eff + ( 3.0 * c1 + c2 ) *
( Relambda_qu * ( IImHtot_c - IImHtot_u ) -
Imlambda_qu * ( RReHtot_c - RReHtot_u ) );
break;
};
return IImC9eff;
}
/* Complex representation for the coefficient C_9V: *
* *
* by A.J.Buras, M.Munz, Phys.Rev.D52 (1995), p189; *
* F.Kruger, L.M.Sehgal, Phys.Rev.D55 (1997), p.2799. *
* *
* decay_id = 0 for b -> q l^+ i^- transitions *
* 1 for \bar b -> \bar q l^+ l^- transitions; *
* *
* res_swch = 0 the resonant contribution switch OFF *
* = 1 the resonant contribution switch ON; *
* *
* ias -- switching parameter for Lms[] in the As(..) function. *
* *
* Nf -- number of "effective" flavors (for b-quark Nf=5); *
* *
* q2 -- the square of transition 4-momentum; *
* m2 -- b-quark mass (in the heavy meson M1), GeV; *
* md -- mass of the u- and d-quarks, GeV; *
* mc -- c-quark mass, GeV; *
* mu -- scale parameter, GeV; *
* mt -- t-quark mass, GeV; *
* Mw -- mass of the W, GeV; *
* ml -- leptonic mass, GeV; *
* *
* Relambda_qu -- Re(V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}), q={d,s}; *
* Imlambda_qu -- Im(V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}), q={d,s}; *
* */
EvtComplex EvtbTosllWilsCoeffNLO::GetC9Eff( int decay_id, int res_swch, int ias,
int Nf, double q2, double m2,
double md, double mc, double mu,
double mt, double Mw, double ml,
double Relambda_qu,
double Imlambda_qu )
{
double RReC9eff, IImC9eff;
EvtComplex unit1( 1.0, 0.0 );
EvtComplex uniti( 0.0, 1.0 );
EvtComplex c9eff;
RReC9eff = EvtbTosllWilsCoeffNLO::ReC9eff( decay_id, res_swch, ias, Nf, q2,
m2, md, mc, mu, mt, Mw, ml,
Relambda_qu, Imlambda_qu );
IImC9eff = EvtbTosllWilsCoeffNLO::ImC9eff( decay_id, res_swch, ias, Nf, q2,
m2, md, mc, mu, Mw, ml,
Relambda_qu, Imlambda_qu );
c9eff = RReC9eff * unit1 + IImC9eff * uniti;
return c9eff;
}
/* Complex representation for the coefficient C7gamma: *
* C7gamma=ReC7gamma *
* by A.J.Buras, M.Munz, Phys.Rev.D52 (1995), p189 *
* *
* mu -- scale parameter, GeV; *
* mt -- t-quark mass, GeV; *
* Mw -- mass of the W--meson, GeV; *
* Nf -- number of "effective" flavors *
* (for b-quark Nf=5); *
* ias -- switching parameter for Lms[] *
* in the As(..) function. *
* */
EvtComplex EvtbTosllWilsCoeffNLO::GetC7Eff( double mu, double Mw, double mt,
int Nf, int ias )
{
double CC7gamma;
EvtComplex c7eff;
EvtComplex unit1( 1.0, 0.0 );
CC7gamma = EvtbTosllWilsCoeffNLO::C7gamma( mu, Mw, mt, Nf, ias );
c7eff = unit1 * CC7gamma;
return c7eff;
}
/* Complex representation for the coefficient C_10A: *
* C_10A=ReC_10 *
* by A.J.Buras, M.Munz, Phys.Rev.D52 (1995), p189 *
* *
* mt -- t-quark mass, GeV; *
* Mw -- mass of the W--meson, GeV; *
* */
EvtComplex EvtbTosllWilsCoeffNLO::GetC10Eff( double mt, double Mw )
{
double ReC10;
EvtComplex c10eff;
EvtComplex unit1( 1.0, 0.0 );
ReC10 = EvtbTosllWilsCoeffNLO::C10a( mt, Mw );
c10eff = unit1 * ReC10;
return c10eff;
}
diff --git a/src/EvtGenModels/Evtbs2llGammaAmp.cpp b/src/EvtGenModels/Evtbs2llGammaAmp.cpp
index 55fac85..58f4ec5 100644
--- a/src/EvtGenModels/Evtbs2llGammaAmp.cpp
+++ b/src/EvtGenModels/Evtbs2llGammaAmp.cpp
@@ -1,872 +1,836 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: Evtbs2llGammaAmp.cpp
-//
-// Description: Preparation of the decay amplitude for the process:
-// B^0_{q}(p,M1) -> gamma(k) ell^+(p1,m) ell^-(p2,m).
-//
-// Note: The code of this module is based on the EvtbTosllVectorAmp.cpp
-// module code.
-// The main functiom for the amplitude calculation retuns the
-// amplitude for the decay B -> gamma ell^+ ell^-
-// In our calculations we assume, that photon is the first
-// daughter particle (iG=0) and leptons are the second and thirds
-// daughter particles (il1=1 and il2=2).
-//
-//
-// Modification history:
-//
-// A.Popov & N.Nikitin Oktober 01, 2008 Module created
-// A.Popov Oktober 22, 2008 Add Bramsstrahlung in the amplidude
-// A.Popov & N.Nikitin March 02, 2010 New description for CP-violation
-// N.Nikitin March 07, 2010 New algorithm for maximum calculation
-// N.Nikitin July 16, 2010 Correction of the found bugs
-// N.Nikitin September 22, 2010 Close all reports in this file
-// N.Nikitin September 24, 2012 Memory distribution optimization
-//
-//-----------------------------------------------------------------------------------------
-//
+#include "EvtGenModels/Evtbs2llGammaAmp.hh"
+
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVectorParticle.hh"
#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh"
#include "EvtGenModels/Evtbs2llGammaFFMNT.hh"
-// The header file for current class memeber functions description
-#include "EvtGenModels/Evtbs2llGammaAmp.hh"
#include <cstdlib>
// input: *parent - the pointer to the parent particle (B-meson, the
// object of the EvtParticle class);
// *formFactors - the pointer to instance of EvtbTosllGammaFF class object;
// *WilsCoeff - the pointer to the Standart Model Wilson Coefficients class;
// mu - the scale parameter, GeV;
// Nf - number of "effective" flavors (for b-quark Nf=5);
// res_swch - resonant switching parameter:
// = 0 the resonant contribution switched OFF,
// = 1 the resonant contribution switched ON;
// ias - switching parameter for \alpha_s(M_Z) value:
// = 0 PDG 1sigma minimal alpha_s(M_Z),
// = 1 PDG average value alpha_s(M_Z),
// = 2 PDG 1sigma maximal alpha_s(M_Z).
// Egamma_min - photon energy cut, GeV;
// Wolfenstein parameterization for CKM matrix
// CKM_A, CKM_lambda, CKM_barrho, CKM_bareta
void Evtbs2llGammaAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp,
Evtbs2llGammaFF* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu,
int Nf, int res_swch, int ias, double Egamma_min,
double CKM_A, double CKM_lambda,
double CKM_barrho, double CKM_bareta )
{
// FILE *mytest;
int iG = 0; // photon is the first daughter particle
int il1 = 1,
il2 = 2; // leptons are the second and thirds daughter particles
EvtComplex unit1( 1.0, 0.0 ); // real unit
EvtComplex uniti( 0.0, 1.0 ); // imaginary unit
double M1 = parent->mass(); // B - meson mass, GeV
double ml = parent->getDaug( il1 )->mass(); // leptonic mass, GeV
double mq = 0.0; // light quark mass from the dispersion QM, GeV
double mc = formFactors->getQuarkMass(
4 ); // m_c mass from the dispersion QM, GeV
double mb = formFactors->getQuarkMass(
5 ); // m_b mass from the dispersion QM, GeV
double Mw = 80.403; // GeV W-boson mass, GeV
double mt = 174.2; // GeV t-quark mass, GeV
double fb = 0.0; // leptonic decay constant of B-meson, Gev
EvtComplex Vtb, Vtq, Vub, Vuq, Vcb,
Vcq; // V_{tb}, V_{tq}, V_{ub}, V_{uq}, V_{cb}, V_{cq}
EvtComplex CKM_factor; // V^*_{tq}*V_{tb}, where q={d,s}
EvtComplex lambda_qu; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}, where q={d,s}
EvtComplex lambda_qc; // V^*_{cq}*V_{cb}/V^*_{tq}*V_{tb}, where q={d,s}
double Relambda_qu, Imlambda_qu;
// to find charges of ell^+ and ell^- in the B-meson daughters
int charge1 = EvtPDL::chg3( parent->getDaug( il1 )->getId() );
int charge2 = EvtPDL::chg3( parent->getDaug( il2 )->getId() );
if ( charge1 == 0 || charge2 == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsTollGammaAmp::CalcAmp(...)"
<< "\n Error in the leptonic charge getting!"
<< "\n charge1 =" << charge1
<< "\n charge2 =" << charge2 << "\n charge gamma ="
<< EvtPDL::chg3( parent->getDaug( iG )->getId() )
<< "\n number of daughters =" << parent->getNDaug() << std::endl;
::abort();
}
EvtParticle* lepPlus = 0;
EvtParticle* lepMinus = 0;
lepPlus = ( charge1 > charge2 )
? parent->getDaug( il1 )
: parent->getDaug( il2 ); // positive charged
lepMinus = ( charge1 < charge2 )
? parent->getDaug( il1 )
: parent->getDaug( il2 ); // negative charged
EvtVector4R p = parent->getP4Restframe(); // B-meson momentum in the B-rest frame
EvtVector4R k =
parent->getDaug( iG )->getP4(); // 4-momentum of photon in the B-rest frame
EvtVector4R q = p - k; // transition 4-momentum q=p-k in the B-rest frame
EvtVector4R p_1; // 4-momentum of ell^+ in the B-rest frame
EvtVector4R p_2; // 4-momentum of ell^- in the B-rest frame
// the preparation of the leptonic 4-momentums in the B-rest frame
if ( charge1 > charge2 ) {
p_1 = parent->getDaug( il1 )->getP4();
p_2 = parent->getDaug( il2 )->getP4();
} else {
p_1 = parent->getDaug( il2 )->getP4();
p_2 = parent->getDaug( il1 )->getP4();
}
EvtVector4R p_minus_p_1 =
p - p_1; // transition momentum of the B-meson and antilepton p-p_1
EvtVector4R p_minus_p_2 =
p - p_2; // transition momentum of the B-meson and lepton p-p_2
double q2 = q.mass2(); // Mandelstam variable s=q^2
double p2 = p.mass2(); // p^2=M1^2
double t = p_minus_p_1.mass2(); // Mandelstam variable t=(p-p_1)^2
double u = p_minus_p_2.mass2(); // Mandelstam variable u=(p-p_2)^2
// scalar products
double pk = 0.5 * ( p2 - q2 ); // (p*k)
double p1k = 0.5 * ( pow( ml, 2.0 ) - u ); // (p1*k)
double p2k = 0.5 * ( pow( ml, 2.0 ) - t ); // (p2*k)
double hatq2 = q2 / ( M1 * M1 ); // \hat s = q^2/M_1^2
double Egam = 0.5 * M1 *
( 1 - hatq2 ); // photon energy in the B-meson rest frame
EvtVector4R hatp = p / M1;
EvtVector4R hatk = k / M1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n\n The function EvtbsTollGammaAmp::CalcAmp(...)"
// << "\n q = p-k =" << p-k << " q^2 = " << (p-k).mass2()
// << "\n q = p1+p2 =" << p_1+p_2 << " q^2 = " << (p_1+p_2).mass2()
// << "\n m_ell =" << parent->getDaug(il1)->mass()
// << "\n m_ell =" << parent->getDaug(il2)->mass()
// << "\n m_gamma =" << parent->getDaug(iG)->mass()
// << std::endl;
EvtId idparent = parent->getId(); // B-meson Id
if ( idparent == EvtPDL::getId( std::string( "B_s0" ) ) ||
idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) ) {
mq = formFactors->getQuarkMass( 3 ); // m_s mass from the dispersion QM
fb = 0.24; // leptonic decay constant
// V_{ts}
Vtq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) +
pow( CKM_lambda, 2.0 ) *
( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
Vtq = -CKM_A * pow( CKM_lambda, 2.0 ) * Vtq;
// V_{us}
Vuq = CKM_lambda * unit1;
// V_{cs}
Vcq = unit1 - 0.5 * pow( CKM_lambda, 2.0 ) -
0.125 * pow( CKM_lambda, 4.0 ) * ( 1.0 + 4.0 * pow( CKM_A, 2.0 ) );
}
if ( idparent == EvtPDL::getId( std::string( "B0" ) ) ||
idparent == EvtPDL::getId( std::string( "anti-B0" ) ) ) {
mq = formFactors->getQuarkMass( 2 ); // m_d mass from the dispersion QM
fb = 0.20; // leptonic decay constant
// V_{td}
Vtq = unit1 - ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) *
( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
Vtq = CKM_A * pow( CKM_lambda, 3.0 ) * Vtq;
// V_{ud}
Vuq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) -
0.125 * pow( CKM_lambda, 4.0 ) );
// V_{cd}
Vcq = unit1 *
( -CKM_lambda +
0.5 * pow( CKM_A, 2.0 ) * pow( CKM_lambda, 5.0 ) *
( 1.0 - 2.0 * ( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ) ) );
}
if ( mq < 0.001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsTollGammaAmp::CalcAmp(..// 4-momentum of ell^+.)"
<< "\n Error in the model set!"
<< " mq = " << mq << std::endl;
::abort();
}
Vtb = unit1 * ( 1.0 - 0.5 * pow( CKM_A * CKM_lambda * CKM_lambda,
2.0 ) ); // V_{tb}
Vub = CKM_A * pow( CKM_lambda, 3.0 ) *
( CKM_barrho * unit1 - CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ); // V_{ub}
Vcb = unit1 * CKM_A * pow( CKM_lambda, 2.0 ); // V_{cb}
CKM_factor = conj( Vtq ) * Vtb; // V^*_{tq}*V_{tb}
lambda_qu = conj( Vuq ) * Vub /
CKM_factor; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}
Relambda_qu = real( lambda_qu );
Imlambda_qu = imag( lambda_qu );
lambda_qc = conj( Vcq ) * Vcb /
CKM_factor; // V^*_{cq}*V_{cb}/V^*_{tq}*V_{tb}
// The Wilson Coefficients preparation according to the paper
// A.J.Buras, M.Munz, Phys.Rev.D52, p.189 (1995)
double c1, c2;
EvtComplex a1, c7gam, c9eff_b2q, c9eff_barb2barq, c10a;
// foton energy cut and removal of the J/psi amd psi' resonant area
if ( Egam < Egamma_min || ( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) ) {
c1 = 0.0;
c2 = 0.0;
a1 = unit1 * 0.0;
c7gam = unit1 * 0.0;
c9eff_b2q = unit1 * 0.0;
c9eff_barb2barq = unit1 * 0.0;
c10a = unit1 * 0.0;
} else {
c1 = WilsCoeff->C1( mu, Mw, Nf, ias );
c2 = WilsCoeff->C2( mu, Mw, Nf, ias );
a1 = unit1 * ( c1 + c2 / 3.0 );
c7gam = WilsCoeff->GetC7Eff( mu, Mw, mt, Nf, ias );
c9eff_b2q = WilsCoeff->GetC9Eff( 0, res_swch, ias, Nf, q2, mb, mq, mc, mu,
mt, Mw, ml, Relambda_qu, Imlambda_qu );
c9eff_barb2barq = WilsCoeff->GetC9Eff( 1, res_swch, ias, Nf, q2, mb, mq,
mc, mu, mt, Mw, ml, Relambda_qu,
Imlambda_qu );
c10a = WilsCoeff->GetC10Eff( mt, Mw );
}
EvtComplex Fv,
Fa; // The change of the sign is included in the amplitudes definition!
EvtComplex Ftv_b2q, Ftv_barb2barq;
EvtComplex Fta_b2q, Fta_barb2barq;
// foton energy cut and removal of the J/psi amd psi' resonant area
if ( Egam < Egamma_min || ( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) ) {
fb = 0.0;
Fa = unit1 * 0.0;
Fv = unit1 * 0.0;
Fta_b2q = unit1 * 0.0;
Fta_barb2barq = unit1 * 0.0;
Ftv_b2q = unit1 * 0.0;
Ftv_barb2barq = unit1 * 0.0;
} else {
if ( fb < 0.01 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsTollGammaAmp::CalcAmp(...)"
<< "\n Leptonic decay constant fb is not uninitialized in this function!"
<< " fb = " << fb << std::endl;
::abort();
}
// For \bar B^0_q -> l^+ l^- gamma
formFactors->getPhotonFF( 0, fb, parent->getId(), q2, M1, mb, mq, c7gam,
a1, lambda_qu, lambda_qc, Fv, Fa, Ftv_b2q,
Fta_b2q );
// For B^0_q -> l^+ l^- gamma
formFactors->getPhotonFF( 1, fb, parent->getId(), q2, M1, mb, mq, c7gam,
a1, lambda_qu, lambda_qc, Fv, Fa,
Ftv_barb2barq, Fta_barb2barq );
}
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n ============================================================================"
// << "\n ============================================================================"
// << "\n\n The function Evtbs2llGammaAmp::CalcAmp(...) passed."
// << "\n Particle masses:"
// << "\n B - meson mass M1 = " << M1
// << "\n photon minimum E = " << Egamma_min
// << "\n q2 = " << q2
// << "\n leptonic mass ml = " << ml
// << "\n light quark mass = " << mq
// << "\n c - quark mass mc = " << mc
// << "\n b - quark mass mb = " << mb
// << "\n t - quark mass mt = " << mt
// << "\n W - boson mass Mw = " << Mw
// << "\n ============================================================================"
// << "\n Input parameters:"
// << "\n scale parameter mu = " << mu
// << "\n number of flavors Nf = " << Nf
// << "\n resonant switching = " << res_swch
// << "\n parameter for alpha_s(M_Z) = " << ias
// << "\n photon energy cut (GeV) = " << Egamma_min
// << "\n ============================================================================"
// << "\n Form-factors"
// << "\n Egam = " << Egam
// << "\n Egamma_min = " << Egamma_min
// << "\n Fv = " << Fv
// << "\n Fa = " << Fa
// << "\n Ftv_b2q = " << Ftv_b2q
// << "\n Fta_b2q = " << Fta_b2q
// << "\n Ftv_barb2barq = " << Ftv_barb2barq
// << "\n Fta_barb2barq = " << Fta_barb2barq
// << "\n ============================================================================"
// << "\n Wilson Coefficients:"
// << "\n Egam = " << Egam
// << "\n Egamma_min = " << Egamma_min
// << "\n Re(c7gam) = " << real(c7gam)
// << " Im(c7gam) = " << imag(c7gam)
// << "\n Re(c9eff_b2q) = " << real(c9eff_b2q)
// << " Im(c9eff_b2q) = " << imag(c9eff_b2q)
// << "\n Re(c9eff_barb2barq) = " << real(c9eff_barb2barq)
// << " Im(c9eff_barb2barq) = " << imag(c9eff_barb2barq)
// << "\n Re(c10a) = " << real(c10a)
// << " Im(c10a) = " << imag(c10a)
// << std::endl;
// Hadronic matrix element coefficients
EvtComplex a_b2q, a_barb2barq, b_b2q, b_barb2barq, e_b2q, e_barb2barq,
f_b2q, f_barb2barq;
EvtComplex brammS, brammT;
a_b2q = c9eff_b2q * Fv + 2.0 * c7gam * Ftv_b2q * mb * M1 / q2;
a_barb2barq = c9eff_barb2barq * Fv +
2.0 * c7gam * Ftv_barb2barq * mb * M1 / q2;
b_b2q = ( c9eff_b2q * Fa + 2.0 * c7gam * Fta_b2q * mb * M1 / q2 ) * pk /
( M1 * M1 );
b_barb2barq = ( c9eff_barb2barq * Fa +
2.0 * c7gam * Fta_barb2barq * mb * M1 / q2 ) *
pk / ( M1 * M1 );
e_b2q = c10a * Fv;
e_barb2barq = e_b2q;
f_b2q = c10a * Fa * pk / ( M1 * M1 );
f_barb2barq = f_b2q;
brammS = 0.0; // in the Bq-meson rest frame!
brammT = 0.5 * c10a * ml * fb *
( 1.0 / p2k + 1.0 / p1k ); // for Bramsstrahlung
EvtTensor4C T1, T2; // hadronic matrix element tensor structures
EvtVector4C E1, E2;
EvtComplex E3;
EvtVector4C epsG; // photon polarisation vector
int i; // photon polarisations counter
EvtVector4C lvc11, lvc12; // spin structures for
EvtVector4C lvc21, lvc22; // the leptonic vector current
EvtVector4C lac11, lac12; // spin structures for
EvtVector4C lac21, lac22; // the leptonic axial current
EvtComplex lsc11, lsc12; // spin structures for
EvtComplex lsc21, lsc22; // the leptonic scalar current
EvtTensor4C ltc11, ltc12; // spin structures for
EvtTensor4C ltc21, ltc22; // the leptonic tensor current
// B - and barB - mesons descriptors
static EvtIdSet bmesons( "anti-B0", "anti-B_s0" );
static EvtIdSet bbarmesons( "B0", "B_s0" );
EvtId parentID = parent->getId();
if ( bmesons.contains( parentID ) ) {
// The amplitude for the decay barB -> gamma ell^+ ell^- or
// b \bar q -> gamma ell^+ ell^-
T1 = -a_b2q * unit1 * dual( EvtGenFunctions::directProd( hatp, hatk ) ) -
b_b2q * uniti * EvtTensor4C::g();
T2 = -e_b2q * unit1 * dual( EvtGenFunctions::directProd( hatp, hatk ) ) -
f_b2q * uniti * EvtTensor4C::g();
// spin combinations for vector lepton current
lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lac11 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lac21 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lac12 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lac22 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lsc11 = EvtLeptonSCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lsc21 = EvtLeptonSCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lsc12 = EvtLeptonSCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lsc22 = EvtLeptonSCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
// \epsilon^{\alpha\beta\mu\nu}*TCurrent_{\mu\nu}
ltc11 = dual( EvtLeptonTCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) ) );
ltc21 = dual( EvtLeptonTCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) ) );
ltc12 = dual( EvtLeptonTCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) ) );
ltc22 = dual( EvtLeptonTCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) ) );
// summing up photon polarisations
for ( i = 0; i < 2; i++ ) {
// conjaction of epsG (photon polarization vector)
EvtVector4C epsG = parent->getDaug( 0 )->epsParentPhoton( i ).conj();
// de-escalation T with epsG
E1 = T1.cont2( epsG );
E2 = T2.cont2( epsG );
E3 = ( epsG * hatp ) * brammS;
// foton energy cut and removal of the J/psi amd psi' resonant area
if ( Egam < Egamma_min ||
( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) ) {
CKM_factor = 0.0 * unit1;
}
// 1
amp.vertex( i, 0, 0,
CKM_factor *
( lvc11 * E1 + lac11 * E2 + uniti * lsc11 * E3 +
uniti * ( ( ltc11.cont2( hatp ) ) * epsG ) *
brammT ) );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n 1" << CKM_factor*(lvc11*E1+lac11*E2+uniti*lsc11*E3+uniti*((ltc11.cont2(hatp))*epsG)*brammT)
// << std::endl;
// 2
amp.vertex( i, 0, 1,
CKM_factor *
( lvc12 * E1 + lac12 * E2 + uniti * lsc12 * E3 +
uniti * ( ( ltc12.cont2( hatp ) ) * epsG ) *
brammT ) );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n 2" << CKM_factor*(lvc12*E1+lac12*E2+uniti*lsc12*E3+uniti*((ltc12.cont2(hatp))*epsG)*brammT)
// << std::endl;
// 3
amp.vertex( i, 1, 0,
CKM_factor *
( lvc21 * E1 + lac21 * E2 + uniti * lsc21 * E3 +
uniti * ( ( ltc21.cont2( hatp ) ) * epsG ) *
brammT ) );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n 3" << CKM_factor*(lvc21*E1+lac21*E2+uniti*lsc21*E3+uniti*((ltc21.cont2(hatp))*epsG)*brammT)
// << std::endl;
// 4
amp.vertex( i, 1, 1,
CKM_factor *
( lvc22 * E1 + lac22 * E2 + uniti * lsc22 * E3 +
uniti * ( ( ltc22.cont2( hatp ) ) * epsG ) *
brammT ) );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n 4" << CKM_factor*(lvc22*E1+lac22*E2+uniti*lsc22*E3+uniti*((ltc22.cont2(hatp))*epsG)*brammT)
// << std::endl;
}
} else {
if ( bbarmesons.contains( parentID ) ) {
// The amplitude for the decay B -> gamma ell^+ ell^- or
// q bar b -> gamma ell^+ ell^-
T1 = -a_barb2barq * unit1 *
dual( EvtGenFunctions::directProd( hatp, hatk ) ) +
b_barb2barq * uniti * EvtTensor4C::g();
T2 = -e_barb2barq * unit1 *
dual( EvtGenFunctions::directProd( hatp, hatk ) ) +
f_barb2barq * uniti * EvtTensor4C::g();
lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lac11 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lac21 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lac12 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lac22 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lsc11 = EvtLeptonSCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lsc21 = EvtLeptonSCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lsc12 = EvtLeptonSCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lsc22 = EvtLeptonSCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
// \epsilon^{\alpha\beta\mu\nu}*TCurrent_{\mu\nu}
ltc11 = dual( EvtLeptonTCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) ) );
ltc21 = dual( EvtLeptonTCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) ) );
ltc12 = dual( EvtLeptonTCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) ) );
ltc22 = dual( EvtLeptonTCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) ) );
// summing up photon polarisations
for ( i = 0; i < 2; i++ ) {
EvtVector4C barepsG = parent->getDaug( 0 )->epsParentPhoton( i );
E1 = T1.cont2( barepsG );
E2 = T2.cont2( barepsG );
E3 = ( barepsG * hatp ) * brammS;
// foton energy cut and removal of the J/psi amd psi' resonant area
if ( Egam < Egamma_min ||
( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) ) {
CKM_factor = 0.0 * unit1;
}
amp.vertex(
i, 1, 1,
conj( CKM_factor ) *
( lvc11 * E1 + lac11 * E2 + uniti * lsc11 * E3 + // -?
uniti * ( ( ltc11.cont2( hatp ) ) * epsG ) * brammT ) );
amp.vertex(
i, 1, 0,
conj( CKM_factor ) *
( lvc12 * E1 + lac12 * E2 + uniti * lsc12 * E3 + // -?
uniti * ( ( ltc12.cont2( hatp ) ) * epsG ) * brammT ) );
amp.vertex(
i, 0, 1,
conj( CKM_factor ) *
( lvc21 * E1 + lac21 * E2 + uniti * lsc21 * E3 + // -?
uniti * ( ( ltc21.cont2( hatp ) ) * epsG ) * brammT ) );
amp.vertex(
i, 0, 0,
conj( CKM_factor ) *
( lvc22 * E1 + lac22 * E2 + uniti * lsc22 * E3 + // -?
uniti * ( ( ltc22.cont2( hatp ) ) * epsG ) * brammT ) );
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function Evtbs2llGammaAmp::CalcAmp(...)"
<< "\n Wrong B-meson number" << std::endl;
::abort();
}
}
}
//
// The decays B -> Gamma ell^+ ell^- maximum probability calculation for the
// d^2\Gamma/dq^2 d\cos\theta distribution.
//
// \theta - the angle between the photon and ell^- directions in the
// B-meson rest frame.
//
// If ias=0 (nonresonant case), the maximum is achieved at q2
// B0s: q2 = 4*ml^2, Mphi^2, q_max^2;
// B0d: q2 = 4*ml^2, Mrho^2, Momega^2, q_max^2;
// If ias=1 (resonant case), the maximum in the same points, because the
// resonat area is remove
//
double Evtbs2llGammaAmp::CalcMaxProb( EvtId parnum, EvtId photnum, EvtId l1num,
EvtId l2num, Evtbs2llGammaFF* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff,
double mu, int Nf, int res_swch, int ias,
double Egamma_min, double CKM_A,
double CKM_lambda, double CKM_barrho,
double CKM_bareta )
{
double maxfoundprob = -100.0; // maximum of the probability
// int ijk_atmax = 1000000;
double M1 = EvtPDL::getMeanMass( parnum ); // B - meson mass
double ml = EvtPDL::getMeanMass( l1num ); // leptonic mass
double Mrho = EvtPDL::getMeanMass(
EvtPDL::getId( std::string( "rho0" ) ) ); // mass of the rho-meson, MeV
double Momega = EvtPDL::getMeanMass( EvtPDL::getId(
std::string( "omega" ) ) ); // mass of the omega-meson, MeV
double Mphi = EvtPDL::getMeanMass(
EvtPDL::getId( std::string( "phi" ) ) ); // mass of the phi-meson, MeV
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n M1 = " << M1
// << "\n ml = " << ml
// << "\n Mrho = " << Mrho
// << "\n Momega = " << Momega
// << "\n Mphi = " << Mphi
// << "\n Egamma_min = " << Egamma_min
// << std::endl;
double list_of_max_q2_points[5];
list_of_max_q2_points[0] = pow( 2.0 * ml, 2.0 );
list_of_max_q2_points[1] = pow( Mrho, 2.0 );
list_of_max_q2_points[2] = pow( Momega, 2.0 );
list_of_max_q2_points[3] = pow( Mphi, 2.0 );
list_of_max_q2_points[4] =
pow( M1, 2.0 ) - 2.0 * M1 * Egamma_min; // q^2_max at photon energy cut
// if(list_of_max_points[4]<0){
// EvtGenReport(EVTGEN_ERROR,"EvtGen")
// << "\n\n In the function EvtbsTollGammaAmp::CalcScalarMaxProb(...)"
// << "\n Bad photon energy cut: Egamma_min > M1 in the rest frame of B-meson!"
// << "\n q2_max = " << list_of_max_points[4]
// << "\n M1 = " << M1
// << "\n Egamma_min = " << Egamma_min
// << std::endl;
// ::abort();
// }
if ( Egamma_min > Mrho ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbsTollGammaAmp::CalcScalarMaxProb(...)"
<< "\n Bad photon energy cut: Egamma_min > M_rho0 in the rest frame of B-meson."
<< "\n Mrho = " << Mrho << "\n Egamma_min = " << Egamma_min
<< std::endl;
::abort();
}
if ( Egamma_min <= 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbsTollGammaAmp::CalcScalarMaxProb(...)"
<< "\n Bad photon energy cut: Egamma_min <= 0 in the rest frame of B-meson."
<< "\n Egamma_min = " << Egamma_min << std::endl;
::abort();
}
if ( res_swch == 0 || res_swch == 1 ) {
int i_list;
for ( i_list = 0; i_list <= 4; i_list++ ) {
double s; // mandelstam variable "s";
double t_minus; // minimum and maximum of the mandelstam variable "t"
double t_plus; // as function of the mandelstam variable "s=q2";
double t_for_s;
int ijk; // counter for variable "t";
int max_ijk; // maximal value of this counter;
s = list_of_max_q2_points[i_list];
t_plus = pow( M1, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_plus = t_plus + sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
( pow( M1, 2.0 ) - s );
t_plus *= 0.5;
t_minus = pow( M1, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_minus = t_minus - sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
( pow( M1, 2.0 ) - s );
t_minus *= 0.5;
if ( fabs( t_plus - t_minus ) < 0.000001 )
t_minus = t_plus;
max_ijk = 1000;
double dt = ( t_plus - t_minus ) / ( (double)max_ijk );
if ( fabs( dt ) < 0.00001 )
dt = 0.0;
if ( dt < 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbsTollGammaAmp::CalcScalarMaxProb(...)"
<< "\n dt = " << dt << " < 0."
<< "\n s = " << s << "\n t_plus = " << t_plus
<< "\n t_minus = " << t_minus << "\n M1 = " << M1
<< "\n ml = " << ml << std::endl;
::abort();
}
for ( ijk = 0; ijk <= max_ijk; ijk++ ) {
t_for_s = t_minus + dt * ( (double)ijk );
// B-meson rest frame particles and they kinematics inicialization
double Eg, El2;
Eg = ( pow( M1, 2.0 ) - s ) / ( 2.0 * M1 ); // photon energy
El2 = ( s + t_for_s - pow( ml, 2.0 ) ) /
( 2.0 * M1 ); // ell^- energy
double modl2;
modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) );
double cosBellminus; // angle between the B-meson and ell^- directions
cosBellminus = ( pow( ml, 2.0 ) + 2.0 * Eg * El2 - t_for_s ) /
( 2.0 * Eg * modl2 );
if ( ( fabs( cosBellminus ) > 1.0 ) &&
( fabs( cosBellminus ) <= 1.0001 ) ) {
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n Debug in the function EvtbsTollGammaAmp::CalcMaxProb(...):"
<< "\n cos(theta) = " << cosBellminus << std::endl;
cosBellminus = cosBellminus / fabs( cosBellminus );
}
if ( fabs( cosBellminus ) > 1.0001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbsTollGammaAmp::CalcMaxProb(...)"
<< "\n |cos(theta)| = " << fabs( cosBellminus ) << " > 1"
<< "\n s = " << s << "\n t_for_s = " << t_for_s
<< "\n t_plus = " << t_plus << "\n t_minus = " << t_minus
<< "\n dt = " << dt << "\n Eg = " << Eg
<< "\n El2 = " << El2 << "\n modl2 = " << modl2
<< "\n ml = " << ml << std::endl;
::abort();
}
EvtVector4R p, k, p1, p2;
p.set( M1, 0.0, 0.0, 0.0 );
k.set( Eg, Eg, 0.0, 0.0 );
p2.set( El2, modl2 * cosBellminus,
-modl2 * sqrt( 1.0 - pow( cosBellminus, 2.0 ) ), 0.0 );
p1 = p - k - p2;
// B-meson state preparation at the rest frame of B-meson
EvtScalarParticle* scalar_part;
EvtParticle* root_part;
scalar_part = new EvtScalarParticle;
scalar_part->noLifeTime();
scalar_part->init( parnum, p );
root_part = (EvtParticle*)scalar_part;
root_part->setDiagonalSpinDensity();
// Amplitude initialization
EvtId listdaug[3];
listdaug[0] = photnum;
listdaug[1] = l1num;
listdaug[2] = l2num;
EvtAmp amp;
amp.init( parnum, 3, listdaug );
// Daughters states preparation at the rest frame of B-meson
root_part->makeDaughters( 3, listdaug );
EvtParticle *gamm, *lep1, *lep2;
gamm = root_part->getDaug( 0 );
lep1 = root_part->getDaug( 1 );
lep2 = root_part->getDaug( 2 );
gamm->noLifeTime();
lep1->noLifeTime();
lep2->noLifeTime();
gamm->init( photnum, k );
lep1->init( l1num, p1 );
lep2->init( l2num, p2 );
EvtSpinDensity rho;
rho.setDiag( root_part->getSpinStates() );
// The amplitude calculation at the
// "maximum amplitude" kinematical configuration
CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf,
res_swch, ias, Egamma_min, CKM_A, CKM_lambda,
CKM_barrho, CKM_bareta );
// Now find the probability at this q2 and cos theta lepton point
double nikmax = rho.normalizedProb( amp.getSpinDensity() );
if ( nikmax > maxfoundprob ) {
maxfoundprob = nikmax;
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n maxfoundprob ( s =" << s << ", t = " << t_for_s
<< " ) = " << maxfoundprob << "\n ijk =" << ijk
<< std::endl;
}
delete scalar_part;
// delete root_part;
delete gamm;
delete lep1;
delete lep2;
} // for(ijk=0; ijk<=max_ijk; ijk++)
} // i_list - variable loop
} // if(res_swch==0||res_swch==1)
else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbsTollVectorAmpNew::CalcMaxProb(...)"
<< "\n Unexpected value of the variable res_swch !!!"
<< "\n res_swch = " << res_swch << std::endl;
::abort();
}
if ( maxfoundprob <= 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbsTollVectorAmpNew::CalcMaxProb(...)"
<< "\n maxfoundprob = " << maxfoundprob << " <0 or =0!"
<< "\n res_swch = " << res_swch << std::endl;
::abort();
}
maxfoundprob *= 1.01;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n **********************************************************************"
// << "\n The function Evtbs2llGammaAmp::CalcMaxProb(...) passed with arguments:"
// << "\n mu =" << mu << " Nf =" << Nf
// << " res_swch =" << res_swch
// << " ias =" << ias
// << "\n CKM_A = " << CKM_A
// << " CKM_lambda = " << CKM_lambda
// << "\n CKM_barrho = " << CKM_barrho
// << " CKM_bareta = " << CKM_bareta
// << "\n The distribution maximum maxfoundprob =" << maxfoundprob
// << "\n ijk = " << ijk_atmax
// << "\n **********************************************************************"
// << std::endl;
return maxfoundprob;
}
// Triangular function
double Evtbs2llGammaAmp::lambda( double a, double b, double c )
{
double l;
l = pow( a, 2.0 ) + pow( b, 2.0 ) + pow( c, 2.0 ) - 2.0 * a * b -
2.0 * a * c - 2.0 * b * c;
return l;
}
diff --git a/src/EvtGenModels/Evtbs2llGammaFFMNT.cpp b/src/EvtGenModels/Evtbs2llGammaFFMNT.cpp
index c726291..cbe21be 100644
--- a/src/EvtGenModels/Evtbs2llGammaFFMNT.cpp
+++ b/src/EvtGenModels/Evtbs2llGammaFFMNT.cpp
@@ -1,195 +1,172 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package.
-//
-// Module:
-// Description: Form-factors for B_q -> gamma transitions, q={d,s}
-// according to the papers:
-// 1) F.Kruger, D.Melikhov, Phys. Rev. D67, 034002, 2003.
-// 2) D.Melikhov, N.Nikitin, Phys. Rev. D70, 114028, 2004.
-// 3) I.Balakireva, D.Melikhov, N.Nikitin, D.Tlisov,
-// Phys. Rev. D81, 054024, 2010.
-//
-// Modification history:
-//
-// A.Popov October 03, 2008 Module created
-// N.Nikitin October 10, 2008 Prepare the main classes
-// A.Popov October 30, 2008 Add the Ftv(0,q^2) and Fta(0,q^2) form-factors
-// N.Nikitin March 01, 2010 Add the weak annihilation contribution
-// N.Nikitin July 16, 2010 Has corrected the found bugs
-//
-//------------------------------------------------------------------------
-
#include "EvtGenModels/Evtbs2llGammaFFMNT.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include <cmath>
#include <cstdlib>
Evtbs2llGammaFFMNT::Evtbs2llGammaFFMNT()
{
}
/* *
* decay_id = 0 for b \bar q -> l^+ l^- \gamma transitions *
* 1 for q \bar b -> l^+ l^- \gamma transitions; *
* fb - leptonic decay constant of the B_q - meson; *
* mb - the mass of the b-quark; *
* mq - the mass of the light quark (d or s); *
* c7gam - Wilson coefficient C_{7\gamma}; *
* a1 = c1 + c2/3.0 - linear combination of the Wils. Coeff.; *
* lambda_qu = V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}, where q={d,s}; *
* lambda_qc = V^*_{cq}*V_{cb}/V^*_{tq}*V_{tb}, where q={d,s}. *
* */
void Evtbs2llGammaFFMNT::getPhotonFF( int decay_id, double fb, EvtId parent,
double q2, double M1, double mb,
double mq, EvtComplex c7gam, EvtComplex a1,
EvtComplex lambda_qu, EvtComplex lambda_qc,
EvtComplex& Fv, EvtComplex& Fa,
EvtComplex& Ftv, EvtComplex& Fta )
{
EvtComplex unit1( 1.0, 0.0 ); // real unit
EvtComplex uniti( 0.0, 1.0 ); // imaginary unit
EvtComplex unit0( 0.0, 0.0 ); // complex zero unit
// characteristics of resonances rho, omega, phi
double M_res[] = {0.7758, 0.78259, 1.019456}; // particle masses, Gev
double Gamma[] = {0.1503, 0.00849, 0.00426}; // particle widthes, Gev
double f_lept[] = {5.04, 17.1, -13.2}; // decay constants f_i
double g_plus[] = {0.27, -0.27, -0.38}; // and form-factors g+(0)
g_plus[0] = g_plus[0] / sqrt( 2.0 ); // by D.Melikhov, N.Nikitin, K.Toms,
g_plus[1] = g_plus[1] / sqrt( 2.0 ); // Phys.At.Nucl. 68, p.1842 (2005)
double hatq2 = q2 / pow( M1, 2 );
// E - photon energy in the B-meson rest frame
double E = 0.5 * M1 * ( 1 - hatq2 );
// parametrs for form-factors Fv, Ftv, Fa, Fta
//(by D.Melikhov, N.Nikitin, K.Toms, Yad. Fiz. 62, No 11)
double beta[] = {0.28, 0.30, 0.26, 0.33}; // beta, Gev^(-1)
double Delta[] = {0.04, 0.04, 0.30, 0.30}; // Delta, Gev
// form-factors
EvtComplex Ftvq0, Ftaq0, Ftv00, Fta00;
Fv = unit1 * beta[0] * fb * M1 / ( Delta[0] + E ); // Fv(q^2)
Ftvq0 = unit1 * beta[1] * fb * M1 / ( Delta[1] + E ); // Ftv(q^2,0)
Fa = unit1 * beta[2] * fb * M1 / ( Delta[2] + E ); // Fa(q^2)
Ftaq0 = unit1 * beta[3] * fb * M1 / ( Delta[3] + E ); // Fta(q^2,0)
Ftv00 = unit1 * beta[1] * fb * M1 / ( Delta[1] + 0.5 * M1 ); // Ftv(0,0)
Fta00 = unit1 * beta[3] * fb * M1 / ( Delta[3] + 0.5 * M1 ); // Fta(0,0)
EvtComplex Ftv_WA( 0.0, 0.0 ); // the weak annihilation contribution
// Resonant contribution to the form-factors Ftv(0,q^2) and Fta(0,q^2)
EvtComplex ResSum( 0.0, 0.0 );
if ( parent == EvtPDL::getId( std::string( "B_s0" ) ) ||
parent == EvtPDL::getId( std::string( "anti-B_s0" ) ) ) {
// only \phi-resonant contribution to the Bs-decays
ResSum = 2.0 * g_plus[2] * q2 /
( f_lept[2] * ( unit1 * ( q2 - pow( M_res[2], 2 ) ) +
uniti * M_res[2] * Gamma[2] ) );
}
if ( parent == EvtPDL::getId( std::string( "B_d0" ) ) ||
parent == EvtPDL::getId( std::string( "anti-B_d0" ) ) ) {
// \rho- and \omega-resonant contribution to the Bd-decays
for ( int i = 0; i < 2; i++ ) {
ResSum = ResSum +
2.0 * g_plus[i] * q2 /
( f_lept[i] * ( unit1 * ( q2 - pow( M_res[i], 2 ) ) +
uniti * M_res[i] * Gamma[i] ) );
}
}
EvtComplex Ftv0q = Ftv00 - ResSum; // form-factor Ftv(0,q^2)
EvtComplex Fta0q = Fta00 - ResSum; // form-factor Fta(0,q^2)
// Ftv(q^2,q^2) = Ftv(q^2,0)+Ftv(0,q^2)
Ftv = Ftvq0 + Ftv0q;
// Fta(q^2,q^2) = Fta(q^2,0)+Fta(0,q^2)
Fta = Ftaq0 + Fta0q;
// Weak annihilation
if ( abs( c7gam ) < 0.0000001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function Evtbs2llGammaFFMNT::getPhotonFF"
<< "\n Error: the Wilson coefficient C7gamma = 0!"
<< " c7gam = " << c7gam << std::endl;
::abort();
}
if ( mb < 0.001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function Evtbs2llGammaFFMNT::getPhotonFF"
<< " mb = " << mb << " << 5 GeV!" << std::endl;
::abort();
}
switch ( decay_id ) {
/* b \bar q -> l^+ l^- \gamma transitions */
case 0:
Ftv_WA = ( 16.0 / 3.0 ) * ( lambda_qu + lambda_qc ) *
( a1 / c7gam ) * ( fb / mb );
Ftv = ( 1.0 + mq / mb ) * Ftv - Ftv_WA;
Fta = ( 1.0 - mq / mb ) * Fta;
//Fv = Fv;
//Fa = Fa;
break;
/* q \bar b -> l^+ l^- \gamma transitions */
case 1:
Ftv_WA = ( 16.0 / 3.0 ) * conj( lambda_qu + lambda_qc ) *
( a1 / c7gam ) * ( fb / mb );
Ftv = ( 1.0 + mq / mb ) * Ftv + Ftv_WA;
Fta = ( 1.0 - mq / mb ) * Fta; // The change of the sign
//Fv = Fv; // is included in the
//Fa = Fa; // amplitudes definition!
break;
};
}
// Getting the quark mass (in GeV) using to the dispersion quark model
// of D.Melikhov, B.Stech, PRD62, 014006 (2000).
//
// i=1 => return m_u;
// i=2 => return m_d;
// i=3 => return m_s;
// i=4 => return m_c;
// i=5 => return m_b;
double Evtbs2llGammaFFMNT::getQuarkMass( int i )
{
double qm = 0.0;
switch ( i ) {
case 1:
qm = 0.23; // m_u
break;
case 2:
qm = 0.23; // m_d = m_u
break;
case 3:
qm = 0.35; // m_s
break;
case 4:
qm = 1.45; // m_c
break;
case 5:
qm = 4.85; // m_b
break;
default:
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "In the function EvtbTosllMSFF::getQuarkMass \n"
<< "the parametr i not equal 1, 2, 3, 4 or 5! \n"
<< "i =" << i << std::endl;
::abort();
}
return qm;
}
diff --git a/src/EvtGenModels/Evtbs2llGammaISRFSR.cpp b/src/EvtGenModels/Evtbs2llGammaISRFSR.cpp
index db0969e..983bd15 100644
--- a/src/EvtGenModels/Evtbs2llGammaISRFSR.cpp
+++ b/src/EvtGenModels/Evtbs2llGammaISRFSR.cpp
@@ -1,196 +1,175 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech, UCSB
-//
-// Module: Evtbs2llGammaISRFSR.ccp
-//
-// Description: decay model BSTOGLLISRFSR (see the Internal LHCb Note LHCb-INT-2011-011)
-//
-// Modification history:
-//
-// N.Nikitin December 09, 2014 Module create and added the tool for selecting
-// the ISR and FSR parts in the decay amplitude.
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/Evtbs2llGammaISRFSR.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh"
#include "EvtGenModels/Evtbs2llGammaFFMNT.hh"
#include "EvtGenModels/Evtbs2llGammaISRFSRAmp.hh"
#include <stdlib.h>
#include <string.h>
Evtbs2llGammaISRFSR::~Evtbs2llGammaISRFSR()
{
delete _mntffmodel;
if ( _calcamp )
delete _calcamp;
}
// The module name specification
std::string Evtbs2llGammaISRFSR::getName()
{
return "BSTOGLLISRFSR";
}
// The implementation of the clone() method
EvtDecayBase* Evtbs2llGammaISRFSR::clone()
{
return new Evtbs2llGammaISRFSR;
}
// The inicialization of the decay model
//
// Tn the our model we have are following 4 arguments:
//
// mu - the scale parameter, GeV;
// Nf - number of "effective" flavors (for b-quark Nf=5);
// sr - state radiation type:
// = 0 ISR only,
// = 1 FSR only,
// = 2 ISR + FSR (== BSTOGLLMNT model);
// res_swch - resonant switching parametr:
// = 0 the resonant contribution switched OFF,
// = 1 the resonant contribution switched ON;
// ias - switching parametr for \alpha_s(M_Z) value:
// = 0 PDG 1sigma minimal alpha_s(M_Z),
// = 1 PDG average value alpha_s(M_Z),
// = 2 PDG 1sigma maximal alpha_s(M_Z).
// Egamma_min - photon energy cut, GeV;
// Wolfenstein parameterization for CKM matrix
// CKM_A, CKM_lambda, CKM_barrho, CKM_bareta
//
void Evtbs2llGammaISRFSR::init()
{
// check that there are 10 arguments
checkNArg( 10, 11 );
// check that there are 3 daughteres
checkNDaug( 3 );
// We expect that the parent to be a scalar (B-meson)
// and the daughters to be Gamma, l^+ and l^-
checkSpinParent( EvtSpinType::SCALAR );
// We expect that the first daughter is the photon
EvtSpinType::spintype photontype = EvtPDL::getSpinType( getDaug( 0 ) );
if ( !( photontype == EvtSpinType::PHOTON ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Evtbs2llGammaISRFSR generator expected "
<< " a PHOTON 1st daughter, found:"
<< EvtPDL::name( getDaug( 0 ) ).c_str() << std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << std::endl;
::abort();
}
// We expect that the second and third daughters
// are the ell+ and ell- == DIRAC
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::DIRAC );
_mntffmodel = new Evtbs2llGammaFFMNT();
_wilscoeff = new EvtbTosllWilsCoeffNLO();
if ( photontype == EvtSpinType::PHOTON ) {
_calcamp = new Evtbs2llGammaISRFSRAmp();
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The init()-function in the Evtbs2llGammaISRFSR generator:"
<< "The absence in the radiative decay!" << std::endl;
::abort();
}
}
// Set the maximum probability of the decay
// differencial distribution d^2\Gamma/d\hat s d\cos\theta
void Evtbs2llGammaISRFSR::initProbMax()
{
double mymaxprob = -10.0; // maximum of the probability
EvtId parnum, photnum, l1num, l2num;
parnum = getParentId();
photnum = getDaug( 0 );
l1num = getDaug( 1 );
l2num = getDaug( 2 );
double mu = getArg( 0 ); // the scale parameter
int Nf = (int)getArg( 1 ); // number of "effective" flavors
int sr = (int)getArg( 2 ); // state radiation type
int res_swch = (int)getArg( 3 ); // resonant switching parametr
int ias = (int)getArg( 4 ); // switching parametr for \alpha_s(M_Z)
double Egamma_min = getArg( 5 ); // photon energy cut
double CKM_A = getArg( 6 );
double CKM_lambda = getArg( 7 );
double CKM_barrho = getArg( 8 );
double CKM_bareta = getArg( 9 );
double mumumass_min = 0.;
if ( getNArg() == 11 )
mumumass_min = getArg( 10 );
mymaxprob = _calcamp->CalcMaxProb( parnum, photnum, l1num, l2num, _mntffmodel,
_wilscoeff, mu, Nf, sr, res_swch, ias,
Egamma_min, CKM_A, CKM_lambda,
CKM_barrho, CKM_bareta, mumumass_min );
if ( mymaxprob <= 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The function void Evtbs2llGammaISRFSR::initProbMax()"
<< "\n Unexpected value of the probability maximum!"
<< "\n mymaxprob = " << mymaxprob << std::endl;
::abort();
}
setProbMax( mymaxprob );
}
void Evtbs2llGammaISRFSR::decay( EvtParticle* p )
{
double mu = getArg( 0 ); // the scale parameter
int Nf = (int)getArg( 1 ); // number of "effective" flavors
int sr = (int)getArg( 2 ); // state radiation type
int res_swch = (int)getArg( 3 ); // resonant switching parametr
int ias = (int)getArg( 4 ); // switching parametr for \alpha_s(M_Z)
double Egamma_min = getArg( 5 ); // photon energy cut
double CKM_A = getArg( 6 );
double CKM_lambda = getArg( 7 );
double CKM_barrho = getArg( 8 );
double CKM_bareta = getArg( 9 );
double mumumass_min = 0.;
if ( getNArg() == 11 )
mumumass_min = getArg( 10 );
p->initializePhaseSpace( getNDaug(), getDaugs() );
// The class "Evtbs2llGammaFFMNT" is the derived class of the
// class "Evtbs2llGammaFF" (see the file "Evtbs2llGammaFF.hh")
_calcamp->CalcAmp( p, _amp2, _mntffmodel, _wilscoeff, mu, Nf, sr, res_swch,
ias, Egamma_min, CKM_A, CKM_lambda, CKM_barrho,
CKM_bareta, mumumass_min );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n "
//<< "\n The function Evtbs2llGammaISRFSR::decay(...) passed with arguments:"
// << "\n mu = " << mu << " Nf =" << Nf
// << "\n res_swch = " << res_swch
// << "\n sr = " << sr << "\n ias = " << ias
// << "\n Egamma_min =" << Egamma_min
// << "\n CKM_A = " << CKM_A
// << "\n CKM_lambda = " << CKM_lambda
// << "\n CKM_barrho = " << CKM_barrho
// << "\n CKM_bareta = " << CKM_bareta
// << "\n "
// << std::endl;
}
diff --git a/src/EvtGenModels/Evtbs2llGammaISRFSRAmp.cpp b/src/EvtGenModels/Evtbs2llGammaISRFSRAmp.cpp
index 8361071..b26b5ad 100644
--- a/src/EvtGenModels/Evtbs2llGammaISRFSRAmp.cpp
+++ b/src/EvtGenModels/Evtbs2llGammaISRFSRAmp.cpp
@@ -1,907 +1,875 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: Evtbs2llGammaISRFSRAmp.cpp
-//
-// Description: Preparation of the decay amplitude for the process:
-// B^0_{q}(p,M1) -> gamma(k) ell^+(p1,m) ell^-(p2,m).
-// See the Internal LHCb Note LHCb-INT-2011-011.
-//
-// Note: The code of this module is based on the EvtbTosllVectorAmp.cpp
-// module code.
-// The main functiom for the amplitude calculation retuns the
-// amplitude for the decay B -> gamma ell^+ ell^-
-// In our calculations we assume, that photon is the first
-// daughter particle (iG=0) and leptons are the second and thirds
-// daughter particles (il1=1 and il2=2).
-//
-//
-// Modification history:
-//
-// N.Nikitin December 09, 2014 Module create and added the tool for selecting
-// the ISR and FSR parts in the decay amplitude.
-//
-//-----------------------------------------------------------------------------------------
-//
+#include "EvtGenModels/Evtbs2llGammaISRFSRAmp.hh"
+
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVectorParticle.hh"
#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh"
#include "EvtGenModels/Evtbs2llGammaFFMNT.hh"
-// The header file for current class memeber functions description
-#include "EvtGenModels/Evtbs2llGammaISRFSRAmp.hh"
#include <cstdlib>
// input: *parent - the pointer to the parent particle (B-meson, the
// object of the EvtParticle class);
// *formFactors - the pointer to instance of EvtbTosllGammaFF class object;
// *WilsCoeff - the pointer to the Standart Model Wilson Coefficients class;
// mu - the scale parameter, GeV;
// Nf - number of "effective" flavors (for b-quark Nf=5);
// sr - state radiation type:
// = 0 the ISR only,
// = 1 the FSR only,
// = 2 both ISR + FSR (== BSTOGLLMNT model);
// res_swch - resonant switching parameter:
// = 0 the resonant contribution switched OFF,
// = 1 the resonant contribution switched ON;
// ias - switching parameter for \alpha_s(M_Z) value:
// = 0 PDG 1sigma minimal alpha_s(M_Z),
// = 1 PDG average value alpha_s(M_Z),
// = 2 PDG 1sigma maximal alpha_s(M_Z).
// Egamma_min - photon energy cut, GeV;
// Wolfenstein parameterization for CKM matrix
// CKM_A, CKM_lambda, CKM_barrho, CKM_bareta
void Evtbs2llGammaISRFSRAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp,
Evtbs2llGammaFF* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff,
double mu, int Nf, int sr, int res_swch,
int ias, double Egamma_min, double CKM_A,
double CKM_lambda, double CKM_barrho,
double CKM_bareta, double mumumass_min )
{
// FILE *mytest;
int iG = 0; // photon is the first daughter particle
int il1 = 1,
il2 = 2; // leptons are the second and thirds daughter particles
EvtComplex unit1( 1.0, 0.0 ); // real unit
EvtComplex uniti( 0.0, 1.0 ); // imaginary unit
double M1 = parent->mass(); // B - meson mass, GeV
double ml = parent->getDaug( il1 )->mass(); // leptonic mass, GeV
double mq = 0.0; // light quark mass from the dispersion QM, GeV
double mc = formFactors->getQuarkMass(
4 ); // m_c mass from the dispersion QM, GeV
double mb = formFactors->getQuarkMass(
5 ); // m_b mass from the dispersion QM, GeV
double Mw = 80.403; // GeV W-boson mass, GeV
double mt = 174.2; // GeV t-quark mass, GeV
double fb = 0.0; // leptonic decay constant of B-meson, Gev
EvtComplex Vtb, Vtq, Vub, Vuq, Vcb,
Vcq; // V_{tb}, V_{tq}, V_{ub}, V_{uq}, V_{cb}, V_{cq}
EvtComplex CKM_factor; // V^*_{tq}*V_{tb}, where q={d,s}
EvtComplex lambda_qu; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}, where q={d,s}
EvtComplex lambda_qc; // V^*_{cq}*V_{cb}/V^*_{tq}*V_{tb}, where q={d,s}
double Relambda_qu, Imlambda_qu;
// to find charges of ell^+ and ell^- in the B-meson daughters
int charge1 = EvtPDL::chg3( parent->getDaug( il1 )->getId() );
int charge2 = EvtPDL::chg3( parent->getDaug( il2 )->getId() );
if ( charge1 == 0 || charge2 == 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsTollGammaAmp::CalcAmp(...)"
<< "\n Error in the leptonic charge getting!"
<< "\n charge1 =" << charge1
<< "\n charge2 =" << charge2 << "\n charge gamma ="
<< EvtPDL::chg3( parent->getDaug( iG )->getId() )
<< "\n number of daughters =" << parent->getNDaug() << std::endl;
::abort();
}
EvtParticle* lepPlus = 0;
EvtParticle* lepMinus = 0;
lepPlus = ( charge1 > charge2 )
? parent->getDaug( il1 )
: parent->getDaug( il2 ); // positive charged
lepMinus = ( charge1 < charge2 )
? parent->getDaug( il1 )
: parent->getDaug( il2 ); // negative charged
EvtVector4R p = parent->getP4Restframe(); // B-meson momentum in the B-rest frame
EvtVector4R k =
parent->getDaug( iG )->getP4(); // 4-momentum of photon in the B-rest frame
EvtVector4R q = p - k; // transition 4-momentum q=p-k in the B-rest frame
EvtVector4R p_1; // 4-momentum of ell^+ in the B-rest frame
EvtVector4R p_2; // 4-momentum of ell^- in the B-rest frame
// the preparation of the leptonic 4-momentums in the B-rest frame
if ( charge1 > charge2 ) {
p_1 = parent->getDaug( il1 )->getP4();
p_2 = parent->getDaug( il2 )->getP4();
} else {
p_1 = parent->getDaug( il2 )->getP4();
p_2 = parent->getDaug( il1 )->getP4();
}
EvtVector4R p_minus_p_1 =
p - p_1; // transition momentum of the B-meson and antilepton p-p_1
EvtVector4R p_minus_p_2 =
p - p_2; // transition momentum of the B-meson and lepton p-p_2
double q2 = q.mass2(); // Mandelstam variable s=q^2
double p2 = p.mass2(); // p^2=M1^2
double t = p_minus_p_1.mass2(); // Mandelstam variable t=(p-p_1)^2
double u = p_minus_p_2.mass2(); // Mandelstam variable u=(p-p_2)^2
// scalar products
double pk = 0.5 * ( p2 - q2 ); // (p*k)
double p1k = 0.5 * ( pow( ml, 2.0 ) - u ); // (p1*k)
double p2k = 0.5 * ( pow( ml, 2.0 ) - t ); // (p2*k)
double hatq2 = q2 / ( M1 * M1 ); // \hat s = q^2/M_1^2
double Egam = 0.5 * M1 *
( 1 - hatq2 ); // photon energy in the B-meson rest frame
EvtVector4R hatp = p / M1;
EvtVector4R hatk = k / M1;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n\n The function EvtbsTollGammaISRFSRAmp::CalcAmp(...)"
// << "\n q = p-k =" << p-k << " q^2 = " << (p-k).mass2()
// << "\n q = p1+p2 =" << p_1+p_2 << " q^2 = " << (p_1+p_2).mass2()
// << "\n m_ell =" << parent->getDaug(il1)->mass()
// << "\n m_ell =" << parent->getDaug(il2)->mass()
// << "\n m_gamma =" << parent->getDaug(iG)->mass()
// << std::endl;
EvtId idparent = parent->getId(); // B-meson Id
if ( idparent == EvtPDL::getId( std::string( "B_s0" ) ) ||
idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) ) {
mq = formFactors->getQuarkMass( 3 ); // m_s mass from the dispersion QM
fb = 0.24; // leptonic decay constant
// V_{ts}
Vtq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) +
pow( CKM_lambda, 2.0 ) *
( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
Vtq = -CKM_A * pow( CKM_lambda, 2.0 ) * Vtq;
// V_{us}
Vuq = CKM_lambda * unit1;
// V_{cs}
Vcq = unit1 - 0.5 * pow( CKM_lambda, 2.0 ) -
0.125 * pow( CKM_lambda, 4.0 ) * ( 1.0 + 4.0 * pow( CKM_A, 2.0 ) );
}
if ( idparent == EvtPDL::getId( std::string( "B0" ) ) ||
idparent == EvtPDL::getId( std::string( "anti-B0" ) ) ) {
mq = formFactors->getQuarkMass( 2 ); // m_d mass from the dispersion QM
fb = 0.20; // leptonic decay constant
// V_{td}
Vtq = unit1 - ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) *
( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
Vtq = CKM_A * pow( CKM_lambda, 3.0 ) * Vtq;
// V_{ud}
Vuq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) -
0.125 * pow( CKM_lambda, 4.0 ) );
// V_{cd}
Vcq = unit1 *
( -CKM_lambda +
0.5 * pow( CKM_A, 2.0 ) * pow( CKM_lambda, 5.0 ) *
( 1.0 - 2.0 * ( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ) ) );
}
if ( mq < 0.001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsTollGammaISRFSRAmp::CalcAmp(..// 4-momentum of ell^+.)"
<< "\n Error in the model set!"
<< " mq = " << mq << std::endl;
::abort();
}
Vtb = unit1 * ( 1.0 - 0.5 * pow( CKM_A * CKM_lambda * CKM_lambda,
2.0 ) ); // V_{tb}
Vub = CKM_A * pow( CKM_lambda, 3.0 ) *
( CKM_barrho * unit1 - CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ); // V_{ub}
Vcb = unit1 * CKM_A * pow( CKM_lambda, 2.0 ); // V_{cb}
CKM_factor = conj( Vtq ) * Vtb; // V^*_{tq}*V_{tb}
lambda_qu = conj( Vuq ) * Vub /
CKM_factor; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}
Relambda_qu = real( lambda_qu );
Imlambda_qu = imag( lambda_qu );
lambda_qc = conj( Vcq ) * Vcb /
CKM_factor; // V^*_{cq}*V_{cb}/V^*_{tq}*V_{tb}
// The Wilson Coefficients preparation according to the paper
// A.J.Buras, M.Munz, Phys.Rev.D52, p.189 (1995)
double c1, c2;
EvtComplex a1, c7gam, c9eff_b2q, c9eff_barb2barq, c10a;
// foton energy cut and removal of the J/psi amd psi' resonant area
if ( Egam < Egamma_min || ( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) ||
( q2 <= mumumass_min * mumumass_min ) ) {
c1 = 0.0;
c2 = 0.0;
a1 = unit1 * 0.0;
c7gam = unit1 * 0.0;
c9eff_b2q = unit1 * 0.0;
c9eff_barb2barq = unit1 * 0.0;
c10a = unit1 * 0.0;
} else {
c1 = WilsCoeff->C1( mu, Mw, Nf, ias );
c2 = WilsCoeff->C2( mu, Mw, Nf, ias );
a1 = unit1 * ( c1 + c2 / 3.0 );
c7gam = WilsCoeff->GetC7Eff( mu, Mw, mt, Nf, ias );
c9eff_b2q = WilsCoeff->GetC9Eff( 0, res_swch, ias, Nf, q2, mb, mq, mc, mu,
mt, Mw, ml, Relambda_qu, Imlambda_qu );
c9eff_barb2barq = WilsCoeff->GetC9Eff( 1, res_swch, ias, Nf, q2, mb, mq,
mc, mu, mt, Mw, ml, Relambda_qu,
Imlambda_qu );
c10a = WilsCoeff->GetC10Eff( mt, Mw );
}
EvtComplex Fv,
Fa; // The change of the sign is included in the amplitudes definition!
EvtComplex Ftv_b2q, Ftv_barb2barq;
EvtComplex Fta_b2q, Fta_barb2barq;
// foton energy cut and removal of the J/psi amd psi' resonant area
if ( Egam < Egamma_min || ( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) ||
( q2 <= mumumass_min * mumumass_min ) ) {
fb = 0.0;
Fa = unit1 * 0.0;
Fv = unit1 * 0.0;
Fta_b2q = unit1 * 0.0;
Fta_barb2barq = unit1 * 0.0;
Ftv_b2q = unit1 * 0.0;
Ftv_barb2barq = unit1 * 0.0;
} else {
if ( fb < 0.01 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsTollGammaISRFSRAmp::CalcAmp(...)"
<< "\n Leptonic decay constant fb is not uninitialized in this function!"
<< " fb = " << fb << std::endl;
::abort();
}
// For \bar B^0_q -> l^+ l^- gamma
formFactors->getPhotonFF( 0, fb, parent->getId(), q2, M1, mb, mq, c7gam,
a1, lambda_qu, lambda_qc, Fv, Fa, Ftv_b2q,
Fta_b2q );
// For B^0_q -> l^+ l^- gamma
formFactors->getPhotonFF( 1, fb, parent->getId(), q2, M1, mb, mq, c7gam,
a1, lambda_qu, lambda_qc, Fv, Fa,
Ftv_barb2barq, Fta_barb2barq );
}
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n ============================================================================"
// << "\n ============================================================================"
// << "\n\n The function Evtbs2llGammaISRFSRAmp::CalcAmp(...) passed."
// << "\n Particle masses:"
// << "\n B - meson mass M1 = " << M1
// << "\n photon minimum E = " << Egamma_min
// << "\n q2 = " << q2
// << "\n leptonic mass ml = " << ml
// << "\n light quark mass = " << mq
// << "\n c - quark mass mc = " << mc
// << "\n b - quark mass mb = " << mb
// << "\n t - quark mass mt = " << mt
// << "\n W - boson mass Mw = " << Mw
// << "\n ============================================================================"
// << "\n Input parameters:"
// << "\n scale parameter mu = " << mu
// << "\n number of flavors Nf = " << Nf
// << "\n state radiation switching = " << sr
// << "\n resonant switching = " << res_swch
// << "\n parameter for alpha_s(M_Z) = " << ias
// << "\n photon energy cut (GeV) = " << Egamma_min
// << "\n ============================================================================"
// << "\n Form-factors"
// << "\n Egam = " << Egam
// << "\n Egamma_min = " << Egamma_min
// << "\n Fv = " << Fv
// << "\n Fa = " << Fa
// << "\n Ftv_b2q = " << Ftv_b2q
// << "\n Fta_b2q = " << Fta_b2q
// << "\n Ftv_barb2barq = " << Ftv_barb2barq
// << "\n Fta_barb2barq = " << Fta_barb2barq
// << "\n ============================================================================"
// << "\n Wilson Coefficients:"
// << "\n Egam = " << Egam
// << "\n Egamma_min = " << Egamma_min
// << "\n Re(c7gam) = " << real(c7gam)
// << " Im(c7gam) = " << imag(c7gam)
// << "\n Re(c9eff_b2q) = " << real(c9eff_b2q)
// << " Im(c9eff_b2q) = " << imag(c9eff_b2q)
// << "\n Re(c9eff_barb2barq) = " << real(c9eff_barb2barq)
// << " Im(c9eff_barb2barq) = " << imag(c9eff_barb2barq)
// << "\n Re(c10a) = " << real(c10a)
// << " Im(c10a) = " << imag(c10a)
// << std::endl;
// Hadronic matrix element coefficients
EvtComplex a_b2q, a_barb2barq, b_b2q, b_barb2barq, e_b2q, e_barb2barq,
f_b2q, f_barb2barq;
EvtComplex brammS, brammT;
a_b2q = c9eff_b2q * Fv + 2.0 * c7gam * Ftv_b2q * mb * M1 / q2;
a_barb2barq = c9eff_barb2barq * Fv +
2.0 * c7gam * Ftv_barb2barq * mb * M1 / q2;
b_b2q = ( c9eff_b2q * Fa + 2.0 * c7gam * Fta_b2q * mb * M1 / q2 ) * pk /
( M1 * M1 );
b_barb2barq = ( c9eff_barb2barq * Fa +
2.0 * c7gam * Fta_barb2barq * mb * M1 / q2 ) *
pk / ( M1 * M1 );
e_b2q = c10a * Fv;
e_barb2barq = e_b2q;
f_b2q = c10a * Fa * pk / ( M1 * M1 );
f_barb2barq = f_b2q;
brammS = 0.0; // in the Bq-meson rest frame!
brammT = 0.5 * c10a * ml * fb *
( 1.0 / p2k + 1.0 / p1k ); // for Bramsstrahlung
// The separation of the ISR and FSR contributions
if ( sr == 0 ) { // ISR only
brammS = 0.0;
brammT = 0.0;
}
if ( sr == 1 ) { // FSR only
a_b2q = 0.0;
a_barb2barq = 0.0;
b_b2q = 0.0;
b_barb2barq = 0.0;
e_b2q = 0.0;
e_barb2barq = 0.0;
f_b2q = 0.0;
f_barb2barq = 0.0;
}
EvtTensor4C T1, T2; // hadronic matrix element tensor structures
EvtVector4C E1, E2;
EvtComplex E3;
EvtVector4C epsG; // photon polarisation vector
int i; // photon polarisations counter
EvtVector4C lvc11, lvc12; // spin structures for
EvtVector4C lvc21, lvc22; // the leptonic vector current
EvtVector4C lac11, lac12; // spin structures for
EvtVector4C lac21, lac22; // the leptonic axial current
EvtComplex lsc11, lsc12; // spin structures for
EvtComplex lsc21, lsc22; // the leptonic scalar current
EvtTensor4C ltc11, ltc12; // spin structures for
EvtTensor4C ltc21, ltc22; // the leptonic tensor current
// B - and barB - mesons descriptors
static EvtIdSet bmesons( "anti-B0", "anti-B_s0" );
static EvtIdSet bbarmesons( "B0", "B_s0" );
EvtId parentID = parent->getId();
if ( bmesons.contains( parentID ) ) {
// The amplitude for the decay barB -> gamma ell^+ ell^- or
// b \bar q -> gamma ell^+ ell^-
T1 = -a_b2q * unit1 * dual( EvtGenFunctions::directProd( hatp, hatk ) ) -
b_b2q * uniti * EvtTensor4C::g();
T2 = -e_b2q * unit1 * dual( EvtGenFunctions::directProd( hatp, hatk ) ) -
f_b2q * uniti * EvtTensor4C::g();
// spin combinations for vector lepton current
lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lac11 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lac21 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lac12 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lac22 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lsc11 = EvtLeptonSCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lsc21 = EvtLeptonSCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lsc12 = EvtLeptonSCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lsc22 = EvtLeptonSCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
// \epsilon^{\alpha\beta\mu\nu}*TCurrent_{\mu\nu}
ltc11 = dual( EvtLeptonTCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) ) );
ltc21 = dual( EvtLeptonTCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) ) );
ltc12 = dual( EvtLeptonTCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) ) );
ltc22 = dual( EvtLeptonTCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) ) );
// summing up photon polarisations
for ( i = 0; i < 2; i++ ) {
// conjaction of epsG (photon polarization vector)
EvtVector4C epsG = parent->getDaug( 0 )->epsParentPhoton( i ).conj();
// de-escalation T with epsG
E1 = T1.cont2( epsG );
E2 = T2.cont2( epsG );
E3 = ( epsG * hatp ) * brammS;
// foton energy cut and removal of the J/psi amd psi' resonant area
if ( Egam < Egamma_min ||
( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) ||
( q2 <= mumumass_min * mumumass_min ) ) {
CKM_factor = 0.0 * unit1;
}
// 1
amp.vertex( i, 0, 0,
CKM_factor *
( lvc11 * E1 + lac11 * E2 + uniti * lsc11 * E3 +
uniti * ( ( ltc11.cont2( hatp ) ) * epsG ) *
brammT ) );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n 1" << CKM_factor*(lvc11*E1+lac11*E2+uniti*lsc11*E3+uniti*((ltc11.cont2(hatp))*epsG)*brammT)
// << std::endl;
// 2
amp.vertex( i, 0, 1,
CKM_factor *
( lvc12 * E1 + lac12 * E2 + uniti * lsc12 * E3 +
uniti * ( ( ltc12.cont2( hatp ) ) * epsG ) *
brammT ) );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n 2" << CKM_factor*(lvc12*E1+lac12*E2+uniti*lsc12*E3+uniti*((ltc12.cont2(hatp))*epsG)*brammT)
// << std::endl;
// 3
amp.vertex( i, 1, 0,
CKM_factor *
( lvc21 * E1 + lac21 * E2 + uniti * lsc21 * E3 +
uniti * ( ( ltc21.cont2( hatp ) ) * epsG ) *
brammT ) );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n 3" << CKM_factor*(lvc21*E1+lac21*E2+uniti*lsc21*E3+uniti*((ltc21.cont2(hatp))*epsG)*brammT)
// << std::endl;
// 4
amp.vertex( i, 1, 1,
CKM_factor *
( lvc22 * E1 + lac22 * E2 + uniti * lsc22 * E3 +
uniti * ( ( ltc22.cont2( hatp ) ) * epsG ) *
brammT ) );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n 4" << CKM_factor*(lvc22*E1+lac22*E2+uniti*lsc22*E3+uniti*((ltc22.cont2(hatp))*epsG)*brammT)
// << std::endl;
}
} else {
if ( bbarmesons.contains( parentID ) ) {
// The amplitude for the decay B -> gamma ell^+ ell^- or
// q bar b -> gamma ell^+ ell^-
T1 = -a_barb2barq * unit1 *
dual( EvtGenFunctions::directProd( hatp, hatk ) ) +
b_barb2barq * uniti * EvtTensor4C::g();
T2 = -e_barb2barq * unit1 *
dual( EvtGenFunctions::directProd( hatp, hatk ) ) +
f_barb2barq * uniti * EvtTensor4C::g();
lvc11 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lvc21 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lvc12 = EvtLeptonVCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lvc22 = EvtLeptonVCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lac11 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lac21 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lac12 = EvtLeptonACurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lac22 = EvtLeptonACurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
lsc11 = EvtLeptonSCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) );
lsc21 = EvtLeptonSCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) );
lsc12 = EvtLeptonSCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) );
lsc22 = EvtLeptonSCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) );
// \epsilon^{\alpha\beta\mu\nu}*TCurrent_{\mu\nu}
ltc11 = dual( EvtLeptonTCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 1 ) ) );
ltc21 = dual( EvtLeptonTCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 1 ) ) );
ltc12 = dual( EvtLeptonTCurrent( lepPlus->spParent( 1 ),
lepMinus->spParent( 0 ) ) );
ltc22 = dual( EvtLeptonTCurrent( lepPlus->spParent( 0 ),
lepMinus->spParent( 0 ) ) );
// summing up photon polarisations
for ( i = 0; i < 2; i++ ) {
EvtVector4C barepsG = parent->getDaug( 0 )->epsParentPhoton( i );
E1 = T1.cont2( barepsG );
E2 = T2.cont2( barepsG );
E3 = ( barepsG * hatp ) * brammS;
// foton energy cut and removal of the J/psi amd psi' resonant area
if ( Egam < Egamma_min ||
( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) ||
( q2 <= mumumass_min * mumumass_min ) ) {
CKM_factor = 0.0 * unit1;
}
amp.vertex(
i, 1, 1,
conj( CKM_factor ) *
( lvc11 * E1 + lac11 * E2 + uniti * lsc11 * E3 + // -?
uniti * ( ( ltc11.cont2( hatp ) ) * epsG ) * brammT ) );
amp.vertex(
i, 1, 0,
conj( CKM_factor ) *
( lvc12 * E1 + lac12 * E2 + uniti * lsc12 * E3 + // -?
uniti * ( ( ltc12.cont2( hatp ) ) * epsG ) * brammT ) );
amp.vertex(
i, 0, 1,
conj( CKM_factor ) *
( lvc21 * E1 + lac21 * E2 + uniti * lsc21 * E3 + // -?
uniti * ( ( ltc21.cont2( hatp ) ) * epsG ) * brammT ) );
amp.vertex(
i, 0, 0,
conj( CKM_factor ) *
( lvc22 * E1 + lac22 * E2 + uniti * lsc22 * E3 + // -?
uniti * ( ( ltc22.cont2( hatp ) ) * epsG ) * brammT ) );
}
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function Evtbs2llGammaISRFSRAmp::CalcAmp(...)"
<< "\n Wrong B-meson number" << std::endl;
::abort();
}
}
}
//
// The decays B -> Gamma ell^+ ell^- maximum probability calculation for the
// d^2\Gamma/dq^2 d\cos\theta distribution.
//
// \theta - the angle between the photon and ell^- directions in the
// B-meson rest frame.
//
// If ias=0 (nonresonant case), the maximum is achieved at q2
// B0s: q2 = 4*ml^2, Mphi^2, q_max^2;
// B0d: q2 = 4*ml^2, Mrho^2, Momega^2, q_max^2;
// If ias=1 (resonant case), the maximum in the same points, because the
// resonat area is remove
//
double Evtbs2llGammaISRFSRAmp::CalcMaxProb(
EvtId parnum, EvtId photnum, EvtId l1num, EvtId l2num,
Evtbs2llGammaFF* formFactors, EvtbTosllWilsCoeffNLO* WilsCoeff, double mu,
int Nf, int sr, int res_swch, int ias, double Egamma_min, double CKM_A,
double CKM_lambda, double CKM_barrho, double CKM_bareta, double mumumass_min )
{
double maxfoundprob = -100.0; // maximum of the probability
double M1 = EvtPDL::getMeanMass( parnum ); // B - meson mass
double ml = EvtPDL::getMeanMass( l1num ); // leptonic mass
double Mrho = EvtPDL::getMeanMass(
EvtPDL::getId( std::string( "rho0" ) ) ); // mass of the rho-meson, MeV
double Momega = EvtPDL::getMeanMass( EvtPDL::getId(
std::string( "omega" ) ) ); // mass of the omega-meson, MeV
double Mphi = EvtPDL::getMeanMass(
EvtPDL::getId( std::string( "phi" ) ) ); // mass of the phi-meson, MeV
// EvtGenReport(EVTGEN_NOTICE,"EvtGen")
// << "\n M1 = " << M1
// << "\n ml = " << ml
// << "\n Mrho = " << Mrho
// << "\n Momega = " << Momega
// << "\n Mphi = " << Mphi
// << "\n Egamma_min = " << Egamma_min
// << std::endl;
double list_of_max_q2_points[5];
list_of_max_q2_points[0] = pow( 2.0 * ml, 2.0 );
list_of_max_q2_points[1] = pow( Mrho, 2.0 );
list_of_max_q2_points[2] = pow( Momega, 2.0 );
list_of_max_q2_points[3] = pow( Mphi, 2.0 );
list_of_max_q2_points[4] =
pow( M1, 2.0 ) - 2.0 * M1 * Egamma_min; // q^2_max at photon energy cut
// if(list_of_max_points[4]<0){
// EvtGenReport(EVTGEN_ERROR,"EvtGen")
// << "\n\n In the function EvtbsTollGammaAmp::CalcScalarMaxProb(...)"
// << "\n Bad photon energy cut: Egamma_min > M1 in the rest frame of B-meson!"
// << "\n q2_max = " << list_of_max_points[4]
// << "\n M1 = " << M1
// << "\n Egamma_min = " << Egamma_min
// << std::endl;
// ::abort();
// }
if ( Egamma_min > Mrho ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...)"
<< "\n Bad photon energy cut: Egamma_min > M_rho0 in the rest frame of B-meson."
<< "\n Mrho = " << Mrho << "\n Egamma_min = " << Egamma_min
<< std::endl;
::abort();
}
if ( Egamma_min <= 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...)"
<< "\n Bad photon energy cut: Egamma_min <= 0 in the rest frame of B-meson."
<< "\n Egamma_min = " << Egamma_min << std::endl;
::abort();
}
if ( res_swch == 0 || res_swch == 1 ) {
int i_list;
for ( i_list = 0; i_list <= 4; i_list++ ) {
double s; // mandelstam variable "s";
double t_minus; // minimum and maximum of the mandelstam variable "t"
double t_plus; // as function of the mandelstam variable "s=q2";
double t_for_s;
int ijk; // counter for variable "t";
int max_ijk; // maximal value of this counter;
s = list_of_max_q2_points[i_list];
t_plus = pow( M1, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_plus = t_plus + sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
( pow( M1, 2.0 ) - s );
t_plus *= 0.5;
t_minus = pow( M1, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
t_minus = t_minus - sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
( pow( M1, 2.0 ) - s );
t_minus *= 0.5;
if ( fabs( t_plus - t_minus ) < 0.000001 )
t_minus = t_plus;
max_ijk = 1000;
double dt = ( t_plus - t_minus ) / ( (double)max_ijk );
if ( fabs( dt ) < 0.00001 )
dt = 0.0;
if ( dt < 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbsTollGammaISRFSRAmp::CalcScalarMaxProb(...)"
<< "\n dt = " << dt << " < 0."
<< "\n s = " << s << "\n t_plus = " << t_plus
<< "\n t_minus = " << t_minus << "\n M1 = " << M1
<< "\n ml = " << ml << std::endl;
::abort();
}
for ( ijk = 0; ijk <= max_ijk; ijk++ ) {
t_for_s = t_minus + dt * ( (double)ijk );
// B-meson rest frame particles and they kinematics inicialization
double Eg, El2;
Eg = ( pow( M1, 2.0 ) - s ) / ( 2.0 * M1 ); // photon energy
El2 = ( s + t_for_s - pow( ml, 2.0 ) ) /
( 2.0 * M1 ); // ell^- energy
double modl2;
modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) );
double cosBellminus; // angle between the B-meson and ell^- directions
cosBellminus = ( pow( ml, 2.0 ) + 2.0 * Eg * El2 - t_for_s ) /
( 2.0 * Eg * modl2 );
if ( ( fabs( cosBellminus ) > 1.0 ) &&
( fabs( cosBellminus ) <= 1.0001 ) ) {
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n Debug in the function EvtbsTollGammaISRFSRAmp::CalcMaxProb(...):"
<< "\n cos(theta) = " << cosBellminus << std::endl;
cosBellminus = cosBellminus / fabs( cosBellminus );
}
if ( fabs( cosBellminus ) > 1.0001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbsTollGammaISRFSRAmp::CalcMaxProb(...)"
<< "\n |cos(theta)| = " << fabs( cosBellminus ) << " > 1"
<< "\n s = " << s << "\n t_for_s = " << t_for_s
<< "\n t_plus = " << t_plus << "\n t_minus = " << t_minus
<< "\n dt = " << dt << "\n Eg = " << Eg
<< "\n El2 = " << El2 << "\n modl2 = " << modl2
<< "\n ml = " << ml << std::endl;
::abort();
}
EvtVector4R p, k, p1, p2;
p.set( M1, 0.0, 0.0, 0.0 );
k.set( Eg, Eg, 0.0, 0.0 );
p2.set( El2, modl2 * cosBellminus,
-modl2 * sqrt( 1.0 - pow( cosBellminus, 2.0 ) ), 0.0 );
p1 = p - k - p2;
// B-meson state preparation at the rest frame of B-meson
EvtScalarParticle* scalar_part;
EvtParticle* root_part;
scalar_part = new EvtScalarParticle;
scalar_part->noLifeTime();
scalar_part->init( parnum, p );
root_part = (EvtParticle*)scalar_part;
root_part->setDiagonalSpinDensity();
// Amplitude initialization
EvtId listdaug[3];
listdaug[0] = photnum;
listdaug[1] = l1num;
listdaug[2] = l2num;
EvtAmp amp;
amp.init( parnum, 3, listdaug );
// Daughters states preparation at the rest frame of B-meson
root_part->makeDaughters( 3, listdaug );
EvtParticle *gamm, *lep1, *lep2;
gamm = root_part->getDaug( 0 );
lep1 = root_part->getDaug( 1 );
lep2 = root_part->getDaug( 2 );
gamm->noLifeTime();
lep1->noLifeTime();
lep2->noLifeTime();
gamm->init( photnum, k );
lep1->init( l1num, p1 );
lep2->init( l2num, p2 );
EvtSpinDensity rho;
rho.setDiag( root_part->getSpinStates() );
// The amplitude calculation at the
// "maximum amplitude" kinematical configuration
CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf, sr,
res_swch, ias, Egamma_min, CKM_A, CKM_lambda,
CKM_barrho, CKM_bareta, mumumass_min );
// Now find the probability at this q2 and cos theta lepton point
double nikmax = rho.normalizedProb( amp.getSpinDensity() );
if ( nikmax > maxfoundprob ) {
double maxfoundprob_old;
maxfoundprob_old = maxfoundprob;
maxfoundprob = nikmax;
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n maxfoundprob ( s =" << s << ", t = " << t_for_s
<< " ) = " << maxfoundprob
<< "\n maxfoundprob_old = " << maxfoundprob_old
<< "\n ijk =" << ijk << std::endl;
}
delete scalar_part;
// delete root_part;
delete gamm;
delete lep1;
delete lep2;
} // for(ijk=0; ijk<=max_ijk; ijk++)
} // i_list - variable loop
} // if(res_swch==0||res_swch==1)
else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...)"
<< "\n Unexpected value of the variable res_swch !!!"
<< "\n res_swch = " << res_swch << std::endl;
::abort();
}
if ( maxfoundprob < 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...)"
<< "\n maxfoundprob = " << maxfoundprob << " <0 or =0!"
<< "\n mu =" << mu << " Nf =" << Nf << "\n sr =" << sr
<< " res_swch =" << res_swch << " ias =" << ias
<< "\n Egamma_min =" << Egamma_min << "\n CKM_A = " << CKM_A
<< " CKM_lambda = " << CKM_lambda << "\n CKM_barrho = " << CKM_barrho
<< " CKM_bareta = " << CKM_bareta << std::endl;
::abort();
}
if ( maxfoundprob == 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...)"
<< "\n maxfoundprob = " << maxfoundprob << " <0 or =0!"
<< "\n mu =" << mu << " Nf =" << Nf << "\n sr =" << sr
<< " res_swch =" << res_swch << " ias =" << ias
<< "\n Egamma_min =" << Egamma_min << "\n CKM_A = " << CKM_A
<< " CKM_lambda = " << CKM_lambda << "\n CKM_barrho = " << CKM_barrho
<< " CKM_bareta = " << CKM_bareta << std::endl;
maxfoundprob = 0.00000001;
}
maxfoundprob *= 1.01;
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n **********************************************************************"
<< "\n The function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...) passed with arguments:"
<< "\n mu =" << mu << " Nf =" << Nf << "\n sr =" << sr
<< " res_swch =" << res_swch << " ias =" << ias
<< "\n CKM_A = " << CKM_A << " CKM_lambda = " << CKM_lambda
<< "\n Egamma_min =" << Egamma_min << "\n CKM_barrho = " << CKM_barrho
<< " CKM_bareta = " << CKM_bareta
<< "\n The distribution maximum maxfoundprob =" << maxfoundprob
<< "\n **********************************************************************"
<< std::endl;
return maxfoundprob;
}
// Triangular function
double Evtbs2llGammaISRFSRAmp::lambda( double a, double b, double c )
{
double l;
l = pow( a, 2.0 ) + pow( b, 2.0 ) + pow( c, 2.0 ) - 2.0 * a * b -
2.0 * a * c - 2.0 * b * c;
return l;
}
diff --git a/src/EvtGenModels/Evtbs2llGammaMNT.cpp b/src/EvtGenModels/Evtbs2llGammaMNT.cpp
index 2abda73..5879eb7 100644
--- a/src/EvtGenModels/Evtbs2llGammaMNT.cpp
+++ b/src/EvtGenModels/Evtbs2llGammaMNT.cpp
@@ -1,183 +1,162 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech, UCSB
-//
-// Module: Evtbs2llGammaMNT.ccp
-//
-// Description: decay model BSTOGLLMNT
-//
-// Modification history:
-//
-// A.Popov October 24, 2008 Module created
-// A.Popov and N.Nikitin February 25, 2010 New description of CP-violation
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/Evtbs2llGammaMNT.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh"
#include "EvtGenModels/Evtbs2llGammaAmp.hh"
#include "EvtGenModels/Evtbs2llGammaFFMNT.hh"
#include <stdlib.h>
#include <string.h>
Evtbs2llGammaMNT::~Evtbs2llGammaMNT()
{
delete _mntffmodel;
if ( _calcamp )
delete _calcamp;
}
// The module name specification
std::string Evtbs2llGammaMNT::getName()
{
return "BSTOGLLMNT";
}
// The implementation of the clone() method
EvtDecayBase* Evtbs2llGammaMNT::clone()
{
return new Evtbs2llGammaMNT;
}
// The inicialization of the decay model
//
// Tn the our model we have are following 4 arguments:
//
// mu - the scale parameter, GeV;
// Nf - number of "effective" flavors (for b-quark Nf=5);
// res_swch - resonant switching parametr:
// = 0 the resonant contribution switched OFF,
// = 1 the resonant contribution switched ON;
// ias - switching parametr for \alpha_s(M_Z) value:
// = 0 PDG 1sigma minimal alpha_s(M_Z),
// = 1 PDG average value alpha_s(M_Z),
// = 2 PDG 1sigma maximal alpha_s(M_Z).
// Egamma_max - photon energy cut, GeV;
// Wolfenstein parameterization for CKM matrix
// CKM_A, CKM_lambda, CKM_barrho, CKM_bareta
//
void Evtbs2llGammaMNT::init()
{
// check that there are 9 arguments
checkNArg( 9 );
// check that there are 3 daughteres
checkNDaug( 3 );
// We expect that the parent to be a scalar (B-meson)
// and the daughters to be Gamma, l^+ and l^-
checkSpinParent( EvtSpinType::SCALAR );
// We expect that the first daughter is the photon
EvtSpinType::spintype photontype = EvtPDL::getSpinType( getDaug( 0 ) );
if ( !( photontype == EvtSpinType::PHOTON ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Evtbs2llGammaMNT generator expected "
<< " a PHOTON 1st daughter, found:"
<< EvtPDL::name( getDaug( 0 ) ).c_str() << std::endl;
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate execution!" << std::endl;
::abort();
}
// We expect that the second and third daughters
// are the ell+ and ell- == DIRAC
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::DIRAC );
_mntffmodel = new Evtbs2llGammaFFMNT();
_wilscoeff = new EvtbTosllWilsCoeffNLO();
if ( photontype == EvtSpinType::PHOTON ) {
_calcamp = new Evtbs2llGammaAmp();
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The init()-function in the Evtbs2llGammaMNT generator:"
<< "The absence in the radiative decay!" << std::endl;
::abort();
}
}
// Set the maximum probability of the decay
// differencial distribution d^2\Gamma/d\hat s d\cos\theta
void Evtbs2llGammaMNT::initProbMax()
{
double mymaxprob = -10.0; // maximum of the probability
EvtId parnum, photnum, l1num, l2num;
parnum = getParentId();
photnum = getDaug( 0 );
l1num = getDaug( 1 );
l2num = getDaug( 2 );
double mu = getArg( 0 ); // the scale parameter
int Nf = (int)getArg( 1 ); // number of "effective" flavors
int res_swch = (int)getArg( 2 ); // resonant switching parametr
int ias = (int)getArg( 3 ); // switching parametr for \alpha_s(M_Z)
double Egamma_max = getArg( 4 ); // photon energy cut
double CKM_A = getArg( 5 );
double CKM_lambda = getArg( 6 );
double CKM_barrho = getArg( 7 );
double CKM_bareta = getArg( 8 );
mymaxprob = _calcamp->CalcMaxProb( parnum, photnum, l1num, l2num,
_mntffmodel, _wilscoeff, mu, Nf,
res_swch, ias, Egamma_max, CKM_A,
CKM_lambda, CKM_barrho, CKM_bareta );
if ( mymaxprob <= 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The function void Evtbs2llGammaMNT::initProbMax()"
<< "\n Unexpected value of the probability maximum!"
<< "\n mymaxprob = " << mymaxprob << std::endl;
::abort();
}
setProbMax( mymaxprob );
}
void Evtbs2llGammaMNT::decay( EvtParticle* p )
{
double mu = getArg( 0 ); // the scale parameter
int Nf = (int)getArg( 1 ); // number of "effective" flavors
int res_swch = (int)getArg( 2 ); // resonant switching parametr
int ias = (int)getArg( 3 ); // switching parametr for \alpha_s(M_Z)
double Egamma_max = getArg( 4 ); // photon energy cut
double CKM_A = getArg( 5 );
double CKM_lambda = getArg( 6 );
double CKM_barrho = getArg( 7 );
double CKM_bareta = getArg( 8 );
p->initializePhaseSpace( getNDaug(), getDaugs() );
// The class "Evtbs2llGammaFFMNT" is the derived class of the
// class "Evtbs2llGammaFF" (see the file "Evtbs2llGammaFF.hh")
_calcamp->CalcAmp( p, _amp2, _mntffmodel, _wilscoeff, mu, Nf, res_swch, ias,
Egamma_max, CKM_A, CKM_lambda, CKM_barrho, CKM_bareta );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n "
// << "\n The function Evtbs2llGammaMNT::decay(...) passed with arguments:"
// << "\n mu = " << mu << " Nf =" << Nf
// << "\n res_swch = " << res_swch
// << "\n ias = " << ias
// << "\n Egamma_max =" << Egamma_max
// << "\n CKM_A = " << CKM_A
// << "\n CKM_lambda = " << CKM_lambda
// << "\n CKM_barrho = " << CKM_barrho
// << "\n CKM_bareta = " << CKM_bareta
// << "\n "
// << std::endl;
}
diff --git a/src/EvtGenModels/EvtbsToLLLL.cpp b/src/EvtGenModels/EvtbsToLLLL.cpp
index b23ce4a..7295f49 100644
--- a/src/EvtGenModels/EvtbsToLLLL.cpp
+++ b/src/EvtGenModels/EvtbsToLLLL.cpp
@@ -1,162 +1,142 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech, UCSB
-//
-// Module: EvtbsToLLLL.ccp
-//
-// Description:
-//
-// Modification history:
-//
-// N.Nikitin July 24, 2011 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtbsToLLLL.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh"
#include "EvtGenModels/Evtbs2llGammaFFMNT.hh"
#include "EvtGenModels/EvtbsToLLLLAmp.hh"
#include <stdlib.h>
#include <string.h>
EvtbsToLLLL::~EvtbsToLLLL()
{
delete _mntffmodel;
if ( _calcamp )
delete _calcamp;
}
// The module name specification
std::string EvtbsToLLLL::getName()
{
return "BQTOLLLL";
}
// The implementation of the clone() method
EvtDecayBase* EvtbsToLLLL::clone()
{
return new EvtbsToLLLL;
}
// The inicialization of the decay model
//
// Tn the our model we have are following 4 arguments:
//
// mu - the scale parameter, GeV;
// Nf - number of "effective" flavors (for b-quark Nf=5);
// res_swch - resonant switching parametr:
// = 0 the resonant contribution switched OFF,
// = 1 the resonant contribution switched ON;
// ias - switching parametr for \alpha_s(M_Z) value:
// = 0 PDG 1sigma minimal alpha_s(M_Z),
// = 1 PDG average value alpha_s(M_Z),
// = 2 PDG 1sigma maximal alpha_s(M_Z).
// Wolfenstein parameterization for CKM matrix
// CKM_A, CKM_lambda, CKM_barrho, CKM_bareta
//
void EvtbsToLLLL::init()
{
// check that there are 8 arguments
checkNArg( 8 );
// check that there are 4 daughteres
checkNDaug( 4 );
// We expect that the parent to be a scalar (B-meson)
// and the daughters to be l^+, l^-, l^+ and l^-
checkSpinParent( EvtSpinType::SCALAR );
// We expect that the all daughters are the ell+ or ell- == DIRAC
checkSpinDaughter( 0, EvtSpinType::DIRAC );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::DIRAC );
checkSpinDaughter( 3, EvtSpinType::DIRAC );
_mntffmodel = new Evtbs2llGammaFFMNT();
_wilscoeff = new EvtbTosllWilsCoeffNLO();
_calcamp = new EvtbsToLLLLAmp();
}
// Set the maximum probability of the decay
void EvtbsToLLLL::initProbMax()
{
double mymaxprob = -10.0; // maximum of the probability
// EvtId parnum, l1num, l2num, l3num, l4num;
// parnum = getParentId();
// l1num = getDaug(0);
// l2num = getDaug(1);
// l3num = getDaug(2);
// l4num = getDaug(3);
// EvtSpinType::spintype mesontype=EvtPDL::getSpinType(getDaug(0));
// double mu = getArg(0); // the scale parameter
// int Nf = (int) getArg(1); // number of "effective" flavors
// int res_swch = (int) getArg(2); // resonant switching parametr
// int ias = (int) getArg(3); // switching parametr for \alpha_s(M_Z)
// double CKM_A = getArg(4);
// double CKM_lambda = getArg(5);
// double CKM_barrho = getArg(6);
// double CKM_bareta = getArg(7);
mymaxprob = _calcamp->CalcMaxProb(
// parnum, l1num,l2num, l3num,l4num,
// _mntffmodel, _wilscoeff,
// mu, Nf, res_swch, ias,
// CKM_A,CKM_lambda,CKM_barrho,CKM_bareta
);
if ( mymaxprob <= 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The function void EvtbsToLLLL::initProbMax()"
<< "\n Unexpected value of the probability maximum!"
<< "\n mymaxprob = " << mymaxprob << std::endl;
::abort();
}
setProbMax( mymaxprob );
}
void EvtbsToLLLL::decay( EvtParticle* p )
{
double mu = getArg( 0 ); // the scale parameter
int Nf = (int)getArg( 1 ); // number of "effective" flavors
int res_swch = (int)getArg( 2 ); // resonant switching parametr
int ias = (int)getArg( 3 ); // switching parametr for \alpha_s(M_Z)
double CKM_A = getArg( 4 );
double CKM_lambda = getArg( 5 );
double CKM_barrho = getArg( 6 );
double CKM_bareta = getArg( 7 );
p->initializePhaseSpace( getNDaug(), getDaugs() );
_calcamp->CalcAmp( p, _amp2, _mntffmodel, _wilscoeff, mu, Nf, res_swch, ias,
CKM_A, CKM_lambda, CKM_barrho, CKM_bareta );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n The function EvtbTosllMSExt::decay(...) passed with arguments:"
// << "\n mu = " << mu << " Nf =" << Nf
// << " res_swch = " << res_swch
// << " ias = " << ias
// << " CKM_A = " << CKM_A
// << " CKM_lambda = " << CKM_lambda
// << " CKM_barrho = " << CKM_barrho
// << " CKM_bareta = " << CKM_bareta
// << " ReA7 = " << ReA7
// << " ImA7 = " << ImA7
// << " ReA10 = " << ReA10
// << " ImA10 = " << ImA10 << std::endl;
}
diff --git a/src/EvtGenModels/EvtbsToLLLLAmp.cpp b/src/EvtGenModels/EvtbsToLLLLAmp.cpp
index 40ddaae..706882d 100644
--- a/src/EvtGenModels/EvtbsToLLLLAmp.cpp
+++ b/src/EvtGenModels/EvtbsToLLLLAmp.cpp
@@ -1,829 +1,802 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtbsToLLLLAmp.cpp
-//
-// Description: Preparation of the decay amplitude for the process:
-// B^0_{q}(p,M1) -> ell^+(k1,m) ell^-(k2,m) ell^+(k3,m) ell^-(k4,m).
-//
-// Note: The code of this module is based on the EvtbTosllVectorAmp.cpp
-// module code.
-// The main functiom for the amplitude calculation retuns the
-// amplitude for the decay B^0_q -> ell^+ ell^- ell^+ ell^-
-//
-//
-// Modification history:
-//
-// N.Nikitin (nnikit@mail.cerrn.ch) July 21, 2011 Module created
-//
-//-----------------------------------------------------------------------------------------
-//
+#include "EvtGenModels/EvtbsToLLLLAmp.hh"
+
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh"
#include "EvtGenModels/Evtbs2llGammaFFMNT.hh"
-// The header file for current class memeber functions description
-#include "EvtGenModels/EvtbsToLLLLAmp.hh"
#include <cstdlib>
// input: *parent - the pointer to the parent particle (B-meson, the
// object of the EvtParticle class);
// *formFactors - the pointer to instance of EvtbTosllGammaFF class object;
// *WilsCoeff - the pointer to the Standart Model Wilson Coefficients class;
// mu - the scale parameter, GeV;
// Nf - number of "effective" flavors (for b-quark Nf=5);
// res_swch - resonant switching parameter:
// = 0 the resonant contribution switched OFF,
// = 1 the resonant contribution switched ON;
// ias - switching parameter for \alpha_s(M_Z) value:
// = 0 PDG 1sigma minimal alpha_s(M_Z),
// = 1 PDG average value alpha_s(M_Z),
// = 2 PDG 1sigma maximal alpha_s(M_Z).
// Wolfenstein parameterization for CKM matrix
// CKM_A, CKM_lambda, CKM_barrho, CKM_bareta
void EvtbsToLLLLAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp,
Evtbs2llGammaFF* formFactors,
EvtbTosllWilsCoeffNLO* WilsCoeff, double mu,
int Nf, int res_swch, int ias, double CKM_A,
double CKM_lambda, double CKM_barrho,
double CKM_bareta )
{
// FILE *mytest;
int il1 = 0, il2 = 1, il3 = 2,
il4 = 3; // leptons are the first, second, thirds
// and fourth daughter particles
EvtComplex unit1( 1.0, 0.0 ); // real unit
EvtComplex uniti( 0.0, 1.0 ); // imaginary unit
double M1 = parent->mass(); // B - meson mass, GeV
double ml = parent->getDaug( il1 )->mass(); // leptonic mass, GeV
double mq = 0.0; // light quark mass from the dispersion QM, GeV
double mc = formFactors->getQuarkMass(
4 ); // m_c mass from the dispersion QM, GeV
double mb = formFactors->getQuarkMass(
5 ); // m_b mass from the dispersion QM, GeV
double Mw = 80.403; // GeV W-boson mass, GeV
double mt = 174.2; // GeV t-quark mass, GeV
double fb = 0.0; // leptonic decay constant of B-meson, Gev
EvtComplex Vtb, Vtq, Vub, Vuq, Vcb,
Vcq; // V_{tb}, V_{tq}, V_{ub}, V_{uq}, V_{cb}, V_{cq}
EvtComplex CKM_factor; // V^*_{tq}*V_{tb}, where q={d,s}
EvtComplex lambda_qu; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}, where q={d,s}
EvtComplex lambda_qc; // V^*_{cq}*V_{cb}/V^*_{tq}*V_{tb}, where q={d,s}
double Relambda_qu, Imlambda_qu;
//
// Setting of the mq and CKM matrix elements for different Bq-mesons tipes
//
EvtId idparent = parent->getId(); // Bq-meson Id
EvtId IdMu1, IdMu2, IdMu3, IdMu4;
if ( idparent == EvtPDL::getId( std::string( "B_s0" ) ) ||
idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) ) {
mq = formFactors->getQuarkMass( 3 ); // m_s mass from the dispersion QM
fb = 0.24; // leptonic decay constant
// V_{ts}
Vtq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) +
pow( CKM_lambda, 2.0 ) *
( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
Vtq = -CKM_A * pow( CKM_lambda, 2.0 ) * Vtq;
// V_{us}
Vuq = CKM_lambda * unit1;
// V_{cs}
Vcq = unit1 - 0.5 * pow( CKM_lambda, 2.0 ) -
0.125 * pow( CKM_lambda, 4.0 ) * ( 1.0 + 4.0 * pow( CKM_A, 2.0 ) );
}
if ( idparent == EvtPDL::getId( std::string( "B0" ) ) ||
idparent == EvtPDL::getId( std::string( "anti-B0" ) ) ) {
mq = formFactors->getQuarkMass( 2 ); // m_d mass from the dispersion QM
fb = 0.20; // leptonic decay constant
// V_{td}
Vtq = unit1 - ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) *
( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
Vtq = CKM_A * pow( CKM_lambda, 3.0 ) * Vtq;
// V_{ud}
Vuq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) -
0.125 * pow( CKM_lambda, 4.0 ) );
// V_{cd}
Vcq = unit1 *
( -CKM_lambda +
0.5 * pow( CKM_A, 2.0 ) * pow( CKM_lambda, 5.0 ) *
( 1.0 - 2.0 * ( CKM_barrho * unit1 + CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ) ) );
}
if ( mq < 0.001 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsToLLLLAmp::CalcAmp(...)"
<< "\n Error in the mq setting!"
<< "\n mq = " << mq << "< 0.001"
<< "\n idparent = " << idparent << std::endl;
::abort();
}
Vtb = unit1 * ( 1.0 - 0.5 * pow( CKM_A * CKM_lambda * CKM_lambda,
2.0 ) ); // V_{tb}
Vub = CKM_A * pow( CKM_lambda, 3.0 ) *
( CKM_barrho * unit1 - CKM_bareta * uniti ) /
sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ); // V_{ub}
Vcb = unit1 * CKM_A * pow( CKM_lambda, 2.0 ); // V_{cb}
CKM_factor = conj( Vtq ) * Vtb; // V^*_{tq}*V_{tb}
lambda_qu = conj( Vuq ) * Vub /
CKM_factor; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}
Relambda_qu = real( lambda_qu );
Imlambda_qu = imag( lambda_qu );
lambda_qc = conj( Vcq ) * Vcb /
CKM_factor; // V^*_{cq}*V_{cb}/V^*_{tq}*V_{tb}
//
// Setting the leptonic kinematical properties
//
// to find charges of ell^+ and ell^- in the B-meson daughters
int charge1 = ( EvtPDL::chg3( parent->getDaug( il1 )->getId() ) ) / 3;
int charge2 = ( EvtPDL::chg3( parent->getDaug( il2 )->getId() ) ) / 3;
int charge3 = ( EvtPDL::chg3( parent->getDaug( il3 )->getId() ) ) / 3;
int charge4 = ( EvtPDL::chg3( parent->getDaug( il4 )->getId() ) ) / 3;
if ( ( abs( charge1 ) != 1 ) || ( abs( charge2 ) != 1 ) ||
( abs( charge3 ) != 1 ) || ( abs( charge4 ) != 1 ) ||
( charge1 + charge2 + charge3 + charge4 != 0 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsToLLLLAmp::CalcAmp(...)"
<< "\n Error in the leptonic charge definition!"
<< "\n charge1 =" << charge1
<< "\n charge2 =" << charge2
<< "\n charge3 =" << charge3
<< "\n charge4 =" << charge4
<< "\n number of daughters =" << parent->getNDaug() << std::endl;
::abort();
}
EvtParticle* lep1Plus = 0;
EvtParticle* lep1Minus = 0;
EvtParticle* lep2Plus = 0;
EvtParticle* lep2Minus = 0;
EvtVector4R p; // B-meson momentum in the B-rest frame
EvtVector4R q; // first transition 4-momentum in the B-rest frame
EvtVector4R k; // second transition 4-momentum in the B-rest frame
double q2; // Mandelstam variable s=q^2
// Nondimentional 4-momentums
EvtVector4R hatp;
EvtVector4R hatq;
EvtVector4R hatk;
EvtVector4R qsecond; // first transition 4-momentum in the B-rest frame
EvtVector4R ksecond; // second transition 4-momentum in the B-rest frame
double q2second; // Mandelstam variable s=q^2
// Nondimentional 4-momentums
EvtVector4R hatpsecond;
EvtVector4R hatqsecond;
EvtVector4R hatksecond;
EvtVector4R k_1; // 4-momentum of ell^+ in the B-rest frame
EvtVector4R k_2; // 4-momentum of ell^- in the B-rest frame
EvtVector4R k_3; // 4-momentum of ell^+ in the B-rest frame
EvtVector4R k_4; // 4-momentum of ell^- in the B-rest frame
k_1.set( 0.0, 0.0, 0.0, 0.0 );
k_2.set( 0.0, 0.0, 0.0, 0.0 );
k_3.set( 0.0, 0.0, 0.0, 0.0 );
k_4.set( 0.0, 0.0, 0.0, 0.0 );
if ( ( charge1 + charge2 == 0 ) && ( charge3 + charge4 == 0 ) ) {
// positive charged lepton 1
lep1Plus = ( charge1 > charge2 ) ? parent->getDaug( il1 )
: parent->getDaug( il2 );
// negative charged lepton 1
lep1Minus = ( charge1 < charge2 ) ? parent->getDaug( il1 )
: parent->getDaug( il2 );
if ( charge1 > charge2 ) {
k_1 = parent->getDaug( il1 )->getP4();
k_2 = parent->getDaug( il2 )->getP4();
IdMu1 = parent->getDaug( il1 )->getId();
IdMu2 = parent->getDaug( il2 )->getId();
} else {
k_1 = parent->getDaug( il2 )->getP4();
k_2 = parent->getDaug( il1 )->getP4();
IdMu1 = parent->getDaug( il2 )->getId();
IdMu2 = parent->getDaug( il1 )->getId();
}
// positive charged lepton 2
lep2Plus = ( charge3 > charge4 ) ? parent->getDaug( il3 )
: parent->getDaug( il4 );
// negative charged lepton 2
lep2Minus = ( charge3 < charge4 ) ? parent->getDaug( il3 )
: parent->getDaug( il4 );
if ( charge3 > charge4 ) {
k_3 = parent->getDaug( il3 )->getP4();
k_4 = parent->getDaug( il4 )->getP4();
IdMu3 = parent->getDaug( il3 )->getId();
IdMu4 = parent->getDaug( il4 )->getId();
} else {
k_3 = parent->getDaug( il4 )->getP4();
k_4 = parent->getDaug( il3 )->getP4();
IdMu3 = parent->getDaug( il4 )->getId();
IdMu4 = parent->getDaug( il3 )->getId();
}
}
if ( ( charge1 + charge3 == 0 ) && ( charge2 + charge4 == 0 ) ) {
// positive charged lepton 1
lep1Plus = ( charge1 > charge3 ) ? parent->getDaug( il1 )
: parent->getDaug( il3 );
// negative charged lepton 1
lep1Minus = ( charge1 < charge3 ) ? parent->getDaug( il1 )
: parent->getDaug( il3 );
if ( charge1 > charge3 ) {
k_1 = parent->getDaug( il1 )->getP4();
k_2 = parent->getDaug( il3 )->getP4();
IdMu1 = parent->getDaug( il1 )->getId();
IdMu2 = parent->getDaug( il3 )->getId();
} else {
k_1 = parent->getDaug( il3 )->getP4();
k_2 = parent->getDaug( il1 )->getP4();
IdMu1 = parent->getDaug( il3 )->getId();
IdMu2 = parent->getDaug( il1 )->getId();
}
// positive charged lepton 2
lep2Plus = ( charge2 > charge4 ) ? parent->getDaug( il2 )
: parent->getDaug( il4 );
// negative charged lepton 2
lep2Minus = ( charge2 < charge4 ) ? parent->getDaug( il2 )
: parent->getDaug( il4 );
if ( charge2 > charge4 ) {
k_3 = parent->getDaug( il2 )->getP4();
k_4 = parent->getDaug( il4 )->getP4();
IdMu3 = parent->getDaug( il2 )->getId();
IdMu4 = parent->getDaug( il4 )->getId();
} else {
k_3 = parent->getDaug( il4 )->getP4();
k_4 = parent->getDaug( il2 )->getP4();
IdMu3 = parent->getDaug( il4 )->getId();
IdMu4 = parent->getDaug( il2 )->getId();
}
}
p = parent->getP4Restframe();
hatp = p / M1;
//
// The calculation of the FIRST part of the amplitude
//
q = k_1 + k_2;
k = k_3 + k_4;
q2 = q.mass2(); // Mandelstam variable s=q^2
hatq = q / M1;
hatk = k / M1;
// The Wilson Coefficients preparation according to the paper
// A.J.Buras, M.Munz, Phys.Rev.D52, p.189 (1995)
double c1, c2;
EvtComplex a1, c7gam, c9eff_b2q, c9eff_barb2barq, c10a;
// Excluded of the J/psi and psi' resonant area
if ( ( res_swch == 1 ) && ( q2 >= 9.199 ) && ( q2 <= 15.333 ) ) {
c1 = 0.0;
c2 = 0.0;
a1 = unit1 * 0.0;
c7gam = unit1 * 0.0;
c9eff_b2q = unit1 * 0.0;
c9eff_barb2barq = unit1 * 0.0;
c10a = unit1 * 0.0;
} else {
c1 = WilsCoeff->C1( mu, Mw, Nf, ias );
c2 = WilsCoeff->C2( mu, Mw, Nf, ias );
a1 = unit1 * ( c1 + c2 / 3.0 );
c7gam = WilsCoeff->GetC7Eff( mu, Mw, mt, Nf, ias );
c9eff_b2q = WilsCoeff->GetC9Eff( 0, res_swch, ias, Nf, q2, mb, mq, mc, mu,
mt, Mw, ml, Relambda_qu, Imlambda_qu );
c9eff_barb2barq = WilsCoeff->GetC9Eff( 1, res_swch, ias, Nf, q2, mb, mq,
mc, mu, mt, Mw, ml, Relambda_qu,
Imlambda_qu );
c10a = WilsCoeff->GetC10Eff( mt, Mw );
}
EvtComplex Fv,
Fa; // The change of the sign is included in the amplitudes definition!
EvtComplex Ftv_b2q, Ftv_barb2barq;
EvtComplex Fta_b2q, Fta_barb2barq;
// Excluded of the J/psi and psi' resonant area
if ( ( res_swch == 1 ) && ( q2 >= 9.199 ) && ( q2 <= 15.333 ) ) {
fb = 0.0;
Fa = unit1 * 0.0;
Fv = unit1 * 0.0;
Fta_b2q = unit1 * 0.0;
Fta_barb2barq = unit1 * 0.0;
Ftv_b2q = unit1 * 0.0;
Ftv_barb2barq = unit1 * 0.0;
} else {
if ( fb < 0.01 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsToLLLLAmp::CalcAmp(...)"
<< "\n Leptonic decay constant fb is not uninitialized in this function!"
<< " fb = " << fb << std::endl;
::abort();
}
// For \bar B^0_q -> l^+ l^- gamma
formFactors->getPhotonFF( 0, fb, parent->getId(), q2, M1, mb, mq, c7gam,
a1, lambda_qu, lambda_qc, Fv, Fa, Ftv_b2q,
Fta_b2q );
// For B^0_q -> l^+ l^- gamma
formFactors->getPhotonFF( 1, fb, parent->getId(), q2, M1, mb, mq, c7gam,
a1, lambda_qu, lambda_qc, Fv, Fa,
Ftv_barb2barq, Fta_barb2barq );
}
// The functions for the hadronic matrix element calculation
EvtComplex a_b2q, a_barb2barq, b_b2q, b_barb2barq, c_b2q, c_barb2barq;
EvtComplex e_b2q, e_barb2barq, f_b2q, f_barb2barq, g_b2q, g_barb2barq;
a_b2q = c9eff_b2q * Fv + 2.0 * c7gam * Ftv_b2q * mb * M1 / q2;
a_barb2barq = c9eff_barb2barq * Fv +
2.0 * c7gam * Ftv_barb2barq * mb * M1 / q2;
b_b2q = ( c9eff_b2q * Fa + 2.0 * c7gam * Fta_b2q * mb * M1 / q2 ) *
( hatp * hatk );
b_barb2barq = ( c9eff_barb2barq * Fa +
2.0 * c7gam * Fta_barb2barq * mb * M1 / q2 ) *
( hatp * hatk );
c_b2q = c9eff_b2q * Fa + 2.0 * c7gam * Fta_b2q * mb * M1 / q2;
c_barb2barq = c9eff_barb2barq * Fa +
2.0 * c7gam * Fta_barb2barq * mb * M1 / q2;
e_b2q = c10a * Fv;
e_barb2barq = e_b2q;
f_b2q = c10a * Fa * ( hatp * hatk );
f_barb2barq = f_b2q;
g_b2q = c10a * Fa;
g_barb2barq = g_b2q;
//
// The calculation of the SECOND part of the amplitude
//
qsecond = k_1 + k_4;
ksecond = k_3 + k_2;
q2second = qsecond.mass2(); // Mandelstam variable s=q^2
hatqsecond = qsecond / M1;
hatksecond = ksecond / M1;
// Excluded of the J/psi and psi' resonant area
if ( ( res_swch == 1 ) && ( q2second >= 9.199 ) && ( q2second <= 15.333 ) ) {
c1 = 0.0;
c2 = 0.0;
a1 = unit1 * 0.0;
c7gam = unit1 * 0.0;
c9eff_b2q = unit1 * 0.0;
c9eff_barb2barq = unit1 * 0.0;
c10a = unit1 * 0.0;
} else {
c1 = WilsCoeff->C1( mu, Mw, Nf, ias );
c2 = WilsCoeff->C2( mu, Mw, Nf, ias );
a1 = unit1 * ( c1 + c2 / 3.0 );
c7gam = WilsCoeff->GetC7Eff( mu, Mw, mt, Nf, ias );
c9eff_b2q = WilsCoeff->GetC9Eff( 0, res_swch, ias, Nf, q2second, mb, mq,
mc, mu, mt, Mw, ml, Relambda_qu,
Imlambda_qu );
c9eff_barb2barq = WilsCoeff->GetC9Eff( 1, res_swch, ias, Nf, q2second,
mb, mq, mc, mu, mt, Mw, ml,
Relambda_qu, Imlambda_qu );
c10a = WilsCoeff->GetC10Eff( mt, Mw );
}
// Excluded of the J/psi and psi' resonant area
if ( ( res_swch == 1 ) && ( q2second >= 9.199 ) && ( q2second <= 15.333 ) ) {
fb = 0.0;
Fa = unit1 * 0.0;
Fv = unit1 * 0.0;
Fta_b2q = unit1 * 0.0;
Fta_barb2barq = unit1 * 0.0;
Ftv_b2q = unit1 * 0.0;
Ftv_barb2barq = unit1 * 0.0;
} else {
if ( fb < 0.01 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsToLLLLAmp::CalcAmp(...)"
<< "\n Leptonic decay constant fb is not uninitialized in this function!"
<< " fb = " << fb << std::endl;
::abort();
}
// For \bar B^0_q -> l^+ l^- gamma
formFactors->getPhotonFF( 0, fb, parent->getId(), q2second, M1, mb, mq,
c7gam, a1, lambda_qu, lambda_qc, Fv, Fa,
Ftv_b2q, Fta_b2q );
// For B^0_q -> l^+ l^- gamma
formFactors->getPhotonFF( 1, fb, parent->getId(), q2second, M1, mb, mq,
c7gam, a1, lambda_qu, lambda_qc, Fv, Fa,
Ftv_barb2barq, Fta_barb2barq );
}
// The functions for the hadronic matrix element calculation
EvtComplex a_b2qsecond, a_barb2barqsecond, b_b2qsecond, b_barb2barqsecond,
c_b2qsecond, c_barb2barqsecond;
EvtComplex e_b2qsecond, e_barb2barqsecond, f_b2qsecond, f_barb2barqsecond,
g_b2qsecond, g_barb2barqsecond;
a_b2qsecond = c9eff_b2q * Fv + 2.0 * c7gam * Ftv_b2q * mb * M1 / q2second;
a_barb2barqsecond = c9eff_barb2barq * Fv +
2.0 * c7gam * Ftv_barb2barq * mb * M1 / q2second;
b_b2qsecond = ( c9eff_b2q * Fa + 2.0 * c7gam * Fta_b2q * mb * M1 / q2second ) *
( hatpsecond * hatksecond );
b_barb2barqsecond = ( c9eff_barb2barq * Fa +
2.0 * c7gam * Fta_barb2barq * mb * M1 / q2second ) *
( hatpsecond * hatksecond );
c_b2qsecond = c9eff_b2q * Fa + 2.0 * c7gam * Fta_b2q * mb * M1 / q2second;
c_barb2barqsecond = c9eff_barb2barq * Fa +
2.0 * c7gam * Fta_barb2barq * mb * M1 / q2second;
e_b2qsecond = c10a * Fv;
e_barb2barqsecond = e_b2qsecond;
f_b2qsecond = c10a * Fa * ( hatpsecond * hatksecond );
f_barb2barqsecond = f_b2qsecond;
g_b2qsecond = c10a * Fa;
g_barb2barqsecond = g_b2qsecond;
EvtTensor4C T1, T2; // Tensor structures for
EvtTensor4C T1second,
T2second; // the hadronic matrix element calculation
// B - and barB - mesons descriptors
static EvtIdSet bmesons( "anti-B0", "anti-B_s0" );
static EvtIdSet bbarmesons( "B0", "B_s0" );
EvtId parentID = parent->getId();
if ( bmesons.contains( parentID ) ) {
// The amplitude for the decay barB -> gamma ell^+ ell^- or
// b \bar q -> gamma ell^+ ell^-
T1 = a_b2q * unit1 * dual( EvtGenFunctions::directProd( hatq, hatk ) ) -
b_b2q * uniti * EvtTensor4C::g() +
c_b2q * uniti * EvtGenFunctions::directProd( hatk, hatq );
T2 = e_b2q * unit1 * dual( EvtGenFunctions::directProd( hatp, hatk ) ) -
f_b2q * uniti * EvtTensor4C::g() +
g_b2q * uniti * EvtGenFunctions::directProd( hatk, hatq );
T1second = a_b2qsecond * unit1 *
dual( EvtGenFunctions::directProd( hatqsecond,
hatksecond ) ) -
b_b2qsecond * uniti * EvtTensor4C::g() +
c_b2qsecond * uniti *
EvtGenFunctions::directProd( hatksecond, hatqsecond );
T2second = e_b2qsecond * unit1 *
dual( EvtGenFunctions::directProd( hatpsecond,
hatksecond ) ) -
f_b2qsecond * uniti * EvtTensor4C::g() +
g_b2qsecond * uniti *
EvtGenFunctions::directProd( hatksecond, hatqsecond );
int i1, i2, i3, i4; // leptonic spin structures counters
int leptonicspin[4]; // array for the saving of the leptonic spin configuration
// Tables for correspondings
// l^+(k_1) && lep1Plus && k_1 && i1
// l^-(k_2) && lep1Minus && k_2 && i2
// l^+(k_3) && lep2Plus && k_3 && i3
// l^-(k_4) && lep2Minus && k_4 && i4
for ( i2 = 0; i2 < 2; i2++ ) {
leptonicspin[0] = i2;
for ( i1 = 0; i1 < 2; i1++ ) {
leptonicspin[1] = i1;
for ( i4 = 0; i4 < 2; i4++ ) {
leptonicspin[2] = i4;
for ( i3 = 0; i3 < 2; i3++ ) {
leptonicspin[3] = i3;
EvtVector4C VL2L1, AL2L1, VL4L3;
EvtVector4C E1, E2;
EvtVector4C VL2L1second, AL2L1second, VL4L3second;
EvtVector4C E1second, E2second;
VL2L1 = EvtLeptonVCurrent( lep1Minus->spParent( i2 ),
lep1Plus->spParent( i1 ) );
AL2L1 = EvtLeptonACurrent( lep1Minus->spParent( i2 ),
lep1Plus->spParent( i1 ) );
VL4L3 = EvtLeptonVCurrent( lep2Minus->spParent( i4 ),
lep2Plus->spParent( i3 ) );
E1 = T1.cont2( VL4L3 );
E2 = T2.cont2( VL4L3 );
VL2L1second = EvtLeptonVCurrent(
lep2Minus->spParent( i2 ), lep1Plus->spParent( i1 ) );
AL2L1second = EvtLeptonACurrent(
lep2Minus->spParent( i2 ), lep1Plus->spParent( i1 ) );
VL4L3second = EvtLeptonVCurrent(
lep1Minus->spParent( i4 ), lep2Plus->spParent( i3 ) );
E1second = T1second.cont2( VL4L3second );
E2second = T2second.cont2( VL4L3second );
amp.vertex( leptonicspin,
CKM_factor * ( VL2L1 * E1 + AL2L1 * E2 +
VL2L1second * E1second +
AL2L1second * E2second ) );
// EvtGenReport(EVTGEN_ERROR,"EvtGen")
// << "\n\n ============================================================================"
// << "\n The matrix element (first + second) = "
// << CKM_factor*(VL2L1*E1+AL2L1*E2+VL2L1second*E1second+AL2L1second*E2second)
// << "\n The matrix element (only first) = "
// << CKM_factor*(VL2L1*E1+AL2L1*E2)
// << "============================================================================\n\n"
// << std::endl;
}
}
}
}
// EvtGenReport(EVTGEN_ERROR,"EvtGen") << "\n The function EvtbsToLLLLAmp::CalcAmp(...) passed with arguments:"
// << "\n ============================================================================"
// << "\n Input parameters:"
// << "\n mu = " << mu
// << "\n Nf =" << Nf
// << "\n res_swch = " << res_swch
// << "\n ias = " << ias
// << "\n CKM_A = " << CKM_A
// << "\n CKM_lambda = " << CKM_lambda
// << "\n CKM_barrho = " << CKM_barrho
// << "\n CKM_bareta = " << CKM_bareta
// << "\n CKM_factor = " << CKM_factor
// << "\n ============================================================================"
// << "\n Kinematics:"
// << "\n k_1 = " << k_1
// << "\n m_ell_1 =" << parent->getDaug(il1)->mass()
// << "\n k_2 = " << k_2
// << "\n m_ell_2 =" << parent->getDaug(il2)->mass()
// << "\n k_3 = " << k_3
// << "\n m_ell_3 =" << parent->getDaug(il3)->mass()
// << "\n k_4 = " << k_4
// << "\n m_ell_4 =" << parent->getDaug(il4)->mass()
// << "\n p = " << p
// << "\n q = " << q
// << "\n k = " << k
// << "\n ============================================================================"
// << "\n Form-factors"
// << "\n Fv = " << Fv
// << "\n Fa = " << Fa
// << "\n Ftv_b2q = " << Ftv_b2q
// << "\n Fta_b2q = " << Fta_b2q
// << "\n Ftv_barb2barq = " << Ftv_barb2barq
// << "\n Fta_barb2barq = " << Fta_barb2barq
// << "\n fb = " << fb
// << "\n ============================================================================"
// << "\n Wilson Coefficients:"
// << "\n Re(c7gam) = " << real(c7gam)
// << " Im(c7gam) = " << imag(c7gam)
// << "\n Re(c9eff_b2q) = " << real(c9eff_b2q)
// << " Im(c9eff_b2q) = " << imag(c9eff_b2q)
// << "\n Re(c9eff_barb2barq) = " << real(c9eff_barb2barq)
// << " Im(c9eff_barb2barq) = " << imag(c9eff_barb2barq)
// << "\n Re(c10a) = " << real(c10a)
// << " Im(c10a) = " << imag(c10a)
// << "\n ============================================================================"
// << "\n Functions in the matrix element:"
// << "\n a_b2q = " << a_b2q
// << "\n b_b2q = " << b_b2q
// << "\n c_b2q = " << c_b2q
// << "\n e_b2q = " << e_b2q
// << "\n f_b2q = " << f_b2q
// << "\n g_b2q = " << g_b2q
// << "\n ============================================================================"
// << "\n Partical Properties:"
// << "\n IdB = " << idparent << " == " << EvtPDL::getId(std::string("anti-B_s0"))
// << "\n IdMu1 = " << IdMu1 << " == " << EvtPDL::getId(std::string("mu+"))
// << "\n IdMu2 = " << IdMu2 << " == " << EvtPDL::getId(std::string("mu-"))
// << "\n IdMu3 = " << IdMu3 << " == " << EvtPDL::getId(std::string("mu+"))
// << "\n IdMu4 = " << IdMu4 << " == " << EvtPDL::getId(std::string("mu-"))
// << "\n\n\n\n"
// << std::endl;
} else {
if ( bbarmesons.contains( parentID ) ) {
// The amplitude for the decay B -> gamma ell^+ ell^- or
// q bar b -> gamma ell^+ ell^-
T1 = -a_barb2barq * unit1 *
dual( EvtGenFunctions::directProd( hatq, hatk ) ) -
b_barb2barq * uniti * EvtTensor4C::g() +
c_barb2barq * uniti * EvtGenFunctions::directProd( hatk, hatq );
T2 = -e_barb2barq * unit1 *
dual( EvtGenFunctions::directProd( hatq, hatk ) ) -
f_barb2barq * uniti * EvtTensor4C::g() +
g_barb2barq * uniti * EvtGenFunctions::directProd( hatk, hatq );
T1second = -a_barb2barqsecond * unit1 *
dual( EvtGenFunctions::directProd( hatqsecond,
hatksecond ) ) -
b_barb2barqsecond * uniti * EvtTensor4C::g() +
c_barb2barqsecond * uniti *
EvtGenFunctions::directProd( hatksecond, hatqsecond );
T2second = -e_barb2barqsecond * unit1 *
dual( EvtGenFunctions::directProd( hatpsecond,
hatksecond ) ) -
f_barb2barqsecond * uniti * EvtTensor4C::g() +
g_barb2barqsecond * uniti *
EvtGenFunctions::directProd( hatksecond, hatqsecond );
int i1, i2, i3, i4; // leptonic spin structures counters
int leptonicspin[4]; // array for the saving of the leptonic spin configuration
// Tables for correspondings
// l^+(k_1) && lep1Plus && k_1 && i1
// l^-(k_2) && lep1Minus && k_2 && i2
// l^+(k_3) && lep2Plus && k_3 && i3
// l^-(k_4) && lep2Minus && k_4 && i4
for ( i2 = 1; i2 < 0; i2-- ) {
leptonicspin[0] = i2;
for ( i1 = 1; i1 < 0; i1-- ) {
leptonicspin[1] = i1;
for ( i4 = 1; i4 < 0; i4-- ) {
leptonicspin[2] = i4;
for ( i3 = 1; i3 < 0; i3-- ) {
leptonicspin[3] = i3;
EvtVector4C VL2L1, AL2L1, VL4L3;
EvtVector4C E1, E2;
EvtVector4C VL2L1second, AL2L1second, VL4L3second;
EvtVector4C E1second, E2second;
VL2L1 = EvtLeptonVCurrent( lep1Minus->spParent( i2 ),
lep1Plus->spParent( i1 ) );
AL2L1 = EvtLeptonACurrent( lep1Minus->spParent( i2 ),
lep1Plus->spParent( i1 ) );
VL4L3 = EvtLeptonVCurrent( lep2Minus->spParent( i4 ),
lep2Plus->spParent( i3 ) );
E1 = T1.cont2( VL4L3 );
E2 = T2.cont2( VL4L3 );
VL2L1second =
EvtLeptonVCurrent( lep2Minus->spParent( i2 ),
lep1Plus->spParent( i1 ) );
AL2L1second =
EvtLeptonACurrent( lep2Minus->spParent( i2 ),
lep1Plus->spParent( i1 ) );
VL4L3second =
EvtLeptonVCurrent( lep1Minus->spParent( i4 ),
lep2Plus->spParent( i3 ) );
E1second = T1second.cont2( VL4L3second );
E2second = T2second.cont2( VL4L3second );
amp.vertex( leptonicspin,
conj( CKM_factor ) *
( VL2L1 * E1 + AL2L1 * E2 +
VL2L1second * E1second +
AL2L1second * E2second ) );
}
}
}
}
// EvtGenReport(EVTGEN_ERROR,"EvtGen") << "\n The function EvtbsToLLLLAmp::CalcAmp(...) passed with arguments:"
// << "\n ============================================================================"
// << "\n Input parameters:"
// << "\n mu = " << mu
// << "\n Nf =" << Nf
// << "\n res_swch = " << res_swch
// << "\n ias = " << ias
// << "\n CKM_A = " << CKM_A
// << "\n CKM_lambda = " << CKM_lambda
// << "\n CKM_barrho = " << CKM_barrho
// << "\n CKM_bareta = " << CKM_bareta
// << "\n CKM_factor = " << CKM_factor
// << "\n ============================================================================"
// << "\n Kinematics:"
// << "\n k_1 = " << k_1
// << "\n m_ell_1 =" << parent->getDaug(il1)->mass()
// << "\n k_2 = " << k_2
// << "\n m_ell_2 =" << parent->getDaug(il2)->mass()
// << "\n k_3 = " << k_3
// << "\n m_ell_3 =" << parent->getDaug(il3)->mass()
// << "\n k_4 = " << k_4
// << "\n m_ell_4 =" << parent->getDaug(il4)->mass()
// << "\n p = " << p
// << "\n q = " << q
// << "\n k = " << k
// << "\n ============================================================================"
// << "\n Form-factors"
// << "\n Fv = " << Fv
// << "\n Fa = " << Fa
// << "\n Ftv_b2q = " << Ftv_b2q
// << "\n Fta_b2q = " << Fta_b2q
// << "\n Ftv_barb2barq = " << Ftv_barb2barq
// << "\n Fta_barb2barq = " << Fta_barb2barq
// << "\n fb = " << fb
// << "\n ============================================================================"
// << "\n Wilson Coefficients:"
// << "\n Re(c7gam) = " << real(c7gam)
// << " Im(c7gam) = " << imag(c7gam)
// << "\n Re(c9eff_b2q) = " << real(c9eff_b2q)
// << " Im(c9eff_b2q) = " << imag(c9eff_b2q)
// << "\n Re(c9eff_barb2barq) = " << real(c9eff_barb2barq)
// << " Im(c9eff_barb2barq) = " << imag(c9eff_barb2barq)
// << "\n Re(c10a) = " << real(c10a)
// << " Im(c10a) = " << imag(c10a)
// << "\n ============================================================================"
// << "\n Functions in the matrix element:"
// << "\n a_barb2barq = " << a_barb2barq
// << "\n b_barb2barq = " << b_barb2barq
// << "\n c_barb2barq = " << c_barb2barq
// << "\n e_barb2barq = " << e_barb2barq
// << "\n f_barb2barq = " << f_barb2barq
// << "\n g_barb2barq = " << g_barb2barq
// << "\n ============================================================================"
// << "\n Partical Properties:"
// << "\n IdB = " << idparent << " == " << EvtPDL::getId(std::string("B_s0"))
// << "\n IdMu1 = " << IdMu1 << " == " << EvtPDL::getId(std::string("mu+"))
// << "\n IdMu2 = " << IdMu2 << " == " << EvtPDL::getId(std::string("mu-"))
// << "\n IdMu3 = " << IdMu3 << " == " << EvtPDL::getId(std::string("mu+"))
// << "\n IdMu4 = " << IdMu4 << " == " << EvtPDL::getId(std::string("mu-"))
// << "\n\n\n\n"
// << std::endl;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsToLLLLAmp::CalcAmp(...)"
<< "\n Wrong Bq-meson number" << std::endl;
::abort();
}
}
}
//
// The decays Bq -> ell^+ ell^- ell^+ ell^- maximum probability calculation
//
double EvtbsToLLLLAmp::CalcMaxProb(
// EvtId parnum,
// EvtId l1num, EvtId l2num,
// EvtId l3num, EvtId l4num,
// Evtbs2llGammaFF *formFactors,
// EvtbTosllWilsCoeffNLO *WilsCoeff,
// double mu, int Nf,
// int res_swch, int ias,
// double CKM_A, double CKM_lambda,
// double CKM_barrho, double CKM_bareta
)
{
double maxfoundprob = 5.0; // maximum of the probability
return maxfoundprob;
}
// Triangular function
double EvtbsToLLLLAmp::lambda( double a, double b, double c )
{
double l;
l = pow( a, 2.0 ) + pow( b, 2.0 ) + pow( c, 2.0 ) - 2.0 * a * b -
2.0 * a * c - 2.0 * b * c;
return l;
}
diff --git a/src/EvtGenModels/EvtbsToLLLLHyperCP.cpp b/src/EvtGenModels/EvtbsToLLLLHyperCP.cpp
index d18dfb5..b22d247 100644
--- a/src/EvtGenModels/EvtbsToLLLLHyperCP.cpp
+++ b/src/EvtGenModels/EvtbsToLLLLHyperCP.cpp
@@ -1,167 +1,147 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2003 Caltech, UCSB
-//
-// Module: EvtbsToLLLLHyperCP.ccp
-//
-// Description:
-//
-// Modification history:
-//
-// N.Nikitin May 30, 2012 Module created
-//
-//------------------------------------------------------------------------
-//
#include "EvtGenModels/EvtbsToLLLLHyperCP.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenModels/EvtbsToLLLLHyperCPAmp.hh"
#include <stdlib.h>
#include <string.h>
EvtbsToLLLLHyperCP::~EvtbsToLLLLHyperCP()
{
if ( _calcamp )
delete _calcamp;
}
// The module name specification
std::string EvtbsToLLLLHyperCP::getName()
{
return "BQTOLLLLHYPERCP";
}
// The implementation of the clone() method
EvtDecayBase* EvtbsToLLLLHyperCP::clone()
{
return new EvtbsToLLLLHyperCP;
}
// The inicialization of the decay model
//
// Tn the our model we have are following 14 arguments:
//
// mS - the mass of the scalar sgoldstino "S" (GeV);
// mP - the mass of the pseudoscalar sgoldstino "P" (GeV);
// gammaS - the decay width of the scalar sgoldstino "S" (GeV);
// gammaP - the decay width of the pseudoscalar sgoldstino "P" (GeV);
// mLiiLR -
// Fc - coupling constant (GeV);
// mDijLL(RR) - parameters for \bar Bq-decays
// mDjiLL(RR) - parameters for Bq-decays (i <-> j!)
// d==1, s==2, b==3
//
void EvtbsToLLLLHyperCP::init()
{
// check that there are 14 arguments
checkNArg( 14 );
// check that there are 4 daughteres
checkNDaug( 4 );
// We expect that the parent to be a scalar (B-meson)
// and the daughters to be l^+, l^-, l^+ and l^-
checkSpinParent( EvtSpinType::SCALAR );
// We expect that the all daughters are the ell+ or ell- == DIRAC
checkSpinDaughter( 0, EvtSpinType::DIRAC );
checkSpinDaughter( 1, EvtSpinType::DIRAC );
checkSpinDaughter( 2, EvtSpinType::DIRAC );
checkSpinDaughter( 3, EvtSpinType::DIRAC );
_calcamp = new EvtbsToLLLLHyperCPAmp();
}
// Set the maximum probability of the decay
void EvtbsToLLLLHyperCP::initProbMax()
{
double mymaxprob = -10.0; // maximum of the probability
EvtId parnum, l1num, l2num, l3num, l4num;
parnum = getParentId();
l1num = getDaug( 0 );
l2num = getDaug( 1 );
l3num = getDaug( 2 );
l4num = getDaug( 3 );
double mS = getArg( 0 );
double mP = getArg( 1 );
double gammaS = getArg( 2 );
double gammaP = getArg( 3 );
double mLiiLR = getArg( 4 );
double Fc = getArg( 5 );
double mD23LL = getArg( 6 );
double mD23RR = getArg( 7 );
double mD32LL = getArg( 8 );
double mD32RR = getArg( 9 );
double mD13LL = getArg( 10 );
double mD13RR = getArg( 11 );
double mD31LL = getArg( 12 );
double mD31RR = getArg( 13 );
mymaxprob = _calcamp->CalcMaxProb( parnum, l1num, l2num, l3num, l4num, mS,
mP, gammaS, gammaP, mLiiLR, Fc, mD23LL,
mD23RR, mD32LL, mD32RR, mD13LL, mD13RR,
mD31LL, mD31RR );
if ( mymaxprob <= 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "The function void EvtbsToLLLLHyperCP::initProbMax()"
<< "\n Unexpected value of the probability maximum!"
<< "\n mymaxprob = " << mymaxprob << std::endl;
::abort();
}
setProbMax( mymaxprob );
}
void EvtbsToLLLLHyperCP::decay( EvtParticle* p )
{
double mS = getArg( 0 );
double mP = getArg( 1 );
double gammaS = getArg( 2 );
double gammaP = getArg( 3 );
double mLiiLR = getArg( 4 );
double Fc = getArg( 5 );
double mD23LL = getArg( 6 );
double mD23RR = getArg( 7 );
double mD32LL = getArg( 8 );
double mD32RR = getArg( 9 );
double mD13LL = getArg( 10 );
double mD13RR = getArg( 11 );
double mD31LL = getArg( 12 );
double mD31RR = getArg( 13 );
p->initializePhaseSpace( getNDaug(), getDaugs() );
_calcamp->CalcAmp( p, _amp2, mS, mP, gammaS, gammaP, mLiiLR, Fc, mD23LL,
mD23RR, mD32LL, mD32RR, mD13LL, mD13RR, mD31LL, mD31RR );
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n The function EvtbsToLLLLHyperCP::decay(...) passed with arguments:"
// << "\n mS = " << mS
// << "\n mP = " << mP
// << "\n gammaS = " << gammaS
// << "\n gammaP = " << gammaP
// << "\n mLiiLR = " << mLiiLR
// << "\n Fc = " << Fc
// << "\n mD23LL = " << mD23LL
// << "\n mD23RR = " << mD23RR
// << "\n mD32LL = " << mD32LL
// << "\n mD32RR = " << mD32RR
// << "\n mD13LL = " << mD13LL
// << "\n mD13RR = " << mD13RR
// << "\n mD31LL = " << mD31LL
// << "\n mD31RR = " << mD31RR
// << std::endl;
}
diff --git a/src/EvtGenModels/EvtbsToLLLLHyperCPAmp.cpp b/src/EvtGenModels/EvtbsToLLLLHyperCPAmp.cpp
index a7cbbd6..0564e10 100644
--- a/src/EvtGenModels/EvtbsToLLLLHyperCPAmp.cpp
+++ b/src/EvtGenModels/EvtbsToLLLLHyperCPAmp.cpp
@@ -1,614 +1,585 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 2000 Caltech, UCSB
-//
-// Module: EvtbsToLLLLHyperCPAmp.cpp
-//
-// Description: Preparation of the decay amplitude for the process:
-// B^0_{q}(p,M1) -> ell^+(k1,m) ell^-(k2,m) ell^+(k3,m) ell^-(k4,m)
-// in the HyperCP model.
-//
-// [1] D.S.Gorbunov, Nucl.Phys.B602, pp.213-237 (2001);
-// [2] S.V. Demidov, D.S.Gorbunov, hep-ph/1112.5230v2, 17 April 2012.
-//
-// Note: The code of this module is based on the EvtbsToLLLLAmp.cpp module code.
-//
-//
-// Modification history:
-//
-// N.Nikitin (nnikit@mail.cerrn.ch) June 20, 2012 New CalcMaxProb() method preparation
-// N.Nikitin (nnikit@mail.cerrn.ch) May 11, 2012 Module created
-//
-//-----------------------------------------------------------------------------------------
-//
+#include "EvtGenModels/EvtbsToLLLLHyperCPAmp.hh"
+
#include "EvtGenBase/EvtAmp.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtId.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtScalarParticle.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
-// The header file for current class memeber functions description
-#include "EvtGenModels/EvtbsToLLLLHyperCPAmp.hh"
#include <cstdlib>
// input: *parent - the pointer to the parent particle (B-meson, the
// object of the EvtParticle class);
// mS - the mass of the scalar sgoldstino "S" (GeV);
// mP - the mass of the pseudoscalar sgoldstino "P" (GeV);
// gammaS - the decay width of the scalar sgoldstino "S" (GeV);
// gammaP - the decay width of the pseudoscalar sgoldstino "P" (GeV);
// mLiiLR -
// Fc - coupling constant (GeV^2);
// mDijLL(RR) - parameters for \bar Bq-decays
// mDjiLL(RR) - parameters for Bq-decays (i <-> j!)
// d==1, s==2, b==3
//
void EvtbsToLLLLHyperCPAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp,
double mS, double mP, double gammaS,
double gammaP, double mLiiLR, double Fc,
double mD23LL, double mD23RR, double mD32LL,
double mD32RR, double mD13LL, double mD13RR,
double mD31LL, double mD31RR )
{
// FILE *mytest;
int il1 = 0, il2 = 1, il3 = 2,
il4 = 3; // leptons are the first, second, thirds
// and fourth daughter particles
EvtComplex unit1( 1.0, 0.0 ); // real unit
EvtComplex uniti( 0.0, 1.0 ); // imaginary unit
parent->mass(); // B - meson mass, GeV
double fb = 0.0; // leptonic decay constant of B-meson, GeV
double Cl = 0.0; // LPL and LSL - vertexes
if ( Fc != 0.0 ) {
Cl = mLiiLR * mLiiLR / ( sqrt( 2 ) * Fc );
}
if ( Cl == 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsToLLLLHyperCPAmp::CalcAmp(...)"
<< "\n Error in the Cl setting!"
<< "\n Cl = " << Cl << "\n mLiiLR = " << mLiiLR
<< "\n Fc = " << Fc << std::endl;
::abort();
}
EvtComplex MS = unit1 * mS -
uniti * gammaS /
2.0; // complex mass of the scalar sgoldstino
EvtComplex MP = unit1 * mP -
uniti * gammaP /
2.0; // complex mass of the pseudoscalar sgoldstino
//
// Setting of the different Bq-mesons tipes
//
EvtId idparent = parent->getId(); // Bq-meson Id
EvtId IdMu1, IdMu2, IdMu3, IdMu4;
double CB = 0.0;
if ( idparent == EvtPDL::getId( std::string( "B_s0" ) ) ) {
fb = 0.24; // leptonic decay constant
CB = mD32LL * mD32LL + mD32RR * mD32RR;
}
if ( idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) ) {
fb = 0.24; // leptonic decay constant
CB = mD23LL * mD23LL + mD23RR * mD23RR;
}
if ( idparent == EvtPDL::getId( std::string( "B0" ) ) ) {
fb = 0.20; // leptonic decay constant
CB = mD31LL * mD31LL + mD31RR * mD31RR;
}
if ( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) ) {
fb = 0.20; // leptonic decay constant
CB = mD13LL * mD13LL + mD13RR * mD13RR;
}
if ( CB == 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsToLLLLHyperCPAmp::CalcAmp(...)"
<< "\n Error in the CB setting!"
<< "\n CB = " << CB << "\n mD32LL = " << mD32LL
<< "\n mD32RR = " << mD32RR << "\n mD23LL = " << mD23LL
<< "\n mD23RR = " << mD23RR << "\n mD31LL = " << mD31LL
<< "\n mD31RR = " << mD31RR << "\n mD13LL = " << mD13LL
<< "\n mD13RR = " << mD13RR << "\n idparent = " << idparent
<< std::endl;
::abort();
}
//
// Setting the leptonic kinematical properties
//
// to find charges of ell^+ and ell^- in the B-meson daughters
int charge1 = ( EvtPDL::chg3( parent->getDaug( il1 )->getId() ) ) / 3;
int charge2 = ( EvtPDL::chg3( parent->getDaug( il2 )->getId() ) ) / 3;
int charge3 = ( EvtPDL::chg3( parent->getDaug( il3 )->getId() ) ) / 3;
int charge4 = ( EvtPDL::chg3( parent->getDaug( il4 )->getId() ) ) / 3;
if ( ( abs( charge1 ) != 1 ) || ( abs( charge2 ) != 1 ) ||
( abs( charge3 ) != 1 ) || ( abs( charge4 ) != 1 ) ||
( charge1 + charge2 + charge3 + charge4 != 0 ) ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsToLLLLHyperCPAmp::CalcAmp(...)"
<< "\n Error in the leptonic charge definition!"
<< "\n charge1 =" << charge1
<< "\n charge2 =" << charge2
<< "\n charge3 =" << charge3
<< "\n charge4 =" << charge4
<< "\n number of daughters =" << parent->getNDaug() << std::endl;
::abort();
}
EvtParticle* lep1Plus = 0;
EvtParticle* lep1Minus = 0;
EvtParticle* lep2Plus = 0;
EvtParticle* lep2Minus = 0;
EvtVector4R p; // B-meson momentum in the B-rest frame
EvtVector4R q; // first transition 4-momentum in the B-rest frame
EvtVector4R k; // second transition 4-momentum in the B-rest frame
double q2; // Mandelstam variable s=q^2
double k2; // Mandelstam variable t=k^2
EvtVector4R qsecond; // first transition 4-momentum in the B-rest frame
EvtVector4R ksecond; // second transition 4-momentum in the B-rest frame
double q2second; // Mandelstam variable s=q^2
double k2second; // Mandelstam variable t=k^2
EvtVector4R k_1; // 4-momentum of ell^+ in the B-rest frame
EvtVector4R k_2; // 4-momentum of ell^- in the B-rest frame
EvtVector4R k_3; // 4-momentum of ell^+ in the B-rest frame
EvtVector4R k_4; // 4-momentum of ell^- in the B-rest frame
k_1.set( 0.0, 0.0, 0.0, 0.0 );
k_2.set( 0.0, 0.0, 0.0, 0.0 );
k_3.set( 0.0, 0.0, 0.0, 0.0 );
k_4.set( 0.0, 0.0, 0.0, 0.0 );
if ( ( charge1 + charge2 == 0 ) && ( charge3 + charge4 == 0 ) ) {
// positive charged lepton 1
lep1Plus = ( charge1 > charge2 ) ? parent->getDaug( il1 )
: parent->getDaug( il2 );
// negative charged lepton 1
lep1Minus = ( charge1 < charge2 ) ? parent->getDaug( il1 )
: parent->getDaug( il2 );
if ( charge1 > charge2 ) {
k_1 = parent->getDaug( il1 )->getP4();
k_2 = parent->getDaug( il2 )->getP4();
IdMu1 = parent->getDaug( il1 )->getId();
IdMu2 = parent->getDaug( il2 )->getId();
} else {
k_1 = parent->getDaug( il2 )->getP4();
k_2 = parent->getDaug( il1 )->getP4();
IdMu1 = parent->getDaug( il2 )->getId();
IdMu2 = parent->getDaug( il1 )->getId();
}
// positive charged lepton 2
lep2Plus = ( charge3 > charge4 ) ? parent->getDaug( il3 )
: parent->getDaug( il4 );
// negative charged lepton 2
lep2Minus = ( charge3 < charge4 ) ? parent->getDaug( il3 )
: parent->getDaug( il4 );
if ( charge3 > charge4 ) {
k_3 = parent->getDaug( il3 )->getP4();
k_4 = parent->getDaug( il4 )->getP4();
IdMu3 = parent->getDaug( il3 )->getId();
IdMu4 = parent->getDaug( il4 )->getId();
} else {
k_3 = parent->getDaug( il4 )->getP4();
k_4 = parent->getDaug( il3 )->getP4();
IdMu3 = parent->getDaug( il4 )->getId();
IdMu4 = parent->getDaug( il3 )->getId();
}
}
if ( ( charge1 + charge3 == 0 ) && ( charge2 + charge4 == 0 ) ) {
// positive charged lepton 1
lep1Plus = ( charge1 > charge3 ) ? parent->getDaug( il1 )
: parent->getDaug( il3 );
// negative charged lepton 1
lep1Minus = ( charge1 < charge3 ) ? parent->getDaug( il1 )
: parent->getDaug( il3 );
if ( charge1 > charge3 ) {
k_1 = parent->getDaug( il1 )->getP4();
k_2 = parent->getDaug( il3 )->getP4();
IdMu1 = parent->getDaug( il1 )->getId();
IdMu2 = parent->getDaug( il3 )->getId();
} else {
k_1 = parent->getDaug( il3 )->getP4();
k_2 = parent->getDaug( il1 )->getP4();
IdMu1 = parent->getDaug( il3 )->getId();
IdMu2 = parent->getDaug( il1 )->getId();
}
// positive charged lepton 2
lep2Plus = ( charge2 > charge4 ) ? parent->getDaug( il2 )
: parent->getDaug( il4 );
// negative charged lepton 2
lep2Minus = ( charge2 < charge4 ) ? parent->getDaug( il2 )
: parent->getDaug( il4 );
if ( charge2 > charge4 ) {
k_3 = parent->getDaug( il2 )->getP4();
k_4 = parent->getDaug( il4 )->getP4();
IdMu3 = parent->getDaug( il2 )->getId();
IdMu4 = parent->getDaug( il4 )->getId();
} else {
k_3 = parent->getDaug( il4 )->getP4();
k_4 = parent->getDaug( il2 )->getP4();
IdMu3 = parent->getDaug( il4 )->getId();
IdMu4 = parent->getDaug( il2 )->getId();
}
}
p = parent->getP4Restframe();
//
// The calculation of the FIRST part of the amplitude
//
q = k_1 + k_2;
k = k_3 + k_4;
q2 = q.mass2(); // Mandelstam variable s=q^2
k2 = k.mass2(); // Mandelstam variable t=k^2
//
// The calculation of the SECOND part of the amplitude
//
qsecond = k_1 + k_4;
ksecond = k_3 + k_2;
q2second = qsecond.mass2(); // Mandelstam variable s=q^2
k2second = ksecond.mass2(); // Mandelstam variable t=k^2
// B - and barB - mesons descriptors
static EvtIdSet bmesons( "anti-B0", "anti-B_s0" );
static EvtIdSet bbarmesons( "B0", "B_s0" );
EvtId parentID = parent->getId();
if ( bmesons.contains( parentID ) ) {
// The amplitude for the decay barB -> ell^+ ell^- ell^+ ell^- or
// b \bar q -> ell^+ ell^- ell^+ ell^-
int i1, i2, i3, i4; // leptonic spin structures counters
int leptonicspin[4]; // array for the saving of the leptonic spin configuration
// Tables for correspondings
// l^+(k_1) && lep1Plus && k_1 && i1
// l^-(k_2) && lep1Minus && k_2 && i2
// l^+(k_3) && lep2Plus && k_3 && i3
// l^-(k_4) && lep2Minus && k_4 && i4
for ( i2 = 0; i2 < 2; i2++ ) {
leptonicspin[0] = i2;
for ( i1 = 0; i1 < 2; i1++ ) {
leptonicspin[1] = i1;
for ( i4 = 0; i4 < 2; i4++ ) {
leptonicspin[2] = i4;
for ( i3 = 0; i3 < 2; i3++ ) {
leptonicspin[3] = i3;
EvtComplex SL2L1, PL4L3;
EvtComplex SL2L1second, PL4L3second;
SL2L1 = EvtLeptonSCurrent( lep1Minus->spParent( i2 ),
lep1Plus->spParent( i1 ) );
PL4L3 = EvtLeptonPCurrent( lep2Minus->spParent( i4 ),
lep2Plus->spParent( i3 ) );
SL2L1second = EvtLeptonSCurrent(
lep2Minus->spParent( i2 ), lep1Plus->spParent( i1 ) );
PL4L3second = EvtLeptonPCurrent(
lep1Minus->spParent( i4 ), lep2Plus->spParent( i3 ) );
amp.vertex(
leptonicspin,
Cl * Cl * CB * fb *
( SL2L1 * PL4L3 * ( q2 - k2 ) /
( ( q2 - MS * MS ) * ( k2 - MP * MP ) ) -
SL2L1second * PL4L3second *
( q2second - k2second ) /
( ( q2second - MS * MS ) *
( k2second - MP * MP ) ) ) /
( 4.0 * Fc * Fc ) );
}
}
}
}
// EvtGenReport(EVTGEN_ERROR,"EvtGen") << "\n The function EvtbsToLLLLHyperCPAmp::CalcAmp(...) passed with arguments:"
// << "\n ============================================================================"
// << "\n Input parameters:"
// << "\n mS = " << mS
// << "\n mP = " << mP
// << "\n gammaS = " << gammaS
// << "\n gammaP = " << gammaP
// << "\n mLiiLR = " << mLiiLR
// << "\n Fc = " << Fc
// << "\n mD23LL = " << mD23LL
// << "\n mD23RR = " << mD23RR
// << "\n mD32LL = " << mD32LL
// << "\n mD32RR = " << mD32RR
// << "\n mD13LL = " << mD13LL
// << "\n mD13RR = " << mD13RR
// << "\n mD31LL = " << mD31LL
// << "\n mD31RR = " << mD31RR
// << "\n ============================================================================"
// << "\n Kinematics:"
// << "\n k_1 = " << k_1
// << "\n m_ell_1 =" << parent->getDaug(il1)->mass()
// << "\n k_2 = " << k_2
// << "\n m_ell_2 =" << parent->getDaug(il2)->mass()
// << "\n k_3 = " << k_3
// << "\n m_ell_3 =" << parent->getDaug(il3)->mass()
// << "\n k_4 = " << k_4
// << "\n m_ell_4 =" << parent->getDaug(il4)->mass()
// << "\n p = " << p
// << "\n q = " << q
// << "\n k = " << k
// << "\n qsecond = " << qsecond
// << "\n ksecond = " << ksecond
// << "\n ============================================================================"
// << "\n Form-factors"
// << "\n fb = " << fb
// << "\n ============================================================================"
// << "\n Coefficients:"
// << "\n Cl = " << Cl
// << "\n CB = " << CB
// << "\n ============================================================================"
// << "\n Partical Properties:"
// << "\n IdB = " << idparent << " == " << EvtPDL::getId(std::string("anti-B_s0"))
// << "\n IdMu1 = " << IdMu1 << " == " << EvtPDL::getId(std::string("mu+"))
// << "\n IdMu2 = " << IdMu2 << " == " << EvtPDL::getId(std::string("mu-"))
// << "\n IdMu3 = " << IdMu3 << " == " << EvtPDL::getId(std::string("mu+"))
// << "\n IdMu4 = " << IdMu4 << " == " << EvtPDL::getId(std::string("mu-"))
// << "\n\n\n\n"
// << std::endl;
} else {
if ( bbarmesons.contains( parentID ) ) {
// The amplitude for the decay B -> ell^+ ell^- ell^+ ell^- or
// q bar b -> ell^+ ell^- ell^+ ell^-
int i1, i2, i3, i4; // leptonic spin structures counters
int leptonicspin[4]; // array for the saving of the leptonic spin configuration
// Tables for correspondings
// l^+(k_1) && lep1Plus && k_1 && i1
// l^-(k_2) && lep1Minus && k_2 && i2
// l^+(k_3) && lep2Plus && k_3 && i3
// l^-(k_4) && lep2Minus && k_4 && i4
for ( i2 = 1; i2 < 0; i2-- ) {
leptonicspin[0] = i2;
for ( i1 = 1; i1 < 0; i1-- ) {
leptonicspin[1] = i1;
for ( i4 = 1; i4 < 0; i4-- ) {
leptonicspin[2] = i4;
for ( i3 = 1; i3 < 0; i3-- ) {
leptonicspin[3] = i3;
EvtComplex SL2L1, PL4L3;
EvtComplex SL2L1second, PL4L3second;
SL2L1 = EvtLeptonSCurrent( lep1Minus->spParent( i2 ),
lep1Plus->spParent( i1 ) );
PL4L3 = EvtLeptonPCurrent( lep2Minus->spParent( i4 ),
lep2Plus->spParent( i3 ) );
SL2L1second =
EvtLeptonSCurrent( lep2Minus->spParent( i2 ),
lep1Plus->spParent( i1 ) );
PL4L3second =
EvtLeptonPCurrent( lep1Minus->spParent( i4 ),
lep2Plus->spParent( i3 ) );
amp.vertex( leptonicspin,
Cl * Cl * CB * fb *
( SL2L1 * PL4L3 * ( q2 - k2 ) /
( ( q2 - MS * MS ) *
( k2 - MP * MP ) ) -
SL2L1second * PL4L3second *
( q2second - k2second ) /
( ( q2second - MS * MS ) *
( k2second - MP * MP ) ) ) /
( 4.0 * Fc * Fc ) );
}
}
}
}
// EvtGenReport(EVTGEN_ERROR,"EvtGen") << "\n The function EvtbsToLLLLHyperCPAmp::CalcAmp(...) passed with arguments:"
// << "\n ============================================================================"
// << "\n Input parameters:"
// << "\n mS = " << mS
// << "\n mP = " << mP
// << "\n gammaS = " << gammaS
// << "\n gammaP = " << gammaP
// << "\n mLiiLR = " << mLiiLR
// << "\n Fc = " << Fc
// << "\n mD23LL = " << mD23LL
// << "\n mD23RR = " << mD23RR
// << "\n mD32LL = " << mD32LL
// << "\n mD32RR = " << mD32RR
// << "\n mD13LL = " << mD13LL
// << "\n mD13RR = " << mD13RR
// << "\n mD31LL = " << mD31LL
// << "\n mD31RR = " << mD31RR
// << "\n ============================================================================"
// << "\n Kinematics:"
// << "\n k_1 = " << k_1
// << "\n m_ell_1 =" << parent->getDaug(il1)->mass()
// << "\n k_2 = " << k_2
// << "\n m_ell_2 =" << parent->getDaug(il2)->mass()
// << "\n k_3 = " << k_3
// << "\n m_ell_3 =" << parent->getDaug(il3)->mass()
// << "\n k_4 = " << k_4
// << "\n m_ell_4 =" << parent->getDaug(il4)->mass()
// << "\n p = " << p
// << "\n q = " << q
// << "\n k = " << k
// << "\n qsecond = " << qsecond
// << "\n ksecond = " << ksecond
// << "\n ============================================================================"
// << "\n Form-factors"
// << "\n fb = " << fb
// << "\n ============================================================================"
// << "\n Coefficients:"
// << "\n Cl = " << Cl
// << "\n CB = " << CB
// << "\n ============================================================================"
// << "\n Partical Properties:"
// << "\n IdB = " << idparent << " == " << EvtPDL::getId(std::string("anti-B_s0"))
// << "\n IdMu1 = " << IdMu1 << " == " << EvtPDL::getId(std::string("mu+"))
// << "\n IdMu2 = " << IdMu2 << " == " << EvtPDL::getId(std::string("mu-"))
// << "\n IdMu3 = " << IdMu3 << " == " << EvtPDL::getId(std::string("mu+"))
// << "\n IdMu4 = " << IdMu4 << " == " << EvtPDL::getId(std::string("mu-"))
// << "\n\n\n\n"
// << std::endl;
} else {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsToLLLLHyperCPAmp::CalcAmp(...)"
<< "\n Wrong Bq-meson number" << std::endl;
::abort();
}
}
}
//
// The decays Bq -> ell^+ ell^- ell^+ ell^- maximum probability calculation
//
double EvtbsToLLLLHyperCPAmp::CalcMaxProb(
EvtId parnum, EvtId l1num, EvtId /*l2num*/, EvtId /*l3num*/,
EvtId /*l4num*/, double mS, double mP, double gammaS, double gammaP,
double mLiiLR, double Fc, double mD23LL, double mD23RR, double mD32LL,
double mD32RR, double mD13LL, double mD13RR, double mD31LL, double mD31RR )
{
if ( Fc == 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsToLLLLHyperCPAmp::CalcMaxProb"
<< "\n Error in the Fc setting!"
<< "\n Fc = " << Fc << "\n mD32LL = " << mD32LL
<< "\n mD32RR = " << mD32RR << "\n mD23LL = " << mD23LL
<< "\n mD23RR = " << mD23RR << "\n mD31LL = " << mD31LL
<< "\n mD31RR = " << mD31RR << "\n mD13LL = " << mD13LL
<< "\n mD13RR = " << mD13RR << "\n parnum = " << parnum
<< std::endl;
::abort();
}
double Cl = 0.0; // LPL and LSL - vertexes
if ( Fc != 0.0 ) {
Cl = mLiiLR * mLiiLR / ( sqrt( 2 ) * Fc );
}
if ( Cl == 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsToLLLLHyperCPAmp::CalcMaxProb"
<< "\n Error in the Cl setting!"
<< "\n Cl = " << Cl << "\n mLiiLR = " << mLiiLR
<< "\n Fc = " << Fc << std::endl;
::abort();
}
//
// Setting of the different Bq-mesons tipes
//
double fb = 0.0;
double CB = 0.0;
if ( parnum == EvtPDL::getId( std::string( "B_s0" ) ) ) {
fb = 0.24; // leptonic decay constant
CB = mD32LL * mD32LL + mD32RR * mD32RR;
}
if ( parnum == EvtPDL::getId( std::string( "anti-B_s0" ) ) ) {
fb = 0.24; // leptonic decay constant
CB = mD23LL * mD23LL + mD23RR * mD23RR;
}
if ( parnum == EvtPDL::getId( std::string( "B0" ) ) ) {
fb = 0.20; // leptonic decay constant
CB = mD31LL * mD31LL + mD31RR * mD31RR;
}
if ( parnum == EvtPDL::getId( std::string( "anti-B0" ) ) ) {
fb = 0.20; // leptonic decay constant
CB = mD13LL * mD13LL + mD13RR * mD13RR;
}
if ( CB == 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n The function EvtbsToLLLLHyperCPAmp::CalcMaxProb"
<< "\n Error in the CB setting!"
<< "\n CB = " << CB << "\n mD32LL = " << mD32LL
<< "\n mD32RR = " << mD32RR << "\n mD23LL = " << mD23LL
<< "\n mD23RR = " << mD23RR << "\n mD31LL = " << mD31LL
<< "\n mD31RR = " << mD31RR << "\n mD13LL = " << mD13LL
<< "\n mD13RR = " << mD13RR << "\n parnum = " << parnum
<< std::endl;
::abort();
}
double M1 = EvtPDL::getMeanMass( parnum ); // B - meson mass
EvtPDL::getMeanMass( l1num ); // leptonic mass
// We find the maximum amplitude probability
double maxfoundprob = Cl * Cl * CB * fb *
fabs( mS * mS + mP * mP + M1 * M1 ) * 10000000.0 /
( 4.0 * Fc * Fc * mS * gammaS * mP * gammaP );
if ( maxfoundprob <= 0.0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "\n\n In the function EvtbsToLLLLHyperCPAmp::CalcMaxProb"
<< "\n maxfoundprob = " << maxfoundprob << " < 0 or =0!"
<< "\n mS = " << mS << "\n mP = " << mP
<< "\n gammaS = " << gammaS << "\n gammaP = " << gammaP
<< "\n mLiiLR = " << mLiiLR << "\n Fc = " << Fc
<< "\n mD32LL = " << mD32LL << "\n mD32RR = " << mD32RR
<< "\n mD23LL = " << mD23LL << "\n mD23RR = " << mD23RR
<< "\n mD31LL = " << mD31LL << "\n mD31RR = " << mD31RR
<< "\n mD13LL = " << mD13LL << "\n mD13RR = " << mD13RR
<< "\n parnum = " << parnum << std::endl;
::abort();
}
EvtGenReport( EVTGEN_NOTICE, "EvtGen" )
<< "\n maxfoundprob (...) = " << maxfoundprob << std::endl;
maxfoundprob *= 1.01;
return maxfoundprob;
}
// Triangular function
double EvtbsToLLLLHyperCPAmp::lambda( double a, double b, double c )
{
double l;
l = pow( a, 2.0 ) + pow( b, 2.0 ) + pow( c, 2.0 ) - 2.0 * a * b -
2.0 * a * c - 2.0 * b * c;
return l;
}
diff --git a/test/evtgenlhc_test1.cc b/test/evtgenlhc_test1.cc
index dfdd868..dfae6af 100644
--- a/test/evtgenlhc_test1.cc
+++ b/test/evtgenlhc_test1.cc
@@ -1,5655 +1,5635 @@
//#@# Dalitz plot for D0 --> K- pi+ pi0 decay:
//#@# 1: Mass(K-, pi+)
//#@# 2: Mass(pi+,pi0)
//
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: testEvtGen.cc
-//
// Description:
//
// This program invokes the EvtGen event generator package
// for testing various decay models that are implemented.
-//
-// Modification history:
-//
-// DJL/RYD Sometime long ago Module created
-//
-//------------------------------------------------------------------------
-//
-//
-//
+
#include "EvtGen/EvtGen.hh"
#include "EvtGenBase/EvtAbsRadCorr.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtConst.hh"
#include "EvtGenBase/EvtDecayBase.hh"
#include "EvtGenBase/EvtDecayTable.hh"
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGammaMatrix.hh"
#include "EvtGenBase/EvtIdSet.hh"
#include "EvtGenBase/EvtKine.hh"
#include "EvtGenBase/EvtMTRandomEngine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParser.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtParticleFactory.hh"
#include "EvtGenBase/EvtRandom.hh"
#include "EvtGenBase/EvtRandomEngine.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtSecondary.hh"
#include "EvtGenBase/EvtSimpleRandomEngine.hh"
#include "EvtGenBase/EvtStdHep.hh"
#include "EvtGenBase/EvtTensor4C.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtVector4R.hh"
#include "EvtGenBase/EvtVectorParticle.hh"
#ifdef EVTGEN_EXTERNAL
#include "EvtGenExternal/EvtExternalGenList.hh"
#endif
#include "TApplication.h"
#include "TFile.h"
#include "TH1.h"
#include "TH2.h"
#include "TROOT.h"
#include "TString.h"
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
using std::vector;
void runFile( int nevent, char* fname, EvtGen& myGenerator );
void runPrint( int nevent, char* fname, EvtGen& myGenerator );
void runFileVpho( int nevent, char* fname, EvtGen& myGenerator );
void runTest1( int nevent, EvtGen& myGenerator );
void runTest2( int nevent, EvtGen& myGenerator );
void runOmega( int nevent, EvtGen& myGenerator );
void runChi1Kstar( int nevent, EvtGen& myGenerator );
void runPi0Dalitz( int nevent, EvtGen& myGenerator );
void runMix( int nevent, EvtGen& myGenerator );
void runBMix( int nevent, EvtGen& myGenerator, std::string userFile,
std::string rootFile );
void runDDalitz( int nevent, EvtGen& myGenerator );
void runPiPiCPT( int nevent, EvtGen& myGenerator );
void runPiPiPiPi( int nevent, EvtGen& myGenerator );
void runD2Pi( int nevent, EvtGen& myGenerator );
void runJetsetTab3( int nevent, EvtGen& myGenerator );
void runHelAmp( int nevent, EvtGen& myGenerator, std::string userFile,
std::string rootFile );
void runHelAmp2( int nevent, EvtGen& myGenerator );
void runJpsiKs( int nevent, EvtGen& myGenerator );
void runDump( int nevent, EvtGen& myGenerator );
void runD1( int nevent, EvtGen& myGenerator );
void runGenericCont( int nevent, EvtGen& myGenerator );
void runPiPiPi( int nevent, EvtGen& myGenerator );
void runBHadronic( int nevent, EvtGen& myGenerator );
void runSingleB( int nevent, EvtGen& myGenerator );
void runA2Pi( int nevent, EvtGen& myGenerator );
void runAlias();
void runRepeat( int nevent );
void runPhotos( int nevent, EvtGen& myGenerator );
void runTrackMult( int nevent, EvtGen& myGenerator );
void runGeneric( int neventOrig, EvtGen& myGenerator, std::string listfile );
void runFinalStates( int nevent, EvtGen& myGenerator );
std::vector<std::string> findFinalState( EvtParticle* p );
void runKstarnunu( int nevent, EvtGen& myGenerator );
void runBsmix( int nevent, EvtGen& myGenerator );
void runTauTauPiPi( int nevent, EvtGen& myGenerator );
void runTauTauEE( int nevent, EvtGen& myGenerator );
void runTauTau2Pi2Pi( int nevent, EvtGen& myGenerator );
void runTauTau3Pi3Pi( int nevent, EvtGen& myGenerator );
void runJPsiKstar( int nevent, EvtGen& myGenerator, int modeInt );
void runSVVCPLH( int nevent, EvtGen& myGenerator );
void runSVSCPLH( int nevent, EvtGen& myGenerator );
void runSSDCP( int nevent, EvtGen& myGenerator );
void runKstarstargamma( int nevent, EvtGen& myGenerator );
void runDSTARPI( int nevent, EvtGen& myGenerator );
void runETACPHIPHI( int nevent, EvtGen& myGenerator );
void runVVPiPi( int nevent, EvtGen& myGenerator );
void runSVVHelAmp( int nevent, EvtGen& myGenerator );
void runSVVHelAmp2( int nevent, EvtGen& myGenerator );
void runPartWave( int nevent, EvtGen& myGenerator );
void runPartWave2( int nevent, EvtGen& myGenerator );
void runTwoBody( int nevent, EvtGen& myGenerator, std::string decfile,
std::string rootFile );
void runPiPi( int nevent, EvtGen& myGenerator );
void runA1Pi( int nevent, EvtGen& myGenerator );
void runCPTest( int nevent, EvtGen& myGenerator );
void runSemic( int nevent, EvtGen& myGenerator );
void runKstarll( int nevent, EvtGen& myGenerator );
void runKll( int nevent, EvtGen& myGenerator );
void runHll( int nevent, EvtGen& myGenerator, char* mode );
void runVectorIsr( int nevent, EvtGen& myGenerator );
void runBsquark( int nevent, EvtGen& myGenerator );
void runK3gamma( int nevent, EvtGen& myGenerator );
void runLambda( int nevent, EvtGen& myGenerator );
void runBtoXsgamma( int nevent, EvtGen& myGenerator );
void runBtoK1273gamma( int nevent, EvtGen& myGenerator );
void runCheckRotBoost();
void runMassCheck( int nevent, EvtGen& myGenerator, int partnum );
void runJpsiPolarization( int nevent, EvtGen& myGenerator );
void runDDK( int nevent, EvtGen& myGenerator );
int countInclusive( std::string name, EvtParticle* root, TH1F* mom = 0,
TH1F* mass = 0 );
int countInclusiveParent( std::string name, EvtParticle* root, EvtIdSet setIds,
TH1F* mom = 0 );
int countInclusiveSubTree( std::string name, EvtParticle* root, EvtIdSet setIds,
TH1F* mom = 0 );
void runBaryonic( int nEvent, EvtGen& myGenerator );
int main( int argc, char* argv[] )
{
// Define the random number generator
EvtRandomEngine* myRandomEngine = 0;
#ifdef EVTGEN_CPP11
// Use the Mersenne-Twister generator (C++11 only)
myRandomEngine = new EvtMTRandomEngine();
#else
myRandomEngine = new EvtSimpleRandomEngine();
#endif
if ( !TROOT::Initialized() ) {
static TROOT root( "RooTuple", "RooTuple ROOT in EvtGen" );
}
if ( argc == 1 ) {
EvtVector4R p( 0.0, 1.0, 0.0, 0.0 );
EvtVector4R k( 0.0, 0.0, 1.0, 0.0 );
EvtTensor4C T = dual( EvtGenFunctions::directProd( p, k ) );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "p:" << p << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "k:" << k << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "T=dual(directProd(p,k)):" << T << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "T03:" << T.get( 0, 3 ) << std::endl;
return 1;
}
EvtAbsRadCorr* radCorrEngine = 0;
std::list<EvtDecayBase*> extraModels;
#ifdef EVTGEN_EXTERNAL
bool convertPythiaCodes( false );
bool useEvtGenRandom( true );
EvtExternalGenList genList( convertPythiaCodes, "", "gamma", useEvtGenRandom );
radCorrEngine = genList.getPhotosModel();
extraModels = genList.getListOfModels();
#endif
EvtGen myGenerator( "../DECAY.DEC", "../evt.pdl", myRandomEngine,
radCorrEngine, &extraModels );
if ( !strcmp( argv[1], "file" ) ) {
int nevent = atoi( argv[2] );
runFile( nevent, argv[3], myGenerator );
}
if ( !strcmp( argv[1], "print" ) ) {
int nevent = atoi( argv[2] );
runPrint( nevent, argv[3], myGenerator );
}
if ( !strcmp( argv[1], "filevpho" ) ) {
int nevent = atoi( argv[2] );
runFileVpho( nevent, argv[3], myGenerator );
}
if ( !strcmp( argv[1], "test1" ) ) {
int nevent = atoi( argv[2] );
runTest1( nevent, myGenerator );
}
if ( !strcmp( argv[1], "chi1kstar" ) ) {
int nevent = atoi( argv[2] );
runChi1Kstar( nevent, myGenerator );
}
if ( !strcmp( argv[1], "test2" ) ) {
int nevent = atoi( argv[2] );
runTest2( nevent, myGenerator );
}
if ( !strcmp( argv[1], "omega" ) ) {
int nevent = atoi( argv[2] );
runOmega( nevent, myGenerator );
}
if ( !strcmp( argv[1], "alias" ) ) {
runAlias();
}
if ( !strcmp( argv[1], "repeat" ) ) {
int nevent = atoi( argv[2] );
runRepeat( nevent );
}
if ( !strcmp( argv[1], "photos" ) ) {
int nevent = atoi( argv[2] );
runPhotos( nevent, myGenerator );
}
if ( !strcmp( argv[1], "trackmult" ) ) {
int nevent = atoi( argv[2] );
runTrackMult( nevent, myGenerator );
}
if ( !strcmp( argv[1], "generic" ) ) {
int nevent = atoi( argv[2] );
std::string listfile( "" );
if ( argc == 4 )
listfile = argv[3];
runGeneric( nevent, myGenerator, listfile );
}
if ( !strcmp( argv[1], "finalstates" ) ) {
int nevent = atoi( argv[2] );
runFinalStates( nevent, myGenerator );
}
if ( !strcmp( argv[1], "kstarnunu" ) ) {
int nevent = atoi( argv[2] );
runKstarnunu( nevent, myGenerator );
}
if ( !strcmp( argv[1], "bsmix" ) ) {
int nevent = atoi( argv[2] );
runBsmix( nevent, myGenerator );
}
if ( !strcmp( argv[1], "BtoXsgamma" ) ) {
int nevent = atoi( argv[2] );
runBtoXsgamma( nevent, myGenerator );
}
if ( !strcmp( argv[1], "BtoK1273gamma" ) ) {
int nevent = atoi( argv[2] );
runBtoK1273gamma( nevent, myGenerator );
}
if ( !strcmp( argv[1], "pi0dalitz" ) ) {
int nevent = atoi( argv[2] );
runPi0Dalitz( nevent, myGenerator );
}
if ( !strcmp( argv[1], "ddalitz" ) ) {
int nevent = atoi( argv[2] );
runDDalitz( nevent, myGenerator );
}
if ( !strcmp( argv[1], "kstarll" ) ) {
int nevent = atoi( argv[2] );
runKstarll( nevent, myGenerator );
}
if ( !strcmp( argv[1], "kll" ) ) {
int nevent = atoi( argv[2] );
runKll( nevent, myGenerator );
}
if ( !strcmp( argv[1], "hll" ) ) {
int nevent = atoi( argv[2] );
runHll( nevent, myGenerator, argv[3] );
}
if ( !strcmp( argv[1], "vectorisr" ) ) {
int nevent = atoi( argv[2] );
runVectorIsr( nevent, myGenerator );
}
if ( !strcmp( argv[1], "bsquark" ) ) {
int nevent = atoi( argv[2] );
runBsquark( nevent, myGenerator );
}
if ( !strcmp( argv[1], "k3gamma" ) ) {
int nevent = atoi( argv[2] );
runK3gamma( nevent, myGenerator );
}
if ( !strcmp( argv[1], "lambda" ) ) {
int nevent = atoi( argv[2] );
runLambda( nevent, myGenerator );
}
if ( !strcmp( argv[1], "tautaupipi" ) ) {
int nevent = atoi( argv[2] );
runTauTauPiPi( nevent, myGenerator );
}
if ( !strcmp( argv[1], "tautauee" ) ) {
int nevent = atoi( argv[2] );
runTauTauEE( nevent, myGenerator );
}
if ( !strcmp( argv[1], "tautau2pi2pi" ) ) {
int nevent = atoi( argv[2] );
runTauTau2Pi2Pi( nevent, myGenerator );
}
if ( !strcmp( argv[1], "tautau3pi3pi" ) ) {
int nevent = atoi( argv[2] );
runTauTau3Pi3Pi( nevent, myGenerator );
}
if ( !strcmp( argv[1], "jpsikstar" ) ) {
int nevent = atoi( argv[2] );
int modeInt = atoi( argv[3] );
runJPsiKstar( nevent, myGenerator, modeInt );
}
if ( !strcmp( argv[1], "svvcplh" ) ) {
int nevent = atoi( argv[2] );
runSVVCPLH( nevent, myGenerator );
}
if ( !strcmp( argv[1], "svscplh" ) ) {
int nevent = atoi( argv[2] );
runSVSCPLH( nevent, myGenerator );
}
if ( !strcmp( argv[1], "ssdcp" ) ) {
int nevent = atoi( argv[2] );
runSSDCP( nevent, myGenerator );
}
if ( !strcmp( argv[1], "kstarstargamma" ) ) {
int nevent = atoi( argv[2] );
runKstarstargamma( nevent, myGenerator );
}
if ( !strcmp( argv[1], "dstarpi" ) ) {
int nevent = atoi( argv[2] );
runDSTARPI( nevent, myGenerator );
}
if ( !strcmp( argv[1], "etacphiphi" ) ) {
int nevent = atoi( argv[2] );
runETACPHIPHI( nevent, myGenerator );
}
if ( !strcmp( argv[1], "vvpipi" ) ) {
int nevent = atoi( argv[2] );
runVVPiPi( nevent, myGenerator );
}
if ( !strcmp( argv[1], "svvhelamp" ) ) {
int nevent = atoi( argv[2] );
runSVVHelAmp( nevent, myGenerator );
}
if ( !strcmp( argv[1], "partwave" ) ) {
int nevent = atoi( argv[2] );
runPartWave( nevent, myGenerator );
}
if ( !strcmp( argv[1], "partwave2" ) ) {
int nevent = atoi( argv[2] );
runPartWave2( nevent, myGenerator );
}
if ( !strcmp( argv[1], "twobody" ) ) {
int nevent = atoi( argv[2] );
runTwoBody( nevent, myGenerator, argv[3], argv[4] );
}
if ( !strcmp( argv[1], "pipipi" ) ) {
int nevent = atoi( argv[2] );
runPiPiPi( nevent, myGenerator );
}
if ( !strcmp( argv[1], "bhadronic" ) ) {
int nevent = atoi( argv[2] );
runBHadronic( nevent, myGenerator );
}
if ( !strcmp( argv[1], "singleb" ) ) {
int nevent = atoi( argv[2] );
runSingleB( nevent, myGenerator );
}
if ( !strcmp( argv[1], "pipi" ) ) {
int nevent = atoi( argv[2] );
runPiPi( nevent, myGenerator );
}
if ( !strcmp( argv[1], "pipipipi" ) ) {
int nevent = atoi( argv[2] );
runPiPiPiPi( nevent, myGenerator );
}
if ( !strcmp( argv[1], "a2pi" ) ) {
int nevent = atoi( argv[2] );
runA2Pi( nevent, myGenerator );
}
if ( !strcmp( argv[1], "helamp" ) ) {
int nevent = atoi( argv[2] );
runHelAmp( nevent, myGenerator, argv[3], argv[4] );
}
if ( !strcmp( argv[1], "helamp2" ) ) {
int nevent = atoi( argv[2] );
runHelAmp2( nevent, myGenerator );
}
if ( !strcmp( argv[1], "d2pi" ) ) {
int nevent = atoi( argv[2] );
runD2Pi( nevent, myGenerator );
}
if ( !strcmp( argv[1], "a1pi" ) ) {
int nevent = atoi( argv[2] );
runA1Pi( nevent, myGenerator );
}
if ( !strcmp( argv[1], "cptest" ) ) {
int nevent = atoi( argv[2] );
runCPTest( nevent, myGenerator );
}
if ( !strcmp( argv[1], "pipicpt" ) ) {
int nevent = atoi( argv[2] );
runPiPiCPT( nevent, myGenerator );
}
if ( !strcmp( argv[1], "jpsiks" ) ) {
int nevent = atoi( argv[2] );
runJpsiKs( nevent, myGenerator );
}
if ( !strcmp( argv[1], "dump" ) ) {
int nevent = atoi( argv[2] );
runDump( nevent, myGenerator );
}
if ( !strcmp( argv[1], "genericcont" ) ) {
int nevent = atoi( argv[2] );
runGenericCont( nevent, myGenerator );
}
if ( !strcmp( argv[1], "d1" ) ) {
int nevent = atoi( argv[2] );
runD1( nevent, myGenerator );
}
if ( !strcmp( argv[1], "mix" ) ) {
int nevent = atoi( argv[2] );
runMix( nevent, myGenerator );
}
if ( !strcmp( argv[1], "bmix" ) ) {
int nevent = atoi( argv[2] );
runBMix( nevent, myGenerator, argv[3], argv[4] );
}
if ( !strcmp( argv[1], "semic" ) ) {
int nevent = atoi( argv[2] );
runSemic( nevent, myGenerator );
}
if ( !strcmp( argv[1], "ddk" ) ) {
int nevent = atoi( argv[2] );
runDDK( nevent, myGenerator );
}
if ( !strcmp( argv[1], "checkmass" ) ) {
int nevent = atoi( argv[2] );
int partnum = atoi( argv[3] );
runMassCheck( nevent, myGenerator, partnum );
}
if ( !strcmp( argv[1], "jpsipolarization" ) ) {
int nevent = atoi( argv[2] );
runJpsiPolarization( nevent, myGenerator );
}
//*******************************************************
//test of the rotations and boosts performed in EvtGen.
// Added by Lange and Ryd Jan 5,2000.
//*******************************************************
if ( !strcmp( argv[1], "checkrotboost" ) ) {
runCheckRotBoost();
}
if ( !strcmp( argv[1], "baryonic" ) ) {
runBaryonic( atoi( argv[2] ), myGenerator );
}
delete myRandomEngine;
return 0;
}
void runFile( int nevent, char* fname, EvtGen& myGenerator )
{
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
int count;
char udecay_name[100];
strcpy( udecay_name, fname );
myGenerator.readUDecay( udecay_name );
count = 1;
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
root_part->deleteTree();
} while ( count++ < nevent );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runPrint( int nevent, char* fname, EvtGen& myGenerator )
{
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
int count;
char udecay_name[100];
strcpy( udecay_name, fname );
myGenerator.readUDecay( udecay_name );
count = 1;
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
root_part->printTree();
root_part->deleteTree();
} while ( count++ < nevent );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runFileVpho( int nevent, char* fname, EvtGen& myGenerator )
{
static EvtId VPHO = EvtPDL::getId( std::string( "vpho" ) );
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
int count;
char udecay_name[100];
strcpy( udecay_name, fname );
myGenerator.readUDecay( udecay_name );
count = 1;
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( VPHO,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
root_part->deleteTree();
} while ( count++ < nevent );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
///////////////
void runJpsiPolarization( int nevent, EvtGen& myGenerator )
{
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId JPSI = EvtPDL::getId( std::string( "J/psi" ) );
int count;
myGenerator.readUDecay( "exampleFiles/GENERIC.DEC" );
myGenerator.readUDecay( "exampleFiles/JPSITOLL.DEC" );
TFile* file = new TFile( "jpsipolar.root", "RECREATE" );
TH1F* coshel = new TH1F( "h1", "cos hel", 50, -1.0, 1.0 );
TH1F* coshelHigh = new TH1F( "h2", "cos hel pstar gt 1.1", 50, -1.0, 1.0 );
TH1F* coshelLow = new TH1F( "h3", "cos hel pstar lt 1.1", 50, -1.0, 1.0 );
count = 1;
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle* p = root_part;
do {
if ( p->getId() == JPSI ) {
EvtVector4R p4psi = p->getP4Lab();
EvtVector4R p4Daug = p->getDaug( 0 )->getP4Lab();
double dcostheta = EvtDecayAngle( p_init, p4psi, p4Daug );
coshel->Fill( dcostheta );
if ( p4psi.d3mag() > 1.1 ) {
coshelHigh->Fill( dcostheta );
} else {
coshelLow->Fill( dcostheta );
}
}
p = p->nextIter( root_part );
} while ( p != 0 );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runMassCheck( int nevent, EvtGen& /*myGenerator*/, int partnum )
{
int count;
static EvtId myPart = EvtPDL::evtIdFromStdHep( partnum );
TFile* file = new TFile( "checkmass.root", "RECREATE" );
TH1F* mass = new TH1F( "h1", "Mass", 500, 0.0, 2.5 );
count = 1;
do {
mass->Fill( EvtPDL::getMass( myPart ) );
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runPi0Dalitz( int nevent, EvtGen& myGenerator )
{
static EvtId PI0 = EvtPDL::getId( std::string( "pi0" ) );
TFile* file = new TFile( "pi0dalitz.root", "RECREATE" );
TH1F* q2 = new TH1F( "h1", "q2", 50, 0.0, 0.02 );
int count;
myGenerator.readUDecay( "exampleFiles/PI0DALITZ.DEC" );
count = 1;
do {
EvtVector4R p_init( EvtPDL::getMass( PI0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( PI0,
p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
EvtVector4R ep = root_part->getDaug( 0 )->getP4Lab();
EvtVector4R em = root_part->getDaug( 1 )->getP4Lab();
//EvtVector4R gamma=root_part->getDaug(2)->getP4Lab();
q2->Fill( ( ep + em ).mass2() );
// EvtGenReport(EVTGEN_INFO,"EvtGen") << ep << em << gamma <<std::endl;
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
//*******************************************************************************
void runTest1( int nevent, EvtGen& myGenerator )
{
// TFile *file=new TFile("test1.root", "RECREATE");
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
// int first=0;
// char **second;
// TApplication *theApp = new TApplication("App", &first, second);
TFile* file = new TFile( "test1.root", "RECREATE", "Example" );
TH1F* costhetaB = new TH1F( "hcosthetaB", "costhetaB", 50, -1.0, 1.0 );
TH1F* phiB = new TH1F( "hphiB", "phiB", 50, -EvtConst::pi, EvtConst::pi );
TH1F* Elep = new TH1F( "hEl", "E?l!", 50, 0.0, 2.5 );
TH1F* q2 = new TH1F( "hq2", "q^2!", 44, 0.0, 11.0 );
TH1F* ctv = new TH1F( "hctv", "ctv", 50, -1.0, 1.0 );
TH1F* chi_low_ctv = new TH1F( "hcostv1", "[h] for cos[Q]?V!\"L#0", 50, 0.0,
EvtConst::twoPi );
TH1F* chi_high_ctv = new TH1F( "hcostv2", "[h] for cos[Q]?V!\"G#0", 50, 0.0,
EvtConst::twoPi );
TH1F* dt = new TH1F( "hdt", "dt", 50, -5.0, 5.0 );
int count;
EvtVector4R p4b0, p4b0b, p4dstar, p4e, p4nu, p4d, p4pi, p4pip, p4pim;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/TEST1.DEC" );
// EvtGen myGenerator(decay_name,pdttable_name,myRandomEngine);
myGenerator.readUDecay( udecay_name );
double costhetaV;
count = 1;
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
p4b0 = root_part->getDaug( 0 )->getP4Lab();
p4b0b = root_part->getDaug( 1 )->getP4Lab();
p4dstar = root_part->getDaug( 0 )->getDaug( 0 )->getP4Lab();
p4e = root_part->getDaug( 0 )->getDaug( 1 )->getP4Lab();
p4nu = root_part->getDaug( 0 )->getDaug( 2 )->getP4Lab();
p4d = root_part->getDaug( 0 )->getDaug( 0 )->getDaug( 0 )->getP4Lab();
p4pi = root_part->getDaug( 0 )->getDaug( 0 )->getDaug( 1 )->getP4Lab();
p4pip = root_part->getDaug( 1 )->getDaug( 0 )->getP4Lab();
p4pim = root_part->getDaug( 1 )->getDaug( 1 )->getP4Lab();
costhetaB->Fill( p4b0.get( 3 ) / p4b0.d3mag() );
phiB->Fill( atan2( p4b0.get( 1 ), p4b0.get( 2 ) ) );
Elep->Fill( p4b0 * p4e / p4b0.mass() );
q2->Fill( ( p4e + p4nu ).mass2() );
dt->Fill( root_part->getDaug( 1 )->getLifetime() -
root_part->getDaug( 0 )->getLifetime() );
costhetaV = EvtDecayAngle( p4b0, p4d + p4pi, p4d );
ctv->Fill( costhetaV );
if ( costhetaV < 0.0 ) {
chi_low_ctv->Fill( EvtDecayAngleChi( p4b0, p4d, p4pi, p4e, p4nu ) );
} else {
chi_high_ctv->Fill( EvtDecayAngleChi( p4b0, p4d, p4pi, p4e, p4nu ) );
}
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
// delete theApp;
// hfile.write();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
//*******************************************************************************
void runDDK( int nevent, EvtGen& myGenerator )
{
// TFile *file=new TFile("test1.root", "RECREATE");
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
int count;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/GENERIC.DEC" );
myGenerator.readUDecay( udecay_name );
count = 1;
static EvtId kp = EvtPDL::getId( std::string( "K+" ) );
static EvtId km = EvtPDL::getId( std::string( "K-" ) );
static EvtId ks = EvtPDL::getId( std::string( "K_S0" ) );
static EvtId kl = EvtPDL::getId( std::string( "K_L0" ) );
static EvtId k0 = EvtPDL::getId( std::string( "K0" ) );
static EvtId kb = EvtPDL::getId( std::string( "anti-K0" ) );
static EvtId d0 = EvtPDL::getId( std::string( "D0" ) );
static EvtId dp = EvtPDL::getId( std::string( "D+" ) );
static EvtId dm = EvtPDL::getId( std::string( "D-" ) );
static EvtId db = EvtPDL::getId( std::string( "anti-D0" ) );
static EvtIdSet theKs( kp, km, ks, kl, k0, kb );
static EvtIdSet theDs( d0, dp, dm, db );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
static EvtId B0B = EvtPDL::getId( std::string( "anti-B0" ) );
static EvtId BP = EvtPDL::getId( std::string( "B+" ) );
static EvtId BM = EvtPDL::getId( std::string( "B-" ) );
static EvtIdSet theBs( B0B, B0, BP, BM );
int nDDK = 0;
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle* theB01 = root_part->getDaug( 0 );
EvtParticle* theB02 = root_part->getDaug( 1 );
int nD = 0;
int nK = 0;
EvtParticle* p = theB01;
do {
EvtId type = p->getId();
EvtId typePar = p->getParent()->getId();
if ( theDs.contains( type ) )
nD++;
if ( theKs.contains( type ) && theBs.contains( typePar ) )
nK++;
p = p->nextIter( theB01 );
} while ( p != 0 );
if ( nD == 2 && nK == 1 )
nDDK++;
nD = 0;
nK = 0;
p = theB02;
do {
EvtId type = p->getId();
EvtId typePar = p->getParent()->getId();
if ( theDs.contains( type ) )
nD++;
if ( theKs.contains( type ) && theBs.contains( typePar ) )
nK++;
p = p->nextIter( theB02 );
} while ( p != 0 );
if ( nD == 2 && nK == 1 )
nDDK++;
root_part->deleteTree();
} while ( count++ < nevent );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< nDDK << " " << ( count - 1 ) << " "
<< nDDK / float( 2 * ( count - 1 ) ) << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
//*******************************************************************************
void runTest2( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "test2.root", "RECREATE" );
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
TH1F* costhetaB = new TH1F( "h1", "cos[Q]?B!", 50, -1.0, 1.0 );
TH1F* phiB = new TH1F( "h2", "[f]?B!", 50, -EvtConst::pi, EvtConst::pi );
TH1F* dt = new TH1F( "h3", "[D]t", 100, -5.0, 5.0 );
TH1F* costhetaJpsi = new TH1F( "h4", "cos[Q]?J/[y]!", 50, -1.0, 1.0 );
TH1F* costhetaKstar = new TH1F( "h5", "cos[Q]?K*!", 50, -1.0, 1.0 );
TH1F* chi = new TH1F( "h6", "[h]", 50, 0.0, EvtConst::twoPi );
TH1F* chi1 = new TH1F( "h26", "[h] [D]t\"L#0", 50, 0.0, EvtConst::twoPi );
TH1F* chi2 = new TH1F( "h27", "[h] [D]t\"G#0", 50, 0.0, EvtConst::twoPi );
TH1F* costhetaomega = new TH1F( "h7", "costhetaomega", 50, -1.0, 1.0 );
TH1F* costhetaomega1 = new TH1F( "h20", "costhetaomega1", 50, -1.0, 1.0 );
TH1F* costhetaomega2 = new TH1F( "h21", "costhetaomega2", 50, -1.0, 1.0 );
TH1F* costhetaomega3 = new TH1F( "h22", "costhetaomega3", 50, -1.0, 1.0 );
TH1F* omegaamp = new TH1F( "h8", "omegaamp", 50, 0.0, 0.05 );
TH1F* omegaamp1 = new TH1F( "h9", "omegaamp1", 50, 0.0, 0.05 );
TH1F* omegaamp2 = new TH1F( "h10", "omegaamp2", 50, 0.0, 0.05 );
TH1F* omegaamp3 = new TH1F( "h11", "omegaamp3", 50, 0.0, 0.05 );
TH2F* chi1vscoskstarl = new TH2F( "h30", "[h] vs. cos[Q]?J/[y]! [D]t\"L#0",
20, 0.0, EvtConst::twoPi, 20, -1.0, 1.0 );
TH2F* chi1vscoskstarg = new TH2F( "h31", "[h] vs. cos[Q]?J/[y]! [D]t\"G#0",
20, 0.0, EvtConst::twoPi, 20, -1.0, 1.0 );
int count = 1;
EvtVector4R p4_b0, p4_b0b, p4_psi, p4_kstar, p4_mup, p4_mum;
EvtVector4R p4_kz, p4_pi0, p4_pi1, p4_pi2, p4_pi3, p4_omega;
EvtVector4R p4_pi1_omega, p4_pi2_omega, p4_pi3_omega;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/TEST2.DEC" );
//EvtGen myGenerator(decay_name,pdttable_name,myRandomEngine);
myGenerator.readUDecay( udecay_name );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
p4_b0 = root_part->getDaug( 0 )->getP4Lab();
p4_b0b = root_part->getDaug( 1 )->getP4Lab();
p4_psi = root_part->getDaug( 1 )->getDaug( 0 )->getP4Lab();
p4_kstar = root_part->getDaug( 1 )->getDaug( 1 )->getP4Lab();
p4_mup = root_part->getDaug( 1 )->getDaug( 0 )->getDaug( 0 )->getP4Lab();
p4_mum = root_part->getDaug( 1 )->getDaug( 0 )->getDaug( 1 )->getP4Lab();
p4_kz = root_part->getDaug( 1 )->getDaug( 1 )->getDaug( 0 )->getP4Lab();
p4_pi0 = root_part->getDaug( 1 )->getDaug( 1 )->getDaug( 1 )->getP4Lab();
p4_omega = root_part->getDaug( 0 )->getDaug( 0 )->getP4Lab();
p4_pi1 = root_part->getDaug( 0 )->getDaug( 0 )->getDaug( 0 )->getP4Lab();
p4_pi2 = root_part->getDaug( 0 )->getDaug( 0 )->getDaug( 1 )->getP4Lab();
p4_pi3 = root_part->getDaug( 0 )->getDaug( 0 )->getDaug( 2 )->getP4Lab();
//get momentum in the omega restframe
p4_pi1_omega =
root_part->getDaug( 0 )->getDaug( 0 )->getDaug( 0 )->getP4();
p4_pi2_omega =
root_part->getDaug( 0 )->getDaug( 0 )->getDaug( 1 )->getP4();
p4_pi3_omega =
root_part->getDaug( 0 )->getDaug( 0 )->getDaug( 2 )->getP4();
EvtVector3R p3_perp =
cross( EvtVector3R( p4_pi2_omega.get( 0 ), p4_pi2_omega.get( 1 ),
p4_pi2_omega.get( 2 ) ),
EvtVector3R( p4_pi3_omega.get( 0 ), p4_pi3_omega.get( 1 ),
p4_pi3_omega.get( 2 ) ) );
EvtVector4R p4_perp( p3_perp.d3mag(), p3_perp.get( 0 ),
p3_perp.get( 1 ), p3_perp.get( 2 ) );
root_part->getDaug( 0 )->getDaug( 0 )->getDaug( 0 )->setP4( p4_perp );
p4_perp = root_part->getDaug( 0 )->getDaug( 0 )->getDaug( 0 )->getP4Lab();
EvtVector4R p4_perpprime = p4_omega - p4_perp;
double d_omegaamp = EvtVector3R( p4_pi1_omega.get( 0 ),
p4_pi1_omega.get( 1 ),
p4_pi1_omega.get( 2 ) ) *
p3_perp;
d_omegaamp *= d_omegaamp;
d_omegaamp *= 20.0;
double d_dt = root_part->getDaug( 1 )->getLifetime() -
root_part->getDaug( 0 )->getLifetime();
double d_costhetaJpsi = EvtDecayAngle( p4_b0b, p4_mup + p4_mum, p4_mup );
double d_costhetaKstar = EvtDecayAngle( p4_b0b, p4_pi0 + p4_kz, p4_pi0 );
double d_chi = EvtDecayAngleChi( p4_b0b, p4_pi0, p4_kz, p4_mup, p4_mum );
costhetaB->Fill( p4_b0.get( 3 ) / p4_b0.d3mag() );
phiB->Fill( atan2( p4_b0.get( 1 ), p4_b0.get( 2 ) ) );
dt->Fill( d_dt );
costhetaJpsi->Fill( d_costhetaJpsi );
costhetaKstar->Fill( d_costhetaKstar );
chi->Fill( d_chi );
if ( d_dt < 0.0 ) {
chi1->Fill( d_chi );
chi1vscoskstarl->Fill( d_chi, d_costhetaJpsi, 1.0 );
}
if ( d_dt > 0.0 ) {
chi2->Fill( d_chi );
chi1vscoskstarg->Fill( d_chi, d_costhetaJpsi, 1.0 );
}
double d_costhetaomega = EvtDecayAngle( p4_b0b, p4_perp + p4_perpprime,
p4_perp );
costhetaomega->Fill( d_costhetaomega );
if ( d_omegaamp < 0.001 )
costhetaomega1->Fill( d_costhetaomega );
if ( d_omegaamp > 0.02 )
costhetaomega2->Fill( d_costhetaomega );
if ( std::fabs( d_omegaamp - 0.015 ) < 0.005 )
costhetaomega3->Fill( d_costhetaomega );
omegaamp->Fill( d_omegaamp );
if ( d_costhetaomega < -0.5 )
omegaamp1->Fill( d_omegaamp );
if ( d_costhetaomega > 0.5 )
omegaamp2->Fill( d_omegaamp );
if ( std::fabs( d_costhetaomega ) < 0.5 )
omegaamp3->Fill( d_omegaamp );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runOmega( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "omega.root", "RECREATE" );
static EvtId OMEGA = EvtPDL::getId( std::string( "omega" ) );
TH2F* dalitz = new TH2F( "h1", "E1 vs E2", 50, 0.0, 0.5, 50, 0.0, 0.5 );
int count = 1;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/OMEGA.DEC" );
myGenerator.readUDecay( udecay_name );
do {
EvtVector4R p_init( EvtPDL::getMeanMass( OMEGA ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( OMEGA,
p_init );
//root_part->setDiagonalSpinDensity();
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
dalitz->Fill( root_part->getDaug( 0 )->getP4().get( 0 ),
root_part->getDaug( 1 )->getP4().get( 0 ), 1.0 );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runChi1Kstar( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "chi1kstar.root", "RECREATE" );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
TH1F* costhetaChi1 = new TH1F( "h1", "cos[Q]?J/[x]!", 50, -1.0, 1.0 );
TH1F* costhetaKstar = new TH1F( "h2", "cos[Q]?K*!", 50, -1.0, 1.0 );
TH1F* chi = new TH1F( "h3", "[x]", 50, -EvtConst::pi, EvtConst::pi );
int count = 1;
EvtVector4R p4_b, p4_chi, p4_kstar, p4_gamma, p4_psi, p4_k, p4_p;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/CHI1KSTAR.DEC" );
myGenerator.readUDecay( udecay_name );
do {
EvtVector4R p_init( EvtPDL::getMass( B0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( B0, p_init );
myGenerator.generateDecay( root_part );
p4_b = root_part->getP4Lab();
p4_chi = root_part->getDaug( 0 )->getP4Lab();
p4_kstar = root_part->getDaug( 1 )->getP4Lab();
p4_psi = root_part->getDaug( 0 )->getDaug( 0 )->getP4Lab();
p4_gamma = root_part->getDaug( 0 )->getDaug( 1 )->getP4Lab();
p4_k = root_part->getDaug( 1 )->getDaug( 0 )->getP4Lab();
p4_p = root_part->getDaug( 1 )->getDaug( 1 )->getP4Lab();
double d_costhetaChi1 = EvtDecayAngle( p4_b, p4_chi, p4_psi );
double d_costhetaKstar = EvtDecayAngle( p4_b, p4_kstar, p4_k );
double d_chi = EvtDecayAngleChi( p4_b, p4_k, p4_p, p4_psi, p4_gamma );
if ( d_chi > EvtConst::pi )
d_chi -= EvtConst::twoPi;
costhetaChi1->Fill( d_costhetaChi1 );
costhetaKstar->Fill( d_costhetaKstar );
chi->Fill( d_chi );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runAlias()
{
EvtId idpip = EvtPDL::getId( std::string( "pi+" ) );
EvtPDL::alias( idpip, std::string( "my_pi+" ) );
EvtId myidpip = EvtPDL::getId( std::string( "my_pi+" ) );
EvtId idpim = EvtPDL::getId( std::string( "pi-" ) );
EvtPDL::alias( idpim, std::string( "my_pi-" ) );
EvtId myidpim = EvtPDL::getId( std::string( "my_pi-" ) );
EvtId idpi0 = EvtPDL::getId( std::string( "pi0" ) );
EvtPDL::alias( idpi0, std::string( "my_pi0" ) );
EvtId myidpi0 = EvtPDL::getId( std::string( "my_pi0" ) );
EvtPDL::aliasChgConj( myidpip, myidpim );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Id pi+:" << idpip << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Id pi-:" << idpim << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Id pi0:" << idpi0 << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Id my_pi+:" << myidpip << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Id my_pi-:" << myidpim << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Id my_pi0:" << myidpi0 << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Chg conj pi+:" << EvtPDL::chargeConj( idpip ) << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Chg conj pi-:" << EvtPDL::chargeConj( idpim ) << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Chg conj pi0:" << EvtPDL::chargeConj( idpi0 ) << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Chg conj my_pi+:" << EvtPDL::chargeConj( myidpip ) << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Chg conj my_pi-:" << EvtPDL::chargeConj( myidpim ) << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Chg conj my_pi0:" << EvtPDL::chargeConj( myidpi0 ) << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runRepeat( int nevent )
{
int i;
for ( i = 0; i < nevent; i++ ) {
EvtDecayTable::getInstance()->readDecayFile(
std::string( "../DECAY.DEC" ) );
}
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runPhotos( int nevent, EvtGen& myGenerator )
{
static EvtId PSI = EvtPDL::getId( std::string( "J/psi" ) );
TFile* file = new TFile( "photos.root", "RECREATE" );
TH1F* mee = new TH1F( "h1", "mee", 60, 3.0, 3.12 );
int count = 1;
EvtVector4R e1, e2;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/PHOTOS.DEC" );
//EvtGen myGenerator(decay_name,pdttable_name,myRandomEngine);
myGenerator.readUDecay( udecay_name );
do {
EvtVector4R p_init( EvtPDL::getMass( PSI ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( PSI,
p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
e1 = root_part->getDaug( 0 )->getP4Lab();
e2 = root_part->getDaug( 1 )->getP4Lab();
mee->Fill( ( e1 + e2 ).mass() );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runFinalStates( int nevent, EvtGen& myGenerator )
{
//Parse the table of particles to find..
EvtParser parser;
parser.read( std::string( "exampleFiles/finalstates.list" ) );
std::vector<std::string> dList[20];
int dListNum[20];
std::vector<std::string>* dListItem = 0;
std::string dListName[20];
int ik, lk;
std::string tk = "";
int tline = -1;
std::string parent;
for ( ik = 0; ik < parser.getNToken(); ik++ ) {
lk = tline;
tline = parser.getLineofToken( ik );
tk = parser.getToken( ik );
if ( lk != tline && tline > 2 ) {
if ( tline > 1 ) {
dList[tline - 3] = *dListItem;
dListItem = new std::vector<std::string>;
dListNum[tline - 3] = 0;
dListName[tline - 2] = parser.getToken( ik );
}
} else {
if ( tline == 1 ) {
//This is the parent particle name
parent = parser.getToken( ik );
dListItem = new std::vector<std::string>;
} else {
//This is one of the daughters
if ( tline != 2 || ( lk == tline ) ) {
dListItem->push_back( parser.getToken( ik ) );
}
if ( tline == 2 && ( lk != tline ) ) {
dListName[tline - 2] = parser.getToken( ik );
}
}
}
}
dList[tline - 2] = *dListItem;
dListNum[tline - 2] = 0;
static EvtId parId = EvtPDL::getId( parent );
int count = 0;
do {
if ( count == 1000 * ( count / 1000 ) ) {
//if (count==1*(count/1)) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Event:" << count << std::endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << HepRandom::getTheSeed()<<std::endl;
}
EvtVector4R p_init( EvtPDL::getMass( parId ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( parId,
p_init );
if ( parent == "Upsilon(4S)" ) {
root_part->setVectorSpinDensity();
} else {
root_part->setDiagonalSpinDensity();
}
myGenerator.generateDecay( root_part );
EvtParticle* p = root_part;
std::vector<std::string> fs = findFinalState( p );
int j;
for ( j = 0; j < ( tline - 1 ); j++ ) {
std::vector<std::string> temp = dList[j];
if ( temp.size() == fs.size() ) {
bool foundIt = true;
unsigned int k, l;
std::vector<bool> alreadyUsed( temp.size() );
for ( k = 0; k < temp.size(); k++ ) {
bool foundThisOne = false;
for ( l = 0; l < temp.size(); l++ ) {
if ( k == 0 )
alreadyUsed[l] = false;
if ( foundThisOne || alreadyUsed[l] )
continue;
if ( temp[k] == fs[l] ) {
alreadyUsed[l] = true;
foundThisOne = true;
// EvtGenReport(EVTGEN_INFO,"EvtGen") << "found daughter " << k << " " << l << std::endl;
}
}
if ( !foundThisOne )
foundIt = false;
}
if ( foundIt ) { //EvtGenReport(EVTGEN_INFO,"EvtGen") << "found a cand \n"; (histo1[j])->Fill(0.5);
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "found one " << j << std::endl;
dListNum[j]++;
}
}
}
root_part->deleteTree();
count++;
} while ( count < nevent );
int j;
for ( j = 0; j < ( tline - 1 ); j++ )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< dListName[j].c_str() << " " << j << " " << dListNum[j] << " "
<< count << " " << ( dListNum[j] / ( 1.0 * count ) ) << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
std::vector<std::string> findFinalState( EvtParticle* tree )
{
EvtParticle* p = tree;
std::vector<std::string> fs;
static EvtId ep = EvtPDL::getId( std::string( "e+" ) );
static EvtId em = EvtPDL::getId( std::string( "e-" ) );
static EvtId kp = EvtPDL::getId( std::string( "K+" ) );
static EvtId km = EvtPDL::getId( std::string( "K-" ) );
static EvtId mup = EvtPDL::getId( std::string( "mu+" ) );
static EvtId mum = EvtPDL::getId( std::string( "mu-" ) );
static EvtId pip = EvtPDL::getId( std::string( "pi+" ) );
static EvtId pim = EvtPDL::getId( std::string( "pi-" ) );
static EvtId pi0 = EvtPDL::getId( std::string( "pi0" ) );
static EvtId pr = EvtPDL::getId( std::string( "p+" ) );
static EvtId apr = EvtPDL::getId( std::string( "anti-p-" ) );
static EvtId ne = EvtPDL::getId( std::string( "n0" ) );
static EvtId ane = EvtPDL::getId( std::string( "anti-n0" ) );
do {
EvtId type = p->getId();
if ( type == ep )
fs.push_back( std::string( "e+" ) );
if ( type == em )
fs.push_back( std::string( "e-" ) );
if ( type == mup )
fs.push_back( std::string( "mu+" ) );
if ( type == mum )
fs.push_back( std::string( "mu-" ) );
if ( type == kp )
fs.push_back( std::string( "K+" ) );
if ( type == km )
fs.push_back( std::string( "K-" ) );
if ( type == pip )
fs.push_back( std::string( "pi+" ) );
if ( type == pim )
fs.push_back( std::string( "pi-" ) );
if ( type == pi0 )
fs.push_back( std::string( "pi0" ) );
if ( type == pr )
fs.push_back( std::string( "p+" ) );
if ( type == apr )
fs.push_back( std::string( "anti-p-" ) );
if ( type == ne )
fs.push_back( std::string( "n0" ) );
if ( type == ane )
fs.push_back( std::string( "anti-n0" ) );
p = p->nextIter();
} while ( p != 0 );
return fs;
}
void runTrackMult( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "trackmult.root", "RECREATE" );
TH1F* trackAll = new TH1F( "trackAll", "trackAll", 12, 1.0, 25.0 );
TH1F* trackNoSL = new TH1F( "trackNoSL", "trackNoSL", 12, 1.0, 25.0 );
TH1F* track1SL = new TH1F( "track1SL", "track1SL", 12, 1.0, 25.0 );
TH1F* track2SL = new TH1F( "track2SL", "track2SL", 12, 1.0, 25.0 );
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
static EvtId B0B = EvtPDL::getId( std::string( "anti-B0" ) );
static EvtId BP = EvtPDL::getId( std::string( "B+" ) );
static EvtId BM = EvtPDL::getId( std::string( "B-" ) );
//look for these tracks in generic events
static EvtId ep = EvtPDL::getId( std::string( "e+" ) );
static EvtId em = EvtPDL::getId( std::string( "e-" ) );
static EvtId mup = EvtPDL::getId( std::string( "mu+" ) );
static EvtId mum = EvtPDL::getId( std::string( "mu-" ) );
static EvtId pip = EvtPDL::getId( std::string( "pi+" ) );
static EvtId pim = EvtPDL::getId( std::string( "pi-" ) );
static EvtId kp = EvtPDL::getId( std::string( "K+" ) );
static EvtId km = EvtPDL::getId( std::string( "K-" ) );
static EvtId pp = EvtPDL::getId( std::string( "p+" ) );
static EvtId pm = EvtPDL::getId( std::string( "anti-p-" ) );
static EvtIdSet theTracks( ep, em, mup, mum, pip, pim, kp, km, pp, pm );
static EvtIdSet theLeptons( ep, em, mup, mum );
static EvtIdSet theBs( B0, B0B, BP, BM );
int count = 1;
EvtParticle* p;
myGenerator.readUDecay( "exampleFiles/GENERIC.DEC" );
int totTracks = 0;
int totTracksNoSL = 0;
int totTracks1SL = 0;
int totTracks2SL = 0;
int totNoSL = 0;
int tot1SL = 0;
int tot2SL = 0;
do {
int evTracks = 0;
if ( count == 1000 * ( count / 1000 ) ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << count << std::endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << HepRandom::getTheSeed()<<std::endl;
}
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
p = root_part;
int howManySL = 0;
do {
if ( theTracks.contains( p->getId() ) ) {
totTracks += 1;
evTracks += 1;
}
if ( theLeptons.contains( p->getId() ) ) {
if ( p->getParent() ) {
if ( theBs.contains( p->getParent()->getId() ) )
howManySL += 1;
}
}
p = p->nextIter( root_part );
} while ( p != 0 );
//Now need to figure out which histogram to book
trackAll->Fill( evTracks );
if ( howManySL == 0 ) {
trackNoSL->Fill( evTracks );
totNoSL += 1;
totTracksNoSL += evTracks;
}
if ( howManySL == 1 ) {
track1SL->Fill( evTracks );
tot1SL += 1;
totTracks1SL += evTracks;
}
if ( howManySL == 2 ) {
track2SL->Fill( evTracks );
tot2SL += 1;
totTracks2SL += evTracks;
}
root_part->deleteTree();
} while ( count++ < nevent );
double aveMulti = float( totTracks ) / float( nevent );
double aveMultiNoSL = float( totTracksNoSL ) / float( totNoSL );
double aveMulti1SL = float( totTracks1SL ) / float( tot1SL );
double aveMulti2SL = float( totTracks2SL ) / float( tot2SL );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Your average multiplicity=" << aveMulti << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Your average multiplicity for no B->semileptonic events="
<< aveMultiNoSL << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Your average multiplicity for 1 B->semileptonic events="
<< aveMulti1SL << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Your average multiplicity for 2 B->semileptonic events="
<< aveMulti2SL << std::endl;
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runGeneric( int neventOrig, EvtGen& myGenerator, std::string listfile )
{
int nevent = abs( neventOrig );
//Parse the table of particles to find..
TFile* file = new TFile( "generic.root", "RECREATE" );
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId VPHO = EvtPDL::getId( std::string( "vpho" ) );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
static EvtId B0B = EvtPDL::getId( std::string( "anti-B0" ) );
static EvtId BP = EvtPDL::getId( std::string( "B+" ) );
static EvtId BM = EvtPDL::getId( std::string( "B-" ) );
static EvtIdSet theBs( B0B, B0, BP, BM );
static EvtIdSet theB0B( B0B );
static EvtIdSet theB0( B0 );
static EvtIdSet theBP( BP );
static EvtIdSet theBM( BM );
static EvtId D0 = EvtPDL::getId( std::string( "D0" ) );
static EvtId D0B = EvtPDL::getId( std::string( "anti-D0" ) );
static EvtId DP = EvtPDL::getId( std::string( "D+" ) );
static EvtId DM = EvtPDL::getId( std::string( "D-" ) );
static EvtIdSet theDs( D0B, D0, DP, DM );
static EvtIdSet theD0B( D0B );
static EvtIdSet theD0( D0 );
static EvtIdSet theDP( DP );
static EvtIdSet theDM( DM );
int count;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/GENERIC.DEC" );
myGenerator.readUDecay( udecay_name );
if ( listfile != "" ) {
EvtParser parser;
if ( parser.read( listfile ) != 0 ) {
EvtGenReport( EVTGEN_ERROR, "EvtGen" )
<< "Will terminate." << std::endl;
exit( -1 );
}
std::vector<TH1F*> histo1( parser.getNToken() );
std::vector<TH1F*> histo2( parser.getNToken() );
std::vector<TH1F*> massHisto( parser.getNToken() );
int ik;
std::string tk, tkname;
for ( ik = 0; ik < ( parser.getNToken() / 2 ); ik++ ) {
tk = parser.getToken( 2 * ik );
tkname = parser.getToken( 1 + 2 * ik );
histo1[ik] = new TH1F( tkname.c_str(), tkname.c_str(), 30, 0.0, 3.0 );
char* directName;
directName = new char[( strlen( tkname.c_str() ) + 8 )];
directName = strcpy( directName, tkname.c_str() );
directName = strcat( directName, "Direct" );
histo2[ik] = new TH1F( directName, directName, 30, 0.0, 3.0 );
delete directName;
char* massName;
massName = new char[( strlen( tkname.c_str() ) + 4 )];
massName = strcpy( massName, tkname.c_str() );
massName = strcat( massName, "Mass" );
massHisto[ik] = new TH1F( massName, massName, 3000, 0.0, 5.0 );
delete massName;
}
count = 1;
std::vector<int> temp( parser.getNToken() / 2, 0 );
std::vector<int> tempB( parser.getNToken() / 2, 0 );
std::vector<int> tempB0B( parser.getNToken() / 2, 0 );
std::vector<int> tempB0( parser.getNToken() / 2, 0 );
std::vector<int> tempBP( parser.getNToken() / 2, 0 );
std::vector<int> tempBM( parser.getNToken() / 2, 0 );
std::vector<int> tempD( parser.getNToken() / 2, 0 );
std::vector<int> tempD0B( parser.getNToken() / 2, 0 );
std::vector<int> tempD0( parser.getNToken() / 2, 0 );
std::vector<int> tempDP( parser.getNToken() / 2, 0 );
std::vector<int> tempDM( parser.getNToken() / 2, 0 );
do {
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "new event\n";
if ( count == 1000 * ( count / 1000 ) ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << count << std::endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << HepRandom::getTheSeed()<<std::endl;
}
EvtVector4R p_init( sqrt( EvtPDL::getMass( UPS4 ) *
EvtPDL::getMass( UPS4 ) +
5.9 * 5.9 ),
0.0, 0.0, 5.9 );
EvtParticle* root_part = 0;
if ( neventOrig > 0 ) {
root_part = EvtParticleFactory::particleFactory( UPS4, p_init );
} else {
root_part = EvtParticleFactory::particleFactory( VPHO, p_init );
}
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
//EvtStdHep stdhep;
//stdhep.init();
//root_part->makeStdHep(stdhep);
//EvtGenReport(EVTGEN_INFO,"EvtGen") <<stdhep<<std::endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") <<secondary<<std::endl;
std::string token;
int itok;
for ( itok = 0; itok < ( parser.getNToken() / 2 ); itok++ ) {
token = parser.getToken( 2 * itok );
//temp[itok]+=countInclusive(token,root_part);
temp[itok] += countInclusive( token, root_part, histo1[itok],
massHisto[itok] );
tempB[itok] += countInclusiveParent( token, root_part, theBs,
histo2[itok] );
tempB0[itok] += countInclusiveSubTree( token, root_part, theB0 );
tempB0B[itok] += countInclusiveSubTree( token, root_part, theB0B );
tempBP[itok] += countInclusiveSubTree( token, root_part, theBP );
tempBM[itok] += countInclusiveSubTree( token, root_part, theBM );
// tempD[itok]+=countInclusiveParent(token,root_part,theDs);
// tempD0[itok]+=countInclusiveSubTree(token,root_part,theD0);
// tempD0B[itok]+=countInclusiveSubTree(token,root_part,theD0B);
// tempDP[itok]+=countInclusiveSubTree(token,root_part,theDP);
// tempDM[itok]+=countInclusiveSubTree(token,root_part,theDM);
}
// numd0+=countInclusive("D0",root_part);
// numd0b+=countInclusive("anti-D0",root_part);
// numdp+=countInclusive("D+",root_part);
// numdm+=countInclusive("D-",root_part);
// root_part->printTree();
root_part->deleteTree();
} while ( count++ < nevent );
int itok;
std::string token;
for ( itok = 0; itok < ( parser.getNToken() / 2 ); itok++ ) {
token = parser.getToken( 2 * itok );
float br = 0.5 * float( temp[itok] ) / float( nevent );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Found " << temp[itok] << " " << token.c_str() << " in "
<< nevent << " events. Average number of " << token.c_str()
<< " per B meson=" << br << std::endl;
br = 0.5 * float( tempB[itok] ) / float( nevent );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Found " << tempB[itok] << " " << token.c_str()
<< " produced directly in decays of B mesons avg. br.fr.=" << br
<< std::endl;
br = 2.0 * float( tempB0[itok] ) / float( nevent );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Found " << tempB0[itok] << " " << token.c_str()
<< " in decay tree of B0, br.fr.=" << br << std::endl;
br = 2.0 * float( tempB0B[itok] ) / float( nevent );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Found " << tempB0B[itok] << " " << token.c_str()
<< " in decay tree of anti-B0, br.fr.=" << br << std::endl;
br = 2.0 * float( tempBP[itok] ) / float( nevent );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Found " << tempBP[itok] << " " << token.c_str()
<< " in decay tree of B+, br.fr.=" << br << std::endl;
br = 2.0 * float( tempBM[itok] ) / float( nevent );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Found " << tempBM[itok] << " " << token.c_str()
<< " in decay tree of B-, br.fr.=" << br << std::endl;
// br=0.5*float(tempD[itok])/float(numd0+numd0b+numdm+numdp);
// EvtGenReport(EVTGEN_INFO,"EvtGen") << "Found "<<tempD[itok]<<" "<<token
// << " produced directly in decays of D mesons avg. br.fr.="
// <<br<<std::endl;
// br=2.0*float(tempD0[itok])/float(numd0);
// EvtGenReport(EVTGEN_INFO,"EvtGen") << "Found "<<tempD0[itok]<<" "<<token
// << " in decay of D0, br.fr.="<<br<<std::endl;
// br=2.0*float(tempD0B[itok])/float(numd0b);
// EvtGenReport(EVTGEN_INFO,"EvtGen") << "Found "<<tempD0B[itok]<<" "<<token
// << " in decay of anti-D0, br.fr.="<<br<<std::endl;
// br=2.0*float(tempDP[itok])/float(numdp);
// EvtGenReport(EVTGEN_INFO,"EvtGen") << "Found "<<tempDP[itok]<<" "<<token
// << " in decay of D+, br.fr.="<<br<<std::endl;
// br=2.0*float(tempDM[itok])/float(numdm);
// EvtGenReport(EVTGEN_INFO,"EvtGen") << "Found "<<tempDM[itok]<<" "<<token
// << " in decay of D-, br.fr.="<<br<<std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "*******************************************\n";
}
} else {
count = 1;
do {
if ( count == 1000 * ( count / 1000 ) ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << count << std::endl;
//EvtGenReport(EVTGEN_INFO,"EvtGen") << HepRandom::getTheSeed()<<std::endl;
}
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = 0;
if ( neventOrig > 0 ) {
root_part = EvtParticleFactory::particleFactory( UPS4, p_init );
} else {
root_part = EvtParticleFactory::particleFactory( VPHO, p_init );
}
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
root_part->deleteTree();
} while ( count++ < nevent );
}
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runKstarnunu( int nevent, EvtGen& myGenerator )
{
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
//static EvtId B0B=EvtPDL::getId(std::string("anti-B0"));
TFile* file = new TFile( "kstarnunu.root", "RECREATE" );
TH1F* q2 = new TH1F( "h1", "q2", 50, 0.0, 25.0 );
TH1F* enu = new TH1F( "h2", "Neutrino energy", 50, 0.0, 5.0 );
TH1F* x = new TH1F( "h3", "Total neutrino energy/B mass", 50, 0.5, 0.9 );
int count;
EvtVector4R kstar, nu, nub;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/KSTARNUNU.DEC" );
//EvtGen myGenerator(decay_name,pdttable_name,myRandomEngine);
myGenerator.readUDecay( udecay_name );
count = 1;
do {
EvtVector4R p_init( EvtPDL::getMass( B0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( B0, p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
kstar = root_part->getDaug( 0 )->getP4Lab();
nu = root_part->getDaug( 1 )->getP4Lab();
nub = root_part->getDaug( 2 )->getP4Lab();
q2->Fill( ( nu + nub ).mass2() );
enu->Fill( nu.get( 0 ) );
x->Fill( ( nu.get( 0 ) + nub.get( 0 ) ) / root_part->mass() );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runBsmix( int nevent, EvtGen& myGenerator )
{
static EvtId BS0 = EvtPDL::getId( std::string( "B_s0" ) );
static EvtId BSB = EvtPDL::getId( std::string( "anti-B_s0" ) );
TFile* file = new TFile( "bsmix.root", "RECREATE" );
TH1F* tmix = new TH1F( "h1", "tmix (mm)", 100, 0.0, 5.0 );
TH1F* tnomix = new TH1F( "h2", "tnomix (mm)", 100, 0.0, 5.0 );
int count;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/BSMIX.DEC" );
//EvtGen myGenerator(decay_name,pdttable_name,myRandomEngine);
myGenerator.readUDecay( udecay_name );
count = 1;
do {
EvtVector4R p_init( EvtPDL::getMass( BS0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( BS0,
p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
double t = root_part->getLifetime();
int mix = 0;
if ( root_part->getNDaug() == 1 ) {
if ( root_part->getDaug( 0 )->getId() == BSB ) {
mix = 1;
}
}
if ( mix == 0 )
tnomix->Fill( t );
if ( mix == 1 )
tmix->Fill( t );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runSemic( int nevent, EvtGen& myGenerator )
{
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId EP = EvtPDL::getId( std::string( "e+" ) );
static EvtId EM = EvtPDL::getId( std::string( "e-" ) );
static EvtId DST0 = EvtPDL::getId( std::string( "D*0" ) );
static EvtId DSTB = EvtPDL::getId( std::string( "anti-D*0" ) );
static EvtId DSTP = EvtPDL::getId( std::string( "D*+" ) );
static EvtId DSTM = EvtPDL::getId( std::string( "D*-" ) );
static EvtId D0 = EvtPDL::getId( std::string( "D0" ) );
static EvtId D0B = EvtPDL::getId( std::string( "anti-D0" ) );
static EvtId DP = EvtPDL::getId( std::string( "D+" ) );
static EvtId DM = EvtPDL::getId( std::string( "D-" ) );
static EvtId D1P1P = EvtPDL::getId( std::string( "D_1+" ) );
static EvtId D1P1N = EvtPDL::getId( std::string( "D_1-" ) );
static EvtId D1P10 = EvtPDL::getId( std::string( "D_10" ) );
static EvtId D1P1B = EvtPDL::getId( std::string( "anti-D_10" ) );
static EvtId D3P2P = EvtPDL::getId( std::string( "D_2*+" ) );
static EvtId D3P2N = EvtPDL::getId( std::string( "D_2*-" ) );
static EvtId D3P20 = EvtPDL::getId( std::string( "D_2*0" ) );
static EvtId D3P2B = EvtPDL::getId( std::string( "anti-D_2*0" ) );
static EvtId D3P1P = EvtPDL::getId( std::string( "D'_1+" ) );
static EvtId D3P1N = EvtPDL::getId( std::string( "D'_1-" ) );
static EvtId D3P10 = EvtPDL::getId( std::string( "D'_10" ) );
static EvtId D3P1B = EvtPDL::getId( std::string( "anti-D'_10" ) );
static EvtId D3P0P = EvtPDL::getId( std::string( "D_0*+" ) );
static EvtId D3P0N = EvtPDL::getId( std::string( "D_0*-" ) );
static EvtId D3P00 = EvtPDL::getId( std::string( "D_0*0" ) );
static EvtId D3P0B = EvtPDL::getId( std::string( "anti-D_0*0" ) );
static EvtId D23S1P = EvtPDL::getId( std::string( "D*(2S)+" ) );
static EvtId D23S1N = EvtPDL::getId( std::string( "D*(2S)-" ) );
static EvtId D23S10 = EvtPDL::getId( std::string( "D*(2S)0" ) );
static EvtId D23S1B = EvtPDL::getId( std::string( "anti-D*(2S)0" ) );
static EvtIdSet radExitDstar( D23S1P, D23S1N, D23S10, D23S1B );
TFile* file = new TFile( "semic.root", "RECREATE" );
TH1F* Dpe_q2 = new TH1F( "h11", "q2 for B0B ->D+ e- nu", 50, 0.0, 12.0 );
TH1F* Dpe_elep = new TH1F( "h12", "Elep for B0B ->D+ e- nu", 50, 0.0, 2.5 );
TH1F* Dme_q2 = new TH1F( "h13", "q2 for B0 ->D- e+ nu", 50, 0.0, 12.0 );
TH1F* Dme_elep = new TH1F( "h14", "Elep for B0 ->D- e+ nu", 50, 0.0, 2.5 );
TH1F* D0e_q2 = new TH1F( "h15", "q2 for B- ->D0 e- nu", 50, 0.0, 12.0 );
TH1F* D0e_elep = new TH1F( "h16", "Elep for B- ->D0 e- nu", 50, 0.0, 2.5 );
TH1F* D0Be_q2 = new TH1F( "h17", "q2 for B+ ->D0B e+ nu", 50, 0.0, 12.0 );
TH1F* D0Be_elep = new TH1F( "h18", "Elep for B+ ->D0B e+ nu", 50, 0.0, 2.5 );
TH1F* Dstpe_q2 = new TH1F( "h21", "q2 for B0B ->D*+ e- nu", 50, 0.0, 12.0 );
TH1F* Dstpe_elep = new TH1F( "h22", "Elep for B0B ->D*+ e- nu", 50, 0.0, 2.5 );
TH1F* Dstme_q2 = new TH1F( "h23", "q2 for B0 ->D*- e+ nu", 50, 0.0, 12.0 );
TH1F* Dstme_elep = new TH1F( "h24", "Elep for B0 ->D*- e+ nu", 50, 0.0, 2.5 );
TH1F* Dst0e_q2 = new TH1F( "h25", "q2 for B- ->D*0 e- nu", 50, 0.0, 12.0 );
TH1F* Dst0e_elep = new TH1F( "h26", "Elep for B*- ->D*0 e- nu", 50, 0.0, 2.5 );
TH1F* Dst0Be_q2 = new TH1F( "h27", "q2 for B+ ->D*0B e+ nu", 50, 0.0, 12.0 );
TH1F* Dst0Be_elep = new TH1F( "h28", "Elep for B+ ->D*0B e+ nu", 50, 0.0,
2.5 );
TH1F* D1P1pe_q2 = new TH1F( "h31", "q2 for B0B ->1P1+ e- nu", 50, 0.0, 12.0 );
TH1F* D1P1pe_elep = new TH1F( "h32", "Elep for B0B ->1P1+ e- nu", 50, 0.0,
2.5 );
TH1F* D1P1me_q2 = new TH1F( "h33", "q2 for B0 ->1P1- e+ nu", 50, 0.0, 12.0 );
TH1F* D1P1me_elep = new TH1F( "h34", "Elep for B0 ->1P1- e+ nu", 50, 0.0,
2.5 );
TH1F* D1P10e_q2 = new TH1F( "h35", "q2 for B- ->1P10 e- nu", 50, 0.0, 12.0 );
TH1F* D1P10e_elep = new TH1F( "h36", "Elep for B*- ->1P10 e- nu", 50, 0.0,
2.5 );
TH1F* D1P10Be_q2 = new TH1F( "h37", "q2 for B+ ->1P1B e+ nu", 50, 0.0, 12.0 );
TH1F* D1P10Be_elep = new TH1F( "h38", "Elep for B+ ->1P1B e+ nu", 50, 0.0,
2.5 );
TH1F* D3P0pe_q2 = new TH1F( "h41", "q2 for B0B ->3P0+ e- nu", 50, 0.0, 12.0 );
TH1F* D3P0pe_elep = new TH1F( "h42", "Elep for B0B ->3P0+ e- nu", 50, 0.0,
2.5 );
TH1F* D3P0me_q2 = new TH1F( "h43", "q2 for B0 ->3P0- e+ nu", 50, 0.0, 12.0 );
TH1F* D3P0me_elep = new TH1F( "h44", "Elep for B0 ->3P0- e+ nu", 50, 0.0,
2.5 );
TH1F* D3P00e_q2 = new TH1F( "h45", "q2 for B- ->3P00 e- nu", 50, 0.0, 12.0 );
TH1F* D3P00e_elep = new TH1F( "h46", "Elep for B*- ->3P00 e- nu", 50, 0.0,
2.5 );
TH1F* D3P00Be_q2 = new TH1F( "h47", "q2 for B+ ->3P0B e+ nu", 50, 0.0, 12.0 );
TH1F* D3P00Be_elep = new TH1F( "h48", "Elep for B+ ->3P0B e+ nu", 50, 0.0,
2.5 );
TH1F* D3P1pe_q2 = new TH1F( "h51", "q2 for B0B ->3P1+ e- nu", 50, 0.0, 12.0 );
TH1F* D3P1pe_elep = new TH1F( "h52", "Elep for B0B ->3P1+ e- nu", 50, 0.0,
2.5 );
TH1F* D3P1me_q2 = new TH1F( "h53", "q2 for B0 ->3P1- e+ nu", 50, 0.0, 12.0 );
TH1F* D3P1me_elep = new TH1F( "h54", "Elep for B0 ->3P1- e+ nu", 50, 0.0,
2.5 );
TH1F* D3P10e_q2 = new TH1F( "h55", "q2 for B- ->3P10 e- nu", 50, 0.0, 12.0 );
TH1F* D3P10e_elep = new TH1F( "h56", "Elep for B*- ->3P10 e- nu", 50, 0.0,
2.5 );
TH1F* D3P10Be_q2 = new TH1F( "h57", "q2 for B+ ->3P1B e+ nu", 50, 0.0, 12.0 );
TH1F* D3P10Be_elep = new TH1F( "h58", "Elep for B+ ->3P1B e+ nu", 50, 0.0,
2.5 );
TH1F* D3P2pe_q2 = new TH1F( "h61", "q2 for B0B ->3P2+ e- nu", 50, 0.0, 12.0 );
TH1F* D3P2pe_elep = new TH1F( "h62", "Elep for B0B ->3P2+ e- nu", 50, 0.0,
2.5 );
TH1F* D3P2me_q2 = new TH1F( "h63", "q2 for B0 ->3P2- e+ nu", 50, 0.0, 12.0 );
TH1F* D3P2me_elep = new TH1F( "h64", "Elep for B0 ->3P2- e+ nu", 50, 0.0,
2.5 );
TH1F* D3P20e_q2 = new TH1F( "h65", "q2 for B- ->3P20 e- nu", 50, 0.0, 12.0 );
TH1F* D3P20e_elep = new TH1F( "h66", "Elep for B*- ->3P20 e- nu", 50, 0.0,
2.5 );
TH1F* D3P20Be_q2 = new TH1F( "h67", "q2 for B+ ->3P2B e+ nu", 50, 0.0, 12.0 );
TH1F* D3P20Be_elep = new TH1F( "h68", "Elep for B+ ->3P2B e+ nu", 50, 0.0,
2.5 );
TH1F* phiL = new TH1F( "h69", "phi", 50, -3.1416, 3.1416 );
int count;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/SEMIC.DEC" );
//EvtGen myGenerator(decay_name,pdttable_name,myRandomEngine);
myGenerator.readUDecay( udecay_name );
count = 1;
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
int i;
for ( i = 0; i < 2; i++ ) {
EvtId meson = root_part->getDaug( i )->getDaug( 0 )->getId();
EvtId lepton = root_part->getDaug( i )->getDaug( 1 )->getId();
EvtVector4R lep = root_part->getDaug( i )->getDaug( 1 )->getP4Lab();
phiL->Fill( atan2( lep.get( 1 ), lep.get( 2 ) ) );
EvtVector4R nu = root_part->getDaug( i )->getDaug( 2 )->getP4Lab();
double q2 = ( lep + nu ).mass2();
double elep = root_part->getDaug( i )->getDaug( 1 )->getP4().get( 0 );
if ( meson == DP && lepton == EM ) {
Dpe_q2->Fill( q2 );
Dpe_elep->Fill( elep );
}
if ( meson == DM && lepton == EP ) {
Dme_q2->Fill( q2 );
Dme_elep->Fill( elep );
}
if ( meson == D0 && lepton == EM ) {
D0e_q2->Fill( q2 );
D0e_elep->Fill( elep );
}
if ( meson == D0B && lepton == EP ) {
D0Be_q2->Fill( q2 );
D0Be_elep->Fill( elep );
}
if ( meson == DSTP && lepton == EM ) {
Dstpe_q2->Fill( q2 );
Dstpe_elep->Fill( elep );
}
if ( meson == DSTM && lepton == EP ) {
Dstme_q2->Fill( q2 );
Dstme_elep->Fill( elep );
}
if ( meson == DST0 && lepton == EM ) {
Dst0e_q2->Fill( q2 );
Dst0e_elep->Fill( elep );
}
if ( meson == DSTB && lepton == EP ) {
Dst0Be_q2->Fill( q2 );
Dst0Be_elep->Fill( elep );
}
if ( meson == D1P1P && lepton == EM ) {
D1P1pe_q2->Fill( q2 );
D1P1pe_elep->Fill( elep );
}
if ( meson == D1P1N && lepton == EP ) {
D1P1me_q2->Fill( q2 );
D1P1me_elep->Fill( elep );
}
if ( meson == D1P10 && lepton == EM ) {
D1P10e_q2->Fill( q2 );
D1P10e_elep->Fill( elep );
}
if ( meson == D1P1B && lepton == EP ) {
D1P10Be_q2->Fill( q2 );
D1P10Be_elep->Fill( elep );
}
if ( meson == D3P0P && lepton == EM ) {
D3P0pe_q2->Fill( q2 );
D3P0pe_elep->Fill( elep );
}
if ( meson == D3P0N && lepton == EP ) {
D3P0me_q2->Fill( q2 );
D3P0me_elep->Fill( elep );
}
if ( meson == D3P00 && lepton == EM ) {
D3P00e_q2->Fill( q2 );
D3P00e_elep->Fill( elep );
}
if ( meson == D3P0B && lepton == EP ) {
D3P00Be_q2->Fill( q2 );
D3P00Be_elep->Fill( elep );
}
if ( meson == D3P1P && lepton == EM ) {
D3P1pe_q2->Fill( q2 );
D3P1pe_elep->Fill( elep );
}
if ( meson == D3P1N && lepton == EP ) {
D3P1me_q2->Fill( q2 );
D3P1me_elep->Fill( elep );
}
if ( meson == D3P10 && lepton == EM ) {
D3P10e_q2->Fill( q2 );
D3P10e_elep->Fill( elep );
}
if ( meson == D3P1B && lepton == EP ) {
D3P10Be_q2->Fill( q2 );
D3P10Be_elep->Fill( elep );
}
if ( meson == D3P2P && lepton == EM ) {
D3P2pe_q2->Fill( q2 );
D3P2pe_elep->Fill( elep );
}
if ( meson == D3P2N && lepton == EP ) {
D3P2me_q2->Fill( q2 );
D3P2me_elep->Fill( elep );
}
if ( meson == D3P20 && lepton == EM ) {
D3P20e_q2->Fill( q2 );
D3P20e_elep->Fill( elep );
}
if ( meson == D3P2B && lepton == EP ) {
D3P20Be_q2->Fill( q2 );
D3P20Be_elep->Fill( elep );
}
}
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runKstarll( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "kstkmm.root", "RECREATE" );
TH2F* _dalitz = new TH2F( "h1", "q^2! vs Elep", 70, 0.0, 3.5, 60, 0.0, 30.0 );
TH1F* _ctl = new TH1F( "h2", "ctl", 50, -1.0, 1.0 );
TH1F* _q2 = new TH1F( "h3", "q2", 50, 0.0, 25.0 );
TH1F* _q2low = new TH1F( "h4", "q2 (low)", 50, 0.0, 1.0 );
TH1F* _q2lowlow = new TH1F( "h5", "q2 (lowlow)", 50, 0.0, 0.00001 );
TH1F* _phi = new TH1F( "h6", "phi", 50, -EvtConst::pi, EvtConst::pi );
TH1F* _chi = new TH1F( "h7", "chi", 50, 0.0, EvtConst::twoPi );
TH1F* _chictl = new TH1F( "h8", "chictl", 50, 0.0, EvtConst::twoPi );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
int count = 1;
EvtVector4R kstar, l1, l2;
EvtVector4R k, pi, b;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/KSTARLL.DEC" );
//EvtGen myGenerator(decay_name,pdttable_name,myRandomEngine);
myGenerator.readUDecay( udecay_name );
std::vector<double> q2low( 5 );
std::vector<double> q2high( 5 );
std::vector<int> counts( 5 );
//kee
//int n=4;
//q2low[0]=0.0; q2high[0]=4.5;
//q2low[1]=4.5; q2high[1]=8.41;
//q2low[2]=10.24; q2high[2]=12.96;
//q2low[3]=14.06; q2high[3]=30.0;
//kmm
//int n=4;
//q2low[0]=0.0; q2high[0]=4.5;
//q2low[1]=4.5; q2high[1]=9.0;
//q2low[2]=10.24; q2high[2]=12.96;
//q2low[3]=14.06; q2high[3]=30.0;
//K*ee
int n = 5;
q2low[0] = 0.0;
q2high[0] = 0.1;
q2low[1] = 0.1;
q2high[1] = 4.5;
q2low[2] = 4.5;
q2high[2] = 8.41;
q2low[3] = 10.24;
q2high[3] = 12.96;
q2low[4] = 14.06;
q2high[4] = 30.0;
//K*mm
//int n=5;
//q2low[0]=0.0; q2high[0]=0.1;
//q2low[1]=0.1; q2high[1]=4.5;
//q2low[2]=4.5; q2high[2]=9.0;
//q2low[3]=10.24; q2high[3]=12.96;
//q2low[4]=14.06; q2high[4]=30.0;
do {
EvtVector4R p_init( EvtPDL::getMass( B0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( B0, p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
// root_part->printTree();
//root_part->getDaug(0)->printTree();
//root_part->getDaug(1)->printTree();
//root_part->getDaug(2)->printTree();
kstar = root_part->getDaug( 0 )->getP4Lab();
l1 = root_part->getDaug( 1 )->getP4Lab();
l2 = root_part->getDaug( 2 )->getP4Lab();
b = root_part->getP4();
k = root_part->getDaug( 0 )->getDaug( 0 )->getP4Lab();
pi = root_part->getDaug( 0 )->getDaug( 1 )->getP4Lab();
double qsq = ( l1 + l2 ).mass2();
for ( int j = 0; j < n; j++ ) {
if ( qsq > q2low[j] && qsq < q2high[j] )
counts[j]++;
}
_q2->Fill( ( l1 + l2 ).mass2() );
_q2low->Fill( ( l1 + l2 ).mass2() );
_q2lowlow->Fill( ( l1 + l2 ).mass2() );
_ctl->Fill( EvtDecayAngle( ( l1 + l2 + kstar ), ( l1 + l2 ), l1 ) );
_dalitz->Fill( l1.get( 0 ), ( l1 + l2 ).mass2(), 1.0 );
root_part->deleteTree();
_phi->Fill( atan2( l1.get( 1 ), l1.get( 2 ) ) );
_chi->Fill( EvtDecayAngleChi( b, k, pi, l1, l2 ) );
if ( EvtDecayAngle( ( l1 + l2 + kstar ), ( l1 + l2 ), l1 ) > 0 ) {
_chictl->Fill( EvtDecayAngleChi( b, k, pi, l1, l2 ) );
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "count:" << count << " " << ( l1 + l2 ).mass2() << std::endl;
} while ( count++ < nevent );
for ( int j = 0; j < n; j++ ) {
std::cout << "[" << q2low[j] << ".." << q2high[j] << "]=" << counts[j]
<< std::endl;
}
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runKll( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "ksem.root", "RECREATE" );
TH2F* _dalitz = new TH2F( "h1", "q^2! vs Elep", 70, 0.0, 3.5, 60, 0.0, 30.0 );
TH1F* _ctl = new TH1F( "h2", "ctl", 50, -1.0, 1.0 );
TH1F* _q2 = new TH1F( "h3", "q2", 50, 0.0, 25.0 );
TH1F* _q2low = new TH1F( "h4", "q2 (low)", 50, 0.0, 1.0 );
TH1F* _q2lowlow = new TH1F( "h5", "q2 (lowlow)", 50, 0.0, 0.00001 );
TH1F* _phi = new TH1F( "h6", "phi", 50, -EvtConst::pi, EvtConst::pi );
// TH1F* _chi = new TH1F("h7","chi",50,0.0,EvtConst::twoPi);
// TH1F* _chictl = new TH1F("h8","chictl",50,0.0,EvtConst::twoPi);
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
int count = 1;
EvtVector4R k, l1, l2;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/KLL.DEC" );
//EvtGen myGenerator(decay_name,pdttable_name,myRandomEngine);
myGenerator.readUDecay( udecay_name );
std::vector<double> q2low( 5 );
std::vector<double> q2high( 5 );
std::vector<int> counts( 5 );
//kee
// int n=4;
//q2low[0]=0.0; q2high[0]=4.5;
//q2low[1]=4.5; q2high[1]=8.41;
//q2low[2]=10.24; q2high[2]=12.96;
//q2low[3]=14.06; q2high[3]=30.0;
//kmm
int n = 4;
q2low[0] = 0.0;
q2high[0] = 4.5;
q2low[1] = 4.5;
q2high[1] = 9.0;
q2low[2] = 10.24;
q2high[2] = 12.96;
q2low[3] = 14.06;
q2high[3] = 30.0;
//K*ee
//int n=5;
//q2low[0]=0.0; q2high[0]=0.1;
//q2low[1]=0.1; q2high[1]=4.5;
//q2low[2]=4.5; q2high[2]=8.41;
//q2low[3]=10.24; q2high[3]=12.96;
//q2low[4]=14.06; q2high[4]=30.0;
//K*mm
//int n=5;
//q2low[0]=0.0; q2high[0]=0.1;
//q2low[1]=0.1; q2high[1]=4.5;
//q2low[2]=4.5; q2high[2]=9.0;
//q2low[3]=10.24; q2high[3]=12.96;
//q2low[4]=14.06; q2high[4]=30.0;
do {
EvtVector4R p_init( EvtPDL::getMass( B0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( B0, p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
// root_part->printTree();
//root_part->getDaug(0)->printTree();
//root_part->getDaug(1)->printTree();
//root_part->getDaug(2)->printTree();
k = root_part->getDaug( 0 )->getP4Lab();
l1 = root_part->getDaug( 1 )->getP4Lab();
l2 = root_part->getDaug( 2 )->getP4Lab();
//b=root_part->getP4();
// k=root_part->getDaug(0)->getDaug(0)->getP4Lab();
// pi=root_part->getDaug(0)->getDaug(1)->getP4Lab();
double qsq = ( l1 + l2 ).mass2();
for ( int j = 0; j < n; j++ ) {
if ( qsq > q2low[j] && qsq < q2high[j] )
counts[j]++;
}
_q2->Fill( ( l1 + l2 ).mass2() );
_q2low->Fill( ( l1 + l2 ).mass2() );
_q2lowlow->Fill( ( l1 + l2 ).mass2() );
_ctl->Fill( EvtDecayAngle( ( l1 + l2 + k ), ( l1 + l2 ), l1 ) );
_dalitz->Fill( l1.get( 0 ), ( l1 + l2 ).mass2(), 1.0 );
root_part->deleteTree();
_phi->Fill( atan2( l1.get( 1 ), l1.get( 2 ) ) );
//_chi->Fill(EvtDecayAngleChi(b,k,pi,l1,l2));
//if (EvtDecayAngle((l1+l2+kstar),(l1+l2),l1)>0){
// _chictl->Fill(EvtDecayAngleChi(b,k,pi,l1,l2));
// }
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "count:" << count << " " << ( l1 + l2 ).mass2() << std::endl;
} while ( count++ < nevent );
for ( int j = 0; j < n; j++ ) {
std::cout << "[" << q2low[j] << ".." << q2high[j] << "]=" << counts[j]
<< std::endl;
}
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runHll( int nevent, EvtGen& myGenerator, char* mode )
{
TString modename = mode;
TString filename;
filename = modename;
filename = filename + "_nnlo.root";
TFile* file = new TFile( filename, "RECREATE" );
TString decname;
decname += modename;
decname.ToUpper();
decname = "exampleFiles/" + decname + ".DEC";
char udecay_name[100];
strcpy( udecay_name, decname );
TH2F* _dalitz = new TH2F( "h1", "q^2! vs Elep", 70, 0.0, 3.5, 60, 0.0, 30.0 );
TH1F* _ctl = new TH1F( "h2", "ctl", 50, -1.0, 1.0 );
TH1F* _q2 = new TH1F( "h3", "q2", 50, 0.0, 25.0 );
TH1F* _q2low = new TH1F( "h4", "q2 (low)", 50, 0.0, 1.0 );
TH1F* _q2lowlow = new TH1F( "h5", "q2 (lowlow)", 50, 0.0, 0.00001 );
TH1F* _phi = new TH1F( "h6", "phi", 50, -EvtConst::pi, EvtConst::pi );
TH1F* _chi = new TH1F( "h7", "chi", 50, 0.0, EvtConst::twoPi );
TH1F* _chictl = new TH1F( "h8", "chictl", 50, 0.0, EvtConst::twoPi );
EvtId B;
if ( modename == "kee" || modename == "kmm" || modename == "kstksee" ||
modename == "kstksmm" || modename == "piee" || modename == "pimm" ||
modename == "rhoee" || modename == "rhomm" ) {
B = EvtPDL::getId( std::string( "B+" ) );
} else {
B = EvtPDL::getId( std::string( "B0" ) );
}
int count = 1;
EvtVector4R b, h, l1, l2;
EvtVector4R hdaug1, hdaug2;
myGenerator.readUDecay( udecay_name );
std::vector<double> q2low( 7 );
std::vector<double> q2high( 7 );
std::vector<int> counts( 7 );
int n( 0 );
if ( modename == "kee" || modename == "ksee" || modename == "piee" ||
modename == "pi0ee" || modename == "etaee" || modename == "etapee" ) {
//kee
n = 6;
q2low[0] = 0.0;
q2high[0] = 4.5;
q2low[1] = 4.5;
q2high[1] = 8.41;
q2low[2] = 8.41;
q2high[2] = 10.24;
q2low[3] = 10.24;
q2high[3] = 12.96;
q2low[4] = 12.96;
q2high[4] = 14.06;
q2low[5] = 14.06;
q2high[5] = 30.0;
} else if ( modename == "kmm" || modename == "ksmm" || modename == "pimm" ||
modename == "pi0mm" || modename == "etamm" ||
modename == "etapmm" ) {
//kmm
n = 6;
q2low[0] = 0.0;
q2high[0] = 4.5;
q2low[1] = 4.5;
q2high[1] = 9.0;
q2low[2] = 9.0;
q2high[2] = 10.24;
q2low[3] = 10.24;
q2high[3] = 12.96;
q2low[4] = 12.96;
q2high[4] = 14.06;
q2low[5] = 14.06;
q2high[5] = 30.0;
} else if ( modename == "kstkee" || modename == "kstksee" ||
modename == "rhoee" || modename == "rho0ee" ||
modename == "omegaee" ) {
//K*ee
n = 7;
q2low[0] = 0.0;
q2high[0] = 0.1;
q2low[1] = 0.1;
q2high[1] = 4.5;
q2low[2] = 4.5;
q2high[2] = 8.41;
q2low[3] = 8.41;
q2high[3] = 10.24;
q2low[4] = 10.24;
q2high[4] = 12.96;
q2low[5] = 12.96;
q2high[5] = 14.06;
q2low[6] = 14.06;
q2high[6] = 30.0;
} else if ( modename == "kstkmm" || modename == "kstksmm" ||
modename == "rhomm" || modename == "rho0mm" ||
modename == "omegamm" ) {
//K*mm
n = 7;
q2low[0] = 0.0;
q2high[0] = 0.1;
q2low[1] = 0.1;
q2high[1] = 4.5;
q2low[2] = 4.5;
q2high[2] = 9.0;
q2low[3] = 9.0;
q2high[3] = 10.24;
q2low[4] = 10.24;
q2high[4] = 12.96;
q2low[5] = 12.96;
q2high[5] = 14.06;
q2low[6] = 14.06;
q2high[6] = 30.0;
}
float q2binlow[n + 1];
for ( int i = 0; i < n; i++ ) {
q2binlow[i] = q2low[i];
}
q2binlow[n] = 30.0;
TH1F* _q2var = new TH1F( "h9", "q2var", n, q2binlow );
do {
EvtVector4R p_init( EvtPDL::getMass( B ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( B, p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
// root_part->printTree();
//root_part->getDaug(0)->printTree();
//root_part->getDaug(1)->printTree();
//root_part->getDaug(2)->printTree();
h = root_part->getDaug( 0 )->getP4Lab();
l1 = root_part->getDaug( 1 )->getP4Lab();
l2 = root_part->getDaug( 2 )->getP4Lab();
double qsq = ( l1 + l2 ).mass2();
for ( int j = 0; j < n; j++ ) {
if ( qsq > q2low[j] && qsq < q2high[j] )
counts[j]++;
}
_q2->Fill( ( l1 + l2 ).mass2() );
_q2var->Fill( ( l1 + l2 ).mass2() );
_q2low->Fill( ( l1 + l2 ).mass2() );
_q2lowlow->Fill( ( l1 + l2 ).mass2() );
_ctl->Fill( EvtDecayAngle( ( l1 + l2 + h ), ( l1 + l2 ), l1 ) );
_dalitz->Fill( l1.get( 0 ), ( l1 + l2 ).mass2(), 1.0 );
_phi->Fill( atan2( l1.get( 1 ), l1.get( 2 ) ) );
if ( modename == "kstkee" || modename == "kstkmm" ||
modename == "kstksee" || modename == "kstksmm" ||
modename == "rhoee" || modename == "rhomm" ||
modename == "rho0ee" || modename == "rho0mm" ) {
b = root_part->getP4();
hdaug1 = root_part->getDaug( 0 )->getDaug( 0 )->getP4Lab();
hdaug2 = root_part->getDaug( 0 )->getDaug( 1 )->getP4Lab();
_chi->Fill( EvtDecayAngleChi( b, hdaug1, hdaug2, l1, l2 ) );
if ( EvtDecayAngle( ( l1 + l2 + h ), ( l1 + l2 ), l1 ) > 0 ) {
_chictl->Fill( EvtDecayAngleChi( b, hdaug1, hdaug2, l1, l2 ) );
}
}
if ( count % 1000 == 0 ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "count:" << count << " " << ( l1 + l2 ).mass2() << std::endl;
}
root_part->deleteTree();
} while ( count++ < nevent );
for ( int j = 0; j < n; j++ ) {
std::cout << "[" << q2low[j] << ".." << q2high[j] << "] = " << counts[j]
<< std::endl;
}
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runVectorIsr( int nevent, EvtGen& myGenerator )
{
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId VPHO = EvtPDL::getId( std::string( "vpho" ) );
TFile* file = new TFile( "vectorisr.root", "RECREATE" );
TH1F* cosv = new TH1F( "h1", "Cos vector in e+e- frame", 50, -1.0, 1.0 );
TH1F* cosd1 = new TH1F( "h2", "Cos helang 1st dau of vector", 50, -1.0, 1.0 );
TH1F* cosd1d1 = new TH1F( "h3", "Cos helang 1st dau of 1st dau", 50, -1.0,
1.0 );
TH1F* cosd2d1 = new TH1F( "h4", "Cos helang 1st dau of 2nd dau", 50, -1.0,
1.0 );
TH2F* d1vsd1d1 = new TH2F( "h5", "Cos helangs d1 vs d1d1", 20, -1.0, 1.0,
20, -1.0, 1.0 );
TH2F* d2vsd2d1 = new TH2F( "h6", "Cos helangs d2 vs d2d1", 20, -1.0, 1.0,
20, -1.0, 1.0 );
TH2F* d1d1vsd2d1 = new TH2F( "h7", "Cos helangs d1d1 vs d2d1", 20, -1.0,
1.0, 20, -1.0, 1.0 );
TH1F* chidd = new TH1F( "h8", "Chi - angle between decay planes", 60, 0.,
360.0 );
TH2F* chi12vsd1d1 = new TH2F( "h9", "Chi 1-2 vs d1d1", 30, 0., 360.0, 20,
-1.0, 1.0 );
TH2F* chi12vsd2d1 = new TH2F( "h10", "Chi 1-2 vs d2d1", 30, 0., 360.0, 20,
-1.0, 1.0 );
TH2F* chi21vsd1d1 = new TH2F( "h11", "Chi 2-1 vs d1d1", 30, 0., 360.0, 20,
-1.0, 1.0 );
TH2F* chi21vsd2d1 = new TH2F( "h12", "Chi 2-1 vs d2d1", 30, 0., 360.0, 20,
-1.0, 1.0 );
int count = 1;
char udecay_name[100];
EvtVector4R cm, v, d1, d2, d1d1, d1d2, d2d1, d2d2;
strcpy( udecay_name, "exampleFiles/VECTORISR.DEC" );
myGenerator.readUDecay( udecay_name );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( VPHO,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
cm = root_part->getP4Lab();
v = root_part->getDaug( 0 )->getP4Lab();
d1 = root_part->getDaug( 0 )->getDaug( 0 )->getP4Lab();
d2 = root_part->getDaug( 0 )->getDaug( 1 )->getP4Lab();
cosv->Fill( v.get( 3 ) / v.d3mag() );
double cosdecayd1 = EvtDecayAngle( cm, v, d1 );
double cosdecayd2 = EvtDecayAngle( cm, v, d2 );
cosd1->Fill( cosdecayd1 );
// now get daughters of the daughters
//
// first daughter of first daughter
if ( root_part->getDaug( 0 )->getDaug( 0 )->getNDaug() >= 2 ) {
d1d1 = root_part->getDaug( 0 )->getDaug( 0 )->getDaug( 0 )->getP4Lab();
double cosdecayd1d1 = EvtDecayAngle( v, d1, d1d1 );
cosd1d1->Fill( cosdecayd1d1 );
d1vsd1d1->Fill( cosdecayd1, cosdecayd1d1, 1.0 );
}
// first daughter of second daughter
if ( root_part->getDaug( 0 )->getDaug( 1 )->getNDaug() >= 2 ) {
d2d1 = root_part->getDaug( 0 )->getDaug( 1 )->getDaug( 0 )->getP4Lab();
double cosdecayd2d1 = EvtDecayAngle( v, d2, d2d1 );
cosd2d1->Fill( cosdecayd2d1 );
d2vsd2d1->Fill( cosdecayd2, cosdecayd2d1, 1.0 );
if ( root_part->getDaug( 0 )->getDaug( 0 )->getNDaug() >= 2 ) {
d1d1 =
root_part->getDaug( 0 )->getDaug( 0 )->getDaug( 0 )->getP4Lab();
double cosdecayd1d1 = EvtDecayAngle( v, d1, d1d1 );
d1d1vsd2d1->Fill( cosdecayd1d1, cosdecayd2d1, 1.0 );
//second daughters of daughters 1 and 2
d1d2 =
root_part->getDaug( 0 )->getDaug( 0 )->getDaug( 1 )->getP4Lab();
d2d2 =
root_part->getDaug( 0 )->getDaug( 1 )->getDaug( 1 )->getP4Lab();
double chi21 = 57.29578 *
EvtDecayAngleChi( v, d2d1, d2d2, d1d1, d1d2 );
double chi12 = 57.29578 *
EvtDecayAngleChi( v, d1d1, d1d2, d2d1, d2d2 );
chidd->Fill( chi12 );
chi12vsd1d1->Fill( chi12, cosdecayd1d1, 1.0 );
chi12vsd2d1->Fill( chi12, cosdecayd2d1, 1.0 );
chi21vsd1d1->Fill( chi21, cosdecayd1d1, 1.0 );
chi21vsd2d1->Fill( chi21, cosdecayd2d1, 1.0 );
}
}
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runBsquark( int nevent, EvtGen& myGenerator )
{
static EvtId VPHO = EvtPDL::getId( std::string( "vpho" ) );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
static EvtId B0B = EvtPDL::getId( std::string( "anti-B0" ) );
TFile* file = new TFile( "bsquark.root", "RECREATE" );
TH1F* elep = new TH1F( "h1", "Elep", 50, 0.0, 1.5 );
TH1F* q2 = new TH1F( "h2", "q2", 50, 0.0, 3.0 );
TH2F* dalitz = new TH2F( "h3", "q2 vs. Elep", 50, 0.0, 1.5, 50, 0.0, 3.0 );
TH1F* elepbar = new TH1F( "h11", "Elep bar", 50, 0.0, 1.5 );
TH1F* q2bar = new TH1F( "h12", "q2 bar", 50, 0.0, 3.0 );
TH2F* dalitzbar = new TH2F( "h13", "q2 vs. Elep bar", 50, 0.0, 1.5, 50, 0.0,
3.0 );
int count = 1;
char udecay_name[100];
EvtVector4R cm, v, d1, d2, d1d1, d1d2, d2d1, d2d2;
strcpy( udecay_name, "exampleFiles/BSQUARK.DEC" );
myGenerator.readUDecay( udecay_name );
do {
EvtVector4R p_init( 10.55, 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( VPHO,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle* p = root_part->nextIter();
while ( p ) {
if ( p->getId() == B0 ) {
//EvtParticle *dstar=p->getDaug(0);
EvtParticle* lepton = p->getDaug( 1 );
EvtParticle* sneutrino = p->getDaug( 2 );
//EvtVector4R p4dstar=dstar->getP4();
EvtVector4R p4lepton = lepton->getP4();
EvtVector4R p4sneutrino = sneutrino->getP4();
elep->Fill( p4lepton.get( 0 ) );
q2->Fill( ( p4lepton + p4sneutrino ).mass2() );
dalitz->Fill( p4lepton.get( 0 ),
( p4lepton + p4sneutrino ).mass2(), 1.0 );
}
if ( p->getId() == B0B ) {
//EvtParticle *dstar=p->getDaug(0);
EvtParticle* lepton = p->getDaug( 1 );
EvtParticle* sneutrino = p->getDaug( 2 );
//EvtVector4R p4dstar=dstar->getP4();
EvtVector4R p4lepton = lepton->getP4();
EvtVector4R p4sneutrino = sneutrino->getP4();
elepbar->Fill( p4lepton.get( 0 ) );
q2bar->Fill( ( p4lepton + p4sneutrino ).mass2() );
dalitzbar->Fill( p4lepton.get( 0 ),
( p4lepton + p4sneutrino ).mass2(), 1.0 );
}
p = p->nextIter();
}
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runK3gamma( int nevent, EvtGen& myGenerator )
{
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
TFile* file = new TFile( "k3gamma.root", "RECREATE" );
TH1F* costheta = new TH1F( "h1", "cosTheta", 100, -1.0, 1.0 );
int count = 1;
char udecay_name[100];
EvtVector4R cm, v, d1, d2, d1d1, d1d2, d2d1, d2d2;
strcpy( udecay_name, "exampleFiles/K3GAMMA.DEC" );
myGenerator.readUDecay( udecay_name );
do {
EvtVector4R p_init( EvtPDL::getMass( B0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( B0, p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle* k3 = root_part->getDaug( 0 );
EvtParticle* k = k3->getDaug( 0 );
EvtVector4R p4b = root_part->getP4Lab();
EvtVector4R p4k3 = k3->getP4Lab();
EvtVector4R p4k = k->getP4Lab();
costheta->Fill( EvtDecayAngle( p4b, p4k3, p4k ) );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runLambda( int nevent, EvtGen& myGenerator )
{
static EvtId LAMBDA = EvtPDL::getId( std::string( "Lambda0" ) );
TFile* file = new TFile( "lambda.root", "RECREATE" );
TH1F* costheta = new TH1F( "h1", "cosTheta", 100, -1.0, 1.0 );
int count = 1;
char udecay_name[100];
EvtVector4R cm, v, d1, d2, d1d1, d1d2, d2d1, d2d2;
strcpy( udecay_name, "exampleFiles/LAMBDA.DEC" );
myGenerator.readUDecay( udecay_name );
do {
EvtVector4R p_init( EvtPDL::getMass( LAMBDA ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( LAMBDA,
p_init );
EvtSpinDensity rho;
rho.setDim( 2 );
rho.set( 0, 0, 1.0 );
rho.set( 0, 1, 0.0 );
rho.set( 1, 0, 0.0 );
rho.set( 1, 1, 0.0 );
root_part->setSpinDensityForwardHelicityBasis( rho );
myGenerator.generateDecay( root_part );
EvtParticle* p = root_part->getDaug( 0 );
//EvtVector4R p4lambda=root_part->getP4Lab();
EvtVector4R p4p = p->getP4Lab();
costheta->Fill( p4p.get( 3 ) / p4p.d3mag() );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runTauTauPiPi( int nevent, EvtGen& myGenerator )
{
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId VPHO = EvtPDL::getId( std::string( "vpho" ) );
TFile* file = new TFile( "tautaupipi.root", "RECREATE" );
TH1F* cospi1 = new TH1F( "h1", "cos theta pi1", 50, -1.0, 1.0 );
TH1F* cospi2 = new TH1F( "h2", "cos theta pi2", 50, -1.0, 1.0 );
TH1F* costheta = new TH1F( "h3", "cos theta", 50, -1.0, 1.0 );
std::ofstream outmix;
outmix.open( "tautaupipi.dat" );
int count = 1;
EvtVector4R tau1, tau2, pi1, pi2;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/TAUTAUPIPI.DEC" );
myGenerator.readUDecay( udecay_name );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( VPHO,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
tau1 = root_part->getDaug( 0 )->getP4Lab();
tau2 = root_part->getDaug( 1 )->getP4Lab();
pi1 = root_part->getDaug( 0 )->getDaug( 0 )->getP4Lab();
pi2 = root_part->getDaug( 1 )->getDaug( 0 )->getP4Lab();
cospi1->Fill( EvtDecayAngle( tau1 + tau2, tau1, pi1 ) );
cospi2->Fill( EvtDecayAngle( tau1 + tau2, tau2, pi2 ) );
costheta->Fill( tau1.get( 3 ) / tau1.d3mag() );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runTauTauEE( int nevent, EvtGen& myGenerator )
{
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId VPHO = EvtPDL::getId( std::string( "vpho" ) );
TFile* file = new TFile( "tautauee.root", "RECREATE" );
TH1F* e1 = new TH1F( "h1", "e1", 55, 0.0, 5.5 );
TH1F* e2 = new TH1F( "h2", "e2", 55, 0.0, 5.5 );
TH2F* e1vse2 = new TH2F( "h3", "e1 vs e2", 55, 0.0, 5.5, 55, 0.0, 5.5 );
int count = 1;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/TAUTAUEE.DEC" );
myGenerator.readUDecay( udecay_name );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( VPHO,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
e1->Fill( root_part->getDaug( 0 )->getDaug( 0 )->getP4Lab().get( 0 ) );
e2->Fill( root_part->getDaug( 1 )->getDaug( 0 )->getP4Lab().get( 0 ) );
e1vse2->Fill( root_part->getDaug( 0 )->getDaug( 0 )->getP4Lab().get( 0 ),
root_part->getDaug( 1 )->getDaug( 0 )->getP4Lab().get( 0 ),
1.0 );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runTauTau2Pi2Pi( int nevent, EvtGen& myGenerator )
{
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId VPHO = EvtPDL::getId( std::string( "vpho" ) );
TFile* file = new TFile( "tautau2pi2pi.root", "RECREATE" );
TH1F* e1 = new TH1F( "h1", "mrho", 200, 0.0, 2.0 );
TH1F* e2 = new TH1F( "h2", "coshel", 200, -1.0, 1.0 );
int count = 1;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/TAUTAU2PI2PI.DEC" );
myGenerator.readUDecay( udecay_name );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( VPHO,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
EvtVector4R p4tau = root_part->getDaug( 0 )->getP4();
EvtVector4R p4rho = root_part->getDaug( 0 )->getDaug( 0 )->getP4() +
root_part->getDaug( 0 )->getDaug( 1 )->getP4();
EvtVector4R p4pi = root_part->getDaug( 0 )->getDaug( 0 )->getP4();
e1->Fill( p4rho.mass() );
double dcostheta = EvtDecayAngle( p4tau, p4rho, p4pi );
e2->Fill( dcostheta );
p4tau = root_part->getDaug( 1 )->getP4();
p4rho = root_part->getDaug( 1 )->getDaug( 0 )->getP4() +
root_part->getDaug( 1 )->getDaug( 1 )->getP4();
p4pi = root_part->getDaug( 1 )->getDaug( 0 )->getP4();
e1->Fill( p4rho.mass() );
dcostheta = EvtDecayAngle( p4tau, p4rho, p4pi );
e2->Fill( dcostheta );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runTauTau3Pi3Pi( int nevent, EvtGen& myGenerator )
{
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId VPHO = EvtPDL::getId( std::string( "vpho" ) );
TFile* file = new TFile( "tautau3pi3pi.root", "RECREATE" );
TH1F* e1 = new TH1F( "h1", "a1", 200, 0.0, 2.0 );
int count = 1;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/TAUTAU3PI3PI.DEC" );
myGenerator.readUDecay( udecay_name );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( VPHO,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
EvtVector4R p4tau = root_part->getDaug( 0 )->getP4();
EvtVector4R p4a1 = root_part->getDaug( 0 )->getDaug( 0 )->getP4() +
root_part->getDaug( 0 )->getDaug( 1 )->getP4() +
root_part->getDaug( 0 )->getDaug( 2 )->getP4();
e1->Fill( p4a1.mass() );
p4tau = root_part->getDaug( 1 )->getP4();
p4a1 = root_part->getDaug( 1 )->getDaug( 0 )->getP4() +
root_part->getDaug( 1 )->getDaug( 1 )->getP4() +
root_part->getDaug( 1 )->getDaug( 2 )->getP4();
e1->Fill( p4a1.mass() );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runJPsiKstar( int nevent, EvtGen& myGenerator, int modeInt )
{
std::ofstream outmix;
outmix.open( "jpsikstar.dat" );
int count = 1;
char udecay_name[100];
if ( modeInt == 0 )
strcpy( udecay_name, "exampleFiles/JPSIKSTAR.DEC" );
if ( modeInt == 1 )
strcpy( udecay_name, "exampleFiles/JPSIKSTAR1.DEC" );
if ( modeInt == 2 )
strcpy( udecay_name, "exampleFiles/JPSIKSTAR2.DEC" );
if ( modeInt == 3 )
strcpy( udecay_name, "exampleFiles/JPSIKSTAR3.DEC" );
if ( modeInt == 4 )
strcpy( udecay_name, "exampleFiles/JPSIKSTAR4.DEC" );
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
static EvtId B0B = EvtPDL::getId( std::string( "anti-B0" ) );
myGenerator.readUDecay( udecay_name );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle *btag, *bcp;
if ( root_part->getDaug( 0 )->getNDaug() == 3 ) {
btag = root_part->getDaug( 0 );
bcp = root_part->getDaug( 1 );
} else {
bcp = root_part->getDaug( 0 );
btag = root_part->getDaug( 1 );
}
EvtId tag;
if ( btag->getId() == B0B ) {
tag = B0;
} else {
tag = B0B;
}
EvtParticle *p_b, *p_psi, *p_kstar, *p_pi0, *p_kz, *p_ep, *p_em;
EvtVector4R p4_b, p4_psi, p4_kstar, p4_pi0, p4_kz, p4_ep, p4_em;
p_b = bcp;
p_psi = p_b->getDaug( 0 );
p_kstar = p_b->getDaug( 1 );
p_pi0 = p_kstar->getDaug( 0 );
p_kz = p_kstar->getDaug( 1 );
p_ep = p_psi->getDaug( 0 );
p_em = p_psi->getDaug( 1 );
p4_b = p_b->getP4Lab();
p4_psi = p_psi->getP4Lab();
p4_kstar = p_kstar->getP4Lab();
p4_pi0 = p_pi0->getP4Lab();
p4_kz = p_kz->getP4Lab();
p4_ep = p_ep->getP4Lab();
p4_em = p_em->getP4Lab();
outmix << tag.getId() << " ";
outmix << root_part->getDaug( 0 )->getLifetime() << " ";
outmix << root_part->getDaug( 1 )->getLifetime() << " ";
outmix << EvtDecayAngle( p4_b, p4_ep + p4_em, p4_ep ) << " ";
outmix << EvtDecayAngle( p4_b, p4_pi0 + p4_kz, p4_pi0 ) << " ";
outmix << EvtDecayAngleChi( p4_b, p4_pi0, p4_kz, p4_ep, p4_em ) << "\n";
root_part->deleteTree();
} while ( count++ < nevent );
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runSVVCPLH( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "svvcplh.root", "RECREATE" );
TH1F* t = new TH1F( "h1", "t", 50, 0.0, 5.0 );
TH1F* cospsi = new TH1F( "h2", "cos theta e+", 50, -1.0, 1.0 );
TH1F* cosphi = new TH1F( "h3", "cos theta k+", 50, -1.0, 1.0 );
TH1F* chi = new TH1F( "h4", "chi", 50, 0.0, 2.0 * EvtConst::pi );
int count = 1;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/SVVCPLH.DEC" );
myGenerator.readUDecay( udecay_name );
static EvtId BS0 = EvtPDL::getId( std::string( "B_s0" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( BS0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( BS0,
p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle *p_b, *p_psi, *p_phi, *p_kp, *p_km, *p_ep, *p_em;
EvtVector4R p4_b, p4_psi, p4_phi, p4_kp, p4_km, p4_ep, p4_em;
p_b = root_part;
if ( p_b->getNDaug() == 1 )
p_b = p_b->getDaug( 0 );
p_psi = p_b->getDaug( 0 );
p_phi = p_b->getDaug( 1 );
p_kp = p_phi->getDaug( 0 );
p_km = p_phi->getDaug( 1 );
p_ep = p_psi->getDaug( 0 );
p_em = p_psi->getDaug( 1 );
p4_b = p_b->getP4Lab();
p4_psi = p_psi->getP4Lab();
p4_phi = p_phi->getP4Lab();
p4_kp = p_kp->getP4Lab();
p4_km = p_km->getP4Lab();
p4_ep = p_ep->getP4Lab();
p4_em = p_em->getP4Lab();
t->Fill( root_part->getLifetime() );
cospsi->Fill( EvtDecayAngle( p4_b, p4_ep + p4_em, p4_ep ) );
cosphi->Fill( EvtDecayAngle( p4_b, p4_kp + p4_km, p4_kp ) );
chi->Fill( EvtDecayAngleChi( p4_b, p4_kp, p4_km, p4_ep, p4_em ) );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runSVSCPLH( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "svscplh.root", "RECREATE" );
TH1F* t = new TH1F( "h1", "t", 200, -5.0, 5.0 );
TH1F* tB0tag = new TH1F( "h2", "dt B0 tag (ps)", 200, -15.0, 15.0 );
TH1F* tB0Btag = new TH1F( "h3", "dt B0B tag (ps)", 200, -15.0, 15.0 );
TH1F* ctheta = new TH1F( "h4", "costheta", 50, -1.0, 1.0 );
int count = 1;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/SVSCPLH.DEC" );
myGenerator.readUDecay( udecay_name );
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
static EvtId B0B = EvtPDL::getId( std::string( "anti-B0" ) );
std::ofstream outmix;
outmix.open( "svscplh.dat" );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle *p_tag, *p_cp, *p_jpsi, *p_ep;
EvtVector4R p4_tag, p4_cp, p4_jpsi, p4_ep;
p_tag = root_part->getDaug( 0 );
p_cp = root_part->getDaug( 1 );
p_jpsi = p_cp->getDaug( 0 );
p_ep = p_jpsi->getDaug( 0 );
p4_tag = p_tag->getP4Lab();
p4_cp = p_cp->getP4Lab();
p4_jpsi = p_jpsi->getP4Lab();
p4_ep = p_ep->getP4Lab();
double dt = p_cp->getLifetime() - p_tag->getLifetime();
dt = dt / ( 1e-12 * 3e11 );
t->Fill( dt );
if ( p_tag->getId() == B0 ) {
tB0tag->Fill( dt );
outmix << dt << " 1" << std::endl;
}
if ( p_tag->getId() == B0B ) {
tB0Btag->Fill( dt );
outmix << dt << " -1" << std::endl;
}
ctheta->Fill( EvtDecayAngle( p4_cp, p4_jpsi, p4_ep ) );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runSSDCP( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "ssdcp.root", "RECREATE" );
TH1F* t = new TH1F( "h1", "dt", 100, -15.0, 15.0 );
TH1F* tB0tag = new TH1F( "h2", "dt B0 tag (ps)", 100, -15.0, 15.0 );
TH1F* tB0Btag = new TH1F( "h3", "dt B0B tag (ps)", 100, -15.0, 15.0 );
int count = 1;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/SSDCP.DEC" );
myGenerator.readUDecay( udecay_name );
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
static EvtId B0B = EvtPDL::getId( std::string( "anti-B0" ) );
std::ofstream outmix;
do {
EvtVector4R pinit( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
pinit );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle *p_tag, *p_cp, *p_jpsi;
EvtVector4R p4_tag, p4_cp, p4_jpsi, p4_ep;
p_tag = root_part->getDaug( 0 );
p_cp = root_part->getDaug( 1 );
p_jpsi = p_cp->getDaug( 0 );
//p_ep=p_jpsi->getDaug(0);
p4_tag = p_tag->getP4Lab();
p4_cp = p_cp->getP4Lab();
p4_jpsi = p_jpsi->getP4Lab();
//p4_ep=p_ep->getP4Lab();
double dt = p_cp->getLifetime() - p_tag->getLifetime();
dt = dt / ( 1e-12 * EvtConst::c );
t->Fill( dt );
if ( p_tag->getId() == B0 ) {
tB0tag->Fill( dt );
}
if ( p_tag->getId() == B0B ) {
tB0Btag->Fill( dt );
}
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runKstarstargamma( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "kstarstargamma.root", "RECREATE" );
TH1F* m = new TH1F( "h1", "mkpi", 100, 0.5, 2.5 );
TH1F* ctheta = new TH1F( "h2", "ctheta", 100, -1.0, 1.0 );
int count = 1;
myGenerator.readUDecay( "exampleFiles/KSTARSTARGAMMA.DEC" );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
std::ofstream outmix;
do {
EvtVector4R pinit( EvtPDL::getMass( B0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( B0, pinit );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle *p_kaon, *p_pion;
EvtVector4R p4_kaon, p4_pion;
p_kaon = root_part->getDaug( 0 );
p_pion = root_part->getDaug( 1 );
p4_kaon = p_kaon->getP4Lab();
p4_pion = p_pion->getP4Lab();
m->Fill( ( p4_kaon + p4_pion ).mass() );
ctheta->Fill( EvtDecayAngle( pinit, p4_kaon + p4_pion, p4_kaon ) );
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "ctheta:"<<EvtDecayAngle(pinit,p4_kaon+p4_pion,p4_kaon)<<std::endl;
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runDSTARPI( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "dstarpi.root", "RECREATE" );
TH1F* t = new TH1F( "h1", "dt", 100, -15.0, 15.0 );
TH1F* tB0tagpip = new TH1F( "h2", "dt B0 tag pi+ (ps)", 100, -15.0, 15.0 );
TH1F* tB0Btagpip = new TH1F( "h3", "dt B0B tag pi+(ps)", 100, -15.0, 15.0 );
TH1F* tB0tagpim = new TH1F( "h4", "dt B0 tag pi- (ps)", 100, -15.0, 15.0 );
TH1F* tB0Btagpim = new TH1F( "h5", "dt B0B tag pi- (ps)", 100, -15.0, 15.0 );
int count = 1;
myGenerator.readUDecay( "exampleFiles/DSTARPI.DEC" );
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
static EvtId B0B = EvtPDL::getId( std::string( "anti-B0" ) );
static EvtId PIP = EvtPDL::getId( std::string( "pi+" ) );
static EvtId PIM = EvtPDL::getId( std::string( "pi-" ) );
std::ofstream outmix;
do {
EvtVector4R pinit( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
pinit );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle *p_tag, *p_cp, *p_pi;
p_tag = root_part->getDaug( 0 );
p_cp = root_part->getDaug( 1 );
//p_dstar=p_cp->getDaug(1);
p_pi = p_cp->getDaug( 0 );
double dt = p_cp->getLifetime() - p_tag->getLifetime();
dt = dt / ( 1e-12 * EvtConst::c );
t->Fill( dt );
if ( p_tag->getId() == B0 ) {
if ( p_pi->getId() == PIP )
tB0tagpip->Fill( dt );
if ( p_pi->getId() == PIM )
tB0tagpim->Fill( dt );
}
if ( p_tag->getId() == B0B ) {
if ( p_pi->getId() == PIP )
tB0Btagpip->Fill( dt );
if ( p_pi->getId() == PIM )
tB0Btagpim->Fill( dt );
}
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runETACPHIPHI( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "etacphiphi.root", "RECREATE" );
TH2F* cosphi12 = new TH2F( "h1", "cos phi1 vs phi2", 50, -1.0, 1.0, 50,
-1.0, 1.0 );
TH1F* cosphi1 = new TH1F( "h2", "cos phi1", 50, -1.0, 1.0 );
TH1F* cosphi2 = new TH1F( "h3", "cos phi2", 50, -1.0, 1.0 );
TH1F* chi = new TH1F( "h4", "chi", 50, 0.0, 2.0 * EvtConst::pi );
int count = 1;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/ETACPHIPHI.DEC" );
myGenerator.readUDecay( udecay_name );
static EvtId ETAC = EvtPDL::getId( std::string( "eta_c" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( ETAC ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( ETAC,
p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle *p_etac, *p_phi1, *p_phi2, *p_kp1, *p_km1, *p_kp2, *p_km2;
EvtVector4R p4_etac, p4_phi1, p4_phi2, p4_kp1, p4_km1, p4_kp2, p4_km2;
p_etac = root_part;
p_phi1 = p_etac->getDaug( 0 );
p_phi2 = p_etac->getDaug( 1 );
p_kp1 = p_phi1->getDaug( 0 );
p_km1 = p_phi1->getDaug( 1 );
p_kp2 = p_phi2->getDaug( 0 );
p_km2 = p_phi2->getDaug( 1 );
p4_etac = p_etac->getP4Lab();
p4_phi1 = p_phi1->getP4Lab();
p4_phi2 = p_phi2->getP4Lab();
p4_kp1 = p_kp1->getP4Lab();
p4_km1 = p_km1->getP4Lab();
p4_kp2 = p_kp2->getP4Lab();
p4_km2 = p_km2->getP4Lab();
cosphi12->Fill( EvtDecayAngle( p4_etac, p4_phi1, p4_kp1 ),
EvtDecayAngle( p4_etac, p4_phi2, p4_kp2 ), 1.0 );
cosphi1->Fill( EvtDecayAngle( p4_etac, p4_phi1, p4_kp1 ) );
cosphi2->Fill( EvtDecayAngle( p4_etac, p4_phi2, p4_kp2 ) );
chi->Fill( EvtDecayAngleChi( p4_etac, p4_kp1, p4_km1, p4_kp2, p4_km2 ) );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runVVPiPi( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "vvpipi.root", "RECREATE" );
TH1F* cospsi = new TH1F( "h1", "cos theta J/psi ", 50, -1.0, 1.0 );
TH1F* cose = new TH1F( "h2", "cos theta e+ ", 50, -1.0, 1.0 );
TH1F* mpipi = new TH1F( "h3", "m pipi ", 50, 0.0, 1.0 );
TH2F* cosevspsi = new TH2F( "h4", "cos theta e+vs cos thete J/psi ", 25,
-1.0, 1.0, 25, -1.0, 1.0 );
TH1F* cose1 = new TH1F( "h5", "cos theta e+ 1 ", 50, -1.0, 1.0 );
TH1F* cose2 = new TH1F( "h6", "cos theta e+ 2 ", 50, -1.0, 1.0 );
int count = 1;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/VVPIPI.DEC" );
myGenerator.readUDecay( udecay_name );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( B0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( B0, p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle *p_b, *p_psip, *p_psi, *p_ep, *p_pi1, *p_pi2;
EvtVector4R p4_b, p4_psip, p4_psi, p4_ep, p4_pi1, p4_pi2;
p_b = root_part;
p_psip = p_b->getDaug( 0 );
p_psi = p_psip->getDaug( 0 );
p_pi1 = p_psip->getDaug( 1 );
p_pi2 = p_psip->getDaug( 2 );
p_ep = p_psi->getDaug( 0 );
p4_b = p_b->getP4Lab();
p4_psip = p_psip->getP4Lab();
p4_psi = p_psi->getP4Lab();
p4_pi1 = p_pi1->getP4Lab();
p4_pi2 = p_pi2->getP4Lab();
p4_ep = p_ep->getP4Lab();
cospsi->Fill( EvtDecayAngle( p4_b, p4_psip, p4_psi ) );
cose->Fill( EvtDecayAngle( p4_psip, p4_psi, p4_ep ) );
mpipi->Fill( ( p4_pi1 + p4_pi2 ).mass() );
cosevspsi->Fill( EvtDecayAngle( p4_b, p4_psip, p4_psi ),
EvtDecayAngle( p4_psip, p4_psi, p4_ep ), 1.0 );
if ( std::fabs( EvtDecayAngle( p4_b, p4_psip, p4_psi ) ) > 0.95 ) {
cose1->Fill( EvtDecayAngle( p4_psip, p4_psi, p4_ep ) );
}
if ( std::fabs( EvtDecayAngle( p4_b, p4_psip, p4_psi ) ) < 0.05 ) {
cose2->Fill( EvtDecayAngle( p4_psip, p4_psi, p4_ep ) );
}
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runSVVHelAmp( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "svvhelamp.root", "RECREATE" );
TH1F* cospip = new TH1F( "h1", "cos theta pi+", 50, -1.0, 1.0 );
TH1F* cospim = new TH1F( "h2", "cos theta pi-", 50, -1.0, 1.0 );
TH1F* chi = new TH1F( "h3", "chi pi+ to pi- in D+ direction", 50, 0.0,
EvtConst::twoPi );
TH1F* chicospipp = new TH1F( "h4",
"chi pi+ to pi- in D+ direction (cospip>0)",
50, 0.0, EvtConst::twoPi );
TH1F* chicospipn = new TH1F( "h5", "chi pi+ to pi- in D+ direction (cospip<0",
50, 0.0, EvtConst::twoPi );
TH1F* chipp = new TH1F( "h6",
"chi pi+ to pi- in D+ direction (cospip>0,cospim>0)",
50, 0.0, EvtConst::twoPi );
TH1F* chipn = new TH1F( "h7",
"chi pi+ to pi- in D+ direction (cospip>0,cospim<0)",
50, 0.0, EvtConst::twoPi );
TH1F* chinp = new TH1F( "h8",
"chi pi+ to pi- in D+ direction (cospip<0,cospim>0)",
50, 0.0, EvtConst::twoPi );
TH1F* chinn = new TH1F( "h9",
"chi pi+ to pi- in D+ direction (cospip<0,cospim<0)",
50, 0.0, EvtConst::twoPi );
TH1F* chinnnn = new TH1F(
"h10", "chi pi+ to pi- in D+ direction (cospip<-0.5,cospim<-0.5)", 50,
0.0, EvtConst::twoPi );
int count = 1;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/SVVHELAMP.DEC" );
myGenerator.readUDecay( udecay_name );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( B0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( B0, p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle *p_b, *p_dstp, *p_dstm, *p_pip, *p_pim, *p_d0, *p_d0b;
EvtVector4R p4_b, p4_dstp, p4_dstm, p4_pip, p4_pim, p4_d0, p4_d0b;
p_b = root_part;
p_dstp = p_b->getDaug( 0 );
p_dstm = p_b->getDaug( 1 );
p_pip = p_dstp->getDaug( 1 );
p_pim = p_dstm->getDaug( 1 );
p_d0 = p_dstp->getDaug( 0 );
p_d0b = p_dstm->getDaug( 0 );
p4_b = p_b->getP4Lab();
p4_dstp = p_dstp->getP4Lab();
p4_dstm = p_dstm->getP4Lab();
p4_pip = p_pip->getP4Lab();
p4_pim = p_pim->getP4Lab();
p4_d0 = p_d0->getP4Lab();
p4_d0b = p_d0b->getP4Lab();
double costhpip = EvtDecayAngle( p4_b, p4_pip + p4_d0, p4_pip );
double costhpim = EvtDecayAngle( p4_b, p4_pim + p4_d0b, p4_pim );
double chiang = EvtDecayAngleChi( p4_b, p4_pip, p4_d0, p4_pim, p4_d0b );
cospip->Fill( costhpip );
cospim->Fill( costhpim );
chi->Fill( chiang );
if ( costhpip > 0 )
chicospipp->Fill( chiang );
if ( costhpip < 0 )
chicospipn->Fill( chiang );
if ( costhpip > 0 && costhpim > 0 )
chipp->Fill( chiang );
if ( costhpip > 0 && costhpim < 0 )
chipn->Fill( chiang );
if ( costhpip < 0 && costhpim > 0 )
chinp->Fill( chiang );
if ( costhpip < 0 && costhpim < 0 )
chinn->Fill( chiang );
if ( costhpip < -0.5 && costhpim < -0.5 )
chinnnn->Fill( chiang );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runPartWave( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "partwave.root", "RECREATE" );
TH1F* cospip = new TH1F( "h1", "cos theta pi+", 50, -1.0, 1.0 );
TH1F* cospim = new TH1F( "h2", "cos theta pi-", 50, -1.0, 1.0 );
TH1F* chi = new TH1F( "h3", "chi pi+ to pi- in D+ direction", 50, 0.0,
EvtConst::twoPi );
TH1F* chicospipp = new TH1F( "h4",
"chi pi+ to pi- in D+ direction (cospip>0)",
50, 0.0, EvtConst::twoPi );
TH1F* chicospipn = new TH1F( "h5", "chi pi+ to pi- in D+ direction (cospip<0",
50, 0.0, EvtConst::twoPi );
TH1F* chipp = new TH1F( "h6",
"chi pi+ to pi- in D+ direction (cospip>0,cospim>0)",
50, 0.0, EvtConst::twoPi );
TH1F* chipn = new TH1F( "h7",
"chi pi+ to pi- in D+ direction (cospip>0,cospim<0)",
50, 0.0, EvtConst::twoPi );
TH1F* chinp = new TH1F( "h8",
"chi pi+ to pi- in D+ direction (cospip<0,cospim>0)",
50, 0.0, EvtConst::twoPi );
TH1F* chinn = new TH1F( "h9",
"chi pi+ to pi- in D+ direction (cospip<0,cospim<0)",
50, 0.0, EvtConst::twoPi );
TH1F* chinnnn = new TH1F(
"h10", "chi pi+ to pi- in D+ direction (cospip<-0.5,cospim<-0.5)", 50,
0.0, EvtConst::twoPi );
int count = 1;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/PARTWAVE.DEC" );
myGenerator.readUDecay( udecay_name );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( B0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( B0, p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle *p_b, *p_dstp, *p_dstm, *p_pip, *p_pim, *p_d0, *p_d0b;
EvtVector4R p4_b, p4_dstp, p4_dstm, p4_pip, p4_pim, p4_d0, p4_d0b;
p_b = root_part;
p_dstp = p_b->getDaug( 0 );
p_dstm = p_b->getDaug( 1 );
p_pip = p_dstp->getDaug( 1 );
p_pim = p_dstm->getDaug( 1 );
p_d0 = p_dstp->getDaug( 0 );
p_d0b = p_dstm->getDaug( 0 );
p4_b = p_b->getP4Lab();
p4_dstp = p_dstp->getP4Lab();
p4_dstm = p_dstm->getP4Lab();
p4_pip = p_pip->getP4Lab();
p4_pim = p_pim->getP4Lab();
p4_d0 = p_d0->getP4Lab();
p4_d0b = p_d0b->getP4Lab();
double costhpip = EvtDecayAngle( p4_b, p4_pip + p4_d0, p4_pip );
double costhpim = EvtDecayAngle( p4_b, p4_pim + p4_d0b, p4_pim );
double chiang = EvtDecayAngleChi( p4_b, p4_pip, p4_d0, p4_pim, p4_d0b );
cospip->Fill( costhpip );
cospim->Fill( costhpim );
chi->Fill( chiang );
if ( costhpip > 0 )
chicospipp->Fill( chiang );
if ( costhpip < 0 )
chicospipn->Fill( chiang );
if ( costhpip > 0 && costhpim > 0 )
chipp->Fill( chiang );
if ( costhpip > 0 && costhpim < 0 )
chipn->Fill( chiang );
if ( costhpip < 0 && costhpim > 0 )
chinp->Fill( chiang );
if ( costhpip < 0 && costhpim < 0 )
chinn->Fill( chiang );
if ( costhpip < -0.5 && costhpim < -0.5 )
chinnnn->Fill( chiang );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runPartWave2( int nevent, EvtGen& myGenerator )
{
TFile file( "partwave2.root", "RECREATE" );
TH1F* cthetapi = new TH1F( "h1", "cos theta pi", 50, -1.0, 1.0 );
TH1F* cthetapi2 = new TH1F( "h2", "cos theta pi (|cosrho|<0.1)", 50, -1.0,
1.0 );
TH1F* cthetan = new TH1F( "h3", "cos thetan", 50, -1.0, 1.0 );
//TH1F* cthetan2 = new TH1F("h4","cos thetan costhetapi>0 ",
// 50,-1.0,1.0);
TH1F* cthetarho = new TH1F( "h4", "cos thetarho ", 50, -1.0, 1.0 );
int count = 1;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/PARTWAVE2.DEC" );
myGenerator.readUDecay( udecay_name );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( B0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( B0, p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle *p_b, *p_jpsi, *p_rho, *p_pi1, *p_pi2;
EvtVector4R p4_b, p4_jpsi, p4_rho, p4_pi1, p4_pi2;
p_b = root_part;
p_jpsi = root_part->getDaug( 0 );
p_rho = 0;
if ( p_jpsi->getDaug( 0 )->getNDaug() == 2 ) {
p_rho = p_jpsi->getDaug( 0 );
}
if ( p_jpsi->getDaug( 1 )->getNDaug() == 2 ) {
p_rho = p_jpsi->getDaug( 1 );
}
assert( p_rho != 0 );
p_pi1 = p_rho->getDaug( 0 );
p_pi2 = p_rho->getDaug( 1 );
p4_b = p_b->getP4Lab();
p4_jpsi = p_jpsi->getP4Lab();
p4_rho = p_rho->getP4Lab();
p4_pi1 = p_pi1->getP4Lab();
p4_pi2 = p_pi2->getP4Lab();
double costhetan = EvtDecayPlaneNormalAngle( p4_b, p4_jpsi, p4_pi1,
p4_pi2 );
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "costhetan:"<<costhetan<<std::endl;
cthetan->Fill( costhetan );
double costhpi = EvtDecayAngle( p4_jpsi, p4_rho, p4_pi1 );
double costhrho = EvtDecayAngle( p4_b, p4_jpsi, p4_rho );
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "costhetarho:"<<costhrho<<std::endl;
cthetarho->Fill( costhrho );
//if (((p4_rho.get(3)/p4_rho.d3mag()))<-0.95) cthetan2->Fill( costhetan );
cthetapi->Fill( costhpi );
if ( ( p4_rho.get( 3 ) / p4_rho.d3mag() ) > 0.9 ) {
cthetapi2->Fill( costhpi );
}
root_part->deleteTree();
} while ( count++ < nevent );
file.Write();
file.Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runTwoBody( int nevent, EvtGen& myGenerator, std::string decFile,
std::string rootFile )
{
TFile* file = new TFile( rootFile.c_str(), "RECREATE" );
int count = 0;
myGenerator.readUDecay( decFile.c_str() );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
vector<TH1F*> histograms;
do {
EvtVector4R p_init( EvtPDL::getMass( B0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( B0, p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
//root_part->printTree();
myGenerator.generateDecay( root_part );
int nhist = 0;
EvtParticle* p = root_part;
do {
int nDaug = p->getNDaug();
if ( !( nDaug == 0 || nDaug == 2 ) ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "nDaug=" << nDaug << " but can only handle 0 or 2!"
<< std::endl;
abort();
}
if ( nDaug == 2 ) {
if ( p->getParent() == 0 ) {
EvtVector4R p4 = p->getDaug( 0 )->getP4();
double ctheta = p4.get( 3 ) / p4.d3mag();
double phi = atan2( p4.get( 2 ), p4.get( 1 ) );
if ( count == 0 ) {
histograms.push_back(
new TH1F( "h1", "cos theta", 50, -1.0, 1.0 ) );
histograms.push_back( new TH1F(
"h2", "phi", 50, -EvtConst::pi, EvtConst::pi ) );
}
histograms[nhist++]->Fill( ctheta );
histograms[nhist++]->Fill( phi );
} else {
double ctheta = EvtDecayAngle( p->getParent()->getP4Lab(),
p->getP4Lab(),
p->getDaug( 0 )->getP4Lab() );
if ( count == 0 ) {
// char* tmp=new char[10];
// std::ostrstream strm(tmp,9);
// strm << (nhist+1) << '\0'<< std::endl;
// histograms.push_back(new TH1F(TString("h")+tmp,TString("cos theta")+tmp,50,-1.0,1.0));
std::ostringstream strm;
strm << ( nhist + 1 );
histograms.push_back(
new TH1F( TString( "h" ) + strm.str().c_str(),
TString( "cos theta" ) + strm.str().c_str(),
50, -1.0, 1.0 ) );
}
histograms[nhist++]->Fill( ctheta );
if ( p->getDaug( 0 )->getNDaug() == 2 ) {
double costhetan = EvtDecayPlaneNormalAngle(
p->getParent()->getP4Lab(), p->getP4Lab(),
p->getDaug( 0 )->getDaug( 0 )->getP4Lab(),
p->getDaug( 0 )->getDaug( 1 )->getP4Lab() );
if ( count == 0 ) {
// char* tmp=new char[10];
// std::ostrstream strm(tmp,9);
// strm << (nhist+1) << '\0'<< std::endl;
// histograms.push_back(new TH1F(TString("h")+tmp,TString("cos thetan")+tmp,50,-1.0,1.0));
std::ostringstream strm;
strm << ( nhist + 1 );
histograms.push_back( new TH1F(
TString( "h" ) + strm.str().c_str(),
TString( "cos theta" ) + strm.str().c_str(), 50,
-1.0, 1.0 ) );
}
histograms[nhist++]->Fill( costhetan );
}
if ( p->getDaug( 1 )->getNDaug() == 2 ) {
double costhetan = EvtDecayPlaneNormalAngle(
p->getParent()->getP4Lab(), p->getP4Lab(),
p->getDaug( 1 )->getDaug( 0 )->getP4Lab(),
p->getDaug( 1 )->getDaug( 1 )->getP4Lab() );
if ( count == 0 ) {
// char* tmp=new char[10];
// std::ostrstream strm(tmp,9);
// strm << (nhist+1) << '\0'<< std::endl;
// histograms.push_back(new TH1F(TString("h")+tmp,TString("cos thetan")+tmp,50,-1.0,1.0));
std::ostringstream strm;
strm << ( nhist + 1 );
histograms.push_back( new TH1F(
TString( "h" ) + strm.str().c_str(),
TString( "cos theta" ) + strm.str().c_str(), 50,
-1.0, 1.0 ) );
}
histograms[nhist++]->Fill( costhetan );
}
}
}
p = p->nextIter( root_part );
} while ( p != 0 );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runPiPi( int nevent, EvtGen& myGenerator )
{
std::ofstream outmix;
outmix.open( "pipi.dat" );
TFile* file = new TFile( "pipi.root", "RECREATE" );
TH1F* tB0Hist = new TH1F( "h1", "dt in B->pipi with B0 tag", 50, -5.0, 5.0 );
TH1F* tB0BHist = new TH1F( "h2", "dt in B->pipi with B0B tag", 50, -5.0, 5.0 );
TH1F* tB0 = new TH1F( "h3", "t in B->pipi for B0 tag", 25, 0.0, 5.0 );
TH1F* tB0B = new TH1F( "h4", "t in B->pipi for B0B tag", 25, 0.0, 5.0 );
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/PIPI.DEC" );
//EvtGen myGenerator(decay_name,pdttable_name,myRandomEngine);
myGenerator.readUDecay( udecay_name );
EvtParticle *bcp, *btag;
int count = 1;
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
static EvtId B0B = EvtPDL::getId( std::string( "anti-B0" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
if ( root_part->getDaug( 0 )->getNDaug() == 3 ) {
btag = root_part->getDaug( 0 );
bcp = root_part->getDaug( 1 );
} else {
bcp = root_part->getDaug( 0 );
btag = root_part->getDaug( 1 );
}
EvtId tag; //cp tag
if ( btag->getId() == B0B ) {
tag = B0;
} else {
tag = B0B;
}
// int a1=bcp->getDaug(0)->getId();
if ( tag == B0 )
tB0Hist->Fill( bcp->getLifetime() - btag->getLifetime() );
if ( tag == B0 )
tB0->Fill( btag->getLifetime() );
if ( tag == B0B )
tB0BHist->Fill( bcp->getLifetime() - btag->getLifetime() );
if ( tag == B0B )
tB0B->Fill( btag->getLifetime() );
outmix << bcp->getLifetime() << " " << btag->getLifetime() << " "
<< tag.getId() << std::endl;
root_part->deleteTree();
} while ( count++ < nevent );
outmix.close();
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runA1Pi( int nevent, EvtGen& myGenerator )
{
std::ofstream outmix;
outmix.open( "a1pi.dat" );
int count = 1;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/A1PI.DEC" );
myGenerator.readUDecay( udecay_name );
EvtParticle *bcp, *btag;
EvtParticle *a1, *rho0, *pi1, *pi2, *pi3, *pi4;
EvtVector4R p4bcp, p4a1, p4rho0, p4pi1, p4pi2, p4pi3, p4pi4;
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
static EvtId B0B = EvtPDL::getId( std::string( "anti-B0" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
if ( root_part->getDaug( 0 )->getNDaug() == 3 ) {
btag = root_part->getDaug( 0 );
bcp = root_part->getDaug( 1 );
} else {
bcp = root_part->getDaug( 0 );
btag = root_part->getDaug( 1 );
}
a1 = bcp->getDaug( 0 );
pi1 = bcp->getDaug( 1 );
rho0 = a1->getDaug( 0 );
pi2 = a1->getDaug( 1 );
pi3 = rho0->getDaug( 0 );
pi4 = rho0->getDaug( 1 );
p4bcp = bcp->getP4Lab();
p4a1 = a1->getP4Lab();
p4pi1 = pi1->getP4Lab();
p4rho0 = rho0->getP4Lab();
p4pi2 = pi2->getP4Lab();
p4pi3 = pi3->getP4Lab();
p4pi4 = pi4->getP4Lab();
EvtId tag; //cp tag
if ( btag->getId() == B0B ) {
tag = B0;
} else {
tag = B0B;
}
outmix << bcp->getLifetime() << " " << btag->getLifetime() << " "
<< EvtDecayAngle( p4bcp, p4rho0 + p4pi2, p4rho0 ) << " "
<< EvtDecayAngle( p4a1, p4pi3 + p4pi4, p4pi3 ) << " "
<< EvtPDL::getStdHep( tag ) << std::endl;
root_part->deleteTree();
} while ( count++ < nevent );
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runCPTest( int nevent, EvtGen& myGenerator )
{
std::ofstream outmix;
outmix.open( "cptest.dat" );
int count = 1;
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
static EvtId B0B = EvtPDL::getId( std::string( "anti-B0" ) );
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/CPTEST.DEC" );
//EvtGen myGenerator(decay_name,pdttable_name,myRandomEngine);
myGenerator.readUDecay( udecay_name );
EvtParticle *bcp, *btag;
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
if ( root_part->getDaug( 0 )->getNDaug() == 3 ) {
btag = root_part->getDaug( 0 );
bcp = root_part->getDaug( 1 );
} else {
bcp = root_part->getDaug( 0 );
btag = root_part->getDaug( 1 );
}
EvtId tag; //cp tag
if ( btag->getId() == B0B ) {
tag = B0;
} else {
tag = B0B;
}
outmix << bcp->getLifetime() << " " << btag->getLifetime() << " "
<< tag.getId() << std::endl;
root_part->deleteTree();
} while ( count++ < nevent );
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runBtoXsgamma( int nevent, EvtGen& myGenerator )
{
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
TFile* file = new TFile( "BtoXsgamma.root", "RECREATE" );
int count = 1;
EvtParticle* root_part;
EvtVectorParticle* vector_part;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/BTOXSGAMMA.DEC" );
myGenerator.readUDecay( udecay_name );
// Plot kinematics for b->s,gamma
int strangeid, antistrangeid;
int Bmulti, bId1a, bId1b, bId2a, bId2b, b1Id, b2Id;
do {
vector_part = new EvtVectorParticle;
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
vector_part->init( UPS4, p_init );
root_part = (EvtParticle*)vector_part;
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle* B1 = root_part->getDaug( 0 );
Bmulti = B1->getNDaug();
if ( Bmulti == 1 )
B1 = B1->getDaug( 0 );
EvtId BId1a = B1->getDaug( 0 )->getId();
bId1a = EvtPDL::getStdHep( BId1a );
EvtId BId1b = B1->getDaug( 1 )->getId();
bId1b = EvtPDL::getStdHep( BId1b );
if ( Bmulti == 1 )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "B1"
<< " bId1a=" << bId1a << " bId1b=" << bId1b
<< " ndaug=" << B1->getNDaug()
<< " Bid=" << EvtPDL::getStdHep( B1->getId() ) << std::endl;
EvtParticle* B2 = root_part->getDaug( 1 );
Bmulti = B2->getNDaug();
if ( Bmulti == 1 )
B2 = B2->getDaug( 0 ); // B has a daughter which is a string
EvtId BId2a = B2->getDaug( 0 )->getId();
bId2a = EvtPDL::getStdHep( BId2a );
EvtId BId2b = B2->getDaug( 1 )->getId();
bId2b = EvtPDL::getStdHep( BId2b );
if ( Bmulti == 1 )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "B2"
<< " bId2a=" << bId2a << " bId2b=" << bId2b
<< " ndaug=" << B2->getNDaug()
<< " Bid=" << EvtPDL::getStdHep( B2->getId() ) << std::endl;
EvtId B1Id = B1->getId();
b1Id = EvtPDL::getStdHep( B1Id );
EvtId B2Id = B2->getId();
b2Id = EvtPDL::getStdHep( B2Id );
strangeid = 0;
antistrangeid = 0;
if ( ( b1Id == 511 ) || ( b1Id == -511 ) || ( b2Id == 511 ) ||
( b2Id == -511 ) ) {
strangeid = 30343;
antistrangeid = -30343;
} else if ( ( b1Id == 521 ) || ( b1Id == -521 ) || ( b2Id == 521 ) ||
( b2Id == -521 ) ) {
strangeid = 30353;
antistrangeid = -30353;
} else if ( ( b1Id == 531 ) || ( b1Id == -531 ) || ( b2Id == 531 ) ||
( b2Id == -531 ) ) {
strangeid = 30363;
antistrangeid = -30363;
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "bId1a " << bId1a << " bId1b " << bId1b << " bId2a " << bId2a
<< " bId2b " << bId2b << " for event " << count << std::endl;
EvtParticle* Bpeng = 0;
//int bnum=0;
int pengcount = 0;
if ( ( ( bId1a == strangeid ) && ( bId1b == 22 ) ) ||
( ( bId1a == antistrangeid ) && ( bId1b == 22 ) ) ||
( ( bId1b == strangeid ) && ( bId1a == 22 ) ) ||
( ( bId1b == antistrangeid ) && ( bId1a == 22 ) ) ) {
Bpeng = B1;
//bnum=1;
pengcount++;
}
if ( ( ( bId2a == strangeid ) && ( bId2b == 22 ) ) ||
( ( bId2a == antistrangeid ) && ( bId2b == 22 ) ) ||
( ( bId2b == strangeid ) && ( bId2a == 22 ) ) ||
( ( bId2b == antistrangeid ) && ( bId2a == 22 ) ) ) {
Bpeng = B2;
//bnum=2;
pengcount++;
}
if ( pengcount == 0 ) {
Bpeng = B1;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "No penguin decay for event " << count << std::endl;
//bnum=0;
} else if ( pengcount == 2 ) {
Bpeng = B1;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Two penguin decays in event " << count << std::endl;
//bnum=0;
}
Bmulti = Bpeng->getNDaug();
EvtParticle* Xs = Bpeng->getDaug( 0 );
//EvtParticle *gam = Bpeng->getDaug(1);
//EvtVector4R p4Xs = Xs->getP4Lab();
//EvtId BId = Bpeng->getId();
//EvtId XsId = Xs->getId();
int Xsmulti = Xs->getNDaug();
//EvtId gamId = gam->getId();
//int bId = EvtPDL::getStdHep(BId);
//int XId = EvtPDL::getStdHep(XsId);
//int gId = EvtPDL::getStdHep(gamId);
//float XsMass = p4Xs.mass();
//double gmass = p4gam.mass();
//double genergy = p4gam.get(0);
// debug stuff: EvtGenReport(EVTGEN_INFO,"EvtGen") << "bnum=" << bnum << " pengcount=" << pengcount << " bId=" << bId << " Bmulti=" << Bmulti << " XsId=" << XId << " gId=" << gId << std::endl;
//need to change this to root...I don't have the energy now
//tuple->column("bnum", bnum);
//tuple->column("pengcount", pengcount);
//tuple->column("bId", bId);
//tuple->column("Bmulti", Bmulti);
//tuple->column("XsId", XId);
//tuple->column("gId", gId);
//tuple->column("XsMass", XsMass);
//tuple->column("Xsmulti", Xsmulti, 0,"Xs", HTRange<int>(0,200));
//tuple->column("gmass", gmass);
//tuple->column("genergy", genergy);
//HTValOrderedVector<int> XDaugId, XDaugNephewId;
//HTValOrderedVector<float> XsDaugMass, XsDaugNephewMass;
int nTot( 0 );
for ( int i = 0; i < Xsmulti; i++ ) {
EvtParticle* XsDaug = Xs->getDaug( i );
//EvtVector4R p4XsDaug = XsDaug->getP4Lab();
EvtId XsDaugId = XsDaug->getId();
//XDaugId.push_back(EvtPDL::getStdHep(XsDaugId));
//XsDaugMass.push_back( p4XsDaug.mass());
int Daumulti = XsDaug->getNDaug();
if ( abs( EvtPDL::getStdHep( XsDaugId ) ) == 321 ||
EvtPDL::getStdHep( XsDaugId ) == 310 ||
EvtPDL::getStdHep( XsDaugId ) == 111 ||
abs( EvtPDL::getStdHep( XsDaugId ) ) == 211 || Daumulti == 0 ) {
nTot++;
//EvtVector4R p4XsDaugNephew = XsDaug->getP4Lab();
//EvtId XsDaugNephewId =XsDaug->getId() ;
//XDaugNephewId.push_back(EvtPDL::getStdHep(XsDaugId));
//XsDaugNephewMass.push_back( p4XsDaug.mass());
} else if ( Daumulti != 0 ) {
for ( int k = 0; k < Daumulti; k++ ) {
EvtParticle* XsDaugNephew = XsDaug->getDaug( k );
EvtId XsDaugNephewId = XsDaugNephew->getId();
int Nephmulti = XsDaugNephew->getNDaug();
if ( Nephmulti == 0 ||
abs( EvtPDL::getStdHep( XsDaugNephewId ) ) == 321 ||
EvtPDL::getStdHep( XsDaugNephewId ) == 310 ||
EvtPDL::getStdHep( XsDaugNephewId ) == 111 ||
abs( EvtPDL::getStdHep( XsDaugNephewId ) ) == 211 ) {
nTot++;
//EvtVector4R p4XsDaugNephew = XsDaugNephew->getP4Lab();
//XDaugNephewId.push_back(EvtPDL::getStdHep(XsDaugNephewId));
//XsDaugNephewMass.push_back( p4XsDaugNephew.mass());
} else {
for ( int g = 0; g < Nephmulti; g++ ) {
nTot++;
//EvtParticle *XsDaugNephewNephew = XsDaugNephew->getDaug(g);
//EvtVector4R p4XsDaugNephewNephew = XsDaugNephewNephew->getP4Lab();
//EvtId XsDaugNephewNephewId = XsDaugNephewNephew->getId();
//XDaugNephewId.push_back(EvtPDL::getStdHep(XsDaugNephewNephewId));
//XsDaugNephewMass.push_back( p4XsDaugNephewNephew.mass());
}
}
}
}
}
//tuple->column("XsDaugId", XDaugId,"Xsmulti", 0, "Xs");
//tuple->column("XsDaugMass", XsDaugMass,"Xsmulti", 0, "Xs");
//tuple->column("nTot", nTot, 0,"nTot", HTRange<int>(0,200));
//tuple->column("XsDaugNephewId", XDaugNephewId,"nTot", 0, "nTot");
//tuple->column("XsDaugNephewMass", XsDaugNephewMass,"nTot", 0, "nTot");
//tuple->dumpData();
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "End EvtGen. Ran on " << nevent << " events." << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runBtoK1273gamma( int nevent, EvtGen& myGenerator )
{
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
TFile* file = new TFile( "BtoK1273gamma.root", "RECREATE" );
//HepTuple *tuple = hfile.ntuple("BtoK1273gamma", 1);
int count = 1;
EvtParticle* root_part;
EvtVectorParticle* vector_part;
char udecay_name[100];
strcpy( udecay_name, "exampleFiles/BTOK1273GAMMA.DEC" );
myGenerator.readUDecay( udecay_name );
// Plot kinematics for b->s,gamma
int strangeid, antistrangeid;
int Bmulti, bId1a, bId1b, bId2a, bId2b, b1Id, b2Id;
do {
vector_part = new EvtVectorParticle;
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
vector_part->init( UPS4, p_init );
root_part = (EvtParticle*)vector_part;
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle* B1 = root_part->getDaug( 0 );
Bmulti = B1->getNDaug();
if ( Bmulti == 1 )
B1 = B1->getDaug( 0 );
EvtId BId1a = B1->getDaug( 0 )->getId();
bId1a = EvtPDL::getStdHep( BId1a );
EvtId BId1b = B1->getDaug( 1 )->getId();
bId1b = EvtPDL::getStdHep( BId1b );
if ( Bmulti == 1 )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "B1"
<< " bId1a=" << bId1a << " bId1b=" << bId1b
<< " ndaug=" << B1->getNDaug()
<< " Bid=" << EvtPDL::getStdHep( B1->getId() ) << std::endl;
EvtParticle* B2 = root_part->getDaug( 1 );
Bmulti = B2->getNDaug();
if ( Bmulti == 1 )
B2 = B2->getDaug( 0 ); // B has a daughter which is a string
EvtId BId2a = B2->getDaug( 0 )->getId();
bId2a = EvtPDL::getStdHep( BId2a );
EvtId BId2b = B2->getDaug( 1 )->getId();
bId2b = EvtPDL::getStdHep( BId2b );
if ( Bmulti == 1 )
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "B2"
<< " bId2a=" << bId2a << " bId2b=" << bId2b
<< " ndaug=" << B2->getNDaug()
<< " Bid=" << EvtPDL::getStdHep( B2->getId() ) << std::endl;
EvtId B1Id = B1->getId();
b1Id = EvtPDL::getStdHep( B1Id );
EvtId B2Id = B2->getId();
b2Id = EvtPDL::getStdHep( B2Id );
strangeid = 0;
antistrangeid = 0;
if ( ( b1Id == 511 ) || ( b1Id == -511 ) || ( b2Id == 511 ) ||
( b2Id == -511 ) ) {
strangeid = 10313;
antistrangeid = -10313;
} else if ( ( b1Id == 521 ) || ( b1Id == -521 ) || ( b2Id == 521 ) ||
( b2Id == -521 ) ) {
strangeid = 10323;
antistrangeid = -10323;
}
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "bId1a " << bId1a << " bId1b " << bId1b << " bId2a " << bId2a
<< " bId2b " << bId2b << " for event " << count << std::endl;
EvtParticle* Bpeng = 0;
//int bnum=0;
int pengcount = 0;
if ( ( ( bId1a == strangeid ) && ( bId1b == 22 ) ) ||
( ( bId1a == antistrangeid ) && ( bId1b == 22 ) ) ||
( ( bId1b == strangeid ) && ( bId1a == 22 ) ) ||
( ( bId1b == antistrangeid ) && ( bId1a == 22 ) ) ) {
Bpeng = B1;
//bnum=1;
pengcount++;
}
if ( ( ( bId2a == strangeid ) && ( bId2b == 22 ) ) ||
( ( bId2a == antistrangeid ) && ( bId2b == 22 ) ) ||
( ( bId2b == strangeid ) && ( bId2a == 22 ) ) ||
( ( bId2b == antistrangeid ) && ( bId2a == 22 ) ) ) {
Bpeng = B2;
//bnum=2;
pengcount++;
}
if ( pengcount == 0 ) {
Bpeng = B1;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "No penguin decay for event " << count << std::endl;
//bnum=0;
} else if ( pengcount == 2 ) {
Bpeng = B1;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Two penguin decays in event " << count << std::endl;
//bnum=0;
}
Bmulti = Bpeng->getNDaug();
//EvtParticle *Ks = Bpeng->getDaug(0);
//EvtParticle *gam = Bpeng->getDaug(1);
//EvtVector4R p4Ks = Ks->getP4Lab();
//const EvtVector4R& p4gam = gam->getP4(); // gamma 4-mom in parent's rest frame
//EvtId BId = Bpeng->getId();
//EvtId KsId = Ks->getId();
//int Ksmulti = Ks->getNDaug();
//EvtId gamId = gam->getId();
//int bId = EvtPDL::getStdHep(BId);
//int XId = EvtPDL::getStdHep(KsId);
//int gId = EvtPDL::getStdHep(gamId);
//double KsMass = p4Ks.mass();
//double gmass = p4gam.mass();
//double genergy = p4gam.get(0);
// debug stuff: EvtGenReport(EVTGEN_INFO,"EvtGen") << "bnum=" << bnum << " pengcount=" << pengcount << " bId=" << bId << " Bmulti=" << Bmulti << " KsId=" << XId << " gId=" << gId << std::endl;
//tuple->column("bnum", bnum);
//tuple->column("pengcount", pengcount);
//tuple->column("bId", bId);
//tuple->column("Bmulti", Bmulti);
//tuple->column("KsId", XId);
//tuple->column("gId", gId);
//tuple->column("KsMass", KsMass);
//tuple->column("Ksmulti", Ksmulti);
//tuple->column("gmass", gmass);
//tuple->column("genergy", genergy);
//for(int i=0;i<Ksmulti;i++){
//EvtParticle *KsDaug = Ks->getDaug(i);
//EvtVector4R p4KsDaug = KsDaug->getP4Lab();
//EvtId KsDaugId = KsDaug->getId();
//int XDaugId = EvtPDL::getStdHep(KsDaugId);
//double KsDaugMass = p4KsDaug.mass();
//tuple->column("KsDaugId", XDaugId);
//tuple->column("KsDaugMass", KsDaugMass);
//}
//tuple->dumpData();
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "End EvtGen. Ran on " << nevent << " events." << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runCheckRotBoost()
{
EvtDiracSpinor sp1, sp2;
//Generate ryd/lange random spinors.
sp1.set( EvtComplex( 1.0, -2.0 ), EvtComplex( 3.0, 1.0 ),
EvtComplex( -4.5, 0.5 ), EvtComplex( 0.2, -0.5 ) );
sp2.set( EvtComplex( 0.1, -1.0 ), EvtComplex( 1.2, -0.5 ),
EvtComplex( 3.6, 1.8 ), EvtComplex( -0.2, -0.6 ) );
EvtComplex s = EvtLeptonSCurrent( sp1, sp2 );
EvtComplex p = EvtLeptonPCurrent( sp1, sp2 );
EvtVector4C a = EvtLeptonACurrent( sp1, sp2 );
EvtVector4C v = EvtLeptonVCurrent( sp1, sp2 );
EvtVector4C va = EvtLeptonVACurrent( sp1, sp2 );
EvtTensor4C t = EvtLeptonTCurrent( sp1, sp2 );
//start with boosts...
EvtVector4R ranBoost( 2.0, 0.4, -0.8, 0.3 );
EvtDiracSpinor sp1Boost = boostTo( sp1, ranBoost );
EvtDiracSpinor sp2Boost = boostTo( sp2, ranBoost );
EvtComplex sBoost = EvtLeptonSCurrent( sp1Boost, sp2Boost );
EvtComplex pBoost = EvtLeptonPCurrent( sp1Boost, sp2Boost );
EvtVector4C aBoost = EvtLeptonACurrent( sp1Boost, sp2Boost );
EvtVector4C vBoost = EvtLeptonVCurrent( sp1Boost, sp2Boost );
EvtVector4C vaBoost = EvtLeptonVACurrent( sp1Boost, sp2Boost );
EvtTensor4C tBoost = EvtLeptonTCurrent( sp1Boost, sp2Boost );
EvtVector4C aDirBoost = boostTo( a, ranBoost );
EvtVector4C vDirBoost = boostTo( v, ranBoost );
EvtVector4C vaDirBoost = boostTo( va, ranBoost );
EvtTensor4C tDirBoost( t );
tDirBoost.applyBoostTo( ranBoost );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Comparing after doing a random boost" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Scalar " << s << " " << sBoost << s - sBoost << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "PseudoScalar " << p << " " << pBoost << p - pBoost << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "AxialVector " << aDirBoost << " " << aBoost << aDirBoost - aBoost
<< std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Vector " << vDirBoost << " " << vBoost << vDirBoost - vBoost
<< std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "V-A " << vaDirBoost << " " << vaBoost << vaDirBoost - vaBoost
<< std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Tensor " << tDirBoost << " " << tBoost << tDirBoost - tBoost
<< std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Done comparing after doing a random boost" << std::endl;
//Now do rotations...
//start with boosts...
double alpha = 0.4;
double beta = -0.61;
double gamma = 3.0;
EvtDiracSpinor sp1Rot = rotateEuler( sp1, alpha, beta, gamma );
EvtDiracSpinor sp2Rot = rotateEuler( sp2, alpha, beta, gamma );
EvtComplex sRot = EvtLeptonSCurrent( sp1Rot, sp2Rot );
EvtComplex pRot = EvtLeptonPCurrent( sp1Rot, sp2Rot );
EvtVector4C aRot = EvtLeptonACurrent( sp1Rot, sp2Rot );
EvtVector4C vRot = EvtLeptonVCurrent( sp1Rot, sp2Rot );
EvtVector4C vaRot = EvtLeptonVACurrent( sp1Rot, sp2Rot );
EvtTensor4C tRot = EvtLeptonTCurrent( sp1Rot, sp2Rot );
EvtVector4C aDirRot( a );
EvtVector4C vDirRot( v );
EvtVector4C vaDirRot( va );
EvtTensor4C tDirRot( t );
aDirRot.applyRotateEuler( alpha, beta, gamma );
vDirRot.applyRotateEuler( alpha, beta, gamma );
vaDirRot.applyRotateEuler( alpha, beta, gamma );
tDirRot.applyRotateEuler( alpha, beta, gamma );
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Comparing after doing a random rotation" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Scalar " << s << " " << sRot << s - sRot << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "PseudoScalar " << p << " " << pRot << p - pRot << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "AxialVector " << aDirRot << " "
<< aRot << aDirRot - aRot << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Vector " << vDirRot << " " << vRot << vDirRot - vRot << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "V-A " << vaDirRot << " " << vaRot << vaDirRot - vaRot << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Tensor " << tDirRot << " " << tRot << tDirRot - tRot << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< "Done comparing after doing a random rotation" << std::endl;
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
int countInclusive( std::string name, EvtParticle* root_part, TH1F* mom,
TH1F* mass )
{
EvtParticle* p = root_part;
int temp = 0;
EvtId searchFor = EvtPDL::getId( name );
do {
EvtId type = p->getId();
if ( type == searchFor ) {
temp += 1;
if ( mom )
mom->Fill( p->getP4Lab().d3mag() );
if ( mass )
mass->Fill( p->mass() );
//if ( theBs.contains(p->getParent()->getId()) ) {
//dirPsimom->Fill(p->getP4Lab().d3mag());
//}
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "LANGE " << p->getP4Lab().d3mag() << " " << p->getP4Lab().get(3)/p->getP4Lab().d3mag() << std::endl;
}
p = p->nextIter( root_part );
} while ( p != 0 );
return temp;
}
int countInclusiveSubTree( std::string name, EvtParticle* root_part,
EvtIdSet setIds, TH1F* /*mom*/ )
{
int temp = 0;
EvtParticle* p = root_part;
do {
if ( setIds.contains( p->getId() ) ) {
temp += countInclusive( name, p );
}
//p->printTree();
p = p->nextIter( root_part );
} while ( p != 0 );
//EvtGenReport(EVTGEN_INFO,"EvtGen") << "done"<<std::endl;
return temp;
}
int countInclusiveParent( std::string name, EvtParticle* root_part,
EvtIdSet setIds, TH1F* mom )
{
EvtParticle* p = root_part;
int temp = 0;
EvtId searchFor = EvtPDL::getId( name );
do {
EvtId type = p->getId();
if ( type == searchFor ) {
if ( p->getParent() ) {
if ( setIds.contains( p->getParent()->getId() ) ) {
temp += 1;
if ( mom )
mom->Fill( p->getP4Lab().d3mag() );
}
}
}
p = p->nextIter( root_part );
} while ( p != 0 );
return temp;
}
void runBMix( int nevent, EvtGen& myGenerator, std::string userFile,
std::string rootFile )
{
TFile* file = new TFile( rootFile.c_str(), "RECREATE" );
TH1F* b0_b0 = new TH1F( "h1", "dt B0-B0", 100, -15.0, 15.0 );
TH1F* b0b_b0b = new TH1F( "h2", "dt B0B-B0B", 100, -15.0, 15.0 );
TH1F* b0b_b0 = new TH1F( "h3", "dt B0B-B0", 100, -15.0, 15.0 );
TH1F* b0_b0b = new TH1F( "h4", "dt B0-B0B", 100, -15.0, 15.0 );
int count = 1;
myGenerator.readUDecay( userFile.c_str() );
EvtId b0 = EvtPDL::getId( "B0" );
EvtId b0b = EvtPDL::getId( "anti-B0" );
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
std::ofstream outmix;
TString outFileName( rootFile.c_str() );
outFileName.ReplaceAll( ".root", ".dat" );
outmix.open( outFileName.Data() );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
EvtId id1 = root_part->getDaug( 0 )->getId();
EvtId id2 = root_part->getDaug( 1 )->getId();
double t1 = root_part->getDaug( 0 )->getLifetime();
double t2 = root_part->getDaug( 1 )->getLifetime();
double dt = ( t1 - t2 ) / ( 1e-12 * 3e11 );
if ( id1 == b0 && id2 == b0 ) {
b0_b0->Fill( dt );
outmix << dt << " 1" << std::endl;
}
if ( id1 == b0b && id2 == b0b ) {
b0b_b0b->Fill( dt );
outmix << dt << " 2" << std::endl;
}
if ( id1 == b0b && id2 == b0 ) {
b0b_b0->Fill( dt );
outmix << dt << " 0" << std::endl;
}
if ( id1 == b0 && id2 == b0b ) {
b0_b0b->Fill( dt );
outmix << dt << " 0" << std::endl;
}
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runDDalitz( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "ddalitz.root", "RECREATE" );
TH2F* dalitz = new TH2F( "h1", "m^2!?[K-[p]+! vs m^2!?[K-[p]0!", 70, 0.0,
3.5, 70, 0.0, 3.5 );
TH2F* dalitz2 = new TH2F( "h5", "m^2!([p]^-![p]^0!) vs m^2!([K-[p]+!", 100,
0.0, 3.5, 100, 0.0, 2.0 );
TH1F* m12 = new TH1F( "h2", "m?[K-[p]+!", 100, 0.0, 3.0 );
TH1F* m13 = new TH1F( "h3", "m?[K-[p]0!", 100, 0.0, 3.0 );
TH1F* m23 = new TH1F( "h4", "m?[[p]+[p]0!", 100, 0.0, 2.0 );
int count;
myGenerator.readUDecay( "exampleFiles/DDALITZ.DEC" );
count = 1;
static EvtId D0 = EvtPDL::getId( std::string( "D0" ) );
std::ofstream outmix;
outmix.open( "ddalitz.dat" );
do {
EvtVector4R p_init( EvtPDL::getMass( D0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( D0, p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
EvtVector4R p1 = root_part->getDaug( 0 )->getP4Lab();
EvtVector4R p2 = root_part->getDaug( 1 )->getP4Lab();
EvtVector4R p3 = root_part->getDaug( 2 )->getP4Lab();
dalitz->Fill( ( p1 + p2 ).mass2(), ( p1 + p3 ).mass2(), 1.0 );
dalitz2->Fill( ( p1 + p2 ).mass2(), ( p2 + p3 ).mass2(), 1.0 );
m12->Fill( ( p1 + p2 ).mass2() );
m13->Fill( ( p1 + p3 ).mass2() );
m23->Fill( ( p2 + p3 ).mass2() );
outmix << ( p1 + p2 ).mass2() << " " << ( p2 + p3 ).mass2() << " "
<< ( p1 + p3 ).mass2() << std::endl;
root_part->deleteTree();
if ( count == nevent - 1 ) {
std::ofstream testi( "testi.dat" );
double val = m12->GetMean();
double errval = m12->GetMeanError();
testi << "evtgenlhc_test1 1 " << val << " " << errval
<< std::endl;
val = m23->GetMean();
errval = m23->GetMeanError();
testi << "evtgenlhc_test1 2 " << val << " " << errval
<< std::endl;
}
} while ( count++ < nevent );
file->Write();
file->Close();
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runPiPiPi( int nevent, EvtGen& myGenerator )
{
std::ofstream outmix;
outmix.open( "pipipi.dat" );
int count;
EvtVector4R p4pip, p4pim, p4pi0;
myGenerator.readUDecay( "exampleFiles/PIPIPI.DEC" );
count = 1;
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
p4pip = root_part->getDaug( 0 )->getDaug( 0 )->getP4Lab();
p4pim = root_part->getDaug( 0 )->getDaug( 1 )->getP4Lab();
p4pi0 = root_part->getDaug( 0 )->getDaug( 2 )->getP4Lab();
outmix << root_part->getDaug( 0 )->getLifetime() << " "
<< root_part->getDaug( 1 )->getLifetime() << " ";
outmix << ( p4pip + p4pim ).mass2() << " " << ( p4pip + p4pi0 ).mass2()
<< std::endl;
root_part->deleteTree();
} while ( count++ < nevent );
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runBHadronic( int nevent, EvtGen& myGenerator )
{
std::ofstream outmix;
outmix.open( "bhadronic.dat" );
int count;
myGenerator.readUDecay( "exampleFiles/BHADRONIC.DEC" );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
count = 1;
do {
EvtVector4R p_init( EvtPDL::getMass( B0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( B0, p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle* p;
// root_part->printTree();
p = root_part;
do {
outmix << p->getId().getId() << " " << p->getP4Lab().d3mag()
<< std::endl;
p = p->nextIter();
} while ( p != 0 );
root_part->deleteTree();
} while ( count++ < nevent );
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runSingleB( int nevent, EvtGen& myGenerator )
{
int count;
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
count = 1;
do {
EvtVector4R p_init( EvtPDL::getMass( B0 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( B0, p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
root_part->deleteTree();
} while ( count++ < nevent );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runPiPiPiPi( int nevent, EvtGen& myGenerator )
{
std::ofstream outmix;
outmix.open( "pipipipi.dat" );
int count;
EvtVector4R p4pi1, p4pi2, p4pi3, p4pi4;
myGenerator.readUDecay( "exampleFiles/PIPIPIPI.DEC" );
count = 1;
EvtParticle *bcp, *btag;
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
static EvtId B0B = EvtPDL::getId( std::string( "anti-B0" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
if ( root_part->getDaug( 0 )->getNDaug() == 3 ) {
btag = root_part->getDaug( 0 );
bcp = root_part->getDaug( 1 );
} else {
bcp = root_part->getDaug( 0 );
btag = root_part->getDaug( 1 );
}
EvtId tag; //cp tag
if ( btag->getId() == B0B ) {
tag = B0;
} else {
tag = B0B;
}
p4pi1 = bcp->getDaug( 0 )->getP4Lab();
p4pi2 = bcp->getDaug( 1 )->getP4Lab();
p4pi3 = bcp->getDaug( 2 )->getP4Lab();
p4pi4 = bcp->getDaug( 3 )->getP4Lab();
EvtVector4R p4bcp, p4rho0, p4a2;
p4rho0 = p4pi1 + p4pi2;
p4a2 = p4rho0 + p4pi3;
p4bcp = p4a2 + p4pi4;
outmix << bcp->getLifetime() << " " << btag->getLifetime() << " "
<< tag.getId() << " " << ( p4pi1 + p4pi2 + p4pi3 ).mass() << " "
<< ( p4pi1 + p4pi2 ).mass() << " "
<< EvtDecayAngle( p4bcp, p4rho0 + p4pi3, p4rho0 ) << " "
<< EvtDecayAngle( p4a2, p4pi1 + p4pi2, p4pi1 ) << std::endl;
root_part->deleteTree();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "count:" << count << std::endl;
} while ( count++ < nevent );
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runA2Pi( int nevent, EvtGen& myGenerator )
{
std::ofstream outmix;
outmix.open( "a2pi.dat" );
int count;
myGenerator.readUDecay( "exampleFiles/A2PI.DEC" );
EvtParticle *bcp, *btag;
EvtParticle *a2, *rho0, *pi1, *pi2, *pi3, *pi4;
EvtVector4R p4bcp, p4a2, p4rho0, p4pi1, p4pi2, p4pi3, p4pi4;
count = 1;
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
static EvtId B0B = EvtPDL::getId( std::string( "anti-B0" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
if ( root_part->getDaug( 0 )->getNDaug() == 3 ) {
btag = root_part->getDaug( 0 );
bcp = root_part->getDaug( 1 );
} else {
bcp = root_part->getDaug( 0 );
btag = root_part->getDaug( 1 );
}
a2 = bcp->getDaug( 0 );
pi1 = bcp->getDaug( 1 );
rho0 = a2->getDaug( 0 );
pi2 = a2->getDaug( 1 );
pi3 = rho0->getDaug( 0 );
pi4 = rho0->getDaug( 1 );
p4bcp = bcp->getP4Lab();
p4a2 = a2->getP4Lab();
p4pi1 = pi1->getP4Lab();
p4rho0 = rho0->getP4Lab();
p4pi2 = pi2->getP4Lab();
p4pi3 = pi3->getP4Lab();
p4pi4 = pi4->getP4Lab();
EvtId tag; //cp tag
if ( btag->getId() == B0B ) {
tag = B0;
} else {
tag = B0B;
}
outmix << bcp->getLifetime() << " " << btag->getLifetime() << " "
<< EvtDecayAngle( p4bcp, p4rho0 + p4pi2, p4rho0 ) << " "
<< EvtDecayAngle( p4a2, p4pi3 + p4pi4, p4pi3 ) << " "
<< EvtPDL::getStdHep( tag ) << std::endl;
root_part->deleteTree();
} while ( count++ < nevent );
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runHelAmp( int nevent, EvtGen& myGenerator, std::string userFile,
std::string rootFile )
{
TFile* file = new TFile( rootFile.c_str(), "RECREATE" );
TH1F* costheta = new TH1F( "h1", "costheta", 100, -1.0, 1.0 );
TH1F* costheta2 = new TH1F( "h2", "costheta2", 100, -1.0, 1.0 );
int count;
myGenerator.readUDecay( userFile.c_str() );
count = 1;
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
EvtVector4R d14 = root_part->getDaug( 0 )->getP4Lab();
double c = d14.get( 3 ) / d14.d3mag();
costheta->Fill( c );
EvtVector4R p = root_part->getP4Lab();
EvtVector4R q = root_part->getDaug( 0 )->getP4Lab();
EvtVector4R d = root_part->getDaug( 0 )->getDaug( 0 )->getP4Lab();
costheta2->Fill( EvtDecayAngle( p, q, d ) );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runHelAmp2( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "helamp2.root", "RECREATE" );
TH1F* costheta = new TH1F( "h1", "costheta", 100, -1.0, 1.0 );
int count;
myGenerator.readUDecay( "exampleFiles/HELAMP2.DEC" );
count = 1;
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
EvtVector4R p = root_part->getDaug( 0 )->getDaug( 0 )->getP4Lab();
EvtVector4R q =
root_part->getDaug( 0 )->getDaug( 0 )->getDaug( 0 )->getP4Lab();
EvtVector4R d = root_part->getDaug( 0 )
->getDaug( 0 )
->getDaug( 0 )
->getDaug( 0 )
->getP4Lab();
costheta->Fill( EvtDecayAngle( p, q, d ) );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runD2Pi( int nevent, EvtGen& myGenerator )
{
TFile* file = new TFile( "d2pi.root", "RECREATE" );
TH1F* cospi = new TH1F( "h1", "cos[Q]?[p]!", 50, -1.0, 1.0 );
TH1F* ptpi = new TH1F( "h2", "Pt of pion", 50, 0.0, 1.5 );
TH1F* ppi = new TH1F( "h3", "P?[p]! in [Y](4S) rest frame", 50, 0.0, 1.5 );
int count;
myGenerator.readUDecay( "exampleFiles/D2PI.DEC" );
EvtParticle* b;
EvtParticle *d2, *pi;
EvtVector4R p4b, p4d2, p4pi;
count = 1;
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
b = root_part->getDaug( 0 );
d2 = b->getDaug( 0 );
pi = d2->getDaug( 1 );
p4b = b->getP4Lab();
p4d2 = d2->getP4Lab();
p4pi = pi->getP4Lab();
cospi->Fill( EvtDecayAngle( p4b, p4d2, p4pi ) );
ptpi->Fill( sqrt( p4pi.get( 2 ) * p4pi.get( 2 ) +
p4pi.get( 3 ) * p4pi.get( 3 ) ) );
ppi->Fill( p4pi.d3mag() );
root_part->deleteTree();
} while ( count++ < nevent );
file->Write();
file->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runPiPiCPT( int nevent, EvtGen& myGenerator )
{
std::ofstream outmix;
outmix.open( "pipicpt.dat" );
int count;
myGenerator.readUDecay( "exampleFiles/PIPICPT.DEC" );
EvtParticle *bcp, *btag;
count = 1;
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
static EvtId B0B = EvtPDL::getId( std::string( "anti-B0" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
if ( root_part->getDaug( 0 )->getNDaug() == 3 ) {
btag = root_part->getDaug( 0 );
bcp = root_part->getDaug( 1 );
} else {
bcp = root_part->getDaug( 0 );
btag = root_part->getDaug( 1 );
}
EvtId tag; //cp tag
if ( btag->getId() == B0B ) {
tag = B0;
} else {
tag = B0B;
}
outmix << bcp->getLifetime() << " " << btag->getLifetime() << " "
<< tag.getId() << std::endl;
root_part->deleteTree();
} while ( count++ < nevent );
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runJpsiKs( int nevent, EvtGen& myGenerator )
{
std::ofstream outmix;
outmix.open( "jpsiks.dat" );
int count;
myGenerator.readUDecay( "exampleFiles/JPSIKS.DEC" );
EvtParticle *bcp, *btag;
count = 1;
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId B0 = EvtPDL::getId( std::string( "B0" ) );
static EvtId B0B = EvtPDL::getId( std::string( "anti-B0" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
if ( root_part->getDaug( 0 )->getNDaug() == 3 ) {
btag = root_part->getDaug( 0 );
bcp = root_part->getDaug( 1 );
} else {
bcp = root_part->getDaug( 0 );
btag = root_part->getDaug( 1 );
}
EvtId tag; //cp tag
if ( btag->getId() == B0B ) {
tag = B0;
} else {
tag = B0B;
}
outmix << bcp->getLifetime() << " " << btag->getLifetime() << " "
<< tag.getId() << std::endl;
root_part->deleteTree();
} while ( count++ < nevent );
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runDump( int nevent, EvtGen& myGenerator )
{
int count;
std::ofstream outmix;
outmix.open( "dump.dat" );
EvtParticle* p;
myGenerator.readUDecay( "exampleFiles/DUMP.DEC" );
count = 1;
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId PIP = EvtPDL::getId( std::string( "pi+" ) );
static EvtId PIM = EvtPDL::getId( std::string( "pi-" ) );
static EvtId EP = EvtPDL::getId( std::string( "e+" ) );
static EvtId KP = EvtPDL::getId( std::string( "K+" ) );
static EvtId MUP = EvtPDL::getId( std::string( "mu+" ) );
static EvtId EM = EvtPDL::getId( std::string( "e-" ) );
static EvtId KM = EvtPDL::getId( std::string( "K-" ) );
static EvtId MUM = EvtPDL::getId( std::string( "mu-" ) );
static EvtId GAMM = EvtPDL::getId( std::string( "gamma" ) );
static EvtId K0L = EvtPDL::getId( std::string( "K_L0" ) );
do {
if ( count == 100 * ( count / 100 ) ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << count << std::endl;
}
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
p = root_part;
EvtParticle* otherb = root_part->getDaug( 1 );
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "Event:" << count << std::endl;
root_part->printTree();
outmix << "B"
<< " " << otherb->getP4Lab().get( 0 ) << " "
<< otherb->getP4Lab().get( 1 ) << " "
<< otherb->getP4Lab().get( 2 ) << " "
<< otherb->getP4Lab().get( 3 ) << std::endl;
do {
if ( p->getId() == PIP || p->getId() == EP || p->getId() == KP ||
p->getId() == MUP ) {
outmix << "chg +1"
<< " " << p->getP4Lab().get( 1 ) << " "
<< p->getP4Lab().get( 2 ) << " "
<< p->getP4Lab().get( 3 ) << std::endl;
}
if ( p->getId() == PIM || p->getId() == EM || p->getId() == KM ||
p->getId() == MUM ) {
outmix << "chg -1"
<< " " << p->getP4Lab().get( 1 ) << " "
<< p->getP4Lab().get( 2 ) << " "
<< p->getP4Lab().get( 3 ) << std::endl;
}
if ( p->getId() == GAMM || p->getId() == K0L ) {
outmix << "neu"
<< " " << p->getP4Lab().get( 1 ) << " "
<< p->getP4Lab().get( 2 ) << " "
<< p->getP4Lab().get( 3 ) << std::endl;
}
p = p->nextIter();
} while ( p != 0 );
outmix << "event" << std::endl;
root_part->deleteTree();
} while ( count++ < nevent );
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runGenericCont( int nevent, EvtGen& myGenerator )
{
int count;
std::ofstream outmix;
outmix.open( "genericcont.dat" );
EvtParticle* p;
myGenerator.readUDecay( "exampleFiles/GENERIC.DEC" );
count = 1;
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
static EvtId VPHO = EvtPDL::getId( std::string( "vpho" ) );
do {
if ( count == 1000 * ( count / 1000 ) ) {
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << count << std::endl;
}
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( VPHO,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
p = root_part;
do {
outmix << p->getId().getId() << " " << p->getP4Lab().d3mag()
<< std::endl;
p = p->nextIter();
} while ( p != 0 );
//root_part->printTree();
root_part->deleteTree();
} while ( count++ < nevent );
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runD1( int nevent, EvtGen& myGenerator )
{
std::ofstream outmix;
outmix.open( "d1.dat" );
int count = 1;
myGenerator.readUDecay( "exampleFiles/D1.DEC" );
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
EvtParticle *p_b, *p_d1, *p_e, *p_nu, *p_pi1, *p_dstar, *p_pi2, *p_d;
EvtVector4R p4_b, p4_d1, p4_e, p4_nu, p4_pi1, p4_dstar, p4_pi2, p4_d;
// code for analyzing B->D1 e nu ; D1 -> D* pi ; D* -> D pi
p_b = root_part->getDaug( 1 );
p_d1 = p_b->getDaug( 0 );
p_e = p_b->getDaug( 1 );
p_nu = p_b->getDaug( 2 );
p_dstar = p_d1->getDaug( 0 );
p_pi1 = p_d1->getDaug( 1 );
p_d = p_dstar->getDaug( 0 );
p_pi2 = p_dstar->getDaug( 1 );
p4_b = p_b->getP4Lab();
p4_d1 = p_d1->getP4Lab();
p4_e = p_e->getP4Lab();
p4_nu = p_nu->getP4Lab();
p4_dstar = p_dstar->getP4Lab();
p4_pi1 = p_pi1->getP4Lab();
p4_pi2 = p_pi2->getP4Lab();
p4_d = p_d->getP4Lab();
outmix << p4_e.get( 0 ) << " ";
outmix << ( p4_e + p4_nu ) * ( p4_e + p4_nu ) << " ";
outmix << EvtDecayAngle( p4_b, p4_e + p4_nu, p4_e ) << " ";
outmix << EvtDecayAngle( p4_b, p4_dstar + p4_pi1, p4_dstar ) << " ";
outmix << EvtDecayAngle( p4_d1, p4_d + p4_pi2, p4_d ) << " ";
outmix << EvtDecayAngleChi( p4_b, p4_e, p4_nu, p4_dstar, p4_pi1 ) << "\n";
root_part->deleteTree();
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << "count:" << count << std::endl;
} while ( count++ < nevent );
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runMix( int nevent, EvtGen& myGenerator )
{
std::ofstream outmix;
outmix.open( "mix.dat" );
int count = 1;
myGenerator.readUDecay( "exampleFiles/MIX.DEC" );
static EvtId UPS4 = EvtPDL::getId( std::string( "Upsilon(4S)" ) );
do {
EvtVector4R p_init( EvtPDL::getMass( UPS4 ), 0.0, 0.0, 0.0 );
EvtParticle* root_part = EvtParticleFactory::particleFactory( UPS4,
p_init );
root_part->setVectorSpinDensity();
myGenerator.generateDecay( root_part );
outmix << root_part->getDaug( 0 )->getId().getId() << " ";
outmix << root_part->getDaug( 0 )->getLifetime() << " ";
outmix << root_part->getDaug( 1 )->getId().getId() << " ";
outmix << root_part->getDaug( 1 )->getLifetime() << "\n";
root_part->deleteTree();
} while ( count++ < nevent );
outmix.close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
void runBaryonic( int nEvent, EvtGen& myGenerator )
{
TFile* f = new TFile( "baryonic.root", "RECREATE" );
TH1D* q2Hist = new TH1D( "q2Hist", "q square", 50, 0.0, 25.00 );
EvtId BMINUS = EvtPDL::getId( "B-" );
EvtVector4R p_init( EvtPDL::getMass( BMINUS ), 0.0, 0.0, 0.0 );
EvtParticle* root_part;
myGenerator.readUDecay( "exampleFiles/BARYONIC.DEC" );
EvtVector4R l;
EvtVector4R p;
EvtVector4R g;
EvtVector4R sum;
for ( int i = 0; i < nEvent; ++i ) {
root_part = EvtParticleFactory::particleFactory( BMINUS, p_init );
root_part->setDiagonalSpinDensity();
myGenerator.generateDecay( root_part );
l = root_part->getDaug( 0 )->getP4Lab(); // lambda momentum
p = root_part->getDaug( 1 )->getP4Lab(); // pBar momentum
g = root_part->getDaug( 2 )->getP4Lab(); // gamma momentum
sum = p + g;
q2Hist->Fill( sum.mass2() );
root_part->deleteTree();
}
f->Write();
f->Close();
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "SUCCESS\n";
}
diff --git a/test/exampleFiles/doRefCheck.cc b/test/exampleFiles/doRefCheck.cc
index 3b997c5..90c5446 100644
--- a/test/exampleFiles/doRefCheck.cc
+++ b/test/exampleFiles/doRefCheck.cc
@@ -1,157 +1,155 @@
-// Lange
-// September 29, 2006
//
// Script to automate reference comparisons
//
-//
+
#include "TCanvas.h"
#include "TCollection.h"
#include "TFile.h"
#include "TH1F.h"
#include "TKey.h"
#include "TROOT.h"
#include "TStyle.h"
#include <fstream>
#include <iostream>
#include <map>
#include <string>
#include <vector>
void doRefCheck( TString file, bool makepsfiles = false, bool writeRef = false )
{
// read in root file
TFile* f1 = new TFile( file, "READ" );
// f1->ls();
TKey* key;
TIter nextkey( f1->GetListOfKeys() );
std::vector<std::string> names;
while ( key = (TKey*)nextkey() ) {
if ( strcmp( key->GetClassName(), "TH1F" ) != 0 )
continue;
TH1F* h1 = (TH1F*)key->ReadObj();
names.push_back( ( h1->GetName() ) );
}
if ( names.size() == 0 ) {
std::cout << "NO histograms found?? Missing file?\n";
return;
}
// read in references if they are found.
std::map<std::string, TH1F*> references;
TString refFile = file;
refFile += ".ref";
ifstream* infile = new ifstream( refFile.Data(), std::ios::in );
char tChar[100];
std::vector<double> datums;
std::string refTitle;
double refLow = 0.;
double refHigh = 0.;
while ( infile->good() ) {
infile->getline( tChar, 100 );
if ( infile->good() ) {
if ( strcmp( tChar, "start histogram" ) == 0 ) {
if ( datums.size() > 0 ) {
TString tTitle = "ref";
tTitle += references.size();
TH1F* hTemp = new TH1F( tTitle, tTitle, datums.size() - 2,
refLow, refHigh );
for ( unsigned int i = 0; i < datums.size(); i++ ) {
hTemp->SetBinContent( i, datums[i] );
//std::cout << datums[i] << std::endl;
}
references[refTitle] = hTemp;
datums.clear();
}
infile->getline( tChar, 100 );
refTitle = std::string( tChar );
infile->getline( tChar, 100 );
refLow = atof( tChar );
infile->getline( tChar, 100 );
refHigh = atof( tChar );
} else {
datums.push_back( atof( tChar ) );
}
}
}
if ( datums.size() > 0 ) {
TString tTitle = "ref";
tTitle += references.size();
TH1F* hTemp = new TH1F( tTitle, tTitle, datums.size() - 2, refLow,
refHigh );
for ( unsigned int i = 0; i < datums.size(); i++ )
hTemp->SetBinContent( i, datums[i] );
references[refTitle] = hTemp;
}
gROOT->SetStyle( "Plain" ); // make plot background truly white
gStyle->SetPalette( 1 ); // palette set from violet to red, root chooses scale
fstream* outf = 0;
if ( writeRef ) {
TString refOut = file;
refOut += ".ref.new";
outf = new fstream( refOut.Data(), std::ios::out );
}
for ( unsigned int i = 0; i < names.size(); i++ ) {
TString canName = "can";
canName += i;
TCanvas* can = new TCanvas( canName, canName, 600, 400 );
TH1F* h1 = (TH1F*)f1->Get( names[i].c_str() );
h1->SetMinimum( 0. );
h1->Draw();
TH1F* h2 = references[std::string( h1->GetTitle() )];
std::cout << "Histogram: " << h1->GetTitle();
if ( h2 != 0 ) {
h2->SetLineColor( kRed );
h2->Draw( "same" );
if ( h1->GetNbinsX() != h2->GetNbinsX() ) {
std::cout << " reference has different binning! "
<< h1->GetNbinsX() << " " << h2->GetNbinsX()
<< std::endl;
} else {
int nDiffs = 0;
for ( int i = 0; i < h1->GetNbinsX(); i++ )
if ( h1->GetBinContent( i ) != h2->GetBinContent( i ) )
nDiffs++;
if ( nDiffs > 0 )
std::cout << " has " << nDiffs
<< " bins that were different from reference"
<< std::endl;
else
std::cout << " agrees with reference\n";
}
} else {
std::cout << " no reference found\n";
}
TString title = h1->GetTitle();
if ( outf != 0 ) {
( *outf ) << "start histogram\n";
( *outf ) << title.Data() << std::endl;
( *outf ) << h1->GetBinLowEdge( 1 ) << std::endl
<< h1->GetBinLowEdge( 1 + h1->GetNbinsX() ) << std::endl;
for ( int j = 0; j <= h1->GetNbinsX() + 1; j++ )
( *outf ) << h1->GetBinContent( j ) << std::endl;
}
if ( makepsfiles ) {
TString psName = file;
psName += "_";
psName += i;
psName += ".ps";
can->Print( psName );
}
}
if ( outf != 0 )
outf->close();
}

File Metadata

Mime Type
application/octet-stream
Expires
Sun, Apr 28, 12:47 PM (1 d, 23 h)
Storage Engine
chunks
Storage Format
Chunks
Storage Handle
SugbssIQT.hD
Default Alt Text
(7 MB)

Event Timeline