Skip to content

Commit 3b90ac0

Browse files
committed
more safe cast of double into int and bool
1 parent e53b556 commit 3b90ac0

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

infra/PlainTreeFiller.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,10 @@ void PlainTreeFiller::Init() {
8989
if (!is_prepend_leaves_with_branchname_) leaf_name.erase(0, branch_name_.size() + 1);
9090
std::replace(leaf_name.begin(), leaf_name.end(), '.', '_');
9191
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()));
92+
else if (vars_.at(i).type_ == Types::kInteger)
93+
plain_tree_->Branch(leaf_name.c_str(), &vars_.at(i).int_, Form("%s/I", leaf_name.c_str()));
94+
else if (vars_.at(i).type_ == Types::kBool)
95+
plain_tree_->Branch(leaf_name.c_str(), &vars_.at(i).bool_, Form("%s/O", leaf_name.c_str()));
9496
}
9597

9698
for (auto& cm : cuts_map_) {
@@ -107,8 +109,10 @@ void PlainTreeFiller::Exec() {
107109
assert(channel.size() == vars_.size());
108110
for (size_t i = 0; i < channel.size(); ++i) {
109111
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));
112+
else if (vars_.at(i).type_ == Types::kInteger)
113+
vars_.at(i).int_ = static_cast<int>(std::round(channel.at(i)));
114+
else if (vars_.at(i).type_ == Types::kBool)
115+
vars_.at(i).bool_ = static_cast<bool>(std::round(channel.at(i)));
112116
}
113117
plain_tree_->Fill();
114118
}

0 commit comments

Comments
 (0)