DAS  3.0
Das Analysis System
TPSVariables.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <vector>
5 #include <functional>
6 #include "TMVA/DataLoader.h"
7 #include "TMVA/Reader.h"
8 #include "TString.h"
9 
10 namespace DAS::TPS {
11 
16 class TPSVariables {
17 public:
18  // Variable information structure
19  struct VariableInfo {
20  TString name;
21  char type;
22  TString description;
23  VariableInfo(const TString& n, char t, const TString& desc = ""):
24  name(n), type(t), description(desc) { }
25  };
26 
27  std::vector<VariableInfo> variables_;
28  TPSVariables(TMVA::DataLoader* dataloader = nullptr) {
29 
30  // Basic jet variables
31  variables_.emplace_back("nJets", 'I', "Number of jets");
32  variables_.emplace_back("jet_pt[0]", 'F', "Leading jet pT");
33  variables_.emplace_back("jet_pt[1]", 'F', "Second jet pT");
34  variables_.emplace_back("jet_eta[0]", 'F', "Leading jet eta");
35  // variables_.emplace_back("jet_eta[1]", 'F', "Second jet eta");
36  variables_.emplace_back("jet_phi[0]", 'F', "Leading jet phi");
37  // variables_.emplace_back("jet_phi[1]", 'F', "Second jet phi");
38 
39  // Pair asymmetry variables
40  for (int j = 1; j <= 2; j++) {
41  variables_.emplace_back(Form("pt_pair_asymm_abs_0[%d]", j), 'F',
42  Form("PT pair asymmetry absolute for jet pair 0-%d", j));
43  variables_.emplace_back(Form("Delta_eta_pair_0[%d]", j), 'F',
44  Form("Delta eta for jet pair 0-%d", j));
45  variables_.emplace_back(Form("Delta_phi_pair_0[%d]", j), 'F',
46  Form("Delta phi for jet pair 0-%d", j));
47  }
48 
49  // S observables
50  variables_.emplace_back("S_pt", 'D', "S_pt observable");
51  variables_.emplace_back("S_pt_min", 'D', "S_pt_min observable");
52  variables_.emplace_back("S_pt_4[0]", 'D', "S_pt_4[0] observable");
53  // variables_.emplace_back("S_pt_4[1]", 'D', "S_pt_4[1] observable");
54  variables_.emplace_back("S_pt_4_min[0]", 'D', "S_pt_4_min observable");
55 
56  variables_.emplace_back("S_phi", 'D', "S_phi observable");
57  variables_.emplace_back("S_phi_min", 'D', "S_phi_min observable");
58  // variables_.emplace_back("S_phi_min", 'D', "S_phi_min observable");
59  variables_.emplace_back("S_phi_4[0]", 'D', "S_phi_4[0] observable");
60  // variables_.emplace_back("S_phi_4[1]", 'D', "S_phi_4[1] observable");
61  variables_.emplace_back("S_phi_4_min[0]", 'D', "S_phi_4_min observable");
62 
63  // Add variables to TMVA DataLoader for training
64  if (dataloader) {
65  for (const auto& var : variables_) {
66  dataloader->AddVariable(var.name, var.type);
67  }
68  }
69  }
70 
71  void printVariables() const {
72  std::cout << "TPS Variables (" << variables_.size() << " total):" << std::endl;
73  for (size_t i = 0; i < variables_.size(); ++i) {
74  const auto& var = variables_[i];
75  std::cout << " " << i+1 << ". " << var.name.Data() << " [" << var.type << "]";
76  if (!var.description.IsNull()) {
77  std::cout << " - " << var.description.Data();
78  }
79  std::cout << std::endl;
80  }
81  }
82 };
83 
84 } // namespace DAS::TPS
DAS::TPS::TPSVariables::VariableInfo::description
TString description
Variable description.
Definition: TPSVariables.h:22
DAS::TPS::TPSVariables
Definition: TPSVariables.h:16
DAS::TPS::TPSVariables::TPSVariables
TPSVariables(TMVA::DataLoader *dataloader=nullptr)
Definition: TPSVariables.h:28
DAS::TPS
Definition: applyEventMixing.cc:36
DAS::TPS::TPSVariables::VariableInfo::type
char type
Variable type ('F' = float, 'I' = int, 'D' = double)
Definition: TPSVariables.h:21
DAS::TPS::TPSVariables::VariableInfo
Definition: TPSVariables.h:19
DAS::TPS::TPSVariables::printVariables
void printVariables() const
Definition: TPSVariables.h:71
DAS::TPS::TPSVariables::VariableInfo::name
TString name
Variable name.
Definition: TPSVariables.h:20
DAS::TPS::TPSVariables::variables_
std::vector< VariableInfo > variables_
Definition: TPSVariables.h:27
DAS::TPS::TPSVariables::VariableInfo::VariableInfo
VariableInfo(const TString &n, char t, const TString &desc="")
Definition: TPSVariables.h:23