EEC computations in python
Project description
EnergyEnergyCorrelators
This library can be used to compute various EnergyEnergy Correlators (EECs) [1, 2, 3] on collections of particles. The core computations are carried out efficiently in C++ utilizing the BOOST Histogram package (a copy of which is distributed with this library). Note that a C++14compatible compiler is required by the BOOST Histogram package. The C++ interface is headeronly to facilitate easy integration into any existing framework, including the FastJet library. A convenient Python interface is also provided using Cython and multiprocessing.
Documentation
This README is currently the documentation for the EEC library. In the future, this package may be incorporated into other projects, such as EnergyFlow or FastJet contrib.
The EEC library provides a variety of types of energyenergy correlators that can be computed, utilizing a flexible design sctructure that facilitates adding new computations easily. Each computation is represented by its own C++ class, which derives from the common EECBase
class that contains common functionality such as passing in particles and extracting the histogrammed result.
Since the value of any EEC on a given event is a distribution, a histogram must be declared in advance that will be filled eventbyevent. The computation classes are templated to allow for user specification of axes transformations. The template arguments should be models of the BOOST Histogram Transform concept, such as boost::histogram::axis::transform::id
(the identity transform, bins will be linearly spaced) or boost::histgraom::axis::transform::log
(to get logarithmically spaced bins).
Since version 0.1.0
, the EEC library can raise the transverse momentum of each vertex of the EEC to an arbitrary power (only an exponent of 1 is infrared and collinear safe). Additionally, chargedependent EECs can be computed by passing in particle charges and specifying an integer exponent for the charge of each vertex of the EEC.
Current EEC computations are described below:

EECLongestSide: Computes the Npoint EEC distribution binned according to the longest side (largest angle) between the N particles. Supported values of N are 2, 3, 4, and 5 (larger values are simply computationally untenable). Since the resulting distribution is onedimensional, there is a single template argument (that defaults to the identity) specifying which type of axis should be used. The constructor takes four required arguments: the number of bins, axis minimum, axis maximum, and value of N. Additionally, there are futher default arguments which are detailed below.
EECLongestSide_id
andEECLongestSide_log
are provided as typdefs of this class with the axis transform already included. 
EECTriangleOPE: This is a threedimensional EEEC that uses coordinates that are particularly suited for studying the OPE limit where two of the three particles are close to collinear. There are three template arguments, corresponding to the
xL
,xi
, andphi
axes, respectively. The constructor takes nine arguments: for each axis (in the same order as the template arguments), the number of bins, axis minimum, and axis maximum. Additionally, the sameEECTriangleOPE_id_id_id
,EECTriangleOPE_log_id_id
,EECTriangleOPE_id_log_id
, andEECTriangleOPE_log_log_id
are provided as typedefs of this class with the axes transforms already specified.
Common arguments to each EEC class are the following:
bool norm
: whether or not to divide the transverse momenta by their sum prior to computing the EEC.vector<double> pt_powers
: exponent for the pT on each vertex of the EEC. Length must match the number of particles being correlated, or else be length 1 in which case the same power is used for all vertices.vector<unsigned int> ch_powers
: similar topt_powers
except that these are the exponents of the charges for each vertex. If any of these are nonzero, then particle charges are expected to be provided.bool check_degen
: do no EEC computation but check if any particle distances are degenerate will each other in a given event.bool average_verts
: do not separate the computation based on the asymmetry of the vertices, but instead average over all combinations (see below).
If pt_powers
and ch_powers
create distinguished vertices, then more than one histogram will be employed to calculate the EEC for each possibility (the average_verts
option turns off this behavior). Currently, this is only relevant for N=3 computations: N=2 is automatically symmetric and N=4 and N=5 require symmetric vertices. The description
method of the class contains information about the different histograms created.
The resulting histogram and corresponding errors can be accessed with the get_hist
method, which accepts a boolean for whether or not to include the overflow bins and an index which defaults to 0 for which histogram to select (see above for how there can be multiple histograms per computation) and returns a pair of vectors of doubles, which are the flattened (Cstyle) histogram values and uncertainties. There are also bin_edges
and bin_centers
methods (specific to each computation class) that return the bins, which take an integer to specify an axis (if there is more than one).
Additionally, if the EEC_HIST_FORMATTED_OUTPUT
macro is defined prior to the includion of EEC.hh
(note that this requires that boost/format.hpp
is available), then the histograms are printable to any output stream using the output
method.
C++ Usage (Headeronly)
The entire library is contained in a single header file, eec/include/EEC.hh
. If you plan on using the EEC library with FastJet, ensure that PseudoJet.hh
is included prior to including EEC.hh
. This will expose an overloaded compute
method for each EEC computation that accepts a vector of PseudoJet
objects. Otherwise, there is a compute
method that takes a vector of doubles, which must be size 3N
where N
is the number of particles, arranged as pT1, rap1, phi1, pT2, rap2, phi2, ..., pTN, rapN, phiN
.
Python Usage
The EEC library also contains a Cythonbased wrapper of the core C++ code. This is most easily used by installing via pip
, e.g. pip install eec
. NumPy is the only required package. Note that a C++14enabled compiler must be available for the compilation from source to succeed.
There is one Python class for each EEC computation. The templated arguments are dealt with by specifying the axis transforms as a tuple of strings. Currently, only 'id'
and 'log'
are supported, in the combinations for which there is a provided C++ typedef (see above). The arguments to the classes are straightforward, and can be examined more closely in core.pyx. There is also an eec
method that can be used to parallelize computations on many events in Python.
References
[1] H. Chen, M. Luo, I. Moult, T. Yang, X. Zhang, H. X. Zhu, Three Point Energy Correlators in the Collinear Limit: Symmetries, Dualities and Analytic Results, [1912.11050].
[2] H. Chen, I. Moult, X. Zhang, H. X. Zhu, Rethinking Jets with Energy Correlators: Tracks, Resummation and Analytic Continuation, [2004.11381].
[3] L. Dixon, P. T. Komiske, I. Moult, J. Thaler, H. X. Zhu, Analyzing NPoint Energy Correlators with CMS Open Data, to appear soon.
Project details
Release history Release notifications  RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for EnergyEnergyCorrelators1.1.1.tar.gz
Algorithm  Hash digest  

SHA256  7909b9d01909759fa7a9f0e4c04745d2173bffb1f0744c19e661722b553d87fa 

MD5  23f03176ee98e8cc37eef4050e44d90e 

BLAKE2256  9f26af3fd72d9f57d17241441231411ef2946951de7d93632edaff35d553f835 
Hashes for EnergyEnergyCorrelators1.1.1cp39cp39win_amd64.whl
Algorithm  Hash digest  

SHA256  a43ba3ec30cb2fb842f321eebbaa37ccc09c83ee0e8bc0879f44c883b0b719eb 

MD5  52602ef5178eb3ba28377a9c85361a24 

BLAKE2256  5be9b696043369665a160e26317dc3398a0404cb290bfe7c25a3bea9186c5657 
Hashes for EnergyEnergyCorrelators1.1.1cp39cp39win32.whl
Algorithm  Hash digest  

SHA256  2d8e15df5c66e933f0c2d9386073a029b5a8dd530bc3ca3b6b76c02e4c3cc1ec 

MD5  ab7c5d9b98c28004ab3e45d9829e8d32 

BLAKE2256  b582526c59b938df7c36f9fea7cebd7e0941b001a5d0eed3502d445c9644aea3 
Hashes for EnergyEnergyCorrelators1.1.1cp39cp39manylinux2010_x86_64.whl
Algorithm  Hash digest  

SHA256  4ded86f5228db697de2c95cb85cd7144986c832440aeac39ac348185ba2d8d14 

MD5  77d6b7b6626d3fd30192ed55add5f369 

BLAKE2256  24d5d17156604a30b03fca0938b32be0085caf110d933a1cbe98a7b48fa023f2 
Hashes for EnergyEnergyCorrelators1.1.1cp39cp39manylinux2010_i686.whl
Algorithm  Hash digest  

SHA256  883b37c0eb4b56a4f6e5f850f1af50db29482c3b0cb630d72ed64517717cfb65 

MD5  9f7208e1b539fba1c73742fdbc23a49e 

BLAKE2256  74d4694f53eb5e892954b6942988379cba1cc9b732942375fb352a58afd055c2 
Hashes for EnergyEnergyCorrelators1.1.1cp39cp39macosx_10_9_x86_64.whl
Algorithm  Hash digest  

SHA256  82da351df2f1a2f77ec3bbf32ae34c0722edd77a3816e6b07039a28c373efab3 

MD5  d885b6edd54f2861881089cecf2103ad 

BLAKE2256  03304daed927c3b3ee03ee3628ce663eed6228046807cc8f65f585b413d12cb7 
Hashes for EnergyEnergyCorrelators1.1.1cp38cp38win_amd64.whl
Algorithm  Hash digest  

SHA256  2434cc3a8085e8253aaca52dc084f1c1b9f579fe72925ab12421881149e9bbe9 

MD5  b12c2e71e969704f8f1596ca99293795 

BLAKE2256  f5d29ef4e57212abbe20af28af844ed24c43920a8a2a41154b3d624676bd01e5 
Hashes for EnergyEnergyCorrelators1.1.1cp38cp38win32.whl
Algorithm  Hash digest  

SHA256  05baeb27de943c11a821a9ef3f209daab9f2244243fb16b15b66f708e2b6efa3 

MD5  95f38964d5a254f954ce2067ec896f48 

BLAKE2256  1bd6a36741db8ef6ad02ef6af3916567b8874dd6c92a5b23af0eba2ef4ba60c8 
Hashes for EnergyEnergyCorrelators1.1.1cp38cp38manylinux2010_x86_64.whl
Algorithm  Hash digest  

SHA256  4ac9f632d2c0fddbc00bfeecee4e99ee10256367c1b83b64b846434da35928fc 

MD5  2c7b2350cfd2f31f61df97871d03b5bf 

BLAKE2256  d471e7828d47c81d064d408b559f1aa5d7ab351c4a99bb558ee9da85be88c0d9 
Hashes for EnergyEnergyCorrelators1.1.1cp38cp38manylinux2010_i686.whl
Algorithm  Hash digest  

SHA256  88044d32743be37732eaccb65c6fa4d6db8951938b70eedca03704e678ecf7dc 

MD5  ec69d12a04741f552d90d9edc24857ff 

BLAKE2256  b4e45cb7ea45d5b5a8ec7bee119214c223d6178de51368b6daf868d079407dd9 
Hashes for EnergyEnergyCorrelators1.1.1cp38cp38macosx_10_9_x86_64.whl
Algorithm  Hash digest  

SHA256  6316948694fddc786d4ef16d1359e25c1b7eaf171902ed8ef239c81c4e6a78ab 

MD5  41380f7c8f8af0d688eec4fc1bc2720f 

BLAKE2256  fa74e2c45e62bb7744a1bbc4df4e70d45b1ceced01ab5c1ac9d7be14eb722825 
Hashes for EnergyEnergyCorrelators1.1.1cp37cp37mwin_amd64.whl
Algorithm  Hash digest  

SHA256  ced9cc25a70c97d4cce02c5f2afa416262cc6df654c1ebcc1df9d264e9d33de9 

MD5  48d60e77ac541e58318a6823ed9a1ebf 

BLAKE2256  aedaae7ab836b73ce8ca933d9ae4f79c8deda61d884983e2f5e2ae9f194d5c84 
Hashes for EnergyEnergyCorrelators1.1.1cp37cp37mwin32.whl
Algorithm  Hash digest  

SHA256  a59ceaaaed3381f95c6062ddf5d54d75b4b6acd8cf51aaadc3c6c8ec6bc273e9 

MD5  5105f91c779acbf96030f404daf194f0 

BLAKE2256  755a3927126069eb3f44775af006d5f7848fb8bbcc5681429ff5671a7a79f68c 
Hashes for EnergyEnergyCorrelators1.1.1cp37cp37mmanylinux2010_x86_64.whl
Algorithm  Hash digest  

SHA256  5c29f0e8f210f460161c383c6b880b2698d9614fefe08ef3c4e0e15d81b21af3 

MD5  e0826e1047ec9d87a60af230140eca12 

BLAKE2256  74618977cd5fb331dcb86d153c03b65946aeeddf516f05786baf8b78b8e049e1 
Hashes for EnergyEnergyCorrelators1.1.1cp37cp37mmanylinux2010_i686.whl
Algorithm  Hash digest  

SHA256  04e283b2c79f9e7f3e7fb7f7dadad516e6fb98ce892d97bd676b177e5e4a5511 

MD5  4a4fba1c2846da80d8d9b6f3a0467569 

BLAKE2256  f8fa79aac4a036674b4e08be7e2f284c201437bfef0aa341545601c00c22c731 
Hashes for EnergyEnergyCorrelators1.1.1cp37cp37mmacosx_10_9_x86_64.whl
Algorithm  Hash digest  

SHA256  43c78a534ce3d916524914ac21a7b2647e7d9cd8bafeb501a5b06a2b59568106 

MD5  8fe77b7932d83c3f3de9e518bbf5f0de 

BLAKE2256  b626ecb2beafda4747ff5db49cf2ff6624bcebd12618a11d45edfb0337344886 
Hashes for EnergyEnergyCorrelators1.1.1cp36cp36mwin_amd64.whl
Algorithm  Hash digest  

SHA256  846ad5f9498489617f9c8c9e238aeef2e62f758445319431ca711d1a68de3675 

MD5  1625ce08df652736ae6c7507cc72e775 

BLAKE2256  98a2c60029ce48b6302b630d1dea1be6ed3694abace97d035e061c1e353bdddf 
Hashes for EnergyEnergyCorrelators1.1.1cp36cp36mwin32.whl
Algorithm  Hash digest  

SHA256  03dca364332d57346aa98e850bf37252c2b05a72c574df95a8bed709adc8d374 

MD5  6553f61ef4091875244b3d32ebef8511 

BLAKE2256  cfa3375c1505bdbb939f4e78bf75109a1d7e55d3a5d92d860074bd6b46658e6a 
Hashes for EnergyEnergyCorrelators1.1.1cp36cp36mmanylinux2010_x86_64.whl
Algorithm  Hash digest  

SHA256  637bc0ce3c062a4b0da6979fbead3890efefbc4c705979df7e8291abc166739e 

MD5  6a0c5283af47c6e8237501c76cdaf650 

BLAKE2256  2c52aad5a3106ba5c6003b86fbb2aa60d7cbba73d06d021f503a2a564dde0458 
Hashes for EnergyEnergyCorrelators1.1.1cp36cp36mmanylinux2010_i686.whl
Algorithm  Hash digest  

SHA256  3ffb68744b63d5841e9227fab3afa365b9b5c6c7f4dd676463314e4ca681fdb9 

MD5  49245e89463df04f513cdc832e15d17f 

BLAKE2256  bf4f04feba2c761595e402c82bb139c4ebb71737505f540080b61496fc7f0e42 
Hashes for EnergyEnergyCorrelators1.1.1cp36cp36mmacosx_10_9_x86_64.whl
Algorithm  Hash digest  

SHA256  af094786c4ef9504e6d3147996dbd208f9c9cb21abb94126e41953f00fe80c9a 

MD5  c11364f8c7e41f09e19413f0fcc77530 

BLAKE2256  2d8927e5bb1d24a2e8f7fd71c5f93faa4b81700c52675f500061c36913ebf350 
Hashes for EnergyEnergyCorrelators1.1.1cp35cp35mwin_amd64.whl
Algorithm  Hash digest  

SHA256  d6623de27a00e97251b39ec82640b2d128fdad927fd368cf1ca73fc565a43d2d 

MD5  b64f34ae3e1e21e705b804e470685c98 

BLAKE2256  648305ba7e24e864549b874a8a703a3a43ac6024ede3e8fe86cee11400885308 
Hashes for EnergyEnergyCorrelators1.1.1cp35cp35mwin32.whl
Algorithm  Hash digest  

SHA256  a2fa77c5d39c05f0991c3389e66f3c0d4734c5110d4bd680835a90514f5db8c0 

MD5  8798b49b77a970a4d71b4cc57850eaf8 

BLAKE2256  1865508eb0582e4436fa68a17f7a1f36b205e243c1f154d0ad211159d1024846 
Hashes for EnergyEnergyCorrelators1.1.1cp35cp35mmanylinux2010_x86_64.whl
Algorithm  Hash digest  

SHA256  0626440cb621c0c7a54d026f77265ec7522d43db4e67d97b33c042cc895cfdaa 

MD5  9d5e665a8347a88a45ae78bb5735f79b 

BLAKE2256  270f661c79401992a0582b5d5420615cf38afcc930482e842ddab6c44589274d 
Hashes for EnergyEnergyCorrelators1.1.1cp35cp35mmanylinux2010_i686.whl
Algorithm  Hash digest  

SHA256  6524d21e645a18852d59337c1da50c170bae92a22609de45fda410324882aec3 

MD5  dda3cc49a91a78a15722b208f39c22a5 

BLAKE2256  d3cfb7641e5a640cd70592bdadd80cfae7a910946a1928c453adf941f4d2df0e 
Hashes for EnergyEnergyCorrelators1.1.1cp35cp35mmacosx_10_9_x86_64.whl
Algorithm  Hash digest  

SHA256  7120463c013fd411c8e6aa8fd937a0a96df388b1761c519fd25d58df228dc205 

MD5  2bc28e961a43c04a8b94d529ee82c82e 

BLAKE2256  26faca3dc3bb0a9c5bf820b6a0905052c4e97ba1dd322a89b47747bb6e088056 