You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implementation of the e+e- k_T algorithm, aka Durham algorithm.
This is implemented in a new specific implementation as the distance metrics are rather different from those used for pp events. In particular, the reconstruction happens in (theta, phi) space.
A new EEjet structure is used, that stores the 4-momentum, but with different internal cache variables for optimising the distance calculations. (In particular the normalised momentum is cached, as the dot product is used to calculate the angle between two jets). Various accessors are added for components of the struct, as well as derived values, such as phi and rapidity.
initial_history() is moved to the ClusterSequence.jl file, which is where it should be (used by all algorithms/strategies).
ClusterSequence structs are updated to take jets as vectors of the abstract type FourMomentum.
The algorithm stores the vector of EEjets in the ClusterSequence as before (original and all intermediate jets) and optimised compact arrays for finding the closest jets are used.
Currently the implementation is about x3 slower than FastJet (which doesn't use any compact arrays). Timing on M2Pro for the ee->H input file per event is:
- JetReconstruction.jl Durham 59us
- FastJet Durham 21us
- JetReconstruction.jl AntiKt/N2Plain 33us
The consistency handling of p and algorithm is updated to take this new algorithm into account and new functions are added that map algorithms to either pp or e+e- cases (is_pp() and is_ee()).
Documentation is updated to favour passing the algorithm to the reconstruction instead of implying it from the p value (though that mode is still supported and will imply pp reconstruction).
There is also a major refactoring of tests to make testing Julia reconstruction against FastJet much easier and more independent of assumptions about the p <-> alg mapping. A new test file with e+e- -> H events is added and the 13TeV pp event file is renamed.
-`particles` - a vector of input particles for the clustering
26
26
- Any type that supplies the methods `pt2()`, `phi()`, `rapidity()`, `px()`, `py()`, `pz()`, `energy()` can be used
27
27
- These methods have to be defined in the namespace of this package, i.e., `JetReconstruction.pt2(::T)`
28
28
- The `PseudoJet` type from this package, or a 4-vector from `LorentzVectorHEP` are suitable (and have the appropriate definitions)
29
-
-`p` - the transverse momentum power used in the $d_{ij}$ metric for deciding on closest jets, as $k^{2p}_\text{T}$. Different values of $p$ then give different reconstruction algorithms:
-`JetAlgorithm.GenKt` generalised $k_\text{T}$ (which also requires specification of `p`)
34
+
-`JetAlgorithm.Durham` the $e^+e-$ $k_\text{T}$ algorithm, also known as the Durham algorithm
35
+
-`R` - the cone size parameter; no particles more geometrically distance than `R` will be merged (default 1.0; note this parameter is ignored for the Durham algorithm)
34
36
-`recombine` - the function used to merge two pseudojets (default is a simple 4-vector addition of $`(E, \mathbf{p})`$)
35
37
-`strategy` - the algorithm strategy to adopt, as described below (default `RecoStrategy.Best`)
36
38
37
39
The object returned is a `ClusterSequence`, which internally tracks all merge steps.
38
40
39
-
Alternatively one can swap the `p=...` parameter for
40
-
`algorithm=JetReconstruction.{AntiKt,CA,Kt}` for explicit algorithm selection. (Generalised $`{k}_\text{T}`$ requires `algorithm=JetReconstruction.GenKt`*and*`p=N`.)
41
+
Alternatively, *for pp reconstruction*, one can swap the `algorithm=...`
42
+
parameter for the value of `p`, the transverse momentum power used in the
43
+
$d_{ij}$ metric for deciding on closest jets, as $k^{2p}_\text{T}$. Different
44
+
values of $p$ then correspond to different reconstruction algorithms:
Where `particles` is a collection of 4-vector objects to reconstruct and the
53
-
algorithm is either given explicitly or implied by the power value. For the case of generalised $k_T$ both the algorithm (`JetAlgorithm.GenKt`) and `p` are needed.
53
+
algorithm is either given explicitly or implied by the power value. For the case
54
+
of generalised $k_T$ both the algorithm (`JetAlgorithm.GenKt`) and `p` are
55
+
needed. For the case of the Durham algorithm the `R` value is ignored.
54
56
55
57
The object returned is a [`ClusterSequence`](@ref), which internally tracks all
0 commit comments