 |
DAS
3.0
Das Analysis System
|
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 > | leading_dijet |
|
std::array< std::array< float, 6 >, 6 > | pt_pair_asymm_vec |
|
std::array< std::array< float, 6 >, 6 > | pt_pair_asymm_abs |
|
std::array< std::array< float, 6 >, 6 > | Delta_eta_pair |
|
std::array< std::array< float, 6 >, 6 > | Delta_phi_pair |
|
std::array< std::array< float, 6 >, 6 > | m_inv |
|
float | S_pt = 0 |
|
float | S_pt_min = 0 |
|
std::array< float, 15 > | S_pt_perm {} |
|
std::array< float, 3 > | S_pt_4 {} |
|
std::array< float, 3 > | S_pt_4_min {} |
|
std::array< std::array< float, 3 >, 3 > | S_pt_4_perm |
|
float | S_phi = 0 |
|
float | S_phi_min = 0 |
|
std::array< float, 15 > | S_phi_perm {} |
|
std::array< float, 3 > | S_phi_4 {} |
|
std::array< float, 3 > | S_phi_4_min {} |
|
std::array< std::array< float, 3 >, 3 > | S_phi_4_perm |
|
|
static const std::vector< std::vector< std::pair< int, int > > > & | getJetPairings () |
|
◆ MultiJets()
MultiJets |
( |
const std::vector< Jet > & |
inputJets, |
|
|
int |
minpt |
|
) |
| |
|
inline |
◆ FillFeatures()
Fill 6jet's member variables by calling the appropriate loop methods.
◆ getJetPairings()
static const std::vector<std::vector<std::pair<int, int> > >& getJetPairings |
( |
| ) |
|
|
inlinestaticprivate |
191 static const auto jetPairs = []() {
192 std::vector<int> elements{0, 1, 2, 3, 4, 5};
193 std::vector<std::pair<int, int>> current;
194 std::vector<std::vector<std::pair<int, int>>> results;
199 auto pairJetsIndices = [](
const std::vector<int>& elements,
200 std::vector<std::pair<int, int>>& current,
201 std::vector<std::vector<std::pair<int, int>>>& results,
202 auto&&
self) ->
void {
204 if (elements.empty()) {
205 results.push_back(current);
209 int first = elements.front();
211 std::vector<int> rest(elements.begin() + 1, elements.end());
214 for (
size_t i = 0; i < rest.size(); ++i) {
215 int partner = rest[i];
217 current.emplace_back(first, partner);
220 std::vector<int> next;
221 next.reserve(rest.size() - 1);
222 for (
size_t j = 0; j < rest.size(); ++j) {
224 next.push_back(rest[j]);
228 self(next, current, results,
self);
233 pairJetsIndices(elements, current, results, pairJetsIndices);
◆ GetJetQuadPartitions()
std::array<std::pair<std::pair<int, int>, std::pair<int, int> >, 3> GetJetQuadPartitions |
( |
const std::array< int, 4 > & |
index | ) |
|
|
inlineprivate |
182 {{index[0], index[1]}, {index[2], index[3]}},
183 {{index[0], index[2]}, {index[1], index[3]}},
184 {{index[0], index[3]}, {index[1], index[2]}}
◆ Ht()
104 return accumulate(
jets.begin(),
jets.end(), 0.0,
105 [](
float sum,
const auto& jet) {
106 return sum + jet.CorrPt();
◆ jetswgt()
96 return accumulate(
jets.begin(),
jets.end(), 1.0,
97 [] (
float w,
const Jet& j) {
98 return w * j.weights.front();
◆ LoopOverPairs()
Loops over all pairs of jets and computes the pairwise features.
121 for (
size_t i = 0; i < 6; ++i) {
122 for (
size_t j = 0; j < 6; ++j) {
128 m_inv[i][j] = dijet.CorrP4().M();
◆ LoopOverQuartets()
void LoopOverQuartets |
( |
| ) |
|
|
inlineprivate |
Loops over all quartets of jets and computes the quartet-based balance observables.
154 std::array<std::array<int,4>, 3> group4 = {{
159 for (
size_t j = 0; j < group4.size(); ++j) {
161 for (
size_t i = 0; i < partitions.size(); ++i) {
162 auto [p1, p2] = partitions[i];
165 float a = dijet1.CorrPt() / (
jets[p1.first].CorrPt() +
jets[p1.second].CorrPt());
166 float b = dijet2.CorrPt() / (
jets[p2.first].CorrPt() +
jets[p2.second].CorrPt());
167 S_pt_4_perm[j][i] = std::sqrt(0.5 * (pow(a, 2) + pow(b, 2)));
168 S_phi_4_perm[j][i] = std::sqrt(0.5 * (pow(dijet1.DeltaPhi(), 2) + pow(dijet2.DeltaPhi(), 2)));
◆ LoopOverTriplets()
void LoopOverTriplets |
( |
| ) |
|
|
inlineprivate |
Loops over all triplets of jets and computes the triplet-based balance observables.
137 for (
auto& pr : triple) {
140 S_pt_perm[i] += pow(dijet.CorrPt() / (
jets[pr.first].CorrPt() +
jets[pr.second].CorrPt()), 2);
◆ operator bool()
92 return jets.size() > 1;
◆ Delta_eta_pair
std::array<std::array<float, 6>, 6> Delta_eta_pair |
$\Delta \eta_{pair} = \eta_{i}-\eta_{j}$
◆ Delta_phi_pair
std::array<std::array<float, 6>, 6> Delta_phi_pair |
$\Delta \phi_{pair} = \phi_{i}-\phi_{j}$
◆ jetCombinations
const std::vector<std::vector<std::pair<int, int> > >& jetCombinations = getJetPairings() |
|
private |
◆ jets
◆ leading_dijet
Di<const Jet, const Jet> leading_dijet |
◆ m_inv
std::array<std::array<float, 6>, 6> m_inv |
$m_{inv} = M_{i} + M_{j}$
◆ pt_pair_asymm_abs
std::array<std::array<float, 6>, 6> pt_pair_asymm_abs |
$p_{T,asymm,abs} = \frac{|\vec{p}_{T, i}|-|\vec{p}_{T, j}|}{|\vec{p}_{T, i}|+|\vec{p}_{T, j}|}$
◆ pt_pair_asymm_vec
std::array<std::array<float, 6>, 6> pt_pair_asymm_vec |
$p_{T,asymm,vec} = \frac{|\vec{p}_{T, i}+\vec{p}_{T, j}|}{|\vec{p}_{T, i}|+|\vec{p}_{T, j}|}$
◆ S_phi
expected phi balance correlation sensitive observable $S_{\phi}^{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.
◆ S_phi_4
std::array<float, 3> S_phi_4 {} |
4-jet phi balance observables for three different jet quartets: {0,1,2,3}, {0,1,4,5}, {2,3,4,5} Each element is the average over 3 possible dijet pairings within the quartet $S_{\phi,4}^{2} = \frac{1}{2}[|\phi_{i}-\phi_{j}|^{2}
- |\phi_{k}-\phi_{l}|^{2}]$
◆ S_phi_4_min
std::array<float, 3> S_phi_4_min {} |
◆ S_phi_4_perm
std::array<std::array<float, 3>, 3> S_phi_4_perm |
Detailed phi balance values for all possible pairings within each 4-jet quartet.
◆ S_phi_min
◆ S_phi_perm
std::array<float, 15> S_phi_perm {} |
◆ S_pt
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.
◆ S_pt_4
std::array<float, 3> S_pt_4 {} |
4-jet pT balance observables for three different jet quartets: {0,1,2,3}, {0,1,4,5}, {2,3,4,5} Each element is the average over 3 possible dijet pairings within the quartet $S_{p_{T,4}}^{2} = \frac{1}{2}[(\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}]$
◆ S_pt_4_min
std::array<float, 3> S_pt_4_min {} |
◆ S_pt_4_perm
std::array<std::array<float, 3>, 3> S_pt_4_perm |
Detailed pT balance values for all possible pairings within each 4-jet quartet.
◆ S_pt_min
◆ S_pt_perm
std::array<float, 15> S_pt_perm {} |
The documentation for this struct was generated from the following file:
- /builds/cms-analysis/general/DasAnalysisSystem/Core/Installer/Core/JetObservables/interface/TPS.h
std::array< float, 3 > S_phi_4
Definition: TPS.h:77
float S_pt
Definition: TPS.h:56
std::array< std::array< float, 6 >, 6 > m_inv
$m_{inv} = M_{i} + M_{j}$
Definition: TPS.h:49
std::array< std::array< float, 6 >, 6 > Delta_eta_pair
$\Delta \eta_{pair} = \eta_{i}-\eta_{j}$
Definition: TPS.h:45
std::array< float, 3 > S_pt_4_min
Definition: TPS.h:62
std::array< std::array< float, 3 >, 3 > S_phi_4_perm
Detailed phi balance values for all possible pairings within each 4-jet quartet.
Definition: TPS.h:79
std::array< std::array< float, 6 >, 6 > pt_pair_asymm_abs
$p_{T,asymm,abs} = \frac{|\vec{p}_{T, i}|-|\vec{p}_{T, j}|}{|\vec{p}_{T, i}|+|\vec{p}_{T,...
Definition: TPS.h:43
std::array< float, 3 > S_phi_4_min
Definition: TPS.h:77
std::array< std::array< float, 6 >, 6 > pt_pair_asymm_vec
$p_{T,asymm,vec} = \frac{|\vec{p}_{T, i}+\vec{p}_{T, j}|}{|\vec{p}_{T, i}|+|\vec{p}_{T,...
Definition: TPS.h:41
float S_pt_min
Definition: TPS.h:56
std::array< std::pair< std::pair< int, int >, std::pair< int, int > >, 3 > GetJetQuadPartitions(const std::array< int, 4 > &index)
Definition: TPS.h:180
std::array< float, 15 > S_phi_perm
Definition: TPS.h:72
std::array< std::array< float, 6 >, 6 > Delta_phi_pair
$\Delta \phi_{pair} = \phi_{i}-\phi_{j}$
Definition: TPS.h:47
static const double minpt
Definition: getMNobservables.cc:39
const std::vector< std::vector< std::pair< int, int > > > & jetCombinations
Definition: TPS.h:240
std::array< float, 15 > S_pt_perm
Definition: TPS.h:57
void FillFeatures()
Fill 6jet's member variables by calling the appropriate loop methods.
Definition: TPS.h:113
std::array< std::array< float, 3 >, 3 > S_pt_4_perm
Detailed pT balance values for all possible pairings within each 4-jet quartet.
Definition: TPS.h:64
void LoopOverQuartets()
Loops over all quartets of jets and computes the quartet-based balance observables.
Definition: TPS.h:153
void LoopOverTriplets()
Loops over all triplets of jets and computes the triplet-based balance observables.
Definition: TPS.h:134
Di< const Jet, const Jet > leading_dijet
Definition: TPS.h:38
std::vector< Jet > PhaseSpaceSelection(const std::vector< Jet > &jets, float minpt)
Definition: common.h:24
std::vector< Jet > jets
Definition: TPS.h:37
float S_phi
Definition: TPS.h:71
float S_phi_min
Definition: TPS.h:71
auto make_di(Obj1 &o1, Obj2 &o2)
Definition: Di.h:99
std::array< float, 3 > S_pt_4
Definition: TPS.h:62
void LoopOverPairs()
Loops over all pairs of jets and computes the pairwise features.
Definition: TPS.h:120