@@ -55,12 +55,18 @@ void PlainTreeFiller::Init() {
5555 const auto & branch_config = config_->GetBranchConfig (branch_name_);
5656 for (const auto & field : branch_config.GetMap <float >()) {
5757 AnalysisTask::AddEntry (AnalysisEntry ({Variable (branch_name_, field.first )}));
58+ vars_.emplace_back (FIB ());
59+ vars_.back ().type_ = Types::kFloat ;
5860 }
5961 for (const auto & field : branch_config.GetMap <int >()) {
6062 AnalysisTask::AddEntry (AnalysisEntry ({Variable (branch_name_, field.first )}));
63+ vars_.emplace_back (FIB ());
64+ vars_.back ().type_ = Types::kInteger ;
6165 }
6266 for (const auto & field : branch_config.GetMap <bool >()) {
6367 AnalysisTask::AddEntry (AnalysisEntry ({Variable (branch_name_, field.first )}));
68+ vars_.emplace_back (FIB ());
69+ vars_.back ().type_ = Types::kBool ;
6470 }
6571 }
6672
@@ -70,7 +76,8 @@ void PlainTreeFiller::Init() {
7076 throw std::runtime_error (" Only 1 output branch" );
7177 }
7278 const auto & vars = entries_[0 ].GetVariables ();
73- vars_.resize (vars.size ());
79+
80+ if (vars_.size () != vars.size ()) throw std::runtime_error (" PlainTreeFiller::Init(): vars_.size() != vars.size()" );
7481
7582 file_ = TFile::Open (file_name_.c_str (), " recreate" );
7683 plain_tree_ = new TTree (tree_name_.c_str (), " Plain Tree" );
@@ -81,7 +88,9 @@ void PlainTreeFiller::Init() {
8188 if (!fields_to_preserve_.empty () && std::find (fields_to_preserve_.begin (), fields_to_preserve_.end (), leaf_name) == fields_to_preserve_.end ()) continue ;
8289 if (!is_prepend_leaves_with_branchname_) leaf_name.erase (0 , branch_name_.size () + 1 );
8390 std::replace (leaf_name.begin (), leaf_name.end (), ' .' , ' _' );
84- plain_tree_->Branch (leaf_name.c_str (), &(vars_.at (i)), Form (" %s/F" , leaf_name.c_str ()));
91+ if (vars_.at (i).type_ == Types::kFloat ) plain_tree_->Branch (leaf_name.c_str (), &vars_.at (i).float_ , Form (" %s/F" , leaf_name.c_str ()));
92+ if (vars_.at (i).type_ == Types::kInteger ) plain_tree_->Branch (leaf_name.c_str (), &vars_.at (i).int_ , Form (" %s/I" , leaf_name.c_str ()));
93+ if (vars_.at (i).type_ == Types::kBool ) plain_tree_->Branch (leaf_name.c_str (), &vars_.at (i).bool_ , Form (" %s/O" , leaf_name.c_str ()));
8594 }
8695
8796 for (auto & cm : cuts_map_) {
@@ -97,7 +106,9 @@ void PlainTreeFiller::Exec() {
97106 for (const auto & channel : values) {
98107 assert (channel.size () == vars_.size ());
99108 for (size_t i = 0 ; i < channel.size (); ++i) {
100- vars_.at (i) = channel.at (i);
109+ if (vars_.at (i).type_ == Types::kFloat ) vars_.at (i).float_ = static_cast <float >(channel.at (i));
110+ if (vars_.at (i).type_ == Types::kInteger ) vars_.at (i).int_ = static_cast <int >(channel.at (i));
111+ if (vars_.at (i).type_ == Types::kBool ) vars_.at (i).bool_ = static_cast <bool >(channel.at (i));
101112 }
102113 plain_tree_->Fill ();
103114 }
@@ -109,6 +120,5 @@ void PlainTreeFiller::Finish() {
109120 plain_tree_->Write ();
110121 file_->Close ();
111122 delete file_;
112- // delete plain_tree_;
113123}
114124}// namespace AnalysisTree
0 commit comments