4 #include "TLorentzVector.h" 8 class LorentzVectors :
public DerivedValue<std::vector<TLorentzVector>>{
10 Value<std::vector<float>> *pt_val;
11 Value<std::vector<float>> *eta_val;
12 Value<std::vector<float>> *phi_val;
13 Value<std::vector<float>> *mass_val;
16 auto pt = pt_val->get_value();
17 auto eta = eta_val->get_value();
18 auto phi = phi_val->get_value();
19 auto mass = mass_val->get_value();
20 std::vector<int> sizes = {pt.size(), eta.size(), phi.size(), mass.size()};
21 int size = *std::min_element(sizes.begin(), sizes.end());
24 for (
int i =0; i<size; i++){
25 lv.SetPtEtaPhiM(pt[i], eta[i], phi[i], mass[i]);
26 this->value.push_back(lv);
31 LorentzVectors(Value<std::vector<float>>* pt,
32 Value<std::vector<float>>* eta,
33 Value<std::vector<float>>* phi,
34 Value<std::vector<float>>* mass,
35 const std::string& alias)
36 :DerivedValue<
std::vector<TLorentzVector>>(
"lorentz_vectors("+pt->get_name()+
"," 39 +mass->get_name()+
")",
41 pt_val(pt), eta_val(eta), phi_val(phi), mass_val(mass) { }
44 class Energies :
public DerivedValue<std::vector<float>>{
46 Value<std::vector<TLorentzVector>> *vectors;
48 std::vector<TLorentzVector>& vecs = vectors->get_value();
51 this->value.push_back(v.Energy());
56 Energies(Value<std::vector<TLorentzVector>> *vectors,
57 const std::string& alias)
58 :DerivedValue<
std::vector<float>>(
"energies("+vectors->get_name()+
")", alias),
63 #endif // root_value_hpp