20 int pid,
int etaMid,
const std::string& FastCaloGANInputFolderName) {
23 std::string xmlFullFileName = FastCaloGANInputFolderName +
"/binning.xml";
27 std::unique_ptr<XMLCoreNode> doc = p.parse (xmlFullFileName);
34 for (
const XMLCoreNode* nodeParticle : doc->get_children (
"Bins/Particle")) {
35 if (nodeParticle->get_int_attrib (
"pid") == pid) {
37 int nodeEtaMin = nodeBin->get_int_attrib (
"etaMin");
38 int nodeEtaMax = nodeBin->get_int_attrib (
"etaMax");
39 int regionId = nodeBin->get_int_attrib (
"regionId");
41 if (std::abs(etaMid) > nodeEtaMin &&
42 std::abs(etaMid) < nodeEtaMax)
45 nodeBin->get_attrib (
"symmetriseAlpha") ==
"true";
47 m_latentDim = nodeParticle->get_int_attrib (
"latentDim");
50 std::vector<double> edges;
51 std::string s = nodeLayer->get_attrib (
"r_edges");
52 std::istringstream
ss(s);
55 while (std::getline(
ss, token,
',')) {
56 edges.push_back(std::stod(token));
59 int binsInAlpha = nodeLayer->get_int_attrib (
"n_bin_alpha");
60 int layer = nodeLayer->get_int_attrib (
"id");
62 std::string name =
"hist_pid_" + std::to_string(pid) +
63 "_region_" + std::to_string(regionId) +
64 "_layer_" + std::to_string(layer);
65 int xBins =
static_cast<int>(edges.size()) - 1;
69 "No bins defined in r for layer "
71 <<
", setting to 1 bin to avoid empty histogram");
73 edges.push_back (edges.back()+1);
78 double minAlpha = -
M_PI;
85 TH2D(name.c_str(), name.c_str(), xBins, edges.data(),
86 binsInAlpha, minAlpha,
M_PI));
87 itr.first->second.SetDirectory(
nullptr);