39 #include <unordered_map>
49 my_vector&
operator=(
const my_vector&) =
delete;
50 my_vector&
operator=(my_vector&&) =
delete;
55 std::vector<U>& get_vec_ref()
61 using particle_vector = std::unordered_map<std::string,my_vector<T>>;
63 std::reference_wrapper<particle_vector<T>> get_vectors()
65 return std::ref(particle_vector<T>{});
68 void clear_all_vectors()
70 for(
auto &
v : get_vectors<T>().get())
72 v.second.get_vec_ref().clear();
75 particle_vector<bool> bool_vectors;
76 particle_vector<int> int_vectors;
77 particle_vector<float> float_vectors;
78 particle_vector<double> double_vectors;
79 particle_vector<std::string> string_vectors;
96 template<
typename VarType>
99 t->
Branch(var.c_str(), &get_vectors<VarType>().get()[var].get_vec_ref());
107 clear_all_vectors<bool>();
108 clear_all_vectors<int>();
109 clear_all_vectors<double>();
110 clear_all_vectors<float>();
111 clear_all_vectors<std::string>();
127 template<
typename VarType>
130 get_vectors<VarType>().get()[var] = val;
135 std::reference_wrapper<KVTreeVectorBranchHandler::particle_vector<bool>>
136 inline KVTreeVectorBranchHandler::get_vectors<bool>()
141 std::reference_wrapper<KVTreeVectorBranchHandler::particle_vector<std::string>>
142 inline KVTreeVectorBranchHandler::get_vectors<std::string>()
144 return string_vectors;
147 std::reference_wrapper<KVTreeVectorBranchHandler::particle_vector<int>>
148 inline KVTreeVectorBranchHandler::get_vectors<int>()
153 std::reference_wrapper<KVTreeVectorBranchHandler::particle_vector<double>>
154 inline KVTreeVectorBranchHandler::get_vectors<double>()
156 return double_vectors;
159 std::reference_wrapper<KVTreeVectorBranchHandler::particle_vector<float>>
160 inline KVTreeVectorBranchHandler::get_vectors<float>()
162 return float_vectors;
Binding & operator=(OUT(*fun)(U0 u0))
Facilitate use of std::vector branches in data analysis.
void ClearVectorBranches()
void FillVectorBranch(const std::string &var, VarType val)
void AddVectorBranch(TTree *t, const std::string &var)
virtual Int_t Branch(const char *folder, Int_t bufsize=32000, Int_t splitlevel=99)