Skip to content

Commit

Permalink
Fix ScintillationData operator bool; minor reorg
Browse files Browse the repository at this point in the history
  • Loading branch information
stognini committed Mar 19, 2024
1 parent 3e8a36e commit c55c8f9
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 9 deletions.
6 changes: 4 additions & 2 deletions src/celeritas/optical/ScintillationData.hh
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,10 @@ struct ScintillationData
//! Whether all data are assigned and valid
explicit CELER_FUNCTION operator bool() const
{
return !matid_to_optmatid.empty() && !materials.empty()
&& num_materials == matid_to_optmatid.size();
return !matid_to_optmatid.empty() && !pid_to_scintpid.empty()
&& (!materials.empty() || !particles.empty())
&& num_materials == matid_to_optmatid.size()
&& num_particles == pid_to_scintpid.size();
}

//! Whether sampling must happen by particle type
Expand Down
13 changes: 6 additions & 7 deletions src/celeritas/optical/ScintillationParams.cc
Original file line number Diff line number Diff line change
Expand Up @@ -96,16 +96,13 @@ ScintillationParams::ScintillationParams(Input const& input,
{
CELER_EXPECT(input);
HostVal<ScintillationData> host_data;

CollectionBuilder build_optmatid(&host_data.matid_to_optmatid);
CollectionBuilder build_scintpid(&host_data.pid_to_scintpid);
CollectionBuilder build_resolutionscale(&host_data.resolution_scale);
CollectionBuilder build_materials(&host_data.materials);
CollectionBuilder build_compoments(&host_data.components);

auto const num_mat = input.matid_to_optmatid.size();
auto const num_part = input.pid_to_scintpid.size();

host_data.num_materials = num_mat;
host_data.num_particles = num_part;

Expand All @@ -114,12 +111,14 @@ ScintillationParams::ScintillationParams(Input const& input,
{
build_optmatid.push_back(id);
}
CELER_ENSURE(build_optmatid.size() == num_mat);

// Store particle ids
for (auto const id : input.pid_to_scintpid)
{
build_scintpid.push_back(id);
}
CELER_ENSURE(build_scintpid.size() == num_part);

// Store resolution scale
for (auto const& inp : input.data)
Expand All @@ -129,9 +128,12 @@ ScintillationParams::ScintillationParams(Input const& input,
<< " for scintillation (should be nonnegative)");
build_resolutionscale.push_back(inp.resolution_scale);
}
CELER_ENSURE(build_resolutionscale.size() == num_mat);

if (!input.scintillation_by_particle)
{
CollectionBuilder build_materials(&host_data.materials);

// Store material scintillation data
for (auto const& inp : input.data)
{
Expand All @@ -148,6 +150,7 @@ ScintillationParams::ScintillationParams(Input const& input,
= build_compoments.insert_back(comps.begin(), comps.end());
build_materials.push_back(std::move(mat_spec));
}
CELER_ENSURE(build_materials.size() == num_mat);
}
else
{
Expand Down Expand Up @@ -186,10 +189,6 @@ ScintillationParams::ScintillationParams(Input const& input,
}
CELER_ENSURE(build_particles.size() == num_part * num_mat);
}
CELER_ENSURE(build_optmatid.size() == num_mat);
CELER_ENSURE(build_scintpid.size() == num_part);
CELER_ENSURE(build_materials.size() == num_mat);
CELER_ENSURE(build_resolutionscale.size() == num_mat);

mirror_ = CollectionMirror<ScintillationData>{std::move(host_data)};
CELER_ENSURE(mirror_);
Expand Down

0 comments on commit c55c8f9

Please sign in to comment.