commit 18f451f378a63f7bb0bef4a568d6f204068cb72b Author: cetin Date: Tue Dec 19 13:00:59 2023 +0100 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6a95420 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# backup files +*~ +.*.swp + +# common byproducts +*.pyc +*.pyo +.vscode +.ipynb_checkpoints +__pycache__ + +# data files +*.root +*.xml +*.class.C + +# plots +*.pdf +*.png + +# downloads and envs +tuner_env +miniconda.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..2a4b346 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,15 @@ +stages: + - check + +check: + stage: check + image: registry.cern.ch/docker.io/library/python:3.10 + before_script: + - pip install pre-commit + script: + - pre-commit run --all-files + variables: + PRE_COMMIT_HOME: ${CI_PROJECT_DIR}/.cache/pre-commit + cache: + paths: + - ${PRE_COMMIT_HOME} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..15c7661 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,23 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.3.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + + - repo: https://github.com/PyCQA/flake8 + rev: '5.0.4' + hooks: + - id: flake8 + args: ["--ignore=E203,W503,E501,E722"] + + - repo: https://github.com/asottile/add-trailing-comma + rev: v2.2.3 + hooks: + - id: add-trailing-comma + + - repo: https://github.com/psf/black + rev: '22.8.0' + hooks: + - id: black diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..de187c8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + 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. + + + Copyright (C) 2022 Andre Gunther + + 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 . + +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: + + Copyright (C) 2022 Andre Gunther + 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 +. + + 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 +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..e152dfa --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# Parameterisation Tuner + +This project provides utils for producing magic parameters used by the pattern recognition algorithms in the Rec project. Typical parameters are coefficients for extrapolation polynomials and weights for TMVA methods. + +## Setup +There's a bash script for setting up the necessary (python) environment. Simply do: +``` +chmod +x setup.sh +./setup.sh +``` +This will install dependencies like ROOT and Jupyter. To enter the environment do: +``` +source env/tuner_env/bin/activate +conda activate tuner +``` diff --git a/electron_main.py b/electron_main.py new file mode 100644 index 0000000..fc43d82 --- /dev/null +++ b/electron_main.py @@ -0,0 +1,204 @@ +# flake8: noqaq +import os +import subprocess +import argparse +from parameterisations.parameterise_magnet_kink import parameterise_magnet_kink +from parameterisations.parameterise_track_model import parameterise_track_model +from parameterisations.parameterise_search_window import parameterise_search_window +from parameterisations.parameterise_field_integral import parameterise_field_integral +from parameterisations.parameterise_hough_histogram import parameterise_hough_histogram +from parameterisations.utils.preselection import preselection +from parameterisations.train_forward_ghost_mlps import ( + train_default_forward_ghost_mlp, + train_veloUT_forward_ghost_mlp, +) +from parameterisations.residual_train_matching_ghost_mlps_electron import ( + res_train_matching_ghost_mlp, +) +from parameterisations.train_matching_ghost_mlps_electron import ( + train_matching_ghost_mlp, +) + +from parameterisations.utils.parse_tmva_matrix_to_array_electron import ( + parse_tmva_matrix_to_array, +) + + +parser = argparse.ArgumentParser() +parser.add_argument( + "--field-params", + action="store_true", + help="Enables determination of magnetic field parameterisations.", +) +parser.add_argument( + "--forward-weights", + action="store_true", + help="Enables determination of weights used by neural networks.", +) +parser.add_argument( + "--matching-weights", + action="store_true", + default=True, + help="Enables determination of weights used by neural networks.", +) +parser.add_argument( + "-r", + "--residuals", + action="store_true", + help="Trains neural network with residual tracks.", +) +parser.add_argument( + "-p", + "--prepare", + action="store_true", + default=True, + help="Enables preparation of data for matching.", +) +parser.add_argument( + "--prepare-params-data", + action="store_true", + help="Enables preparation of data for magnetic field parameterisations.", +) +parser.add_argument( + "--prepare-weights-data", + action="store_true", + help="Enables preparation of data for NN weight determination.", +) +args = parser.parse_args() + +selected = "nn_electron_training/data/param_data_selected.root" +if args.prepare_params_data: + selection = "chi2_comb < 5 && pt > 10 && p > 1500 && p < 100000 && pid != 11" + print("Run selection cuts =", selection) + selected_md = preselection( + cuts=selection, + input_file="data/param_data_MD.root", + ) + selected_mu = preselection( + cuts=selection, + input_file="data/param_data_MU.root", + ) + merge_cmd = ["hadd", "-fk", selected, selected_md, selected_mu] + print("Concatenate polarities ...") + subprocess.run(merge_cmd, check=True) + +cpp_files = [] +if args.field_params: + print("Parameterise magnet kink position ...") + cpp_files.append(parameterise_magnet_kink(input_file=selected)) + print("Parameterise track model ...") + cpp_files.append(parameterise_track_model(input_file=selected)) + +selected_all_p = "nn_electron_training/data/param_data_selected_all_p.root" +if args.prepare_params_data: + selection_all_momenta = "chi2_comb < 5 && pid != 11" + print() + print("Run selection cuts =", selection_all_momenta) + selected_md_all_p = preselection( + cuts=selection_all_momenta, + outfile_postfix="selected_all_p", + input_file="data/param_data_MD.root", + ) + selected_mu_all_p = preselection( + cuts=selection_all_momenta, + outfile_postfix="selected_all_p", + input_file="data/param_data_MU.root", + ) + merge_cmd = ["hadd", "-fk", selected_all_p, selected_md_all_p, selected_mu_all_p] + print("Concatenate polarities ...") + subprocess.run(merge_cmd, check=True) + +if args.field_params: + print("Parameterise search window ...") + cpp_files.append(parameterise_search_window(input_file=selected_all_p)) + print("Parameterise magnetic field integral ...") + cpp_files.append(parameterise_field_integral(input_file=selected_all_p)) + print("Parameterise Hough histogram binning ...") + cpp_files.append(parameterise_hough_histogram(input_file=selected_all_p)) + +###>>> +ghost_data = "data/ghost_data.root" +if args.prepare_weights_data: + merge_cmd = [ + "hadd", + "-fk", + ghost_data, + "data/ghost_data_B.root", + "data/ghost_data_D.root", + ] + print("Concatenate decays for neural network training ...") + subprocess.run(merge_cmd, check=True) +###<<< +if args.forward_weights: + train_default_forward_ghost_mlp(prepare_data=args.prepare_weights_data) + # FIXME: use env variable instead + os.chdir(os.path.dirname(os.path.realpath(__file__))) + train_veloUT_forward_ghost_mlp(prepare_data=args.prepare_weights_data) + # this ensures that the directory is correct + os.chdir(os.path.dirname(os.path.realpath(__file__))) + cpp_files += parse_tmva_matrix_to_array( + [ + "nn_electron_training/result/GhostNNDataSet/weights/TMVAClassification_default_forward_ghost_mlp.class.C", + "nn_electron_training/result/GhostNNDataSet/weights/TMVAClassification_veloUT_forward_ghost_mlp.class.C", + ], + ) +### +###>>> +### +if args.matching_weights and args.residuals: + os.chdir(os.path.dirname(os.path.realpath(__file__))) + res_train_matching_ghost_mlp( + prepare_data=args.prepare, + input_file="data/ghost_data_B.root", + tree_name="PrMatchNN_3e224c41.PrMCDebugMatchToolNN/MVAInputAndOutput", # e6feac0d, B: 3e224c41, B res: 1e13cc7e, D: 8cb154ca + exclude_electrons=False, + only_electrons=True, + residuals="PrMatchNN_1e13cc7e.PrMCDebugMatchToolNN/MVAInputAndOutput", + outdir="nn_electron_training", + n_train_signal=0, + n_train_bkg=20e3, + n_test_signal=1e3, + n_test_bkg=5e3, + ) + # this ensures that the directory is correct + os.chdir(os.path.dirname(os.path.realpath(__file__))) + cpp_files += parse_tmva_matrix_to_array( + [ + "nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C", + ], + simd_type=True, + ) + +if args.matching_weights and not args.residuals: + os.chdir(os.path.dirname(os.path.realpath(__file__))) + train_matching_ghost_mlp( + prepare_data=args.prepare, + input_file="data/ghost_data_B_new_vars_default_weights.root", + tree_name="PrMatchNN_3e224c41.PrMCDebugMatchToolNN/MVAInputAndOutput", # e6feac0d, B: 3e224c41, B res: 1e13cc7e, D: 8cb154ca + exclude_electrons=False, + only_electrons=True, + outdir="nn_electron_training", + n_train_signal=100e3, + n_train_bkg=200e3, + n_test_signal=20e3, + n_test_bkg=40e3, + ) + # this ensures that the directory is correct + os.chdir(os.path.dirname(os.path.realpath(__file__))) + cpp_files += parse_tmva_matrix_to_array( + [ + "nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C", + ], + simd_type=True, + ) +### +###<<< +### +for file in cpp_files: + subprocess.run( + [ + "clang-format", + "-i", + f"{file}", + ], + ) diff --git a/electron_training/result_1_B/matching.hpp b/electron_training/result_1_B/matching.hpp new file mode 100644 index 0000000..06935ee --- /dev/null +++ b/electron_training/result_1_B/matching.hpp @@ -0,0 +1,29 @@ +const auto fMin = std::array{ + {5.23340640939e-05, 1.25644373838e-06, 4.38690185547e-05, 1.90734863281e-06, + 4.71249222755e-07, 1.02445483208e-08}}; +const auto fMax = std::array{{29.9998512268, 0.423314958811, + 499.603149414, 499.198486328, + 1.36927723885, 0.149392709136}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{0.929669659785881, -9.48043077362455, 10.1715051193127, 2.47667373712576, + -3.58083018257721, 6.45095796912324, 8.45870339869703}, + {-0.296042356038334, -9.1896008367615, 5.56711502257143, 17.4486821475108, + -6.40008536792669, -6.6713822283154, 1.07455239812445}, + {0.420413986806413, -1.15751488304315, 3.30243747788701, -1.36392382054269, + -0.847138226467055, 4.98479154537921, 4.24441164005755}, + {1.5738915069293, -4.98081352303952, 5.8421155864956, -1.57711106103044, + -0.189458896895154, -3.65417561650535, -4.22419444699164}, + {-6.66276674820396, 5.45480166931729, -8.03806088012418, + -0.789852234746539, -1.43435711944003, -4.01961155923308, + -14.0834092140066}, + {0.817584255737394, 9.67890702465868, -1.76653199291165, -2.6610635109901, + 2.51931906192722, -6.76406907184251, 0.968242938156462}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {1.88483370881801, 0.775741479584514, 0.214825824623319, 1.61128446188167, + 1.00658692249476, 0.0826679173714486, -1.12220164589225}}}; +const auto fWeightMatrix1to2 = std::array{ + {-1.73457594569937, -1.67600294506992, 1.88966364345853, 1.18946138791835, + 2.47648351789816, -1.24466771533151, -0.315569517202675, 0.530105674163753, + 3.05297057699491}}; diff --git a/electron_training/result_6_B/matching.hpp b/electron_training/result_6_B/matching.hpp new file mode 100644 index 0000000..c9f1ac5 --- /dev/null +++ b/electron_training/result_6_B/matching.hpp @@ -0,0 +1,64 @@ +const auto fMin = std::array{ + {5.23340640939e-05, 1.25644373838e-06, 4.38690185547e-05, 1.90734863281e-06, + 4.71249222755e-07, 1.02445483208e-08}}; +const auto fMax = std::array{{29.9998512268, 0.423314958811, + 499.603149414, 499.198486328, + 1.36927723885, 0.149392709136}}; +const auto fWeightMatrix0to1 = std::array, 12>{ + {{1.10989365682333, -0.400262341428031, 0.703648655520529, + -10.0488008412327, 2.24766437644792, -1.51561555364132, + -8.19659986380238}, + {0.168629698489816, -0.235222573459749, -2.76479490713939, + 4.70755796881564, 0.422213317504099, -2.15975111024372, + -0.0413862540873273}, + {-1.20008716401126, 5.98181458205593, 1.97530107863487, 0.951399694875291, + 3.21037292600378, -1.88398815839093, 6.00348890738369}, + {1.59529309197505, 1.03059763992094, -1.28481350389235, 1.77750648317864, + 1.66698562433363, 0.560549629043751, -0.646784291824832}, + {-10.5582477166915, 1.83421764351223, -4.28308784555713, 2.73941897264262, + -1.09755306824252, -2.76940523423182, -13.1324718956297}, + {-1.37726196850241, 1.6684137449588, 0.234563275112263, 0.889405325109031, + 1.24137671714337, -0.240977390196439, -2.00650503697469}, + {-0.0917280130282914, -6.60741151288151, 4.280141752342, 15.8869539382336, + -4.40078451860264, -11.63552941888, -2.23848664347195}, + {1.72810153197739, 1.81133984072885, 1.53310134343984, 1.53430340675608, + -0.880657747996044, -1.01002428097867, 0.327772484279249}, + {0.450749853210101, -10.427522498238, 10.1106981167422, 2.50275117049706, + -3.96268925724634, 7.80062171624392, 8.13617432588314}, + {-0.899044020226273, 4.04967555584356, -0.184515937391125, + 0.605936074234893, 2.11314319461295, 1.08529920345605, 5.198893026323}, + {-4.62555398916988, 2.56629651777862, -5.19280819069721, 0.979353155613104, + 0.362510005701342, -0.387373325452426, -4.51347844411621}, + {0.43181068852013, -1.12870359395317, -5.59123177894442, -2.78683035529746, + -0.119944490657953, -4.22887938179223, -12.1803091805475}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{-1.67244648790854, 2.58776560386115, 1.05350530586878, 1.12701723441192, + 0.309436118156294, -1.41275414644542, -2.14966008423622, + -0.311448006165657, 0.485736777594352, -2.55661662619223, + 0.96538530983999, -3.26795296807062, 0.988977174263089}, + {-0.381498099253961, -0.549200770730038, -0.893363207717135, + 0.119028293459292, 5.13224785809454, 1.77747846865563, -1.7072596641081, + 0.0171890434060519, -0.612613204335275, 1.49948177816202, + 0.230169849172349, -0.177176079772119, 3.44507835207359}, + {-1.20063578327457, 1.63342807940049, -2.53476436290309, -1.5305832886762, + -3.05946450928802, 0.360300407115462, 0.625027143539907, + -1.77680947527138, -0.585041547463601, -2.08759735767147, + 0.925138221824412, -1.24854533226616, 2.0502994330023}, + {-1.36610982082625, -1.68603095079278, 1.93369535731656, 2.38299921699452, + 0.133785811268423, -0.941203171967918, 2.97186174778511, 1.15122509873234, + 0.135596009829977, -0.62708569660126, -0.024554433907907, + -0.555962579400608, 0.581541394004209}, + {0.349027399089585, 0.0804040832557828, -0.454499280002817, + -1.17318303808809, 0.292596492448844, 0.801032353759436, + 0.760037949875418, 0.22815167017283, 0.315794043406641, + -0.969493545848479, -1.03825660899029, 1.94713626859943, + -2.1389717446658}, + {-1.88715819596171, 0.277545438410592, -1.68976255449697, + -1.02675310905861, 0.226775035076775, -1.07682401936394, + -0.52218117899507, -1.8253408434363, -1.94344181953331, + -0.444301427484403, -0.343612121595328, -0.177028285618245, + -0.648349320508864}}}; +const auto fWeightMatrix2to3 = std::array{ + {-0.844891680754208, 0.967426474103726, 0.960945561425279, + -0.80019723500702, -0.545585546409515, 0.3310030293198, + -2.29115821922715}}; diff --git a/electron_training/result_B/matching.hpp b/electron_training/result_B/matching.hpp new file mode 100644 index 0000000..91de9ec --- /dev/null +++ b/electron_training/result_B/matching.hpp @@ -0,0 +1,46 @@ +const auto fMin = std::array{ + {5.23340640939e-05, 1.25644373838e-06, 4.38690185547e-05, 1.90734863281e-06, + 4.71249222755e-07, 1.02445483208e-08}}; +const auto fMax = std::array{{29.9998512268, 0.423314958811, + 499.603149414, 499.198486328, + 1.36927723885, 0.149392709136}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{2.57491955820114, -0.0666351688682796, -3.61648923844569, + -8.75747553035328, 0.639385257730277, 10.5129455348455, 1.22080436670381}, + {-0.839608322851951, -11.7978768103865, 7.24641653369801, 6.63011679030303, + -5.38496571510758, 8.30851076817151, 6.69929919816849}, + {-0.17630967374162, -3.75940580347415, 2.79889282638498, 16.7594894489781, + -3.10824840396248, -8.80345141844331, 3.9130937162361}, + {0.19092161829683, -3.60963385297311, 11.9569759734039, 2.10283509156704, + -2.39101707207304, -1.89478969715624, 7.1165950679585}, + {-3.02014034882022, 2.24487587036827, -8.90770349935038, -4.05040202238185, + -1.36813505779681, 9.14630004607903, -3.34618937758505}, + {0.459674275912345, 8.12262886393506, 0.45018729587823, -1.11787227534737, + 2.8096254085019, -0.481877520480143, 7.78611195142966}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {1.8337752666274, 0.841018614520629, 0.272259015077869, 1.63031107650108, + 0.987469718084883, 0.0999586200250234, -1.13752770875358}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{-0.0482883134570299, 0.46403980819019, 2.73665245864103, + 0.245936163361116, -0.472281505442891, 0.307317690224363, + 1.63438201788813, -1.44341215808597, -0.706584289774802}, + {-3.91297125261727, 0.681495111998297, -3.37155822025346, + -0.966831590652637, 2.65933759421044, -0.661174079209186, + -1.61531096417457, 0.0991696473049824, -4.51523108840722}, + {0.273186686950073, 1.14087516410812, 0.653137998266985, + -0.158819017566112, 0.692268877136322, -8.04912219449925, + -0.825543426908553, -1.92132463640843, -2.47870678055356}, + {0.180394111293318, -0.414717927339332, -1.44129610325848, + -1.86532392228702, -0.806791495297171, -1.73521704274739, + 1.61348068527877, -1.66550797875971, -0.927403017991324}, + {-0.790929106392951, -0.0886126272927867, 0.035682993929273, + -0.602424006939674, 0.334723143379322, 2.22416454606917, + -0.848898627795279, 0.743857937018801, -0.291005217785123}, + {-0.681492967014666, -0.368602644948209, 1.52403393057559, + -1.06212309361209, 0.881062654352226, 0.690165878288055, + -1.52203810494393, 1.63217238068739, 2.76628946224152}}}; +const auto fWeightMatrix2to3 = std::array{ + {-0.692725959420674, 1.18375950895893, -1.13672009847538, 0.407788542121486, + -0.606866044733726, 0.927912329413981, -0.887231003739174}}; diff --git a/electron_training/result_B_new/matching.hpp b/electron_training/result_B_new/matching.hpp new file mode 100644 index 0000000..88785cd --- /dev/null +++ b/electron_training/result_B_new/matching.hpp @@ -0,0 +1,46 @@ +const auto fMin = std::array{ + {5.23340640939e-05, 1.25644373838e-06, 4.38690185547e-05, 1.90734863281e-06, + 4.71249222755e-07, 1.02445483208e-08}}; +const auto fMax = std::array{{29.9998512268, 0.423314958811, + 499.603149414, 499.198486328, + 1.36927723885, 0.149392709136}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{1.10509804069795, -1.06659111536073, -1.23304417235305, -9.91292225685574, + 1.00704133279785, 9.53100159268659, -0.793174916006915}, + {-0.776689382841375, -10.4158785961964, 8.69653776953056, 6.84445159227452, + -6.97657257253127, 6.63766574651487, 7.11596889066532}, + {-0.381785768656306, -5.11642852466812, 3.59950933567307, 16.792587073888, + -3.83635033235741, -7.72761443893271, 3.58572441569503}, + {1.04413334688141, -3.78312149763691, 9.83287128246016, 1.4778662654192, + -2.0766161850877, 1.08288357164774, 8.02887163423859}, + {-3.94899781448378, 1.94391204753919, -8.65991195739853, -2.00834934461626, + -3.50457026010403, 4.99589301163709, -6.89137092011374}, + {-1.29549202700169, 7.66739081183929, 0.281901363288286, -1.19821907042793, + 2.92107740687058, 1.14948481762706, 7.31015879384667}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {1.76053743491788, 0.909858152169371, 0.323489900540112, 1.61941068281945, + 0.92342774005317, 0.0522421825019989, -1.23071245493981}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{-0.12420793824361, 0.0833900748795987, 3.10092151009265, + 0.320087923870887, -0.582151496774453, 0.029470772407136, + 1.63438201788813, -1.43480874379498, 1.55528937765131}, + {-2.8947400885087, 0.336449303963403, -2.30774902952597, -2.03456375507124, + 2.29485822558142, 0.145499754959071, -1.61531096417457, + 0.0991522125616504, -6.41616204842718}, + {1.75720706890165, 1.241283421626, 0.607968086927335, -0.816112122281315, + 0.0294391273974063, -7.94349478092389, -0.825543426908553, + -1.917979348207, -2.03720925778068}, + {0.276286323447054, -0.393087539092168, -1.44329478350452, + -1.86277301712902, -0.807222527397035, -1.7239133524486, 1.61348068527877, + -1.66550797875971, -0.966703432130041}, + {-1.20952640410995, -1.34067444254507, 0.079870798547199, + -0.0280804827435552, 0.15103668191983, 2.28974121850533, + -0.848898627795279, 0.747603604163112, 0.000485431747120298}, + {-0.806478361586365, -0.902043622848205, 2.75668355569402, + -0.636341321727925, 0.189229471295501, 1.41597159860703, + -1.52203810494393, 1.62460924160209, 1.94946724799691}}}; +const auto fWeightMatrix2to3 = std::array{ + {-1.05665248808677, 1.16854173340171, -0.924262662063758, 0.441514927697916, + -0.908730180794495, 1.02616776486021, 1.26618724664255}}; diff --git a/electron_training/result_B_old/matching.hpp b/electron_training/result_B_old/matching.hpp new file mode 100644 index 0000000..372ba36 --- /dev/null +++ b/electron_training/result_B_old/matching.hpp @@ -0,0 +1,46 @@ +const auto fMin = std::array{ + {2.32376150961e-05, 1.07555320028e-06, 1.33514404297e-05, 3.0517578125e-05, + 3.99723649025e-06, 4.65661287308e-09}}; +const auto fMax = std::array{{29.9999885559, 0.509573578835, + 498.591552734, 499.918823242, + 1.35891008377, 0.149692088366}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{1.09689919364338, -2.36337032185014, -3.02921316084911, -8.60965194111848, + 1.07308849187722, 11.2080534568785, -0.962205787111116}, + {0.742505004354826, -11.5991419169641, 4.4706991652213, 12.0524034815861, + -7.39781510361567, -0.213355059289303, 2.43301548168847}, + {-0.725034235213988, -4.7645569874331, 3.41021029475148, 18.2505819659489, + -2.28931892322383, -6.70009514891697, 7.19788851418639}, + {-0.43322070581816, -6.76514244197456, 13.847487618501, 5.02461005105822, + -3.37683447138325, 0.858009838318498, 10.273453699814}, + {-5.70448188875026, 5.26491831063117, -11.5555643412233, 3.1883356042284, + -2.133677285889, -2.24006224305986, -8.63987163868301}, + {-1.06391634270892, 9.01667090199045, -1.28516566899228, -3.82841187857546, + 3.18471029451158, 3.67902076971672, 7.29632098310751}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {1.68628281779244, 0.945006908224918, 0.536427352104393, 1.40667951887796, + 0.832049300778026, -0.1089543073399, -1.43675125780786}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{1.21826975700184, 0.363147471400374, 2.05773388885566, 0.540313557549193, + 0.420913357653504, -2.44884689863901, 1.63438201788813, -1.40944934303207, + -2.32871515871553}, + {-2.90439321892223, 0.719436509209912, -3.93523150198893, + -1.07342541319164, 2.07689989754924, -2.39788444100381, -1.61531096417457, + 0.0991887634515266, -8.04764734753152}, + {-2.98923948872248, 2.26253234310036, -0.220642963100105, + -0.279316661053141, 0.0331794243552215, -5.88142829451649, + -0.825543426908553, -1.92002983781799, -8.21361341703474}, + {0.662904361912077, -0.885584946591213, -1.45517778095535, + -1.89901295762029, -0.806428733926438, -1.81021900435817, + 1.61348068527877, -1.66550797875971, -1.51013848461449}, + {-1.37437469030598, -2.21755157129085, 1.33360411388341, + -0.0320979297776227, 0.290980167206705, 2.38901360605064, + -0.848898627795279, 0.766669058008792, 0.257937241570605}, + {-1.09504185612819, -0.458703315043996, 1.03883522785983, + -1.05014637612802, 0.806301762243297, 2.21317466894066, -1.52203810494393, + 1.5559212254549, 3.4514658408796}}}; +const auto fWeightMatrix2to3 = std::array{ + {-0.533136674890316, 1.09880505630834, -0.802064163473207, 1.60699693080913, + -0.951610170601364, 0.802378806704215, -1.20342886768673}}; diff --git a/electron_training/result_B_original_weights_residuals/matching.hpp b/electron_training/result_B_original_weights_residuals/matching.hpp new file mode 100644 index 0000000..9c576c8 --- /dev/null +++ b/electron_training/result_B_original_weights_residuals/matching.hpp @@ -0,0 +1,48 @@ +const auto fMin = std::array{ + {0.000315562472679, 1.14277577268e-06, 0.000274658203125, 0.000102996826172, + 1.25970691442e-05, 4.93600964546e-08}}; +const auto fMax = + std::array{{29.9998435974, 0.431377887726, 490.802429199, + 497.135681152, 1.3582059145, 0.147097736597}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{0.925466511495192, -3.04696651693941, 1.48703910101059, -2.74358886415853, + -1.54108875912546, 5.95181992279351, 1.09520524639045}, + {0.225076264550494, -5.30106552386163, 6.29832156309508, 7.0574368868963, + -3.96436697758889, -0.110687606346842, 4.65556823990769}, + {0.859449093477803, -1.42364618189426, 1.52973494084549, 1.63204418679045, + 0.402800627021359, 2.02973355392681, 1.61963813362595}, + {0.797017653476011, 1.80207629996926, 1.98407671947614, -4.84738045778757, + -0.237330392456841, 0.555272132234374, -0.334695720441674}, + {-0.0089249002524941, -0.0721593078491391, -4.03962401066098, + -0.741196499782838, -0.520561836165389, -2.43469377130746, + -5.05370729239864}, + {-0.324849815552061, 0.571642144152413, -2.26163157259376, + -3.96363877139044, 3.80954499156217, 0.812071601189534, + -0.388923872459538}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {1.90248604788051, 0.75183501464588, 0.163545686727045, 1.62950884794052, + 1.04315466999792, 0.0204618414445436, -1.06300958722802}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{-3.75265433194304, -4.03077590921609, 0.560952725012946, 1.59903822739795, + 2.24144673906438, 0.377410282165578, 1.63438201788813, -1.47007146768882, + -2.58605490949786}, + {-2.60068359938433, -0.0309587124576335, -0.841839408810281, + -0.377592041175285, 0.266402105492061, -1.93675266037507, + -1.61531096417457, 0.0988426038328682, 1.51287715061537}, + {-0.257103489627825, 2.38563057831866, -2.06682010253696, + -1.50490219717468, 0.990281758525445, -2.89728072212192, + -0.825543426908553, -1.91692155046286, -0.469424293810405}, + {0.680066470317009, -0.353277604226862, -1.4315209802379, + -1.86345277642716, -0.806051898385157, -1.70690619012381, + 1.61348068527877, -1.66550797875971, -0.804637203024864}, + {0.292121929684041, 1.67922513643505, -0.2207750830665, -1.85432148737195, + -0.761761120528791, 0.148603794427115, -0.848898627795279, + 0.776926680814688, 0.515413675465116}, + {0.436091761386387, -1.32454758986161, 1.0014013582506, -0.251981066947133, + -0.176482975086784, -0.862489698728272, -1.52203810494393, + 1.59929932442845, 0.257302379473767}}}; +const auto fWeightMatrix2to3 = std::array{ + {-3.33863999066044, 1.86100137130551, -0.825426355935299, 0.455646208323886, + -0.730374866334297, 1.65923402820956, 1.60305190554767}}; diff --git a/electron_training/result_B_original_weights_residuals/og_weights.txt b/electron_training/result_B_original_weights_residuals/og_weights.txt new file mode 100644 index 0000000..7835c5a --- /dev/null +++ b/electron_training/result_B_original_weights_residuals/og_weights.txt @@ -0,0 +1,2 @@ +signal: only electrons that are true match but mlp response "no match" +background: all ghost tracks diff --git a/electron_training/result_D/matching.hpp b/electron_training/result_D/matching.hpp new file mode 100644 index 0000000..b551e91 --- /dev/null +++ b/electron_training/result_D/matching.hpp @@ -0,0 +1,47 @@ +const auto fMin = std::array{ + {1.4334048501e-05, 1.21005723486e-06, 0.0001220703125, 4.57763671875e-05, + 6.51180744171e-06, 5.58793544769e-09}}; +const auto fMax = std::array{{29.9999580383, 0.388462841511, + 497.0078125, 499.509338379, + 1.34583222866, 0.148980647326}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{1.80376907529412, -3.94522006510378, 0.731592325680377, -11.2008566094574, + 0.679894249961926, 3.84839657473663, -8.07142111719402}, + {-2.07030049796095, 3.26515474867444, 0.320697671285593, + -0.564334829758113, 3.06552235842096, 2.6605948885273, 4.6955026167446}, + {0.896838903613344, -1.89786210758941, 6.19791014227951, 13.9534201571522, + -9.67617750026742, -5.13735275462149, 5.25604022070252}, + {0.350723542258884, -5.46236108010248, 11.3961275449655, 6.86860356458193, + -4.10979098519269, 7.40355727094559, 17.4195097954786}, + {-4.98089321802183, -3.06924425120168, -4.16533013325382, + -1.76525268144874, -0.574266009689755, 1.38792795938214, + -11.9738574538811}, + {-1.3792553381734, 6.6360108241851, 1.58470490969407, 1.2116201192747, + 3.35950082512036, -2.69400720014141, 5.78773380456927}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {1.89618444435453, 0.756762886971226, 0.224607628956107, 1.58224418687104, + 1.01198188838621, 0.0609287072816972, -1.10149714422957}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{-1.95030391768864, -2.57241200745428, 2.22513961422549, 1.09636924630915, + -1.41670442059213, 0.268826912887813, 1.63438201788813, -1.41788409846508, + -0.529591299831198}, + {-1.7671292981577, -0.123369349217712, -0.866977288876212, + -0.90631173560288, 2.47901931013162, -2.21695976800688, -1.61531096417457, + 0.0991885303988918, 1.28955047096799}, + {-0.534089470091784, 1.26461913447419, -0.403013723511741, + -0.758910423086654, -0.92644473334079, -1.52818746990179, + -0.825543426908553, -1.92721239362346, 3.26105888866326}, + {0.198023173442802, -0.564145037694825, -1.43289188975828, + -1.86352960767302, -0.808447979295006, -1.71330811211152, + 1.61348068527877, -1.66550797875971, -0.910801619527772}, + {-1.8227621068219, -0.698025453596766, 0.233245541019916, + -0.387306932182454, -1.05004029412037, -0.333220104163044, + -0.848898627795279, 0.782822716993409, -0.262552968051654}, + {-0.314822731076892, -1.50428335429844, 0.179689344301775, + -0.325249075131384, -0.635962383213103, -0.491817587388958, + -1.52203810494393, 1.59283237353393, -0.153430533462156}}}; +const auto fWeightMatrix2to3 = std::array{ + {-0.572477318545036, 1.12222369845671, 0.962011482756679, 0.427739156517669, + -1.31864386562843, 1.61500835143017, -1.96827876292426}}; diff --git a/electron_training/result_D_old/matching.hpp b/electron_training/result_D_old/matching.hpp new file mode 100644 index 0000000..44c540d --- /dev/null +++ b/electron_training/result_D_old/matching.hpp @@ -0,0 +1,47 @@ +const auto fMin = std::array{ + {1.4334048501e-05, 1.20995343877e-06, 0.000255584716797, 7.62939453125e-05, + 1.95447355509e-05, 9.31322574615e-09}}; +const auto fMax = std::array{{29.9999771118, 0.480875372887, + 497.208251953, 499.789672852, + 1.33854484558, 0.149920448661}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{-2.53490305244316, -3.87226566727903, -4.46377668521249, 3.76593347190621, + -0.736147925273483, 9.02585614570327, 3.6237871734026}, + {0.549076542016505, -6.76487588278314, 12.7146884747338, 6.35190577761167, + -4.4556955709276, 8.26540577622736, 18.015709088484}, + {-0.456124601513526, -3.87828385698417, 6.13829079533624, 20.024096872054, + -10.2437102287476, -13.5453994008865, 1.47951238998312}, + {0.81464719007702, -5.60573514166659, 7.32263078411251, -5.0446935011349, + -0.701597395356833, 6.4873077480756, 1.05029191775837}, + {-5.20529068292815, -1.29341688678248, -12.9211101623102, 4.06192896781978, + -2.24819687530499, -4.47649653096685, -18.7962996196447}, + {-1.92319074705205, 9.13989051160526, 1.4372857889395, 3.71255897752862, + 2.12080932540223, 0.775519813919651, 13.1780255071529}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {2.48032981707208, 1.99122468030675, 0.147128688791476, 3.20653226030149, + -1.59262641780577, 1.63473498915926, -0.983318163281607}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{-1.23665952123739, 1.12167249551526, 0.882383882593374, + -0.923566479348657, 0.0338835472680554, 1.00667491483647, + 1.63438201788813, -4.23394622989637, -0.990743251230407}, + {-1.17099975681859, -0.0097715608108182, -0.404796049870115, + 0.85424890495973, 3.98024762276004, -0.145761966096377, -1.61531096417457, + 0.0969352107124514, -5.51833020463238}, + {2.4380083430657, 2.00418225228056, -0.792776990439125, -2.80847623446533, + -0.137631196353825, -7.80633161173606, -0.825543426908553, + -2.37988842437401, -6.27310694945946}, + {0.225004410426863, -0.39049833080813, -1.43244348842572, + -1.86390252348813, -0.816126277640337, -1.7092593780967, 1.61348068527877, + -1.66550797875971, -0.984918093686436}, + {-0.238610540704029, -0.352025987714205, 1.91071878135911, + 1.06903719015662, -0.0879085084653824, -5.01732651510019, + -0.848898627795279, 0.301171033553613, -3.31246000228067}, + {1.06098527822605, -1.02241211107063, -0.727572693909408, + -0.164960522101848, 0.834295993060446, -0.816864575663688, + -1.52203810494393, 1.63565593112606, 0.829470327557413}}}; +const auto fWeightMatrix2to3 = std::array{ + {-0.547016315428893, 0.794153417512957, -0.534810951888594, + 0.411807752872488, -1.06003774378693, 0.679060736847631, + 0.119300486730084}}; diff --git a/electron_training/result_reg_B/matching.hpp b/electron_training/result_reg_B/matching.hpp new file mode 100644 index 0000000..91de9ec --- /dev/null +++ b/electron_training/result_reg_B/matching.hpp @@ -0,0 +1,46 @@ +const auto fMin = std::array{ + {5.23340640939e-05, 1.25644373838e-06, 4.38690185547e-05, 1.90734863281e-06, + 4.71249222755e-07, 1.02445483208e-08}}; +const auto fMax = std::array{{29.9998512268, 0.423314958811, + 499.603149414, 499.198486328, + 1.36927723885, 0.149392709136}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{2.57491955820114, -0.0666351688682796, -3.61648923844569, + -8.75747553035328, 0.639385257730277, 10.5129455348455, 1.22080436670381}, + {-0.839608322851951, -11.7978768103865, 7.24641653369801, 6.63011679030303, + -5.38496571510758, 8.30851076817151, 6.69929919816849}, + {-0.17630967374162, -3.75940580347415, 2.79889282638498, 16.7594894489781, + -3.10824840396248, -8.80345141844331, 3.9130937162361}, + {0.19092161829683, -3.60963385297311, 11.9569759734039, 2.10283509156704, + -2.39101707207304, -1.89478969715624, 7.1165950679585}, + {-3.02014034882022, 2.24487587036827, -8.90770349935038, -4.05040202238185, + -1.36813505779681, 9.14630004607903, -3.34618937758505}, + {0.459674275912345, 8.12262886393506, 0.45018729587823, -1.11787227534737, + 2.8096254085019, -0.481877520480143, 7.78611195142966}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {1.8337752666274, 0.841018614520629, 0.272259015077869, 1.63031107650108, + 0.987469718084883, 0.0999586200250234, -1.13752770875358}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{-0.0482883134570299, 0.46403980819019, 2.73665245864103, + 0.245936163361116, -0.472281505442891, 0.307317690224363, + 1.63438201788813, -1.44341215808597, -0.706584289774802}, + {-3.91297125261727, 0.681495111998297, -3.37155822025346, + -0.966831590652637, 2.65933759421044, -0.661174079209186, + -1.61531096417457, 0.0991696473049824, -4.51523108840722}, + {0.273186686950073, 1.14087516410812, 0.653137998266985, + -0.158819017566112, 0.692268877136322, -8.04912219449925, + -0.825543426908553, -1.92132463640843, -2.47870678055356}, + {0.180394111293318, -0.414717927339332, -1.44129610325848, + -1.86532392228702, -0.806791495297171, -1.73521704274739, + 1.61348068527877, -1.66550797875971, -0.927403017991324}, + {-0.790929106392951, -0.0886126272927867, 0.035682993929273, + -0.602424006939674, 0.334723143379322, 2.22416454606917, + -0.848898627795279, 0.743857937018801, -0.291005217785123}, + {-0.681492967014666, -0.368602644948209, 1.52403393057559, + -1.06212309361209, 0.881062654352226, 0.690165878288055, + -1.52203810494393, 1.63217238068739, 2.76628946224152}}}; +const auto fWeightMatrix2to3 = std::array{ + {-0.692725959420674, 1.18375950895893, -1.13672009847538, 0.407788542121486, + -0.606866044733726, 0.927912329413981, -0.887231003739174}}; diff --git a/env/environment.yaml b/env/environment.yaml new file mode 100644 index 0000000..f0b142f --- /dev/null +++ b/env/environment.yaml @@ -0,0 +1,20 @@ +name: tuner +channels: + - conda-forge + - defaults +dependencies: + - python=3.10 + - root + - pre-commit + - jupyter + - black=22.8.0 + - flake8=5.0.4 + - clang-format + - matplotlib + - uproot + - awkward + - pandas + - numpy + - scikit-learn + - mplhep + - seaborn diff --git a/main.py b/main.py new file mode 100644 index 0000000..7064a9a --- /dev/null +++ b/main.py @@ -0,0 +1,151 @@ +# flake8: noqaq +import os +import subprocess +import argparse +from parameterisations.parameterise_magnet_kink import parameterise_magnet_kink +from parameterisations.parameterise_track_model import parameterise_track_model +from parameterisations.parameterise_search_window import parameterise_search_window +from parameterisations.parameterise_field_integral import parameterise_field_integral +from parameterisations.parameterise_hough_histogram import parameterise_hough_histogram +from parameterisations.utils.preselection import preselection +from parameterisations.train_forward_ghost_mlps import ( + train_default_forward_ghost_mlp, + train_veloUT_forward_ghost_mlp, +) +from parameterisations.train_matching_ghost_mlps import train_matching_ghost_mlp +from parameterisations.utils.parse_tmva_matrix_to_array import ( + parse_tmva_matrix_to_array, +) + + +parser = argparse.ArgumentParser() +parser.add_argument( + "--field-params", + action="store_true", + help="Enables determination of magnetic field parameterisations.", +) +parser.add_argument( + "--forward-weights", + action="store_true", + help="Enables determination of weights used by neural networks.", +) +parser.add_argument( + "--matching-weights", + action="store_true", + default=True, + help="Enables determination of weights used by neural networks.", +) +parser.add_argument( + "--prepare-params-data", + action="store_true", + help="Enables preparation of data for magnetic field parameterisations.", +) +parser.add_argument( + "--prepare-weights-data", + action="store_true", + help="Enables preparation of data for NN weight determination.", +) +args = parser.parse_args() + +selected = "neural_net_training/data/param_data_selected.root" +if args.prepare_params_data: + selection = "chi2_comb < 5 && pt > 10 && p > 1500 && p < 100000 && pid != 11" + print("Run selection cuts =", selection) + selected_md = preselection( + cuts=selection, + input_file="data/param_data_MD.root", + ) + selected_mu = preselection( + cuts=selection, + input_file="data/param_data_MU.root", + ) + merge_cmd = ["hadd", "-fk", selected, selected_md, selected_mu] + print("Concatenate polarities ...") + subprocess.run(merge_cmd, check=True) + +cpp_files = [] +if args.field_params: + print("Parameterise magnet kink position ...") + cpp_files.append(parameterise_magnet_kink(input_file=selected)) + print("Parameterise track model ...") + cpp_files.append(parameterise_track_model(input_file=selected)) + +selected_all_p = "neural_net_training/data/param_data_selected_all_p.root" +if args.prepare_params_data: + selection_all_momenta = "chi2_comb < 5 && pid != 11" + print() + print("Run selection cuts =", selection_all_momenta) + selected_md_all_p = preselection( + cuts=selection_all_momenta, + outfile_postfix="selected_all_p", + input_file="data/param_data_MD.root", + ) + selected_mu_all_p = preselection( + cuts=selection_all_momenta, + outfile_postfix="selected_all_p", + input_file="data/param_data_MU.root", + ) + merge_cmd = ["hadd", "-fk", selected_all_p, selected_md_all_p, selected_mu_all_p] + print("Concatenate polarities ...") + subprocess.run(merge_cmd, check=True) + +if args.field_params: + print("Parameterise search window ...") + cpp_files.append(parameterise_search_window(input_file=selected_all_p)) + print("Parameterise magnetic field integral ...") + cpp_files.append(parameterise_field_integral(input_file=selected_all_p)) + print("Parameterise Hough histogram binning ...") + cpp_files.append(parameterise_hough_histogram(input_file=selected_all_p)) + +###>>> +ghost_data = "neural_net_training/data/ghost_data.root" +if args.prepare_weights_data: + merge_cmd = [ + "hadd", + "-fk", + ghost_data, + "data/ghost_data_MD.root", + "data/ghost_data_MU.root", + ] + print("Concatenate polarities for neural network training ...") + subprocess.run(merge_cmd, check=True) +###<<< +if args.forward_weights: + train_default_forward_ghost_mlp(prepare_data=args.prepare_weights_data) + # FIXME: use env variable instead + os.chdir(os.path.dirname(os.path.realpath(__file__))) + train_veloUT_forward_ghost_mlp(prepare_data=args.prepare_weights_data) + # this ensures that the directory is correct + os.chdir(os.path.dirname(os.path.realpath(__file__))) + cpp_files += parse_tmva_matrix_to_array( + [ + "neural_net_training/result/GhostNNDataSet/weights/TMVAClassification_default_forward_ghost_mlp.class.C", + "neural_net_training/result/GhostNNDataSet/weights/TMVAClassification_veloUT_forward_ghost_mlp.class.C", + ], + ) +###>>> +if args.matching_weights: + os.chdir(os.path.dirname(os.path.realpath(__file__))) + train_matching_ghost_mlp( + prepare_data=True, # args.prepare_weights_data, + input_file="data/ghost_data_B.root", + tree_name="PrMatchNN_e6feac0d.PrMCDebugMatchToolNN/MVAInputAndOutput", + outdir="neural_net_training", + ) + # this ensures that the directory is correct + os.chdir(os.path.dirname(os.path.realpath(__file__))) + cpp_files += parse_tmva_matrix_to_array( + [ + "neural_net_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C", + ], + simd_type=True, + ) +###<<< +for file in cpp_files: + subprocess.run( + [ + "clang-format", + "-i", + f"{file}", + ], + ) diff --git a/main_tracking_losses.py b/main_tracking_losses.py new file mode 100644 index 0000000..8385836 --- /dev/null +++ b/main_tracking_losses.py @@ -0,0 +1,171 @@ +# flake8: noqaq +import os +import subprocess +import argparse +from parameterisations.parameterise_magnet_kink import parameterise_magnet_kink +from parameterisations.parameterise_track_model import parameterise_track_model +from parameterisations.parameterise_search_window import parameterise_search_window +from parameterisations.parameterise_field_integral import parameterise_field_integral +from parameterisations.parameterise_hough_histogram import parameterise_hough_histogram +from parameterisations.utils.preselection import preselection +from parameterisations.train_forward_ghost_mlps import ( + train_default_forward_ghost_mlp, + train_veloUT_forward_ghost_mlp, +) +from parameterisations.losses_train_matching_ghost_mlps import ( + train_matching_ghost_mlp, +) +from parameterisations.utils.parse_tmva_matrix_to_array_TrLo import ( + parse_tmva_matrix_to_array, +) + + +parser = argparse.ArgumentParser() +parser.add_argument( + "--field-params", + action="store_true", + help="Enables determination of magnetic field parameterisations.", +) +parser.add_argument( + "--forward-weights", + action="store_true", + help="Enables determination of weights used by neural networks.", +) +parser.add_argument( + "--matching-weights", + action="store_true", + default=True, + help="Enables determination of weights used by neural networks.", +) +parser.add_argument( + "-p", + "--prepare", + action="store_true", + # default=True, + help="Enables preparation of data for matching.", +) +parser.add_argument( + "--prepare-params-data", + action="store_true", + help="Enables preparation of data for magnetic field parameterisations.", +) +parser.add_argument( + "--prepare-weights-data", + action="store_true", + help="Enables preparation of data for NN weight determination.", +) +args = parser.parse_args() + +selected = "nn_electron_training/data/param_data_selected.root" +if args.prepare_params_data: + selection = "chi2_comb < 5 && pt > 10 && p > 1500 && p < 100000 && pid != 11" + print("Run selection cuts =", selection) + selected_md = preselection( + cuts=selection, + input_file="data/param_data_MD.root", + ) + selected_mu = preselection( + cuts=selection, + input_file="data/param_data_MU.root", + ) + merge_cmd = ["hadd", "-fk", selected, selected_md, selected_mu] + print("Concatenate polarities ...") + subprocess.run(merge_cmd, check=True) + +cpp_files = [] +if args.field_params: + print("Parameterise magnet kink position ...") + cpp_files.append(parameterise_magnet_kink(input_file=selected)) + print("Parameterise track model ...") + cpp_files.append(parameterise_track_model(input_file=selected)) + +selected_all_p = "nn_electron_training/data/param_data_selected_all_p.root" +if args.prepare_params_data: + selection_all_momenta = "chi2_comb < 5 && pid != 11" + print() + print("Run selection cuts =", selection_all_momenta) + selected_md_all_p = preselection( + cuts=selection_all_momenta, + outfile_postfix="selected_all_p", + input_file="data/param_data_MD.root", + ) + selected_mu_all_p = preselection( + cuts=selection_all_momenta, + outfile_postfix="selected_all_p", + input_file="data/param_data_MU.root", + ) + merge_cmd = ["hadd", "-fk", selected_all_p, selected_md_all_p, selected_mu_all_p] + print("Concatenate polarities ...") + subprocess.run(merge_cmd, check=True) + +if args.field_params: + print("Parameterise search window ...") + cpp_files.append(parameterise_search_window(input_file=selected_all_p)) + print("Parameterise magnetic field integral ...") + cpp_files.append(parameterise_field_integral(input_file=selected_all_p)) + print("Parameterise Hough histogram binning ...") + cpp_files.append(parameterise_hough_histogram(input_file=selected_all_p)) + +###>>> +ghost_data = "data/ghost_data.root" +if args.prepare_weights_data: + merge_cmd = [ + "hadd", + "-fk", + ghost_data, + "data/ghost_data_B.root", + "data/ghost_data_D.root", + ] + print("Concatenate decays for neural network training ...") + subprocess.run(merge_cmd, check=True) +###<<< +if args.forward_weights: + train_default_forward_ghost_mlp(prepare_data=args.prepare_weights_data) + # FIXME: use env variable instead + os.chdir(os.path.dirname(os.path.realpath(__file__))) + train_veloUT_forward_ghost_mlp(prepare_data=args.prepare_weights_data) + # this ensures that the directory is correct + os.chdir(os.path.dirname(os.path.realpath(__file__))) + cpp_files += parse_tmva_matrix_to_array( + [ + "nn_trackinglosses_training/result/GhostNNDataSet/weights/TMVAClassification_default_forward_ghost_mlp.class.C", + "nn_trackinglosses_training/result/GhostNNDataSet/weights/TMVAClassification_veloUT_forward_ghost_mlp.class.C", + ], + ) +### +###>>> +### +if args.matching_weights: + os.chdir(os.path.dirname(os.path.realpath(__file__))) + train_matching_ghost_mlp( + prepare_data=args.prepare, + input_file="data/tracking_losses_ntuple_B.root", + tree_name="PrDebugTrackingLosses.PrDebugTrackingTool/Tuple", # e6feac0d, B: 3e224c41, B res: 1e13cc7e, D: 8cb154ca + b_input_file="data/ghost_data_B.root", + b_tree_name="PrMatchNN_3e224c41.PrMCDebugMatchToolNN/MVAInputAndOutput", + only_electrons=True, + outdir="nn_trackinglosses_training", + n_train_signal=20e3, + n_train_bkg=40e3, + n_test_signal=5e3, + n_test_bkg=10e3, + ) + # this ensures that the directory is correct + os.chdir(os.path.dirname(os.path.realpath(__file__))) + cpp_files += parse_tmva_matrix_to_array( + [ + "nn_trackinglosses_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C", + ], + simd_type=True, + ) +### +###<<< +### +for file in cpp_files: + subprocess.run( + [ + "clang-format", + "-i", + f"{file}", + ], + ) diff --git a/moore_options/Bak_get_ghost_data.py b/moore_options/Bak_get_ghost_data.py new file mode 100644 index 0000000..0f68a0c --- /dev/null +++ b/moore_options/Bak_get_ghost_data.py @@ -0,0 +1,128 @@ +from Moore import options, run_reconstruction +from Moore.config import Reconstruction +from PRConfig.TestFileDB import test_file_db +from PyConf.Algorithms import ( + PrForwardTrackingVelo, + PrForwardTracking, + PrTrackAssociator, + PrMatchNN, +) +from PyConf.application import make_data_with_FetchDataFromFile +from PyConf.Tools import PrMCDebugForwardTool, PrMCDebugMatchToolNN +from RecoConf.data_from_file import mc_unpackers +from RecoConf.hlt1_tracking import make_hlt1_tracks, make_PrStoreSciFiHits_hits +from RecoConf.hlt2_tracking import get_global_ut_hits_tool, make_PrHybridSeeding_tracks +from RecoConf.mc_checking import make_links_lhcbids_mcparticles_tracking_system + + +options.evt_max = -1 +n_files_per_cat = 1 +polarity = "MU" +options.ntuple_file = f"data/ghost_data_{polarity}.root" +input_files = ( + ( + test_file_db["upgrade_DC19_01_Bs2JPsiPhi_MD"].filenames[:n_files_per_cat] + if polarity == "MD" + else test_file_db["upgrade_DC19_01_Bs2JpsiPhiMU"].filenames[:n_files_per_cat] + ) + + test_file_db[f"upgrade_DC19_01_Bs2PhiPhi{polarity}"].filenames[:n_files_per_cat] + + test_file_db[f"upgrade_DC19_01_Z2mumu{polarity}"].filenames[:n_files_per_cat] + + test_file_db[f"upgrade_DC19_01_Bd2Dstmumu{polarity}"].filenames[:n_files_per_cat] + + test_file_db[f"upgrade_DC19_01_Dst2D0pi{polarity}"].filenames[:n_files_per_cat] + + test_file_db[f"upgrade_DC19_01_Bd2Kstee{polarity}"].filenames[:n_files_per_cat] + + test_file_db[f"upgrade_DC19_01_Dp2KSPip_{polarity}"].filenames[:n_files_per_cat] +) +options.input_files = input_files +options.input_type = "ROOT" +options.set_conds_from_testfiledb(f"upgrade_DC19_01_Dst2D0pi{polarity}") + + +def run_tracking_debug(): + links_to_hits = make_links_lhcbids_mcparticles_tracking_system() + hlt1_tracks = make_hlt1_tracks() + seed_tracks = make_PrHybridSeeding_tracks() + + # add MCLinking to the (fitted) V1 tracks + links_to_velo_tracks = PrTrackAssociator( + SingleContainer=hlt1_tracks["Velo"]["v1"], + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + links_to_upstream_tracks = PrTrackAssociator( + SingleContainer=hlt1_tracks["Upstream"]["v1"], + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + links_to_seed_tracks = PrTrackAssociator( + SingleContainer=seed_tracks["v1"], + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + # be more robust against imperfect data + loose_forward_params = dict( + MaxChi2PerDoF=16, + MaxChi2XProjection=30, + MaxChi2PerDoFFinal=8, + MaxChi2Stereo=8, + MaxChi2StereoAdd=8, + ) + + forward_debug = PrForwardTrackingVelo( + InputTracks=hlt1_tracks["Velo"]["Pr"], + SciFiHits=make_PrStoreSciFiHits_hits(), + AddUTHitsToolName=get_global_ut_hits_tool(enable=True), + DebugTool=PrMCDebugForwardTool( + InputTracks=hlt1_tracks["Velo"]["v1"], + InputTrackLinks=links_to_velo_tracks, + MCParticles=mc_unpackers()["MCParticles"], + SciFiHitLinks=links_to_hits, + SciFiHits=make_PrStoreSciFiHits_hits(), + TrackInfo=make_data_with_FetchDataFromFile("/Event/MC/TrackInfo"), + ), + **loose_forward_params, + ) + + forward_ut_debug = PrForwardTracking( + SciFiHits=make_PrStoreSciFiHits_hits(), + InputTracks=hlt1_tracks["Upstream"]["Pr"], + AddUTHitsToolName=get_global_ut_hits_tool(enable=True), + DebugTool=PrMCDebugForwardTool( + InputTracks=hlt1_tracks["Upstream"]["v1"], + InputTrackLinks=links_to_upstream_tracks, + MCParticles=mc_unpackers()["MCParticles"], + SciFiHitLinks=links_to_hits, + SciFiHits=make_PrStoreSciFiHits_hits(), + TrackInfo=make_data_with_FetchDataFromFile("/Event/MC/TrackInfo"), + ), + **loose_forward_params, + ) + + loose_matching_params = dict(MaxMatchChi2=30.0, MaxDistX=500, MaxDistY=500) + + match_debug = PrMatchNN( + VeloInput=hlt1_tracks["Velo"]["Pr"], + SeedInput=seed_tracks["Pr"], + MatchDebugToolName=PrMCDebugMatchToolNN( + VeloTracks=hlt1_tracks["Velo"]["v1"], + SeedTracks=seed_tracks["v1"], + VeloTrackLinks=links_to_velo_tracks, + SeedTrackLinks=links_to_seed_tracks, + TrackInfo=make_data_with_FetchDataFromFile("/Event/MC/TrackInfo"), + MCParticles=mc_unpackers()["MCParticles"], + ), + AddUTHitsToolName=get_global_ut_hits_tool(enable=True), + **loose_matching_params, + ).MatchOutput + + data = [forward_debug, forward_ut_debug, match_debug] + + return Reconstruction("run_tracking_debug", data) + + +run_reconstruction(options, run_tracking_debug) diff --git a/moore_options/Bak_get_parameterisation_data.py b/moore_options/Bak_get_parameterisation_data.py new file mode 100644 index 0000000..26b3891 --- /dev/null +++ b/moore_options/Bak_get_parameterisation_data.py @@ -0,0 +1,44 @@ +from Moore import options, run_reconstruction +from Moore.config import Reconstruction +from PRConfig.TestFileDB import test_file_db +from PyConf.Algorithms import PrParameterisationData +from RecoConf.data_from_file import mc_unpackers +from PyConf.application import make_data_with_FetchDataFromFile + +options.evt_max = -1 +n_files_per_cat = 1 +polarity = "MU" +options.ntuple_file = f"data/param_data_{polarity}.root" +input_files = ( + ( + test_file_db["upgrade_DC19_01_Bs2JPsiPhi_MD"].filenames[:n_files_per_cat] + if polarity == "MD" + else test_file_db["upgrade_DC19_01_Bs2JpsiPhiMU"].filenames[:n_files_per_cat] + ) + + test_file_db[f"upgrade_DC19_01_Bs2PhiPhi{polarity}"].filenames[:n_files_per_cat] + + test_file_db[f"upgrade_DC19_01_Z2mumu{polarity}"].filenames[:n_files_per_cat] + + test_file_db[f"upgrade_DC19_01_Bd2Dstmumu{polarity}"].filenames[:n_files_per_cat] + + test_file_db[f"upgrade_DC19_01_Dst2D0pi{polarity}"].filenames[:n_files_per_cat] + + test_file_db[f"upgrade_DC19_01_Bd2Kstee{polarity}"].filenames[:n_files_per_cat] + + test_file_db[f"upgrade_DC19_01_Dp2KSPip_{polarity}"].filenames[:n_files_per_cat] +) +options.input_files = input_files +options.input_type = "ROOT" +options.set_conds_from_testfiledb(f"upgrade_DC19_01_Dst2D0pi{polarity}") + + +def run_tracking_param_debug(): + param_data = PrParameterisationData( + MCParticles=mc_unpackers()["MCParticles"], + MCVPHits=mc_unpackers()["MCVPHits"], + MCFTHits=mc_unpackers()["MCFTHits"], + zRef=8520.0, + TrackInfo=make_data_with_FetchDataFromFile("/Event/MC/TrackInfo"), + ) + + data = [param_data] + + return Reconstruction("run_tracking_debug", data) + + +run_reconstruction(options, run_tracking_param_debug) diff --git a/moore_options/Bak_get_resolution_and_eff_data.py b/moore_options/Bak_get_resolution_and_eff_data.py new file mode 100644 index 0000000..01c6f72 --- /dev/null +++ b/moore_options/Bak_get_resolution_and_eff_data.py @@ -0,0 +1,121 @@ +""" +This set of options is used for reconstruction development purposes, +and assumes that the input contains MCHits (i.e. is of `Exended` +DST/digi type). +""" +# flake8: noqaq + + +from Moore import options, run_reconstruction + +from Moore.config import Reconstruction +from PyConf.Algorithms import PrKalmanFilter +from PyConf.Tools import TrackMasterExtrapolator + +from RecoConf.mc_checking import ( + check_track_resolution, + check_tracking_efficiency, + get_mc_categories, + get_hit_type_mask, + make_links_lhcbids_mcparticles_tracking_system, + make_links_tracks_mcparticles, +) +from RecoConf.core_algorithms import make_unique_id_generator +from RecoConf.hlt2_tracking import make_hlt2_tracks +from RecoConf.hlt1_tracking import ( + make_VeloClusterTrackingSIMD_hits, + make_PrStorePrUTHits_hits, + make_PrStoreSciFiHits_hits, + get_global_materiallocator, +) + +# sample = "Bd2KstEE_MD" +# sample = "Bd2KstEE_MU" +# sample = "Bs2JpsiPhi_MD" +# sample = "Bs2JpsiPhi_MU" +sample = "Bs2PhiPhi_MD" +# sample = "Bs2PhiPhi_MU" + +stack = "" + +options.evt_max = 5000 +options.first_evt = 0 if stack else 5000 +options.ntuple_file = f"data/resolutions_and_effs_{sample}{stack}.root" +options.input_type = "ROOT" +options.set_input_and_conds_from_testfiledb(f"upgrade_sim10_Up08_Digi15_{sample}") + + +def run_tracking_resolution(): + tracks = make_hlt2_tracks(light_reco=True, fast_reco=False, use_pr_kf=True) + fitted_forward_tracks = PrKalmanFilter( + Input=tracks["Forward"]["Pr"], + MaxChi2=2.8, + MaxChi2PreOutlierRemoval=20, + HitsVP=make_VeloClusterTrackingSIMD_hits(), + HitsUT=make_PrStorePrUTHits_hits(), + HitsFT=make_PrStoreSciFiHits_hits(), + ReferenceExtrapolator=TrackMasterExtrapolator( + MaterialLocator=get_global_materiallocator(), + ), + InputUniqueIDGenerator=make_unique_id_generator(), + ).OutputTracks + + links_to_lhcbids = make_links_lhcbids_mcparticles_tracking_system() + links_to_forward = make_links_tracks_mcparticles( + InputTracks=tracks["Forward"], + LinksToLHCbIDs=links_to_lhcbids, + ) + links_to_match = make_links_tracks_mcparticles( + InputTracks=tracks["Match"], + LinksToLHCbIDs=links_to_lhcbids, + ) + links_to_best = make_links_tracks_mcparticles( + InputTracks=tracks["BestLong"], + LinksToLHCbIDs=links_to_lhcbids, + ) + res_checker_forward = check_track_resolution(tracks["Forward"], suffix="Forward") + res_checker_best_long = check_track_resolution( + tracks["BestLong"], + suffix="BestLong", + ) + res_checker_best_forward = check_track_resolution( + dict(v1=fitted_forward_tracks), + suffix="BestForward", + ) + eff_checker_forward = check_tracking_efficiency( + "Forward", + tracks["Forward"], + links_to_forward, + links_to_lhcbids, + get_mc_categories("Forward"), + get_hit_type_mask("Forward"), + ) + eff_checker_match = check_tracking_efficiency( + "Match", + tracks["Match"], + links_to_match, + links_to_lhcbids, + get_mc_categories("Match"), + get_hit_type_mask("Match"), + ) + eff_checker_best_long = check_tracking_efficiency( + "BestLong", + tracks["BestLong"], + links_to_best, + links_to_lhcbids, + get_mc_categories("BestLong"), + get_hit_type_mask("BestLong"), + ) + data = [ + res_checker_forward, + res_checker_best_long, + res_checker_best_forward, + eff_checker_forward, + eff_checker_match, + eff_checker_best_long, + ] + + return Reconstruction("run_tracking_debug", data) + + +run_reconstruction(options, run_tracking_resolution) diff --git a/moore_options/Bak_get_tracking_losses.py b/moore_options/Bak_get_tracking_losses.py new file mode 100644 index 0000000..2360924 --- /dev/null +++ b/moore_options/Bak_get_tracking_losses.py @@ -0,0 +1,122 @@ +############################################################################### +# (c) Copyright 2023 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +# flake8: noqa +from Moore import options, run_reconstruction +from Moore.config import Reconstruction +from RecoConf.data_from_file import mc_unpackers +from RecoConf.hlt1_tracking import make_VeloClusterTrackingSIMD_hits +from RecoConf.hlt2_tracking import ( + make_hlt2_tracks, + make_PrKalmanFilter_tracks, + make_PrStorePrUTHits_hits, + make_PrStoreSciFiHits_hits, +) +from RecoConf.mc_checking import ( + make_links_lhcbids_mcparticles_tracking_system, + make_links_tracks_mcparticles, + make_default_IdealStateCreator, +) + +from PyConf.Algorithms import PrTrackAssociator, PrDebugTrackingLosses +from PyConf.application import make_data_with_FetchDataFromFile +import glob + +decay = "B" + +if decay == "B": + options.input_files = glob.glob("/auto/data/guenther/Bd_Kstee/*.xdigi") +elif decay == "D": + options.input_files = glob.glob("/auto/data/guenther/Dst_D0ee/*.xdigi") +elif decay == "test": + options.input_files = ["/auto/data/guenther/Bd_Kstee/00151673_00000002_1.xdigi"] + + +options.conddb_tag = "sim-20210617-vc-md100" +options.dddb_tag = "dddb-20210617" +options.simulation = True +options.input_type = "ROOT" + +options.ntuple_file = f"data/tracking_losses_ntuple_{decay}.root" + + +options.evt_max = -1 + +# run with +# ./Moore/run gaudirun.py Moore/Hlt/RecoConf/options/tracking_developments/run_pr_tracking_losses.py +# tested by mc_matching_example.py + + +def run_tracking_losses(): + links_to_hits = make_links_lhcbids_mcparticles_tracking_system() + hlt2_tracks = make_hlt2_tracks(light_reco=True, fast_reco=False, use_pr_kf=True) + vp_hits = make_VeloClusterTrackingSIMD_hits() + ut_hits = make_PrStorePrUTHits_hits() + ft_hits = make_PrStoreSciFiHits_hits() + fitted_match_tracks = make_PrKalmanFilter_tracks( # fitted_forward_tracks + input_tracks=hlt2_tracks["Match"]["Pr"], # Forward + hits_vp=vp_hits, + hits_ut=ut_hits, + hits_ft=ft_hits, + ) + + # add MCLinking to the (fitted) V1 tracks + links_to_velo_tracks = PrTrackAssociator( + SingleContainer=hlt2_tracks["Velo"]["v1"], + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + links_to_long_tracks = PrTrackAssociator( + SingleContainer=hlt2_tracks["Match"]["v1"], # Forward + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + with PrTrackAssociator.bind(FractionOK=0.5): + loose_links_to_long_tracks = PrTrackAssociator( + SingleContainer=hlt2_tracks["Match"]["v1"], # Forward + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + links_to_fitted_tracks = PrTrackAssociator( + SingleContainer=fitted_match_tracks, # fitted_forward_tracks + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + tracking_losses = PrDebugTrackingLosses( + name="PrDebugTrackingLosses", + TrackType="Long", + StudyTracks=hlt2_tracks["Match"]["v1"], # Forward + VeloTracks=hlt2_tracks["Velo"]["v1"], + MCParticles=mc_unpackers()["MCParticles"], + MCVPHits=mc_unpackers()["MCVPHits"], + MCUTHits=mc_unpackers()["MCUTHits"], + MCFTHits=mc_unpackers()["MCFTHits"], + VeloTrackLinks=links_to_velo_tracks, + TrackLinks=links_to_long_tracks, + LooseTrackLinks=loose_links_to_long_tracks, + FittedTrackLinks=links_to_fitted_tracks, + # LHCbIDLinks=links_to_hits, + IdealStateCreator=make_default_IdealStateCreator(), + TrackInfo=make_data_with_FetchDataFromFile("/Event/MC/TrackInfo"), + ) + + data = [tracking_losses] + return Reconstruction("run_tracking_losses", data) + + +run_reconstruction(options, run_tracking_losses) diff --git a/moore_options/Recent_get_parameterisation_data.py b/moore_options/Recent_get_parameterisation_data.py new file mode 100644 index 0000000..377fabe --- /dev/null +++ b/moore_options/Recent_get_parameterisation_data.py @@ -0,0 +1,38 @@ +from Moore import options, run_reconstruction +from Moore.config import Reconstruction +from PyConf.Algorithms import PrParameterisationData +from RecoConf.data_from_file import mc_unpackers +from PyConf.application import make_data_with_FetchDataFromFile +import glob + + +options.evt_max = -1 +n_files_per_cat = 1 +decay = "B" +options.ntuple_file = f"data/param_data_{decay}.root" +options.input_type = "ROOT" +if decay == "B": + options.input_files = glob.glob("/auto/data/guenther/Bd_Kstee/*.xdigi") +elif decay == "D": + options.input_files = glob.glob("/auto/data/guenther/Dst_D0ee/*.xdigi") + +options.dddb_tag = "dddb-20210617" +options.conddb_tag = "sim-20210617-vc-md100" +options.simulation = True + + +def run_tracking_param_debug(): + param_data = PrParameterisationData( + MCParticles=mc_unpackers()["MCParticles"], + MCVPHits=mc_unpackers()["MCVPHits"], + MCFTHits=mc_unpackers()["MCFTHits"], + zRef=8520.0, + TrackInfo=make_data_with_FetchDataFromFile("/Event/MC/TrackInfo"), + ) + + data = [param_data] + + return Reconstruction("run_tracking_debug", data) + + +run_reconstruction(options, run_tracking_param_debug) diff --git a/moore_options/get_ghost_data.py b/moore_options/get_ghost_data.py new file mode 100644 index 0000000..b7bdddd --- /dev/null +++ b/moore_options/get_ghost_data.py @@ -0,0 +1,221 @@ +# flake8: noqa + +""" +Moore/run gaudirun.py /work/cetin/LHCb/reco_tuner/moore_options/get_ghost_data.py +""" + +from Moore import options, run_reconstruction +from Moore.config import Reconstruction + +from PyConf.Algorithms import ( + PrForwardTrackingVelo, + PrForwardTracking, + PrTrackAssociator, + PrMatchNN, + PrResidualVeloTracks, + PrResidualSeedingLong, + fromPrMatchTracksV1Tracks, + fromPrVeloTracksV1Tracks, + fromPrSeedingTracksV1Tracks, +) +from PyConf.application import make_data_with_FetchDataFromFile +from PyConf.Tools import PrMCDebugForwardTool, PrMCDebugMatchToolNN +from RecoConf.data_from_file import mc_unpackers +from RecoConf.hlt1_tracking import make_hlt1_tracks, make_PrStoreSciFiHits_hits +from RecoConf.hlt2_tracking import ( + get_global_ut_hits_tool, + make_PrHybridSeeding_tracks, + make_PrMatchNN_tracks, + get_fast_hlt2_tracks, +) +from RecoConf.mc_checking import make_links_lhcbids_mcparticles_tracking_system +import glob + +options.evt_max = -1 + +decay = "D" # D, B +options.ntuple_file = f"data/ghost_data_{decay}_electron_weights.root" + +options.input_type = "ROOT" +if decay == "B": + options.input_files = glob.glob("/auto/data/guenther/Bd_Kstee/*.xdigi") +elif decay == "D": + options.input_files = glob.glob("/auto/data/guenther/Dst_D0ee/*.xdigi") +elif decay == "test": + options.input_files = ["/auto/data/guenther/Bd_Kstee/00151673_00000002_1.xdigi"] +elif decay == "both": + options.input_files = glob.glob("/auto/data/guenther/Bd_Kstee/*.xdigi") + glob.glob( + "/auto/data/guenther/Dst_D0ee/*.xdigi" + ) + +options.dddb_tag = "dddb-20210617" +options.conddb_tag = "sim-20210617-vc-md100" + + +# options.geometry_version = "run3/trunk" #"run3/before-rich1-geom-update-26052022" +# options.conditions_version = "master" +options.simulation = True + + +def run_tracking_debug(): + links_to_hits = make_links_lhcbids_mcparticles_tracking_system() + hlt1_tracks = make_hlt1_tracks() + seed_tracks = make_PrHybridSeeding_tracks() + + # add MCLinking to the (fitted) V1 tracks + links_to_velo_tracks = PrTrackAssociator( + SingleContainer=hlt1_tracks["Velo"]["v1"], + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + links_to_upstream_tracks = PrTrackAssociator( + SingleContainer=hlt1_tracks["Upstream"]["v1"], + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + links_to_seed_tracks = PrTrackAssociator( + SingleContainer=seed_tracks["v1"], + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + # be more robust against imperfect data + loose_forward_params = dict( + MaxChi2PerDoF=16, + MaxChi2XProjection=30, + MaxChi2PerDoFFinal=8, + MaxChi2Stereo=8, + MaxChi2StereoAdd=8, + ) + + forward_debug = PrForwardTrackingVelo( + InputTracks=hlt1_tracks["Velo"]["Pr"], + SciFiHits=make_PrStoreSciFiHits_hits(), + AddUTHitsToolName=get_global_ut_hits_tool(enable=True), + DebugTool=PrMCDebugForwardTool( + InputTracks=hlt1_tracks["Velo"]["v1"], + InputTrackLinks=links_to_velo_tracks, + MCParticles=mc_unpackers()["MCParticles"], + SciFiHitLinks=links_to_hits, + SciFiHits=make_PrStoreSciFiHits_hits(), + TrackInfo=make_data_with_FetchDataFromFile("/Event/MC/TrackInfo"), + ), + **loose_forward_params, + ) + + forward_ut_debug = PrForwardTracking( + SciFiHits=make_PrStoreSciFiHits_hits(), + InputTracks=hlt1_tracks["Upstream"]["Pr"], + AddUTHitsToolName=get_global_ut_hits_tool(enable=True), + DebugTool=PrMCDebugForwardTool( + InputTracks=hlt1_tracks["Upstream"]["v1"], + InputTrackLinks=links_to_upstream_tracks, + MCParticles=mc_unpackers()["MCParticles"], + SciFiHitLinks=links_to_hits, + SciFiHits=make_PrStoreSciFiHits_hits(), + TrackInfo=make_data_with_FetchDataFromFile("/Event/MC/TrackInfo"), + ), + **loose_forward_params, + ) + + loose_matching_params = dict( + MaxMatchChi2=30.0, # 30.0, + MaxDistX=500, # 500, + MaxDistY=500, # 500, + MaxDSlope=1.5, + MinMatchNN=0.215, # NN response cut value + ) + + match_debug = PrMatchNN( + VeloInput=hlt1_tracks["Velo"]["Pr"], + SeedInput=seed_tracks["Pr"], + MatchDebugToolName=PrMCDebugMatchToolNN( + VeloTracks=hlt1_tracks["Velo"]["v1"], + SeedTracks=seed_tracks["v1"], + VeloTrackLinks=links_to_velo_tracks, + SeedTrackLinks=links_to_seed_tracks, + TrackInfo=make_data_with_FetchDataFromFile("/Event/MC/TrackInfo"), + MCParticles=mc_unpackers()["MCParticles"], + ), + AddUTHitsToolName=get_global_ut_hits_tool(enable=True), + **loose_matching_params, + ).MatchOutput + + """ + v1_match_tracks = fromPrMatchTracksV1Tracks( + InputTracksLocation=match_debug, + VeloTracksLocation=hlt1_tracks["Velo"]["v1"], + SeedTracksLocation=seed_tracks["v1"], + ).OutputTracksLocation + + # run Matching on residual velo and seed track segments + + pr_velo_residual = PrResidualVeloTracks( + TracksLocation=match_debug, + VeloTrackLocation=hlt1_tracks["Velo"]["Pr"], + ).VeloTrackOutput + + v1_velo_residual = fromPrVeloTracksV1Tracks( + InputTracksLocation=pr_velo_residual + ).OutputTracksLocation + + pr_seed_residual = PrResidualSeedingLong( + MatchTracksLocation=match_debug, + SeedTracksLocation=seed_tracks["Pr"], + ).SeedTracksOutput + + v1_seed_residual = fromPrSeedingTracksV1Tracks( + InputTracksLocation=pr_seed_residual + ).OutputTracksLocation + + # add MCLinking to the (fitted) residual V1 tracks + links_to_res_velo_tracks = PrTrackAssociator( + SingleContainer=v1_velo_residual, + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + links_to_res_seed_tracks = PrTrackAssociator( + SingleContainer=v1_seed_residual, + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + loose_res_matching_params = dict( + MaxMatchChi2=30.0, # 30.0, + MaxDistX=500, # 500, + MaxDistY=500, # 500, + MaxDSlope=1.5, + MinMatchNN=0.5, # NN response cut value + FastYTol=2500.0, + ) + + match_residual = PrMatchNN( + VeloInput=pr_velo_residual, + SeedInput=pr_seed_residual, + MatchDebugToolName=PrMCDebugMatchToolNN( + VeloTracks=v1_velo_residual, + SeedTracks=v1_seed_residual, + VeloTrackLinks=links_to_res_velo_tracks, + SeedTrackLinks=links_to_res_seed_tracks, + TrackInfo=make_data_with_FetchDataFromFile("/Event/MC/TrackInfo"), + MCParticles=mc_unpackers()["MCParticles"], + ), + AddUTHitsToolName=get_global_ut_hits_tool(enable=True), + **loose_res_matching_params, + ).MatchOutput + """ + + data = [forward_debug, forward_ut_debug, match_debug] # match_residual] + + return Reconstruction("run_tracking_debug", data) + + +run_reconstruction(options, run_tracking_debug) diff --git a/moore_options/get_resolution_and_eff_data.py b/moore_options/get_resolution_and_eff_data.py new file mode 100644 index 0000000..00f4c84 --- /dev/null +++ b/moore_options/get_resolution_and_eff_data.py @@ -0,0 +1,153 @@ +# flake8: noqa + + +""" +This set of options is used for reconstruction development purposes, +and assumes that the input contains MCHits (i.e. is of `Exended` +DST/digi type). + +author: Furkan Cetin +date: 10/2023 + +Moore/run gaudirun.py /work/cetin/LHCb/reco_tuner/moore_options/get_resolution_and_eff_data.py +""" + +from Moore import options, run_reconstruction + +from Moore.config import Reconstruction +from PyConf.Algorithms import PrKalmanFilter +from PyConf.Tools import TrackMasterExtrapolator +import glob + +from RecoConf.mc_checking import ( + check_track_resolution, + check_tracking_efficiency, + get_mc_categories, + get_hit_type_mask, + make_links_lhcbids_mcparticles_tracking_system, + make_links_tracks_mcparticles, +) +from RecoConf.core_algorithms import make_unique_id_generator +from RecoConf.hlt2_tracking import make_hlt2_tracks +from RecoConf.hlt1_tracking import ( + make_VeloClusterTrackingSIMD_hits, + make_PrStorePrUTHits_hits, + make_PrStoreSciFiHits_hits, + get_global_materiallocator, +) + +decay = "D" + +options.evt_max = -1 + +options.ntuple_file = f"data/resolutions_and_effs_{decay}_electron_weights.root" +options.input_type = "ROOT" + + +if decay == "B": + options.input_files = glob.glob("/auto/data/guenther/Bd_Kstee/*.xdigi") +elif decay == "D": + options.input_files = glob.glob("/auto/data/guenther/Dst_D0ee/*.xdigi") +elif decay == "test": + options.input_files = ["/auto/data/guenther/Bd_Kstee/00151673_00000002_1.xdigi"] + +options.dddb_tag = "dddb-20210617" +options.conddb_tag = "sim-20210617-vc-md100" +options.simulation = True + + +def run_tracking_resolution(): + tracks = make_hlt2_tracks(light_reco=True, fast_reco=False, use_pr_kf=True) + fitted_forward_tracks = PrKalmanFilter( + Input=tracks["Forward"]["Pr"], + MaxChi2=2.8, + MaxChi2PreOutlierRemoval=20, + HitsVP=make_VeloClusterTrackingSIMD_hits(), + HitsUT=make_PrStorePrUTHits_hits(), + HitsFT=make_PrStoreSciFiHits_hits(), + ReferenceExtrapolator=TrackMasterExtrapolator( + MaterialLocator=get_global_materiallocator(), + ), + InputUniqueIDGenerator=make_unique_id_generator(), + ).OutputTracks + + links_to_lhcbids = make_links_lhcbids_mcparticles_tracking_system() + links_to_forward = make_links_tracks_mcparticles( + InputTracks=tracks["Forward"], + LinksToLHCbIDs=links_to_lhcbids, + ) + links_to_match = make_links_tracks_mcparticles( + InputTracks=tracks["Match"], + LinksToLHCbIDs=links_to_lhcbids, + ) + links_to_best = make_links_tracks_mcparticles( + InputTracks=tracks["BestLong"], + LinksToLHCbIDs=links_to_lhcbids, + ) + links_to_seed = make_links_tracks_mcparticles( + InputTracks=tracks["Seed"], + LinksToLHCbIDs=links_to_lhcbids, + ) + + res_checker_forward = check_track_resolution(tracks["Forward"], suffix="Forward") + res_checker_best_long = check_track_resolution( + tracks["BestLong"], + suffix="BestLong", + ) + res_checker_best_forward = check_track_resolution( + dict(v1=fitted_forward_tracks), + suffix="BestForward", + ) + res_checker_seed = check_track_resolution( + tracks["Seed"], + suffix="Seed", + ) + + eff_checker_forward = check_tracking_efficiency( + "Forward", + tracks["Forward"], + links_to_forward, + links_to_lhcbids, + get_mc_categories("Forward"), + get_hit_type_mask("Forward"), + ) + eff_checker_match = check_tracking_efficiency( + "Match", + tracks["Match"], + links_to_match, + links_to_lhcbids, + get_mc_categories("Match"), + get_hit_type_mask("Match"), + ) + eff_checker_best_long = check_tracking_efficiency( + "BestLong", + tracks["BestLong"], + links_to_best, + links_to_lhcbids, + get_mc_categories("BestLong"), + get_hit_type_mask("BestLong"), + ) + eff_checker_seed = check_tracking_efficiency( + "Seed", + tracks["Seed"], + links_to_seed, + links_to_lhcbids, + get_mc_categories("Seed"), + get_hit_type_mask("Seed"), + ) + + data = [ + res_checker_forward, + res_checker_best_long, + res_checker_best_forward, + res_checker_seed, + eff_checker_forward, + eff_checker_match, + eff_checker_best_long, + eff_checker_seed, + ] + + return Reconstruction("run_tracking_debug", data) + + +run_reconstruction(options, run_tracking_resolution) diff --git a/moore_options/get_tracking_losses.py b/moore_options/get_tracking_losses.py new file mode 100644 index 0000000..bea4db6 --- /dev/null +++ b/moore_options/get_tracking_losses.py @@ -0,0 +1,127 @@ +############################################################################### +# (c) Copyright 2023 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +# flake8: noqa +from Moore import options, run_reconstruction +from Moore.config import Reconstruction +from RecoConf.data_from_file import mc_unpackers +from RecoConf.hlt1_tracking import make_VeloClusterTrackingSIMD_hits +from RecoConf.hlt2_tracking import ( + make_hlt2_tracks, + make_PrKalmanFilter_tracks, + make_PrStorePrUTHits_hits, + make_PrStoreSciFiHits_hits, +) +from RecoConf.mc_checking import ( + make_links_lhcbids_mcparticles_tracking_system, + make_links_tracks_mcparticles, + make_default_IdealStateCreator, +) + +from PyConf.Algorithms import PrTrackAssociator, PrDebugTrackingLosses +from PyConf.application import make_data_with_FetchDataFromFile +import glob + + +""" + +run with +Moore/run gaudirun.py /work/cetin/LHCb/reco_tuner/moore_options/get_tracking_losses.py +tested by mc_matching_example.py + +""" + +decay = "D" + +if decay == "B": + options.input_files = glob.glob("/auto/data/guenther/Bd_Kstee/*.xdigi") +elif decay == "D": + options.input_files = glob.glob("/auto/data/guenther/Dst_D0ee/*.xdigi") +elif decay == "test": + options.input_files = ["/auto/data/guenther/Bd_Kstee/00151673_00000002_1.xdigi"] + + +options.conddb_tag = "sim-20210617-vc-md100" +options.dddb_tag = "dddb-20210617" +options.simulation = True +options.input_type = "ROOT" + +options.ntuple_file = f"data/tracking_losses_ntuple_{decay}_match_electron_weights.root" + + +options.evt_max = -1 + + +def run_tracking_losses(): + links_to_hits = make_links_lhcbids_mcparticles_tracking_system() + hlt2_tracks = make_hlt2_tracks(light_reco=True, fast_reco=False, use_pr_kf=True) + vp_hits = make_VeloClusterTrackingSIMD_hits() + ut_hits = make_PrStorePrUTHits_hits() + ft_hits = make_PrStoreSciFiHits_hits() + fitted_match_tracks = make_PrKalmanFilter_tracks( # fitted_forward_tracks + input_tracks=hlt2_tracks["Match"]["Pr"], # Forward + hits_vp=vp_hits, + hits_ut=ut_hits, + hits_ft=ft_hits, + ) + + # add MCLinking to the (fitted) V1 tracks + links_to_velo_tracks = PrTrackAssociator( + SingleContainer=hlt2_tracks["Velo"]["v1"], + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + links_to_long_tracks = PrTrackAssociator( + SingleContainer=hlt2_tracks["Match"]["v1"], # Forward + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + with PrTrackAssociator.bind(FractionOK=0.5): + loose_links_to_long_tracks = PrTrackAssociator( + SingleContainer=hlt2_tracks["Match"]["v1"], # Forward + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + links_to_fitted_tracks = PrTrackAssociator( + SingleContainer=fitted_match_tracks, # fitted_forward_tracks + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + tracking_losses = PrDebugTrackingLosses( + name="PrDebugTrackingLosses", + TrackType="Long", + StudyTracks=hlt2_tracks["Match"]["v1"], # Forward + VeloTracks=hlt2_tracks["Velo"]["v1"], + MCParticles=mc_unpackers()["MCParticles"], + MCVPHits=mc_unpackers()["MCVPHits"], + MCUTHits=mc_unpackers()["MCUTHits"], + MCFTHits=mc_unpackers()["MCFTHits"], + VeloTrackLinks=links_to_velo_tracks, + TrackLinks=links_to_long_tracks, + LooseTrackLinks=loose_links_to_long_tracks, + FittedTrackLinks=links_to_fitted_tracks, + # LHCbIDLinks=links_to_hits, + IdealStateCreator=make_default_IdealStateCreator(), + TrackInfo=make_data_with_FetchDataFromFile("/Event/MC/TrackInfo"), + ) + + data = [tracking_losses] + return Reconstruction("run_tracking_losses", data) + + +run_reconstruction(options, run_tracking_losses) diff --git a/moore_options/residual_get_ghost_data.py b/moore_options/residual_get_ghost_data.py new file mode 100644 index 0000000..4d9de0d --- /dev/null +++ b/moore_options/residual_get_ghost_data.py @@ -0,0 +1,142 @@ +# flake8: noqaq + +""" +NOT IMPLEMENTED YET + + +Moore/run gaudirun.py /work/cetin/LHCb/reco_tuner/moore_options/Recent_get_ghost_data.py +""" + +from Moore import options, run_reconstruction +from Moore.config import Reconstruction +from PyConf.Algorithms import ( + PrForwardTrackingVelo, + PrForwardTracking, + PrTrackAssociator, + PrMatchNN, +) +from PyConf.application import make_data_with_FetchDataFromFile +from PyConf.Tools import PrMCDebugForwardTool, PrMCDebugMatchToolNN +from RecoConf.data_from_file import mc_unpackers +from RecoConf.hlt1_tracking import make_hlt1_tracks, make_PrStoreSciFiHits_hits +from RecoConf.hlt2_tracking import get_global_ut_hits_tool, make_PrHybridSeeding_tracks +from RecoConf.mc_checking import make_links_lhcbids_mcparticles_tracking_system +import glob + +options.evt_max = -1 + +decay = "test" # D, B +options.ntuple_file = f"data/ghost_data_{decay}.root" +options.input_type = "ROOT" + +if decay == "B": + options.input_files = glob.glob("/auto/data/guenther/Bd_Kstee/*.xdigi") +elif decay == "D": + options.input_files = glob.glob("/auto/data/guenther/Dst_D0ee/*.xdigi") +elif decay == "test": + options.input_files = ["/auto/data/guenther/Bd_Kstee/00151673_00000002_1.xdigi"] +elif decay == "both": + options.input_files = glob.glob("/auto/data/guenther/Bd_Kstee/*.xdigi") + glob.glob( + "/auto/data/guenther/Dst_D0ee/*.xdigi" + ) + +options.dddb_tag = "dddb-20210617" +options.conddb_tag = "sim-20210617-vc-md100" + +options.simulation = True + + +def run_tracking_debug(): + links_to_hits = make_links_lhcbids_mcparticles_tracking_system() + hlt1_tracks = make_hlt1_tracks() + seed_tracks = make_PrHybridSeeding_tracks() + + # add MCLinking to the (fitted) V1 tracks + links_to_velo_tracks = PrTrackAssociator( + SingleContainer=hlt1_tracks["Velo"]["v1"], + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + links_to_upstream_tracks = PrTrackAssociator( + SingleContainer=hlt1_tracks["Upstream"]["v1"], + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + links_to_seed_tracks = PrTrackAssociator( + SingleContainer=seed_tracks["v1"], + LinkerLocationID=links_to_hits, + MCParticleLocation=mc_unpackers()["MCParticles"], + MCVerticesInput=mc_unpackers()["MCVertices"], + ).OutputLocation + + # be more robust against imperfect data + loose_forward_params = dict( + MaxChi2PerDoF=16, + MaxChi2XProjection=30, + MaxChi2PerDoFFinal=8, + MaxChi2Stereo=8, + MaxChi2StereoAdd=8, + ) + + forward_debug = PrForwardTrackingVelo( + InputTracks=hlt1_tracks["Velo"]["Pr"], + SciFiHits=make_PrStoreSciFiHits_hits(), + AddUTHitsToolName=get_global_ut_hits_tool(enable=True), + DebugTool=PrMCDebugForwardTool( + InputTracks=hlt1_tracks["Velo"]["v1"], + InputTrackLinks=links_to_velo_tracks, + MCParticles=mc_unpackers()["MCParticles"], + SciFiHitLinks=links_to_hits, + SciFiHits=make_PrStoreSciFiHits_hits(), + TrackInfo=make_data_with_FetchDataFromFile("/Event/MC/TrackInfo"), + ), + **loose_forward_params, + ) + + forward_ut_debug = PrForwardTracking( + SciFiHits=make_PrStoreSciFiHits_hits(), + InputTracks=hlt1_tracks["Upstream"]["Pr"], + AddUTHitsToolName=get_global_ut_hits_tool(enable=True), + DebugTool=PrMCDebugForwardTool( + InputTracks=hlt1_tracks["Upstream"]["v1"], + InputTrackLinks=links_to_upstream_tracks, + MCParticles=mc_unpackers()["MCParticles"], + SciFiHitLinks=links_to_hits, + SciFiHits=make_PrStoreSciFiHits_hits(), + TrackInfo=make_data_with_FetchDataFromFile("/Event/MC/TrackInfo"), + ), + **loose_forward_params, + ) + + loose_matching_params = dict( + MaxMatchChi2=30.0, + MaxDistX=500, + MaxDistY=500, + MaxDSlope=1.5, + ) + + match_debug = PrMatchNN( + VeloInput=hlt1_tracks["Velo"]["Pr"], + SeedInput=seed_tracks["Pr"], + MatchDebugToolName=PrMCDebugMatchToolNN( + VeloTracks=hlt1_tracks["Velo"]["v1"], + SeedTracks=seed_tracks["v1"], + VeloTrackLinks=links_to_velo_tracks, + SeedTrackLinks=links_to_seed_tracks, + TrackInfo=make_data_with_FetchDataFromFile("/Event/MC/TrackInfo"), + MCParticles=mc_unpackers()["MCParticles"], + ), + AddUTHitsToolName=get_global_ut_hits_tool(enable=True), + **loose_matching_params, + ).MatchOutput + + data = [forward_debug, forward_ut_debug, match_debug] + + return Reconstruction("run_tracking_debug", data) + + +run_reconstruction(options, run_tracking_debug) diff --git a/moore_options/residual_get_resolution_and_eff_data.py b/moore_options/residual_get_resolution_and_eff_data.py new file mode 100644 index 0000000..8b9da8a --- /dev/null +++ b/moore_options/residual_get_resolution_and_eff_data.py @@ -0,0 +1,168 @@ +# flake8: noqa + + +""" +This set of options is used for reconstruction development purposes, +and assumes that the input contains MCHits (i.e. is of `Exended` +DST/digi type). + +author: Furkan Cetin +date: 10/2023 + +Moore/run gaudirun.py /work/cetin/LHCb/reco_tuner/moore_options/residual_get_resolution_and_eff_data.py +""" + +from Moore import options, run_reconstruction + +from Moore.config import Reconstruction +from PyConf.Algorithms import PrKalmanFilter +from PyConf.Tools import TrackMasterExtrapolator +import glob + +from RecoConf.mc_checking import ( + check_track_resolution, + check_tracking_efficiency, + get_mc_categories, + get_hit_type_mask, + make_links_lhcbids_mcparticles_tracking_system, + make_links_tracks_mcparticles, +) +from RecoConf.core_algorithms import make_unique_id_generator +from RecoConf.hlt2_tracking import make_res_hlt2_tracks +from RecoConf.hlt1_tracking import ( + make_VeloClusterTrackingSIMD_hits, + make_PrStorePrUTHits_hits, + make_PrStoreSciFiHits_hits, + get_global_materiallocator, +) + +# sample = "DstD0EE_MD" +# sample = "Bd2KstEE_MD" +# sample = "Bd2KstEE_MU" +# sample = "Bs2JpsiPhi_MD" +# sample = "Bs2JpsiPhi_MU" +# sample = "Bs2PhiPhi_MD" +# sample = "Bs2PhiPhi_MU" + + +decay = "D" + + +options.evt_max = -1 + +options.ntuple_file = ( + f"data/resolutions_and_effs_{decay}_with_electron_weights_as_residual.root" +) +options.input_type = "ROOT" + + +if decay == "B": + options.input_files = glob.glob("/auto/data/guenther/Bd_Kstee/*.xdigi") +elif decay == "D": + options.input_files = glob.glob("/auto/data/guenther/Dst_D0ee/*.xdigi") +elif decay == "test": + options.input_files = ["/auto/data/guenther/Bd_Kstee/00151673_00000002_1.xdigi"] + +options.dddb_tag = "dddb-20210617" +options.conddb_tag = "sim-20210617-vc-md100" +options.simulation = True + + +def run_tracking_resolution(): + tracks = make_res_hlt2_tracks(light_reco=True, fast_reco=False, use_pr_kf=True) + fitted_forward_tracks = PrKalmanFilter( + Input=tracks["Forward"]["Pr"], + MaxChi2=2.8, + MaxChi2PreOutlierRemoval=20, + HitsVP=make_VeloClusterTrackingSIMD_hits(), + HitsUT=make_PrStorePrUTHits_hits(), + HitsFT=make_PrStoreSciFiHits_hits(), + ReferenceExtrapolator=TrackMasterExtrapolator( + MaterialLocator=get_global_materiallocator(), + ), + InputUniqueIDGenerator=make_unique_id_generator(), + ).OutputTracks + + links_to_lhcbids = make_links_lhcbids_mcparticles_tracking_system() + links_to_forward = make_links_tracks_mcparticles( + InputTracks=tracks["Forward"], + LinksToLHCbIDs=links_to_lhcbids, + ) + links_to_match = make_links_tracks_mcparticles( + InputTracks=tracks["Match"], + LinksToLHCbIDs=links_to_lhcbids, + ) + links_to_best = make_links_tracks_mcparticles( + InputTracks=tracks["BestLong"], + LinksToLHCbIDs=links_to_lhcbids, + ) + links_to_seed = make_links_tracks_mcparticles( + InputTracks=tracks["Seed"], + LinksToLHCbIDs=links_to_lhcbids, + ) + + res_checker_forward = check_track_resolution( + tracks["Forward"], + suffix="Forward", + ) + res_checker_best_long = check_track_resolution( + tracks["BestLong"], + suffix="BestLong", + ) + res_checker_best_forward = check_track_resolution( + dict(v1=fitted_forward_tracks), + suffix="BestForward", + ) + res_checker_seed = check_track_resolution( + tracks["Seed"], + suffix="Seed", + ) + + eff_checker_forward = check_tracking_efficiency( + "Forward", + tracks["Forward"], + links_to_forward, + links_to_lhcbids, + get_mc_categories("Forward"), + get_hit_type_mask("Forward"), + ) + eff_checker_match = check_tracking_efficiency( + "Match", + tracks["Match"], + links_to_match, + links_to_lhcbids, + get_mc_categories("Match"), + get_hit_type_mask("Match"), + ) + eff_checker_best_long = check_tracking_efficiency( + "BestLong", + tracks["BestLong"], + links_to_best, + links_to_lhcbids, + get_mc_categories("BestLong"), + get_hit_type_mask("BestLong"), + ) + eff_checker_seed = check_tracking_efficiency( + "Seed", + tracks["Seed"], + links_to_seed, + links_to_lhcbids, + get_mc_categories("Seed"), + get_hit_type_mask("Seed"), + ) + + data = [ + res_checker_forward, + res_checker_best_long, + res_checker_best_forward, + res_checker_seed, + eff_checker_forward, + eff_checker_match, + eff_checker_best_long, + eff_checker_seed, + ] + + return Reconstruction("run_tracking_debug", data) + + +run_reconstruction(options, run_tracking_resolution) diff --git a/neural_net_training/result/matching.hpp b/neural_net_training/result/matching.hpp new file mode 100644 index 0000000..511b921 --- /dev/null +++ b/neural_net_training/result/matching.hpp @@ -0,0 +1,48 @@ +const auto fMin = std::array{ + {1.32643926918e-05, 1.20999777664e-06, 3.81469726562e-06, 1.52587890625e-05, + 2.20164656639e-06, 1.86264514923e-09}}; +const auto fMax = std::array{{14.9999952316, 0.436187297106, + 249.999572754, 399.485595703, + 1.30260443687, 0.148344695568}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{2.32568146034949, -3.97864517484141, -0.976136452226726, 1.84234344676559, + -3.10046463102268, 4.13961872392198, 1.32395215581256}, + {-0.246260592363558, -16.6289365646957, 15.8745926520597, 5.54227150397204, + -3.52013322130382, 3.54800430147538, 4.65963029843042}, + {-0.0480865527472585, -0.629210074395733, 6.00348546361291, + 2.9051880336304, -0.14352194426084, 1.69533803008533, 8.43612131346998}, + {0.586453583994425, -2.56124202576808, 2.59227690708752, + 0.0874243316906918, -2.97381765628525, 5.49796401976845, + 3.23192359468339}, + {0.429663439996412, -22.1383805768484, -0.392774946210208, + -3.3393241414433, -0.0183236766918373, 1.7443084621404, + -23.1241106528584}, + {1.51561003857451, -0.252437187813493, 3.4382652179148, 1.64873635165153, + 1.3257641118939, -1.3769915299618, 6.284788658685}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {1.26283446391613, 1.060406101318, 0.30016156694275, 0.868137090713936, + 0.620452727287864, 0.654572151525178, -1.93868171775984}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{-0.756398914721592, 1.43176897679079, -1.9761225512629, + -0.252826703054453, 5.76338466721064, 0.853447490406625, 1.63438201788813, + -1.30124222851611, -1.16516476663684}, + {1.33354118308893, 2.2779204457711, -2.4183940976708, -1.41409141050929, + -3.03014280476042, -0.105294409656274, -1.61531096417457, + 0.0713464687805576, -4.46730787742624}, + {1.69117951310622, 0.478803367417533, -0.0952992998738417, + -1.42291620159966, -5.3475695755735, -0.851706256912453, + -0.825543426908553, -1.84634786630319, 1.10300947885605}, + {1.62294844942986, -1.4305887420849, 1.34690035656602, -1.75196364787073, + -1.34911857298729, -1.19784919878849, 1.61348068527877, -1.6413641883722, + -1.80987544922642}, + {-0.885340378859963, -1.27010625003553, 1.64729145944323, + -1.93179670311711, -2.00487598846412, 0.858689001379895, + -0.848898627795279, 0.783837335125351, -1.50563595386066}, + {-0.643070342091735, -1.362074820856, 3.23003893144526, -1.8069989021131, + -1.52168986931666, -2.92720177768097, -1.52203810494393, 1.54153084775635, + 4.02998353429178}}}; +const auto fWeightMatrix2to3 = std::array{ + {-1.03488783417574, 0.540010884713827, -1.17870273673375, 1.01943381348885, + -0.679190259548567, 1.25798110915057, 2.3197360649145}}; diff --git a/neural_net_training/result_B/matching.hpp b/neural_net_training/result_B/matching.hpp new file mode 100644 index 0000000..b034e1e --- /dev/null +++ b/neural_net_training/result_B/matching.hpp @@ -0,0 +1,46 @@ +const auto fMin = std::array{ + {1.37092808927e-06, 1.07555365503e-06, 0, 1.90734863281e-06, + 1.73929147422e-05, 1.86264514923e-09}}; +const auto fMax = std::array{{14.9999952316, 0.456682443619, + 249.999572754, 399.509643555, + 1.33115208149, 0.149789437652}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{-1.3734781925797, 13.4202721220084, -5.84482699847354, 0.208720202271194, + 3.52940201568696, -5.35007508017961, 6.10232623582908}, + {0.269463828190076, 12.2029002280153, 6.20803317501961, -9.43442815316897, + 2.5338939027162, 5.99544654330182, 16.266514230858}, + {-0.165852817298963, -12.5570036498389, 19.5108101030614, 10.1445756810778, + -4.70591905221782, -9.82613113151628, 2.66946232799658}, + {0.280264112609391, -40.4573608414915, 4.50829859766595, -9.38270110978156, + 2.13898954875748, 4.73797410702965, -38.2552994749474}, + {-15.3913555770922, 1.18454625888548, 1.03308239102009, 2.80096921737441, + -1.86435943580432, -5.12259817922783, -14.7182721956392}, + {-0.473433045504226, 14.9901069695702, -0.236384720797966, + -2.83841297397374, 4.98474416815065, -6.59501221410077, 6.97717117093051}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {0.142197307909266, 4.84602282950846, -9.65725300640334, 5.68314089024306, + 0.631054662487241, 0.766483060165155, 2.3260315163825}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{0.647996552227704, -3.612673407752, 0.218049700051821, 4.89119034256858, + -0.00710530398728626, -0.739119819896367, 1.63438201788813, + 0.7192739388343, -4.39806909742125}, + {-0.719597437431301, -3.27873531826254, -2.03233412174408, + -3.60079441122056, 0.0930923625129556, -2.47473692076248, + -1.61531096417457, -1.73667807655155, 3.65065717704823}, + {2.15115292231327, 0.537266754158749, -0.529575619029901, + -0.840914255611436, 1.02786405393109, -2.2383981589872, + -0.825543426908553, -0.685116658617715, -1.95672133400954}, + {0.164139216021613, -0.378666175423714, -1.43567813416239, + -1.86509513117207, -0.825083002191541, -1.70460785835385, + 1.61348068527877, -1.66550797875971, -0.956253568725315}, + {-1.87493924816154, -0.453672605669931, 0.283493943583684, + 0.878365550455799, 0.284631862858431, 0.933935190438462, + -0.848898627795279, 0.121615867119966, 2.40557433526087}, + {0.853517633026983, -0.322377109742158, 0.30359642229039, + -2.70050427549895, 0.434398564771274, -1.07531792256432, + -1.52203810494393, 0.471135339353818, -7.51274733403613}}}; +const auto fWeightMatrix2to3 = std::array{ + {-0.773202850704438, 0.952227138510482, 0.74769506152075, 0.306824902699197, + -0.557424643818581, 1.36609661342348, -1.24818793392955}}; diff --git a/neural_net_training/result_B_old/matching.hpp b/neural_net_training/result_B_old/matching.hpp new file mode 100644 index 0000000..7312581 --- /dev/null +++ b/neural_net_training/result_B_old/matching.hpp @@ -0,0 +1,48 @@ +const auto fMin = std::array{ + {1.37092808927e-06, 1.07555365503e-06, 0, 1.90734863281e-06, + 1.73929147422e-05, 1.86264514923e-09}}; +const auto fMax = std::array{{14.9999952316, 0.456682443619, + 249.999572754, 399.509643555, + 1.33115208149, 0.149789437652}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{0.55218535628556, -9.3289553119363, -3.16480805777192, 9.21929582222451, + -5.84675321729571, 4.37995011218691, -2.12651852927708}, + {2.19402229437066, -36.4572143799157, 4.72612050852174, 0.871774263011679, + 0.308249736812244, 5.59902946146285, -21.3121523564936}, + {0.326882064023056, 2.35866196875568, 9.48783066071353, 2.75913715527822, + -3.60778259684168, 2.80447887380193, 12.22677213297}, + {0.555959841347612, -11.3379921223552, 24.99514413087, 4.38044026679039, + -4.79766508655656, -5.51874542469878, 8.39926399588362}, + {-0.474573814356478, -45.048645069346, -1.91571008337192, + -2.97043145049536, -0.791922976045819, 2.80933052961339, + -45.2686657256446}, + {1.02111090620048, 0.942295739720341, 4.23884295504771, 3.69611210680021, + 3.06108184531354, -5.59083664638509, 5.48212218750871}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {1.25219270646431, 0.549228434890616, 0.470255515433846, 0.916142200504342, + 1.60846971174291, 0.516066034145183, -1.99907858325808}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{-2.16740050633671, 1.64201098704318, -1.81457731661729, 0.276267162453127, + 4.41723045721244, 0.116946763347361, 1.63438201788813, -1.34454525041306, + -11.6363132267585}, + {-0.975733315897721, -0.74456197080548, 1.37299729852781, + -0.935058973429512, 0.0844226992748141, -0.132452262552727, + -1.61531096417457, -0.186263378023113, 5.02662780750337}, + {1.04696354000933, 0.278924511733321, -1.35925413801625, 0.938772342837744, + -0.549530917541879, -0.520171806146222, -0.825543426908553, + -2.06608637235381, -0.791984902945839}, + {-1.2045961477844, -0.991003979261367, 1.09783625990238, + -0.421872249827208, -0.889785288418292, 2.04952712400642, + 1.61348068527877, -1.7061481912452, -4.6379237728574}, + {-1.36108475234833, -0.998277929718627, 1.44485269371602, + -0.712692589749601, 2.24954768341439, 2.14013866962467, + -0.848898627795279, 0.868380765164237, -2.78040856790563}, + {-0.388348743847599, -3.23828818784509, -3.09515929145523, + -1.60979064312646, 2.55518501696684, -2.40442392560053, -1.52203810494393, + 1.61704406536505, 1.28981466057697}}}; +const auto fWeightMatrix2to3 = std::array{ + {-0.662286199846436, 0.602757344813461, -0.498657128878293, + 0.682053959836921, -0.846606195204036, 0.885206167679193, + -0.091536072257332}}; diff --git a/neural_net_training/result_D/matching.hpp b/neural_net_training/result_D/matching.hpp new file mode 100644 index 0000000..102222f --- /dev/null +++ b/neural_net_training/result_D/matching.hpp @@ -0,0 +1,49 @@ +const auto fMin = std::array{ + {8.165359759e-06, 1.20664617498e-06, 3.0517578125e-05, 0, 4.7143548727e-06, + 5.58793544769e-09}}; +const auto fMax = + std::array{{14.9999341965, 0.441820472479, 249.991241455, + 399.657226562, 1.31253051758, 0.1461160779}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{-2.69517659211572, 11.8302794023495, -4.18951579686807, -3.98494892798567, + 2.81897548445767, 0.59383239448013, 8.23409922740496}, + {0.211366021230384, -17.963369064596, 15.9757126175754, 7.06797978526591, + -4.70452883659984, -6.9670945574808, -6.09966951812501}, + {-0.671572194549583, 11.3044506689324, 0.41567016443692, -1.37717944379749, + 4.32454960210643, -2.81417446537734, 9.27800394526066}, + {-0.0170007006326477, -29.3978844207289, 1.21375106319138, + -4.08361109078602, 1.26964946956945, 2.36059581879151, -28.6616649803861}, + {-11.5040478504233, 0.787126057627091, -1.9688816880041, 3.80563620582515, + -1.24505398457039, -4.63206817893295, -13.6204407803068}, + {-0.338909805576579, 5.40829054574145, -5.80255047095045, + -4.01690019633219, 1.01720190260241, -8.00726918670078, + -9.13220942993612}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {-0.0200186919403349, 1.41949954504535, 1.49019129872922, + 0.288411192617344, -1.04637027529446, 0.461207091311545, + 2.34712624673865}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{-0.742932789484951, 1.098742538125, -0.406409364576387, 3.47055509094897, + 0.0962780863393642, 1.41748292133237, 1.63438201788813, -1.44301381179313, + -0.572613401802679}, + {-0.38589120983735, 1.59861062444015, -0.0248567208616739, + 0.671741015980856, -0.708380620370054, -1.03895600322296, + -1.61531096417457, -0.148523097987218, -4.64632456422582}, + {0.79166633002489, -1.08475628425482, -4.28859285488566, 1.52323344063281, + 0.841577416846386, -2.87987947235168, -0.825543426908553, + -1.68433960913801, 3.44474663480542}, + {0.0775004589408732, -0.262461293729405, -1.52083397977799, + -1.8717755745741, -0.836405509817299, -1.7218693116007, 1.61348068527877, + -1.66550797875971, -0.970612266783855}, + {-0.173976577204694, 0.622518962366594, 1.06846030554012, + -1.98774771637332, 0.519455930696643, 0.29715629978414, + -0.848898627795279, -0.571811756436865, -0.634485828880002}, + {1.01806297385566, -2.23322855713652, -0.6087066354355, -2.48675705217909, + 3.17812971554116, 0.101672334443862, -1.52203810494393, 2.31992216900119, + -1.25181073559493}}}; +const auto fWeightMatrix2to3 = std::array{ + {-0.916964821952665, 0.719312774569769, -0.639131582384414, + 0.543723763328418, -0.519810071051254, 0.818949275577508, + -0.217502220186121}}; diff --git a/neural_net_training/result_D_old/matching.hpp b/neural_net_training/result_D_old/matching.hpp new file mode 100644 index 0000000..83cb801 --- /dev/null +++ b/neural_net_training/result_D_old/matching.hpp @@ -0,0 +1,47 @@ +const auto fMin = std::array{ + {3.08839298668e-06, 1.0285064036e-06, 1.52587890625e-05, 0, + 5.87664544582e-07, 1.16415321827e-10}}; +const auto fMax = + std::array{{14.9999723434, 0.448565632105, 249.991241455, + 399.657226562, 1.32571601868, 0.1461160779}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{-13.6018653076529, 11.5780217700141, -7.92762809494091, -2.3767990231665, + 2.10509041357149, 8.93423542038951, 0.697736541430846}, + {1.39148569147387, -18.5749654585149, 16.332262515645, 8.93683318362009, + -5.31296543840869, -5.3403427435078, -2.19396356951465}, + {-1.01323411158617, 13.2753123794943, 0.728991860392637, -2.42297786296918, + 5.31377513515812, -3.50060317341991, 10.417424252956}, + {-0.248243535822069, 4.62216903283789, 7.02215266119243, 1.16722623835237, + -4.02343144066426, 0.795833957766165, 8.68951250524976}, + {-0.238717750484162, 6.4095254209171, -7.18004762765776, -5.26488261250603, + 0.399079753011244, -13.2043917021304, -15.6484370000787}, + {0.28927080766293, -43.0775712799999, 1.66954473021466, -9.33896425089968, + 2.33665742943925, 3.79800824384931, -44.3378970188981}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {1.40243557561751, 0.527362898119982, 0.45726589950568, 1.14682278333905, + 1.07970493015474, -0.120090795589863, -1.93859670804163}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{-0.799170659507791, 0.78794128149515, -0.763826599227941, + -2.3771947370175, 1.02090569194105, 2.93661596670106, 1.63438201788813, + -1.4315640726598, -1.65256239855233}, + {-0.0840828763430264, 1.63030483445294, 0.480480602063334, + -2.6196066367932, -1.07206902633681, 1.70077768270329, -1.61531096417457, + 0.0827459973313509, -6.82577663153282}, + {0.549379141222342, -1.30994855822444, -3.47047538273556, + 0.416631880451092, -2.01641324755852, 0.534999953845232, + -0.825543426908553, -1.89592023892521, 5.51877157805828}, + {0.0804714249535426, -0.5308079142129, -1.48689873935011, + -1.86763554052357, -0.869089360209786, -1.67763600182079, + 1.61348068527877, -1.66550797875971, -0.925481963732789}, + {-0.686375033428724, 1.09398610198181, 0.699349709460149, + -1.04209787556848, 0.0477294646540392, -0.311194459626976, + -0.848898627795279, 1.21798575421877, -1.20136465619996}, + {0.65672978185887, -2.41522086895727, -0.906588505776888, 1.17488116346046, + 0.348225140957002, -1.76790548692959, -1.52203810494393, 1.20010038210504, + 2.16681827421459}}}; +const auto fWeightMatrix2to3 = std::array{ + {-0.711664725241253, 0.506164178116774, -0.741743336419543, + 0.501270635463003, -0.672368683770616, 0.747306441658917, + 0.789949973283111}}; diff --git a/nn_electron_training/result/matching.hpp b/nn_electron_training/result/matching.hpp new file mode 100644 index 0000000..7cae3a9 --- /dev/null +++ b/nn_electron_training/result/matching.hpp @@ -0,0 +1,58 @@ +const auto fMin = std::array{ + {2.32376150961e-05, 1.20999845876e-06, 3.0517578125e-05, 0.000152587890625, + 5.18634915352e-05, 3.16649675369e-08, 4964.515625}}; +const auto fMax = std::array{ + {29.999835968, 0.448848098516, 490.75402832, 499.918823242, 1.29696559906, + 0.148829773068, 5764.58056641}}; +const auto fWeightMatrix0to1 = std::array, 9>{ + {{-13.8767665400575, 4.05734115522388, -3.01709661856028, 1.12334316344471, + -1.95431900429486, -4.28496976296461, 2.12003203912787, + -16.3247309911133}, + {0.212048009453922, -15.1738107548058, 16.7279720978323, 7.86809247963017, + -2.44754013164889, 7.7765844954342, -7.1858320802125, 14.8502047053221}, + {1.03697617644536, -7.74330829725443, 6.56587047894099, 17.8488797860709, + -6.58256061835055, -14.3326703613101, -4.21591741028686, + -3.48521822531376}, + {1.07161857075862, -6.02457375820184, -2.95388380942296, -1.32423877366328, + 4.40729929976243, 4.47413261680277, -9.1510537721088, -3.00961301024585}, + {-0.483652311202822, 1.61937809966064, 3.0445519571216, 0.815891204469984, + 0.474869080905695, 3.43775266744451, -1.25098304071557, 7.12769003125851}, + {-8.4010714790805, 8.31810836442086, -3.26991947652379, 1.31844760189238, + -0.316007929405036, -0.703746325371237, 4.74898967505285, + -1.11739245753407}, + {-0.592761413330552, 4.04188612003611, -0.218806073885883, + 3.90563951642846, 7.09174466959683, -6.3569150742699, -5.14953269394216, + 2.75424697228316}, + {0.547164481580195, 1.70249203967427, 1.94714702524239, -13.7351709164445, + 1.80504850488469, -2.90102696607898, 0.572900917600169, -10.365898528612}, + {-1.41297642979771, 1.7421562904492, 1.51246974803507, -0.277205719612539, + -0.746303261257708, 1.31841345876455, -0.315569517202675, + -1.43151946831495}}}; +const auto fWeightMatrix1to2 = std::array, 7>{ + {{-2.70914120357355, 0.519189852188428, 1.64293953499867, -1.42908155115225, + -0.911252443482285, -3.62723599571144, -3.12039388485614, + -2.24012508264097, -1.80018616467714, -0.387269363887802}, + {0.825289573993859, 0.977559873140871, -1.19932065232476, + 0.448270358180695, -1.01118687034592, -0.12068624133809, 1.92125679147867, + -1.22870635454816, 1.06194042880088, -1.67985680933482}, + {0.117628014226149, -0.666150093594241, -1.96462719830508, + -1.34621345717382, 2.69897179096947, 1.45683981784585, -0.280779666268364, + -1.09056907866035, 0.143585634417832, -0.853077107436903}, + {0.343557768966074, -1.36884597467765, -0.978489408664556, + 1.04108942352196, 2.38422271469634, -1.42280162989848, -1.24692906453324, + 1.16005819097626, -1.81861709989607, 0.792826064358476}, + {-2.43543923840386, -0.790741678609659, -0.86057585327147, + -0.560696061368329, -0.546486276970939, -1.10828693920102, + -0.390844170382116, -0.191292459405275, 0.655178595334291, + 3.62562636803186}, + {-1.85600205994161, -0.851713021005162, -2.36960755021907, + -2.65847940214873, 4.19992558926354, 0.482968294979867, + -0.674617611858262, 0.537074281854966, -1.44013551902026, + 0.12897906197469}, + {3.05467659680961, -0.835919265923888, -1.97139370203255, + -0.833191777667285, 3.1259995582494, 1.3049178372323, -0.601501165563516, + -0.476449568704171, 0.0595564302057028, 1.86826919022162}}}; +const auto fWeightMatrix2to3 = std::array{ + {-0.742315179835233, -0.384238828861699, -0.639019653069106, + -0.469522590533314, 0.812934812918375, -0.548705434492968, + 1.10784727825793, -1.47828921845706}}; diff --git a/nn_electron_training/result_B_old/matching.hpp b/nn_electron_training/result_B_old/matching.hpp new file mode 100644 index 0000000..0359b9e --- /dev/null +++ b/nn_electron_training/result_B_old/matching.hpp @@ -0,0 +1,46 @@ +const auto fMin = std::array{ + {2.32376150961e-05, 1.51249741975e-06, 3.0517578125e-05, 4.57763671875e-05, + 1.30217522383e-05, 9.31322574615e-10}}; +const auto fMax = + std::array{{29.9999866486, 0.402866601944, 497.675262451, + 499.88583374, 1.35172855854, 0.1488314569}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{-0.716890254960393, 5.8069257184991, -1.74563699770656, -1.69375462311209, + 0.292600378995007, 4.27627333971203, 5.05829948252536}, + {1.39109753193721, -6.17525389654849, 7.57671398067678, -5.43048780303785, + -1.09791116843721, 1.86130825538439, -3.82867359027486}, + {-0.463070234910456, -4.56547441068759, 5.40748303002796, 24.3147882327414, + -6.31462696612228, -15.7641466083901, 3.16004633819498}, + {0.153443312046544, -13.7240931193717, 12.4658109156892, 3.93975979118258, + -6.11948248810469, 12.0087465863604, 11.8434487900601}, + {-5.38333972443605, 7.08960513470396, -14.0225023836695, 1.62191385618879, + -3.70995234249952, -6.21018449120275, -16.3820927289576}, + {1.28910616897801, 11.7392825108682, -0.745172957676181, -2.71535399916244, + 2.69193347520725, -7.76807154851574, 3.33706974699574}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {1.69376603852368, 0.713685235953229, 0.537330926797311, 1.24885881426728, + 0.849445456302149, 0.0549823762550653, -1.60838065333664}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{-3.49743269512971, -1.59190099226759, 2.68952831238107, 1.47409713154181, + -0.358823304868459, 1.51035818148923, 1.63438201788813, -1.37184378061365, + -4.8236951156242}, + {-1.62443558899203, 0.637337506470021, -1.81394608796523, + -0.39782822266736, 2.98247880411195, -3.00550692859844, -1.61531096417457, + 0.0991975320503116, -7.79260298177481}, + {2.63673645224951, 0.769840121669036, -1.81866900675112, -1.22134862739373, + 0.671174013434412, -1.47933584039013, -0.825543426908553, + -1.92253219419135, 3.8017813083906}, + {0.205195965291138, -0.35698019904733, -1.43178372298118, + -1.86979559465315, -0.819043768918633, -1.72129504552091, + 1.61348068527877, -1.66550797875971, -0.957274797031432}, + {3.39235161127949, 0.557496083138389, 0.358810791879255, -1.30084105984251, + -0.542916984939091, -0.0267147558240502, -0.848898627795279, + 0.771556793635358, 0.0697782536980876}, + {0.481340186388348, 0.112198736662793, 2.17905577117167, + -0.602783430688711, -0.0915323075405589, 0.497824854127751, + -1.52203810494393, 1.50364257368639, -0.374485200843083}}}; +const auto fWeightMatrix2to3 = std::array{ + {-0.768478620967589, 0.945551538481868, 0.96174226855089, 0.370062157422418, + -0.78327662856066, 0.822576347537717, -0.718860728264376}}; diff --git a/nn_electron_training/result_B_res/matching.hpp b/nn_electron_training/result_B_res/matching.hpp new file mode 100644 index 0000000..3bd7d58 --- /dev/null +++ b/nn_electron_training/result_B_res/matching.hpp @@ -0,0 +1,47 @@ +const auto fMin = std::array{ + {0.354097932577, 5.52064511794e-06, 0.000244140625, 8.39233398438e-05, + 6.46021217108e-05, 3.98140400648e-08}}; +const auto fMax = std::array{{29.9984798431, 0.343307316303, + 487.684082031, 497.415130615, + 1.28809189796, 0.148829773068}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{0.528613355828958, -3.98084730501778, -0.592082531501982, + 0.138947239841158, -0.778623431382993, -0.581951852087617, + -3.3077751082926}, + {0.626191010935061, -6.59632782328807, 9.64286730275841, 9.55716888102903, + -4.21769290858214, -0.877735461418827, 7.66427785912706}, + {0.589042763591211, 0.342730710819044, 2.15591537442552, 3.00613486546159, + 0.031406906405544, 0.245821626313224, 4.14102878259858}, + {0.331983030850774, 0.936730026632873, 5.0246621889186, -8.55182143000926, + -1.36911477615904, -0.62033806094376, -4.12767358459756}, + {-1.83087334545531, 1.70659514344126, 1.64680904436349, -3.69383485282499, + -1.60992615163927, -1.33158200933679, -3.68738551321132}, + {0.497605072926462, 3.10686068573917, -3.38889852931357, -2.83744183592321, + 5.8582848269084, -5.8114650940735, -2.19632367553395}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {2.34124335963039, 0.212194857163335, 0.442598967492635, 1.99142561696414, + 0.932043520652152, 0.0950084159057334, -0.343964005014347}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{-3.9980933021236, -0.654530522369937, 1.38643691032487, 0.846962243830957, + 0.106764765445591, 0.432714049442539, 1.63438201788813, -1.09500118769163, + -0.477330937420509}, + {-1.00177046130397, 0.910392283082755, -1.10524270003512, + -0.863367119958066, 0.356000819965252, -1.36464636332376, + -1.61531096417457, -1.07499530514837, 2.02772049025211}, + {1.06312654536343, 1.19247984844137, -2.56993344812772, -1.59660765668362, + -1.43473393145022, -2.45597801241373, -0.825543426908553, + -1.66068434492917, 1.54276462560785}, + {1.81681515757912, -1.04949680940877, -1.47464408054066, -2.35655553716087, + -0.81674566968838, -2.03350840389647, 1.61348068527877, -1.66550797875971, + -2.15831244577917}, + {-1.03932528137019, 1.40966162144001, -1.28446720148786, -1.3440214301115, + -0.764149070532308, -0.346882028973845, -0.848898627795279, + 2.00051119462677, 3.35327375607444}, + {-1.86664223320468, -2.77494106516727, 0.280364440162091, + -0.51153329496928, 0.099515543403597, -0.231471190430381, + -1.52203810494393, 1.14272217943492, 0.830204232719646}}}; +const auto fWeightMatrix2to3 = std::array{ + {-0.707654910623957, 0.947610371696967, -0.734533082005471, + 2.92853232573231, -0.764897377620809, 2.76504552610281, 2.01235259703278}}; diff --git a/nn_electron_training/result_D_res/matching.hpp b/nn_electron_training/result_D_res/matching.hpp new file mode 100644 index 0000000..a49f05d --- /dev/null +++ b/nn_electron_training/result_D_res/matching.hpp @@ -0,0 +1,47 @@ +const auto fMin = std::array{ + {0.257591664791, 1.18096104416e-05, 0.000593185424805, 0.00165557861328, + 0.00012809690088, 4.9639493227e-07}}; +const auto fMax = std::array{{29.9983310699, 0.346089184284, + 494.445037842, 497.105712891, + 1.28034591675, 0.146788269281}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{0.238406879601667, -5.59592601269328, -1.48529518782053, + -1.21815009023291, 1.34269102160607, 1.34969291565497, -4.51875687730105}, + {0.396886922398879, -1.55290356333354, 9.68785078213303, 8.92661791228501, + -4.14921556686506, -4.79373464075343, 8.51558304693096}, + {-0.605978331887513, -2.01049013335995, 2.42576702923552, 1.52363979902223, + -0.98764665307072, 5.47124537232274, 6.44617285846946}, + {0.194697743583909, 1.28944295625644, 7.01265960466827, -8.8098678043251, + -1.29787641608371, -1.01125992648077, -2.62580313202802}, + {-0.149097384185005, 0.601644139549549, -3.20384472073729, + -1.11764357962076, 0.661266078420317, -2.99007258105897, + -4.75089443675904}, + {-0.0637125691675382, -0.031901246578545, -5.86825160360429, + -6.08669255423129, 6.57894839440667, 1.56562582414305, -2.45567329718821}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {2.16691834156097, 1.28877310398459, -0.0182036429219536, 1.64574682748412, + -1.776462177169, 1.02789865613476, -1.86072790490082}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{-4.86220133984369, 0.118835729154668, -0.219969977992415, + 0.391324848601455, -1.52700917088122, 1.34069581551041, 1.63438201788813, + -1.46686286855675, 0.828587551619351}, + {-2.34704356917816, 1.32098559104381, -0.35321222806336, -2.37018474851075, + -0.428177327276122, -0.598193543229222, -1.61531096417457, + 0.788200423431897, 1.42375444061969}, + {-0.520599794082693, 1.88897717167843, -0.983200551417999, + -2.10145861332195, 2.58359759649054, -1.9520611743449, -0.825543426908553, + -2.21273436389439, 1.68368588984848}, + {0.687372876118682, -0.350871511760717, -1.43005506081713, + -1.86332872620019, -0.805133918174304, -1.70605683547268, + 1.61348068527877, -1.66550797875971, -0.80539832878319}, + {0.641334100110318, 0.829686404507413, 1.12377545166463, -1.2786548533532, + -2.2652307380297, -0.577326144935801, -0.848898627795279, + -0.112416063323718, 3.09322414387249}, + {-2.10459256659739, -2.04968111694632, 0.989486352894292, + -1.53078668929007, -0.90726448865931, 0.837532331802425, + -1.52203810494393, 2.96223264118436, -2.25826102849139}}}; +const auto fWeightMatrix2to3 = std::array{ + {-0.632200441072234, 1.49561211302111, -1.13710464066982, 0.45277221100554, + -0.690200710879259, 0.878498633554998, 2.07286062799155}}; diff --git a/nn_electron_training/result_electron_weights/matching.hpp b/nn_electron_training/result_electron_weights/matching.hpp new file mode 100644 index 0000000..1dce83d --- /dev/null +++ b/nn_electron_training/result_electron_weights/matching.hpp @@ -0,0 +1,48 @@ + const auto fMin = std::array{ + {2.32376150961e-05, 1.20999845876e-06, 3.0517578125e-05, 0.000152587890625, + 5.18634915352e-05, 3.16649675369e-08}}; + const auto fMax = std::array{{29.999835968, 0.448848098516, + 490.75402832, 499.918823242, + 1.29696559906, 0.148829773068}}; + const auto fWeightMatrix0to1 = std::array, 8>{ + {{0.972643778287334, 0.945437530240695, -1.40069143935294, + -15.6034120045671, 1.14493675557278, 6.76331107008671, -6.58864627844693}, + {1.99177578845469, -13.3678019612632, 8.38118795560118, 1.73988710441318, + -4.61454323644065, 5.29554800958296, 1.796743670204}, + {0.154471209290507, -6.25196675947653, 5.03239643950246, 17.3659761341648, + -6.54695139344376, -13.0321058473978, -2.79459536100855}, + {-1.91255962568079, -8.6500289238652, 11.3312847667967, 13.5402314908838, + -2.61341614761575, 6.63476937311634, 18.5047027165893}, + {-13.4902851128642, 5.03927112314943, -7.35289370328568, + 0.0572131890099181, -1.6142848069816, -3.07255458814266, + -18.9635216594601}, + {1.88222476973218, 6.53087839421258, 2.08080853139342, 0.816872513930955, + 1.76981234909237, -8.6501994076645, 3.81699174241397}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, + 0.681870030239224, -1.20759406685829, 0.769290467724204, + -1.8437808630988}, + {1.96787188749046, 0.680940366397391, 0.050263650384077, 1.68306844400001, + 1.12938262301514, 0.122157098634831, -0.887283402159991}}}; + const auto fWeightMatrix1to2 = std::array, 6>{ + {{-2.73702380879827, 1.22468365009789, 2.40149928694528, 0.276654711632341, + -0.947460759127638, -0.94795299724562, 1.63438201788813, + -1.41515589667229, -0.708508928627869}, + {-0.408168817589508, -0.542699435360695, -0.336829708223667, + -0.507220427829013, 0.533181686353704, -0.0512849135791123, + -1.61531096417457, 0.0991539876010671, 4.00684418941464}, + {0.401110123287066, -0.82501422982477, -0.82214087163611, + -2.13310745114762, 0.656608219190029, -1.54611499475089, + -0.825543426908553, -1.92246825444023, -2.49920928064247}, + {0.743417630960188, -2.54297207137451, 0.868639896626588, 1.21759484724959, + -0.432278512319556, -0.682439011110067, 1.61348068527877, + -1.70813842427554, 0.191141321065651}, + {0.601790057732671, -2.70865568575877, -0.949516903771233, + 1.41807664967738, 0.0135866328882364, 1.63463920593405, + -0.848898627795279, 0.794266404867267, -4.68030461730642}, + {-0.894524549453373, -0.413420422791491, -1.27841462173856, + -0.921761527738667, 1.7613032977725, -1.20901458126865, -1.52203810494393, + 1.63899587513312, 3.18360564985773}}}; + const auto fWeightMatrix2to3 = std::array{ + {-0.468166794846483, 0.905418443044577, 0.345720533590786, + 0.626519340549303, -0.564753919345451, 0.871170117133406, + -2.29725166588317}}; diff --git a/nn_electron_training/result_new_var_dtxy/matching.hpp b/nn_electron_training/result_new_var_dtxy/matching.hpp new file mode 100644 index 0000000..a683d33 --- /dev/null +++ b/nn_electron_training/result_new_var_dtxy/matching.hpp @@ -0,0 +1,62 @@ +const auto fMin = std::array{ + {2.32376150961e-05, 1.20999845876e-06, 3.0517578125e-05, 0.000152587890625, + 5.18634915352e-05, 3.16649675369e-08, 1.63267832249e-05}}; +const auto fMax = std::array{ + {29.999835968, 0.448848098516, 490.75402832, 499.918823242, 1.29696559906, + 0.148829773068, 1.406919837}}; +const auto fWeightMatrix0to1 = std::array, 9>{ + {{-15.5425486721894, 4.46064219760936, -2.34623364306547, 0.673061906567754, + -0.869156572627564, -3.91456514808376, -0.568696256770434, + -16.6632172224501}, + {0.447767212299748, -12.0732988541946, 13.5397418382974, 6.88739679435815, + -6.24126921111681, 10.2657097797903, 2.43233624582838, 16.3044055554715}, + {0.711332752822416, -7.17479141259481, 6.60735241080743, 17.1002661287198, + -5.66447497808782, -13.5847364290022, -3.2812531600052, + -4.16110866444881}, + {0.632252449853337, -0.994201889160893, 0.163028638247136, + 0.771845371822938, 1.96713990468425, 3.63340983309008, -1.20631209983256, + -0.448420201049805}, + {-0.841164977118048, 9.93038462960693, 2.29748287289709, + -0.0626255430240932, 3.26040532046237, -3.3032557034584, + 0.549324748173291, 8.63089145494412}, + {-4.64294924610689, -1.03961735354666, -5.94838304383518, + -5.14494916413428, 0.865768755325211, 3.17305862226336, -0.17689672644592, + -11.1702998443119}, + {-0.75257412651179, 7.45653016330318, 1.53531423087191, -0.944661904110734, + 2.27175825244693, 0.625586633690943, 0.556680865915938, 8.70515377733531}, + {1.48517605340595, -1.10139488332919, -1.20437312666678, -15.7567359489487, + 0.564551471160599, 0.343355103916556, 0.956188296533458, + -14.4810699542064}, + {-1.41297642979771, 1.7421562904492, 1.51246974803507, -0.277205719612539, + -0.746303261257708, 1.31841345876455, -0.315569517202675, + -1.43151946831495}}}; +const auto fWeightMatrix1to2 = std::array, 7>{ + {{0.249095596049212, 0.43896816611743, 2.51443611518656, -1.99550475508056, + -3.01891555380374, -1.5384309247739, -1.10809432820241, -2.23884147411375, + -1.80018616467714, 0.0926501061367807}, + {-0.79810107527313, -0.128565504120936, -1.47898746860618, + -1.98749268865462, -4.1729473774923, -0.319376625137038, 2.68241976233123, + -1.2438721745196, 1.06194042880088, -1.11115934197209}, + {-0.541616972751047, -0.883639706603654, -1.21647636736428, + 2.00429851976991, -0.333604676335978, -1.30666235698471, + 0.300409853048531, 1.71280717271126, 0.143585634417832, + 0.862440249952535}, + {-0.0738827412712401, 0.710660017309775, -1.81469923323104, + -2.0032894120881, 0.0757757984176355, 0.946471866500602, + -0.862679340246423, -0.336329345694109, -1.81861709989607, + -1.65647777258377}, + {-2.46837296738587, -0.892461394707053, -0.164670653708065, + -1.40986988591441, -1.29634197190675, -0.103818171050218, + 1.62473520412615, -0.10368342877725, 0.655178595334291, 3.10987357888943}, + {-3.51942943078094, 0.05403637176598, -0.112974678381018, + -0.992599640919349, 2.32462754890465, 0.0152632384089371, + -1.55107042088954, -2.78524739346744, -1.44013551902026, + -0.069348300182213}, + {3.50273770909445, -0.563785026359985, -0.682273837786807, + 0.00116206143253937, 0.0443816144597161, 0.571844608360393, + -1.17322063876001, -1.09420727621842, 0.0595564302057028, + 0.887055205865514}}}; +const auto fWeightMatrix2to3 = std::array{ + {-0.527095695381938, 0.873978759522188, -0.505869602713493, + -0.458736757125275, 1.00063852384923, -0.651233083081496, 1.09109419846381, + -1.55585886153223}}; diff --git a/nn_electron_training/result_new_variable_dqop/matching.hpp b/nn_electron_training/result_new_variable_dqop/matching.hpp new file mode 100644 index 0000000..2217fe3 --- /dev/null +++ b/nn_electron_training/result_new_variable_dqop/matching.hpp @@ -0,0 +1,63 @@ + const auto fMin = std::array{ + {2.32376150961e-05, 1.20999845876e-06, 3.0517578125e-05, 0.000152587890625, + 5.18634915352e-05, 3.16649675369e-08, 2.91038304567e-11}}; + const auto fMax = std::array{ + {29.999835968, 0.448848098516, 490.75402832, 499.918823242, 1.29696559906, + 0.148829773068, 0.000133186404128}}; + const auto fWeightMatrix0to1 = std::array, 9>{ + {{-1.92788180969447, 4.16064785412784, -2.11335551271703, 7.9294095607534, + 2.18170560740568, -8.44761548627774, -21.5047552584798, + -16.0650884865238}, + {-1.61376550856811, -18.3767723062232, 6.29188806075221, 17.1629698975724, + -4.06178649035417, 8.91994724771869, 0.945309347327087, 10.2364214261801}, + {0.260725207756956, -7.39063316113963, 5.85798680146154, 20.895198655668, + -5.37769824548582, -14.2293948664243, 0.995342070597369, + 1.20800372506884}, + {0.953241806012774, 2.47323765132763, 2.08443843097691, -1.43196935568204, + 4.74700613459522, 0.189179081361804, -16.9045615453658, + -6.43026395704888}, + {-1.92981663032188, -0.37230565268653, 0.814369803792726, 1.73699189907859, + 1.11733301402944, 1.46887116928329, 1.49186452419427, -1.29918641902703}, + {-16.8338849958765, 6.56643273179019, -3.48428147705122, 0.326903745037315, + -2.06105265356339, -4.41540617406857, 5.02090403276349, + -13.5579467656888}, + {-2.06856046873756, 1.37857017711159, -10.4255727807086, 5.40802232507597, + 6.86445294409404, 5.35440411482745, -6.85993978444102, + -0.729076014469736}, + {-0.526653874830334, 8.98715315712336, -2.34742788084526, + -1.27417058696474, 5.55759129208842, -3.2700796957674, -0.831113531084397, + 2.18499951551135}, + {-1.41297642979771, 1.7421562904492, 1.51246974803507, -0.277205719612539, + -0.746303261257708, 1.31841345876455, -0.315569517202675, + -1.43151946831495}}}; + const auto fWeightMatrix1to2 = std::array, 7>{ + {{0.0324469931195793, -0.288230539372084, 1.64983047434275, + -1.24756371282518, -1.94639586807131, -0.310928305245747, + -4.99162520915551, 0.264942892832968, -1.80018616467714, + 2.77914512003005}, + {-0.0148602437129058, -1.2132748075938, -0.218359722842231, + -0.633592266259126, -1.66464499515867, -2.55247320011507, + 0.942074824320476, -1.41987137293765, 1.06194042880088, 3.89059634854256}, + {-0.0974156676281787, 1.4515472939941, 1.12169407748122, 0.1569833587188, + 0.715433387778868, -2.40068948213013, -1.20271162851859, 1.58722622760245, + 0.143585634417832, -0.958611632301647}, + {-0.535241107505903, -0.222101479961216, -1.72874348280829, + -1.09357655226657, 1.67832177468419, -1.85229898078416, + -0.879756942942339, 0.0297380421842839, -1.81861709989607, + -0.271711324852575}, + {-2.12445796868783, -0.913233265968283, -0.338898758417067, + -1.65257155394075, -1.15348755568266, -0.571688294860023, + -0.590397833605982, -0.152323738308279, 0.655178595334291, + -6.84207556062884e-06}, + {-1.95868900053493, -0.605205894790946, -1.36009261632635, + -2.34452772551367, 1.60461574133745, -0.00209217938454121, + 0.145219515490194, -3.24026630749251, -1.44013551902026, + 10.2107763198695}, + {0.384756246095988, -0.392456215033468, -2.59979095776574, + -1.14968086393069, -0.936541749845882, 4.08852696879947, + -0.0319867516820682, -1.98678786024887, 0.0595564302057028, + 3.2850148235822}}}; + const auto fWeightMatrix2to3 = std::array{ + {-0.975457561894625, 0.722739660815715, -0.35623550622024, 1.13391106903613, + 0.663374242757088, -0.893283186205502, 0.795604576331046, + -1.33372154704332}}; diff --git a/nn_trackinglosses_training/result/matching.hpp b/nn_trackinglosses_training/result/matching.hpp new file mode 100644 index 0000000..cb30977 --- /dev/null +++ b/nn_trackinglosses_training/result/matching.hpp @@ -0,0 +1,17 @@ +const auto ResfMin = std::array{ + {1.20620707094e-05, 2.0063980628e-06, 8.45295653562e-05, 0.000119162104966, + 4.75468114018e-05, 4.38088898491e-09}}; +const auto ResfMax = + std::array{{29.999212265, 0.29415422678, 486.515930176, + 499.948669434, 1.293815732, 0.145083397627}}; +const auto ResfWeightMatrix0to1 = std::array, 8>{ + {{nan, nan, nan, nan, nan, nan, nan}, + {nan, nan, nan, nan, nan, nan, nan}, + {nan, nan, nan, nan, nan, nan, nan}, + {nan, nan, nan, nan, nan, nan, nan}, + {nan, nan, nan, nan, nan, nan, nan}, + {nan, nan, nan, nan, nan, nan, nan}, + {nan, nan, nan, nan, nan, nan, nan}, + {nan, nan, nan, nan, nan, nan, nan}}}; +const auto ResfWeightMatrix1to2 = std::array{ + {-nan, -nan, -nan, -nan, -nan, -nan, -nan, -nan, -nan}}; diff --git a/outputs_nn/output_B.txt b/outputs_nn/output_B.txt new file mode 100644 index 0000000..3d0f600 --- /dev/null +++ b/outputs_nn/output_B.txt @@ -0,0 +1,268 @@ + : Parsing option string: + : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" + : The following options are set: + : - By User: + : V: "True" [Verbose flag] + : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] + : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] + : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] + : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] + : - Default: + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] + : Correlations: "False" [boolean to show correlation in output] + : ROC: "True" [boolean to show ROC in output] + : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] +DataSetInfo : [MatchNNDataSet] : Added class "Signal" + : Add Tree Signal of type Signal with 187767 events +DataSetInfo : [MatchNNDataSet] : Added class "Background" + : Add Tree Bkg of type Background with 14040318 events + : Dataset[MatchNNDataSet] : Class index : 0 name : Signal + : Dataset[MatchNNDataSet] : Class index : 1 name : Background +Factory : Booking method: matching_mlp + : + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : + : - Default: + : Boost_num: "0" [Number of times the classifier will be boosted] + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : NCycles: "700" [Number of training cycles] + : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] + : NeuronType: "ReLU" [Neuron activation function type] + : EstimatorType: "CE" [MSE (Mean Square Estimator) for Gaussian Likelihood or CE(Cross-Entropy) for Bernoulli Likelihood] + : V: "True" [Verbose output (short form of "VerbosityLevel" below - overrides the latter one)] + : VarTransform: "Norm" [List of variable transformations performed before training, e.g., "D_Background,P_Signal,G,N_AllClasses" for: "Decorrelation, PCA-transformation, Gaussianisation, Normalisation, each for the given class of events ('AllClasses' denotes all events of all classes, if no class indication is given, 'All' is assumed)"] + : H: "False" [Print method-specific help message] + : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] + : LearningRate: "2.000000e-02" [ANN learning rate parameter] + : DecayRate: "1.000000e-02" [Decay rate for learning parameter] + : TestRate: "50" [Test for overtraining performed at each #th epochs] + : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] + : SamplingImportance: "1.000000e+00" [ The sampling weights of events in epochs which successful (worse estimator than before) are multiplied with SamplingImportance, else they are divided.] + : UseRegulator: "False" [Use regulator to avoid over-training] + : - Default: + : RandomSeed: "1" [Random seed for initial synapse weights (0 means unique seed for each run; default value '1')] + : NeuronInputType: "sum" [Neuron input function type] + : VerbosityLevel: "Default" [Verbosity level] + : CreateMVAPdfs: "False" [Create PDFs for classifier outputs (signal and background)] + : IgnoreNegWeightsInTraining: "False" [Events with negative weights are ignored in the training (but are included for testing and performance evaluation)] + : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] + : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] + : SamplingTraining: "True" [The training sample is sampled] + : SamplingTesting: "False" [The testing sample is sampled] + : ResetStep: "50" [How often BFGS should reset history] + : Tau: "3.000000e+00" [LineSearch "size step"] + : BPMode: "sequential" [Back-propagation learning mode: sequential or batch] + : BatchSize: "-1" [Batch size: number of events/batch, only set if in Batch Mode, -1 for BatchSize=number_of_events] + : ConvergenceImprove: "1.000000e-30" [Minimum improvement which counts as improvement (<0 means automatic convergence check is turned off)] + : ConvergenceTests: "-1" [Number of steps (without improvement) required for convergence (<0 means automatic convergence check is turned off)] + : UpdateLimit: "10000" [Maximum times of regulator update] + : CalculateErrors: "False" [Calculates inverse Hessian matrix at the end of the training to be able to calculate the uncertainties of an MVA value] + : WeightRange: "1.000000e+00" [Take the events for the estimator calculations from small deviations from the desired value to large deviations only over the weight range] +matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +matching_mlp : Building Network. + : Initializing weights +Factory : Train all methods + : Rebuilding Dataset MatchNNDataSet + : Parsing option string: + : ... "SplitMode=random:V:nTrain_Signal=100000.0:nTrain_Background=200000.0:nTest_Signal=10000.0:nTest_Background=20000.0" + : The following options are set: + : - By User: + : SplitMode: "Random" [Method of picking training and testing events (default: random)] + : nTrain_Signal: "100000" [Number of training events of class Signal (default: 0 = all)] + : nTest_Signal: "10000" [Number of test events of class Signal (default: 0 = all)] + : nTrain_Background: "200000" [Number of training events of class Background (default: 0 = all)] + : nTest_Background: "20000" [Number of test events of class Background (default: 0 = all)] + : V: "True" [Verbosity (default: true)] + : - Default: + : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] + : SplitSeed: "100" [Seed for random event shuffling] + : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] + : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] + : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] + : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Correlations: "True" [Boolean to show correlation output (Default: true)] + : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] + : Building event vectors for type 2 Signal + : Dataset[MatchNNDataSet] : create input formulas for tree Signal + : Building event vectors for type 2 Background + : Dataset[MatchNNDataSet] : create input formulas for tree Bkg +DataSetFactory : [MatchNNDataSet] : Number of events in input trees + : + : + : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... + : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same + : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) + : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... + : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events + : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) + : Number of training and testing events + : --------------------------------------------------------------------------- + : Signal -- training events : 100000 + : Signal -- testing events : 10000 + : Signal -- training and testing events: 110000 + : Background -- training events : 200000 + : Background -- testing events : 20000 + : Background -- training and testing events: 220000 + : +DataSetInfo : Correlation matrix (Signal): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 -0.094 +0.508 +0.558 +0.393 +0.145 + : teta2: -0.094 +1.000 -0.010 +0.345 -0.010 +0.388 + : distX: +0.508 -0.010 +1.000 +0.202 +0.501 +0.230 + : distY: +0.558 +0.345 +0.202 +1.000 +0.507 +0.472 + : dSlope: +0.393 -0.010 +0.501 +0.507 +1.000 +0.497 + : dSlopeY: +0.145 +0.388 +0.230 +0.472 +0.497 +1.000 + : -------------------------------------------------------- +DataSetInfo : Correlation matrix (Background): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 +0.008 +0.363 +0.312 -0.001 +0.102 + : teta2: +0.008 +1.000 +0.217 +0.626 +0.297 +0.493 + : distX: +0.363 +0.217 +1.000 +0.062 +0.631 +0.203 + : distY: +0.312 +0.626 +0.062 +1.000 +0.250 +0.543 + : dSlope: -0.001 +0.297 +0.631 +0.250 +1.000 +0.361 + : dSlopeY: +0.102 +0.493 +0.203 +0.543 +0.361 +1.000 + : -------------------------------------------------------- +DataSetFactory : [MatchNNDataSet] : + : +Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +TFHandler_Factory : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: 8.4293 9.2426 [ 2.3238e-05 30.000 ] + : teta2: 0.0057581 0.014094 [ 1.5125e-06 0.40287 ] + : distX: 40.107 55.141 [ 3.0518e-05 497.68 ] + : distY: 26.294 37.024 [ 4.5776e-05 499.89 ] + : dSlope: 0.33133 0.23520 [ 1.3022e-05 1.3517 ] + : dSlopeY: 0.0054522 0.0092106 [ 9.3132e-10 0.14883 ] + : ----------------------------------------------------------- + : Ranking input variables (method unspecific)... +IdTransformation : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Separation + : -------------------------------- + : 1 : chi2 : 5.690e-01 + : 2 : distX : 3.736e-01 + : 3 : distY : 2.091e-01 + : 4 : dSlopeY : 8.232e-02 + : 5 : dSlope : 8.601e-03 + : 6 : teta2 : 3.474e-03 + : -------------------------------- +Factory : Train method: matching_mlp for Classification + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.43805 0.61618 [ -1.0000 1.0000 ] + : teta2: -0.97142 0.069969 [ -1.0000 1.0000 ] + : distX: -0.83882 0.22159 [ -1.0000 1.0000 ] + : distY: -0.89480 0.14813 [ -1.0000 1.0000 ] + : dSlope: -0.50978 0.34801 [ -1.0000 1.0000 ] + : dSlopeY: -0.92673 0.12377 [ -1.0000 1.0000 ] + : ----------------------------------------------------------- + : Training Network + : + : Elapsed time for training with 300000 events: 853 sec +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (300000 events) + : Elapsed time for evaluation of 300000 events: 0.495 sec + : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml + : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C + : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp +Factory : Training finished + : + : Ranking input variables (method specific)... +matching_mlp : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Importance + : -------------------------------- + : 1 : distY : 5.213e+02 + : 2 : teta2 : 4.435e+02 + : 3 : dSlopeY : 4.414e+02 + : 4 : distX : 3.118e+02 + : 5 : dSlope : 2.646e+01 + : 6 : chi2 : 7.066e+00 + : -------------------------------- +Factory : === Destroy and recreate all methods via weight files for testing === + : + : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml +matching_mlp : Building Network. + : Initializing weights +Factory : Test all methods +Factory : Test method: matching_mlp for Classification performance + : +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (30000 events) + : Elapsed time for evaluation of 30000 events: 0.0597 sec +Factory : Evaluate all methods +Factory : Evaluate classifier: matching_mlp + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.29449 0.63524 [ -0.99999 0.99994 ] + : teta2: -0.97212 0.070073 [ -1.0000 0.32779 ] + : distX: -0.80346 0.24082 [ -1.0000 0.97553 ] + : distY: -0.87751 0.16136 [ -1.0000 0.95680 ] + : dSlope: -0.50293 0.35312 [ -0.99999 0.86422 ] + : dSlopeY: -0.91903 0.13042 [ -1.0000 0.95486 ] + : ----------------------------------------------------------- +matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.29449 0.63524 [ -0.99999 0.99994 ] + : teta2: -0.97212 0.070073 [ -1.0000 0.32779 ] + : distX: -0.80346 0.24082 [ -1.0000 0.97553 ] + : distY: -0.87751 0.16136 [ -1.0000 0.95680 ] + : dSlope: -0.50293 0.35312 [ -0.99999 0.86422 ] + : dSlopeY: -0.91903 0.13042 [ -1.0000 0.95486 ] + : ----------------------------------------------------------- + : + : Evaluation results ranked by best signal efficiency and purity (area) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA + : Name: Method: ROC-integ + : MatchNNDataSet matching_mlp : 0.958 + : ------------------------------------------------------------------------------------------------------------------- + : + : Testing efficiency compared to training efficiency (overtraining check) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA Signal efficiency: from test sample (from training sample) + : Name: Method: @B=0.01 @B=0.10 @B=0.30 + : ------------------------------------------------------------------------------------------------------------------- + : MatchNNDataSet matching_mlp : 0.450 (0.414) 0.886 (0.882) 0.980 (0.979) + : ------------------------------------------------------------------------------------------------------------------- + : +Dataset:MatchNNDataSet : Created tree 'TestTree' with 30000 events + : +Dataset:MatchNNDataSet : Created tree 'TrainTree' with 300000 events + : +Factory : Thank you for using TMVA! + : For citation information, please visit: http://tmva.sf.net/citeTMVA.html +Transforming nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... +Found minimum and maximum values for 6 variables. +Found 3 matrices: + 1. fWeightMatrix0to1 with 7 columns and 8 rows + 2. fWeightMatrix1to2 with 9 columns and 6 rows + 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/outputs_nn/output_B_res.txt b/outputs_nn/output_B_res.txt new file mode 100644 index 0000000..e4937ba --- /dev/null +++ b/outputs_nn/output_B_res.txt @@ -0,0 +1,268 @@ + : Parsing option string: + : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" + : The following options are set: + : - By User: + : V: "True" [Verbose flag] + : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] + : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] + : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] + : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] + : - Default: + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] + : Correlations: "False" [boolean to show correlation in output] + : ROC: "True" [boolean to show ROC in output] + : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] +DataSetInfo : [MatchNNDataSet] : Added class "Signal" + : Add Tree Signal of type Signal with 7718 events +DataSetInfo : [MatchNNDataSet] : Added class "Background" + : Add Tree Bkg of type Background with 11895204 events + : Dataset[MatchNNDataSet] : Class index : 0 name : Signal + : Dataset[MatchNNDataSet] : Class index : 1 name : Background +Factory : Booking method: matching_mlp + : + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : + : - Default: + : Boost_num: "0" [Number of times the classifier will be boosted] + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : NCycles: "700" [Number of training cycles] + : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] + : NeuronType: "ReLU" [Neuron activation function type] + : EstimatorType: "CE" [MSE (Mean Square Estimator) for Gaussian Likelihood or CE(Cross-Entropy) for Bernoulli Likelihood] + : V: "True" [Verbose output (short form of "VerbosityLevel" below - overrides the latter one)] + : VarTransform: "Norm" [List of variable transformations performed before training, e.g., "D_Background,P_Signal,G,N_AllClasses" for: "Decorrelation, PCA-transformation, Gaussianisation, Normalisation, each for the given class of events ('AllClasses' denotes all events of all classes, if no class indication is given, 'All' is assumed)"] + : H: "False" [Print method-specific help message] + : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] + : LearningRate: "2.000000e-02" [ANN learning rate parameter] + : DecayRate: "1.000000e-02" [Decay rate for learning parameter] + : TestRate: "50" [Test for overtraining performed at each #th epochs] + : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] + : SamplingImportance: "1.000000e+00" [ The sampling weights of events in epochs which successful (worse estimator than before) are multiplied with SamplingImportance, else they are divided.] + : UseRegulator: "False" [Use regulator to avoid over-training] + : - Default: + : RandomSeed: "1" [Random seed for initial synapse weights (0 means unique seed for each run; default value '1')] + : NeuronInputType: "sum" [Neuron input function type] + : VerbosityLevel: "Default" [Verbosity level] + : CreateMVAPdfs: "False" [Create PDFs for classifier outputs (signal and background)] + : IgnoreNegWeightsInTraining: "False" [Events with negative weights are ignored in the training (but are included for testing and performance evaluation)] + : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] + : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] + : SamplingTraining: "True" [The training sample is sampled] + : SamplingTesting: "False" [The testing sample is sampled] + : ResetStep: "50" [How often BFGS should reset history] + : Tau: "3.000000e+00" [LineSearch "size step"] + : BPMode: "sequential" [Back-propagation learning mode: sequential or batch] + : BatchSize: "-1" [Batch size: number of events/batch, only set if in Batch Mode, -1 for BatchSize=number_of_events] + : ConvergenceImprove: "1.000000e-30" [Minimum improvement which counts as improvement (<0 means automatic convergence check is turned off)] + : ConvergenceTests: "-1" [Number of steps (without improvement) required for convergence (<0 means automatic convergence check is turned off)] + : UpdateLimit: "10000" [Maximum times of regulator update] + : CalculateErrors: "False" [Calculates inverse Hessian matrix at the end of the training to be able to calculate the uncertainties of an MVA value] + : WeightRange: "1.000000e+00" [Take the events for the estimator calculations from small deviations from the desired value to large deviations only over the weight range] +matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +matching_mlp : Building Network. + : Initializing weights +Factory : Train all methods + : Rebuilding Dataset MatchNNDataSet + : Parsing option string: + : ... "SplitMode=random:V:nTrain_Signal=0:nTrain_Background=20000.0:nTest_Signal=1000.0:nTest_Background=5000.0" + : The following options are set: + : - By User: + : SplitMode: "Random" [Method of picking training and testing events (default: random)] + : nTrain_Signal: "0" [Number of training events of class Signal (default: 0 = all)] + : nTest_Signal: "1000" [Number of test events of class Signal (default: 0 = all)] + : nTrain_Background: "20000" [Number of training events of class Background (default: 0 = all)] + : nTest_Background: "5000" [Number of test events of class Background (default: 0 = all)] + : V: "True" [Verbosity (default: true)] + : - Default: + : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] + : SplitSeed: "100" [Seed for random event shuffling] + : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] + : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] + : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] + : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Correlations: "True" [Boolean to show correlation output (Default: true)] + : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] + : Building event vectors for type 2 Signal + : Dataset[MatchNNDataSet] : create input formulas for tree Signal + : Building event vectors for type 2 Background + : Dataset[MatchNNDataSet] : create input formulas for tree Bkg +DataSetFactory : [MatchNNDataSet] : Number of events in input trees + : + : + : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... + : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same + : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) + : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... + : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events + : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) + : Number of training and testing events + : --------------------------------------------------------------------------- + : Signal -- training events : 6718 + : Signal -- testing events : 1000 + : Signal -- training and testing events: 7718 + : Background -- training events : 20000 + : Background -- testing events : 5000 + : Background -- training and testing events: 25000 + : +DataSetInfo : Correlation matrix (Signal): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 -0.083 +0.248 +0.242 +0.206 +0.042 + : teta2: -0.083 +1.000 +0.038 +0.508 +0.191 +0.637 + : distX: +0.248 +0.038 +1.000 -0.175 +0.681 +0.107 + : distY: +0.242 +0.508 -0.175 +1.000 +0.349 +0.484 + : dSlope: +0.206 +0.191 +0.681 +0.349 +1.000 +0.349 + : dSlopeY: +0.042 +0.637 +0.107 +0.484 +0.349 +1.000 + : -------------------------------------------------------- +DataSetInfo : Correlation matrix (Background): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 -0.024 +0.242 +0.209 +0.046 +0.055 + : teta2: -0.024 +1.000 +0.245 +0.652 +0.371 +0.483 + : distX: +0.242 +0.245 +1.000 +0.017 +0.776 +0.198 + : distY: +0.209 +0.652 +0.017 +1.000 +0.312 +0.554 + : dSlope: +0.046 +0.371 +0.776 +0.312 +1.000 +0.392 + : dSlopeY: +0.055 +0.483 +0.198 +0.554 +0.392 +1.000 + : -------------------------------------------------------- +DataSetFactory : [MatchNNDataSet] : + : +Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +TFHandler_Factory : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: 14.879 7.6783 [ 0.35410 29.998 ] + : teta2: 0.0053594 0.015677 [ 5.5206e-06 0.34331 ] + : distX: 74.975 63.347 [ 0.00024414 487.68 ] + : distY: 35.490 43.750 [ 8.3923e-05 497.42 ] + : dSlope: 0.35788 0.24459 [ 6.4602e-05 1.2881 ] + : dSlopeY: 0.0073112 0.012369 [ 3.9814e-08 0.14883 ] + : ----------------------------------------------------------- + : Ranking input variables (method unspecific)... +IdTransformation : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Separation + : -------------------------------- + : 1 : chi2 : 9.921e-02 + : 2 : distY : 8.773e-02 + : 3 : dSlopeY : 2.784e-02 + : 4 : teta2 : 2.748e-02 + : 5 : dSlope : 2.662e-02 + : 6 : distX : 1.420e-02 + : -------------------------------- +Factory : Train method: matching_mlp for Classification + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.020078 0.51803 [ -1.0000 1.0000 ] + : teta2: -0.96881 0.091329 [ -1.0000 1.0000 ] + : distX: -0.69253 0.25979 [ -1.0000 1.0000 ] + : distY: -0.85730 0.17591 [ -1.0000 1.0000 ] + : dSlope: -0.44439 0.37979 [ -1.0000 1.0000 ] + : dSlopeY: -0.90175 0.16622 [ -1.0000 1.0000 ] + : ----------------------------------------------------------- + : Training Network + : + : Elapsed time for training with 26718 events: 57.7 sec +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (26718 events) + : Elapsed time for evaluation of 26718 events: 0.0346 sec + : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml + : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C + : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp +Factory : Training finished + : + : Ranking input variables (method specific)... +matching_mlp : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Importance + : -------------------------------- + : 1 : distY : 1.467e+02 + : 2 : teta2 : 6.884e+01 + : 3 : distX : 6.627e+01 + : 4 : dSlopeY : 3.066e+01 + : 5 : dSlope : 1.175e+01 + : 6 : chi2 : 2.632e+00 + : -------------------------------- +Factory : === Destroy and recreate all methods via weight files for testing === + : + : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml +matching_mlp : Building Network. + : Initializing weights +Factory : Test all methods +Factory : Test method: matching_mlp for Classification performance + : +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (6000 events) + : Elapsed time for evaluation of 6000 events: 0.0118 sec +Factory : Evaluate all methods +Factory : Evaluate classifier: matching_mlp + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: 0.10881 0.51711 [ -1.0020 0.99902 ] + : teta2: -0.96093 0.10865 [ -0.99988 0.46950 ] + : distX: -0.67673 0.27337 [ -0.99968 0.75285 ] + : distY: -0.82663 0.20236 [ -0.99997 0.83868 ] + : dSlope: -0.46394 0.38477 [ -0.99839 0.97924 ] + : dSlopeY: -0.89235 0.16561 [ -1.0000 0.93883 ] + : ----------------------------------------------------------- +matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: 0.10881 0.51711 [ -1.0020 0.99902 ] + : teta2: -0.96093 0.10865 [ -0.99988 0.46950 ] + : distX: -0.67673 0.27337 [ -0.99968 0.75285 ] + : distY: -0.82663 0.20236 [ -0.99997 0.83868 ] + : dSlope: -0.46394 0.38477 [ -0.99839 0.97924 ] + : dSlopeY: -0.89235 0.16561 [ -1.0000 0.93883 ] + : ----------------------------------------------------------- + : + : Evaluation results ranked by best signal efficiency and purity (area) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA + : Name: Method: ROC-integ + : MatchNNDataSet matching_mlp : 0.842 + : ------------------------------------------------------------------------------------------------------------------- + : + : Testing efficiency compared to training efficiency (overtraining check) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA Signal efficiency: from test sample (from training sample) + : Name: Method: @B=0.01 @B=0.10 @B=0.30 + : ------------------------------------------------------------------------------------------------------------------- + : MatchNNDataSet matching_mlp : 0.075 (0.082) 0.476 (0.467) 0.841 (0.828) + : ------------------------------------------------------------------------------------------------------------------- + : +Dataset:MatchNNDataSet : Created tree 'TestTree' with 6000 events + : +Dataset:MatchNNDataSet : Created tree 'TrainTree' with 26718 events + : +Factory : Thank you for using TMVA! + : For citation information, please visit: http://tmva.sf.net/citeTMVA.html +Transforming nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... +Found minimum and maximum values for 6 variables. +Found 3 matrices: + 1. fWeightMatrix0to1 with 7 columns and 8 rows + 2. fWeightMatrix1to2 with 9 columns and 6 rows + 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/outputs_nn/output_D.txt b/outputs_nn/output_D.txt new file mode 100644 index 0000000..e69de29 diff --git a/outputs_nn/output_D_res.txt b/outputs_nn/output_D_res.txt new file mode 100644 index 0000000..cb1eefd --- /dev/null +++ b/outputs_nn/output_D_res.txt @@ -0,0 +1,268 @@ + : Parsing option string: + : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" + : The following options are set: + : - By User: + : V: "True" [Verbose flag] + : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] + : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] + : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] + : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] + : - Default: + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] + : Correlations: "False" [boolean to show correlation in output] + : ROC: "True" [boolean to show ROC in output] + : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] +DataSetInfo : [MatchNNDataSet] : Added class "Signal" + : Add Tree Signal of type Signal with 8286 events +DataSetInfo : [MatchNNDataSet] : Added class "Background" + : Add Tree Bkg of type Background with 12762964 events + : Dataset[MatchNNDataSet] : Class index : 0 name : Signal + : Dataset[MatchNNDataSet] : Class index : 1 name : Background +Factory : Booking method: matching_mlp + : + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : + : - Default: + : Boost_num: "0" [Number of times the classifier will be boosted] + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : NCycles: "700" [Number of training cycles] + : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] + : NeuronType: "ReLU" [Neuron activation function type] + : EstimatorType: "CE" [MSE (Mean Square Estimator) for Gaussian Likelihood or CE(Cross-Entropy) for Bernoulli Likelihood] + : V: "True" [Verbose output (short form of "VerbosityLevel" below - overrides the latter one)] + : VarTransform: "Norm" [List of variable transformations performed before training, e.g., "D_Background,P_Signal,G,N_AllClasses" for: "Decorrelation, PCA-transformation, Gaussianisation, Normalisation, each for the given class of events ('AllClasses' denotes all events of all classes, if no class indication is given, 'All' is assumed)"] + : H: "False" [Print method-specific help message] + : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] + : LearningRate: "2.000000e-02" [ANN learning rate parameter] + : DecayRate: "1.000000e-02" [Decay rate for learning parameter] + : TestRate: "50" [Test for overtraining performed at each #th epochs] + : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] + : SamplingImportance: "1.000000e+00" [ The sampling weights of events in epochs which successful (worse estimator than before) are multiplied with SamplingImportance, else they are divided.] + : UseRegulator: "False" [Use regulator to avoid over-training] + : - Default: + : RandomSeed: "1" [Random seed for initial synapse weights (0 means unique seed for each run; default value '1')] + : NeuronInputType: "sum" [Neuron input function type] + : VerbosityLevel: "Default" [Verbosity level] + : CreateMVAPdfs: "False" [Create PDFs for classifier outputs (signal and background)] + : IgnoreNegWeightsInTraining: "False" [Events with negative weights are ignored in the training (but are included for testing and performance evaluation)] + : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] + : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] + : SamplingTraining: "True" [The training sample is sampled] + : SamplingTesting: "False" [The testing sample is sampled] + : ResetStep: "50" [How often BFGS should reset history] + : Tau: "3.000000e+00" [LineSearch "size step"] + : BPMode: "sequential" [Back-propagation learning mode: sequential or batch] + : BatchSize: "-1" [Batch size: number of events/batch, only set if in Batch Mode, -1 for BatchSize=number_of_events] + : ConvergenceImprove: "1.000000e-30" [Minimum improvement which counts as improvement (<0 means automatic convergence check is turned off)] + : ConvergenceTests: "-1" [Number of steps (without improvement) required for convergence (<0 means automatic convergence check is turned off)] + : UpdateLimit: "10000" [Maximum times of regulator update] + : CalculateErrors: "False" [Calculates inverse Hessian matrix at the end of the training to be able to calculate the uncertainties of an MVA value] + : WeightRange: "1.000000e+00" [Take the events for the estimator calculations from small deviations from the desired value to large deviations only over the weight range] +matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +matching_mlp : Building Network. + : Initializing weights +Factory : Train all methods + : Rebuilding Dataset MatchNNDataSet + : Parsing option string: + : ... "SplitMode=random:V:nTrain_Signal=0:nTrain_Background=20000.0:nTest_Signal=1000.0:nTest_Background=5000.0" + : The following options are set: + : - By User: + : SplitMode: "Random" [Method of picking training and testing events (default: random)] + : nTrain_Signal: "0" [Number of training events of class Signal (default: 0 = all)] + : nTest_Signal: "1000" [Number of test events of class Signal (default: 0 = all)] + : nTrain_Background: "20000" [Number of training events of class Background (default: 0 = all)] + : nTest_Background: "5000" [Number of test events of class Background (default: 0 = all)] + : V: "True" [Verbosity (default: true)] + : - Default: + : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] + : SplitSeed: "100" [Seed for random event shuffling] + : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] + : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] + : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] + : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Correlations: "True" [Boolean to show correlation output (Default: true)] + : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] + : Building event vectors for type 2 Signal + : Dataset[MatchNNDataSet] : create input formulas for tree Signal + : Building event vectors for type 2 Background + : Dataset[MatchNNDataSet] : create input formulas for tree Bkg +DataSetFactory : [MatchNNDataSet] : Number of events in input trees + : + : + : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... + : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same + : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) + : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... + : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events + : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) + : Number of training and testing events + : --------------------------------------------------------------------------- + : Signal -- training events : 7286 + : Signal -- testing events : 1000 + : Signal -- training and testing events: 8286 + : Background -- training events : 20000 + : Background -- testing events : 5000 + : Background -- training and testing events: 25000 + : +DataSetInfo : Correlation matrix (Signal): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 -0.090 +0.190 +0.270 +0.150 +0.032 + : teta2: -0.090 +1.000 +0.022 +0.557 +0.231 +0.681 + : distX: +0.190 +0.022 +1.000 -0.243 +0.667 +0.066 + : distY: +0.270 +0.557 -0.243 +1.000 +0.299 +0.491 + : dSlope: +0.150 +0.231 +0.667 +0.299 +1.000 +0.343 + : dSlopeY: +0.032 +0.681 +0.066 +0.491 +0.343 +1.000 + : -------------------------------------------------------- +DataSetInfo : Correlation matrix (Background): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 -0.032 +0.249 +0.208 +0.048 +0.047 + : teta2: -0.032 +1.000 +0.256 +0.643 +0.377 +0.464 + : distX: +0.249 +0.256 +1.000 +0.027 +0.771 +0.192 + : distY: +0.208 +0.643 +0.027 +1.000 +0.323 +0.556 + : dSlope: +0.048 +0.377 +0.771 +0.323 +1.000 +0.394 + : dSlopeY: +0.047 +0.464 +0.192 +0.556 +0.394 +1.000 + : -------------------------------------------------------- +DataSetFactory : [MatchNNDataSet] : + : +Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +TFHandler_Factory : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: 15.110 7.5957 [ 0.25759 29.998 ] + : teta2: 0.0049007 0.015613 [ 1.1810e-05 0.34609 ] + : distX: 77.540 64.030 [ 0.00059319 494.45 ] + : distY: 35.596 43.128 [ 0.0016556 497.11 ] + : dSlope: 0.37313 0.24282 [ 0.00012810 1.2803 ] + : dSlopeY: 0.0071048 0.011434 [ 4.9639e-07 0.14679 ] + : ----------------------------------------------------------- + : Ranking input variables (method unspecific)... +IdTransformation : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Separation + : -------------------------------- + : 1 : chi2 : 8.701e-02 + : 2 : distY : 7.455e-02 + : 3 : dSlope : 6.957e-02 + : 4 : teta2 : 4.316e-02 + : 5 : dSlopeY : 2.562e-02 + : 6 : distX : 1.371e-02 + : -------------------------------- +Factory : Train method: matching_mlp for Classification + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.0011851 0.51079 [ -1.0000 1.0000 ] + : teta2: -0.97175 0.090226 [ -1.0000 1.0000 ] + : distX: -0.68636 0.25900 [ -1.0000 1.0000 ] + : distY: -0.85679 0.17352 [ -1.0000 1.0000 ] + : dSlope: -0.41728 0.37935 [ -1.0000 1.0000 ] + : dSlopeY: -0.90320 0.15579 [ -1.0000 1.0000 ] + : ----------------------------------------------------------- + : Training Network + : + : Elapsed time for training with 27286 events: 59.2 sec +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (27286 events) + : Elapsed time for evaluation of 27286 events: 0.0331 sec + : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml + : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C + : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp +Factory : Training finished + : + : Ranking input variables (method specific)... +matching_mlp : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Importance + : -------------------------------- + : 1 : distY : 1.487e+02 + : 2 : distX : 9.251e+01 + : 3 : dSlopeY : 5.612e+01 + : 4 : teta2 : 3.951e+01 + : 5 : dSlope : 1.219e+01 + : 6 : chi2 : 1.428e+00 + : -------------------------------- +Factory : === Destroy and recreate all methods via weight files for testing === + : + : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml +matching_mlp : Building Network. + : Initializing weights +Factory : Test all methods +Factory : Test method: matching_mlp for Classification performance + : +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (6000 events) + : Elapsed time for evaluation of 6000 events: 0.0113 sec +Factory : Evaluate all methods +Factory : Evaluate classifier: matching_mlp + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: 0.10129 0.51080 [ -0.98564 0.99991 ] + : teta2: -0.96473 0.096760 [ -0.99997 0.43123 ] + : distX: -0.68127 0.26859 [ -0.99983 0.92711 ] + : distY: -0.83124 0.20417 [ -0.99994 1.0115 ] + : dSlope: -0.45660 0.39080 [ -0.99695 0.96415 ] + : dSlopeY: -0.89629 0.16201 [ -0.99999 1.0015 ] + : ----------------------------------------------------------- +matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: 0.10129 0.51080 [ -0.98564 0.99991 ] + : teta2: -0.96473 0.096760 [ -0.99997 0.43123 ] + : distX: -0.68127 0.26859 [ -0.99983 0.92711 ] + : distY: -0.83124 0.20417 [ -0.99994 1.0115 ] + : dSlope: -0.45660 0.39080 [ -0.99695 0.96415 ] + : dSlopeY: -0.89629 0.16201 [ -0.99999 1.0015 ] + : ----------------------------------------------------------- + : + : Evaluation results ranked by best signal efficiency and purity (area) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA + : Name: Method: ROC-integ + : MatchNNDataSet matching_mlp : 0.854 + : ------------------------------------------------------------------------------------------------------------------- + : + : Testing efficiency compared to training efficiency (overtraining check) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA Signal efficiency: from test sample (from training sample) + : Name: Method: @B=0.01 @B=0.10 @B=0.30 + : ------------------------------------------------------------------------------------------------------------------- + : MatchNNDataSet matching_mlp : 0.091 (0.089) 0.501 (0.494) 0.851 (0.854) + : ------------------------------------------------------------------------------------------------------------------- + : +Dataset:MatchNNDataSet : Created tree 'TestTree' with 6000 events + : +Dataset:MatchNNDataSet : Created tree 'TrainTree' with 27286 events + : +Factory : Thank you for using TMVA! + : For citation information, please visit: http://tmva.sf.net/citeTMVA.html +Transforming nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... +Found minimum and maximum values for 6 variables. +Found 3 matrices: + 1. fWeightMatrix0to1 with 7 columns and 8 rows + 2. fWeightMatrix1to2 with 9 columns and 6 rows + 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/outputs_nn/output_both.txt b/outputs_nn/output_both.txt new file mode 100644 index 0000000..5062d7d --- /dev/null +++ b/outputs_nn/output_both.txt @@ -0,0 +1,268 @@ + : Parsing option string: + : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" + : The following options are set: + : - By User: + : V: "True" [Verbose flag] + : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] + : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] + : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] + : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] + : - Default: + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] + : Correlations: "False" [boolean to show correlation in output] + : ROC: "True" [boolean to show ROC in output] + : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] +DataSetInfo : [MatchNNDataSet] : Added class "Signal" + : Add Tree Signal of type Signal with 13829 events +DataSetInfo : [MatchNNDataSet] : Added class "Background" + : Add Tree Bkg of type Background with 29144752 events + : Dataset[MatchNNDataSet] : Class index : 0 name : Signal + : Dataset[MatchNNDataSet] : Class index : 1 name : Background +Factory : Booking method: matching_mlp + : + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : + : - Default: + : Boost_num: "0" [Number of times the classifier will be boosted] + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : NCycles: "700" [Number of training cycles] + : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] + : NeuronType: "ReLU" [Neuron activation function type] + : EstimatorType: "CE" [MSE (Mean Square Estimator) for Gaussian Likelihood or CE(Cross-Entropy) for Bernoulli Likelihood] + : V: "True" [Verbose output (short form of "VerbosityLevel" below - overrides the latter one)] + : VarTransform: "Norm" [List of variable transformations performed before training, e.g., "D_Background,P_Signal,G,N_AllClasses" for: "Decorrelation, PCA-transformation, Gaussianisation, Normalisation, each for the given class of events ('AllClasses' denotes all events of all classes, if no class indication is given, 'All' is assumed)"] + : H: "False" [Print method-specific help message] + : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] + : LearningRate: "2.000000e-02" [ANN learning rate parameter] + : DecayRate: "1.000000e-02" [Decay rate for learning parameter] + : TestRate: "50" [Test for overtraining performed at each #th epochs] + : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] + : SamplingImportance: "1.000000e+00" [ The sampling weights of events in epochs which successful (worse estimator than before) are multiplied with SamplingImportance, else they are divided.] + : UseRegulator: "False" [Use regulator to avoid over-training] + : - Default: + : RandomSeed: "1" [Random seed for initial synapse weights (0 means unique seed for each run; default value '1')] + : NeuronInputType: "sum" [Neuron input function type] + : VerbosityLevel: "Default" [Verbosity level] + : CreateMVAPdfs: "False" [Create PDFs for classifier outputs (signal and background)] + : IgnoreNegWeightsInTraining: "False" [Events with negative weights are ignored in the training (but are included for testing and performance evaluation)] + : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] + : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] + : SamplingTraining: "True" [The training sample is sampled] + : SamplingTesting: "False" [The testing sample is sampled] + : ResetStep: "50" [How often BFGS should reset history] + : Tau: "3.000000e+00" [LineSearch "size step"] + : BPMode: "sequential" [Back-propagation learning mode: sequential or batch] + : BatchSize: "-1" [Batch size: number of events/batch, only set if in Batch Mode, -1 for BatchSize=number_of_events] + : ConvergenceImprove: "1.000000e-30" [Minimum improvement which counts as improvement (<0 means automatic convergence check is turned off)] + : ConvergenceTests: "-1" [Number of steps (without improvement) required for convergence (<0 means automatic convergence check is turned off)] + : UpdateLimit: "10000" [Maximum times of regulator update] + : CalculateErrors: "False" [Calculates inverse Hessian matrix at the end of the training to be able to calculate the uncertainties of an MVA value] + : WeightRange: "1.000000e+00" [Take the events for the estimator calculations from small deviations from the desired value to large deviations only over the weight range] +matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +matching_mlp : Building Network. + : Initializing weights +Factory : Train all methods + : Rebuilding Dataset MatchNNDataSet + : Parsing option string: + : ... "SplitMode=random:V:nTrain_Signal=0:nTrain_Background=20000.0:nTest_Signal=2000.0:nTest_Background=5000.0" + : The following options are set: + : - By User: + : SplitMode: "Random" [Method of picking training and testing events (default: random)] + : nTrain_Signal: "0" [Number of training events of class Signal (default: 0 = all)] + : nTest_Signal: "2000" [Number of test events of class Signal (default: 0 = all)] + : nTrain_Background: "20000" [Number of training events of class Background (default: 0 = all)] + : nTest_Background: "5000" [Number of test events of class Background (default: 0 = all)] + : V: "True" [Verbosity (default: true)] + : - Default: + : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] + : SplitSeed: "100" [Seed for random event shuffling] + : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] + : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] + : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] + : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Correlations: "True" [Boolean to show correlation output (Default: true)] + : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] + : Building event vectors for type 2 Signal + : Dataset[MatchNNDataSet] : create input formulas for tree Signal + : Building event vectors for type 2 Background + : Dataset[MatchNNDataSet] : create input formulas for tree Bkg +DataSetFactory : [MatchNNDataSet] : Number of events in input trees + : + : + : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... + : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same + : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) + : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... + : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events + : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) + : Number of training and testing events + : --------------------------------------------------------------------------- + : Signal -- training events : 11829 + : Signal -- testing events : 2000 + : Signal -- training and testing events: 13829 + : Background -- training events : 20000 + : Background -- testing events : 5000 + : Background -- training and testing events: 25000 + : +DataSetInfo : Correlation matrix (Signal): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 -0.082 +0.200 +0.302 +0.182 +0.049 + : teta2: -0.082 +1.000 +0.033 +0.461 +0.179 +0.632 + : distX: +0.200 +0.033 +1.000 -0.222 +0.685 +0.075 + : distY: +0.302 +0.461 -0.222 +1.000 +0.306 +0.463 + : dSlope: +0.182 +0.179 +0.685 +0.306 +1.000 +0.319 + : dSlopeY: +0.049 +0.632 +0.075 +0.463 +0.319 +1.000 + : -------------------------------------------------------- +DataSetInfo : Correlation matrix (Background): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 -0.003 +0.368 +0.313 -0.005 +0.094 + : teta2: -0.003 +1.000 +0.215 +0.617 +0.302 +0.491 + : distX: +0.368 +0.215 +1.000 +0.065 +0.633 +0.203 + : distY: +0.313 +0.617 +0.065 +1.000 +0.246 +0.532 + : dSlope: -0.005 +0.302 +0.633 +0.246 +1.000 +0.356 + : dSlopeY: +0.094 +0.491 +0.203 +0.532 +0.356 +1.000 + : -------------------------------------------------------- +DataSetFactory : [MatchNNDataSet] : + : +Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +TFHandler_Factory : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: 13.817 7.9796 [ 0.0011579 29.997 ] + : teta2: 0.0040130 0.012209 [ 1.9755e-06 0.23492 ] + : distX: 71.018 61.492 [ 0.0031776 478.62 ] + : distY: 31.234 37.327 [ 0.00019073 497.26 ] + : dSlope: 0.37346 0.23976 [ 5.9959e-05 1.2822 ] + : dSlopeY: 0.0063004 0.010258 [ 3.9814e-08 0.14883 ] + : ----------------------------------------------------------- + : Ranking input variables (method unspecific)... +IdTransformation : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Separation + : -------------------------------- + : 1 : chi2 : 9.147e-02 + : 2 : distY : 5.407e-02 + : 3 : teta2 : 4.044e-02 + : 4 : dSlope : 3.233e-02 + : 5 : distX : 2.801e-02 + : 6 : dSlopeY : 1.699e-02 + : -------------------------------- +Factory : Train method: matching_mlp for Classification + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.078822 0.53204 [ -1.0000 1.0000 ] + : teta2: -0.96585 0.10395 [ -1.0000 1.0000 ] + : distX: -0.70325 0.25696 [ -1.0000 1.0000 ] + : distY: -0.87438 0.15013 [ -1.0000 1.0000 ] + : dSlope: -0.41755 0.37399 [ -1.0000 1.0000 ] + : dSlopeY: -0.91533 0.13785 [ -1.0000 1.0000 ] + : ----------------------------------------------------------- + : Training Network + : + : Elapsed time for training with 31829 events: 64.5 sec +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (31829 events) + : Elapsed time for evaluation of 31829 events: 0.0391 sec + : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml + : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C + : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp +Factory : Training finished + : + : Ranking input variables (method specific)... +matching_mlp : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Importance + : -------------------------------- + : 1 : distY : 3.588e+02 + : 2 : dSlopeY : 2.134e+02 + : 3 : distX : 1.426e+02 + : 4 : teta2 : 7.020e+01 + : 5 : dSlope : 1.303e+01 + : 6 : chi2 : 3.098e+00 + : -------------------------------- +Factory : === Destroy and recreate all methods via weight files for testing === + : + : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml +matching_mlp : Building Network. + : Initializing weights +Factory : Test all methods +Factory : Test method: matching_mlp for Classification performance + : +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (7000 events) + : Elapsed time for evaluation of 7000 events: 0.0138 sec +Factory : Evaluate all methods +Factory : Evaluate classifier: matching_mlp + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.055433 0.55630 [ -0.99875 1.0001 ] + : teta2: -0.96118 0.10498 [ -0.99999 0.45981 ] + : distX: -0.71039 0.26310 [ -0.99989 0.79697 ] + : distY: -0.86095 0.16028 [ -1.0000 0.89878 ] + : dSlope: -0.43538 0.38054 [ -0.99815 0.98969 ] + : dSlopeY: -0.91076 0.14080 [ -1.0000 0.93883 ] + : ----------------------------------------------------------- +matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.055433 0.55630 [ -0.99875 1.0001 ] + : teta2: -0.96118 0.10498 [ -0.99999 0.45981 ] + : distX: -0.71039 0.26310 [ -0.99989 0.79697 ] + : distY: -0.86095 0.16028 [ -1.0000 0.89878 ] + : dSlope: -0.43538 0.38054 [ -0.99815 0.98969 ] + : dSlopeY: -0.91076 0.14080 [ -1.0000 0.93883 ] + : ----------------------------------------------------------- + : + : Evaluation results ranked by best signal efficiency and purity (area) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA + : Name: Method: ROC-integ + : MatchNNDataSet matching_mlp : 0.853 + : ------------------------------------------------------------------------------------------------------------------- + : + : Testing efficiency compared to training efficiency (overtraining check) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA Signal efficiency: from test sample (from training sample) + : Name: Method: @B=0.01 @B=0.10 @B=0.30 + : ------------------------------------------------------------------------------------------------------------------- + : MatchNNDataSet matching_mlp : 0.000 (0.000) 0.470 (0.511) 0.877 (0.882) + : ------------------------------------------------------------------------------------------------------------------- + : +Dataset:MatchNNDataSet : Created tree 'TestTree' with 7000 events + : +Dataset:MatchNNDataSet : Created tree 'TrainTree' with 31829 events + : +Factory : Thank you for using TMVA! + : For citation information, please visit: http://tmva.sf.net/citeTMVA.html +Transforming nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... +Found minimum and maximum values for 6 variables. +Found 3 matrices: + 1. fWeightMatrix0to1 with 7 columns and 8 rows + 2. fWeightMatrix1to2 with 9 columns and 6 rows + 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/outputs_nn/output_e_B.txt b/outputs_nn/output_e_B.txt new file mode 100644 index 0000000..58622c8 --- /dev/null +++ b/outputs_nn/output_e_B.txt @@ -0,0 +1,268 @@ + : Parsing option string: + : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" + : The following options are set: + : - By User: + : V: "True" [Verbose flag] + : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] + : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] + : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] + : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] + : - Default: + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] + : Correlations: "False" [boolean to show correlation in output] + : ROC: "True" [boolean to show ROC in output] + : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] +DataSetInfo : [MatchNNDataSet] : Added class "Signal" + : Add Tree Signal of type Signal with 187767 events +DataSetInfo : [MatchNNDataSet] : Added class "Background" + : Add Tree Bkg of type Background with 14040318 events + : Dataset[MatchNNDataSet] : Class index : 0 name : Signal + : Dataset[MatchNNDataSet] : Class index : 1 name : Background +Factory : Booking method: matching_mlp + : + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : + : - Default: + : Boost_num: "0" [Number of times the classifier will be boosted] + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : NCycles: "700" [Number of training cycles] + : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] + : NeuronType: "ReLU" [Neuron activation function type] + : EstimatorType: "CE" [MSE (Mean Square Estimator) for Gaussian Likelihood or CE(Cross-Entropy) for Bernoulli Likelihood] + : V: "True" [Verbose output (short form of "VerbosityLevel" below - overrides the latter one)] + : VarTransform: "Norm" [List of variable transformations performed before training, e.g., "D_Background,P_Signal,G,N_AllClasses" for: "Decorrelation, PCA-transformation, Gaussianisation, Normalisation, each for the given class of events ('AllClasses' denotes all events of all classes, if no class indication is given, 'All' is assumed)"] + : H: "False" [Print method-specific help message] + : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] + : LearningRate: "2.000000e-02" [ANN learning rate parameter] + : DecayRate: "1.000000e-02" [Decay rate for learning parameter] + : TestRate: "50" [Test for overtraining performed at each #th epochs] + : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] + : SamplingImportance: "1.000000e+00" [ The sampling weights of events in epochs which successful (worse estimator than before) are multiplied with SamplingImportance, else they are divided.] + : UseRegulator: "False" [Use regulator to avoid over-training] + : - Default: + : RandomSeed: "1" [Random seed for initial synapse weights (0 means unique seed for each run; default value '1')] + : NeuronInputType: "sum" [Neuron input function type] + : VerbosityLevel: "Default" [Verbosity level] + : CreateMVAPdfs: "False" [Create PDFs for classifier outputs (signal and background)] + : IgnoreNegWeightsInTraining: "False" [Events with negative weights are ignored in the training (but are included for testing and performance evaluation)] + : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] + : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] + : SamplingTraining: "True" [The training sample is sampled] + : SamplingTesting: "False" [The testing sample is sampled] + : ResetStep: "50" [How often BFGS should reset history] + : Tau: "3.000000e+00" [LineSearch "size step"] + : BPMode: "sequential" [Back-propagation learning mode: sequential or batch] + : BatchSize: "-1" [Batch size: number of events/batch, only set if in Batch Mode, -1 for BatchSize=number_of_events] + : ConvergenceImprove: "1.000000e-30" [Minimum improvement which counts as improvement (<0 means automatic convergence check is turned off)] + : ConvergenceTests: "-1" [Number of steps (without improvement) required for convergence (<0 means automatic convergence check is turned off)] + : UpdateLimit: "10000" [Maximum times of regulator update] + : CalculateErrors: "False" [Calculates inverse Hessian matrix at the end of the training to be able to calculate the uncertainties of an MVA value] + : WeightRange: "1.000000e+00" [Take the events for the estimator calculations from small deviations from the desired value to large deviations only over the weight range] +matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +matching_mlp : Building Network. + : Initializing weights +Factory : Train all methods + : Rebuilding Dataset MatchNNDataSet + : Parsing option string: + : ... "SplitMode=random:V:nTrain_Signal=50000.0:nTrain_Background=500000.0:nTest_Signal=20000.0:nTest_Background=100000.0" + : The following options are set: + : - By User: + : SplitMode: "Random" [Method of picking training and testing events (default: random)] + : nTrain_Signal: "50000" [Number of training events of class Signal (default: 0 = all)] + : nTest_Signal: "20000" [Number of test events of class Signal (default: 0 = all)] + : nTrain_Background: "500000" [Number of training events of class Background (default: 0 = all)] + : nTest_Background: "100000" [Number of test events of class Background (default: 0 = all)] + : V: "True" [Verbosity (default: true)] + : - Default: + : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] + : SplitSeed: "100" [Seed for random event shuffling] + : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] + : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] + : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] + : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Correlations: "True" [Boolean to show correlation output (Default: true)] + : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] + : Building event vectors for type 2 Signal + : Dataset[MatchNNDataSet] : create input formulas for tree Signal + : Building event vectors for type 2 Background + : Dataset[MatchNNDataSet] : create input formulas for tree Bkg +DataSetFactory : [MatchNNDataSet] : Number of events in input trees + : + : + : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... + : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same + : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) + : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... + : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events + : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) + : Number of training and testing events + : --------------------------------------------------------------------------- + : Signal -- training events : 50000 + : Signal -- testing events : 20000 + : Signal -- training and testing events: 70000 + : Background -- training events : 500000 + : Background -- testing events : 100000 + : Background -- training and testing events: 600000 + : +DataSetInfo : Correlation matrix (Signal): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 -0.094 +0.511 +0.560 +0.392 +0.141 + : teta2: -0.094 +1.000 -0.010 +0.336 -0.009 +0.390 + : distX: +0.511 -0.010 +1.000 +0.200 +0.501 +0.229 + : distY: +0.560 +0.336 +0.200 +1.000 +0.505 +0.456 + : dSlope: +0.392 -0.009 +0.501 +0.505 +1.000 +0.494 + : dSlopeY: +0.141 +0.390 +0.229 +0.456 +0.494 +1.000 + : -------------------------------------------------------- +DataSetInfo : Correlation matrix (Background): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 +0.006 +0.360 +0.312 -0.004 +0.103 + : teta2: +0.006 +1.000 +0.218 +0.626 +0.297 +0.487 + : distX: +0.360 +0.218 +1.000 +0.065 +0.633 +0.205 + : distY: +0.312 +0.626 +0.065 +1.000 +0.250 +0.538 + : dSlope: -0.004 +0.297 +0.633 +0.250 +1.000 +0.358 + : dSlopeY: +0.103 +0.487 +0.205 +0.538 +0.358 +1.000 + : -------------------------------------------------------- +DataSetFactory : [MatchNNDataSet] : + : +Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +TFHandler_Factory : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: 8.4488 9.2446 [ 5.2334e-05 30.000 ] + : teta2: 0.0057495 0.014113 [ 1.2564e-06 0.42331 ] + : distX: 40.154 55.148 [ 4.3869e-05 499.60 ] + : distY: 26.206 36.751 [ 1.9073e-06 499.20 ] + : dSlope: 0.33045 0.23497 [ 4.7125e-07 1.3693 ] + : dSlopeY: 0.0054210 0.0091700 [ 1.0245e-08 0.14939 ] + : ----------------------------------------------------------- + : Ranking input variables (method unspecific)... +IdTransformation : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Separation + : -------------------------------- + : 1 : chi2 : 5.701e-01 + : 2 : distX : 3.731e-01 + : 3 : distY : 2.108e-01 + : 4 : dSlopeY : 8.367e-02 + : 5 : dSlope : 8.157e-03 + : 6 : teta2 : 3.280e-03 + : -------------------------------- +Factory : Train method: matching_mlp for Classification + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.43675 0.61631 [ -1.0000 1.0000 ] + : teta2: -0.97284 0.066677 [ -1.0000 1.0000 ] + : distX: -0.83926 0.22077 [ -1.0000 1.0000 ] + : distY: -0.89501 0.14724 [ -1.0000 1.0000 ] + : dSlope: -0.51734 0.34321 [ -1.0000 1.0000 ] + : dSlopeY: -0.92743 0.12276 [ -1.0000 1.0000 ] + : ----------------------------------------------------------- + : Training Network + : + : Elapsed time for training with 550000 events: 1.28e+03 sec +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (550000 events) + : Elapsed time for evaluation of 550000 events: 0.743 sec + : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml + : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C + : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp +Factory : Training finished + : + : Ranking input variables (method specific)... +matching_mlp : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Importance + : -------------------------------- + : 1 : distY : 3.418e+02 + : 2 : dSlopeY : 2.969e+02 + : 3 : teta2 : 2.257e+02 + : 4 : distX : 2.089e+02 + : 5 : dSlope : 1.525e+01 + : 6 : chi2 : 3.953e+00 + : -------------------------------- +Factory : === Destroy and recreate all methods via weight files for testing === + : + : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml +matching_mlp : Building Network. + : Initializing weights +Factory : Test all methods +Factory : Test method: matching_mlp for Classification performance + : +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (120000 events) + : Elapsed time for evaluation of 120000 events: 0.165 sec +Factory : Evaluate all methods +Factory : Evaluate classifier: matching_mlp + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.15704 0.62353 [ -1.0000 0.99999 ] + : teta2: -0.97379 0.069648 [ -0.99999 0.49021 ] + : distX: -0.76831 0.25194 [ -1.0000 0.99861 ] + : distY: -0.86100 0.17259 [ -1.0000 0.99055 ] + : dSlope: -0.50135 0.35288 [ -1.0000 0.94915 ] + : dSlopeY: -0.91297 0.13474 [ -1.0000 0.99972 ] + : ----------------------------------------------------------- +matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.15704 0.62353 [ -1.0000 0.99999 ] + : teta2: -0.97379 0.069648 [ -0.99999 0.49021 ] + : distX: -0.76831 0.25194 [ -1.0000 0.99861 ] + : distY: -0.86100 0.17259 [ -1.0000 0.99055 ] + : dSlope: -0.50135 0.35288 [ -1.0000 0.94915 ] + : dSlopeY: -0.91297 0.13474 [ -1.0000 0.99972 ] + : ----------------------------------------------------------- + : + : Evaluation results ranked by best signal efficiency and purity (area) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA + : Name: Method: ROC-integ + : MatchNNDataSet matching_mlp : 0.958 + : ------------------------------------------------------------------------------------------------------------------- + : + : Testing efficiency compared to training efficiency (overtraining check) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA Signal efficiency: from test sample (from training sample) + : Name: Method: @B=0.01 @B=0.10 @B=0.30 + : ------------------------------------------------------------------------------------------------------------------- + : MatchNNDataSet matching_mlp : 0.434 (0.435) 0.889 (0.888) 0.982 (0.982) + : ------------------------------------------------------------------------------------------------------------------- + : +Dataset:MatchNNDataSet : Created tree 'TestTree' with 120000 events + : +Dataset:MatchNNDataSet : Created tree 'TrainTree' with 550000 events + : +Factory : Thank you for using TMVA! + : For citation information, please visit: http://tmva.sf.net/citeTMVA.html +Transforming nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... +Found minimum and maximum values for 6 variables. +Found 3 matrices: + 1. fWeightMatrix0to1 with 7 columns and 8 rows + 2. fWeightMatrix1to2 with 9 columns and 6 rows + 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/outputs_nn/output_n_B.txt b/outputs_nn/output_n_B.txt new file mode 100644 index 0000000..4378c01 --- /dev/null +++ b/outputs_nn/output_n_B.txt @@ -0,0 +1,280 @@ + : Parsing option string: + : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" + : The following options are set: + : - By User: + : V: "True" [Verbose flag] + : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] + : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] + : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] + : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] + : - Default: + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] + : Correlations: "False" [boolean to show correlation in output] + : ROC: "True" [boolean to show ROC in output] + : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] +DataSetInfo : [MatchNNDataSet] : Added class "Signal" + : Add Tree Signal of type Signal with 2175608 events +DataSetInfo : [MatchNNDataSet] : Added class "Background" + : Add Tree Bkg of type Background with 14040318 events + : Dataset[MatchNNDataSet] : Class index : 0 name : Signal + : Dataset[MatchNNDataSet] : Class index : 1 name : Background +Factory : Booking method: matching_mlp + : + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : + : - Default: + : Boost_num: "0" [Number of times the classifier will be boosted] + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : NCycles: "700" [Number of training cycles] + : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] + : NeuronType: "ReLU" [Neuron activation function type] + : EstimatorType: "CE" [MSE (Mean Square Estimator) for Gaussian Likelihood or CE(Cross-Entropy) for Bernoulli Likelihood] + : V: "True" [Verbose output (short form of "VerbosityLevel" below - overrides the latter one)] + : VarTransform: "Norm" [List of variable transformations performed before training, e.g., "D_Background,P_Signal,G,N_AllClasses" for: "Decorrelation, PCA-transformation, Gaussianisation, Normalisation, each for the given class of events ('AllClasses' denotes all events of all classes, if no class indication is given, 'All' is assumed)"] + : H: "False" [Print method-specific help message] + : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] + : LearningRate: "2.000000e-02" [ANN learning rate parameter] + : DecayRate: "1.000000e-02" [Decay rate for learning parameter] + : TestRate: "50" [Test for overtraining performed at each #th epochs] + : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] + : SamplingImportance: "1.000000e+00" [ The sampling weights of events in epochs which successful (worse estimator than before) are multiplied with SamplingImportance, else they are divided.] + : UseRegulator: "False" [Use regulator to avoid over-training] + : - Default: + : RandomSeed: "1" [Random seed for initial synapse weights (0 means unique seed for each run; default value '1')] + : NeuronInputType: "sum" [Neuron input function type] + : VerbosityLevel: "Default" [Verbosity level] + : CreateMVAPdfs: "False" [Create PDFs for classifier outputs (signal and background)] + : IgnoreNegWeightsInTraining: "False" [Events with negative weights are ignored in the training (but are included for testing and performance evaluation)] + : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] + : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] + : SamplingTraining: "True" [The training sample is sampled] + : SamplingTesting: "False" [The testing sample is sampled] + : ResetStep: "50" [How often BFGS should reset history] + : Tau: "3.000000e+00" [LineSearch "size step"] + : BPMode: "sequential" [Back-propagation learning mode: sequential or batch] + : BatchSize: "-1" [Batch size: number of events/batch, only set if in Batch Mode, -1 for BatchSize=number_of_events] + : ConvergenceImprove: "1.000000e-30" [Minimum improvement which counts as improvement (<0 means automatic convergence check is turned off)] + : ConvergenceTests: "-1" [Number of steps (without improvement) required for convergence (<0 means automatic convergence check is turned off)] + : UpdateLimit: "10000" [Maximum times of regulator update] + : CalculateErrors: "False" [Calculates inverse Hessian matrix at the end of the training to be able to calculate the uncertainties of an MVA value] + : WeightRange: "1.000000e+00" [Take the events for the estimator calculations from small deviations from the desired value to large deviations only over the weight range] +matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +matching_mlp : Building Network. + : Initializing weights +Factory : Train all methods + : Rebuilding Dataset MatchNNDataSet + : Parsing option string: + : ... "SplitMode=random:V:nTrain_Signal=50000.0:nTrain_Background=500000.0:nTest_Signal=20000.0:nTest_Background=100000.0" + : The following options are set: + : - By User: + : SplitMode: "Random" [Method of picking training and testing events (default: random)] + : nTrain_Signal: "50000" [Number of training events of class Signal (default: 0 = all)] + : nTest_Signal: "20000" [Number of test events of class Signal (default: 0 = all)] + : nTrain_Background: "500000" [Number of training events of class Background (default: 0 = all)] + : nTest_Background: "100000" [Number of test events of class Background (default: 0 = all)] + : V: "True" [Verbosity (default: true)] + : - Default: + : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] + : SplitSeed: "100" [Seed for random event shuffling] + : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] + : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] + : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] + : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Correlations: "True" [Boolean to show correlation output (Default: true)] + : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] + : Building event vectors for type 2 Signal + : Dataset[MatchNNDataSet] : create input formulas for tree Signal + : Building event vectors for type 2 Background + : Dataset[MatchNNDataSet] : create input formulas for tree Bkg +DataSetFactory : [MatchNNDataSet] : Number of events in input trees + : Dataset[MatchNNDataSet] : Signal requirement: "chi2<15 && distX<250 && distY<400 && dSlope<1.5 && dSlopeY<0.15" + : Dataset[MatchNNDataSet] : Signal -- number of events passed: 2151182 / sum of weights: 2.15118e+06 + : Dataset[MatchNNDataSet] : Signal -- efficiency : 0.988773 + : Dataset[MatchNNDataSet] : Background requirement: "chi2<15 && distX<250 && distY<400 && dSlope<1.5 && dSlopeY<0.15" + : Dataset[MatchNNDataSet] : Background -- number of events passed: 7175761 / sum of weights: 7.17576e+06 + : Dataset[MatchNNDataSet] : Background -- efficiency : 0.511083 + : Dataset[MatchNNDataSet] : you have opted for interpreting the requested number of training/testing events + : to be the number of events AFTER your preselection cuts + : + : Dataset[MatchNNDataSet] : you have opted for interpreting the requested number of training/testing events + : to be the number of events AFTER your preselection cuts + : + : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... + : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same + : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) + : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... + : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events + : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) + : Number of training and testing events + : --------------------------------------------------------------------------- + : Signal -- training events : 50000 + : Signal -- testing events : 20000 + : Signal -- training and testing events: 70000 + : Dataset[MatchNNDataSet] : Signal -- due to the preselection a scaling factor has been applied to the numbers of requested events: 0.988773 + : Background -- training events : 500000 + : Background -- testing events : 100000 + : Background -- training and testing events: 600000 + : Dataset[MatchNNDataSet] : Background -- due to the preselection a scaling factor has been applied to the numbers of requested events: 0.511083 + : +DataSetInfo : Correlation matrix (Signal): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 +0.197 +0.512 +0.603 +0.392 +0.418 + : teta2: +0.197 +1.000 +0.456 +0.649 +0.399 +0.581 + : distX: +0.512 +0.456 +1.000 +0.445 +0.555 +0.606 + : distY: +0.603 +0.649 +0.445 +1.000 +0.529 +0.568 + : dSlope: +0.392 +0.399 +0.555 +0.529 +1.000 +0.647 + : dSlopeY: +0.418 +0.581 +0.606 +0.568 +0.647 +1.000 + : -------------------------------------------------------- +DataSetInfo : Correlation matrix (Background): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 +0.001 +0.370 +0.305 +0.002 +0.084 + : teta2: +0.001 +1.000 +0.173 +0.650 +0.280 +0.455 + : distX: +0.370 +0.173 +1.000 +0.043 +0.627 +0.195 + : distY: +0.305 +0.650 +0.043 +1.000 +0.240 +0.458 + : dSlope: +0.002 +0.280 +0.627 +0.240 +1.000 +0.362 + : dSlopeY: +0.084 +0.455 +0.195 +0.458 +0.362 +1.000 + : -------------------------------------------------------- +DataSetFactory : [MatchNNDataSet] : + : +Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +TFHandler_Factory : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: 4.1539 4.6460 [ 1.3264e-05 15.000 ] + : teta2: 0.0079252 0.017224 [ 1.2100e-06 0.43619 ] + : distX: 27.109 38.586 [ 3.8147e-06 250.00 ] + : distY: 20.564 28.494 [ 1.5259e-05 399.49 ] + : dSlope: 0.28782 0.22814 [ 2.2016e-06 1.3026 ] + : dSlopeY: 0.0054782 0.0099926 [ 1.8626e-09 0.14834 ] + : ----------------------------------------------------------- + : Ranking input variables (method unspecific)... +IdTransformation : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Separation + : -------------------------------- + : 1 : chi2 : 6.095e-01 + : 2 : distX : 4.727e-01 + : 3 : distY : 1.428e-01 + : 4 : dSlope : 7.613e-02 + : 5 : dSlopeY : 5.967e-02 + : 6 : teta2 : 5.937e-02 + : -------------------------------- +Factory : Train method: matching_mlp for Classification + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.44615 0.61947 [ -1.0000 1.0000 ] + : teta2: -0.96367 0.078975 [ -1.0000 1.0000 ] + : distX: -0.78313 0.30869 [ -1.0000 1.0000 ] + : distY: -0.89705 0.14265 [ -1.0000 1.0000 ] + : dSlope: -0.55809 0.35029 [ -1.0000 1.0000 ] + : dSlopeY: -0.92614 0.13472 [ -1.0000 1.0000 ] + : ----------------------------------------------------------- + : Training Network + : + : Elapsed time for training with 550000 events: 1.28e+03 sec +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (550000 events) + : Elapsed time for evaluation of 550000 events: 0.785 sec + : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml + : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C + : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp +Factory : Training finished + : + : Ranking input variables (method specific)... +matching_mlp : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Importance + : -------------------------------- + : 1 : teta2 : 7.346e+02 + : 2 : distX : 1.891e+02 + : 3 : dSlopeY : 5.900e+01 + : 4 : distY : 4.639e+01 + : 5 : dSlope : 1.074e+01 + : 6 : chi2 : 2.093e+00 + : -------------------------------- +Factory : === Destroy and recreate all methods via weight files for testing === + : + : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml +matching_mlp : Building Network. + : Initializing weights +Factory : Test all methods +Factory : Test method: matching_mlp for Classification performance + : +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (120000 events) + : Elapsed time for evaluation of 120000 events: 0.169 sec +Factory : Evaluate all methods +Factory : Evaluate classifier: matching_mlp + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.15813 0.62626 [ -1.0000 0.99995 ] + : teta2: -0.97140 0.071651 [ -1.0000 0.85686 ] + : distX: -0.67477 0.35263 [ -1.0000 0.99866 ] + : distY: -0.87476 0.15583 [ -1.0000 0.99415 ] + : dSlope: -0.49635 0.36886 [ -0.99993 0.97372 ] + : dSlopeY: -0.91980 0.13029 [ -1.0000 1.0219 ] + : ----------------------------------------------------------- +matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.15813 0.62626 [ -1.0000 0.99995 ] + : teta2: -0.97140 0.071651 [ -1.0000 0.85686 ] + : distX: -0.67477 0.35263 [ -1.0000 0.99866 ] + : distY: -0.87476 0.15583 [ -1.0000 0.99415 ] + : dSlope: -0.49635 0.36886 [ -0.99993 0.97372 ] + : dSlopeY: -0.91980 0.13029 [ -1.0000 1.0219 ] + : ----------------------------------------------------------- + : + : Evaluation results ranked by best signal efficiency and purity (area) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA + : Name: Method: ROC-integ + : MatchNNDataSet matching_mlp : 0.970 + : ------------------------------------------------------------------------------------------------------------------- + : + : Testing efficiency compared to training efficiency (overtraining check) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA Signal efficiency: from test sample (from training sample) + : Name: Method: @B=0.01 @B=0.10 @B=0.30 + : ------------------------------------------------------------------------------------------------------------------- + : MatchNNDataSet matching_mlp : 0.543 (0.551) 0.936 (0.936) 0.985 (0.985) + : ------------------------------------------------------------------------------------------------------------------- + : +Dataset:MatchNNDataSet : Created tree 'TestTree' with 120000 events + : +Dataset:MatchNNDataSet : Created tree 'TrainTree' with 550000 events + : +Factory : Thank you for using TMVA! + : For citation information, please visit: http://tmva.sf.net/citeTMVA.html +Transforming neural_net_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... +Found minimum and maximum values for 6 variables. +Found 3 matrices: + 1. fWeightMatrix0to1 with 7 columns and 8 rows + 2. fWeightMatrix1to2 with 9 columns and 6 rows + 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/outputs_nn/output_og_weights_B.txt b/outputs_nn/output_og_weights_B.txt new file mode 100644 index 0000000..d8ec68d --- /dev/null +++ b/outputs_nn/output_og_weights_B.txt @@ -0,0 +1,268 @@ + : Parsing option string: + : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" + : The following options are set: + : - By User: + : V: "True" [Verbose flag] + : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] + : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] + : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] + : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] + : - Default: + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] + : Correlations: "False" [boolean to show correlation in output] + : ROC: "True" [boolean to show ROC in output] + : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] +DataSetInfo : [MatchNNDataSet] : Added class "Signal" + : Add Tree Signal of type Signal with 6590 events +DataSetInfo : [MatchNNDataSet] : Added class "Background" + : Add Tree Bkg of type Background with 14040318 events + : Dataset[MatchNNDataSet] : Class index : 0 name : Signal + : Dataset[MatchNNDataSet] : Class index : 1 name : Background +Factory : Booking method: matching_mlp + : + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : + : - Default: + : Boost_num: "0" [Number of times the classifier will be boosted] + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : NCycles: "700" [Number of training cycles] + : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] + : NeuronType: "ReLU" [Neuron activation function type] + : EstimatorType: "CE" [MSE (Mean Square Estimator) for Gaussian Likelihood or CE(Cross-Entropy) for Bernoulli Likelihood] + : V: "True" [Verbose output (short form of "VerbosityLevel" below - overrides the latter one)] + : VarTransform: "Norm" [List of variable transformations performed before training, e.g., "D_Background,P_Signal,G,N_AllClasses" for: "Decorrelation, PCA-transformation, Gaussianisation, Normalisation, each for the given class of events ('AllClasses' denotes all events of all classes, if no class indication is given, 'All' is assumed)"] + : H: "False" [Print method-specific help message] + : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] + : LearningRate: "2.000000e-02" [ANN learning rate parameter] + : DecayRate: "1.000000e-02" [Decay rate for learning parameter] + : TestRate: "50" [Test for overtraining performed at each #th epochs] + : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] + : SamplingImportance: "1.000000e+00" [ The sampling weights of events in epochs which successful (worse estimator than before) are multiplied with SamplingImportance, else they are divided.] + : UseRegulator: "False" [Use regulator to avoid over-training] + : - Default: + : RandomSeed: "1" [Random seed for initial synapse weights (0 means unique seed for each run; default value '1')] + : NeuronInputType: "sum" [Neuron input function type] + : VerbosityLevel: "Default" [Verbosity level] + : CreateMVAPdfs: "False" [Create PDFs for classifier outputs (signal and background)] + : IgnoreNegWeightsInTraining: "False" [Events with negative weights are ignored in the training (but are included for testing and performance evaluation)] + : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] + : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] + : SamplingTraining: "True" [The training sample is sampled] + : SamplingTesting: "False" [The testing sample is sampled] + : ResetStep: "50" [How often BFGS should reset history] + : Tau: "3.000000e+00" [LineSearch "size step"] + : BPMode: "sequential" [Back-propagation learning mode: sequential or batch] + : BatchSize: "-1" [Batch size: number of events/batch, only set if in Batch Mode, -1 for BatchSize=number_of_events] + : ConvergenceImprove: "1.000000e-30" [Minimum improvement which counts as improvement (<0 means automatic convergence check is turned off)] + : ConvergenceTests: "-1" [Number of steps (without improvement) required for convergence (<0 means automatic convergence check is turned off)] + : UpdateLimit: "10000" [Maximum times of regulator update] + : CalculateErrors: "False" [Calculates inverse Hessian matrix at the end of the training to be able to calculate the uncertainties of an MVA value] + : WeightRange: "1.000000e+00" [Take the events for the estimator calculations from small deviations from the desired value to large deviations only over the weight range] +matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +matching_mlp : Building Network. + : Initializing weights +Factory : Train all methods + : Rebuilding Dataset MatchNNDataSet + : Parsing option string: + : ... "SplitMode=random:V:nTrain_Signal=0:nTrain_Background=200000.0:nTest_Signal=1000.0:nTest_Background=50000.0" + : The following options are set: + : - By User: + : SplitMode: "Random" [Method of picking training and testing events (default: random)] + : nTrain_Signal: "0" [Number of training events of class Signal (default: 0 = all)] + : nTest_Signal: "1000" [Number of test events of class Signal (default: 0 = all)] + : nTrain_Background: "200000" [Number of training events of class Background (default: 0 = all)] + : nTest_Background: "50000" [Number of test events of class Background (default: 0 = all)] + : V: "True" [Verbosity (default: true)] + : - Default: + : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] + : SplitSeed: "100" [Seed for random event shuffling] + : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] + : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] + : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] + : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Correlations: "True" [Boolean to show correlation output (Default: true)] + : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] + : Building event vectors for type 2 Signal + : Dataset[MatchNNDataSet] : create input formulas for tree Signal + : Building event vectors for type 2 Background + : Dataset[MatchNNDataSet] : create input formulas for tree Bkg +DataSetFactory : [MatchNNDataSet] : Number of events in input trees + : + : + : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... + : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same + : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) + : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... + : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events + : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) + : Number of training and testing events + : --------------------------------------------------------------------------- + : Signal -- training events : 5590 + : Signal -- testing events : 1000 + : Signal -- training and testing events: 6590 + : Background -- training events : 200000 + : Background -- testing events : 50000 + : Background -- training and testing events: 250000 + : +DataSetInfo : Correlation matrix (Signal): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 -0.083 +0.225 +0.287 +0.211 +0.054 + : teta2: -0.083 +1.000 +0.035 +0.472 +0.174 +0.617 + : distX: +0.225 +0.035 +1.000 -0.194 +0.684 +0.087 + : distY: +0.287 +0.472 -0.194 +1.000 +0.330 +0.471 + : dSlope: +0.211 +0.174 +0.684 +0.330 +1.000 +0.325 + : dSlopeY: +0.054 +0.617 +0.087 +0.471 +0.325 +1.000 + : -------------------------------------------------------- +DataSetInfo : Correlation matrix (Background): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 +0.003 +0.359 +0.315 -0.004 +0.101 + : teta2: +0.003 +1.000 +0.212 +0.622 +0.296 +0.492 + : distX: +0.359 +0.212 +1.000 +0.060 +0.635 +0.204 + : distY: +0.315 +0.622 +0.060 +1.000 +0.246 +0.530 + : dSlope: -0.004 +0.296 +0.635 +0.246 +1.000 +0.360 + : dSlopeY: +0.101 +0.492 +0.204 +0.530 +0.360 +1.000 + : -------------------------------------------------------- +DataSetFactory : [MatchNNDataSet] : + : +Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +TFHandler_Factory : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: 13.730 8.0164 [ 0.00031556 30.000 ] + : teta2: 0.0041449 0.012655 [ 1.1428e-06 0.43138 ] + : distX: 69.832 60.841 [ 0.00027466 490.80 ] + : distY: 31.145 37.661 [ 0.00010300 497.14 ] + : dSlope: 0.36688 0.24104 [ 1.2597e-05 1.3582 ] + : dSlopeY: 0.0063738 0.010662 [ 4.9360e-08 0.14883 ] + : ----------------------------------------------------------- + : Ranking input variables (method unspecific)... +IdTransformation : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Separation + : -------------------------------- + : 1 : chi2 : 8.858e-02 + : 2 : distY : 5.736e-02 + : 3 : teta2 : 3.110e-02 + : 4 : distX : 2.441e-02 + : 5 : dSlope : 2.026e-02 + : 6 : dSlopeY : 1.556e-02 + : -------------------------------- +Factory : Train method: matching_mlp for Classification + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.084705 0.53444 [ -1.0000 1.0000 ] + : teta2: -0.98079 0.058673 [ -1.0000 1.0000 ] + : distX: -0.71544 0.24793 [ -1.0000 1.0000 ] + : distY: -0.87470 0.15151 [ -1.0000 1.0000 ] + : dSlope: -0.45977 0.35494 [ -1.0000 1.0000 ] + : dSlopeY: -0.91435 0.14328 [ -1.0000 1.0000 ] + : ----------------------------------------------------------- + : Training Network + : + : Elapsed time for training with 205590 events: 465 sec +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (205590 events) + : Elapsed time for evaluation of 205590 events: 0.252 sec + : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml + : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C + : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp +Factory : Training finished + : + : Ranking input variables (method specific)... +matching_mlp : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Importance + : -------------------------------- + : 1 : distY : 2.139e+02 + : 2 : teta2 : 1.005e+02 + : 3 : dSlopeY : 9.191e+01 + : 4 : distX : 8.898e+01 + : 5 : dSlope : 1.082e+01 + : 6 : chi2 : 1.776e+00 + : -------------------------------- +Factory : === Destroy and recreate all methods via weight files for testing === + : + : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml +matching_mlp : Building Network. + : Initializing weights +Factory : Test all methods +Factory : Test method: matching_mlp for Classification performance + : +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (51000 events) + : Elapsed time for evaluation of 51000 events: 0.0702 sec +Factory : Evaluate all methods +Factory : Evaluate classifier: matching_mlp + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.011828 0.57705 [ -0.99996 0.99998 ] + : teta2: -0.97507 0.067138 [ -0.99998 0.27868 ] + : distX: -0.72636 0.26123 [ -1.0000 0.90538 ] + : distY: -0.84283 0.18429 [ -0.99999 1.0037 ] + : dSlope: -0.48676 0.36013 [ -0.99980 0.87659 ] + : dSlopeY: -0.90653 0.13847 [ -1.0000 1.0030 ] + : ----------------------------------------------------------- +matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.011828 0.57705 [ -0.99996 0.99998 ] + : teta2: -0.97507 0.067138 [ -0.99998 0.27868 ] + : distX: -0.72636 0.26123 [ -1.0000 0.90538 ] + : distY: -0.84283 0.18429 [ -0.99999 1.0037 ] + : dSlope: -0.48676 0.36013 [ -0.99980 0.87659 ] + : dSlopeY: -0.90653 0.13847 [ -1.0000 1.0030 ] + : ----------------------------------------------------------- + : + : Evaluation results ranked by best signal efficiency and purity (area) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA + : Name: Method: ROC-integ + : MatchNNDataSet matching_mlp : 0.850 + : ------------------------------------------------------------------------------------------------------------------- + : + : Testing efficiency compared to training efficiency (overtraining check) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA Signal efficiency: from test sample (from training sample) + : Name: Method: @B=0.01 @B=0.10 @B=0.30 + : ------------------------------------------------------------------------------------------------------------------- + : MatchNNDataSet matching_mlp : 0.050 (0.050) 0.446 (0.447) 0.869 (0.869) + : ------------------------------------------------------------------------------------------------------------------- + : +Dataset:MatchNNDataSet : Created tree 'TestTree' with 51000 events + : +Dataset:MatchNNDataSet : Created tree 'TrainTree' with 205590 events + : +Factory : Thank you for using TMVA! + : For citation information, please visit: http://tmva.sf.net/citeTMVA.html +Transforming nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... +Found minimum and maximum values for 6 variables. +Found 3 matrices: + 1. fWeightMatrix0to1 with 7 columns and 8 rows + 2. fWeightMatrix1to2 with 9 columns and 6 rows + 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/outputs_nn/output_og_weights_res_bkg_B.txt b/outputs_nn/output_og_weights_res_bkg_B.txt new file mode 100644 index 0000000..3792048 --- /dev/null +++ b/outputs_nn/output_og_weights_res_bkg_B.txt @@ -0,0 +1,268 @@ + : Parsing option string: + : ... "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification" + : The following options are set: + : - By User: + : V: "True" [Verbose flag] + : Color: "True" [Flag for coloured screen output (default: True, if in batch mode: False)] + : Silent: "False" [Batch mode: boolean silent flag inhibiting any output from TMVA after the creation of the factory class object (default: False)] + : DrawProgressBar: "True" [Draw progress bar to display training, testing and evaluation schedule (default: True)] + : AnalysisType: "Classification" [Set the analysis type (Classification, Regression, Multiclass, Auto) (default: Auto)] + : - Default: + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Transformations: "I" [List of transformations to test; formatting example: "Transformations=I;D;P;U;G,D", for identity, decorrelation, PCA, Uniform and Gaussianisation followed by decorrelation transformations] + : Correlations: "False" [boolean to show correlation in output] + : ROC: "True" [boolean to show ROC in output] + : ModelPersistence: "True" [Option to save the trained model in xml file or using serialization] +DataSetInfo : [MatchNNDataSet] : Added class "Signal" + : Add Tree Signal of type Signal with 6590 events +DataSetInfo : [MatchNNDataSet] : Added class "Background" + : Add Tree Bkg of type Background with 10981310 events + : Dataset[MatchNNDataSet] : Class index : 0 name : Signal + : Dataset[MatchNNDataSet] : Class index : 1 name : Background +Factory : Booking method: matching_mlp + : + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : + : - Default: + : Boost_num: "0" [Number of times the classifier will be boosted] + : Parsing option string: + : ... "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator" + : The following options are set: + : - By User: + : NCycles: "700" [Number of training cycles] + : HiddenLayers: "N+2,N" [Specification of hidden layer architecture] + : NeuronType: "ReLU" [Neuron activation function type] + : EstimatorType: "CE" [MSE (Mean Square Estimator) for Gaussian Likelihood or CE(Cross-Entropy) for Bernoulli Likelihood] + : V: "True" [Verbose output (short form of "VerbosityLevel" below - overrides the latter one)] + : VarTransform: "Norm" [List of variable transformations performed before training, e.g., "D_Background,P_Signal,G,N_AllClasses" for: "Decorrelation, PCA-transformation, Gaussianisation, Normalisation, each for the given class of events ('AllClasses' denotes all events of all classes, if no class indication is given, 'All' is assumed)"] + : H: "False" [Print method-specific help message] + : TrainingMethod: "BP" [Train with Back-Propagation (BP), BFGS Algorithm (BFGS), or Genetic Algorithm (GA - slower and worse)] + : LearningRate: "2.000000e-02" [ANN learning rate parameter] + : DecayRate: "1.000000e-02" [Decay rate for learning parameter] + : TestRate: "50" [Test for overtraining performed at each #th epochs] + : Sampling: "1.000000e+00" [Only 'Sampling' (randomly selected) events are trained each epoch] + : SamplingImportance: "1.000000e+00" [ The sampling weights of events in epochs which successful (worse estimator than before) are multiplied with SamplingImportance, else they are divided.] + : UseRegulator: "False" [Use regulator to avoid over-training] + : - Default: + : RandomSeed: "1" [Random seed for initial synapse weights (0 means unique seed for each run; default value '1')] + : NeuronInputType: "sum" [Neuron input function type] + : VerbosityLevel: "Default" [Verbosity level] + : CreateMVAPdfs: "False" [Create PDFs for classifier outputs (signal and background)] + : IgnoreNegWeightsInTraining: "False" [Events with negative weights are ignored in the training (but are included for testing and performance evaluation)] + : EpochMonitoring: "False" [Provide epoch-wise monitoring plots according to TestRate (caution: causes big ROOT output file!)] + : SamplingEpoch: "1.000000e+00" [Sampling is used for the first 'SamplingEpoch' epochs, afterwards, all events are taken for training] + : SamplingTraining: "True" [The training sample is sampled] + : SamplingTesting: "False" [The testing sample is sampled] + : ResetStep: "50" [How often BFGS should reset history] + : Tau: "3.000000e+00" [LineSearch "size step"] + : BPMode: "sequential" [Back-propagation learning mode: sequential or batch] + : BatchSize: "-1" [Batch size: number of events/batch, only set if in Batch Mode, -1 for BatchSize=number_of_events] + : ConvergenceImprove: "1.000000e-30" [Minimum improvement which counts as improvement (<0 means automatic convergence check is turned off)] + : ConvergenceTests: "-1" [Number of steps (without improvement) required for convergence (<0 means automatic convergence check is turned off)] + : UpdateLimit: "10000" [Maximum times of regulator update] + : CalculateErrors: "False" [Calculates inverse Hessian matrix at the end of the training to be able to calculate the uncertainties of an MVA value] + : WeightRange: "1.000000e+00" [Take the events for the estimator calculations from small deviations from the desired value to large deviations only over the weight range] +matching_mlp : [MatchNNDataSet] : Create Transformation "Norm" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +matching_mlp : Building Network. + : Initializing weights +Factory : Train all methods + : Rebuilding Dataset MatchNNDataSet + : Parsing option string: + : ... "SplitMode=random:V:nTrain_Signal=0:nTrain_Background=200000.0:nTest_Signal=5000.0:nTest_Background=50000.0" + : The following options are set: + : - By User: + : SplitMode: "Random" [Method of picking training and testing events (default: random)] + : nTrain_Signal: "0" [Number of training events of class Signal (default: 0 = all)] + : nTest_Signal: "5000" [Number of test events of class Signal (default: 0 = all)] + : nTrain_Background: "200000" [Number of training events of class Background (default: 0 = all)] + : nTest_Background: "50000" [Number of test events of class Background (default: 0 = all)] + : V: "True" [Verbosity (default: true)] + : - Default: + : MixMode: "SameAsSplitMode" [Method of mixing events of different classes into one dataset (default: SameAsSplitMode)] + : SplitSeed: "100" [Seed for random event shuffling] + : NormMode: "EqualNumEvents" [Overall renormalisation of event-by-event weights used in the training (NumEvents: average weight of 1 per event, independently for signal and background; EqualNumEvents: average weight of 1 per event for signal, and sum of weights for background equal to sum of weights for signal)] + : ScaleWithPreselEff: "False" [Scale the number of requested events by the eff. of the preselection cuts (or not)] + : TrainTestSplit_Signal: "0.000000e+00" [Number of test events of class Signal (default: 0 = all)] + : TrainTestSplit_Background: "0.000000e+00" [Number of test events of class Background (default: 0 = all)] + : VerboseLevel: "Info" [VerboseLevel (Debug/Verbose/Info)] + : Correlations: "True" [Boolean to show correlation output (Default: true)] + : CalcCorrelations: "True" [Compute correlations and also some variable statistics, e.g. min/max (Default: true )] + : Building event vectors for type 2 Signal + : Dataset[MatchNNDataSet] : create input formulas for tree Signal + : Building event vectors for type 2 Background + : Dataset[MatchNNDataSet] : create input formulas for tree Bkg +DataSetFactory : [MatchNNDataSet] : Number of events in input trees + : + : + : Dataset[MatchNNDataSet] : Weight renormalisation mode: "EqualNumEvents": renormalises all event classes ... + : Dataset[MatchNNDataSet] : such that the effective (weighted) number of events in each class is the same + : Dataset[MatchNNDataSet] : (and equals the number of events (entries) given for class=0 ) + : Dataset[MatchNNDataSet] : ... i.e. such that Sum[i=1..N_j]{w_i} = N_classA, j=classA, classB, ... + : Dataset[MatchNNDataSet] : ... (note that N_j is the sum of TRAINING events + : Dataset[MatchNNDataSet] : ..... Testing events are not renormalised nor included in the renormalisation factor!) + : Number of training and testing events + : --------------------------------------------------------------------------- + : Signal -- training events : 1590 + : Signal -- testing events : 5000 + : Signal -- training and testing events: 6590 + : Background -- training events : 200000 + : Background -- testing events : 50000 + : Background -- training and testing events: 250000 + : +DataSetInfo : Correlation matrix (Signal): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 -0.090 +0.192 +0.272 +0.184 +0.049 + : teta2: -0.090 +1.000 +0.041 +0.483 +0.208 +0.628 + : distX: +0.192 +0.041 +1.000 -0.179 +0.680 +0.101 + : distY: +0.272 +0.483 -0.179 +1.000 +0.363 +0.496 + : dSlope: +0.184 +0.208 +0.680 +0.363 +1.000 +0.350 + : dSlopeY: +0.049 +0.628 +0.101 +0.496 +0.350 +1.000 + : -------------------------------------------------------- +DataSetInfo : Correlation matrix (Background): + : -------------------------------------------------------- + : chi2 teta2 distX distY dSlope dSlopeY + : chi2: +1.000 -0.018 +0.249 +0.222 +0.061 +0.061 + : teta2: -0.018 +1.000 +0.219 +0.658 +0.336 +0.485 + : distX: +0.249 +0.219 +1.000 -0.003 +0.782 +0.189 + : distY: +0.222 +0.658 -0.003 +1.000 +0.284 +0.551 + : dSlope: +0.061 +0.336 +0.782 +0.284 +1.000 +0.379 + : dSlopeY: +0.061 +0.485 +0.189 +0.551 +0.379 +1.000 + : -------------------------------------------------------- +DataSetFactory : [MatchNNDataSet] : + : +Factory : [MatchNNDataSet] : Create Transformation "I" with events from all classes. + : + : Transformation, Variable selection : + : Input : variable 'chi2' <---> Output : variable 'chi2' + : Input : variable 'teta2' <---> Output : variable 'teta2' + : Input : variable 'distX' <---> Output : variable 'distX' + : Input : variable 'distY' <---> Output : variable 'distY' + : Input : variable 'dSlope' <---> Output : variable 'dSlope' + : Input : variable 'dSlopeY' <---> Output : variable 'dSlopeY' +TFHandler_Factory : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: 14.983 7.6381 [ 0.13393 30.000 ] + : teta2: 0.0045002 0.013698 [ 1.0756e-06 0.36197 ] + : distX: 74.269 61.998 [ 0.00010681 495.87 ] + : distY: 33.972 40.646 [ 0.00016022 498.46 ] + : dSlope: 0.35639 0.24245 [ 9.2713e-06 1.3376 ] + : dSlopeY: 0.0069454 0.011901 [ 8.8476e-08 0.14989 ] + : ----------------------------------------------------------- + : Ranking input variables (method unspecific)... +IdTransformation : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Separation + : -------------------------------- + : 1 : chi2 : 9.899e-02 + : 2 : distY : 8.544e-02 + : 3 : teta2 : 4.508e-02 + : 4 : dSlope : 3.745e-02 + : 5 : dSlopeY : 2.733e-02 + : 6 : distX : 1.657e-02 + : -------------------------------- +Factory : Train method: matching_mlp for Classification + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: -0.0056167 0.51149 [ -1.0000 1.0000 ] + : teta2: -0.97514 0.075684 [ -1.0000 1.0000 ] + : distX: -0.70045 0.25006 [ -1.0000 1.0000 ] + : distY: -0.86369 0.16308 [ -1.0000 1.0000 ] + : dSlope: -0.46715 0.36251 [ -1.0000 1.0000 ] + : dSlopeY: -0.90733 0.15880 [ -1.0000 1.0000 ] + : ----------------------------------------------------------- + : Training Network + : + : Elapsed time for training with 201590 events: 424 sec +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on training sample (201590 events) + : Elapsed time for evaluation of 201590 events: 0.244 sec + : Creating xml weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml + : Creating standalone class: MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C + : Write special histos to file: matching_ghost_mlp_training.root:/MatchNNDataSet/Method_MLP/matching_mlp +Factory : Training finished + : + : Ranking input variables (method specific)... +matching_mlp : Ranking result (top variable is best ranked) + : -------------------------------- + : Rank : Variable : Importance + : -------------------------------- + : 1 : distY : 7.131e+01 + : 2 : teta2 : 3.522e+01 + : 3 : distX : 2.316e+01 + : 4 : dSlopeY : 1.020e+01 + : 5 : dSlope : 6.822e+00 + : 6 : chi2 : 2.546e+00 + : -------------------------------- +Factory : === Destroy and recreate all methods via weight files for testing === + : + : Reading weight file: MatchNNDataSet/weights/TMVAClassification_matching_mlp.weights.xml +matching_mlp : Building Network. + : Initializing weights +Factory : Test all methods +Factory : Test method: matching_mlp for Classification performance + : +matching_mlp : [MatchNNDataSet] : Evaluation of matching_mlp on testing sample (55000 events) + : Elapsed time for evaluation of 55000 events: 0.0744 sec +Factory : Evaluate all methods +Factory : Evaluate classifier: matching_mlp + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: 0.12456 0.50663 [ -0.99498 1.0000 ] + : teta2: -0.96870 0.085208 [ -1.0000 0.96194 ] + : distX: -0.68732 0.27168 [ -0.99998 0.99743 ] + : distY: -0.83061 0.19253 [ -1.0000 1.0027 ] + : dSlope: -0.50226 0.36648 [ -0.99996 0.94917 ] + : dSlopeY: -0.90192 0.14156 [ -1.0000 0.98588 ] + : ----------------------------------------------------------- +matching_mlp : [MatchNNDataSet] : Loop over test events and fill histograms with classifier response... + : +TFHandler_matching_mlp : Variable Mean RMS [ Min Max ] + : ----------------------------------------------------------- + : chi2: 0.12456 0.50663 [ -0.99498 1.0000 ] + : teta2: -0.96870 0.085208 [ -1.0000 0.96194 ] + : distX: -0.68732 0.27168 [ -0.99998 0.99743 ] + : distY: -0.83061 0.19253 [ -1.0000 1.0027 ] + : dSlope: -0.50226 0.36648 [ -0.99996 0.94917 ] + : dSlopeY: -0.90192 0.14156 [ -1.0000 0.98588 ] + : ----------------------------------------------------------- + : + : Evaluation results ranked by best signal efficiency and purity (area) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA + : Name: Method: ROC-integ + : MatchNNDataSet matching_mlp : 0.838 + : ------------------------------------------------------------------------------------------------------------------- + : + : Testing efficiency compared to training efficiency (overtraining check) + : ------------------------------------------------------------------------------------------------------------------- + : DataSet MVA Signal efficiency: from test sample (from training sample) + : Name: Method: @B=0.01 @B=0.10 @B=0.30 + : ------------------------------------------------------------------------------------------------------------------- + : MatchNNDataSet matching_mlp : 0.067 (0.067) 0.460 (0.458) 0.828 (0.824) + : ------------------------------------------------------------------------------------------------------------------- + : +Dataset:MatchNNDataSet : Created tree 'TestTree' with 55000 events + : +Dataset:MatchNNDataSet : Created tree 'TrainTree' with 201590 events + : +Factory : Thank you for using TMVA! + : For citation information, please visit: http://tmva.sf.net/citeTMVA.html +Transforming nn_electron_training/result/MatchNNDataSet/weights/TMVAClassification_matching_mlp.class.C ... +Found minimum and maximum values for 6 variables. +Found 3 matrices: + 1. fWeightMatrix0to1 with 7 columns and 8 rows + 2. fWeightMatrix1to2 with 9 columns and 6 rows + 3. fWeightMatrix2to3 with 7 columns and 1 rows diff --git a/parameterisations/losses_train_matching_ghost_mlps.py b/parameterisations/losses_train_matching_ghost_mlps.py new file mode 100644 index 0000000..c82f145 --- /dev/null +++ b/parameterisations/losses_train_matching_ghost_mlps.py @@ -0,0 +1,189 @@ +# flake8: noqaq + +import os +import argparse +import ROOT +from ROOT import TMVA, TList, TTree, TMath + + +def train_matching_ghost_mlp( + input_file: str = "data/tracking_losses_ntuple_B.root", + tree_name: str = "PrDebugTrackingLosses.PrDebugTrackingTool/Tuple", + b_input_file: str = "data/ghost_data_B.root", + b_tree_name: str = "PrMatchNN_3e224c41.PrMCDebugMatchToolNN/MVAInputAndOutput", + only_electrons: bool = True, + n_train_signal: int = 2e3, # 50e3 + n_train_bkg: int = 5e3, # 500e3 + n_test_signal: int = 1e3, + n_test_bkg: int = 2e3, + prepare_data: bool = True, + outdir: str = "nn_trackinglosses_training", +): + """Trains an MLP to classify the match between Velo and Seed track. + + Args: + input_file (str, optional): Defaults to "data/ghost_data.root". + tree_name (str, optional): Defaults to "PrMatchNN.PrMCDebugMatchToolNN/Tuple". + exclude_electrons (bool, optional): Defaults to False. + only_electrons (bool, optional): Signal only of electrons, but bkg of all particles. Defaults to True. + residuals (bool, optional): Signal only of mlp<0.215. Defaults to False. + n_train_signal (int, optional): Number of true matches to train on. Defaults to 200e3. + n_train_bkg (int, optional): Number of fake matches to train on. Defaults to 200e3. + n_test_signal (int, optional): Number of true matches to test on. Defaults to 75e3. + n_test_bkg (int, optional): Number of fake matches to test on. Defaults to 75e3. + prepare_data (bool, optional): Split data into signal and background file. Defaults to False. + """ + # vec = ROOT.std.vector("string")(13) + colList = [ + "mc_chi2", + "mc_teta2", + "mc_distX", + "mc_distY", + "mc_dSlope", + "mc_dSlopeY", + "mc_quality", + "mc_end_velo_qop", + "mc_end_velo_tx", + "mc_end_velo_ty", + "mc_end_t_qop", + "mc_end_t_tx", + "mc_end_t_ty", + ] + # for i in range(13): + # vec[i] = colList[i] + + if prepare_data: + rdf = ROOT.RDataFrame(tree_name, input_file) + rdf_b = ROOT.RDataFrame(b_tree_name, b_input_file) + if only_electrons: + rdf_signal = rdf.Filter( + "mc_quality == -1 && lost == 0 && fromSignal == 1", # electron that is true match but mlp said no match + "Signal is defined as one label (only electrons)", + ) + else: + rdf_signal = rdf.Filter( + "lost == 0 && fromSignal == 1", + "Signal is defined as non-zero label", + ) + rdf_bkg = rdf_b.Filter( + "mc_quality == 0", + "Ghosts are defined as zero label", + ) + + rdf_signal.Snapshot( + "Signal", + outdir + "/" + input_file.strip(".root") + "_matching_signal.root", + colList, + ) + rdf_bkg.Snapshot( + "Bkg", + outdir + "/" + input_file.strip(".root") + "_matching_bkg.root", + ) + + signal_file = ROOT.TFile.Open( + outdir + "/" + input_file.strip(".root") + "_matching_signal.root", + "READ", + ) + signal_tree = signal_file.Get("Signal") + + bkg_file = ROOT.TFile.Open( + outdir + "/" + input_file.strip(".root") + "_matching_bkg.root" + ) + bkg_tree = bkg_file.Get("Bkg") + + os.chdir(outdir + "/result") + output = ROOT.TFile( + "matching_ghost_mlp_training.root", + "RECREATE", + ) + + factory = TMVA.Factory( + "TMVAClassification", + output, + "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification", + ) + factory.SetVerbose(True) + dataloader = TMVA.DataLoader("MatchNNDataSet") + + dataloader.AddVariable("mc_chi2", "F") + dataloader.AddVariable("mc_teta2", "F") + dataloader.AddVariable("mc_distX", "F") + dataloader.AddVariable("mc_distY", "F") + dataloader.AddVariable("mc_dSlope", "F") + dataloader.AddVariable("mc_dSlopeY", "F") + + dataloader.AddSignalTree(signal_tree, 1.0) + dataloader.AddBackgroundTree(bkg_tree, 1.0) + + # these cuts are also applied in the algorithm + preselectionCuts = ROOT.TCut( + "!TMath::IsNaN(mc_chi2) && !TMath::IsNaN(mc_distX) && !TMath::IsNaN(mc_distY) && !TMath::IsNaN(mc_dSlope) && !TMath::IsNaN(mc_dSlopeY) && !TMath::IsNaN(mc_teta2)", + # "mc_chi2<30 && mc_distX<500 && mc_distY<500 && mc_dSlope<2.0 && mc_dSlopeY<0.15", #### ganz raus für elektronen + ) + dataloader.PrepareTrainingAndTestTree( + preselectionCuts, + f"SplitMode=random:V:nTrain_Signal={n_train_signal}:nTrain_Background={n_train_bkg}:nTest_Signal={n_test_signal}:nTest_Background={n_test_bkg}", + # normmode default is EqualNumEvents + ) + + factory.BookMethod( + dataloader, + TMVA.Types.kMLP, + "matching_mlp", + "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:UseRegulator", + ) + factory.TrainAllMethods() + factory.TestAllMethods() + factory.EvaluateAllMethods() + output.Close() + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument( + "--input-file", + type=str, + help="Path to the input file", + required=False, + ) + parser.add_argument( + "--exclude_electrons", + action="store_true", + help="Excludes electrons from training.", + required=False, + ) + parser.add_argument( + "--only_electrons", + action="store_true", + help="Only electrons for signal training.", + required=False, + ) + parser.add_argument( + "--n-train-signal", + type=int, + help="Number of training tracks for signal.", + required=False, + ) + parser.add_argument( + "--n-train-bkg", + type=int, + help="Number of training tracks for bkg.", + required=False, + ) + parser.add_argument( + "--n-test-signal", + type=int, + help="Number of testing tracks for signal.", + required=False, + ) + parser.add_argument( + "--n-test-bkg", + type=int, + help="Number of testing tracks for bkg.", + required=False, + ) + + args = parser.parse_args() + args_dict = {arg: val for arg, val in vars(args).items() if val is not None} + + train_matching_ghost_mlp(**args_dict) diff --git a/parameterisations/notebooks/HougHistogram_old.ipynb b/parameterisations/notebooks/HougHistogram_old.ipynb new file mode 100644 index 0000000..730208e --- /dev/null +++ b/parameterisations/notebooks/HougHistogram_old.ipynb @@ -0,0 +1,434 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from pathlib import Path\n", + "import numpy as np\n", + "\n", + "dataDir = Path('/scratch/guenther/MCParticleData')\n", + "file = 'bsphiphi500.h5'\n", + "zReference = 8520.\n", + "zMagnetParams = [5212.38, 406.609, -1102.35, -498.039]\n", + "xParams = [18.6195, -5.55793]\n", + "xLayers = [0,3,4,7,8,11]\n", + "uvLayers = [1,2,5,6,9,10]\n", + "\n", + "with pd.HDFStore(dataDir/file, mode='r') as eventData:\n", + " tmp = []\n", + " # event loop\n", + " for iEvent in range(0, 500):\n", + " hits = eventData[str(iEvent)]\n", + " tmp.append(hits.copy())\n", + " allHits = pd.concat(tmp, ignore_index=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Hough Histogram Studies\n", + "## Occupancy of the Detector\n", + "* data contains all x hits of 500 events in the range [-3000,3000]mm\n", + "* the first plot shows the coarse distribution of these hits along x\n", + "* the occupancy is higher in the central region than at the edges as expected\n", + "\n", + "## Hough Histogram Binning\n", + "* the idea is to adjust the histogram's bin width along x such that every bin contains the same number of hits on average\n", + "* two approaches have been tested, one of which is shown below\n", + "1. in a **first attempt**, I fitted the (right) flank of the occupancy distribution with a 5th order polynomial to describe the occupancy for most of the range\n", + " - to find regions of equal content, i.e. the desired bins, the culumative distribution must be calculated from which the quantiles (i.e. 500 quantiles for 500 bins) can (in theory) be calculated by $x_{Q}=F^{-1}(p)$ where $p$ is the \"probability\" given by $i_{bin}/N_{Bins}$\n", + " - for polynomials of order higher than 3 this is, however, not analytically doable\n", + " - other functions might be possible, but since there is an easier approach, I didn't look further into this\n", + "2. the **second approach** numerically calculates the quantiles for the full occupancy distribution using `pandas.qcut` function\n", + " - this function directly gives the bin edges containing an equal amount of x hits\n", + " - the bin edges are then enumerated and this enumeration is plotted against the edges, which is shown for different number of bins below\n", + " - the resulting distribution is fitted with $f(x)=p_0+\\frac{p_1\\cdot x}{1+|p_2\\cdot x|}$, which is chosen because it's computionally faster than e.g. a Sigmoid\n", + " - the fitted function gives a direct mapping $x\\to i_{Bin}$ when downcasted to integer values\n", + " - the resulting minimal and maximal width of the bins is shown in the table and the last plot below for different total numbers of bins\n", + " - 1000 bins have minimal bin width of 1.625mm which is of the order of the Hough Projection's resolution for high momentum tracks\n", + " - the parameters for this scenario are $p_0=505.675291$, $p_1=0.453316164$ and $p_2=5.57027462\\times 10^{-4}$\n", + " - to avoid negative bin numbers arising from the imperfection of the parametrisation, the parameter $p_0$ can be shifted by +2.5 for 1000 bins\n", + " - also because of the imperfection of the parametrisation, the real number of bins later on will be slightly higher, which is also shown in the table\n", + " - the inverse. i.e. the mapping $i_{bin}\\to x$ is $x=\\frac{p_0-i_{Bin}}{p_0\\cdot p_2-p_1-p_2\\cdot i_{Bin}}$ for $i\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NBINSnBinsRealminBinWidthmaxBinWidth
06006102.75072.399902
17007122.37561.944386
28008132.00054.544922
39009161.75049.346866
4100010171.62544.815297
5110011191.37540.286656
6120012211.37536.824951
7130013231.25034.324951
8140014241.12531.924148
9150015271.00030.625244
\n", + "" + ], + "text/plain": [ + " NBINS nBinsReal minBinWidth maxBinWidth\n", + "0 600 610 2.750 72.399902\n", + "1 700 712 2.375 61.944386\n", + "2 800 813 2.000 54.544922\n", + "3 900 916 1.750 49.346866\n", + "4 1000 1017 1.625 44.815297\n", + "5 1100 1119 1.375 40.286656\n", + "6 1200 1221 1.375 36.824951\n", + "7 1300 1323 1.250 34.324951\n", + "8 1400 1424 1.125 31.924148\n", + "9 1500 1527 1.000 30.625244" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABWoAAAI/CAYAAADuquC4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOydeVxV1fr/34tRURQnFEFFRJkP4KyVY5rZpGapaVnZeBu++SvLexvvLa9Ntznt3gbTMq2slNSyUiszzRHNEQeQUQQEmYfDeX5/HM6OIxxERAFd79eLF7DPWnuvtc/en/2sZ6/1PEpE0Gg0Go1Go9FoNBqNRqPRaDQaTcPh1NAN0Gg0Go1Go9FoNBqNRqPRaDSaSx3tqNVoNBqNRqPRaDQajUaj0Wg0mgZGO2o1Go1Go9FoNBqNRqPRaDQajaaB0Y5ajUaj0Wg0Go1Go9FoNBqNRqNpYLSjVqPRaDQajUaj0Wg0Go1Go9FoGhjtqNVoNBqNRqPRaDQajUaj0Wg0mgbGpaEbcCbat28v/v7+Dd0MjUZzGtu3b88UkQ4N3Y6zRWuKRtM40Zqi0WjqE60pGo2mPtGaotFo6pOaNKXRO2r9/f3Ztm1bQzdDo9GchlLqWEO3oS5oTdFoGidaUzQaTX2iNUWj0dQnWlM0Gk19UpOm6NAHGo1Go9FoNBqNRqPRaDQajUbTwGhHrUaj0Wg0Go1Go9FoNBqNRqPRNDDaUavRaDQajUaj0Wg0Go1Go9FoNA1Mo49RWx1lZWUkJydTXFzc0E3RaOqdZs2a4efnh6ura0M35ZJBa4rmUkRrzflDa4rmYkZrx4VHa4rmUkHry4VBa4rmUqGpakqTdNQmJyfj6emJv78/SqmGbo5GU2+ICFlZWSQnJ9O9e/eGbs4lg9YUzaWG1przi9YUzcWK1o6GQWuK5lJA68uFQ2uK5lKgKWtKkwx9UFxcTLt27bSoaC46lFK0a9dOv928wGhN0VxqaK05v2hN0VysaO1oGLSmaC4FtL5cOLSmaC4FmrKmNElHLaBFRXPRoq/thkGfd82lhr7mzy/6/GouVvS13TDo8665FNDX+YVDn2vNpUBTvc6brKO2MfHcc8/x6quvOvx8+fLl7Nu37wK2SKPRNGW0pmg0mvpEa4pGo6lPtKZoNJr6RuuKRvMX2lF7AdCiomkSZB2BuB8auhWaWqA1RdMkyEmC/SsbuhWaWqA1RdMkyEuHPV83dCs0tUBriqZJUJAFu79o6FZoaonWFU2jp/gUxH4GIue8K+2orSNz5swhKCiIK6+8koMHDwLw/vvv069fPyIjI7nxxhspLCzk999/JyYmhlmzZhEVFcWRI0eqLafRNAjlZbBvBSy6Ad7uDTEPgaW8oVt1SaI1RXNRYLHA4Z9gyRR40wTf3AdlRQ3dqksSrSmaiwIRiP8VvpgOr4fC13dbnSuaC47WFM1FgQgkboav74HXQqyacjK+oVt1yaJ1RdPkEYHk7bDiAfhPMCy/H1J3nPNuz8lRq5TyUkotU0odUErtV0oNUkq1VUr9qJQ6VPG7TaXyf1dKHVZKHVRKXXXOrT8Lth/L5t31h9l+LPvc97V9O0uXLmXnzp18/fXXbN26FYAJEyawdetWdu3aRUhICB9++CGDBw/m+uuv55VXXiE2NpYePXpUW06juaDkpsK6F+D1MPjiNuts2hFPwb2/gJNzgzRJKRWklIqt9JOrlHpEa4rWFE0ToPAk/P629YXPpzdC0ha4fCb87Xdwbd5gzVJKzVRK7VVK7VFKLVFKNdOaojVF0wQoyoZN8+CdfrDwOoj/BQbcBw9sgRbtGrp1TQKtKRpNJYpPwZb3Yf5g+OgqOPgd9JkO92+Ctuc/G7xS6iOl1Aml1J5K287aHlFK9VFK/Vnx2VvqAgbgrE9NAa0rmiZOaSFs/xj+ewV8MAL2fAMRN8E9P4Nvn3Pevcs51n8T+F5EJiql3AAP4B/AWhF5USk1G5gNPKGUCgUmA2FAZ+AnpVQvETnv0/e2H8tm6gebKTVbcHNxYvFdA+nTrc2ZKzpgw4YNjB8/Hg8PDwCuv/56APbs2cNTTz1FTk4O+fn5XHVV9WO82pbTaOqd5O2weR7sW26dOdvrKuh7JwRe2WAOWhsichCIAlBKOQMpwDdYNURritYUTWMkZTts/RD2fAXmYug6yPrSJ+Q6cHFv0KYppXyBh4FQESlSSn2BVTNC0ZqiNUXTODn+J2x+r0JTisCvH4x7D8LGNehLn6aG1hSNpoLMQ7B5PuxaAmWF4BMJ170F4TeCe8sL2ZKPgXeARZW21WWMMx+4B9gMrAbGAN+d78bXt6aA1hVNEyUnEbZ+ANsXQnEOdIyAa16zOmmbtaq3w9TZUauUagUMAW4HEJFSoFQpdQMwrKLYQuBn4AngBmCpiJQA8Uqpw0B/YFNd21BbNh/NotRswSJQZraw+WjWOQtLdS+vbr/9dpYvX05kZCQff/wxP//8c7V1a1tOo6kXystgf4zVSEneCu6toP+90P9uuzfI249ls/loFgMD2p3z/VEPjASOiMgxrSlaUzSNDEu5dSbK729D0mZwawlRU6HfDOgYZhRrJJriAjRXSpVhfZmcCvwdrSlaUzSNB4sFDv8Im96xhjlw9YDISdB3BviYGrp1TRKtKZpLGlvIlE3vwqE14OxmdaL0uwt8ezdQk+RXpZT/aZvPaoyjlEoAWonIJgCl1CJgHBfAUXs+NAW0rmiaCCKQ8Bv88R4cXA0o66SUAfdB14FwHia2n8uM2gAgA1iglIoEtgP/B3QUkTQAEUlTSnlXlPfF+ubHRnLFtvPOwIB2uLk4UWa24OrixMCAc1syNWTIEG6//XZmz56N2Wzm22+/5d577yUvLw8fHx/KyspYvHgxvr7W7nl6epKXl2fUd1ROo6lXSvJg20fWmSl5qdCmO1z9MkTdAu6eVifKrsO08XBjT+oplm1Pxlxef29Jz5HJwJKKv7WmaE3RNAbKiqwB8je9CyePgFdXGPMSO9uN5ffkUtokuJG9r/FoioikKKVeBRKBIuAHEflBKaU1RWuKpjFQWgi7l1pDHGQdAs/OcOU/oc90tp+AzQeyaJOYyJ7UUyggrHNrsgtLG/rlT5NAa4rmksRcAn8us64eTN8DHu1h6Gzri+SW3mw/ls1X3/xp6IlNWyb09msoTTlbe6Ss4u/Tt5936ltTQOuKpglQboa9X8PGN62a0rwtXPaIVVNa+1n9KT8fMcY+mXkldPB0rxdNORdHrQvQG3hIRP5QSr2Jdbq+I6pzM1ebDk0pdQ/WKf107dr1HJpopU+3Niy+a2C9zezp3bs3kyZNIioqim7dunHFFVcA8PzzzzNgwAC6detGRESEISSTJ0/m7rvv5q233mLZsmUOy2k09UJBpvVtz5b/QfEpkr36crjPP9jbYgBtaEb27+m08cjmXyv3UlJmQbDenLabsT7fktaFijAq12Od9VZj0Wq2aU3RmqKpbwoyrXHdtr4PhVmke4YRF/Uqf7a6gtyTwgcxeyi3iJ2WNAZNqYj1dgPQHcgBvlRKTaupSjXbtKZoTdHUN4UnrTbKH/+FopMkNw9iY9dnsYTcwMliIW/9cT74Ld7Qlco4KRrLC+VGjdYUzSVFca51KfLm+VBwgiKvXqz2m83uNqMI8vBmz4/pZOYlsu7gCczlVR/rX25PZsndjUpTHNkjF42dAlpXNI2Y0kLY+al19eCpRIq8erLabzbrXIbgldeKsAMW1h/cxroDJ7BUY6vUh6YokWrv7TNXVKoTsFlE/Cv+vwKrozYQGFbxVsgH+FlEgpRSfwcQkbkV5dcAz9mm7juib9++sm3bNrtt+/fvJyQkpE7t1miaAnW5xnfv3Uv++tfom/UtblLC3tZDeCbrKnaYu9s5TpwUOCmFRQTLabe/AtxdazcAUkptF5G+Z9XIWlAR6uABERld8f9BtKZoNOeFmq793fsPIL+9QVja17hYStjlMYiXckezydwLQdk5Yx3RkJqilLoJGCMiMyr+vw0YiDW0itYUjeYcqMs1vmv/Qco3vkNE2jJcywvZ5TGIubmj2Wzuhc3/UBtdcVbw/0YH8cDwwBrLnS875XyjNUVzqVPb6z324FFOrnuTARnLaGHJJ86zPzs6T+XJ3e0pl9ovRVbAY1edf02pCH2wUkTCK/4/qzEOkACsF5Hgiu1TKurfW9NxtaZoLnVqrSlx8WSse4eBJ77E03KKYx4RbPW9jdl7fDCLU62PVx+aUucZtSJyXCmVpJQKqkgCNBLYV/EzHXix4veKiioxwGdKqdewBsXuCWyp6/E1Go2VP/fsJmPV81xRuBaAFZbLmG++jqPpvnaDHdvfFgFEcHJSIIIFq/PWxUlxU98uDbn8x8YU/gp7AFbt0Jqi0Vwgdu/bR+b3L3HZqVU4U8435ZfzXvl1HCm2X1JWnTOl8guhRqApicBApZQH1tAHI4FtQAFaUzSaC8buvXtJXTWXYQXf44qZlZZBzDNfz8HiqrO8zuSkdVLU27JbjUbTNNm1/yCHl/+bMcXf0UKV8H15P94x38Ce4gBrYMazpAE15azGOCJSrpTKU0oNBP4AbgPevvDN1mguLmIPHiU+Zi6j81cQpUr4qTya98zXsa04GE6e/f7qQ1POJfQBwEPA4oqlykeBOwAn4Aul1Aysg6SbAERkb0XG5X2AGeuMufOeSVmjuVjZvW8fx799nuGFa+iFE4vLR/K++RpS6FBt+coOFDcXJ565NozswlLaeLg1mphvFQ6VUUDlN8MvojVFoznv7N67h7SV/2ZY4RpCEJaVD2Fe+fUkScdqy1cOc+DspLjr8u54NndtNJpSEZZpGbADq0bsBP4HtERrikZz3tm1/yAp385hZMEqghG+Kh/Ce+XXcUw6OaxTna7klph1jFqNRsOug4dJWvECowpWEo6ZGMtg5plv4JD41aq+i7NiRJA3HTzdL3iMWqXUEqyJw9orpZKBZ6nbGOd+4GOgOdYkYuc9kZhGc7ESG5fA4RUvMib/G0yUsNIykHfM44iTLrXeh7OT4u4KW6WxxKhFRGKB6qbqjnRQfg4w51yOqdFc8uSfYOsnT2M6/hXBWFhaPpx3zONIp61dscoz2myDm8biQHGEiBQC7U7bloXWFI3mvLHr4GEyVr3AkFMxBAPLyocyr/wGkqXqSx8XZ8WkpqUpz2IdDFWmBK0pGs35o/Akmz55hsjULwijjC/Kh/KOeTyptK9S9HTHSVPQFY1Gc4EpymHNB09xeeYXhFPK1+VX8Hb5eBJreJHspGBkSEeGBXk3hqRhiMgUBx+dlT0iItuA8HpsmkZzyREbl0DcipcZk/81UaqIlZaBvGme4PClj01T+nRrQ8+OnhfkRc+5zqjVaDQXiuJTpK1+kTa7P6S3lPJV+RDeKh9PsnjbFevv34Zx0X56kKPRaGrGUk5xXjY9V40nnBK+KB/G29U4U5ydYGRwx3p7Q6zRaC5SinP5c9m/6X74YwZIMcstl/GmeUKVGbROCq4M0Zqi0WjOQGkBscteIiDuA66igG8tA3ndPJGj0tmumH87D3p19LR74aPHQBqNpgplxaxb9AJ9Ej8kShXynaUfb5pv5IBUDcXU3/8vp2xDaIp21Go0jZ1yM8d+mofXH6/iYzlFTPkgXjdPJF587Ir5eTXjb8N7csuAc8/sqdFoLmLEQkluBs4F6TQrz2ODJYJXzTdzRHyrFB0d2pF7h/bQgx2NRuOYcjNbvn6DHnvfIoJTrC7vz+vmidXOTOnv34Ynrg7RmqLRaBwjQsKP/8Vz41yiyObH8t68Zr6J/dKtStFxUZ15Y3J0AzRSo9E0GUT4/et5dNv9GiPIYL0lklfNk9gr/lWKhvp48vy4iAa3U7SjVqNprIhwaOPXNF//LN3Kk/jDEswLZbP4UwLsimkHrUajqRUiFOdn45SXijtl5EszTogX95fNrFJUO1M0Gk1tWL9yCV23zaE/VjvljrLH2C09qpTTmqLRaGpDcX4O5tzj+G98nG2WXtxd9n/skF5VymlN0Wg0taE4P4eyU8cZvPvv7LV0Y5b5H/xuqRo9xNvTjUeuDGo0PhWnhm7AxUZ8fDwDBgygZ8+eTJo0idLS0lrVKy4upn///kRGRhIWFsazz/4VUu/kyZOMGjWKnj17MmrUKLKzswHYsmULUVFRREVFERkZyTfffFPjMV599VWUUmRmZgKQlZXF8OHDadmyJQ8++GC1da6//nrCw/+6kH/99Vd69+6Ni4sLy5YtsyubmJjI6NGjCQkJITQ0lISEhBrPyalTp7juuuuMPi9YsACAgwcPGv2KioqiVatWvPHGGwA8/fTTmEwmoqKiGD16NKmpqQAkJCTQvHlzo859991ntGvMmDHGMe677z7Ky62x2EtKSpg0aRKBgYEMGDDAaC/A448/TlhYGCEhITz88MOInCkPcT1TXkb866Po+dOdlJaVcU/pTCaVPl3FSTsuqjO/zR7ZaARFU/+cD0157rnn8PX1Ne6X1atXA7XXlF27djFo0CAiIiK47rrryM3NBaCsrIzp06cTERFBSEgIc+fONeps376diIgIAgMD7e6pmjQFIDc3F19fXzuNOltNAcjJyWHixIkEBwcTEhLCpk2bAIiNjWXgwIFERUXRt29ftmzZAtSsKcOGDSMoKMj47MSJEwAcO3aMkSNHYjKZGDZsGMnJyUadJ554gvDwcMLDw/n888/P+P3VN0WFBRQej6NZ3jEsAvGWjhwVH0pxtSs3OrQjX90/mC/uG6wHPxcpddUUG+Xl5URHR3Pttdca2xzZKTYSExNp2bIlr776arX7dKRJNdV/8skn6dKlCy1btrQr6+jZvn79ejvbolmzZixfvhyA22+/ne7duxufxcbGAvDzzz/TunVrY/u//vUv4zivv/46YWFhhIeHM2XKFIqLi43P3n77bYKCgggLC+Pxxx8HatZXR32pSR8bg52y/5UrGb7tPpwtpdxb+giTSp+u4qQN9fHUmnKRcz40xZEm1PRsrsyXX35JWFgYTk5ObNu2ze6zuXPnEhgYSFBQEGvWrDG2f/7555hMJrv7FuC1114jNDQUk8nEyJEjOXbsmN3+qrNTRIQnn3ySXr16ERISwltvvWVsf/jhhwkMDMRkMrFjxw6gZpvN0dinJpvL0djn448/pkOHDsb5++CDD+rcl/qmqLCAgrQ4muXGg1j4W+nDTCx9toqT1r+dh9aUi5xz0RR/f38iIiIMu96GIzultpoC1T/bFy9ebGdbODk5GTaEo/FCTZriaLzwzjvvEBgYaOfLAThw4ACDBg3C3d29WhurOn11NPYpLS3ljjvuICIigsjISH7++ecq+zvdN+RIU44dO0afPn2IiooiLCyM9957z+F5PW+YSyg6btUUhYWZpfdzbemcKk5ab083/j0+gi1PjmpcPhURadQ/ffr0kdPZt29flW2NhZtuukmWLFkiIiL33nuvzJs3r1b1LBaL5OXliYhIaWmp9O/fXzZt2iQiIrNmzZK5c+eKiMjcuXPl8ccfFxGRgoICKSsrExGR1NRU6dChg/H/6SQmJsro0aOla9eukpGRISIi+fn5smHDBpk/f7488MADVep89dVXMmXKFAkLCzO2xcfHy65du+TWW2+VL7/80q780KFD5YcffhARkby8PCkoKKjxnMyZM8foy4kTJ6RNmzZSUlJit0+z2SwdO3aUhIQEERE5deqU8dmbb74p9957r9Guyu2sjK2OxWKRCRMmGG159913jfpLliyRm2++WURENm7cKIMHDxaz2Sxms1kGDhwo69evr3bf9U65WUqzEmXv72vk5DOd5dl/PCiBTyyXbk+stPu5bO5PsnjzsQvTJgcA26QRaMTZ/mhNEXn22WfllVdeqVKntprSt29f+fnnn0VE5MMPP5SnnnpKREQWL14skyZNMvbVrVs3iY+PFxGRfv36ye+//y4Wi0XGjBkjq1evFpGaNUVE5OGHH5YpU6bYaVRdNOW2226T999/X0RESkpKJDs7W0RERo0aZbRl1apVMnToUKNdjjRl6NChsnXr1irbJ06cKB9//LGIiKxdu1amTZsmIiIrV66UK6+8UsrKyiQ/P1/69Oljp2XnlfIyyU+PF0vyDjEnx0pK8jHZnZQtuyp+fti4Xbo9sVKufuMX2ZZw8sK0yQFaUy4MddUUG//5z39kypQpcs011xjbHNkpNiZMmCATJ06sVndEHGtSTfU3bdokqamp0qJFC7uyjp7tlcnKypI2bdoYdsr06dOr1Z/169fb9dNGcnKy+Pv7S2FhoYhYz+mCBQtERGTdunUycuRIKS4uFhGR9PR0EalZXx31xZE+NrSdUpiRIHt/XyM5z3SSf/3jfun5xDdV7JR+L/yg7RStKbWiOk1xpAk1PZsr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TtFoNOeOCDnpx2hryb5kNcXpzEU0Z8M777xDYGAgSikj019t+f777wkKCiIwMNDItHk6ixcvxmQyYTKZGDx4MLt27QLg4MGDREVFGT+tWrXijTfeAODLL78kLCwMJycnKsenKS0t5Y477iAiIoLIyEgje19lrr/+eiNDIcDHH39Mhw4djON88MEHxmdjxozBy8uLa6+91m4ft99+O927dzfqxMbGAtYMgOPHj8dkMtG/f/8qb9TKy8uJjo62219sbCwDBw4kKiqKvn37smXLFsCaTXH69OlEREQQEhLC3LlzjTrDhg0jKCjIOL4tq+trr71GaGgoJpOJkSNHcuzYMaNOYmIio0ePJiQkhNDQUBISEgBr8r0nn3ySXr16ERISwltvvWXX5sKiYgrTDtKyLIuT4skR6WwnKs1dnenRoaV20mpqzfnWlBUrVmAymYx76rfffjM+u/POO/H29rbTAIBJkyYZ95O/vz9RUVGANUNonz59iIiIoE+fPkZ2VIDPP/8ck8lEWFgYjz/+uLH9119/pXfv3ri4uBgZXsGaFb1Pnz5ERUURFhbGe++9Z3w2depUgoKCCA8P584776SsrAyAn3/+mdatWxtt+9e//lWrc/H2228TFBRUpW27d+9m0KBBhIWFERERQXFxcY19ee+994iIiCAqKorLL7+cffv21bkvNgqLiihKO0BL80kypVUVTXF1dsLXq/lFbaho6peG1JScnBwmTpxIcHAwISEhRqbnWbNmERwcjMlkYvz48Ub2c3B8H44ZM4bIyEjCwsK47777jKzNjjTFVqc6O2XdunX07t2b8PBwpk+fjtlsBuCVV14x9CQ8PBxnZ2dOnjxJcXEx/fv3N47/7LPPVjkPr776qt05zsrKYvjw4bRs2ZIHH3zQruz27duJiIggMDCQhx9+GFv+CEc2V2xsrHFOTCYTn3/+ubGv+Ph4BgwYQM+ePZk0aRKlpaV2x9qwYQPOLq6sWfFlhab42mmKs5PC16s5PTt6aidtNSilZiql9iql9iilliilmiml2iqlflRKHar43aZS+b8rpQ4rpQ4qpa5qyLafL863ptjYunUrzs7Odve1o/qO7BRHY5+8vDy7cVT79u155JFHAJg5c6axvVevXnh5eRnHcXZ2Nj67/vrrje2O7sMDBw4waNAg3N3defXVV+369/rrrxMWFkZ4eDhTpkwxtO7kyZOMGjWKnj17MmrUKLKzswFrfM/mzZsbx7/vvvsAa+b2a665huDgYMLCwpg9e7ZxjMTERIYPH050dDQmk4nVq1cDNWuKjYceeoiWLf+yNf7Sx0jCQoJo6xvIoZMWDp9mp4B1goq2UzS1pSE1xd/f37Dl+/b9K3To008/bdg2o0ePJjU1FYAtW7YY92BkZCTffPONUefJJ5+kS5cudveNjS+++ILQ0FDCwsK45ZZbjO2O7JQz+SBO70td7BSAuXPnEhgYSFBQEGvWrDG2O/Kn1KSPjvwpjmwuG4VFxRSkHcDLkk1WNf4UuEQ0xVGWscby01izFDpix44dEh8fL926dZOMjIxa1zObzRIQECBHjhyRkpISMZlMsnfv3irlNm7caGQrX716tfTv37/afXXs2NHI1Ldv3z45cOCADB061MhcKCLyzjvvyO233y4iIunp6dK7d2+7TMhfffWVTJkyxS6z3+mZQCvz008/SUxMjF1WQRGR6dOny5dfflml/GOPPSbPPfeciIjs379fRowYYff5f/7zH5kyZYrd/kaNGmVkaF21apUMHTpUREQWL14skyZNEhGRgoIC6datm8THx4uIVOm3jXXr1klBQYGIiMybN09uvvlm47OhQ4fKDz/8ICLWrKq2ch999JHceuutxnlKT0836uTkZEtJ8i4pT94picmJVTIQHssqqPa8VUdjvsZtoDOfXhDOt6bk5eWJxWIREWvW4aCgIOOzX375RbZv326nAafz//7f/zOyE+/YsUNSUlJEROTPP/+Uzp07i4g102qXLl3kxIkTIiJy2223yU8//SQi1uyhu3btkltvvdVOJ0pKSowsr3l5edKtWzdj36tWrRKLxSIWi0UmT54s8+bNE5GqWU1rcy7WrVsnI0eONI5lu6fLysokIiLCyG6cmZkpZrO5xr5UzrK6YsUKueqqq+rcFxGRzKxMKU3eJebknZKQlHxOmuKIxnTta025MDSkptx2223y/vvvi4j1vsjOzhYRkTVr1hhZyR9//HF5/PHHRcTxfSjy1/1msVhkwoQJRpZ2R5oiUr2dUl5eLn5+fnLw4EEREXn66aflgw8+qNKvmJgYGT58uHHMvLw8EREpLS2V/v37y6ZNm4yyiYmJMnr0aOnatatxjvPz82XDhg0yf/78KnZUv3795PfffxeLxSJjxowx7BxH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1atXZ6rvr7/+wuv1MmzYsFDb0fpTfvzxRxo2bIjH48mUZ+kOP045Vqakyyof169fz+WXX079+vVp0KBBpvOi/Hbg4EH2bvqbcvvXEoufDbYyq20N9lEi034lYz38t0sjFv+nffRlirU2qr+aN29uD7ds2bIj2qLF9ddfb7///ntrrbX33nuv/eijj7L92tq1a9vt27cf0f7iiy/aN99884h2n89nGzVqZBcsWGCttXbHjh3W7/cfsd+4ceOsz+ez1lrbu3dv27t3b2uttfv37w+1b9q0yVapUiX0PKNmzZrZP/74w1pr7d133x36My1dutTWrl3bWmvtzp07bd26de3OnTvtrl27bN26de2uXbtC7/HXX3/ZW2+91ZYqVSrUNn369NA+Y8aMsS1btrTWWpuUlGTr1KljDxw4YK0NfKZfffXVMT+LDz74wN5+++3WWmu3bt1qmzVrZh3HsTt27LC1atWy27Zts9Za2717dztx4kRrrbVfffWVffDBB494r4jx+2zKln+smzTPpiUttOs3bLATps+1tZ8anenr4jcm27nrdh3//fIZMNdGQUbk9KsoZUr37t3t559/bq21NjU11SYnJ1trrX3yySfta6+9Zq219rXXXgtlQnYzpV27dnbMmDHWWmt//fVXe/HFF1trA5nQuHFje+jQIbtmzRpbr1690Osvvvhi+9dff2VZ5969e+1FF11kzz333NA+qamp9tChQ9Zaa1NSUmzt2rXtxo0bj/mZ/P777/aqq6464v1d17UpKSnWWmvT0tJsy5Yt7cyZM6214eXj0f4sH374ob333nuttdZ+//339oYbbghtmzhxoh01alSW9eUbx2f3bllj3aR51pe0wG5IWm8XbUi246cnZMqU+Gd+ta/9Gvl/A8qUgpEfmXK0/5szWrRoka1bt26W2/bs2RN6/N5774X+HR3r9eecc46dMWOGdV3Xtm/fPpRJkydPtvv377fWWvvRRx+F/h2uXLnS/v3339Zaazdu3GhPPvnkUP2//vqrdV3Xuq5ru3XrFvpMtm7daufMmWOfeeaZTH++TZs22YSEBGttIL/i4+Pt0qVLrbVHz9d01157re3atWum95s5c6bdtGlTpmOkdFnlo7U2y33zneO3KVvXWSeYKRuTEu2irF7rZwAA1itJREFUDcl2YYav8dMT7GlPK1Ny81WUMiWd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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from scipy.optimize import curve_fit\n", + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "data = allHits.loc[(allHits['pc'].isin(xLayers)) & (allHits['x']<=3200) & (allHits['x']>=-3200)]['x']\n", + "\n", + "urax = data.plot.hist(bins=25, title='Integrated SciFi Hit Distribution (X Layers)', figsize=(12,10), fontsize=20, edgecolor='black')\n", + "urax.set_xlabel('x [mm]', fontsize=24)\n", + "urax.set_ylabel('Count', fontsize=24)\n", + "urax.title.set_size(24)\n", + "#out_0,equal_bins_0 = pd.qcut(data, q=25, retbins=True)\n", + "#urax0 = data.plot.hist(bins=equal_bins_0, title='Integrated SciFi Hit Distribution (X Layers)', figsize=(12,10), fontsize=20, edgecolor='black')\n", + "#urax0.set_xlabel('x [mm]', fontsize=24)\n", + "#urax0.set_ylabel('Count', fontsize=24)\n", + "#urax0.title.set_size(24)\n", + "def fit3(x, p0, p1, p2, p3, p4, p5, p6, p7):\n", + " return p0 + p1 * x + p2 * x**2 + p3 * x**3 + p4 * x**4 + p5 * x**5 + p6 * x**6 + p7 * x**7\n", + "\n", + "def fitFastSigmoid(x, p0, p1, p2 ):\n", + " return p0 + p1 * x / (1 + abs(x * p2) ) \n", + "\n", + "def FastSigmoidInverse(y, p0, p1, p2):\n", + " return (y - p0) / (p0 * p2 + p1 - p2 * y)#(p0 - y) / (p0 * p2 - p1 - p2 * y)\n", + "\n", + "NBINS=[600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500]\n", + "SHIFTS = [1.1, 1.5, 1.8, 2.2, 5.5, 4.9, 3.2, 3.6, 3.9, 4.2]\n", + "minBinWidths = []\n", + "maxBinWidths = []\n", + "nBinsReal = []\n", + "fig, axes = plt.subplots(nrows=2, ncols=5, figsize=(24, 10))\n", + "for i, BINS in enumerate(NBINS):\n", + " out,equal_bins = pd.qcut(data, q=BINS, retbins=True)\n", + " binWidths = np.array([ abs(equal_bins[i] - equal_bins[i+1]) for i in range(len(equal_bins)-1)])\n", + " minBinWidths.append( binWidths.min() )\n", + " maxBinWidths.append( binWidths.max() )\n", + " #equal_bincenters = np.array([0.5 * ( equal_bins[i] + equal_bins[i+1] ) for i in range(len(equal_bins)-1)] ) \n", + " popt, pcov = curve_fit( fitFastSigmoid, xdata=equal_bins[:-1], ydata=np.arange(0, BINS) )\n", + " if i<5:\n", + " axes[0,i].plot(equal_bins[:-1], np.arange(0, BINS), '.', label='data')\n", + " axes[0,i].plot(equal_bins[:-1], fitFastSigmoid(equal_bins[:-1], *popt), label=f'p0={popt[0]}\\np1={popt[1]}\\np2={popt[2]}\\n')\n", + " axes[0,i].legend()\n", + " else:\n", + " axes[1,i-5].plot(equal_bins[:-1], np.arange(0, BINS), '.', label='data')\n", + " axes[1,i-5].plot(equal_bins[:-1], fitFastSigmoid(equal_bins[:-1], *popt), label=f'p0={popt[0]}\\np1={popt[1]}\\np2={popt[2]}\\n')\n", + " axes[1,i-5].legend()\n", + " nBinsReal.append(abs(int(fitFastSigmoid(-3000, popt[0], popt[1], popt[2])) - int(fitFastSigmoid(3000, popt[0], popt[1], popt[2]))))\n", + " ###############33\n", + " # SHIFT A BIT UPWARDS TO AVOID NEGATIVE INDICES p0+2.5\n", + " ################################3#\n", + " shift = SHIFTS[i]\n", + " print(f'BINS={BINS}')\n", + " print(f'shift={shift}')\n", + " print(popt)\n", + " print(f'at -3000 = {int(fitFastSigmoid(-3000., popt[0]+shift, popt[1], popt[2]))}')\n", + " print(f'at 3000 = {int(fitFastSigmoid(3000., popt[0]+shift, popt[1], popt[2]))}')\n", + " print(f'at -3000 = {fitFastSigmoid(-3000., popt[0]+shift, popt[1], popt[2])}')\n", + " print(f'at 3000 = {fitFastSigmoid(3000., popt[0]+shift, popt[1], popt[2])}')\n", + " #print(f'inv at 0 = {FastSigmoidInverse(506, popt[0]+shift, popt[1], popt[2])}')\n", + " #print(f'inv at 1016 = {FastSigmoidInverse(1016, popt[0]+shift, popt[1], popt[2])}')\n", + " print()\n", + "binData = pd.DataFrame({'NBINS':NBINS, 'nBinsReal': nBinsReal,'minBinWidth':minBinWidths, 'maxBinWidth':maxBinWidths})\n", + "ax = binData.plot(x='NBINS', y=['minBinWidth', 'maxBinWidth'], logy=True)\n", + "binData\n", + "#out,equal_bins = pd.qcut(data, q=1000, retbins=True)\n", + "#fig, axis = plt.subplots(figsize=(12,10))\n", + "#axis.set_title('Mapping Bin Number to x Position', fontsize=24)\n", + "#axis.plot(equal_bins[:-1], np.arange(0,1000), '.' )\n", + "#axis.set_xlabel('x [mm]', fontsize=24)\n", + "#axis.set_ylabel('Bin Number', fontsize=24)\n", + "#axis.tick_params(axis='both', which='major', labelsize=20)\n", + "#axis.tick_params(axis='both', which='minor', labelsize=16)\n", + "#popt, pcov = curve_fit( fitFastSigmoid, xdata=equal_bins[:-1], ydata=np.arange(0, 1000) )\n", + "#axis.plot(equal_bins[:-1], fitFastSigmoid(equal_bins[:-1], *popt), label=f'p0={popt[0]}\\np1={popt[1]}\\np2={popt[2]}\\n', color='red', markersize=24)\n", + "#axis.legend(fontsize=20)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.6 (conda)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + }, + "vscode": { + "interpreter": { + "hash": "a2eff8b4da8b8eebf5ee2e5f811f31a557e0a202b4d2f04f849b065340a6eda6" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/parameterisations/notebooks/bend_y_params.ipynb b/parameterisations/notebooks/bend_y_params.ipynb new file mode 100644 index 0000000..d0c6616 --- /dev/null +++ b/parameterisations/notebooks/bend_y_params.ipynb @@ -0,0 +1,173 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import uproot\n", + "import awkward as ak\n", + "import numpy as np\n", + "input_tree = uproot.open({\"/work/guenther/reco_tuner/data/param_data_selected.root\": \"Selected\"})\n", + "array = input_tree.arrays()\n", + "array[\"dSlope_xEndT\"] = array[\"tx_l11\"] - array[\"tx\"]\n", + "array[\"dSlope_yEndT\"] = array[\"ty_l11\"] - array[\"ty\"]\n", + "array[\"dSlope_xEndT_abs\"] = abs(array[\"dSlope_xEndT\"])\n", + "array[\"dSlope_yEndT_abs\"] = abs(array[\"dSlope_yEndT\"])\n", + "array[\"yStraightEndT\"] = array[\"y\"] + array[\"ty\"] * ( 9410. - array[\"z\"])\n", + "array[\"yDiffEndT\"] = (array[\"y_l11\"] + array[\"ty_l11\"] * ( 9410. - array[\"z_l11\"])) - array[\"yStraightEndT\"]\n", + "\n", + "def format_array(name, coef):\n", + " coef = [str(c)+\"f\" for c in coef if c != 0.0]\n", + " code = f\"constexpr std::array {name}\"\n", + " code += \"{\" + \", \".join(list(coef)) +\"};\"\n", + " return code" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['dSlope_yEndT' 'ty dSlope_yEndT_abs' 'ty tx dSlope_xEndT'\n", + " 'ty dSlope_xEndT^2' 'ty dSlope_yEndT^2' 'tx^2 dSlope_yEndT'\n", + " 'ty tx^2 dSlope_xEndT_abs' 'ty^3 tx dSlope_xEndT']\n", + "intercept= 0.0\n", + "coef= {}\n", + "r2 score= 0.9971571295750978\n", + "RMSE = 2.422206064647647\n", + "straight RMSE = 45.67726454181064\n", + "constexpr std::array y_xEndT_diff{4039.5218935644916f, 1463.501458069602f, 2210.102099471291f, 1537.0718454152473f, -411.54564619803864f, 2594.7244053238287f, -1030.7643414023526f, 14904.842115636024f};\n" + ] + } + ], + "source": [ + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.linear_model import LinearRegression, Lasso, Ridge\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.pipeline import Pipeline\n", + "from sklearn.metrics import mean_squared_error\n", + "\n", + "features = [\n", + " \"ty\", \n", + " \"tx\",\n", + " \"dSlope_xEndT\",\n", + " \"dSlope_yEndT\",\n", + " \"dSlope_xEndT_abs\",\n", + " \"dSlope_yEndT_abs\",\n", + "]\n", + "target_feat = \"yDiffEndT\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=6, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train )\n", + "X_test_model = poly.fit_transform( X_test )\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "keep = [\n", + " #'dSlope_xEndT',\n", + " 'dSlope_yEndT', # keep\n", + " #'dSlope_yEndT_abs',\n", + " #'ty dSlope_xEndT',\n", + " #'ty dSlope_yEndT',\n", + " 'ty dSlope_xEndT_abs', # keep\n", + " 'ty dSlope_yEndT_abs', #keep\n", + " 'ty dSlope_yEndT^2', # keep \n", + " 'ty dSlope_xEndT^2', # keep\n", + " #'tx dSlope_xEndT',\n", + " #'tx dSlope_xEndT_abs',\n", + " #'tx dSlope_yEndT',\n", + " 'ty tx dSlope_xEndT', #keep\n", + " 'tx^2 dSlope_yEndT', # keep\n", + " #'ty^2 dSlope_xEndT',\n", + " #'ty^2 dSlope_yEndT', \n", + " #'ty^2 dSlope_xEndT_abs',\n", + " #'ty^2 tx dSlope_xEndT',\n", + " #'ty tx^2 dSlope_yEndT',\n", + " 'ty tx^2 dSlope_xEndT_abs', # keep\n", + " 'ty^3 tx dSlope_xEndT', #keep\n", + " #'ty tx^3 dSlope_xEndT',\n", + " #'ty^3 dSlope_yEndT_abs',\n", + "]\n", + "do_not_keep = [\n", + " 'dSlope_xEndT',\n", + " 'dSlope_yEndT_abs',\n", + " 'ty dSlope_xEndT',\n", + " 'tx dSlope_xEndT',\n", + " 'tx dSlope_xEndT_abs',\n", + " 'tx dSlope_yEndT',\n", + " 'ty^2 dSlope_xEndT',\n", + " 'ty^3 dSlope_yEndT_abs',\n", + " 'ty tx dSlope_yEndT',\n", + " 'ty tx^3 dSlope_xEndT',\n", + " 'ty tx^2 dSlope_yEndT',\n", + "]\n", + "reduce = True\n", + "if reduce:\n", + " remove = [i for i, f in enumerate(poly_features) if (keep and f not in keep )]\n", + " X_train_model = np.delete( X_train_model, remove, axis=1)\n", + " X_test_model = np.delete( X_test_model, remove, axis=1)\n", + " poly_features = np.delete(poly_features, remove )\n", + " print(poly_features)\n", + "if not reduce:\n", + " remove = [i for i, f in enumerate(poly_features) if (\"dSlope_\" not in f) or (\"EndT^\" in f) or (\"abs^\" in f) or (\"EndT dSlope\" in f) or (\"abs dSlope\" in f)]\n", + " X_train_model = np.delete( X_train_model, remove, axis=1)\n", + " X_test_model = np.delete( X_test_model, remove, axis=1)\n", + " poly_features = np.delete(poly_features, remove )\n", + " #print(poly_features)\n", + " lin_reg = Lasso(fit_intercept=False, alpha=0.000001)\n", + "else:\n", + " lin_reg = LinearRegression(fit_intercept=False)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", {k: v for k, v in zip(poly_features, lin_reg.coef_) if abs(v) > 1.0 and k not in keep and k not in do_not_keep})\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(\"straight RMSE =\", mean_squared_error(array[\"y_l11\"], array[\"y\"] + array[\"ty\"] * ( array[\"z_l11\"] - array[\"z\"] ), squared=False))\n", + "print(format_array(\"y_xEndT_diff\", lin_reg.coef_))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.6 (conda)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "a2eff8b4da8b8eebf5ee2e5f811f31a557e0a202b4d2f04f849b065340a6eda6" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/parameterisations/notebooks/hough_histogram.ipynb b/parameterisations/notebooks/hough_histogram.ipynb new file mode 100644 index 0000000..947230f --- /dev/null +++ b/parameterisations/notebooks/hough_histogram.ipynb @@ -0,0 +1,242 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import uproot\n", + "import awkward as ak\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "input_tree = uproot.open({\"/work/guenther/reco_tuner/data/param_data_selected_all_p.root\": \"Selected\"})\n", + "array = input_tree.arrays()\n", + "array = array[[field for field in ak.fields(array) if \"scifi_hit\" not in field]]\n", + "df = ak.to_pandas(array)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuEAAAJQCAYAAAAg1rpCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB0JklEQVR4nO3dd3xUVf7/8fdAKgmEQOiEIhAINhCCIrAYRBBRQVFUumJbo6LiqqCC+LWhiKIbKy5FlKIuqKCsrLQgLSJioQhSAoJCaCGkQJLz+4Nf7maSmWSSTEvyej4eeTxm5p577uee3Jl8cubcc2zGGCMAAAAAXlPN1wEAAAAAVQ1JOAAAAOBlJOEAAACAl5GEAwAAAF5GEg4AAAB4GUk4AAAA4GUk4QAAAICXkYQDAAAAXkYSDgAAAHgZSThQxc2cOVM2m002m02jRo1yW7179+616m3RooXb6gXc4dNPP9X111+vJk2aKDg42LpWr7jiCl+HhkqmRYsW1vW1d+9eX4cDPxLg6wAAAPCmESNG6MMPP/R1GACqOJJwACXau3evWrZsKUlq3rw5vTmosObOnWuXgHfp0kXt27dXWFiYJKlNmza+Cg1AFUMSDgCoMmbNmmU9njRpkiZMmODDaABUZTZjjPF1EAD8Gz3hqCzq16+vI0eOSJIOHDigJk2a+DgiVHYtWrTQvn37JEl79uzhHhlYuDETAFBlHD9+3HrcqFEjH0YCoKojCQcAVBk5OTnW42rV+BMIwHf4BIJf2r17t2rVqmVN6zR16tQS97n33nvtpsQ7efJkmY8/atQoq66ZM2dKko4dO6aXX35ZXbp0Ub169RQaGqrzzjtPd955pzZt2lSq+s+ePasZM2Zo4MCBat68uUJDQ1WrVi21bdtWo0eP1rJly1yuKzU1VVOmTFHv3r3VuHFjhYSEqEaNGmrevLk6deqk2267TTNmzNAff/zhcP/ipijM35Y/FEWS9u3bZ5Uv/FNQWaYoXL9+ve6//36df/75ioyMVEhIiJo2baqrr75a//znP3X69OkS63jmmWes4z7zzDOSziVes2fPVu/eva0p6Ro1aqSBAwdq8eLFLsUmScuXL9fo0aN14YUXqnbt2goMDFRUVJRiY2N1xRVX6Mknn9Tq1at19uxZl+ssibuuFUfTpB04cEBPP/20Lr74YtWuXVthYWFq166dHnjgAevrc3dwdi2sWbNGd955p9q1a6eIiAjZbDY99NBDDuvYv3+//u///k89evRQ48aNFRwcrDp16qhjx4569NFH9dtvv7l07gUVvn6Lu05Pnz6tt99+W9ddd52aN2+uGjVqqGbNmmrTpo3uuOMOLV++vMR2cPRey83N1bx58zRgwACdd955Cg0Nlc1m06JFixzWkZycrIcfflgdOnRQvXr1FBQUpIYNG6pnz56aPHmyXU+/K+3hiWshNzdXCxYs0IgRI9S2bVtFRkYqMDBQdevW1WWXXaYxY8bo22+/lSujYd1xvq5auXKlw6kqFy1apAEDBqhFixYKCQlRw4YNddVVV2nmzJnKy8tz2/FPnjypuXPn6p577tGll16qqKgoBQUFqVatWmrdurWGDBmiTz75xKVjOvtcX7hwoa677jo1a9ZMwcHBql+/vvr06aM5c+a49PsoaNu2bRo/fry6dOmiBg0aKCgoSPXq1dOll16qCRMm6ODBg6VtgqrHAH5q9uzZRpKRZIKCgszmzZudll20aJFVtlq1amb16tXlOvbIkSOt+mbMmGHWrVtnmjRpYr1W+KdatWpm3LhxLtW9fv1606pVK6d15f9cddVV5vDhw8XWtWjRIhMZGVliXZJMkyZNHNYxY8YMq8zIkSOdbnPlp6A9e/ZYrzdv3rzY80hPTze33HJLifU3atTIfPXVV8XWNXHiRKv8xIkTzYEDB8zll19ebL233367yc3NdVrnqVOnzPXXX+9yO7z//vvFxugqd14rzZs3t8rv2bPHLFy40ERERDitMzQ01CxevNgt51H4WsjOzjb33nuvw+OOGTPGbt/c3Fzz9NNPm5CQkGLbICAgwIwfP97k5eUVe+7F/Ti7ThcsWGAaNmxY4v7XXnutOXHihNN2KPxe++OPP0yPHj0c1rVw4UK7fY8dO2YGDRpUYgy1a9c2n3zySbG/D09eC6tXrzYxMTEutffjjz/utB53nq+rVqxYYdXbs2dPk5aWZgYOHFjs8ePi4swff/xRbL2F29uRzz77zAQHB7vUbh06dHBaT77C19qJEydK/Ay7+uqrTUZGRontlJWVZe69915TvXr1YusLDQ01b775Zon1VWXMjgK/NXz4cH399deaO3euzpw5oyFDhmjTpk0KDQ21K3fw4EGNHj3aej5+/Hj16NHDbXHs27dPjzzyiI4fP66wsDD16tVLDRo00J9//qkVK1bo9OnTysvL04svvqicnBy9/PLLTutavXq1+vXrp4yMDOu1Ll266Pzzz9eZM2e0fv16/f7775KkZcuWqXv37lqzZo3q1atXpK7vv/9eN910k/X1emhoqC677DK1aNFCwcHBSktL0++//66ff/7Z7nilERsbq4SEBJ06dUqzZ8+WJNWsWVMjRowoU32OZGRkqFevXtq4caP1WuPGjdWjRw+Fh4dr165dWrNmjXJzc3Xo0CFdf/31mjt3rm666aYS605PT9fVV1+tX375RTVq1FCPHj0UHR2tU6dOacWKFTp8+LAkacaMGWrbtq0ef/xxh/UMHz5cX3zxhfW8devW6tixo+rUqaOzZ8/qyJEj+vnnn916w6o7r5XCvv32W91zzz3Kzc1Vs2bN1LVrV9WqVUt79uzRypUrlZOTo8zMTA0ePFi//PKL3Tch7vDwww/rnXfekSRdeOGFuvjiixUYGKjffvvNbohIbm6ubrnlFn322WfWa40aNdKll16q+vXrKz09XRs2bNDvv/+unJwcvfDCCzpy5Ijee+89u+ONHDlSR48elSQlJiZaryckJNiVq1u3bpFYX3vtNY0dO9bqJaxZs6a6du2q6Oho5ebmauvWrUpOTpYxRosXL1bPnj21du1a1ahRo9g2yM7O1vXXX69NmzYpICBAl19+uVq3bq2srCz98MMPdmX//PNP9erVS9u2bbNei42NVYcOHVSzZk0dPnxYa9asUWpqqk6cOKHBgwfrww8/1NChQ4uNQXLvtTBv3jyNGDHC7pugmJgYXXLJJYqIiNDJkyf166+/6tdff1VeXp6ysrIc1uPJ8y2N22+/3fpGIv+9l52drfXr12v37t2SzvXU9+rVS2vXrlWdOnXKfKzDhw8rOztbktS0aVO1b99eDRs2VI0aNZSenq5t27bphx9+kDFGP/74o3r06KEff/zR4TVbWG5urgYNGqRvv/1WQUFBuvzyy9WqVStlZWUpKSlJKSkpkqSlS5fqkUce0dtvv+20rtOnT6tv37767rvvrNdatmypzp07KzIyUsePH9fatWv1xx9/KDMzUw888IDS0tI0fvz4MrdNpebjfwKAYp04ccKuF+Hee++1256Xl2d69+5tbb/00kvN2bNny33cgj3hQUFBRpIZMmRIkV6uEydOmFtvvdXuv//ly5c7rPPYsWN2vemtWrUyycnJRcrNmTPHhIaGWuWuu+46h/UNGDDAKjNo0CBz7Ngxh+WysrLMkiVLzD333ONwe3E94flK06td2n3+/ve/W+WqV69upk6dWqRX+rfffjOdOnWyytWqVcvs3r3bYX0Fe8Lze5ZGjhxpjh49alfu9OnT5rbbbrPKhoeHm/T09CL1bd682a5McT3xv//+u3nuuefMF198UUzLlMzd14ox9r1xwcHBJiwszHz44YdFeo5/+eUXu2Pffvvt5ToXY+yvhfzes+joaIffWGVlZVmPn376aWu/+vXrm/nz5zv8xuKTTz6x68mdP3++01gKvldL8t///tdUq1bNSDKBgYHmueeec3qNtG/f3qr373//u8P6Cr7XAgICrB5XR72a+e2Qm5tr4uPjrf0uueQSh9dCZmameeaZZ4zNZjOSTFhYmNP3iCeuhR9++MHu24qOHTua9evXOyx76NAh88orr5jJkycX2eaJ83VVwZ7w/M/9li1bmg0bNhQpO2vWLLue6xEjRjit15We8C+++MK8+OKLZufOnU7r2b17t+nbt69V1+jRo52WLXit5cfZr18/c+DAAbtyZ8+eNY8++qhV1mazFdvLPmLECLvPpWXLlhUpk5OTY9566y3ruNWrVzdr1651WmdVRhIOv7dmzRq7r70+//xza9vLL79slyDt2rXLLccsmIRLMtdcc43T4Qq5ubl2H4xxcXEOy02YMMEqU7t2bbNv3z6nx//3v/9td/xVq1YVKVO3bl3rA/bUqVNlO1Hj2yR8165dVpIjybzxxhtO6zt27Jhp0aJFiQlBwSRckrntttuc1pmZmWmio6OtsvPmzStS5s0337S2P/nkk8WftJu4+1oxxj4RsNls5uuvv3Za5+LFi+3eV+X9x7bgtSDJ1KhRw+zYsaPEffLf9zVr1jTbtm0rtvy3335r1R8bG+twWIoxrifhubm5pk2bNlbZOXPmFFv+0KFDpn79+lbCvn///iJlCg/vuvDCC0v8+r/gsLwOHTqU+F4veO0U7rTI54lroVu3bla5zp07l/kzyRPn66qCSXh+Yl/c35Q5c+bYlf/1118dlnMlCXfVmTNnzEUXXWQkmZCQEKedL4WvtR49ejj93eXl5Zm4uDir7EsvveSw3OrVq60yTZs2NYcOHSo21n/9619W+auvvrp0J1pFkISjQij4QRsVFWUOHjxoNm3aZPVWSOfGbrtLwSTcZrOVmNzv2LHD6pGRZH788Ue77Xl5eXZjSl999dUSY+jXr59V/tZbby2yPTAw0EgykZGRpTu5QnyZhD/++ONWmYsuushp4pRv/vz5dr07jsbfFkzCg4KCSvxD8dhjj1nlx44dW2T7888/b21//fXXi63LHTxxrRhjnwgU12PuKIaff/65TOeSr3AS/thjj5W4z0MPPWSV/7//+z+XjlPwn+FNmzY5LONqEl7wPpMrr7zSpeO/+OKLxf7eCidGJd3fYIwxHTp0sMonJSWVWD4zM9PUrl3bSDIREREOOw/cfS2sX7/e7vPSWTLqCk+cr6sKJ+ETJkwocZ+C/3w89NBDDsu4Mwk3xpjJkydb9Tn71q3wtfb9998XW+dbb71llR00aJDDMgXHx3/44YclxpmXl2fatWtnXRdHjhwp+eSqGGZHQYUwYcIEXX755ZLOzQYyfPhwDRkyRGfOnJEkDR48uMjMHu7SrVs3tWrVqtgyMTEx6tq1q/V8xYoVdtu3bdumP//8U9K5adFGjhxZ4nHvvPNO6/HKlSuLbG/WrJmkc/Mef/zxxyXW548Kzihx++23F5m9orAbbrjBGneZnZ2tdevWFVu+e/fuatiwYbFlOnbsaD12NKY7v52lc6stujJDS3l44lop7Oabby52u81m08UXX2w9d/fiTLfeemuJZb766qtSlZekXr16WY/XrFlT+sC8ePzIyEj17du32DKHDh3Sjz/+KElq0qSJunfvXmIMISEh1mfRyZMn9csvvxRb3h3XwtKlS63HV155pdq3b19inI5443xLw5V7Xwq+Pwt/7pfViRMntHTpUr366qsaP368HnzwQd1///3WzzfffGOVzW+v4px33nnq1KlTsWVK+hzMycmxZmIKCAjQoEGDSjyuzWZTfHy8JMkYo7Vr15a4T1XDjZmoEKpXr645c+aoQ4cOSktL07fffmtti46O1rvvvuuxY1922WUulevatav1IbN582a7bQWft2vXzqWbabp162Y9/vPPP3Xw4EE1btzYeu2WW27RCy+8IEkaNmyY5s2bp1tuuUW9evWqEIuQmP9/g1G+gufrTGBgoLp06WL90f/hhx909dVXOy1/4YUXllhnwd+Fo2ktr7nmGoWHhys9PV2bN29W27Ztdfvtt6t///7q1KmTAgMD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pO7duys8PFy///67Vq9erdzcXEnnvgH54IMP1LJlyzKfS2kYY7RmzRqtWbNG1atXV9u2bdW+fXtFRkYqMzNTBw4c0Nq1a63VW/PPqTyz0Lj7WqmoJk6cqL1791pf+c+aNUtz5sxRx44d1a5dO4WHhystLU379u3Tli1brPeiKwscuaJ37956++239fe//125ublav369unTpojZt2qhjx47WNfDnn3/qxx9/9MiQlerVq2vBggW66qqrtHnzZp05c0ZPPPGEnn32WV122WVq1qyZgoKCdPz4cf3222/aunWr1WPvyqqG7nLJJZfogw8+0KhRo5STk6PNmzfr0ksvVdu2bdWxY0dFRETo5MmT2rp1q3755Rfl5eU5/Dzyl/Pt2rWr6tatq3//+9+69NJL1aVLF51//vk6c+aM1q1bZ9dD3qZNm3INnenbt6969uypVatWyRijRx99VImJibrkkksUERGhnTt3au3atcrNzVWTJk00ZswYu28Fvendd9/VoUOH9M0338gYoylTpuiNN95QXFycWrVqpdDQUJ08eVK///67fv75Z+uGcXesoVAp+fifAMCho0eP2vUEjhkzptjyx44dM02bNrXKP/DAA+U6fuGen7Vr15rGjRvb9aIV/KlWrZr5xz/+YfLy8kqse926dea8885zWlf+T+/evc3hw4cd1nHgwAG7XpiSfq644gpz6NAhh3W52mNy8uRJ0759+2KPU1Bpej9PnTplBg8eXOJ5NGrUyHz11VfF1uXunvD777/f5XauWbOmee+990o8pqvcca3kq4g94fnefPNNExkZ6dLvwGazmeuvv95pXc6u1+IsX77ctGnTxuXr4Pzzzzd//PFHkXrK0hOeLyMjw9x7770mICDApRhCQ0PNCy+84LAuT14L3377rWnZsqVLMT755JNeOV9XFf4sSEtLM9dff32xx+3UqZM5cOBAsfW60t5//vmnueSSS4o9Vvv27c2vv/7q0nXkqZ5wY859W/H000+bGjVquPS7CQwMNAkJCSXGUBXREw6/dPfdd1vjYC+44AJNnjy52PKRkZGaPXu2evfurby8PL355pvq16+f3Q1D5dG1a1dt2bJF7733nv79739r7969Sk9PV6NGjRQfH6/77rtPnTt3dqmuyy67TNu2bdOcOXO0aNEiqwctMDBQDRs2VPfu3XXbbbepT58+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+mtz4403WnX87W9/M7m5uU7rGTJkiFU2Pj7eLFq0yGzcuNF88MEHplWrVta2999/32kdBw4cMA0aNDCSTEBAgHnsscfM6tWrzerVq81jjz1mAgICrDgPHDhQrjYszujRo40kExYWZoYNG2ZmzJhh1qxZY77//nvz4Ycfmri4OOt82rRpY06dOuW0LtrXuZ49e1pxR0ZGmquuusqEh4cbqXRJOG3sOT/++KOpUaOGkWTCw8PN888/b9auXWu+/fZbc9ddd1lt0q5du2LfBxVJwT/s0dHRpk+fPmVKwsePH2/t17FjRzN37lyzceNGM3fuXNOxY0dr25NPPum0jlOnTpl27dpZZe+66y7z7bffmrVr15rnn3/eer/UqFHDbNmyxWk97nqPlFf++6hx48ZmzJgx5tNPPzUbN24069atM1OnTjVNmjSxYrntttuKrYv2dWzZsmUmOjrajBgxwkybNs38+9//NuvWrTPfffedmT9/vrn55ptN9erVjSQTFBTk9LxoX3sk4bCTk5NT7Pbdu3ebyMhII8nUq1fPYfmzZ8+a1q1bG0mmVq1aZteuXUXK3HfffdYFPmvWLIfHWrlypVXmuuuuK3KsI0eOmGbNmlnJ1vHjxx3WM3LkSKueBQsWFNm+YMECa/vtt99e7PmXx2OPPWYmT55s0tLSHG7PyckxgwcPtmJx1jtK+xbv3XffNR999JHZuXOn9Vrz5s1LlYTTxp6V/21FQECAWbt2bZHtL7/8snU+kyZN8kGE7jdhwgTz5Zdfmj///NMYY8yePXtKnYTv3LnT+oerc+fOJiMjw2776dOnTefOna22dXTdGmPMxIkTrWO//PLLRbavXbvWOk58fLzDOtz1HnGH/v37m/nz5zv9+3XkyBETExNjxbJ69WqH5Whf50rKDYwxZuHChVY8N954Y5HttG9RJOEotXvvvde6MH/55Zci2wsmBM6GrZw+fdpK5i+44AKHZa655hojyVSvXt3s37/fYZm5c+dax5oyZUqR7X/++af133nfvn2dnlPfvn2tY+X/kfSF1NRUExQUZCSZiy66yGEZ2rf0SpuE08aes3HjRut877nnHodlcnNzTWxsrPXPyZkzZ7wcpeeVJQkvmBSsW7fOYZl169ZZZe6///4i28+cOWNq165tJJnY2FinPXz33HOPVc/3339fZLu73iPe8uWXX1rxPvjggw7L0L7ll99DHRUVVWQb7VsUSThKbezYscVe3AW/fj906JDTegq+SX777Te7badOnbLGaV199dVO68jOzja1atUykszll19eZPt7771nHWPevHlO6ymYCL333ntOy3lDfk9AWFiYw+20b+mVNgmnjT2n4NfR69evd1ruxRdftMp98803XozQO0qbhOfl5VnDKtq1a1ds2fyxsk2bNi0ytvabb76xjvvSSy85raNgMjR+/Pgi293xHvGmU6dOWXH079+/yHba1z06depkpHPDzAqifR1jdhSUSmZmpj7//HNJUrVq1RQTE1OkTP5d6G3btlXDhg2d1tWzZ0/r8Zo1a+y2bdy4UdnZ2UXKFRYUFKTLLrvM2ufs2bMOYympnuJi8bb8865WzfHbk/b1PNrYc/LPJywsTJ06dXJarqKcj7fs2bNHf/zxh6Tir4OC2w8cOKC9e/fabXP1eurcubPCwsIkOW5/d7xHvOnMmTPWY0efrbRv+W3btk0//vijJKldu3Z222hfx0jCUaKzZ88qJSVF8+bN0+WXX65du3ZJkm6//XbVrFnTrmx6eroOHDggqeibsLCC27dt22a3reBzV+vJycnRzp07HdYTERFR7ButUaNGqlWrlsNYvOnw4cPW8R2dN+3rebSxZ+XH1rp1awUEBDgtV1zbVkVluZ4K71eaegICAtSqVSuHdbjrPeJNq1atsh47ipn2LZuMjAzt3LlTU6dOVXx8vHJzcyVJY8aMsStH+zpGEg6H9u7da81hGxQUpObNm+u2226z/svt3bu3Xn311SL7HThwQMYYSVLTpk2LPUZ0dLT1eP/+/XbbCj53Rz0l1VGwnsJ1eNMrr7xizUs6ePDgIttpX8+jjT0nKytLqampkko+n8jISKsny1/Px5vcfT2FhYWpdu3aLtVz5MgR61sdyX3vEW/Jy8vTSy+9ZD139NlK+7pu5syZVn4QFhammJgYjR07Vn/99Zck6dFHH9XQoUPt9qF9HSMJR6nUrVtXc+fO1dKlSxUREVFk+6lTp6zH4eHhxdaV/wdWOvefqSfrKamOgvUUrsNbNmzYoNdff13SuQ+G++67r0gZ2tfzaGPPKU2bSP5/Pt7ky+upcD3uisVbXnvtNW3cuFGSdMMNN6hz585FytC+5dehQwetX79er7zyimw2m9022tcx598Fokpr0qSJfv75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wMsCfB0AAMB/DRw4UE2aNLGe16pVy4fR+LfevXsrPDzcer5w4UIdPHjQhxEB8Gck4QAAp8aMGaMrrrjC12FUCMOGDdOwYcOs57/88gtJOACnGI4CAAAAeBlJOAAAAOBlJOEAAACAl5GEA4Cf2b17t2rVqmVNbzd16tQS97n33nut8i1atNDJkye9EOn/FJyeb+bMmZKkY8eO6eWXX1ZcXJyioqIUHBysmJgYjR07VqmpqUXqSElJ0eOPP66LL75YERERqlWrluLi4vT666/r7NmzxR5/5cqV1vELjmFftGiRBgwYoObNmys4OFj16tXTwIEDtWbNmiJ1ZGdna9asWYqPj1eTJk0UEhKiFi1a6J577tG+ffvK1T4AUIQBAPid2bNnG0lGkgkKCjKbN292WnbRokVW2WrVqpnVq1eX69g9e/a06luxYoVL+4wcOdLaZ8aMGSY5OdlER0dbrxX+iY6ONnv27LH2f++990xwcLDT8t26dTPp6elOj79ixQqrbM+ePU16eroZNGiQ0/psNpt5//33rf1/++0307ZtW6flw8PDTVJSksfbEUDVQU84APih4cOH67bbbpMknTlzRkOGDFFmZmaRcgcPHtTo0aOt5+PHj1ePHj28Fqcj+/fvV79+/bR//341aNBAN998s+666y5dccUVqlatml2Z3NxczZkzR3fffbeys7PVrl07DRs2THfccYcuuugiq87vvvtODz30kMsxjB49Wp999pmCgoJ05ZVX6s4779TNN9+sOnXqSJKMMbrnnnuUlJSkv/76S/Hx8dqxY4dq166tAQMG6K677tI111yj4OBgSVJ6erpuvPFGHT9+3H0NBaBq8/V/AQAAx06cOGGaN29u9abee++9dtvz8vJM7969re2XXnqpOXv2bLmPW96e8KCgIGOz2cxzzz1XJJ41a9aYmjVrWmWff/55Ex4ebiIiIswXX3xRpN433njDrvd69+7dDo9fsCc8KCjISDJ/+9vfzL59++zKnThxwsTHx1tl4+PjzYABA4wk88ADDxTpbd+2bZtp3LixVf6ZZ55xqT2MoSccQPHoCQcAPxUREaGPPvpI1atXlyS98847+uKLL6ztU6ZM0X//+19JUnh4uD766CMFBPh++YczZ85o4sSJevLJJ4vE061bN40fP956/uSTTyojI0Off/65rrvuuiJ1PfDAA+rTp4+kc73XCxYscOn4sbGxWrp0qZo1a2a3LSIiQrNmzbLiWrFihT7//HONHj1ab7zxhsLCwuzKt2vXTlOmTLGez5s3r8TjA4ArSMIBwI9169ZNTz75pPV89OjROnTokH744Qc99dRT1utvvvmmWrVq5YsQi2jQoIHGjRvndPstt9xi93zgwIHq2bOn0/K33nqr9Tg5OdmlGF566SWFhoY63BYdHa3LL7/ceh4cHKwXX3zRaV033HCDNSxlx44dOnXqlEsxAEBxSMIBwM9NmDDBShpTU1M1fPhwDRkyRGfOnJEkDR48WKNGjfJhhPauu+46BQUFOd3esmVLux7nQYMGFVvfBRdcYD3es2dPiccPDQ1Vv379XK7zb3/7m+rVq+e0bEhIiPUPjjFGe/fuLTEGACgJSTgA+Lnq1atrzpw5qlWrliTp22+/1Y4dOySd69V99913fRleEeeff36JZWrXrm09bt++fbFlIyMjrcdpaWkl1h0TE6PAwECX6yzp+GWJAQBKQhIOABVAy5Yt9dZbb9m9Vq1aNX344Yd2Ca0/iIiIKLFMwbHiJZUvWLak+cI9cfyyxAAAJSEJB4AKon79+nbPmzRpoi5duvgoGudsNptHy/v78QHAFSThAFABHD16VCNHjrR7bf/+/XrkkUd8FBEAoDxIwgGgAsifFUWS2rRpYy1688477+jLL7/0ZWgAgDIgCQcAP/fuu+/q888/lyTVqFFDixcvtpsCcPTo0frzzz99FR4AoAxIwgHAj+3YscNuyMlrr72mmJgYPfPMM9Z48CNHjmjUqFEyxvgqTABAKZGEA4CfOnv2rIYMGaKMjAxJ0oABA3T33XdLOjdbx0cffaTw8HBJ0n/+8x9NmzbNZ7ECAEqHJBwA/NSTTz6pH374QZLUqFEjTZ8+3W5769at7RLvJ554Qj///LNXYwQAlA1JOAD4oeXLl+vVV1+VdG4KvZkzZyoqKqpIuTvuuEM33XSTJCk7O1tDhgxRVlaWV2MFAJQeSTgA+Jljx45pxIgRysvLkyQ9+OCD6tOnj9Py7733npo2bSpJ+uWXX/TYY495JU4AQNmRhAOAn7n77rv1xx9/SJIuuOACTZ48udjykZGRmj17tjVt4Ztvvqmvv/7a43ECAMrOZridHgBQwBVXXKFVq1ZJklasWKErrrjCtwFVULQjgOLQEw4AAAB4GUk4AMCp+Ph42Ww262fv3r2+DslvjRo1yq6t8nvBAcARknAAAADAywJ8HQAAwL/ccMMNuuCCCxxuq1WrlpejqTh69+5tLZ5UWJMmTbwcDQB/x42ZAAAAgJcxHAUAAADwMpJwAAAAwMtIwgEAAAAvIwkHAAAAvIwkHAAAAPAyknAAAADAy0jCAQAAAC8jCQcAAAC8jCQcAAAA8DKScAAAAMDL/h+uW1SErU1wcQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "urax = df.loc[(df[\"x_ref\"] > -3200) & (df[\"x_ref\"] < 3200), \"x_ref\"].plot.hist(bins=100, logy=True,title='x positions on reference plane', figsize=(8,6), fontsize=20,edgecolor='black')\n", + "urax.set_xlabel('x [mm]', fontsize=24)\n", + "urax.set_ylabel('Count', fontsize=24)\n", + "urax.title.set_size(24)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.optimize import curve_fit\n", + "import numpy as np\n", + "def fitFastSigmoid(x, p0, p1, p2 ):\n", + " return p0 + p1 * x / (1 + abs(x * p2) ) \n", + "\n", + "def sqrtSigmoid( x, p0, p1, p2 ):\n", + " return p0 + p1 * x / np.sqrt( p2 + x**2 )" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-1152.3191321144784 1144.5112688972854\n", + "BINS=900\n", + "shift=126.0\n", + "[ 4.50871394e+02 5.78026621e-01 -6.72848459e-04]\n", + "at -3000 = 2\n", + "at 0 = 576\n", + "at 3000 = 1151\n", + "at -3000 = 2.3960602381498575\n", + "at 0 = 576.8713937732111\n", + "at 3000 = 1151.3467273082724\n", + "\n", + "-1152.3191321144784 1145.2265343593158\n", + "BINS=1000\n", + "shift=140.0\n", + "[5.00965281e+02 6.42244329e-01 6.72824292e-04]\n", + "at -3000 = 2\n", + "at 0 = 640\n", + "at 3000 = 1279\n", + "at -3000 = 2.6514499904290005\n", + "at 0 = 640.965281389201\n", + "at 3000 = 1279.279112787973\n", + "\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NBINSnBinsRealminBinWidthmaxBinWidth
090011521.520524411.883522
1100012801.378500406.784548
\n", + "
" + ], + "text/plain": [ + " NBINS nBinsReal minBinWidth maxBinWidth\n", + "0 900 1152 1.520524 411.883522\n", + "1 1000 1280 1.378500 406.784548" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB5AAAAdnCAYAAAADTeAUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hUVdf38e+kF5JAgDR670VAIRRDD0izgqARRFEeQUUsgOANYqGIFEUUARFEikoRLPQuLVKkVwMIBClCQgmp+/ljzMiQQoDAJPD7XFfe9z777NlnnTPjPKxZ++xjMcYYRERERERERERERERERETknufk6ABERERERERERERERERERCRnUAFZREREREREREREREREREQAFZBFRERERERERERERERERORfKiCLiIiIiIiIiIiIiIiIiAigArKIiIiIiIiIiIiIiIiIiPxLBWQREREREREREREREREREQFUQBYRERERERERERERERERkX+pgCwiIiIiIiIiIiIiIiIiIoAKyCIiIiIiIiIiIiIiIiIi8i8VkEVEREREREREREREREREBFABWUREREREROSesnr1atq0aUNISAgWi4V58+bZ9iUmJtKnTx+qVKmCt7c3ISEhPPPMM5w4ccJujPj4eF5++WUKFCiAt7c3bdu25dixY3Z9zp07R0REBH5+fvj5+REREcH58+fvwBmKiIiIiIjIrXBxdAC3S0pKCidOnMDHxweLxeLocERERERERHIcYwwXLlwgJCQEJyfNL75XXLp0iWrVqvHss8/y2GOP2e27fPkyW7Zs4Z133qFatWqcO3eOXr160bZtW37//Xdbv169erFgwQJmzpxJ/vz5ef3112ndujWbN2/G2dkZgE6dOnHs2DEWLlwIwAsvvEBERAQLFizIcqzK7UVERERERDJ2u/J6izHGZNtoOcixY8coUqSIo8MQERERERHJ8f766y8KFy7s6DDEASwWC3PnzuXhhx/OsE9kZCQPPPAAR44coWjRosTExFCwYEG++eYbOnToAMCJEycoUqQIv/zyC+Hh4ezZs4eKFSuyYcMGateuDcCGDRsIDQ1l7969lCtXLkvxKbcXERERERG5vuzO6+/aO5B9fHwA6wXz9fV1cDQiIiIiIiI5T2xsLEWKFLHlTyLpiYmJwWKxkDdvXgA2b95MYmIizZs3t/UJCQmh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/qI8WLYgh89cpngBr9uaZObJk4fnnnuON998k/z58xMYGEj//v1xcrLOAyhatChubm58+umndO/enZ07d/Lee+/ZjVGsWDEsFgs//fQTDz30EJ6enuTLl4/8+fPz5ZdfEhwczNGjR+nbt+9tOw8RERERERGRnOJO5vWg3F5ERERERHI+3YGcDYL9PAktlf+2J5kAH330EQ8++CBt27aladOm1K9fn5o1awJQsGBBvv76a77//nsqVqzI0KFDGTFihN3rCxUqxLvvvkvfvn0JDAykZ8+eODk5MXPmTDZv3kzlypV57bXX+Oijj277uYiIiIiIiIjkBHcyrwfl9iIiIiIikrNZzPUevpNLxcbG4ufnR0xMDL6+vnb7rly5QlRUFCVKlMDDw8NBEYpITqbvCREREbkXZJY3ieQEyu1FJKv0nSAiIiL3otuV1+sOZBERERERERERERERERERAVRAFhERERERERERERERERGRf6mALCIiIiIiIiIiIiIiIiIigArIIiIiIiIiIiIiIiIiIiLyLxWQRUREREREREREREREREQEUAFZRERERERERERERERERET+pQKyiIiIiIiIiIiIiIiIiIgAKiCLiIiIiIiIiIiIiIiIiMi/VEAWERERERERERERERERERFABWQREREREREREREREREREfmXCsh3GWMMgwYNIiQkBE9PTxo2bMiuXbuyZeyzZ89SuHBhLBYL58+ft7UfPnwYi8WS5m/hwoV2r1+1ahU1a9bEw8ODkiVL8sUXX1z3mJGRkTRp0oS8efOSL18+mjdvzrZt22z7Bw0alO6xvb29bX2io6Pp1KkT5cqVw8nJiV69eqU5zpw5c6hVqxZ58+bF29ub6tWr880339j1uXDhAr169aJYsWJ4enpSt25dIiMj7foMGjSI8uXL4+3tTb58+WjatCkbN2687rWyWCx8//33AKxcuTLDPqnHO3v2LC1atCAkJAR3d3eKFClCz549iY2NtR1r5cqVtGvXjuDgYNs5ffvtt3bxZuXa7Nq1i8cee4zixYtjsVgYPXp0mj5Dhgzh/vvvx8fHh4CAAB5++GH27duXpp+IiIiIiIhk7nbk9enll9fm5Dt27CAsLAxPT08KFSrE4MGDMcbY9bmZvH7ZsmXUrVsXHx8fgoOD6dOnD0lJSWnOecSIEZQtW9aW43744Ye2/Rnl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W3jnnXfYsmULc+bMYf/+/bRt29buulzv85+Va9OhQ4c0fcLDwwkLCyMgIMDueImJiXTs2JEGDRqkeY+8vb3p2bMnq1evZs+ePQwYMIABAwbw5Zdf2vqsX7+eDh06EBERwR9//EFERATt27dn48aNdmNVqlTJLp4dO3bY9hljePjhh/nzzz/58ccf2bp1K8WKFaNp06ZcunQpo4+QiIiISOZO7YWlg2B0FZjSGrZOg/hY8CsC9XtDj03w4iqo83+QJ+C6w4mI5AQ5Ja9fv349LVq0oHnz5mzatInIyEh69uyJk1Pan5LeeustQkJC0rRv3ryZggULMm3aNHbt2kX//v3p16+f3W9K69ato2rVqsyePZvt27fTtWtXnnnmGRYsWJBmvJiYGJ555hmaNGmSYdxHjhzhjTfeSDcHLly4MEOHDuX333/n999/p3HjxrRr185240NW8/qIiAj27dvH/Pnz2bFjB48++igdOnSw+52hVatWJCUlsXz5cjZv3kz16tVp3bo1J0+eBLKW1//666889dRTdO/enZ07dzJu3Djbb26pxowZYzfGX3/9hb+/P0888YStz4ABAxg/fjyffvopu3fvpnv37jzyyCN28V7vNw/I/s+miIiICAmXYccP8O0T8HE5WNgHTmy1riJWJhwe/wre2A8PfwYlHoR0/i0qt4m5BYCZO3eubTslJcUEBQWZoUOH2tquXLli/Pz8zBdffGGMMeb8+fPG1dXVzJw509bn+PHjxsnJySxcuNAYY8zu3bsNYDZs2GDrs379egOYvXv3Zim2mJgYA5iYmJg0++Li4szu3btNXFzcDZ1vThAWFmZ69OhhevToYfz8/Iy/v7/p37+/SUlJsesXFRVlALN169ZbOt4vv/xinJyczPHjx21tM2bMMO7u7ule26vjfPXVV7N8nISEBBMQEGAGDx5sa4uMjDSAOXr0qK1t+/btBjAHDx40xhgzbtw44+fnZ65cuWLrM2TIEBMSEpLmmlytYsWK5t1337Vtf/7556ZkyZImISEhw9f06dPH1K9fP8vnZIwxmzZtMoA5cuSIMSZrn/9rpXdtrnXq1Cnj6upqpk6dmmbfW2+9ZZ5++mkzefJk4+fnd92YH3nkEfP000/bttu3b29atGhh1yc8PNw8+eSTtu2BAweaatWqZTjmvn37DGB27txpa0tKSjL+/v5m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s+0e7ZWV3zxERERE0khJgUPLIHISHFj0393G3gFQIwLuexr8Szo2Rrk55gZduHDBbN261WzdutUAZuTIkWbr1q3myJEjxhhjhg4davz8/MycOXPMjh07TMeOHU1wcLCJjY21jdG9e3dTuHBhs3TpUrNlyxbTuHFjU61aNZOUlGTr06JFC1O1alWzfv16s379elOlShXTunXrLMcZExNjABMTE5NmX1xcnNm9e7eJi4u70dN3uLCwMJMnTx7z2muvmb1795rp06cbb29v88UXXxhjjDl79qzZunWr+fnnnw1gZs6cabZu3Wqio6Nv6nhJSUmmcuXKpkmTJmbLli1m6dKlpnDhwqZnz562PseOHTPlypUzGzduNMYYc/DgQfPuu++ayMhIExUVZX7++WdTvnx5c99999m9x8YYs3TpUgOY3bt3pzn2nj17jLu7u/m///s/s3v3brNz507z9NNPGz8/P3PixAljjDHnz583gYGBpmPHjmbHjh1mzpw5xtfX14wYMcI2zvTp042Li4v57LPPTHR0tO3v/Pnztj5Hjx41efLkMT179jT79u0zP/30kwkICDDvv/++rc+mTZuMi4uL+eCDD8yBAwfMt99+a7y8vMy0adOMMcYkJiaatm3bmsKFC5tt27bZHSs+Pt42TlY+/9e7NqkmTpxoPDw8zD///JPxm/ivyZMnGz8/P7u2sWPHmvnz55v9+/eb/fv3m6+++sr4+vqa/v372/r89ttvxtnZ2QwdOtTs2bPHDB061Li4uJgNGzbY+rz++utm5cqV5s8//zQbNmwwrVu3Nj4+Pubw4cO2Pt99951ZsWKFOXTokJk3b54pVqyYefTRR68bt6Pk5u8JERGRHC05yZi9vxgz9RFjBvr+9zeivDHLPzTm/F+OjvCeklneJJIT3I25fW7I640xZtSoUcbX19d8//335sCBA2bAgAHGw8PDHDx4MN3jREVFGcBs3brV1rZz505TsGBB89RTT9nlyKdOnbL1WbFihfHy8jL9+vWz63P27NkMz2ngwIGmWrVqmZ53586dTbt27eza+vXrZ1avXm2ioqLM9u3bzdtvv22cnJzM4sWLjTFZy+sTEhJM6dKlTYMGDczGjRvNwYMHzYgRI4zFYjE///yzMcaY06dPm/z585tHH33UbNu2zezbt8+88cYbxtXV1Wzbts0upszy+tOn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nAMOOCBJ8uqrr2b48OG57rrrsttuu7XoZ/uMAqyAid9L/v2LzO6+enZ657RMT//Fhqw/sFdu+dbHylAcANCa2qpnsgIZgJL6uuTKryTz3smjVR/Mb+o/1eywLYevLjwGAOhCampqkiQDBw5MkkyZMiXTpk3Lrrvu2jSmuro6O+20U+68884kyf3335/a2tqFxgwbNiyjR49uGgNAG3juluTf/5skOf7dLzUbHifJLw7aqh2LAgBWNd3LXQAAHcStpycv35M53VbLEe98NQ1LmGN07he2bufCAAAol6Iocvzxx+cjH/lIRo8uTSKcNm1akmTw4IXP0xw8eHBeeOGFpjE9evTIgAEDFhsz/+ubM3fu3MydO7fpeubMma3yPgC6hNnTS1tXp8ildR/LPxu2bXbYxzZeM1sMH9DsawAAiRXIACTJlNuT285Ikpw458t5uViz2WHOPQYA6FomTJiQhx9+OJdddtlir1VUVCx0XRTFYvcWtawxp512Wvr379/0a/jw4StWOEBXUxTJNROSd6bl6Ya188O6Q5odtunQfvndlz7UzsUBAKsaATJAV/fuW8lVX01S5Iq6nfP3hg83O2z82PVyxI4j27c2AADK5phjjsm1116bm2++Oeuss07T/SFDhiTJYiuJX3/99aZVyUOGDMm8efMyY8aMJY5pzsknn5yampqmXy+99FJrvR2Azu2e3yRPXZ/adM+xtRPyXqqbHXbB+G3auTAAYFUkQAboyooiufaYZNareaXb2jml7ovNDnPuMQBA11EURSZMmJCrrroqN910U0aMGLHQ6yNGjMiQIUMyceLEpnvz5s3Lrbfemu233z5JMmbMmFRVVS00ZurUqZk8eXLTmOZUV1enX79+C/0CYBmmTU5u+O8kyY9qD87jxXrNDrOrGADQUs5ABujK7vtd8sTfUpfu+eq7R2VOejY7zLnHAABdx9FHH51LL70011xzTfr27du00rh///7p1atXKioqctxxx+XUU0/NRhttlI022iinnnpqevfunYMPPrhp7GGHHZYTTjgha6yxRgYOHJgTTzwxm222WT7+8Y+X8+0BdC7z3k2uPCypn5t/1W+Vi+p3a3bY0eNG2lUMAGgxATJAV/XaY8k/v50kOa32wDxajGh2mBnKAABdMidNWwAAjUhJREFUy7nnnpsk2XnnnRe6f+GFF2b8+PFJ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Gttcn10UxUL3Fx0zf0b80nr0k08+Occff3zTdUNDQ956662sscYaHaa376i/n2k/PgNdm+fftXn+XZvnj89A19ZRn39b9fWdNkCurKzMOuusU+4ylqhfv34d6gNG+/L8uzbPH5+Brs3z79o8fzriZ8DK465hwoQJOfDAA5c65v0rhl999dWMGzcuY8eOzfnnn7/QuCFDhuTuu+9e6N6MGTNSW1vbtMp4yJAhTauR53v99deTZLHVy+9XXV290LbXSbL66qsvte5y6Yi/n2lfPgNdm+fftXn+XZvnj89A19YRn39b9PWdNkAGAAAASgYNGpRBgwa1aOwrr7yScePGZcyYMbnwwgtTWVm50Otjx47Nj370o0ydOjVDhw5Nktxwww2prq7OmDFjmsZ8+9vfzrx589KjR4+mMcOGDVtsa2sAAAA6lsplDwEAAAC6gldffTU777xzhg8fnjPOOCNvvPFGpk2bttBq4l133TWbbrppDjnkkDz44IP517/+lRNPPDFf+cpXmmbiH3zwwamurs748eMzefLkXH311Tn11FNz/PHHd5itqAEAAGieFcjtrLq6Ot///vcX25KLrsHz79o8f3wGujbPv2vz/PEZYFVxww035Jlnnskzzzyz2LFQ888w7tatW/7+97/nqKOOyg477JBevXrl4IMPzhlnnNE0tn///pk4cWKOPvrobLPNNhkwYECOP/74hc43XlX5/YzPQNfm+Xdtnn/X5vnjM9C1dbXnX1HM7wABAAAAAAAA6NJsYQ0AAAAAAABAEgEyAAAAAAAAAI0EyAAAAAAAAAAkESADAAAAAAAA0EiA3Er23nvvrLvuuunZs2eGDh2aQw45JK+++upCY1588cXstdde6dOnTwYNGpRjjz028+bNW2jMI488kp122im9evXK2muvnR/+8IcpimKhMbfeemvGjBmTnj17ZoMNNsivf/3rNn9/LNnzzz+fww47LCNGjEivXr0ycuTIfP/731/s2Xr+ndePfvSjbL/99undu3dWX331Zsd4/vzqV7/KiBEj0rNnz4wZMya33357uUtiBdx2223Za6+9MmzYsFRUVOQvf/nLQq8XRZFTTjklw4YNS69evbLzzjvn0UcfXWjM3Llzc8wxx2TQoEHp06dP9t5777z88ssLjZkxY0YOOeSQ9O/fP/37988hhxySt99+u43fHUtz2mmnZdttt03fvn2z1lprZZ999smTTz650BjPv3M799xzs/nmm6dfv37p169fxo4dm+uvv77pdc8fVn36+q5LX0+it6dl9ParPn1916a379r09cupoFWceeaZxaRJk4rnn3+++Pe//12MHTu2GDt2bNPrdXV1xejRo4tx48YVDzzwQDFx4sRi2LBhxYQJE5rG1NTUFIMHDy4OPPDA4pFHHimuvPLKom/fvsUZZ5zRNOa5554revfuXXz9618vHnvsseI3v/lNUVVVVfz5z39u1/fLAtdff30xfvz44p///Gfx7LPPFtdcc02x1lprFSeccELTGM+/c/ve975XnHnmmcXxxx9f9O/ff7HXPX8uv/zyoqqqqvjNb35TPPbYY8XXv/71ok+fPsULL7xQ7tJYTtddd13xne98p7jyyiuLJMXVV1+90Ounn3560bdv3+LKK68sHnnkkeKAAw4ohg4dWsycObNpzJFHHlmsvfbaxcSJE4sHHnigGDduXLHFFlsUdXV1TWN23333YvTo0cWdd95Z3HnnncXo0aOLPffcs73eJs3YbbfdigsvvLCYPHly8dBDDxWf+tSninXXXbd45513msZ4/p3btddeW/z9738vnnzyyeLJJ58svv3tbxdVVVXF5MmTi6Lw/KEz0Nd3Xfp6ikJvz7Lp7TsHfX3Xprfv2vT1y0eA3EauueaaoqKiopg3b15RFKU/mCorK4tXXnmlacxll11WVFdXFzU1NUVRFMWvfvWron///sV7773XNOa0004rhg0bVjQ0NBRFURTf+ta3ilGjRi30s4444ojiwx/+cFu/JZbDT37yk2LEiBFN155/13DhhRc222R6/nzoQx8qjjzyyIXujRo1qviv//qvMlVEa1i00WxoaCiGDBlSnH766U333nvvvaJ///7Fr3/966IoiuLtt98uqqqqissvv7xpzCuvvFJUVlYW//jHP4qiKIrHHnusSFLcddddTWMmTZpUJCmeeOKJNn5XtNTrr79eJCluvfXWoig8/65qwIABxW9/+1vPHzopfX3Xpq/vuvT2LInevvPR16O3R1+/ZLawbgNvvfVW/vjHP2b77bdPVVVVkmTSpEkZPXp0hg0b1jRut912y9y5c3P//fc3jdlpp51SXV290JhXX301zz//fNOYXXfddaGft9tuu+W+++5LbW1tG78zWqqmpiYDBw5suvb8uzbPv2ubN29e7r///sWe3a677po777yzTFXRFqZMmZJp06Yt9Kyrq6uz0047NT3r+++/P7W1tQuNGTZsWEaPHt00ZtKkSenfv3+22267pjEf/vCH079/f5+ZDqSmpiZJmv689/y7lvr6+lx++eWZPXt2xo4d6/lDJ6SvR1/PonwGuja9fdfg7/Vdj96+69LXL5sAuRWddNJJ6dOnT9ZYY428+OKLueaaa5pemzZtWgYPHrzQ+AEDBqRHjx6ZNm3aEsfMv17WmLq6ukyfPr3V3xPL79lnn83ZZ5+dI488sume59+1ef5d2/Tp01NfX9/ss5v/bOkc5j/PpT3radOmpUePHhkwYMBSx6y11lqLff+11lrLZ6aDKIoixx9/fD7ykY9k9OjRSTz/ruKRRx7Jaqutlurq6hx55JG5+uqrs+mmm3r+0Ino60n09TTPZ6Br09t3Df5e37Xo7bsmfX3LCZCX4pRTTklFRcVSf913331N47/5zW/mwQcfzA033JBu3brli1/8YoqiaHq9oqJisZ9RFMVC9xcdM//rl3cMK295n3+SvPrqq9l9992z33775fDDD1/oNc9/1bIiz39pPH+ae3aeW+e0Is96Wf89aOn3oX1MmDAhDz/8cC677LLFXvP8O7eNN944Dz30UO6666587Wtfy6GHHprHHnus6XXPHzoefX3Xpq9Hb09r09t3Df5e3zXo7bsmfX3LdS93AR3ZhAkTcuCBBy51zPrrr9/0vwcNGpRBgwblAx/4QDbZZJMMHz48d911V8aOHZshQ4bk7rvvXuhrZ8yYkdra2qYZDUOGDFlsBsLrr7+eJMsc071796yxxhor9D5p3vI+/1dffTXjxo3L2LFjc/755y80zvNf9Szv818az79rGzRoULp169bss1t0RhurtiFDhiQpzTQcOnRo0/33P+shQ4Zk3rx5mTFjxkKzFV9//fVsv/32TWNee+21xb7/G2+84TPTARxzzDG59tprc9ttt2WdddZpuu/5dw09evTIhhtumCTZZpttcu+99+YXv/hFTjrppCSeP3RE+vquTV+P3p7WorfvGvR1XYfevuvS17ecFchLMWjQoIwaNWqpv3r27Nns186fOTh37twkydixYzN58uRMnTq1acwNN9yQ6urqjBkzpmnMbbfdlnnz5i00ZtiwYU1/mR07dmwmTpy4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AAAACgEZAAAAAAAAgCQCMgAAAAAAAACFgAwAAAAAAABAEgEZAAAAAAAAgEJABgAAAAAAACCJgAwAAAAAAABAISADAAAAAAAAkERABgAAAAAAAKAQkAEAAAAAAABIIiADAAAAAAAAUAjIAAAAAAAAACQRkAEAAAAAAAAoBGQAAAAAAAAAkgjIAAAAAAAAABQCMgAAAAAAAABJBGQAAAAAAAAACgEZAAAAAAAAgCQCMgAAAAAAAACFgAwAAAAAAABAEgEZAAAAAAAAgEJABgAAAAAAACCJgAwAAAAAAABAISADAAAAAAAAkERABgAAAAAAAKAQkAEAAAAAAABIIiADAAAAAAAAUAjIAAAAAAAAACQRkAEAAAAAAAAoBGQAAAAAAAAAkgjIAAAAAAAAABQCMgAAAAAAAABJBGQAAAAAAAAACgEZAAAAAAAAgCQCMgAAAAAAAACFgAwAAAAAAABAEgEZAAAAAAAAgEJABgAAAAAAACCJgAwAAAAAAABAISADAAAAAAAAkERABgAAAAAAAKAQkAEAAAAAAABIIiADAAAAAAAAUAjIAAAAAAAAACQRkAEAAAAAAAAoBGQAAAAAAAAAkgjIAAAAAAAAABQCMgAAAAAAAABJBGQAAAAAAAAACgEZAAAAAAAAgCQCMgAAAAAAAACFgAwAAAAAAABAEgEZAAAAAAAAgEJABgAAAAAAACCJgAwAAAAAAABAISADAAAAAAAAkERABgAAAAAAAKAQkAEAAAAAAABIIiADAAAAAAAAUAjIAAAAAAAAACQRkAEAAAAAAAAoBGQAAAAAAAAAkgjIAAAAAAAAABQCMgAAAAAAAABJBGQAAAAAAAAACgEZAAAAAAAAgCQCMgAAAAAAAACFgAwAAAAAAABAEgEZAAAAAAAAgEJABgAAAAAAACCJgAwAAAAAAABAISADAAAAAAAAkERABgAAAAAAAKAQkAEAAAAAAABIIiADAAAAAAAAUAjIAAAAAAAAACQRkAEAAAAAAAAoBGQAAAAAAAAAkgjIAAAAAAAAABQCMgAAAAAAAABJBGQAAAAAAAAACgEZAAAAAAAAgCQCMgAAAAAAAACFgAwAAAAAAABAEgEZAAAAAAAAgEJABgAAAAAAACCJgAwAAAAAAABAISADAAAAAAAAkERABgAAAAAAAKAQkAEAAAAAAABIIiADAAAAAAAAUAjI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SCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAICibgF59erVmTlzZtrb29Pd3Z1Nmza95/UHDhzIqlWrMmPGjLS1teVjH/tY1q1bV6fdAgAAAO9mtgcAADj1tdbjSTZs2JBly5Zl9erVueKKK/Kd73wnCxcuzPbt2/ORj3xkwntuuOGGvP7661m7dm3++I//OHv27Mlbb71Vj+0CAAAA72K2BwAAaA4tVVVVtX6SuXPn5rLLLsuaNWtG12bNmpXrr78+fX19465/5pln8oUvfCE7d+7MWWeddUzPOTIyks7OzgwPD6ejo+OY9w4AAHCqMjdxNMz2AAAAjaVWM1PNP8L64MGD2bp1a3p6esas9/T0ZMuWLRPe8/TTT2fOnDn5+te/nvPPPz8XX3xxbr/99vz2t7894vMcOHAgIyMjYx4AAADAB2e2BwAAaB41/wjrvXv35tChQ+nq6hqz3tXVld27d094z86dO7N58+a0t7fnqaeeyt69e/OlL30pv/rVr474u5L6+vpyzz33HPf9AwAAQLMz2wMAADSPmr8D+bCWlpYxX1dVNW7tsLfffjstLS1Zv359Lr/88lxzzTW5//7788gjjxzxlcorV67M8PDw6OO111477j8DAAAANDOzPQAAwKmv5u9Anjp1aiZPnjzuFcl79uwZ98rlw6ZNm5bzzz8/nZ2do2uzZs1KVVXZtWtXLrroonH3tLW1pa2t7fhuHgAAADDbAwAANJGavwN5ypQp6e7uTn9//5j1/v7+zJ8/f8J7rrjiivzyl7/Mb37zm9G1n/70p5k0aVIuuOCCmu4XAAAAGMtsDwAA0Dzq8hHWK1asyEMPPZR169Zlx44dWb58eQYHB9Pb25vknY+oWrx48ej1N954Y84+++zceuut2b59e55//vnccccd+eu//uucfvrp9dgyAAAA8HvM9gAAAM2h5h9hnSSLFi3Kvn37cu+992ZoaCizZ8/Oxo0bM2PGjCTJ0NBQBgcHR6//oz/6o/T39+dv/uZvMmfOnJx99tm54YYbct9999VjuwAAAMC7mO0BAACaQ0tVVdWJ3kQtjIyMpLOzM8PDw+no6DjR2wEAAGg45iYanTMKAABwZLWameryEdYAAAAAAAAAND4BGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAA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QAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUdQvIq1evzsyZM9Pe3p7u7u5s2rTpiNc++eSTufrqq/PhD384HR0dmTdvXn70ox/Va6sAAADABMz2AAAAp766BOQNGzZk2bJlWbVqVQYGBrJgwYIsXLgwg4ODE17//PPP5+qrr87GjRuzdevWfPazn811112XgYGBemwXAAAAeBezPQAAQHNoqaqqqvWTzJ07N5dddlnWrFkzujZr1qxcf/316evre1/f40/+5E+yaNGi3HXXXe/r+pGRkXR2dmZ4eDgdHR3HtG8AAIBTmbmJo2G2BwAAaCy1mplq/g7kgwcPZuvWrenp6Rmz3tPTky1btryv7/H2229n//79Oeuss454zYEDBzIyMjLmAQAAAHxwZnsAAIDmUfOAvHfv3hw6dChdXV1j1ru6urJ79+739T2+8Y1v5I033sgNN9xwxGv6+vrS2dk5+pg+ffoH2jcAAADwDrM9AABA86jL70BOkpaWljFfV1U1bm0ijz32WL72ta9lw4YNOeecc4543cqVKzM8PDz6eO211z7wngEAAID/Z7YHAAA49bXW+gmmTp2ayZMnj3tF8p49e8a9cvndNmzYkCVLluTxxx/PVVdd9Z7XtrW1pa2t7QPvFwAAABjLbA8AANA8av4O5ClTpqS7uzv9/f1j1vv7+zN//vwj3vfYY4/llltuyaOPPpprr7221tsEAAAAjsBsDwAA0Dxq/g7kJFmxYkVuuummzJkzJ/Pmzct3v/vdDA4Opre3N8k7H1H1i1/8It/73veSvDNgLl68OP/yL/+ST3/606OvcD799NPT2dlZjy0DAAAAv8dsDwAA0BzqEpAXLVqUffv25d57783Q0FBmz56djRs3ZsaMGUmSoaGhDA4Ojl7/ne98J2+99Va+/OUv58tf/vLo+s0335xHHnmkHlsGAAAAfo/ZHgAAoDm0VFVVnehN1MLIyEg6OzszPDycjo6OE70dAACAhmNuotE5owAAAEdWq5mp5r8DGQAAAAAAAICTg4AMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARkAAAAAAAAAJIIyAAAAAAAAAAUAjIAAAAAAAAASQRkAAAAAAAAAAoBGQAAAAAAAIAkAjIAAAAAAAAAhYAMAAAAAAAAQBIBGQAAAAAAAIBCQAYAAAAAAAAgiYAMAAAAAAAAQCEgAwAAAAAAAJBEQAYAAAAAAACgEJABAAAAAAAASCIgAwAAAAAAAFAIyAAAAAAAAAAkEZABAAAAAAAAKARk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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "from math import ceil\n", + "selection = (df[\"x_ref\"] > -3000) & (df[\"x_ref\"] < 3000) \n", + "data = df.loc[selection, \"x_ref\"]\n", + "#func = sqrtSigmoid\n", + "func = fitFastSigmoid\n", + "#NBINS=[800, 900, 1000, 1100]\n", + "NBINS=[900, 1000]\n", + "#SHIFTS = [48, 50, 53, 52]\n", + "SHIFTS=[126., 140.]\n", + "minBinWidths = []\n", + "maxBinWidths = []\n", + "nBinsReal = []\n", + "fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(24, 24))\n", + "for i, BINS in enumerate(NBINS):\n", + " out, equal_bins = pd.qcut(data, q=BINS, retbins=True)\n", + " binWidths = np.array([ abs(equal_bins[j] - equal_bins[j+1]) for j in range(len(equal_bins)-1)])\n", + " minBinWidths.append( binWidths.min() )\n", + " maxBinWidths.append( binWidths.max() )\n", + " bin_numbering = np.arange(0, BINS+1)\n", + " equalbins_center = equal_bins[int(BINS/10):int(9*BINS/10)]\n", + " bin_numbering_center = bin_numbering[int(BINS/10):int(9*BINS/10)]\n", + " print(equalbins_center[0], equalbins_center[-1])\n", + " popt, pcov = curve_fit( func, xdata=equalbins_center, ydata=bin_numbering_center )\n", + " if i<2:\n", + " axes[0,i].plot(equal_bins, bin_numbering, '.', label='data')\n", + " axes[0,i].plot(equal_bins, func(equal_bins, *popt), label=f'p0={popt[0]}\\np1={popt[1]}\\np2={popt[2]}\\n')\n", + " axes[0,i].legend()\n", + " else:\n", + " axes[1,i-2].plot(equal_bins, bin_numbering, '.', label='data')\n", + " axes[1,i-2].plot(equal_bins, func(equal_bins, *popt), label=f'p0={popt[0]}\\np1={popt[1]}\\np2={popt[2]}\\n')\n", + " axes[1,i-2].legend()\n", + " shift = SHIFTS[i]\n", + " nBinsReal.append(ceil(func(3000, popt[0]+shift, popt[1], popt[2])))\n", + " print(f'BINS={BINS}')\n", + " print(f'shift={shift}')\n", + " print(popt)\n", + " print(f'at -3000 = {int(func(-3000., popt[0]+shift, popt[1], popt[2]))}')\n", + " print(f'at 0 = {int(func(0., popt[0]+shift, popt[1], popt[2]))}')\n", + " print(f'at 3000 = {int(func(3000., popt[0]+shift, popt[1], popt[2]))}')\n", + " print(f'at -3000 = {func(-3000., popt[0]+shift, popt[1], popt[2])}')\n", + " print(f'at 0 = {func(0., popt[0]+shift, popt[1], popt[2])}')\n", + " print(f'at 3000 = {func(3000., popt[0]+shift, popt[1], popt[2])}')\n", + " print()\n", + "binData = pd.DataFrame({'NBINS':NBINS, 'nBinsReal': nBinsReal,'minBinWidth':minBinWidths, 'maxBinWidth':maxBinWidths})\n", + "#ax = binData.plot(x='NBINS', y=['minBinWidth', 'maxBinWidth'], logy=True)\n", + "binData" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.6 (conda)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "a2eff8b4da8b8eebf5ee2e5f811f31a557e0a202b4d2f04f849b065340a6eda6" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/parameterisations/notebooks/magnet_kink_position.ipynb b/parameterisations/notebooks/magnet_kink_position.ipynb new file mode 100644 index 0000000..671d252 --- /dev/null +++ b/parameterisations/notebooks/magnet_kink_position.ipynb @@ -0,0 +1,933 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "import uproot\n", + "import awkward as ak\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import numpy as np\n", + "import mplhep\n", + "mplhep.style.use([\"LHCbTex2\"])\n", + "input_tree = uproot.open({\"/work/guenther/reco_tuner/data/param_data_selected.root\": \"Selected\"})\n", + "array = input_tree.arrays()\n", + "array[\"dSlope_fringe\"] = array[\"tx_ref\"] - array[\"tx\"]\n", + "array[\"z_mag_x_fringe\"] = (array[\"x\"] - array[\"x_ref\"] - array[\"tx\"] * array[\"z\"] + array[\"tx_ref\"] * array[\"z_ref\"] ) / array[\"dSlope_fringe\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(exptext: Custom Text(0.05, 0.95, 'LHCb'),\n", + " expsuffix: Custom Text(0.05, 0.955, 'Simulation'))" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure()\n", + "plt.hist(array[\"z_mag_x_fringe\"], bins=50,\n", + " range=[5150,5300], color='#2A9D8F', density=True)\n", + "plt.xlabel(r\"z$_{Mag}$ [mm]\")\n", + "plt.ylabel(\"Number of Tracks (normalised)\")\n", + "mplhep.lhcb.text(\"Simulation\")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(exptext: Custom Text(0.05, 0.95, 'LHCb'),\n", + " expsuffix: Custom Text(0.05, 0.955, 'Simulation'))" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bins = np.linspace( -0.4, 0.4, 50 )\n", + "sns.regplot(x=ak.to_numpy(array[\"tx\"]), y=ak.to_numpy(array[\"z_mag_x_fringe\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)\n", + "plt.xlabel(\"dx/dz(VELO)\")\n", + "plt.ylabel(\"$z_{Mag}$ [mm]\")\n", + "mplhep.lhcb.text(\"Simulation\")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(exptext: Custom Text(0.05, 0.95, 'LHCb'),\n", + " expsuffix: Custom Text(0.05, 0.955, 'Simulation'))" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bins = np.linspace( -0.25, 0.25, 50 )\n", + "sns.regplot(x=ak.to_numpy(array[\"ty\"]), y=ak.to_numpy(array[\"z_mag_x_fringe\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)\n", + "plt.xlabel(\"dy/dz(VELO)\")\n", + "plt.ylabel(\"$z_{Mag}$ [mm]\")\n", + "mplhep.lhcb.text(\"Simulation\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#bins = np.linspace( -300, 300, 50 )\n", + "#sns.regplot(x=ak.to_numpy(array[\"x\"]), y=ak.to_numpy(array[\"z_mag_x_fringe\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#bins = np.linspace( -300, 300, 50 )\n", + "#sns.regplot(x=ak.to_numpy(array[\"y\"]), y=ak.to_numpy(array[\"z_mag_x_fringe\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#bins = np.linspace( -1.0, 1.0, 50 )\n", + "#sns.regplot(x=ak.to_numpy(array[\"dSlope_out\"]), y=ak.to_numpy(array[\"z_mag_x\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(exptext: Custom Text(0.05, 0.95, 'LHCb'),\n", + " expsuffix: Custom Text(0.05, 0.955, 'Simulation'))" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/work/guenther/reco_tuner/env/tuner_env/envs/tuner/lib/python3.10/site-packages/IPython/core/pylabtools.py:151: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", + " fig.canvas.print_figure(bytes_io, **kw)\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bins = np.linspace( -1, 1, 50 )\n", + "sns.regplot(x=ak.to_numpy(array[\"dSlope_fringe\"]), y=ak.to_numpy(array[\"z_mag_x_fringe\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)\n", + "plt.xlabel(\"$\\Delta$dx/dz\")\n", + "plt.ylabel(\"$z_{Mag}$ [mm]\")\n", + "mplhep.lhcb.text(\"Simulation\")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(exptext: Custom Text(0.05, 0.95, 'LHCb'),\n", + " expsuffix: Custom Text(0.05, 0.955, 'Simulation'))" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/work/guenther/reco_tuner/env/tuner_env/envs/tuner/lib/python3.10/site-packages/IPython/core/pylabtools.py:151: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", + " fig.canvas.print_figure(bytes_io, **kw)\n" + ] + }, + { + "data": { + "image/png": "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HWQAmvCr55usf8GZPgAAAAAAkNRggvXg8fv9mpub08mTJ5VMJhUMBnXkyBFJ0tmzZ1UoFPSlL31JXq9X+XxeLpdLkUhkx7UOHDggwzC62T6wt/x+o3FNO/UAAAAAADRhzwVh0tZOr/X1df30pz9VJpNRJpMpf255eVlPPPFE1VFIr9e74zqvvPKKJiYmHO8X2LM+Ot64pp16AAAAAACasOeORpak02mdPHlSs7OzsixLBw4c0Llz53T48GGl02nde++9crvdOnny5K47wlKplKanp7vcObCHfO7uJuvvcqYPAAAAAAAkuSzLsnrdRK9lMhnF43H96Ec/0u23367NzU098cQT+v73v6+NjQ2NjY31ukXUmJqa0urqqkZGRnTw4MG6tfPz85qfn+9SZ6jy/mUpOmlvYP5HbpLiq9IN/HkDAAAAgEG1uLioxcXFujVra2sqFouanJzUyspKlzrbsiePRjYrGAzKMAwdPnxYLper/PHvfe97hGB9rlgsanV1tW7NTjdNQJfccEC670np6Yca1x4/SQgGAAAAAANuc3Oz4ev0XiII+3fRaFQej0epVEput1vHjh3Tvffe2+u20ICdHWGEmT125/HGQdg3Tkt3HO9OPwAAAAAAx4yNjWlycrJuTWlHWC/suaORL730kr74xS82rPvZz34mv99PSDKgSkcje7GNEk0qXpMebZC5P3VVGhntTj8AAAAAgJ7q5Wv6PTcsPxgManR0VF/60pf0gx/8QL/85S93rJudndXDDz+sN954o6v9AQAAAACAFljW1j+013vsrb0+cMCeOxrp8/l04cIFZbNZZbNZSZLb7dbMzIwCgYD8fr/+4i/+QgcOHNCpU6fk9/uVyWT0yU9+ssedAwAAAACAXVlFe6dNXJw2we72XBCWyWQUCoW0vr4u0zRlGIY2Nja0tLRUDsYkKRAI6PDhw9rY2FAkEtGLL77Yw66BPcw1svWXUaMaAAAAAAActueCsHA4rFQqpU996lPlj124cEHnzp3TqVOnyh87f/68lpaWZFmWLl261INOgSHhcvEvMgAAAACAvrDngjDLsqpCMGlrHtjs7KwSiYSeeOIJXbhwQceOHdPFixdlGIaOHTvWm2YBAAAAAADQNXsuCLt8+fKunztw4IDi8bguXbqkWCymRCKxLTQDAAAAAADA3rTnBvMcOnRIP/zhDxvWnDt3TuFwWP/6r//apc4AAAAAAICjXj7T6w7Q5/bcjrBoNKo/+7M/k8fj0V/+5V/WrT137pyOHDmiXC6nsbGxLnUIAAAAAACaZifkevohaXRUuuO48/1gIO25HWEej0ff+973FAwG9dhjj9WtdbvdOnz4sB5//PEudQcAAAAAAJr2/mXp2fqv8cvOPCK9v+lsPxhYey4Ik7Z2hf3VX/2VTp48qT/5kz/RD3/4Q21u7vyHYGJiQmfPnu1yhwAAAAAAwLaXn5E+fM9e7R/elV4+7Ww/GFh7MgiTpHQ6rbm5Oa2vrysajWp8fFzHjh3Tj370I/3yl7/UL3/5S504cUKpVEqmafa6XQAAAAAAsJtfPd9k/QvO9IGBt+dmhFVKJpMKBAKam5vT5cuXlclklMlkttV5vd4edAcAAAAAAGz5/Yaz9Rgae3ZHWEkwGNTGxoa+973v6cCBA7Isq+rhdrt16tSprvZkGIYCgYDt2kgkounpablcLo2Pj8vn8ykSicgwjJZ7SCQSCgQCGh8fl8vl0vT0tEKhkLLZbF+tCQAAAACAPjrubD2Gxp4Pwkqi0ajW19eVy+WUTqcVj8eVTqd16dIl/cVf/EVHrmGaplwuV8PH9PS0PB5Pw/USiYSmp6eVSqXKoZdpmsrn80qlUpqenlYikWiqx2w2q/HxccViMUlbR0gLhYLi8bjy+bwCgYACgUBTx0WdWBMAAAAAgLLP3d1k/V3O9IGB57Isy+p1E6149NFH9dRTT/W6jSqJRKIcBjVSKBTqhmGBQEDZbFZut1t+v18ej0eGYSifz2/bCZZOpxUMBhteM5vNlneihcNhJZPJbTU+n0/5fF4ej0e5XE5ut7vra9oxNTWl1dVVTU5OamVlpe31AAAAAAB97P3LUnTS3sD8j9wkxVelG8ac7wst6eVr+oENwm6++Wa98cYb+tjHPtbrVsrGx8dt7Xry+/1aWlra9fOxWEyJRELxeFzRaHTb53cK3Br9GE3T1KFDh2SapjwejwqFwo51hmFoenraVp9OrGkXQRgAAAAADJn/57T09EON6/7v/ybdcdz5ftCyXr6mH9ijkRsbG/rUpz6lRx99VC+99FKv2ynffTIajWppaanuI51O77qOYRhKJBJaWlraMQSTto55hsPhqo/l8/m6/YVCoXJIV2/XmsfjKe8uy2azSqVSXV0TAAAAAIAd3Wkj3PrGaUIw1DWwO8JGRkbkcrmqPub3+xUIBBQMBvWpT32qq/2UdjzttivKrlAopCNHjuwagpWYpqnx8T8O/9tt95hUvSNL2goR6x1PzGQyCoVCkiS3262Nje1323BizWawIwwAAAAAhkzxmvTovvo1T12VRka70w9axo6wNlTeATKbzSoWi2l6elo333yzHn30Uf3sZz9ruMaPfvSjtnrIZDIyDMP2fLB6SrvKGnG73VUzxuqFUPF4vPy23+9vOKOrct6YaZrKZDJdWRMAAAAAAMBJAxuEfe9735NlWeW7MErVodjGxoZSqZRCoZBGR0d15MgR/eAHP9Avf/nLbWu1O7NqYWFBbrdbR48ebWudZntZX18vvz0zM7NrXeVRRK/Xa2vtypDt7NmzXVkTAAAAAADASQ32FPavaDQqv9+vUCik9fV1ZTIZWZaln/zkJ7pw4YJM06waIJ/P58tztEp3Yizd7bCd3UmV646Pj8vj8VQd0XSKaZrl+Vx+v3/XMKp2dtiRI0dsre/1est3p6z9/jixJgAAAAAAdblGto4+NqoB6hjo3xCv16tCoaCHH35YoVBIFy5cUDqd1vr6ugqFguLxuPx+v6Ttu8UymYwikYgikUhbPdQehzQMo7wTzeVyKRQKNRxk34pz585J2tplVW/4fjabrXq/cldWPbV1lV+DE2sCAAAAAFCXy7U1/6veo2aWOFBroIOwkng8rosXL+r8+fP68z//c7366qs6dOiQvvWtb+n8+fMqFotaWlpSOBwuhzGVwVirDMPYFgrVymQy8vl8bQdulUzTVCQSkdfr1dLSUt35XBcvXqx6v9Esr5Kbb7656v3l5WVH1wQAAAAAAHDangjCpK3dYb/5zW/0hS98QV6vV9/+9rerPj87O6uTJ0/qN7/5jTY2NpRMJsu7xVrl8XiUTCYVj8erQradpFIp+Xy+tq4nbYVvPp9PbrdbFy5caLgbq3QUsbJnO2rrKu+G6cSaAAAAAAAATtszQVhJMpnU//gf/0MnT54s7w6rdeDAAc3Nzen8+fM6f/58W9cLh8OKRqNKJpMqFAra2NhQPB7fcZdUPp8vzyVrRSaT0fT0tAzDkGmaGh8fVyKRqPuc2tCqVaV5ZE6tCQAAAAAA4LQ9F4RJW8PjDcPQ7bffLq/Xqx/+8Id1a2dnZzt2bbfbrWg0qo2NDaXT6W2BWDabbRheVTJNU4lEQtPT0wqFQts+H4vFdvx45fNbUdt35R0qnVgTAAAAAADAaQN718hG3G630um0MpmMjh49qrNnzyqdTuuTn/zkttp6QVI7gsFgOWirHAy/sLCgaDRqa41sNqtCoVAO93aaSZbJZJRIJGyv2Qondm91Ys21tTVNTU21vc78/Lzm5+fbXgcAAAAAgL1qcXFRi4uLba+ztrbWgW5as2eDsJJgMKj19XWFQiF5PB4lEgn9p//0n6pq5ubmHLu+2+1WLpeTz+crh2GmaSqbzdqaURYMBhUMBqs+lkqlFIvFqoKkWCymcDi8bdeV2+3uSOBUua4Ta7aqWCxqdXW17XU2NzfbXgMAAAAAgL1sc3OzI6/Be2nPB2HSVuCytLSkRCKhb33rW3V3hznl1KlTVcPyl5aWWh7WHw6H5ff75fP5qgKpVCq1bVfYxMRER0KriYkJR9ds1cjIiA4ePNj2OmNjY22vAQAAAADAXjY2NqbJycm211lbW1OxWOxAR80biiBMkt544w3NzMwoGo0qkUjI4/EolUrpr//6r7tyfa/XK7/fXz7a2O7AeY/HowsXLlSFaxcvXtxW1+quq9qgq3ZHWKfXbNXBgwe1srLS9joAAAAAAKC+To0Vmpqa6tnOsj0RhL3xxhvlOykahqFCoSDDMGQYhtbX17cFMC6XS5ZlKRwOK51OK51O62Mf+5jjfQYCgR1nfLXK6/UqGAwqk8lI2jlcm5mZqZpPZpqmrQCqdpD99PS0o2sCAAAAAAA4bWCDsCNHjpTDr3osy6r7ufPnz+uLX/zijrupOs3j8ZTf7sSxQEk6duxYOQjb6XtRuWNM2grLvF5vw3ULhULV+5XHOJ1YEwAAAAAAwGkDG4Tlcrnyzq563G63PB5P+TE9Pa2JiYny+wcOHOhSx9VBWCeOBUqqCqB2WnNmZqbqfbuhVWWoVvoeOrkmAAAAAACA0wY2CKs0Pj6uo0ePVgVe3Q657FheXi6/HQgEOr5+bUAlbQVllXd5vHjx4ra7UO6kstfadZ1YEwAAAAAAwGkjvW6gHffee6+8Xq82NjaUSqW0vLysjY0NjY+P910IJlUfDezUscDKuWC7hWtHjx4tv10526ueyrpYLNaVNQEAAAAAAJw0sEGY3+/XuXPnyuHX2bNnZVmWotGopqenddttt+nRRx/VP/3TPzVc66WXXupCxyrP8opGox1bsxQuud3uXXdlRSKR8tt2hvVX1ng8nh1DOyfWBAAAAAAAcNLABmGVu58OHDigYDCoc+fOaX19XRcvXtRf/dVf6eLFi5qdndXo6KiOHDmiH/7wh/rlL3+5ba1kMul4v5lMRoZhyO1268SJEx1bd2FhQZJ06tSpXWu8Xm9V8FQK5HaTTqfLb++2c8uJNQEAAAAAAJzkshpNmx9wly9f1tLSks6dO6dsNqvLly/L7XbL7/fryJEjkraCmWvXrjW1bjabVSgUkmma8vv9isfjuw6MNwxDPp9Ppmkql8vVHSyfSCR09uxZ+f1+nThxou5Q/VgspkQioWg0qng8XrdfwzA0PT0taSvEyuVyO9aZpqnx8XFJW7vulpaWurqmXVNTU1pdXdXk5KRWVlbaXg8AAAAAAHRHL1/TD+yOMLt22i328MMPK5fLKRqNtrw7KZ1Ol4fFZ7NZ+Xy+quOCJaXPTUxMqFAo1A3BTNNULBZTPp9XIpHQ+Pj4rv2FQiElEgnF4/GGIZi0dRyxtCurtP5OZmdnJW0dtazcxdWtNQEAAAAAAJyy54OwWl6vV/F4XL/5zW+0vLysL37xiy2tEwqFtn0slUppfHxcoVBIkUhEPp9PgUBA4XBYuVxOHo+n7pput3tbTSkQC4VCisViCgQC5d1VhUKhqXljwWBQS0tLcrvdisViCoVCyufzMk2zHNjl83l5vV5dunSp7m40J9cEAAAAAABwwp4/GmnHzMyMlpeXm36eYRiKx+PKZrNaX1+XaZpyu92amJiQ1+vVsWPH5Pf7mwp/TNPUwsKCstmsDMPYtmYgENDRo0fbDpRKRzArrzEzM6NIJLLr0P1erLkbjkYCAAAAADCYevmaniBM0oULF8rH9zAYCMIAAAAAABhMzAjrMUIwAAAAAACAvW8ggrAf/OAHeumll3rdBgAAAAAAAAbYQARh//N//k8FAgH9wz/8Q1vrnDp1SqOjo/rzP/9zvfrqqx3qDgAAAAAAAINgIIIwSbIsS+FwWN/+9rdbXiMWi8myLP3mN7+R1+vVG2+80bkGAQAAAAAA0Nf29bqBZp0/f16FQkFnz55t+rmHDh3S5cuX5ff7JW0FY62sAwAAAAAAgMEzcEHY8vKyQqGQjhw5opdeekkf+9jHbD83l8tVvX/bbbd1uj0AAAAAAAD0qYE5GlkpnU4rFArJ6/XqX//1X1ta49KlS1pfX+9wZwAAAAAAAOhXAxmESVI0GtVTTz0lr9erf/qnf2rquZcvX1YgENDMzIxD3QEAAAAAAKDfDGwQJkl+v18XL17U3Nyc7TtKvvTSS/J4PLp06ZJCoZDDHQIAAAAAAKBfDHQQJkkej0fLy8s6e/ZswztKfv/731cgENDGxobcbrcefvjhLnUJAAAAAACAXhv4IEyS3G63zp8/r/X1dR07dmzHmhMnTujxxx+XZVlyuVyKx+Nd7hIAAAAAAAC9tCeCsJKTJ09qdnZWR44c0e9+97vyxy9cuFAOvlwul7xeL7vBAAAAAAAAhszABWGNBuOHw2Elk0l98YtfLN9RshSCWZZV9T4AAAAAAACGx75eN2DHoUOHJG0FWeFwWNlsVp/85Cd3rfd6vTp79qzuvfdeffvb31Y2m5XL5ZJlWfJ6vfriF7/YrdbhsLW1NU1NTdWtmZ+f1/z8fJc6AgAAAABgeC0uLmpxcbFuzdraWpe62W4ggrB4PF4OtJaWluT3+xWLxeoebywN0f8P/+E/lD/mcrl2nSGGwVQsFrW6ulq3ZnNzs0vdAAAAAAAw3DY3Nxu+Tu+lgQjCJOnAgQO69957de+99zb1vPPnzysWi+n73/9+eT4Y9o6RkREdPHiwbs3Y2FiXugEAAAAAYLiNjY1pcnKybs3a2pqKxWKXOqrmskqDs/a4TCajo0eP6tSpU/rrv/7rXreDNk1NTWl1dVWTk5NaWVnpdTsAAAAAAMCmXr6mH7hh+a0KBoNaXl7W2bNne90KAAAAAAAAemBogjBpa4j++fPne90GAAAAAAAAemCogjAAAAAAAAAML4IwAAAAAAAADAWCMAAAAAAAAAwFgjAAAAAAAAAMBYIwAAAAAAAADAWCMAAAAAAAAAwFgjAAAAAAAAAMBYIwAAAAAAAADAWCMAAAAAAAAAwFgjAAAAAAAAAMBYIwAAAAAAAADAWCMAAAAAAAAAwFgjAAAAAAAAAMBYIwAAAAAAAADAWCMAAAAAAAAAwFgjAAAAAAAAAMBYIwAAAAAAAADAWCMAAAAAAAAAwFgjAAAAAAAAAMBYIwAAAAAAAADAWCMAAAAAAAAAwFgjAAAAAAAAAMBYIwAAAAAAAADAWCMAAAAAAAAAyFfb1uAGjH2tqapqam6tbMz89rfn6+Sx0BAAAAADC8FhcXtbi4WLdmbW2tS91sRxCGgVYsFrW6ulq3ZnNzs0vdAAAAAAAw3DY3Nxu+Tu8lgjAMtJGRER08eLBuzdjYWJe6AQAAAABguI2NjWlycrJuzdramorFYpc6quayLMvqyZWBNkxNTWl1dVWTk5NaWVnpdTsAAAAAAMCmXr6mZ1g+AAAAAAAAhgJBGAAAAAAAAIYCQRgAAAAAAACGAkEYAAAAAAAAhgJBGAAAAAAAAIbCvl43AAB7jWVJxQb34x1xSS5Xd/oBAAAAAGwhCAOADita0r7v1K+5+l1plCAMAAAAALqKo5EAAAAAAAAYCgRhAAAAAAAAGAoEYQAAAAAAABgKBGEA0ANnXul1BwAAAAAwfAjCAKDD7IRcD2UIwwAAAACg2wjCAKCDLn8gPfacvdpH/lHa/MDRdgAAAAAAFQjCAKCDnslL712xV/vuh9LpvLP9AAAAAAD+iCAMADro+debq3+hyXoAAAAAQOsIwgCggzbed7YeAAAAANC6fb1uAMDwsixLxQY1I5JcLlc32umI8RucrQcAAAAAtI4gDEDPFCWNPfdi3ZrNe76s0e600xF3f1o6/y/26+/6tHO9AAAAAACqcTQSADroAa904357tTddJz3odbYfAAAAAMAfEYQBQAcduF568h57tSe/Jo1d72g7AAAAAIAKBGEA+tpP3lztdQtNO364cc3poL06AAAAYCeWJV0r1n9YVq+7BPoPM8IA9IydkCuc/7VGXS59/dbJLnTUPfcTggEAAKANRUva9536NVe/K40Ozn2ngK5gRxiAnrh85Yr+9tXXbNX+zauvafPKFYc7AgAAAADsdQRhAHri2Tff0nvXirZq3716TT9+8y2HOwIAAAAA7HUEYQB64ue/fbup+l80WQ8AAAAAQC1mhGGgra2taWpqqm7N/Py85ufnu9QR7DI/bO6oozlARyNHXFvzGBrVAAAAAMBes7i4qMXFxbo1a2trXepmO4IwDLRisajV1foD1zc3N7vUDZrhvm5/c/X7m6vvJZeLoaQAAADovTOvSA/6et0Fhs3m5mbD1+m9RBCGgTYyMqKDBw/WrRkbG+tSN2jGVz9+iy68/W+267/y8Vsc7AYAAAAYLGdeaVzzUEYaHZGOc8dydNHY2JgmJyfr1qytralYtDczutNclmVZPbky0IapqSmtrq5qcnJSKysrvW4HLbh85Ypue/ElWwPzb9o3qn/50hc0NkC7wgAAAACnXP5AmnxCes/G9JCbrpNWT0hj1zvfF2BXL1/TMywfQE8c2L9ff3f7Z2zV/v3tnxnMEMyypOK1+g/+LQIAAABNeiZvLwSTpHc/lE7nne0HGCQcjQTQM1+/dVLh/K/r1pzyflZfv7X+ttq+ZRWlRxv8Z/apq5JrtDv9AAAAYE94/vXm6l94Xfrm553ppZMsy1Kj8yIjklwuBvKidQRhAPrasUENwQAAAACHbLzvbH2vFCWNPfdi3ZrNe74s/hkZ7eBoJAAAAAAAA2T8Bmfrgb2MIAwAAAAAgAFy96ebq7+ryXpgL+NoJICeGdHW1uZGNXvay2ekzz/Y6y4AAAAwQB7wSo+/aP+ukQ96ne8JGBR7/jUmgP7lcrk02uAx0IMwXz7TuObph6R/tlEHAAAA/LsD10tP3mOv9uTXpLHrHW2nq37y5mqvW8CAIwgDACe8f1l69jF7tWcekd7fdLYfAAAA7CnHDzeuOR20V9cv7IRc4fyvCcPQFoIwAHDCy89IH75nr/YP70ovn3a2HwAAAAyd+wcoBLt85Yr+9tXXbNX+zauvafOKjXOhwA4IwgDACb96vsn6F5zpAwAAABgAz775lt67VrRV++7Va/rxm2853BH2KoIwAHDC7zecrQcAAAD2kJ//9u2m6n/RZD1QQhAGAE746Liz9QAAAMAeYn7Y3FFHk6ORaNG+XjcAAHvS5+6W/tf5Jurvcq4XAAAA7DkjLunqdxvXDAr3dfubq9/fXD1Qwo6wHjAMQ4FAwFZtPp9XJBLR9PS0XC6XXC6XpqenFYvFZJpmS9c3TVOxWEyBQKC87vT0tEKhkFKpVEtrSlIikVAgEND4+HjVmtlstuU1gYF15wPSdTfaq/3ITdKdDzrbDwAAAPYUl0saHan/cA1QEPbVj9/SVP1XmqwHSgjCOsg0zXJYVe8xPT0tj8fTcK1QKCSfz6dUKiXDMMqfMwxDiURC4+PjTQdXlc8LBAJKJpPK5XKKxWIyDKMcujUTXmWzWY2PjysWi0mS0um0CoWC4vG48vm8AoGAAoFAy8EdMJBuOCDd96S92uMnpRvGnO0HAAAA6GP33foJ3ThqL6K4ad+o7r/1Ew53hL3KZVmW1esm9opEIlEOgxopFAq7hmGmacrn81WFX/WEw2Elk8mGdaFQSJlMRl6vV7lcbseaSCRSDtdyuZy8Xm/dNbPZbHl32259+Hw+5fN5eTwe5XI5ud3uhr02MjU1pdXVVU1OTmplZaXt9QBHFK9JjzY4gf6N09L/+4Hu9AMAAAD0sTP/Z0Xh/K8b1v2D73P6+q2TXegITunla3p2hHXQwsKCrTq/3193R1goFJJhGPJ6veXdVYVCQel0WtFodFt9KpVSJpOpe81EIlGuuXDhwq51yWSy3Nvs7GzdNUu71iTJ4/HsGsal02lJWzvZSvUA/t0d9/e6AwAAAKAv2Am3Tnk/SwiGtjAsv0NSqZRM01Q0Gm04/2tmZqbuOtlsVtFoVPF4vOpzHo9HwWBQkUhEoVBI+Xy+/Lm5uTkFg8Fd1y3tVPN6vQ13ZAWDQSUSCZmmqUwms+u6oVCofNyx3k64Ut+ZTEbZbFapVErhcLhuDwAAAACAHViWZBXr17gGbEBYE44RgqFNBGEdEo/H5fF4toVXrazj9/vrruPxeJROpzU9PV3+mGmaymaz8vv92+or5301mk0mSUeOHCm/ffHixR2DMMMwqtY9evRo3TWPHTtW3pEWi8UIwgAAAACgFVax8fiNp65KrtHu9AMMGIKwDshkMjIMw9acrnry+bwMw9h1flelUuhWuRMrn8/vGIRVzhqr3EVmx80337zjxyuDOr/fb2uXWUmjnWbAnuEa2fo/IY1qAAAAAGhE0uY9X25YA7SD36EOWFhYkNvtbrgrqpGzZ88qHA7bHiZfG3q98847O9ZNTEyU3zYMo+EQ/osXL5bf3m0HWeXdKhsN1N9prbNnz9p6DjDQXC5pZLT+Y49uWQcAAACa5XK5NNrg4eL/P6NNBGFtyufzyufzMk1T4+Pjmp6eViQSaTi8fifHjh1r6mhlbQBVeVSyUm2YFYlE6q5b6t3tdu+4a6t2V1nlUcp6Kvtt5fsDoLcsS7pWrP/gPsQAAAAA+hlBWJtqh8QbhqFUKqVQKCSXy7VtqH09dgbZVyoNqi/ZbfeW1+utCqGy2eyud29MpVLlHWO7hXKVs8HqXbdWbV2zxzQB9FbRkvZ9p/6jSBAGAADQey+f6XUHQN8iCGtD7cD4nWQyGfl8voa7sFq9fqWd5oOVnDp1altftWFYNpst95lMJncdaF95dFKS7fCudt7Y8vKyrecBAAAAAP6dnZDr6YekfyYMA3ZCENYGj8ejZDKpeDyucDhcd2dUKpWSz+fr6PUrg6RGd2H0er1Kp9NVH8tkMpqenlY+n1cikVAgEJDH49HS0lLd9WoDuFZ3hBUKBVvPAwAAAABIev+y9Oxj9mrPPCK9v+lsP8AA4q6RbaoNjEzTVCqV0sLCwraji/l8XoFAQEtLSx25duVdKmuPaO4kGAwqmUxW7U4zDKMc0EWjUVszyhoN27er9vsDAAAAAKjj5WekD9+zV/uHd6WXT0tf+KazPQEDhiCsw9xut6LRqKLRqDKZjObm5qoCn2w2q0QioWg02tZ1DMMoz9iKx+O2d2WVgrudjmpms1mZptnwqGOrAVbtuuvr6y2tU2ltbU1TU1NtrzM/P6/5+fm21wGG3ZlXpAc7u/kVAAAAJb96vsn6FwjC0FGLi4taXFxse521tbUOdNMagjAHBYNB+f1+zc7OVg2GX1hYaDsIK+3c8ng8Ta8VDoeVy+WUSqWqPp7P53Xo0CFduHBh2x0pndCJHWHFYlGrq6ttr7O5yZZhoJEzrzSueSgjjY5Ixw873w8AAMDQ+f2Gs/VAA5ubmx15Dd5LBGEOc7vdyuVy8vl85TDMNE1ls9m6w+3ryefzSqVScrvdLR2zjEQiSqVSCofDymazVUcdTdOUz+fT0tLSrv253e6OhFjN3CFzNyMjIzp48GDb64yNjbW9BrCXXf5Aeuw5e7WP/KN09/8ljV3vaEsAAADD56PjztYDDYyNjWlycrLtddbW1lQsFjvQUfMIwrrk1KlTVcPy6wVNjczNzUmSLly4YPtIZEkgEFA2m62aB1YKxmrrdutxYmKiI0HYxMRE22scPHhQKysrba8DoL5n8tJ7V+zVvvuhdDovffPzzvYEAAAwdD53t/S/zjdRf5dzvWAodWqs0NTUVM92lnHXyC7xer1VoVKrA+cjkYjy+bzS6XTTxxd9Pl95J1rlUPxkMrntjpKSFAqFdgy8Wt3JVbtWJ3aEAeiO519vrv6FJusBAABgw50PSNfdaK/2IzdJdz7obD/AACII66JAINDW81OplFKplJLJpILBYFPPDYVC5aOZlXebLAkGg8rlclXhlGmaO96NcmZmpup9u7vDaofjT09P23oegN7beN/ZegAAANhwwwHpvift1R4/Kd3ACBigFkFYF1UeY2z2WGA2m1UkElEymSzf+dEuwzCUyWQkbe1M2+04pdfrVS6Xq/pYKpXaFnRVHvEsrW9HoVCoer/Vo6EAum/8BmfrAQAAYNOdxxvXfOO0dIeNOmAIEYR1UWUA1cyxwHw+r0AgoHg83nQIJlXvAKvdzbVTj7U7xpaXl6ver13DbhBWGai53e6m55sB6J27P91c/V1N1gMAAKCD7ri/1x0AfYsgrIsqAyW7xyQNw9Ds7Kyi0aii0WhL160MoOwcR6wN22qDLq/XWxXkXbx40VYflV9/o0AOQH95wCvduN9e7U3XSQ82N8IQAAAAALqCIKyLKo8G2jkWaBiGfD6fwuFw1XD7Rs9JJBJVH6uczVV7PHE3jQbxHz16tPx2afZYI5V1O80eA9C/DlwvPXmPvdqTX5PGrne0HQAAAABoyb5eNzBMSnO67OzsMk1TgUBAR48etR2CSVtD8U+dOlX1scojiK3crXKnI4yRSESpVErS1vyyRiprPB4P88GAAXT8sPRQpn7N6eBWHQAAABziGpGeutq4BsCO+NPRJZlMRoZhyO1268SJE3VrTdOUz+eTx+NRLBaTYRgNH9lstjzEvnY317Fjx8pvLy8v27rLY2VgtlNo5fV6qz5eCvl2k06ny2+zGwzYu+4nBAMAAH3EsqRrxfoPy+p1l01yuaSR0foPl6vXXQJ9ix1hLcpmswqFQjJNU36/X/F4fNfjhIZhaG5uTpJ04cKFhoPyZ2dnywGXnZlelWoH3Ut/DK2y2axM09TCwkLdXWalOkl165LJZLm/hYUFBYPBHetM0yzvHvP7/S0N/AcAAACAZhUtad936tdc/a40Sm4EDA12hLUonU6Xw6LSbqxIJLKtrvS5iYkJFQqFhrO3fD6f7ZlbO9ktZEqn0+UALpFIlIOpWoZhKBQKSdoKreod4/R4POWdXvl8fttsspLZ2VlJW3eKrNwZBgAAAAAA0E0EYS0qhUWVUqmUxsfHFQqFFIlE5PP5FAgEFA6Hlcvldpy1VbumEyGYtBVCXbp0qVwTiUQUCASUSqWUz+eVzWYVi8U0PT0t0zQVj8e1tLTU8JrBYFBLS0tyu92KxWLlr8E0zXIImM/n5fV6denSpYa74QAAAAAAAJzisqyBOxHdNwzDUDweVzab1fr6ukzTlNvt1sTEhLxer44dOya/39934U8+n1cymVQ2my3PAvN4PPJ6vfJ4PDpx4kRLPScSCZ09e1aGYZS/FzMzM4pEIrsem2zV1NSUVldXNTk5qZWVlY6uDWBnlrV1vKCeERcjKQAAQP+4VrR5NJItIkBX9fI1PUEYBhJBGAAAAIBG7ARhTwelB33d6QfAll6+pif3BgAAAADsSWdeaVzzUMZeHYC9gSAMAAAAALDnXP5Aeuw5e7WP/KO0+YGj7QDoEwRhAAAAAIA955m89N4Ve7Xvfiidbv2+ZQAGCEEYAAAAAGDPef715upfaLIewGAiCAMAAAAA7Dkb7ztbD2AwEYQBAAAAAPac8RucrQcwmAjCAAAAAAB7zt2fbq7+ribrAQwmgjAAAAAAwJ7zgFe6cb+92puukx70OtsPgP5AEAYAAAAA2HMOXC89eY+92pNfk8aud7QdAH2CIAwAAAAAsCcdP9y45nTQXh2AvYEgDAAAAAAwtO4nBAOGCkEYAAAAAAAAhgJBGAAAAAAAAIbCvl43ALRjbW1NU1NTdWvm5+c1Pz/fpY4AAAAA9IsRl3T1u41rAHTO4uKiFhcX69asra11qZvtCMIw0IrFolZXV+vWbG5udqkbAAAAAP3E5ZJGCbqArtrc3Gz4Or2XCMIw0EZGRnTw4MG6NWNjY13qBgAAAACA4TY2NqbJycm6NWtrayoWi13qqJrLsiyrJ1cG2jA1NaXV1VVNTk5qZWWl1+0AAAAAAACbevmanmH5AAAAAAAAGAoEYQAAAAAAABgKBGEAAAAAAAAYCgRhAAAAAAAAGAoEYQAAAAAAABgKBGEAAAAAAAAYCgRhAAAAAAAAGAoEYQAAAAAAABgKBGEAAAAAAAAYCgRhAAAAAAAAGAoEYQAAAAAAABgKBGEAAAAAAAAYCgRhAAAAAAAAGAoEYQAAAAAAABgKBGEAAAAAAAAYCgRhAAAAAAAAGAoEYQAAAAAAABgKBGEAAAAAAAAYCgRhAAAAAAAAGAoEYQAAAAAAABgKBGEAAAAAAAAYCgRhAAAAAAAAGAr7et0AAOwVlmWp2KBmRJLL5epGOwAAAACAGgRhANAhRUljz71Yt2bzni9rtDvtAAAAAABqcDQSAAAAAAAAQ4EdYRhoa2trmpqaqlszPz+v+fn5LnUEAAAAAMDwWlxc1OLiYt2atbW1LnWzHUEYBlqxWNTq6mrdms3NzS51AzT2kzdXdfxP64e3AAAAADCoNjc3G75O7yWCMAy0kZERHTx4sG7N2NhYl7rBsPvJm43/Yx/O/1qjLpe+futkFzoCAAAAgO4aGxvT5GT91ztra2sqFhvdaswZLsuyrJ5cGWjD1NSUVldXNTk5qZWVlV63A+jylSu67cWX9N61xv8xv2nfqP7lS1/Q2P79XegMAAAAAPpLL1/TMywfADrg2TffshWCSdK7V6/px2++5XBHAAAAAIBaBGEA0AE//+3bTdX/osl6AAAAAED7CMIAoAPMD680V3+luXoAAAAAQPsYlg8AHeC+rrl5X+5+nA9mWZLV4Hina0RyubrTDwAAAOqyLEuNhnOMSHLx/9+AMoIwAOiAr378Fl14+99s13/l47c42E2LrKL0aIO/Fp66KrlGu9MPAAAA6ipKGnvuxbo1m/d8Wfy/N+CPOBoJAB1w362f0I2j9v6TetO+Ud1/6ycc7ggAAAAAUIsgDAA64MD+/fq72z9jq/bvb/+MxvrxaCQAAAD2nJ+8udrrFoC+QhAGAB3y9VsnG9ac8n7WVl3fevlMrzsAAADAv7MTcoXzvyYMAyoQhAFAFx3r5xDMTsj19EPSPxOGAQAA9NrlK1f0t6++Zqv2b159TZvctRyQxLB8AOiYEW0NI21U05fevyw9+5i92jOPSJ+7W7phzNmeAAAAsKtn33xL711rdM/ILe9evaYfv/mWHvF80uGugP7Xt6/JAGDQuFwujTZ49O2tq19+RvrwPXu1f3hXevm0s/00wbKka8X6D8vqdZcAAACd9fPfvt1U/S+arAf2KnaEAQCkXz3fZP0L0he+6UwvTSpa0r7v1K+5+l1ptE8zSAAA0COWJVkNdlS5RqQ+/YdM88PmjjqaHI0EJBGEAQAk6fcbztYDAAD0G6soPdrgJfFTVyXXaHf6aZL7uubuQu7mruWAJI5GAgAk6aPjztYDAACgo7768Vuaqv9Kk/XAXkUQBgDYGn7fVP1dzvThkDOv9LoDAACAzrrv1k/oxlF7L+lv2jeq+2/9hMMdAYOBIAwAIN35gHTdjfZqP3KTdOeDzvbTBDsh10MZwjAAANCCl8/0uoNdHdi/X393+2ds1f797Z/RGEcjAUkEYQAASbrhgHTfk/Zqj5+Ubhhzth+bLn8gPfacvdpH/lHa/MDRdgAAwCCxE3I9/ZD0z/0bhn391smGNae8n7VVBwwLgjAAwJY7jzeu+cZp6Q4bdV3yTF56z+YNkN79UDqdd7YfAAAwIN6/LD37mL3aM49I728624+DjhGCAVUIwgAA9t1xf687qPL8683Vv9BkPQAAsMeypGvF+g/L6nWXFV5+RvrwPXu1f3hXevm0s/0A6JoG94oFAKB/bbzvbD0AALCnaEn7vlO/5up3pVFXd/pp6FfPN1n/gvSFbzrTSxtGJG3e8+WGNQD+iCAMALDFNSI9dbVxTR8Zv8HZegAAsEf9fsPZ+i5xuVwa7XUTwIDpr1c0AIDecbmkkdH6D1e//DPulrs/3Vz9XU3WAwCAPeqj487WA+hbBGEAgIH1gFe60eadwG+6TnrQ62w/AABgQHzu7ibr73KmDwBdRxAGABhYB66XnrzHXu3Jr0lj1zvaDgAAqOPMK73uoMKdD0jX3Wiv9iM3SXc+6Gw/ALqGIAwAMNCOH25cczporw4AALTGTsj1UKaPwrAbDkj3PWmv9vhJ6YYxZ/sB0DUEYQCAPe9+QjAAABxz+QPpsefs1T7yj9LmB462Y9+dxxvXfOO0dIeNOgADg7tGYqCtra1pamqqbs38/Lzm5+e71BEAAAAwXJ7JS+9dsVf77ofS6bz0zc8721PH3HF/rzsABs7i4qIWFxfr1qytrXWpm+0IwjDQisWiVldX69Zsbm52qRsAAABg+Dz/enP1L7w+QEEYgKZtbm42fJ3eSwRhGGgjIyM6ePBg3ZqxMc7zA3vZiEu6+t3GNQAAwBkb7ztb7xjXiPTU1cY1AJoyNjamycnJujVra2sqFotd6qgaQRgG2sGDB7WystLrNgD0kMsljRJ0AQDQM+M3OFvvGJdLco32ugtgz7Eznmhqaqpnu8aItwEAAAAALbv7083V39VkPQB0EkEYAAAAAKBlD3ilG/fbq73pOulBr7P9AEA9BGEAAAAAgJYduF568h57tSe/Jo1d72g7AFAXQRgAAAAAoC3HDzeuOR20VwcATiIIAwAAAAA47n5CMAB9gCAMAAAAAAAAQ2FfrxsAAAAAAAy2EZd09buNawCg1wjCAAAAAABtcbmkUYIuAAOAo5EAAAAAAAAYCgRhAAAAAAAAGAoEYQAAAAAAABgKBGEAAAAAAAAYCgRhPWAYhgKBgK3afD6vSCSi6elpuVwuuVwuTU9PKxaLyTRNx3rM5/PKZDJKJBLKZrO2npNIJBQIBDQ+Pl7uMxQK2X4+AAAAAACAkwjCOsg0zXJYVe8xPT0tj8fTcK1QKCSfz6dUKiXDMMqfMwxDiURC4+PjSqVSHes9kUjI5/PJ5XJpdnZWFy9elNfr1czMTN3nZrNZjY+PKxaLSZLS6bQKhYLi8bjy+bwCgYACgYCjwR0AAAAAAEAj+3rdwF7STChVCo12YpqmfD5fVfi1m0gkolwup2QyafvatdeKxWLl3r1er5aWluT3+209P5vNlne3hcPhqj48Ho+CwaB8Pp+y2ax8Pp9yuZzcbndLvQIAAAAAALSDHWEdtLCwYKvO7/fX3REWCoVkGIa8Xm95d1WhUFA6nVY0Gt1Wn0qllMlkmu43lUrp0KFD5RAsmUwql8vZDsFKu9akrdBrtzAunU5L2trJVqoHAAAAAADoNnaEdUgqlZJpmopGow3nf9U7aphKpZTNZhWNRhWPx6s+V9phFYlEFAqFlM/ny5+bm5tTMBi03W8sFlMikSivu7S01PC4Zq1QKFQ+7lhvh1up70wmo2w2q1QqpXA43NS1AAAAAAAA2uWyLMvqdRN7wfT0tCSpUCi0vU4pmKrHMIzyNUvsHmkMhULlHWRut1uXLl1q+rhi7fU3NjbqrpHJZMq7wdxutzY2Npq6Xq2pqSmtrq5qcnJSKysrba0FAAAAAAC6p5ev6Tka2QGZTEaGYdTdFWVHPp+XYRjlo4T1eDyebTvGKneI7SYQCFQdo2x1Zlfltf1+f8M1KnermabZ0lFOAAAAAACAdhCEdcDCwoLcbreOHj3a1jpnz55VOBy2HUzV7v5655136taXjl2WJJPJpo9DVq5V4vV6bT2n8lpnz55t6boAAAAAAACtYkZYm/L5fHkn1vj4uDwej/x+vwKBQFMzuyTp2LFjTQVTtQFU7VHJSoZhKBKJVD231TldtTvPjhw5Yut5Xq+3fCdMdoQBAAAAAIBuY0dYm2qPQxqGoVQqpVAoJJfLtW2ofT1er7epY4qlQfUlje5EWenEiRO2r1OrcldZo+vWq7P7fQEAAAAAAOgEgrA2GIaxLRSqlclk5PP5qnZjdfL6lXYblG8YRlXo5Ha7m96tVunixYtV79sN726++eaq95eXl1vuAQAAAAAAoFkEYW3weDxKJpOKx+MKh8N1d0alUin5fL6OXr8ySKp3zDGZTFa9XwrMSndynJ6elsvl0vj4uHw+nxKJxLbdZpVqA7hWd4S1e4dNAAAAAACAZjAjrE21AZRpmkqlUlpYWNgWJuXzeQUCAS0tLXXk2pUBV707VlYOtpekiYkJ+Xy+bUcTTdMszzyLxWJKp9M77hyrDcJaVS9sAwAAAAAA6DSXZVlWr5vYqzKZjObm5rYFPvF4XNFotK21DcMoD8evt15lXYnb7VY8HtfRo0fLxxoNw1A8Ht8Wmu0Uhrlcrqr37f4KZbNZBQKB8vvBYFDpdNrWc2tNTU1pdXVVIyMjOnjwYEtrVJqfn9f8/Hzb6wAAAAAAsFctLi5qcXGx7XXW1tZULBY1OTmplZWVDnRmHzvCHBQMBuX3+zU7O1u1+2phYaHtICwej0vaOm5Yb63a3Vtut1uXLl3aNterdMyzdp7Z3Nyc/H5/U0P87erEjrBisajV1dW219nc3Gx7DQAAAAAA9rLNzc2OvAbvJYIwh7ndbuVyuaqjiKZpKpvN7jrcvpF8Pq9UKiW3293wmGVtEBYOh+uGWuFwWLlcrrwzzDRNLSwslIO30tfUiRCrE+Fap3aEjY2Ntb0GAAAAAAB72djYmCYnJ9tep7QjrBcIwrrk1KlTVcPyl5aWWg7C5ubmJEkXLlxoOKi+diD9kSNHGq4fi8WqjkgmEomqIGxiYqIjQdjExETbaxw8eLDr2ygBAAAAABhGnRorVBp31AvcNbJLvF5vVfDV6sD5SCSifD6vdDotr9fbsL42sLKzC8vj8Wxbu/JoZ6s7uVrpBQAAAAAAoFMIwrqoclB8K1KplFKplJLJ5I53c9xJ7aB8u2ZmZqrerwzuaj9nd3fY+vp6R3oDAAAAAABoBUFYF1UeY2z2WGA2m1UkElEymVQ4HLb9vNpdV3ZDq9qQqjLEqjziKdnf3VZ7TLPVo6EAAAAAAACtIAjrosogrJljgfl8XoFAQPF4vKkQTKq/s6ue2v4qg7tW16wM4dxud8P5ZgAAAAAAAJ1EENZFy8vL5bftHpM0DEOzs7OKRqOKRqNNX7N21lftriy7KkMrr9dbFZRdvHjR1hqVX39tmAYAAAAAAOA0grAuqgyh7BwLNAxDPp9P4XC46q6NjZ6TSCSqPlZ5rWw2a2ud2iOUtYHa0aNHy29XDtKvp7IuFovZeg4AAAAAAECnEIR1USaTkSRbO7tM01QgENDRo0dth2CSFAqFtoVslaGTYRi25oQ1Cu0ikUj5bTvhWmWNx+NhPhjQA5Zl6VqDh2VZvW4TAAAAAByzr9cNDItMJiPDMOR2u3XixIm6taZpyufzyePxKBaL2ZrBZRhGOfCq3b3l9/vl8XjK6ywsLDQM1yqDq51qvV6v/H5/uS6TydS9k2U6nS6/zW4woDeKksaee7FuzeY9X9Zod9qpz7Ikq1i/xjUiuVzd6WcHliUVG+SGI66etggAAACghsvin/9bks1mFQqFZJqm/H6/4vH4tgCqpHTE0TRN5XK5XetKfD6f7eOGtXa7q2Q+n6+622OhUNh1WH02my3PMAuHw0omkzvWGYZRvruk1+tVLpfbsc40TY2Pj0vaCuWWlpbsf0G7mJqa0urqqiYnJ7WystL2esAwuGZZ9oKwfkhuitekRxv8W81TV6WR3sV214rSvu/Ur7n6XWmUvdcAAABAlV6+puf/nrconU6Xjxhms1n5fL6q44Ilpc9NTEyoUCg4GoJJ2vWukl6vtyrQCgQCOx6RNE2z/HXUPqeWx+Mp7/TK5/PbZpOVzM7OStq6U2TlzjAAAAAAAIBuIghrUSgU2vaxVCql8fFxhUIhRSIR+Xw+BQIBhcNh5XK5XXdgVa7pRAhW+fmlpSW53W4ZhqFDhw4pkUgon8+Xg6xDhw7JMIxyz40Eg8HymrFYrPw1mKZZDgHz+by8Xq8uXbpUdbdJAP3nJ2+u9roFAAAAAHAMRyPbYBiG4vG4stms1tfXZZqm3G63JiYm5PV6dezYMfn9/r4Mf1KplNLptJaXl8t9l4bYRyKRhqHdThKJhM6ePVseyO92uzUzM6NIJFJ3flgrOBoJNO/M/1lROP/rhnX/4Pucvn7rZBc6qsPO0ciHnpY+/2B3+tmBnaORTwelB331awAAAIBh08vX9ARhGEgEYUBzLl+5ottefEnvXWswgF7STftG9S9f+oLG9u/vQme7+H9OS08/1Lju//5v0h3Hne9nB6dz0kOZxnX/7ah0/LDz/QAAAACDghlhAABHPfvmW7ZCMEl69+o1/fjNtxzuqI73L0vPPmav9swj0vubzvazg8sfSI89Z6/2kX+UNj9wtB0AAAAANhGEAcAQ+Plv326q/hdN1nfUy89IH75nr/YP70ovn3a2nx08k5feu2Kv9t0PpdOtj38EAAA9YlmWrjV4cMAKGDwNBrAAAPYC80ObqU2p/kpz9R31q+ebrH9B+sI3nellF8+/3lz9C69L3/y8M70AAABnFCWNPfdi3ZrNe76s0e60A6BD2BEGAEPAfV1z877cvZwP9vsNZ+s7YON9Z+sBAAAAOIMgDACGwFc/fktT9V9psr6jPjrubH0HjN/gbD0AAK2yrK07G9d7cJoPwDDjaCQADIH7bv2E/strr9u+a+T9t36iC13t4nN3S//rfBP1dznXyy7u/rR0/l/s19/1aed6AQCgUtGS9n2nfs3V70qjru70s9f95M1VHf/TqV63AaAJ7AgDgCFwYP9+/d3tn7FV+/e3f0ZjvTwaeecD0nU32qv9yE3SnQ86288OHvBKN9r8Ft10nfSg19l+AABA5/3kzdWGNeH8r23VAegfBGEAMCS+futkw5pT3s/aqnPUDQek+560V3v8pHTDmLP97ODA9dKT99irPfk1aex6R9sBAGBwWJZUvFb/0QdnNy9fuaK/ffU1W7V/8+pr2uzljYYANIUgDABQdqzXIVjJnccb13zjtHSHjTqHHD/cuOZ00F4dAADddOaVHl7cKkqP7qv/sBqPcnDas2++ZWukhCS9e/WafvzmWw53BKBTmBEGAENiRFu3+G5UMzDuuL/XHTR0PyEYAKDL7IRcD2Wk0RH+saaen//27abqf/Hbt/WI55MOdQOgkwbqNQ8AoHUul0ujDR4uF5NzAQAYVJc/kB57zl7tI/8obX7gaDute/lMrzuQ+WFzRx1NjkYCA4MdYQCA/uMakZ662rimh0ZcW3fdalQDAEC3PJOX3rOZx7z7oXQ6L33z8872tI2dkOvph6TR0Z6OQHBf19yNg9y9vNEQgKawIwwA0H9cLmlktP6jx7vXXK6tYyX1HmywAwB00/OvN1f/QpP1bXv/svTsY/Zqzzwivb/pbD91fPXjtzRV/5Um6wH0DjvCMNDW1tY0NTVVt2Z+fl7z8/Nd6ggAAADojY33na1v28vPSB++Z6/2D+9KL5+WvvBNZ3vaxX23fkL/5bXXbQ3Mv2nfqO6/9RNd6AoYDIuLi1pcXKxbs7a21qVutiMIw0ArFotaXV2tW7O52bt/SQIAAAC6ZfwGZ+vb9qvnm6x/oWdB2IH9+/V3t39G4fyvG9b+/e2f0RhHI4Gyzc3Nhq/Te4kgDANtZGREBw8erFszNjbWpW4AAACA3rn709L5f7Fff9ennetlR7/fcLa+w75+62TDIOyU97P6+q2TXeoIGAxjY2OanKz/52JtbU3FYuMdl04gCMNAO3jwoFZWVnrdBgAAANBzD3ilx1+0NzD/puukB73O91Tlo+PO1vfAMUIwYBs744mmpqZ6tmuMIAwAAAAA9oAD10tP3iM9lGlce/Jr0tj1jrdU7XN3S//rfBP1dznXiw0jkjbv+XLDGgCDhT+3AAAAALBHHD/cuOZ00F5dx935gHTdjfZqP3KTdOeDzvbTgMvl0miDh4tbRAMDhyAMAAAAAIbI/b0IwSTphgPSfU/aqz1+UrqBWb8AOo8gDAAAAADQHXceb1zzjdPSHTbqAKAFzAgDAAAAgD1ixCVd/W7jmr52x/297gDAHkYQBgAAAAB7hMsljfZ70AUAPUQQBgAAAADoDteI9NTVxjUA4BCCMAAAAABAd7hckmu0110AGGJE7QAAAAAAABgKBGEAAAAAAAAYCgRhAAAAAAAAGAoEYQAAAAAAABgKBGEAAAAAAAAYCgRhAAAAAAAAGAoEYQAAAAAAABgKBGEAAAAAAAAYCgRhAAAAAAAAGAoEYQAAAAAAABgKBGEAAAAAAAAYCgRhAAAAAAAAGAoEYQAAAAAAABgKBGEAAAAAAAAYCgRhAAAAAAAAGAoEYQAAAAAAABgKBGEAAAAAAAAYCgRhAAAAAAAAGAr7et0A0I61tTVNTU3VrZmfn9f8/HyXOgIAAAAAYHgtLi5qcXGxbs3a2lqXutmOIAwDrVgsanV1tW7N5uZml7oBAAAAAGC4bW5uNnyd3ksEYRhoIyMjOnjwYN2asbGxLnUDAAAAAMBwGxsb0+TkZN2atbU1FYvFLnVUzWVZltWTKwNtmJqa0urqqiYnJ7WystLrdgAAAAAAgE29fE3PjjAAAPqUZUnFBv9cNeKSXK7u9AMAAAAMOoIwAAD6VNGS9n2nfs3V70qjBGEAAACALQRhAABIW9uvrAZzClwjbL8CAAAABhhBGAAA0lYI9miDvxafuiq5RrvTDwAAAICOG+l1AwAAoHVnXul1BwAAAMDgIAgDAMCul8909XJ2Qq6HMoRhAAAAgF0EYQAASPZCrqcfkv65O2HY5Q+kx56zV/vIP0qbHzjaDgAAALAnEIQBAPD+ZenZx+zVnnlEen/T2X4kPZOX3rtir/bdD6XTeWf7AQAAAPYCgjAAQFdZlqVrDR6WZXW3qZefkT58z17tH96VXj7tbD+Snn+9ufoXmqwHAAAAhhF3jQQAdFVR0thzL9at2bzny+rqvRl/9XyT9S9IX/imM738u433na0HAHSfZUnFBv/WM+KSXK7u9AMAw4ggDADQd37y5qqO/+lU9y74+w1n61swfoOz9QCA7ita0r7v1K+5+l1ptFtBmGVJVrF+jWuEZA7AnkIQBgDoqp+8udqwJpz/tUZdLn391skudCTpo+PO1rfg7k9L5//Ffv1dn3auFwDAHmUVpUcbvCR86qrk6uo+bQBwFDPCAABdc/nKFf3tq6/Zqv2bV1/T5hWb0+Lb9bm7m6y/y5k+KjzglW7cb6/2puukB73O9gMA6I4zr/S6AwDY2wjCAABd8+ybb+m9aw2OYPy7d69e04/ffMvhjv7dnQ9I191or/YjN0l3PuhsP5IOXC89eY+92pNfk8aud7QdAEAH2Am5Hsr0WRj28pledwAAHUUQBgDomp//9u2m6n/RZH3Lbjgg3fekvdrjJ6Ubxpztp3Spw41rTgft1QEAeuvyB9Jjz9mrfeQfpc0PHG1ni52Q6+mHpH8mDAOwdxCEAQC6xvywuaOOZreORkrSnccb13zjtHSHjbouup8QDAAGwjN56T2bf629+6F0Ou9sP3r/svTsY/Zqzzwivb/pbD81LMvStQYPy2pwC04A2AHD8gEAXeO+zubQq1L9/ubqHXfH/V293Ihr6+5hjWoAAP3v+debq3/hdembn3emF0nSy89IH75nr/YP70ovn5a+8E0HG6pWlDT23It1azbv+bIY4w+gWQRhAICu+erHb9GFt//Ndv1XPn6Lg93UcI1s3RmrUU0XuVzSKEEXAOwJG+87W9+0Xz3fZP0LXQ3CAMApHI0EAHTNfbd+QjeO2vur56Z9o7r/1k843FEFl0saGa3/cJFKAQBaM36Ds/VN+/2Gs/Vd8JM3V3vdAoABRBAGAOiaA/v36+9u/4yt2r+//TMa67ejkQAAtOjuTzdXf1eT9U376Liz9W2yE3KF878mDAPQNIIwAEBXff3WyYY1p7yftVUHAMCgeMAr3Wjz33duuk560OtsP/rc3U3W3+VMHzu4fOWK/vbV12zV/s2rr2mzmzfXATDwCMIAAH3nGCEYAGCPOXC99OQ99mpPfk0au97RdqQ7H5Cuu9Fe7Uduku580Nl+Kjz75lt671rRVu27V6/px2++5XBHAPYShuUDALpqRFt3eWpUAwDAXnP8sPRQpn7N6eBWneNuOCDd96T09EONa4+flG4Yc76nf/fz377dVP0vfvu2HvF80qFuAOw1vNYAAHSVy+XSaIOHi6H0AIAhdX83QrCSO483rvnGaekOG3UdZH7Y3FFHk6ORAJpAEAYAAAAA2Nkd93f9ku7rmrtZjpub6wBoAkcjMdDW1tY0NTVVt2Z+fl7z8/Nd6ggAAADY2YhLuvrdxjVd4xqRnrrauKbLvvrxW3Th7X+zXf+Vj9/iYDcAmrW4uKjFxcW6NWtra13qZjuCMAy0YrGo1dX6t0ze3NzsUjcAAADA7lwuabSfTv+7XJJrtNddbHPfrZ/Qf3ntdVsD82/aN6r7b/1EF7oCYNfm5mbD1+m9RBCGgTYyMqKDBw/WrRkb695gTwAAAADtObB/v/7u9s8onP91w9q/v/0zGuNoJNBXxsbGNDlZ/y7wa2trKhbt3R2201yWZVk9uTLQhqmpKa2urmpyclIrKyu9bgcAAABAB12zLI0992LdmlPez+r+P60/JgVAf+rla3qG5QMAAAAABs6xW+vvOAGAnXA0EgAAAADQV0Ykbd7z5YY1ANAsgjAAAAAAQF9xuVzqvzH+APYCQnQAAAAAAAAMBYIwAAAAAAAADAWCMAAAAAAAAAwFgjAAAAAAAAAMBYIwAAAAAAAADAWCMAAAAAAAAAwFgjAAAAAAAAAMBYIwAAAAAAAADAWCMAAAAAAAAAwFgrAeMAxDgUDAVm0+n1ckEtH09LRcLpdcLpemp6cVi8VkmmbHeytdJ5PJNP3cRCKhQCCg8fHxcp+hUEjZbLbjfQIAmmdZ0rVi/Ydl9bpLAAAAwDkEYR1kmmY5rKr3mJ6elsfjabhWKBSSz+dTKpWSYRjlzxmGoUQiofHxcaVSqY71H4vFqq5jVzab1fj4uGKxmCQpnU6rUCgoHo8rn88rEAgoEAg4EtwBAOwrWtK+79R/FAnCAAAAsIft63UDe0kzoVQpNNqJaZry+Xy2QqlIJKJcLqdkMmn72jvJZrNKJBItPa+0uy0cDlf14fF4FAwG5fP5lM1m5fP5lMvl5Ha72+oVAAAAAACgFewI66CFhQVbdX6/v+6OsFAoJMMw5PV6y7urCoWC0um0otHotvpUKtXSUcaS0u6zdp7n8Xh2DePS6bSkrZ1srVwHANA9Z17pdQcAAACAc9gR1iGpVEqmaSoajTac/zUzM1N3nWw2q2g0qng8XvW50g6rSCSiUCikfD5f/tzc3JyCwWBLvc/NzWliYkKSmjq+GAqFyvX1driV+s5kMspms0qlUgqHwy31CgBonZ2Q66GMNDoiHT/sfD8AAABAt7ksi7G4nTA9PS1JKhQKba/j8Xi0tLRUt84wjPI1S5aWluT3+5u6XiqVKh+vnJ2dLQdb6XS6brBWe/2NjY26Rx4zmUx5N5jb7dbGxkZTfdaamprS6uqqJicntbKy0tZaADAMLn8gTT4hvXelce1N10mrJ6Sx653vCwAAAMOnl6/pORrZAZlMRoZh1N0VZUc+n5dhGOWjhPV4PJ5tO8Yqd4jZYRiGIpGIotGovF5vU8+tvLbf728496syVDNNs62jnAAwsCxLKl6r/3Do36eeydsLwSTp3Q+l0839lQIAAAAMBI5GdsDCwoLcbreOHj3a1jpnz55VOBy2PUy+dvfXO++809T1QqGQvF7vtkDNjsobA9gN0TweT/kGAGfPnm35KCcADCyrKD3a4K/ep65KrtGOX/r515urf+F16Zuf73gbAAAAQE8RhLUpn8+Xd2KNj4/L4/HI7/crEAg0HfQcO3as7hD9WrUBVO1RyXpisZjy+XxLRzlrd54dOXLE1vO8Xm85CGNHGADs4uUz0ucf7PiyG+87Ww8AAAAMAo5Gtqn2OKRhGEqlUgqFQnK5XNuG2tfj9Xpt7waTtg+2txui5fN5JRIJJZPJpoK3kmw229J1a+uaPcoJAAPv5TONa55+SPpnG3VNGr/B2XoA2GssS7pWrP9g2jIADB52hLXBMIxtoVCtTCajTCajcDisZDLZ8etXsjsof3Z2VsFgsOU7N168eLHqfbvh3c0331z1/vLyctOzyQCgWZZlqdigZkSSy+VytpH3L0vPPmav9swj0ufulm4Y69jl7/60dP5f7Nff9emOXRoABlLRkvZ9p37N1e9Kow7/9QEA6CyCsDZ4PB4lk0mZpqlCoaBsNrstnCpJpVJaXl5WLpfr2PWXl5fLb9sNtUp3bjx16lTL1639GlvdEdbuHTYBwI6ipLHnXqxbs3nPl9X5qVw1Xn5G+vA9e7V/eFd6+bT0hW927PIPeKXHX7R/18gH+XcKAAAA7EEcjWxTOBxWNBpVMplUoVDQxsaG4vH4jruk8vm8AoFAx65ducPMzh0rS7vT0ul0U0cwa+0W9jWr9mgnAOxpv3q+yfoXOnr5A9dLT95jr/bk16Sx6zt6eQDYk8680usOAADNIgjrMLfbrWg0qo2NjR0Dp2w2q0Qi0fZ1DMMoz9iKx+MNd2WZpqlQKKRwOGz7CGW9tVpR+71YX19vqw8A6JSfvLnq/EV+v+FsvQ3HDzeuOR20VwcAe52dkOuhjMNhmGVJxWv1HwwqA4CmcDTSQcFgUH6/X7Ozs1WD4RcWFhSNRttaOx6PS9o6bmhnrdnZ2fJRzn7RiR1ha2trmpqaanud+fl5zc/Pt70OgP5jJ+QK53+tUZdLX7910rlGPjrubH2H3E8IBgC6/IH02HP2ah/5R+nu/8uhnbRWUXq0wUu2p65KLscP+AOAJGlxcVGLi4ttr7O2ttaBblpDEOYwt9utXC4nn89XDsNM01Q2m215Z1Y+n1cqlZLb7dbS0lLD+kQioXw+37H5ZG63uyMhVjvHM0uKxaJWV9vfybG5udn2GgD6z+UrV/S3r75mq/ZvXn1NX/34LRrbv9+ZZj53t/S/zjdRf1fHWxhxbQ12blQDAMPumby9mYqS9O6H0um89M3PO9sTAPSDzc3NjrwG7yWCsC45deqUfD5f+f2lpaWWg7C5uTlJ0oULFxoeiczn84rFYorH4x27Q+PExERHgrCJiYm21xgZGdHBgwfbXmdsrHN3ZgPQP5598y29d63RPSO3vHv1mn785lt6xPNJZ5q58wHpZ4/bG5j/kZukOx/seAsuF3c3AwA7nn+9ufoXXu9hEPbyGenznf87o1Lf3IEZQM+NjY1pcrL9UxRra2sqFu39//ROIwjrEq/XK7/fr2w2K6n1gfORSET5fF7pdNpWsBUKheT1ets+ilmp1Z1cteFZJ3aEHTx4UCsrK22vA2Bv+vlv326q/he/fdu5IOyGA9J9T0pPP9S49vhJ6QYCegDolY33na237eUzjWuefkgaHZXuOO5QE310B2YAPdepsUJTU1M921lGENZFgUCgHIS1IpVKKZVKKZlMKhgMNqxPJBIyDEN+v1+hUKhhfWVQtbCwoLNnz5bfP3bsWPmaMzMzVTPPTNO0FWrVDsefnp5u+BwAaIf5oc1zLaX6K83VN+3O442DsG+cdvTFDACgsfEbnK235f3L0rOP2as988jWEfwe/iPKT95c1fE/bX92LwA4jSCsiyqPMTZ7LDCbzSoSiSiZTCocDtt6zjvvvFN+brPy+XxV2OXxeMpBWOURT2lrd5ud3WmFQqHq/XbvXgkAjbiva27el9up+WDNuOP+XncAAEPv7k9L5//Ffv1dn3agiZefsXecXpL+8K708mnpC990oJE+uvEMAHQAQVgXVQZhzRwLzOfzCgQCisfjtkMwJ83MzFS9bzcIq9xx5na7G843A4B2ffXjt+jC2/9mu/4rH7/FwW4kuUa27u7VqAYA0FMPeKXHX7Q3MP+m66QHOzOKt9qvnm+y/gVHgrC+uvEMAHQA/2+7i5aXl8tvBwIBW88xDEOzs7OKRqNNz/mKx+OyLMv2ozKYSqfTVZ+Lx+Plz3m93qog7+LFi7b6qfz6a8M0AHDCfbd+QjeO2vur7qZ9o7r/1k8425DLJY2M1n8waBgAeu7A9dKT99irPfk1aex6B5r4/Yaz9Ta1cuMZAOhnBGFdVHk00M6xQMMw5PP5FA6Hq4KoRs9JJBIt92jX0aNHy29XHqGsp7IuFot1vCcAqHVg/3793e2fsVX797d/hn/BBgCUHT/cuOZ00F5dSz467my9Ta3ceAYA+hlBWBdlMhlJsrWzyzRNBQIBHT161HYIJm3dJbIbs7cikUj5bTszyCprPB4P88EAdI2dWSWnvJ9lpgkAoGn3OxWCSVvD75uqv8uRNvruxjMA0CZmhHVJJpORYRhyu906ceJE3VrTNOXz+eTxeBSLxWQYRsP1DcMo77KyM6+rXV6vV36/vxxwZTKZuneyTKfT5bfZDQagm0a0dUv3y1eu6CdvvqUXf/u2zCtX5N6/X1/++C2679ZP9MeQfAAAKt35gPSzx+0NzP/ITdKdDzrSxkDeeAYA6iAIa1E2m1UoFJJpmvL7/YrH47sGUIZhaG5uTpJ04cKFhoPyZ2dnZRiGDMPQ9PR0U30lk8mm6tuRTCbL/S0sLOwahJmmqVQqJWnrSGg/DPwHMDxcLpdGJU1cd50em/6UHpv+VK9bAgAMgBGXdPW7jWscc8MB6b4npacfalx7/KR0w5gjbfTdjWcAoE0cjWxROp0u3wUxm83K5/NVHRcsKX1uYmJChUKh4W4tn89ne+bWTroZMnk8nvJOr3w+v+tsstnZWUlbd4qs3BkGAAAA9CuXSxodqf9w/P4mdx5vXPON09IdNupa1Hc3ngGANhGEtSgUCm37WCqV0vj4uEKhkCKRiHw+nwKBgMLhsHK5XNVdGXdbc1BCsJJgMKilpSW53W7FYrHy12CaZjkEzOfz8nq9unTpUsPdcAAAAACacMf9ji7PjWcA7DUuy7KsXjcxqAzDUDweVzab1fr6ukzTlNvt1sTEhLxer44dOya/3z804U8ikdDZs2dlGEb5ezEzM6NIJFJ3flgrpqamtLq6qsnJSa2srHR0bQAAAKAvWJZkFevXuJzfmnbNsjT23It1a055P6v7/3TK0T4A7B29fE1PEIaBRBAGAAAAdIedIGzzni9r1PGzogD2il6+pmdYPgAAAABgV6U7MDeqAYBBQBAGAAAAANhV6Q7MALAXENwDAAAAAABgKLAjDAAANMWypGKDCaMjLsdnNwMAAABNIwgDAABNKVrSvu/Ur7n6XWmUIAwAAAB9hqORAAAAAAAAGAoEYQAAoOPOvNLrDgAAAIDtCMIAAEBT7IRcD2UIwwAAANB/CMIAAIBtlz+QHnvOXu0j/yhtfuBoOwAAAEBTCMIAAIBtz+Sl967Yq333Q+l03tl+AAAAgGYQhAEAANuef725+hearAcAAACcRBAGAABs23jf2XoAAADASft63QAAABgc4zc4Ww8AnWBZUtGqXzPiklyu7vQDAOgfBGEYaGtra5qamqpbMz8/r/n5+S51BAB7292fls7/i/36uz7tXC8AsJuiJe37Tv2aq9+VRgnCAKDjFhcXtbi4WLdmbW2tS91sRxCGgVYsFrW6ulq3ZnNzs0vdAEAPWJZkFevXuEY6tu3hAa/0+Iv2BubfdJ30oLcjlwWAjjvzivSgr9ddAMDes7m52fB1ei8RhGGgjYyM6ODBg3VrxsbGutQNAPSAVZQebfDX+VNXJddoRy534HrpyXukhzKNa09+TRq7viOXBYCmnHmlcc1DGWl0RDp+2Pl+AGCYjI2NaXJysm7N2tqaisUG/5jrEJdlWQ1OzwP9Z2pqSqurq5qcnNTKykqv2wGA3ileaxyEPfS09PkHO3bJa8XGR45OB6UH2GkBoAcufyBNPmF/5+rqCUJ7AOi2Xr6m566RAAAMspfPNK55+iHpn23UddD97LAA0CPP5O2FYJL07ofS6byz/QAA+gtHIwEAaJNlWWq0sXtEkqvTtyd7/7L07GP2as88In3ubumG9o+Lj7i2hkw3qgGAXnj+9ebqX3hd+ubnO3DhLs9sBAC0hiAMAIA2FSWNPfdi3ZrNe76szkzpqvDyM9KH79mr/cO70sunpS98s+3LulzcaQ1A/9p439n6XXV5ZiMAoDUcjQQAYFD96vkm619wpg8A6CPjNzhbDwAYbARhAAB0wU/edOAW0r/fcLYeAAbQ3Z9urv6uJuvbYmeuIwDAUQRhAAC0yU7IFc7/uvNh2EfHna0HgAH0gFe6cb+92puukx70dujCfXrzEgBANYIwAADacPnKFf3tq6/Zqv2bV1/T5hWbtzKz43N3N1l/V+euDQB96sD10pP32Ks9+TVp7PoOXLTZm5e8v9mBi/6RZVm61uBhWVZHrwkAg4ph+QAAtOHZN9/Se9ca3TNyy7tXr+nHb76lRzyf7MzF73xA+tnj9gbmf+Qm6c4HO3NdAOhzxw9LD2Xq15wObtV1RI9uXlLSs5u2AMAAYkcYAABt+Plv326q/hdN1td1wwHpvift1R4/Kd0w1rlrA8CAu79TIZg0EDcvcWRWJYD/f3t/H952feb7vh/ZccjT2JJhMklsQyuvrqFkSAYptCnsNV00cstDUnrWsQJJCOk8WAoMAzRnVW6mZzqda3aHy967aTOdAaxMZy0SQkil3V1KKBmstNN9Vtu0xGIBTWEWtZg2CaHQ2HIIBOLEOn8IKZKth99Pz7Ler+vSZUu69f19nfwkS7e/9/1FHWJFGAAARYieM1fqGC1laaQkrd4U7zmTy2d3Sx/dVNrjAkANa7JI57+SP6Zkqrx5idFelc0Wi27v6ijpsQGg3rAiDACAIljnGuzInIhvMRdfEh/dWPljAkAVWSxSc1Pui6WUibAqbl5S1V6VAFCHWBEGAEARbl6yWIfe+K3h+JuWLC7tBCxN0kPn88cAAMpnxTrpF8+YiC/d5iVV7VUJAHWId8YAABRhQ9cyLWw29ut00ZxmbexaVtoJWCxSU3PuS0mXPQAAZli9WZq70FhsiTcvqWqvSgCoQyTCAAAoQltLi762crmh2J0rl6u1GqWRAIDyquLmJVXvVQkAdYZEGAAARTLSeHiX42oaFAPAbLbawKYkZdi8pC56VQJADaFHGAAARWqSdPrWGzUxOanHj72mg6+/oejkpKwtLbpxyWJt6FrGBw8AmO0SPRvPTkiHH5VefCq+O+QCm3T1LfHyyQXWkh+26r0qAaDOWGKxWKzakwDM6uzs1IkTJ9TR0aHjx49XezoAAABAVUxMTupDB79vqGH+ojnNeuVTN1CmD6DqqvmZntJIAAAAAKhT9KoEAHNIhAEAAABAHaNXJQAYR48wAABQMbGYNJWnKUOTRbJYKjMfAGgUt5EEAwBJJMIAAEAFTcWkOV/MHXP+K1IziTAAMCyxaUu+GAAAr4cAAKDG7H2u2jMAgPpisVjUnOdiYaktAEhiRRgAAKggI0muLUGpuUnadE355wOgNlFGDQAoFxJhAACgIibele5+wljs1u9I6z4stc4r65QA1CjKqAEA5UJpJAAAqIg9YentSWOxZ85Ju8PlnQ8AAAAaD4kwAABQEU++bC7+gMl4AI2FfoIAgEJQGom6dvLkSXV2duaM2bZtm7Zt21ahGQEAshk/W954ALMH/QQBoH7t2LFDO3bsyBlz8uTJCs1mJhJhqGtTU1M6ceJEzpjTp09XaDYAUMdiMSk2lTvG0lRUZ2rb/PLGA5gd6CcIAPXt9OnTeT+nVxOJMNS1pqYmLV26NGdMa2trhWYDAHUsNiXdledtwUPnJUtzwYdYd6X0zCvG49deWfChANSxQvoJ3nNdeecEADCutbVVHR0dOWNOnjypqak8f4QtE0ssFsuzMTFQezo7O3XixAl1dHTo+PHj1Z4OANS/qQv5E2FbHpGuu7PgQ0y8K3X8nbEPuIvmSie2s8oDaESf+mdzSfNPfUg6+Cflmw8AoPSq+ZmeZvkAAEA6vDd/zCNbpJ8aiMuibZ704K3GYh/+DEkwoFHRTxAAUE4kwgAAqEGxWEwX8lxKtqj77IS0725jsXu3SmcL771opKn17l6aXwONjH6CAIByokcYAAA1aEpS6xMHc8acvvVGFd6xK8XhPdK5t43FvndGOrxbuuGegg7VZJHOfyVeJvnoc9JTL8dXc9jmS7dcKW2+RrLyoRZoaPQTBACUE4kwAADq1OPHTmjT5Z3FD/TCkybjDxScCLNYpGaL1L5Auvf6+AUAUm12SF84aLyf4J2O8s8JADB7UBoJAEANevxY/i2nPeEXDcXl9c54eeMBwISK9hOMxeKbheS6sLcYAMwqrAgDAKDGTExO6nPPHzUUe9/zR3XzksVqbWkp/IALbOWNBwCTNl0jbQnmjilJP8HYVP4dcx86L1lKUogOAKgBJMIAAKgx+469prcvTBmKPXP+gh479pq22q8o/IAr1km/eMZE/NrCjwUABtRUP8HDe6Xr7qzQwQAA5UYiDACAGvO9198wFf/0628UlwhbvVn69heMNcy/ZJG0mg+EAMqrYv0ED+/NH/PIFqm5WfropqIPF4vFlO/PHE2SLBZL0ccCAGRGIgwAgBoTPWegQ3Rq/KS5+Bnmt0kbHox/2Mtn08PS/NbijgcAteDshLTvbmOxe7fGV88W+fpX0R2BAQAZ0SwfAIAaY51rrt+XtZj+YAmrDax0+OzukqyIAICacHiPsZWwkvTeGenw7vLO530l2QQFAJAVK8IAAKgxNy9ZrENv/NZw/E1LFhd/UEtTvCH02Qnp8KPSi0/Fd4dcYJOuviVePrnAWvxxChSLSVN5Nm5rssTLqQDAkBeeNBl/QLrhnqIOaXRH4GaLRbd3dRR1LABAZiTCAACoMRu6lulLR1821DB/0ZxmbexaVvxBLZb4rmgL26U198YvNWQqJs35Yu6Y81+J9xQCAEPeGS9v/DQV3xEYAJARpZEAANSYtpYWfW3lckOxO1cu54PS+/Y+V+0ZAKgrC2zljZ+mkB2BAQClRyIMAIAaZKQkZpfj6oYpnTGS5NoSJBkGwIQV60zGry3qcIXsCAwAKD1KIwEAqEFNiu8cNjE5qcePvaaDr7+h6OSkrC0tunHJYm3oWlaaJvl1YOJd6e4njMVu/Y607sNS67yyTgnAbLB6s/TtLxhrmH/JImn1nUUdruI7AgMAMiIRBgBADbJYLGqW1D53ru7u/oDu7v5AtadUNXvC0tsGPw+eOSftDkv3XFfeOQGYBea3SRselB7Zkj9208PS/NaiDleVHYEBADNQGgkAAGraky+biz9gMh5AA1u9KX/MZ3dLHzUQl8fNJnf4LcmOwACAGUiEAUARIpGILBZLyS89PT2m5uD1etXf358zLhqNqru7O++xbTabnE6n/H7/jDHC4bCcTmfF547GNn62vPEAkNNHN5ZkmA1dy7Sw2djHr5LtCAwAmIHSSAAoMYfDIbvdnrwejUYVCoWS161Wq1wuV9r9kUhEkUgkedvY2Fje40QiEfX39ysYDEqSfD5fznir1arR0VFFo1H19/dnTHTZ7XaNjo7m/NlGRkYkSU6nU+FwODn2rl271Nvbm3fehcwdjc02v7zxABqYpUl66Hz+mBJI7AjsCb+YN5YdgQGgfEiEAUARotFo8nufz6ft27fLarWmxUQiEXV3dyev2+12BQKBGWOFw2H19fUlk0vZTE8imWW1WjU0NKTu7u4ZK7FSE3j5tLe3S4onxw4dOjTj586k2LmjMa27UnrmFePxa68s31wAmBeLSVOx3DFNFsliqcx80lgskqW5Yoe7vasjbyKskXYEBoBqIBEGACXgcrk0MDBQ1BgOh0OBQEDd3d1pCbZUfr9fo6Oj8nq9uu222+R2uws+ns/n07PPPpuWlAqFQopEInkTYqFQSKFQSFar1XASrJRzR2PZ7JC+cNBYw/xFc6U7HeWfEwDjpmLSnC/mjjn/Fam5GomwCmNHYACoPhJhAFCERAnj0NBQScaz2+3y+XxZV0x5PJ4Z8akllWYlEm+pY/T392dcsZYQjUaTSayRkRFDSTCp9HNH42ibJz14q7TFwELChz8jtc4r+5QAoCDsCAwA1UezfAAokt1uN1VSmE9PT4+hHmGSDCehchkeHk67HgwG03qaTed2uxWNRhUIBIr6uUsxd9SQWEyaupD7EstTG5XDpmvyx+zuNRYHoPbsfa7aMwAANApWhAFAEdrb2+X1eks6psvl0vr160s6Zi52u10DAwNp/cLcbrdeffXVGckqr9erUCgkn89nuDE+GkRsSrorz9uKh86XtRfPRpJgQE0ykuTaEpSam0hmAwDKj0QYABTB4XDI4Sh9Q6JSlVoa5fP5tH///mSj/mg0qr6+vrQSyWAwKL/fX5J+aGhQh/dK191Z0EObLPEeQvliANSWiXelu58wFrv1O9K6D1PeDAAoLxJhqGsnT55UZ2dnzpht27Zp27ZtFZoRUL8S/cISgsGggsGgent7FQ6H5Xa7ZbVac/YPQwM7vDd/zCNbpOZm6aObTA9vsTRGI21gttkTNrbRhSSdOSftDkv3XFfeOQEAymvHjh3asWNHzpiTJ09WaDYzkQhDXZuamtKJEydyxpw+fbpCs5m9Jt6NvzE98LI0flayzZfWXRnfya2Nv9rOGna7XUNDQ2mlnn19fbLb7VqzZo0kGd4hEg3m7IS0725jsXu3SivWSfNbyzsnADXhyZfNxR942WQiLBaLl2afnZB+skf6+VPSO+PSApt09Vpp9R3x7y1k0gGgUk6fPp33c3o1kQhDXWtqatLSpUtzxrS28mGrGI8+J931nfhfaVM984q0/V+khz4j3UE/j1nD4/EoEAgkm+VHo1E5nU5J8XLNcpSBYhY4vEc697ax2PfOSId3SzfcU945AagJ42fLG5+zP+FLw9K37pO2PFJwWTYAwLzW1lZ1dHTkjDl58qSmpqYqNKN0JMJQ15YuXarjx49Xexqz1qPPSZu/lf3+M+fi91tEc9vZZGhoKK1EUoo38Pd4PFWaEWreC0+ajD9AIgxoELb55Y0vd1k2AMA8I+2JOjs7q7ZqrKkqRwVQ8ybeja8EM2Lrd6TT75ZzNqikRIlkqlAopEgkUqUZoVixWEwX8lxisVjhB3hnvLzxAOrWuivNxa81E2+2LPss7TIAAKwIA5DFnvDMcshsaG47+6xatWrGbW63WyMjI1WYDYo1Jan1iYM5Y07feqOaCz3AAlt54wsQi0lTeXJ7TRbaBgHlttkhfeGgsYb5i+ZKd5qpwKcsGwBQAFaEAciokOa2mB2i0WiyOX6qcDis/v7+KswIlfD4sSKWpq9YZzJ+beHHMmgqJs35Yu5LvkQZgOK1zZMevNVY7MOfkVrNbMJTSFk2AKDhkQgDkFHZm9uiZq1Zs0bRaFQDAwMzSiQHBwcVDoerNDMUykiSyxN+sfBk2OrN0tyFxmIvWSStpmk10EiM9BHd3VtAv1HKsgEABaA0EkBGZW9ui5rk9XoVDofV29srn88nSWm7SErxEsnR0dFqTREmTUxO6nPPHzUUe9/zR3XzksVqbWkxd5D5bdKGB+MNqfPZ9LA0vzZ28937nHSns9qzAGa/Jot0/ivx/qOPPic99XL8D2i2+dItV0qbr5GshbyPqGBZdiwWU769zZokWai3BoCaRyIMQEbrrpSeecV4vKnmtqhJfr9ffr9fdrtdgUAgeXsgEJDNdvHDQyQSkdfrnbFaDLVp37HX9PYFY1tTnzl/QY8de01b7VeYP9DHNscbbj12V+aePXMXxpNgFdq1be9z+WO2BKXmJna9BcrNYpGaLVL7Aune6+OXklixTvrFMybiCy/LLnuvRQBAxVAaCSCjzY5401ojTDe3Rc0Jh8Pyer2yWq0aHh5Ou89qtc5Ievn9/rRVYqhd33v9DVPxT5uMT7JY4smwwRPS7d+QrvqU9IGPxL/e/g1p8DVp9R2FjW3SxLvS3U8Yi2XXW6CO1VhZdlG9FgEAFUMiDEBGbfOkhz5jLNZ0c1vUlNTm+IFAQHa7fUaMx+ORy+VKu83tdisajVZiiihC9JyBrdpS4yfNxc8wvy2+K9t9B6XtP41/veGeipZD7gkb26FOurjrLQDjYjHpwlTuS6wSm1EkyrKNKLIsu+y9FgEAFUMiDEBWd1wjPbo++8qwRXPj91NWVN9Sm+NPT3alSi2XlOIJtL6+vnJPD0WyzjXX78tqtj9YDWLXW6C8ampX1tUGyq0/u7uosmyzvRZPF/sHBQBAWZEIA5DTpmuk49ulb6yTPvUh6SOd8a/fWCed2E4SrN4lmuO7XK5kc/xsrFarBgYG0m4LBoMKBoPlnCKKdPOSxabibzIZX4vY9RaoPiN9+krC0iQ9dF7acUpav1P68CelK66Nf12/U9oxVnRZdiG9FgEAtYtm+QDyapsn3XNd/ALzppcP1ko54eDgoPx+v6SZq72y8fl8GhoaUiQSSd7W19cnl8slq9VajmmiSBu6lulLR1829CFu0ZxmbexaVoFZlRe73gLlVVObUVgskqVZWtgurbk3fimxQnotFrTpCACgIlgRBgBlduTIkbTrY2NjJRs7NSFlJsEWDAbV398vKZ7cMpPESjwu9biJHmNmFDp3mNPW0qKvrVxuKHbnyuVqnQWlketM7mLLrreAcY24GUXFey0CAMqKRBgAlFEkEplRThiNRmckkwoRDAbTEkhGd3H0+/1yu93J6+GwuU7ho6OjM24Lh8NyOp1pya1cCp07CrOxq0O7HFdrYXPmX/sLm5v0T46rdXtXR4VnVh6bHdJCg/k8dr0FzGnEzSgasdciAMxmJMKqIBKJqKenx1BsOByW1+tVd3e3LBaLLBaLuru71d/fX/AKinKMKcXLrHp6emSz2ZJjut1uPuCiIbndbtlsNnV3d2dMDg0ODiafJ2Z6bIVCIXm9XjmdzrRklhR/bbHZbOrp6ZHX651x3MHBQdlsNnm93hljJuaS7fmaSHTZbDYNDg5mjenu7s76MxczdxTHYrFo4+WdeuXGT+irK66Sa/FlWmVrk2vxZfrqiqv0yxs/oQ2Xd1Z7miXTNk968FZjsex6C5jTiJtRNGKvRQCYzSyxWEU2N24I0WhUNpvNUKzH49HQ0FDOsfr6+vJ+QB4aGpLH4zE8v1KPKcU/3LrdbkWjUblcLvX398tutyscDqu/v1+RSEQul0uBQKBkPYQ6Ozt14sQJdXR06Pjx4yUZEwBQJbGYFMvTw8zSFO8FZNCFqfjOdbns7pU2Ow0PCUDSR/5RetbEW6+PdEo//fPyzacSJiYn9aGD3zfca/GVT90wK8rMAaCcqvmZnmb5JZRoOm1ErrKoaDRquMTI6/VqZGQkZ1KtXGNK8SRYYnXb9OSe3W5Xb2+vnE6nQqGQnE6nRkZGaKgNAEgXm5LuyvOW5KHz8YbYBjVZpPNfifczevQ56amX47tD2uZLt1wpbb5GstIkHzCtETejSPRa9IRfzBs7W3otAsBsRmlkCT3wwAOG4lwul+x2e9b73W63IpGIHA6HAoGARkdHNTo6qkAgIJ/PNyPe7/fnXeVVjjGj0WiyvMlut2dNnCV2o4tEIjPKoQAAMOTwXlPhFkt8x7r2BdK910v/8qfSz+6Jf733esm2wNQCMwDva9TNKIz0UNw1i3otAsBsRmlkifj9fnm9Xvl8vrz9v1atWpV1VVTqONMbbCckEkqpDa6tVqvGx8crNqYk9fT0JPsJ5SundLvdycSa2dLLTCiNBIBZ5Me7pUe25I/7k0elj24q/3wAZDXxrtTxd8Ya5i+aK53YbrAPXxlKpEspFotpSvEyycePvaaDr7+h6OSkrC0tunHJYm3oWiZrS4ssZNgBwJBqfqYnEVYi3d3dkjLvpmZ2HLvdruHh4ZxxkUgkecyE4eFhuVyuiow5PXZ8fDxnyWMwGEyuBsuXYDOCRBgAzBJnJyRfh3Tu7fyxlyySBk5I81vLPy8AWe0ekbYY2Ofl0fXSpmsMDjp1wViJdJPxEmkAQO2q5md6SiNLIBgMKhKJ5Oz7ZUQ4HFYkEkmWEuZit9tnrO5KXc1VzjElpcW5XK68fb96e3uT30ejUVO75AEAZrHDe4wlwSTpvTPS4d3lnQ+AvIwkt3b3mkiCGWWyRBoAgExIhJXAAw88IKvVqvXr1xc1zv79++XxeAw3k5++UuvUqVMVGVNK3xjA4XAYGju1L9r+/fsNPQYAMMu98KTJ+APlmQcAwxKbUZz6K2nnWumT/0G6tiP+dedaaeyvpDuMvT28yEiS65Et0k9JhgEAisOukUUKh8PJVVM2m012u10ul0s9PT1pq6CMuO2223I20Z9uegJqelljucacvkrs2muvNTx2YtdKVoQBQH1J9MfJpUky3x/nHZOl8mbjAZScxSI1Wy5uRnHv9UUOeHZC2ne3sdi9W6UV6yiRBgAUjERYkaaXQ0YiEfn9/uSKqd7eXm3fvt3QqimjK6sSotFo2vVMCa9yjJlokJ8rJpPpceFw2PT8AADVMSWp9YmDOWNO33qjTHfvWWArb7wBsZg0FYs3Ad/znPTUy9L4Wck2P77j3R3XxL+nBzZQJoWUSN9wT3nnBACYtSiNLEIkEpmRFJouGAzK6XTK6/WW5fipMjW1L8eYzz77bNp1o2WXl156adr1I0eOmJscAKCmPX7shPkHrVhnMn6t+WPkMRWT5nxRuvRvpfsPSMO/lI6ciH+970D89j2ZW2YCKAVKpAEAFUQirAh2u11DQ0MaGBiQx+PJuTLK7/fL6XSW9PipiSSPx1OxMacnywpdEVbsDpsAgMoxkuTyhF80nwxbvVmau9BY7CWLpNV3mhvfgL3P5Y/ZEjQWB9SrWEy6MJX7Ura95imRBgBUEKWRRZqeLIpGo/L7/XrggQdmlBmGw2H19PRoeHi4JMceGhpKfl/sjpVmxpyeCCvU9H8fAEBtmpic1OeeP2oo9r7nj+rmJYvV2tJibPD5bdKGB+NNsPPZ9HDJ+wJNvCvd/YSx2K3fkdZ9WGqdV9IpADUhsTIyl/NfifcGK7kaKJEGADQOEmElZrVa5fP55PP5FAwG1dfXl5bwCYVCGhwclM/nK+o4kUgk2bR+YGDAVEP8YscsNIE1vYRybGysoHFSnTx5Up2dnUWPs23bNm3btq3ocQBgNtp37DW9fSFfq/y4M+cv6LFjr2mr/QrjB1i9KX8i7LO7pY9uMj6mQXvC0tuTxmLPnJN2h6V7riv5NIC6sPc56c7SFjjErVgn/eIZE/GlL5EGABizY8cO7dixo+hxTp48WYLZFIZEWBn19vbK5XJpzZo1aTstPvDAA0UnwgYGBiTFyw2LHaucY+ZSihVhU1NTOnGigJ4005w+fbroMQBgtvre62+Yin/69TfMJcIsTdJD5+M7xx1+VHrxqXjp0wKbdPUt8fLJBVZzkzboyZfNxR94mUQYZiejJcLNTdKma0p88NWbpW9/wVjD/AJKpBO73k5MTmrfr0/o4G/eVPTcpKxzW3TTksW6vWuZbC0t5ne9BYAGdPr06ZJ8Bq8mEmFlZrVaNTIyIqfTmUyGRaNRhUKhgpvbh8Nh+f1+Wa3WkpVZmhnTarWWJIlltMl+Lk1NTVq6dGnR47S2sgU3AGQTPWdwyVQiftJcvCwWydIsLWyX1twbv1TI+NnyxgP1oOolwmUukc616+333zylz7/4kvyOq7Xp8uKrDABgtmttbVVHR0fR45w8eVJTU8YqDkqNRFiF7Nq1K61Z/vDwcMGJsL6+PknSoUOHSlISaXbM9vb2kiTC2tvbix5j6dKlOn78eNHjAACys8412O8rEW+0P1gNsM0vbzxQD2qiRLiMJdJGN/totlh0e1fxH+4AYDYrVVuhzs7Oqq0sY9fICnE4HGmJr0Ibznu9XoXDYQUCATkcjpLMzeyYha7kmp48K8WKMABA+d28ZLGp+JtMxlfTuivNxa81GQ/Ug0JKhEsuUSK945S0fqf04U9KV1wb/7p+p7RjTFp9h+lhzW72cdrsilYAQN0hEVZBPT09RT3e7/fL7/draGhIvb29JZlTIWOuWrUq7brR1WHTm+N3d3cbehxQyyKRiCwWS8kvuV4votGoBgcH5XQ6ZbPZZLFY1N3dLbfbndaPMNPjuru78x7bZrPJ6XTK7/fPGCMcDsvpdBY890z/fl6vt2Q736I8NnQt08JmY28ZFs1p1sauZWWeUelsdkgLDS5gWzRXurM0f4MCakpNlAhbLFJTSon0/f8i/eXP4l/X3CsttMVjTCpksw8AwOxGaWQFpZYcmi0LDIVC8nq9GhoaksfjKcl8Ch0ztcRTin+QNbKSbHR0NO16oaWhQK1zOBxpz/dEX8AEq9Wadv5Ho1FFIpG0laLZdlXNtButpOTjg8GgfD5fcvOLVFarVaOjo4pGo+rv78+Y6LLb7TOeq9N/tpGREUlK631otVq1a9cuwwn1SCSi/v5+BYNBSarIBh0oXFtLi762crk84Rfzxu5cuVytdVQa2TZPevDWeBPwfB7+TIn7IgE1YjaXCJd9sw8AQN0hEVZBqR+MzZQFhsNh9fT0aGBgoGRJsGLGnL4izGgiLPWDu9VqLVl/M6CaUs9rn8+n7du3z3h+RyKRtBWQdrtdgUBgxljhcFh9fX1ZV3UFg0G53e7k9WwbVwwODiocDmfd+MJqtWpoaEjd3d0zVmKZeV4mEvoOh0OHDh0y9Lo2PQGG+rGxq0MWSfc/fzTj6oqFzU3auXJ55frrxGJSbCq+0+RP9kg/T91pcm28hGqBsRUkm67Jnwjb3VuGnfKAGrHuSumZV4zH11OJcNk3+wAA1B1KIyvoyJEjye+Nlg5FIhGtWbNGPp+vZCsmih3T4XCkfeB99tlnDT0u9eefnkwD6p3L5dLAwEBRve8cDkcyQZZpxZfb7U4m0WKxmMbHxxWLxTQyMjJjhWUoFMq44iuVz+ebsYIrFAoZ6mEYCoUUCoVktVoNJ8ESZdherzdjIhC1zWKxaOPlnXrlxk/oqyuukmvxZVpla5Nr8WX66oqr9MsbP6ENldxxLTYl3TVH2napFLhfemlY+tWR+Ndv3Re//Sd7DA3VZJHOf0U69VfSzrXSJ/+DdG1H/OvOtdLYX0l3UBKJWWw2lwjP5s0+AACFIRFWQanlRkbKAiORiJxOpzweT8Yyp2yPGRwcLPuY69evT36fqydRqtQ4+gFhtkiUMA4NDZVkPLvdnjFB7fV6ZbVaNTIyMiN55XA4NDw8PGMORp5ngUBgxiqwfI+LRqPJlWkjIyOGk3+J1x2Xy6Xe3l5WhdaptpYWbbVfoSeuu1Y//Ph1euK6a7XVfkXlyyEP780f88gW6af54ywWqblJal8g3Xu99C9/Kv3snvjXe6+XbAsKak0E1I1EibARhkqEYzFp6kLuSyxW7LQNmc2bfQAACkMirILM9MKJRqPq6enR+vXrDSesJMntdmdNspVyTK/Xm/w+tfdRNqkxdrud/mCYVex2e0mTOj09PWk9wiKRiEKhUN6VVx6PZ0bvMSOJ6ukllMFgMOfz2u12KxqNZkyimcHOsSjY2Qlp393GYvdulc6eLu98gFnASOmv4RLhxIrNXJeYsQb2xZrNm30AAApDj7AKCQaDikQislqt2r59e87YaDQqp9Mpu92u/v5+Q2VKib47kjL26yr1mA6HQy6XK/lhORgM5mySnVoGxWowzCbt7e1pieFScLlcaasuE88vI734BgYG0ja0MNLDz263a2BgIO256Xa79eqrr85IVnm9XoVCoYxllUDFHN4jnXvbWOx7Z6TDu6Ub7invnIA6lygRnnhXevQ56amX47tD2uZLt1wpbb5GspaySf7hvdJ1d5ZwwMxm82YfAIDCkAgrUCgUSq6KSPQGyvZhMxKJqK+vT5IM9dJZs2ZNcge41AbbRmQrzyrHmIlm25L0wAMPZP1QHI1Gk72KXC5XyRr+A7XA4XAYSlCZlfq8O3XqlOFVnIWu0PL5fNq/f39yBVk0GlVfX19aEjsYDMrv9ydf84CqeeFJk/EHSpIIi8WkqTzVXE0WyihRnywWqdlysUT43uuLGMxo6XJzs/TRTUUcyJjbuzryJsJ2Oa6u3GYfAICqIhFWoEAgkGxmHQqFkn23pieNEgmz9vZ2jYyM5P2Q6nQ6DffcyiRTkqkcY0oXd75zu90Kh8MaHBzMWPa5Zs0aSfEyKBpkA+aZSTpNT7SbSdIFAoG0RHkwGEyuRguHw3K73TyPUZBYLKYpSROTk9r36xM6+Js3FT03KevcFt20ZLFu71omW0uLLEYzSO+Mm5uA2fgspmLSnC/mjjn/lXgyAWhYZkuXV6yT5reWdUpNkk7feqMmJif1+LHXdPD1NxSdnJS1pUU3LlmsDV3LaJIPAA2EHmEFSjSKTuX3+2Wz2eR2u+X1euV0OtXT0yOPx2MoCZZIKBUqU8KqHGOm6u3t1fDwsKxWq/r7+5PHi0ajyQRhOByWw+HIWGYFoLRSd5u0Wq2mVojZ7fYZyfy+vj6Fw+FkQtvoDpFAqilJrU8cVNf3Dsn385f1/TdPKTxxWt9/85Q+/+JL6vreIT127ITxARfYzE3AbHwR9j5XsUMBhsRi0oWp3JeS9q0vpHS5zCwWi5otFrXPnau7uz+g717/Ef0///l6fff6j+ju7g/INneu8UQ8AKDusSKsQC6XS6OjoxoYGFAoFNLY2FjyA2gi8bN9+3a5XC7DHxrLscqiEis3XC6XxsfHNTg4qP3792vNmjWKRqOyWq1atWqVAoEAvYTq3dkJ6Se7pRcPxFdWLLDF/4K7erM0v63as0OKI0eOJL8vpAzZ4/EoEAgk+/8l+gtK8XLNcpSBYvZ73ECSyxN+Uc0Wi7HSpBXrpF88Y3wCK9Yaj83BSJJrSzC+A6WhhuJABVR8JWOVSpcBADCKRFgRMq2eaGQ+n8/QjpioM4cflR67K/5X21S/eEb6v7dLGx+SVt9RnblhhtTkd6FN/FP7/yXQ3w+Fmpic1OeeP2oo9r7nj+rmJYvzN6tevVn69heMrTq5ZJG0uviG3BPvSnc/YSx263ekdR+WWucVfVigIvY+J93pzB9nSBlKlxPl1bk0SazqAgAYQiIMQHaHH5X+2+bs9793Jn6/xVKRZrfIL7ExxcDAQMGN8xNJ/tREWigUUiQSKXhMNK59x17T2xfyfYSNO3P+gh479pq22q/IHTi/TdrwYLzZdj6bHi5J/6E9YentSWOxZ85Ju8PSPdcVfVigaBVfyViG0uVEeXUup2+9Uc3mjgwAaFD0CAOQ2dmJ+EowI/Zulc6eLu98kNfg4KCkeIP8Yldnrlq1asZtmXojAvl87/U3TMU/bTR+tYHk+2d3lyxJ/+TL5uIPmIwHysHsSsbT75bgoCvWmYwvTemykRJsAAAkEmEAsjm8Z2Y5ZDYVanaL7KLRqPr7+2W1WnXo0KGix0o0x08VDofV399f1NhoPNFzBpdRJeInDcZbmqSHzks7Tknrd0of/qR0xbXxr+t3SjvGLpZtx2LS1AXp7TEptFP6+ielv7s2/vXQ38dvz9MtfPysqR/DdDxQDoWsZCza6s3S3IXGYg2WLhvtM0gyDABgBKWRADKj2W1dSazWKsWujokNLwYGBmS1WtNKJAcHB3XbbbfRNB+GWefm6fc1PT5ff7AEi0WyNEsL26U198Yv2cSmpLuyvOV5aVj61n3Slkek67J/ILfNNzatQuOBcihkJWPRJb0lLl0uS59BAEBDY0UYgMzK0OwW5TE4OKhQKKTh4eGiE1Rer1fhcFi9vb3y+XzyeDxyuVxpMZRIwoyblyw2FX+TyXhDDu/NH/PIFumn2ePWXWnukGtNxgPlULWVjCUsXS6kzyAAALmQCAOQWRma3aL0gsGg+vv7FQgEZiSszPL7/fL7/bLb7Wm7T6Z+L0mRSKTgHSnReDZ0LdPCZmNvNxbNadbGrmWlncDZCWnf3cZic/Q73OyQFhpcZLJornQniyZRA6q2ktFM6XIeZeszCABoWCTCAGRWpWa3MC4cDsvtdisQCKi3t7fosbxer6xWq4aHh9Pus1qtGhoaSrvN7/crFAoVdUw0hraWFn1t5XJDsTtXLi99SdPhPdK5t43F5uh32DZPevBWY8M8/BmpdZ6xWKCcSraS0WyfPYtFakopXb7/X6S//Fn865p7pYW2eIwBZeszCABoWCTCAGS2enO8ia0RBpvdonQikYjWrFmjoaGhopNgqc3xA4GA7Hb7jJhsJZLRaLSoY6Mx3N7VkTdml+NqQ3GmFdLvMIvNDml3b/aVYQtb4vffvlK6MJX9kqcvP1AyJVvJmOizt+1SKXB/vLfer45c7LG37VLpJ3tKNe00ZeszCABoWDTLB5DZ/DZp40PSf9ucP9ZAs1uUTiQSkdPp1MDAgDwej6H49vb2rE30U5vj5yqvDAQCstkulsBGo1H19fXNKJ0EpmuSdPrWGzUxOanHj72mg6+/oejkpKwtLbpxyWJt6FpWvg+vJex3aLFIm53Sp5fHd+M78HK8p5JtfnwlzZ0OaeFcac4Xcx/i/FekZmOLYYCiJFYybgnmj825ktFon73mZkN9v8y4ecliHXrjt4bjy9JnEAAwq7AiDEB2q++Q/uTR7CvDLlkUv7/Eb3qRXTQaldPp1Pbt2w0lwaTcze0TzfFdLpd8Pl/OcaxWqwYGBtJuCwaDCgYNfMJCQ7NYLGq2WNQ+d67u7v6Avnv9R/T//Ofr9d3rP6K7uz8g29y5shgskzKtDP0O2+bFd9Y7+CfST/88/vWe64yXQ+59ztyUgGJsuiZ/zO7eHHEl6rNXqKr3GQQAzDokwgDk9tFN0sBx6fZvSFd9SvrAR+Jfb/+GNHCCJJgB08sHCy0nTE2C5UtaJeJ7enpkt9szrgYbHByU3++XNLMhfjY+n29G6WRfXx8lkqhdFe53aCTJtSVIMgylEYvlLsO9MCVZFF+FeOqvpJ1rpU/+B+najvjXnWulsb+S7si1uUOJ+uwVqup9BgEAsw6lkQDym98m3XBP/ALTjhw5knZ9bGzM9BiJJFgkElF/f78eeOCBvPEJ05vfSxd3m5Tiya1sZZOZ9Pf3p+0amegxNjIyYngMKV6ymWm+QEIsFtOUpInJSe379Qkd/M2bip6blHVui25asli3dy2TraUl92qy1Zulb3/B2Af5IvsdTrwr3f2Esdit35HWfZim+ijOVMxgKW6T1L5Auvf6+MWUQvrslfj9wsauDlkk3f/8Ub19YWrG/Qubm7Rz5fLy9BkEAMw6JMIAoIwikciMcsJoNKr+/v4Zt+eyZs2aghJHdrt9Rt8vv9+flsgKh8OG5yFJo6OjM24Lh8NyOp1Zm+1PFwwG034GdqBEJlOSWp84mPG+7795Sp9/8SX5HVdr0+Wd2QeZ3yZteDDevyifIvsd7glLbxvcsO7MOWl3OF5SCZTT3uekO51FDFDCPnuFslgs2nh5p25Z+nvad+w1PZ3SZ/CmJYu1sWsZK8EAAIZRGom6dvLkSXV2dua87Nixo9rTRANyu92y2Wzq7u5OS2AlDA4OymKxqLu7O2+PrZ6eHtPJqoTUhNfg4KBsNlvabVI8CZWYS7aEVCLRZbPZNDg4mDWmu7s7688cCoXk9XrldDpn9C2LRCKy2Wzq6emR1+vN+Hg0nsePncgb4wm/mD/uY5ulz+6W5i7MfP/chdIf7ym61PvJl83FHzAZD0xXkVLcMvTZK1RbS4u22q/QE9ddqx9+/Do9cd212mq/giQYANSYHTt25P2cfvLkyarNzxKLsYk36k9nZ6dOnMj/AUmS/vqv/1pf/vKXyzshAEBJTUxO6kMHv5+xDGq6RXOa9cqnbsj/YfjsRLzf0QsH4qtWFtjiPcFW31mSnW8/8o/Ss8dNxHfGm+0DhZh4V+r4O2OrEBfNlU5sL7AU9wf/ID3+F8bjb/8GrRQAoMF9+ctf1t/8zd8Yiu3o6NDx4ybeQJUApZGoa01NTVq6dGnOmNbW4j/cAAAqa9+x1wwlwSTpzPkLeuzYa9pqvyJ3YJn7HdrmlzceSFWxUtwS99krSe8/AEBNa21tVUdH7r6NJ0+e1NSUsfd6pUYiDHVt6dKlFc8eAwDK73uvv2Eq/unX38ifCCuzdVdKz7xiPH7tleWbC2a/QkpxC0qElbjPXkl6/wEAatq2bdu0bdu2nDFmqrxKjR5hAACg5kTPGVzqkoifNBefVSwmTV2Q3h6TQjulr39S+rtr418P/X389ixdJTY7pIUGWxUtmivd6SjNlNGYxs+WNz7NagP98z6721CfvZL1/gMAoECsCAMAADXHOtdc82trqZplx6aku7K8PXppWPrWfdKWR6TrZpZ/tc2THrw13pw8n4c/U2C/JuB9FS3FtTRJD51/v8/eo9KLT13ss3f1LfHyyQXWvMNMTE7qc88fNXTI+54/qpuXLKYRPgCg5EiEAQCAmnPzksU69MZvDcfftGRxaQ58eG/+mEe2SM3NGVe/bHZIFkl3PZG5f9OCOdJDn5Fu+n1p54+kp16Or9SxzY+XSt5xTfx72iMhn4qW4loskqVZWtgurbk3filAWXr/AQBgErtGoi4l6omrscMEAKD8yrJrZD5nJyRfh/Gm4AMnsvZDmng33sz8wLRE16Y/lNr/NvfQj/RKdzrNTx+NpWK7RpbQp3/8rKkEt2vxZXriumvLOCMAQLVU8zM9K8IAAEDNaWtp0ddWLpcn/GLe2J0rl5emfOrwHmNJMEl674x0eHfWHSjb5sUbk09vTr57JP/QW4JSc5O06RpjU0FjKroUNxaLlwKfnZB+skf6eWq541pp9R3x70u4PLFqvf8AAEhBIgwAANSkjV0dski6//mjGVeGLWxu0s6Vy3V7V+7tuQ174UmT8QeyJsIymXhXuvsJY7FbvyOt+3D1V/CgtuUrxV3YEk+CZUyqFtEPr1BV6/0HAEAKEmEAAKAmWSwWbby8U7cs/T3tO/aann79DUUnJ2VtadFNSxZrY9ey0jbSfme8rPF7wsbK2CTpzDlpd3jmijIglcUibXZKn16euRT3TkeOZGqR/fAKUbXefwAApCARBgAAalpbS4u22q/I2zQ7FotpSvH+Yvt+fUIHf/OmoucmZZ0bT5zd3rVMtpYWWbKVei2wmZuYyfgnXzY3/IGXSYQ1ulhMmoq933PuueybK2Qrxc3q7IS0725jsXu3SivWZe2HZ8aGrmX60tGXDff+29i1rOhjAgAwHYkwAAAwK0xJan3iYMb7vv/mKX3+xZfkd1ytTZd3Zh5gxTrpF88YP+CKtabmN37WVLjpeMw+UzFpzhcz3zf8S+m+AwVurlDCfnhmVKX3HwAA0zRVewIAAACl8PixE3ljPOEXs8et3izNXWjsYJcsklab651km28q3HQ8Zp+9z+WP2RI0FpemkH54JbKxq0O7HFdrYXPmjyELm5v0T46rS9f7DwCAaUiEAQCAujcxOanPPX/UUOx9zx/V6Uy70c1vkzY8aOyAmx42XSq27kpT4VprMh6zi9nNFU6/a2LwMvfDyyXR+++VGz+hr664Sq7Fl2mVrU2uxZfpqyuu0i9v/IQ2ZFu1CQBACVAaCQAA6t6+Y68Z6jskSWfOX9Bjx17L3HPsY5vjHcgfuytz6djchdLGh6Rrb5feHpN+skf6+VPxRMECm3T1Wmn1HfHvp/Ui2+yQvnDQWMP8libp20elR8Iz+0Fla3GG2aWsmyuUqB9eMX35jPb+AwCg1EiEAQCAuve9198wFf/0629k/gBuscSTYX/46XgfpRcOXExyrVgbL4e8ZKF0V5a3UC8NS9+6T9ryiHRdeulk2zzpwVvjpWz5TE5JP4hcvF5UPyjUpbJurlCifnhF9+UDAKAKSIQBAIC6Fz1ncOlMIj5TaWSq+W3x5uCZGoT/eHf+AzyyRWpulj66Ke3mTdcYS4RlsyUoNTfFx8HsVtbNFVZvlr79BWMN83P0wzPal6/ZYqHnFwCgZpAIAwAAdc8619zuctZCd6M7OyHtu9tY7N6t8ZU3Kb3EmizS+a/E+z89+pz01MvxBMaiudL/+HdpMpZ/2K3fkdZ9WGqdV9BPgBoSi8V3hszEavL/N7m5Qiwmxabi52qu0t0ND8YTtvlk6Ydnti/fzUsWswskAKAm0CwfAIoQiURksVhKfunp6cl5XL/fL7fbre7ublksFnV3d8vtdiscDmd9TDQaTcbnuthsNjmdTvn9/hljhMNhOZ3OouY+/d/P6/Wqv7/f8GOATG5esthU/E0m45MO7zG2ikaS3jsjHU5fPWaxxFd0tS+Q7r1e+pc/lX52j/Rf/sBYEky62A8K9W8qJs35YubL8C/NjZXcXCE2FS/d3XapFLg/Xq77qyMXy3a3XRpPkK3elGu4uM/unrGqMaGQvnwAANQCVoQBQIk5HA7Z7fbk9Wg0qlAolLxutVrlcrnS7o9EIopELjYEGhsbyzh2OBxWX1/fjIRX4vHBYFAej0dDQ0MzHmu1WjU6OqpoNKr+/v6MiS673a7R0dGcP9vIyIgkyel0JudhtVq1a9cu9fb2Zn3s9Pn29/crGIzXiPl8PkOPA7LZ0LVMXzr6sqEP5ovmNGtj17LCDvTCkybjD2Qur5ymrP2gMOstmivd6Xj/yuG9+R/wyBapqUl66Hx85djhR6UXU1eO3RIvn1xgzTpEyfryAQBQYSTCAKAI0Wg0+b3P59P27dtltVrTYiKRiLq7u5PX7Xa7AoHAjLGyJblS73c6nbJarfJ4PHI64x2zR0ZG0pJafr9f3d3dWZNLVqtVQ0ND6u7unrESKzWBl097e7ukeHLs0KFDM37uTKYnwIBSaWtp0ddWLpcn/GLe2J0rlxdeovXOeFniy9oPCjVr73OlGefhz7xfKmumdPexu6SVn5YWtktr7o1fTCh5Xz4AACqE0kgAKAGXy6WBgQFDyaBsHA5HMkGWmmBLXF+zZo16e3s1Pj6uoaEheTye5Oqv8fFxORyOZLyRUkOfzzdjBVcoFEpbmZZNKBRSKBSS1Wo1nATz+/0aGhqS1+vNmAgEirWxq0O7HFdrYXPmtzcLm5v0T46rk027Y7GYLsRiGjt3Tv/4y1e17kc/03/6wY+07kc/04Oj/66xc+cUi02rV1xgMzcpg/HJ/k4GmY1H7Zl4V7r7ieLGWNgi7XGnbJ5QZOmuGRXrywcAQImxIgwAipAoYcxUilgIu90un883Y8VUf3+/1q9fn/U4VqtVgUAgbeVZOBxOS45lknhMavKrv78/Z6IqGo3K7XZLiq9GM5r883g8adftdruhpBtglMVi0cbLO3XL0t/TvmOv6enX31B0clLWlhbdtGSxNnYtS1sJNiWp9YmDGcf6/pun9PkXX5LfcbU2Xd558Y4V66RfPGN8UivWGgpbd6X0zCvGh73596XpVaBNlngPMtSHPWHpbROLpHr/QHrrvfhqQNv8eE+wOx3TNk0oU+luJjcvWaxDb/zWcHzBffkAACgxEmEAUCS73W6qpDCfnp6eGf27jhw5kuzNlW8eieRSJBLJmwiTpOHh4bQEWjAYVCgUSutjlsrtdisajSoQCBT1cxezeg7Ipa2lRVvtV+TtR/T4sRN5x/KEX1SzxZJcRabVm6Vvf8HYqptLFkmr7zQyZW12SF84aDwxct+B+CXV+a9IzSTC6obZvnBvvScd/JM8QWUq3c2kYn35AAAoMUojAaAI7e3t8nq9JR3T5XJp/fr1abcdOnTI0GNTE1NGk1R2u10DAwNptyWSXdN5vV6FQqGMZZVAPZmYnNTnnj9qKPa+54/qdKK/0fw2acODxg6y4UFp6rwU2il9/ZPS310b/3ro76W3x6SUssu2edKDt5r9KdKVqt8UKqMsfeGKLN01Uy6c6MtnRFF9+QAAKDFWhAFAERwOh6FVV2ZNL4E0unrqyJEjkszPy+fzaf/+/clG/dFoVH19fWklksFgUH6/P9kPDahn+469ZmgliySdOX9Bjx177eIKs49tjtcgPnZX5pVhcxfGk2D/PctqsJeGpW/dJ215RLruYsyma6QtRewjsSUoNTel9ItCzYjFpKlYvC/Ynuekp16WXja36aKxvnBFlu6aLRfe2NUhi6T7nz+a8fm0sLlJO1cuv7iiEgCAGkAiDABmiXA4rGg0muwXZtb0HmPBYFDBYFC9vb0Kh8Nyu90Fjw3Umu+9bi4L8fTrb1xMhFks8WTYH3463pz8hQPxErMFtnhiYfWd0nPfyT/oI1uk5mbpo5skxXt8nf9KPFny6PvJkvGz0qK50v/4d2kylns4Sdr6HWndh6f1jULVTcWkOV8sboy1VxoIKrJ012y5sNm+fAAA1AISYQDympic1GO/PqGnf/OmoucmZZ3bopuXLNaGrmVq4w1uzXC73cmdJwvp3WW325O7Oib09fXJbrdrzZo1kmR4h0ig1kXPmehSLik6mSF+flu80fj0ZuNnJ6R9dxsbeO/W+Cqe+a2yWOI9vtoXSPdeH79I0j/8WPrBq8aGO3NO2h2W7rnOWDwqo9iy1UVz443x80qU7j6yJX/spoel+a3Jq2bLhW9esjiZ5DLalw8AgFpAIgx17eTJk+rs7MwZs23bNm3btq1CM5p99h07ofufP6oz5y+k3X7ojd/qr3/xb/r6yuXaQMlDVUUiEbndbkUiEQ0PDxfVwN7j8SgQCCgUCkmKl0g6nU5J8XLNcpSBAtVgnWsuiW81k/Q/vMfYihxJeu+MdHh3zp37zDZVP/AyibBaMvGudPcTxY3x8GdSVvnFYlJsKp5w/cke6edPXVyRePVa6SMb8g/42d3JlYgJRZULAwCQYseOHdqxY0fOmJMnT1ZoNjORCENdm5qa0okTuZfxnz59ukKzmX32HTuhPxt5Iev9Z85f0J+NvCCLRP+PKhkcHFR/f3/yek9Pj1wulwKBQMErt4aGhtJKJKV4A3+Px1PMVIGacvOSxTr0xm8Nx9+0ZLHxwV940txkXjiQMxFWlqbqqJg9YeO7gU63sCWeBEvr+xabku7K8hY+0X9u83+Trvm0dPhR6cXURNkt8fLJBdYZDy2qXBgAgBSnT5/O+zm9mkiEoa41NTVp6dKlOWNaW1tz3o/MJiYndX+BJRIoP7fbrWAwc1ftUCikD37wg3r11VcLSoZlKpEMhUKKRCJFrTYDasmGrmX60tGXDa2AWTSnWRu7lhkf/J1xc5PJE2+oSXqKl96QPvnNeE+pO66JP95iMTcGSsfsir62S6TVl8f//+50ZOj3dnhv/kH2/LHU8qi05t74xYCSlAsDAKD4Z/COjtwLJU6ePKmpKWMrkUuNRBjq2tKlS3X8+PFqT2NW2nfstRnlkNlQIlF5u3bt0q5duzQ2NqZwOKyhoaFkOaOUeddHM1atWjXjNrfbrZGRkYLnDNSStpYWfW3lcnnCL+aN/fqKq7RwzhyNnTunfb8+oYMp/RJvWrJYt3ctk62lRZZEtmmBzdxk8sSvu1J65hXjw711Thr+Zfxy3wHpkV7pTqe5KaF0zK7Q+/3flQ7+SZY7C+w/Z0RZy4UBAA3FSHuizs7Oqq0aa6rKUQHUvEJKJFA5VqtVVqtVdrtdvb29Gh4e1vDwcFpMMBhUOBw2PXY0Gk02x08VDofTyjCBerexq0O7HFdrYXPmt0MLm5v0T46rtb6rQ61PHFTX9w7J9/OX9f03Tyk8cVrff/OUPv/iS+r63iE9lrrb3op15iZyySLp65+U/u7a+NdDfy+9PRbvBSVpsyNeIleoLcHim7Ujv1hMujAljb0j7fxRfFXetf8gjZ4yN07OFYCF9J8z6GYz5b8yWS4MAEANIREGICNKJOqPy+WakQw7cuSI6XHWrFmjaDSqgYEBDQ0Npd03ODhYUHINqEUWi0UbL+/UKzd+Ql9dcZVciy/TKlubXIsv01dXXKVf3vgJbbi8U48fy//XSk/4xYtxqzdLcxcan8hz/1e8t9Ovjlzs8bTt0ngjdElt86QHby3kJ7xo63ek0+8WNwZym4pJc74oXfq30v0H4ivyjpyQxkyuCFt7ZY47C+k/JykWi+lCLKaxc+f0j798Vet+9DP9px/8SOt+9DM9OPrvGjt3Trd3Ls2aFJ7OdLkwAAA1hNJIABlRIlGfXC6XXC5XskzSbCmj1+tVOBxWb2+vfD6fJKXtIinFSyRHR0dLN2mgytpaWrTVfkXG8u6JyUl9zmy/xPlt0oYHpUe2FDexR7ZIzc3SRzdps0OySLrricIar585J+0Os5tkOZVi1d2iufG+YFkV2H9uSlLrEwczhiRWNvodVxsuF965cjl9QQEAdYsVYQAyokSifqU2uR8bGzP8OL/fL7/fL7vdntZbbHqfsUgkknYMYDbbd+w1Qw31pYv9EiVJH9ssfXa3uZVhmezdKp09LYtF2uyUTvyl9I110qc+JLVeYm6oAyabtsO4iXelu58ofpyHPyO1XhKTpi7Ey2NDO9PLZs+a3An7/f5zRlc1NkmGyoXZKRoAUM9IhAHIaEPXMi2a02wolhKJ2uJwXFxO0N7ebugx4XBYXq9XVqt1Rnml1WqdUSLp9/vTVokBs1XB/RItlngybPCEdPs3pKs+JX3gI/Gvjl7jA07r89Q2L76q6+CfxJuqm/HjX0l//6N4D6v324+hRPaEC1upl7CwRdrjljZdIyk2Jd01J14eG7g/vWz2N/9mbuAVa02tarz/hV9o7dLfy1suDABAPaM0EkBGbS0t+vrK5fqzkRfyxlIiUbt6enryxqQ2xw8EArLb7TNiPB5PxhLJV199VVartWTzBWpN0f0S57dJN9wTvyTs/JS5SbxwIP3x78vZVD2Dt87Fd5FkJ8nSe9LkartLF0jd7fH/w7VXxsshW+e9f+fhvaWZ1CWLpNV3FrSqMVEqzG7QAIDZiEQYgKw2dHXIonjfmzPnL8y4f9GcZu1cuZwSiRqT2sze5XLljU9tjp8rPhAIyGazJa9Ho1H19fXNKJ0EZhOz/RIXNjXpH3/5qg7+5k1Fz03KOrdFNy1ZrNu7lsnW0iKLxVJwn6fp1l0pPfOKuaEStgSl5qb3VyAVKBaLN4ifeFfa85z01MvS+NmLyZ07rol/b7EUfoxaNf1n/8mvzD2+u1366Z9nuOPshLTv7pLMUZselua36nuvm1tF9vTrb5AAAwDMaiTCAOR0e1eHblqyWPuOvaanX39D0clJWVviH+w2di1jJVgN2r9/vyRpYGAg72qtRHN8l8uVbI6fjdVq1cDAgPr7+5O3BYNBBYNB9faaKPUC6sjNSxbr0Bu/NRz/w1Pj+uGp9MRVajPyTZd3Jvs2GXZ2It4f6p3x+GOvXiutvkObr7HpCwctBZfkbf2OtO7DKSuRTErskpjJ8C9n98qzXD+7EVlX8x3eI517u/CBpXhfuk0PSx/dJIldoAEAmI5EGIC8cu2ohvyi0WjO60aEQiFFIhGtX78+Z3IrHA4rGAzK4XDkTWwNDg7K7/dLmtkQPxufz6ehoSFFIpHkbX19fXK5XJRIYlba0LVMXzr6suHSslw84RfVbLHo9hXrpF88Y/yBv/m39N5QLw1L37pPbVse0YO33qktwcLmU+xOkkZ2SSzFyjOjKrlCragdImMxrfuPU9LbE9JP9kg/f+piknPs1+bGWnKl1H7FxcevWCutvlOa35oMYRdoAADSkQgDgDI7cuRI2nUzOzlK8eRWoteX1+uVx+PJuNorFArJ7XbL5XLNaHg/XTAYTK7s8vl8ppJY/f39abtGJnqMjYyMGB5DUloyrZDkIFAJbS0t+trK5fKEXyzJePc9f1Q3f3yDWr/9heJX/jyyRZv+eI62aGPBQ/zlv0jffcl8osjMLol/HJS+eUR6672LSalNfxhv/H/6vZlJq1t+X9r4h1KTRXr0fxq/7+bflz73VOY5lHKFWrE7RLbOndKf75kj7SluHpKkea2K3fu0piRNTE5q369P6GD45bSy3I9f1m5qVSO7QAMAZjtLLMa+Qag/nZ2dOnHihDo6OnT8+PFqTwfIKhKJqKenJy3pI8WTTwMDA4bGiEajab25Enp7e3Xttdfq1KlTCofDikQiGhgYyFum6Pf70xJZRhJnqfr7+zU4ODjjdofDkbXZ/nTBYFButzt53W63a3R01PAcgEqKxWLad+yE7n/+aMaVYS0WadLEu6mvrrhKW1//ofTIluLndskiTT1wQhOWVj36nPT/fSbeFL9QRhNF//Bj6S+eLPw41fTo+uJWqBX7s/+Plbt1/Q+K/7+XJF31KV2492m1PnEwZ1iLJCMFj4vmNOuVT91A2wMAQNlV8zN9U0WPBgANwu12y2azqbu7e0YSTIqXJVosFnV3dysYzF3XZLVaNTo6qt7e3rQkUygUSvYD6+/vT8ZkMzg4KJvNlpYES4yTmEvqrpCpwuGwnE6nbDZbxiRYIqa7uzvrzxwKheT1euV0OtOSYFI8YWiz2dTT0yOv15vx8UC1WCwWbby8U6/c+Al9dcVVci2+TKtsbXItvkxfXXGVrru03dR4T7/+hvSxzdJnd8f7ORUzt/fOqPlnu9W+QLr3euljRVawbwkaK/szu0tiLfnjoPSJXdK1/yB98pvS3/9IGnsnXlqZSSwmXZiKx+z8kfTXmV8m81rYIj3+6Qld/6MSNcOXpBVr9fixE3nDjHb9YhdoAEAjYEUY6hIrwgAAteKP/vXHGolOGI5fZWvTDz/+fmOusxPxBukvHEjpE/Ur6XUTmaZLfkeyr5auXqtdljvkecZWVCOsRXOlE9svNtHP1HvrR/8uvXO+4EPUpGyr4S5MFdcYv+0S6X//pHSnQ2r9yT9Ij/9F4YOlumSRJv73X+lDP3zWUA+7uRZpjqVJ70zNjF3Y3KSdK5drw+WdpZkbAAB5VPMzPT3CAAAAilBUM/L5bdIN98QvCQ98xNwE3nsr3kD/pWH16T4dbt2tf56z2dwYKaY30S92h8R6ka2xf1GN8SWtvjxlQ4IXSlhPuulh7fvtW4Y3cjgXk7501Yc0v7mZXaABAA2NRBgAAEARbl6y2FQz8j+6rF3/+MtXdfA3b6Y1Nb+9a5lsLS2yLJjZE9AM/+kt+uf2whNhUrz8byoWb6D/5EtFDVVXtn5HWvfhi6vhim2ML8U3B0h6Z7y4waR4Oe2mh6WPbtL3fvysqYf+65un9MR117ILNACgoZEIAwAAKMKGrmX60tGXDa/M+dIv/teM277/5il9/sWX5HdcrU0r1km/eKbg+TQpprNvtemD1mN6/UJrQWOMnY3vsnjfAWluA3WUPXNO+u8j8QTgnuekhw5LbxttsDVdLKbWuVO68/cnpNAe6edPSSdNNldbcqXUfsXFstkVa6XVd0rz4/+v0XPmJhedLPSHAQBg9iARBgAAUIS2lhZ9beVyecIvFj2WJ/yimq++UbfPXSide7ugMSyS5k2eVuSPduubi+7RgZeln/xaOv1eYXM6Zyy/N2skEoDFatKUJn4zR/rLwseIffzPNXXDn2ticlL7fn0ivorw8IvJVYQLm81lKa2UPwIAQCIMAACgWBu7OmSRdP/zRzOuDFvQZNHkVMzQ7n33vRTRzbc9pNY9dxY1p/kvHdA9992je66T/uHH0l+UsD0VclvYIh388F7pX4sY5JJFmlq9Wa1PHMx49/ffPGV6yJuWLC5iQgAAzA4NtNgdAACgPCwWizZe3qlXbvyEvrriKrkWX6ZVtja5Fl+mr664Sl/88H80lASTpDPnL+ixpf9J+uzueD+oQo3+WPq7a6Wvf1J/+tbfq6NpLL4FZKFiMTXFLmS83H32G7JeGNPCOTF9wt5Y5ZSpLl0gfWOd9NrnJvS//fju4gbb9LAe/+1bpZmYpEVzmrWxa1nJxgMAoF5ZYrFi3hEB1VHNrVYBADDr0z9+1lRD/Q8tXKCuBfMVffddWd95Uze9+VPd/vM9sr39uixFzKPZdl5TluaCHtsUu6AL47mLCf4P+yP6fP+d2j0S34WxYLGYmpS7JnNKTZIl/7/G70xNaNO5R/XwvD8vYkL5j7Hl3G593npAl88dl959S3rdZD+whPeb4U84b9OHDn7fcO+5fL7pXKHbuzpKMhYAAMWq5md6SiMBAADKzGxT81fefkevvP3O+9cW6PvtN+jzf3SDdv3P/0MbT/6g4HmcG2/Rn7U9qv/evLHgMXL5fGSL9NNmbbp2U95EWN+10mP/M3Mz+kssU3p3LPfb1E0Lduuxeem7Yy5skXbcHO9rduClmFa/tke+E3frktg78l+ydcYYRpNpWb2fsPt1tEtWvSW9k/8hGc1rk+yr05rh74v8ylQSbK7FonMZ/r69sLlJO1cuJwkGAMD7SIQBAACUmXVuaZqUe1ZuKyoR1qyY/vldr1b/l7X64v+vVacKTdzk8qhXTfbrdf4T39XkC9/T2JvjOn7Bpn9dcIt+umSj/vPyNt3x4dOy/s89+kfrU/H7z9v0g4VrdXjpHfrPf2DTn57fKz2W+zB737lTK5dIz8y7Rf/vM3t0y+RT6pgzrubDNunqtbrHPkf62cVVYJlWszXbzmtKha2Qk+IN8fOtkjNiYtkKPbb2YT39mzcV/enPZZ3bomPvnDU1xnWX2rRu2RI9/fobik5OytoSb6i/sWuZWmmSDwBAEqWRqEuURgIA6snDkV/p//PCL4oexxK7oDMH1xU/IVuXfj3vSg1E1+nheXcbWhllpDSyJDY8JP1f/7XgXTPNKKZU9HemJi6uBCtQTNJjyz6hz119r95umlvwOJK0ytamH378uqLGAACgUqr5mb5BW5kCAABUzoauZVrYXPzbrpia9Ds3PqmhD/6X4gYaP6bLTw7rH8/eqwvjc/L246qofXdVJAlm2vubBbRdGNNfnN2p5858tKgkmCTtW3qDPCv/a9FJMEmysuoLAABDKI0EAAAos7aWFn195XL1hV8sbiCLRVNq1t/+gVePXnWHrG//RjdNHNXt/ytYdCN95FaqMshU25bP7FtWqJuWLC7ZWAAAzGasCAMAAKiAjZd36pvOFVo0p/CeVAnj5y8oPDVP359/hT6/5GZ1/dE/a9/SGwoe79x4i94ba9H3Jj6pptiFrJfZJtfP2hS7IJW5g8iZOQtKMs6iOc3a2LWsJGMBADDb0SMMdSlRT9zU1KSlS5fmjN22bZu2bdtWoZkBAJDbxOSk9h17La2p+a/fOav/daa4csBS9A+7IBXROn722bBgjx6fd0dJ+oFNNM/Xvo41Ovi71yraskivLliq385tK27Xyvd907mCXSEBADVjx44d2rFjR86YkydPampqqio9wiiNRF2bmprSiRMncsacPn26QrMBACC/tpYWbbVfoa32K5K3laqZfrFIgqV79J3N2v7ugBY3TxScBEs2xP+De/R287ySzm/RnGbtXLmcJBgAoKacPn067+f0aiIRhrpmZEVYa2trhWYDAEBhNnQt05eOvqy3LxTetD6mJi268Un9xzPH9Dvnz8o6eUY3vvGsbjvxfdmm3pl1/cMmmuapberdsh6jWdKKqZ+rmL0EEg3xi/X7ixaqa8H85CrCm5Ys1sauZWqlST4AoMa0traqoyP3H2kSK8KqgdJI1KVqbrUKAEA5PPbr48U308/i9NNr1WwymxOTNJWhnWyv46/0yTdHdNtrP5DtQrycc0pNmrikVY8v/t/kPfa9GY9p0pTpRFy24yd0rdmrE4c21HyCb4lrv95q+Z2ix/nqiqvSVhECAFDPqvmZnhVhAAAANWDj5Z1qslh03/NHdeZ89RvTT6lJrTcdyHjfM7/3Uf3XP7hb/hPf1u3nj6v1inuT933+D+6eEX/66bVq0lTOxJaUkjCbu1D71j2kvncuyzvHXOPaPvVtLbjwnr529CHdfvJf4wm75vl6vOMTGr7MoWD4bzMf36RE0m6iaZ4e71yjf/ndVYq2LNJbLQv11pxFBYyYjmb4AACUDokwAACAGnF7V4duWrI4rZl+5O13NHZustpTy8jT8V90+IpO6Ve5/5LbduMT+pNfPaVvfuDTOeMssQv6p+f/T930KY/u/+2lMlKTmCthJ0lvNc3Vn/2hT7HOFeq77Ma0+6Y/rpCVc0bmUKydK5dTAgkAQImQCAMAAKgh05vpl6KR/oUcK7EKXQWV8M95kmCSFLM065tX5N/RMmZp1n3X+PT6ZVfq7d/8W974thufMDRHSfrz370xvnSrjixsbqIZPgAAJUYiDAAAoIaVopG+7abvZr1v/OlPZ1wFlSt5VhCLsXTbmZhFjxhIrknxxJlR5wwkwWLK/nMnyh8zJQ5L9W916dwWfXDhAprhAwBQRiTCAAAAalhbS4u+vnJ52Rrp50qSVcvr775XleNOqamq/x5/eeWHaIgPAECZlfhPfQAAACi1jZd36pvOFVo0x/gKKJhnu/H/rtqxaYgPAEBlsCIMAACgDmRqpP/W5Hn925m3qz21kls67xKdPnO+8gc2UWpZajTEBwCgMlgRBgAAUCcSjfSfuO5a/fDj1+kHH/+YFjbPvrdzm6/onJU/VyYLm5v0T46raYgPAECFsCIMAACgTpW7f1g1LJrTrD/9QJcWXzJXHgM/11yLRedi9bMd5O8vWqjfaZlDQ3wAAKqERBgAAEAd23h5p5osFt33/FGdOX+h4sf/0ys69U0Duzz+yRWd+mcDcYkSwY1dHbJIuv/5oxl3zFzY3KSdK5drSqqbhNmiOc36149/jMQXAABVRCIMAACgzmXqH7aouVk/PjVetuTPojnN2rlyuW7v6tB1l7VnTcQl4m7rXKaPXWrLm9hKlAhaLBZtvLxTtyz9vbSfa/pKqlgsZihhFpOqvnKOPmAAAFSfJRaro7XkwPs6Ozt14sQJdXR06Pjx/H9dBgCgEe399XFDq6Xy+X8tW6K3zp/PmIhKmJiczJmwMhtnlpFxHz92ImvCbmFzkyanYmVJHKYmDQEAQHU/05MIq4JIJCKv16vh4eG8seFwWENDQwqFQopEIpIku92u3t5ebd++XVartaA5DA4Oanh4WEeOHFE0GpXdbpfD4ZDX65XL5aqZMbMhEQYAQH6xWEz7jp3IulrKiEVzmvXKp26YNSuZciXMnjz5m6ITh3ObLLru0nadOX+ePmAAAGRBImyWiEajstlshmI9Ho+GhoZyjtXX16dgMJhznKGhIXk8HsNzDIVCcrvdikajcrlc6u/vl91uVzgcVn9/vyKRiFwulwKBgOEkWznGzIdEGAAAxmVK/vzu3BbtO34y72O/6VzRMCuZSpE4bKR/LwAACkUibJYYHBxUf3+/odjR0VHZ7faM90WjUTmdzuQKsHzyJdUSQqGQenp6cj7G6XQqHA7LbrdrZGQkb+KqHGMaQSIMAIDi5SoVbORyvmyrxi5psugLP3+Zfy8AAIpEImyWsNlsikajeeNcLlfOssienh6FQiE5HA5t375dDodDUrxM8tlnn9Xg4OCMxwQCAfX29mYdMxqN6oMf/GCyZHF0dDRjXCQSUXd3t6F5lmNMo0iEAQBQGuXq2TVb8e8FAEDxSITNAn6/X16vVz6fL7lCKptVq1ZlXRWVOs7AwEDGmEgkIrfbrXA4nLzNarVqfHw86zETyTUpfzml2+1OlmTmii3HmEaRCAMAAAAAoD6RCJsFEiuesq2KMjOO3W7Pu2oqdZVVwvDwcMam9NNjx8fHc5YnBoNBud1uSdkTbOUY0wwSYQAAAAAA1KdqfqZvqujRZqlgMKhIJGK4P1g24XBYkUhEgUAgb6zdbp+xYix1hViq1DiXy5W3R1dqiWU0Gs3YsL8cYwIAAAAAAJQTibASeOCBB2S1WrV+/fqixtm/f788Ho/hZvLTV3+dOnUqY5zf709+n+g3lk9qI//9+/dXZEwAAAAAAIByIhFWpHA4rHA4rGg0KpvNpu7ubnm93oJWPN12221Z+4JlMj0BNb1UMjG/VNdee63psaf/LOUYEwAAAAAAoNxIhBVpejlkJBKR3++X2+2WxWKZ0dQ+F4fDYXg1mKQZO1SmrrhKSDSzzxWTyfS41J+hHGMCAAAAAACUG4mwIkQikRlJoemCwaCcTqe8Xm9Zjp8qU6P8Z599Nu260UTbpZdemnb9yJEjZR0TAAAAAACg3OZUewL1zG63a2hoSNFoVKOjowqFQjOSUwl+v19HjhzRyMhIyY6fmkjyeDwZY6bPp9DVW6m7YZZjTAAAAAAAgHIjEVak6QmoaDQqv9+vBx54YEbpYjgcVk9Pj4aHh0ty7KGhoeT32XaszJaYMyv1ZynHmAAAAAAAAOVGIqzErFarfD6ffD6fgsGg+vr60hI+oVBIg4OD8vl8RR0nEokke2wNDAxkXZVVaLJpernj2NhYWccs1MmTJ9XZ2Vn0ONu2bdO2bduKHgelt2PHDp0+fVqtra38H6GhcO6jkXH+o5Fx/qNRce7Xhx07dmjHjh1Fj3Py5MkSzKYwllgsFqva0RtANBrVmjVr0hrDW61WjY+PFzWu1+uV3++X3W7PWWJosVjSrhv97w6FQurp6Uled7lcyZVs5RjTrM7OTp04caKgx2by13/91/ryl79csvFQOon/646ODh0/frza0wEqhnMfjYzzH42M8x+NinO/Pnz5y1/W3/zN35RsvGr8f7MirMysVqtGRkbkdDqTybBoNKpQKJSxub0R4XBYfr9fVqs1byLJarWWpAQxdTVXOcYsVFNTk5YuXVr0OK2trUWPAQAAAADAbNba2qqOjo6ixzl58qSmpqZKMCPzSIRVyK5du+R0OpPXh4eHC06E9fX1SZIOHTqUt1F9e3t7SZJW7e3tZR2zUEuXLuWvBQAAAAAAVECp2gqVusrLjKaqHLUBORyOtMRXoQ3nvV6vwuGwAoGAHA5H3vhCV11NT3RNXxFW6jEBAAAAAADKjURYBaX2xyqE3++X3+/X0NCQent7DT1m1apVadeNruSa3si+u7u7rGMCAAAAAACUG4mwCkotYzRbFhgKheT1ejU0NCSPx2P4canlmJLxlWjTG/CnrmYrx5gAAAAAAADlRiKsglITYWbKAsPhsHp6ejQwMGAqCSbNXL1lNGmVusrLarWmzb0cYwIAAAAAAJQbibAKOnLkSPJ7o2WSkUhEa9askc/nk8/nM31Mh8ORlnR79tlnDT0uda7TE1/lGBMAAAAAAKDc2DWyglJLA42UBUYiETmdTnk8Hg0MDBg6RiQSUTAYTEuarV+/Xn6/X1J8dZkRqXH9/f0z7i/HmKW0Y8cOnT59Wq2trSXZ0aJUanVeUm3PrRbV8r9Xrc6Nec0etfpvxrzMq+W51aJa/veq1bkxr9mjVv/NmJd5tTy3WlTL/161OrdanVdSDBVjt9tjkmI+ny9v7Pj4eMxut8c8Ho+pYzgcjtjIyEjabSMjIzFJyUs+w8PDyVi73Z4xphxjmtHR0RGTFOvo6Cjo/mqp1XnFYrU7N+ZlXq3OjXmZU6vzisVqd27My7xanRvzMq9W58a8zKvVuTEvc2p1XrFY7c6NeZlXq3MzMq9qzp3SyAoJBoOKRCKyWq3avn17zthoNCqn0ym73a7+/n5FIpG8l1AolGxi73A40sZzOBxpK9CCwWDO4wcCgeT32VZulWNMAAAAAACAcqI0skChUEhut1vRaFQul0sDAwMzElAJkUhEfX19kqRDhw7lbZS/Zs2aZIKru7vb1LyGhoay3p4Y64EHHlBvb2/GuGg0mix5dLlcOZvzl2NMAAAAAACAcmFFWIECgUByF8TEaiyv1zsjLnFfe3u7RkdHsybLEpxOp+GeW5lkSzLZ7fbkqqxwOKzBwcGMcWvWrJEU39UxdRVXpcYEAAAAAAAoFxJhBXK73TNu8/v9stlscrvd8nq9cjqd6unpkcfj0cjIiOx2e94xy5EES+jt7dXw8LCsVqv6+/uTx4tGo8mEXTgclsPh0Kuvvpp35Vq5xgQAAAAAACgHSiML5HK5NDo6qoGBAYVCIY2NjSVXiCUSP9u3b5fL5TKc/KnEaimXy6Xx8XENDg5q//79WrNmjaLRqKxWq1atWqVAIJC1xLGSYwIAAAAAAJQaibAi2O32rD25ap3P55PP56v5MQEAAAAAAEqF0kgAAAAAAAA0BEssFotVexKAWXPnztXk5KSampq0dOnSGfefPHlSU1NTWe+vllqdl1S7c2Ne5tXq3JiXObU6L6l258a8zKvVuTEv82p1bszLvFqdG/Myp1bnJdXu3JiXebU6NyPzSsS0tLTo3LlzFZ0fiTDUpebmZk1NTVV7GgAAAAAAoEBNTU26cOFCRY9JjzDUpXnz5undd99Vc3OzFi9eXO3pAAAAAAAAg9544w1duHBB8+bNq/ixWREGAAAAAACAhkCzfAAAAAAAADQEEmEAAAAAAABoCCTCAAAAAAAA0BBIhAEAAAAAAKAhkAgDAAAAAABAQyARBgAAAAAAgIZAIgwAAAAAAAANgUQYAAAAAAAAGgKJMAAAAAAAADQEEmEAAAAAAABoCCTCAAAAAAAA0BBIhAEoSjgcltfrVXd3tywWiywWi7q7u9Xf369oNFrwuIODg+rp6ZHNZkuO6Xa7FQqFZv2YqF+RSEQ9PT0KBoNFjVMv5yrnP0qNcwrVwus3z7VGxXt5ngsNKQYABRgfH4/19vbGJOW8DA0NmRp3eHg4ZrVaY5JiLpcrNjw8HBsdHY0FAoGY3W5P3j4+Pj7rxkT9mv58MHveJ9TLucr5j1LjnEK18PrNc61R8V6e50IjIxEGwLTx8fHkLwgjF4/HY2jc4eHhvI9xOBwxSTG73W7oF1O9jIn6ND4+HvP5fEW/aYzF6udc5fxHqXFOoRp4/ea51sh4L89zodGRCANgmsvlikmKORyOWCAQiI2Ojib/gpLpTaWkWCAQyDnm+Ph48q8ydrs9a9zo6GhyTJfLNSvGRH0aGBiI2e325POhmA9S9XKucv6j1DinUA28fvNca3S8l+e50OhIhAEwZWhoKCYp5vP5ssaMjo4m/4qSuFit1pzjpr4Zzfcm1GgJQ72MifozMjISGxkZSV5PPC8K/f+ul3OV8x+lxjmFSuP1m+dao+O9PM8FkAgDYFLiL6j5pP4VJXEZHh42FJtv+XEgEMj7S7lexsTsMDIyUvAHqXo5Vzn/UWqcU6gFvH4XNibqF+/leS6ARBgAExJvFo3WyQ8MDKT9shkYGMgY5/F4kjFGlx6njptpqXa9jInZYfobKzMfpOrlXOX8R6lxTqEW8Ppd2JioT7yX57mAuCYBgEH79++Xx+OR1Wo1FO9yudKunzp1KmOc3+9Pfu9wOAyNbbfb0+ZVr2MC9XKucv6j1DinUO/q5bWW5xoSeC/PcwFxJMIAGHbbbbdpYGDAcPz0XzDd3d0zYsLhcNr1a6+91vTYwWCwLscE6uVc5fxHqXFOod7Vy2stzzWk4r18acdE/SIRBsAwh8Nh+C9IkhSNRtOup/5FJSEUCuWNyWR6XOovt3oZE6iXc5XzH6XGOYV6Vy+vtTzXkIr38qUdE/WLRBiAsolEImnXpy+vlqRnn3027brRX86XXnpp2vUjR47U3ZhAvZyrnP8oNc4p1Lt6ea3luYZi8F6e58JsRSIMQNmk/qLweDwZY6b/gi30rzOjo6N1NyZQL+cq5z9KjXMK9a5eXmt5rqEYvJfnuTBbkQgDUDZDQ0PJ7/v7+zPGTP+lVKjUpdv1MiZQL+cq5z9KjXMK9a5eXmt5rqEYvJfPPSbqF4kwAGURiUSSNfQDAwNZ/+pS6C+T6cuZx8bG6m5MoF7OVc5/lBrnFOpdvbzW8lxDoXgvn39M1C8SYQDKIrEjjd1ul8/nK/vxyvHXmXoZE6iXc5XzH6XGOYV6Vy+vtTzXGg/v5Ss3JiqPRBiAkguHw/L7/bJarRoeHs4Za2bnGqPj1MuYQL2cq5z/KDXOKdS7enmt5bmGQvBe3tiYqF8kwoBZwu/3y2KxlPTidDoLmktfX58k6dChQ3kbUba3txd0jFzj1MuYKJ1aOv/NqJdzlfMfpcY5hXpXL6+1PNdQCN7LGxsT9YtEGICS8nq9CofDCgQCcjgceeML/avK9GXJpfiLT6XHBOrlXOX8R6lxTqHe1ctrLc81mMV7eeNjon7NqfYEAJSGy+VSIBAo6ZhmX+j9fr/8fr+GhobU29tr6DGrVq1KNuKU4r9sjBx3eqPK7u7uuhsTpVML538h6uVc5fxHqXFOod7Vy2stzzWYwXt5c2OifpEIA2YJu92ed+lyOYVCIXm9Xg0NDcnj8Rh+3PTys0gkYuivT6Ojo2nXXS5X3Y2J0qn2+V+oejlXOf9RapxTqHf18lrLcw1G8V7e/JioX5RGAihaOBxWT0+PBgYGTP3ilOJ/nUkViUQMPS51mbLVak1LgtTLmEC9nKuc/yg1zinUu3p5reW5BiN4L1/YmKhfJMIAFCUSiWjNmjXy+XwFba3scDjSliU/++yzhh535MiR5PfTf7HVy5hAvZyrnP8oNc4p1Lt6ea3luYZ8eC9f+JioXyTCABQsEonI6XTK4/FoYGDA8GMGBwfTblu/fn3y+9Ta/VxS4/r7+2fcXy9jAvVyrnL+o9Q4p1Dv6uW1lucasuG9fPFjok7FAKAA4+PjMbvdHvN4PKYe53A4YiMjI2m3jYyMxCQlL/kMDw8nY+12e8aYehkTs8Po6GjauTE0NGT4sfVyrnL+o9Q4p1ALeP0ubEzUP97L81xoZKwIA2BaNBqV0+mU3W5Xf3+/IpFI3ksoFEo2qZzemNLhcKQ1ngwGgzmPn7o7YLa/zNTLmJgdpm+tbUa9nKuc/yg1zinUAl6/CxsT9Y338qUbE3Wq2pk4APXH4XCk/TXFzCXbX1pT/yLrcDiyHnt8fDwZ53K5cs6zXsZE/QsEAmnn+cDAgKnH18u5yvmPUuOcQrXx+l34mKhfvJfnudDoSIQBMKWYX5z5cu+pb0azvRFNHN9qtcbGx8fzzrdexkT9SpQWpJ7nud5YZVMv5yrnP0qNcwrVwut38WOi/vBenucCSIQBMKG3t7eoX5xGehAMDw/HrFZrTFKst7c3NjIyEhsfH48NDw8nfyE5HA5Tv5DqZUzUj/Hx8Vhvb2/M5XLlPOddLlfy/DCiXs5Vzn+UGucUKoXXb55rjYz38uUdE/WDRBiAmjQwMBBzOBzJX1BWqzXmcrligUBg1o8J1Mu5yvmPUuOcQr2rl9danmsot3o5b3kuNCZLLBaLCQAAAAAAAJjl2DUSAAAAAAAADYFEGAAAAAAAABoCiTAAAAAAAAA0BBJhAAAAAAAAaAgkwgAAAAAAANAQSIQBAAAAAACgIZAIAwAAAAAAQEMgEQYAAAAAAICGQCIMAAAAAAAADYFEGAAAAAAAABoCiTAAAAAAAAA0BBJhAAAAAAAAaAgkwgAAAAAAANAQSIQBAAAAAICGE41GZbFY8l7C4XC1p1qzBgcH8/77dXd3V3uaaSyxWCxW7UkAAAAAAABUUjQalc1mS153OBzatWuX7HZ7WpzVaq3wzOpLNBpNfj82NqZQKCSv15u8zW63a3R0tAozy4xEGAAAAAAAaDjTE2GBQEC9vb1VnNHs4Xa7FQwGJdVeIozSSAAAAAAA0PBY+VU601fV1RISYQAAAAAAoOG1t7dXewqoABJhAAAAAAAAaAgkwgAAAAAAANAQSIQBAAAAAACgIZAIAwAAAAAAMCkajWpwcFBOpzO5Q2JCMBhUT0+PbDabLBaLnE6n/H5/1nH6+/vldDrT4qePWevzqBdzqj0BAAAAAADQGNxut0KhkKLRaMb7HQ6HAoGA7Ha7vF6vvvWtb82ItdvtGhkZqcouj+FwWKFQSPv371c4HJ5xfyQSkdvtnnFfOByW1+vVyMiIhoaGkrcPDg6qv78/43Hcbrd8Pp8GBgZqdh71yBKLxWLVngQAAAAAAGgcXq93xsqkgYEB+Xy+tNvC4bCcTqekeJLs0KFDJUuARaNR2Wy25PWRkRE5HI6s8ZFIJJksmr5KKhAIaGxsTF6vVw6HQ7fddpvsdrsikYgeeOCBtGTe8PCwXC6Xenp6dOTIEa1fv15Op1Pt7e169tlnNTg4mDb26Oio7HZ7zc0jl/7+/uTj7Xa7RkdHDT2uEkiEAQAAAACAiuvp6VEoFEpe93g8aauUJMnv98vr9crlcml4eLikxzebCEs1fQWV3W7X2NiYdu3apd7e3rTYSCSi7u7u5PXEMdrb2xUIBGYk9kKhkHp6epLXM/271No8pqvlRBg9wgAAAAAAQMUFAoG0636/P23FUqJnldVqnRFbbZkSZuPj4zOST1I8EeRyuZLXw+GwotGohoeHM65uc7lcaSuvUpOFtTqPekIiDAAAAAAAVJzVap2xwqivry/t+2g0mnG1UrW1t7enXc+UeEqVurJKUsZ+XKlSE1yRSKTm51FPSIQBAAAAAICq8Hg8aauUgsGgQqGQ/H6/gsHgjPvr1fRE3vQE1nTTe3GVKglVK/OoJnaNBAAAAAAAVTM0NJTWu8rtdkuKJ2GM9qSqdfkSTvlk22WzXudRTawIAwAAAAAAVWO32zUwMJC8Ho1GkyWRjerSSy+t9hQk1c48SolEGAAAAAAAqCqfz2d4x0agGCTCAAAAAABA1U1fAZYokQRKiUQYAAAAAACouun9wCKRSN5dDQGzSIQBAAAAAICqCofDGhwcVG9vb9rtg4ODCofDVZoVZiMSYQAAAAAAoKrcbresVqt27do1Y2UYJZIoJRJhAAAAAACgarxeryKRiHbt2iWr1SqPx5PWOD8SiWhwcLCKM8RsQiIMAAAAAABURSgUkt/vl8vlSiuLnN44v7+/X5FIpNLTwyxEIgwAAAAAAFRFouxxeuLLbrdrYGAgY+xsMDY2Vu0pSKqdeVQSiTAAAAAAAFBxbrdb0WhUQ0NDslqtM+73+Xyy2+3J64mG+vVoesIpGo3mjD916tSsnkc1kQgDAAAAAAAVFQwGFQwGZbfb5fF4ssZlKpGshV0kp5dp5ksoTb9/dHTUVHy2stBamUc9IREGAAAAAAAqJhQKJcscU/uCZZK6IixhzZo1VU+GPfDAA2nXv/Wtb2VNQiVWvU2Pz5Xc+ta3vpV22/TH19o86gmJMAAAAAAAUHaRSEROp1M9PT3J2wYHB9XT05MxeTM4OCin0znj9mg0KqfTKafTWdEVSuFwWD09PbLZbDMScdFoVDabTU6nU8FgMBnvdDpls9kyrtzq7u6W0+mU3++XFE8Qdnd3q7u7e8a/RygUks1mU09Pj7773e/WxDzqdXWYJRaLxao9CQAAAAAAgEpKJI0SRkZG5HA4qjij2aO/vz/Zz81ut+ctwawkVoQBAAAAAACgIZAIAwAAAAAAQEMgEQYAAAAAABre2NhYtaeACiARBgAAAAAAGl69Nn+vRdl2rqwFc6o9AQAAAAAAgGrr7++X3W7XqlWr0m63Wq3VmVCdmJ70OnLkSHIHylpEIgwAAAAAADS8aDSqnp6eGbezm2R2g4OD6u/vr/Y0TLHEYrFYtScBAAAAAAAAlBs9wgAAAAAAANAQSIQBAAAAAACgIZAIAwAAAAAAQEMgEQYAAAAAAICGQCIMAAAAAAAADYFEGAAAAAAAABoCiTAAAAAAAAA0BBJhAAAAAAAAaAgkwgAAAAAAANAQSIQBAAAAAACgIZAIAwAAAAAAQEMgEQYAAAAAAICGQCIMAAAAAAAADYFEGAAAAAAAABoCiTAAAAAAAAA0BBJhAAAAAAAAaAgkwgAAAAAAANAQSIQBAAAAAACgIZAIAwAAAAAAQEMgEQYAAAAAAICGQCIMAAAAAAAADYFEGAAAAAAAABoCiTAAAAAAAAA0BBJhAAAAAAAAaAgkwgAAAAAAANAQSIQBAAAAAACgIZAIAwAAAAAAQEMgEQYAAAAAAICGQCIMAAAAAAAADYFEGAAAAAAAABoCiTAAAAAAAAA0BBJhAAAAAAAAaAj/f8x/U6T/7xF7AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#import matplotlib.pyplot as plt\n", + "bins = np.linspace( -2000, 2000, 50 )\n", + "sns.regplot(x=ak.to_numpy(array[\"x_l0\"]), y=ak.to_numpy(array[\"z_mag_x_fringe\"]), x_bins=50, fit_reg=None, x_estimator=np.mean, label=\"T1X1\")\n", + "sns.regplot(x=ak.to_numpy(array[\"x_l4\"]), y=ak.to_numpy(array[\"z_mag_x_fringe\"]), x_bins=50, fit_reg=None, x_estimator=np.mean, label=\"T2X1\")\n", + "sns.regplot(x=ak.to_numpy(array[\"x_l8\"]), y=ak.to_numpy(array[\"z_mag_x_fringe\"]), x_bins=50, fit_reg=None, x_estimator=np.mean, label=\"T3X1\")\n", + "plt.legend()\n", + "plt.xlabel(\"x [mm]\")\n", + "plt.ylabel(\"$z_{Mag}$ [mm]\")\n", + "mplhep.lhcb.text(\"Simulation\")" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['tx^2' 'tx dSlope_fringe' 'ty^2' 'dSlope_fringe^2']\n", + "intercept= 5205.144186525624\n", + "coef= {'tx^2': -320.7206595710594, 'tx dSlope_fringe': 702.1384894815535, 'ty^2': -316.36350963107543, 'dSlope_fringe^2': 441.59909857558097}\n", + "r2 score= 0.9604900589467942\n", + "RMSE = 8.772908410819978\n" + ] + } + ], + "source": [ + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.linear_model import LinearRegression, Lasso, Ridge\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.pipeline import Pipeline\n", + "from sklearn.metrics import mean_squared_error\n", + "import numpy as np\n", + "features = [\n", + " \"tx\", \n", + " \"ty\", \n", + " \"dSlope_fringe\",\n", + "]\n", + "target_feat = \"z_mag_x_fringe\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=2, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "keep = [\n", + " #\"tx\",\n", + " #\"ty\",\n", + " #\"dSlope_fringe\",\n", + " \"tx^2\",\n", + " \"tx dSlope_fringe\",\n", + " \"ty^2\",\n", + " \"dSlope_fringe^2\"\n", + "]\n", + "remove = [i for i, f in enumerate(poly_features) if f not in keep]\n", + "X_train_model = np.delete( X_train_model, remove, axis=1)\n", + "X_test_model = np.delete( X_test_model, remove, axis=1)\n", + "poly_features = np.delete(poly_features, remove )\n", + "print(poly_features)\n", + "\n", + "\n", + "lin_reg = LinearRegression()#Lasso(alpha=0.01)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features,lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(exptext: Custom Text(0.0, 1, 'LHCb'),\n", + " expsuffix: Custom Text(0.0, 1.005, 'Simulation'))" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bins = np.linspace( 5150,5300, 30 )\n", + "ax = sns.regplot(x=y_test, y=abs(y_test-y_pred_test), x_bins=bins, fit_reg=None, x_estimator=np.mean, label=\"bla\")\n", + "ax2 = ax.twinx()\n", + "ax2.hist(y_test, bins=30,\n", + " range=[5150,5300], color='#2A9D8F', alpha=0.8, align='left')\n", + "ax.set_xlabel(r\"z$_{Mag}$ [mm]\")\n", + "ax.set_ylabel(\"Mean Deviation [mm]\")\n", + "ax2.set_ylabel(\"Number of Tracks\")\n", + "mplhep.lhcb.text(\"Simulation\", loc=0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "median_z_mag_x = np.median(array[\"z_mag_x_fringe\"])\n", + "print(median_z_mag_x)\n", + "params_per_layer = [[] for _ in range(12)]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def format_array(name, intercept, coef):\n", + " coef = [str(c)+\"f\" for c in coef if c != 0.0]\n", + " intercept = str(intercept) + \"f\"\n", + " code = f\"constexpr std::array {name}\"\n", + " code += \"{\" + \", \".join([intercept]+list(coef)) +\"};\"\n", + " return code" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "array[\"x_diff_straight_l0\"] = array[\"x_l0\"] - array[\"x\"] - array[\"tx\"] * ( array[\"z_l0\"] - array[\"z\"])\n", + "array[\"x_l0_rel\"] = array[\"x_l0\"] / 3000\n", + "features = [\n", + " \"tx\", \n", + " \"ty\", \n", + " #\"x_l0_rel\",\n", + " \"x_diff_straight_l0\",\n", + "]\n", + "target_feat = \"z_mag_x_fringe\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=2, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "keep = [\n", + " #\"tx\",\n", + " #\"ty\",\n", + " #\"x_l0_rel\",\n", + " \"tx^2\",\n", + " #\"tx x_l0_rel\",\n", + " \"tx x_diff_straight_l0\",\n", + " \"ty^2\",\n", + " #\"x_l0_rel^2\"\n", + " \"x_diff_straight_l0^2\"\n", + "]\n", + "remove = [i for i, f in enumerate(poly_features) if f not in keep]\n", + "X_train_model = np.delete( X_train_model, remove, axis=1)\n", + "X_test_model = np.delete( X_test_model, remove, axis=1)\n", + "poly_features = np.delete(poly_features, remove )\n", + "print(poly_features)\n", + "\n", + "lin_reg = LinearRegression()#Lasso(alpha=0.004)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features, lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(format_array(\"zMagnetParams_l0\", lin_reg.intercept_, lin_reg.coef_))\n", + "params_per_layer[0] = [lin_reg.intercept_] + list(lin_reg.coef_)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "array[\"x_l1_rel\"] = array[\"x_l1\"] / 3000\n", + "features = [\n", + " \"tx\", \n", + " \"ty\", \n", + " \"x_l1_rel\",\n", + "]\n", + "target_feat = \"z_mag_x_fringe\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=2, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "\n", + "lin_reg = Lasso(alpha=0.01)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly.get_feature_names_out(input_features=features),lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(format_array(\"zMagnetParams_l1\", lin_reg.intercept_, lin_reg.coef_))\n", + "params_per_layer[1] = [lin_reg.intercept_] + list(lin_reg.coef_)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "array[\"x_l2_rel\"] = array[\"x_l2\"] / 3000\n", + "features = [\n", + " \"tx\", \n", + " \"ty\", \n", + " \"x_l2_rel\",\n", + "]\n", + "target_feat = \"z_mag_x_fringe\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=2, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "\n", + "lin_reg = Lasso(alpha=0.01)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly.get_feature_names_out(input_features=features),lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(format_array(\"zMagnetParams_l2\", lin_reg.intercept_, lin_reg.coef_))\n", + "params_per_layer[2] = [lin_reg.intercept_] + list(lin_reg.coef_)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "array[\"x_l3_rel\"] = array[\"x_l3\"] / 3000\n", + "features = [\n", + " \"tx\", \n", + " \"ty\", \n", + " \"x_l3_rel\",\n", + "]\n", + "target_feat = \"z_mag_x_fringe\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=2, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "\n", + "lin_reg = Lasso(alpha=0.01)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly.get_feature_names_out(input_features=features),lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(format_array(\"zMagnetParams_l3\", lin_reg.intercept_, lin_reg.coef_))\n", + "params_per_layer[3] = [lin_reg.intercept_] + list(lin_reg.coef_)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "array[\"x_l4_rel\"] = array[\"x_l4\"] / 3000\n", + "features = [\n", + " \"tx\", \n", + " \"ty\", \n", + " \"x_l4_rel\",\n", + "]\n", + "target_feat = \"z_mag_x_fringe\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=2, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "\n", + "lin_reg = Lasso(alpha=0.01)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly.get_feature_names_out(input_features=features),lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(format_array(\"zMagnetParams_l4\", lin_reg.intercept_, lin_reg.coef_))\n", + "params_per_layer[4] = [lin_reg.intercept_] + list(lin_reg.coef_)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "array[\"x_l5_rel\"] = array[\"x_l5\"] / 3000\n", + "features = [\n", + " \"tx\", \n", + " \"ty\", \n", + " \"x_l5_rel\",\n", + "]\n", + "target_feat = \"z_mag_x_fringe\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=2, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "\n", + "lin_reg = Lasso(alpha=0.01)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly.get_feature_names_out(input_features=features),lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(format_array(\"zMagnetParams_l5\", lin_reg.intercept_, lin_reg.coef_))\n", + "params_per_layer[5] = [lin_reg.intercept_] + list(lin_reg.coef_)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "array[\"x_l6_rel\"] = array[\"x_l6\"] / 3000\n", + "features = [\n", + " \"tx\", \n", + " \"ty\", \n", + " \"x_l6_rel\",\n", + "]\n", + "target_feat = \"z_mag_x_fringe\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=2, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "\n", + "lin_reg = Lasso(alpha=0.01)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly.get_feature_names_out(input_features=features),lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(format_array(\"zMagnetParams_l6\", lin_reg.intercept_, lin_reg.coef_))\n", + "params_per_layer[6] = [lin_reg.intercept_] + list(lin_reg.coef_)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "array[\"x_l7_rel\"] = array[\"x_l7\"] / 3000\n", + "features = [\n", + " \"tx\", \n", + " \"ty\", \n", + " \"x_l7_rel\",\n", + "]\n", + "target_feat = \"z_mag_x_fringe\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=2, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "\n", + "lin_reg = Lasso(alpha=0.01)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly.get_feature_names_out(input_features=features),lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(format_array(\"zMagnetParams_l7\", lin_reg.intercept_, lin_reg.coef_))\n", + "params_per_layer[7] = [lin_reg.intercept_] + list(lin_reg.coef_)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "array[\"x_l8_rel\"] = array[\"x_l8\"] / 3000\n", + "features = [\n", + " \"tx\", \n", + " \"ty\", \n", + " \"x_l8_rel\",\n", + "]\n", + "target_feat = \"z_mag_x_fringe\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=2, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "\n", + "lin_reg = Lasso(alpha=0.01)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly.get_feature_names_out(input_features=features),lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(format_array(\"zMagnetParams_l8\", lin_reg.intercept_, lin_reg.coef_))\n", + "params_per_layer[8] = [lin_reg.intercept_] + list(lin_reg.coef_)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "array[\"x_l9_rel\"] = array[\"x_l9\"] / 3000\n", + "features = [\n", + " \"tx\", \n", + " \"ty\", \n", + " \"x_l9_rel\",\n", + "]\n", + "target_feat = \"z_mag_x_fringe\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=2, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "\n", + "lin_reg = Lasso(alpha=0.01)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly.get_feature_names_out(input_features=features),lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(format_array(\"zMagnetParams_l9\", lin_reg.intercept_, lin_reg.coef_))\n", + "params_per_layer[9] = [lin_reg.intercept_] + list(lin_reg.coef_)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "array[\"x_l10_rel\"] = array[\"x_l10\"] / 3000\n", + "features = [\n", + " \"tx\", \n", + " \"ty\", \n", + " \"x_l10_rel\",\n", + "]\n", + "target_feat = \"z_mag_x_fringe\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=2, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "\n", + "lin_reg = Lasso(alpha=0.01)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly.get_feature_names_out(input_features=features),lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(format_array(\"zMagnetParams_l10\", lin_reg.intercept_, lin_reg.coef_))\n", + "params_per_layer[10] = [lin_reg.intercept_] + list(lin_reg.coef_)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "array[\"x_l11_rel\"] = array[\"x_l11\"] / 3000\n", + "features = [\n", + " \"tx\", \n", + " \"ty\", \n", + " \"x_l11_rel\",\n", + "]\n", + "target_feat = \"z_mag_x_fringe\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=2, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "\n", + "lin_reg = Lasso(alpha=0.01)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly.get_feature_names_out(input_features=features),lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(format_array(\"zMagnetParams_l11\", lin_reg.intercept_, lin_reg.coef_))\n", + "params_per_layer[11] = [lin_reg.intercept_] + list(lin_reg.coef_)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "features = [\n", + " \"tx\", \n", + " \"ty\", \n", + " \"dSlope_fringe\",\n", + "]\n", + "target_feat = \"z_mag_x_fringe\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=2, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "keep = [\n", + " #\"tx\",\n", + " #\"ty\",\n", + " #\"dSlope_fringe\",\n", + " \"tx^2\",\n", + " \"tx dSlope_fringe\",\n", + " \"ty^2\",\n", + " \"dSlope_fringe^2\"\n", + "]\n", + "remove = [i for i, f in enumerate(poly_features) if f not in keep]\n", + "X_train_model = np.delete( X_train_model, remove, axis=1)\n", + "X_test_model = np.delete( X_test_model, remove, axis=1)\n", + "poly_features = np.delete(poly_features, remove )\n", + "print(poly_features)\n", + "\n", + "\n", + "lin_reg = LinearRegression()#Lasso(alpha=0.01)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features,lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(format_array(\"zMagnetParams_dSlope\", lin_reg.intercept_, lin_reg.coef_))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import scipy.optimize\n", + "def parabola(x, a,b,c):\n", + " return a*x**2 + b * x + c\n", + "params_1 = np.array([p[1] / params_per_layer[0][1] for p in params_per_layer])\n", + "x = [array[f\"z_l{n}\"][0] - array[\"z_ref\"][0] for n in range(12)]\n", + "print(params_1)\n", + "print(x)\n", + "plt.plot(x, params_1, 'o')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "params_3 = np.array([params_per_layer[0][3] / p[3] for p in params_per_layer])\n", + "x = [array[f\"z_l{n}\"][0] - array[\"z_ref\"][0] for n in range(12)]\n", + "print(params_3**2)\n", + "print(x)\n", + "plt.plot(x, params_3, 'o')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.linear_model import LinearRegression, Lasso\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import mean_squared_error\n", + "feautures = [\"tx\", \"ty\", \"dSlope\"]\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " data,\n", + " target,\n", + " test_size=0.2,\n", + " random_state=42,\n", + ")\n", + "poly = PolynomialFeatures(degree=2, include_bias=False)\n", + "X_train_model = poly.fit_transform(X_train)\n", + "X_test_model = poly.fit_transform(X_test)\n", + "lin_reg = LinearRegression() # or Lasso if regularisation is needed\n", + "lin_reg.fit(X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict(X_test_model)\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.6", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "a2eff8b4da8b8eebf5ee2e5f811f31a557e0a202b4d2f04f849b065340a6eda6" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/parameterisations/notebooks/momentum.ipynb b/parameterisations/notebooks/momentum.ipynb new file mode 100644 index 0000000..6ba8305 --- /dev/null +++ b/parameterisations/notebooks/momentum.ipynb @@ -0,0 +1,212 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import uproot\n", + "import awkward as ak\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "input_tree = uproot.open({\"/work/guenther/reco_tuner/data/param_data_selected_all_p.root\": \"Selected\"})\n", + "array = input_tree.arrays()\n", + "array[\"dSlope_fringe\"] = array[\"tx_ref\"] - array[\"tx\"]\n", + "array[\"poqmag_gev\"] = 1. / ( array[\"signed_rel_current\"] * array[\"qop\"] * 1000. )\n", + "array[\"B_integral\"] = array[\"poqmag_gev\"] * array[\"dSlope_fringe\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([1.00000e+00, 0.00000e+00, 0.00000e+00, 1.00000e+00, 0.00000e+00,\n", + " 0.00000e+00, 0.00000e+00, 0.00000e+00, 0.00000e+00, 0.00000e+00,\n", + " 0.00000e+00, 0.00000e+00, 0.00000e+00, 0.00000e+00, 1.00000e+00,\n", + " 1.00000e+00, 0.00000e+00, 0.00000e+00, 0.00000e+00, 0.00000e+00,\n", + " 0.00000e+00, 0.00000e+00, 1.00000e+00, 0.00000e+00, 0.00000e+00,\n", + " 2.00000e+00, 2.00000e+00, 4.00000e+00, 0.00000e+00, 3.00000e+00,\n", + " 0.00000e+00, 4.00000e+00, 3.00000e+00, 1.00000e+00, 4.00000e+00,\n", + " 4.00000e+00, 1.00000e+00, 1.00000e+01, 8.00000e+00, 8.00000e+00,\n", + " 2.30000e+01, 3.20000e+01, 6.30000e+01, 8.40000e+01, 1.22000e+02,\n", + " 2.03000e+02, 3.10000e+02, 3.98000e+02, 5.90000e+02, 8.65000e+02,\n", + " 1.08700e+03, 1.55300e+03, 2.01000e+03, 2.67400e+03, 3.49500e+03,\n", + " 4.46300e+03, 5.85300e+03, 7.16800e+03, 8.92900e+03, 1.12130e+04,\n", + " 1.37320e+04, 1.69420e+04, 2.09870e+04, 2.59060e+04, 3.24750e+04,\n", + " 3.94560e+04, 4.81480e+04, 6.21400e+04, 8.28540e+04, 1.20767e+05,\n", + " 2.15388e+05, 5.13195e+05, 5.20000e+02, 3.29000e+02, 1.83000e+02,\n", + " 1.32000e+02, 1.02000e+02, 8.30000e+01, 6.40000e+01, 5.00000e+01,\n", + " 2.70000e+01, 2.80000e+01, 2.20000e+01, 1.80000e+01, 2.00000e+01,\n", + " 1.50000e+01, 1.00000e+01, 4.00000e+00, 7.00000e+00, 6.00000e+00,\n", + " 5.00000e+00, 2.00000e+00, 2.00000e+00, 3.00000e+00, 0.00000e+00,\n", + " 2.00000e+00, 3.00000e+00, 0.00000e+00, 0.00000e+00, 2.00000e+00]),\n", + " array([-2.45885773, -2.44145641, -2.4240551 , -2.40665378, -2.38925247,\n", + " -2.37185115, -2.35444984, -2.33704853, -2.31964721, -2.3022459 ,\n", + " -2.28484458, -2.26744327, -2.25004195, -2.23264064, -2.21523933,\n", + " -2.19783801, -2.1804367 , -2.16303538, -2.14563407, -2.12823275,\n", + " -2.11083144, -2.09343013, -2.07602881, -2.0586275 , -2.04122618,\n", + " -2.02382487, -2.00642355, -1.98902224, -1.97162093, -1.95421961,\n", + " -1.9368183 , -1.91941698, -1.90201567, -1.88461436, -1.86721304,\n", + " -1.84981173, -1.83241041, -1.8150091 , -1.79760778, -1.78020647,\n", + " -1.76280516, -1.74540384, -1.72800253, -1.71060121, -1.6931999 ,\n", + " -1.67579858, -1.65839727, -1.64099596, -1.62359464, -1.60619333,\n", + " -1.58879201, -1.5713907 , -1.55398938, -1.53658807, -1.51918676,\n", + " -1.50178544, -1.48438413, -1.46698281, -1.4495815 , -1.43218018,\n", + " -1.41477887, -1.39737756, -1.37997624, -1.36257493, -1.34517361,\n", + " -1.3277723 , -1.31037098, -1.29296967, -1.27556836, -1.25816704,\n", + " -1.24076573, -1.22336441, -1.2059631 , -1.18856178, -1.17116047,\n", + " -1.15375916, -1.13635784, -1.11895653, -1.10155521, -1.0841539 ,\n", + " -1.06675258, -1.04935127, -1.03194996, -1.01454864, -0.99714733,\n", + " -0.97974601, -0.9623447 , -0.94494338, -0.92754207, -0.91014076,\n", + " -0.89273944, -0.87533813, -0.85793681, -0.8405355 , -0.82313418,\n", + " -0.80573287, -0.78833156, -0.77093024, -0.75352893, -0.73612761,\n", + " -0.7187263 ]),\n", + " )" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.hist(array[\"B_integral\"], bins=100, log=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['ty^2' 'tx^2' 'tx tx_ref' 'tx_ref^2' 'ty^4' 'ty^2 tx^2' 'ty^2 tx tx_ref'\n", + " 'ty^2 tx_ref^2' 'tx^4' 'tx^3 tx_ref' 'tx_ref^4']\n", + "intercept= -1.2094486121528516\n", + "coef= {'ty^2': -2.7897043324822492, 'tx^2': -0.35976930628193077, 'tx tx_ref': -0.47138558705675454, 'tx_ref^2': -0.5600847231491961, 'ty^4': 14.009315350693472, 'ty^2 tx^2': -16.162818973243674, 'ty^2 tx tx_ref': -8.807994419844437, 'ty^2 tx_ref^2': -0.8753190393972976, 'tx^4': 2.98254201374128, 'tx^3 tx_ref': 0.9625408279466898, 'tx_ref^4': 0.10200564097830103}\n", + "r2 score= 0.9916826041227943\n", + "RMSE = 0.006014471039836984\n", + "['ty^2', 'tx^2', 'tx tx_ref', 'tx_ref^2', 'ty^4', 'ty^2 tx^2', 'ty^2 tx tx_ref', 'ty^2 tx_ref^2', 'tx^4', 'tx^3 tx_ref', 'tx_ref^4']\n" + ] + } + ], + "source": [ + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.linear_model import LinearRegression, Lasso, Ridge\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.pipeline import Pipeline\n", + "from sklearn.metrics import mean_squared_error\n", + "import numpy as np\n", + "\n", + "features = [\n", + " \"ty\", \n", + " \"tx\",\n", + " \"tx_ref\",\n", + "]\n", + "target_feat = \"B_integral\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=5, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train )\n", + "X_test_model = poly.fit_transform( X_test )\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "reduce = True\n", + "if reduce:\n", + " keep = [\n", + " #'ty',\n", + " #'tx',\n", + " #'tx_ref',\n", + " #'ty tx',\n", + " #'ty tx_ref',\n", + " 'ty^2',#keep\n", + " 'tx^2',#keep\n", + " 'tx tx_ref',#keep\n", + " 'tx_ref^2',#keep\n", + " 'ty^2 tx tx_ref',#keep\n", + " 'ty^2 tx^2',#keep\n", + " 'ty^2 tx_ref^2', #keep\n", + " 'tx^4',#keep\n", + " 'ty^4',#keep\n", + " 'tx_ref^4',#keep\n", + " #'tx_ref^5',\n", + " 'tx^3 tx_ref', #keep\n", + " #'tx tx_ref^3',\n", + " #'tx^2 tx_ref^2',\n", + " #'ty tx_ref^4',\n", + " #'tx tx_ref^4',\n", + " #'tx_ref^5',\n", + " ]\n", + " remove = [i for i, f in enumerate(poly_features) if (keep and f not in keep )]\n", + " X_train_model = np.delete( X_train_model, remove, axis=1)\n", + " X_test_model = np.delete( X_test_model, remove, axis=1)\n", + " poly_features = np.delete(poly_features, remove )\n", + " print(poly_features)\n", + "if not reduce:\n", + " lin_reg = Lasso( alpha=0.0000001)#Lasso(fit_intercept=False, alpha=0.001)\n", + "else:\n", + " lin_reg = LinearRegression()\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features, lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print([key for key, val in dict(zip(poly_features, lin_reg.coef_)).items() if val != 0.0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.6 (conda)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "a2eff8b4da8b8eebf5ee2e5f811f31a557e0a202b4d2f04f849b065340a6eda6" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/parameterisations/notebooks/polarity_check.ipynb b/parameterisations/notebooks/polarity_check.ipynb new file mode 100644 index 0000000..8ad96ae --- /dev/null +++ b/parameterisations/notebooks/polarity_check.ipynb @@ -0,0 +1,244 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import uproot\n", + "input_tree_md = uproot.open({\"/work/guenther/reco_tuner/data/param_data_MD_selected.root\": \"Selected\"})\n", + "input_tree_mu = uproot.open({\"/work/guenther/reco_tuner/data/param_data_MU_selected.root\": \"Selected\"})\n", + " # this is an event list of dictionaries containing awkward arrays\n", + "array_md = input_tree_md.arrays()\n", + "array_mu = input_tree_mu.arrays()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/work/guenther/reco_tuner/env/tuner_env/envs/tuner/lib/python3.10/site-packages/IPython/core/pylabtools.py:151: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", + " fig.canvas.print_figure(bytes_io, **kw)\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABMIAAAOWCAYAAAANzz7PAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC1q0lEQVR4nOz9QWwiaZ7n/39w9WGln8YOnKORLFvactC516kEZ59729Azlz10F9h97zJMzmFb8m5BuS6beykXdJWl1kq7Bc6+jxOq+jCXniIyu8+bJrL28D9NEZkjpYW02rQjGa20lzb/gxXRgDFgjAkw75dklbGDJ74Yl5P48H2eJ9RqtVoCAAAAAAAA7riFoAsAAAAAAAAAJoEgDAAAAAAAAHOBIAwAAAAAAABzgSAMAAAAAAAAc4EgDAAAAAAAAHOBIAwAAAAAAABzgSAMAAAAAAAAc4EgDAAAAAAAAHOBIAwAAAAAAABzgSAMAAAAAAAAc4EgDAAAAAAAAHOBIAwAAAAAAABzgSAMAAAAAAAAc4EgDAAAAAAAAHOBIAwAAAAAAABzgSAMAAAAAAAAc4EgDAAAAAAAAHOBIAwAAAAAAABzgSAMAAAAAAAAc4EgDAAAAAAAAHOBIAwAAAAAAABzgSAMAAAAAAAAc4EgDAAAAAAAAHOBIAwAAAAAAABzgSAMAAAAAAAAc4EgDAAAAAAAAHOBIAwAAAAAAABzgSAMAAAAAAAAc+EHQRcABOn/+//+P/2///f/9N577+mv/uqvgi4HAAAAAIA773//7/+tP/3pT/o3/+bf6P/+3/870XOHWq1Wa6JnBKbIe++9p/Pz86DLAAAAAABg7iwsLOhPf/rTRM9JRxjmmheELSwsaGVlJehyhtJoNGau5uu4649P4jHeBXf98Ul3/zHe9ccn3f3HeNcfn3T3H+Ndf3wSj/EuuOuPT7r7j/GuPz5pNh+jV/N777038XMThGGu/dVf/ZVOTk60srKiN2/eBF3OUNbW1mau5uu4649P4jHeBXf98Ul3/zHe9ccn3f3HeNcfn3T3H+Ndf3wSj/EuuOuPT7r7j/GuPz5pNh+jV3MQSxTNXBD2+vVr2bat09NTua6rt2/fSpLu3bsnwzBkmqY2Nja0uLgYcKUAAAAAAACYJjMRhH3zzTeqVqt6+vSpXNcd6j6maSoejyuVSuknP/nJ7RYIAAAAAACAqTfVQdiTJ0+Uz+flOI4kqX1d/1Ao1PM+3jH1el2O46hUKsk0TX3yySf65S9/eftFAwAAAAAAYCpNZRD2/PlzZTIZPwCTOkOwXrd78Y5xHEfpdFr5fF7lcll//dd/Pd6CMfMajYbW1tb6HrO7u6vd3d0JVQQAAAAAwOw5ODjQwcFB32MajcaEqrls6oKwvb09FQqFS0FXPB5XNBrVvXv3ZJqmDMOQJC0vL0uSTk9PJUmu68pxHL19+1aO48iyLH865ffff69oNKpcLqfPPvtsYo8J0+/8/FwnJyd9j2k2mxOqBgAAAACA2dRsNgdeXwdpaoKwZrOpzc1N1Wo1SRfBVyKRUDwe14MHD2409rt373R0dKRSqSTbtpXP52VZlizLYlF9SNJQ28zyuwIAAAAAQH+Li4taXV3te0yj0dD5+fmEKuo0FUHYd999p83NTZ2dnSmdTiuXy2l9fX1s4y8tLSmdTiudTstxHGUyGT179kwbGxuq1Wr6i7/4i7GdC7NplraZBQAAAABgWg2zrNDa2lpgXWOBB2EvX75ULBZTNBrV8fHxWAOwXkzTVLValWVZSqVSisViOj4+ptsHmBK7u7tqNpt3+v9JHiNmwV1/Du/645Pm4zHedXf9Obzrj0+aj8d4183Dc3jXH+Ndf3y4vlBrmFXnb8mrV68Ui8UUj8f19OnTiZ/fdV3FYjHdv39fv//97yd+fgTPS6FXV1dnpiNsFmsG7hr+PwSCx/+HwHTg/0UgeLP4/2GQNS9M9GxdEomEtra2AgnBJMkwDNVqNX3//ff68ssvA6kBAAAAAAAAkxHY1MhPPvlEpmnqq6++CqoESRdh2PHxsUzT1Obmpj744INA6wEAAAAAAMDtCKwj7N69eyqXy0GdvoNhGHr27Jkcxwm6FAAAAAAAANySwDrCPv7444mf8/Xr13r//fd7fu/Bgwd68ODBZAsCAAAAAADAxAS6RtikZTKZoEsAAAAAAABAQOYqCDs+Pg66BAAAAAAAAAQksKmRN/H69Wu5rjv08Y7jqFgsXus+AAAAAAAAuFtmIgh7/fq18vm8LMsaeUH7VqulUCg05sqAydvd3VWz2dTi4mLQpQBzi/8PgeDx/yEwHfh/EQge/x9eT6jVarWCLqKfvb09FQoFSRdh1k2EQiH96U9/GkdZuCPW1tZ0cnKi1dVVvXnzJuhyAAAAAAC484K8Fp/qNcK+/vpr5fN5PwCjowsAAAAAAACjmuqpkfv7+5IuArBWqyXTNBWNRmWapiTp3r17A8d4+/atXNfV06dP9e7du1utFwAAAAAAANNrqoMw27b9LrBqtarNzc2Rx8pms7p///64SgMAAAAAAMCMmeogzDAMvXv3Ttls9kYhmCSZpqn19fUxVYa7ptFoaG1tre8xu7u72t3dnVBFAAAAAADMnoODAx0cHPQ9ptFoTKiay6Y6CDNNUy9fvtTDhw/HMl6xWBzLOLh7zs/PdXJy0veYZrM5oWoAAAAAAJhNzWZz4PV1kKY6CNvc3NTLly91eno6tvGAXhYWFrSystL3GLaiBQAAAACgv8XFRa2urvY9ptFo6Pz8fEIVdQq1vC0Zp9C7d+8UDof1d3/3d/rv//2/33i8J0+e6KOPPhpDZbgrgtyyFQAAAACAeRTktfjCRM92TUtLS/r88891dHSkf/3Xf73xeEyNBAAAAAAAmF9THYRJF7s9RqNRpVKpG43z6tUr2bY9pqr+zLZtZTIZRSIRhUIhhUIhRSIR5XI5ua478riFQkGJRELhcNgfM5VKybIsxgQAAAAAABjBVE+NbLexsaF3794pl8tpeXl5qPucnp7KdV3V63U9ffpUruvqT3/601jqcV1XOzs7qlQqfY8rFotKp9NDj2tZllKplFzXVTweVy6Xk2masm1buVxOjuMoHo+rXC7LMAzGvCGmRgIAAAAAMFlBXovPRBD2/PlzZbNZ2batUCg00hitVkuhUGgsQZjruorFYnIcZ6jj0+n0UNMyLctSIpHoe59YLCbbtmWapmq12sBAaJ7HHAZBGAAAAAAAk0UQ1sejR49UKpX826OUGwqFxhqEJRIJWZalaDSqvb09RaNRSRfTJF+8eKFCoXDpPuVyWclk8soxXdfV+vq6XNeVaZqq1+s9j3McR5FIRJIUj8dVrVYZ8wYIwgAAAAAAmCwWy7/C4eGhisWiH36NmtmNM+srlUqyLEvZbFa1Wk3JZFKmaco0TSWTSeXzedXrdT8c8+zs7PQd15sSKEm5XO7K47zzSBddVO0hIWMCAAAAAABcbao7wjY2NvzpkK1WS/F4XIlEQoZhXHudsK+++kqvX7++cUdYJBKRaZoDu5Hau5c81WpV8Xh84LFnZ2d9p/1VKhV/8wDDMHR2dsaYI6IjDAAAAACAyQryWvwHEz3bNXkhmGEYOj4+1vr6+shj7ezs6N69ezeux3Ec1Wq1gceapql8Pt/R4WTbds8gLJ/P+5/H4/GBa1+1T7F0XVeVSuXStMt5HhMAAAAAAKCXqQ7CDMPQu3fvtLe3d6MQzBvrwYMHNxrj6OhI6XR66EXau0Ovt2/f9jyufYpf95TKq5im6S/Wf3R0dCkMmucxgWnnuu7Ydj4FgLn2j4/HM85/GNM4AABg6k31GmGxWEzSRfAxDoeHhze6//b2dkcH0yDdwU73VEnpokus3cOHD689dqVSYUxgytm2rVwup3A4PHDNQAAAAADA7ZjqICyTyajVavndPzd1046waDR6rS4ObwF4T69Az7Ksgcf00n1ce6g0z2MCo/BCqkQioUgkonA4rFAopHA4rFgspkQioVwud+l31pNKpfzg3uNN3U2lUv44hULh0t8FAAAAAMDkTHUQlkwm9eDBAx0dHY1lvG+++WYs4wyrO8DrtT7YixcvOm4PG7R1r3d2fHzMmHOsVCopFApd+6M7vBnVKOcOh8NXjpdKpUYa86qgqhfXdZXL5fyfQ6FQkGVZchzHD6tc15Vt27IsS4VCQYlEwj8+l8upVCoplUr17Ezc2dnR/v6+KpUK4RcAAAAATImpDsIkqVwuq1ar6Xe/+92Nx9rf3x9DRcNrD2jS6XTPY7rDslG7our1OmPOsXQ6rbOzM9VqtYFrpsXjcVWrVf/4cWi1WqrX6yoWi30DTdM0VSwWVa/X++74WS6XdXZ2duVOq+2y2axqtZrOzs4GHuvxpigWCoWOryeTSf9vztnZmf+4qtVqx/qAtm2rUCgok8n4IVh32OWN02q1xja9GwAAAABwM1MfhJmmqa+++kofffTRjcZ59+7dxKfQFYtF//P23SPbjWvaZ/tF+DyPOc8Mw1A0GlW5XL4yeE0mk364NO7F2k3TVDqd7huu1Wo1pdPpoYIhwzD80O6qjRSKxaLy+fzQ05Ydx1EkErkUgKXTabVaLZXLZSWTyY7xTNNUPB5XsVjU2dnZtdYJ9Awb0AEAAAAAbtdU7xrpTWX8y7/8S4XDYd2/f3+kHQJd19XTp0/HXV5fjuP4wVs+n7/ywn/UEKf7ov/09JQxb6DRaGhtbe3G4+zu7mp3d/fG49xUJpPp2JGz/eu3zTRNRaPRS8FzMpkcOXzLZDI9a78q8OvFsiwlEomOrxmGoWfPng29Y6l00YGWTCYVi8U6fof7/R6yQyQAAACAu+Dg4EAHBwc3HqfRaIyhmtFMdRD22Wef6eXLl/7tVqt1qZNjWK1WS6FQaFylDeR1jZimqWw2e+vnu42uqHka8/z8XCcnJzcep9ls3niMcbgqeJ3UFD3TNC8FYTc5d6/7Xidcsm17LCFYez2vXr3S+vp6x3piAAAAAHCXNZvNsVw7B2mqg7CtrS3/YtpbDHsW2LatUqkkwzBUrVb7HmsYxlguoNtDgXkec1QLCwtaWVm58TiLi4s3HmMcrvqZLC8vT7aQKeA4jjY3Ny99vVwujxSCeQzDUK1WUyQSuUl5U6lSqSgajbK22RUsy2K6KwAAAObS4uKiVldXbzxOo9HQ+fn5GCq6vqkOwjKZjD755BOFQiG1Wq2gyxnazs6OJOnZs2cDLySXl5fHEga1BxzzPOaoVlZW9ObNmxuPgwu9npPu3T5vOt6wz3sqlbr0e5ZOp8cSZHgdn6N2qk6abdsqFov+7piGYWh5eVmGYcg0TW1vb0u6+BuWz+f7Tj21LEupVErLy8sqFot3OhhyHEeWZalcLvs7k07Tv0nz9FwAAAAgWONaDmhtbS2wzrKpDsKWlpYUjUb18uVLf0HsUUIPx3H02Wef6bvvvht/kV0ymYxs2x6622TUbqbuC/vuTqt5HRNoZ1lWz00yRlnw/ip7e3t+EOa67lT+Prquq52dHX+HS9M0/fUWvfUMbdv2v+/dpx8vYHRdV5lM5k7u3uo4jlKplBzHmeqpr/PwXAAAAADjMtVBmCRtb28rEono448/HnmMBw8e6MMPP7z1aWGlUkmlUknFYnHoRf03NjY6LtSHvZDuXpi7fXrWPI8JtOu1wP5NFu3vxTAMpdPpnpsTTItUKuV3MhWLxUudXo7jKJPJ+MdIGhimjKujc5qZpunvgprL5aa2828engsAAABgXBaCLmCQeDw+tikoGxsbYxmnF8uylMlkel5k9hOLxTpuO44z1P26L1Lbp8LM85iAx5v+121vb2/s50qlUpJG38HUm9oWiUQUCoUUDoeVSCTGEq4VCgU/4Mpmsz3/PpmmqWq12tEpN+j/x2KxKNM0ZZqmyuXyjeucdt2bLUyTeXsuAAAAgJuY+o6wBw8ejG0a03/8j/9xLON083akG7SmTi/d4ZzjOENNqWx/999b34cxgT+7KhC4yQL5V4nH48rn89fuOnVdV5ubm5emb7quK8uyZFmW8vn8jRb239/f9z/v1SHXLpvN6u3btyoUCgNDvXg8PldT8ILaaMJ7g6WfeXsucEf84+OgKwAAAHNq6jvCJGl9fX0s4/y3//bfxjJOO29Humw2q2w2e+37R6PRjmlaL168GOp+x8fH/ufdgdI8jwl42qf5eW6zezCbzV5ryqXjOFpfX++5hln3cbFYrOfjGeYc150y563HOGyHJm6PN90eAAAAwPjMRBA2Lu0Byjh4F6jpdHrorjXHcS6tM7O1teV/PuiiuNdxuVzu0vfneUzAcZyeQc5tdIONwnVdf4HzZDKpYrGoWq2marV6ZaCeSCSuHU51h2DDhml7e3usORUwb902AP390RnPBwAAmB9TPzWyl9evX1/rIs1xHBWLxbFe2Lmuq0Qioa2trWtN3UylUjo8POz4WiaT8d/1H+ZCtf0Y0zR7drnM85jAVYHRtGys4P0eV6vVS7/D8XhcmUymZ/CVSqX8xduH0T1tOJfLaWtra2DnmrfZx7TugnnXef++AHcZ4RMAAAjKTARhr1+/Vj6fv3Lx62G0Wi2FQqGx1OO6rmKxmEzTVC6XG6omx3H87qXurpRoNKp4PO5fHFcqlb67TravfXRVR9Q8jwlc9f9kUOs89dIrBPN4i9d3B3e2bcuyrKEDYMMwZBiG/yaA97erWq0OXFtvXJuU4Hq8deOYmgoAAADcjlBryq929vb2/KmENy01FArpT3/6041risViQ0/j63bVrpKO4/gXvdFo9MquD9d1FQ6HJV10jlSr1SvPNc9jDmttbU0nJydaXV3VmzdvbjzeNOkV/J6dnU2kw6e90++2mKZ55QLhhUKhZ1DaL3y6TblcrmNKtGEYOjs7G3i/Xo/jur/7pVKp5xS76+5w24tt2yoWi7Isq+9i7a7r6unTpyoWi8pkMv55HcdRPp/X06dP5bquTNNUJpO5ND3U6+qtVCpyHMfvBs3n85d+n0ulkorF4qW/0d3/fngdd92B01X/j9i23bHT7TD/HpVKJZXLZf883uYe29vbPafA2ratzc3Nvt3LV/3eD/tceFzXValUUrVa1fHxsd/95/1sM5nMwLDUcRxVKhUVi8WODR3anwPTNBWNRnV4eEh3ITr88TePgy6hw49/9TjoEjAHHl9/uU9IeswEEOBOCvJafKrXCPv666+Vz+f9C45xdXTdxE1CMElXXni2b3tv2/aldcQ8m5ubki4upK/aFY8xMe+mfQe9YTd56LUA/3UXzU+n01dOSx7l75lt28pkMgqHw4rFYiqVSj13mHRdV4VCQbFYTOFwWJlM5tL6fpFIRKVSyQ9+vM7Z9uDOO65QKPihleM4KpVKisVil0KjdDqtWq02MOSrVquq1+tj25W4XaVSUSgU8h9LvV5Xq9XSs2fP5Lqu/5i6azdNU8+ePbtUU61W8z/a//YN+1x0K5VKCofDyuVySiQSevbsmer1uj9tv1AoKBKJKJVKXbpve/2RSKSjK9rrOGx/rr2wbH19nS43AMDMqFQqikQiCoVCPT/G8YZvLpe7cvxwODzSRkm3zbKsvj+XXo8jEon4rw8qlQrr0GIqTHUQtr+/L+kiAGu1WlpfX1cymfR3aMzn8wM/stms0un0WN6JTqVStxKCeZLJpKrVqgzDUC6X88/nuq4sy/IvWqPRqF69ejXUY5rnMTFdvIBilI9isXitc131+zEt//Be5/e3V4h13b9D1Wq155Rjr8vJW7h/EMdxdHR0NPRaa9Fo9FI3Wq1W8/9/LpfLqtfrOjs76+iQKpVKsm1biURClmWpWq3q7OxMZ2dn/t8Jrx7v34luvUKcXvpNxR6FZVn+uff29jrGj0ajfpDlOI52dnY67msYhqLRaM/p8+0f3v2v81x4vHDOMAzV63Vls1lFo1GZpqlkMqlarebX7F0EtP9unJ6eKpFIXPq9PD4+1vr6uj+tt16vq1gs+s+V67os/g8AmBnJZNJ/jdLrGm4cb6T1CtOi0aj/mmca10KOx+P+z6XXayivY9+7DvfWprVtW6VSSalUyn8Dr1KpBPAIgAtTvUaYbdt+F1i1WvU7gkaRzWZ1//79G9UziS6keDyus7MzFQoFHR0d+dNkDMPQxsaGyuXytS/c5nlMTI9IJDKxXRvv3bvX8+vDdMtMm+3t7UsvFI6Pj6/9syyXy1dOGa1UKv4Ut36BvWmaHS/8+q3TZxiG/wKufaqiNx2v+8VdPp/310CT5O/I2z0NNB6P6/Dw0A+bSqXSjV6MjnvduEGhbfvzdpMXgNd5LjylUsnvuM3n81dOfSyXy4pEIv6UzlQq5T8Ppmn60yfbX8DncjmVy+WO5zWdTmt5edl/rizLYgMGAMBMMQxDxWLxUmjldTyPem3S3hHfblaWEjAMQ/l8/tJrmX7Ld1iW5a/7bdu2UqmUPzNoWnZ2x/yY6o4w749ANpu9UQgmXbx4X19fH0NVk5HNZlWr1XR2dqZWq+V3QtwkCJrnMTFfpr0j7Dp6hRWjPo5sNnvlO3iS/N0qhxl/0PpR7drDpqumakq6tFPiVaFSe/2u607t83rV72H718cxXXDY58ILywzDGNih3B6sWZbVc3pG++M4PDzs+bx2/64dHx8PVSsAANOk17+1V3WlD+OqN/Gu8/oqaNet1Vvntr25xHEcxWKxK5fGAW7LVAdh3v9cDx8+HMt4151eBWA2XfUP87SvHdZLrzDl7du3NxqvXC6rVqv1fPfNsqyBC7aPcs5htD9v13k3dJrWnjo8PFQ+n1e5XB5qM4JJhXjt7zwP88K1e0mBm3TdtZ9vmp4rAACGddVGOqMsm2NZlhzHUTKZvDTuLHSD3ZS3FEP7Y83lckN1twPjMtVBmNcFNq7pTDftKsPd1Wg0tLa21vfj4OAg6DIxpKs6jqZx0dFBeoUWV039vA5vh9ZebxDYtn1p/apJGPXF3zRNeTUMQ9ls9so12W6yzuRNtE9VGPYd3Pb/j2bx/x0AAMapV0f1KF1h3muvvb29sdQ1i6LRqJ49e9bxtUKhwOuNO+Tg4GDg9XWj0QisvqkOwj799FO1Wq2xXTg8efJkLOPg7jk/P9fJyUnfj2azGXSZuIZe3U6O40ztNLrrGGfbfDqdVr1evxRCVSqVqX4xMivvmHo7XFqW1XMh/EnWcV3dv2d34f8dAABuortrqVKpXOvfWNd1ValUAn1NMC2i0WjHZknS8JsdYfo1m82B19fn5+eB1TfVQdjS0pI+//xzHR0d6V//9V9vPB5TI3GVhYUFra6u9v1YXFwMukxcw/b2ds+vT3O4c5Xu0Gfc60eYpnmpRV3ib+ZNeLteehsQBL3zU3uINewL9u4dKaep8w4AgCB4G8a0u87yAV4H2Tx3g7XL5/Mdrz9d1+25myZmz+Li4sDr64WF4OKoqQ7CJPlbu980HX716lVgU1Iw/VZWVvTmzZu+H7u7u0GXOTW8nV6m2VXrM81iuNPdiTPMO4iWZSkWiw19DtM0dXh42PE1/maOJpPJKBaLXdrZMUijLNDfvaPmLC3gCwDAbenuCrtqB8heSqWSTNNkE7A23a/ZZ/G1Oi7b3d0deH29srISWH1TH4RJF2ub/J//8390//59PXnyRN98881QH0+ePNEXX3yhR48eaWNjI+iHAdwZOzs7Uz9NyjCMni8yvC2bZ0X3z3nYziLTNGXb9rU64Lp/Xixsfn2ZTMZ/J3NaQjCpM8QadqfN9g4wQjAAAC7E4/FLb0oO08XkBWY3XRS+VCopkUgoEokoFAopHA6PtPNiqVRSLBZTOBxWKBRSJBJRJpOZ+OyJ7lkctm33fZ3iuq4KhYISiYRfu/czyOVyV75+dV3X/5m1f4TD4Y7nJJPJXDrGO65XI0Aqleo4rnsXdOniNXWhUFAkEum4DvGeA+/nn0qlpv4a6674QdAFDOP58+eSLnZ8y2QyI43RarUUCoXGWRYwl7wgqd9F/rinUI06Xj6fV6VSufT1XC7XsXj4OLiueyvrVh0fH3fcHvZvoBdcZDKZkXfLnIe1K8b5u2rbtv9C2DTNqVrHbHt7u+P/hVKpdGldjm7tvze8cw0AwJ/t7e11hCL7+/sD/131XjsPs6t0L5VKRalUSoZh6PDw0P+32ZupkcvlVCwWey530c5xHKVSKf/1fDKZlOM4yuVyKpVKKpVKMgxDW1tbMgzD36Spe0fpcen1evP4+Ljnm7+lUsl/LZzP5/2plbZta39/X4VCQYVCQclkUuVyueO+hmGoXq8rEol0hGW1Wq3jDb9isahcLqdYLNax4/ZVr6fL5bL/3ESjUf8aw3Vd7e/v91xHznVdbW5udoRijuPIcRxZlnWpJozf1HeEPXr0SIlEQi9fvlQoFFKr1br2B4DxcF3X/0f/uhfGb9++HWstwwQYV01Nsyzr2u+a9eM4jmKx2MhBfT/du/1d5+dumqb/wmYY3f9IX7XO2izontZ31btr4+x6a38Htd+4QbzT171F+zDTDtofD2uZAADwZ93/rg5a28qyLDmOMzAs63d/7zX43t5ex+vBaDTqhz6O4wzc+TuRSPghWDab9dc9e/bsmR++eI+nUCgol8spl8vd6lqh3QFbr9dRuVxOmUzGD7S8JZS818e1Ws3/uVQqFUUikZ6vuYbp2DdNc6TXPu1jn56eKpFIXAr0jo+Ptb6+LtM0Va1WVa/XVSwW/Z+B67q3ck2BTlMdhB0eHqpYLPph1qihFmEY5s1tXGh771x4nU/XfZdi3DUNO142m+35jlIulxtL67dlWf6i4rcxFa69i+e6ayZ4z1GhUBiqZb99fNM0R36x1m3Y56r9uEH3GfT9YaYs9AoJx/ki76puxEHn6/5/q9e7iKNoXwPOe8fxKrZt++9Sdi9kCwAALr9J1O91oPe9UQOOQa8B21/39Hr94clkMv7riu7XeYZhXDpPvV73m0tus0Np0E7VXignXfwsr6qlXC773/M637p1h5hX/bzaO/e8bq2rHB0dXdpIwbvd/TPN5XIql8sql8uKx+MyTVPpdLrjdZplWUyRvGVTHYR5vzReJ1g8Hlc+n1exWPR/eQZ9FItF5fN5ra+vB/xogMm56g/1qBf53sLr3oXx1tbWtc9/k4Dhpl071Wq1ZydVIpEYuTPMe7cmkUhcuetiv/sOo1Qq+Y99lJ0H218kZDIZZTKZK8/d/gJD0sCpo+3PZ9D/UF91/vafl/cuomVZqlQqymQyikQil0KeYf/f6XXO7vAtlUqpUCj4HYheK353+71lWcrlch3t9+28581xnI41yHrV1u+5SCaTHS/Sr1qHwnVd/93kdDp9ZSA67PPe/jMN+ncFAIBx6f738ao3mbyvJ5PJsYRJV73eHPR6pr1r7aoxvGDGMy0L13tvJBqGMXBqafubjpZl9XxO2kPMqx5j93rDVwWdruv6ry2v0v7zPjw87PmavvtapXt5FIzXVK8RZtu2QqGQDMPwWwhHtbOz489vBu66q/6gZzIZFYvFgf8Iu66r4+NjVavVnvPaey0C6XEcp+di9JVKZeR1tK56PKVSaeh1FsrlsnK53KXgK5fL6ejoSPl8fqigyXsRsb+/L9d1FY/HVS6Xr/W4hvmHzQs9JPV8N2kY3btGeus+eC/EIpGIarWa367ffq5BvyPd9VQqlZ5ho+u6HS9A+j32o6OjS/X2en67X9BcFXSWy2Wtr6/74Yv3+KWLFyTVavXSc+69S7e8vNx3KuHTp08v1RaPx5VMJjveWWx/MeZNQWgPsyqViv+zaz9fNpv1f1cty1I4HJbUO5ga9rnwxjVN09/wYn19veN337Is5fN5OY7j19vLsM9Br+PG1WmIgPzj46AruBV//M3jsY3141+NbywA063932tJPV9Pev9O32SZgcPDQz18+HDoZTJ6vfHU/hps0Btn3mOa1MZJ3fW0vw5t35VzmCAxnU53vMHY6znxjpH+HFT2ug5oX2qjVCr1fD3uvaYbde23dt6yJl5duD1T3RHmXRTs7e3duKPLMAw9ePBgDFUB08tbLPOqaXDeNL5eO6F074ridUv1+iPc6x8KLyDqDl/axWKxa20xbdu2v45BL5lMpu/uMN3y+byq1eqlzh3vPN5uMKVSyd8UwLIsv1vK21nH+4ezXC6rWq0ODMG63yHydq25ampapVLxf47JZHLkhf29Bdu9Dlmvq8xxHH+x0VKppNPTU/881Wr1yhcZ3u9XOBy+9JykUqmOHYu8Y7v/dtu2fWlXHK87q7s13eu4aw+EEonEpSC2VCr5Ox21MwxDr169Ujqd9h9TNBpVNpvV2dmZ/3vsTQOt1+v+4qSGYfhr4oXD4Z619VoXrlwud7Tse2OfnZ35AVD7C7JoNKp8Pn9pQdf2dTu847wu5+s+F92SyaTOzs5ULBa1sbGhXC6nSCSiWCymYrGoTCbTUW877/+VQc+B4zg9j/P+Bo1zjT4AAILSHW61v7noKRQKikajN9qEyDAMZbPZniFY+3IG13HV6/GHDx/6n09qwfbuzvv283avlzuM9muVXq+3u7u9egVcvdZ96zWNcn9//9Y2EsDtCbWmeAGtRCKh58+fq1wu6+c///mNx3v58iVhGDqsra3p5OREq6urevPmTdDljKx9B5XbFo1GVavVOr42yo6shmHo7Oys5/dSqVTf9Q2u0qvD5yqVSkX7+/vXfuFgmqYymcy1/8Hz1qPqflyGYWhjY8MPXo6Pj/3OOW/tAACYGmPqCPvjHX6jm44wXOXxzZcmnUuPp+ClUCwWk+M4PV+7dr9ubd+x0HuNXi6Xe4ZY4XC4I5Aa9tLc62JqX5eqfaxarXYpeHNd1+8wl3Rl57e3A6KkK+v2dF8DjBItdNfVPU778iy9doPspXsWyNnZ2aXX7bZtd7yB332M94ax9yahdPk6yPtZ1ev1viFd+3PT72favqNlsVgcS5fZNAvyWnyqO8IymYxardbY2gIJwXBXpdPpkXZUHeWjOwSTNNI4V4Vg0sU/EKOMeZ3QyNtd5uzszP8Hydt5xmOapqLRqL+2Ur1e93epue67PqZpqlwuXzqf9Of1C05PT7W1taVqtdrRsQQAAIDp1N0V5i0HIv15w5nr7rZ+Fa8z2wtJrvNa0TCMjnWuvGU+unlLVXivgW/b06dPO253P6b2GofNBbyNrDy91iru7tJr7/7yusGy2WzHm9+2bXfUUCwWL62rhtkw1UFYMpnUgwcPLq0bM6pvvvlmLOMAuDu8Fyflclm1Wq1jdxxvqly5XO6YpjbO852dnfnBYK1W8/9BBQAAwPTrNe1xf3/fnyZ5k7XB2nnLMpimOfJO5dls1r+v67qKxWL+1EHXdVUoFPy1Rp89ezaWugfp7vDqtdSFZ9ggrH1tL+nqKZXt52qfHrm/vy/pzyFne2eW9/PzuvImNSsH4zXVQZgk/2Lxd7/73Y3H8n6hAQAAcH1/dMbzAQB3SXcwVSqV/K+NY3pb+0Y7o4ZgHm9dVOmiUyqVSikUCikWi+nFixf+m8CTWPPKW4/X06sLrT3Ecl13qLWG2zvA+r2R3d7t5QVbXiDYPgOkPcz0OtjG3e2HyZr6IMw0TX311Vf66KOPbjTOu3fvRlpEEAAAAACAq3RPj/N2zR7HIuq2bfshmLehz015O8mfnZ35sxPq9brK5fKNFvW/Lm8tMs/h4eGlY7a3tztuX7UpWDsv6JM0MKhqDyqLxeKlbjCpc3F9LygrlUpj6/bD5P0g6AL68aYy/uVf/qXC4bDu378/UuLquu6luccAAAAAAAwyTCdSLpe7NE3O22m837iDtHdM9ZsaOMxYrutqc3NT29vbgS/EnslkLq231SuESyaT/qZS3nG9Fvlv1/4zGxRWZTIZf2F9b9ODXusBZzIZ//ve8xr0zxCjm+og7LPPPtPLly/9261Wa+Qt11ut1kg72wEAAAAA5levxda7pdNp5XI5P7AZZRF1b+fwfrw1vNp1B25X1ZtKpWTb9o2nV96EF8a1z9byFqW/yuHhod895k1hvGpNXdu2/bG96Yv9eDtvDgrPvOfTC++8gA6zaaqDsK2tLf+XOBQKEWTh1jQaDa2trfU9Znd3V7u7uxOqCAAAAEDQbNv2w61eIVS7dDrtN24M6gbr1d3lOM6lrqju26lUSvl8XtFoVLZt+51U7SGNt/B7tVrV3t6e31HlhT2JRMK/z/LysgzD0L179/xgxzRNbWxs9A16hl243mPbtvb39/2uKuliymG5XB64UZS3g7v3M02lUnr16tWl+lzX1c7OjqSL52JQ55gnl8v5P5t+01kzmYxfw3WmRQ7TrSd1/kyHvc+0Ojg40MHBQd9jGo3GhKq5LNRqtVqBnX2Ad+/eKRwOKxQKaRxlhkIh/elPfxpDZbgr1tbWdHJyMtSx/+W//Bc9fvz4dgsCAGCK/fE3j4MuYer9+FePgy4BU+qxNfgYXPY4wM20Hcfxu6iki4Co3zparusqHA7LNM2Odap6HZdKpTq6kKSLrqNeC9WnUqmOAKldPp9XNpvtWFDf4+1U7gmHw9cKWOLxuIrF4qXONi9w6q4pGo12rOn19u3bjkXoPaZpKpfLXXtqYaVS0c7Ojt85l8/n/RDNsizl83k5juP/TK4jEonIcRydnZ1dGYR5z280GlWtVhtqXMuylEgk/NvpdLpjh8qrjovH46pWq9d6DNPk8ePH+q//9b8Odezq6qrevHlzyxV1muqOsKWlJUWjUb18+dJPvbu3Qh2G4zj67LPP9N13342/SNwJCwsLWllZ6XvM4uLihKoBAAAAEJRSqdQxzdHjOI5isZgfwnQHOYZhKJ1OKxaL9Ry3Uqkol8td2U1lWZYfpBWLRT/kKZfLKhQKKhaLchxHpmkqmUz63V6S/BDIsiw/kOoOg2q1mjKZzKUA7iqWZSkWi/ndV5ZlXVrbq137tETv57G8vCzTNGWaphKJxEhTRj3JZFLJZFKlUknlctl/jgzDkGmaymQyI29QkM/n9eLFi7739Z7f7kX+e7Ftu6PTzFMqlfypnd7z2es5sSxLkUhEmUzm2qHeNFhcXNTq6mrfYxqNhs7PzydUUaep7giTpF//+tc6Pj7W0dHRjcdaXl4ean435ofXERZECg0AwKyhI2wwOsJwFTrCRhNkR9hd463Plc/nZZqmXNeV4zg6PT31Q7+3b9/KdV2dnp76nVzZbDbQdcVwNwV5LT7VHWHSRUvgixcvxjLWxsbGWMYBAAAAgOsg0EGQbNvW5uam9vb2Otbkumqap+c6HWTArFgIuoBBHjx4MLb0mRQbAAAAADBPHMfR5uam3911HalUaqTliYBpNvVBmCStr6+PZZwHDx6MZRwAAAAAAGZB+1pa11Uul4daEwuYJTMRhAEAAAAAgOvzpja6rntpZ8l+MpmMjo+Pr727IzDtCMIAAAAAALij2tcEy2QySiQSKpVKchzHXyTfWzjf2xkyHA7LcRzVarWAqgZuz9Qvlg8AAAAAAEbjTW+sVCqSLjrE+i2AbxiGDg8PlUwmJ1UiMFF0hAEAAAAAcIeVy2VVq9Urwy3DMJRMJlUul3V2dkYIhjuNjjAAAAAAAO64eDzuT5N0XVenp6eSpOXl5ZEW0gdmFUEYAAAAAABzxDAMwi/MLaZGAgAAAAAAYC4QhAEAAAAAAGAuEIQBAAAAAABgLhCEAQAAAAAAYC4QhAEAAAAAAGAuTO2ukc1mU5Zl6cWLF7JtW47j6PT0VK7r+scYhqHl5WWZpqloNKpEIqGNjQ0tLi4GVzhmUqPR0NraWt9jdnd3tbu7O6GKAAAAAACYPQcHBzo4OOh7TKPRmFA1l01dEPbkyRMVi0XZtt3x9VardenYs7MznZ2dyXEcWZalQqEgSYpGo/r000/1s5/9bCI1Y/adn5/r5OSk7zHNZnNC1QAAAAAAMJuazebA6+sgTU0Q9uTJE+VyOb/jywu+QqFQx3/78e5j27aSyaQMw1ChUNAvf/nL2ykad8bCwoJWVlb6HkOnIQAAAEb2j4+DrmA2/YfHQVcA4JoWFxe1urra95hGo6Hz8/MJVdRpKtYI297eViaT0dnZ2aXvtVqtoT+6nZ2dKZ1O6xe/+AXdPOhrZWVFb9686fvBtEgAAADg7qtUKopEIgqFQj0/SqXSjc+Ry+WuHD8cDsuyrDE8kvGqVCoKh8NX1t1ef7+fUSaTGXj/7hlimC27u7sDr68HNaLcplCrV4I0QQ8fPpRt2x1BlmEY2tjYkGmaikQiMgxDpmlKkpaXl/3jTk9PJUmu68pxHL19+1a2bev4+LhjLbFQKKRIJKLj42O6etBhbW1NJycnWl1d1Zs3b4IuBwCAqfbH3zwOuoSp9+NfPQ66BEwrOsJGE2BHmOu6yuVyl0Id0zRVr9dvNHY4HO64ZpUulvh59uyZDMO40di3zXVdpVKpS2FdPB5XuVweuv5KpaKdnR3/5xCPx1UsFv1rf9xtQV6LBzo18tGjR6rVapIu/phkMhklk0mtr6/feOx3797p6OhIpVJJtm2rXq9ra2tLv//97288NgAAAADgbjMMQ8Vi8VIQ5jiOKpWKksnkSOOWSqVLIZgkHR4eTn0IJv355xKJRDq+XiwWr1V/MpnUixcv/LW+rxOiATcR2NTIV69eqVgsSrr4hf/+++/18ccfjyUEk6SlpSWl02kdHx/r22+/1eLioqrVqp4/fz6W8QEAAAAAd1+vDqX9/f2Rx8vn80OfZ1r1qnWU+re3tyVddMMRgmFSAgvC8vm8QqGQHMfRhx9+eKvnisfjqtVqWlpaUrlcvtVzAQAAAADujl4BjW3bI61jZVmWHMfxN3cbdJ67zgvPZikExOwLLAizLEv5fF7vv//+RM5nmqY++eSTqVx0EAAAAAAwvQzDUDqd7vjaKF1h3qyovb29sdQF4PoCC8Icx1E8Hp/oOROJhBzHmeg5AQAAAACzL5fLddyuVCrXur50XVeVSkXRaFTRaHTc5c2keeyCQ/ACC8IMw/B3fQQAAAAAYJqZpnmpmeOq9b568TrI6AYDghVYELa8vDzxaYqWZTH3GAAAAAAwku6usKt2gOylVCrJNM2Rd5sEMB6BBWGbm5vK5/P6wx/+MJHzvXr1SrlcbuLTMQEAAAAAd0M8Hr80rbFUKg28nxeYdQdp11UqlZRIJBSJRBQKhRQOhxWLxVQoFK49TiwWUzgcVigUUiQSUSaTmdo1tV3XVaFQUCQS8aejOo6jXC7X8bNIJBIjbWKA+RJYEPbJJ5+o1WopHo/ryy+/vNVzPXnyRD/84Q8VCoWUyWRu9VwAAAAAgLure2rjMIvme1MouxfcH1alUlEoFFIul1Mmk1G9Xler1dKzZ8/8gC0SiQzsTnMcR7FYTJlMRtvb26rVaqpWqzIMww/ZwuGwMpmMcrmcCoWCCoXC0F1v41SpVGTbtgqFgsLhsHK5nB+CVSoVRSIRFQoF/2uu68qyrJGCQcyXwIKw9fV17ezsqNVqKZvN6t69e9rb29Pz58/HMv7r16/1xRdf6P79+8pkMmq1Wkomk/rggw/GMj4AAAAAYP4kk8mORd5d1+3bFWZZlhzHUTabHel8lmUplUpJugjh2qdWRqNRlctlSRch187OTt+xvI6pfD6vbDbrr3v27Nkzfxkh7/EUCgXlcjnlcrlA1vdOJpOKRqOXZnUVi0WlUiklk0kVi0UVi8VL0029EA/o5QdBnrxYLOr4+FgvX77U2dmZnzZLFwsRRqNRmaape/fuyTAMLS8vS7pYaL89kT49PVW9XpfjOHIc51IrZKvVUiwW09HR0cQeGwAAAADgbtrb2+uY5pjP56/s9vK6wUadnVQsFvt+v32qZqVSufK4TCbjd091h3KGYahYLCqRSPhfq9frU7HGdncNlUrlUm3pdFqWZXXUn8vllE6n2ZkSlwQahElSrVZTJpPR4eGhWq2W/3Uv2Lqu9jE88XjcT8kBAAAAALiJbDbbEYQ5jiPLsi51L3lfTyaTYwmVrgp12ptFHMe5dK72rrWrxojH4zJN078OLxaL19oVc1LK5XLPn6V33e91z0kXYdigIBHzJ7Cpke2KxaK+/fZbPXjwwP9aKBTyP2+1WgM/et3PNE1Vq1V9++23WlpamsyDAQAAAADced1dVb1CIy+E6V5X7DoODw+Vz+dVLpeHWmOs13pex8fHfb/vaZ9iOEpjyiT06/DqDhzbHzfgmYogTLpIb2u1mmq1mj788MMrQ67uD4937NLSktLptGq1mr7//nttbm4G8XAwYxqNhtbW1vp+HBwcBF0mAAAAgCnRHW55a4G1KxQKikajl3aavA7DMJTNZi+tgyVJtm2PtEviVWHYw4cP/c+nYVrkKNqnoLKDZDAODg4GXl83Go3A6gt8amS3Bw8e+NMYX758Kcuy9OLFC7muK8dx/EX6lpeX/XXDTNNULBZTPB7X+vp6kOVjRp2fn+vk5KTvMc1mc0LVAAAAAJh2hmEomUx2rMuVy+X861lvKuJNusF68aZbegvdD2NjY6PjdqlUGrh4f3sodlu8QM5bD3wcek0LZZ2wyWo2mwOvr4M0dUFYuwcPHnRMlwRuy8LCglZWVvoes7i4OKFqAAAAAMyCvb29jiCsUqn4wUs+n/fDsnGwbVu5XE7RaPTaa3d59Xjrmu3v7/dcSN7bYC4ajQ6su3sTu2kxq51sd8ni4qJWV1f7HtNoNHR+fj6hijpNdRAGTMrKyorevHkTdBkAAAAAZog37bF9Ct7+/r4SiYQcxxnbYvOZTEalUknpdHrkMb0OsFwuJ9d1FYvFVCwWFY/H/cX0K5WKksmkDg8PB463vLzcEYSN0nnlTSWNRCLXut910A02ebu7u9rd3e17zNraWmBdY1OzRhgAAAAAALOmO5gqlUr+14ZZ3H4QLwTrda7rymazqtfrkqTT01OlUimFQiHFYjG9ePFCtVpN5XJ5qPCo1w6Z1+UtZn+TNdS6tdcxznFxdxCEjYHjOEokEh0tsbPEq39YhUJBiURC4XBYoVBIkUhEqVRKlmWNXMNtjAkAAAAAty0ej3dMx3NdV5Zl9Zx6eF22bfshmGmaY+luymQyKhaLOjs709nZmVqtlur1usrl8rWCo1gs1nHbm1Z5HV7oNuxaZ8NoD8K2t7fHNi7ujjsfhL17907b29t677339KMf/WisC567rqtUKqVIJCLLsvyF/IflhT6jfLTvhNGvvmHGikQiQ82jtixL4XDYn1deLpdVr9eVz+dl27YSiYQSicS15onfxpgAAAAAMC6u6w68HvGuZwZ9rXvcQdobA/p1XA0zljcdMpFIjKVTrTvo8wK7Ydm27QeG49QeyI17bNwNdz4I83btaLVaqtVq2trauvGYrusql8spHA6P3AXmLaI4qmE6uK7zh2jQH2nLsvxAKp1Oq1qt+u98JJNJ1et1RaNRWZalWCw29B/1cY8JAAAAAOM0TMNDdyjU3SU2jGGud3pdf3Zfy11VbyqVkm3bY50u2D5V02sUGYbjONrc3JRhGNfeVbPfz8m2bX+9tmKxyPpg6OnOB2GWZfmdT61WS9Vq9UbjFQoFxWKxjsUQR1EsFm90/2F2Htnf3x9qrEF/pNv/oJmmeWXt3jbBjuMM/AN4G2MCAAAAwDjZtu0HL4OaINq7jwY1GvTq7ur1te7QKpVKqVAoyLIsFQoFRSIROY7TcT1XLBZlWZa/KL705+ma0kVTRSwWUyqVUiaTUS6XU6FQUKlUUqlUkmVZQzchpNPpjsddqVQUi8WuXOLGcRzlcjlFIhG5rqtnz55dO6za2dnpWZ8XrvWqC2h353eN3Nzc1OHhoUKhkKTLC/pdh23bisfj/m4bpVJpqCmK3RzHkWVZMk1TuVxO8Xhcy8vLA+8Xi8XkOM5Qj6FUKsl1XWWz2YHdYxsbG32/n0ql/D80/f6ge51clUpFlmX5u5pMakwAAAAAGBfHcbSzs+PfzuVyMk3zyo6qvb09FQoFmabZ95rNdd2e15HebKbuzjLveqj9OE8+n1c2m+1YUL9Sqfi7P3pjGYYhwzD8a7D2zqmrxONxFYvFgZ1txWJRsVjMD968JW4Mw5BpmlpeXtbp6akcx/HPH4/Hh16Uv5dwOKx0Ou1f61arVT19+lSu6/o/E+AqoVar1Qq6iNuWyWT07NkzRaNRHR4eamlpaSzj2rbdsUBgsVgcKqTJ5XKqVCqq1WpD/4/vOI6/peww5/GO9XYEGVX7eSXp7Oysb82VSsXv3DIMQ2dnZxMZc1Telq2rq6t68+bN2MYFAOAu+uNvHgddwtT78a8eB10CptU/Pg66gtn0Hx5P/JSlUqmjm6qbYRjK5/M9r8kymYxisVjP71UqFeVyuYG7K3ozZtrDtEKhoGKx6Hd/JZNJ7e3t+ddR3owby7IUjUa1vb19KQxyHEeZTOZaG5IZhqFXr14Nfd1aKpVUrVZl27ZOT0/luq4Mw9Dy8rJM01QikVAymbzWtFHXdRUOh/3b9XpdlmWpXC7r+PhYruv6P5NMJnPtKakIRpDX4nMRhN2W7kBn2CAsHA77wdywCoWCn/wPGxwNW08/7e8sxOPxoaaWet130sXUxu5pnLcx5qgIwgAAGB5B2GAEYQCmleu62tzcVD6fl2macl1XjuP4gZUkvX37Vq7r6vT01J8imc1mO9YCC6Lu7iCMsGv2BXktfuenRk6j625LK/1554t4PD4wjd/f35dhGGPZGKB9wf1hazZN03+X4+jo6FJodRtjAgAAAAB6s21bm5ub2tvb6+g0G3Q9dt0OMmAW3PnF8qfRddcp8+ZZSxq4YLw319tLzSORiDKZzEi7W3bPGX/48OFQ92v/Y9p93tsYEwAAAADQm7eIvNfddR2pVGqo9ayBWUIQNgPaO6gGdXl1LzzvOI5KpZJSqZRCoZC/Ze4wupP/YdtPu49rP99tjAkAAAAA6M1b72yUhenL5fLAZgxg1kxtENZsNvXNN99ob29Pf/M3f6P79+/r3r17eu+99/yPe/fu6f79+/qbv/kb7e3t6fnz52o2m0GXPnbetMhoNNr3j5e3G2U/3na2w+x2+eLFi47bw/7hvHfvXsft4+PjWx0TAAAAANCbd43oum5Hk8UgmUxGx8fHN153Gpg2U7dG2JMnT1QsFi91/PRa0//s7ExnZ2d+AFQoFCRdBEaffvqpfvazn02k5tvUPi1ye3u777He7iKu6/o7aVy1I0mpVNLx8bFqtdqV43Xfd9TurfadK29jTAAAAABAb/F43F9eJpPJ+F1e8Xhcy8vLMgzDXyDfcRyVy2U9ffpUGxsbfa8XJ+X09LTj9lW7eQLDmpog7MmTJx1b1HrBl7dbYPuugVfx7mPbtpLJpAzDUKFQ0C9/+cvbKXoCnj596n8+zALx3Wm9l/rv7+9f+oNh27YSicSVuzYO2tZ3WO3nvY0xAQAAAAC9ecGXF4ZZltV3JpFhGDo8PJyaDcq6d6zc399XuVwOqBrcBVMRhG1vb6tSqajVal0KvHp1gg3r7OxM6XRa1WpVpVJJi4uLNy114orFoqSLLrdRtog1DEPZbFbZbFaVSkU7OzsdIZLXSddr0cRRw6bu6Y7tCf5tjDkOjUZDa2trNx5nd3dXu7u7Y6gIAAAAAMajXC7LsiwVi8Wem48ZhqF4PK7t7e2pCcAymYyePn166RqyUqkoHA7LNE1lMhmmbk7YwcGBDg4ObjxOo9EYQzWjCTwIe/jwoWzb9gOvVqslwzC0sbEh0zQViURkGIYfArXvWOGFIa7rynEcvX37VrZt6/j4uKOzrFwu+1+fpTDsOtMih5FMJhWPx7W5udkx9XR/f//au4dcx210b417zPPzc52cnNx4nLu4Rh0AAACA2RePxxWPxyXJnwopyZ8eOW2KxaLfGILp0Ww2x3LtHKRAg7BHjx75c469NDeZTGp9ff3GY797905HR0cqlUqybVv1el1bW1v6/e9/f+OxJ+W60yKHYRiGarWaYrGYH4a5rivLsvw/iu3HjiNwav+jehtjjsPCwoJWVlZuPM4sBa0AAAAA5pNhGFMZfmH6LS4uanV19cbjNBoNnZ+fj6Gi6wssCHv16pWf7pbLZX344YdjHX9paUnpdFrpdFqWZSmVSqlarer58+f6yU9+MtZz3Rbv52Oa5kjTIvs5PDxULBbzb1er1UtB2PLy8lhCq/YuvtsYcxxWVlb05s2bsY4JAAAAAMBdMq7lgNbW1gLrLFsI5Ky6WPAuFArJcZyxh2Dd4vG4arWalpaWZmZRvfZpkbcxRzsajXYEX70WsR/1HYLuoKu7I2zcYwIAAAAAAAwjsCDMsizl83m9//77EzmfaZr65JNP+u6OMU3ap0WOY32wXhKJRN/vb2xsdNwetpOreyH7SCRyq2MCAAAAAAAMI7AgzHGcS1PxblsikejZ+TSNvM41wzAUjUZv5Rzt0y17TTVsnzop9e4a66Ver3fcbn+eb2NMAAAAAACAYQQWhBmGcanLBxe8xesl3epWsO1BWK+pht3dW8OGVu1dXu07ft7WmAAAAAAAAMMILAhbXl6e+DRFy7JmIkCZxLRISTo+PvY/7zVNMhqNdgRkL168uPa43cHXbYwJAAAAAAAwjMCCsM3NTeXzef3hD3+YyPlevXqlXC43E1PqJjEtUuqcbnjVz2Vra8v/3Fu8f5D243K53ETGBAAAAAAAGCSwIOyTTz5Rq9VSPB7Xl19+eavnevLkiX74wx8qFAopk8nc6rluqn1aZHtgdBsqlYokKZvNXnlM+89rmA6+9mNM0+wZsN3GmAAAAAAAAIMEFoStr69rZ2dHrVZL2WxW9+7d097enp4/fz6W8V+/fq0vvvhC9+/fVyaTUavVUjKZ1AcffDCW8aXhdzy8jvZpkalUauzjeyqVihzHkWEY2tvbu/K4aDTaETx54dlVvG426erOrdsYEwAAAAAAYJBQq9VqBVlALBbTy5cvL4oJhfyvm6apaDQq0zR17949GYbh72xoGEZHCHV6eqp6vS7HceQ4zqXpdq1WS7FYbOj1qIZVqVQ6wqp8Pt+3u2oYiURClmXJMAydnZ0NfT/LspRKpeS6ruLxuPL5/JXTKh3HUSwWk+u6qtVqA6dfOo6jSCQi6SLEqtVqPY9zXVfhcFjSxVTLarU60TFHsba2ppOTE62ururNmzdjHRsAgLvmj795HHQJU+/Hv3ocdAkAAEy9IK/FfzDRs/VQq9WUyWR0eHio9kzOC7auq1euF4/HO7qKxsF13UvdSUdHRzcKwtqnRV53+l+5XPbDQcuyFIvFlE6nVSwWO47zArPl5WXVarWhNg8wTVPlclmpVEq2batQKPR8nJubm5IugspBP+/bGBMAAAAAAKCfwKZGtisWi/r222/14MED/2vt3WGtVmvgR6/7maaparWqb7/9VktLSzeu03VdpVIpJRIJhcPhS0GdbdsKhUJKJBJ+wHMd7dMir7uWWa9plKVSSeFwWKlUSplMRrFYTIlEQul0eugQzJNMJlWtVmUYhnK5nP/4vPAuFovJtm1Fo1G9evWqY2fISY4JAAAAAABwlcCnRnZ7+fKlPvvsM3399deXvtcecnm6yzcMQ1tbW8pkMh3B2izwpkVKvTvbBnEcR/l8XpZl6fT0VK7r+lNKo9Gotre3FY/HbxwoFQoFHR0dyXEc/xwbGxvKZDJKJpNTM+YwmBoJAMDwmBo5GFMjAQAYLMhr8akLwtq9fPlSlmXpxYsXcl1XjuPo9PRUkrS8vOyHPKZpKhaLKR6Pa319PeCqMUsIwgAAGB5B2GAEYQAADDbXa4T18+DBg5nr6gIAAAAAAMB0muogDJiURqOhtbW1vsfs7u5qd3d3QhUBAAAAADB7Dg4OdHBw0PeYRqMxoWouCywI++677/TBBx8EdfpLms2mTk9P9f777wddCgJwfn6uk5OTvsc0m80JVQMAAAAAwGxqNpsDr6+DFFgQ9tlnn+mHP/yhPvvss6BK6ODtBvmf//N/DroUBGBhYUErKyt9j1lcXJxQNQAAAAAAzKbFxUWtrq72PabRaOj8/HxCFXUKLAgrlUoyTVORSES//OUvgypDkvTo0SOdnp4Sgs2xlZUVFssHAAAAAOCGhllWyFssPwiBBWGGYejp06f66U9/KkmBhWGPHj3S06dPVavVAjk/AAAAAAAAJmMhyJPH43F9/vnn2tnZ0aeffjrRczebTW1vb6tUKunZs2esDQYAAAAAAHDHBRqESVI2m9Xnn3+uzz//XD/60Y/0hz/84dbP+eTJE62vr6tSqej4+HiqFu0HAAAAAADA7Qg8CJMuwrCvvvpKx8fHisfj+tGPfqTf/e53Yz3H8+fPtbe3p3v37imTySgcDuv777/XgwcPxnoeAAAAAAAATKfA1gjrlk6ntby8rJ2dHR0fHyuZTEqSotGo4vG4Hj58KNM0ZZpm3937ms2mTk9P5TiOqtWqLMuSbdv+91utlpLJpJ4+fXrrjwkAAAAAAADTY2qCMElKJpNKJBJKJpN69uyZJMm27Y4gq5thGHJdt++4rVbL/7xUKumjjz4aS70AAAAAAACYHVMxNbLd0tKSqtWqnj59qmg0qlar5QdZ3uftH2dnZz2/3v4hXUy/PDs7IwQDAAAAAACYU1MXhHmSyaSOj49VrVb14YcfdnR1eUKhUMdHN9M0/QDs888/19LS0iRKBwAAAAAAwBSaqqmRvWxubmpzc1OS9PLlS1mWpRcvXsh1XZ2envrTIg3DkGmaWl5eViKRUDweJ/gCAAAAAACAb+qDsHYPHjxgl0cAAAAAAACMJLCpkc+fPw/q1AAAAAAAAJhDgQVh8XhcP/jBD/SLX/xC33zzjZrNZlClAAAAAAAAYA4EFoQtLS3p/PxcT58+VSqVUjgc1t/8zd/ot7/9LaEYAAAAAAAAxi6wIOzs7EzValU7OztaWlpSq9VStVpVOp1WOBzWw4cP9eWXX+r169dBlQgAAAAAAIA7JNRqtVpBFyFd7Aj51VdfqVwu+ztBhkIhSZJpmkqlUtra2tIHH3wQXJG4c9bW1nRycqKFhQWtrKz0PXZ3d1e7u7sTqgwAgOnzx988DrqEqffjXz0OugQAAAJ1cHCgg4ODvsc0Gg2dn59rdXVVb968mVBlF6Zm18gHDx6oWCyqWCzq5cuX+od/+Ad9/fXXchxH9Xpd+Xxe+XxehmFoe3tbyWRSP/nJT4IuG3fE+fm5Tk5O+h7DlF0AAAAAAPprNpsDr6+DNDVBWLsHDx7owYMHyufzevXqlSqVio6OjmTbts7OzvzAzDAMxeNx/eIXv9DPfvazoMvGDBumI2xxcXFC1QAAAAAAMJsWFxe1urra9xivIywIUzM1chjv3r3T06dPVS6XZVmW/3VvCqU3fTIejxNaYCje1Mgg2jEBAJg1TI0cjKmRAAAMFuS1eGCL5Y9iaWlJOzs7+vbbb3V+fq5yuawPP/xQrVZLrVaLHSgBAAAAAABwpZkKwrp9+OGHKpfLOj8/ZwdKAAAAAAAA9DXTQVi7zc1NFYtFnZ6eXgrFarWastmsIpGI7t+/r08//VTfffdd0CUDAAAAAABggu5MENauPRSr1Wr6+OOPtb6+rlar5e9AGYvFdO/ePf393/+9nj9/HnTJAAAAAAAAuGV3Mghr5+0++f333/sh2IMHD9RqtfwdKBOJhP7yL/+S9cQAAAAAAADusDsfhLVbX1/Xxx9/rOPjYz8E29zc9EMxAAAAAAAA3F0/CLqA2/D69WvZti3DMLSxsaHFxcVLx3g7UO7s7Ojdu3eyLCuASgEAAAAAADApdyoIe/36tVKplGzb7vh6LBZTuVzWv/23/7bn/ZaWlvThhx9OokQAAAAAAAAEZOqnRv70pz/Vw4cPdf/+fd2/f1/37t3T9vb2peNevnypWCwm27bVarU6Po6PjxWJRPSHP/whgEcAAAAAAACAaTD1QZhhGKrVanr79q3S6bSOj491dHTUccy7d++0ubnpr/MVCoX8+8bjcZmmqfPzc6VSqYnXDwAAAAAAgOkw9UGYbdvK5XI6PT3Vxx9/rPX19UvH7OzsyHVdhUIhvwssn8/r9PRU3377rb7//nt9++23Oj8/16effhrAowAAAAAAAEDQpjoI+/Wvf61oNKr9/f0rj/n6669VqVT8ECwUCimfz+vjjz/uOC4ej+vzzz9XrVa77bIBAAAAAAAwhaY6CCuVSgM7uHZ2dvypkKFQSNFo9FII5tne3tbx8fHY6wQAAAAAAMD0m+ogrF6v64MPPrjy+48ePZLrupKkVqslSTo8PLzy+KWlJf84AAAAAAAAzJcfBF1AP6Zp6vXr13r//fcvfe/ly5cqFosdUyLT6XTf4Ozly5fa2Ni4vYIxsxqNhtbW1voes7u7q93d3QlVBAAAAADA7Dk4ONDBwUHfYxqNxoSquWzqg7BSqaTPPvus4+vv3r3r2AEyFArJNE39j//xP/qO9+zZM+VyuVupFbPt/PxcJycnfY9pNpsTqgYAAAAAgNnUbDYHXl8HaaqDsHQ6ra2tLUnSJ598IkmyLEu5XE6O43R0g5XL5b5jvXz5Uvv7+3r79u2t143Zs7CwoJWVlb7HLC4uTqgaAAAAAABm0+LiolZXV/se02g0dH5+PqGKOoVaU75oViKR0PPnzzu+5oVfXunFYlE7OztXjvHkyRO/E4wgDO3W1tZ0cnKi1dVVvXnzJuhyAACYan/8zeOgS5h6P/7V46BLAABg6gV5LT7Vi+VLUqVS0c9//nO1Wi3/Q7oIwwzDULlc7hmCfffdd9rb29P9+/eVyWR0dnYm13X1u9/9btIPAQAAAAAAAFNgqqdGShc7PZbLZT179kzValW2bcswDD18+FDpdFpLS0uX7nN4eOhPlVxfX9f6+rr/vf/5P/+nfvazn02sfgAAAAAAAEyHqQ/CPJubm9rc3Bzq2J2dnb5TJQEAAAAAADB/pn5qJAAAAAAAADAOBGEAAAAAAACYC3cyCNvb29O//Mu/BF0GAAAAAAAApsjMBWHffPONHj16pIcPH+qbb77peUwsFtODBw/0i1/8gkAMAAAAAAAAkmYoCPviiy907949pVIplUol2bat09PTnscmk0k5jqN//ud/lmma+t3vfjfhagEAAAAAADBtpj4Ie/fune7fv69cLqezszO1Wi21Wq2B9zMMQ7VaTR988IGSyaR++9vfTqBaAAAAAAAATKupD8JSqZTq9bokKRQKKRQKXev+z549U6vVUjqd1h/+8IfbKBEAAAAAAAAzYKqDsGfPnsmyLIVCIb8TbGlpSfF4fOgxDMPQxx9/rFarpUwmc4vVAgAAAAAAYJpNdRBWLBYlye/oqtfrOj091bfffjvU9EjPL37xC0lSvV5niiQAAAAAAMCcmuogzOsGK5VK+uqrr7S+vj7SOKZp+p9/++234yoPAAAAAAAAM2SqgzDXdWWapj766KMbjdO+u6Rt2zctCwAAAAAAADPoB0EX0I9hGIpGozcexwu/Wq2WHMe58Xi4exqNhtbW1voes7u7q93d3QlVBAAAAADA7Dk4ONDBwUHfYxqNxoSquWyqgzDTNOW67o3H2d/f9z83DOPG4+HuOT8/18nJSd9jms3mhKoBAAAAAGA2NZvNgdfXQZrqIGxzc1NPnjy50Ri//vWvZdu2v/Nk+3phgGdhYUErKyt9j1lcXJxQNQAAAAAAzKbFxUWtrq72PabRaOj8/HxCFXWa6iBsb29Pv/71r/Xll1/qP/2n/zTS/QuFgh+ChUIhbW9v30KlmHUrKyt68+ZN0GUAAAAAADDThllWaG1tLbCusaleLN8wDH388cfKZrP69NNPh5qa1mw29eTJE92/f1+FQkGtVqvj++l0eux1Oo6jRCKhSqUy9rGvOtewCoWCEomEwuGwQqGQIpGIUqmULMsauYZZGRMAAAAAAKDdVAdhkpTP5/WTn/xEn3/+ucLhsP72b/9WX3zxhSSpVqvpm2++0ZMnT7S3t6eHDx8qHA4rk8moXq/7XWCer776aqzT21zXVSqVUiQSkWVZHbtTjjJWKBQa+BGJRIaa3mlZlsLhsHK5nCSpXC6rXq8rn8/Ltm0lEgklEolrrcE2K2MCAAAAAAD0Emp1t0xNqUwmo8PDw45gqxfv4XjHebeLxaJ2dnbGUovrutrf31ehUOj4erFYHLnjrFAo+GHQIPV6vW8YZlmW3zWWTqdVLBYvHROLxWTbtkzTVK1WG7iJwKyMeV1eO+bq6ipTIwEAGOCPv3kcdAlT78e/ehx0CQAATL0gr8WnviPMUywWdXx8rJ/85CdqtVqXPjztAVir1VI8Hle9Xh9bCFYoFPxwZpzad7bsJx6P9w3BvC416WLXzV7hknTReSVdTLX0jp/1MQEAAAAAAPqZ6sXyu0WjUVWrVb169UqWZalarcpxHLmuq9PTUy0vL8swDJmmqUQioa2tLS0tLY3t/LZtKx6PK5vNSpJKpZIymcyNxy2VSnJdV9lsduD6XxsbG32/n0ql/GmE/TrMTNNUMplUpVKRZVkqlUpXdrPNypgAAAAAAAD9zMzUyGlk27ZisZh/e9SpkZFIRNLFlMebcBzHH0uSzs7O+k4lrFQqfpeVYRg6Ozub2TFHxdRIAACGx9TIwZgaCQDAYEyNnJDvvvturOONY72qSqUix3GGXh+sn3w+738ej8cH1pdMJv3PXdftuevlrIwJAAAAAAAwyFwFYeNaJ2yc9vf3ZRiGtra2bjxWqVTyP49Go0Pdp329saOjo5kdEwAAAAAAYJC5CsIcxwm6hA62bcu2bbmuq3A4rEgkokwmM1LHU/fi/Q8fPhzqfu1BVPd5Z2VMAAAAAACAYdz5IKzZbOr169fa2tryF2efFt3TIR3HUalUUiqVUigUUiqVGnp3SsuyOm7321my33Ht55uVMQEAAAAAAIYRSBD27t07vffeexP58Dqtpq2LyHGcS6FQt0qlolgsNtTOlC9evOi4Pez6Zffu3eu4fXx8PHNjAgAAAAAADOMHQZx0aWlJH3zwgV6+fBnE6aeCaZoqFotyXVf1el2WZV05dbNUKun4+Fi1Wu3K8brvO2qnVfvOlbMyJgAAAAAAwDACCcIk6Re/+IVevnypUCgkSWq1Wrd2rlAodKvjjyqdTnfcdl1XpVJJ+/v7l6Zx2ratRCKharXac6xxrX/Wft5ZGRMAAAAAAGAYgQVh8Xhc0kUAZpqmTNMceprcdbiuK8dxpm6h/F4Mw1A2m1U2m1WlUtHOzk5H4GNZlgqFgrLZ7KX7jhoMdf/MT09PZ25MAAAAAACAYQQWhD148ECGYSiRSOjo6OjWz1cqlfTo0aNbP8+4JJNJxeNxbW5udiwMv7+/3zMIG5fb6LSahTEbjYbW1tZuPM7u7q52d3fHUBEAAAAAANPl4OBABwcHNx6n0WiMoZrRBBaESRddYYlEYiLnSqfT+uSTTyZyrnExDEO1Wk2xWMwPw1zXlWVZfkdd+7HjCIfaO69mZcxxOD8/18nJyY3HaTabY6gGAAAAAIDp02w2x3LtHKRAg7BJhWCejY2NiZ5vXA4PDxWLxfzb1Wr1UhC2vLw8loBpeXl55sYch4WFBa2srNx4nMXFxTFUAwAAAADA9FlcXNTq6uqNx2k0Gjo/Px9DRdcXaBC2s7Ojd+/eTex833777cTONU7RaFTxeFyWZUnqveD8qB1S3aFUd/fWLIw5DisrK3rz5s1YxwQAAAAA4C4Z13JAa2trgXWWLQRy1jZLS0tBlzATBnXPdXe7Ddt11b3ofCQSmbkxAQAAAAAAhhF4EIbhmKbpf95rWmD71Empd9dYL/V6veN2+5TLWRkTAAAAAABgGDMThD1//lx7e3t68uTJwGO//vpr3b9/X7/73e8mUNlktAdhvaYFdndaDRswtXdkGYbRcZ5ZGRMAAAAAAGAYMxGEbW9vK5FIqFAoKJPJ6Msvv+x7/IcffqijoyP98pe/1I9+9CP9y7/8y4QqvT3Hx8f+572mSUaj0Y6A7MWLF9cetzukmpUxAQAAAAAAhjH1QdijR49ULpfVarXUarUkDbfofTQaleM4+ud//mfFYjH9r//1v2671FvVPjXwqmmBW1tb/ue2bQ81bvtxuVxuZscEAAAAAAAYZKqDsHfv3qlYLCoUCikUCkmSWq2WUqnUUPc3DEO1Wk2np6czH4ZVKhVJUjabvfKYTCbjf+7tMNlP+zGmafYM2GZlTAAAAAAAgEGmOgjb39+XdBF+LS0tKZ1Oq16v66OPPhp6DNM0tbOzo/Pz86EDtGENu+PhTVUqFTmOI8MwtLe3d+Vx0Wi0IyTywrOrlMtl//OruqxmZUwAAAAAAIBBpjoIsyxL4XBY1WpVp6en+uqrr7S+vn7tcX76059Kuphe+Nvf/nZs9XUv9D5sMOY9rlAopEQi0Xd6oOM42tnZkSQ9e/as50L57YrFov+5FyT24rquSqWSpIuplul0eubHBAAAAAAA6GeqgzDHcbS3t6fNzc0bjdO+w+DTp09vWpaki4Cmuzvp6OhoqPuWy2U/NLMsS7FYrGO6oMf73vLysur1uqLR6MCxTdP0O6hs21ahUOh5nPczNQyjo+NqlscEAAAAAADoZ6qDMNd1O0KsUZ2enkq6mGLZvvvgKPWkUiklEgmFw+FLHWG2bftdXqlU6spOr15TNEulksLhsFKplDKZjGKxmBKJhNLptGq12rV+DslkUtVqVYZhKJfL+bW4ruuHa7ZtKxqN6tWrVwO7zGZpTAAAAAAAgKv8IOgC+jFN0w+xbqJarfqf32Rdr3F1JcXjcdXrdeXzeVmWpdPTU78uL/jZ29tTPB4fOfyJx+M6OztToVDQ0dGRNjc35bquDMPQxsaGyuWyksnknRwTAAAAAACgl1Cr1WoFXcRVtra29O7dO/3TP/3TjcZZXl7Wu3fv1Gq1FA6H9fbt2zFViFm3tramk5MTra6u6s2bN0GXAwDAVPvjbx4HXcLU+/GvHgddAgAAUy/Ia/GpnhqZTqdlWZb+8Ic/jDzG9va2320VCoW0sbExpuoAAAAAAAAwS6Y6CIvH4/rggw8Uj8evHYY1m01tb2+rXC4rFArJa3zrtT4XAAAAAAAA7r6pXiNMkg4PD7WxsaF4PK5EIqFcLqd//+///ZXHN5tN5XI5lUqljq+HQiGZpqmPPvrotkvGDGo0GlpbW+t7zO7urnZ3dydUEQAAAAAAs+fg4EAHBwd9j2k0GhOq5rKpD8Ki0aiePn2qra0tVatVf5dB0zT9D0lyHEe2bfs7OXodYF43WCgUGstC97ibzs/PdXJy0veYZrM5oWoAAAAAAJhNzWZz4PV1kKY+CJOkZDKp4+NjbW5u6t27d3JdV7Zty7btjuPa1/0PhUL+1wzD0LNnz/TBBx9MsmzMkIWFBa2srPQ9ZnFxcULVAAAAAAAwmxYXF7W6utr3mEajofPz8wlV1GkmgjDpojPs9evX+uyzz/TrX//60vdDoVBH+OWFYul0Wvl8XktLSxOtF7NlZWWFXSMBAAAAALihYZYV8naNDMLMBGGStLS0pHw+r3w+r2fPnqlarcq2bZ2enspxHC0vL8swDG1sbCiRSCgejxOAAQAAAAAAQNKMBWHtNjc3tbm5GXQZAAAAAAAAmBELQRcwSa9fvw66BAAAAAAAAARkroKwVCoVdAkAAAAAAAAIyFwFYY7jBF0CAAAAAAAAAjIXQViz2dTf/d3fyXXdoEsBAAAAAABAQAJbLP/Vq1fa2tqS4zjKZDL67LPPLh2zsbGhV69e3eg8XvjVarUUCoVuNBYAAAAAAABmV2BBWCqVkm3bkqR8Pq+NjQ39/Oc/7zgmFov5xwAAAAAAAAA3EdjUSNu2Ozq0eq3f9Xd/93eSpFAo1PExrFHuAwAAAAAAgLspsI6wnZ0dHR4e+reTyeSlYx48eCDDMPTu3Tu1Wi0ZhqHl5WUZhjHUOVzX1enpKWuDAQAAAAAAILggrFgsKpFI6Pj4WJlMRu+//37P43Z2dvTFF1/Itm198MEHI58vl8vpiy++GPn+AAAAAAAAmG2B7hqZTCb1+eefa319/cpjfvGLX8g0zRuFYNLFOmRLS0s3GgMAAAAAAACzK9AgbBgPHjwYW4BlmuZYxgEAAAAAAMDsmfogTJKePXt2o/s3m01J6liTDAAAAAAAAPMlsDXChvX8+XNtbGzcaIxsNivXdfUP//APY6oKd02j0dDa2lrfY3Z3d7W7uzuhigAAAAAAmD0HBwc6ODjoe0yj0ZhQNZdNfRCWSCRULBb10UcfjTzGV199pY2NDf3t3/6tfv/734+xOtwV5+fnOjk56XuM11kIAAAAAAB6azabA6+vgzT1QVir1RrLOOl0Wo8ePdJvf/tb/fKXvxzLmLg7FhYWtLKy0veYxcXFCVUDAAAAAMBsWlxc1Orqat9jGo2Gzs/PJ1RRp6kPwsYlFAqp1WqpWCwShOGSlZUVvXnzJugyAAAAAACYacMsK7S2thZY19hMLJYfCoVudP/nz58rl8tJkmq12jhKAgAAAAAAwIyZmo6wr7/+Wp9//nnP72WzWX311VfXHtN1XTmOI+nPUywNwxi5RgAAAAAAAMyuqQnCPvzwQ7VaLW1tbfkdYF54dXZ2duNOLm/MeDx+s0IBAAAAAAAwk6ZqamQymdT333+v999/X61Wyw+vQqHQjT6ki1BtfX1dh4eHQT5EAAAAAAAABGRqOsI8pmmqXq8rkUjo2bNn/iL3o05pNE1Tpmlqe3tbH3744XiLBQAAAAAAwMyYuiDMU61WlUql9M0336hUKumjjz4KuiQAAAAAAADMsKmaGtmtXC5rfX096DIAAAAAAABwB0xtR5inVqvp7Ows6DIAAAAAAAAw46a6I6zZbOqTTz5RJpPRl19+GXQ5AAAAAAAAmGFT3RGWTCb17NkztVotWZal9fV1/fznPw+6LAAAAAAAAMygqe4Isyyr4/aoO0cCAAAAAAAAUx2EmaYpSQqFQkomk/rJT34ScEUAAAAAAACYVVMdhKXTabVaLUnS0dHRjcd79OjRjccAAAAAAADAbJrqICybzWpzc1OS9C//8i83Hq97qiUAAAAAAADmx1Qvli9J1WpVqVRKyWRSz58/11/8xV+MNM6rV6/kOM6Yq8Nd0Wg0tLa21veY3d1d7e7uTqgiAAAAAABmz8HBgQ4ODvoe02g0JlTNZVMfhEnSb3/7Wx0dHSkajeqTTz5RKpXS4uLiwPs1m01J0vHxsbLZ7G2XiRl2fn6uk5OTvsd4v08AAAAAAKC3ZrM58Po6SFMdhP3whz/Uq1ev/NutVkvpdFrpdPraY7VaLYVCoXGWhztkYWFBKysrfY8ZJnwFAAAAAGCeLS4uanV1te8xjUZD5+fnE6qo01QHYel0Wp988ol/OxQK+YvnA+O0srKiN2/eBF0GAAAAAAAzbZhlhdbW1gLrGpvqxfIzmYykiwDsJiEYnWAAAAAAAACY6o6wpaUlffjhh/r6668lSfF4XIZhXHscx3Fk2/aYqwMAAAAAAMAsmeogTLroCvvmm29Uq9X0wQcfjDxOqVTSo0ePxlcYAAAAAAAAZspUT42ULrrAlpaWbhSCSRfrjbG+GAAAAAAAwPya+iBMkvb29tRsNm88zii7TQIAAAAAAOBumPqpkZL08ccf3+j+79690+eff66vvvpqTBUBAAAAAABg1sxER9hNLS0tqVqt6kc/+lHQpQAAAAAAACAgcxGESdLGxoZqtZo+/fTToEsBAAAAAABAAGZiamS7169fy3VdnZ6eDn0f27ZVLpfVarVULBb12Wef3WKFAAAAAAAAmEYzEYR98803KhaLsizrxmO5rnvzggAAAAAAADBzpj4I+/Wvf61PPvlEktRqtUYeJxQKKRQKKRqNjqs0AAAAAAAAzJCpXiPs5cuXyuVyknqHYKFQaKhxQqGQWq2W1tfXdXh4ONYaAQAAAAAAMBumuiOsWCxKutj1MZ1OKxKJyDRNSdLZ2Zm2trYUDof19OnTnvd3XVfffvutnjx5Itu29cEHH0yqdAAAAAAAAEyZqQ7CLMtSJBLRP//zP/f8/s7Ojp48eaJIJKL333+/5zEffvihJOmTTz7R73//+9sqFQAAAAAAAFNuqqdGOo7jd4X18sknn6jVaqlQKPQdJ5fL6dtvv9WXX3457hJxRzQaDa2trfX9ODg4CLpMAAAAAACm2sHBwcDr60ajEVh9U90RJkkbGxtXfm99fV2bm5sqFov6/PPPtbi42PM40zT14MEDZbNZ7ezsXHkc5tf5+blOTk76HtNsNidUDQAAAAAAs6nZbA68vg7SVHeERaNRnZ6e9j0ml8up1Wr5O0te5eHDh2q1Wvr888/HWSLuiIWFBa2urvb9IEAFAAAAAKC/xcXFgdfXCwvBxVGhVq/tGKfE1taWfvjDH+qzzz7re1wsFtN3330n27b113/91z2P2djYkG3bfdccw/xZW1vTycmJVldX9ebNm6DLAQBgqv3xN4+DLmHq/fhXj4MuAQCAqRfktfhUd4RtbW0pn8/ryy+/1OvXr/X8+XM9f/780nF7e3tqtVqKRqP63e9+d+n7v/71r2XbtqSLdcfGzXEcJRIJVSqVkcewbVuZTEaRSEShUEihUEiRSES5XE6u646v2B68+odVKBSUSCQUDof9OlOplCzLGrmG2xgTAAAAAACg3VQHYclkUouLi8pms4pEIkokEkokEvrRj3506bjNzU21Wi0lk0k9fPhQjx490qNHj3T//v2OaZOmaY6tPtd1lUqlFIlEZFnWwGmc/caIxWIqlUodQZ3jOCoUCgqHwyqVSiON7YVq/T4ikchQPxfLshQOh5XL5SRJ5XJZ9Xpd+Xxetm37z891grvbGBMAAAAAAKCXqV8s//DwUFtbWwqFQvJmcdZqNX333Xf64IMP/OOKxaJ++MMfSrrorvI6wNpnfoZCIUWj0RvX5Lqu9vf3B+5WOcw4sVhsqC61TCajWq3WdxfNbtcJz7wg6iqWZfldY+l0uqMO0zSVTCYVi8VkWZZisZhqtZoMw5j4mAAAAAAAAFeZ6o4w6aLb6+nTpx2BlmEYHSGYdBGcfPvtt+pe8szrevLud3h4eKN6CoWCYrGYH7TdRCqVkuM4ikajfidUvV5XuVxWNpu9dHypVLrW9Mv9/f2hjovH4307wryuNeni53xVGFculyVddLJ5x09yTAAAAAAAgH6mPgiTLsKws7MzFYtF5fP5Kzuo4vG4vv/+e/3kJz9Rq9Xq+IhGozo+Pr7Rzn+2bSsej6ter6tarV6rO6tbqVSSZVnKZrOq1WpKJpMyTdPvhMrn86rX65c62HZ2doYe33VdZbNZVavVvh9e2HSVVCrlT03s1znm1S5ddHv160i7jTEBAAAAAAD6mepdI2/i3bt3Oj4+lnQRpqyvr4/9HLZtKxaL+beLxaLS6fRQ9/XW5apWq32PcxxHkUik42vValXxeHzg+JJUr9eHqmfY85+dnfWdnlipVPzOLcMwdHZ2NpExR8WukQAADI9dIwdj10gAAAZj18hbsLS0pM3NTW1ubt5KCCZp5PWqbNuW4zgDO7GkixAvn89fun8/lUpFjuMMXPdrGO3njsfjAx+z170lXUx/7DWV8zbGBAAAAAAAGGTqgrAvvvhC29vbun//vu7du6eHDx/q7//+7/X69eugSxubo6MjpdPpoYO07u6vt2/f9j1+f39fhmFoa2tr1BJ97VMRh91ooH29saOjo4mMCQAAAAAAMMjU7Br5zTffaGdnx183qn2HSNu2VSwWlUql9A//8A8BVjke29vbfRen79YdFnVPlWzXvmNmOByWaZqKx+NKJBIdnVXD6O48e/jw4dD1euu4dXdv3caYAAAAAAAAw5iKjrBnz575C+J7i9u37/bofa1cLuvf/bt/p2azGXDFNxONRq81rdILBz39QrTu6ZCO46hUKimVSikUCimVSg2946VlWUOft99x7ee7jTEBAAAAAACGEXgQ9u7dOyUSCT/4ag/AJHV8rdVq6fvvvx/LlL9Z0r1L5lUL5TuOcylo6lapVBSLxZTJZAae98WLFx23hw3v7t2713Hb27TgtsYEAAAAAAAYRuBB2P7+fsdtr/traWlJS0tL/m2vS0y62DXxd7/7XRDlBqI99Om3K6VpmioWi8rn80qn0327rUqlUseOl710B3Cjdm+171x5G2MCAAAAAAAMI/AgrFQq+d1e6+vrKpfLOjs70+npqU5PT3V+fq5araaPP/7YD8NarZY+++yzoEufmGKx6H8+aCfIdDqtbDarYrGoer2us7Mz5fP5np1Xtm0rkUhcOVZ3aDWq9qmdtzEmAAAAAADAMAINwp49e+YHGolEQt9//70+/PBDLS0tdRz34MED5fN5HR8f+9+zbftO7SR5Fcdx/PWw8vn8tRbZly6mHmazWZ2dnalcLl8KxCzLUqFQ6HnfUcOm7nOcnp7e6pgAAAAAAADDCHTXyGq1Kuki5Pinf/qngcdHo1E9ffpUP/3pTyVdhDgfffTRrdYYtHw+L+liamA2m73RWMlkUvF4XJubmx2Lze/v79947H5uo3tr3GM2Gg2tra3deJzd3V3t7u6OoSIAAAAAAKbLwcGBDg4ObjxOo9EYQzWjCTQIs21boVBIe3t7Q98nHo/rwYMH+u677+78OlG2batUKskwDD80vCnDMFSr1RSLxfwwzHVdWZZ1aRF+wzDGEji1d3PdxpjjcH5+rpOTkxuPM+s7mgIAAAAAcJVmszmWa+cgBRqEeetF9VsAvpe/+7u/UyaTGdt6U9NqZ2dH0sUU0utOiRzk8PCwY7H8arV6KQhbXl4eS2i1vLx8q2OOw8LCglZWVm48zuLi4hiqAQAAAABg+iwuLmp1dfXG4zQaDZ2fn4+housLNAg7PT2VYRjXDg+8UOi6gUqz2ZyZoCKTyci2bZXLZUWj0bGPH41GFY/HZVmWpN6L2I/addX9vHR3hI17zHFYWVnRmzdvxjomAAAAAAB3ybiWA1pbWwussyzQxfJd1x2p08m7z3UXTF9fX7/2uYJQKpVUKpVULBaVTCZv7Tz9doyUpI2NjY7bwwaP3c9LJBK51TEBAAAAAACGEWgQJo02xW3UQOvs7Gyk+02SZVnKZDIqFovXnjJ6Xe0hZK/noX3qpNS7a6yX7rXb2qdc3saYAAAAAAAAwwg8CLvJFLfrhGjPnj1TKBQa+VyTYNu2EomE8vn8rYdgUmcQ1ut56O7eGja0au/yMgyj4zy3MSYAAAAAAMAwAg/CvJ0Lr+Pdu3eShg/Rnj9/rkwmc+3zTJLjONrc3FQ2m1U2m53IOY+Pj/3Pe02TjEajHT/jFy9eXHvc7uDrNsYEAAAAAAAYRqCL5UsXAdB77703UmdYpVLRvXv3rvx+exdRq9Wa2o4wx3EUi8WUTqeVz+eHvk+lUrlRaNY+3fCqqYZbW1sqlUqShg8t24/L5XITGRMAAAAAAGCQwIMw6SKkGmX9rlHvN01c11UikdDW1tbQIZgkpVIpHR4e3ujclUpFkvqGaZlMxg+tvB0m+2k/xjTNngHbbYwJAAAAAAAwSOBTIyUpFArd+sdtGHbHw373j8ViMk1TuVxOjuMM/LAsy19wPhqNjnzuSqUix3FkGIb29vauPC4ajXYET154dpVyuex/flXn1m2MCQAAAAAAMMhUdIRJF91dt+W2grDuhd6vG4xtbm76AVckErnWfYvFYsdty7KUSqXkuq7i8bjy+fyVQZnjONrZ2ZF0sYnAoGmpxWLRr29/f1/JZLLnca7r+p1e8Xi874L/tzEmAAAAAABAP1MRhK2vrysajV5rF8hhnZ6eyrKsG3dvdXNd91J30tHR0dBrdsVisZE2CvB0B0Llctl/jF7XWDqdvjIwW15eVq1WG2r3RdM0VS6XlUqlZNu2CoVCz8e5ubkp6WITg/YurkmNCQAAAAAA0E+odZutWAMsLCwolUrp6Ojo1s+VyWT05MkT/elPfxp5DNd1tbOzI9d1+65tFY/H/SmHvbqyUqnUwOmA/VwVcPXa+dEwDMXjcS0vL+v4+Fi2bSubzWpvb+/aGxS0d50lk0nt7e3JNE0dHx8rl8vJtm1Fo9Ghusxuc8zrWFtb08nJiVZXV/XmzZuxjw8AwF3yx988DrqEqffjXz0OugQAAKZekNfigQZh7733nur1ut5///1bP5frurp3796NgrBp5ziO8vm8LMvS6empXNeVYRhaXl5WNBrV9va2H9LdRKFQ0NHRkRzH8c+xsbGhTCZz5RTHIMYcBkEYAADDIwgbjCAMAIDB5jYIW1hY0Pn5+cTOt7y8rNPT04mdD9OPIAwAgOERhA1GEAYAwGBBXosHumtktVqd6PlYYwoAAAAAAGB+BRqEeQuh39XzAQAAAAAAYHpMxa6RQNAajYbW1tb6HrO7u6vd3d0JVQQAAAAAwOw5ODjQwcFB32MajcaEqrmMIAyQdH5+rpOTk77HNJvNCVUDAAAAAMBsajabA6+vg0QQBuhi44aVlZW+xywuLk6oGgAAAAAAZtPi4qJWV1f7HtNoNCa6eWI7gjBA0srKCrtGAgAAAABwQ8MsK+TtGhmEQBfLBwAAAAAAACaFIAwAAAAAAABzgSAMAAAAAAAAc4EgDAAAAAAAAHOBIAwAAAAAAABzgSAMAAAAAAAAc4EgDAAAAAAAAHOBIAwAAAAAAABzgSAMAAAAAAAAc4EgDAAAAAAAAHOBIAwAAAAAAABzgSAMAAAAAAAAc4EgDAAAAAAAAHOBIAwAAAAAAABz4QdBFwBMg0ajobW1tb7H7O7uand3d0IVAQAAAAAwew4ODnRwcND3mEajMaFqLiMIAySdn5/r5OSk7zHNZnNC1QAAAAAAMJuazebA6+sgEYQBkhYWFrSystL3mMXFxQlVAwAAAADAbFpcXNTq6mrfYxqNhs7PzydUUSeCMEDSysqK3rx5E3QZAAAAAADMtGGWFVpbWwusa4zF8gEAAAAAADAXCMIAAAAAAAAwFwjCAAAAAAAAMBcIwgAAAAAAADAXCMIAAAAAAAAwFwjCAAAAAAAAMBcIwgAAAAAAADAXCMIAAAAAAAAwFwjCAAAAAAAAMBcIwgAAAAAAADAXfhB0AQAAALhl//g46AoAAACmAkEYAADAHfdHJ+gK5sdja0zjxMczDgAA6MTUSAAAAAAAAMwFgjAAAAAAAADMBaZGApIajYbW1tb6HrO7u6vd3d0JVQQAAAAAwOw5ODjQwcFB32MajcaEqrmMIAyQdH5+rpOTk77HNJvNCVUDAABm1Y//f4/HM1B8TOMAADBhzWZz4PV1kAjCAEkLCwtaWVnpe8zi4uKEqgEAAAAAYDYtLi5qdXW17zGNRkPn5+cTqqgTQRggaWVlRW/evAm6DAAAAAAAZtowywqtra0F1jXGYvkAAAAAAACYCwRhAAAAAAAAmAsEYQAAAAAAAJgLBGEAAAAAAACYCwRhAAAAAAAAmAsEYQAAAAAAAJgLBGEAAAAAAACYCwRhAAAAAAAAmAsEYQAAAAAAAJgLBGEAAAAAAACYCwRhAAAAAAAAmAsEYQAAAAAAAJgLBGEAAAAAAACYCwRhAAAAAAAAmAs/CLoAYBo0Gg2tra31PWZ3d1e7u7sTqggAAAAAgNlzcHCgg4ODvsc0Go0JVXMZQRgg6fz8XCcnJ32PaTabE6oGAAAAAIDZ1Gw2B15fB4kgDJC0sLCglZWVvscsLi5OqBoAAAAAAGbT4uKiVldX+x7TaDR0fn4+oYo6EYQBklZWVvTmzZugywAAAAAAYKYNs6zQ2tpaYF1jLJY/Bo7jKJFIqFKp3GicQqGgRCKhcDisUCikSCSiVColy7IYEwAAAAAA4IYIwm7AdV2lUilFIhFZlqXT09ORxrEsS+FwWLlcTpJULpdVr9eVz+dl27YSiYQSiYRc12VMAAAAAACAETE1cgSu62p/f1+FQuHGY1mWpUQiIUlKp9MqFov+90zTVDKZVCwWk2VZisViqtVqMgyDMQEAAAAAAK6JjrBrKhQKisVism37xmN5HWXSRfDTHgS1K5fLki6mYHrHMyYAAAAAAMD1EIRdg23bisfjqtfrqlarV4Y3w0qlUv6UP29qYC9ed5R00UVVKpUYEwAAAAAA4JoIwq4hGo0qGo36tzc2NkYey3GcjoXgt7a2+h6/vb3tf35VcDTPYwIAAAAAAAxCEHYDN1mvKp/P+5/H4/GBY3ldUdLFtMJeO1TO85gAAAAAAACDEIQFpH2KX3uXWT+mafqfHx0dMSYAAAAAAMA1EIQFoHuh/YcPHw51v/bQqLsrap7HBAAAAAAAGAZBWADa18eSOrud+uk+rj1UmucxAQAAAAAAhkEQFoAXL1503B52rbF79+513D4+PmZMAAAAAACAIRGEBcBxnI7bo3ZF1et1xgQAAAAAABgSQVgAusOgUbmuy5gAAAAAAABDIggLwKghTvc0wtPTU8YEAAAAAAAY0g+CLgCju42uqHkds9FoaG1t7cbj7O7uand3dwwVAQAAAAAwXQ4ODnRwcHDjcRqNxhiqGQ1BWAAMwxhLkNPeJTXPY47D+fm5Tk5ObjxOs9kcQzUAAAAAAEyfZrM5lmvnIBGEBWB5eXksYdDy8jJjjsnCwoJWVlZuPM7i4uIYqgEAAAAAYPosLi5qdXX1xuM0Gg2dn5+PoaLrIwgLwKjdTN0BUnen1byOOQ4rKyt68+bNWMcEAAAAAOAuGddyQGtra4F1lrFYfgA2NjY6bg/bIdW9QHwkEmFMAAAAAACAIRGEBSAWi3XcdhxnqPvV6/WO2/F4nDEBAAAAAACGRBAWgO6uqGHDoPbuKcMwZJomYwIAAAAAAAyJICwA0Wi0Y42rFy9eDHW/4+Nj//PuQGmexwQAAAAAABgGQVhAtra2/M9t2x7qPu3H5XI5xgQAAAAAALgGgrCAZDIZ/3PLsgYe336MaZo918ia5zEBAAAAAAAGIQi7gWF3POwlGo12BDqVSqXv8eVy2f/8qo6oeR4TAAAAAABgEIKwG+he6P26wVixWPQ/39/fv/I413VVKpUkXeyWmE6nGRMAAAAAAOCaCMJG5Lrupe6ko6Oja41hmqbf7WTbtgqFQs/jNjc3JV3sltjeHcWYAAAAAAAAwyMIuwbXdZVKpZRIJBQOhy91hNm2rVAopEQioVQqNdRC8MlkUtVqVYZhKJfL+fdzXVeWZSkWi8m2bUWjUb169apjx0XGBAAAAAAAGF6o1Wq1gi4CFwqFgo6OjuQ4jlzXlWEY2tjYUCaTUTKZZMxbsLa2ppOTE62ururNmze3dh4AAIL0x988DroEXNOPf/U46BIAALg1QV6LE4RhrhGEAQDmAUHY7CEIAwDcZUFeizM1EgAAAAAAAHOBIAwAAAAAAABz4QdBFwBMg0ajobW1tb7H7O7uand3d0IVAQAAAAAwew4ODnRwcND3mEajMaFqLiMIAySdn5/r5OSk7zHNZnNC1QAAAAAAMJuazebA6+sgEYQBkhYWFrSystL3mMXFxQlVAwAAAADAbFpcXNTq6mrfYxqNhs7PzydUUSeCMEDSysoKu0YCAAAAAHBDwywr5O0aGQQWywcAAAAAAMBcIAgDAAAAAADAXCAIAwAAAAAAwFwgCAMAAAAAAMBcIAgDAAAAAADAXCAIAwAAAAAAwFwgCAMAAAAAAMBcIAgDAAAAAADAXCAIAwAAAAAAwFwgCAMAAAAAAMBcIAgDAAAAAADAXCAIAwAAAAAAwFwgCAMAAAAAAMBcIAgDAAAAAADAXPhB0AUA06DRaGhtba3vMbu7u9rd3Z1QRQAAAAAAzJ6DgwMdHBz0PabRaEyomssIwgBJ5+fnOjk56XtMs9mcUDUAAAAAAMymZrM58Po6SARhgKSFhQWtrKz0PWZxcXFC1QAAAAAAMJsWFxe1urra95hGo6Hz8/MJVdSJIAyQtLKyojdv3gRdBgAAAAAAM22YZYXW1tYC6xpjsXwAAAAAAADMBYIwAAAAAAAAzAWCMAAAAAAAAMwFgjAAAAAAAADMBYIwAAAAAAAAzAWCMAAAAAAAAMwFgjAAAAAAAADMBYIwAAAAAAAAzAWCMAAAAAAAAMwFgjAAAAAAAADMBYIwAAAAAAAAzAWCMAAAAAAAAMwFgjAAAAAAAADMBYIwAAAAAAAAzIUfBF0AMA0ajYbW1tb6HrO7u6vd3d0JVQQAAAAAwOw5ODjQwcFB32MajcaEqrmMIAyQdH5+rpOTk77HNJvNCVUDAAAAAMBsajabA6+vg0QQBkhaWFjQyspK32MWFxcnVA0AAAAAALNpcXFRq6urfY9pNBo6Pz+fUEWdCMIASSsrK3rz5k3QZQAAAAAAMNOGWVZobW0tsK4xFssHAAAAAADAXCAIAwAAAAAAwFwgCAMAAAAAAMBcIAgDAAAAAADAXCAIAwAAAAAAwFwgCAMAAAAAAMBcIAgDAAAAAADAXCAIAwAAAAAAwFwgCAMAAAAAAMBcIAgDAAAAAADAXCAIAwAAAAAAwFwgCAMAAAAAAMBcIAgDAAAAAADAXCAIAwAAAAAAwFz4QdAFANOg0WhobW2t7zG7u7va3d2dUEUAAAAAAMyeg4MDHRwc9D2m0WhMqJrLCMIASefn5zo5Oel7TLPZnFA1AAAAAADMpmazOfD6OkgEYYCkhYUFrays9D1mcXFxQtUAAAAAADCbFhcXtbq62veYRqOh8/PzCVXUiSAMkLSysqI3b94EXQYAAAAAADNtmGWF1tbWAusaY7F8XOI4jhKJxNDHFwoFJRIJhcNhhUIhRSIRpVIpWZY1cg23MSYAAAAAAJhvBGFTxAt9RvnIZDIDx3ddd6ixIpGITNMcOJ5lWQqHw8rlcpKkcrmser2ufD4v27aVSCSUSCTkuu7QP4PbGBMAAAAAAEBiauTUqFQqNwp3hungKpVKQ4/nBVFXsSzLP2c6nVaxWPS/Z5qmksmkYrGYLMtSLBZTrVaTYRgTHxMAAAAAAMBDR9iUaA99RpFMJgces7+/P9RY8Xi8b0eY67pKpVKSLgKqq2ovl8uSLqZaesdPckwAAAAAAIB2dIRNAcdxZFmWTNNULpdTPB7X8vLywPvFYjE5jqN4PD7w2FKpJNd1lc1mB3aPbWxs9P1+KpXyu9f6dY55XVyVSkWWZalUKimdTk9sTAAAAAAAgHahVqvVCrqIeZfL5VSpVK411c9xHEUiEUkX3WSDwiDv2Hq9fqNa288rSWdnZ31rrlQqfueWYRg6OzubyJjD8naqWF1dZddIAMCd9cffPA66BFzTj3/1OOgSAAC4NUFeizM1cgqUSiWVy+VrrXdVqVT8z7e2tgYe6zjOwHW/hpHP5/3P4/H4wJrbp2y6rttR922OCQAAAAAA0I0gbAqUy2VFo9Fr3efo6EjScMHR/v6+DMMYGJgNo33B/WFrbl9vzKv7tscEAAAAAADoRhA2BYZZ46ud67qybVuSBi4Yb9u2bNuW67oKh8OKRCLKZDIjdVF55/Q8fPhwqPu1h1vd572NMQEAAAAAAHohCJtB7R1Ug7q8uqdDOo6jUqmkVCqlUCikVCp1KYy6imVZHbf77SzZ77j2893GmAAAAAAAAL0QhM0gbypgNBrtOy3S242yn0qlolgspkwmM/C8L1686Lg97Jpm9+7d67h9fHx8q2MCAAAAAAD08oOgC8D1tE+L3N7e7nusaZoqFotyXVf1el2WZclxnJ7HlkolHR8fq1arXTle931H7d5q37nyNsYEAAAAAADohSBsxjx9+tT/vH33xKuk0+mO267rqlQqaX9/X67rdnzPtm0lEglVq9WeY10Vol1X+3lvY0wAAAAAAIBemBo5Y4rFoqSLaZHDdk+1MwxD2WxWZ2dnKpfLl6YiWpalQqHQ876jhk3d5zg9Pb3VMQEAAAAAAHqhI2yGXGda5DCSyaTi8bg2Nzc7Fpvf399XNpu98fhXuY3urZuO2Wg0tLa2duM6dnd3tbu7e+NxAAAAAACYNgcHBzo4OLjxOI1GYwzVjIYgbIZcd1rkMAzDUK1WUywW88Mw13VlWZbi8filY8cRYrV3c93GmKM4Pz/XycnJjetoNps3HgMAAAAAgGnUbDbHcu0cJIKwGeJNizRNc6Rpkf0cHh4qFov5t6vV6qUgbHl5eSyh1fLy8q2OOYqFhQWtrKzcuI7FxcUbjwEAAAAAwDRaXFzU6urqjcdpNBo6Pz8fQ0XXRxA2I9qnRY6rG6xdNBpVPB6XZVmSei9iP2rXVXfQ1d0RNu4xR7GysqI3b97caAwAAAAAAO6ycS0HtLa2FlhnGYvlz4j2aZHjWB+sl0Qi0ff7GxsbHbeH7eTqXsg+Eonc6pgAAAAAAAC9EITNiHK5LOmi8ykajd7KOdqnW/aaatg+dVLq3TXWS71e77jdPuXyNsYEAAAAAADohSBsBniL10tSOp2+tfO0B2G9php2d28NG1q1d3kZhtFxntsYEwAAAAAAoBeCsBkwiWmRknR8fOx/3muaZDQa7QjIXrx4ce1xu4Ov2xgTAAAAAACgFxbLnwGTmBYpdU43vGqq4dbWlkqlkiT5i/cP0n5cLpebyJgAAAAz7R8fj2ec/zCmcQAAuCMIwqZc+7TIra2tWz1XpVKRJGWz2SuPyWQyfmjl1dVP+zGmafYM2G5jTAAA7oLHg/9ZHMqPxzMMAADAzGNq5JRrnxaZSqVu7TyVSkWO48gwDO3t7V15XDQa7QievPDsKl43m3R159ZtjAkAAAAAANCNIGzKtU+LvE7nk2VZCofDCoVCSiQSfaccOo6jnZ0dSdKzZ896LpTfrlgs+p/v7+9feZzrun6nVzwe77vQ/22MCQAAAAAA0I4gbIq1T4u87vS/crns76xoWZZisZgymcyl47zvLS8vq16vD7UGmWmafkBn27YKhULP4zY3NyVdhHjtXVyTGhMAAAAAAKAdQdgUa58W2SvE6qfXNMpSqaRwOKxUKqVMJqNYLKZEIqF0Oq1arSbTNIceP5lMqlqtyjAM5XI5pVIp2bbth3exWEy2bSsajerVq1cDu8xua0wAAIBZ9EdnPB8AAKATQdgUa+94um5HWDweV71eVzqdlmmaHaGRbds6PT3V3t6ezs7OlM/nRwqV4vG4f3/Hcf7/7d0/b2PZeifqV3LbPjB8OKR6EkFKDhld3IysDpz1oMhwMrH6E5QUHkCBhM4qK0gBgRPcQKwvcOuQkScUG9OZgyoxO6HYiQQm0yUOfWyPbZi8QV3Rov5QlERxk9rPAwggpcW1X1b34tb+aa214/Xr16OgbW1tLRqNRpycnDyo7+foEwAAACAiYmU4HA6TLgKSsrm5Gefn57GxsRFnZ2dJlwMAY2Z218g/vZtNRyyd73//LukSAOCGJK/Fv5nr0QAAmJoACwBgtgRhEBHdbjc2Nzcnttnd3Y3d3d05VQQAAADLp1arRa1Wm9im2+3OqZqbBGEQEYPBIM7Pzye26ff7c6oGAAAAllO/37/3+jpJgjCIiNXV1VhfX5/YJpPJzKkaAAAAWE6ZTCY2NjYmtul2uzEYDOZU0ThBGETE+vq6zfIBAADgiabZVuhys/wkrCZyVAAAAACYM0EYAAAAAKkgCAMAAAAgFQRhAAAAAKSCIAwAAACAVBCEAQAAAJAKgjAAAAAAUkEQBgAAAEAqCMIAAAAASAVBGAAAAACpIAgDAAAAIBUEYQAAAACkgiAMAAAAgFQQhAEAAACQCt8kXQAsgm63G5ubmxPb7O7uxu7u7pwqAgAAgOVTq9WiVqtNbNPtdudUzU2CMIiIwWAQ5+fnE9v0+/05VQMAAADLqd/v33t9nSRBGETE6upqrK+vT2yTyWTmVA0AAAAsp0wmExsbGxPbdLvdGAwGc6ponCAMImJ9fT3Ozs6SLgMAAACW2jTbCm1ubiY2a8xm+QAAAACkgiAMAAAAgFQQhAEAAACQCoIwAAAAAFJBEAYAAABAKgjCAAAAAEgFQRgAAAAAqSAIAwAAACAVBGEAAAAApIIgDAAAAIBUEIQBAAAAkAqCMAAAAABSQRAGAAAAQCoIwgAAAABIhW+SLgAWQbfbjc3NzYltdnd3Y3d3d04VAQAAwPKp1WpRq9Umtul2u3Oq5iZBGETEYDCI8/PziW36/f6cqgEAAIDl1O/3772+TpIgDCJidXU11tfXJ7bJZDJzqgYAAACWUyaTiY2NjYltut1uDAaDOVU0ThAGEbG+vh5nZ2dJlwEAAABLbZpthTY3NxObNWazfAAAAABSQRAGAAAAQCoIwgAAAABIBUEYAAAAAKkgCAMAAAAgFQRhAAAAAKSCIAwAAACAVBCEAQAAAJAKgjAAAAAAUkEQBgAAAEAqCMIAAAAASAVBGAAAAACpIAgDAAAAIBUEYQAAAACkwjdJFwCLoNvtxubm5sQ2u7u7sbu7O6eKAAAAYPnUarWo1WoT23S73TlVc5MgDCJiMBjE+fn5xDb9fn9O1QAAAMBy6vf7915fJ0kQBhGxuroa6+vrE9tkMpk5VQMAAADLKZPJxMbGxsQ23W43BoPBnCoaJwiDiFhfX4+zs7OkywAAAIClNs22Qpubm4nNGrNZPgAAAACpIAhbYp1OJyqVytTtDw8Po1KpRC6Xi5WVlSgUClGtVqPVaj26hmXpEwAAAEAQtoB6vV6srKzc+1UoFCKfz9/bX6vVilwuF/v7+xER0Wg04vT0NA4ODqLdbkelUolKpRK9Xm/qGpelTwAAAIBL9ghbQPV6feq2l6HRXVqt1mjW2Pb2dhwdHY1+ls/nY2trK0qlUrRarSiVSnFychLZbPZF9AkAAABwlRlhC+j9+/dTtSuXyxNnhPV6vahWqxHxNUy6Gi5d1Wg0IuLrUsvL9sveJwAAAMB1grAFU6/Xo9frxd7eXhwfH0/8ugyG7lKtVkfLCCfNHLuccRXxdWbWpBlpy9InAAAAwHUrw+FwmHQR/KdCoRAREaenp0/qp9PpjPqKiLi4uJi4lLDZbI5mWWWz2bi4uFjaPh/i8patGxsbcXZ29qS+AGDWfv7Du6RLYMl9//t3SZcAADckeS1uRtgCaTab0el07t33axoHBwejx+Vy+d79tC5nWkV8XarYbDaXtk8AAACA2wjCFsj79+8jm83GmzdvntzX1WWDxWJxqtdc3W/s48ePS9snAAAAwG0EYQui3W5Hu92OXq8XuVwuCoVC7OzsPGrGU7vdHnv+3XffTfW6q0HU9eMuS58AAAAAdxGELYjryyE7nU7U6/WoVquxsrIS1Wr1RnB0l1arNfZ80p0lJ7W7erxl6RMAAADgLt8kXQBfQ6/rodB1zWYzms1mbG9vx9HR0cS2nz59Gnt+375bl7799tux558/fx7NvlqWPgEAuOJ/vJtNP/99Rv0AQMIEYQsgn8/H0dFR9Hq9OD09jVarFZ1O59a29Xo9Pn/+HCcnJ3f2d/21j51pdfXOlcvSJwAAAMBdBGELYnt7e+x5r9eLer0e79+/j16vN/azdrsdlUoljo+Pb+3rrhDtoa4ed1n6BAAAALiLIGxBZbPZ2Nvbi729vWg2m/H27duxwKfVasXh4WHs7e3deO1jg6HrSxO/fPmydH0+Vrfbjc3NzSf3s7u7G7u7u0/uB4Dl9vMf3iVdAgDAzNVqtajVak/up9vtzqCaxxGELYGtra0ol8vx+vXrsY3h379/f2sQNivPMdNqUfscDAZxfn7+5H76/f6T+wAAmJWfZzMBP76fTTcALLl+vz+Ta+ckCcKWRDabjZOTkyiVSqMwrNfrRavVinK5fKPtLMKhqzOvlqXPx1pdXY319fUn95PJZJ7cBwAAACyiTCYTGxsbT+6n2+3GYDCYQUUPJwhbMh8+fIhSqTR6fnx8fCMIW1tbm0nAtLa2tnR9Ptb6+nqcnZ09uR8AAAB4qWa1HdDm5mZiM8tWEzkqj1YsFseCr9s2nH/sDKnrodT12VvL0CcAAADAXQRhS6hSqUz8+atXr8aeTzvr6vqm84VCYen6BAAAALiLIGwJ5fP50ePblgVeXToZcfussducnp6OPb8682xZ+gQAAAC4iyBsCV0Nwm5bFnh9ptW0AdPVGVnZbHbsOMvSJwAAAMBdBGFL6PPnz6PHty2TLBaLYwHZp0+fHtzv9ZBqWfoEAAAAuIsgbAldXRp417LAN2/ejB632+2p+r3abn9/f2n7BAAAALiNIGwJNZvNiIjY29u7s83Ozs7ocavVurfPq23y+fytAduy9AkAAABwG0HYkmk2m9HpdCKbzcaPP/54Z7tisTgWEl2GZ3dpNBqjx3fNslqWPgEAAABuIwhLWKvVilwuFysrK1GpVCYuD+x0OvH27duIiPjpp59u3Sj/qqOjo9Hj9+/f39mu1+tFvV6PiK9LLbe3t5e+TwAAAIDrBGEJazQao7sgtlqtKJVKY8sFL13+bG1tLU5PT6NYLN7bdz6fH82garfbcXh4eGu7169fR8TXOzBenXG1zH0CAAAAXCcIS1i1Wr3xvXq9HrlcLqrVauzs7ESpVIpKpRLb29txcnIS+Xx+6v63trbi+Pg4stls7O/vR7VajXa7Hb1ebxSutdvtKBaL8csvv9w7y2yZ+gQAAAC4ShCWsHK5HKenp7G9vR35fH4s4Gm32/Hly5f48ccf4+LiIg4ODh4VAJXL5dHrO51OvH79ehS0ra2tRaPRiJOTkwf1vSx9AgAAAFxaGQ6Hw6SLgKRsbm7G+fl5bGxsxNnZWdLlAPBC/PyHd0mXADP1/e/fJV0CAC9IktfiZoQBAAAAkArfJF0ALIJutxubm5sT2+zu7sbu7u6cKgIAAIDlU6vVolarTWzT7XbnVM1NgjCIiMFgEOfn5xPb9Pv9OVUDAAAAy6nf7997fZ0kQRhExOrqaqyvr09sk8lk5lQNAAAALKdMJhMbGxsT23S73RgMBnOqaJwgDCJifX3dZvkAAADwRNNsK3S5WX4SbJYPAAAAQCoIwgAAAABIBUEYAAAAAKkgCAMAAAAgFQRhAAAAAKSCIAwAAACAVBCEAQAAAJAKgjAAAAAAUkEQBgAAAEAqCMIAAAAASAVBGAAAAACpIAgDAAAAIBUEYQAAAACkgiAMAAAAgFT4JukCYBF0u93Y3Nyc2GZ3dzd2d3fnVBEAAAAsn1qtFrVabWKbbrc7p2puEoRBRAwGgzg/P5/Ypt/vz6kaAAAAWE79fv/e6+skCcIgIlZXV2N9fX1im0wmM6dqAAAAYDllMpnY2NiY2Kbb7cZgMJhTReMEYRAR6+vrcXZ2lnQZAAAAsNSm2VZoc3MzsVljNssHAAAAIBUEYQAAAACkgiAMAAAAgFQQhAEAAACQCoIwAAAAAFJBEAYAAABAKnyTdAEAAMCC+x/vZtPPf59RPwDwSGaEAQAAAJAKZoQBAFya1awXeGF+7symn+9n0w0APJogDADg/zeri30AABaTpZEAAAAApIIgDAAAAIBUEIQBAAAAkAqCMAAAAABSwWb5EBHdbjc2Nzcnttnd3Y3d3d05VQQAAADLp1arRa1Wm9im2+3OqZqbBGEQEYPBIM7Pzye26ff7c6oGAAAAllO/37/3+jpJgjCIiNXV1VhfX5/YJpPJzKkaAAAAWE6ZTCY2NjYmtul2uzEYDOZU0ThBGETE+vp6nJ2dJV0GAAAALLVpthXa3NxMbNaYzfIBAAAASAVBGAAAAACpIAgDAAAAIBUEYQAAAACkgiAMAAAAgFQQhAEAAACQCoIwAAAAAFJBEAYAAABAKgjCAAAAAEgFQRgAAAAAqSAIAwAAACAVBGEAAAAApIIgDAAAAIBUEIQBAAAAkArfJF0ALIJutxubm5sT2+zu7sbu7u6cKgIAAIDlU6vVolarTWzT7XbnVM1NgjCIiMFgEOfn5xPb9Pv9OVUDAAAAy6nf7997fZ0kQRhExOrqaqyvr09sk8lk5lQNAAAALKdMJhMbGxsT23S73RgMBnOqaJwgDCJifX09zs7Oki4DAAAAlto02wptbm4mNmvMZvkAAAAApIIgbAG12+3Y2dmJQqEQKysrsbKyEoVCIfb396PX6z3rsTudTlQqlanbHx4eRqVSiVwuN6qzWq1Gq9V6dA3P0ScAAACAIGyB9Hq9qFarUSqVol6vR6fTGf2s0+nE4eFh5HK5qNfrj+r7MlSb9FUoFCKfz9/bX6vVilwuF/v7+xER0Wg04vT0NA4ODqLdbkelUolKpfKg4O45+gQAAAC4ZI+wBdHr9aJUKo2FX3fZ2dmJk5OTODo6mrr/h4Rnl0HUXVqt1mjW2Pb29lgd+Xw+tra2olQqRavVilKpFCcnJ5HNZufeJwAAAMBVK8PhcJh0EURUKpVotVpRLBbjxx9/jGKxGBFfl0l++vQpDg8Pb7ym0WjE1tbWVP3ncrmpZlKVy+U4Pj6+8+e9Xi9+97vfRa/Xi3w+H6enp7e263Q6USgUEutzWpcb9G1sbNgsH4D4+Q/vki4BXrSf/+93M+nnXXkm3QCQkCSvxc0IWwD1ej1arVbs7e3FwcHB2M8uZ0Pt7OxEtVqNdrs9+tnbt2+nCsLq9Xr0er3Y29u7d/+vV69eTfx5tVodBWqTZo5d1t1sNqPVakW9Xo/t7e259QkAwOL5/k/vZtNReUb9AJA6ZoQtgMt9ue6b4XR1RtSl4+PjKJcn/0ns8jV3zbSa1vXjX1xcTFye2Gw2o1qtRkRENpuNi4uLufT5EGaEAXCVGWGwHL7//bukSwDgCZK8FrdZfsLa7XZ0Op1oNBr3ts3n8zdmjF2dIXabZrMZnU7n3n2/pnH12OVy+d49uq7OVuv1etFsNufSJwAAAMBtLI1M2MePH2N7e3vqjd+vz/769ddfJ7Z///59ZLPZePPmzWNLHLm64f7lHmb3yefzoxsAfPz48cZSzufoE4D0MZMLAIBpmBGWsB9++OHGLK9JrodF15dKXtVut6Pdbkev14tcLheFQiF2dnYeNYvq+syz77777sH1Xj/uc/QJAAAAcBdBWMKKxeLUs8Ei4sadH/P5/J1try+H7HQ6Ua/Xo1qtxsrKyo3N9ydptVpTH3dSu6vHe44+AQAAAO4iCFsyl0sCL921UX6n07kRNF3XbDajVCrFzs7Ovcf99OnT2PNpw7tvv/127Pnnz5+ftU8AAACAu9gjbMlcDX22t7fvbJfP5+Po6Ch6vV6cnp5Gq9W6EaJdqtfr8fnz5zg5Obmzv+uvfezsrat3rnyOPgEAAADuIghbMkdHR6PH990J8npQ1uv1ol6vx/v3728ssWy321GpVOL4+PjWvu4K0R7q6nGfo08AAACAuwjClkin0xnth3VwcDD1DKpL2Ww29vb2Ym9vL5rNZrx9+3YsRGq1WnF4eBh7e3s3XvvYsOn6cscvX748a5+P1e12Y3Nz88n97O7uxu7u7pP7AQAAgEVTq9WiVqs9uZ9utzuDah5HELZELu8umc/nbw2rHmJrayvK5XK8fv16bLP59+/fP7nvSZ5j9tYs+hwMBnF+fv7kfvr9/pP7AAAAgEXU7/dncu2cJEHYkmi321Gv1yObzd65fPGhstlsnJycRKlUGoVhvV4vWq3WjU34s9nsTAKnq7O5nqPPx1pdXY319fUn95PJZJ7cBwAAACyiTCYTGxsbT+6n2+3GYDCYQUUPJwhbEm/fvo2IiJ9++unBSyLv8+HDhyiVSqPnx8fHN4KwtbW1mYRWa2trz9rnY62vr8fZ2dmT+wEAAICXalbbAW1ubiY2s2w1kaPyIDs7O9Fut6PRaESxWJx5/8VicSz4um0T+8fOuroedF2fETbrPgEAAADuIghbcPV6Per1ehwdHcXW1tazHadSqUz8+atXr8aeTzuT6/pG9oVC4Vn7BAAAALiLIGyBtVqt2NnZiaOjo9je3n7WY11dbnnbUsOrSycjbp81dpvT09Ox51dnnj1HnwAAAAB3EYQtqHa7HZVKJQ4ODp49BIsYD8JuW2p4ffbWtKHV1Vle2Wx27DjP0ScAAADAXQRhC6jT6cTr169jb28v9vb25nLMz58/jx7ftkyyWCyOBWSfPn16cL/Xg6/n6BMAAADgLoKwBdPpdKJUKsX29nYcHBxM/ZrDw8MnHffqcsO7lhq+efNm9Ljdbk/V79V2+/v7c+kTAAAA4DaCsAXS6/WiUqnEmzdvpg7BIiKq1eqT98lqNpsRERNnoO3s7Iwet1qte/u82iafz99a43P0CQAAAHAbQdiC6PV6USqVIp/Px/7+fnQ6nXu/Wq3WaMP5YrH46GM3m83odDqRzWbjxx9/vLNdsVgcC54uw7O7NBqN0eO7Zm49R58AAAAAt1kZDofDpIvg6x0Up10aeN31u0q2Wq2oVqvR6/WiXC7HwcHBnUHZ5VLMXq8XJycn9wZqnU4nCoVCRHwNsU5OTm5t1+v1IpfLRcTXpZbHx8dz7XNam5ubcX5+HhsbG3F2dvbk/gB4mHf3Twaeyvd/ejebjoCl8P3v3yVdAgBPkOS1uBlhC+ApIVhE3LirZKPRGN1Z8XLW2NUliJcuf7a2thanp6dTzSrL5/OjWVntdvvOvclev34dEV/v6nh1Fte8+gQAAAC4ThCWsGq1OtMQ7LLP6+r1euRyuahWq7GzsxOlUikqlUpsb2/HyclJ5PP5qY+5tbUVx8fHkc1mY39/f/Qeer3eKFxrt9tRLBbjl19+Gbsz5Dz7BAAAALjK0sgXqtPpxMHBQbRarfjy5Uv0er3IZrOxtrYWxWIxfvjhhyiXy08OlA4PD+Pjx4/R6XRGx3j16lXs7OzE1tbWwvR5F0sjAZJlaSSQJEssAZKR5LW4IIxUE4QBJOvnP7xLugQgxQRhAMmwRxgAAAAAPLNvki4AFkG3243Nzc2JbXZ3d2N3d3dOFQEAAMDyqdVqUavVJrbpdrtzquYmQRhExGAwiPPz84lt+v3+nKoBAACA5dTv9++9vk6SIAwiYnV1NdbX1ye2yWQyc6oGAAAAllMmk4mNjY2JbbrdbgwGgzlVNE4QBhGxvr5us3wAAAB4omm2FbrcLD8JNssHAAAAIBUEYQAAAACkgiAMAAAAgFQQhAEAAACQCoIwAAAAAFJBEAYAAABAKgjCAAAAAEiFb5IuAABYLu9as+vr+9l1BQAA9xKEAQAAqTSrYP9deTb9APD8LI0EAAAAIBUEYQAAAACkgqWRAMCDfP+nd0mXADATM/s8K8+oHwCenRlhAAAAAKSCIAwAAACAVLA0EiKi2+3G5ubmxDa7u7uxu7s7p4oAAABg+dRqtajVahPbdLvdOVVzkyAMImIwGMT5+fnENv1+f07VAAAAwHLq9/v3Xl8nSRAGEbG6uhrr6+sT22QymTlVAwAAAMspk8nExsbGxDbdbjcGg8GcKhonCIOIWF9fj7Ozs6TLAAAAgKU2zbZCm5ubic0as1k+AAAAAKkgCAMAAAAgFQRhAAAAAKSCIAwAAACAVLBZPgAAwBO8a82on/Js+gHgbmaEAQAAAJAKZoQBQEr8/Id3SZcA8CJ9/6d3s+moPKN+ALiTGWEAAAAApIIgDAAAAIBUEIQBAAAAkAqCMAAAAABSQRAGAAAAQCoIwgAAAABIBUEYAAAAAKnwTdIFwCLodruxubk5sc3u7m7s7u7OqSIAAABYPrVaLWq12sQ23W53TtXcJAiDiBgMBnF+fj6xTb/fn1M1AAAAsJz6/f6919dJEoRBRKyursb6+vrENplMZk7VAIz7+Q/vki4BgDmY1ef997+fTT8Aj5HJZGJjY2Nim263G4PBYE4VjROEQUSsr6/H2dlZ0mUAAADAUptmW6HNzc3EZo3ZLB8AAACAVBCEAQAAAJAKgjAAAAAAUkEQBgAAAEAqCMIAAAAASAVBGAAAAACp8E3SBQAAADA771oz6qc8m34AFokgDACeyawuRL6fTTcAAJB6gjAAeCbf/+ld0iUAAABXCMIAAABekJn9IaY8o34AFojN8gEAAABIBUEYAAAAAKkgCAMAAAAgFQRhAAAAAKSCzfIhIrrdbmxubk5ss7u7G7u7u3Oq6G61Wi36/X5kMpmFqAdeonetyT//h2Yt/vWf+/HXf5OJv9u6exx+P9uygCv++D//If75//xr/M1v/jre/Le/S7oceJF+/sO7e9tMOxa///39fQGPs2jXiLVaLWq12sQ23W53TtXcJAiDiBgMBnF+fj6xTb/fn1M1k9VqtTg/P4+NjY2F+JCDl+i+u239P/9vLf7X//7H+K//5bfx4/+1GJ8NkDaNn/9hNA4FYZAcYxGSt2jXiP1+/97r6yQJwiAiVldXY319fWKbTCYzp2oAAABgOWUymdjY2JjYptvtxmAwmFNF4wRhEBHr6+txdnaWdBkAAACw1KbZVmhzczOxWWM2ywcAAAAgFQRhLJzDw8OoVCqRy+ViZWUlCoVCVKvVaLXu2b0aAAAAYAJBGAuj1WpFLpeL/f39iIhoNBpxenoaBwcH0W63o1KpRKVSiV6vl2yhAAAAwFKyRxgLodVqRaVSiYiI7e3tODo6Gv0sn8/H1tZWlEqlaLVaUSqV4uTkJLLZbELVAgAAAMtIEEbier1eVKvViPgael0Nwa5qNBpRKBSi0+lEtVqN4+PjeZYJLIGf//Au6RIAgFvM6hz9/e9n0w+QXoIwEletVkfLHS+XRd7mcmZYs9mMVqsV9Xo9tre351Ql81Kr1aLf70cmk7n3TiPLyntkGfzxf/5D/PP/+df4m9/8dbz5b3+XdDkz99LfX0Q63uNL99L/G7709xeRjvf40qXhd5qX/h5f+vvj4QRhJKrT6Yxtgv/mzZuJ7X/44YdoNpsR8TU0E4S9PLVaLc7Pz2NjY+PFnqi8R5ZB4+d/iP/1v/8x/ut/+e2LvHh76e8vIh3v8aV76f8NX/r7i0jHe3zp0vA7zUt/jy/9/fFwNssnUQcHB6PH5XL53n2/tra2Ro97vd4oFAMAAAC4jyCMRNXr9dHjYrE41Wvy+fzo8cePH2deEwAAAPAyWRpJYtrt9tjz7777bqrXFYvF6HQ6ERFmhMEL8a51f5tpfD+bbgAAgBdKEEZiru4NFjE+02uS6+3a7fbUs8mAxfT9n94lXQIAsATcfRJ4KksjScynT5/Gnt+3P9ilb7/9duz558+fZ1USAAAA8IIJwkjM5fLGS4+dEXZ6ejqzmgAAAICXSxBGYq4HYY/V6/Vm0g8AAADwsq0Mh8Nh0kWQTisrK2PPp/1fsdVqRaVSGT3f2tqKRqPxqBr+6q/+Kv793/89IiJWV5+eC//2t7+Nv/3bv31yP5N0u90YDAaxuroa6+vrz3qsJLz09xfxst7jv/65f+v3v/T/HIPhMFZXVmIt87xjIgkv/f1FvPz3+NLfX8TLf48v/f1FvPz3+NLfX4T3+BLc9/7++m8zCVQ1Wy/pd9PbvPT3FzHf9/jnP/85/vEf//HJ/QwGg4iI+Mu//Mv4t3/7tyf39xCCMBIzqyCsXC7H8fHxo2r4i7/4i9EABAAAAOZndXU1/uM//mOux3TXSBKTzWZnsqxx2k32b/Ob3/wm/uVf/iWGw+HSzAgDAACAJMxyRtjKykr85je/mUFVDyMIIzFra2szCcLW1tYe/dp/+qd/evLxAQAAgOVgs3wS89iZXNfDs6fMCAMAAADSQxBGYl69ejX2fNrZYV++fBl7XigUZlUSAAAA8IIJwkhMqVQae97pdKZ63enp6djzcrk8s5oAAACAl0sQRmKuzwibNgi7OnMsm81GPp+fZVkAAADACyUIIzHFYnFsf69Pnz5N9brPnz+PHl8P0wAAAADuIggjUW/evBk9brfbU73marv9/f2Z1wQAAAC8TCvD4XCYdBGkV7vdHtsr7L7/HVutVlQqlYiIyOfzN/YLAwAAALiLGWEkqlgsjm1232w2J7ZvNBqjx2aDAQAAAA9hRhiJ63Q6USgUIuJrMHZycnJru16vF7lcLiK+3iny+Ph4bjUCAAAAy8+MMBKXz+dHM73a7XYcHh7e2u7169cR8fVOkVdnhgEAAABMQxDGQtja2orj4+PIZrOxv78f1Wo12u129Hq9aLVaUSqVot1uR7FYjF9++WXsbpMAAAAA0xCEsTDK5XJcXFzEwcFBdDqdeP36deRyuahWq7G2thaNRiNOTk5SEYIdHh5GpVKJXC4XKysrUSgUolqtRqvVSqymQqEQKysr9+7jBi9FUuOw3W7Hzs7OaMxdHnt/fz96vd6zHhvmIclz3CKeXyEpznOQvEU8L6Xium8ILIzj4+NhNpsdRsSwXC4Pj4+Ph6enp8NGozHM5/Oj719cXMy1rr29vWFEDCNi2Gg05npsmLekxuHFxcVwa2trNNbu+jo6OprpcWFekjzHLer5FZLgPAfJW9TzUlqu+wRhsCCOj49HHzrb29u3tikWi8OIGObz+bl9KF6t66V/IEJS4/Di4mL0S880X3fVBosqyXPcop5fIQnOc5C8RT0vpem6TxAGC+Di4mL0F4F8Pn9nu9PT09EHU7lcnmtdafhAJN2SHIflcnkYEcNisThsNBrD09PT0V8Fr/5lzlhkGSU5thb1/ApJcJ6D5C3qeSlt132CMFgAl78cTDMd/OqU8ueeOr61tTXM5/NjH4ov+QORdEtqHB4dHQ0jYri3t3dnm9PT09FfBi+/stnsk44L85LkOW5Rz6+QBOc5SN6inpfSdt0nCIOEXU37I+Leqa+NRmMuvyBc/tJycnKSmg9E0ivJcZjP56f6S9/1GiNieHx8/KRjw3NLcmwt6vkVkuA8B8lb1PNSGq/73DUSEnZwcDB6XC6X770r5tbW1uhxr9d7lrt5dDqd2NnZib29vSgWizPvHxZNUuOw3W5Hp9OJRqNxb9t8Pj9W5+XrYZEleY5bxPMrJMV5DpK3iOeltF73CcIgYfV6ffR42g+ffD4/evzx48eZ11StVqNYLN74ZQReqqTG4cePH2N7e/veX4Qulcvlsee//vrro44L85LkOW4Rz6+QFOc5SN4inpfSet33TdIFQJpd/yvXd999N9XrisVidDqdiIiZ/2Vgf38/2u12nJ6ezrRfWFRJjsMffvhh7BecaY55VaFQeNRxYR6SHFuLeH6FpDjPQfIW8byU5us+M8IgQa1Wa+z5tL8oXG83q2nj7XY7Dg8P4+jo6EG/tMAyS3IcFovFqf9KHvF1WvykGmCRJDm2Fu38CklynoPkLdp5Ke3XfYIwSNCnT5/Gnk/7i8K333479vzz588zqef169extbUV29vbM+kPlsGijcNJLv8ieOn6EhJYJEmOrWUa1/Dclmk8OM/xUi3aOEz7dZ8gDBJ0/WT/2L8MzGI6a7VajYiIDx8+PLkvWCaLNA7vc/WXn7T+4sLySHJsLdO4hue2TOPBeY6XapHGoes+e4RBoq5/ID7W9WnkD9VsNqPZbMbx8fGDpq/DS7Ao43AaR0dHo8f7+/vPfjx4iiTH1jKNa3huyzQenOd4qRZlHLru+8qMMEjQYz/Irn9offny5Uk1VKvV2N7eNv2cVFqEcTiNTqcz2hfi4OAglfs5sFySHFvLMq5hHpZlPDjP8ZItwjh03fefBGHwAjzlLwOvX7+OfD4/9hc44OGe+y/ll7e1zufzsbe396zHgkWS5KwsM8LgPznPQfJc982GIAwSNKvpqI/t5/DwMNrtdjQajZnUAcso6XE4jXa7HfV6PbLZbBwfHz/bcWCWkhxbyzCuYV6WYTw4z/HSJT0OXfeNE4TBHer1eqysrMz0q1QqjR1jbW1tJrU+pp92ux37+/txcHAQxWJxJnXArL30cTitt2/fRkTETz/9ZKkISyPJsbUM4xrmZRnGg/McL53rvsUiCIMEPTbRvz4l9jH9VKvVKBaLpp6TekmOw2ns7OyM/oLnlxeWSZJja9HHNczToo8H5znSwHXfYnHXSLhDuVye+dTR6x9cr169Gm0KGvH1g26aD7frmyQWCoUH1XF4eBidTifK5fLo9rmTXP0Afv/+fXz8+HH0/Icffoitra0HHR+m9ZLH4TTq9XrU6/U4Ojoyzlg6SY6tRR7XMG+LPB6c50gL132LRRAGd8jn888+Nfv6Eq1OpzPVX8JOT0/Hnj/0rh+//vprRES0Wq0HvS7i69Taqx/i+Xz+xXwgsnhe8ji8T6vVip2dnTg6Oort7e2Z9g3zkOTYWtRxDUlY1PHgPEeauO5bLJZGQoJevXo19rzT6Uz1uqtJfTabtZcCPMEijsN2ux2VSiUODg5cHLC0khxbiziuISmLOB6c50ibRRyHaSYIgwQVi8WxKbGfPn2a6nWfP38ePb7+oTqNg4ODGA6HU39d/cBtNBpjP7u81TUsq6TG4V06nU68fv069vb27OXAUktybC3auIYkLdp4cJ4jjVz3LRZBGCTszZs3o8dXp55OcrXd/v7+zGuCtFmUcdjpdKJUKsX29vbUv2x0Op04PDycyfFh1pIcW4syrmERLMp4cJ4jzRZlHCIIg8Tt7OyMHk+zdvtqm3w+b/8SmIFFGIe9Xi8qlUq8efPmQX9xq1arPgdYWEmOrUUY17AoFmE8OM+RdoswDvlKEAYJKxaLYx9qzWZzYvurd9C7768C9Xo99vf3p16DDmmV9Djs9XpRKpUin8+P2t731Wq1Rhuvut08iyrJsfWcx4Zl4zwHyUt6HHLFEEjc6enpMCKGETEsFot3tru4uBi1K5fLE/ssl8ujthExvLi4eHR9+Xx+1E+j0Xh0P7DIkhyHxWJxrN1Dvo6Ojp7ytuHZJTm2nuPYsKyc5yB5rvsWgxlhsADy+fwo8W+323fug/D69euI+HrHkKt/IbjN9em2f/zjH2dQKbxcSY3DUqk09T4Rt3G3LRZdkue45zg2LCvnOUie677FIAiDBbG1tRXHx8eRzWZjf38/qtVqtNvt6PV6o6nh7XY7isVi/PLLL2N3HbnN9Z+71S7cb97j8LL/x3JxwLJI8hw362PDMnOeg+S57lsASU9JA246ODgYFovFYTabHUbEMJvNDsvl8oOmpx4fHw/z+fwwm80O9/b2nrFaeJmMQ3geSY6tWRwbXgrnOUiecZiMleFwOEwyiAMAAACAebA0EgAAAIBUEIQBAAAAkAqCMAAAAABSQRAGAAAAQCoIwgAAAABIBUEYAAAAAKkgCAMAAAAgFQRhAAAAAKSCIAwAAACAVBCEAQAAAJAKgjAAAAAAUkEQBgAAAEAqCMIAAAAASAVBGAAAALwQ7XY7crlcrKysPOgrl8tFLpeLUqkUOzs7Ua/Xo9frPejYDzluLpeLVqs1sb/9/f2p+nxonZd6vd5Utbbb7Uf1nwaHh4f3/vsVCoWkyxyzMhwOh0kXAQAAAMxWs9mMt2/f3hoUlcvlyGazERHR6XSi0+nc2e7g4CCKxeJUx2y321GtVqPT6dz68729vTg4OJj2LYzqq1QqY30Wi8X48OHD1HXdptfrRS6Xu9FnPp8fa3f578Ttrv5/8+XLl2i1WrGzszP6Xj6fj9PT0wQqu50gDAAAAF6oZrMZ1Wp17Hvb29txdHR0Z/v9/f0bQdZDA6xSqXTrTKrj4+Mol8tT93PpcpZaRMTW1lY0Go0H93Hd9SCs0WjE1tbWk/slolqtRrPZjIjFC8IsjQQAAIAX6rbQadJSta2trTg9PY29vb2x7x8eHsbh4eHUx/3pp59unUl1VwB3nz/+8Y8R8fX9zCIEu42ZX7NzfVbdIhGEAQAAwAv12HDn4ODgRoi2v78/9X5c2Ww2fvrppxvfbzabD95z6/K42Wz22UKwiIi1tbVn65vFIQgDAAAAbrhtKeTlzKxpFIvFW/u4vlRzkna7PZqJdtcsM3gIQRgAAABww20b0Z+cnDyoj729vRszyzqdzthm6pO8fft21M9TNsaHS4IwAAAA4FbX93r68uXLg/toNBo3ZnLV6/VotVoTX3d4eBjtdjvy+fyD7zQJdxGEAQAAALe6fvfIx2yCns1m48OHDze+P2mJZKfTif39/YiIZ90X7Cl6vV4cHh5GqVQa3SHxUrPZjEqlErlcLlZWVqJUKo3uenlbP/v7+1EqlcbaX+9z0etYFt8kXQAAAACweK6HYBER33333aP62traiq2trbFQpdfrxc7Ozq13krxcOrloSyLb7Xa0Wq34+PHjrZv+dzqdqFarN37WbrdjZ2cnTk5Oxt7v4eHhKPC73r5arcbe3t6ts+EWpY5lZEYYAAAAcMP1YCSfz8fW1taj+/vw4cNUSySbzWa0Wq2FWxLZ6XTi/fv38enTp1vDp3q9HoVCISK+3mig0WjEwcHB2Hu++n4rlUq8f/8+tre34+joKBqNRuzt7Y31eXh4eCOQXJQ6ltXKcDgcJl0EAAAA8DxWVlbGnh8cHNwIOq7b398f3a3x0snJyZNnZ7VarahUKmPfy2az8csvv0Q2m41erxe/+93votfrzeR4k/R6vcjlcqPnDzne9RlU+Xw+vnz5Eh8+fLgRFnY6nVEwFfGfNyFYW1u7df+06/9GlwHVItdx3dX/f/L5fJyenk71unkwIwwAAABS5Ndff73xvV6vF+12ezSb6GoIViwW4/T0dCahVLlcju3t7RvHvrw75Nu3b6PX68X29vZCLYm87rbaLi4ubp0xl8/nx+6c2W63o9frxfHx8Y3wKeLrv9HVvdgm3VRgUepYJoIwAAAASJHDw8NYWVkZ+8rlclEqlWJnZ2e0BG57eztOTk7i5OTkUZvk3+Xo6OhGf81mM3Z2dqLZbEY+n5965lFS1tbWxp7ft2T0+iy42/bjuupqwDVpSeKi1LFMBGEAAACQIvl8PorF4ujrrpCrXq/H/v7+s9w18LY7QV7ezXDRQ7DHuD7j6nqAdd31/yazCqEWpY4kCcIAAAAgRS7vGnj5dXp6GsPhMC4uLqLRaIzNKmq1WlGtVqNQKNy6MftjFYvFW/cp297eHlu+91LcFzjdp9frvag6kiQIAwAAACKbzcbW1lY0Go0byyE7nU6USqWZ7hP1448/3vheqVSaWf/L7Ntvv026hIhYnDpmSRAGAAAAjCkWi7duol6tVl/ErCDSSxAGAAAA3JDP52/M2rp6h0dYRoIwAAAA4Fbb29s3vvccm+fDvAjCAAAAgFtdXxp56SXcPZB0EoQBAAAAd7orDINlJAgDAAAA7nTb5vhra2vzLwRmQBAGAAAA3KrVat34XrFYNEuMpSUIAwAAAG61v79/43vX7yQ5S7fNPnuJvnz5knQJEbE4dcyTIAwAAABeqNuCpV9//XWq1+7s7ES73R77Xrlcjq2trVmUdmsIM21ty+b6e70v8Huuf4dFqSNJgjAAAAB4oW5b2ng93Lqq1+vF4eFhFAqFqNfrYz8rl8txfHz8rLXd9r1FdP2umfcFStd/fnp6+qD2d92lc1HqWCYrw+FwmHQRAAAAwGy1Wq3Y2dm5NbzI5/NRLBZHz3u9XnQ6nVvbZrPZODg4iO3t7ZnV1mw24+3bt7cGN3t7e/Hjjz8++z5kvV4vcrnc6PnJycnYv8kkpVJpLFDMZrPxyy+/3Fpzr9eLUqk09m+bzWbj5OQk8vn8jfadTidKpdLYv81dIeSi1HHd/v5+HB4eRsTX/9fuC9zmyYwwAAAAeCHa7XYUCoVYWVmJSqUycSZRs9kcfbVareh0OpHNZiOfz0e5XI69vb04Pj6Oi4uLmYRgh4eHkcvlYmVlJarV6p2zly7b5XK5KBQKTz7urLTb7ahUKpHL5W7MqrsM1UqlUjSbzVH7UqkUuVzu1plbhUIhSqXSaOZdq9WKQqEQhULhxr9Nq9WKXC4XlUol/v7v/34h6ljW2WFmhAEAAACp85QZYUxmRhgAAAAAJEwQBgAAAEAqCMIAAACA1Pvy5UvSJTAHgjAAAAAg9ZZ18/dFdNeNEBbBN0kXAAAAAJC0/f39yOfz8erVq7HvZ7PZZApaEtdDr8+fP4/uQLmIBGEAAABA6vV6vahUKje+726Sdzs8PIz9/f2ky3iQleFwOEy6CAAAAAB4bvYIAwAAACAVBGEAAAAApIIgDAAAAIBUEIQBAAAAkAqCMAAAAABSQRAGAAAAQCoIwgAAAABIBUEYAAAAAKkgCAMAAAAgFQRhAAAAAKSCIAwAAACAVBCEAQAAAJAKgjAAAAAAUkEQBgAAAEAqCMIAAAAASAVBGAAAAACpIAgDAAAAIBUEYQAAAACkgiAMAAAAgFQQhAEAAACQCoIwAAAAAFJBEAYAAABAKgjCAAAAAEgFQRgAAAAAqSAIAwAAACAVBGEAAAAApIIgDAAAAIBUEIQBAAAAkAqCMAAAAABSQRAGAAAAQCoIwgAAAABIBUEYAAAAAKnw/wFF4ZjHmwkp6AAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import mplhep\n", + "mplhep.style.use([\"LHCbTex2\"])\n", + "default_args = dict(\n", + " alpha=0.5\n", + ")\n", + "\n", + "variables = {\n", + " \"z_mag_x\": dict(\n", + " range=(5100, 5600),\n", + " label=\"z_mag_x\",\n", + " unit=\"mm\",\n", + " bins=50,\n", + " ),\n", + " \"z_mag_y\": dict(\n", + " range=(2000, 10000),\n", + " label=\"z_mag_y\",\n", + " unit=\"mm\",\n", + " bins=50,\n", + " ),\n", + " \"AX\": dict(\n", + " range=(-3000, 3000),\n", + " label=\"AX\",\n", + " unit=\"mm\",\n", + " bins=50,\n", + " ),\n", + " \"BX\": dict(\n", + " range=(-1.2, 1.2),\n", + " label=\"BX\",\n", + " unit=\"1/mm\",\n", + " bins=50,\n", + " ),\n", + " \"CX\": dict(\n", + " range=(-7e-6, 7e-6),\n", + " label=\"CX\",\n", + " unit=\"1/mm\",\n", + " bins=50,\n", + " ),\n", + " \"DX\": dict(\n", + " range=(-7e-9, 7e-9),\n", + " label=\"DX\",\n", + " unit=\"1/mm\",\n", + " bins=50,\n", + " ),\n", + " \"AY\": dict(\n", + " range=(-2500, 2500),\n", + " label=\"AY\",\n", + " unit=\"mm\",\n", + " bins=50,\n", + " ),\n", + " \"BY\": dict(\n", + " range=(-0.4, 0.4),\n", + " label=\"BY\",\n", + " unit=\"mm\",\n", + " bins=50,\n", + " ),\n", + " \"CY\": dict(\n", + " range=(-4e-6, 4e-6),\n", + " label=\"CY\",\n", + " unit=\"mm\",\n", + " bins=50,\n", + " ),\n", + "}\n", + "for name in variables.keys():\n", + " plt.figure()\n", + " n, bins, patches = plt.hist(\n", + " array_md[name],\n", + " bins=variables[name][\"bins\"],\n", + " **default_args,\n", + " range=variables[name][\"range\"],\n", + " label=\"MagDown\"\n", + " )\n", + " plt.hist(array_mu[name], bins=variables[name][\"bins\"],\n", + " **default_args, \n", + " range=variables[name][\"range\"], label=\"MagUp\")\n", + "\n", + " label = variables[name][\"label\"]\n", + " unit = variables[name][\"unit\"]\n", + " bin_width = \"%.1f\" % round(bins[1] - bins[0], 1)\n", + " plt.xlabel(f\"{label} [{unit}]\")\n", + " plt.ylabel(f\"Particles/({bin_width} {unit})\")\n", + " mplhep.lhcb.text(\"Simulation\")\n", + " plt.legend()\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.6", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "a2eff8b4da8b8eebf5ee2e5f811f31a557e0a202b4d2f04f849b065340a6eda6" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/parameterisations/notebooks/search_window.ipynb b/parameterisations/notebooks/search_window.ipynb new file mode 100644 index 0000000..f4ebf3d --- /dev/null +++ b/parameterisations/notebooks/search_window.ipynb @@ -0,0 +1,308 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, -1, 1, -1, 1, -1, -1, 1, -1, -1, 1, -1, ... 1, -1, 1, -1, 1, -1, 1, -1, 1, 1, 1]\n", + "[1, -1, 1, -1, 1, -1, -1, 1, -1, -1, 1, -1, ... 1, -1, 1, -1, 1, -1, 1, -1, 1, 1, 1]\n" + ] + }, + { + "data": { + "text/plain": [ + "(array([ 8228., 9035., 9624., 10447., 11068., 11652., 12633., 13575.,\n", + " 14666., 15612., 16815., 18180., 19541., 21065., 22981., 24949.,\n", + " 27515., 29858., 32704., 35823., 38704., 41355., 41764., 32588.,\n", + " 9430., 9730., 33115., 42543., 41654., 38601., 35860., 32884.,\n", + " 29817., 27346., 25018., 23023., 21451., 19626., 18003., 16743.,\n", + " 15334., 14789., 13454., 12433., 11604., 10882., 10287., 9608.,\n", + " 8794., 8285.]),\n", + " array([-1200., -1152., -1104., -1056., -1008., -960., -912., -864.,\n", + " -816., -768., -720., -672., -624., -576., -528., -480.,\n", + " -432., -384., -336., -288., -240., -192., -144., -96.,\n", + " -48., 0., 48., 96., 144., 192., 240., 288.,\n", + " 336., 384., 432., 480., 528., 576., 624., 672.,\n", + " 720., 768., 816., 864., 912., 960., 1008., 1056.,\n", + " 1104., 1152., 1200.]),\n", + " )" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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3r32sGHDQqY0t7e32ykpKfb3v/99u6mpyf7tb39rx8XFXXF6+RNPPGEfPXrU3rJlC9PLP2X//v32unXr7Lfeest+99137VdeecX2eDx2QUGBU9Nf3wWu7tL08i1btthHjx61S0pK7JiYGPu9994b6KYNSqWlpfa+ffvsd999166vr7fz8/Pt2NhYpz+fe+4527Is+7e//a3d1NRkf//737/itOdhw4bZe/futd988037/vvvZ3r5Zc6fP+/8+y3J+ffk0m0R+qufp0+fbo8bN86uq6uz6+rq7LFjxzK9HLe3efPm2ZJ6La+//rpT8/7779szZ860o6Oj7YSEBHvx4sUh05dt27b/8pe/2N/+9rdtl8tlu91ue/ny5b2mM+/bt8++55577KioKPsrX/mKvXHjxltxiINCQ0ODnZWVZVuWZQ8ZMsROT0+3n3nmGfvixYshdf31XeDq/uu//ssePny4HRUVZf/Lv/yLXVNTM9BNGrQu3a8lMjLS9ng89oMPPmgfOXLE2f7xxx/bzzzzjO12u22Xy2V/5zvfsZuamkL20dnZaS9evNhOSEiwo6Oj7fz8fPvkyZO3+lBua6+//voV/y2fN2+ebdv9189nz561H374YTs2NtaOjY21H374Ydvv99+io7z1wmyb260CAAAzcY0OAAAwFkEHAAAYi6ADAACMRdABAADGIugAAABjEXQAAICxCDoAAMBYBB0AAGAsgg4AADAWQQcAABiLoAMAAIxF0AEAAMb6fyKfUe/IE0GuAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import uproot\n", + "import awkward as ak\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "input_tree = uproot.open({\"/work/guenther/reco_tuner/data/param_data_selected_all_p.root\": \"Selected\"})\n", + "array = input_tree.arrays()\n", + "array[\"dSlope_fringe\"] = array[\"tx_ref\"] - array[\"tx\"]\n", + "array[\"z_mag_x_fringe\"] = (array[\"x\"] - array[\"x_ref\"] - array[\"tx\"] * array[\"z\"] + array[\"tx_ref\"] * array[\"z_ref\"] ) / array[\"dSlope_fringe\"]\n", + "array[\"x_straight_diff_ref\"] = array[\"x\"] + array[\"tx\"] * (array[\"z_ref\"] - array[\"z\"]) - array[\"x_ref\"]\n", + "array[\"x_straight_diff_ref_abs\"] = abs(array[\"x_straight_diff_ref\"])\n", + "array[\"inv_p_gev\"] = 1000. / array[\"p\"]\n", + "array[\"pol_qop_gev\"] = array[\"signed_rel_current\"] * array[\"qop\"] * 1000.\n", + "array[\"qop_gev\"] = array[\"qop\"] * 1000.\n", + "array[\"deflection_sign\"] = array[\"pol_qop_gev\"] / array[\"inv_p_gev\"]\n", + "print(array[\"deflection_sign\"])\n", + "print(array[\"x_straight_diff_ref\"] / array[\"x_straight_diff_ref_abs\"])\n", + "plt.figure()\n", + "plt.hist(array[\"x_straight_diff_ref\"], bins=50,\n", + " range=[-1200, 1200], alpha=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['inv_p_gev' 'ty^2 inv_p_gev' 'tx^2 inv_p_gev' 'tx inv_p_gev pol_qop_gev'\n", + " 'inv_p_gev^3' 'tx^3 pol_qop_gev' 'tx^2 inv_p_gev^2'\n", + " 'tx inv_p_gev^2 pol_qop_gev' 'inv_p_gev^4' 'ty^2 tx^2 inv_p_gev'\n", + " 'ty^2 tx inv_p_gev pol_qop_gev' 'ty^2 inv_p_gev^3' 'tx^4 inv_p_gev']\n", + "intercept= 0.0\n", + "coef= {'inv_p_gev': 4018.896625676043, 'ty^2 inv_p_gev': 6724.789549369031, 'tx^2 inv_p_gev': 3970.9093976497766, 'tx inv_p_gev pol_qop_gev': -4363.5807241252905, 'inv_p_gev^3': 1421.1056758688073, 'tx^3 pol_qop_gev': 4934.07761471779, 'tx^2 inv_p_gev^2': 6985.252911263751, 'tx inv_p_gev^2 pol_qop_gev': -5538.28013195104, 'inv_p_gev^4': 1642.8616070452542, 'ty^2 tx^2 inv_p_gev': 106068.96918885755, 'ty^2 tx inv_p_gev pol_qop_gev': -94446.81037767915, 'ty^2 inv_p_gev^3': 26489.793756692892, 'tx^4 inv_p_gev': -23936.54391006025}\n", + "r2 score= 0.999838251106393\n", + "RMSE = 6.897104452420935\n", + "['inv_p_gev', 'ty^2 inv_p_gev', 'tx^2 inv_p_gev', 'tx inv_p_gev pol_qop_gev', 'inv_p_gev^3', 'tx^3 pol_qop_gev', 'tx^2 inv_p_gev^2', 'tx inv_p_gev^2 pol_qop_gev', 'inv_p_gev^4', 'ty^2 tx^2 inv_p_gev', 'ty^2 tx inv_p_gev pol_qop_gev', 'ty^2 inv_p_gev^3', 'tx^4 inv_p_gev']\n" + ] + } + ], + "source": [ + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.linear_model import LinearRegression, Lasso, Ridge\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.pipeline import Pipeline\n", + "from sklearn.metrics import mean_squared_error\n", + "import numpy as np\n", + "\n", + "features = [\n", + " \"ty\", \n", + " \"tx\",\n", + " \"inv_p_gev\",\n", + " \"pol_qop_gev\"\n", + "]\n", + "target_feat = \"x_straight_diff_ref_abs\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=5, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train )\n", + "X_test_model = poly.fit_transform( X_test )\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "reduce = True\n", + "if reduce:\n", + " keep = [\n", + " 'inv_p_gev', \n", + " 'ty^2 inv_p_gev', \n", + " 'tx^2 inv_p_gev', \n", + " 'tx inv_p_gev pol_qop_gev', \n", + " 'inv_p_gev^3', \n", + " 'tx^3 pol_qop_gev', \n", + " 'tx^2 inv_p_gev^2',\n", + " 'tx inv_p_gev^2 pol_qop_gev',\n", + " 'inv_p_gev^4', \n", + " 'ty^2 tx^2 inv_p_gev', \n", + " 'ty^2 tx inv_p_gev pol_qop_gev',\n", + " 'ty^2 inv_p_gev^3', \n", + " 'tx^4 inv_p_gev', \n", + " ]\n", + " remove = [i for i, f in enumerate(poly_features) if (keep and f not in keep ) or \"p_gev\" not in f]\n", + " X_train_model = np.delete( X_train_model, remove, axis=1)\n", + " X_test_model = np.delete( X_test_model, remove, axis=1)\n", + " poly_features = np.delete(poly_features, remove )\n", + " print(poly_features)\n", + "\n", + "#lin_reg = Lasso( fit_intercept=False, alpha=0.00001)#Lasso(fit_intercept=False, alpha=0.001)\n", + "lin_reg = LinearRegression( fit_intercept=False)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features, lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print([key for key, val in dict(zip(poly_features, lin_reg.coef_)).items() if val != 0.0])" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([ 165., 160., 184., 192., 194., 215., 235., 258.,\n", + " 266., 249., 245., 284., 279., 318., 316., 339.,\n", + " 359., 316., 383., 442., 415., 457., 456., 520.,\n", + " 555., 561., 616., 614., 698., 743., 818., 883.,\n", + " 957., 1053., 1153., 1285., 1539., 1671., 1931., 2327.,\n", + " 2809., 3299., 4006., 4818., 5850., 6966., 8973., 11792.,\n", + " 15176., 22655., 61283., 26651., 5480., 2436., 1872., 1632.,\n", + " 1423., 1285., 1223., 1165., 1046., 1022., 928., 872.,\n", + " 811., 742., 763., 741., 717., 712., 635., 649.,\n", + " 614., 579., 544., 488., 473., 480., 431., 427.,\n", + " 424., 413., 398., 362., 349., 306., 297., 295.,\n", + " 269., 257., 231., 246., 208., 211., 221., 207.,\n", + " 174., 187., 179., 188.]),\n", + " array([-5. , -4.9, -4.8, -4.7, -4.6, -4.5, -4.4, -4.3, -4.2, -4.1, -4. ,\n", + " -3.9, -3.8, -3.7, -3.6, -3.5, -3.4, -3.3, -3.2, -3.1, -3. , -2.9,\n", + " -2.8, -2.7, -2.6, -2.5, -2.4, -2.3, -2.2, -2.1, -2. , -1.9, -1.8,\n", + " -1.7, -1.6, -1.5, -1.4, -1.3, -1.2, -1.1, -1. , -0.9, -0.8, -0.7,\n", + " -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0. , 0.1, 0.2, 0.3, 0.4,\n", + " 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1, 1.2, 1.3, 1.4, 1.5,\n", + " 1.6, 1.7, 1.8, 1.9, 2. , 2.1, 2.2, 2.3, 2.4, 2.5, 2.6,\n", + " 2.7, 2.8, 2.9, 3. , 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7,\n", + " 3.8, 3.9, 4. , 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8,\n", + " 4.9, 5. ]),\n", + " )" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.hist(y_pred_test-y_test, bins=100, range=[-5,5])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([[nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " ...,\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan],\n", + " [nan, nan, nan, ..., nan, nan, nan]]),\n", + " array([-60. , -58.8, -57.6, -56.4, -55.2, -54. , -52.8, -51.6, -50.4,\n", + " -49.2, -48. , -46.8, -45.6, -44.4, -43.2, -42. , -40.8, -39.6,\n", + " -38.4, -37.2, -36. , -34.8, -33.6, -32.4, -31.2, -30. , -28.8,\n", + " -27.6, -26.4, -25.2, -24. , -22.8, -21.6, -20.4, -19.2, -18. ,\n", + " -16.8, -15.6, -14.4, -13.2, -12. , -10.8, -9.6, -8.4, -7.2,\n", + " -6. , -4.8, -3.6, -2.4, -1.2, 0. , 1.2, 2.4, 3.6,\n", + " 4.8, 6. , 7.2, 8.4, 9.6, 10.8, 12. , 13.2, 14.4,\n", + " 15.6, 16.8, 18. , 19.2, 20.4, 21.6, 22.8, 24. , 25.2,\n", + " 26.4, 27.6, 28.8, 30. , 31.2, 32.4, 33.6, 34.8, 36. ,\n", + " 37.2, 38.4, 39.6, 40.8, 42. , 43.2, 44.4, 45.6, 46.8,\n", + " 48. , 49.2, 50.4, 51.6, 52.8, 54. , 55.2, 56.4, 57.6,\n", + " 58.8, 60. ]),\n", + " array([-200., -196., -192., -188., -184., -180., -176., -172., -168.,\n", + " -164., -160., -156., -152., -148., -144., -140., -136., -132.,\n", + " -128., -124., -120., -116., -112., -108., -104., -100., -96.,\n", + " -92., -88., -84., -80., -76., -72., -68., -64., -60.,\n", + " -56., -52., -48., -44., -40., -36., -32., -28., -24.,\n", + " -20., -16., -12., -8., -4., 0., 4., 8., 12.,\n", + " 16., 20., 24., 28., 32., 36., 40., 44., 48.,\n", + " 52., 56., 60., 64., 68., 72., 76., 80., 84.,\n", + " 88., 92., 96., 100., 104., 108., 112., 116., 120.,\n", + " 124., 128., 132., 136., 140., 144., 148., 152., 156.,\n", + " 160., 164., 168., 172., 176., 180., 184., 188., 192.,\n", + " 196., 200.]),\n", + " )" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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vfaa8fTTTxtjx47lFOCPsG/fvqNOS+d5/GjNzc3G5MmTjb/7u78zDh06ZLS2thZ+3sdzac7709IffPBB4+233zaWL19uBAIBY//+/SN9aCe0b37zm0YoFDL+8pe/FL3++vr6Ctv88Ic/NEKhkPHv//7vRmNjo/G1r32N06lN+PAsLcPgeTTrlVdeMZxOp7F27Vpj9+7dxiOPPGL4/X7jV7/6VWGboTiXlh/wpNNpY+XKlUZ1dbURDAaNCy64wHjrrbeKtjlw4IBx0UUXGT6fzygvLzeWLVtmJJPJETriE5824DEMnkczHnroIUNE1J8P47k05yc/+Ykxfvx4w+12G2effXZhajUd3dFefw899FBhm3w+b3z/+983IpGI4fF4jL/92781GhsbR+6gTxIDBzw8j+b9x3/8hzFt2jTD4/EYp512mvHAAw8U/f9QnEubYRjGIFJuRERERCeNk3KWFhEREdHHwQEPERERWR4HPERERGR5HPAQERGR5XHAQ0RERJbHAQ8RERFZHgc8REREZHkc8BAREZHlccBDRERElscBDxEREVkeBzxERERkef8/MGv50pCdtnUAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "noise = np.random.normal(0, 0.15, X_test[:,2].shape)\n", + "noisey_X_test = X_test.copy()\n", + "noisey_X_test[:, 2] = 1./(1./noisey_X_test[:,2] + noise * (1./noisey_X_test[:,2]))\n", + "noisey_X_test[:, 3] = noisey_X_test[:, 2] * np.sign( noisey_X_test[:, 3] )\n", + "noisey_X_test_model = np.delete( poly.fit_transform( noisey_X_test ), remove, axis=1)\n", + "noisy_y_pred_test = lin_reg.predict( noisey_X_test_model )\n", + "plt.figure()\n", + "plt.hist2d(np.sign(noisey_X_test[:, 3])/noisey_X_test[:, 2], noisy_y_pred_test - y_test, bins=100, range=[[-60,60], [-200,200]],cmin=1, norm=matplotlib.colors.LogNorm())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.6 (conda)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "a2eff8b4da8b8eebf5ee2e5f811f31a557e0a202b4d2f04f849b065340a6eda6" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/parameterisations/notebooks/study_z_ref.ipynb b/parameterisations/notebooks/study_z_ref.ipynb new file mode 100644 index 0000000..73946d5 --- /dev/null +++ b/parameterisations/notebooks/study_z_ref.ipynb @@ -0,0 +1,234 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import uproot\n", + "import awkward as ak\n", + "input_tree_8 = uproot.open({\"/work/guenther/reco_tuner/data/param_data_MU_selected_8520.root\": \"Selected\"})\n", + "input_tree_9 = uproot.open({\"/work/guenther/reco_tuner/data/param_data_MU_selected.root\": \"Selected\"})\n", + " # this is an event list of dictionaries containing awkward arrays\n", + "a8 = input_tree_8.arrays()\n", + "a9 = input_tree_9.arrays()\n", + "a8[\"dSlope_fringe\"] = a8[\"BX\"] - a8[\"tx\"]\n", + "a8[\"z_mag_x_fringe\"] = (a8[\"x\"] - a8[\"AX\"] - a8[\"tx\"] * a8[\"z\"] + a8[\"BX\"] * a8[\"z_ref\"] ) / a8[\"dSlope_fringe\"]\n", + "a9[\"dSlope_fringe\"] = a9[\"BX\"] - a9[\"tx\"]\n", + "a9[\"z_mag_x_fringe\"] = (a9[\"x\"] - a9[\"AX\"] - a9[\"tx\"] * a9[\"z\"] + a9[\"BX\"] * a9[\"z_ref\"] ) / a9[\"dSlope_fringe\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([5.0000e+00, 2.0000e+00, 1.1000e+01, 4.0000e+00, 1.0000e+01,\n", + " 3.7000e+01, 4.8000e+01, 1.3100e+02, 2.9600e+02, 5.0700e+02,\n", + " 7.9300e+02, 1.2100e+03, 1.6270e+03, 2.5630e+03, 4.3020e+03,\n", + " 1.0385e+04, 7.2311e+04, 2.1642e+04, 9.7010e+03, 5.5550e+03,\n", + " 3.6920e+03, 2.4630e+03, 1.6310e+03, 1.1600e+03, 8.0800e+02,\n", + " 5.2300e+02, 3.9000e+02, 2.4400e+02, 1.6900e+02, 1.3100e+02,\n", + " 1.0500e+02, 5.9000e+01, 3.4000e+01, 2.3000e+01, 1.2000e+01,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00]),\n", + " array([5000., 5020., 5040., 5060., 5080., 5100., 5120., 5140., 5160.,\n", + " 5180., 5200., 5220., 5240., 5260., 5280., 5300., 5320., 5340.,\n", + " 5360., 5380., 5400., 5420., 5440., 5460., 5480., 5500., 5520.,\n", + " 5540., 5560., 5580., 5600., 5620., 5640., 5660., 5680., 5700.,\n", + " 5720., 5740., 5760., 5780., 5800., 5820., 5840., 5860., 5880.,\n", + " 5900., 5920., 5940., 5960., 5980., 6000.]),\n", + " )" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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nodrxowZg/6+jon3w8u6lNlgpaWl9m9/+1v72LFjdmNjo52Xl2fHxsba//M//2Pb9qcfp7Msy3799dftgwcP2t/73vcu+XG6SZMm2bt377bfffdd+9vf/vYlP053++232w0NDXZDQ4M9derUL9RHFweb597eXjs/P9+eNGmS3dzcHPYx0lAo5LwG8zy0oX6f++v/qSvbZp6Ha6i5fv311+1x48bZmzdvto8ePWr/y7/8ix0REWG/8847zmsw10Mbap5nzpxp33bbbfaePXvsY8eO2S+++KJ900032c8//7zzGszz0Pbv329HRkbav/jFL+yjR4/a27Zts8ePH2+/+uqrTuZGfz+k6HyOi/cBGDdunO31eu0HHnjAPnTokLP/woUL9pNPPml7PB7b7Xbb3/rWt+yDBw+GvUZ3d7f9+OOP2xMmTLCjo6PtvLw8u62tLSzzySef2A899JAdGxtrx8bG2g899JAdCASuxSneEAab59bWVlvSJR979uxxXoN5HtpQv8/9XaroMM/DM5y5fuGFF+yvf/3r9k033WTfcccdYfd2sW3mejiGmueOjg578eLFttfrtW+66SY7LS3NfuaZZ+wLFy44GeZ5eP7jP/7DzsjIsN1ut/3Xf/3X9ubNm8P23+jvhy7btu3LWxMCAAC4MXGNDgAAMBZFBwAAGIuiAwAAjEXRAQAAxqLoAAAAY1F0AACAsSg6AADAWBQdAABgLIoOAAAwFkUHAAAYi6IDAACMRdEBAADG+n8R+cCAqJt6ZQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.figure()\n", + "plt.hist(a9[\"z_mag_x_fringe\"], bins=50,\n", + " range=[5000,6000], alpha=0.5)\n", + "plt.hist(a9[\"z_mag_x\"], bins=50,\n", + " range=[5000,6000], alpha=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-1.7314211457299337e-05\n", + "0.0068900126858267696\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "plt.figure()\n", + "plt.hist(a8[\"BX\"], bins=50,\n", + " range=[-1.2,1.2], alpha=0.5)\n", + "plt.hist(a8[\"tx_ref\"], bins=50,\n", + " range=[-1.2,1.2], alpha=0.5)\n", + "\n", + "print(np.mean(a8[\"BX\"] - a8[\"tx_ref\"]))\n", + "print(np.std(a8[\"BX\"] - a8[\"tx_ref\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-1.636716336624133e-05\n", + "0.006898310643139335\n" + ] + }, + { + "data": { + "image/png": "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/1z/9E//pHHjxmnEiBG66aab9Mgjj+jChQtOjW3bWrNmjTwej0aMGKHp06fr0KFDQc/T1tamZcuWKS4uTpGRkcrKytKJEyeCavx+v3w+nyzLkmVZ8vl8OnPmTF/vEgAAGKL6POisW7dOTz/9tIqLi3XkyBGtX79ejz32mH796187NevXr9fGjRtVXFys/fv3y+12a/bs2WptbXVq8vLyVFpaqpKSElVWVurs2bPKzMxUZ2enU5Odna26ujqVlZWprKxMdXV18vl8fb1LAABgiHLZtm335RNmZmYqISFBW7dudcb+5m/+RiNHjtT27dtl27Y8Ho/y8vK0cuVKSV/M3iQkJGjdunVasmSJAoGARo8ere3bt2vBggWSpJMnTyoxMVG7du1SRkaGjhw5ookTJ6qmpkapqamSpJqaGnm9Xh09elRJSUnd9trS0iLLshQIBBQdHd2XhwHAl6jeWjDYLfQL76INg90CMGz05vO7z2d07rrrLv3nf/6nPvjgA0nSf//3f6uyslLf/e53JUn19fVqampSenq6s01ERISmTZumqqoqSVJtba06OjqCajwej5KTk52a6upqWZblhBxJSktLk2VZTs2l2tra1NLSEvQAAADmCu3rJ1y5cqUCgYBuvvlmhYSEqLOzU48++qh++MMfSpKampokSQkJCUHbJSQk6NixY05NeHi4Ro0a1aXm4vZNTU2Kj4/v8vrx8fFOzaWKioq0du3ar7aDAABgyOjzGZ0XX3xRzz//vF544QW98847eu6557RhwwY999xzQXUulyto2bbtLmOXurTmcvVXep7Vq1crEAg4j4aGhp7uFgAAGIL6fEbn4Ycf1qpVq3TfffdJkiZNmqRjx46pqKhICxculNvtlvTFjMyYMWOc7Zqbm51ZHrfbrfb2dvn9/qBZnebmZk2ZMsWpOXXqVJfXP336dJfZoosiIiIUERHRNzsKAACueX0+o/PZZ5/pa18LftqQkBDn8vJx48bJ7XarvLzcWd/e3q6KigonxKSkpCgsLCyoprGxUQcPHnRqvF6vAoGA9u3b59Ts3btXgUDAqQEAAMNbn8/ozJ07V48++qjGjh2rW265RQcOHNDGjRv193//95K++LopLy9PhYWFGj9+vMaPH6/CwkKNHDlS2dnZkiTLsrRo0SLl5+crNjZWMTExKigo0KRJkzRr1ixJ0oQJ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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "plt.figure()\n", + "plt.hist(a9[\"BX\"], bins=50,\n", + " range=[-1.2,1.2], alpha=0.5)\n", + "plt.hist(a9[\"tx_ref\"], bins=50,\n", + " range=[-1.2,1.2], alpha=0.5)\n", + "\n", + "print(np.mean(a9[\"BX\"] - a9[\"tx_ref\"]))\n", + "print(np.std(a9[\"BX\"] - a9[\"tx_ref\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([8.0000e+00, 1.8000e+01, 1.4000e+01, 6.0000e+00, 1.1000e+01,\n", + " 1.4000e+01, 1.9000e+01, 2.3000e+01, 3.0000e+01, 2.8000e+01,\n", + " 3.2000e+01, 4.6000e+01, 5.0000e+01, 6.3000e+01, 7.1000e+01,\n", + " 7.7000e+01, 1.1300e+02, 1.1400e+02, 1.8700e+02, 2.1900e+02,\n", + " 3.0900e+02, 4.7800e+02, 8.7900e+02, 2.6160e+03, 1.7745e+04,\n", + " 3.7033e+04, 7.7140e+03, 2.2400e+03, 9.3700e+02, 5.3900e+02,\n", + " 3.3700e+02, 2.6400e+02, 1.9500e+02, 1.3600e+02, 1.1700e+02,\n", + " 1.1200e+02, 7.7000e+01, 6.0000e+01, 4.9000e+01, 4.3000e+01,\n", + " 3.2000e+01, 2.0000e+01, 2.0000e+01, 2.0000e+01, 2.3000e+01,\n", + " 2.0000e+01, 2.1000e+01, 1.6000e+01, 1.4000e+01, 1.4000e+01]),\n", + " array([-0.25, -0.24, -0.23, -0.22, -0.21, -0.2 , -0.19, -0.18, -0.17,\n", + " -0.16, -0.15, -0.14, -0.13, -0.12, -0.11, -0.1 , -0.09, -0.08,\n", + " -0.07, -0.06, -0.05, -0.04, -0.03, -0.02, -0.01, 0. , 0.01,\n", + " 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1 ,\n", + " 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19,\n", + " 0.2 , 0.21, 0.22, 0.23, 0.24, 0.25]),\n", + " )" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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999/f9x1110+iOoMJuNcM9bhw4djZGQkmpqaxmxvamo67Tk9ePDguPv/+9//jsOHD0/ZrHl2NueZ8k3Gef7Od74Tx44di9tvv30qRsw1cZKABx98MAqFwhm/9u7dGxERhULhlH8+y7Jxt/+vEydOxJ133hknT56MTZs2TfrvkQeVOtec3v+evzc7p+PtP952xir3PHN2zvY8P/744/Hggw/G1q1bx/0foVo3s9oDEHHPPffEnXfeecZ93vnOd8Yf/vCHeOmll0753j//+c9T6v1/nThxIm6//fbYv39//PKXv6zZVZNKnGvG19jYGDNmzDjl/yoPHTp02nP6jne8Y9z9Z86cGW9729umbNY8O5vzTPnO5Txv3bo1Vq1aFU8++WR85CMfmcoxc0ucJKCxsTEaGxvfdL+lS5fG4OBg/Pa3v42rr746IiJ+85vfxODgYFx77bWn/efeCJO//OUv8cwzz9T0f9Sn+lxzerNmzYrW1tbo6uqKW265ZXR7V1dX3HzzzeP+M0uXLo2f/exnY7b94he/iCVLlsT5558/pfPm1dmcZ8p3tuf58ccfj8985jPx+OOPx8c+9rFKjJpP1bwal/J99KMfza688spsz5492Z49e7Irrrgi+/jHPz5mn8suuyx76qmnsizLshMnTmQ33XRTNn/+/Ky3tzc7cODA6Nfw8HA1foXcKPdcZ1mWHTlyJOvp6cl+/vOfZxGRPfHEE1lPT0924MCBSo+fpCeeeCI7//zzsx/84AdZX19ftmbNmuzCCy/M/va3v2VZlmX3339/1tnZObr/X//61+yCCy7I7rvvvqyvry/7wQ9+kJ1//vnZj3/842r9CrlQ7nnOsizr6enJenp6stbW1uyuu+7Kenp6sj/96U/VGD83yj3Pjz32WDZz5sysVCqN+W/xK6+8Uq1fIVniJGeOHDmSffKTn8zmzJmTzZkzJ/vkJz+Zvfzyy2P2iYjshz/8YZZl/7mldbyvZ555puLz50m55zrLsuyHP/zhuOf6gQceqOjsKSuVStmCBQuyWbNmZe9973uzZ599dvR7K1euzK677rox+//qV7/K3vOe92SzZs3K3vnOd2abN2+u8MT5VO55Hu/f2wULFlR26Bwq5zxfd911457nlStXVn7wxBWy7P+uLgMASIC7dQCApIgTACAp4gQASIo4AQCSIk4AgKSIEwAgKeIEAEiKOAEAkiJOAICkiBMAICniBABIijgBAJLy/wBqsbpacCSyEgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "a = a8\n", + "a[\"slope_diff_rel\"] = (a[\"BX\"] - a[\"tx_ref\"]) / a[\"tx_ref\"]\n", + "plt.figure()\n", + "plt.hist(a[\"slope_diff_rel\", a[\"chi2_x\"] < 0.1], bins=50,\n", + " range=[-0.25,0.25], alpha=0.5, log=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.6 (conda)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "a2eff8b4da8b8eebf5ee2e5f811f31a557e0a202b4d2f04f849b065340a6eda6" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/parameterisations/notebooks/x_curvature.ipynb b/parameterisations/notebooks/x_curvature.ipynb new file mode 100644 index 0000000..d7d3cf6 --- /dev/null +++ b/parameterisations/notebooks/x_curvature.ipynb @@ -0,0 +1,366 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import uproot\n", + "import awkward as ak\n", + "input_tree_md = uproot.open({\"/work/guenther/reco_tuner/data/param_data_MD_selected_8520.root\": \"Selected\"})\n", + "input_tree_mu = uproot.open({\"/work/guenther/reco_tuner/data/param_data_MU_selected_8520.root\": \"Selected\"})\n", + "# this is an event list of dictionaries containing awkward arrays\n", + "array_md = input_tree_md.arrays()\n", + "array_mu = input_tree_mu.arrays()\n", + "array = ak.concatenate([array_md, array_mu])\n", + "array[\"dSlope_fringe\"] = array[\"tx_ref\"] - array[\"tx\"]\n", + "array[\"z_mag_x_fringe\"] = (array[\"x\"] - array[\"x_ref\"] - array[\"tx\"] * array[\"z\"] + array[\"tx_ref\"] * array[\"z_ref\"] ) / array[\"dSlope_fringe\"]\n", + "def format_array(name, coef):\n", + " coef = [str(c)+\"f\" for c in coef if c != 0.0]\n", + " code = f\"constexpr std::array {name}\"\n", + " code += \"{\" + \", \".join(list(coef)) +\"};\"\n", + " return code" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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82lUBwCIGRRBxID5Rdkal5milZvqVVHb2KPDbtnkXIILACCmEF5iRGFOmgpz0tTe6VRb+3GlJCdQ4wIAiEmElxiTnGgntAAAYho1LwAAwFIILwAAwFIILwAAwFJCGl7+8Ic/6LzzztOJJ56oU045xafXmKappUuXKisrSyeccIIuuugi1dbWhnKYAADAQkIaXo4dO6Y5c+bo3/7t33x+zX333acHHnhADz74oLZs2aLMzExNmzZNbW1tIRwpAACwipCGl7vuuku33HKLJkyY4NP5pmlqxYoVuu222/Szn/1M+fn5evLJJ/X111/rr3/9ayiHCgAALCKqal7q6+vV2NiokpISz7GkpCRdeOGF2rx5c7+v6ejoUGtra48HAACIXVEVXhobGyVJGRkZPY5nZGR4ftbb8uXL5XA4PI9Ro0aFfJwAACBy/A4vS5culWEYgz5qamqGNCjD6HmPHtM0+xxzW7JkiVpaWjyP/fv3D+mzAQBAdPO7w+4NN9ygefPmDXpOTk5OQIPJzMyU1HUFZsSIEZ7jzc3Nfa7GuCUlJSkpKSmgzwMAANbjd3hJT09Xenp6KMai3NxcZWZmqrKyUuecc46krh1LGzZs0L333huSzwQAANYS0pqXffv2adu2bdq3b5+cTqe2bdumbdu26ejRo55zxo0bp7Vr10rqWi66+eab9cc//lFr167V9u3bde211+rEE0/UVVddFcqhAgAAiwjpjRnvuOMOPfnkk57n7qspb775pi666CJJ0q5du9TS0uI55ze/+Y3++c9/6t///d/15ZdfatKkSaqoqFBKSkoohwoAACzCME3TjPQggqm1tVUOh0MtLS1KTU2N9HAAAIAP/Pn7HVVbpQEAALwhvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAAEshvPihvdOpg20dau90RnooAADErYRID8AKtjQc1sqNe1S5o0kuU7IZ0rS8DF03ZbQKc9IiPTwAAOIKV168eLp6r64sr9LrtV3BRZJcprS+rllzyqu0unpvZAcIAECcIbwMYkvDYd2xbrvMfn7mdJkyJd2+brtqGg6He2gAAMQtwssgVm7cI5vNGPQcm83Qyk31YRoRAAAgvAygvdOpyh1Ncrr6u+7yLafLVEVtI0W8AACECeFlAG3tx+Ult3i4zK7zAQBA6BFeBpCSnCAvK0YeNqPrfAAAEHqElwEkJ9o1LS9Ddi8Jxm4zVDI+U8mJ9jCNDACA+EZ4GUTZlNFyeVk7crlMlU3ODdOIAAAA4WUQ5+akadnsfBlSnyswdpshQ9Ky2fk0qgMAIIwo1PBiflG2xmWmaOWmelXUNvbosFs2OZfgAgBAmBFefFCYk6bCnDS1dzrV1n5cKckJ1LgAABAhhBc/JCfaCS0AAEQYNS8AAMBSCC8AAMBSCC8AAMBSCC8AAMBSCC8AAMBSCC8AAMBSCC8AAMBSCC8AAMBSCC8AAMBSYq7Drml23QW6tbU1wiMBAAC+cv/ddv8dH0zMhZe2tjZJ0qhRoyI8EgAA4K+2tjY5HI5BzzFMXyKOhbhcLn3++edKSUmRYRhez29tbdWoUaO0f/9+paamhmGEsYF5CxxzFzjmLnDMXeCYu8D4O2+maaqtrU1ZWVmy2Qavaom5Ky82m00jR470+3Wpqan8UgaAeQsccxc45i5wzF3gmLvA+DNv3q64uFGwCwAALIXwAgAALCXuw0tSUpLuvPNOJSUlRXoolsK8BY65CxxzFzjmLnDMXWBCOW8xV7ALAABiW9xfeQEAANZCeAEAAJZCeAEAAJZCeAEAAJYSd+Hlyy+/VGlpqRwOhxwOh0pLS3XkyBGvr6urq9Oll14qh8OhlJQUFRUVad++faEfcBQJdO7crr/+ehmGoRUrVoRsjNHK37nr7OzUb3/7W02YMEEnnXSSsrKydM011+jzzz8P36Aj5OGHH1Zubq6Sk5NVUFCgjRs3Dnr+hg0bVFBQoOTkZI0ePVrl5eVhGmn08WfuXnzxRU2bNk2nnXaaUlNTVVxcrNdffz2Mo40e/v7Oub3zzjtKSEjQD37wg9AOMIr5O3cdHR267bbblJ2draSkJH33u9/VX/7yF/8/2IwzM2bMMPPz883NmzebmzdvNvPz881LLrlk0Nf84x//MNPS0sxf//rX5gcffGB+8skn5v/+7/+aTU1NYRp1dAhk7tzWrl1rnn322WZWVpb5X//1X6EdaBTyd+6OHDliTp061Xz22WfNnTt3mlVVVeakSZPMgoKCMI46/P72t7+ZiYmJ5mOPPWbu2LHDvOmmm8yTTjrJ3Lt3b7/n79mzxzzxxBPNm266ydyxY4f52GOPmYmJiebzzz8f5pFHnr9zd9NNN5n33nuv+d5775kff/yxuWTJEjMxMdH84IMPwjzyyPJ33tyOHDlijh492iwpKTHPPvvs8Aw2ygQyd5deeqk5adIks7Ky0qyvrzffffdd85133vH7s+MqvOzYscOUZFZXV3uOVVVVmZLMnTt3Dvi6uXPnmvPnzw/HEKNWoHNnmqb56aefmqeffrq5fft2Mzs7O+7Cy1Dmrrv33nvPlOT1P6pWNnHiRHPhwoU9jo0bN85cvHhxv+f/5je/MceNG9fj2PXXX28WFRWFbIzRyt+5609eXp551113BXtoUS3QeZs7d675+9//3rzzzjvjNrz4O3evvvqq6XA4zC+++GLInx1Xy0ZVVVVyOByaNGmS51hRUZEcDoc2b97c72tcLpdefvlljRkzRtOnT9fw4cM1adIkrVu3Lkyjjg6BzJ3UNX+lpaX69a9/rfHjx4djqFEn0LnrraWlRYZh6JRTTgnBKCPv2LFjev/991VSUtLjeElJyYDzVFVV1ef86dOnq6amRp2dnSEba7QJZO56c7lcamtrU1paWiiGGJUCnbfHH39cn3zyie68885QDzFqBTJ3f//731VYWKj77rtPp59+usaMGaNbb71V//znP/3+/LgKL42NjRo+fHif48OHD1djY2O/r2lubtbRo0f1n//5n5oxY4YqKip0+eWX62c/+5k2bNgQ6iFHjUDmTpLuvfdeJSQk6MYbbwzl8KJaoHPXXXt7uxYvXqyrrroqZm8Md+jQITmdTmVkZPQ4npGRMeA8NTY29nv+8ePHdejQoZCNNdoEMne93X///frqq6905ZVXhmKIUSmQedu9e7cWL16sNWvWKCEh5u5t7LNA5m7Pnj3atGmTtm/frrVr12rFihV6/vnn9atf/crvz4+J8LJ06VIZhjHoo6amRpJkGEaf15um2e9xqetfI5J02WWX6ZZbbtEPfvADLV68WJdccklMFAaGcu7ef/99/fd//7eeeOKJAc+xslDOXXednZ2aN2+eXC6XHn744aB/j2jTe068zVN/5/d3PB74O3duzzzzjJYuXapnn32236Ad63ydN6fTqauuukp33XWXxowZE67hRTV/fudcLpcMw9CaNWs0ceJEXXzxxXrggQf0xBNP+H31JSZi4w033KB58+YNek5OTo4+/PBDNTU19fnZwYMH+6RHt/T0dCUkJCgvL6/H8bPOOkubNm0KfNBRIpRzt3HjRjU3N+uMM87wHHM6nfqP//gPrVixQg0NDUMae6SFcu7cOjs7deWVV6q+vl5vvPFGzF51kbr+v2a32/v8q625uXnAecrMzOz3/ISEBJ166qkhG2u0CWTu3J599ln98pe/1HPPPaepU6eGcphRx995a2trU01NjbZu3aobbrhBUtcfZNM0lZCQoIqKCv34xz8Oy9gjLZDfuREjRuj000+Xw+HwHDvrrLNkmqY+/fRTnXnmmT5/fkyEl/T0dKWnp3s9r7i4WC0tLXrvvfc0ceJESdK7776rlpYWnXfeef2+ZtiwYTr33HO1a9euHsc//vhjZWdnD33wERbKuSstLe3zH8Pp06ertLRUv/jFL4Y++AgL5dxJ3waX3bt3680334z5P8bDhg1TQUGBKisrdfnll3uOV1ZW6rLLLuv3NcXFxXrppZd6HKuoqFBhYaESExNDOt5oEsjcSV1XXP7lX/5FzzzzjH7605+GY6hRxd95S01N1UcffdTj2MMPP6w33nhDzz//vHJzc0M+5mgRyO/c+eefr+eee05Hjx7VySefLKnrb6nNZtPIkSP9G8CQS34tZsaMGeb3v/99s6qqyqyqqjInTJjQZ8vq2LFjzRdffNHz/MUXXzQTExPNRx991Ny9e7f5P//zP6bdbjc3btwY7uFHVCBz11s87jYyTf/nrrOz07z00kvNkSNHmtu2bTMPHDjgeXR0dETiK4SFe+vlqlWrzB07dpg333yzedJJJ5kNDQ2maZrm4sWLzdLSUs/57q3St9xyi7ljxw5z1apVcb9V2te5++tf/2omJCSYDz30UI/fryNHjkTqK0SEv/PWWzzvNvJ37tra2syRI0eaP//5z83a2lpzw4YN5plnnmmWlZX5/dlxF16++OIL8+qrrzZTUlLMlJQU8+qrrza//PLLHudIMh9//PEex1atWmV+73vfM5OTk82zzz7bXLduXfgGHSUCnbvu4jW8+Dt39fX1pqR+H2+++WbYxx9ODz30kJmdnW0OGzbM/OEPf2hu2LDB87MFCxaYF154YY/z33rrLfOcc84xhw0bZubk5JiPPPJImEccPfyZuwsvvLDf368FCxaEf+AR5u/vXHfxHF5M0/+5q6urM6dOnWqecMIJ5siRI81FixaZX3/9td+fa5jmN9VtAAAAFhATu40AAED8ILwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABL+f9MrghzMYJZxwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "import numpy as np\n", + "bins = 50#np.linspace( -1.5, 1.5, 50 )\n", + "sns.regplot(x=ak.to_numpy(array[\"dSlope_fringe\"]), y=ak.to_numpy(array[\"CX_ex\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGsCAYAAADg5swfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtfUlEQVR4nO3dfXDU1aH/8c93l5AIJKkhkoAgCT7FEKuYKCAgesvTtLalMxeuV1BxChfuUAt17q+V+6sKP1qhtzqdO95qFDqosRavT/TBqQJjpShBEoFWErQgBCkPCTGSBDQh7J7fH2nWLNnsbmB3zz68XzM79+a7Z3fPyaHuJ+fp6xhjjAAAACxw2a4AAABIXQQRAABgDUEEAABYQxABAADWEEQAAIA1BBEAAGANQQQAAFhDEAEAANYQRAAAgDUEEQAAYE3CBJE///nP+uY3v6lhw4bJcRxt2LAh6p955MgRzZ07V4MHD9aAAQN0/fXX6/3334/65wIAkCoSJoicPn1a1113nf7nf/4nJp/32WefacKECUpLS9Mf//hH1dbW6rHHHtNXvvKVmHw+AACpwEnEm945jqPXXntNM2fO9F07c+aMfvzjH+vXv/61Tp48qZKSEv3sZz/Trbfeel6f8cADD+jdd9/V1q1bI1NpAADQQ8KMiIRy77336t1339X69ev117/+VbNmzdKMGTO0b9++83q/3/3udyorK9OsWbM0ZMgQjRkzRmvWrIlwrQEASG1JMSLy8ccf68orr9Tf//53DRs2zFduypQpuummm/TII4/0+TMyMjIkSffff79mzZqlHTt2aOnSpXrqqad09913R6QdAACkun62KxAJO3fulDFGV111ld/19vZ2DR48WJJUV1enwsLCoO+zePFi3xoUr9ersrIyX4gZM2aMampq9OSTTxJEAACIkKQIIl6vV263W++//77cbrffc4MGDZIkXXrppdq7d2/Q97n44ot9///QoUNVXFzs9/w111yjV155JUK1BgAASRFExowZI4/Ho4aGBk2aNClgmbS0NBUVFYX9nhMmTNBHH33kd+1vf/ubRo4ceUF1BQAAX0qYIHLq1Cnt37/f9/PBgwe1e/du5eTk6KqrrtKcOXN0991367HHHtOYMWPU2Niot956S9dee62+/vWv9/nzfvCDH+jmm2/WI488otmzZ2vHjh16+umn9fTT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98H5tDEcid6P5yNR+/HFF1/Ud7/7Xb300kuaMmWK33PR7Me4HhHJzc1VUVFR0EdGRobGjx+v5uZm7dixw/fa9957T83NzUG/aLpCyL59+7R58+Ye/3EoLS1VWlqa39D2sWPHtGfPnoh9gUW7jeejpqZGHR0dfl96F8J2GxO9H7umW7rX/8yZM9qyZUvQ+ke6H3vTv39/lZaW9pgC2rRpU6/1Gz9+fI/yGzduVFlZmdLS0oKWifS/93BEq43nMsZo9+7dUe+zQM6njeFI9H48H4nYj7/5zW80b948vfDCC/rGN77R4/mo9uMFL3eNEzNmzDBf/epXTWVlpamsrDTXXnttjy2RV199tXn11VeNMcZ0dHSYb33rW2b48OFm9+7dfluu2tvbfa9ZtGiRGT58uNm8ebPZuXOn+ad/+ier2z770kZjjPn000/Nrl27zOuvv24kmfXr15tdu3b5tpbt37/frFixwlRVVZmDBw+a119/3RQVFZkxY8YkTRuNSfx+XL16tcnOzjavvvqq+eCDD8y//uu/+m3ftd2PXdsFf/WrX5na2lqzdOlSM3DgQFNXV2eMMeaBBx4wd911l69819bWH/zgB6a2ttb86le/6rG19d133zVut9usXr3a7N2716xevToutn1Gso3Lly83b7zxhvn444/Nrl27zL333mv69etn3nvvvZi3z5i+t9EYY3bt2mV27dplSktLzZ133ml27dplampqfM8nej8aE7qNid6PL7zwgunXr5/55S9/2ev2/2j2Y9IEkU8//dTMmTPHZGZmmszMTDNnzhzz2Wef+ZWRZNatW2eM+XKrZ6DHn/70J99rvvjiC/O9733P5OTkmIsuusjcfvvt5pNPPoldw7rpaxuN6dxWFqiNDz/8sDHGmE8++cTccsstJicnx/Tv399cfvnl5vvf/7759NNPY9ewbqLRRmMSvx+9Xq95+OGHTX5+vklPTze33HKL+eCDD3zPx0M//vKXvzQjR440/fv3NzfccIPZsmWL77l77rnHTJ482a/822+/bcaMGWP69+9vCgoKzJNPPtnjPV966SVz9dVXm7S0NFNUVGReeeWVaDcjqEi3cenSpeayyy4z/fv3N5dccomZNm2a2bZtWyya0qu+tjHQ//ZGjhzpVybR+zFUGxO9HydPnhywjffcc4/fe0arHx1j/rF6CgAAIMbieo0IAABIbgQRAABgDUEEAABYQxABAADWEEQAAIA1BBEAAGANQQQAAFhDEAEAANYQRAAAgDUEEQAAYA1BBAAAWEMQAQAA1vx/O3rDrWHu+ZoAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bins = 50#np.linspace( -1., 1., 50 )\n", + "sns.regplot(x=ak.to_numpy(array[\"tx\"]), y=ak.to_numpy(array[\"CX_ex\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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NjbqmmuuSW6HU8iQIUNUVFSkXbt2SbI3Tmk7I5KXl6cRI0ZEfHi93jN+/a1bt8rr9QaXsI4bN05vvfVWyD3/1atXq7Cw8KwCTzLEc6zGjRun7du365NPPgleW716tTIzMzV69Ohgm3Qdq1Odzdht3bpVkoJ/HGMZOyc455xzNHr0aK1Zsybk+po1axz9oXCqjo4O7dy5U0OGDFFJSYkKCgpCxuz48eN68803HT9msYzN6NGjlZGREdLmk08+0fbt2x09fp9++qn2798f/BtlbZwSVgabQvbt22e2bt1qHn/8cTNgwACzdetWs3XrVtPW1maMMebVV181S5YsMdu2bTO7d+82S5cuNdnZ2ebb3/528DUOHz5s8vPzzV133WW2bdtmfve735ns7Gzz9NNP2/qxEiLaWJ04ccKUlZWZG264wWzZssWsXbvWDB061Nx3333B13DKWJ3snXfeMc8884zZunWr2bNnj3nppZdMYWGh+epXvxpsE8vYOcXKlStNRkaG+dnPfmZ27Nhh5s6da/r372/q6upsd82aBx980Kxbt87s2bPHbNq0ydx6660mKysrOCZPPfWUycnJMb/73e/Mtm3bzF133WWGDBliWltbLfc88dra2oJ/iyQF/7+2b98+Y0xsYzN79mwzdOhQs3btWrNlyxbz5S9/2Vx++eXmxIkTtn6suIs0Tm1tbebBBx8077zzjtm7d6954403zLhx48z5559vfZwcEUSmT59uJJ32eOONN4wxxrz++utm1KhRZsCAAaZfv36mrKzM/Od//qfp7OwMeZ3333/fTJw40WRmZpqCggLz2GOP9brlqNHGypiusHLLLbeYvn37mtzcXHPfffeFLNU1xhljdbLNmzebMWPGmJycHOP1es0Xv/hFM3/+fHP06NGQdrGMnVP813/9lykqKjLnnHOOufLKK82bb75pu0tW3XHHHWbIkCEmIyPDFBYWmn/6p38ytbW1wef9fr+ZP3++KSgoMJmZmeZLX/qS2bZtm8UeJ88bb7wR9u/S9OnTjTGxjc3nn39u7rvvPpObm2v69u1rbr31VvPRRx9Z+GkSJ9I4HTt2zEyaNMmcd955JiMjw1xwwQVm+vTpp42BjXFyGdPLt7sEAAApK21rRAAAQPojiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAGoIIAACwhiACAACsIYgAAABrCCIAAMAagggAALDm/wMvSKgP3Lx94QAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bins = 50#np.linspace( -1., 1., 50 )\n", + "sns.regplot(x=ak.to_numpy(array[\"x\"]), y=ak.to_numpy(array[\"CX\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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m83YsWPNvn37Br1+79695mtf+5q5+eabTX19vXnsscdMenq6efHFF2M8cndFet9uvvlmc//995u3337bfPjhh2bVqlUmPT3dvPPOOzEeufsivXchR44cMVOmTDGlpaXmzDPPjM1g40w09+7SSy81s2bNMtXV1aaxsdG89dZbZuvWrRF/dsIGkfr6eiPJbNu2rfe5mpoaI8ns2rVryNddeeWVZunSpbEYYtyK9t4ZY8wnn3xiJk2aZOrq6kxeXl7KBZHR3Lu+3n77bSNpxH9BJrJzzjnHLF++vN9zhYWFZuXKlYNe/8Mf/tAUFhb2e+7GG280s2fPdmyM8SjS+zaYoqIic++999o9tLgX7b278sorzZ133mnuueeelA0ikd673/zmNyYrK8t89tlno/7shF2aqampUVZWlmbNmtX73OzZs5WVlaU333xz0NcEg0H993//t6ZNm6aLLrpI48eP16xZs1RZWRmjUceHaO6d1HP/li1bpttvv13Tp0+PxVDjTrT37nhtbW2yLEt/8id/4sAo3ffll19qx44dKi0t7fd8aWnpkPeppqZmwPUXXXSRamtr1d3d7dhY40k09+14wWBQHR0dys7OdmKIcSvae7du3Trt2bNH99xzj9NDjFvR3Ltf//rXKikp0U9/+lNNmjRJ06ZN09///d/rD3/4Q8Sfn7BBpLm5WePHjx/w/Pjx49Xc3Dzoa1pbW/XFF1/oJz/5iRYuXKiqqipddtll+ou/+Att2rTJ6SHHjWjunSTdf//9SktL09/+7d86Oby4Fu2966uzs1MrV67U1VdfnbQHbx06dEiBQEA5OTn9ns/JyRnyPjU3Nw96/bFjx3To0CHHxhpPorlvx/vZz36mo0ePavHixU4MMW5Fc+8++ugjrVy5Uk8//bTS0uL6DFhHRXPv9u7dqy1btqiurk4vv/yyHnzwQb344ou66aabIv78uAsiq1evlmVZwz5qa2slSZZlDXi9MWbQ56We/1KQpO9///u69dZbddZZZ2nlypW65JJLkqIozsl7t2PHDv3rv/6rnnjiiSGvSWRO3ru+uru7ddVVVykYDOrhhx+2/eeIN8ffk5Hu02DXD/Z8sov0voU8++yzWr16tZ5//vlBA3MqCPfeBQIBXX311br33ns1bdq0WA0vrkXyexcMBmVZlp5++mmdc845+u53v6t//ud/1hNPPBHxrEjcRcAVK1boqquuGvaa/Px8/e53v1NLS8uAvzt48OCAVBcybtw4paWlqaioqN/zp59+urZs2RL9oOOEk/du8+bNam1t1Te/+c3e5wKBgP7u7/5ODz74oJqamkY1drc5ee9Curu7tXjxYjU2Nmrjxo1JOxsi9fx/zev1DvivqdbW1iHv04QJEwa9Pi0tTSeddJJjY40n0dy3kOeff15//dd/rRdeeEHz5893cphxKdJ719HRodraWr377rtasWKFpJ4vV2OM0tLSVFVVpT/7sz+LydjdFs3v3Te+8Q1NmjRJWVlZvc+dfvrpMsbok08+0dSpU8P+/LgLIuPGjdO4ceNGvG7OnDlqa2vT22+/rXPOOUeS9NZbb6mtrU3nnnvuoK8ZM2aMZs6cqQ8++KDf8x9++KHy8vJGP3iXOXnvli1bNuBfbhdddJGWLVum66+/fvSDd5mT9076Ywj56KOP9Nvf/jbpv1jHjBmjGTNmqLq6Wpdddlnv89XV1fr+978/6GvmzJmjV155pd9zVVVVKikpUXp6uqPjjRfR3DepZybkr/7qr/Tss8/q4osvjsVQ406k9y4zM1Pvv/9+v+cefvhhbdy4US+++KIKCgocH3O8iOb37rzzztMLL7ygL774QieeeKKknu9Sj8ejyZMnRzaAUZe7umjhwoXmW9/6lqmpqTE1NTXmjDPOGLCN8rTTTjMvvfRS759feuklk56ebh599FHz0UcfmYceesh4vV6zefPmWA/fVdHcu+Ol4q4ZYyK/d93d3ebSSy81kydPNu+99575/e9/3/vo6upy40eIidB2wMcff9zU19ebW265xYwdO9Y0NTUZY4xZuXKlWbZsWe/1oe27t956q6mvrzePP/54Sm/fDfe+PfPMMyYtLc38/Oc/7/e7deTIEbd+BNdEeu+Ol8q7ZiK9dx0dHWby5Mnm8ssvNzt37jSbNm0yU6dONWVlZRF/dkIHkc8++8wsWbLE+P1+4/f7zZIlS8znn3/e7xpJZt26df2ee/zxx82pp55qfD6fOfPMM01lZWXsBh0nor13faVqEIn03jU2NhpJgz5++9vfxnz8sfTzn//c5OXlmTFjxphvf/vbZtOmTb1/d+2115rzzz+/3/Wvv/66Ofvss82YMWNMfn6+eeSRR2I84vgQyX07//zzB/3duvbaa2M/8DgQ6e9cX6kcRIyJ/N41NDSY+fPnmxNOOMFMnjzZ3HbbbeZ///d/I/5cy5ivqsEAAABiLO52zQAAgNRBEAEAAK4hiAAAANcQRAAAgGsIIgAAwDUEEQAA4BqCCAAAcA1BBAAAuIYgAgAAXEMQAQAAriGIAAAA1xBEAACAa/4/78qH1hcOCsEAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bins = 50#np.linspace( -1., 1., 50 )\n", + "sns.regplot(x=ak.to_numpy(array[\"dSlope_fringe\"]), y=ak.to_numpy(array[\"DX\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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j85RfnZyWOuJ+vCybds2paenR7oMAAC6tfzsZH3w8/FqamlVQ9NJJSb0CNsYlzOFNLw0Njbqk08+cT+vqKhQWVmZkpOTdeGFF2rRokXav3+/XnzxRUnSo48+quzsbA0dOlQnTpzQypUrtXr1aq1evTqUZQIAgAAlxDkiFlrahDS8lJaW6sorr3Q/X7BggSRp1qxZev7551VdXa2qqir36ydOnNDChQu1f/9+9erVS0OHDtUbb7yha665JpRlAgAACwnbgN1wCWbADwAAiA7BfH9H1VRpAAAAfwgvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUkIaXjZt2qQpU6YoIyNDNptNa9eu9bvPxo0bNWLECCUkJGjAgAFatmxZKEsEAAAWE9LwcuzYMV188cV6/PHHA2pfUVGha665RmPGjNG2bdv085//XD/5yU+0evXqUJYJAAAspEco33zy5MmaPHlywO2XLVumCy+8UI8++qgk6aKLLlJpaal+85vf6Prrrw9RlQAAwEqiasxLcXGxCgsLPbZNnDhRpaWlamlp8bpPc3Oz6uvrPR4AACB2RVV4qampUWpqqse21NRUnTx5UgcPHvS6z9KlS+V0Ot2PzMzMcJQKAAAiJKrCiyTZbDaP58YYr9vbLFq0SHV1de7Hvn37Ql4jAACInJCOeQlWWlqaampqPLbV1taqR48e6tevn9d94uPjFR8fH47yAABAFIiqMy8jR45UUVGRx7Z169YpPz9fcXFxEaoKAABEk5CGl8bGRpWVlamsrEzSqanQZWVlqqqqknTqks8tt9zibj9v3jzt3btXCxYsUHl5uX7/+9/r2Wef1cKFC0NZJgAAsJCQXjYqLS3VlVde6X6+YMECSdKsWbP0/PPPq7q62h1kJCknJ0dvvvmm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3KXZybp/ap68nXtx2G2ySbp/ap7ys5PDXRoAAF4xiAGaUZCl3LRE3fpcicdCdROGpGr26ByCCwAgqhBeIEnKz07W+X17ue9tNLD/OVo2Y0SEqwIAoD3CC9yyU3p7/TMAANGE8AK3p2fmR7oEAAD8YsAuAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwFMILAACwlJCGlwceeECjRo1S79691bdv34D2McZo8eLFysjIUK9evTRu3Djt3LkzlGUCAAALCWl4OXHihG644Qb96Ec/CnifX//61/rtb3+rxx9/XCUlJUpLS9OECRPU0NAQwkoBAIBVhDS8LFmyRHfeeaeGDRsWUHtjjB599FH94he/0L/8y78oLy9PL7zwgo4fP66XX345lKUCAACLiKoxLxUVFaqpqVFhYaF7W3x8vMaOHavNmzd73ae5uVn19fUeDwAAELuiKrzU1NRIklJTUz22p6amul8709KlS+V0Ot2PzMzMkNcJAAAiJ+jwsnjxYtlsNp+P0tLSsyrKZrN5PDfGtNvWZtGiRaqrq3M/9u3bd1afDQAAoluPYHe4/fbbNX36dJ9tsrOzO1VMWlqapFNnYNLT093ba2tr252NaRMfH6/4+PhOfR4AALCeoMNLSkqKUlJSQlGLcnJylJaWpqKiIg0fPlzSqRlLGzdu1MMPPxySzwQAANYS0jEvVVVVKisrU1VVlVpbW1VWVqaysjI1Nja62+Tm5mrNmjWSTl0umj9/vh588EGtWbNGO3bs0K233qrevXvrpptuCmWpAADAIoI+8xKMe+65Ry+88IL7edvZlHfffVfjxo2TJO3evVt1dXXuNj/96U/11Vdf6cc//rGOHDmiyy+/XOvWrVNiYmIoSwUAABZhM8aYSBfRlerr6+V0OlVXV6ekpKRIlwMAAAIQzPd3VE2VBgAA8IfwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAALIXwAgAA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bins = 50#np.linspace( -1., 1., 50 )\n", + "sns.regplot(x=ak.to_numpy(array[\"tx\"]), y=ak.to_numpy(array[\"DX\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGsCAYAAAAVGEevAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA0VklEQVR4nO3de3RUVZ7+/6cSQoVLUhoCqURjErq5CKERiUpQvCERRLrp9ofYjgiugQF7GAfRmZH2hqhN66jDctCOto5K8Da9EMZZohJHLtoEO8HQDUgjCCGIhBiQVBLItfbvD76ppkilUgWpy0ner7VqLevUPlWfbCL1sM/e+9iMMUYAAAAWERPpAgAAAIJBeAEAAJZCeAEAAJZCeAEAAJZCeAEAAJZCeAEAAJZCeAEAAJZCeAEAAJZCeAEAAJZCeAEAAJbSpcPLpk2bNGXKFKWlpclms2nNmjUh/byamhotWLBAGRkZ6tWrl8aOHavi4uKQfiYAAN1Nlw4vdXV1GjlypJYvXx6Wz5s9e7YKCwtVUFCg7du3Ky8vTzfccIMOHToUls8HAKA7sHWXGzPabDatXr1aU6dO9RxrbGzUQw89pDfffFPHjx9Xdna2nnrqKV177bVBv//JkyeVkJCg//mf/9HkyZM9xy+55BLdfPPNeuKJJzrhpwAAAD0iXUAk3XXXXSorK9M777yjtLQ0rV69WhMnTtT27ds1aNCgoN6rublZLS0tio+P9zreq1cvff75551ZNgAA3Vq3HXn55ptvNGjQIH377bdKS0vztLvhhht0+eWX6ze/+U3QnzF27Fj17NlTb731llJSUvT222/rzjvv1KBBg7R79+7O+lEAAOjWuvScF3++/PJLGWM0ePBg9e3b1/PYuHGjvvnmG0lSWVmZbDab38f8+fM971lQUCBjjC644ALZ7XY9//zzuv322xUbGxupHxMAgC6n2142crvdio2N1datW9uEi759+0qSLrjgAu3atcvv+5x//vme//7Rj36kjRs3qq6uTi6XS6mpqZo+fbqysrI6/wcAAKCb6rbhZdSoUWppaVFlZaXGjRvns01cXJyGDh0a9Hv36dNHffr00Q8//KCPP/5YTz/99LmWCwAA/p8uHV5qa2u1d+9ez/P9+/dr27ZtSkpK0uDBg/V3f/d3uvPOO/Xss89q1KhRqqqq0qeffqoRI0bopptuCvrzPv74YxljNGTIEO3du1f/8i//oiFDhuiuu+7qzB8LAIBurUtP2N2wYYOuu+66Nsdnzpyp119/XU1NTXriiSe0YsUKHTp0SP369VNubq4ee+wxjRgxIujP++///m8tWrRI3377rZKSknTLLbfoySeflMPh6IwfBwAAqIuHFwAA0PV029VGAADAmggvAADAUrrchF23263vvvtOCQkJstlskS4HAAAEwBijmpoapaWlKSbG/9hKlwsv3333ndLT0yNdBgAAOAsHDx7UhRde6LdNlwsvCQkJkk798ImJiRGuBgAABMLlcik9Pd3zPe5PlwsvrZeKEhMTCS8AAFhMIFM+mLALAAAshfACAAAshfACAAAshfACAAAshfACAAAshfACAAAshfACAAAshfACAAAshfACAAAshfACAAAsJaThZdOmTZoyZYrS0tJks9m0Zs0av+03bNggm83W5vHXv/41lGUCAAALCem9jerq6jRy5EjddddduuWWWwI+b/fu3V73Jerfv38oygMAAEGYW1CisqoTkqTM5N56aUZOROoIaXiZNGmSJk2aFPR5AwYM0Hnnndf5BQEAgLNWVnVCu4/USJLcxkSsjqic8zJq1CilpqZq/PjxWr9+vd+2DQ0NcrlcXg8AANC5isuO6dDxk57neyprNbegRCVlx8JeS1SFl9TUVL388statWqV3nvvPQ0ZMkTjx4/Xpk2b2j1n6dKlcjgcnkd6enoYKwYAoOsr2HJAt+YXqbah2ev4J7sqNS2/SCu3HAhrPTZjwjPuY7PZtHr1ak2dOjWo86ZMmSKbzab333/f5+sNDQ1qaGjwPHe5XEpPT1d1dbXXvBkAABC84rJjujW/SP7Cgk3SH+blKicz6aw/x+VyyeFwBPT9HVUjL76MGTNGe/bsafd1u92uxMRErwcAAOgcr3y2TzExNr9tYmJseuXz/WGqyALhpbS0VKmpqZEuAwCAbqe+qUWFXx1Ri9v/RZoWt9G6nRWqb2oJS10hXW1UW1urvXv3ep7v379f27ZtU1JSki666CItWrRIhw4d0ooVKyRJy5YtU2ZmpoYPH67GxkatXLlSq1at0qpVq0JZJgAA8KGmvlkd5BYPtznVPj4uNrRFKcThpaSkRNddd53n+cKFCyVJM2fO1Ouvv67Dhw+rvLzc83pjY6Puv/9+HTp0SL169dLw4cP1wQcf6KabbgplmQAAwIeE+B6KsSmgABNjO9U+HMI2YTdcgpnwAwAA/JtbUKJPdlX6vXQUG2PThGEpyr9j9Fl/TpeasAsAACJn9riBcncw9OJ2G82+KitMFRFeAACAH5dlJunxqdnytd4oNsYmm6THp2af0zLpYIXn4hQAALCsO8ZkaKgzQf/41pc64vrb3moThqVo9lVZYQ0uEuEFAAAEICczSV/8+gbVN7Wopr5ZCfE9wrKyyBfCCwAACFh8XGzEQksr5rwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLCWl42bRpk6ZMmaK0tDTZbDatWbOmw3M2btyo0aNHKz4+XgMHDlR+fn4oSwQAABYT0vBSV1enkSNHavny5QG1379/v2666SaNGzdOpaWl+vWvf6177rlHq1atCmWZAADAQnqE8s0nTZqkSZMmBdw+Pz9fF110kZYtWyZJuvjii1VSUqJnnnlGt9xyS4iqBAAAVhJVc16KioqUl5fndezGG29USUmJmpqafJ7T0NAgl8vl9QAAAF1XVIWXiooKpaSkeB1LSUlRc3OzqqqqfJ6zdOlSORwOzyM9PT0cpQIAgAiJqvAiSTabzeu5Mcbn8VaLFi1SdXW153Hw4MGQ1wgAACInpHNeguV0OlVRUeF1rLKyUj169FC/fv18nmO322W328NRHgAAiAJRNfKSm5urwsJCr2Pr1q1TTk6O4uLiIlQVAACIJiENL7W1tdq2bZu2bdsm6dRS6G3btqm8vFzSqUs+d955p6f9vHnzdODAAS1cuFC7du3Sf/3Xf+nVV1/V/fffH8oyAQCAhYT0slFJSYmuu+46z/OFCxdKkmbOnKnXX39dhw8f9gQZScrKytLatWt177336oUXXlBaWpqef/55lkkDAAAPm2mdEdtFuFwuORwOVVdXKzExMdLlAACAAATz/R1Vc14AAAA6QngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACW0iPSBQAAYGVzC0pUVnVCkpSZ3FsvzciJcEVdH+EFAIBzUFZ1QruP1ES6jG6Fy0YAAHQStzGRLqFbILwAAHCWisuO6dDxk57neyprNbegRCVlxyJYVddHeAEA4CwUbDmgW/OLVNvQ7HX8k12VmpZfpJVbDkSosq6P8AIAQJCKy47pkTU75OsiUYvbyEh6eM0ORmBChPACAECQXvlsn2JibH7bxMTY9Mrn+8NUUfdCeAEAIAj1TS0q/OqIWtz+J+e2uI3W7axQfVNLmCrrPggvAAAEoaa+WR3kFg+3OdUenYvwAgBAEBLie6iDK0YeMbZT7dG5CC8AAAQhPi5WE4alKLaDBBMbY1PecKfi42LDVFn3QXgBACBIs8cNlLuDa0dut9Hsq7LCVFH3QngBACBIl2Um6fGp2fI19hIbY5NN0uNTs5WTmRTu0roFLsQBAHAW7hiToaHOBM16rdhro7oJw1I0+6osgksIEV4AADhLOZlJuvLH/bTv+zq5jdHA5L7Kv2N0pMvq8ggvAACcg5dm5ES6hG6HOS8AAMBSCC8AAMBSCC8AAMBSCC8AAMBSCC8AAMBSCC8AAMBSwhJeXnzxRWVlZSk+Pl6jR4/WZ5991m7bDRs2yGaztXn89a9/DUepAAAgyoU8vLz77rtasGCBHnzwQZWWlmrcuHGaNGmSysvL/Z63e/duHT582PMYNGhQqEsFAAAWEPLw8txzz+nv//7vNXv2bF188cVatmyZ0tPT9bvf/c7veQMGDJDT6fQ8YmO5KycAAAhxeGlsbNTWrVuVl5fndTwvL0+bN2/2e+6oUaOUmpqq8ePHa/369e22a2hokMvl8noAAICuK6ThpaqqSi0tLUpJSfE6npKSooqKCp/npKam6uWXX9aqVav03nvvaciQIRo/frw2bdrks/3SpUvlcDg8j/T09E7/OQAAQPQIy72NbDbvm4YbY9ocazVkyBANGTLE8zw3N1cHDx7UM888o6uvvrpN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V2WFqSIAANpHeIEuy0zS41Oz5WvsJTbGJpukx6dmKyczKdylAQDQBhMYIEm6Y0yGhjoTNOu1Yq+N6iYMS9Hsq7IILgCAqEF4gUdOZpKu/HE/7fu+Tm5jNDC5r/LvGB3psgAA8EJ4gZeXZuREugQAAPxizgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALCUkIaXJ598UmPHjlXv3r113nnnBXSOMUaLFy9WWlqaevXqpWuvvVY7d+4MZZkAAMBCQhpeGhsbNW3aNN19990Bn/P000/rueee0/Lly1VcXCyn06kJEyaopqYmhJUCAACrCGl4eeyxx3TvvfdqxIgRAbU3xmjZsmV68MEH9Ytf/ELZ2dl64403dOLECb311luhLBUAAFhEVM152b9/vyoqKpSXl+c5Zrfbdc0112jz5s0+z2loaJDL5fJ6AACAriuqwktFRYUkKSUlxet4SkqK57UzLV26VA6Hw/NIT08PeZ0AACBygg4vixcvls1m8/soKSk5p6JsNpvXc2NMm2OtFi1apOrqas/j4MGD5/TZAAAguvUI9oT58+frtttu89smMzPzrIpxOp2STo3ApKameo5XVla2GY1pZbfbZbfbz+rzAACA9QQdXpKTk5WcnByKWpSVlSWn06nCwkKNGjVK0qkVSxs3btRTTz0Vks8EAADWEtI5L+Xl5dq2bZvKy8vV0tKibdu2adu2baqtrfW0GTp0qFavXi3p1OWiBQsW6De/+Y1Wr16tHTt2aNasWerdu7duv/32UJYKAAAsIuiRl2A88sgjeuONNzzPW0dT1q9fr2uvvVaStHv3blVXV3va/Ou//qtOnjypX/3qV/rhhx90xRVXaN26dUpISAhlqQAAwCJsxhgT6SI6k8vlksPhUHV1tRITEyNdDgAACEAw399RtVQaAACgI4QXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABg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7fXT2rVrTUxMjDl06JDn2Ntvv23sdruprq42xnSvfjpdRkaG+Y//+I92Xw+k77qLyy+/3MybN8/r2NChQ80DDzwQoYoi79FHHzUjR470+Zrb7TZOp9P89re/9Ryrr683DofD5Ofnh6nC6HDm39OB9M3x48dNXFyceeeddzxtDh06ZGJiYsxHH30UttrDzdd32syZM83Pfvazds+JRF8x8tIJ5s+fr+TkZF122WXKz8+X2+32vFZUVKRrrrnGa1OfG2+8Ud99953KysoiUG34FRUVKTs7W2lpaZ5jN954oxoaGrR161ZPm+7aT0899ZT69eunSy65RE8++aTXJaFA+q47aGxs1NatW5WXl+d1PC8vT5s3b45QVdFhz549SktLU1ZWlm677Tbt27dPkrR//35VVFR49Zndbtc111zT7fsskL7ZunWrmpqavNqkpaUpOzu7W/bfhg0bNGDAAA0ePFhz5sxRZWWl57VI9FWXuzFjuD3++OMaP368evXqpf/7v//Tfffdp6qqKs/Qf0VFhTIzM73OSUlJ8byWlZUV7pLDrqKiwvMztzr//PPVs2dPVVRUeNp0x37653/+Z1166aU6//zz9ac//UmLFi3S/v379corr0gKrO+6g6qqKrW0tLTpi5SUlG7VD2e64oortGLFCg0ePFhHjhzRE088obFjx2rnzp2efvHVZwcOHIhEuVEjkL6pqKhQz549df7557dp091+5yZNmqRp06YpIyND+/fv18MPP6zrr79eW7duld1uj0hfdbuRF18T3M58lJSUBPx+Dz30kHJzc3XJJZfovvvu05IlS/Tv//7vXm1sNpvXc/P/JqGeeTyadHY/+fpZjTFex63YT74E03f33nuvrrnmGv3kJz/R7NmzlZ+fr1dffVVHjx71vF8gfddd+Pod6Y790GrSpEm65ZZbNGLECN1www364IMPJElvvPGGpw191r6z6Zvu2H/Tp0/X5MmTlZ2drSlTpujDDz/U119/7fl9a08o+6rbjbzMnz9ft912m982Z44ABGPMmDFyuVw6cuSIUlJS5HQ62yTP1uG2M1N/NOnMfnI6nfriiy+8jv3www9qamry9IFV+8mXc+m71hn8e/fuVb9+/QLqu+4gOTlZsbGxPn9HulM/dKRPnz4aMWKE9uzZo6lTp0o6NYKQmprqaUOfybMiy1/fOJ1ONTY26ocffvAaUaisrNTYsWPDW3CUSU1NVUZGhvbs2SMpMn3V7UZekpOTNXToUL+P+Pj4s37/0tJSxcfHe5YM5+bmatOmTV7zGNatW6e0tLRzCkmh1pn9lJubqx07dujw4cOeY+vWrZPdbtfo0aM9bazYT76cS9+VlpZKkucv1ED6rjvo2bOnRo8ercLCQq/jhYWF3f6L5HQNDQ3atWuXUlNTlZWVJafT6dVnjY2N2rhxY7fvs0D6ZvTo0YqLi/Nqc/jwYe3YsaPb99/Ro0d18OBBz99TEemrkEwD7iIOHDhgSktLzWOPPWb69u1rSktLTWlpqampqTHGGPP++++bl19+2Wzfvt3s3bvX/P73vzeJiYnmnnvu8bzH8ePHTUpKivnlL39ptm/fbt577z2TmJhonnnmmUj9WJ2uo35qbm422dnZZvz48ebLL780n3zyibnwwgvN/PnzPe/RHfrpTJs3bzbPPfecKS0tNfv27TPvvvuuSUtLMz/96U89bQLpu+7inXfeMXFxcebVV181X331lVmwYIHp06ePKSsri3RpEXPfffeZDRs2mH379pktW7aYm2++2SQkJHj65Le//a1xOBzmvffeM9u3bze//OUvTWpqqnG5XBGuPPRqamo8fxdJ8vy/duDAAWNMYH0zb948c+GFF5pPPvnEfPnll+b66683I0eONM3NzZH6sULCX1/V1NSY++67z2zevNns37/frF+/3uTm5poLLrggon1FePFj5syZRlKbx/r1640xxnz44YfmkksuMX379jW9e/c22dnZZtmyZaapqcnrff7yl7+YcePGGbvdbpxOp1m8eHGXWv7bUT8ZcyrgTJ482fTq1cskJSWZ+fPney2LNqbr99OZtm7daq644grjcDhMfHy8GTJkiHn00UdNXV2dV7tA+q67eOGFF0xGRobp2bOnufTSS83GjRsjXVJETZ8+3aSmppq4uDiTlpZmfvGLX5idO3d6Xne73ebRRx81TqfT2O12c/XVV5vt27dHsOLwWb9+vc+/l2bOnGmMCaxvTp48aebPn2+SkpJMr169zM0332zKy8sj8NOElr++OnHihMnLyzP9+/c3cXFx5qKLLjIzZ85s0w/h7iubMV18C1MAANCldLs5LwAAwNoILwAAwFIILwAAwFIILwAAwFIILwAAwFIILwAAwFIILwAAwFIILwAAwFIILwAAwFIILwAAwFIILwAAwFIILwAAwFL+f8+7TMzzBfn9AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bins = 50#np.linspace( -1., 1., 50 )\n", + "sns.regplot(x=ak.to_numpy(array[\"x\"]), y=ak.to_numpy(array[\"DX\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['dSlope_fringe' 'tx dSlope_fringe' 'ty dSlope_fringe'\n", + " 'tx^2 dSlope_fringe' 'tx ty dSlope_fringe' 'ty^2 dSlope_fringe']\n", + "intercept= 0.0\n", + "coef= {'dSlope_fringe': 2.3340814100448438e-05, 'tx dSlope_fringe': 8.310801914170572e-09, 'ty dSlope_fringe': -1.025087641029144e-06, 'tx^2 dSlope_fringe': 8.228862899700043e-06, 'tx ty dSlope_fringe': -1.5662848683486495e-06, 'ty^2 dSlope_fringe': -0.0003728935994887431}\n", + "r2 score= 0.9860788549938552\n", + "RMSE = 6.07178841864582e-07\n", + "constexpr std::array cx_params{2.3340814100448438e-05f, 8.310801914170572e-09f, -1.025087641029144e-06f, 8.228862899700043e-06f, -1.5662848683486495e-06f, -0.0003728935994887431f};\n" + ] + } + ], + "source": [ + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.linear_model import LinearRegression, Lasso, Ridge\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.pipeline import Pipeline\n", + "from sklearn.metrics import mean_squared_error\n", + "\n", + "features = [\n", + " \"tx\", \n", + " \"ty\",\n", + " \"dSlope_fringe\",\n", + "]\n", + "target_feat = \"CX_ex\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=3, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "remove = [i for i, f in enumerate(poly_features) if (\"dSlope_fringe\" not in f ) or (\"dSlope_fringe^\" in f)]\n", + "X_train_model = np.delete( X_train_model, remove, axis=1)\n", + "X_test_model = np.delete( X_test_model, remove, axis=1)\n", + "poly_features = np.delete(poly_features, remove )\n", + "print(poly_features)\n", + "\n", + "lin_reg = LinearRegression(fit_intercept=False)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features, lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(format_array(\"cx_params\", lin_reg.coef_))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['dSlope_fringe' 'tx dSlope_fringe' 'ty dSlope_fringe'\n", + " 'tx^2 dSlope_fringe' 'tx ty dSlope_fringe' 'ty^2 dSlope_fringe']\n", + "intercept= 0.0\n", + "coef= {'dSlope_fringe': -7.054315710920644e-09, 'tx dSlope_fringe': 2.22196526392023e-11, 'ty dSlope_fringe': 6.104698063377923e-10, 'tx^2 dSlope_fringe': 2.85681046841909e-09, 'tx ty dSlope_fringe': 3.789175266592706e-10, 'ty^2 dSlope_fringe': 9.907774160587578e-08}\n", + "r2 score= 0.97610245571401\n", + "RMSE = 2.4251033068807623e-10\n", + "constexpr std::array dx_params{-7.054315710920644e-09f, 2.22196526392023e-11f, 6.104698063377923e-10f, 2.85681046841909e-09f, 3.789175266592706e-10f, 9.907774160587578e-08f};\n" + ] + } + ], + "source": [ + "features = [\n", + " \"tx\", \n", + " \"ty\",\n", + " \"dSlope_fringe\",\n", + "]\n", + "target_feat = \"DX_ex\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=3, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train ) \n", + "X_test_model = poly.fit_transform( X_test ) \n", + "\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "remove = [i for i, f in enumerate(poly_features) if (\"dSlope_fringe\" not in f ) or (\"dSlope_fringe^\" in f)]\n", + "X_train_model = np.delete( X_train_model, remove, axis=1)\n", + "X_test_model = np.delete( X_test_model, remove, axis=1)\n", + "poly_features = np.delete(poly_features, remove )\n", + "print(poly_features)\n", + "\n", + "lin_reg = LinearRegression(fit_intercept=False)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features,lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(format_array(\"dx_params\", lin_reg.coef_))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.6 (conda)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "a2eff8b4da8b8eebf5ee2e5f811f31a557e0a202b4d2f04f849b065340a6eda6" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/parameterisations/notebooks/y_curvature.ipynb b/parameterisations/notebooks/y_curvature.ipynb new file mode 100644 index 0000000..c111df0 --- /dev/null +++ b/parameterisations/notebooks/y_curvature.ipynb @@ -0,0 +1,717 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import uproot\n", + "import awkward as ak\n", + "import numpy as np\n", + "#input_tree_md = uproot.open({\"/work/guenther/reco_tuner/data/param_data_MD_selected_8520.root\": \"Selected\"})\n", + "#input_tree_mu = uproot.open({\"/work/guenther/reco_tuner/data/param_data_MU_selected_8520.root\": \"Selected\"})\n", + "input_tree = uproot.open({\"/work/guenther/reco_tuner/data/param_data_selected.root\": \"Selected\"})\n", + "# this is an event list of dictionaries containing awkward arrays\n", + "#array_md = input_tree_md.arrays()\n", + "#array_mu = input_tree_mu.arrays()\n", + "#array = ak.concatenate([array_md, array_mu])\n", + "array = input_tree.arrays()\n", + "array[\"dSlope_fringe\"] = array[\"tx_ref\"] - array[\"tx\"]\n", + "array[\"dSlope_fringe_abs\"] = abs(array[\"dSlope_fringe\"])\n", + "array[\"z_mag_x_fringe\"] = (array[\"x\"] - array[\"x_ref\"] - array[\"tx\"] * array[\"z\"] + array[\"tx_ref\"] * array[\"z_ref\"] ) / array[\"dSlope_fringe\"]\n", + "array[\"yStraightRef\"] = array[\"y\"] + array[\"ty\"] * ( array[\"z_ref\"] - array[\"z\"])\n", + "array[\"AY_straight_diff\"] = array[\"AY_ex\"] - array[\"yStraightRef\"]\n", + "array[\"y_ref_straight_diff\"] = array[\"y_ref\"] - array[\"yStraightRef\"]\n", + "array[\"y_straight_diff_l1\"] = array[\"y_l1\"] - array[\"y\"] - array[\"ty\"] * ( array[\"z_l1\"] - array[\"z\"])\n", + "array[\"y_straight_diff_l2\"] = array[\"y_l2\"] - array[\"y\"] - array[\"ty\"] * ( array[\"z_l2\"] - array[\"z\"])\n", + "array[\"y_straight_diff_l5\"] = array[\"y_l5\"] - array[\"y\"] - array[\"ty\"] * ( array[\"z_l5\"] - array[\"z\"])\n", + "array[\"y_straight_diff_l6\"] = array[\"y_l6\"] - array[\"y\"] - array[\"ty\"] * ( array[\"z_l6\"] - array[\"z\"])\n", + "array[\"y_straight_diff_l9\"] = array[\"y_l9\"] - array[\"y\"] - array[\"ty\"] * ( array[\"z_l9\"] - array[\"z\"])\n", + "array[\"y_straight_diff_l10\"] = array[\"y_l10\"] - array[\"y\"] - array[\"ty\"] * ( array[\"z_l10\"] - array[\"z\"])\n", + "array[\"BY_straight_diff\"] = array[\"BY_ex\"] - array[\"ty\"]\n", + "array[\"ty_ref_straight_diff\"] = array[\"ty_ref\"] - array[\"ty\"]\n", + "def format_array(name, coef):\n", + " coef = [str(c)+\"f\" for c in coef if c != 0.0]\n", + " code = f\"constexpr std::array {name}\"\n", + " code += \"{\" + \", \".join(list(coef)) +\"};\"\n", + " return code" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['dSlope_fringe' 'ty dSlope_fringe_abs' 'ty tx dSlope_fringe'\n", + " 'ty^3 dSlope_fringe_abs' 'ty tx^2 dSlope_fringe_abs'\n", + " 'ty^3 tx dSlope_fringe' 'ty tx^3 dSlope_fringe'\n", + " 'ty^3 tx^2 dSlope_fringe_abs']\n", + "intercept= 0.0\n", + "coef= {'dSlope_fringe': 2.54927052921483, 'ty dSlope_fringe_abs': 65.18649309504633, 'ty tx dSlope_fringe': 4174.444641065072, 'ty^3 dSlope_fringe_abs': -10543.061353132687, 'ty tx^2 dSlope_fringe_abs': 812.6329282763543, 'ty^3 tx dSlope_fringe': 52906.81696296328, 'ty tx^3 dSlope_fringe': 37770.21841979088, 'ty^3 tx^2 dSlope_fringe_abs': 273401.3548544383}\n", + "r2 score= 0.9424448007543189\n", + "RMSE = 8.058017702810291\n", + "straight RMSE = 33.93970007402008\n", + "constexpr std::array y_ref_straight_diff{2.54927052921483f, 65.18649309504633f, 4174.444641065072f, -10543.061353132687f, 812.6329282763543f, 52906.81696296328f, 37770.21841979088f, 273401.3548544383f};\n" + ] + } + ], + "source": [ + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.linear_model import LinearRegression, Lasso, Ridge\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.pipeline import Pipeline\n", + "from sklearn.metrics import mean_squared_error\n", + "\n", + "features = [\n", + " \"ty\", \n", + " \"tx\",\n", + " \"dSlope_fringe\",\n", + " \"dSlope_fringe_abs\"\n", + "]\n", + "target_feat = \"y_ref_straight_diff\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=6, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train )\n", + "X_test_model = poly.fit_transform( X_test )\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "#print(poly_features)\n", + "keep = [\n", + " \"ty dSlope_fringe_abs\", \n", + " \"ty tx^2 dSlope_fringe_abs\", \n", + " \"ty^3 dSlope_fringe_abs\", \n", + " \"ty^3 tx^2 dSlope_fringe_abs\",\n", + " \"dSlope_fringe\",\n", + " \"ty tx dSlope_fringe\",\n", + " \"ty tx^3 dSlope_fringe\",\n", + " \"ty^3 tx dSlope_fringe\",\n", + "]\n", + "remove = [i for i, f in enumerate(poly_features) if f not in keep]\n", + "X_train_model = np.delete( X_train_model, remove, axis=1)\n", + "X_test_model = np.delete( X_test_model, remove, axis=1)\n", + "poly_features = np.delete(poly_features, remove )\n", + "print(poly_features)\n", + "\n", + "lin_reg = LinearRegression(fit_intercept=False)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features, lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(\"straight RMSE =\", mean_squared_error(array[\"y_ref\"], array[\"y\"] + array[\"ty\"] * ( array[\"z_ref\"] - array[\"z\"] ), squared=False))\n", + "print(format_array(\"y_ref_straight_diff\", lin_reg.coef_))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['dSlope_fringe' 'ty dSlope_fringe_abs' 'ty tx dSlope_fringe'\n", + " 'ty^3 dSlope_fringe_abs' 'ty tx^2 dSlope_fringe_abs'\n", + " 'ty^3 tx dSlope_fringe' 'ty tx^3 dSlope_fringe'\n", + " 'ty^3 tx^2 dSlope_fringe_abs']\n", + "intercept= 0.0\n", + "coef= {'dSlope_fringe': 1.926395569816899, 'ty dSlope_fringe_abs': 155.7194258002827, 'ty tx dSlope_fringe': 3711.2012601369147, 'ty^3 dSlope_fringe_abs': -6986.454915191362, 'ty tx^2 dSlope_fringe_abs': -102.59383584048052, 'ty^3 tx dSlope_fringe': 42360.930984198254, 'ty tx^3 dSlope_fringe': 29857.060893721067, 'ty^3 tx^2 dSlope_fringe_abs': 209095.7911514973}\n", + "r2 score= 0.9391433516368133\n", + "RMSE = 6.578135946782935\n", + "straight RMSE = 26.874058521627408\n", + "constexpr std::array y_straight_diff_l1{1.926395569816899f, 155.7194258002827f, 3711.2012601369147f, -6986.454915191362f, -102.59383584048052f, 42360.930984198254f, 29857.060893721067f, 209095.7911514973f};\n" + ] + } + ], + "source": [ + "features = [\n", + " \"ty\", \n", + " \"tx\",\n", + " \"dSlope_fringe\",\n", + " \"dSlope_fringe_abs\"\n", + "]\n", + "target_feat = \"y_straight_diff_l1\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=6, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train )\n", + "X_test_model = poly.fit_transform( X_test )\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "#print(poly_features)\n", + "keep = [\n", + " \"ty dSlope_fringe_abs\", \n", + " \"ty tx^2 dSlope_fringe_abs\", \n", + " \"ty^3 dSlope_fringe_abs\", \n", + " \"ty^3 tx^2 dSlope_fringe_abs\",\n", + " \"dSlope_fringe\",\n", + " \"ty tx dSlope_fringe\",\n", + " \"ty tx^3 dSlope_fringe\",\n", + " \"ty^3 tx dSlope_fringe\",\n", + "]\n", + "remove = [i for i, f in enumerate(poly_features) if f not in keep]\n", + "X_train_model = np.delete( X_train_model, remove, axis=1)\n", + "X_test_model = np.delete( X_test_model, remove, axis=1)\n", + "poly_features = np.delete(poly_features, remove )\n", + "print(poly_features)\n", + "\n", + "lin_reg = LinearRegression(fit_intercept=False)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features, lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(\"straight RMSE =\", mean_squared_error(array[\"y_l1\"], array[\"y\"] + array[\"ty\"] * ( array[\"z_l1\"] - array[\"z\"] ), squared=False))\n", + "print(format_array(\"y_straight_diff_l1\", lin_reg.coef_))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['dSlope_fringe' 'ty dSlope_fringe_abs' 'ty tx dSlope_fringe'\n", + " 'ty^3 dSlope_fringe_abs' 'ty tx^2 dSlope_fringe_abs'\n", + " 'ty^3 tx dSlope_fringe' 'ty tx^3 dSlope_fringe'\n", + " 'ty^3 tx^2 dSlope_fringe_abs']\n", + "intercept= 0.0\n", + "coef= {'dSlope_fringe': 1.992023095115273, 'ty dSlope_fringe_abs': 147.53158307285184, 'ty tx dSlope_fringe': 3758.3638141105685, 'ty^3 dSlope_fringe_abs': -7387.838564546752, 'ty tx^2 dSlope_fringe_abs': -20.05844697530397, 'ty^3 tx dSlope_fringe': 43544.55794543203, 'ty tx^3 dSlope_fringe': 30729.099594836473, 'ty^3 tx^2 dSlope_fringe_abs': 216301.09830837924}\n", + "r2 score= 0.939662275160689\n", + "RMSE = 6.726003215973192\n", + "straight RMSE = 27.60567927172973\n", + "constexpr std::array y_straight_diff_l2{1.992023095115273f, 147.53158307285184f, 3758.3638141105685f, -7387.838564546752f, -20.05844697530397f, 43544.55794543203f, 30729.099594836473f, 216301.09830837924f};\n" + ] + } + ], + "source": [ + "features = [\n", + " \"ty\", \n", + " \"tx\",\n", + " \"dSlope_fringe\",\n", + " \"dSlope_fringe_abs\"\n", + "]\n", + "target_feat = \"y_straight_diff_l2\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=6, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train )\n", + "X_test_model = poly.fit_transform( X_test )\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "#print(poly_features)\n", + "keep = [\n", + " \"ty dSlope_fringe_abs\", \n", + " \"ty tx^2 dSlope_fringe_abs\", \n", + " \"ty^3 dSlope_fringe_abs\", \n", + " \"ty^3 tx^2 dSlope_fringe_abs\",\n", + " \"dSlope_fringe\",\n", + " \"ty tx dSlope_fringe\",\n", + " \"ty tx^3 dSlope_fringe\",\n", + " \"ty^3 tx dSlope_fringe\",\n", + "]\n", + "remove = [i for i, f in enumerate(poly_features) if f not in keep]\n", + "X_train_model = np.delete( X_train_model, remove, axis=1)\n", + "X_test_model = np.delete( X_test_model, remove, axis=1)\n", + "poly_features = np.delete(poly_features, remove )\n", + "print(poly_features)\n", + "\n", + "lin_reg = LinearRegression(fit_intercept=False)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features, lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(\"straight RMSE =\", mean_squared_error(array[\"y_l2\"], array[\"y\"] + array[\"ty\"] * ( array[\"z_l2\"] - array[\"z\"] ), squared=False))\n", + "print(format_array(\"y_straight_diff_l2\", lin_reg.coef_))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['dSlope_fringe' 'ty dSlope_fringe_abs' 'ty tx dSlope_fringe'\n", + " 'ty^3 dSlope_fringe_abs' 'ty tx^2 dSlope_fringe_abs'\n", + " 'ty^3 tx dSlope_fringe' 'ty tx^3 dSlope_fringe'\n", + " 'ty^3 tx^2 dSlope_fringe_abs']\n", + "intercept= 0.0\n", + "coef= {'dSlope_fringe': 2.6109097507814067, 'ty dSlope_fringe_abs': 55.23845097538265, 'ty tx dSlope_fringe': 4222.757834030979, 'ty^3 dSlope_fringe_abs': -10869.286047558253, 'ty tx^2 dSlope_fringe_abs': 913.7370293450639, 'ty^3 tx dSlope_fringe': 53875.65687892285, 'ty tx^3 dSlope_fringe': 38512.63398443023, 'ty^3 tx^2 dSlope_fringe_abs': 279346.89317804825}\n", + "r2 score= 0.9426062193562865\n", + "RMSE = 8.213743029204338\n", + "straight RMSE = 34.65071255550859\n", + "constexpr std::array y_straight_diff_l5{2.6109097507814067f, 55.23845097538265f, 4222.757834030979f, -10869.286047558253f, 913.7370293450639f, 53875.65687892285f, 38512.63398443023f, 279346.89317804825f};\n" + ] + } + ], + "source": [ + "features = [\n", + " \"ty\", \n", + " \"tx\",\n", + " \"dSlope_fringe\",\n", + " \"dSlope_fringe_abs\"\n", + "]\n", + "target_feat = \"y_straight_diff_l5\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=6, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train )\n", + "X_test_model = poly.fit_transform( X_test )\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "#print(poly_features)\n", + "keep = [\n", + " \"ty dSlope_fringe_abs\", \n", + " \"ty tx^2 dSlope_fringe_abs\", \n", + " \"ty^3 dSlope_fringe_abs\", \n", + " \"ty^3 tx^2 dSlope_fringe_abs\",\n", + " \"dSlope_fringe\",\n", + " \"ty tx dSlope_fringe\",\n", + " \"ty tx^3 dSlope_fringe\",\n", + " \"ty^3 tx dSlope_fringe\",\n", + "]\n", + "remove = [i for i, f in enumerate(poly_features) if f not in keep]\n", + "X_train_model = np.delete( X_train_model, remove, axis=1)\n", + "X_test_model = np.delete( X_test_model, remove, axis=1)\n", + "poly_features = np.delete(poly_features, remove )\n", + "print(poly_features)\n", + "\n", + "lin_reg = LinearRegression(fit_intercept=False)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features, lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(\"straight RMSE =\", mean_squared_error(array[\"y_l5\"], array[\"y\"] + array[\"ty\"] * ( array[\"z_l5\"] - array[\"z\"] ), squared=False))\n", + "print(format_array(\"y_straight_diff_l5\", lin_reg.coef_))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['dSlope_fringe' 'ty dSlope_fringe_abs' 'ty tx dSlope_fringe'\n", + " 'ty^3 dSlope_fringe_abs' 'ty tx^2 dSlope_fringe_abs'\n", + " 'ty^3 tx dSlope_fringe' 'ty tx^3 dSlope_fringe'\n", + " 'ty^3 tx^2 dSlope_fringe_abs']\n", + "intercept= 0.0\n", + "coef= {'dSlope_fringe': 2.6869036549491536, 'ty dSlope_fringe_abs': 42.86164139009395, 'ty tx dSlope_fringe': 4282.473673540287, 'ty^3 dSlope_fringe_abs': -11261.305925638624, 'ty tx^2 dSlope_fringe_abs': 1038.8682634234196, 'ty^3 tx dSlope_fringe': 55053.993311126746, 'ty tx^3 dSlope_fringe': 39412.35231667733, 'ty^3 tx^2 dSlope_fringe_abs': 286552.2319656697}\n", + "r2 score= 0.9427768256184441\n", + "RMSE = 8.406185401645494\n", + "straight RMSE = 35.523013512241214\n", + "constexpr std::array y_straight_diff_l6{2.6869036549491536f, 42.86164139009395f, 4282.473673540287f, -11261.305925638624f, 1038.8682634234196f, 55053.993311126746f, 39412.35231667733f, 286552.2319656697f};\n" + ] + } + ], + "source": [ + "features = [\n", + " \"ty\", \n", + " \"tx\",\n", + " \"dSlope_fringe\",\n", + " \"dSlope_fringe_abs\"\n", + "]\n", + "target_feat = \"y_straight_diff_l6\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=6, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train )\n", + "X_test_model = poly.fit_transform( X_test )\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "#print(poly_features)\n", + "keep = [\n", + " \"ty dSlope_fringe_abs\", \n", + " \"ty tx^2 dSlope_fringe_abs\", \n", + " \"ty^3 dSlope_fringe_abs\", \n", + " \"ty^3 tx^2 dSlope_fringe_abs\",\n", + " \"dSlope_fringe\",\n", + " \"ty tx dSlope_fringe\",\n", + " \"ty tx^3 dSlope_fringe\",\n", + " \"ty^3 tx dSlope_fringe\",\n", + "]\n", + "remove = [i for i, f in enumerate(poly_features) if f not in keep]\n", + "X_train_model = np.delete( X_train_model, remove, axis=1)\n", + "X_test_model = np.delete( X_test_model, remove, axis=1)\n", + "poly_features = np.delete(poly_features, remove )\n", + "print(poly_features)\n", + "\n", + "lin_reg = LinearRegression(fit_intercept=False)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features, lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(\"straight RMSE =\", mean_squared_error(array[\"y_l6\"], array[\"y\"] + array[\"ty\"] * ( array[\"z_l6\"] - array[\"z\"] ), squared=False))\n", + "print(format_array(\"y_straight_diff_l6\", lin_reg.coef_))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['dSlope_fringe' 'ty dSlope_fringe_abs' 'ty tx dSlope_fringe'\n", + " 'ty^3 dSlope_fringe_abs' 'ty tx^2 dSlope_fringe_abs'\n", + " 'ty^3 tx dSlope_fringe' 'ty tx^3 dSlope_fringe'\n", + " 'ty^3 tx^2 dSlope_fringe_abs']\n", + "intercept= 0.0\n", + "coef= {'dSlope_fringe': 3.3840782993219154, 'ty dSlope_fringe_abs': -73.66219618861146, 'ty tx dSlope_fringe': 4855.8672756860515, 'ty^3 dSlope_fringe_abs': -14629.483020343234, 'ty tx^2 dSlope_fringe_abs': 2208.9899749295746, 'ty^3 tx dSlope_fringe': 65168.34060362849, 'ty tx^3 dSlope_fringe': 47225.377082479885, 'ty^3 tx^2 dSlope_fringe_abs': 349003.88327916135}\n", + "r2 score= 0.943344616193092\n", + "RMSE = 10.238398557856689\n", + "straight RMSE = 43.54352590748684\n", + "constexpr std::array y_straight_diff_l9{3.3840782993219154f, -73.66219618861146f, 4855.8672756860515f, -14629.483020343234f, 2208.9899749295746f, 65168.34060362849f, 47225.377082479885f, 349003.88327916135f};\n" + ] + } + ], + "source": [ + "features = [\n", + " \"ty\", \n", + " \"tx\",\n", + " \"dSlope_fringe\",\n", + " \"dSlope_fringe_abs\"\n", + "]\n", + "target_feat = \"y_straight_diff_l9\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=6, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train )\n", + "X_test_model = poly.fit_transform( X_test )\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "#print(poly_features)\n", + "keep = [\n", + " \"ty dSlope_fringe_abs\", \n", + " \"ty tx^2 dSlope_fringe_abs\", \n", + " \"ty^3 dSlope_fringe_abs\", \n", + " \"ty^3 tx^2 dSlope_fringe_abs\",\n", + " \"dSlope_fringe\",\n", + " \"ty tx dSlope_fringe\",\n", + " \"ty tx^3 dSlope_fringe\",\n", + " \"ty^3 tx dSlope_fringe\",\n", + "]\n", + "remove = [i for i, f in enumerate(poly_features) if f not in keep]\n", + "X_train_model = np.delete( X_train_model, remove, axis=1)\n", + "X_test_model = np.delete( X_test_model, remove, axis=1)\n", + "poly_features = np.delete(poly_features, remove )\n", + "print(poly_features)\n", + "\n", + "lin_reg = LinearRegression(fit_intercept=False)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features, lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(\"straight RMSE =\", mean_squared_error(array[\"y_l9\"], array[\"y\"] + array[\"ty\"] * ( array[\"z_l9\"] - array[\"z\"] ), squared=False))\n", + "print(format_array(\"y_straight_diff_l9\", lin_reg.coef_))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['dSlope_fringe' 'ty dSlope_fringe_abs' 'ty tx dSlope_fringe'\n", + " 'ty^3 dSlope_fringe_abs' 'ty tx^2 dSlope_fringe_abs'\n", + " 'ty^3 tx dSlope_fringe' 'ty tx^3 dSlope_fringe'\n", + " 'ty^3 tx^2 dSlope_fringe_abs']\n", + "intercept= 0.0\n", + "coef= {'dSlope_fringe': 3.466479515860849, 'ty dSlope_fringe_abs': -87.54166562301657, 'ty tx dSlope_fringe': 4926.350778945553, 'ty^3 dSlope_fringe_abs': -15008.616026945787, 'ty tx^2 dSlope_fringe_abs': 2347.3262833969093, 'ty^3 tx dSlope_fringe': 66293.67978997533, 'ty tx^3 dSlope_fringe': 48106.815974854835, 'ty^3 tx^2 dSlope_fringe_abs': 356053.9012962991}\n", + "r2 score= 0.9433372187768841\n", + "RMSE = 10.46108881485266\n", + "straight RMSE = 44.49300835626165\n", + "constexpr std::array y_straight_diff_l10{3.466479515860849f, -87.54166562301657f, 4926.350778945553f, -15008.616026945787f, 2347.3262833969093f, 66293.67978997533f, 48106.815974854835f, 356053.9012962991f};\n" + ] + } + ], + "source": [ + "features = [\n", + " \"ty\", \n", + " \"tx\",\n", + " \"dSlope_fringe\",\n", + " \"dSlope_fringe_abs\"\n", + "]\n", + "target_feat = \"y_straight_diff_l10\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=6, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train )\n", + "X_test_model = poly.fit_transform( X_test )\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "#print(poly_features)\n", + "keep = [\n", + " \"ty dSlope_fringe_abs\", \n", + " \"ty tx^2 dSlope_fringe_abs\", \n", + " \"ty^3 dSlope_fringe_abs\", \n", + " \"ty^3 tx^2 dSlope_fringe_abs\",\n", + " \"dSlope_fringe\",\n", + " \"ty tx dSlope_fringe\",\n", + " \"ty tx^3 dSlope_fringe\",\n", + " \"ty^3 tx dSlope_fringe\",\n", + "]\n", + "remove = [i for i, f in enumerate(poly_features) if f not in keep]\n", + "X_train_model = np.delete( X_train_model, remove, axis=1)\n", + "X_test_model = np.delete( X_test_model, remove, axis=1)\n", + "poly_features = np.delete(poly_features, remove )\n", + "print(poly_features)\n", + "\n", + "lin_reg = LinearRegression(fit_intercept=False)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features, lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(\"straight RMSE =\", mean_squared_error(array[\"y_l10\"], array[\"y\"] + array[\"ty\"] * ( array[\"z_l10\"] - array[\"z\"] ), squared=False))\n", + "print(format_array(\"y_straight_diff_l10\", lin_reg.coef_))" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "intercept= 0.0\n", + "coef= {'ty tx dSlope_fringe': 0.9394190987843558, 'ty dSlope_fringe^2': -0.46480920487603206, 'ty^3 dSlope_fringe_abs': -4.137993544858158, 'ty tx^2 dSlope_fringe_abs': 2.980803780828937, 'ty tx^3 dSlope_fringe': 12.402177409386482, 'ty^3 tx^2 dSlope_fringe_abs': 38.238656269022954}\n", + "r2 score= 0.9649625489427109\n", + "RMSE = 0.0025237463237113896\n", + "straight RMSE = 0.013705994187091751\n", + "constexpr std::array ty_ref_straight_diff{0.9394190987843558f, -0.46480920487603206f, -4.137993544858158f, 2.980803780828937f, 12.402177409386482f, 38.238656269022954f};\n" + ] + } + ], + "source": [ + "features = [\n", + " \"ty\", \n", + " \"tx\",\n", + " \"dSlope_fringe\",\n", + " \"dSlope_fringe_abs\"\n", + "]\n", + "target_feat = \"ty_ref_straight_diff\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=6, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train )\n", + "X_test_model = poly.fit_transform( X_test )\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "#print(poly_features)\n", + "keep = [\n", + " \"ty dSlope_fringe^2\",\n", + " #\"ty dSlope_fringe_abs\", \n", + " \"ty tx^2 dSlope_fringe_abs\", \n", + " \"ty^3 dSlope_fringe_abs\", \n", + " \"ty^3 tx^2 dSlope_fringe_abs\",\n", + " #\"dSlope_fringe\",\n", + " \"ty tx dSlope_fringe\",\n", + " \"ty tx^3 dSlope_fringe\",\n", + " #\"ty^3 tx dSlope_fringe\",\n", + "]\n", + "remove = [i for i, f in enumerate(poly_features) if f not in keep]\n", + "#remove = [i for i, f in enumerate(poly_features) if (\"dSlope_fringe\" not in f) or (\"dSlope_fringe^\" in f) or (\"dSlope_fringe_abs^\" in f) or (\"dSlope_fringe dSlope_fringe_abs\" in f)]\n", + "X_train_model = np.delete( X_train_model, remove, axis=1)\n", + "X_test_model = np.delete( X_test_model, remove, axis=1)\n", + "poly_features = np.delete(poly_features, remove )\n", + "#print(poly_features)\n", + "\n", + "lin_reg = LinearRegression(fit_intercept=False)\n", + "#lin_reg = Lasso(fit_intercept=False, alpha=0.0000000001)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features, lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "print(\"straight RMSE =\", mean_squared_error(array[\"ty_ref\"], array[\"ty\"], squared=False))\n", + "print(format_array(\"ty_ref_straight_diff\", lin_reg.coef_))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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VFQUcbyoqEgHDhwIP8+Ee+zYsWPq7OyM+lljtU+08mfPntWxY8d08cUX91gm3e8nybk2q6io0LPPPquxY8eqtbVV//Iv/6JrrrlGb731li677DLHPo/TetNeieAeS16q7zFPB5GlS5dq2bJlMcts3bpVkuTz+bq9ZoyJejwZ8+bNC/+5srJSl112maqrq7V9+3ZdddVVfTp3qnmhvaJx6ryp4EabXfj6he9Jp3ssnnifNZHyFx5P9pzpJtVtNn78eI0fPz78+jXXXKOrrrpKTzzxhB5//PFUVdsaJ+4H7rHkpPoe83QQufPOO+OuHigrK9Of//xnNTU1dXvtgw8+6JYE++qqq65STk6O9u7d67kvCdvtVVxcrDNnzuijjz6K6BVpbm7Wl7/85V6f10lOtllxcbGkc//iuvjii8PHm5ubY7azl++xnhQWFioQCHT7V1asz1pcXBy1fL9+/TR06NCYZVL9/7UNTrXZhfx+v66++mrt3bs3NRW3pDftlQjusb7r6z3m6TkihYWFqqioiPkYMGCAJkyYoJaWFv33f/93+L1/+tOf1NLSkvIvwF27dqmjoyPii8UrbLdXVVWVcnJyIoYUjhw5op07d3o2iDjZZl3DLee3x5kzZ7Rx48aY7eHle6wn/fv3V1VVVbfhpA0bNvT4WSdMmNCt/Pr161VdXa2cnJyYZbx6PyXDqTa7kDFGO3bsSKv7KZretFciuMf6rs/3WMqmvVo2bdo088UvftHU1taa2tpaM3bs2G5LKy+//HLz0ksvhZ9/+OGHpr6+3rzyyitGklm7dq2pr68PL0Pat2+fWbZsmdm6davZv3+/eeWVV0xFRYUZN25c2i9HdaK9jDm3fHf48OHmtddeM9u3bzd//dd/nVHLd5NtsxUrVpj8/Hzz0ksvmbffftvceuutEct3M+ke61om+POf/9w0NDSYxYsXm8GDB5vGxkZjjDH33HOPmTVrVrh811LUu+++2zQ0NJif//zn3Zai/vGPfzSBQMCsWLHC7N6926xYsSIjl1amss2WLl1qXn31VfPuu++a+vp6M2fOHNOvXz/zpz/9yfXPl2rJtpcxxtTX15v6+npTVVVlvvWtb5n6+nqza9eu8OvcY8m3WarvsYwJIh9++KGZOXOmyc3NNbm5uWbmzJnmo48+iigjydTU1ISf19TUGEndHg888IAxxpj333/fXHvttaagoMD079/fXHrppeY73/mO+fDDD937YA5xor2MMeaTTz4xd955pykoKDADBw40N910k3n//ffd+VAO602bhUIh88ADD5ji4mITDAbNtddea95+++3w65l2j/3sZz8zI0eONP379zdXXXWV2bhxY/i122+/3Vx33XUR5V9//XUzbtw4079/f1NWVmaeeuqpbuf8zW9+Yy6//HKTk5NjKioqzIsvvuj0x3BVqtts8eLFZsSIEaZ///7ms5/9rJkyZYrZvHmzGx/FFcm2V7S/s0aOHBlRhnvsuojy8dos1feY738vCgAA4DpPzxEBAACZjSACAACsIYgAAABrCCIAAMAagggAALCGIAIAAKwhiAAAAGsIIgAAwBqCCAAAsIYgAgAArCGIAAAAawgiAADAmv8P7BQ8YeQ7PJYAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "import numpy as np\n", + "bins = 25#np.linspace( -1.5, 1.5, 50 )\n", + "sns.regplot(x=ak.to_numpy(array[\"tx\"]), y=ak.to_numpy(array[\"CY_ex\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['ty dSlope_fringe_abs' 'ty tx dSlope_fringe' 'ty dSlope_fringe^2'\n", + " 'ty^3 dSlope_fringe_abs' 'ty tx^2 dSlope_fringe_abs']\n", + "intercept= 0.0\n", + "coef= {'ty dSlope_fringe_abs': -1.210948273291364e-05, 'ty tx dSlope_fringe': 8.351598715575842e-05, 'ty dSlope_fringe^2': -3.9073446027618556e-05, 'ty^3 dSlope_fringe_abs': 0.0002466815971481776, 'ty tx^2 dSlope_fringe_abs': 0.0001861876635962951}\n", + "r2 score= 0.9704091284593364\n", + "RMSE = 1.4317438911860726e-07\n", + "constexpr std::array CY_ex{-1.210948273291364e-05f, 8.351598715575842e-05f, -3.9073446027618556e-05f, 0.0002466815971481776f, 0.0001861876635962951f};\n" + ] + } + ], + "source": [ + "features = [\n", + " \"ty\", \n", + " \"tx\",\n", + " \"dSlope_fringe\",\n", + " \"dSlope_fringe_abs\"\n", + "]\n", + "target_feat = \"CY_ex\"\n", + "\n", + "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n", + "target = ak.to_numpy(array[target_feat])\n", + "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n", + "\n", + "poly = PolynomialFeatures(degree=4, include_bias=False)\n", + "X_train_model = poly.fit_transform( X_train )\n", + "X_test_model = poly.fit_transform( X_test )\n", + "poly_features = poly.get_feature_names_out(input_features=features)\n", + "#print(poly_features)\n", + "keep = [\n", + " \"ty dSlope_fringe^2\",\n", + " \"ty dSlope_fringe_abs\", \n", + " \"ty tx^2 dSlope_fringe_abs\", \n", + " \"ty^3 dSlope_fringe_abs\", \n", + " #\"ty^3 tx^2 dSlope_fringe_abs\",\n", + " #\"dSlope_fringe\",\n", + " \"ty tx dSlope_fringe\",\n", + " #\"ty tx^3 dSlope_fringe\",\n", + " #\"ty^3 tx dSlope_fringe\",\n", + "]\n", + "remove = [i for i, f in enumerate(poly_features) if f not in keep]\n", + "#remove = [i for i, f in enumerate(poly_features) if (\"dSlope_fringe\" not in f)]# or (\"dSlope_fringe^\" in f) or (\"dSlope_fringe_abs^\" in f) or (\"dSlope_fringe dSlope_fringe_abs\" in f)]\n", + "X_train_model = np.delete( X_train_model, remove, axis=1)\n", + "X_test_model = np.delete( X_test_model, remove, axis=1)\n", + "poly_features = np.delete(poly_features, remove )\n", + "print(poly_features)\n", + "\n", + "lin_reg = LinearRegression(fit_intercept=False)\n", + "#lin_reg = Lasso(fit_intercept=False, alpha=0.00000000001)\n", + "lin_reg.fit( X_train_model, y_train)\n", + "y_pred_test = lin_reg.predict( X_test_model )\n", + "print(\"intercept=\", lin_reg.intercept_)\n", + "print(\"coef=\", dict(zip(poly_features, lin_reg.coef_)))\n", + "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n", + "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n", + "#print(\"straight RMSE =\", mean_squared_error(array[\"ty_ref\"], array[\"ty\"], squared=False))\n", + "print(format_array(\"CY_ex\", lin_reg.coef_))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.6 (conda)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "a2eff8b4da8b8eebf5ee2e5f811f31a557e0a202b4d2f04f849b065340a6eda6" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/parameterisations/parameterise_field_integral.py b/parameterisations/parameterise_field_integral.py new file mode 100644 index 0000000..51756ef --- /dev/null +++ b/parameterisations/parameterise_field_integral.py @@ -0,0 +1,99 @@ +from parameterisations.utils.fit_linear_regression_model import ( + fit_linear_regression_model, +) +from parameterisations.utils.parse_regression_coef_to_array import ( + parse_regression_coef_to_array, +) +import uproot +import argparse +from pathlib import Path + + +def parameterise_field_integral( + input_file: str = "data/param_data_selected_all_p.root", + tree_name: str = "Selected", +) -> Path: + """Function to estimate parameters describing the magnetic field integral. + + Args: + input_file (str, optional): Defaults to "data/param_data_selected_all_p.root". + tree_name (str, optional): Defaults to "Selected". + + Returns: + Path: Path to the parameters in cpp format. + """ + input_tree = uproot.open({input_file: tree_name}) + # this is an event list of dictionaries containing awkward arrays + array = input_tree.arrays() + array["dSlope_fringe"] = array["tx_ref"] - array["tx"] + array["poqmag_gev"] = 1.0 / (array["signed_rel_current"] * array["qop"] * 1000.0) + array["B_integral"] = array["poqmag_gev"] * array["dSlope_fringe"] + + model_ref, poly_features_ref = fit_linear_regression_model( + array, + target_feat="B_integral", + features=[ + "ty", + "tx", + "tx_ref", + ], + keep=[ + "ty^2", + "tx^2", + "tx tx_ref", + "tx_ref^2", + "ty^2 tx tx_ref", + "ty^2 tx^2", + "ty^2 tx_ref^2", + "tx^4", + "ty^4", + "tx_ref^4", + "tx^3 tx_ref", + ], + degree=5, + fit_intercept=True, + ) + cpp_ref = parse_regression_coef_to_array( + model_ref, + poly_features_ref, + "fieldIntegralParamsRef", + ) + outpath = Path("parameterisations/result/field_integral_params.hpp") + outpath.parent.mkdir(parents=True, exist_ok=True) + with open(outpath, "w") as result: + result.writelines(cpp_ref) + return outpath + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument( + "--input-file", + type=str, + help="Path to the input file", + required=False, + ) + parser.add_argument( + "--tree-name", + type=str, + help="Path to the input file", + required=False, + ) + args = parser.parse_args() + args_dict = {arg: val for arg, val in vars(args).items() if val is not None} + outfile = parameterise_field_integral(**args_dict) + + try: + import subprocess + + # run clang-format for nicer looking result + subprocess.run( + [ + "clang-format", + "-i", + f"{outfile}", + ], + check=True, + ) + except: + pass diff --git a/parameterisations/parameterise_hough_histogram.py b/parameterisations/parameterise_hough_histogram.py new file mode 100644 index 0000000..5cde447 --- /dev/null +++ b/parameterisations/parameterise_hough_histogram.py @@ -0,0 +1,94 @@ +import uproot +import awkward as ak +from pathlib import Path +from scipy.optimize import curve_fit +import numpy as np +import pandas as pd +from math import ceil +import argparse + + +def fastSigmoid(x, p0, p1, p2): + return p0 + p1 * x / (1 + abs(p2 * x)) + + +def parameterise_hough_histogram( + input_file: str = "data/param_data_selected_all_p.root", + tree_name: str = "Selected", + n_bins_start: int = 900, + hist_range: tuple[float, float] = (-3000.0, 3000.0), + first_bin_center: float = 2.5, +) -> Path: + """Function to parameterise the binning of the Hough histogram using the occupancy on the reference plane. + + Args: + input_file (str, optional): Defaults to "data/param_data_selected_all_p.root". + tree_name (str, optional): Defaults to "Selected". + n_bins_start (int, optional): Starting (minimal) number of bins in histogram. Defaults to 900. + hist_range (tuple[float, float], optional): Range in mm the histogram covers. Defaults to (-3000.0, 3000.0). + first_bin_center (float, optional): Calculated bin center at lower range. Defaults to 2.5. + + Returns: + Path: Path to cpp code file. + """ + input_tree = uproot.open({input_file: tree_name}) + # this is an event list of dictionaries containing awkward arrays + array = input_tree.arrays() + array = array[[field for field in ak.fields(array) if "scifi_hit" not in field]] + df = ak.to_pandas(array) + selection = (df["x_ref"] > hist_range[0]) & (df["x_ref"] < hist_range[1]) + data = df.loc[selection, "x_ref"] + _, equal_bins = pd.qcut(data, q=n_bins_start, retbins=True) + bin_numbering = np.arange(0, n_bins_start + 1) + equalbins_center = equal_bins[int(n_bins_start / 10) : int(9 * n_bins_start / 10)] + bin_numbering_center = bin_numbering[ + int(n_bins_start / 10) : int(9 * n_bins_start / 10) + ] + func = fastSigmoid + popt, _ = curve_fit(func, xdata=equalbins_center, ydata=bin_numbering_center) + print("Parameterisation for central occupancy:") + print("fastSigmoid(x,", *popt, ")") + print("Scan shift to match first bin center ...") + shift = 0.0 + while func(hist_range[0], popt[0] + shift, *popt[1:]) < first_bin_center: + shift += 0.1 + popt[0] += shift - 0.1 + popt[2] = abs(popt[2]) + print("shifted: fastSigmoid(x,", *popt, ")") + n_bins_final = ceil(func(hist_range[1], *popt)) + print( + "Final number of bins:", + n_bins_final, + "including offset of", + int(first_bin_center), + ) + comment = f"// p[0] + p[1] * x / (1 + p[2] * abs(x)) for nBins = {n_bins_final}\n" + cpp = ( + "constexpr auto p = std::array{" + + ", ".join([str(p) + "f" for p in popt]) + + "};" + ) + outpath = Path("parameterisations/result/hough_histogram_binning_params.hpp") + outpath.parent.mkdir(parents=True, exist_ok=True) + with open(outpath, "w") as result: + result.writelines([comment, cpp]) + return outpath + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument( + "--input-file", + type=str, + help="Path to the input file", + required=False, + ) + parser.add_argument( + "--tree-name", + type=str, + help="Path to the input file", + required=False, + ) + args = parser.parse_args() + args_dict = {arg: val for arg, val in vars(args).items() if val is not None} + outfile = parameterise_hough_histogram(**args_dict) diff --git a/parameterisations/parameterise_magnet_kink.py b/parameterisations/parameterise_magnet_kink.py new file mode 100644 index 0000000..df97066 --- /dev/null +++ b/parameterisations/parameterise_magnet_kink.py @@ -0,0 +1,162 @@ +from parameterisations.utils.parse_regression_coef_to_array import ( + parse_regression_coef_to_array, +) +from parameterisations.utils.fit_linear_regression_model import ( + fit_linear_regression_model, +) +import uproot +import argparse +from pathlib import Path + + +def parameterise_magnet_kink( + input_file: str = "data/param_data_selected.root", + tree_name: str = "Selected", + per_layer=False, +) -> Path: + """Function that calculates parameters for estimating the magnet kink z position. + + Args: + input_file (str, optional): Defaults to "data/param_data_selected.root". + tree_name (str, optional): Defaults to "Selected". + per_layer (bool, optional): If true also calculates parameters per SciFi layer. Defaults to False. + + Returns: + Path: Path to cpp code file. + """ + input_tree = uproot.open({input_file: tree_name}) + # this is an event list of dictionaries containing awkward arrays + array = input_tree.arrays() + array["dSlope_fringe"] = array["tx_ref"] - array["tx"] + # the magnet kink position is the point of intersection of the track tagents + array["z_mag_x_fringe"] = ( + array["x"] + - array["x_ref"] + - array["tx"] * array["z"] + + array["tx_ref"] * array["z_ref"] + ) / array["dSlope_fringe"] + array["dSlope_xEndT"] = array["tx_l11"] - array["tx"] + array["dSlope_xEndT_abs"] = abs(array["dSlope_xEndT"]) + array["x_EndT_abs"] = abs( + array["x_l11"] + array["tx_l11"] * (9410.0 - array["z_l11"]), + ) + # the magnet kink position is the point of intersection of the track tagents + array["z_mag_xEndT"] = ( + array["x"] + - array["x_l11"] + - array["tx"] * array["z"] + + array["tx_l11"] * array["z_l11"] + ) / array["dSlope_xEndT"] + + if per_layer: + layered_features = [f"x_diff_straight_l{layer}" for layer in range(12)] + rows = [] + for i, feat in enumerate(layered_features): + scale = 3000 + if "dSlope" not in feat: + array[f"x_l{i}_rel"] = array[f"x_l{i}"] / scale + array[f"x_diff_straight_l{i}"] = ( + array[f"x_l{i}"] + - array["x"] + - array["tx"] * (array[f"z_l{i}"] - array["z"]) + ) + + model, poly_features = fit_linear_regression_model( + array, + target_feat="z_mag_x_fringe", + features=[ + "tx", + "ty", + feat, + ], + keep=[ + "tx^2", + f"tx x_diff_straight_l{i}", + "ty^2", + f"x_diff_straight_l{i}^2", + ], + degree=2, + fit_intercept=True, + ) + rows.append( + "{" + + str(model.intercept_) + + "f," + + ",".join([str(coef) + "f" for coef in model.coef_ if coef != 0.0]) + + "}", + ) + + cpp_decl = parse_regression_coef_to_array( + model, + poly_features, + "zMagnetParamsLayers", + rows=rows, + ) + # now fit model for the reference plane + model_ref, poly_features_ref = fit_linear_regression_model( + array, + target_feat="z_mag_x_fringe", + features=["tx", "ty", "dSlope_fringe"], + keep=["tx^2", "tx dSlope_fringe", "ty^2", "dSlope_fringe^2"], + degree=2, + fit_intercept=True, + ) + cpp_ref = parse_regression_coef_to_array( + model_ref, + poly_features_ref, + "zMagnetParamsRef", + ) + + model_endt, poly_features_endt = fit_linear_regression_model( + array, + target_feat="z_mag_xEndT", + features=["tx", "dSlope_xEndT", "dSlope_xEndT_abs", "x_EndT_abs"], + keep=["tx^2", "dSlope_xEndT^2", "dSlope_xEndT_abs", "x_EndT_abs"], + degree=2, + fit_intercept=True, + ) + cpp_ref += parse_regression_coef_to_array( + model_endt, + poly_features_endt, + "zMagnetParamsEndT", + ) + + outpath = Path("parameterisations/result/z_mag_kink_params.hpp") + outpath.parent.mkdir(parents=True, exist_ok=True) + with open(outpath, "w") as result: + result.writelines(cpp_decl + cpp_ref if per_layer else cpp_ref) + return outpath + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument( + "--input-file", + type=str, + help="Path to the input file", + required=False, + ) + parser.add_argument( + "--tree-name", + type=str, + help="Path to the input file", + required=False, + ) + args = parser.parse_args() + args_dict = {arg: val for arg, val in vars(args).items() if val is not None} + outfile = parameterise_magnet_kink(**args_dict) + + try: + import subprocess + + # run clang-format for nicer looking result + subprocess.run( + [ + "clang-format", + "-i", + f"{outfile}", + ], + check=True, + ) + except: + pass diff --git a/parameterisations/parameterise_search_window.py b/parameterisations/parameterise_search_window.py new file mode 100644 index 0000000..7dbdb83 --- /dev/null +++ b/parameterisations/parameterise_search_window.py @@ -0,0 +1,101 @@ +from parameterisations.utils.parse_regression_coef_to_array import ( + parse_regression_coef_to_array, +) +from parameterisations.utils.fit_linear_regression_model import ( + fit_linear_regression_model, +) +import uproot +import argparse +from pathlib import Path + + +def parameterise_search_window( + input_file: str = "data/param_data_selected_all_p.root", + tree_name: str = "Selected", +) -> Path: + """Function that calculates parameters for estimating the hit search window border. + + Args: + input_file (str, optional): Defaults to "data/param_data_selected.root". + tree_name (str, optional): Defaults to "Selected". + + Returns: + Path: Path to cpp code file. + """ + input_tree = uproot.open({input_file: tree_name}) + # this is an event list of dictionaries containing awkward arrays + array = input_tree.arrays() + array["x_straight_diff_ref"] = ( + array["x"] + array["tx"] * (array["z_ref"] - array["z"]) - array["x_ref"] + ) + array["x_straight_diff_ref_abs"] = abs(array["x_straight_diff_ref"]) + array["inv_p_gev"] = 1000.0 / array["p"] + array["pol_qop_gev"] = array["signed_rel_current"] * array["qop"] * 1000.0 + + # now fit model for the reference plane + model_ref, poly_features_ref = fit_linear_regression_model( + array, + target_feat="x_straight_diff_ref_abs", + features=["ty", "tx", "inv_p_gev", "pol_qop_gev"], + keep=[ + "inv_p_gev", + "ty^2 inv_p_gev", + "tx^2 inv_p_gev", + "tx inv_p_gev pol_qop_gev", + "inv_p_gev^3", + "tx^3 pol_qop_gev", + "tx^2 inv_p_gev^2", + "tx inv_p_gev^2 pol_qop_gev", + "inv_p_gev^4", + "ty^2 tx^2 inv_p_gev", + "ty^2 tx inv_p_gev pol_qop_gev", + "ty^2 inv_p_gev^3", + "tx^4 inv_p_gev", + ], + degree=5, + fit_intercept=False, + ) + cpp_ref = parse_regression_coef_to_array( + model_ref, + poly_features_ref, + "momentumWindowParamsRef", + ) + outpath = Path("parameterisations/result/search_window_params.hpp") + outpath.parent.mkdir(parents=True, exist_ok=True) + with open(outpath, "w") as result: + result.writelines(cpp_ref) + return outpath + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument( + "--input-file", + type=str, + help="Path to the input file", + required=False, + ) + parser.add_argument( + "--tree-name", + type=str, + help="Path to the input file", + required=False, + ) + args = parser.parse_args() + args_dict = {arg: val for arg, val in vars(args).items() if val is not None} + outfile = parameterise_search_window(**args_dict) + + try: + import subprocess + + # run clang-format for nicer looking result + subprocess.run( + [ + "clang-format", + "-i", + f"{outfile}", + ], + check=True, + ) + except: + pass diff --git a/parameterisations/parameterise_track_model.py b/parameterisations/parameterise_track_model.py new file mode 100644 index 0000000..c06380c --- /dev/null +++ b/parameterisations/parameterise_track_model.py @@ -0,0 +1,256 @@ +from parameterisations.utils.parse_regression_coef_to_array import ( + parse_regression_coef_to_array, +) +from parameterisations.utils.fit_linear_regression_model import ( + fit_linear_regression_model, +) +import uproot +import argparse +from pathlib import Path + + +def parameterise_track_model( + input_file: str = "data/param_data_selected.root", + tree_name: str = "Selected", +) -> Path: + """Function that calculates the parameterisations to estimate track model coefficients. + + Args: + input_file (str, optional): Defaults to "data/param_data_selected.root". + tree_name (str, optional): Defaults to "Selected". + + Returns: + Path: Path to cpp code files containing the found parameters. + """ + input_tree = uproot.open({input_file: tree_name}) + # this is an event list of dictionaries containing awkward arrays + array = input_tree.arrays() + array["dSlope_fringe"] = array["tx_ref"] - array["tx"] + array["dSlope_fringe_abs"] = abs(array["dSlope_fringe"]) + array["yStraightRef"] = array["y"] + array["ty"] * (array["z_ref"] - array["z"]) + array["y_ref_straight_diff"] = array["y_ref"] - array["yStraightRef"] + array["ty_ref_straight_diff"] = array["ty_ref"] - array["ty"] + array["dSlope_xEndT"] = array["tx_l11"] - array["tx"] + array["dSlope_yEndT"] = array["ty_l11"] - array["ty"] + array["dSlope_xEndT_abs"] = abs(array["dSlope_xEndT"]) + array["dSlope_yEndT_abs"] = abs(array["dSlope_yEndT"]) + array["yStraightOut"] = array["y"] + array["ty"] * (array["z_out"] - array["z"]) + array["yDiffOut"] = array["y_out"] - array["yStraightOut"] + array["yStraightEndT"] = array["y"] + array["ty"] * (9410.0 - array["z"]) + array["yDiffEndT"] = ( + array["y_l11"] + array["ty_l11"] * (9410.0 - array["z_l11"]) + ) - array["yStraightEndT"] + + stereo_layers = [1, 2, 5, 6, 9, 10] + for layer in stereo_layers: + array[f"y_straight_diff_l{layer}"] = ( + array[f"y_l{layer}"] + - array["y"] + - array["ty"] * (array[f"z_l{layer}"] - array["z"]) + ) + + model_cx, poly_features_cx = fit_linear_regression_model( + array, + target_feat="CX_ex", + features=["tx", "ty", "dSlope_fringe"], + degree=3, + keep_only_linear_in="dSlope_fringe", + fit_intercept=False, + ) + model_dx, poly_features_dx = fit_linear_regression_model( + array, + target_feat="DX_ex", + features=["tx", "ty", "dSlope_fringe"], + degree=3, + keep_only_linear_in="dSlope_fringe", + fit_intercept=False, + ) + # this list has been found empirically by C.Hasse + keep_y_corr = [ + "ty dSlope_fringe_abs", + "ty tx^2 dSlope_fringe_abs", + "ty^3 dSlope_fringe_abs", + "ty^3 tx^2 dSlope_fringe_abs", + "dSlope_fringe", + "ty tx dSlope_fringe", + "ty tx^3 dSlope_fringe", + "ty^3 tx dSlope_fringe", + ] + model_y_corr_ref, poly_features_y_corr_ref = fit_linear_regression_model( + array, + target_feat="y_ref_straight_diff", + features=["ty", "tx", "dSlope_fringe", "dSlope_fringe_abs"], + keep=keep_y_corr, + degree=6, + fit_intercept=False, + ) + rows = [] + for layer in stereo_layers: + model_y_corr_l, poly_features_y_corr_l = fit_linear_regression_model( + array, + target_feat=f"y_straight_diff_l{layer}", + features=["ty", "tx", "dSlope_fringe", "dSlope_fringe_abs"], + keep=keep_y_corr, + degree=6, + fit_intercept=False, + ) + rows.append( + "{" + + ",".join( + [str(coef) + "f" for coef in model_y_corr_l.coef_ if coef != 0.0], + ) + + "}", + ) + + model_ty_corr_ref, poly_features_ty_corr_ref = fit_linear_regression_model( + array, + target_feat="ty_ref_straight_diff", + features=["ty", "tx", "dSlope_fringe", "dSlope_fringe_abs"], + # this list was found by using Lasso regularisation to drop useless features + keep=[ + "ty dSlope_fringe^2", + "ty tx^2 dSlope_fringe_abs", + "ty^3 dSlope_fringe_abs", + "ty^3 tx^2 dSlope_fringe_abs", + "ty tx dSlope_fringe", + "ty tx^3 dSlope_fringe", + ], + degree=6, + fit_intercept=False, + ) + + model_cy, poly_features_cy = fit_linear_regression_model( + array, + target_feat="CY_ex", + features=["ty", "tx", "dSlope_fringe", "dSlope_fringe_abs"], + # this list was found by using Lasso regularisation to drop useless features + keep=[ + "ty dSlope_fringe^2", + "ty dSlope_fringe_abs", + "ty tx^2 dSlope_fringe_abs", + "ty^3 dSlope_fringe_abs", + "ty tx dSlope_fringe", + ], + degree=4, + fit_intercept=False, + ) + + model_y_match, poly_features_y_match = fit_linear_regression_model( + array, + target_feat="yDiffOut", + features=[ + "ty", + "dSlope_xEndT", + "dSlope_yEndT", + ], + keep=[ + "ty dSlope_yEndT^2", + "ty dSlope_xEndT^2", + ], + degree=3, + fit_intercept=False, + ) + keep_y_match_precise = [ + "dSlope_yEndT", + "ty dSlope_xEndT_abs", + "ty dSlope_yEndT_abs", + "ty dSlope_yEndT^2", + "ty dSlope_xEndT^2", + "ty tx dSlope_xEndT", + "tx^2 dSlope_yEndT", + "ty tx^2 dSlope_xEndT_abs", + "ty^3 tx dSlope_xEndT", + ] + model_y_match_precise, poly_features_y_match_precise = fit_linear_regression_model( + array, + "yDiffEndT", + [ + "ty", + "tx", + "dSlope_xEndT", + "dSlope_yEndT", + "dSlope_xEndT_abs", + "dSlope_yEndT_abs", + ], + keep=keep_y_match_precise, + degree=5, + ) + + cpp_cx = parse_regression_coef_to_array(model_cx, poly_features_cx, "cxParams") + cpp_dx = parse_regression_coef_to_array(model_dx, poly_features_dx, "dxParams") + cpp_y_corr_layers = parse_regression_coef_to_array( + model_y_corr_l, + poly_features_y_corr_l, + "yCorrParamsLayers", + rows=rows, + ) + cpp_y_corr_ref = parse_regression_coef_to_array( + model_y_corr_ref, + poly_features_y_corr_ref, + "yCorrParamsRef", + ) + cpp_ty_corr_ref = parse_regression_coef_to_array( + model_ty_corr_ref, + poly_features_ty_corr_ref, + "tyCorrParamsRef", + ) + cpp_cy = parse_regression_coef_to_array(model_cy, poly_features_cy, "cyParams") + cpp_y_match = parse_regression_coef_to_array( + model_y_match, + poly_features_y_match, + "bendYParamsMatch", + ) + cpp_y_match_precise = parse_regression_coef_to_array( + model_y_match_precise, + poly_features_y_match_precise, + "bendYParams", + ) + + outpath = Path("parameterisations/result/track_model_params.hpp") + outpath.parent.mkdir(parents=True, exist_ok=True) + with open(outpath, "w") as result: + result.writelines( + cpp_cx + + cpp_dx + + cpp_y_corr_layers + + cpp_y_corr_ref + + cpp_ty_corr_ref + + cpp_cy + + cpp_y_match + + cpp_y_match_precise, + ) + return outpath + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument( + "--input-file", + type=str, + help="Path to the input file", + required=False, + ) + parser.add_argument( + "--tree-name", + type=str, + help="Path to the input file", + required=False, + ) + args = parser.parse_args() + args_dict = {arg: val for arg, val in vars(args).items() if val is not None} + outfile = parameterise_track_model(**args_dict) + + try: + import subprocess + + # run clang-format for nicer looking result + subprocess.run( + [ + "clang-format", + "-i", + f"{outfile}", + ], + check=True, + ) + except: + pass diff --git a/parameterisations/residual_train_matching_ghost_mlps_electron.py b/parameterisations/residual_train_matching_ghost_mlps_electron.py new file mode 100644 index 0000000..e94b189 --- /dev/null +++ b/parameterisations/residual_train_matching_ghost_mlps_electron.py @@ -0,0 +1,262 @@ +# flake8: noqaq + +import os +import argparse +import ROOT +from ROOT import TMVA, TList, TTree + + +def res_train_matching_ghost_mlp( + input_file: str = "data/ghost_data_B.root", + tree_name: str = "PrMatchNN.PrMCDebugMatchToolNN/MVAInputAndOutput", + exclude_electrons: bool = False, + only_electrons: bool = True, + residuals: str = "None", + n_train_signal: int = 2e3, # 50e3 + n_train_bkg: int = 5e3, # 500e3 + n_test_signal: int = 1e3, + n_test_bkg: int = 2e3, + prepare_data: bool = True, + outdir: str = "nn_electron_training", +): + """Trains an MLP to classify the match between Velo and Seed track. + + Args: + input_file (str, optional): Defaults to "data/ghost_data.root". + tree_name (str, optional): Defaults to "PrMatchNN.PrMCDebugMatchToolNN/Tuple". + exclude_electrons (bool, optional): Defaults to False. + only_electrons (bool, optional): Signal only of electrons, but bkg of all particles. Defaults to True. + residuals (bool, optional): Signal only of mlp<0.215. Defaults to False. + n_train_signal (int, optional): Number of true matches to train on. Defaults to 200e3. + n_train_bkg (int, optional): Number of fake matches to train on. Defaults to 200e3. + n_test_signal (int, optional): Number of true matches to test on. Defaults to 75e3. + n_test_bkg (int, optional): Number of fake matches to test on. Defaults to 75e3. + prepare_data (bool, optional): Split data into signal and background file. Defaults to False. + """ + + if prepare_data and not residuals == "None": + resrdf = ROOT.RDataFrame(residuals, input_file) + rdf = ROOT.RDataFrame(tree_name, input_file) + if exclude_electrons: + rdf_signal = rdf.Filter( + "quality == 1 && mlp<0.215", # -1 elec, 0 ghost, 1 all part wo elec + "Signal is defined as one label (excluding electrons)", + ) + rdf_bkg = rdf.Filter( + "quality == 0 && mlp<0.215", + "Ghosts are defined as zero label", + ) + resrdf_signal = resrdf.Filter( + "quality == 1", # -1 elec, 0 ghost, 1 all part wo elec + "Signal is defined as one label (excluding electrons)", + ) + resrdf_bkg = resrdf.Filter( + "quality == 0", + "Ghosts are defined as zero label", + ) + else: + if only_electrons: + rdf_signal = rdf.Filter( + "quality == -1 && mlp<0.215", # electron that is true match but mlp said no match + "Signal is defined as one label (only electrons)", + ) + resrdf_signal = resrdf.Filter( + "quality == -1", # electron that is true match but mlp said no match + "Signal is defined as one label (only electrons)", + ) + else: + rdf_signal = rdf.Filter( + "abs(quality) > 0 && mlp<0.215", + "Signal is defined as non-zero label", + ) + resrdf_signal = resrdf.Filter( + "abs(quality) > 0", + "Signal is defined as non-zero label", + ) + rdf_bkg = rdf.Filter( + "quality == 0 && mlp<0.215", + "Ghosts are defined as zero label", + ) + resrdf_bkg = resrdf.Filter( + "quality == 0", + "Ghosts are defined as zero label", + ) + + rdf_signal.Snapshot( + "Signal", + outdir + "/" + input_file.strip(".root") + "_mlp_matching_signal.root", + ) + rdf_bkg.Snapshot( + "Bkg", + outdir + "/" + input_file.strip(".root") + "_mlp_matching_bkg.root", + ) + resrdf_signal.Snapshot( + "Signal", + outdir + "/" + input_file.strip(".root") + "_res_matching_signal.root", + ) + resrdf_bkg.Snapshot( + "Bkg", + outdir + "/" + input_file.strip(".root") + "_res_matching_bkg.root", + ) + + mlp_signal_file = ROOT.TFile.Open( + outdir + "/" + input_file.strip(".root") + "_mlp_matching_signal.root", + "READ", + ) + mlp_signal_tree = mlp_signal_file.Get("Signal") + + mlp_bkg_file = ROOT.TFile.Open( + outdir + "/" + input_file.strip(".root") + "_mlp_matching_bkg.root", + "READ", + ) + mlp_bkg_tree = mlp_bkg_file.Get("Bkg") + #### + + res_signal_file = ROOT.TFile.Open( + outdir + "/" + input_file.strip(".root") + "_res_matching_signal.root", + "READ", + ) + res_signal_tree = res_signal_file.Get("Signal") + + outputsignalFile = ROOT.TFile( + outdir + "/" + input_file.strip(".root") + "_merged_matching_signal.root", + "RECREATE", + ) + signaltreeList = TList() + + signaltreeList.Add(mlp_signal_tree) + signaltreeList.Add(res_signal_tree) + + mergedsignalTree = TTree.MergeTrees(signaltreeList) + mergedsignalTree.Write() + outputsignalFile.Close() + + res_bkg_file = ROOT.TFile.Open( + outdir + "/" + input_file.strip(".root") + "_res_matching_bkg.root", + "READ", + ) + res_bkg_tree = res_bkg_file.Get("Bkg") + + outputbkgFile = ROOT.TFile( + outdir + "/" + input_file.strip(".root") + "_merged_matching_bkg.root", + "RECREATE", + ) + bkgtreeList = TList() + + bkgtreeList.Add(mlp_bkg_tree) + bkgtreeList.Add(res_bkg_tree) + + mergedbkgTree = TTree.MergeTrees(bkgtreeList) + mergedbkgTree.Write() + outputbkgFile.Close() + + ##### + + signal_file = ROOT.TFile.Open( + outdir + "/" + input_file.strip(".root") + "_merged_matching_signal.root", + "READ", + ) + signal_tree = signal_file.Get("Signal") + + bkg_file = ROOT.TFile.Open( + outdir + "/" + input_file.strip(".root") + "_merged_matching_bkg.root" + ) + bkg_tree = bkg_file.Get("Bkg") + + ### + + os.chdir(outdir + "/result") + output = ROOT.TFile( + "matching_ghost_mlp_training.root", + "RECREATE", + ) + + factory = TMVA.Factory( + "TMVAClassification", + output, + "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification", + ) + factory.SetVerbose(True) + dataloader = TMVA.DataLoader("MatchNNDataSet") + + dataloader.AddVariable("chi2", "F") + dataloader.AddVariable("teta2", "F") + dataloader.AddVariable("distX", "F") + dataloader.AddVariable("distY", "F") + dataloader.AddVariable("dSlope", "F") + dataloader.AddVariable("dSlopeY", "F") + + dataloader.AddSignalTree(signal_tree, 1.0) + dataloader.AddBackgroundTree(bkg_tree, 1.0) + + # these cuts are also applied in the algorithm + preselectionCuts = ROOT.TCut( + # "chi2<30 && distX<500 && distY<500 && dSlope<2.0 && dSlopeY<0.15", #### ganz raus für elektronen + ) + dataloader.PrepareTrainingAndTestTree( + preselectionCuts, + f"SplitMode=random:V:nTrain_Signal={n_train_signal}:nTrain_Background={n_train_bkg}:nTest_Signal={n_test_signal}:nTest_Background={n_test_bkg}", + # normmode default is EqualNumEvents + ) + + factory.BookMethod( + dataloader, + TMVA.Types.kMLP, + "matching_mlp", + "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator", + ) + factory.TrainAllMethods() + factory.TestAllMethods() + factory.EvaluateAllMethods() + output.Close() + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument( + "--input-file", + type=str, + help="Path to the input file", + required=False, + ) + parser.add_argument( + "--exclude_electrons", + action="store_true", + help="Excludes electrons from training.", + required=False, + ) + parser.add_argument( + "--only_electrons", + action="store_true", + help="Only electrons for signal training.", + required=False, + ) + parser.add_argument( + "--n-train-signal", + type=int, + help="Number of training tracks for signal.", + required=False, + ) + parser.add_argument( + "--n-train-bkg", + type=int, + help="Number of training tracks for bkg.", + required=False, + ) + parser.add_argument( + "--n-test-signal", + type=int, + help="Number of testing tracks for signal.", + required=False, + ) + parser.add_argument( + "--n-test-bkg", + type=int, + help="Number of testing tracks for bkg.", + required=False, + ) + + args = parser.parse_args() + args_dict = {arg: val for arg, val in vars(args).items() if val is not None} + + res_train_matching_ghost_mlp(**args_dict) diff --git a/parameterisations/result/default_forward_ghost.hpp b/parameterisations/result/default_forward_ghost.hpp new file mode 100644 index 0000000..c205697 --- /dev/null +++ b/parameterisations/result/default_forward_ghost.hpp @@ -0,0 +1,108 @@ +constexpr auto fMin = std::array{ + {0.00086611090228, 0.000137108087074, 9.1552734375e-05, 1.52587890625e-05, + 1.49011611938e-08, 0, 3.38108901987e-10, 0, 0}}; +constexpr auto fMax = + std::array{{7.99757671356, 139.755401611, 499.902832031, + 139.934204102, 0.0548411794007, 0.33653563261, + 0.0011771483114, 0.614122271538, 0.0932129621506}}; +constexpr auto fWeightMatrix0to1 = std::array, 13>{ + {{0.272388837195353, 1.04297766281443, 7.10858971290199, 8.20176699323914, + -17.4998198279343, -0.903938445734019, -4.45523353351358, + 0.202604346228416, -0.343763626116408, -6.0398577123475}, + {1.17259942394887, -0.372252986403353, -0.172055869721126, + 4.32425941771619, 0.980522044689679, -0.486163242078544, 4.89499262471543, + -2.19861130758734, -9.43992619200679, -2.37510165732473}, + {-0.312463651685767, -0.114031703331406, -0.643524084362763, + -0.130218804467335, 0.0672200809874041, 0.492579418283905, + 10.0423165027703, -9.1229718440813, -3.21081732473868, -3.78681415782996}, + {0.285964399088691, 3.50382532157828, 0.202967804648741, -2.34731912244972, + -1.01724465412901, 6.94879051931226, 1.42757737963066, -0.414886005380144, + -5.12456720768917, -5.42877386327517}, + {-1.17951731489478, -0.786765172581322, -4.2989135483231, 4.05294030963229, + -0.127313249850962, -4.14839099916227, 3.23904819574731, + -13.6552536266634, 20.5968822768501, 6.85315498878814}, + {0.103392918358953, 1.44880697882548, 0.577811396176936, 1.10045098601948, + -0.178340433397024, -17.8770425761109, 3.7017773013521, -23.3892167651105, + 15.0495143106538, -17.4605298799865}, + {-1.64979711432504, 0.774908843327995, 3.31059510110807, -3.1819692768259, + 7.12231795634781, -0.241753227182394, -0.977884374115893, + 0.952532388892299, 0.723099651883065, 6.54591062809547}, + {-0.0534432249645241, 3.9887257817946, -1.49200429968719, 11.8855727958475, + 1.04666107895933, 0.238167385927067, -17.6503013604389, -0.6355065389129, + 34.3524751991456, 32.5893217368421}, + {0.386236757608688, -3.68207271228384, -1.59827939590235, + -5.63561468820375, -2.05612305429069, -0.414007692878055, + -2.30218891934988, -1.45254018219727, -41.888511388421, + -55.4154956571825}, + {-0.33882942035142, 0.828500879691617, -1.11913145963814, 5.44432070997378, + 0.593216106072808, -0.335356938266522, -4.29488215708929, + -0.45349431026542, 12.6168245530257, 11.203180125896}, + {-5.06732270572528, -0.747932010258911, -1.32944569630483, + 0.399754582341283, -1.22419379102021, -0.0632059754142294, + -3.9176205612916, 4.95338770012354, -10.0874931996749, -13.4899867496953}, + {-0.652708751114843, 0.153993426617753, 0.507696533435112, + -0.0829575859982346, -1.26075671332944, -1.72921422048723, + 0.436623404900834, 1.2481716555653, 4.75489497214422, 0.917647460712304}, + {-0.337064695166363, 1.6829713570542, -1.24667087979073, 4.38935163725774, + 0.546771935887102, 0.380216805759757, -4.27094569696754, 1.60030195739679, + 21.1019766790379, 22.9277879180437}}}; +constexpr auto fWeightMatrix1to2 = std::array, 11>{ + {{0.942639197400156, -0.0931922637028017, 1.16131136847027, + -0.463586546886379, -0.00734730684531865, 0.659865738065189, + -0.0819640968388477, 0.716168152659691, 0.0594465496519534, + -3.09809338025968, -0.993314598112327, -0.626796644903994, + 1.18112507293241, -7.53912207323744}, + {-0.290157117133191, -1.44319213353958, 0.976801127908426, + 1.83059667355593, -0.579127895773621, -0.959358564216034, + -0.200943614057267, 2.26102190218572, 0.680574054232225, + 0.512044291258324, 0.441279132836691, 0.195148753454237, + -4.40558418761793, -2.59697427283538}, + {0.231019193167673, -0.33534671921076, -4.02952877004057, + 0.328301743837591, -0.935217897351683, 0.656308147872124, + 0.148770195853327, -1.02822979925373, -1.15074999231744, 1.25931257478392, + -5.51506732446672, 2.76878002159781, 1.15670995216412, -1.81920686548505}, + {-1.4433538095335, -1.39651294706804, -0.0384612540687588, + -0.643375798593072, -0.125102719515762, -0.654090297545811, + -1.64699393573932, -0.508246308405062, -0.781867310732538, + 1.0126843726006, -1.62926724862902, 1.36812357325107, -0.529386420395731, + -0.0138925908234309}, + {-1.41898718038457, 0.477953102899375, -0.322619989760896, + 1.09732380296345, -0.782655793929218, 0.462713092659323, + -2.94842712863178, -0.132292667509809, 0.0769059927035169, + 1.19584278425479, -1.05534832662164, -0.531211272706436, + -0.611338365394562, 3.05377051979242}, + {-1.24565900961033, -0.803882286327658, 0.779616435095014, + -0.149080238970127, -1.12090436198206, -0.881759817062632, + -2.29233937767415, -1.47774128243345, 1.08239889708401, 2.24462771397501, + 0.485265744305715, -1.48553084966211, -0.0143728439705144, + 3.27583681932498}, + {-0.28996288685836, 0.780550033512762, -2.15121583289839, 1.20922563714172, + -0.644843512306469, -0.234457523529768, -0.231658959155198, + 0.218579418768696, -0.395509623165805, -0.411218621945028, + -1.02932631809835, -0.376223727062923, -0.340041262998441, + 3.63881067894002}, + {1.44978573970303, -2.18583173535086, -0.846483915375948, + 0.105328656470861, 1.87072932363927, -0.00190765575147529, + 0.584012973055999, -1.39776672542255, -0.180232469445207, + -1.98952098967519, -1.37262959684684, -0.90548142705001, + -0.920429811986854, -2.99277232574331}, + {0.921784086695698, 0.803938386481379, -0.793436984418934, + -0.198036997127606, 0.88955947123962, 0.62100428659737, 1.37636249959335, + 0.820454358047461, -0.632502523362294, -2.07934437515782, + -0.181199371886594, -3.08568993123453, -0.36401687310168, + -2.43212452146954}, + {0.699249590603178, 0.278024565615921, -0.198350259368371, + -0.783418866551348, 0.118700073145684, 0.21833431656626, 1.65512324292893, + -0.111147682703641, 1.3283515189562, -0.246599469063488, + 0.754508475403135, 0.00506528019287302, 0.166494023039331, + -4.84019659854236}, + {0.298019259877464, 0.00346409235528412, 1.35256951642456, + 0.869362943235745, -1.52238605698392, 1.83110259539772, + -0.878203306047072, -0.0145711167869491, -2.02333355061148, + 0.870770188694429, 0.379444379601702, 0.418591035142932, 0.19006790384741, + -4.59660818674123}}}; +constexpr auto fWeightMatrix2to3 = std::array{ + {0.283357190373951, -0.505821393459412, -0.992928878077031, + 1.46980063870956, -0.393221447900897, 0.68377817358151, -0.516508953958371, + -0.282023879956352, -0.65334083539925, 0.526593979331363, + -0.157977106282126, 1.39115062576625}}; diff --git a/parameterisations/result/field_integral_params.hpp b/parameterisations/result/field_integral_params.hpp new file mode 100644 index 0000000..c5ba555 --- /dev/null +++ b/parameterisations/result/field_integral_params.hpp @@ -0,0 +1,9 @@ +// param[0] + param[1]*ty^2 + param[2]*tx^2 + param[3]*tx tx_ref + +// param[4]*tx_ref^2 + param[5]*ty^4 + param[6]*ty^2 tx^2 + param[7]*ty^2 tx +// tx_ref + param[8]*ty^2 tx_ref^2 + param[9]*tx^4 + param[10]*tx^3 tx_ref + +// param[11]*tx_ref^4 +static constexpr std::array fieldIntegralParamsRef{ + -1.2094486121528516f, -2.7897043324822492f, -0.35976930628193077f, + -0.47138558705675454f, -0.5600847231491961f, 14.009315350693472f, + -16.162818973243674f, -8.807994419844437f, -0.8753190393972976f, + 2.98254201374128f, 0.9625408279466898f, 0.10200564097830103f}; diff --git a/parameterisations/result/hough_histogram_binning_params.hpp b/parameterisations/result/hough_histogram_binning_params.hpp new file mode 100644 index 0000000..7dff656 --- /dev/null +++ b/parameterisations/result/hough_histogram_binning_params.hpp @@ -0,0 +1,3 @@ +// p[0] + p[1] * x / (1 + p[2] * abs(x)) for nBins = 1152 +constexpr auto p = + std::array{576.9713937732083f, 0.5780266207743059f, 0.0006728484590464921f}; diff --git a/parameterisations/result/matching.hpp b/parameterisations/result/matching.hpp new file mode 100644 index 0000000..5c4e8fd --- /dev/null +++ b/parameterisations/result/matching.hpp @@ -0,0 +1,36 @@ +const auto fMin = std::array{{6.2234539655e-06, 1.07554035367e-06, 0, 0, 1.38022005558e-06, 0}}; +const auto fMax = std::array{ + {14.9999675751, 0.414966464043, 249.946044922, 399.411682129, 1.32134592533, 0.148659110069}}; +const auto fWeightMatrix0to1 = std::array, 8>{ + {{-1.81318680192985, 11.5306183035191, -1.52244588205196, -2.18285669265567, 5.01352644485465, + -5.51296033910149, 5.73927468893956}, + {-0.672534709795381, -3.00002957605882, 6.88356805276872, -6.22160659721202, 6.77446979297102, + 3.22745998562836, 2.16560576533548}, + {0.671467962865227, -5.25794414846222, 19.3828230421486, 11.0803546893003, -6.38234816567783, + -8.90286557784295, 10.7684525390767}, + {-0.2692056487945, -45.0124720478328, 3.02956760827695, -5.39985352881923, 2.33235637852444, 3.67377088731803, + -41.6892338123688}, + {-1.7097866252219, -2.44815463022872, -6.25060061923427, -2.9527155271918, -2.82646287573035, + -2.57930159017213, -15.3820440704287}, + {-1.05477315994645, 10.922735030486, 3.15543979640938, -1.83775727341147, 7.65261550754585, -6.94317448033313, + 6.86131922732798}, + {-0.79066972900182, -0.617757099680603, 0.740878002718091, 0.681870030239224, -1.20759406685829, + 0.769290467724204, -1.8437808630988}, + {-0.184133955272691, 1.92932229057759, 10.2040343486098, 4.08783185462586, -2.02695228923391, + -3.00792235466827, 10.2821397360227}}}; +const auto fWeightMatrix1to2 = std::array, 6>{ + {{-0.529669554811976, -2.45282233466048, 1.45989990967879, 3.56480948423982, 0.687553026936273, + 1.78027012856298, 1.63438201788813, -2.94255147008571, -2.10797233521637}, + {1.36475059953963, 0.542190986793164, -0.135276688209357, -0.761685823733301, 0.679401991574712, + -1.40198671179551, -1.61531096417457, -0.791464040720268, 0.852677079400607}, + {0.767942415115046, -2.97714597002192, -3.5629451506092, -2.69040161409325, 3.21229316674369, + 0.688654835034672, -0.825543426908553, -1.84996857815595, -7.69537697905136}, + {0.114639040310829, -0.37219550277267, -1.42908394861416, -1.86752756108709, -0.839837159377482, + -1.70735346337309, 1.61348068527877, -1.66550797875971, -0.949665027488677}, + {-0.0439008856537062, 0.14714685191285, -0.900218617709006, 0.734110875341394, -3.26381964641836, + -0.903556360012639, -0.848898627795279, 2.4264150318668, 0.290359165274663}, + {0.404515384352441, -0.158287682443141, -1.5660040193724, -1.64457334373498, 0.883554107720622, + -1.48730815915072, -1.52203810494393, 3.67527716420631, -0.393484682839}}}; +const auto fWeightMatrix2to3 = + std::array{{-0.776910463978178, 0.811895970822024, 0.775804138783722, 0.282335113136984, + -0.612856158181358, 0.786801771324536, -2.16123706007375}}; diff --git a/parameterisations/result/search_window_params.hpp b/parameterisations/result/search_window_params.hpp new file mode 100644 index 0000000..1e478a4 --- /dev/null +++ b/parameterisations/result/search_window_params.hpp @@ -0,0 +1,11 @@ +// param[0]*inv_p_gev + param[1]*ty^2 inv_p_gev + param[2]*tx^2 inv_p_gev + +// param[3]*tx inv_p_gev pol_qop_gev + param[4]*inv_p_gev^3 + param[5]*tx^3 +// pol_qop_gev + param[6]*tx^2 inv_p_gev^2 + param[7]*tx inv_p_gev^2 pol_qop_gev +// + param[8]*inv_p_gev^4 + param[9]*ty^2 tx^2 inv_p_gev + param[10]*ty^2 tx +// inv_p_gev pol_qop_gev + param[11]*ty^2 inv_p_gev^3 + param[12]*tx^4 inv_p_gev +static constexpr std::array momentumWindowParamsRef{ + 4018.896625676043f, 6724.789549369031f, 3970.9093976497766f, + -4363.5807241252905f, 1421.1056758688073f, 4934.07761471779f, + 6985.252911263751f, -5538.28013195104f, 1642.8616070452542f, + 106068.96918885755f, -94446.81037767915f, 26489.793756692892f, + -23936.54391006025f}; diff --git a/parameterisations/result/track_model_params.hpp b/parameterisations/result/track_model_params.hpp new file mode 100644 index 0000000..33b36e6 --- /dev/null +++ b/parameterisations/result/track_model_params.hpp @@ -0,0 +1,58 @@ +// param[0]*dSlope_fringe + param[1]*tx dSlope_fringe + param[2]*ty +// dSlope_fringe + param[3]*tx^2 dSlope_fringe + param[4]*tx ty dSlope_fringe + +// param[5]*ty^2 dSlope_fringe +static constexpr std::array cxParams{ + 2.335283084724005e-05f, -5.394341220986507e-08f, -1.1353152524130453e-06f, + 9.213281616649267e-06f, -6.76457896718169e-07f, -0.0003740758569392804f}; +// param[0]*dSlope_fringe + param[1]*tx dSlope_fringe + param[2]*ty +// dSlope_fringe + param[3]*tx^2 dSlope_fringe + param[4]*tx ty dSlope_fringe + +// param[5]*ty^2 dSlope_fringe +static constexpr std::array dxParams{ + -7.057523874477465e-09f, 1.0524178059699073e-11f, 6.46124765440666e-10f, + 2.595690034874298e-09f, 8.044356540608104e-11f, 9.933758467661586e-08f}; +// param[0]*dSlope_fringe + param[1]*ty dSlope_fringe_abs + param[2]*ty tx +// dSlope_fringe + param[3]*ty^3 dSlope_fringe_abs + param[4]*ty tx^2 +// dSlope_fringe_abs + param[5]*ty^3 tx dSlope_fringe + param[6]*ty tx^3 +// dSlope_fringe + param[7]*ty^3 tx^2 dSlope_fringe_abs +static constexpr std::array, 6> yCorrParamsLayers{ + {{1.9141402652138315f, 154.61935746400832f, 3719.298754021463f, + -6981.575944838166f, -67.7612042340458f, 41484.88865215446f, + 30544.717526101966f, 211219.00520598015f}, + {1.9802106454737567f, 146.34197177414035f, 3766.9995843145575f, + -7381.001822418669f, 18.407833054380728f, 42635.398541425144f, + 31434.95400997568f, 218404.36150766257f}, + {2.6036680178541256f, 53.231282135657125f, 4236.335446831202f, + -10844.798302911375f, 986.1498917330866f, 52670.269097485856f, + 39380.4857744525f, 281250.90766092145f}, + {2.6802443731107797f, 40.75834605688442f, 4296.645356936966f, + -11234.776424245354f, 1115.363228090216f, 53813.817216417505f, + 40299.07624778942f, 288431.507847565f}, + {3.3827128857688793f, -76.61325300322648f, 4875.424130053332f, + -14585.199358667853f, 2322.162251501158f, 63618.048819648175f, + 48278.83901554796f, 350657.56046107266f}, + {3.4657288815375846f, -90.58976402034898f, 4946.538479838353f, + -14962.319670402725f, 2464.758450826609f, 64707.51942328425f, + 49179.43246319585f, 357681.17176708044f}}}; +// param[0]*dSlope_fringe + param[1]*ty dSlope_fringe_abs + param[2]*ty tx +// dSlope_fringe + param[3]*ty^3 dSlope_fringe_abs + param[4]*ty tx^2 +// dSlope_fringe_abs + param[5]*ty^3 tx dSlope_fringe + param[6]*ty tx^3 +// dSlope_fringe + param[7]*ty^3 tx^2 dSlope_fringe_abs +static constexpr std::array yCorrParamsRef{ + 2.5415524238347658f, 63.25841388467006f, 4187.534822693825f, + -10520.25391602297f, 881.6859925052617f, 51730.04107647908f, + 38622.50428524951f, 275325.5721020971f}; +// param[0]*ty tx dSlope_fringe + param[1]*ty dSlope_fringe^2 + param[2]*ty^3 +// dSlope_fringe_abs + param[3]*ty tx^2 dSlope_fringe_abs + param[4]*ty tx^3 +// dSlope_fringe + param[5]*ty^3 tx^2 dSlope_fringe_abs +static constexpr std::array tyCorrParamsRef{ + 0.9346197967408639f, -0.4658007458482092f, -4.119808929050499f, + 2.9514781492224613f, 12.5961355543964f, 39.98472114588754f}; +// param[0]*ty dSlope_fringe_abs + param[1]*ty tx dSlope_fringe + param[2]*ty +// dSlope_fringe^2 + param[3]*ty^3 dSlope_fringe_abs + param[4]*ty tx^2 +// dSlope_fringe_abs +static constexpr std::array cyParams{ + -1.2034772990836242e-05f, 8.344645618037317e-05f, -3.924972865228243e-05f, + 0.00024639290417116324f, 0.0001867723161873795f}; +// param[0]*ty dSlope_xEndT^2 + param[1]*ty dSlope_yEndT^2 +static constexpr std::array bendYParams{-1974.6355416889746f, + -35933.837494833504f}; diff --git a/parameterisations/result/veloUT_forward_ghost.hpp b/parameterisations/result/veloUT_forward_ghost.hpp new file mode 100644 index 0000000..fa51e4d --- /dev/null +++ b/parameterisations/result/veloUT_forward_ghost.hpp @@ -0,0 +1,57 @@ +constexpr auto fMin = + std::array{{-5.79507064819, 0.000539337401278, 6.44962929073e-05, + 9.1552734375e-05, 0, 0, 0, 1.27572263864e-09, 0, 0}}; +constexpr auto fMax = std::array{ + {21.3727073669, 7.9990901947, 139.93737793, 499.828094482, 139.837768555, + 0.0549617446959, 0.281096696854, 0.00079078116687, 0.349586248398, + 0.0576412677765}}; +constexpr auto fWeightMatrix0to1 = std::array, 12>{ + {{-5.19794815568925, 1.87197537853549, -1.10717797757926, -2.86970252748238, + -6.34055081230473, -5.00759687179371, 0.31193986693587, -8.01387747621716, + -0.120803639675188, -22.2071141316253, -38.8490339403707}, + {20.4100238181115, 0.792781537499611, -2.30137034971144, 1.16999587784412, + 0.889469621266034, 0.239667010403193, -0.969309214660315, + 5.21461903375948, 0.348799845137009, -3.7347620794893, 0.25771517766665}, + {-2.13629241669652, -0.353986293257471, 9.61086066828255, + -2.33661235049463, 1.93528728163342, -0.843722079096251, + 0.999688424438972, -8.55711877917878, 1.02394998490757, -15.267288590286, + -13.235596389738}, + {23.4650215184851, -0.726082462224456, 0.941255141296868, + -1.25219178023961, 1.87830610438659, -0.0626703177011942, + 0.798264835732211, 2.24872165119832, 0.499173544293671, -1.38568068487979, + -2.73161981770289}, + {2.57560609203081, 0.129379326313481, -4.39493675912134, 0.755378151374909, + -4.00108724778843, 0.203477875797884, -1.08477900245397, + -7.03054484748858, -1.09623688169448, -26.3844077677349, + -41.2491346895123}, + {-0.768854476049515, 0.0931802742811194, 0.0821972098693852, + -3.89193022157862, 14.9873083975585, 1.28580626432386, -0.181845844796471, + -8.47241051331203, -0.943962517139566, 6.01103622570362, + 9.48437982003848}, + {0.178040151771032, 0.136134754761245, -0.787571684703651, + 2.32182273660402, 7.30437794491034, -16.4278614062814, -0.113422629084682, + -1.0680200019718, -0.568606303594401, 1.0249516698155, -7.95920000382392}, + {0.675546296267863, -0.385104312033727, -0.205638813395668, + -3.31653776098415, 10.5616483640347, 0.218068680685705, 0.605728183391577, + -4.63802179325434, -0.254055135097754, 5.28618861484003, + 6.64663231117868}, + {-4.21416802017974, -1.23106312717449, -1.75652044911551, + -1.53276007675347, -1.36027716886005, -1.6755055391045, 0.843394761591634, + 6.71332112562865, -3.21984188557587, -2.49871614350354, + -5.16629424142249}, + {-3.17947657486281, -2.70445335081074, 1.17896471286998, -1.88889268162012, + 0.115966139146512, -1.69860246319196, -0.329404631248515, + -6.09206258757561, 3.39801515225553, -3.44730923665625, + -7.36048093738012}, + {-12.1422669814385, -0.937172442798055, 2.04047673532808, -0.2149743778283, + -2.6487701795534, -2.62694503937013, -0.530083657842696, -14.923114328578, + -0.317336092090262, 23.1177068701846, 6.21557901179705}, + {2.9112902347786, -4.39915513290615, -6.29077091232232, -3.50206937799633, + -0.367072002518522, 0.145186305220916, -6.21085587377794, + 11.6250310635655, -7.43312502309394, 3.26005495282282, + -11.6647818884921}}}; +constexpr auto fWeightMatrix1to2 = std::array{ + {0.737121712699059, -1.04254794966614, -0.789570860582197, 1.11549851568754, + 1.5426749194788, -1.2610505044793, -0.630483186934049, 1.57472828085649, + 0.790891919516845, 0.937883258898894, -0.781778561713509, + -0.610089040707349, -0.385566736632017}}; diff --git a/parameterisations/result/z_mag_kink_params.hpp b/parameterisations/result/z_mag_kink_params.hpp new file mode 100644 index 0000000..96d7994 --- /dev/null +++ b/parameterisations/result/z_mag_kink_params.hpp @@ -0,0 +1,10 @@ +// param[0] + param[1]*tx^2 + param[2]*tx dSlope_fringe + param[3]*ty^2 + +// param[4]*dSlope_fringe^2 +static constexpr std::array zMagnetParamsRef{ + 5205.144186525624f, -320.7206595710594f, 702.1384894815535f, + -316.36350963107543f, 441.59909857558097f}; +// param[0] + param[1]*dSlope_xEndT_abs + param[2]*x_EndT_abs + param[3]*tx^2 + +// param[4]*dSlope_xEndT^2 +static constexpr std::array zMagnetParamsEndT{ + 5286.687877988849f, -3.259689996453795f, 0.015615778872337033f, + -1377.3175211789967f, 282.9821232487341f}; diff --git a/parameterisations/train_forward_ghost_mlps.py b/parameterisations/train_forward_ghost_mlps.py new file mode 100644 index 0000000..a2d3e7a --- /dev/null +++ b/parameterisations/train_forward_ghost_mlps.py @@ -0,0 +1,261 @@ +import os +import argparse +import ROOT +from ROOT import TMVA + + +def train_default_forward_ghost_mlp( + input_file: str = "data/ghost_data.root", + tree_name: str = "PrForwardTrackingVelo.PrMCDebugForwardTool/MVAInput", + exclude_electrons: bool = False, + n_train_signal: int = 300e3, + n_train_bkg: int = 300e3, + n_test_signal: int = 50e3, + n_test_bkg: int = 50e3, + prepare_data: bool = False, +): + """Trains an MLP to classify track candidates from PrForwardTrackingVelo as ghost or Long Track. + + Args: + input_file (str, optional): Defaults to "data/ghost_data.root". + tree_name (str, optional): Defaults to "PrForwardTrackingVelo.PrMCDebugForwardTool/MVAInput". + exclude_electrons (bool, optional): Defaults to False. + n_train_signal (int, optional): Number of true tracks to train on. Defaults to 750e3. + n_train_bkg (int, optional): Number of fake tracks to train on. Defaults to 750e3. + n_test_signal (int, optional): Number of true tracks to test on. Defaults to 50e3. + n_test_bkg (int, optional): umber of fake tracks to test on. Defaults to 50e3. + prepare_data (bool, optional): Split data into signal and background file. Defaults to False. + """ + if prepare_data: + rdf = ROOT.RDataFrame(tree_name, input_file) + if exclude_electrons: + rdf_signal = rdf.Filter( + "label == 1", + "Signal is defined as one label (excluding electrons)", + ) + rdf_bkg = rdf.Filter("label == 0", "Ghosts are defined as zero label") + else: + rdf_signal = rdf.Filter("label > 0", "Signal is defined as non-zero label") + rdf_bkg = rdf.Filter("label == 0", "Ghosts are defined as zero label") + rdf_signal.Snapshot( + "Signal", + input_file.strip(".root") + "_forward_signal.root", + ) + rdf_bkg.Snapshot("Bkg", input_file.strip(".root") + "_forward_bkg.root") + + signal_file = ROOT.TFile.Open( + input_file.strip(".root") + "_forward_signal.root", + "READ", + ) + signal_tree = signal_file.Get("Signal") + bkg_file = ROOT.TFile.Open(input_file.strip(".root") + "_forward_bkg.root") + bkg_tree = bkg_file.Get("Bkg") + + os.chdir("neural_net_training/result") + output = ROOT.TFile( + "default_forward_ghost_mlp_training.root", + "RECREATE", + ) + + factory = TMVA.Factory( + "TMVAClassification", + output, + "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification", + ) + factory.SetVerbose(True) + dataloader = TMVA.DataLoader("GhostNNDataSet") + dataloader.AddVariable("redChi2", "F") + dataloader.AddVariable( + "distXMatch := abs((x + ( zMagMatch - 770.0 ) * tx) - (xEndT + ( zMagMatch - 9410.0 ) * txEndT))", + "F", + ) + dataloader.AddVariable( + "distY := abs(ySeedMatch - yEndT)", + "F", + ) + dataloader.AddVariable("abs(yParam0Final-yParam0Init)", "F") + dataloader.AddVariable("abs(yParam1Final-yParam1Init)", "F") + dataloader.AddVariable("abs(ty)", "F") + dataloader.AddVariable("abs(qop)", "F") + dataloader.AddVariable("abs(tx)", "F") + dataloader.AddVariable("abs(xParam1Final-xParam1Init)", "F") + dataloader.AddSignalTree(signal_tree, 1.0) + dataloader.AddBackgroundTree(bkg_tree, 1.0) + preselectionCuts = ROOT.TCut( + "redChi2 < 8 && abs((x + ( zMagMatch - 770.0 ) * tx) - (xEndT + ( zMagMatch - 9410.0 ) * txEndT)) < 140 && abs(ySeedMatch - yEndT) < 500 && abs(yParam0Final-yParam0Init) < 140 && abs(yParam1Final-yParam1Init) < 0.055", + ) + dataloader.PrepareTrainingAndTestTree( + preselectionCuts, + f"NormMode=NumEvents:SplitMode=random:V:nTrain_Signal={n_train_signal}:nTrain_Background={n_train_bkg}:nTest_Signal={n_test_signal}:nTest_Background={n_test_bkg}", + ) + factory.BookMethod( + dataloader, + TMVA.Types.kMLP, + "default_forward_ghost_mlp", + "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=750:HiddenLayers=N+4,N+2:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.005:!UseRegulator", + ) + factory.TrainAllMethods() + factory.TestAllMethods() + factory.EvaluateAllMethods() + output.Close() + + +def train_veloUT_forward_ghost_mlp( + input_file: str = "data/ghost_data.root", + tree_name: str = "PrForwardTracking.PrMCDebugForwardTool/MVAInput", + exclude_electrons: bool = False, + n_train_signal: int = 300e3, + n_train_bkg: int = 300e3, + n_test_signal: int = 50e3, + n_test_bkg: int = 50e3, + prepare_data: bool = False, +): + """Trains an MLP to classify track candidates from PrForwardTracking as ghost or Long Track. + + Args: + input_file (str, optional): Defaults to "data/ghost_data.root". + tree_name (str, optional): Defaults to "PrForwardTracking.PrMCDebugForwardTool/MVAInput". + exclude_electrons (bool, optional): Defaults to False. + n_train_signal (int, optional): Number of true tracks to train on. Defaults to 750e3. + n_train_bkg (int, optional): Number of fake tracks to train on. Defaults to 750e3. + n_test_signal (int, optional): Number of true tracks to test on. Defaults to 50e3. + n_test_bkg (int, optional): umber of fake tracks to test on. Defaults to 50e3. + prepare_data (bool, optional): Split data into signal and background file. Defaults to False. + """ + if prepare_data: + rdf = ROOT.RDataFrame(tree_name, input_file) + if exclude_electrons: + rdf_signal = rdf.Filter( + "label == 1", + "Signal is defined as one label (excluding electrons)", + ) + rdf_bkg = rdf.Filter("label == 0", "Ghosts are defined as zero label") + else: + rdf_signal = rdf.Filter("label > 0", "Signal is defined as non-zero label") + rdf_bkg = rdf.Filter("label == 0", "Ghosts are defined as zero label") + rdf_signal.Snapshot( + "Signal", + input_file.strip(".root") + "_forward_velout_signal.root", + ) + rdf_bkg.Snapshot("Bkg", input_file.strip(".root") + "_forward_velout_bkg.root") + + signal_file = ROOT.TFile.Open( + input_file.strip(".root") + "_forward_velout_signal.root", + "READ", + ) + signal_tree = signal_file.Get("Signal") + bkg_file = ROOT.TFile.Open(input_file.strip(".root") + "_forward_velout_bkg.root") + bkg_tree = bkg_file.Get("Bkg") + + os.chdir("neural_net_training/result") + output = ROOT.TFile( + "veloUT_forward_ghost_mlp_training.root", + "RECREATE", + ) + + factory = TMVA.Factory( + "TMVAClassification", + output, + "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification", + ) + factory.SetVerbose(True) + dataloader = TMVA.DataLoader("GhostNNDataSet") + dataloader.AddVariable("dMom := log(abs((1.0/qop) - (1.0/qopUT) ))", "F") + dataloader.AddVariable("redChi2", "F") + dataloader.AddVariable( + "distXMatch := abs((x + ( zMagMatch - 770.0 ) * tx) - (xEndT + ( zMagMatch - 9410.0 ) * txEndT))", + "F", + ) + dataloader.AddVariable( + "distY := abs(ySeedMatch - yEndT)", + "F", + ) + dataloader.AddVariable("abs(yParam0Final-yParam0Init)", "F") + dataloader.AddVariable("abs(yParam1Final-yParam1Init)", "F") + dataloader.AddVariable("abs(ty)", "F") + dataloader.AddVariable("abs(qop)", "F") + dataloader.AddVariable("abs(tx)", "F") + dataloader.AddVariable("abs(xParam1Final-xParam1Init)", "F") + dataloader.AddSignalTree(signal_tree, 1.0) + dataloader.AddBackgroundTree(bkg_tree, 1.0) + preselectionCuts = ROOT.TCut( + "redChi2 < 8 && abs((x + ( zMagMatch - 770.0 ) * tx) - (xEndT + ( zMagMatch - 9410.0 ) * txEndT)) < 140 && abs(ySeedMatch - yEndT) < 500 && abs(yParam0Final-yParam0Init) < 140 && abs(yParam1Final-yParam1Init) < 0.055", + ) + dataloader.PrepareTrainingAndTestTree( + preselectionCuts, + f"NormMode=NumEvents:SplitMode=random:V:nTrain_Signal={n_train_signal}:nTrain_Background={n_train_bkg}:nTest_Signal={n_test_signal}:nTest_Background={n_test_bkg}", + ) + factory.BookMethod( + dataloader, + TMVA.Types.kMLP, + "veloUT_forward_ghost_mlp", + "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=550:HiddenLayers=N+2:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.005:!UseRegulator", + ) + factory.TrainAllMethods() + factory.TestAllMethods() + factory.EvaluateAllMethods() + output.Close() + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument( + "--input-file", + type=str, + help="Path to the input file", + required=False, + ) + parser.add_argument( + "--exclude_electrons", + action="store_true", + help="Excludes electrons from training.", + required=False, + ) + parser.add_argument( + "--n-train-signal", + type=int, + help="Number of training tracks for signal.", + required=False, + ) + parser.add_argument( + "--n-train-bkg", + type=int, + help="Number of training tracks for bkg.", + required=False, + ) + parser.add_argument( + "--n-test-signal", + type=int, + help="Number of testing tracks for signal.", + required=False, + ) + parser.add_argument( + "--n-test-bkg", + type=int, + help="Number of testing tracks for bkg.", + required=False, + ) + parser.add_argument( + "--veloUT", + action="store_true", + help="Toggle whether the NN for upstream tracks input is trained.", + ) + parser.add_argument( + "--all", + action="store_true", + help="Toggle whether both NNs are trained, for VELO and VeloUT input.", + ) + args = parser.parse_args() + args_dict = { + arg: val + for arg, val in vars(args).items() + if val is not None and arg not in ["veloUT", "all"] + } + + if args.all: + train_default_forward_ghost_mlp(**args_dict) + train_veloUT_forward_ghost_mlp(**args_dict) + elif args.veloUT: + train_veloUT_forward_ghost_mlp(**args_dict) + else: + train_default_forward_ghost_mlp(**args_dict) diff --git a/parameterisations/train_matching_ghost_mlps.py b/parameterisations/train_matching_ghost_mlps.py new file mode 100644 index 0000000..d57b7e7 --- /dev/null +++ b/parameterisations/train_matching_ghost_mlps.py @@ -0,0 +1,154 @@ +# flake8: noqaq + +import os +import argparse +import ROOT +from ROOT import TMVA + + +def train_matching_ghost_mlp( + input_file: str = "data/ghost_data_B.root", + tree_name: str = "PrMatchNN.PrMCDebugMatchToolNN/MVAInputAndOutput", + exclude_electrons: bool = True, + n_train_signal: int = 50e3, + n_train_bkg: int = 500e3, + n_test_signal: int = 10e3, + n_test_bkg: int = 100e3, + prepare_data: bool = True, + outdir: str = "neural_net_training", +): + """Trains an MLP to classify the match between Velo and Seed track. + + Args: + input_file (str, optional): Defaults to "data/ghost_data_B.root". + tree_name (str, optional): Defaults to "PrMatchNN.PrMCDebugMatchToolNN/Tuple". + exclude_electrons (bool, optional): Defaults to True. + n_train_signal (int, optional): Number of true matches to train on. Defaults to 200e3. + n_train_bkg (int, optional): Number of fake matches to train on. Defaults to 200e3. + n_test_signal (int, optional): Number of true matches to test on. Defaults to 75e3. + n_test_bkg (int, optional): Number of fake matches to test on. Defaults to 75e3. + prepare_data (bool, optional): Split data into signal and background file. Defaults to False. + """ + if prepare_data: + rdf = ROOT.RDataFrame(tree_name, input_file) + if exclude_electrons: + rdf_signal = rdf.Filter( + "quality == 1", # -1 elec, 0 ghost, 1 all part wo elec + "Signal is defined as one label (excluding electrons)", + ) + rdf_bkg = rdf.Filter("quality == 0", "Ghosts are defined as zero label") + else: + rdf_signal = rdf.Filter( + "abs(quality) > 0", + "Signal is defined as non-zero label", + ) + rdf_bkg = rdf.Filter("quality == 0", "Ghosts are defined as zero label") + rdf_signal.Snapshot( + "Signal", + outdir + "/" + input_file.strip(".root") + "_matching_signal.root", + ) + rdf_bkg.Snapshot( + "Bkg", outdir + "/" + input_file.strip(".root") + "_matching_bkg.root" + ) + + signal_file = ROOT.TFile.Open( + outdir + "/" + input_file.strip(".root") + "_matching_signal.root", + "READ", + ) + signal_tree = signal_file.Get("Signal") + bkg_file = ROOT.TFile.Open( + outdir + "/" + input_file.strip(".root") + "_matching_bkg.root" + ) + bkg_tree = bkg_file.Get("Bkg") + + os.chdir(outdir + "/result") + output = ROOT.TFile( + "matching_ghost_mlp_training.root", + "RECREATE", + ) + + factory = TMVA.Factory( + "TMVAClassification", + output, + "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification", + ) + factory.SetVerbose(True) + dataloader = TMVA.DataLoader("MatchNNDataSet") + + dataloader.AddVariable("chi2", "F") + dataloader.AddVariable("teta2", "F") + dataloader.AddVariable("distX", "F") + dataloader.AddVariable("distY", "F") + dataloader.AddVariable("dSlope", "F") + dataloader.AddVariable("dSlopeY", "F") + # dataloader.AddVariable("tx", "F") + # dataloader.AddVariable("ty", "F") + # dataloader.AddVariable("tx_scifi", "F") + # dataloader.AddVariable("ty_scifi", "F") + + dataloader.AddSignalTree(signal_tree, 1.0) + dataloader.AddBackgroundTree(bkg_tree, 1.0) + + # these cuts are also applied in the algorithm + preselectionCuts = ROOT.TCut( + "chi2<15 && distX<250 && distY<400 && dSlope<1.5 && dSlopeY<0.15", #### ganz raus für elektronen + ) + dataloader.PrepareTrainingAndTestTree( + preselectionCuts, + f"SplitMode=random:V:nTrain_Signal={n_train_signal}:nTrain_Background={n_train_bkg}:nTest_Signal={n_test_signal}:nTest_Background={n_test_bkg}", + ) + factory.BookMethod( + dataloader, + TMVA.Types.kMLP, + "matching_mlp", + "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator", + ) + factory.TrainAllMethods() + factory.TestAllMethods() + factory.EvaluateAllMethods() + output.Close() + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument( + "--input-file", + type=str, + help="Path to the input file", + required=False, + ) + parser.add_argument( + "--exclude_electrons", + action="store_true", + help="Excludes electrons from training.", + required=False, + ) + parser.add_argument( + "--n-train-signal", + type=int, + help="Number of training tracks for signal.", + required=False, + ) + parser.add_argument( + "--n-train-bkg", + type=int, + help="Number of training tracks for bkg.", + required=False, + ) + parser.add_argument( + "--n-test-signal", + type=int, + help="Number of testing tracks for signal.", + required=False, + ) + parser.add_argument( + "--n-test-bkg", + type=int, + help="Number of testing tracks for bkg.", + required=False, + ) + + args = parser.parse_args() + args_dict = {arg: val for arg, val in vars(args).items() if val is not None} + + train_matching_ghost_mlp(**args_dict) diff --git a/parameterisations/train_matching_ghost_mlps_electron.py b/parameterisations/train_matching_ghost_mlps_electron.py new file mode 100644 index 0000000..ab7c06d --- /dev/null +++ b/parameterisations/train_matching_ghost_mlps_electron.py @@ -0,0 +1,177 @@ +# flake8: noqaq + +import os +import argparse +import ROOT +from ROOT import TMVA, TList, TTree + + +def train_matching_ghost_mlp( + input_file: str = "data/ghost_data_B.root", + tree_name: str = "PrMatchNN.PrMCDebugMatchToolNN/MVAInputAndOutput", + exclude_electrons: bool = False, + only_electrons: bool = True, + n_train_signal: int = 20e3, # 50e3 + n_train_bkg: int = 50e3, # 500e3 + n_test_signal: int = 10e3, + n_test_bkg: int = 20e3, + prepare_data: bool = True, + outdir: str = "nn_electron_training", +): + """Trains an MLP to classify the match between Velo and Seed track. + + Args: + input_file (str, optional): Defaults to "data/ghost_data.root". + tree_name (str, optional): Defaults to "PrMatchNN.PrMCDebugMatchToolNN/Tuple". + exclude_electrons (bool, optional): Defaults to False. + only_electrons (bool, optional): Signal only of electrons, but bkg of all particles. Defaults to True. + n_train_signal (int, optional): Number of true matches to train on. Defaults to 200e3. + n_train_bkg (int, optional): Number of fake matches to train on. Defaults to 200e3. + n_test_signal (int, optional): Number of true matches to test on. Defaults to 75e3. + n_test_bkg (int, optional): Number of fake matches to test on. Defaults to 75e3. + prepare_data (bool, optional): Split data into signal and background file. Defaults to False. + """ + + if prepare_data: + rdf = ROOT.RDataFrame(tree_name, input_file) + if exclude_electrons: + rdf_signal = rdf.Filter( + "mc_quality == 1", # -1 elec, 0 ghost, 1 all part wo elec + "Signal is defined as one label (excluding electrons)", + ) + rdf_bkg = rdf.Filter( + "mc_quality == 0", + "Ghosts are defined as zero label", + ) + else: + if only_electrons: + rdf_signal = rdf.Filter( + "mc_quality == -1", # electron that is true match but mlp said no match + "Signal is defined as negative one label (only electrons)", + ) + else: + rdf_signal = rdf.Filter( + "abs(mc_quality) > 0", + "Signal is defined as non-zero label", + ) + rdf_bkg = rdf.Filter( + "mc_quality == 0", + "Ghosts are defined as zero label", + ) + + rdf_signal.Snapshot( + "Signal", + outdir + "/" + input_file.strip(".root") + "_matching_signal.root", + ) + rdf_bkg.Snapshot( + "Bkg", + outdir + "/" + input_file.strip(".root") + "_matching_bkg.root", + ) + + signal_file = ROOT.TFile.Open( + outdir + "/" + input_file.strip(".root") + "_matching_signal.root", + "READ", + ) + signal_tree = signal_file.Get("Signal") + + bkg_file = ROOT.TFile.Open( + outdir + "/" + input_file.strip(".root") + "_matching_bkg.root" + ) + bkg_tree = bkg_file.Get("Bkg") + + os.chdir(outdir + "/result") + output = ROOT.TFile( + "matching_ghost_mlp_training.root", + "RECREATE", + ) + + factory = TMVA.Factory( + "TMVAClassification", + output, + "V:!Silent:Color:DrawProgressBar:AnalysisType=Classification", + ) + factory.SetVerbose(True) + dataloader = TMVA.DataLoader("MatchNNDataSet") + + dataloader.AddVariable("mc_chi2", "F") + dataloader.AddVariable("mc_teta2", "F") + dataloader.AddVariable("mc_distX", "F") + dataloader.AddVariable("mc_distY", "F") + dataloader.AddVariable("mc_dSlope", "F") + dataloader.AddVariable("mc_dSlopeY", "F") + dataloader.AddVariable("mc_zMag", "F") + + dataloader.AddSignalTree(signal_tree, 1.0) + dataloader.AddBackgroundTree(bkg_tree, 1.0) + + # these cuts are also applied in the algorithm + preselectionCuts = ROOT.TCut( + # "chi2<30 && distX<500 && distY<500 && dSlope<2.0 && dSlopeY<0.15", #### ganz raus für elektronen + ) + dataloader.PrepareTrainingAndTestTree( + preselectionCuts, + f"SplitMode=random:V:nTrain_Signal={n_train_signal}:nTrain_Background={n_train_bkg}:nTest_Signal={n_test_signal}:nTest_Background={n_test_bkg}", + # normmode default is EqualNumEvents + ) + + factory.BookMethod( + dataloader, + TMVA.Types.kMLP, + "matching_mlp", + "!H:V:TrainingMethod=BP:NeuronType=ReLU:EstimatorType=CE:VarTransform=Norm:NCycles=700:HiddenLayers=N+2,N:TestRate=50:Sampling=1.0:SamplingImportance=1.0:LearningRate=0.02:DecayRate=0.01:!UseRegulator", + ) + factory.TrainAllMethods() + factory.TestAllMethods() + factory.EvaluateAllMethods() + output.Close() + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument( + "--input-file", + type=str, + help="Path to the input file", + required=False, + ) + parser.add_argument( + "--exclude_electrons", + action="store_true", + help="Excludes electrons from training.", + required=False, + ) + parser.add_argument( + "--only_electrons", + action="store_true", + help="Only electrons for signal training.", + required=False, + ) + parser.add_argument( + "--n-train-signal", + type=int, + help="Number of training tracks for signal.", + required=False, + ) + parser.add_argument( + "--n-train-bkg", + type=int, + help="Number of training tracks for bkg.", + required=False, + ) + parser.add_argument( + "--n-test-signal", + type=int, + help="Number of testing tracks for signal.", + required=False, + ) + parser.add_argument( + "--n-test-bkg", + type=int, + help="Number of testing tracks for bkg.", + required=False, + ) + + args = parser.parse_args() + args_dict = {arg: val for arg, val in vars(args).items() if val is not None} + + train_matching_ghost_mlp(**args_dict) diff --git a/parameterisations/utils/fit_linear_regression_model.py b/parameterisations/utils/fit_linear_regression_model.py new file mode 100644 index 0000000..6909630 --- /dev/null +++ b/parameterisations/utils/fit_linear_regression_model.py @@ -0,0 +1,91 @@ +import awkward as ak +from sklearn.preprocessing import PolynomialFeatures +from sklearn.linear_model import LinearRegression +from sklearn.model_selection import train_test_split +from sklearn.metrics import mean_squared_error +import numpy as np + + +def fit_linear_regression_model( + array: ak.Array, + target_feat: str, + features: list[str], + degree: int, + keep: list[str] = None, + keep_only_linear_in: str = "", + remove: list[str] = None, + include_bias: bool = False, + fit_intercept: bool = False, + test_size=0.2, + random_state=42, +) -> tuple[LinearRegression, list[str]]: + """Wrapper around sklearn's LinearRegression with PolynomialFeatures. + + Args: + array (ak.Array): The data. + target_feat (str): Target feature to be fitted. + features (list[str]): Features the target depends on. + degree (int): Highest order of the polynomial. + keep (list[str], optional): Monomials to keep. Defaults to None. + keep_only_linear_in (str, optional): Keep only terms that are linear in this feature. Defaults to "". + remove (list[str], optional): Monomials to remove. Defaults to None. + include_bias (bool, optional): Inlcude bias term in polynomial. Defaults to False. + fit_intercept (bool, optional): Fit zeroth order. Defaults to False. + test_size (float, optional): Fraction of data used for testing. Defaults to 0.2. + random_state (int, optional): Defaults to 42. + + Raises: + NotImplementedError: Simultaneous removing and keeping is not implemented. + + Returns: + tuple[LinearRegression, list[str]]: The linear regression object and the kept features. + """ + data = np.column_stack([ak.to_numpy(array[feat]) for feat in features]) + target = ak.to_numpy(array[target_feat]) + X_train, X_test, y_train, y_test = train_test_split( + data, + target, + test_size=test_size, + random_state=random_state, + ) + poly = PolynomialFeatures(degree=degree, include_bias=include_bias) + X_train_model = poly.fit_transform(X_train) + X_test_model = poly.fit_transform(X_test) + poly_features = poly.get_feature_names_out(input_features=features) + if not remove: + if keep: + remove = [i for i, f in enumerate(poly_features) if f not in keep] + elif keep_only_linear_in: + # remove everything that's not linear in variable + # the corrections should vanish + remove = [ + i + for i, f in enumerate(poly_features) + if (keep_only_linear_in not in f) or (keep_only_linear_in + "^" in f) + ] + else: + remove = [] + elif remove and keep: + raise NotImplementedError + X_train_model = np.delete(X_train_model, remove, axis=1) + X_test_model = np.delete(X_test_model, remove, axis=1) + poly_features = np.delete(poly_features, remove) + + lin_reg = LinearRegression(fit_intercept=fit_intercept) + lin_reg.fit(X_train_model, y_train) + y_pred_test = lin_reg.predict(X_test_model) + print(f"Parameterisation for {target_feat}:") + print("intercept=", lin_reg.intercept_) + print( + "coef=", + dict( + zip( + poly_features, + lin_reg.coef_, + ), + ), + ) + print("r2 score=", lin_reg.score(X_test_model, y_test)) + print("RMSE =", mean_squared_error(y_test, y_pred_test, squared=False)) + print() + return (lin_reg, poly_features) diff --git a/parameterisations/utils/parse_regression_coef_to_array.py b/parameterisations/utils/parse_regression_coef_to_array.py new file mode 100644 index 0000000..ef723d3 --- /dev/null +++ b/parameterisations/utils/parse_regression_coef_to_array.py @@ -0,0 +1,51 @@ +from sklearn.linear_model import LinearRegression + + +def parse_regression_coef_to_array( + model: LinearRegression, + poly_features: list[str], + array_name: str, + rows: list[str] = [], +) -> list[str]: + """Convenient function to parse the model coefficients into a cpp code string. + + Args: + model (LinearRegression): A fitted linear regression model. + poly_features (list[str]): A list with the names of the polynomial features. + array_name (str): The name of the created cpp array. + rows (list[str], optional): In case of a matrix, list of rows. Defaults to []. + + Returns: + list[str]: List of strings, first entry is the comment, second the cpp code. + """ + intercept = model.intercept_ != 0.0 + indices = [i for i in range(len(poly_features)) if model.coef_[i] != 0.0] + feature_comment = ( + ("// param[0] + " if intercept else "// ") + + " + ".join( + [ + f"param[{idx}]*{poly_features[param_index]}" + for idx, param_index in enumerate(indices, start=intercept) + ], + ) + + "\n" + ) + n_col = sum(model.coef_ != 0.0) + model.fit_intercept + if not rows: + cpp_decl = f"static constexpr std::array {array_name}" + cpp_decl += ( + "{" + + (str(model.intercept_) + "f," if intercept else "") + + ",".join([str(coef) + "f" for coef in model.coef_ if coef != 0.0]) + + "};\n" + ) + return [feature_comment, cpp_decl] + else: + n_row = len(rows) + cpp_decl = ( + f"static constexpr std::array, {n_row}> {array_name}" + + "{{" + ) + cpp_decl += ",".join(rows) + cpp_decl += "}};\n" + return [feature_comment, cpp_decl] diff --git a/parameterisations/utils/parse_tmva_matrix_to_array.py b/parameterisations/utils/parse_tmva_matrix_to_array.py new file mode 100644 index 0000000..bffc719 --- /dev/null +++ b/parameterisations/utils/parse_tmva_matrix_to_array.py @@ -0,0 +1,140 @@ +import re +from pathlib import Path + + +def parse_tmva_matrix_to_array( + input_class_files: list[str], + simd_type: bool = False, + outdir: str = "neural_net_training", +) -> list[str]: + """Function to transform the TMVA output MLP C++ class into a more modern form. + + Args: + input_class_file (str): Path to the .C MLP class created by TMVA. + simd_type (bool, optional): If true, type in array is set to simd::float_v. Defaults to False. + + Returns: + (str) : Path to the resulting C++ file containing the matrices. + + Note: + The created C++ code is written to a `hpp` file in `neural_net_training/result`. + + """ + data_type = "float" if not simd_type else "simd::float_v" + # TODO: as of writing this code, constexpr is not supported for the SIMD types + constness = "constexpr" if not simd_type else "const" + outfiles = [] + for input_class_file in input_class_files: + print(f"Transforming {input_class_file} ...") + input_class_file = Path(input_class_file) + with open(input_class_file) as f: + lines = f.readlines() + # the name of the outputfile is the middle part of the input class file name + outfile = ( + outdir + + "/result/" + + "_".join(str(input_class_file.stem).split("_")[1:-1]) + + ".hpp" + ) + # this only supports category 2 for the transformation, which is the largest/smallest for fMax_1/fMin_1 + min_lines = [ + line.replace(";", "").split("=")[-1].strip() + for line in lines + if "fMin_1[2]" in line and "Scal" not in line and "double" not in line + ] + max_lines = [ + line.replace(";", "").split("=")[-1].strip() + for line in lines + if "fMax_1[2]" in line and "Scal" not in line and "double" not in line + ] + minima_cpp_decl = ( + f"{constness} auto fMin = std::array<{data_type}, {len(min_lines)}>" + + "{{" + + ", ".join(min_lines) + + "}};\n" + ) + maxima_cpp_decl = ( + f"{constness} auto fMax = std::array<{data_type}, {len(max_lines)}>" + + "{{" + + ", ".join(max_lines) + + "}};\n" + ) + print(f"Found minimum and maximum values for {len(min_lines)} variables.") + with open(outfile, "w") as out: + out.writelines([minima_cpp_decl, maxima_cpp_decl]) + + # this list contains all lines that define a matrix element + matrix_lines = [ + line.replace(";", "").strip() + for line in lines + if "fWeightMatrix" in line + and "double" not in line + and "*" not in line + and "= fWeightMatrix" not in line + ] + + # there are several matrices, figure out how many and loop accordingly + n_matrices = int(re.findall(re.compile(r"(\d+)\["), matrix_lines[-1])[0]) + print(f"Found {n_matrices} matrices: ") + for matrix in range(n_matrices): + # get only entries for corresponding matrix + matrix_entries = [m for m in matrix_lines if f"{matrix}to{(matrix+1)}" in m] + # figure out the dimensions of the matrix, by checking largest index at the end + dim_string = re.findall(re.compile(r"\[(\d+)\]"), matrix_entries[-1]) + # actual size is last index + 1 + n_rows = int(dim_string[0]) + 1 + n_cols = int(dim_string[1]) + 1 + # get the name of the matrix + matrix_string = matrix_entries[matrix * n_rows].split("=")[0].split("[")[0] + if n_rows > 1: + cpp_decl = ( + f"{constness} auto {matrix_string} = std::array, {n_rows}>" + + "{{" + ) + else: + cpp_decl = ( + f"{constness} auto {matrix_string} = std::array<{data_type}, {n_cols}>" + + "{" + ) + rows = [[] for _ in range(n_rows)] + for i_col in range(n_cols): + for i_row, row in enumerate(rows): + # only keep number (right side of the equality sign) + entry = ( + matrix_entries[i_col * n_rows + i_row].split("=")[-1].strip() + ) + row.append(entry) + array_strings = ["{" + ", ".join(row) + "}" for row in rows] + cpp_decl += ", ".join(array_strings) + ("}};\n" if n_rows > 1 else "};\n") + print( + f" {matrix+1}. {matrix_string} with {n_cols} columns and {n_rows} rows", + ) + with open(outfile, "a") as out: + out.write(cpp_decl) + outfiles.append(outfile) + return outfiles + + +if __name__ == "__main__": + outfiles = parse_tmva_matrix_to_array( + [ + "neural_net_training/result/GhostNNDataSet/weights/TMVAClassification_default_forward_ghost_mlp.class.C", + "neural_net_training/result/GhostNNDataSet/weights/TMVAClassification_veloUT_forward_ghost_mlp.class.C", + ], + ) + + try: + import subprocess + + # run clang-format for nicer looking result + for outfile in outfiles: + subprocess.run( + [ + "clang-format", + "-i", + f"{outfile}", + ], + check=True, + ) + except: + pass diff --git a/parameterisations/utils/parse_tmva_matrix_to_array_TrLo.py b/parameterisations/utils/parse_tmva_matrix_to_array_TrLo.py new file mode 100644 index 0000000..8463254 --- /dev/null +++ b/parameterisations/utils/parse_tmva_matrix_to_array_TrLo.py @@ -0,0 +1,142 @@ +import re +from pathlib import Path + +# flake8: noqaq + + +def parse_tmva_matrix_to_array( + input_class_files: list[str], + simd_type: bool = False, + outdir: str = "nn_trackinglosses_training", +) -> list[str]: + """Function to transform the TMVA output MLP C++ class into a more modern form. + + Args: + input_class_file (str): Path to the .C MLP class created by TMVA. + simd_type (bool, optional): If true, type in array is set to simd::float_v. Defaults to False. + + Returns: + (str) : Path to the resulting C++ file containing the matrices. + + Note: + The created C++ code is written to a `hpp` file in `neural_net_training/result`. + + """ + data_type = "float" if not simd_type else "simd::float_v" + # TODO: as of writing this code, constexpr is not supported for the SIMD types + constness = "constexpr" if not simd_type else "const" + outfiles = [] + for input_class_file in input_class_files: + print(f"Transforming {input_class_file} ...") + input_class_file = Path(input_class_file) + with open(input_class_file) as f: + lines = f.readlines() + # the name of the outputfile is the middle part of the input class file name + outfile = ( + outdir + + "/result/" + + "_".join(str(input_class_file.stem).split("_")[1:-1]) + + ".hpp" + ) + # this only supports category 2 for the transformation, which is the largest/smallest for fMax_1/fMin_1 + min_lines = [ + line.replace(";", "").split("=")[-1].strip() + for line in lines + if "fMin_1[2]" in line and "Scal" not in line and "double" not in line + ] + max_lines = [ + line.replace(";", "").split("=")[-1].strip() + for line in lines + if "fMax_1[2]" in line and "Scal" not in line and "double" not in line + ] + minima_cpp_decl = ( + f"{constness} auto ResfMin = std::array<{data_type}, {len(min_lines)}>" + + "{{" + + ", ".join(min_lines) + + "}};\n" + ) + maxima_cpp_decl = ( + f"{constness} auto ResfMax = std::array<{data_type}, {len(max_lines)}>" + + "{{" + + ", ".join(max_lines) + + "}};\n" + ) + print(f"Found minimum and maximum values for {len(min_lines)} variables.") + with open(outfile, "w") as out: + out.writelines([minima_cpp_decl, maxima_cpp_decl]) + + # this list contains all lines that define a matrix element + matrix_lines = [ + line.replace(";", "").strip() + for line in lines + if "fWeightMatrix" in line + and "double" not in line + and "*" not in line + and "= fWeightMatrix" not in line + ] + + # there are several matrices, figure out how many and loop accordingly + n_matrices = int(re.findall(re.compile(r"(\d+)\["), matrix_lines[-1])[0]) + print(f"Found {n_matrices} matrices: ") + for matrix in range(n_matrices): + # get only entries for corresponding matrix + matrix_entries = [m for m in matrix_lines if f"{matrix}to{(matrix+1)}" in m] + # figure out the dimensions of the matrix, by checking largest index at the end + dim_string = re.findall(re.compile(r"\[(\d+)\]"), matrix_entries[-1]) + # actual size is last index + 1 + n_rows = int(dim_string[0]) + 1 + n_cols = int(dim_string[1]) + 1 + # get the name of the matrix + matrix_string = matrix_entries[matrix * n_rows].split("=")[0].split("[")[0] + if n_rows > 1: + cpp_decl = ( + f"{constness} auto Res{matrix_string} = std::array, {n_rows}>" + + "{{" + ) + else: + cpp_decl = ( + f"{constness} auto Res{matrix_string} = std::array<{data_type}, {n_cols}>" + + "{" + ) + rows = [[] for _ in range(n_rows)] + for i_col in range(n_cols): + for i_row, row in enumerate(rows): + # only keep number (right side of the equality sign) + entry = ( + matrix_entries[i_col * n_rows + i_row].split("=")[-1].strip() + ) + row.append(entry) + array_strings = ["{" + ", ".join(row) + "}" for row in rows] + cpp_decl += ", ".join(array_strings) + ("}};\n" if n_rows > 1 else "};\n") + print( + f" {matrix+1}. {matrix_string} with {n_cols} columns and {n_rows} rows", + ) + with open(outfile, "a") as out: + out.write(cpp_decl) + outfiles.append(outfile) + return outfiles + + +if __name__ == "__main__": + outfiles = parse_tmva_matrix_to_array( + [ + "nn_trackinglosses_training/result/GhostNNDataSet/weights/TMVAClassification_default_forward_ghost_mlp.class.C", + "nn_trackinglosses_training/result/GhostNNDataSet/weights/TMVAClassification_veloUT_forward_ghost_mlp.class.C", + ], + ) + + try: + import subprocess + + # run clang-format for nicer looking result + for outfile in outfiles: + subprocess.run( + [ + "clang-format", + "-i", + f"{outfile}", + ], + check=True, + ) + except: + pass diff --git a/parameterisations/utils/parse_tmva_matrix_to_array_electron.py b/parameterisations/utils/parse_tmva_matrix_to_array_electron.py new file mode 100644 index 0000000..a433917 --- /dev/null +++ b/parameterisations/utils/parse_tmva_matrix_to_array_electron.py @@ -0,0 +1,142 @@ +import re +from pathlib import Path + +# flake8: noqaq + + +def parse_tmva_matrix_to_array( + input_class_files: list[str], + simd_type: bool = False, + outdir: str = "nn_electron_training", +) -> list[str]: + """Function to transform the TMVA output MLP C++ class into a more modern form. + + Args: + input_class_file (str): Path to the .C MLP class created by TMVA. + simd_type (bool, optional): If true, type in array is set to simd::float_v. Defaults to False. + + Returns: + (str) : Path to the resulting C++ file containing the matrices. + + Note: + The created C++ code is written to a `hpp` file in `nn_electron_training/result`. + + """ + data_type = "float" if not simd_type else "simd::float_v" + # TODO: as of writing this code, constexpr is not supported for the SIMD types + constness = "constexpr" if not simd_type else "const" + outfiles = [] + for input_class_file in input_class_files: + print(f"Transforming {input_class_file} ...") + input_class_file = Path(input_class_file) + with open(input_class_file) as f: + lines = f.readlines() + # the name of the outputfile is the middle part of the input class file name + outfile = ( + outdir + + "/result/" + + "_".join(str(input_class_file.stem).split("_")[1:-1]) + + ".hpp" + ) + # this only supports category 2 for the transformation, which is the largest/smallest for fMax_1/fMin_1 + min_lines = [ + line.replace(";", "").split("=")[-1].strip() + for line in lines + if "fMin_1[2]" in line and "Scal" not in line and "double" not in line + ] + max_lines = [ + line.replace(";", "").split("=")[-1].strip() + for line in lines + if "fMax_1[2]" in line and "Scal" not in line and "double" not in line + ] + minima_cpp_decl = ( + f"{constness} auto fMin = std::array<{data_type}, {len(min_lines)}>" + + "{{" + + ", ".join(min_lines) + + "}};\n" + ) + maxima_cpp_decl = ( + f"{constness} auto fMax = std::array<{data_type}, {len(max_lines)}>" + + "{{" + + ", ".join(max_lines) + + "}};\n" + ) + print(f"Found minimum and maximum values for {len(min_lines)} variables.") + with open(outfile, "w") as out: + out.writelines([minima_cpp_decl, maxima_cpp_decl]) + + # this list contains all lines that define a matrix element + matrix_lines = [ + line.replace(";", "").strip() + for line in lines + if "fWeightMatrix" in line + and "double" not in line + and "*" not in line + and "= fWeightMatrix" not in line + ] + + # there are several matrices, figure out how many and loop accordingly + n_matrices = int(re.findall(re.compile(r"(\d+)\["), matrix_lines[-1])[0]) + print(f"Found {n_matrices} matrices: ") + for matrix in range(n_matrices): + # get only entries for corresponding matrix + matrix_entries = [m for m in matrix_lines if f"{matrix}to{(matrix+1)}" in m] + # figure out the dimensions of the matrix, by checking largest index at the end + dim_string = re.findall(re.compile(r"\[(\d+)\]"), matrix_entries[-1]) + # actual size is last index + 1 + n_rows = int(dim_string[0]) + 1 + n_cols = int(dim_string[1]) + 1 + # get the name of the matrix + matrix_string = matrix_entries[matrix * n_rows].split("=")[0].split("[")[0] + if n_rows > 1: + cpp_decl = ( + f"{constness} auto {matrix_string} = std::array, {n_rows}>" + + "{{" + ) + else: + cpp_decl = ( + f"{constness} auto {matrix_string} = std::array<{data_type}, {n_cols}>" + + "{" + ) + rows = [[] for _ in range(n_rows)] + for i_col in range(n_cols): + for i_row, row in enumerate(rows): + # only keep number (right side of the equality sign) + entry = ( + matrix_entries[i_col * n_rows + i_row].split("=")[-1].strip() + ) + row.append(entry) + array_strings = ["{" + ", ".join(row) + "}" for row in rows] + cpp_decl += ", ".join(array_strings) + ("}};\n" if n_rows > 1 else "};\n") + print( + f" {matrix+1}. {matrix_string} with {n_cols} columns and {n_rows} rows", + ) + with open(outfile, "a") as out: + out.write(cpp_decl) + outfiles.append(outfile) + return outfiles + + +if __name__ == "__main__": + outfiles = parse_tmva_matrix_to_array( + [ + "nn_electron_training/result/GhostNNDataSet/weights/TMVAClassification_default_forward_ghost_mlp.class.C", + "nn_electron_training/result/GhostNNDataSet/weights/TMVAClassification_veloUT_forward_ghost_mlp.class.C", + ], + ) + + try: + import subprocess + + # run clang-format for nicer looking result + for outfile in outfiles: + subprocess.run( + [ + "clang-format", + "-i", + f"{outfile}", + ], + check=True, + ) + except: + pass diff --git a/parameterisations/utils/preselection.py b/parameterisations/utils/preselection.py new file mode 100644 index 0000000..f0266bf --- /dev/null +++ b/parameterisations/utils/preselection.py @@ -0,0 +1,44 @@ +import ROOT + + +def preselection( + cuts: str = "", + input_file: str = None, + outfile_postfix: str = "selected", + tree_name: str = "PrParameterisationData.PrMCDebugReconstructibleLong/Tuple", +) -> str: + """Function that apply a selection to given data. + + Args: + cuts (str, optional): String specifying the selection. Defaults to "". + input_file (str, optional): Defaults to None. + outfile_postfix (str, optional): Defaults to "selected". + tree_name (str, optional): Defaults to "PrParameterisationData.PrMCDebugReconstructibleLong/Tuple". + + Returns: + str: Path to the output file. + """ + rdf = ROOT.RDataFrame(tree_name, input_file) + rdf = rdf.Filter(cuts, "Selection") + out_file = input_file.strip(".root") + f"_{outfile_postfix}.root" + rdf.Snapshot("Selected", out_file) + return out_file + + +if __name__ == "__main__": + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument( + "--input-file", + type=str, + help="Path to the input file", + ) + parser.add_argument( + "--cuts", + type=str, + default="chi2_comb < 5 && pt > 10 && p > 1500 && p < 100000 && pid != 11", + help="Cuts of the preselection", + ) + args = parser.parse_args() + preselection(**vars(args)) diff --git a/scripts/BakPrCheckerEfficiency.py b/scripts/BakPrCheckerEfficiency.py new file mode 100644 index 0000000..dab2533 --- /dev/null +++ b/scripts/BakPrCheckerEfficiency.py @@ -0,0 +1,464 @@ +# flake8: noqa + + +import argparse +from ROOT import TMultiGraph, TLatex, TCanvas, TFile, TGaxis +from ROOT import kGreen, kBlue, kBlack, kAzure, kOrange, kMagenta, kCyan +from ROOT import gROOT, gStyle, gPad +from ROOT import TEfficiency +from array import array + +gROOT.SetBatch(True) + + +def getEfficiencyHistoNames(): + return ["p", "pt", "phi", "eta", "nPV"] + + +def getTrackers(trackers): + return trackers + + +def getOriginFolders(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "Match": {}, + "BestLong": {}, + } + + basedict["Velo"]["folder"] = "VeloTrackChecker/" + basedict["Upstream"]["folder"] = "UpstreamTrackChecker/" + basedict["Forward"]["folder"] = "ForwardTrackChecker/" + basedict["Match"]["folder"] = "MatchTrackChecker/" + basedict["BestLong"]["folder"] = "BestLongTrackChecker/" + + return basedict + + +def getTrackNames(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "Match": {}, + "BestLong": {}, + } + + basedict["Velo"] = "Velo" + basedict["Upstream"] = "VeloUT" + basedict["Forward"] = "Forward" + basedict["Match"] = "Match" + basedict["BestLong"] = "BestLong" + return basedict + + +def get_colors(): + return [kBlack, kAzure, kGreen + 3, kMagenta + 2, kOrange, kCyan + 2] + + +def get_markers(): + return [20, 24, 21, 22, 23, 25] + + +def get_fillstyles(): + return [1003, 1002, 3002, 3325, 3144, 3244, 3444] + + +def getGhostHistoNames(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "Match": {}, + "BestLong": {}, + } + + basedict["Velo"] = ["eta", "nPV"] + basedict["Upstream"] = ["eta", "p", "pt", "nPV"] + basedict["Forward"] = ["eta", "p", "pt", "nPV"] + basedict["Match"] = basedict["Forward"] + basedict["BestLong"] = basedict["Forward"] + + return basedict + + +def argument_parser(): + parser = argparse.ArgumentParser(description="location of the tuple file") + parser.add_argument( + "--filename", + type=str, + default=["data/resolutions_and_effs_Bs2PhiPhi_MD_default.root"], + nargs="+", + help="input files, including path", + ) + parser.add_argument( + "--outfile", + type=str, + default="data/efficiency_plots.root", + help="output file", + ) + parser.add_argument( + "--trackers", + type=str, + nargs="+", + default=["Forward", "Match", "BestLong"], + help="Trackers to plot.", + ) + parser.add_argument( + "--label", + nargs="+", + default=["EffChecker"], + help="label for files", + ) + parser.add_argument( + "--savepdf", + action="store_true", + help="save plots in pdf format", + ) + parser.add_argument( + "--plot-electrons", + action="store_true", + help="plot electrons") + parser.add_argument( + "--plot-electrons-only", + action="store_true", + help="plot only electrons", + ) + return parser + + +def get_files(tf, filename, label): + for i, f in enumerate(filename): + tf[label[i]] = TFile(f, "read") + return tf + + +def get_nicer_var_string(var: str): + nice_vars = dict(pt="p_{T}", eta="#eta", phi="#phi") + try: + return nice_vars[var] + except KeyError: + return var + + +def get_eff(eff, hist, tf, histoName, label, var): + eff = {} + hist = {} + var = get_nicer_var_string(var) + for i, lab in enumerate(label): + numeratorName = histoName + "_reconstructed" + numerator = tf[lab].Get(numeratorName) + denominatorName = histoName + "_reconstructible" + denominator = tf[lab].Get(denominatorName) + if numerator.GetEntries() == 0 or denominator.GetEntries() == 0: + continue + + teff = TEfficiency(numerator, denominator) + teff.SetStatisticOption(7) + eff[lab] = teff.CreateGraph() + eff[lab].SetName(lab) + eff[lab].SetTitle(lab + " not e^{-}") + if histoName.find("strange") != -1: + eff[lab].SetTitle(lab + " from stranges") + if histoName.find("electron") != -1: + eff[lab].SetTitle(lab + " e^{-}") + + hist[lab] = denominator.Clone() + hist[lab].SetName("h_numerator_notElectrons") + hist[lab].SetTitle(var + " distribution, not e^{-}") + if histoName.find("strange") != -1: + hist[lab].SetTitle(var + " distribution, stranges") + if histoName.find("electron") != -1: + hist[lab].SetTitle(var + " distribution, e^{-}") + + return eff, hist + + +def get_ghost(eff, hist, tf, histoName, label): + ghost = {} + for i, lab in enumerate(label): + numeratorName = histoName + "_Ghosts" + denominatorName = histoName + "_Total" + numerator = tf[lab].Get(numeratorName) + denominator = tf[lab].Get(denominatorName) + print("Numerator = " + numeratorName) + print("Denominator = " + denominatorName) + teff = TEfficiency(numerator, denominator) + teff.SetStatisticOption(7) + ghost[lab] = teff.CreateGraph() + print(lab) + ghost[lab].SetName(lab) + + return ghost + + +def PrCheckerEfficiency( + filename, + outfile, + label, + trackers, + savepdf, + plot_electrons, + plot_electrons_only, +): + from utils.LHCbStyle import setLHCbStyle, set_style + from utils.ConfigHistos import ( + efficiencyHistoDict, + ghostHistoDict, + categoriesDict, + getCuts, + ) + from utils.Legend import place_legend + + setLHCbStyle() + + markers = get_markers() + colors = get_colors() + styles = get_fillstyles() + + tf = {} + tf = get_files(tf, filename, label) + outputfile = TFile(outfile, "recreate") + + latex = TLatex() + latex.SetNDC() + latex.SetTextSize(0.05) + + efficiencyHistoDict = efficiencyHistoDict() + efficiencyHistos = getEfficiencyHistoNames() + ghostHistos = getGhostHistoNames() + ghostHistoDict = ghostHistoDict() + categories = categoriesDict() + cuts = getCuts() + trackers = getTrackers(trackers) + folders = getOriginFolders() + # names = getTrackNames() + + for tracker in trackers: + outputfile.cd() + trackerDir = outputfile.mkdir(tracker) + trackerDir.cd() + + for cut in cuts[tracker]: + cutDir = trackerDir.mkdir(cut) + cutDir.cd() + folder = folders[tracker]["folder"] + print(folder) + histoBaseName = "Track/" + folder + tracker + "/" + cut + "_" + + # calculate efficiency + for histo in efficiencyHistos: + canvastitle = ( + "efficiency_" + histo + ", " + categories[tracker][cut]["title"] + ) + # get efficiency for not electrons category + histoName = histoBaseName + "" + efficiencyHistoDict[histo]["variable"] + print("not electrons: " + histoName) + eff = {} + hist_den = {} + eff, hist_den = get_eff(eff, hist_den, tf, histoName, label, histo) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + histoNameElec = ( + "Track/" + + folder + + tracker + + "/" + + categories[tracker][cut]["Electrons"] + ) + histoName_e = ( + histoNameElec + "_" + efficiencyHistoDict[histo]["variable"] + ) + print("electrons: " + histoName_e) + eff_elec = {} + hist_elec = {} + eff_elec, hist_elec = get_eff( + eff_elec, + hist_elec, + tf, + histoName_e, + label, + histo, + ) + name = "efficiency_" + histo + canvas = TCanvas(name, canvastitle) + canvas.SetRightMargin(0.1) + mg = TMultiGraph() + for i, lab in enumerate(label): + if not plot_electrons_only: + mg.Add(eff[lab]) + set_style(eff[lab], colors[i], markers[i], styles[i]) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + mg.Add(eff_elec[lab]) + set_style(eff_elec[lab], kBlue - 7, markers[i + 1], styles[i]) + mg.Draw("AP") + mg.GetYaxis().SetRangeUser(0, 1.05) + xtitle = efficiencyHistoDict[histo]["xTitle"] + unit_l = xtitle.split("[") + if "]" in unit_l[-1]: + unit = unit_l[-1].replace("]", "") + else: + unit = "" + print(unit) + mg.GetXaxis().SetTitle(xtitle) + mg.GetXaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitle( + "Efficiency of Long Tracks", + ) # (" + str(round(hist_den[label[0]].GetBinWidth(1), 2)) + f"{unit})"+"^{-1}") + mg.GetYaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleOffset(1.1) + mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) + mg.GetXaxis().SetNdivisions(10, 5, 0) + mygray = 18 + myblue = kBlue - 9 + for i, lab in enumerate(label): + rightmax = 1.05 * hist_den[lab].GetMaximum() + scale = gPad.GetUymax() / rightmax + hist_den[lab].Scale(scale) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + rightmax = 1.05 * hist_elec[lab].GetMaximum() + scale = gPad.GetUymax() / rightmax + hist_elec[lab].Scale(scale) + if i == 0: + if not plot_electrons_only: + set_style(hist_den[lab], mygray, markers[i], styles[i]) + gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + hist_den[lab].Draw("HIST PLC SAME") + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + set_style(hist_elec[lab], myblue, markers[i], styles[i]) + hist_elec[lab].SetFillColorAlpha(myblue, 0.35) + hist_elec[lab].Draw("HIST PLC SAME") + else: + print( + "No distribution plotted for other labels.", + "Can be added by uncommenting the code below this print statement.", + ) + # set_style(hist_den[lab], mygray, markers[i], styles[i]) + # gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + # hist_den[lab].Draw("HIST PLC SAME") + + if histo == "p": + pos = [0.53, 0.4, 1.01, 0.71] + elif histo == "pt": + pos = [0.5, 0.4, 0.98, 0.71] + else: + pos = [0.4, 0.37, 0.88, 0.68] + legend = place_legend( + canvas, *pos, header="LHCb Simulation", option="LPE" + ) + for le in legend.GetListOfPrimitives(): + if "distribution" in le.GetLabel(): + le.SetOption("LF") + legend.SetTextFont(132) + legend.SetTextSize(0.045) + legend.Draw() + for lab in label: + if not plot_electrons_only: + eff[lab].Draw("P SAME") + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + eff_elec[lab].Draw("P SAME") + cutName = categories[tracker][cut]["title"] + latex.DrawLatex(legend.GetX1() + 0.01, legend.GetY1() - 0.05, cutName) + low = 0 + high = 1.05 + gPad.Update() + axis = TGaxis( + gPad.GetUxmax(), + gPad.GetUymin(), + gPad.GetUxmax(), + gPad.GetUymax(), + low, + high, + 510, + "+U", + ) + axis.SetTitleFont(132) + axis.SetTitleSize(0.06) + axis.SetTitleOffset(0.55) + axis.SetTitle( + "# Tracks " + get_nicer_var_string(histo) + " distribution [a.u.]", + ) + axis.SetLabelSize(0) + axis.Draw() + canvas.RedrawAxis() + if savepdf: + filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] + for ftype in filestypes: + if not plot_electrons_only: + canvasName = tracker + "_" + cut + "_" + histo + "." + ftype + else: + canvasName = ( + tracker + "Electrons_" + cut + "_" + histo + "." + ftype + ) + canvas.SaveAs("checks/" + canvasName) + # canvas.SetRightMargin(0.05) + canvas.Write() + + # calculate ghost rate + histoBaseName = "Track/" + folder + tracker + "/" + for histo in ghostHistos[tracker]: + trackerDir.cd() + title = "ghost_rate_vs_" + histo + + gPad.SetTicks() + histoName = histoBaseName + ghostHistoDict[histo]["variable"] + + ghost = {} + hist_den = {} + ghost = get_ghost(ghost, hist_den, tf, histoName, label) + canvas = TCanvas(title, title) + mg = TMultiGraph() + for i, lab in enumerate(label): + mg.Add(ghost[lab]) + set_style(ghost[lab], colors[i], markers[i], styles[i]) + + xtitle = ghostHistoDict[histo]["xTitle"] + mg.GetXaxis().SetTitle(xtitle) + mg.GetYaxis().SetTitle("Fraction of fake tracks") + mg.Draw("ap") + mg.GetXaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleOffset(1.1) + mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) + mg.GetXaxis().SetNdivisions(10, 5, 0) + # for lab in label: + # ghost[lab].Draw("P SAME") + if histo == "p": + pos = [0.53, 0.4, 1.01, 0.71] + elif histo == "pt": + pos = [0.5, 0.4, 0.98, 0.71] + elif histo == "eta": + pos = [0.35, 0.6, 0.85, 0.9] + else: + pos = [0.4, 0.37, 0.88, 0.68] + legend = place_legend(canvas, *pos, header="LHCb Simulation", option="LPE") + legend.SetTextFont(132) + legend.SetTextSize(0.045) + legend.Draw() + # if histo != "nPV": + # latex.DrawLatex(0.7, 0.85, "LHCb simulation") + # else: + # latex.DrawLatex(0.2, 0.85, "LHCb simulation") + # mg.GetYaxis().SetRangeUser(0, 0.4) + if histo == "eta": + mg.GetYaxis().SetRangeUser(0, 0.4) + # track_name = names[tracker] + " tracks" + # latex.DrawLatex(0.7, 0.75, track_name) + # canvas.PlaceLegend() + if savepdf: + filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] + for ftype in filestypes: + canvas.SaveAs( + "checks/" + tracker + "ghost_rate_" + histo + "." + ftype, + ) + canvas.Write() + + outputfile.Write() + outputfile.Close() + + +if __name__ == "__main__": + parser = argument_parser() + args = parser.parse_args() + PrCheckerEfficiency(**vars(args)) diff --git a/scripts/BakPrCheckerTrackResolution.py b/scripts/BakPrCheckerTrackResolution.py new file mode 100644 index 0000000..eee5113 --- /dev/null +++ b/scripts/BakPrCheckerTrackResolution.py @@ -0,0 +1,309 @@ +import argparse +from ROOT import TLatex, TCanvas, TFile, TGaxis +from ROOT import kOrange, kGray, kMagenta, kCyan, kGreen, kBlue, kBlack, gPad, TF1 +from ROOT import gROOT +from ROOT import TObjArray + +gROOT.SetBatch(True) + + +def get_colors(): + return [kBlack, kBlue, kGreen + 3, kMagenta + 2, kOrange, kCyan + 2] + + +def get_markers(): + return [20, 24, 21, 22, 23, 25] + + +def get_fillstyles(): + return [3004, 3003, 3325, 3144, 3244, 3444] + + +def get_files(tf, filename, label): + for i, f in enumerate(filename): + tf[label[i]] = TFile(f, "read") + return tf + + +def argument_parser(): + parser = argparse.ArgumentParser(description="location of the histogram file") + parser.add_argument("--filename", nargs="+", default=[], help="name of input files") + parser.add_argument( + "--label", + nargs="+", + default=["TrackRes"], + help="name of input tuple files", + ) + parser.add_argument( + "--trackers", + type=str, + nargs="+", + default=["Forward", "BestLong", "BestForward"], + help="Trackers to plot.", + ) + parser.add_argument( + "--outfile", + type=str, + default="checks/TrackResolution_plots.root", + help="name of output files", + ) + parser.add_argument( + "--savepdf", + default=False, + action="store_true", + help="save plots in pdf format", + ) + return parser + + +def PrCheckerTrackResolution(filename, label, trackers, outfile, savepdf): + + from utils.LHCbStyle import setLHCbStyle, set_style + from utils.Legend import place_legend + + setLHCbStyle() + + latex = TLatex() + latex.SetNDC() + latex.SetTextSize(0.05) + + markers = get_markers() + colors = get_colors() + styles = get_fillstyles() + tf = {} + tf = get_files(tf, filename, label) + outputfile = TFile(outfile, "recreate") + outputfile.cd() + + for tracker in trackers: + hres_p = {} + hres_eta = {} + canvas1 = TCanvas("res_p", "res v.s. p") + canvas1.cd() + + arrp = TObjArray() + gaus = TF1("gaus", "gaus", -1, 1) + for idx, lab in enumerate(label): + hdp_p = tf[lab].Get( + f"Track/TrackResChecker{tracker}/ALL/vertex/dpoverp_vs_p", + ) + hdp_p.SetName("dpoverp_p_" + lab) + hmom = hdp_p.ProjectionX() + hmom.SetTitle("p distribution Long Tracks") + hdp_p.FitSlicesY(gaus, 0, -1, 0, "Q", arrp) + + hres_p[lab] = arrp[2] + hres_p[lab].GetYaxis().SetTitle("dp/p [%]") + hres_p[lab].GetXaxis().SetTitle("p [GeV]") + hres_p[lab].GetYaxis().SetRangeUser(0, 1.2) + hres_p[lab].SetTitle(lab) + set_style(hres_p[lab], colors[idx], markers[idx], 0) + + if idx == 0: + hres_p[lab].Draw("E1 p1") + set_style(hmom, kGray + 1, markers[idx], styles[idx]) + hmom.Scale(gPad.GetUymax() / hmom.GetMaximum()) + hmom.Draw("hist same") + else: + hres_p[lab].Draw("E1 p1 same") + set_style(hmom, colors[idx] - 10, markers[idx], styles[idx]) + # hmom.Scale(gPad.GetUymax() / hmom.GetMaximum()) + # hmom.Draw("hist same") + + for i in range(1, hres_p[lab].GetNbinsX() + 1): + hres_p[lab].SetBinContent(i, hres_p[lab].GetBinContent(i) * 100) + hres_p[lab].SetBinError(i, hres_p[lab].GetBinError(i) * 100) + + print( + lab + + ": Track resolution (dp/p) in p region: (" + + format(hres_p[lab].GetBinLowEdge(i), ".2f") + + ", " + + format( + hres_p[lab].GetBinLowEdge(i) + hres_p[lab].GetBinWidth(i), + ".2f", + ) + + ") [GeV/c]" + + " --- (" + + format(hres_p[lab].GetBinContent(i), ".2f") + + "+-" + + format(hres_p[lab].GetBinError(i), ".2f") + + ")%", + ) + print("-----------------------------------------------------") + + if "Best" not in tracker: + legend = place_legend( + canvas1, + 0.45, + 0.33, + 0.93, + 0.63, + header="LHCb Simulation", + option="LPE", + ) + else: + legend = place_legend( + canvas1, + 0.45, + 0.53, + 0.93, + 0.83, + header="LHCb Simulation", + option="LPE", + ) + for le in legend.GetListOfPrimitives(): + if "distribution" in le.GetLabel(): + le.SetOption("LF") + legend.Draw() + for lab in label: + hres_p[lab].Draw("E1 p1 same") + canvas1.SetRightMargin(0.1) + if "Best" not in tracker: + latex.DrawLatex( + legend.GetX1() + 0.01, + legend.GetY1() - 0.05, + "without Kalman Filter", + ) + low = 0 + high = 1.2 + gPad.Update() + axis = TGaxis( + gPad.GetUxmax(), + gPad.GetUymin(), + gPad.GetUxmax(), + gPad.GetUymax(), + low, + high, + 510, + "+U", + ) + axis.SetTitleFont(132) + axis.SetTitleSize(0.06) + axis.SetTitleOffset(0.55) + axis.SetTitle("# Tracks p distribution [a.u.]") + axis.SetLabelSize(0) + axis.Draw() + canvas1.Write() + if savepdf: + filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] + for ftype in filestypes: + canvas1.SaveAs(f"checks/{tracker}_trackres_p." + ftype) + + gaus.Delete() + arrp.Delete() + + canvas2 = TCanvas("res_eta", "res v.s. eta") + canvas2.cd() + + arreta = TObjArray() + gaus = TF1("gaus", "gaus", -1, 1) + for idx, lab in enumerate(label): + hdp_eta = tf[lab].Get( + f"Track/TrackResChecker{tracker}/ALL/vertex/dpoverp_vs_eta", + ) + hdp_eta.SetName("dpoverp_eta_" + lab) + hdp_eta.FitSlicesY(gaus, 0, -1, 0, "Q", arreta) + heta = hdp_eta.ProjectionX() + heta.SetTitle("#eta distribution Long Tracks") + + hres_eta[lab] = arreta[2] + hres_eta[lab].GetYaxis().SetTitle("dp/p [%]") + hres_eta[lab].GetXaxis().SetTitle("#eta") + hres_eta[lab].GetYaxis().SetRangeUser(0, 1.2) + hres_eta[lab].SetTitle(lab) + set_style(hres_eta[lab], colors[idx], markers[idx], 0) + + if idx == 0: + hres_eta[lab].Draw("E1 p1") + set_style(heta, kGray + 1, markers[idx], styles[idx]) + heta.Scale(gPad.GetUymax() / heta.GetMaximum()) + heta.Draw("hist same") + else: + hres_eta[lab].Draw("E1 p1 same") + set_style(heta, colors[idx] - 10, markers[idx], styles[idx]) + + # heta.Scale(gPad.GetUymax() / heta.GetMaximum()) + # heta.Draw("hist same") + + for i in range(1, hres_eta[lab].GetNbinsX() + 1): + hres_eta[lab].SetBinContent(i, hres_eta[lab].GetBinContent(i) * 100) + hres_eta[lab].SetBinError(i, hres_eta[lab].GetBinError(i) * 100) + + print( + lab + + ": Track resolution (dp/p) in eta region: (" + + format(hres_eta[lab].GetBinLowEdge(i), ".2f") + + ", " + + format( + hres_eta[lab].GetBinLowEdge(i) + hres_eta[lab].GetBinWidth(i), + ".2f", + ) + + ")" + + " --- (" + + format(hres_eta[lab].GetBinContent(i), ".2f") + + "+-" + + format(hres_eta[lab].GetBinError(i), ".2f") + + ")%", + ) + print("-----------------------------------------------------") + + legend = place_legend( + canvas2, + 0.41, + 0.27, + 0.89, + 0.57, + header="LHCb Simulation", + option="LPE", + ) + for le in legend.GetListOfPrimitives(): + if "distribution" in le.GetLabel(): + le.SetOption("LF") + legend.SetTextFont(132) + legend.SetTextSize(0.045) + legend.Draw() + for lab in label: + hres_eta[lab].Draw("E1 p1 same") + canvas2.SetRightMargin(0.1) + if "Best" not in tracker: + latex.DrawLatex( + legend.GetX1() + 0.01, + legend.GetY1() - 0.05, + "without Kalman Filter", + ) + low = 0 + high = 1.2 + gPad.Update() + axis = TGaxis( + gPad.GetUxmax(), + gPad.GetUymin(), + gPad.GetUxmax(), + gPad.GetUymax(), + low, + high, + 510, + "+U", + ) + axis.SetTitleFont(132) + axis.SetTitleSize(0.06) + axis.SetTitleOffset(0.55) + axis.SetTitle("# Tracks #eta distribution [a.u.]") + axis.SetLabelSize(0) + axis.Draw() + canvas2.Write() + if savepdf: + filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] + for ftype in filestypes: + canvas2.SaveAs(f"checks/{tracker}_trackres_eta." + ftype) + gaus.Delete() + arreta.Delete() + + outputfile.Write() + outputfile.Close() + + +if __name__ == "__main__": + parser = argument_parser() + args = parser.parse_args() + PrCheckerTrackResolution(**vars(args)) diff --git a/scripts/CompareEfficiency.py b/scripts/CompareEfficiency.py new file mode 100644 index 0000000..e0db41c --- /dev/null +++ b/scripts/CompareEfficiency.py @@ -0,0 +1,839 @@ +# flake8: noqa + +""" +Script for accessing histograms of reconstructible and +reconstructed tracks for different tracking categories +and trackers. + +The efficency is calculated usig TGraphAsymmErrors +and Bayesian error bars + +author: Furkan Cetin +date: 10/2023 + + + +Takes data from Recent_get_resolution_and_eff_data.py and calculates efficiencies + +python scripts/CompareEfficiency.py +--filename data/res_and_effs_B.root data/resolutions_and_effs_Bd2KstEE_MDmaster.root +--trackers Match --label new old --outfile data/compare_effs.root + +python scripts/CompareEfficiency.py --filename data/resolutions_and_effs_D_default_weights.root data/resolutions_and_effs_D_with_electron_weights_as_residual.root --trackers BestLong Seed --label default new --outfile data_results/CompareEfficiencyDDefaultResidual.root +""" + +import os, sys +import argparse +from ROOT import TMultiGraph, TLatex, TCanvas, TFile, TGaxis +from ROOT import ( + kGreen, + kBlue, + kBlack, + kAzure, + kGray, + kOrange, + kMagenta, + kCyan, + kViolet, + kTeal, + kRed, +) +from ROOT import gROOT, gStyle, gPad +from ROOT import TEfficiency +from array import array + + +gROOT.SetBatch(True) + +from utils.components import unique_name_ext_re, findRootObjByName + + +def getEfficiencyHistoNames(): + return ["p", "pt", "phi", "eta", "nPV"] + + +def getTrackers(trackers): + return trackers + + +def getCompCuts(compare_cuts): + return compare_cuts + + +# data/resolutions_and_effs_Bd2KstEE_MDmaster.root:Track/... +def getOriginFolders(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "Match": {}, + "BestLong": {}, + "Seed": {}, + } + # evtl anpassen wenn die folders anders heissen + basedict["Velo"]["folder"] = "VeloTrackChecker/" + basedict["Upstream"]["folder"] = "UpstreamTrackChecker/" + basedict["Forward"]["folder"] = "ForwardTrackChecker" + unique_name_ext_re() + "/" + basedict["Match"]["folder"] = "MatchTrackChecker" + unique_name_ext_re() + "/" + basedict["BestLong"]["folder"] = "BestLongTrackChecker" + unique_name_ext_re() + "/" + basedict["Seed"]["folder"] = "SeedTrackChecker" + unique_name_ext_re() + "/" + + # basedict["Forward"]["folder"] = "ForwardTrackChecker_7a0dbfa7/" + # basedict["Match"]["folder"] = "MatchTrackChecker_29e3152a/" + # basedict["BestLong"]["folder"] = "BestLongTrackChecker_4ddacce1/" + # basedict["Seed"]["folder"] = "SeedTrackChecker_1b1d5575/" + + return basedict + + +def getTrackNames(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "Match": {}, + "BestLong": {}, + "Seed": {}, + } + + basedict["Velo"] = "Velo" + basedict["Upstream"] = "VeloUT" + basedict["Forward"] = "Forward" + basedict["Match"] = "Match" + basedict["BestLong"] = "BestLong" + basedict["Seed"] = "Seed" + return basedict + + +def get_colors(): + return [kBlack, kAzure, kGreen + 2, kMagenta + 2, kRed, kCyan + 2, kGray + 1] + + +def get_elec_colors(): + return [ + kGray + 2, + kBlue - 4, + kRed + 1, + kGreen + 1, + kViolet, + kOrange - 3, + kTeal - 1, + kGray + 1, + ] + + +def get_markers(): + return [20, 21, 24, 25, 22, 23, 26, 32] + + +def get_fillstyles(): + return [1003, 3001, 3002, 3325, 3144, 3244, 3444] + + +def getGhostHistoNames(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "Match": {}, + "BestLong": {}, + "Seed": {}, + } + + basedict["Velo"] = ["eta", "nPV"] + basedict["Upstream"] = ["eta", "p", "pt", "nPV"] + basedict["Forward"] = ["eta", "p", "pt", "nPV"] + basedict["Match"] = ["eta", "p", "pt", "nPV"] + basedict["BestLong"] = ["eta", "p", "pt", "nPV"] + basedict["Seed"] = ["eta", "p", "pt", "nPV"] + + return basedict + + +def argument_parser(): + parser = argparse.ArgumentParser(description="location of the tuple file") + parser.add_argument( + "--filename", + type=str, + default=["data/resolutions_and_effs_B.root"], + nargs="+", + help="input files, including path", + ) + parser.add_argument( + "--outfile", + type=str, + default="data_results/compare_efficiency.root", + help="output file", + ) + parser.add_argument( + "--trackers", + type=str, + nargs="+", + default=["Forward", "Match", "BestLong", "Seed"], # --- + help="Trackers to plot.", + ) + parser.add_argument( + "--label", + nargs="+", + default=["Eff"], + help="label for files", + ) + parser.add_argument( + "--savepdf", + action="store_true", + help="save plots in pdf format", + ) + parser.add_argument( + "--compare", + default=True, + action="store_true", + help="compare efficiencies", + ) + parser.add_argument( + "--compare-cuts", + type=str, + nargs="+", + default=["long", "long_fromB", "long_fromB_P>5GeV"], + help="which cuts get compared", + ) + parser.add_argument( + "--plot-electrons", + default=True, + action="store_true", + help="plot electrons", + ) + parser.add_argument( + "--plot-electrons-only", + action="store_true", + help="plot only electrons", + ) + return parser + + +def get_files(tf, filename, label): + for i, f in enumerate(filename): + tf[label[i]] = TFile(f, "read") + return tf + + +def get_nicer_var_string(var: str): + nice_vars = dict(pt="p_{T}", eta="#eta", phi="#phi") + try: + return nice_vars[var] + except KeyError: + return var + + +def get_eff(eff, hist, tf, histoName, label, var): + eff = {} + hist = {} + var = get_nicer_var_string(var) + for i, lab in enumerate(label): + numeratorName = histoName + "_reconstructed" + numerator = findRootObjByName(tf[lab], numeratorName) + denominatorName = histoName + "_reconstructible" + denominator = findRootObjByName(tf[lab], denominatorName) + if numerator.GetEntries() == 0 or denominator.GetEntries() == 0: + continue + + teff = TEfficiency(numerator, denominator) + teff.SetStatisticOption(7) + eff[lab] = teff.CreateGraph() + eff[lab].SetName(lab) + eff[lab].SetTitle(lab) + if histoName.find("Forward") != -1: + if histoName.find("electron") != -1: + eff[lab].SetTitle(lab + " Forward, e^{-}") + else: + eff[lab].SetTitle(lab + " Forward") + if histoName.find("Match") != -1: + if histoName.find("electron") != -1: + eff[lab].SetTitle(lab + " Match, e^{-}") + else: + eff[lab].SetTitle(lab + " Match") + if histoName.find("Seed") != -1: + if histoName.find("electron") != -1: + eff[lab].SetTitle(lab + " Seed, e^{-}") + else: + eff[lab].SetTitle(lab + " Seed") + if histoName.find("BestLong") != -1: + if histoName.find("electron") != -1: + eff[lab].SetTitle(lab + " BestLong, e^{-}") + else: + eff[lab].SetTitle(lab + " BestLong") + + # eff[lab].SetTitle(lab + " not e^{-}") + # if histoName.find("strange") != -1: + # eff[lab].SetTitle(lab + " from stranges") + # if histoName.find("electron") != -1: + # eff[lab].SetTitle(lab + " e^{-}") + + hist[lab] = denominator.Clone() + hist[lab].SetName("h_numerator_notElectrons") + hist[lab].SetTitle(var + " distribution, not e^{-}") + if histoName.find("strange") != -1: + hist[lab].SetTitle(var + " distribution, stranges") + if histoName.find("electron") != -1: + hist[lab].SetTitle(var + " distribution, e^{-}") + + return eff, hist + + +def get_ghost(eff, hist, tf, histoName, label): + ghost = {} + for i, lab in enumerate(label): + numeratorName = histoName + "_Ghosts" + denominatorName = histoName + "_Total" + numerator = findRootObjByName(tf[lab], numeratorName) + denominator = findRootObjByName(tf[lab], denominatorName) + print("Numerator = " + numeratorName.replace(unique_name_ext_re(), "")) + print("Denominator = " + denominatorName.replace(unique_name_ext_re(), "")) + teff = TEfficiency(numerator, denominator) + teff.SetStatisticOption(7) + ghost[lab] = teff.CreateGraph() + print(lab) + ghost[lab].SetName(lab) + + return ghost + + +def PrCheckerEfficiency( + filename, + outfile, + label, + trackers, + savepdf, + compare, + compare_cuts, + plot_electrons, + plot_electrons_only, +): + from utils.LHCbStyle import setLHCbStyle, set_style + from utils.ConfigHistos import ( + efficiencyHistoDict, + ghostHistoDict, + categoriesDict, + getCuts, + ) + from utils.CompareConfigHistos import getCompare, getCompColors + from utils.Legend import place_legend + + setLHCbStyle() + + markers = get_markers() + colors = get_colors() + elec_colors = get_elec_colors() + styles = get_fillstyles() + + tf = {} + tf = get_files(tf, filename, label) + outputfile = TFile(outfile, "recreate") + + latex = TLatex() + latex.SetNDC() + latex.SetTextSize(0.05) + + efficiencyHistoDict = efficiencyHistoDict() + efficiencyHistos = getEfficiencyHistoNames() + ghostHistos = getGhostHistoNames() + ghostHistoDict = ghostHistoDict() + categories = categoriesDict() + cuts = getCuts() + compareDict = getCompare() + compareCuts = getCompCuts(compare_cuts) + compareColors = getCompColors() + trackers = getTrackers(trackers) + folders = getOriginFolders() + + for tracker in trackers: + outputfile.cd() + trackerDir = outputfile.mkdir(tracker) + trackerDir.cd() + + for cut in cuts[tracker]: + cutDir = trackerDir.mkdir(cut) + cutDir.cd() + folder = folders[tracker]["folder"] + print("folder: " + folder.replace(unique_name_ext_re(), "")) + histoBaseName = "Track/" + folder + tracker + "/" + cut + "_" + + # calculate efficiency + for histo in efficiencyHistos: + canvastitle = ( + "efficiency_" + histo + ", " + categories[tracker][cut]["title"] + ) + # get efficiency for not electrons category + histoName = histoBaseName + "" + efficiencyHistoDict[histo]["variable"] + print("not electrons: " + histoName.replace(unique_name_ext_re(), "")) + eff = {} + hist_den = {} + eff, hist_den = get_eff(eff, hist_den, tf, histoName, label, histo) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + histoNameElec = ( + "Track/" + + folder + + tracker + + "/" + + categories[tracker][cut]["Electrons"] + ) + histoName_e = ( + histoNameElec + "_" + efficiencyHistoDict[histo]["variable"] + ) + print("electrons: " + histoName_e.replace(unique_name_ext_re(), "")) + eff_elec = {} + hist_elec = {} + eff_elec, hist_elec = get_eff( + eff_elec, + hist_elec, + tf, + histoName_e, + label, + histo, + ) + name = "efficiency_" + histo + canvas = TCanvas(name, canvastitle) + canvas.SetRightMargin(0.1) + mg = TMultiGraph() + for i, lab in enumerate(label): + if not plot_electrons_only: + mg.Add(eff[lab]) + set_style(eff[lab], colors[i], markers[i], styles[i]) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + mg.Add(eff_elec[lab]) + set_style(eff_elec[lab], elec_colors[i], markers[i], styles[i]) + + mg.Draw("AP") + mg.GetYaxis().SetRangeUser(0, 1.05) + xtitle = efficiencyHistoDict[histo]["xTitle"] + unit_l = xtitle.split("[") + if "]" in unit_l[-1]: + unit = unit_l[-1].replace("]", "") + else: + unit = "a.u." + print(unit) + mg.GetXaxis().SetTitle(xtitle) + mg.GetXaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitle( + "Efficiency of Long Tracks", + ) # (" + str(round(hist_den[label[0]].GetBinWidth(1), 2)) + f"{unit})"+"^{-1}") + mg.GetYaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleOffset(1.1) + mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) + mg.GetXaxis().SetNdivisions(10, 5, 0) + mygray = 18 + myblue = kBlue - 9 + for i, lab in enumerate(label): + rightmax = 1.05 * hist_den[lab].GetMaximum() + scale = gPad.GetUymax() / rightmax + hist_den[lab].Scale(scale) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + rightmax = 1.05 * hist_elec[lab].GetMaximum() + scale = gPad.GetUymax() / rightmax + hist_elec[lab].Scale(scale) + if i == 0: + if not plot_electrons_only: + set_style(hist_den[lab], mygray, markers[i], styles[i]) + gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + hist_den[lab].Draw("HIST PLC SAME") + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + set_style(hist_elec[lab], myblue, markers[i], styles[i]) + hist_elec[lab].SetFillColorAlpha(myblue, 0.35) + hist_elec[lab].Draw("HIST PLC SAME") + # else: + # print( + # "No distribution plotted for other labels.", + # "Can be added by uncommenting the code below this print statement.", + # ) + # # set_style(hist_den[lab], mygray, markers[i], styles[i]) + # # gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + # # hist_den[lab].Draw("HIST PLC SAME") + + # if histo == "p": + # pos = [0.5, 0.3, 1.0, 0.6] + # elif histo == "pt": + # pos = [0.5, 0.3, 0.99, 0.6] + # elif histo == "phi": + # pos = [0.3, 0.25, 0.8, 0.55] + # else: + # pos = [0.3, 0.25, 0.8, 0.55] + + if histo == "p": + pos = [0.5, 0.3, 1.0, 0.5] # [0.53, 0.4, 1.01, 0.71] + elif histo == "pt": + pos = [0.5, 0.3, 0.99, 0.5] # [0.5, 0.4, 0.98, 0.71] + elif histo == "phi": + pos = [0.4, 0.3, 0.9, 0.5] + elif histo == "eta": + pos = [0.5, 0.25, 1.0, 0.45] + else: + pos = [0.35, 0.25, 0.85, 0.45] + + legend = place_legend( + canvas, *pos, header="LHCb Simulation", option="LPE" + ) + for le in legend.GetListOfPrimitives(): + if "distribution" in le.GetLabel(): + le.SetOption("LF") + legend.SetTextFont(132) + legend.SetTextSize(0.04) + legend.Draw() + for lab in label: + if not plot_electrons_only: + eff[lab].Draw("P SAME") + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + eff_elec[lab].Draw("P SAME") + cutName = categories[tracker][cut]["title"] + latex.DrawLatex(legend.GetX1() + 0.01, legend.GetY1() - 0.05, cutName) + low = 0 + high = 1.05 + gPad.Update() + axis = TGaxis( + gPad.GetUxmax(), + gPad.GetUymin(), + gPad.GetUxmax(), + gPad.GetUymax(), + low, + high, + 510, + "+U", + ) + axis.SetTitleFont(132) + axis.SetTitleSize(0.06) + axis.SetTitleOffset(0.55) + axis.SetTitle( + "# Tracks " + get_nicer_var_string(histo) + " distribution [a.u.]", + ) + axis.SetLabelSize(0) + axis.Draw() + canvas.RedrawAxis() + if savepdf: + filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] + for ftype in filestypes: + if not plot_electrons_only: + canvasName = tracker + "_" + cut + "_" + histo + "." + ftype + else: + canvasName = ( + tracker + + "_Electrons_" + + cut + + "_" + + histo + + "." + + ftype + ) + canvas.SaveAs("checks/" + canvasName) + # canvas.SetRightMargin(0.05) + canvas.Write() + + # calculate ghost rate + print("\ncalculate ghost rate: ") + histoBaseName = "Track/" + folder + tracker + "/" + for histo in ghostHistos[tracker]: + trackerDir.cd() + title = "ghost_rate_vs_" + histo + + gPad.SetTicks() + histoName = histoBaseName + ghostHistoDict[histo]["variable"] + + ghost = {} + hist_den = {} + ghost = get_ghost(ghost, hist_den, tf, histoName, label) + canvas = TCanvas(title, title) + mg = TMultiGraph() + for i, lab in enumerate(label): + mg.Add(ghost[lab]) + set_style(ghost[lab], colors[i], markers[2 * i], styles[i]) + + xtitle = ghostHistoDict[histo]["xTitle"] + mg.GetXaxis().SetTitle(xtitle) + mg.GetYaxis().SetTitle("Fraction of fake tracks") + mg.Draw("ap") + mg.GetXaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleOffset(1.1) + mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) + mg.GetXaxis().SetNdivisions(10, 5, 0) + # for lab in label: + # ghost[lab].Draw("P SAME") + if histo == "p": + pos = [0.53, 0.4, 1.00, 0.71] + elif histo == "pt": + pos = [0.5, 0.4, 0.98, 0.71] + elif histo == "eta": + pos = [0.35, 0.6, 0.85, 0.9] + elif histo == "phi": + pos = [0.3, 0.3, 0.9, 0.6] + else: + pos = [0.4, 0.37, 0.80, 0.68] + legend = place_legend(canvas, *pos, header="LHCb Simulation", option="LPE") + legend.SetTextFont(132) + legend.SetTextSize(0.04) + legend.Draw() + # if histo != "nPV": + # latex.DrawLatex(0.7, 0.85, "LHCb simulation") + # else: + # latex.DrawLatex(0.2, 0.85, "LHCb simulation") + # mg.GetYaxis().SetRangeUser(0, 0.4) + if histo == "eta": + mg.GetYaxis().SetRangeUser(0, 0.4) + # track_name = names[tracker] + " tracks" + # latex.DrawLatex(0.7, 0.75, track_name) + # canvas.PlaceLegend() + if savepdf: + filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] + for ftype in filestypes: + canvas.SaveAs( + "checks/" + tracker + "_ghost_rate_" + histo + "." + ftype, + ) + canvas.Write() + + # + # Compare electron efficiencies of different trackers + # + + plot_electrons_only = True + if compare: + print("\nCompare Efficiencies: ") + outputfile.cd() + + for jcut in compareCuts: # [long, long_fromB, long_fromB_P>5GeV] + compareDir = outputfile.mkdir("compare_" + jcut) + compareDir.cd() + for histo in efficiencyHistos: # [p, pt, phi, eta, nPV] + canvastitle = "efficiency_" + histo + "_" + jcut + name = "efficiency_" + histo + "_" + jcut + canvas = TCanvas(name, canvastitle) + canvas.SetRightMargin(0.1) + mg = TMultiGraph() + dist_eff = {} + dist_hist_den = {} + dist_eff_elec = {} + dist_hist_elec = {} + First = True + dist_tracker = "" + markeritr = 0 + + for tracker in trackers: # [BestLong, Forward, Match, Seed] + cut = compareDict[jcut][tracker] + folder = folders[tracker]["folder"] + print("folder: " + folder.replace(unique_name_ext_re(), "")) + + jcolor = compareColors[tracker] + + histoName = ( + "Track/" + + folder + + tracker + + "/" + + cut + + "_" + + "" + + efficiencyHistoDict[histo]["variable"] + ) + print( + "not electrons: " + histoName.replace(unique_name_ext_re(), "") + ) + eff = {} + hist_den = {} + eff, hist_den = get_eff(eff, hist_den, tf, histoName, label, histo) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + histoNameElec = ( + "Track/" + + folder + + tracker + + "/" + + categories[tracker][cut]["Electrons"] + ) + histoName_e = ( + histoNameElec + "_" + efficiencyHistoDict[histo]["variable"] + ) + print( + "electrons: " + + histoName_e.replace(unique_name_ext_re(), "") + ) + eff_elec = {} + hist_elec = {} + eff_elec, hist_elec = get_eff( + eff_elec, + hist_elec, + tf, + histoName_e, + label, + histo, + ) + if First: + dist_eff_elec = eff_elec + dist_hist_elec = hist_elec + + if First: + dist_tracker = tracker + dist_eff = eff + dist_hist_den = hist_den + First = False + + seeditr = 0 + for i, lab in enumerate(label): + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + if (tracker == "Seed") and (seeditr != 0): + continue + if tracker == "Seed": + seeditr += 1 + mg.Add(eff_elec[lab]) + set_style( + eff_elec[lab], + colors[jcolor], + markers[i + markeritr], + styles[i], + ) + else: + mg.Add(eff_elec[lab]) + set_style( + eff_elec[lab], + elec_colors[jcolor + markeritr], + markers[i + markeritr], + styles[i], + ) + markeritr = markeritr + 1 + # set_style( + # eff_elec[lab], colors[jcolor], markers[i], styles[i] + # ) + markeritr = 0 + + mg.Draw("AP") + mg.GetYaxis().SetRangeUser(0, 1.05) + xtitle = efficiencyHistoDict[histo]["xTitle"] + unit_l = xtitle.split("[") + if "]" in unit_l[-1]: + unit = unit_l[-1].replace("]", "") + else: + unit = "a.u." + print(unit) + mg.GetXaxis().SetTitle(xtitle) + mg.GetXaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitle( + "Efficiency of Long Tracks", + ) # (" + str(round(hist_den[label[0]].GetBinWidth(1), 2)) + f"{unit})"+"^{-1}") + mg.GetYaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleOffset(1.1) + mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) + mg.GetXaxis().SetNdivisions(10, 5, 0) + mygray = 16 + myblue = kBlue - 7 + + dist_cut = compareDict[jcut][dist_tracker] + + for i, lab in enumerate(label): + rightmax = 1.05 * dist_hist_den[lab].GetMaximum() + scale = gPad.GetUymax() / rightmax + dist_hist_den[lab].Scale(scale) + if ( + categories[dist_tracker][dist_cut]["plotElectrons"] + and plot_electrons + ): + rightmax = 1.05 * dist_hist_elec[lab].GetMaximum() + scale = gPad.GetUymax() / rightmax + dist_hist_elec[lab].Scale(scale) + if i == len(label) - 1: + if not plot_electrons_only: + set_style(dist_hist_den[lab], mygray, markers[i], styles[i]) + # gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + dist_hist_den[lab].SetFillColorAlpha(mygray, 0.5) + dist_hist_den[lab].Draw("HIST PLC SAME") + if ( + categories[dist_tracker][dist_cut]["plotElectrons"] + and plot_electrons + ): + set_style( + dist_hist_elec[lab], mygray, markers[i], styles[i] + ) + # gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + # dist_hist_elec[lab].SetFillColor(myblue) + dist_hist_elec[lab].SetFillColorAlpha(myblue, 0.5) + dist_hist_elec[lab].Draw("HIST PLC SAME") + # else: + # print( + # "No distribution plotted for other labels.", + # "Can be added by uncommenting the code below this print statement.", + # ) + # set_style(dist_hist_den[lab], mygray, markers[i], styles[i]) + # gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + # dist_hist_den[lab].Draw("HIST PLC SAME") + + if histo == "p": + pos = [0.5, 0.3, 1.0, 0.5] # [0.53, 0.4, 1.01, 0.71] + elif histo == "pt": + pos = [0.5, 0.3, 0.99, 0.5] # [0.5, 0.4, 0.98, 0.71] + elif histo == "phi": + pos = [0.4, 0.3, 0.9, 0.5] + elif histo == "eta": + pos = [0.5, 0.25, 1.0, 0.45] + else: + pos = [0.35, 0.25, 0.85, 0.45] + legend = place_legend( + canvas, *pos, header="LHCb Simulation", option="LPE" + ) + for le in legend.GetListOfPrimitives(): + if "distribution" in le.GetLabel(): + le.SetOption("LF") + legend.SetTextFont(132) + legend.SetTextSize(0.04) + legend.Draw() + for lab in label: + if not plot_electrons_only: + dist_eff[lab].Draw("P SAME") + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + dist_eff_elec[lab].Draw("P SAME") + cutName = categories[tracker][cut]["title"] + latex.DrawLatex(legend.GetX1() + 0.01, legend.GetY1() - 0.05, cutName) + low = 0 + high = 1.05 + gPad.Update() + axis = TGaxis( + gPad.GetUxmax(), + gPad.GetUymin(), + gPad.GetUxmax(), + gPad.GetUymax(), + low, + high, + 510, + "+U", + ) + axis.SetTitleFont(132) + axis.SetTitleSize(0.06) + axis.SetTitleOffset(0.55) + axis.SetTitle( + "# Tracks " + get_nicer_var_string(histo) + " distribution [a.u.]", + ) + axis.SetLabelSize(0) + axis.Draw() + canvas.RedrawAxis() + if savepdf: + filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] + for ftype in filestypes: + if not plot_electrons_only: + canvasName = "Compare_" + cut + "_" + histo + "." + ftype + else: + canvasName = ( + "Compare_Electrons_" + cut + "_" + histo + "." + ftype + ) + canvas.SaveAs("checks/" + canvasName) + # canvas.SetRightMargin(0.05) + canvas.Write() + + # # calculate ghost rate + # for histo in ghostHistos: # [p, pt, eta, nPV] + # canvastitle = "ghost_rate_vs_" + histo + "_" + jcut + # name = "ghost_rate_vs_" + histo + "_" + jcut + # canvas = TCanvas(name, canvastitle) + # canvas.SetRightMargin(0.1) + # mg = TMultiGraph() + outputfile.cd() + + outputfile.Write() + outputfile.Close() + + +if __name__ == "__main__": + parser = argument_parser() + args = parser.parse_args() + PrCheckerEfficiency(**vars(args)) diff --git a/scripts/CompareResidualEfficiency.py b/scripts/CompareResidualEfficiency.py new file mode 100644 index 0000000..494ce86 --- /dev/null +++ b/scripts/CompareResidualEfficiency.py @@ -0,0 +1,787 @@ +# Script for accessing histograms of reconstructible and +# reconstructed tracks for different tracking categories +# created by hlt1_reco_baseline_with_mcchecking +# +# The efficency is calculated usig TGraphAsymmErrors +# and Bayesian error bars +# +# author: Furkan Cetin +# date: 10/2023 +# +# flake8: noqa +# +# Takes data from Recent_get_resolution_and_eff_data.py and calculates efficiencies +# python scripts/CompareResidualEfficiency.py --filename data/resolutions_and_effs_B_residual.root data/resolutions_and_effs_B.root +# --trackers BestLong --label Residual Normal --outfile data/compare_effs_B_residual.root +# + +import os, sys +import argparse +from ROOT import TMultiGraph, TLatex, TCanvas, TFile, TGaxis +from ROOT import kGreen, kBlue, kBlack, kAzure, kGray, kOrange, kMagenta, kCyan +from ROOT import gROOT, gStyle, gPad +from ROOT import TEfficiency +from array import array + + +gROOT.SetBatch(True) + +from utils.components import unique_name_ext_re, findRootObjByName + + +def getEfficiencyHistoNames(): + return ["p", "pt", "phi", "eta", "nPV"] + + +def getTrackers(trackers): + return trackers + + +def getCompCuts(compare_cuts): + return compare_cuts + + +# data/resolutions_and_effs_Bd2KstEE_MDmaster.root:Track/... +def getOriginFolders(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "Match": {}, + "BestLong": {}, + "Seed": {}, + } + # evtl anpassen wenn die folders anders heissen + basedict["Velo"]["folder"] = "VeloTrackChecker/" + basedict["Upstream"]["folder"] = "UpstreamTrackChecker/" + basedict["Forward"]["folder"] = "ForwardTrackChecker" + unique_name_ext_re() + "/" + basedict["Match"]["folder"] = "MatchTrackChecker" + unique_name_ext_re() + "/" + basedict["BestLong"]["folder"] = "BestLongTrackChecker" + unique_name_ext_re() + "/" + basedict["Seed"]["folder"] = "SeedTrackChecker" + unique_name_ext_re() + "/" + + return basedict + + +def getTrackNames(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "Match": {}, + "BestLong": {}, + "Seed": {}, + } + + basedict["Velo"] = "Velo" + basedict["Upstream"] = "VeloUT" + basedict["Forward"] = "Forward" + basedict["Match"] = "Match" + basedict["BestLong"] = "BestLong" + basedict["Seed"] = "Seed" + return basedict + + +def get_colors(): + return [ + kBlack, + kAzure, + kGreen + 2, + kMagenta + 1, + kOrange, + kCyan + 2, + kBlack, + kAzure, + kGreen + 3, + kMagenta + 2, + kOrange, + kCyan + 2, + ] + + +def get_markers(): + return [20, 21, 24, 25, 22, 23, 26, 32] + + +def get_fillstyles(): + return [1003, 3001, 3002, 3325, 3144, 3244, 3444] + + +def getGhostHistoNames(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "Match": {}, + "BestLong": {}, + "Seed": {}, + } + + basedict["Velo"] = ["eta", "nPV"] + basedict["Upstream"] = ["eta", "p", "pt", "nPV"] + basedict["Forward"] = ["eta", "p", "pt", "nPV"] + basedict["Match"] = ["eta", "p", "pt", "nPV"] + basedict["BestLong"] = ["eta", "p", "pt", "nPV"] + basedict["Seed"] = ["eta", "p", "pt", "nPV"] + + return basedict + + +def argument_parser(): + parser = argparse.ArgumentParser(description="location of the tuple file") + parser.add_argument( + "--filename", + type=str, + default=["data/resolutions_and_effs_B.root"], + nargs="+", + help="input files, including path", + ) + parser.add_argument( + "--outfile", + type=str, + default="data/compare_efficiency.root", + help="output file", + ) + parser.add_argument( + "--trackers", + type=str, + nargs="+", + default=["Forward", "Match", "BestLong", "Seed"], # --- + help="Trackers to plot.", + ) + parser.add_argument( + "--label", + nargs="+", + default=["Eff"], + help="label for files", + ) + parser.add_argument( + "--savepdf", + action="store_true", + help="save plots in pdf format", + ) + parser.add_argument( + "--compare", + default=True, + action="store_true", + help="compare efficiencies", + ) + parser.add_argument( + "--compare-cuts", + type=str, + nargs="+", + default=["long", "long_fromB", "long_fromB_P>5GeV"], + help="which cuts get compared", + ) + parser.add_argument( + "--plot-electrons", + default=True, + action="store_true", + help="plot electrons", + ) + parser.add_argument( + "--plot-electrons-only", + action="store_true", + help="plot only electrons", + ) + return parser + + +def get_files(tf, filename, label): + for i, f in enumerate(filename): + tf[label[i]] = TFile(f, "read") + return tf + + +def get_nicer_var_string(var: str): + nice_vars = dict(pt="p_{T}", eta="#eta", phi="#phi") + try: + return nice_vars[var] + except KeyError: + return var + + +def get_eff(eff, hist, tf, histoName, label, var): + eff = {} + hist = {} + var = get_nicer_var_string(var) + for i, lab in enumerate(label): + numeratorName = histoName + "_reconstructed" + numerator = findRootObjByName(tf[lab], numeratorName) + # numerator = tf[lab].Get(numeratorName) + denominatorName = histoName + "_reconstructible" + denominator = findRootObjByName(tf[lab], denominatorName) + # denominator = tf[lab].Get(denominatorName) + if numerator.GetEntries() == 0 or denominator.GetEntries() == 0: + continue + + teff = TEfficiency(numerator, denominator) + teff.SetStatisticOption(7) + # print("TBetaAlpha: "+ str(teff.GetBetaAlpha())) + # print("TBetaBeta: "+ str(teff.GetBetaBeta())) + eff[lab] = teff.CreateGraph() + eff[lab].SetName(lab) + eff[lab].SetTitle(lab) + if histoName.find("Forward") != -1: + if histoName.find("electron") != -1: + eff[lab].SetTitle(lab + " Forward, e^{-}") + else: + eff[lab].SetTitle(lab + " Forward") + elif histoName.find("Match") != -1: + if histoName.find("electron") != -1: + eff[lab].SetTitle(lab + " Match, e^{-}") + else: + eff[lab].SetTitle(lab + " Match") + elif histoName.find("Seed") != -1: + if histoName.find("electron") != -1: + eff[lab].SetTitle(lab + " Seed, e^{-}") + else: + eff[lab].SetTitle(lab + " Seed") + elif histoName.find("BestLong") != -1: + if histoName.find("electron") != -1: + eff[lab].SetTitle(lab + " BestLong, e^{-}") + else: + eff[lab].SetTitle(lab + " BestLong") + + # eff[lab].SetTitle(lab + " not e^{-}") + # if histoName.find("strange") != -1: + # eff[lab].SetTitle(lab + " from stranges") + # if histoName.find("electron") != -1: + # eff[lab].SetTitle(lab + " e^{-}") + + hist[lab] = denominator.Clone() + hist[lab].SetName("h_numerator_notElectrons") + hist[lab].SetTitle(var + " distribution, not e^{-}") + if histoName.find("strange") != -1: + hist[lab].SetTitle(var + " distribution, stranges") + if histoName.find("electron") != -1: + hist[lab].SetTitle(var + " distribution, e^{-}") + + return eff, hist + + +def get_ghost(eff, hist, tf, histoName, label): + ghost = {} + for i, lab in enumerate(label): + numeratorName = histoName + "_Ghosts" + denominatorName = histoName + "_Total" + numerator = findRootObjByName(tf[lab], numeratorName) + denominator = findRootObjByName(tf[lab], denominatorName) + # numerator = tf[lab].Get(numeratorName) + # denominator = tf[lab].Get(denominatorName) + print("Numerator = " + numeratorName) + print("Denominator = " + denominatorName) + teff = TEfficiency(numerator, denominator) + teff.SetStatisticOption(7) + ghost[lab] = teff.CreateGraph() + print(lab) + ghost[lab].SetName(lab) + + return ghost + + +def PrCheckerEfficiency( + filename, + outfile, + label, + trackers, + savepdf, + compare, + compare_cuts, + plot_electrons, + plot_electrons_only, +): + from utils.LHCbStyle import setLHCbStyle, set_style + from utils.ConfigHistos import ( + efficiencyHistoDict, + ghostHistoDict, + categoriesDict, + getCuts, + ) + from utils.CompareConfigHistos import getCompare, getCompColors + from utils.Legend import place_legend + + setLHCbStyle() + + markers = get_markers() + colors = get_colors() + styles = get_fillstyles() + + tf = {} + tf = get_files(tf, filename, label) + outputfile = TFile(outfile, "recreate") + + latex = TLatex() + latex.SetNDC() + latex.SetTextSize(0.05) + + efficiencyHistoDict = efficiencyHistoDict() + efficiencyHistos = getEfficiencyHistoNames() + ghostHistos = getGhostHistoNames() + ghostHistoDict = ghostHistoDict() + categories = categoriesDict() + cuts = getCuts() + compareDict = getCompare() + compareCuts = getCompCuts(compare_cuts) + compareColors = getCompColors() + trackers = getTrackers(trackers) + folders = getOriginFolders() + + for tracker in trackers: + outputfile.cd() + trackerDir = outputfile.mkdir(tracker) + trackerDir.cd() + + for cut in cuts[tracker]: + cutDir = trackerDir.mkdir(cut) + cutDir.cd() + folder = folders[tracker]["folder"] + print(folder) + histoBaseName = "Track/" + folder + tracker + "/" + cut + "_" + + # calculate efficiency + for histo in efficiencyHistos: + canvastitle = ( + "efficiency_" + histo + ", " + categories[tracker][cut]["title"] + ) + # get efficiency for not electrons category + histoName = histoBaseName + "" + efficiencyHistoDict[histo]["variable"] + print("not electrons: " + histoName) + eff = {} + hist_den = {} + eff, hist_den = get_eff(eff, hist_den, tf, histoName, label, histo) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + histoNameElec = ( + "Track/" + + folder + + tracker + + "/" + + categories[tracker][cut]["Electrons"] + ) + histoName_e = ( + histoNameElec + "_" + efficiencyHistoDict[histo]["variable"] + ) + print("electrons: " + histoName_e) + eff_elec = {} + hist_elec = {} + eff_elec, hist_elec = get_eff( + eff_elec, + hist_elec, + tf, + histoName_e, + label, + histo, + ) + name = "efficiency_" + histo + canvas = TCanvas(name, canvastitle) + canvas.SetRightMargin(0.1) + mg = TMultiGraph() + for i, lab in enumerate(label): + if not plot_electrons_only: + mg.Add(eff[lab]) + set_style(eff[lab], colors[i], markers[i], styles[i]) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + mg.Add(eff_elec[lab]) + set_style(eff_elec[lab], colors[i], markers[i + 2], styles[i]) + + mg.Draw("AP") + mg.GetYaxis().SetRangeUser(0, 1.05) + xtitle = efficiencyHistoDict[histo]["xTitle"] + unit_l = xtitle.split("[") + if "]" in unit_l[-1]: + unit = unit_l[-1].replace("]", "") + else: + unit = "" + print(unit) + mg.GetXaxis().SetTitle(xtitle) + mg.GetXaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitle( + "Efficiency of Long Tracks", + ) # (" + str(round(hist_den[label[0]].GetBinWidth(1), 2)) + f"{unit})"+"^{-1}") + mg.GetYaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleOffset(1.1) + mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) + mg.GetXaxis().SetNdivisions(10, 5, 0) + mygray = 18 + myblue = kBlue - 9 + for i, lab in enumerate(label): + rightmax = 1.05 * hist_den[lab].GetMaximum() + scale = gPad.GetUymax() / rightmax + hist_den[lab].Scale(scale) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + rightmax = 1.05 * hist_elec[lab].GetMaximum() + scale = gPad.GetUymax() / rightmax + hist_elec[lab].Scale(scale) + if i == 0: + if not plot_electrons_only: + set_style(hist_den[lab], mygray, markers[i], styles[i]) + gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + hist_den[lab].Draw("HIST PLC SAME") + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + set_style(hist_elec[lab], myblue, markers[i], styles[i]) + hist_elec[lab].SetFillColorAlpha(myblue, 0.35) + hist_elec[lab].Draw("HIST PLC SAME") + # else: + # print( + # "No distribution plotted for other labels.", + # "Can be added by uncommenting the code below this print statement.", + # ) + # set_style(hist_den[lab], mygray, markers[i], styles[i]) + # gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + # hist_den[lab].Draw("HIST PLC SAME") + + if histo == "p": + pos = [0.53, 0.4, 1.01, 0.71] + elif histo == "pt": + pos = [0.5, 0.4, 0.98, 0.71] + elif histo == "phi": + pos = [0.3, 0.3, 0.9, 0.6] + else: + pos = [0.4, 0.37, 0.88, 0.68] + legend = place_legend( + canvas, *pos, header="LHCb Simulation", option="LPE" + ) + for le in legend.GetListOfPrimitives(): + if "distribution" in le.GetLabel(): + le.SetOption("LF") + legend.SetTextFont(132) + legend.SetTextSize(0.04) + legend.Draw() + for lab in label: + if not plot_electrons_only: + eff[lab].Draw("P SAME") + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + eff_elec[lab].Draw("P SAME") + cutName = categories[tracker][cut]["title"] + latex.DrawLatex(legend.GetX1() + 0.01, legend.GetY1() - 0.05, cutName) + low = 0 + high = 1.05 + gPad.Update() + axis = TGaxis( + gPad.GetUxmax(), + gPad.GetUymin(), + gPad.GetUxmax(), + gPad.GetUymax(), + low, + high, + 510, + "+U", + ) + axis.SetTitleFont(132) + axis.SetTitleSize(0.06) + axis.SetTitleOffset(0.55) + axis.SetTitle( + "# Tracks " + get_nicer_var_string(histo) + " distribution [a.u.]", + ) + axis.SetLabelSize(0) + axis.Draw() + canvas.RedrawAxis() + if savepdf: + filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] + for ftype in filestypes: + if not plot_electrons_only: + canvasName = tracker + "_" + cut + "_" + histo + "." + ftype + else: + canvasName = ( + tracker + "Electrons_" + cut + "_" + histo + "." + ftype + ) + canvas.SaveAs("checks/" + canvasName) + # canvas.SetRightMargin(0.05) + canvas.Write() + + # calculate ghost rate + histoBaseName = "Track/" + folder + tracker + "/" + for histo in ghostHistos[tracker]: + trackerDir.cd() + title = "ghost_rate_vs_" + histo + + gPad.SetTicks() + histoName = histoBaseName + ghostHistoDict[histo]["variable"] + + ghost = {} + hist_den = {} + ghost = get_ghost(ghost, hist_den, tf, histoName, label) + canvas = TCanvas(title, title) + mg = TMultiGraph() + for i, lab in enumerate(label): + mg.Add(ghost[lab]) + set_style(ghost[lab], colors[i], markers[i], styles[i]) + + xtitle = ghostHistoDict[histo]["xTitle"] + mg.GetXaxis().SetTitle(xtitle) + mg.GetYaxis().SetTitle("Fraction of fake tracks") + mg.Draw("ap") + mg.GetXaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleOffset(1.1) + mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) + mg.GetXaxis().SetNdivisions(10, 5, 0) + # for lab in label: + # ghost[lab].Draw("P SAME") + if histo == "p": + pos = [0.53, 0.4, 1.00, 0.71] + elif histo == "pt": + pos = [0.5, 0.4, 0.98, 0.71] + elif histo == "eta": + pos = [0.35, 0.6, 0.85, 0.9] + elif histo == "phi": + pos = [0.3, 0.3, 0.9, 0.6] + else: + pos = [0.4, 0.37, 0.80, 0.68] + legend = place_legend(canvas, *pos, header="LHCb Simulation", option="LPE") + legend.SetTextFont(132) + legend.SetTextSize(0.04) + legend.Draw() + # if histo != "nPV": + # latex.DrawLatex(0.7, 0.85, "LHCb simulation") + # else: + # latex.DrawLatex(0.2, 0.85, "LHCb simulation") + # mg.GetYaxis().SetRangeUser(0, 0.4) + if histo == "eta": + mg.GetYaxis().SetRangeUser(0, 0.4) + # track_name = names[tracker] + " tracks" + # latex.DrawLatex(0.7, 0.75, track_name) + # canvas.PlaceLegend() + if savepdf: + filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] + for ftype in filestypes: + canvas.SaveAs( + "checks/" + tracker + "ghost_rate_" + histo + "." + ftype, + ) + canvas.Write() + + # + # Compare electron efficiencies of different trackers + # + + plot_electrons_only = True + if compare: + print("\nCompare Efficiencies: ") + outputfile.cd() + compareDir = outputfile.mkdir("CompareEff") + compareDir.cd() + for jcut in compareCuts: # [long, long_fromB, long_fromB_P>5GeV] + for histo in efficiencyHistos: # [p, pt, phi, eta, nPV] + canvastitle = "efficiency_" + histo + "_" + jcut + name = "efficiency_" + histo + "_" + jcut + canvas = TCanvas(name, canvastitle) + canvas.SetRightMargin(0.1) + mg = TMultiGraph() + dist_eff = {} + dist_hist_den = {} + dist_eff_elec = {} + dist_hist_elec = {} + First = True + dist_tracker = "" + markeritr = 0 + + for tracker in trackers: # [BestLong, Forward, Match, Seed] + cut = compareDict[jcut][tracker] + folder = folders[tracker]["folder"] + print(folder) + + jcolor = compareColors[tracker] + + histoName = ( + "Track/" + + folder + + tracker + + "/" + + cut + + "_" + + "" + + efficiencyHistoDict[histo]["variable"] + ) + print("not electrons: " + histoName) + eff = {} + hist_den = {} + eff, hist_den = get_eff(eff, hist_den, tf, histoName, label, histo) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + histoNameElec = ( + "Track/" + + folder + + tracker + + "/" + + categories[tracker][cut]["Electrons"] + ) + histoName_e = ( + histoNameElec + "_" + efficiencyHistoDict[histo]["variable"] + ) + print("electrons: " + histoName_e) + eff_elec = {} + hist_elec = {} + eff_elec, hist_elec = get_eff( + eff_elec, + hist_elec, + tf, + histoName_e, + label, + histo, + ) + if First: + dist_eff_elec = eff_elec + dist_hist_elec = hist_elec + + if First: + dist_tracker = tracker + dist_eff = eff + dist_hist_den = hist_den + First = False + + for i, lab in enumerate(label): + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + mg.Add(eff_elec[lab]) + set_style( + eff_elec[lab], + colors[jcolor + i], + markers[i + markeritr], + styles[i], + ) + markeritr = markeritr + 1 + # set_style( + # eff_elec[lab], colors[jcolor], markers[i], styles[i] + # ) + markeritr = 0 + + mg.Draw("AP") + mg.GetYaxis().SetRangeUser(0, 1.05) + xtitle = efficiencyHistoDict[histo]["xTitle"] + unit_l = xtitle.split("[") + if "]" in unit_l[-1]: + unit = unit_l[-1].replace("]", "") + else: + unit = "" + print(unit) + mg.GetXaxis().SetTitle(xtitle) + mg.GetXaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitle( + "Efficiency of Long Tracks", + ) # (" + str(round(hist_den[label[0]].GetBinWidth(1), 2)) + f"{unit})"+"^{-1}") + mg.GetYaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleOffset(1.1) + mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) + mg.GetXaxis().SetNdivisions(10, 5, 0) + mygray = 16 + myblue = kBlue - 7 + + dist_cut = compareDict[jcut][dist_tracker] + + for i, lab in enumerate(label): + rightmax = 1.05 * dist_hist_den[lab].GetMaximum() + scale = gPad.GetUymax() / rightmax + dist_hist_den[lab].Scale(scale) + if ( + categories[dist_tracker][dist_cut]["plotElectrons"] + and plot_electrons + ): + rightmax = 1.05 * dist_hist_elec[lab].GetMaximum() + scale = gPad.GetUymax() / rightmax + dist_hist_elec[lab].Scale(scale) + if i == len(label) - 1: + if not plot_electrons_only: + set_style(dist_hist_den[lab], mygray, markers[i], styles[i]) + # gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + dist_hist_den[lab].SetFillColorAlpha(mygray, 0.5) + dist_hist_den[lab].Draw("HIST PLC SAME") + if ( + categories[dist_tracker][dist_cut]["plotElectrons"] + and plot_electrons + ): + set_style( + dist_hist_elec[lab], mygray, markers[i], styles[i] + ) + # gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + # dist_hist_elec[lab].SetFillColor(myblue) + dist_hist_elec[lab].SetFillColorAlpha(myblue, 0.5) + dist_hist_elec[lab].Draw("HIST PLC SAME") + # else: + # print( + # "No distribution plotted for other labels.", + # "Can be added by uncommenting the code below this print statement.", + # ) + # set_style(dist_hist_den[lab], mygray, markers[i], styles[i]) + # gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + # dist_hist_den[lab].Draw("HIST PLC SAME") + + if histo == "p": + pos = [0.53, 0.4, 1.01, 0.71] + elif histo == "pt": + pos = [0.5, 0.4, 0.98, 0.71] + elif histo == "phi": + pos = [0.3, 0.3, 0.9, 0.6] + else: + pos = [0.4, 0.37, 0.88, 0.68] + legend = place_legend( + canvas, *pos, header="LHCb Simulation", option="LPE" + ) + for le in legend.GetListOfPrimitives(): + if "distribution" in le.GetLabel(): + le.SetOption("LF") + legend.SetTextFont(132) + legend.SetTextSize(0.04) + legend.Draw() + for lab in label: + if not plot_electrons_only: + dist_eff[lab].Draw("P SAME") + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + dist_eff_elec[lab].Draw("P SAME") + cutName = categories[tracker][cut]["title"] + latex.DrawLatex(legend.GetX1() + 0.01, legend.GetY1() - 0.05, cutName) + low = 0 + high = 1.05 + gPad.Update() + axis = TGaxis( + gPad.GetUxmax(), + gPad.GetUymin(), + gPad.GetUxmax(), + gPad.GetUymax(), + low, + high, + 510, + "+U", + ) + axis.SetTitleFont(132) + axis.SetTitleSize(0.06) + axis.SetTitleOffset(0.55) + axis.SetTitle( + "# Tracks " + get_nicer_var_string(histo) + " distribution [a.u.]", + ) + axis.SetLabelSize(0) + axis.Draw() + canvas.RedrawAxis() + if savepdf: + filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] + for ftype in filestypes: + if not plot_electrons_only: + canvasName = ( + "Compare_" + + tracker + + "_" + + cut + + "_" + + histo + + "." + + ftype + ) + else: + canvasName = ( + "Compare_" + + tracker + + "Electrons_" + + cut + + "_" + + histo + + "." + + ftype + ) + canvas.SaveAs("checks/" + canvasName) + # canvas.SetRightMargin(0.05) + canvas.Write() + + outputfile.Write() + outputfile.Close() + + +if __name__ == "__main__": + parser = argument_parser() + args = parser.parse_args() + PrCheckerEfficiency(**vars(args)) diff --git a/scripts/MyPrCheckerEfficiency.py b/scripts/MyPrCheckerEfficiency.py new file mode 100644 index 0000000..169c513 --- /dev/null +++ b/scripts/MyPrCheckerEfficiency.py @@ -0,0 +1,520 @@ +# flake8: noqa + +""" +Takes data from Recent_get_resolution_and_eff_data.py and calculates efficiencies + + +python scripts/MyPrCheckerEfficiency.py --filename data/resolutions_and_effs_B_normal_weights.root data/resolutions_and_effs_B_electron_weights.root +--outfile data_results/PrCheckerNormalElectron.root --label normal electron --trackers Match BestLong + +python scripts/MyPrCheckerEfficiency.py --filename data/resolutions_and_effs_D_electron_weights.root --outfile data_results/PrCheckerDElectron.root + +""" + +import argparse +from ROOT import TMultiGraph, TLatex, TCanvas, TFile, TGaxis +from ROOT import ( + kGreen, + kBlue, + kBlack, + kAzure, + kOrange, + kMagenta, + kCyan, + kGray, + kViolet, + kTeal, +) +from ROOT import gROOT, gStyle, gPad +from ROOT import TEfficiency +from array import array + + +gROOT.SetBatch(True) + +from utils.components import unique_name_ext_re, findRootObjByName + + +def getEfficiencyHistoNames(): + return ["p", "pt", "phi", "eta", "nPV"] + + +def getTrackers(trackers): + return trackers + + +# data/resolutions_and_effs_Bd2KstEE_MDmaster.root:Track/... +def getOriginFolders(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "Match": {}, + "BestLong": {}, + "Seed": {}, + } + # evtl anpassen wenn die folders anders heissen + basedict["Velo"]["folder"] = "VeloTrackChecker/" + basedict["Upstream"]["folder"] = "UpstreamTrackChecker/" + basedict["Forward"]["folder"] = "ForwardTrackChecker" + unique_name_ext_re() + "/" + basedict["Match"]["folder"] = "MatchTrackChecker" + unique_name_ext_re() + "/" + basedict["BestLong"]["folder"] = "BestLongTrackChecker" + unique_name_ext_re() + "/" + basedict["Seed"]["folder"] = "SeedTrackChecker" + unique_name_ext_re() + "/" + + # basedict["Forward"]["folder"] = "ForwardTrackChecker_7a0dbfa7/" + # basedict["Match"]["folder"] = "MatchTrackChecker_29e3152a/" + # basedict["BestLong"]["folder"] = "BestLongTrackChecker_4ddacce1/" + # basedict["Seed"]["folder"] = "SeedTrackChecker_1b1d5575/" + + return basedict + + +def getTrackNames(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "Match": {}, + "BestLong": {}, + "Seed": {}, + } + + basedict["Velo"] = "Velo" + basedict["Upstream"] = "VeloUT" + basedict["Forward"] = "Forward" + basedict["Match"] = "Match" + basedict["BestLong"] = "BestLong" + basedict["Seed"] = "Seed" + return basedict + + +def get_colors(): + # [kBlack, kGreen + 3, kAzure, kMagenta + 2, kOrange, kCyan + 2] + return [kBlack, kAzure, kGreen + 3, kMagenta + 2, kOrange, kCyan + 2] + + +def get_elec_colors(): + # [kBlack, kGreen + 3, kAzure, kMagenta + 2, kOrange, kCyan + 2] + return [kGray + 2, kBlue - 7, kGreen + 1, kViolet, kOrange - 3, kTeal - 1] + + +def get_markers(): + # [20, 24, 21, 22, 23, 25] + return [20, 21, 24, 25, 22, 23, 26, 32] + + +def get_fillstyles(): + return [1003, 3001, 3002, 3325, 3144, 3244, 3444] + + +def getGhostHistoNames(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "Match": {}, + "BestLong": {}, + "Seed": {}, + } + + basedict["Velo"] = ["eta", "nPV"] + basedict["Upstream"] = ["eta", "p", "pt", "nPV"] + basedict["Forward"] = ["eta", "p", "pt", "nPV"] + basedict["Match"] = ["eta", "p", "pt", "nPV"] + basedict["BestLong"] = ["eta", "p", "pt", "nPV"] + basedict["Seed"] = ["eta", "p", "pt", "nPV"] + + return basedict + + +def argument_parser(): + parser = argparse.ArgumentParser(description="location of the tuple file") + parser.add_argument( + "--filename", + type=str, + default=["data/resolutions_and_effs_B.root"], + nargs="+", + help="input files, including path", + ) + parser.add_argument( + "--outfile", + type=str, + default="data_results/efficiency_plots.root", + help="output file", + ) + parser.add_argument( + "--trackers", + type=str, + nargs="+", + default=["Forward", "Match", "BestLong", "Seed"], # --- + help="Trackers to plot.", + ) + parser.add_argument( + "--label", + nargs="+", + default=["EffChecker"], + help="label for files", + ) + parser.add_argument( + "--savepdf", + action="store_true", + help="save plots in pdf format", + ) + parser.add_argument( + "--plot-electrons", + action="store_true", + default=True, + help="plot electrons", + ) + parser.add_argument( + "--plot-electrons-only", + action="store_true", + help="plot only electrons", + ) + return parser + + +def get_files(tf, filename, label): + for i, f in enumerate(filename): + tf[label[i]] = TFile(f, "read") + return tf + + +def get_nicer_var_string(var: str): + nice_vars = dict(pt="p_{T}", eta="#eta", phi="#phi") + try: + return nice_vars[var] + except KeyError: + return var + + +def get_eff(eff, hist, tf, histoName, label, var): + eff = {} + hist = {} + var = get_nicer_var_string(var) + for i, lab in enumerate(label): + numeratorName = histoName + "_reconstructed" + numerator = findRootObjByName(tf[lab], numeratorName) + denominatorName = histoName + "_reconstructible" + denominator = findRootObjByName(tf[lab], denominatorName) + if numerator.GetEntries() == 0 or denominator.GetEntries() == 0: + continue + + teff = TEfficiency(numerator, denominator) + teff.SetStatisticOption(7) + eff[lab] = teff.CreateGraph() + eff[lab].SetName(lab) + eff[lab].SetTitle(lab + " not e^{-}") + if histoName.find("strange") != -1: + eff[lab].SetTitle(lab + " from stranges") + if histoName.find("electron") != -1: + eff[lab].SetTitle(lab + " e^{-}") + + hist[lab] = denominator.Clone() + hist[lab].SetName("h_numerator_notElectrons") + hist[lab].SetTitle(var + " distribution, not e^{-}") + if histoName.find("strange") != -1: + hist[lab].SetTitle(var + " distribution, stranges") + if histoName.find("electron") != -1: + hist[lab].SetTitle(var + " distribution, e^{-}") + + return eff, hist + + +def get_ghost(eff, hist, tf, histoName, label): + ghost = {} + for i, lab in enumerate(label): + numeratorName = histoName + "_Ghosts" + denominatorName = histoName + "_Total" + numerator = findRootObjByName(tf[lab], numeratorName) + denominator = findRootObjByName(tf[lab], denominatorName) + print("Numerator = " + numeratorName.replace(unique_name_ext_re(), "")) + print("Denominator = " + denominatorName.replace(unique_name_ext_re(), "")) + teff = TEfficiency(numerator, denominator) + teff.SetStatisticOption(7) + ghost[lab] = teff.CreateGraph() + print(lab) + ghost[lab].SetName(lab) + + return ghost + + +def PrCheckerEfficiency( + filename, + outfile, + label, + trackers, + savepdf, + plot_electrons, + plot_electrons_only, +): + from utils.LHCbStyle import setLHCbStyle, set_style + from utils.ConfigHistos import ( + efficiencyHistoDict, + ghostHistoDict, + categoriesDict, + getCuts, + ) + from utils.Legend import place_legend + + # from utils.components import unique_name_ext_re, findRootObjByName + + setLHCbStyle() + + markers = get_markers() + colors = get_colors() + elec_colors = get_elec_colors() + styles = get_fillstyles() + + tf = {} + tf = get_files(tf, filename, label) + outputfile = TFile(outfile, "recreate") + + latex = TLatex() + latex.SetNDC() + latex.SetTextSize(0.05) + + efficiencyHistoDict = efficiencyHistoDict() + efficiencyHistos = getEfficiencyHistoNames() + ghostHistos = getGhostHistoNames() + ghostHistoDict = ghostHistoDict() + categories = categoriesDict() + cuts = getCuts() + trackers = getTrackers(trackers) + folders = getOriginFolders() + # names = getTrackNames() + + for tracker in trackers: + outputfile.cd() + trackerDir = outputfile.mkdir(tracker) + trackerDir.cd() + + for cut in cuts[tracker]: + cutDir = trackerDir.mkdir(cut) + cutDir.cd() + folder = folders[tracker]["folder"] + print("folder: " + folder.replace(unique_name_ext_re(), "")) + histoBaseName = "Track/" + folder + tracker + "/" + cut + "_" + + # calculate efficiency + for histo in efficiencyHistos: + canvastitle = ( + "efficiency_" + histo + ", " + categories[tracker][cut]["title"] + ) + # get efficiency for not electrons category + histoName = histoBaseName + "" + efficiencyHistoDict[histo]["variable"] + print("not electrons: " + histoName.replace(unique_name_ext_re(), "")) + eff = {} + hist_den = {} + eff, hist_den = get_eff(eff, hist_den, tf, histoName, label, histo) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + histoNameElec = ( + "Track/" + + folder + + tracker + + "/" + + categories[tracker][cut]["Electrons"] + ) + histoName_e = ( + histoNameElec + "_" + efficiencyHistoDict[histo]["variable"] + ) + print("electrons: " + histoName_e.replace(unique_name_ext_re(), "")) + eff_elec = {} + hist_elec = {} + eff_elec, hist_elec = get_eff( + eff_elec, + hist_elec, + tf, + histoName_e, + label, + histo, + ) + name = "efficiency_" + histo + canvas = TCanvas(name, canvastitle) + canvas.SetRightMargin(0.1) + mg = TMultiGraph() + for i, lab in enumerate(label): + if not plot_electrons_only: + mg.Add(eff[lab]) + set_style(eff[lab], colors[i], markers[i], styles[i]) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + mg.Add(eff_elec[lab]) + set_style(eff_elec[lab], elec_colors[i], markers[i], styles[i]) + + mg.Draw("AP") + mg.GetYaxis().SetRangeUser(0, 1.05) + xtitle = efficiencyHistoDict[histo]["xTitle"] + unit_l = xtitle.split("[") + if "]" in unit_l[-1]: + unit = unit_l[-1].replace("]", "") + else: + unit = "a.u." + print(unit) + mg.GetXaxis().SetTitle(xtitle) + mg.GetXaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitle( + "Efficiency of Long Tracks", + ) # (" + str(round(hist_den[label[0]].GetBinWidth(1), 2)) + f"{unit})"+"^{-1}") + mg.GetYaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleOffset(1.1) + mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) + mg.GetXaxis().SetNdivisions(10, 5, 0) + mygray = 18 + myblue = kBlue - 9 + for i, lab in enumerate(label): + rightmax = 1.05 * hist_den[lab].GetMaximum() + scale = gPad.GetUymax() / rightmax + hist_den[lab].Scale(scale) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + rightmax = 1.05 * hist_elec[lab].GetMaximum() + scale = gPad.GetUymax() / rightmax + hist_elec[lab].Scale(scale) + if i == 0: + if not plot_electrons_only: + set_style(hist_den[lab], mygray, markers[i], styles[i]) + gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + hist_den[lab].Draw("HIST PLC SAME") + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + set_style(hist_elec[lab], myblue, markers[i], styles[i]) + hist_elec[lab].SetFillColorAlpha(myblue, 0.35) + hist_elec[lab].Draw("HIST PLC SAME") + # else: + # print( + # "No distribution plotted for other labels.", + # "Can be added by uncommenting the code below this print statement.", + # ) + # set_style(hist_den[lab], mygray, markers[i], styles[i]) + # gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + # hist_den[lab].Draw("HIST PLC SAME") + + if histo == "p": + pos = [0.5, 0.3, 1.0, 0.5] # [0.53, 0.4, 1.01, 0.71] + elif histo == "pt": + pos = [0.5, 0.3, 0.99, 0.5] # [0.5, 0.4, 0.98, 0.71] + elif histo == "phi": + pos = [0.4, 0.3, 0.9, 0.5] + elif histo == "eta": + pos = [0.5, 0.25, 1.0, 0.45] + else: + pos = [0.35, 0.25, 0.85, 0.45] + legend = place_legend( + canvas, *pos, header="LHCb Simulation", option="LPE" + ) + for le in legend.GetListOfPrimitives(): + if "distribution" in le.GetLabel(): + le.SetOption("LF") + legend.SetTextFont(132) + legend.SetTextSize(0.04) + legend.Draw() + for lab in label: + if not plot_electrons_only: + eff[lab].Draw("P SAME") + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + eff_elec[lab].Draw("P SAME") + cutName = categories[tracker][cut]["title"] + latex.DrawLatex(legend.GetX1() + 0.01, legend.GetY1() - 0.05, cutName) + low = 0 + high = 1.05 + gPad.Update() + axis = TGaxis( + gPad.GetUxmax(), + gPad.GetUymin(), + gPad.GetUxmax(), + gPad.GetUymax(), + low, + high, + 510, + "+U", + ) + axis.SetTitleFont(132) + axis.SetTitleSize(0.06) + axis.SetTitleOffset(0.55) + axis.SetTitle( + "# Tracks " + get_nicer_var_string(histo) + " distribution [a.u.]", + ) + axis.SetLabelSize(0) + axis.Draw() + canvas.RedrawAxis() + if savepdf: + filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] + for ftype in filestypes: + if not plot_electrons_only: + canvasName = tracker + "_" + cut + "_" + histo + "." + ftype + else: + canvasName = ( + tracker + "Electrons_" + cut + "_" + histo + "." + ftype + ) + canvas.SaveAs("checks/" + canvasName) + # canvas.SetRightMargin(0.05) + canvas.Write() + + # calculate ghost rate + print("\ncalculate ghost rate: ") + histoBaseName = "Track/" + folder + tracker + "/" + for histo in ghostHistos[tracker]: + trackerDir.cd() + title = "ghost_rate_vs_" + histo + + gPad.SetTicks() + histoName = histoBaseName + ghostHistoDict[histo]["variable"] + + ghost = {} + hist_den = {} + ghost = get_ghost(ghost, hist_den, tf, histoName, label) + canvas = TCanvas(title, title) + mg = TMultiGraph() + for i, lab in enumerate(label): + mg.Add(ghost[lab]) + set_style(ghost[lab], colors[i], markers[2 * i], styles[i]) + + xtitle = ghostHistoDict[histo]["xTitle"] + mg.GetXaxis().SetTitle(xtitle) + mg.GetYaxis().SetTitle("Fraction of fake tracks") + mg.Draw("ap") + mg.GetXaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleOffset(1.1) + mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) + mg.GetXaxis().SetNdivisions(10, 5, 0) + # for lab in label: + # ghost[lab].Draw("P SAME") + if histo == "p": + pos = [0.53, 0.4, 1.00, 0.71] + elif histo == "pt": + pos = [0.5, 0.4, 0.98, 0.71] + elif histo == "eta": + pos = [0.35, 0.6, 0.85, 0.9] + elif histo == "phi": + pos = [0.3, 0.3, 0.9, 0.6] + else: + pos = [0.4, 0.37, 0.80, 0.68] + legend = place_legend(canvas, *pos, header="LHCb Simulation", option="LPE") + legend.SetTextFont(132) + legend.SetTextSize(0.04) + legend.Draw() + # if histo != "nPV": + # latex.DrawLatex(0.7, 0.85, "LHCb simulation") + # else: + # latex.DrawLatex(0.2, 0.85, "LHCb simulation") + # mg.GetYaxis().SetRangeUser(0, 0.4) + if histo == "eta": + mg.GetYaxis().SetRangeUser(0, 0.4) + # track_name = names[tracker] + " tracks" + # latex.DrawLatex(0.7, 0.75, track_name) + # canvas.PlaceLegend() + if savepdf: + filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] + for ftype in filestypes: + canvas.SaveAs( + "checks/" + tracker + "ghost_rate_" + histo + "." + ftype, + ) + canvas.Write() + + outputfile.Write() + outputfile.Close() + + +if __name__ == "__main__": + parser = argument_parser() + args = parser.parse_args() + PrCheckerEfficiency(**vars(args)) diff --git a/scripts/ResidualPrCheckerEfficiency.py b/scripts/ResidualPrCheckerEfficiency.py new file mode 100644 index 0000000..edfd13e --- /dev/null +++ b/scripts/ResidualPrCheckerEfficiency.py @@ -0,0 +1,500 @@ +# flake8: noqa +# +# Takes data from Recent_get_resolution_and_eff_data.py and calculates efficiencies +# +# python scripts/ResidualPrCheckerEfficiency.py +# --filename data/resolutions_and_effs_B.root +# --trackers Match --outfile data/compare_effs.root +# + + +import argparse +from ROOT import TMultiGraph, TLatex, TCanvas, TFile, TGaxis +from ROOT import kGreen, kBlue, kBlack, kAzure, kOrange, kMagenta, kCyan +from ROOT import gROOT, gStyle, gPad +from ROOT import TEfficiency +from array import array + + +gROOT.SetBatch(True) + +from utils.components import unique_name_ext_re, findRootObjByName + + +def getEfficiencyHistoNames(): + return ["p", "pt", "phi", "eta", "nPV"] + + +def getTrackers(trackers): + return trackers + + +# data/resolutions_and_effs_B.root:Track/... +def getOriginFolders(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "Match": {}, + "BestLong": {}, + "Seed": {}, + } + + basedict["Velo"]["folder"] = "VeloTrackChecker/" + basedict["Upstream"]["folder"] = "UpstreamTrackChecker/" + basedict["Forward"]["folder"] = "ForwardTrackChecker" + unique_name_ext_re() + "/" + basedict["Match"]["folder"] = "MatchTrackChecker" + unique_name_ext_re() + "/" + basedict["BestLong"]["folder"] = "BestLongTrackChecker" + unique_name_ext_re() + "/" + basedict["Seed"]["folder"] = "SeedTrackChecker" + unique_name_ext_re() + "/" + + # basedict["Forward"]["folder"] = "ForwardTrackChecker_7a0dbfa7/" + # basedict["Match"]["folder"] = "MatchTrackChecker_29e3152a/" + # basedict["ResidualMatch"]["folder"] = "ResidualMatchTrackChecker_955c7a21/" + # basedict["BestLong"]["folder"] = "BestLongTrackChecker_c163325d/" + # basedict["Seed"]["folder"] = "SeedTrackChecker_1b1d5575/" + + return basedict + + +def getTrackNames(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "Match": {}, + "BestLong": {}, + "Seed": {}, + } + + basedict["Velo"] = "Velo" + basedict["Upstream"] = "VeloUT" + basedict["Forward"] = "Forward" + basedict["Match"] = "Match" + basedict["BestLong"] = "BestLong" + basedict["Seed"] = "Seed" + return basedict + + +def get_colors(): + return [kBlack, kGreen + 3, kAzure, kMagenta + 2, kOrange, kCyan + 2] + + +def get_markers(): + return [20, 24, 21, 22, 23, 25] + + +def get_fillstyles(): + return [1003, 3001, 3002, 3325, 3144, 3244, 3444] + + +def getGhostHistoNames(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "Match": {}, + "BestLong": {}, + "Seed": {}, + } + + basedict["Velo"] = ["eta", "nPV"] + basedict["Upstream"] = ["eta", "p", "pt", "nPV"] + basedict["Forward"] = ["eta", "p", "pt", "nPV"] + basedict["Match"] = ["eta", "p", "pt", "nPV"] + basedict["BestLong"] = ["eta", "p", "pt", "nPV"] + basedict["Seed"] = ["eta", "p", "pt", "nPV"] + + return basedict + + +def argument_parser(): + parser = argparse.ArgumentParser(description="location of the tuple file") + parser.add_argument( + "--filename", + type=str, + default=["data/resolutions_and_effs_Bd2KstEE_MDmaster.root"], + nargs="+", + help="input files, including path", + ) + parser.add_argument( + "--outfile", + type=str, + default="data/efficiency_plots.root", + help="output file", + ) + parser.add_argument( + "--trackers", + type=str, + nargs="+", + default=["Forward", "Match", "BestLong", "Seed"], # --- + help="Trackers to plot.", + ) + parser.add_argument( + "--label", + nargs="+", + default=["EffChecker"], + help="label for files", + ) + parser.add_argument( + "--savepdf", + action="store_true", + help="save plots in pdf format", + ) + parser.add_argument( + "--plot-electrons", + action="store_true", + default=True, + help="plot electrons", + ) + parser.add_argument( + "--plot-electrons-only", + action="store_true", + help="plot only electrons", + ) + return parser + + +def get_files(tf, filename, label): + for i, f in enumerate(filename): + tf[label[i]] = TFile(f, "read") + return tf + + +def get_nicer_var_string(var: str): + nice_vars = dict(pt="p_{T}", eta="#eta", phi="#phi") + try: + return nice_vars[var] + except KeyError: + return var + + +def get_eff(eff, hist, tf, histoName, label, var): + eff = {} + hist = {} + var = get_nicer_var_string(var) + for i, lab in enumerate(label): + numeratorName = histoName + "_reconstructed" + numerator = findRootObjByName(tf[lab], numeratorName) + # numerator = tf[lab].Get(numeratorName) + denominatorName = histoName + "_reconstructible" + denominator = findRootObjByName(tf[lab], denominatorName) + # denominator = tf[lab].Get(denominatorName) + if numerator.GetEntries() == 0 or denominator.GetEntries() == 0: + continue + + teff = TEfficiency(numerator, denominator) + teff.SetStatisticOption(7) + eff[lab] = teff.CreateGraph() + eff[lab].SetName(lab) + eff[lab].SetTitle(lab + " not e^{-}") + if histoName.find("strange") != -1: + eff[lab].SetTitle(lab + " from stranges") + if histoName.find("electron") != -1: + eff[lab].SetTitle(lab + " e^{-}") + + hist[lab] = denominator.Clone() + hist[lab].SetName("h_numerator_notElectrons") + hist[lab].SetTitle(var + " distribution, not e^{-}") + if histoName.find("strange") != -1: + hist[lab].SetTitle(var + " distribution, stranges") + if histoName.find("electron") != -1: + hist[lab].SetTitle(var + " distribution, e^{-}") + + return eff, hist + + +def get_ghost(eff, hist, tf, histoName, label): + ghost = {} + for i, lab in enumerate(label): + numeratorName = histoName + "_Ghosts" + denominatorName = histoName + "_Total" + numerator = findRootObjByName(tf[lab], numeratorName) + denominator = findRootObjByName(tf[lab], denominatorName) + # numerator = tf[lab].Get(numeratorName) + # denominator = tf[lab].Get(denominatorName) + print("Numerator = " + numeratorName) + print("Denominator = " + denominatorName) + teff = TEfficiency(numerator, denominator) + teff.SetStatisticOption(7) + ghost[lab] = teff.CreateGraph() + print(lab) + ghost[lab].SetName(lab) + + return ghost + + +def PrCheckerEfficiency( + filename, + outfile, + label, + trackers, + savepdf, + plot_electrons, + plot_electrons_only, +): + from utils.LHCbStyle import setLHCbStyle, set_style + from utils.ConfigHistos import ( + efficiencyHistoDict, + ghostHistoDict, + categoriesDict, + getCuts, + ) + from utils.Legend import place_legend + + setLHCbStyle() + + markers = get_markers() + colors = get_colors() + styles = get_fillstyles() + + tf = {} + tf = get_files(tf, filename, label) + outputfile = TFile(outfile, "recreate") + + latex = TLatex() + latex.SetNDC() + latex.SetTextSize(0.05) + + efficiencyHistoDict = efficiencyHistoDict() + efficiencyHistos = getEfficiencyHistoNames() + ghostHistos = getGhostHistoNames() + ghostHistoDict = ghostHistoDict() + categories = categoriesDict() + cuts = getCuts() + trackers = getTrackers(trackers) + folders = getOriginFolders() + # names = getTrackNames() + + for tracker in trackers: + outputfile.cd() + trackerDir = outputfile.mkdir(tracker) + trackerDir.cd() + + for cut in cuts[tracker]: + cutDir = trackerDir.mkdir(cut) + cutDir.cd() + folder = folders[tracker]["folder"] + print(folder) + histoBaseName = "Track/" + folder + tracker + "/" + cut + "_" + + # calculate efficiency + for histo in efficiencyHistos: + canvastitle = ( + "efficiency_" + histo + ", " + categories[tracker][cut]["title"] + ) + # get efficiency for not electrons category + histoName = histoBaseName + "" + efficiencyHistoDict[histo]["variable"] + print("not electrons: " + histoName) + eff = {} + hist_den = {} + eff, hist_den = get_eff(eff, hist_den, tf, histoName, label, histo) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + histoNameElec = ( + "Track/" + + folder + + tracker + + "/" + + categories[tracker][cut]["Electrons"] + ) + histoName_e = ( + histoNameElec + "_" + efficiencyHistoDict[histo]["variable"] + ) + print("electrons: " + histoName_e) + eff_elec = {} + hist_elec = {} + eff_elec, hist_elec = get_eff( + eff_elec, + hist_elec, + tf, + histoName_e, + label, + histo, + ) + name = "efficiency_" + histo + canvas = TCanvas(name, canvastitle) + canvas.SetRightMargin(0.1) + mg = TMultiGraph() + for i, lab in enumerate(label): + if not plot_electrons_only: + mg.Add(eff[lab]) + set_style(eff[lab], colors[i], markers[i], styles[i]) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + mg.Add(eff_elec[lab]) + set_style( + eff_elec[lab], colors[i + 2], markers[i + 1], styles[i] + ) + + mg.Draw("AP") + mg.GetYaxis().SetRangeUser(0, 1.05) + xtitle = efficiencyHistoDict[histo]["xTitle"] + unit_l = xtitle.split("[") + if "]" in unit_l[-1]: + unit = unit_l[-1].replace("]", "") + else: + unit = "" + print(unit) + mg.GetXaxis().SetTitle(xtitle) + mg.GetXaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitle( + "Efficiency of Long Tracks", + ) # (" + str(round(hist_den[label[0]].GetBinWidth(1), 2)) + f"{unit})"+"^{-1}") + mg.GetYaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleOffset(1.1) + mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) + mg.GetXaxis().SetNdivisions(10, 5, 0) + mygray = 18 + myblue = kBlue - 9 + for i, lab in enumerate(label): + rightmax = 1.05 * hist_den[lab].GetMaximum() + scale = gPad.GetUymax() / rightmax + hist_den[lab].Scale(scale) + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + rightmax = 1.05 * hist_elec[lab].GetMaximum() + scale = gPad.GetUymax() / rightmax + hist_elec[lab].Scale(scale) + if i == 0: + if not plot_electrons_only: + set_style(hist_den[lab], mygray, markers[i], styles[i]) + gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + hist_den[lab].Draw("HIST PLC SAME") + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + set_style(hist_elec[lab], myblue, markers[i], styles[i]) + hist_elec[lab].SetFillColorAlpha(myblue, 0.35) + hist_elec[lab].Draw("HIST PLC SAME") + # else: + # print( + # "No distribution plotted for other labels.", + # "Can be added by uncommenting the code below this print statement.", + # ) + # set_style(hist_den[lab], mygray, markers[i], styles[i]) + # gStyle.SetPalette(2, array("i", [mygray - 1, myblue + 1])) + # hist_den[lab].Draw("HIST PLC SAME") + + if histo == "p": + pos = [0.53, 0.4, 1.01, 0.71] + elif histo == "pt": + pos = [0.5, 0.4, 0.98, 0.71] + elif histo == "phi": + pos = [0.3, 0.3, 0.9, 0.6] + else: + pos = [0.4, 0.37, 0.88, 0.68] + legend = place_legend( + canvas, *pos, header="LHCb Simulation", option="LPE" + ) + for le in legend.GetListOfPrimitives(): + if "distribution" in le.GetLabel(): + le.SetOption("LF") + legend.SetTextFont(132) + legend.SetTextSize(0.04) + legend.Draw() + for lab in label: + if not plot_electrons_only: + eff[lab].Draw("P SAME") + if categories[tracker][cut]["plotElectrons"] and plot_electrons: + eff_elec[lab].Draw("P SAME") + cutName = categories[tracker][cut]["title"] + latex.DrawLatex(legend.GetX1() + 0.01, legend.GetY1() - 0.05, cutName) + low = 0 + high = 1.05 + gPad.Update() + axis = TGaxis( + gPad.GetUxmax(), + gPad.GetUymin(), + gPad.GetUxmax(), + gPad.GetUymax(), + low, + high, + 510, + "+U", + ) + axis.SetTitleFont(132) + axis.SetTitleSize(0.06) + axis.SetTitleOffset(0.55) + axis.SetTitle( + "# Tracks " + get_nicer_var_string(histo) + " distribution [a.u.]", + ) + axis.SetLabelSize(0) + axis.Draw() + canvas.RedrawAxis() + if savepdf: + filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] + for ftype in filestypes: + if not plot_electrons_only: + canvasName = tracker + "_" + cut + "_" + histo + "." + ftype + else: + canvasName = ( + tracker + "Electrons_" + cut + "_" + histo + "." + ftype + ) + canvas.SaveAs("checks/" + canvasName) + # canvas.SetRightMargin(0.05) + canvas.Write() + + # calculate ghost rate + histoBaseName = "Track/" + folder + tracker + "/" + for histo in ghostHistos[tracker]: + trackerDir.cd() + title = "ghost_rate_vs_" + histo + + gPad.SetTicks() + histoName = histoBaseName + ghostHistoDict[histo]["variable"] + + ghost = {} + hist_den = {} + ghost = get_ghost(ghost, hist_den, tf, histoName, label) + canvas = TCanvas(title, title) + mg = TMultiGraph() + for i, lab in enumerate(label): + mg.Add(ghost[lab]) + set_style(ghost[lab], colors[i], markers[i], styles[i]) + + xtitle = ghostHistoDict[histo]["xTitle"] + mg.GetXaxis().SetTitle(xtitle) + mg.GetYaxis().SetTitle("Fraction of fake tracks") + mg.Draw("ap") + mg.GetXaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleSize(0.06) + mg.GetYaxis().SetTitleOffset(1.1) + mg.GetXaxis().SetRangeUser(*efficiencyHistoDict[histo]["range"]) + mg.GetXaxis().SetNdivisions(10, 5, 0) + # for lab in label: + # ghost[lab].Draw("P SAME") + if histo == "p": + pos = [0.53, 0.4, 1.00, 0.71] + elif histo == "pt": + pos = [0.5, 0.4, 0.98, 0.71] + elif histo == "eta": + pos = [0.35, 0.6, 0.85, 0.9] + elif histo == "phi": + pos = [0.3, 0.3, 0.9, 0.6] + else: + pos = [0.4, 0.37, 0.80, 0.68] + legend = place_legend(canvas, *pos, header="LHCb Simulation", option="LPE") + legend.SetTextFont(132) + legend.SetTextSize(0.04) + legend.Draw() + # if histo != "nPV": + # latex.DrawLatex(0.7, 0.85, "LHCb simulation") + # else: + # latex.DrawLatex(0.2, 0.85, "LHCb simulation") + # mg.GetYaxis().SetRangeUser(0, 0.4) + if histo == "eta": + mg.GetYaxis().SetRangeUser(0, 0.4) + # track_name = names[tracker] + " tracks" + # latex.DrawLatex(0.7, 0.75, track_name) + # canvas.PlaceLegend() + if savepdf: + filestypes = ["pdf"] # , "png", "eps", "C", "ps", "tex"] + for ftype in filestypes: + canvas.SaveAs( + "checks/" + tracker + "ghost_rate_" + histo + "." + ftype, + ) + canvas.Write() + + outputfile.Write() + outputfile.Close() + + +if __name__ == "__main__": + parser = argument_parser() + args = parser.parse_args() + PrCheckerEfficiency(**vars(args)) diff --git a/scripts/notebooks/Test.ipynb b/scripts/notebooks/Test.ipynb new file mode 100644 index 0000000..c7ce3d4 --- /dev/null +++ b/scripts/notebooks/Test.ipynb @@ -0,0 +1,1532 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Welcome to JupyROOT 6.28/04\n" + ] + } + ], + "source": [ + "import uproot\n", + "import ROOT\n", + "from ROOT import TMultiGraph, TLatex, TCanvas, TFile, TGaxis, TGraphAsymmErrors\n", + "from ROOT import gROOT, gStyle, gPad\n", + "from ROOT import TEfficiency\n", + "\n", + "ROOT.gROOT.SetBatch(True)\n", + "\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import awkward as ak\n", + "import numpy as np\n", + "from array import array\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31mThe kernel failed to start due to an error with the 'pyzmq' module. Consider re-installing this module.\n", + "\u001b[1;31mClick here for more info." + ] + } + ], + "source": [ + "from collections import defaultdict\n", + "\n", + "basedict = defaultdict(lambda: defaultdict(dict))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def getEfficiencyHistoNames():\n", + " return [\"p\", \"pt\", \"phi\", \"eta\", \"nPV\"]\n", + "\n", + "\n", + "def getTrackers(trackers):\n", + " return trackers\n", + "\n", + "#data/resolutions_and_effs_Bd2KstEE_MDmaster.root:Track/...\n", + "def getOriginFolders():\n", + " basedict = {\n", + " \"Velo\": {},\n", + " \"Upstream\": {},\n", + " \"Forward\": {},\n", + " \"Match\": {},\n", + " \"BestLong\": {},\n", + " \"Seed\": {},\n", + " }\n", + "\n", + " basedict[\"Velo\"][\"folder\"] = \"VeloTrackChecker/\" #evtl anpassen wenn die folders anders heissen\n", + " basedict[\"Upstream\"][\"folder\"] = \"UpstreamTrackChecker/\"\n", + " basedict[\"Forward\"][\"folder\"] = \"ForwardTrackChecker_7a0dbfa7/\"\n", + " basedict[\"Match\"][\"folder\"] = \"MatchTrackChecker_29e3152a/\"\n", + " basedict[\"BestLong\"][\"folder\"] = \"BestLongTrackChecker_4ddacce1/\"\n", + " basedict[\"Seed\"][\"folder\"] = \"SeedTrackChecker_1b1d5575/\"\n", + "\n", + " return basedict\n", + "\n", + "\n", + "def getTrackNames():\n", + " basedict = {\n", + " \"Velo\": {},\n", + " \"Upstream\": {},\n", + " \"Forward\": {},\n", + " \"Match\": {},\n", + " \"BestLong\": {},\n", + " \"Seed\": {},\n", + " }\n", + "\n", + " basedict[\"Velo\"] = \"Velo\"\n", + " basedict[\"Upstream\"] = \"VeloUT\"\n", + " basedict[\"Forward\"] = \"Forward\"\n", + " basedict[\"Match\"] = \"Match\"\n", + " basedict[\"BestLong\"] = \"BestLong\"\n", + " basedict[\"Seed\"] = \"Seed\"\n", + " return basedict\n", + "\n", + "trackers = [\"Forward\", \"Match\", \"BestLong\", \"Seed\"]\n", + "label = [\"EffChecker\"]\n", + "filename = [\"/work/cetin/LHCb/stack/data/resolutions_and_effs_Bd2KstEE_MDmaster.root\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def get_files(tf, filename, label):\n", + " for i, f in enumerate(filename):\n", + " tf[label[i]] = TFile(f, \"read\")\n", + " return tf\n", + "\n", + "\n", + "def get_nicer_var_string(var: str):\n", + " nice_vars = dict(pt=\"p_{T}\", eta=\"#eta\", phi=\"#phi\")\n", + " try:\n", + " return nice_vars[var]\n", + " except KeyError:\n", + " return var\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def Efficiency(numerator, denominator):\n", + " return (numerator.GetEntries()+1.)/(denominator.GetEntries()+2.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def get_eff(eff, hist, tf, histoName, label, var):\n", + " eff = {}\n", + " hist = {}\n", + " var = get_nicer_var_string(var)\n", + " for i, lab in enumerate(label):\n", + " numeratorName = histoName + \"_reconstructed\"\n", + " numerator = tf[lab].Get(numeratorName)\n", + " denominatorName = histoName + \"_reconstructible\"\n", + " denominator = tf[lab].Get(denominatorName)\n", + " if numerator.GetEntries() == 0 or denominator.GetEntries() == 0:\n", + " continue\n", + "\n", + " teff = Efficiency(numerator, denominator)\n", + " #print(\"TBetaAlpha: \"+ str(teff.GetBetaAlpha()))\n", + " #print(\"TBetaBeta: \"+ str(teff.GetBetaBeta()))\n", + " eff[lab] = teff\n", + "\n", + " hist[lab] = denominator.Clone()\n", + " hist[lab].SetName(\"h_numerator_notElectrons\")\n", + " hist[lab].SetTitle(var + \" distribution, not e^{-}\")\n", + " if histoName.find(\"strange\") != -1:\n", + " hist[lab].SetTitle(var + \" distribution, stranges\")\n", + " if histoName.find(\"electron\") != -1:\n", + " hist[lab].SetTitle(var + \" distribution, e^{-}\")\n", + "\n", + " return eff, hist" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "tf = {}\n", + "tf = get_files(tf, filename, label)\n", + "\n", + "latex = TLatex()\n", + "latex.SetNDC()\n", + "latex.SetTextSize(0.05)\n", + "\n", + "efficiencyHistoDict = efficiencyHistoDict()\n", + "efficiencyHistos = getEfficiencyHistoNames()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ForwardTrackChecker_7a0dbfa7/\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/01_long_P\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/01_long_Pt\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/01_long_Phi\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/01_long_Eta\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/01_long_nPV\n", + "ForwardTrackChecker_7a0dbfa7/\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/02_long_P>5GeV_P\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/02_long_P>5GeV_Pt\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/02_long_P>5GeV_Phi\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/02_long_P>5GeV_Eta\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/02_long_P>5GeV_nPV\n", + "ForwardTrackChecker_7a0dbfa7/\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/03_long_strange_P\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/03_long_strange_Pt\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/03_long_strange_Phi\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/03_long_strange_Eta\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/03_long_strange_nPV\n", + "ForwardTrackChecker_7a0dbfa7/\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/04_long_strange_P>5GeV_P\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/04_long_strange_P>5GeV_Pt\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/04_long_strange_P>5GeV_Phi\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/04_long_strange_P>5GeV_Eta\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/04_long_strange_P>5GeV_nPV\n", + "ForwardTrackChecker_7a0dbfa7/\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/05_long_fromB_P\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/05_long_fromB_Pt\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/05_long_fromB_Phi\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/05_long_fromB_Eta\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/05_long_fromB_nPV\n", + "ForwardTrackChecker_7a0dbfa7/\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/06_long_fromB_P>5GeV_P\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/06_long_fromB_P>5GeV_Pt\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/06_long_fromB_P>5GeV_Phi\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/06_long_fromB_P>5GeV_Eta\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/06_long_fromB_P>5GeV_nPV\n", + "ForwardTrackChecker_7a0dbfa7/\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/10_long_fromB_P>3GeV_Pt>0.5GeV_P\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/10_long_fromB_P>3GeV_Pt>0.5GeV_Pt\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/10_long_fromB_P>3GeV_Pt>0.5GeV_Phi\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/10_long_fromB_P>3GeV_Pt>0.5GeV_Eta\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/10_long_fromB_P>3GeV_Pt>0.5GeV_nPV\n", + "ForwardTrackChecker_7a0dbfa7/\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/11_UT_long_fromB_P>3GeV_Pt>0.5GeV_P\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/11_UT_long_fromB_P>3GeV_Pt>0.5GeV_Pt\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/11_UT_long_fromB_P>3GeV_Pt>0.5GeV_Phi\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/11_UT_long_fromB_P>3GeV_Pt>0.5GeV_Eta\n", + "not electrons: Track/ForwardTrackChecker_7a0dbfa7/Forward/11_UT_long_fromB_P>3GeV_Pt>0.5GeV_nPV\n", + "MatchTrackChecker_29e3152a/\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/01_long_P\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/01_long_Pt\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/01_long_Phi\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/01_long_Eta\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/01_long_nPV\n", + "MatchTrackChecker_29e3152a/\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/02_long_P>5GeV_P\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/02_long_P>5GeV_Pt\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/02_long_P>5GeV_Phi\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/02_long_P>5GeV_Eta\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/02_long_P>5GeV_nPV\n", + "MatchTrackChecker_29e3152a/\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/03_long_strange_P\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/03_long_strange_Pt\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/03_long_strange_Phi\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/03_long_strange_Eta\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/03_long_strange_nPV\n", + "MatchTrackChecker_29e3152a/\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/04_long_strange_P>5GeV_P\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/04_long_strange_P>5GeV_Pt\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/04_long_strange_P>5GeV_Phi\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/04_long_strange_P>5GeV_Eta\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/04_long_strange_P>5GeV_nPV\n", + "MatchTrackChecker_29e3152a/\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/05_long_fromB_P\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/05_long_fromB_Pt\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/05_long_fromB_Phi\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/05_long_fromB_Eta\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/05_long_fromB_nPV\n", + "MatchTrackChecker_29e3152a/\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/06_long_fromB_P>5GeV_P\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/06_long_fromB_P>5GeV_Pt\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/06_long_fromB_P>5GeV_Phi\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/06_long_fromB_P>5GeV_Eta\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/06_long_fromB_P>5GeV_nPV\n", + "MatchTrackChecker_29e3152a/\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/10_long_fromB_P>3GeV_Pt>0.5GeV_P\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/10_long_fromB_P>3GeV_Pt>0.5GeV_Pt\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/10_long_fromB_P>3GeV_Pt>0.5GeV_Phi\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/10_long_fromB_P>3GeV_Pt>0.5GeV_Eta\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/10_long_fromB_P>3GeV_Pt>0.5GeV_nPV\n", + "MatchTrackChecker_29e3152a/\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/11_UT_long_fromB_P>3GeV_Pt>0.5GeV_P\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/11_UT_long_fromB_P>3GeV_Pt>0.5GeV_Pt\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/11_UT_long_fromB_P>3GeV_Pt>0.5GeV_Phi\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/11_UT_long_fromB_P>3GeV_Pt>0.5GeV_Eta\n", + "not electrons: Track/MatchTrackChecker_29e3152a/Match/11_UT_long_fromB_P>3GeV_Pt>0.5GeV_nPV\n", + "BestLongTrackChecker_4ddacce1/\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/01_long_P\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/01_long_Pt\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/01_long_Phi\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/01_long_Eta\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/01_long_nPV\n", + "BestLongTrackChecker_4ddacce1/\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/02_long_P>5GeV_P\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/02_long_P>5GeV_Pt\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/02_long_P>5GeV_Phi\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/02_long_P>5GeV_Eta\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/02_long_P>5GeV_nPV\n", + "BestLongTrackChecker_4ddacce1/\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/03_long_strange_P\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/03_long_strange_Pt\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/03_long_strange_Phi\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/03_long_strange_Eta\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/03_long_strange_nPV\n", + "BestLongTrackChecker_4ddacce1/\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/04_long_strange_P>5GeV_P\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/04_long_strange_P>5GeV_Pt\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/04_long_strange_P>5GeV_Phi\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/04_long_strange_P>5GeV_Eta\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/04_long_strange_P>5GeV_nPV\n", + "BestLongTrackChecker_4ddacce1/\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/05_long_fromB_P\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/05_long_fromB_Pt\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/05_long_fromB_Phi\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/05_long_fromB_Eta\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/05_long_fromB_nPV\n", + "BestLongTrackChecker_4ddacce1/\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/06_long_fromB_P>5GeV_P\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/06_long_fromB_P>5GeV_Pt\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/06_long_fromB_P>5GeV_Phi\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/06_long_fromB_P>5GeV_Eta\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/06_long_fromB_P>5GeV_nPV\n", + "BestLongTrackChecker_4ddacce1/\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/10_long_fromB_P>3GeV_Pt>0.5GeV_P\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/10_long_fromB_P>3GeV_Pt>0.5GeV_Pt\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/10_long_fromB_P>3GeV_Pt>0.5GeV_Phi\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/10_long_fromB_P>3GeV_Pt>0.5GeV_Eta\n", + "not electrons: Track/BestLongTrackChecker_4ddacce1/BestLong/10_long_fromB_P>3GeV_Pt>0.5GeV_nPV\n", + "SeedTrackChecker_1b1d5575/\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/01_hasT_P\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/01_hasT_Pt\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/01_hasT_Phi\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/01_hasT_Eta\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/01_hasT_nPV\n", + "SeedTrackChecker_1b1d5575/\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/02_long_P\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/02_long_Pt\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/02_long_Phi\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/02_long_Eta\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/02_long_nPV\n", + "SeedTrackChecker_1b1d5575/\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/03_long_P>5GeV_P\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/03_long_P>5GeV_Pt\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/03_long_P>5GeV_Phi\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/03_long_P>5GeV_Eta\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/03_long_P>5GeV_nPV\n", + "SeedTrackChecker_1b1d5575/\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/04_long_fromB_P\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/04_long_fromB_Pt\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/04_long_fromB_Phi\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/04_long_fromB_Eta\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/04_long_fromB_nPV\n", + "SeedTrackChecker_1b1d5575/\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/05_long_fromB_P>5GeV_P\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/05_long_fromB_P>5GeV_Pt\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/05_long_fromB_P>5GeV_Phi\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/05_long_fromB_P>5GeV_Eta\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/05_long_fromB_P>5GeV_nPV\n", + "SeedTrackChecker_1b1d5575/\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/08_noVelo+UT+T_strange_P\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/08_noVelo+UT+T_strange_Pt\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/08_noVelo+UT+T_strange_Phi\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/08_noVelo+UT+T_strange_Eta\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/08_noVelo+UT+T_strange_nPV\n", + "SeedTrackChecker_1b1d5575/\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/09_noVelo+UT+T_strange_P>5GeV_P\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/09_noVelo+UT+T_strange_P>5GeV_Pt\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/09_noVelo+UT+T_strange_P>5GeV_Phi\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/09_noVelo+UT+T_strange_P>5GeV_Eta\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/09_noVelo+UT+T_strange_P>5GeV_nPV\n", + "SeedTrackChecker_1b1d5575/\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/12_noVelo+UT+T_SfromDB_P>5GeV_P\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/12_noVelo+UT+T_SfromDB_P>5GeV_Pt\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/12_noVelo+UT+T_SfromDB_P>5GeV_Phi\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/12_noVelo+UT+T_SfromDB_P>5GeV_Eta\n", + "not electrons: Track/SeedTrackChecker_1b1d5575/Seed/12_noVelo+UT+T_SfromDB_P>5GeV_nPV\n" + ] + }, + { + "data": { + "text/html": [ + "
[{Forward_01_long_p: [0.872], Forward_01_long_pt: [0.872], ...},\n",
+       " {Forward_01_long_p: None, Forward_01_long_pt: None, ...},\n",
+       " {Forward_01_long_p: None, Forward_01_long_pt: None, ...},\n",
+       " {Forward_01_long_p: None, Forward_01_long_pt: None, ...}]\n",
+       "---------------------------------------------------------------------------\n",
+       "type: 4 * {\n",
+       "    Forward_01_long_p: option[var * float64],\n",
+       "    Forward_01_long_pt: option[var * float64],\n",
+       "    Forward_01_long_phi: option[var * float64],\n",
+       "    Forward_01_long_eta: option[var * float64],\n",
+       "    Forward_01_long_nPV: option[var * float64],\n",
+       "    "Forward_02_long_P>5GeV_p": option[var * float64],\n",
+       "    "Forward_02_long_P>5GeV_pt": option[var * float64],\n",
+       "    "Forward_02_long_P>5GeV_phi": option[var * float64],\n",
+       "    "Forward_02_long_P>5GeV_eta": option[var * float64],\n",
+       "    "Forward_02_long_P>5GeV_nPV": option[var * float64],\n",
+       "    Forward_03_long_strange_p: option[var * float64],\n",
+       "    Forward_03_long_strange_pt: option[var * float64],\n",
+       "    Forward_03_long_strange_phi: option[var * float64],\n",
+       "    Forward_03_long_strange_eta: option[var * float64],\n",
+       "    Forward_03_long_strange_nPV: option[var * float64],\n",
+       "    "Forward_04_long_strange_P>5GeV_p": option[var * float64],\n",
+       "    "Forward_04_long_strange_P>5GeV_pt": option[var * float64],\n",
+       "    "Forward_04_long_strange_P>5GeV_phi": option[var * float64],\n",
+       "    "Forward_04_long_strange_P>5GeV_eta": option[var * float64],\n",
+       "    "Forward_04_long_strange_P>5GeV_nPV": option[var * float64],\n",
+       "    Forward_05_long_fromB_p: option[var * float64],\n",
+       "    Forward_05_long_fromB_pt: option[var * float64],\n",
+       "    Forward_05_long_fromB_phi: option[var * float64],\n",
+       "    Forward_05_long_fromB_eta: option[var * float64],\n",
+       "    Forward_05_long_fromB_nPV: option[var * float64],\n",
+       "    "Forward_06_long_fromB_P>5GeV_p": option[var * float64],\n",
+       "    "Forward_06_long_fromB_P>5GeV_pt": option[var * float64],\n",
+       "    "Forward_06_long_fromB_P>5GeV_phi": option[var * float64],\n",
+       "    "Forward_06_long_fromB_P>5GeV_eta": option[var * float64],\n",
+       "    "Forward_06_long_fromB_P>5GeV_nPV": option[var * float64],\n",
+       "    "Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_p": option[var * float64],\n",
+       "    "Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_pt": option[var * float64],\n",
+       "    "Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_phi": option[var * float64],\n",
+       "    "Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_eta": option[var * float64],\n",
+       "    "Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_nPV": option[var * float64],\n",
+       "    "Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_p": option[var * float64],\n",
+       "    "Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_pt": option[var * float64],\n",
+       "    "Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_phi": option[var * float64],\n",
+       "    "Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_eta": option[var * float64],\n",
+       "    "Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_nPV": option[var * float64],\n",
+       "    Match_01_long_p: option[var * float64],\n",
+       "    Match_01_long_pt: option[var * float64],\n",
+       "    Match_01_long_phi: option[var * float64],\n",
+       "    Match_01_long_eta: option[var * float64],\n",
+       "    Match_01_long_nPV: option[var * float64],\n",
+       "    "Match_02_long_P>5GeV_p": option[var * float64],\n",
+       "    "Match_02_long_P>5GeV_pt": option[var * float64],\n",
+       "    "Match_02_long_P>5GeV_phi": option[var * float64],\n",
+       "    "Match_02_long_P>5GeV_eta": option[var * float64],\n",
+       "    "Match_02_long_P>5GeV_nPV": option[var * float64],\n",
+       "    Match_03_long_strange_p: option[var * float64],\n",
+       "    Match_03_long_strange_pt: option[var * float64],\n",
+       "    Match_03_long_strange_phi: option[var * float64],\n",
+       "    Match_03_long_strange_eta: option[var * float64],\n",
+       "    Match_03_long_strange_nPV: option[var * float64],\n",
+       "    "Match_04_long_strange_P>5GeV_p": option[var * float64],\n",
+       "    "Match_04_long_strange_P>5GeV_pt": option[var * float64],\n",
+       "    "Match_04_long_strange_P>5GeV_phi": option[var * float64],\n",
+       "    "Match_04_long_strange_P>5GeV_eta": option[var * float64],\n",
+       "    "Match_04_long_strange_P>5GeV_nPV": option[var * float64],\n",
+       "    Match_05_long_fromB_p: option[var * float64],\n",
+       "    Match_05_long_fromB_pt: option[var * float64],\n",
+       "    Match_05_long_fromB_phi: option[var * float64],\n",
+       "    Match_05_long_fromB_eta: option[var * float64],\n",
+       "    Match_05_long_fromB_nPV: option[var * float64],\n",
+       "    "Match_06_long_fromB_P>5GeV_p": option[var * float64],\n",
+       "    "Match_06_long_fromB_P>5GeV_pt": option[var * float64],\n",
+       "    "Match_06_long_fromB_P>5GeV_phi": option[var * float64],\n",
+       "    "Match_06_long_fromB_P>5GeV_eta": option[var * float64],\n",
+       "    "Match_06_long_fromB_P>5GeV_nPV": option[var * float64],\n",
+       "    "Match_10_long_fromB_P>3GeV_Pt>0.5GeV_p": option[var * float64],\n",
+       "    "Match_10_long_fromB_P>3GeV_Pt>0.5GeV_pt": option[var * float64],\n",
+       "    "Match_10_long_fromB_P>3GeV_Pt>0.5GeV_phi": option[var * float64],\n",
+       "    "Match_10_long_fromB_P>3GeV_Pt>0.5GeV_eta": option[var * float64],\n",
+       "    "Match_10_long_fromB_P>3GeV_Pt>0.5GeV_nPV": option[var * float64],\n",
+       "    "Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_p": option[var * float64],\n",
+       "    "Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_pt": option[var * float64],\n",
+       "    "Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_phi": option[var * float64],\n",
+       "    "Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_eta": option[var * float64],\n",
+       "    "Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_nPV": option[var * float64],\n",
+       "    BestLong_01_long_p: option[var * float64],\n",
+       "    BestLong_01_long_pt: option[var * float64],\n",
+       "    BestLong_01_long_phi: option[var * float64],\n",
+       "    BestLong_01_long_eta: option[var * float64],\n",
+       "    BestLong_01_long_nPV: option[var * float64],\n",
+       "    "BestLong_02_long_P>5GeV_p": option[var * float64],\n",
+       "    "BestLong_02_long_P>5GeV_pt": option[var * float64],\n",
+       "    "BestLong_02_long_P>5GeV_phi": option[var * float64],\n",
+       "    "BestLong_02_long_P>5GeV_eta": option[var * float64],\n",
+       "    "BestLong_02_long_P>5GeV_nPV": option[var * float64],\n",
+       "    BestLong_03_long_strange_p: option[var * float64],\n",
+       "    BestLong_03_long_strange_pt: option[var * float64],\n",
+       "    BestLong_03_long_strange_phi: option[var * float64],\n",
+       "    BestLong_03_long_strange_eta: option[var * float64],\n",
+       "    BestLong_03_long_strange_nPV: option[var * float64],\n",
+       "    "BestLong_04_long_strange_P>5GeV_p": option[var * float64],\n",
+       "    "BestLong_04_long_strange_P>5GeV_pt": option[var * float64],\n",
+       "    "BestLong_04_long_strange_P>5GeV_phi": option[var * float64],\n",
+       "    "BestLong_04_long_strange_P>5GeV_eta": option[var * float64],\n",
+       "    "BestLong_04_long_strange_P>5GeV_nPV": option[var * float64],\n",
+       "    BestLong_05_long_fromB_p: option[var * float64],\n",
+       "    BestLong_05_long_fromB_pt: option[var * float64],\n",
+       "    BestLong_05_long_fromB_phi: option[var * float64],\n",
+       "    BestLong_05_long_fromB_eta: option[var * float64],\n",
+       "    BestLong_05_long_fromB_nPV: option[var * float64],\n",
+       "    "BestLong_06_long_fromB_P>5GeV_p": option[var * float64],\n",
+       "    "BestLong_06_long_fromB_P>5GeV_pt": option[var * float64],\n",
+       "    "BestLong_06_long_fromB_P>5GeV_phi": option[var * float64],\n",
+       "    "BestLong_06_long_fromB_P>5GeV_eta": option[var * float64],\n",
+       "    "BestLong_06_long_fromB_P>5GeV_nPV": option[var * float64],\n",
+       "    "BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_p": option[var * float64],\n",
+       "    "BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_pt": option[var * float64],\n",
+       "    "BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_phi": option[var * float64],\n",
+       "    "BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_eta": option[var * float64],\n",
+       "    "BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_nPV": option[var * float64],\n",
+       "    Seed_01_hasT_p: option[var * float64],\n",
+       "    Seed_01_hasT_pt: option[var * float64],\n",
+       "    Seed_01_hasT_phi: option[var * float64],\n",
+       "    Seed_01_hasT_eta: option[var * float64],\n",
+       "    Seed_01_hasT_nPV: option[var * float64],\n",
+       "    Seed_02_long_p: option[var * float64],\n",
+       "    Seed_02_long_pt: option[var * float64],\n",
+       "    Seed_02_long_phi: option[var * float64],\n",
+       "    Seed_02_long_eta: option[var * float64],\n",
+       "    Seed_02_long_nPV: option[var * float64],\n",
+       "    "Seed_03_long_P>5GeV_p": option[var * float64],\n",
+       "    "Seed_03_long_P>5GeV_pt": option[var * float64],\n",
+       "    "Seed_03_long_P>5GeV_phi": option[var * float64],\n",
+       "    "Seed_03_long_P>5GeV_eta": option[var * float64],\n",
+       "    "Seed_03_long_P>5GeV_nPV": option[var * float64],\n",
+       "    Seed_04_long_fromB_p: option[var * float64],\n",
+       "    Seed_04_long_fromB_pt: option[var * float64],\n",
+       "    Seed_04_long_fromB_phi: option[var * float64],\n",
+       "    Seed_04_long_fromB_eta: option[var * float64],\n",
+       "    Seed_04_long_fromB_nPV: option[var * float64],\n",
+       "    "Seed_05_long_fromB_P>5GeV_p": option[var * float64],\n",
+       "    "Seed_05_long_fromB_P>5GeV_pt": option[var * float64],\n",
+       "    "Seed_05_long_fromB_P>5GeV_phi": option[var * float64],\n",
+       "    "Seed_05_long_fromB_P>5GeV_eta": option[var * float64],\n",
+       "    "Seed_05_long_fromB_P>5GeV_nPV": option[var * float64],\n",
+       "    "Seed_08_noVelo+UT+T_strange_p": option[var * float64],\n",
+       "    "Seed_08_noVelo+UT+T_strange_pt": option[var * float64],\n",
+       "    "Seed_08_noVelo+UT+T_strange_phi": option[var * float64],\n",
+       "    "Seed_08_noVelo+UT+T_strange_eta": option[var * float64],\n",
+       "    "Seed_08_noVelo+UT+T_strange_nPV": option[var * float64],\n",
+       "    "Seed_09_noVelo+UT+T_strange_P>5GeV_p": option[var * float64],\n",
+       "    "Seed_09_noVelo+UT+T_strange_P>5GeV_pt": option[var * float64],\n",
+       "    "Seed_09_noVelo+UT+T_strange_P>5GeV_phi": option[var * float64],\n",
+       "    "Seed_09_noVelo+UT+T_strange_P>5GeV_eta": option[var * float64],\n",
+       "    "Seed_09_noVelo+UT+T_strange_P>5GeV_nPV": option[var * float64],\n",
+       "    "Seed_12_noVelo+UT+T_SfromDB_P>5GeV_p": option[var * float64],\n",
+       "    "Seed_12_noVelo+UT+T_SfromDB_P>5GeV_pt": option[var * float64],\n",
+       "    "Seed_12_noVelo+UT+T_SfromDB_P>5GeV_phi": option[var * float64],\n",
+       "    "Seed_12_noVelo+UT+T_SfromDB_P>5GeV_eta": option[var * float64],\n",
+       "    "Seed_12_noVelo+UT+T_SfromDB_P>5GeV_nPV": option[var * float64]\n",
+       "}
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "plot_electrons = False\n", + "plot_electrons_only = False\n", + "\n", + "categories = categoriesDict()\n", + "cuts = getCuts()\n", + "trackers = getTrackers(trackers)\n", + "folders = getOriginFolders()\n", + "effdata = ak.ArrayBuilder()\n", + "#effdata.begin_list()\n", + "for tracker in trackers:\n", + " effdata.begin_record()\n", + "\n", + " for cut in cuts[tracker]:\n", + " folder = folders[tracker][\"folder\"]\n", + " print(folder)\n", + " histoBaseName = \"Track/\" + folder + tracker + \"/\" + cut + \"_\"\n", + "\n", + "\n", + " # calculate efficiency\n", + " for histo in efficiencyHistos:\n", + " effdata.field(str(tracker)+\"_\"+str(cut)+\"_\"+str(histo))\n", + " effdata.begin_list()\n", + " canvastitle = (\n", + " \"efficiency_\" + histo + \", \" + categories[tracker][cut][\"title\"]\n", + " )\n", + " # get efficiency for not electrons category\n", + " histoName = histoBaseName + \"\" + efficiencyHistoDict[histo][\"variable\"]\n", + " print(\"not electrons: \" + histoName)\n", + " eff = {}\n", + " hist_den = {}\n", + " eff, hist_den = get_eff(eff, hist_den, tf, histoName, label, histo)\n", + "\n", + " if categories[tracker][cut][\"plotElectrons\"] and plot_electrons:\n", + " histoNameElec = (\n", + " \"Track/\"\n", + " + folder\n", + " + tracker\n", + " + \"/\"\n", + " + categories[tracker][cut][\"Electrons\"]\n", + " )\n", + " histoName_e = (\n", + " histoNameElec + \"_\" + efficiencyHistoDict[histo][\"variable\"]\n", + " )\n", + " print(\"electrons: \" + histoName_e)\n", + " eff_elec = {}\n", + " hist_elec = {}\n", + " eff_elec, hist_elec = get_eff(eff_elec, hist_elec, tf, histoName_e, label, histo,)\n", + "\n", + " #print(type(eff))\n", + " if not plot_electrons_only:\n", + " effdata.append(eff[label[0]])\n", + " if categories[tracker][cut][\"plotElectrons\"] and plot_electrons:\n", + " effdata.append(eff_elec[label[0]])\n", + "\n", + " #print(eff[label[0]])\n", + " effdata.end_list()\n", + " effdata.end_record()\n", + "\n", + "#effdata.end_list()\n", + "\n", + "effdata = ak.Array(effdata)\n", + "effdata" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'Forward_01_long_p': [0.8723027753520721],\n", + " 'Forward_01_long_pt': [0.8723027753520721],\n", + " 'Forward_01_long_phi': [0.8723027753520721],\n", + " 'Forward_01_long_eta': [0.8723027753520721],\n", + " 'Forward_01_long_nPV': [0.8723027753520721],\n", + " 'Forward_02_long_P>5GeV_p': [0.9274755004618178],\n", + " 'Forward_02_long_P>5GeV_pt': [0.9274755004618178],\n", + " 'Forward_02_long_P>5GeV_phi': [0.9274755004618178],\n", + " 'Forward_02_long_P>5GeV_eta': [0.9274755004618178],\n", + " 'Forward_02_long_P>5GeV_nPV': [0.9274755004618178],\n", + " 'Forward_03_long_strange_p': [0.7989988259848683],\n", + " 'Forward_03_long_strange_pt': [0.7989988259848683],\n", + " 'Forward_03_long_strange_phi': [0.7989988259848683],\n", + " 'Forward_03_long_strange_eta': [0.7989988259848683],\n", + " 'Forward_03_long_strange_nPV': [0.7989988259848683],\n", + " 'Forward_04_long_strange_P>5GeV_p': [0.8857386703080994],\n", + " 'Forward_04_long_strange_P>5GeV_pt': [0.8857386703080994],\n", + " 'Forward_04_long_strange_P>5GeV_phi': [0.8857386703080994],\n", + " 'Forward_04_long_strange_P>5GeV_eta': [0.8857386703080994],\n", + " 'Forward_04_long_strange_P>5GeV_nPV': [0.8857386703080994],\n", + " 'Forward_05_long_fromB_p': [0.9057863426557181],\n", + " 'Forward_05_long_fromB_pt': [0.9057863426557181],\n", + " 'Forward_05_long_fromB_phi': [0.9057863426557181],\n", + " 'Forward_05_long_fromB_eta': [0.9057863426557181],\n", + " 'Forward_05_long_fromB_nPV': [0.9057863426557181],\n", + " 'Forward_06_long_fromB_P>5GeV_p': [0.9462021519139234],\n", + " 'Forward_06_long_fromB_P>5GeV_pt': [0.9462021519139234],\n", + " 'Forward_06_long_fromB_P>5GeV_phi': [0.9462021519139234],\n", + " 'Forward_06_long_fromB_P>5GeV_eta': [0.9462021519139234],\n", + " 'Forward_06_long_fromB_P>5GeV_nPV': [0.9462021519139234],\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_p': [0.9467674812116038],\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_pt': [0.9467674812116038],\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_phi': [0.9467674812116038],\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_eta': [0.9467674812116038],\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_nPV': [0.9467674812116038],\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_p': [0.9473434752694748],\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_pt': [0.9473434752694748],\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_phi': [0.9473434752694748],\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_eta': [0.9473434752694748],\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_nPV': [0.9473434752694748],\n", + " 'Match_01_long_p': None,\n", + " 'Match_01_long_pt': None,\n", + " 'Match_01_long_phi': None,\n", + " 'Match_01_long_eta': None,\n", + " 'Match_01_long_nPV': None,\n", + " 'Match_02_long_P>5GeV_p': None,\n", + " 'Match_02_long_P>5GeV_pt': None,\n", + " 'Match_02_long_P>5GeV_phi': None,\n", + " 'Match_02_long_P>5GeV_eta': None,\n", + " 'Match_02_long_P>5GeV_nPV': None,\n", + " 'Match_03_long_strange_p': None,\n", + " 'Match_03_long_strange_pt': None,\n", + " 'Match_03_long_strange_phi': None,\n", + " 'Match_03_long_strange_eta': None,\n", + " 'Match_03_long_strange_nPV': None,\n", + " 'Match_04_long_strange_P>5GeV_p': None,\n", + " 'Match_04_long_strange_P>5GeV_pt': None,\n", + " 'Match_04_long_strange_P>5GeV_phi': None,\n", + " 'Match_04_long_strange_P>5GeV_eta': None,\n", + " 'Match_04_long_strange_P>5GeV_nPV': None,\n", + " 'Match_05_long_fromB_p': None,\n", + " 'Match_05_long_fromB_pt': None,\n", + " 'Match_05_long_fromB_phi': None,\n", + " 'Match_05_long_fromB_eta': None,\n", + " 'Match_05_long_fromB_nPV': None,\n", + " 'Match_06_long_fromB_P>5GeV_p': None,\n", + " 'Match_06_long_fromB_P>5GeV_pt': None,\n", + " 'Match_06_long_fromB_P>5GeV_phi': None,\n", + " 'Match_06_long_fromB_P>5GeV_eta': None,\n", + " 'Match_06_long_fromB_P>5GeV_nPV': None,\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_p': None,\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_pt': None,\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_phi': None,\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_eta': None,\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_nPV': None,\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_p': None,\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_pt': None,\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_phi': None,\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_eta': None,\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_nPV': None,\n", + " 'BestLong_01_long_p': None,\n", + " 'BestLong_01_long_pt': None,\n", + " 'BestLong_01_long_phi': None,\n", + " 'BestLong_01_long_eta': None,\n", + " 'BestLong_01_long_nPV': None,\n", + " 'BestLong_02_long_P>5GeV_p': None,\n", + " 'BestLong_02_long_P>5GeV_pt': None,\n", + " 'BestLong_02_long_P>5GeV_phi': None,\n", + " 'BestLong_02_long_P>5GeV_eta': None,\n", + " 'BestLong_02_long_P>5GeV_nPV': None,\n", + " 'BestLong_03_long_strange_p': None,\n", + " 'BestLong_03_long_strange_pt': None,\n", + " 'BestLong_03_long_strange_phi': None,\n", + " 'BestLong_03_long_strange_eta': None,\n", + " 'BestLong_03_long_strange_nPV': None,\n", + " 'BestLong_04_long_strange_P>5GeV_p': None,\n", + " 'BestLong_04_long_strange_P>5GeV_pt': None,\n", + " 'BestLong_04_long_strange_P>5GeV_phi': None,\n", + " 'BestLong_04_long_strange_P>5GeV_eta': None,\n", + " 'BestLong_04_long_strange_P>5GeV_nPV': None,\n", + " 'BestLong_05_long_fromB_p': None,\n", + " 'BestLong_05_long_fromB_pt': None,\n", + " 'BestLong_05_long_fromB_phi': None,\n", + " 'BestLong_05_long_fromB_eta': None,\n", + " 'BestLong_05_long_fromB_nPV': None,\n", + " 'BestLong_06_long_fromB_P>5GeV_p': None,\n", + " 'BestLong_06_long_fromB_P>5GeV_pt': None,\n", + " 'BestLong_06_long_fromB_P>5GeV_phi': None,\n", + " 'BestLong_06_long_fromB_P>5GeV_eta': None,\n", + " 'BestLong_06_long_fromB_P>5GeV_nPV': None,\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_p': None,\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_pt': None,\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_phi': None,\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_eta': None,\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_nPV': None,\n", + " 'Seed_01_hasT_p': None,\n", + " 'Seed_01_hasT_pt': None,\n", + " 'Seed_01_hasT_phi': None,\n", + " 'Seed_01_hasT_eta': None,\n", + " 'Seed_01_hasT_nPV': None,\n", + " 'Seed_02_long_p': None,\n", + " 'Seed_02_long_pt': None,\n", + " 'Seed_02_long_phi': None,\n", + " 'Seed_02_long_eta': None,\n", + " 'Seed_02_long_nPV': None,\n", + " 'Seed_03_long_P>5GeV_p': None,\n", + " 'Seed_03_long_P>5GeV_pt': None,\n", + " 'Seed_03_long_P>5GeV_phi': None,\n", + " 'Seed_03_long_P>5GeV_eta': None,\n", + " 'Seed_03_long_P>5GeV_nPV': None,\n", + " 'Seed_04_long_fromB_p': None,\n", + " 'Seed_04_long_fromB_pt': None,\n", + " 'Seed_04_long_fromB_phi': None,\n", + " 'Seed_04_long_fromB_eta': None,\n", + " 'Seed_04_long_fromB_nPV': None,\n", + " 'Seed_05_long_fromB_P>5GeV_p': None,\n", + " 'Seed_05_long_fromB_P>5GeV_pt': None,\n", + " 'Seed_05_long_fromB_P>5GeV_phi': None,\n", + " 'Seed_05_long_fromB_P>5GeV_eta': None,\n", + " 'Seed_05_long_fromB_P>5GeV_nPV': None,\n", + " 'Seed_08_noVelo+UT+T_strange_p': None,\n", + " 'Seed_08_noVelo+UT+T_strange_pt': None,\n", + " 'Seed_08_noVelo+UT+T_strange_phi': None,\n", + " 'Seed_08_noVelo+UT+T_strange_eta': None,\n", + " 'Seed_08_noVelo+UT+T_strange_nPV': None,\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_p': None,\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_pt': None,\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_phi': None,\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_eta': None,\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_nPV': None,\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_p': None,\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_pt': None,\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_phi': None,\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_eta': None,\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_nPV': None},\n", + " {'Forward_01_long_p': None,\n", + " 'Forward_01_long_pt': None,\n", + " 'Forward_01_long_phi': None,\n", + " 'Forward_01_long_eta': None,\n", + " 'Forward_01_long_nPV': None,\n", + " 'Forward_02_long_P>5GeV_p': None,\n", + " 'Forward_02_long_P>5GeV_pt': None,\n", + " 'Forward_02_long_P>5GeV_phi': None,\n", + " 'Forward_02_long_P>5GeV_eta': None,\n", + " 'Forward_02_long_P>5GeV_nPV': None,\n", + " 'Forward_03_long_strange_p': None,\n", + " 'Forward_03_long_strange_pt': None,\n", + " 'Forward_03_long_strange_phi': None,\n", + " 'Forward_03_long_strange_eta': None,\n", + " 'Forward_03_long_strange_nPV': None,\n", + " 'Forward_04_long_strange_P>5GeV_p': None,\n", + " 'Forward_04_long_strange_P>5GeV_pt': None,\n", + " 'Forward_04_long_strange_P>5GeV_phi': None,\n", + " 'Forward_04_long_strange_P>5GeV_eta': None,\n", + " 'Forward_04_long_strange_P>5GeV_nPV': None,\n", + " 'Forward_05_long_fromB_p': None,\n", + " 'Forward_05_long_fromB_pt': None,\n", + " 'Forward_05_long_fromB_phi': None,\n", + " 'Forward_05_long_fromB_eta': None,\n", + " 'Forward_05_long_fromB_nPV': None,\n", + " 'Forward_06_long_fromB_P>5GeV_p': None,\n", + " 'Forward_06_long_fromB_P>5GeV_pt': None,\n", + " 'Forward_06_long_fromB_P>5GeV_phi': None,\n", + " 'Forward_06_long_fromB_P>5GeV_eta': None,\n", + " 'Forward_06_long_fromB_P>5GeV_nPV': None,\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_p': None,\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_pt': None,\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_phi': None,\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_eta': None,\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_nPV': None,\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_p': None,\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_pt': None,\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_phi': None,\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_eta': None,\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_nPV': None,\n", + " 'Match_01_long_p': [0.8630041712287172],\n", + " 'Match_01_long_pt': [0.8630041712287172],\n", + " 'Match_01_long_phi': [0.8630041712287172],\n", + " 'Match_01_long_eta': [0.8630041712287172],\n", + " 'Match_01_long_nPV': [0.8630041712287172],\n", + " 'Match_02_long_P>5GeV_p': [0.9188646785079396],\n", + " 'Match_02_long_P>5GeV_pt': [0.9188646785079396],\n", + " 'Match_02_long_P>5GeV_phi': [0.9188646785079396],\n", + " 'Match_02_long_P>5GeV_eta': [0.9188646785079396],\n", + " 'Match_02_long_P>5GeV_nPV': [0.9188646785079396],\n", + " 'Match_03_long_strange_p': [0.7842013435950952],\n", + " 'Match_03_long_strange_pt': [0.7842013435950952],\n", + " 'Match_03_long_strange_phi': [0.7842013435950952],\n", + " 'Match_03_long_strange_eta': [0.7842013435950952],\n", + " 'Match_03_long_strange_nPV': [0.7842013435950952],\n", + " 'Match_04_long_strange_P>5GeV_p': [0.8778356234531023],\n", + " 'Match_04_long_strange_P>5GeV_pt': [0.8778356234531023],\n", + " 'Match_04_long_strange_P>5GeV_phi': [0.8778356234531023],\n", + " 'Match_04_long_strange_P>5GeV_eta': [0.8778356234531023],\n", + " 'Match_04_long_strange_P>5GeV_nPV': [0.8778356234531023],\n", + " 'Match_05_long_fromB_p': [0.8985445767556485],\n", + " 'Match_05_long_fromB_pt': [0.8985445767556485],\n", + " 'Match_05_long_fromB_phi': [0.8985445767556485],\n", + " 'Match_05_long_fromB_eta': [0.8985445767556485],\n", + " 'Match_05_long_fromB_nPV': [0.8985445767556485],\n", + " 'Match_06_long_fromB_P>5GeV_p': [0.9376291615002067],\n", + " 'Match_06_long_fromB_P>5GeV_pt': [0.9376291615002067],\n", + " 'Match_06_long_fromB_P>5GeV_phi': [0.9376291615002067],\n", + " 'Match_06_long_fromB_P>5GeV_eta': [0.9376291615002067],\n", + " 'Match_06_long_fromB_P>5GeV_nPV': [0.9376291615002067],\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_p': [0.9395112730376988],\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_pt': [0.9395112730376988],\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_phi': [0.9395112730376988],\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_eta': [0.9395112730376988],\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_nPV': [0.9395112730376988],\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_p': [0.9404785566852687],\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_pt': [0.9404785566852687],\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_phi': [0.9404785566852687],\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_eta': [0.9404785566852687],\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_nPV': [0.9404785566852687],\n", + " 'BestLong_01_long_p': None,\n", + " 'BestLong_01_long_pt': None,\n", + " 'BestLong_01_long_phi': None,\n", + " 'BestLong_01_long_eta': None,\n", + " 'BestLong_01_long_nPV': None,\n", + " 'BestLong_02_long_P>5GeV_p': None,\n", + " 'BestLong_02_long_P>5GeV_pt': None,\n", + " 'BestLong_02_long_P>5GeV_phi': None,\n", + " 'BestLong_02_long_P>5GeV_eta': None,\n", + " 'BestLong_02_long_P>5GeV_nPV': None,\n", + " 'BestLong_03_long_strange_p': None,\n", + " 'BestLong_03_long_strange_pt': None,\n", + " 'BestLong_03_long_strange_phi': None,\n", + " 'BestLong_03_long_strange_eta': None,\n", + " 'BestLong_03_long_strange_nPV': None,\n", + " 'BestLong_04_long_strange_P>5GeV_p': None,\n", + " 'BestLong_04_long_strange_P>5GeV_pt': None,\n", + " 'BestLong_04_long_strange_P>5GeV_phi': None,\n", + " 'BestLong_04_long_strange_P>5GeV_eta': None,\n", + " 'BestLong_04_long_strange_P>5GeV_nPV': None,\n", + " 'BestLong_05_long_fromB_p': None,\n", + " 'BestLong_05_long_fromB_pt': None,\n", + " 'BestLong_05_long_fromB_phi': None,\n", + " 'BestLong_05_long_fromB_eta': None,\n", + " 'BestLong_05_long_fromB_nPV': None,\n", + " 'BestLong_06_long_fromB_P>5GeV_p': None,\n", + " 'BestLong_06_long_fromB_P>5GeV_pt': None,\n", + " 'BestLong_06_long_fromB_P>5GeV_phi': None,\n", + " 'BestLong_06_long_fromB_P>5GeV_eta': None,\n", + " 'BestLong_06_long_fromB_P>5GeV_nPV': None,\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_p': None,\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_pt': None,\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_phi': None,\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_eta': None,\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_nPV': None,\n", + " 'Seed_01_hasT_p': None,\n", + " 'Seed_01_hasT_pt': None,\n", + " 'Seed_01_hasT_phi': None,\n", + " 'Seed_01_hasT_eta': None,\n", + " 'Seed_01_hasT_nPV': None,\n", + " 'Seed_02_long_p': None,\n", + " 'Seed_02_long_pt': None,\n", + " 'Seed_02_long_phi': None,\n", + " 'Seed_02_long_eta': None,\n", + " 'Seed_02_long_nPV': None,\n", + " 'Seed_03_long_P>5GeV_p': None,\n", + " 'Seed_03_long_P>5GeV_pt': None,\n", + " 'Seed_03_long_P>5GeV_phi': None,\n", + " 'Seed_03_long_P>5GeV_eta': None,\n", + " 'Seed_03_long_P>5GeV_nPV': None,\n", + " 'Seed_04_long_fromB_p': None,\n", + " 'Seed_04_long_fromB_pt': None,\n", + " 'Seed_04_long_fromB_phi': None,\n", + " 'Seed_04_long_fromB_eta': None,\n", + " 'Seed_04_long_fromB_nPV': None,\n", + " 'Seed_05_long_fromB_P>5GeV_p': None,\n", + " 'Seed_05_long_fromB_P>5GeV_pt': None,\n", + " 'Seed_05_long_fromB_P>5GeV_phi': None,\n", + " 'Seed_05_long_fromB_P>5GeV_eta': None,\n", + " 'Seed_05_long_fromB_P>5GeV_nPV': None,\n", + " 'Seed_08_noVelo+UT+T_strange_p': None,\n", + " 'Seed_08_noVelo+UT+T_strange_pt': None,\n", + " 'Seed_08_noVelo+UT+T_strange_phi': None,\n", + " 'Seed_08_noVelo+UT+T_strange_eta': None,\n", + " 'Seed_08_noVelo+UT+T_strange_nPV': None,\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_p': None,\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_pt': None,\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_phi': None,\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_eta': None,\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_nPV': None,\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_p': None,\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_pt': None,\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_phi': None,\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_eta': None,\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_nPV': None},\n", + " {'Forward_01_long_p': None,\n", + " 'Forward_01_long_pt': None,\n", + " 'Forward_01_long_phi': None,\n", + " 'Forward_01_long_eta': None,\n", + " 'Forward_01_long_nPV': None,\n", + " 'Forward_02_long_P>5GeV_p': None,\n", + " 'Forward_02_long_P>5GeV_pt': None,\n", + " 'Forward_02_long_P>5GeV_phi': None,\n", + " 'Forward_02_long_P>5GeV_eta': None,\n", + " 'Forward_02_long_P>5GeV_nPV': None,\n", + " 'Forward_03_long_strange_p': None,\n", + " 'Forward_03_long_strange_pt': None,\n", + " 'Forward_03_long_strange_phi': None,\n", + " 'Forward_03_long_strange_eta': None,\n", + " 'Forward_03_long_strange_nPV': None,\n", + " 'Forward_04_long_strange_P>5GeV_p': None,\n", + " 'Forward_04_long_strange_P>5GeV_pt': None,\n", + " 'Forward_04_long_strange_P>5GeV_phi': None,\n", + " 'Forward_04_long_strange_P>5GeV_eta': None,\n", + " 'Forward_04_long_strange_P>5GeV_nPV': None,\n", + " 'Forward_05_long_fromB_p': None,\n", + " 'Forward_05_long_fromB_pt': None,\n", + " 'Forward_05_long_fromB_phi': None,\n", + " 'Forward_05_long_fromB_eta': None,\n", + " 'Forward_05_long_fromB_nPV': None,\n", + " 'Forward_06_long_fromB_P>5GeV_p': None,\n", + " 'Forward_06_long_fromB_P>5GeV_pt': None,\n", + " 'Forward_06_long_fromB_P>5GeV_phi': None,\n", + " 'Forward_06_long_fromB_P>5GeV_eta': None,\n", + " 'Forward_06_long_fromB_P>5GeV_nPV': None,\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_p': None,\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_pt': None,\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_phi': None,\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_eta': None,\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_nPV': None,\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_p': None,\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_pt': None,\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_phi': None,\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_eta': None,\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_nPV': None,\n", + " 'Match_01_long_p': None,\n", + " 'Match_01_long_pt': None,\n", + " 'Match_01_long_phi': None,\n", + " 'Match_01_long_eta': None,\n", + " 'Match_01_long_nPV': None,\n", + " 'Match_02_long_P>5GeV_p': None,\n", + " 'Match_02_long_P>5GeV_pt': None,\n", + " 'Match_02_long_P>5GeV_phi': None,\n", + " 'Match_02_long_P>5GeV_eta': None,\n", + " 'Match_02_long_P>5GeV_nPV': None,\n", + " 'Match_03_long_strange_p': None,\n", + " 'Match_03_long_strange_pt': None,\n", + " 'Match_03_long_strange_phi': None,\n", + " 'Match_03_long_strange_eta': None,\n", + " 'Match_03_long_strange_nPV': None,\n", + " 'Match_04_long_strange_P>5GeV_p': None,\n", + " 'Match_04_long_strange_P>5GeV_pt': None,\n", + " 'Match_04_long_strange_P>5GeV_phi': None,\n", + " 'Match_04_long_strange_P>5GeV_eta': None,\n", + " 'Match_04_long_strange_P>5GeV_nPV': None,\n", + " 'Match_05_long_fromB_p': None,\n", + " 'Match_05_long_fromB_pt': None,\n", + " 'Match_05_long_fromB_phi': None,\n", + " 'Match_05_long_fromB_eta': None,\n", + " 'Match_05_long_fromB_nPV': None,\n", + " 'Match_06_long_fromB_P>5GeV_p': None,\n", + " 'Match_06_long_fromB_P>5GeV_pt': None,\n", + " 'Match_06_long_fromB_P>5GeV_phi': None,\n", + " 'Match_06_long_fromB_P>5GeV_eta': None,\n", + " 'Match_06_long_fromB_P>5GeV_nPV': None,\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_p': None,\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_pt': None,\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_phi': None,\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_eta': None,\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_nPV': None,\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_p': None,\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_pt': None,\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_phi': None,\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_eta': None,\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_nPV': None,\n", + " 'BestLong_01_long_p': [0.8798947662383141],\n", + " 'BestLong_01_long_pt': [0.8798947662383141],\n", + " 'BestLong_01_long_phi': [0.8798947662383141],\n", + " 'BestLong_01_long_eta': [0.8798947662383141],\n", + " 'BestLong_01_long_nPV': [0.8798947662383141],\n", + " 'BestLong_02_long_P>5GeV_p': [0.9180836129025216],\n", + " 'BestLong_02_long_P>5GeV_pt': [0.9180836129025216],\n", + " 'BestLong_02_long_P>5GeV_phi': [0.9180836129025216],\n", + " 'BestLong_02_long_P>5GeV_eta': [0.9180836129025216],\n", + " 'BestLong_02_long_P>5GeV_nPV': [0.9180836129025216],\n", + " 'BestLong_03_long_strange_p': [0.8013060918340725],\n", + " 'BestLong_03_long_strange_pt': [0.8013060918340725],\n", + " 'BestLong_03_long_strange_phi': [0.8013060918340725],\n", + " 'BestLong_03_long_strange_eta': [0.8013060918340725],\n", + " 'BestLong_03_long_strange_nPV': [0.8013060918340725],\n", + " 'BestLong_04_long_strange_P>5GeV_p': [0.8679354783647691],\n", + " 'BestLong_04_long_strange_P>5GeV_pt': [0.8679354783647691],\n", + " 'BestLong_04_long_strange_P>5GeV_phi': [0.8679354783647691],\n", + " 'BestLong_04_long_strange_P>5GeV_eta': [0.8679354783647691],\n", + " 'BestLong_04_long_strange_P>5GeV_nPV': [0.8679354783647691],\n", + " 'BestLong_05_long_fromB_p': [0.9091900736296701],\n", + " 'BestLong_05_long_fromB_pt': [0.9091900736296701],\n", + " 'BestLong_05_long_fromB_phi': [0.9091900736296701],\n", + " 'BestLong_05_long_fromB_eta': [0.9091900736296701],\n", + " 'BestLong_05_long_fromB_nPV': [0.9091900736296701],\n", + " 'BestLong_06_long_fromB_P>5GeV_p': [0.9379224831006759],\n", + " 'BestLong_06_long_fromB_P>5GeV_pt': [0.9379224831006759],\n", + " 'BestLong_06_long_fromB_P>5GeV_phi': [0.9379224831006759],\n", + " 'BestLong_06_long_fromB_P>5GeV_eta': [0.9379224831006759],\n", + " 'BestLong_06_long_fromB_P>5GeV_nPV': [0.9379224831006759],\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_p': [0.9435662128995869],\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_pt': [0.9435662128995869],\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_phi': [0.9435662128995869],\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_eta': [0.9435662128995869],\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_nPV': [0.9435662128995869],\n", + " 'Seed_01_hasT_p': None,\n", + " 'Seed_01_hasT_pt': None,\n", + " 'Seed_01_hasT_phi': None,\n", + " 'Seed_01_hasT_eta': None,\n", + " 'Seed_01_hasT_nPV': None,\n", + " 'Seed_02_long_p': None,\n", + " 'Seed_02_long_pt': None,\n", + " 'Seed_02_long_phi': None,\n", + " 'Seed_02_long_eta': None,\n", + " 'Seed_02_long_nPV': None,\n", + " 'Seed_03_long_P>5GeV_p': None,\n", + " 'Seed_03_long_P>5GeV_pt': None,\n", + " 'Seed_03_long_P>5GeV_phi': None,\n", + " 'Seed_03_long_P>5GeV_eta': None,\n", + " 'Seed_03_long_P>5GeV_nPV': None,\n", + " 'Seed_04_long_fromB_p': None,\n", + " 'Seed_04_long_fromB_pt': None,\n", + " 'Seed_04_long_fromB_phi': None,\n", + " 'Seed_04_long_fromB_eta': None,\n", + " 'Seed_04_long_fromB_nPV': None,\n", + " 'Seed_05_long_fromB_P>5GeV_p': None,\n", + " 'Seed_05_long_fromB_P>5GeV_pt': None,\n", + " 'Seed_05_long_fromB_P>5GeV_phi': None,\n", + " 'Seed_05_long_fromB_P>5GeV_eta': None,\n", + " 'Seed_05_long_fromB_P>5GeV_nPV': None,\n", + " 'Seed_08_noVelo+UT+T_strange_p': None,\n", + " 'Seed_08_noVelo+UT+T_strange_pt': None,\n", + " 'Seed_08_noVelo+UT+T_strange_phi': None,\n", + " 'Seed_08_noVelo+UT+T_strange_eta': None,\n", + " 'Seed_08_noVelo+UT+T_strange_nPV': None,\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_p': None,\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_pt': None,\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_phi': None,\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_eta': None,\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_nPV': None,\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_p': None,\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_pt': None,\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_phi': None,\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_eta': None,\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_nPV': None},\n", + " {'Forward_01_long_p': None,\n", + " 'Forward_01_long_pt': None,\n", + " 'Forward_01_long_phi': None,\n", + " 'Forward_01_long_eta': None,\n", + " 'Forward_01_long_nPV': None,\n", + " 'Forward_02_long_P>5GeV_p': None,\n", + " 'Forward_02_long_P>5GeV_pt': None,\n", + " 'Forward_02_long_P>5GeV_phi': None,\n", + " 'Forward_02_long_P>5GeV_eta': None,\n", + " 'Forward_02_long_P>5GeV_nPV': None,\n", + " 'Forward_03_long_strange_p': None,\n", + " 'Forward_03_long_strange_pt': None,\n", + " 'Forward_03_long_strange_phi': None,\n", + " 'Forward_03_long_strange_eta': None,\n", + " 'Forward_03_long_strange_nPV': None,\n", + " 'Forward_04_long_strange_P>5GeV_p': None,\n", + " 'Forward_04_long_strange_P>5GeV_pt': None,\n", + " 'Forward_04_long_strange_P>5GeV_phi': None,\n", + " 'Forward_04_long_strange_P>5GeV_eta': None,\n", + " 'Forward_04_long_strange_P>5GeV_nPV': None,\n", + " 'Forward_05_long_fromB_p': None,\n", + " 'Forward_05_long_fromB_pt': None,\n", + " 'Forward_05_long_fromB_phi': None,\n", + " 'Forward_05_long_fromB_eta': None,\n", + " 'Forward_05_long_fromB_nPV': None,\n", + " 'Forward_06_long_fromB_P>5GeV_p': None,\n", + " 'Forward_06_long_fromB_P>5GeV_pt': None,\n", + " 'Forward_06_long_fromB_P>5GeV_phi': None,\n", + " 'Forward_06_long_fromB_P>5GeV_eta': None,\n", + " 'Forward_06_long_fromB_P>5GeV_nPV': None,\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_p': None,\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_pt': None,\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_phi': None,\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_eta': None,\n", + " 'Forward_10_long_fromB_P>3GeV_Pt>0.5GeV_nPV': None,\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_p': None,\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_pt': None,\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_phi': None,\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_eta': None,\n", + " 'Forward_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_nPV': None,\n", + " 'Match_01_long_p': None,\n", + " 'Match_01_long_pt': None,\n", + " 'Match_01_long_phi': None,\n", + " 'Match_01_long_eta': None,\n", + " 'Match_01_long_nPV': None,\n", + " 'Match_02_long_P>5GeV_p': None,\n", + " 'Match_02_long_P>5GeV_pt': None,\n", + " 'Match_02_long_P>5GeV_phi': None,\n", + " 'Match_02_long_P>5GeV_eta': None,\n", + " 'Match_02_long_P>5GeV_nPV': None,\n", + " 'Match_03_long_strange_p': None,\n", + " 'Match_03_long_strange_pt': None,\n", + " 'Match_03_long_strange_phi': None,\n", + " 'Match_03_long_strange_eta': None,\n", + " 'Match_03_long_strange_nPV': None,\n", + " 'Match_04_long_strange_P>5GeV_p': None,\n", + " 'Match_04_long_strange_P>5GeV_pt': None,\n", + " 'Match_04_long_strange_P>5GeV_phi': None,\n", + " 'Match_04_long_strange_P>5GeV_eta': None,\n", + " 'Match_04_long_strange_P>5GeV_nPV': None,\n", + " 'Match_05_long_fromB_p': None,\n", + " 'Match_05_long_fromB_pt': None,\n", + " 'Match_05_long_fromB_phi': None,\n", + " 'Match_05_long_fromB_eta': None,\n", + " 'Match_05_long_fromB_nPV': None,\n", + " 'Match_06_long_fromB_P>5GeV_p': None,\n", + " 'Match_06_long_fromB_P>5GeV_pt': None,\n", + " 'Match_06_long_fromB_P>5GeV_phi': None,\n", + " 'Match_06_long_fromB_P>5GeV_eta': None,\n", + " 'Match_06_long_fromB_P>5GeV_nPV': None,\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_p': None,\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_pt': None,\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_phi': None,\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_eta': None,\n", + " 'Match_10_long_fromB_P>3GeV_Pt>0.5GeV_nPV': None,\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_p': None,\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_pt': None,\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_phi': None,\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_eta': None,\n", + " 'Match_11_UT_long_fromB_P>3GeV_Pt>0.5GeV_nPV': None,\n", + " 'BestLong_01_long_p': None,\n", + " 'BestLong_01_long_pt': None,\n", + " 'BestLong_01_long_phi': None,\n", + " 'BestLong_01_long_eta': None,\n", + " 'BestLong_01_long_nPV': None,\n", + " 'BestLong_02_long_P>5GeV_p': None,\n", + " 'BestLong_02_long_P>5GeV_pt': None,\n", + " 'BestLong_02_long_P>5GeV_phi': None,\n", + " 'BestLong_02_long_P>5GeV_eta': None,\n", + " 'BestLong_02_long_P>5GeV_nPV': None,\n", + " 'BestLong_03_long_strange_p': None,\n", + " 'BestLong_03_long_strange_pt': None,\n", + " 'BestLong_03_long_strange_phi': None,\n", + " 'BestLong_03_long_strange_eta': None,\n", + " 'BestLong_03_long_strange_nPV': None,\n", + " 'BestLong_04_long_strange_P>5GeV_p': None,\n", + " 'BestLong_04_long_strange_P>5GeV_pt': None,\n", + " 'BestLong_04_long_strange_P>5GeV_phi': None,\n", + " 'BestLong_04_long_strange_P>5GeV_eta': None,\n", + " 'BestLong_04_long_strange_P>5GeV_nPV': None,\n", + " 'BestLong_05_long_fromB_p': None,\n", + " 'BestLong_05_long_fromB_pt': None,\n", + " 'BestLong_05_long_fromB_phi': None,\n", + " 'BestLong_05_long_fromB_eta': None,\n", + " 'BestLong_05_long_fromB_nPV': None,\n", + " 'BestLong_06_long_fromB_P>5GeV_p': None,\n", + " 'BestLong_06_long_fromB_P>5GeV_pt': None,\n", + " 'BestLong_06_long_fromB_P>5GeV_phi': None,\n", + " 'BestLong_06_long_fromB_P>5GeV_eta': None,\n", + " 'BestLong_06_long_fromB_P>5GeV_nPV': None,\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_p': None,\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_pt': None,\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_phi': None,\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_eta': None,\n", + " 'BestLong_10_long_fromB_P>3GeV_Pt>0.5GeV_nPV': None,\n", + " 'Seed_01_hasT_p': [0.8301846485044814],\n", + " 'Seed_01_hasT_pt': [0.8301846485044814],\n", + " 'Seed_01_hasT_phi': [0.8301846485044814],\n", + " 'Seed_01_hasT_eta': [0.8301846485044814],\n", + " 'Seed_01_hasT_nPV': [0.8301846485044814],\n", + " 'Seed_02_long_p': [0.9333472226531851],\n", + " 'Seed_02_long_pt': [0.9333472226531851],\n", + " 'Seed_02_long_phi': [0.9333472226531851],\n", + " 'Seed_02_long_eta': [0.9333472226531851],\n", + " 'Seed_02_long_nPV': [0.9333472226531851],\n", + " 'Seed_03_long_P>5GeV_p': [0.9665492453337299],\n", + " 'Seed_03_long_P>5GeV_pt': [0.9665492453337299],\n", + " 'Seed_03_long_P>5GeV_phi': [0.9665492453337299],\n", + " 'Seed_03_long_P>5GeV_eta': [0.9665492453337299],\n", + " 'Seed_03_long_P>5GeV_nPV': [0.9665492453337299],\n", + " 'Seed_04_long_fromB_p': [0.9503378480744175],\n", + " 'Seed_04_long_fromB_pt': [0.9503378480744175],\n", + " 'Seed_04_long_fromB_phi': [0.9503378480744175],\n", + " 'Seed_04_long_fromB_eta': [0.9503378480744175],\n", + " 'Seed_04_long_fromB_nPV': [0.9503378480744175],\n", + " 'Seed_05_long_fromB_P>5GeV_p': [0.9703078543524926],\n", + " 'Seed_05_long_fromB_P>5GeV_pt': [0.9703078543524926],\n", + " 'Seed_05_long_fromB_P>5GeV_phi': [0.9703078543524926],\n", + " 'Seed_05_long_fromB_P>5GeV_eta': [0.9703078543524926],\n", + " 'Seed_05_long_fromB_P>5GeV_nPV': [0.9703078543524926],\n", + " 'Seed_08_noVelo+UT+T_strange_p': [0.9160309601840876],\n", + " 'Seed_08_noVelo+UT+T_strange_pt': [0.9160309601840876],\n", + " 'Seed_08_noVelo+UT+T_strange_phi': [0.9160309601840876],\n", + " 'Seed_08_noVelo+UT+T_strange_eta': [0.9160309601840876],\n", + " 'Seed_08_noVelo+UT+T_strange_nPV': [0.9160309601840876],\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_p': [0.9642032180145458],\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_pt': [0.9642032180145458],\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_phi': [0.9642032180145458],\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_eta': [0.9642032180145458],\n", + " 'Seed_09_noVelo+UT+T_strange_P>5GeV_nPV': [0.9642032180145458],\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_p': [0.9665521605496293],\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_pt': [0.9665521605496293],\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_phi': [0.9665521605496293],\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_eta': [0.9665521605496293],\n", + " 'Seed_12_noVelo+UT+T_SfromDB_P>5GeV_nPV': [0.9665521605496293]}]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "effdata.tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[{'8': [8], '9': [9]}, {'8': [8], '9': [9]}],\n", + " [{'8': [8], '9': [9]}, {'8': [8], '9': [9]}],\n", + " [{'8': [8], '9': [9]}, {'8': [8], '9': [9]}],\n", + " [{'8': [8], '9': [9]}, {'8': [8], '9': [9]}]]\n" + ] + } + ], + "source": [ + "arr = ak.ArrayBuilder()\n", + "\n", + "for i in range(4):\n", + " arr.begin_list()\n", + " for j in range(5,7):\n", + " arr.begin_record()\n", + " for k in range(8,10):\n", + " arr.field(str(k))\n", + " arr.begin_list()\n", + " arr.append(k)\n", + " arr.end_list()\n", + " arr.end_record()\n", + " arr.end_list()\n", + "\n", + "arr = ak.Array(arr)\n", + "arr.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### try reading data" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "upFile = uproot.open(\"/work/cetin/LHCb/stack/data/efficiency_plots.root\")\n", + "inFile = TFile.Open(\"/work/cetin/LHCb/stack/data/efficiency_plots.root\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'efficiency_p;1': 'TCanvas',\n", + " 'efficiency_pt;1': 'TCanvas',\n", + " 'efficiency_phi;1': 'TCanvas',\n", + " 'efficiency_eta;1': 'TCanvas',\n", + " 'efficiency_nPV;1': 'TCanvas'}" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "upFile[\"BestLong/01_long;1\"].classnames()" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'bool' object has no attribute 'Get'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m/work/cetin/LHCb/stack/Moore/Hlt/RecoConf/scripts/Task.ipynb Cell 14\u001b[0m line \u001b[0;36m3\n\u001b[1;32m 1\u001b[0m tree1 \u001b[39m=\u001b[39m inFile\u001b[39m.\u001b[39mCd(\u001b[39m\"\u001b[39m\u001b[39mBestLong\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m 2\u001b[0m tree2 \u001b[39m=\u001b[39m inFile\u001b[39m.\u001b[39mGet(\u001b[39m\"\u001b[39m\u001b[39mSeed/02_long\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m----> 3\u001b[0m c1 \u001b[39m=\u001b[39m tree1\u001b[39m.\u001b[39;49mGet(\u001b[39m\"\u001b[39m\u001b[39mefficiency_p;1\u001b[39m\u001b[39m\"\u001b[39m)\u001b[39m.\u001b[39mClone()\n\u001b[1;32m 4\u001b[0m c2 \u001b[39m=\u001b[39m tree2\u001b[39m.\u001b[39mGet(\u001b[39m\"\u001b[39m\u001b[39mefficiency_p;1\u001b[39m\u001b[39m\"\u001b[39m)\u001b[39m.\u001b[39mClone()\n\u001b[1;32m 6\u001b[0m c \u001b[39m=\u001b[39m tree1\u001b[39m.\u001b[39mCd(\u001b[39m\"\u001b[39m\u001b[39m01_long\u001b[39m\u001b[39m\"\u001b[39m)\n", + "\u001b[0;31mAttributeError\u001b[0m: 'bool' object has no attribute 'Get'" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Error in : Unknown directory BestLong\n" + ] + } + ], + "source": [ + "tree1 = inFile.Get(\"BestLong/01_long\")\n", + "tree2 = inFile.Get(\"Seed/02_long\")\n", + "c1 = tree1.Get(\"efficiency_p;1\").Clone()\n", + "c2 = tree2.Get(\"efficiency_p;1\").Clone()\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 251, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Canvas Name=efficiency_p Title=efficiency_p, Long, 2 <#eta < 5 Option=\n", + " TCanvas fXlowNDC=0 fYlowNDC=0 fWNDC=1 fHNDC=1 Name= efficiency_p Title= efficiency_p, Long, 2 <#eta < 5 Option=\n", + " OBJ: TList\tTList\tDoubly linked list : 0\n", + " TFrame X1= -600.000000 Y1=0.000000 X2=51100.000000 Y2=1.050000\n", + " OBJ: TMultiGraph\t\t : 1 at: 0x563287220c50\n", + " OBJ: TH1D\th_numerator_notElectrons\tp distribution, not e^{-} : 1 at: 0x5632879f5320\n", + " OBJ: TH1D\th_numerator_notElectrons\tp distribution, e^{-} : 1 at: 0x563287d3a6b0\n", + " OBJ: TLegend\tTPave \tX1= 25930.263182 Y1=0.318987 X2=58582.894927 Y2=0.731013\n", + " OBJ: TLegend\tTPave \tX1= 25930.263182 Y1=0.318987 X2=58582.894927 Y2=0.731013\n", + " OBJ: TGraphAsymmErrors\tEffChecker\tEffChecker not e^{-} : 1 at: 0x563287d374e0\n", + " OBJ: TGraphAsymmErrors\tEffChecker\tEffChecker e^{-} : 1 at: 0x563287cd4630\n", + " Text X=0.540000 Y=0.350000 Text=Long, 2 <#eta < 5\n", + " TGaxis X1=51100.000000 Y1=0.000000 X2=51100.000000 Y2=1.050000\n", + " OBJ: TH1F\t_copy\t : 1 at: 0x563287d3b260\n" + ] + } + ], + "source": [ + "ep = inFile.Get(\"BestLong/01_long/efficiency_p;1/EffChecker;2:p\")\n", + "ep.Get" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#c1.Draw()\n", + "c2.Draw()" + ] + }, + { + "cell_type": "code", + "execution_count": 203, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Canvas Name=efficiency_p Title=efficiency_p, Long, 2 <#eta < 5 Option=\n", + " TCanvas fXlowNDC=0 fYlowNDC=0 fWNDC=1 fHNDC=1 Name= efficiency_p Title= efficiency_p, Long, 2 <#eta < 5 Option=\n", + " OBJ: TList\tTList\tDoubly linked list : 0\n", + " TFrame X1= -600.000000 Y1=0.000000 X2=51100.000000 Y2=1.050000\n", + " OBJ: TMultiGraph\t\t : 1 at: 0x56328666c520\n", + " OBJ: TH1D\th_numerator_notElectrons\tp distribution, not e^{-} : 1 at: 0x563286cadc10\n", + " OBJ: TH1D\th_numerator_notElectrons\tp distribution, e^{-} : 1 at: 0x563286cae7c0\n", + " OBJ: TLegend\tTPave \tX1= 25930.263182 Y1=0.318987 X2=58582.894927 Y2=0.731013\n", + " OBJ: TLegend\tTPave \tX1= 25930.263182 Y1=0.318987 X2=58582.894927 Y2=0.731013\n", + " OBJ: TGraphAsymmErrors\tEffChecker\tEffChecker not e^{-} : 1 at: 0x563287222b00\n", + " OBJ: TGraphAsymmErrors\tEffChecker\tEffChecker e^{-} : 1 at: 0x563287b37170\n", + " Text X=0.540000 Y=0.350000 Text=Long, 2 <#eta < 5\n", + " TGaxis X1=51100.000000 Y1=0.000000 X2=51100.000000 Y2=1.050000\n", + " OBJ: TH1F\t_copy\t : 1 at: 0x563286caf970\n" + ] + } + ], + "source": [ + "data = c1.getf\n" + ] + }, + { + "cell_type": "code", + "execution_count": 215, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 215, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/scripts/utils/CompareConfigHistos.py b/scripts/utils/CompareConfigHistos.py new file mode 100644 index 0000000..ed735a2 --- /dev/null +++ b/scripts/utils/CompareConfigHistos.py @@ -0,0 +1,59 @@ +############################################################################### +# (c) Copyright 2019 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +# +# flake8: noqa + + +from collections import defaultdict + + +def getCompare(): + basedict = { + "long": {}, + "long_fromB": {}, + "long_fromB_P>5GeV": {}, + } + + basedict["long"]["BestLong"] = "01_long" + basedict["long"]["Seed"] = "02_long" + basedict["long"]["Match"] = "01_long" + basedict["long"]["ResidualMatch"] = "01_long" + basedict["long"]["Forward"] = "01_long" + + basedict["long_fromB"]["BestLong"] = "05_long_fromB" + basedict["long_fromB"]["Seed"] = "04_long_fromB" + basedict["long_fromB"]["Match"] = "05_long_fromB" + basedict["long_fromB"]["ResidualMatch"] = "05_long_fromB" + basedict["long_fromB"]["Forward"] = "05_long_fromB" + + basedict["long_fromB_P>5GeV"]["BestLong"] = "06_long_fromB_P>5GeV" + basedict["long_fromB_P>5GeV"]["Seed"] = "05_long_fromB_P>5GeV" + basedict["long_fromB_P>5GeV"]["Match"] = "06_long_fromB_P>5GeV" + basedict["long_fromB_P>5GeV"]["ResidualMatch"] = "06_long_fromB_P>5GeV" + basedict["long_fromB_P>5GeV"]["Forward"] = "06_long_fromB_P>5GeV" + + return basedict + + +def getCompColors(): + basedict = { + "Forward": {}, + "Match": {}, + "Seed": {}, + "BestLong": {}, + } + + basedict["Forward"] = 0 + basedict["Match"] = 4 + basedict["Seed"] = 6 + basedict["BestLong"] = 1 + + return basedict diff --git a/scripts/utils/ConfigHistos.py b/scripts/utils/ConfigHistos.py new file mode 100644 index 0000000..1bbdf85 --- /dev/null +++ b/scripts/utils/ConfigHistos.py @@ -0,0 +1,599 @@ +from collections import defaultdict + + +def efficiencyHistoDict(): + basedict = { + "eta": {}, + "p": {}, + "pt": {}, + "phi": {}, + "nPV": {}, + "docaz": {}, + "z": {}, + } + + basedict["eta"]["xTitle"] = "#eta" + basedict["eta"]["variable"] = "Eta" + basedict["eta"]["range"] = [2, 5] + + basedict["p"]["xTitle"] = "p [MeV]" + basedict["p"]["variable"] = "P" + basedict["p"]["range"] = [0, 50001] + + basedict["pt"]["xTitle"] = "p_{T} [MeV]" + basedict["pt"]["variable"] = "Pt" + basedict["pt"]["range"] = [0, 5001] + + basedict["phi"]["xTitle"] = "#phi [rad]" + basedict["phi"]["variable"] = "Phi" + basedict["phi"]["range"] = [-3.15, 3.15] + + basedict["nPV"]["xTitle"] = "# of PVs" + basedict["nPV"]["variable"] = "nPV" + basedict["nPV"]["range"] = [0, 15] + + basedict["docaz"]["xTitle"] = "docaz [mm]" + basedict["docaz"]["variable"] = "docaz" + basedict["docaz"]["range"] = [0, 10] + + basedict["z"]["xTitle"] = "PV z coordinate [mm]" + basedict["z"]["variable"] = "z" + basedict["z"]["range"] = [-200, 200] + + return basedict + + +def ghostHistoDict(): + basedict = { + "eta": {}, + "nPV": {}, + "pt": {}, + "p": {}, + } + + basedict["eta"]["xTitle"] = "#eta" + basedict["eta"]["variable"] = "Eta" + basedict["eta"]["range"] = [1.9, 5.1] + + basedict["nPV"]["xTitle"] = "# of PVs" + basedict["nPV"]["variable"] = "nPV" + basedict["nPV"]["range"] = [0, 16.5] + + basedict["pt"]["xTitle"] = "p_{T} [MeV]" + basedict["pt"]["variable"] = "Pt" + basedict["pt"]["range"] = [0, 5000] + + basedict["p"]["xTitle"] = "p [MeV]" + basedict["p"]["variable"] = "P" + basedict["p"]["range"] = [0, 50000] + + return basedict + + +def getCuts(): + basedict = { + "Velo": {}, + "Upstream": {}, + "Forward": {}, + "MuonMatch": {}, + "Match": {}, + "ResidualMatch": {}, + "Seed": {}, + "Downstream": {}, + "BestLong": {}, + "BestDownstream": {}, + "LongGhostFiltered": {}, + "DownstreamGhostFiltered": {}, + } + + basedict["Velo"] = [ + "01_velo", + "02_long", + "03_long_P>5GeV", + "04_long_strange", + "05_long_strange_P>5GeV", + "06_long_fromB", + "07_long_fromB_P>5GeV", + "11_long_fromB_P>3GeV_Pt>0.5GeV", + "12_UT_long_fromB_P>3GeV_Pt>0.5GeV", + ] + basedict["Upstream"] = [ + "01_velo", + "02_velo+UT", + "03_velo+UT_P>5GeV", + "07_long", + "08_long_P>5GeV", + "09_long_fromB", + "10_long_fromB_P>5GeV", + "14_long_fromB_P>3GeV_Pt>0.5GeV", + "15_UT_long_fromB_P>3GeV_Pt>0.5GeV", + ] + basedict["Forward"] = [ + "01_long", + "02_long_P>5GeV", + "03_long_strange", + "04_long_strange_P>5GeV", + "05_long_fromB", + "06_long_fromB_P>5GeV", + "10_long_fromB_P>3GeV_Pt>0.5GeV", + "11_UT_long_fromB_P>3GeV_Pt>0.5GeV", + ] + basedict["MuonMatch"] = ["01_long", "02_long_muon", "04_long_pion"] + + basedict["Match"] = [ + "01_long", + "02_long_P>5GeV", + "03_long_strange", + "04_long_strange_P>5GeV", + "05_long_fromB", + "06_long_fromB_P>5GeV", + "10_long_fromB_P>3GeV_Pt>0.5GeV", + "11_UT_long_fromB_P>3GeV_Pt>0.5GeV", + ] + + basedict["ResidualMatch"] = basedict["Match"] + + basedict["Seed"] = [ + "01_hasT", + "02_long", + "03_long_P>5GeV", + "04_long_fromB", + "05_long_fromB_P>5GeV", + # "08_noVelo+UT+T_strange", + # "09_noVelo+UT+T_strange_P>5GeV", + # "12_noVelo+UT+T_SfromDB_P>5GeV", + ] + + basedict["Downstream"] = [ + "01_UT+T", + "05_noVelo+UT+T_strange", + "06_noVelo+UT+T_strange_P>5GeV", + "13_noVelo+UT+T_SfromDB", + "14_noVelo+UT+T_SfromDB_P>5GeV", + ] + + basedict["BestLong"] = [ + "01_long", + "02_long_P>5GeV", + "03_long_strange", + "04_long_strange_P>5GeV", + "05_long_fromB", + "06_long_fromB_P>5GeV", + "10_long_fromB_P>3GeV_Pt>0.5GeV", + ] + + basedict["BestDownstream"] = [ + "01_UT+T", + "05_noVelo+UT+T_strange", + "06_noVelo+UT+T_strange_P>5GeV", + "13_noVelo+UT+T_SfromDB", + "14_noVelo+UT+T_SfromDB_P>5GeV", + ] + + basedict["LongGhostFiltered"] = [ + "01_long", + "02_long_P>5GeV", + "03_long_strange", + "04_long_strange_P>5GeV", + "05_long_fromB", + "06_long_fromB_P>5GeV", + "10_long_fromB_P>3GeV_Pt>0.5GeV", + ] + + basedict["DownstreamGhostFiltered"] = [ + "01_UT+T", + "05_noVelo+UT+T_strange", + "06_noVelo+UT+T_strange_P>5GeV", + "13_noVelo+UT+T_SfromDB", + "14_noVelo+UT+T_SfromDB_P>5GeV", + ] + + return basedict + + +def categoriesDict(): + basedict = defaultdict(lambda: defaultdict(dict)) + # VELO + basedict["Velo"]["01_velo"]["title"] = "Velo, 2 <#eta< 5" + basedict["Velo"]["02_long"]["title"] = "Long, 2 <#eta< 5" + basedict["Velo"]["03_long_P>5GeV"]["title"] = "Long, p>5GeV, 2<#eta< 5" + basedict["Velo"]["04_long_strange"]["title"] = "Long, from Strange, 2 <#eta < 5" + basedict["Velo"]["05_long_strange_P>5GeV"][ + "title" + ] = "Long, from Strange, p>5GeV, 2 <#eta < 5" + basedict["Velo"]["06_long_fromB"]["title"] = "Long from B, 2<#eta<5" + basedict["Velo"]["07_long_fromB_P>5GeV"]["title"] = "Long from B, p>5GeV, 2<#eta<5" + basedict["Velo"]["11_long_fromB_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "Long from B, p>3GeV, pt>0.5GeV, 2<#eta<5" + basedict["Velo"]["11_long_strange_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "Long from strange, p>3GeV, pt>0.5GeV, 2<#eta<5" + basedict["Velo"]["12_UT_long_fromB_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "UT Long, from B, p>3GeV, pt>0.5GeV, 2<#eta<5" + basedict["Velo"]["01_velo"]["plotElectrons"] = False + basedict["Velo"]["02_long"]["plotElectrons"] = True + basedict["Velo"]["03_long_P>5GeV"]["plotElectrons"] = False + basedict["Velo"]["04_long_strange"]["plotElectrons"] = False + basedict["Velo"]["05_long_strange_P>5GeV"]["plotElectrons"] = False + basedict["Velo"]["06_long_fromB"]["plotElectrons"] = True + basedict["Velo"]["07_long_fromB_P>5GeV"]["plotElectrons"] = True + basedict["Velo"]["11_long_fromB_P>3GeV_Pt>0.5GeV"]["plotElectrons"] = False + basedict["Velo"]["11_long_strange_P>3GeV_Pt>0.5GeV"]["plotElectrons"] = False + basedict["Velo"]["12_UT_long_fromB_P>3GeV_Pt>0.5GeV"]["plotElectrons"] = False + + basedict["Velo"]["02_long"]["Electrons"] = "08_long_electrons" + basedict["Velo"]["06_long_fromB"]["Electrons"] = "09_long_fromB_electrons" + basedict["Velo"]["07_long_fromB_P>5GeV"][ + "Electrons" + ] = "10_long_fromB_electrons_P>5GeV" + basedict["Velo"]["11_long_fromB_P>3GeV_Pt>0.5GeV"][ + "Electrons" + ] = "11_long_fromB_electrons_P>3GeV_Pt>0.5GeV" + + # UPSTREAM + basedict["Upstream"]["01_velo"]["title"] = "Velo, 2 <#eta < 5" + basedict["Upstream"]["02_velo+UT"]["title"] = "VeloUT, 2 <#eta < 5" + basedict["Upstream"]["03_velo+UT_P>5GeV"]["title"] = "VeloUT, p>5GeV, 2 <#eta < 5" + basedict["Upstream"]["07_long"]["title"] = "Long, 2 <#eta < 5" + basedict["Upstream"]["08_long_P>5GeV"]["title"] = "Long, p>5GeV, 2 <#eta < 5" + basedict["Upstream"]["09_long_fromB"]["title"] = "Long from B, 2 <#eta < 5" + basedict["Upstream"]["10_long_fromB_P>5GeV"][ + "title" + ] = "Long from B, p>5GeV, 2 <#eta < 5" + basedict["Upstream"]["14_long_fromB_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "Long, from B, p>3GeV, pt>0.5GeV" + basedict["Upstream"]["14_long_strange_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "Long, from strange, p>3GeV, pt>0.5GeV" + basedict["Upstream"]["15_UT_long_fromB_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "Long, from B, p>3GeV, pt>0.5GeV" + + basedict["Upstream"]["01_velo"]["plotElectrons"] = False + basedict["Upstream"]["02_velo+UT"]["plotElectrons"] = False + basedict["Upstream"]["03_velo+UT_P>5GeV"]["plotElectrons"] = False + basedict["Upstream"]["07_long"]["plotElectrons"] = True + basedict["Upstream"]["08_long_P>5GeV"]["plotElectrons"] = False + basedict["Upstream"]["09_long_fromB"]["plotElectrons"] = True + basedict["Upstream"]["10_long_fromB_P>5GeV"]["plotElectrons"] = True + basedict["Upstream"]["14_long_fromB_P>3GeV_Pt>0.5GeV"]["plotElectrons"] = False + basedict["Upstream"]["14_long_strange_P>3GeV_Pt>0.5GeV"]["plotElectrons"] = False + basedict["Upstream"]["15_UT_long_fromB_P>3GeV_Pt>0.5GeV"]["plotElectrons"] = False + basedict["Upstream"]["07_long"]["Electrons"] = "11_long_electrons" + basedict["Upstream"]["09_long_fromB"]["Electrons"] = "12_long_fromB_electrons" + basedict["Upstream"]["10_long_fromB_P>5GeV"][ + "Electrons" + ] = "13_long_fromB_electrons_P>5GeV" + basedict["Upstream"]["14_long_fromB_P>3GeV_Pt>0.5GeV"][ + "Electrons" + ] = "14_long_fromB_electrons_P>3GeV_Pt>0.5GeV" + + # FORwARD + basedict["Forward"]["01_long"]["Electrons"] = "07_long_electrons" + basedict["Forward"]["05_long_fromB"]["Electrons"] = "08_long_fromB_electrons" + basedict["Forward"]["06_long_fromB_P>5GeV"][ + "Electrons" + ] = "09_long_fromB_electrons_P>5GeV" + basedict["Forward"]["10_long_fromB_P>3GeV_Pt>0.5GeV"][ + "Electrons" + ] = "10_long_fromB_electrons_P>3GeV_Pt>0.5GeV" + + basedict["Forward"]["01_long"]["title"] = "Long, 2 <#eta < 5" + basedict["Forward"]["02_long_P>5GeV"]["title"] = "Long, p>5GeV, 2 <#eta < 5" + basedict["Forward"]["03_long_strange"]["title"] = "Long, from strange, 2 <#eta < 5" + basedict["Forward"]["04_long_strange_P>5GeV"][ + "title" + ] = "Long, from strange, p>5GeV, 2 <#eta < 5" + basedict["Forward"]["05_long_fromB"]["title"] = "Long from B, 2 <#eta < 5" + basedict["Forward"]["06_long_fromB_P>5GeV"][ + "title" + ] = "Long from B, p>5GeV 2 <#eta < 5" + basedict["Forward"]["10_long_fromB_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "Long from B, p>3GeV, pt>0.5GeV, 2 <#eta < 5" + basedict["Forward"]["10_long_strange_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "Long from strange, p>3GeV, pt>0.5GeV, 2 <#eta < 5" + basedict["Forward"]["11_UT_long_fromB_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "UT Long from B, p>3GeV, pt>0.5GeV, 2 <#eta < 5" + + basedict["Forward"]["01_long"]["plotElectrons"] = True + basedict["Forward"]["02_long_P>5GeV"]["plotElectrons"] = False + basedict["Forward"]["03_long_strange"]["plotElectrons"] = False + basedict["Forward"]["04_long_strange_P>5GeV"]["plotElectrons"] = False + basedict["Forward"]["05_long_fromB"]["plotElectrons"] = True + basedict["Forward"]["06_long_fromB_P>5GeV"]["plotElectrons"] = True + basedict["Forward"]["10_long_fromB_P>3GeV_Pt>0.5GeV"]["plotElectrons"] = False + basedict["Forward"]["11_UT_long_fromB_P>3GeV_Pt>0.5GeV"]["plotElectrons"] = False + + # MUONMATCH + basedict["MuonMatch"]["01_long"]["title"] = "Long, forward track, 2 <#eta< 5" + basedict["MuonMatch"]["02_long_muon"][ + "title" + ] = "Long, #mu, forward track, 2 <#eta< 5" + basedict["MuonMatch"]["04_long_pion"][ + "title" + ] = "Long, #pi, forward track, 2 <#eta< 5" + + # MATCH + basedict["Match"]["01_long"]["Electrons"] = "07_long_electrons" + basedict["Match"]["05_long_fromB"]["Electrons"] = "08_long_fromB_electrons" + basedict["Match"]["06_long_fromB_P>5GeV"][ + "Electrons" + ] = "09_long_fromB_electrons_P>5GeV" + basedict["Match"]["10_long_fromB_P>3GeV_Pt>0.5GeV"][ + "Electrons" + ] = "10_long_fromB_electrons_P>3GeV_Pt>0.5GeV" + + basedict["Match"]["01_long"]["title"] = "Long, 2 <#eta < 5" + basedict["Match"]["02_long_P>5GeV"]["title"] = "Long, p>5GeV, 2 <#eta < 5" + basedict["Match"]["03_long_strange"]["title"] = "Long, from strange, 2 <#eta < 5" + basedict["Match"]["04_long_strange_P>5GeV"][ + "title" + ] = "Long, from strange, p>5GeV, 2 <#eta < 5" + basedict["Match"]["05_long_fromB"]["title"] = "Long from B, 2 <#eta < 5" + basedict["Match"]["06_long_fromB_P>5GeV"][ + "title" + ] = "Long from B, p>5GeV 2 <#eta < 5" + basedict["Match"]["10_long_fromB_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "Long from B, p>3GeV, pt>0.5GeV, 2 <#eta < 5" + basedict["Match"]["10_long_strange_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "Long from strange, p>3GeV, pt>0.5GeV, 2 <#eta < 5" + basedict["Match"]["11_UT_long_fromB_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "UT Long from B, p>3GeV, pt>0.5GeV, 2 <#eta < 5" + + basedict["Match"]["01_long"]["plotElectrons"] = True + basedict["Match"]["02_long_P>5GeV"]["plotElectrons"] = False + basedict["Match"]["03_long_strange"]["plotElectrons"] = False + basedict["Match"]["04_long_strange_P>5GeV"]["plotElectrons"] = False + basedict["Match"]["05_long_fromB"]["plotElectrons"] = True + basedict["Match"]["06_long_fromB_P>5GeV"]["plotElectrons"] = True + basedict["Match"]["10_long_fromB_P>3GeV_Pt>0.5GeV"]["plotElectrons"] = False + basedict["Match"]["10_long_strange_P>3GeV_Pt>0.5GeV"]["plotElectrons"] = False + basedict["Match"]["11_UT_long_fromB_P>3GeV_Pt>0.5GeV"]["plotElectrons"] = False + + # ResidualMATCH + basedict["ResidualMatch"]["01_long"]["Electrons"] = "07_long_electrons" + basedict["ResidualMatch"]["05_long_fromB"]["Electrons"] = "08_long_fromB_electrons" + basedict["ResidualMatch"]["06_long_fromB_P>5GeV"][ + "Electrons" + ] = "09_long_fromB_electrons_P>5GeV" + basedict["ResidualMatch"]["10_long_fromB_P>3GeV_Pt>0.5GeV"][ + "Electrons" + ] = "10_long_fromB_electrons_P>3GeV_Pt>0.5GeV" + + basedict["ResidualMatch"]["01_long"]["title"] = "Long, 2 <#eta < 5" + basedict["ResidualMatch"]["02_long_P>5GeV"]["title"] = "Long, p>5GeV, 2 <#eta < 5" + basedict["ResidualMatch"]["03_long_strange"][ + "title" + ] = "Long, from strange, 2 <#eta < 5" + basedict["ResidualMatch"]["04_long_strange_P>5GeV"][ + "title" + ] = "Long, from strange, p>5GeV, 2 <#eta < 5" + basedict["ResidualMatch"]["05_long_fromB"]["title"] = "Long from B, 2 <#eta < 5" + basedict["ResidualMatch"]["06_long_fromB_P>5GeV"][ + "title" + ] = "Long from B, p>5GeV 2 <#eta < 5" + basedict["ResidualMatch"]["10_long_fromB_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "Long from B, p>3GeV, pt>0.5GeV, 2 <#eta < 5" + basedict["ResidualMatch"]["10_long_strange_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "Long from strange, p>3GeV, pt>0.5GeV, 2 <#eta < 5" + basedict["ResidualMatch"]["11_UT_long_fromB_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "UT Long from B, p>3GeV, pt>0.5GeV, 2 <#eta < 5" + + basedict["ResidualMatch"]["01_long"]["plotElectrons"] = True + basedict["ResidualMatch"]["02_long_P>5GeV"]["plotElectrons"] = False + basedict["ResidualMatch"]["03_long_strange"]["plotElectrons"] = False + basedict["ResidualMatch"]["04_long_strange_P>5GeV"]["plotElectrons"] = False + basedict["ResidualMatch"]["05_long_fromB"]["plotElectrons"] = True + basedict["ResidualMatch"]["06_long_fromB_P>5GeV"]["plotElectrons"] = True + basedict["ResidualMatch"]["10_long_fromB_P>3GeV_Pt>0.5GeV"]["plotElectrons"] = False + basedict["ResidualMatch"]["10_long_strange_P>3GeV_Pt>0.5GeV"][ + "plotElectrons" + ] = False + basedict["ResidualMatch"]["11_UT_long_fromB_P>3GeV_Pt>0.5GeV"][ + "plotElectrons" + ] = False + + # SEED + basedict["Seed"]["01_hasT"]["Electrons"] = "13_hasT_electrons" + basedict["Seed"]["02_long"]["Electrons"] = "14_long_electrons" + basedict["Seed"]["03_long_P>5GeV"]["Electrons"] = "16_long_electrons_P>5GeV" + basedict["Seed"]["04_long_fromB"]["Electrons"] = "15_long_fromB_electrons" + basedict["Seed"]["05_long_fromB_P>5GeV"][ + "Electrons" + ] = "17_long_fromB_electrons_P>5GeV" + + basedict["Seed"]["01_hasT"]["title"] = "T, 2 <#eta < 5" + basedict["Seed"]["02_long"]["title"] = "Long, 2 <#eta < 5" + basedict["Seed"]["03_long_P>5GeV"]["title"] = "Long, p>5GeV, 2 <#eta < 5" + basedict["Seed"]["04_long_fromB"]["title"] = "Long, from B, 2 <#eta < 5" + basedict["Seed"]["05_long_fromB_P>5GeV"][ + "title" + ] = "Long from B, p>5GeV, 2 <#eta < 5" + basedict["Seed"]["08_noVelo+UT+T_strange"][ + "title" + ] = "Down from strange, 2 <#eta < 5" + basedict["Seed"]["09_noVelo+UT+T_strange_P>5GeV"][ + "title" + ] = "Down from strange, p>5GeV, 2 <#eta < 5" + basedict["Seed"]["12_noVelo+UT+T_SfromDB_P>5GeV"][ + "title" + ] = "Down from strange from B/D, p>5GeV, 2 <#eta < 5" + + basedict["Seed"]["01_hasT"]["plotElectrons"] = False + basedict["Seed"]["02_long"]["plotElectrons"] = True + basedict["Seed"]["03_long_P>5GeV"]["plotElectrons"] = False + basedict["Seed"]["04_long_fromB"]["plotElectrons"] = True + basedict["Seed"]["05_long_fromB_P>5GeV"]["plotElectrons"] = True + ################################## + basedict["Seed"]["08_noVelo+UT+T_strange"]["plotElectrons"] = False + basedict["Seed"]["09_noVelo+UT+T_strange_P>5GeV"]["plotElectrons"] = False + basedict["Seed"]["12_noVelo+UT+T_SfromDB_P>5GeV"]["plotElectrons"] = False + + # DOWNSTREAM + basedict["Downstream"]["01_UT+T"]["title"] = "UT+T, 2 <#eta < 5" + basedict["Downstream"]["05_noVelo+UT+T_strange"][ + "title" + ] = "Down from strange, 2 <#eta < 5" + basedict["Downstream"]["06_noVelo+UT+T_strange_P>5GeV"][ + "title" + ] = "Down from strange, p>5GeV, 2 <#eta < 5" + basedict["Downstream"]["13_noVelo+UT+T_SfromDB"][ + "title" + ] = "Down from strange from B/D, 2 <#eta < 5" + basedict["Downstream"]["14_noVelo+UT+T_SfromDB_P>5GeV"][ + "title" + ] = "Down from strange from B/D, p>5GeV, 2 <#eta < 5" + + basedict["Downstream"]["01_UT+T"]["plotElectrons"] = False + basedict["Downstream"]["05_noVelo+UT+T_strange"]["plotElectrons"] = False + basedict["Downstream"]["06_noVelo+UT+T_strange_P>5GeV"]["plotElectrons"] = False + basedict["Downstream"]["13_noVelo+UT+T_SfromDB"]["plotElectrons"] = False + basedict["Downstream"]["14_noVelo+UT+T_SfromDB_P>5GeV"]["plotElectrons"] = False + + # BESTLONG + basedict["BestLong"]["01_long"]["title"] = "Long, 2 <#eta < 5" + basedict["BestLong"]["02_long_P>5GeV"]["title"] = "Long, p>5GeV, 2 <#eta < 5" + basedict["BestLong"]["03_long_strange"]["title"] = "Long, from strange, 2 <#eta < 5" + basedict["BestLong"]["04_long_strange_P>5GeV"][ + "title" + ] = "Long, from strange, p>5GeV, 2 <#eta < 5" + basedict["BestLong"]["05_long_fromB"]["title"] = "Long from B, 2 <#eta < 5" + basedict["BestLong"]["06_long_fromB_P>5GeV"][ + "title" + ] = "Long from B, p>5GeV 2 <#eta < 5" + basedict["BestLong"]["10_long_fromB_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "Long from B, p>3GeV, pt>0.5GeV, 2 <#eta < 5" + basedict["BestLong"]["10_long_strange_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "Long from strange, p>3GeV, pt>0.5GeV, 2 <#eta < 5" + + basedict["BestLong"]["01_long"]["plotElectrons"] = True + basedict["BestLong"]["02_long_P>5GeV"]["plotElectrons"] = False + basedict["BestLong"]["03_long_strange"]["plotElectrons"] = False + basedict["BestLong"]["04_long_strange_P>5GeV"]["plotElectrons"] = False + basedict["BestLong"]["05_long_fromB"]["plotElectrons"] = True + basedict["BestLong"]["06_long_fromB_P>5GeV"]["plotElectrons"] = True + basedict["BestLong"]["10_long_fromB_P>3GeV_Pt>0.5GeV"]["plotElectrons"] = False + basedict["BestLong"]["10_long_strange_P>3GeV_Pt>0.5GeV"]["plotElectrons"] = False + + basedict["BestLong"]["01_long"]["Electrons"] = "07_long_electrons" + basedict["BestLong"]["05_long_fromB"]["Electrons"] = "08_long_fromB_electrons" + basedict["BestLong"]["06_long_fromB_P>5GeV"][ + "Electrons" + ] = "09_long_fromB_electrons_P>5GeV" + basedict["BestLong"]["10_long_fromB_P>3GeV_Pt>0.5GeV"][ + "Electrons" + ] = "10_long_fromB_electrons_P>3GeV_Pt>0.5GeV" + + # + # BESTDOWNSTREAM + basedict["BestDownstream"]["01_UT+T"]["title"] = "UT+T, 2 <#eta < 5" + basedict["BestDownstream"]["05_noVelo+UT+T_strange"][ + "title" + ] = "Down from strange, 2 <#eta < 5" + basedict["BestDownstream"]["06_noVelo+UT+T_strange_P>5GeV"][ + "title" + ] = "Down from strange, p>5GeV, 2 <#eta < 5" + basedict["BestDownstream"]["13_noVelo+UT+T_SfromDB"][ + "title" + ] = "Down from strange from B/D, 2 <#eta < 5" + basedict["BestDownstream"]["14_noVelo+UT+T_SfromDB_P>5GeV"][ + "title" + ] = "Down from strange from B/D, p>5GeV, 2 <#eta < 5" + + basedict["BestDownstream"]["01_UT+T"]["plotElectrons"] = False + basedict["BestDownstream"]["05_noVelo+UT+T_strange"]["plotElectrons"] = False + basedict["BestDownstream"]["06_noVelo+UT+T_strange_P>5GeV"]["plotElectrons"] = False + basedict["BestDownstream"]["13_noVelo+UT+T_SfromDB"]["plotElectrons"] = False + basedict["BestDownstream"]["14_noVelo+UT+T_SfromDB_P>5GeV"]["plotElectrons"] = False + + # + # LONGGHOSTFILTERED + basedict["LongGhostFiltered"]["01_long"]["title"] = "Long, 2 <#eta < 5" + basedict["LongGhostFiltered"]["02_long_P>5GeV"][ + "title" + ] = "Long, p>5GeV, 2 <#eta < 5" + basedict["LongGhostFiltered"]["03_long_strange"][ + "title" + ] = "Long, from strange, 2 <#eta < 5" + basedict["LongGhostFiltered"]["04_long_strange_P>5GeV"][ + "title" + ] = "Long, from strange, p>5GeV, 2 <#eta < 5" + basedict["LongGhostFiltered"]["05_long_fromB"]["title"] = "Long from B, 2 <#eta < 5" + basedict["LongGhostFiltered"]["06_long_fromB_P>5GeV"][ + "title" + ] = "Long from B, p>5GeV 2 <#eta < 5" + basedict["LongGhostFiltered"]["10_long_fromB_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "Long from B, p>3GeV, pt>0.5GeV, 2 <#eta < 5" + basedict["LongGhostFiltered"]["10_long_strange_P>3GeV_Pt>0.5GeV"][ + "title" + ] = "Long from strange, p>3GeV, pt>0.5GeV, 2 <#eta < 5" + + basedict["LongGhostFiltered"]["01_long"]["plotElectrons"] = True + basedict["LongGhostFiltered"]["02_long_P>5GeV"]["plotElectrons"] = False + basedict["LongGhostFiltered"]["03_long_strange"]["plotElectrons"] = False + basedict["LongGhostFiltered"]["04_long_strange_P>5GeV"]["plotElectrons"] = False + basedict["LongGhostFiltered"]["05_long_fromB"]["plotElectrons"] = True + basedict["LongGhostFiltered"]["06_long_fromB_P>5GeV"]["plotElectrons"] = True + basedict["LongGhostFiltered"]["10_long_fromB_P>3GeV_Pt>0.5GeV"][ + "plotElectrons" + ] = False + basedict["LongGhostFiltered"]["10_long_strange_P>3GeV_Pt>0.5GeV"][ + "plotElectrons" + ] = False + + basedict["LongGhostFiltered"]["01_long"]["Electrons"] = "07_long_electrons" + basedict["LongGhostFiltered"]["05_long_fromB"][ + "Electrons" + ] = "08_long_fromB_electrons" + basedict["LongGhostFiltered"]["06_long_fromB_P>5GeV"][ + "Electrons" + ] = "09_long_fromB_electrons_P>5GeV" + basedict["LongGhostFiltered"]["10_long_fromB_P>3GeV_Pt>0.5GeV"][ + "Electrons" + ] = "10_long_fromB_electrons_P>3GeV_Pt>0.5GeV" + + # DOWNSTREAMGHOSTFILTERED + basedict["DownstreamGhostFiltered"]["01_UT+T"]["title"] = "UT+T, 2 <#eta < 5" + basedict["DownstreamGhostFiltered"]["05_noVelo+UT+T_strange"][ + "title" + ] = "Down from strange, 2 <#eta < 5" + basedict["DownstreamGhostFiltered"]["06_noVelo+UT+T_strange_P>5GeV"][ + "title" + ] = "Down from strange, p>5GeV, 2 <#eta < 5" + basedict["DownstreamGhostFiltered"]["13_noVelo+UT+T_SfromDB"][ + "title" + ] = "Down from strange from B/D, 2 <#eta < 5" + basedict["DownstreamGhostFiltered"]["14_noVelo+UT+T_SfromDB_P>5GeV"][ + "title" + ] = "Down from strange from B/D, p>5GeV, 2 <#eta < 5" + + basedict["DownstreamGhostFiltered"]["01_UT+T"]["plotElectrons"] = False + basedict["DownstreamGhostFiltered"]["05_noVelo+UT+T_strange"][ + "plotElectrons" + ] = False + basedict["DownstreamGhostFiltered"]["06_noVelo+UT+T_strange_P>5GeV"][ + "plotElectrons" + ] = False + basedict["DownstreamGhostFiltered"]["13_noVelo+UT+T_SfromDB"][ + "plotElectrons" + ] = False + basedict["DownstreamGhostFiltered"]["14_noVelo+UT+T_SfromDB_P>5GeV"][ + "plotElectrons" + ] = False + + return basedict diff --git a/scripts/utils/LHCbStyle.py b/scripts/utils/LHCbStyle.py new file mode 100644 index 0000000..0ce0673 --- /dev/null +++ b/scripts/utils/LHCbStyle.py @@ -0,0 +1,137 @@ +from ROOT import gROOT, TH1, TH1F, TH1D, TEfficiency +from ROOT import TStyle + + +def set_style(graph, color, marker, style): + graph.SetLineColor(color) + graph.SetMarkerColor(color) + graph.SetMarkerSize(1.0) + graph.SetMarkerStyle(marker) + if ( + type(graph) == TH1F + or type(graph) == TH1 + or type(graph) == TH1D + or type(graph) == TEfficiency + ): + graph.SetFillColor(color) + # graph.SetFillColorAlpha(color, 0.5) + graph.SetFillStyle(style) + graph.SetLineWidth(2) + if style == 0: + graph.SetFillColor(0) + graph.SetStats(False) + graph.GetYaxis().SetTitleOffset(1.0) + if type(graph) != TEfficiency: + graph.GetYaxis().SetTitleOffset(0.85) + graph.GetYaxis().SetTitleSize(0.06) + graph.GetYaxis().SetLabelSize(0.06) + graph.GetXaxis().SetTitleSize(0.06) + graph.GetXaxis().SetLabelSize(0.06) + graph.GetXaxis().SetTitleFont(132) + graph.GetXaxis().SetLabelFont(132) + graph.GetYaxis().SetTitleFont(132) + graph.GetYaxis().SetLabelFont(132) + + return graph + + +def setLHCbStyle(): + global lhcbStyle + + lhcbFont = 132 + lhcbTSize = 0.05 + lhcbWidth = 2 + + lhcbStyle = TStyle("lhcbStyle", "LHCb plots style") + lhcbStyle.SetFillColor(1) + lhcbStyle.SetFillStyle(1001) # solid + lhcbStyle.SetFrameFillColor(0) + lhcbStyle.SetFrameBorderMode(0) + lhcbStyle.SetPadBorderMode(0) + lhcbStyle.SetPadColor(0) + lhcbStyle.SetCanvasBorderMode(0) + lhcbStyle.SetCanvasColor(0) + lhcbStyle.SetStatColor(0) + lhcbStyle.SetLegendBorderSize(0) + lhcbStyle.SetLegendFont(132) + + # use large fonts + lhcbStyle.SetTextFont(lhcbFont) + lhcbStyle.SetTitleFont(lhcbFont) + lhcbStyle.SetTextSize(lhcbTSize) + lhcbStyle.SetLabelFont(lhcbFont, "x") + lhcbStyle.SetLabelFont(lhcbFont, "y") + lhcbStyle.SetLabelFont(lhcbFont, "z") + lhcbStyle.SetLabelSize(lhcbTSize, "x") + lhcbStyle.SetLabelSize(lhcbTSize, "y") + lhcbStyle.SetLabelSize(lhcbTSize, "z") + lhcbStyle.SetTitleFont(lhcbFont) + lhcbStyle.SetTitleFont(lhcbFont, "x") + lhcbStyle.SetTitleFont(lhcbFont, "y") + lhcbStyle.SetTitleFont(lhcbFont, "z") + lhcbStyle.SetTitleSize(1.2 * lhcbTSize, "x") + lhcbStyle.SetTitleSize(1.2 * lhcbTSize, "y") + lhcbStyle.SetTitleSize(1.2 * lhcbTSize, "z") + + # set the paper & margin sizes + lhcbStyle.SetPaperSize(20, 26) + lhcbStyle.SetPadTopMargin(0.05) + lhcbStyle.SetPadRightMargin(0.05) # increase for colz plots + lhcbStyle.SetPadBottomMargin(0.16) + lhcbStyle.SetPadLeftMargin(0.14) + + # use medium bold lines and thick markers + lhcbStyle.SetLineWidth(lhcbWidth) + lhcbStyle.SetFrameLineWidth(lhcbWidth) + lhcbStyle.SetHistLineWidth(lhcbWidth) + lhcbStyle.SetFuncWidth(lhcbWidth) + lhcbStyle.SetGridWidth(lhcbWidth) + lhcbStyle.SetLineStyleString(2, "[12 12]") + # postscript dashes + lhcbStyle.SetMarkerStyle(20) + lhcbStyle.SetMarkerSize(1.0) + + # label offsets + lhcbStyle.SetLabelOffset(0.010, "X") + lhcbStyle.SetLabelOffset(0.010, "Y") + + # by default, do not display histogram decorations: + lhcbStyle.SetOptStat(0) + # lhcbStyle.SetOptStat("emr") # show only nent -e , mean - m , rms -r + # full opts at http:#root.cern.ch/root/html/TStyle.html#TStyle:SetOptStat + lhcbStyle.SetStatFormat("6.3g") # specified as c printf options + lhcbStyle.SetOptTitle(0) + lhcbStyle.SetOptFit(0) + # lhcbStyle.SetOptFit(1011) # order is probability, Chi2, errors, parameters + # titles + lhcbStyle.SetTitleOffset(0.95, "X") + lhcbStyle.SetTitleOffset(0.85, "Y") + lhcbStyle.SetTitleOffset(1.2, "Z") + lhcbStyle.SetTitleFillColor(0) + lhcbStyle.SetTitleStyle(0) + lhcbStyle.SetTitleBorderSize(0) + lhcbStyle.SetTitleFont(lhcbFont, "title") + lhcbStyle.SetTitleX(0.0) + lhcbStyle.SetTitleY(1.0) + lhcbStyle.SetTitleW(1.0) + lhcbStyle.SetTitleH(0.05) + + # look of the statistics box: + lhcbStyle.SetStatBorderSize(0) + lhcbStyle.SetStatFont(lhcbFont) + lhcbStyle.SetStatFontSize(0.05) + lhcbStyle.SetStatX(0.9) + lhcbStyle.SetStatY(0.9) + lhcbStyle.SetStatW(0.25) + lhcbStyle.SetStatH(0.15) + + # put tick marks on top and RHS of plots + lhcbStyle.SetPadTickX(1) + lhcbStyle.SetPadTickY(1) + + # histogram divisions: only 5 in x to avoid label overlaps + lhcbStyle.SetNdivisions(505, "x") + lhcbStyle.SetNdivisions(510, "y") + + gROOT.SetStyle("lhcbStyle") + return diff --git a/scripts/utils/Legend.py b/scripts/utils/Legend.py new file mode 100644 index 0000000..61fbd24 --- /dev/null +++ b/scripts/utils/Legend.py @@ -0,0 +1,156 @@ +from __future__ import division +import ROOT +from ROOT import gStyle + +# Some convenience function to easily iterate over the parts of the collections +# Needed if importing this script from another script in case TMultiGraphs are used +# ROOT.SetMemoryPolicy(ROOT.kMemoryStrict) + +# Start a bit right of the Yaxis and above the Xaxis to not overlap with the ticks +start, stop = 0.28, 0.52 +x_width, y_width = 0.4, 0.2 +PLACES = [ + (start, stop - y_width, start + x_width, stop), # top left opt + (start, start, start + x_width, start + y_width), # bottom left opt + (stop - x_width, stop - y_width, stop, stop), # top right opt + (stop - x_width, start, stop, start + y_width), # bottom right opt + (stop - x_width, 0.5 - y_width / 2, stop, 0.5 + y_width / 2), # right + (start, 0.5 - y_width / 2, start + x_width, 0.5 + y_width / 2), +] # left + +# Needed if importing this script from another script in case TMultiGraphs are used +# ROOT.SetMemoryPolicy(ROOT.kMemoryStrict) + + +def transform_to_user(canvas, x1, y1, x2, y2): + """ + Transforms from Pad coordinates to User coordinates. + + This can probably be replaced by using the built-in conversion commands. + """ + xstart = canvas.GetX1() + xlength = canvas.GetX2() - xstart + xlow = xlength * x1 + xstart + xhigh = xlength * x2 + xstart + if canvas.GetLogx(): + xlow = 10**xlow + xhigh = 10**xhigh + + ystart = canvas.GetY1() + ylength = canvas.GetY2() - ystart + ylow = ylength * y1 + ystart + yhigh = ylength * y2 + ystart + if canvas.GetLogy(): + ylow = 10**ylow + yhigh = 10**yhigh + + return xlow, ylow, xhigh, yhigh + + +def overlap_h(hist, x1, y1, x2, y2): + xlow = hist.FindFixBin(x1) + xhigh = hist.FindFixBin(x2) + for i in range(xlow, xhigh + 1): + val = hist.GetBinContent(i) + # Values + if y1 <= val <= y2: + return True + # Errors + if val + hist.GetBinErrorUp(i) > y1 and val - hist.GetBinErrorLow(i) < y2: + return True + return False + + +def overlap_rect(rect1, rect2): + """Do the two rectangles overlap?""" + if rect1[0] > rect2[2] or rect1[2] < rect2[0]: + return False + if rect1[1] > rect2[3] or rect1[3] < rect2[1]: + return False + return True + + +def to_list(pointer): + """turns pointer to array into list after checking if pointer is nullptr""" + if len(pointer) == 0: + return [] + return list(pointer) + + +def overlap_g(graph, x1, y1, x2, y2): + x_values = to_list(graph.GetX()) + y_values = to_list(graph.GetY()) + + x_err = to_list(graph.GetEX()) or [0] * len(x_values) + y_err = to_list(graph.GetEY()) or [0] * len(y_values) + + for x, ex, y, ey in zip(x_values, x_err, y_values, y_err): + # Could maybe be less conservative + if overlap_rect((x1, y1, x2, y2), (x - ex, y - ey, x + ex, y + ey)): + # print "Overlap with graph", graph.GetName(), "at point", (x, y) + return True + return False + + +def place_legend( + canvas, + x1=None, + y1=None, + x2=None, + y2=None, + header="LHCb Simulation", + option="lpe", +): + gStyle.SetFillStyle(0) + gStyle.SetTextSize(0.06) + # If position is specified, use that + if all(x is not None for x in (x1, x2, y1, y2)): + return canvas.BuildLegend(x1, y1, x2, y2, header, option) + + # Make sure all objects are correctly registered + canvas.Update() + + # Build a list of objects to check for overlaps + objects = [] + for x in canvas.GetListOfPrimitives(): + if isinstance(x, ROOT.TH1) or isinstance(x, ROOT.TGraph): + objects.append(x) + elif isinstance(x, ROOT.THStack) or isinstance(x, ROOT.TMultiGraph): + objects.extend(x) + + for place in PLACES: + place_user = canvas.PadtoU(*place) + # Make sure there are no overlaps + if any(obj.Overlap(*place_user) for obj in objects): + continue + return canvas.BuildLegend( + place[0], + place[1], + place[2], + place[3], + header, + option, + ) + # As a fallback, use the default values, taken from TCanvas::BuildLegend + return canvas.BuildLegend(0.4, 0.37, 0.88, 0.68, header, option) + + +# Monkey patch ROOT objects to make it all work +ROOT.THStack.__iter__ = lambda self: iter(self.GetHists()) +ROOT.TMultiGraph.__iter__ = lambda self: iter(self.GetListOfGraphs()) +ROOT.TH1.Overlap = overlap_h +ROOT.TGraph.Overlap = overlap_g +ROOT.TPad.PadtoU = transform_to_user +ROOT.TPad.PlaceLegend = place_legend + + +def set_legend(legend, gr, title, colors, label): + legend.SetTextSize(0.05) + legend.SetFillColor(0) + legend.SetShadowColor(0) + legend.SetBorderSize(0) + legend.SetTextFont(132) + for idx, lab in enumerate(label): + legend.AddEntry(gr[lab], title[lab], "lep").SetTextColor(colors[idx]) + + return legend diff --git a/scripts/utils/components.py b/scripts/utils/components.py new file mode 100644 index 0000000..a1a4315 --- /dev/null +++ b/scripts/utils/components.py @@ -0,0 +1,48 @@ +# flake8: noqaq +import inspect +import re +import importlib +import warnings +from collections import OrderedDict +from functools import lru_cache +from html import escape as html_escape + +# String that separates a name from its unique ID +_UNIQUE_SEPARATOR = "_" +_IDENTITY_LENGTH = 8 +_IDENTITY_TABLE = {} + +# If a property ends with this key, it is a pseudo-property which exists to +# hold the data dependencies of another property value +_DATA_DEPENDENCY_KEY_SUFFIX = "_PyConfDataDependencies" + +_FLOW_GRAPH_NODE_COLOUR = "aliceblue" +_FLOW_GRAPH_INPUT_COLOUR = "deepskyblue1" +_FLOW_GRAPH_OUTPUT_COLOUR = "coral1" + + +def unique_name_ext_re(): + return "(?:%s[1234567890abcdef]{%s})?" % (_UNIQUE_SEPARATOR, _IDENTITY_LENGTH) + + +def findRootObjByName(rootFile, name): + """ + Finds the object with given name in the given root file, + where name is a regular expression or a set of them separated by '/' in case directories are used + """ + curObj = rootFile + for n in name.split("/"): + matches = [ + k.GetName() for k in curObj.GetListOfKeys() if re.fullmatch(n, k.GetName()) + ] + if len(matches) > 1: + raise Exception( + "Collision of names in Root : found several objects with name matching %s inside %s : %s" + % (n, curObj.GetName(), matches) + ) + if len(matches) == 0: + raise Exception( + "Failed to find object with name %s inside %s" % (n, curObj.GetName()) + ) + curObj = curObj.Get(matches[0]) + return curObj diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..4449e86 --- /dev/null +++ b/setup.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +if [ ! -f "env/miniconda.sh" ]; then + wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O env/miniconda.sh +fi + +if [ ! -d "env/tuner_env" ]; then + bash env/miniconda.sh -b -p env/tuner_env && + ( + source env/tuner_env/bin/activate + conda install -y -c conda-forge mamba + conda env create -f env/environment.yaml -n tuner + conda activate tuner + conda env config vars set PATH="/cvmfs/sft.cern.ch/lcg/external/texlive/latest/bin/x86_64-linux:${PATH}" + ) +fi diff --git a/test/ghost_data_new_vars.ipynb b/test/ghost_data_new_vars.ipynb new file mode 100644 index 0000000..40705b4 --- /dev/null +++ b/test/ghost_data_new_vars.ipynb @@ -0,0 +1,186 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "import uproot\n", + "import ROOT\n", + "import matplotlib.pyplot as plt\n", + "import awkward as ak\n", + "import numpy as np\n", + "from numpy import abs\n", + "import math\n", + "from array import array\n", + "import mplhep\n", + "mplhep.style.use([\"LHCbTex2\"])\n", + "#%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "File = uproot.open(\"/work/cetin/LHCb/reco_tuner/data/ghost_data_B_new_vars_default_weights.root:PrMatchNN_3e224c41.PrMCDebugMatchToolNN/MVAInputAndOutput\")\n", + "allcolumns = File.arrays()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "tracked = allcolumns[allcolumns[\"mc_quality\"]==-1]\n", + "ghost = allcolumns[allcolumns[\"mc_quality\"]==0]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "tracked_zmag = ak.to_numpy(tracked[\"mc_zMag\"])\n", + "\n", + "ghost_zmag = ak.to_numpy(ghost[\"mc_zMag\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.hist(tracked_zmag, bins=100, label=\"tracked\", alpha=0.6, density=True)\n", + "plt.hist(ghost_zmag, bins=100, label=\"ghosts\", alpha=0.6, density=True)\n", + "plt.xlabel(r\"$z_{mag}$\")\n", + "plt.ylabel(\"a.u.\")\n", + "plt.title(\"Magnet kink position\")\n", + "plt.legend()\n", + "#plt.colorbar(h2[3])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "tuner", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/test/ghost_data_test.ipynb b/test/ghost_data_test.ipynb new file mode 100644 index 0000000..cfdf048 --- /dev/null +++ b/test/ghost_data_test.ipynb @@ -0,0 +1,408 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Welcome to JupyROOT 6.28/04\n" + ] + } + ], + "source": [ + "import uproot\n", + "import ROOT\n", + "import matplotlib.pyplot as plt\n", + "import awkward as ak\n", + "import numpy as np\n", + "import math\n", + "from array import array\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "File = uproot.open(\"/work/cetin/LHCb/reco_tuner/data/ghost_data_B_default_weights.root:PrMatchNN_3e224c41.PrMCDebugMatchToolNN/MVAInputAndOutput\")\n", + "allcolumns = File.arrays()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "tracked = allcolumns[allcolumns[\"mc_quality\"]==-1]\n", + "ghost = allcolumns[allcolumns[\"mc_quality\"]==0]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "tracked_v_qop = np.abs(ak.to_numpy(tracked[\"mc_end_velo_qop\"]))\n", + "tracked_t_qop = np.abs(ak.to_numpy(tracked[\"mc_end_t_qop\"]))\n", + "\n", + "ghost_v_qop = np.abs(ak.to_numpy(ghost[\"mc_end_velo_qop\"]))\n", + "ghost_t_qop = np.abs(ak.to_numpy(ghost[\"mc_end_t_qop\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n", + "\n", + "a0=ax0.hist2d(tracked_v_qop[:180000], tracked_t_qop[:180000], bins=200, cmap=plt.cm.jet, cmin=1)\n", + "ax0.set_xlabel(\"Velo qop\")\n", + "ax0.set_ylabel(\"Scifi qop\")\n", + "ax0.set_title(\"Tracked Velo qop vs. Scifi qop\")\n", + "plt.colorbar(a0[3],ax=ax0)\n", + "\n", + "a1=ax1.hist2d(ghost_v_qop[:180000], ghost_t_qop[:180000], bins=200, cmap=plt.cm.jet, cmin=1)\n", + "ax1.set_xlabel(\"Velo qop\")\n", + "ax1.set_ylabel(\"Scifi qop\")\n", + "ax1.set_title(\"Ghost Velo qop vs. Scifi qop\")\n", + "plt.colorbar(a1[3],ax=ax1)\n", + "\n", + "\n", + "\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "tracked_dQop = np.abs( tracked_v_qop[:180000]-tracked_t_qop[:180000] )\n", + "ghost_dQop = np.abs( ghost_v_qop[:180000]-ghost_t_qop[:180000] )\n", + "\n", + "\n", + "plt.hist(tracked_dQop, bins=100, label=\"tracked\", alpha=0.6, density=True)\n", + "plt.hist(ghost_dQop, bins=100, label=\"ghosts\", alpha=0.6, density=True)\n", + "plt.xlabel(\"Velo qop - Scifi qop\")\n", + "plt.ylabel(\"a.u.\")\n", + "plt.title(\"Velo qop - Scifi qop\")\n", + "plt.legend()\n", + "#plt.colorbar(h2[3])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "tracked_t_tx = ak.to_numpy(tracked[\"mc_end_t_tx\"])\n", + "tracked_t_ty = ak.to_numpy(tracked[\"mc_end_t_ty\"])\n", + "\n", + "tracked_t_teta2 = tracked_t_tx * tracked_t_tx + tracked_t_ty * tracked_t_ty\n", + "\n", + "tracked_v_tx = ak.to_numpy(tracked[\"mc_end_velo_tx\"])\n", + "tracked_v_ty = ak.to_numpy(tracked[\"mc_end_velo_ty\"])\n", + "tracked_v_teta2 = ak.to_numpy(tracked[\"mc_teta2\"])\n", + "\n", + "ghost_t_tx = ak.to_numpy(ghost[\"mc_end_t_tx\"])\n", + "ghost_t_ty = ak.to_numpy(ghost[\"mc_end_t_ty\"])\n", + "\n", + "ghost_t_teta2 = ghost_t_tx * ghost_t_tx + ghost_t_ty * ghost_t_ty\n", + "\n", + "ghost_v_tx = ak.to_numpy(ghost[\"mc_end_velo_tx\"])\n", + "ghost_v_ty = ak.to_numpy(ghost[\"mc_end_velo_ty\"])\n", + "ghost_v_teta2 = ak.to_numpy(ghost[\"mc_teta2\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n", + "\n", + "a0=ax0.hist2d(tracked_v_teta2, tracked_t_teta2, bins=100, cmap=plt.cm.jet, cmin=1, range=[[0,0.3],[0,1.3]],cmax=8000)\n", + "ax0.set_xlabel(\"Velo teta2\")\n", + "ax0.set_ylabel(\"Scifi teta2\")\n", + "ax0.set_title(\"Tracked Velo vs. Scifi teta2\")\n", + "plt.colorbar(a0[3],ax=ax0)\n", + "\n", + "a1=ax1.hist2d(ghost_v_teta2, ghost_t_teta2, bins=100, cmap=plt.cm.jet, cmin=1, range=[[0,0.3],[0,1.3]], cmax=8000)\n", + "ax1.set_xlabel(\"Velo teta2\")\n", + "ax1.set_ylabel(\"Scifi teta2\")\n", + "ax1.set_title(\"Ghost Velo vs. Scifi teta2\")\n", + "plt.colorbar(a1[3],ax=ax1)\n", + "\n", + "\n", + "\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from numpy import abs\n", + "\n", + "tracked_dteta2 = tracked_v_teta2-tracked_t_teta2\n", + "ghost_dteta2 = ghost_v_teta2-ghost_t_teta2\n", + "\n", + "plt.hist(tracked_dteta2, bins=100, label=\"tracked\", alpha=0.6, density=True)\n", + "plt.hist(ghost_dteta2, bins=100, label=\"ghosts\", alpha=0.6, density=True)\n", + "plt.xlabel(\"dteta2\")\n", + "plt.ylabel(\"a.u.\")\n", + "plt.title(\"Velo teta2 - Scifi teta2\")\n", + "plt.legend()\n", + "#plt.colorbar(h2[3])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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92mFQmHSpmvXro1KpdLkNaN4b35t42cNAAAAmNbv90e7u7sjx3FGuVxu5LruyHXdUalUmokF2u32KJfLTfrm/X5/EgOM44dH46pxbFEoFEa7u7uj3d3dUb/fn6pznjjhvL7+aUmIj6KIjRZ5b37tIz4CgHisjUajUbzDOgAA2Nfr9dRutydT8QEAAABgVREfAUB8WC4MAJAJzWYzdAJNAAAAAMgS4iMAiM+lZTcAAICwer2eHMeZJNx0XXfZTQIAAACApSA+AoDlYJAFAJBKvV5PxWJx8u+Dg4MltgYAAAAAlof4CACWh5wsAIDUqlarGgwGun79OndpAQAAAFhpxEcAsBwMsgAAAAAAAAAAAIRA4nsAAAAAAAAAAIAQyMkSkXfeeUe/8iu/os985jNaX19fdnMAAACMHB0d6a233tLnP/95ffKTn1x2cyRJX//61/XOO+9EUvcnP/lJ/eAP/mAkdQPwR8wEAADSLmlxEzHTcjDIEpFf+ZVf0Re+8IVlNwMAAGAhX/7yl/XjP/7jy26Gvv71r+uH/tV/VR9GVP93f/d368033yRoAGJEzAQAALIiCXETMdPyhB5k+bmf+zn9xb/4F222JVM+85nPSDo5wZ566ilr9W5vb2tvb89afVHWe/fuXT333HN67bXXdOXKFat1R9HeNB3bqOpN22dGvSei+tzSdAzSVi/nmn+9+XzTt0y/X16oXhtW8TN788039YUvfGHSp1m2d955Rx9K+jFJtu8Pe0fSL33nO3rnnXcIGGAVMdPZTGOm6d+JW5KuSjL7nQj6rTldpz026/xA0i9I+glJH7NUp2T/fSfnOJ713bD5+5uW/rhJffP2y5bZxnlk8bNZVp026zv5fs1e04LOWb/vo19Z0zae/ZswlpxrWpj6/I7T+e87it+bxd6z6ec932c7W3eY73mS4iZipuUJPchy7do1vfrqqyqXy7p69aoee+wxm+1KvfF096eeekqu61qt12Z9Udb73nvvSZKeeeYZ69+PKNqbpmMbVb1p+8yo90RUn1uajkHa6uVcC6r3075lwryu7fau8meWtCV8fkBB35TwmNqNqBAznc08Znr07L80+bfZte6sK8ilc/aHYbPO9x/+9wckfdxSnZL9952c43jWd8Pm729a+uNm9c3XL1tuG8+Xzc9mOXXare/T8rumBdc/+330K2vexnmu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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "tracked_dtx = tracked_v_tx - tracked_t_tx\n", + "tracked_dty = tracked_v_ty - tracked_t_ty\n", + "\n", + "ghost_dtx = ghost_v_tx - ghost_t_tx\n", + "ghost_dty = ghost_v_ty - ghost_t_ty\n", + "\n", + "\n", + "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n", + "\n", + "a0=ax0.hist2d(tracked_dtx, tracked_dty, bins=100, cmap=plt.cm.jet, cmin=1)\n", + "ax0.set_xlabel(\"dtx\")\n", + "ax0.set_ylabel(\"dty\")\n", + "ax0.set_title(\"tracked dtx vs dty\")\n", + "plt.colorbar(a0[3],ax=ax0)\n", + "\n", + "a1=ax1.hist2d(ghost_dtx, ghost_dty, bins=100, cmap=plt.cm.jet, cmin=1)\n", + "ax1.set_xlabel(\"dtx\")\n", + "ax1.set_ylabel(\"dty\")\n", + "ax1.set_title(\"Ghost dtx vs dty\")\n", + "plt.colorbar(a1[3],ax=ax1)\n", + "\n", + "\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "plt.hist(abs(tracked_dtx), bins=100, label=\"tracked\", alpha=0.6, density=True)\n", + "plt.hist(abs(ghost_dtx), bins=100, label=\"ghosts\", alpha=0.6, density=True)\n", + "plt.xlabel(\"dtx\")\n", + "plt.ylabel(\"a.u.\")\n", + "plt.legend()\n", + "#plt.colorbar(h2[3])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.hist(abs(tracked_dty), bins=100, label=\"tracked\", alpha=0.6, density=True)\n", + "plt.hist(abs(ghost_dty), bins=100, label=\"ghosts\", alpha=0.6, density=True)\n", + "plt.xlabel(\"dtx\")\n", + "plt.ylabel(\"a.u.\")\n", + "plt.legend()\n", + "#plt.colorbar(h2[3])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.hist(tracked_dtx-tracked_dty, bins=100, label=\"tracked\", alpha=0.6, density=True)\n", + "plt.hist(ghost_dtx-ghost_dty, bins=100, label=\"ghosts\", alpha=0.6, density=True)\n", + "plt.xlabel(\"dtx\")\n", + "plt.ylabel(\"a.u.\")\n", + "plt.legend()\n", + "#plt.colorbar(h2[3])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tracked_zmag = tracked[\"mc_zMag\"]\n", + "ghost_zmag = ghost[\"mc_zMag\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.hist(tracked_zmag, bins=100, label=\"tracked\", alpha=0.6, density=True)\n", + "plt.hist(ghost_zmag, bins=100, label=\"ghosts\", alpha=0.6, density=True)\n", + "plt.xlabel(r\"$z_{mag}$\")\n", + "plt.ylabel(\"a.u.\")\n", + "plt.legend()\n", + "#plt.colorbar(h2[3])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "tuner", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tuner.code-workspace b/tuner.code-workspace new file mode 100644 index 0000000..3f1fcc2 --- /dev/null +++ b/tuner.code-workspace @@ -0,0 +1,46 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": { + "files.trimTrailingWhitespace": true, + "python.formatting.provider": "none", + "python.languageServer": "Pylance", + "python.linting.enabled": true, + "python.linting.flake8Args": ["--select=F,E71,E9,W1,W6"], + "python.linting.flake8Enabled": true, + "git.ignoreLimitWarning": true, + "editor.formatOnSave": true, + "files.associations": { + "TMVAClassification_GhostNNCuts.class.C": "cpp", + "TMVAClassification_veloUT_forward_ghost_mlp.class.C": "cpp", + "TMVAClassification_default_forward_ghost_mlp.class.C": "cpp", + "TMVAClassification_matching_mlp.class.C": "cpp" + }, + "python.analysis.completeFunctionParens": true, + "[python]": { + "editor.defaultFormatter": "ms-python.black-formatter" + }, + "python.analysis.extraPaths": [ + "/auto/work/cetin/LHCb/stack/Moore/Hlt/Moore/python", + "/auto/work/cetin/LHCb/stack/Moore/Hlt/RecoConf/python", + "/auto/work/cetin/LHCb/stack/DBASE/PRConfig/python", + "/auto/work/cetin/LHCb/stack/LHCb/PyConf/python", + "/auto/work/cetin/LHCb/stack/Gaudi/Gaudi/python" + ], + "C_Cpp.default.includePath": [ + "/auto/work/cetin/LHCb/stack/Detector/Detector/Magnet/include/**", + "/auto/work/cetin/LHCb/stack/Gaudi/GaudiKernel/include/**", + "/auto/work/cetin/LHCb/stack/LHCb/Kernel/LHCbAlgs/include/**", + "/auto/work/cetin/LHCb/stack/LHCb/Kernel/LHCbMath/include/**", + "/auto/work/cetin/LHCb/stack/LHCb/Event/TrackEvent/include/**", + "/auto/work/cetin/LHCb/stack/Rec/Pr/PrKernel/include/**", + "/auto/work/cetin/LHCb/stack/Rec/Pr/PrAlgorithms/src/**", + "/auto/work/cetin/LHCb/stack/Rec/Pr/PrAlgorithms/include/**", + "/auto/work/cetin/LHCb/stack/Rec/Tr/TrackInterfaces/include/TrackInterfaces/**" + ], + "notebook.output.fontSize": 0 + } +}