  | 
  
    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