template<class Jet>
struct DAS::TPS::MultiJets< Jet >
Implements TPS jets observables depending on the mixed 6jets event. Definition of these observables:
- $p_{T,ave} = \frac{1}{N_{jets}} \sum_{i=1}^{N_{jets}} p_{T,i}$
- $H_{T} = \sum_{i=1}^{N_{jets}} p_{T,i}$
- $\Delta \eta$ is the absolute value of the pseudorapidity distance between the two leading jets
- $\Delta \phi$ is the azimuthal distance between the two leading jets
- $E_{F} = \frac{p_{T,1}}{H_{T}}$ is the energy fraction of the leading jet
- $S_{p_{T}}$ and $S_{\phi}$ are the expected pT balance and phi balance correlation sensitive observables that can only be observed in events with 6 jets. ref: https://arxiv.org/abs/2111.05370
#include <TPS.h>
|
std::vector< Jet > | jets |
|
Di< const Jet, const Jet > | dijet |
|
|
static const std::vector< std::vector< std::pair< int, int > > > & | getJetPairings () |
|
◆ MultiJets()
MultiJets |
( |
const std::vector< Jet > & |
inputJets, |
|
|
int |
minpt |
|
) |
| |
|
inline |
◆ getJetPairings()
static const std::vector<std::vector<std::pair<int, int> > >& getJetPairings |
( |
| ) |
|
|
inlinestaticprivate |
120 static const auto jetPairs = []() {
121 std::vector<int> elements{0, 1, 2, 3, 4, 5};
122 std::vector<std::pair<int, int>> current;
123 std::vector<std::vector<std::pair<int, int>>> results;
128 auto pairJetsIndices = [](
const std::vector<int>& elements,
129 std::vector<std::pair<int, int>>& current,
130 std::vector<std::vector<std::pair<int, int>>>& results,
131 auto&&
self) ->
void {
133 if (elements.empty()) {
134 results.push_back(current);
138 int first = elements.front();
140 std::vector<int> rest(elements.begin() + 1, elements.end());
143 for (
size_t i = 0; i < rest.size(); ++i) {
144 int partner = rest[i];
146 current.emplace_back(first, partner);
149 std::vector<int> next;
150 next.reserve(rest.size() - 1);
151 for (
size_t j = 0; j < rest.size(); ++j) {
153 next.push_back(rest[j]);
157 self(next, current, results,
self);
162 pairJetsIndices(elements, current, results, pairJetsIndices);
◆ Ht()
59 return accumulate(
jets.begin(),
jets.end(), 0.0,
60 [](
double sum,
const auto& jet) {
61 return sum + jet.CorrPt();
◆ jetswgt()
51 return accumulate(
jets.begin(),
jets.end(), 1.0,
52 [] (
double w,
const Jet& j) {
53 return w * j.weights.front();
◆ operator bool()
47 return jets.size() > 1;
◆ Sphi()
expected phi balance correlation sensitive observable $S_{\phi, TPS}^{2} = \frac{1}{3}[|\phi_{i}-\phi_{j}|^{2} +|\phi_{k}-\phi_{l}|^{2} +|\phi_{m}-\phi_{n}|^{2}]$ for all the possible Combinations of jets. This variable has a 15-fold degeneracy, and the final value is taken as the average. This can only be observed in events with 6 jets.
102 BOOST_THROW_EXCEPTION( invalid_argument(
"insufficient jetMultiplicity for Sphi calculation") );
107 for (
auto& pr : triple) {
110 S2 += pow(DeltaPhi(jet1, jet2), 2);
112 sumS += sqrt(S2 / 3.0
f);
◆ SpT()
expected pT balance correlation sensitive observable $S_{p_{T, TPS}}^{2} = \frac{1}{3}[(\frac{|\vec{p}_{T, i}+\vec{p}_{T, j}|}{|\vec{p}_{T, i}|+|\vec{p}_{T, j}|})^{2} +(\frac{|\vec{p}_{T, k}+\vec{p}_{T, l}|}{|\vec{p}_{T, k}|+|\vec{p}_{T, l}|})^{2} +(\frac{|\vec{p}_{T, m}+\vec{p}_{T, n}|}{|\vec{p}_{T, m}|+|\vec{p}_{T, n}|})^{2}]$ for all the possible Combinations of jets. This variable has a 15-fold degeneracy, and the final value is taken as the average. This can only be observed in events with 6 jets.
75 BOOST_THROW_EXCEPTION( invalid_argument(
"insufficient jetMultiplicity for SpT calculation") );
81 for (
auto& pr : triple) {
84 ROOT::Math::XYVector pTsum(jet1.Px() + jet2.Px(), jet1.Py() + jet2.Py());
85 S2 += pow( pTsum.R() / (
jets[pr.first].CorrPt() +
jets[pr.second].CorrPt()), 2 );
87 sumS += sqrt(S2 / 3.0
f);
◆ dijet
Di<const Jet, const Jet> dijet |
◆ jetCombinations
const std::vector<std::vector<std::pair<int, int> > >& jetCombinations = getJetPairings() |
|
private |
◆ jets
The documentation for this struct was generated from the following file:
- /builds/cms-analysis/general/DasAnalysisSystem/Core/Installer/Core/JetObservables/interface/TPS.h