Skip to content

Commit

Permalink
Add more accessor method for processes
Browse files Browse the repository at this point in the history
  • Loading branch information
austinschneider committed Sep 12, 2024
1 parent 2bebe86 commit fd2bd6a
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 10 deletions.
4 changes: 4 additions & 0 deletions projects/injection/private/Injector.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -461,6 +461,10 @@ std::shared_ptr<siren::detector::DetectorModel> Injector::GetDetectorModel() con
return detector_model;
}

void Injector::SetDetectorModel(std::shared_ptr<siren::detector::DetectorModel> detector_model) {
this->detector_model = detector_model;
}

std::shared_ptr<siren::interactions::InteractionCollection> Injector::GetInteractions() const {
return primary_process->GetInteractions();
}
Expand Down
34 changes: 31 additions & 3 deletions projects/injection/private/Process.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ std::vector<std::shared_ptr<distributions::WeightableDistribution>> const & Phys
return physical_distributions;
}

void SetPhysicalDistributions(std::vector<std::shared_ptr<distributions::WeightableDistribution>> const & distributions) {
void PhysicalProcess::SetPhysicalDistributions(std::vector<std::shared_ptr<distributions::WeightableDistribution>> const & distributions) {
for(std::vector<std::shared_ptr<distributions::WeightableDistribution>>::const_iterator it_1 = distributions.begin(); it_1 != distributions.end(); ++it_1) {
for(std::vector<std::shared_ptr<distributions::WeightableDistribution>>::const_iterator it_2 = it_1 + 1; it_2 != distributions.end(); ++it_2) {
if((*it_1) == (*it_2))
Expand Down Expand Up @@ -130,6 +130,20 @@ void PrimaryInjectionProcess::AddPrimaryInjectionDistribution(std::shared_ptr<di
physical_distributions.push_back(std::static_pointer_cast<distributions::WeightableDistribution>(dist));
}

void PrimaryInjectionProcess::SetPrimaryInjectionDistributions(std::vector<std::shared_ptr<distributions::PrimaryInjectionDistribution>> const & distributions) {
for(std::vector<std::shared_ptr<distributions::PrimaryInjectionDistribution>>::const_iterator it_1 = distributions.begin(); it_1 != distributions.end(); ++it_1) {
for(std::vector<std::shared_ptr<distributions::PrimaryInjectionDistribution>>::const_iterator it_2 = it_1 + 1; it_2 != distributions.end(); ++it_2) {
if((*it_1) == (*it_2))
throw std::runtime_error("Cannot add duplicate PrimaryInjectionDistributions");
}
}
primary_injection_distributions = distributions;
physical_distributions.clear();
for(auto dist: primary_injection_distributions) {
physical_distributions.push_back(std::static_pointer_cast<distributions::WeightableDistribution>(dist));
}
}

std::vector<std::shared_ptr<distributions::PrimaryInjectionDistribution>> const & PrimaryInjectionProcess::GetPrimaryInjectionDistributions() const {
return primary_injection_distributions;
}
Expand All @@ -155,11 +169,11 @@ SecondaryInjectionProcess & SecondaryInjectionProcess::operator=(SecondaryInject
};

void SecondaryInjectionProcess::SetSecondaryType(siren::dataclasses::ParticleType _primary_type) {
primary_type = _primary_type;
SetPrimaryType(_primary_type);
}

siren::dataclasses::ParticleType SecondaryInjectionProcess::GetSecondaryType() const {
return primary_type;
return GetPrimaryType();
}

void SecondaryInjectionProcess::AddPhysicalDistribution(std::shared_ptr<distributions::WeightableDistribution> dist) {
Expand All @@ -175,6 +189,20 @@ void SecondaryInjectionProcess::AddSecondaryInjectionDistribution(std::shared_pt
secondary_injection_distributions.push_back(dist);
}

void SecondaryInjectionProcess::SetSecondaryInjectionDistributions(std::vector<std::shared_ptr<distributions::SecondaryInjectionDistribution>> const & distributions) {
for(std::vector<std::shared_ptr<distributions::SecondaryInjectionDistribution>>::const_iterator it_1 = distributions.begin(); it_1 != distributions.end(); ++it_1) {
for(std::vector<std::shared_ptr<distributions::SecondaryInjectionDistribution>>::const_iterator it_2 = it_1 + 1; it_2 != distributions.end(); ++it_2) {
if((*it_1) == (*it_2))
throw std::runtime_error("Cannot add duplicate SecondaryInjectionDistributions");
}
}
secondary_injection_distributions = distributions;
physical_distributions.clear();
for(auto dist: secondary_injection_distributions) {
physical_distributions.push_back(std::static_pointer_cast<distributions::WeightableDistribution>(dist));
}
}

std::vector<std::shared_ptr<distributions::SecondaryInjectionDistribution>> const & SecondaryInjectionProcess::GetSecondaryInjectionDistributions() const {
return secondary_injection_distributions;
}
Expand Down
17 changes: 10 additions & 7 deletions projects/injection/private/pybindings/injection.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -44,20 +44,23 @@ PYBIND11_MODULE(injection,m) {
class_<PhysicalProcess, std::shared_ptr<PhysicalProcess>, Process>(m, "PhysicalProcess")
.def(init<>())
.def_property("primary_type", &Process::GetPrimaryType, &Process::SetPrimaryType)
.def("AddPhysicalDistribution",&PhysicalProcess::AddPhysicalDistribution)
.def("GetPhysicalDistributions",&PhysicalProcess::GetPhysicalDistributions);
.def_property("interactions", &Process::GetInteractions, &Process::SetInteractions)
.def_property("distributions", &PhysicalProcess::GetPhysicalDistributions, &PhysicalProcess::SetPhysicalDistributions)
.def("AddPhysicalDistribution",&PhysicalProcess::AddPhysicalDistribution);

class_<PrimaryInjectionProcess, std::shared_ptr<PrimaryInjectionProcess>, Process>(m, "PrimaryInjectionProcess")
.def(init<>())
.def_property("primary_type", &Process::GetPrimaryType, &Process::SetPrimaryType)
.def("AddPrimaryInjectionDistribution",&PrimaryInjectionProcess::AddPrimaryInjectionDistribution)
.def("GetPrimaryInjectionDistributions",&PrimaryInjectionProcess::GetPrimaryInjectionDistributions);
.def_property("interactions", &Process::GetInteractions, &Process::SetInteractions)
.def_property("distributions", &PrimaryInjectionProcess::GetPrimaryInjectionDistributions, &PrimaryInjectionProcess::SetPrimaryInjectionDistributions)
.def("AddPrimaryInjectionDistribution",&PrimaryInjectionProcess::AddPrimaryInjectionDistribution);

class_<SecondaryInjectionProcess, std::shared_ptr<SecondaryInjectionProcess>, Process>(m, "SecondaryInjectionProcess")
.def(init<>())
.def_property("secondary_type", &Process::GetSecondaryType, &Process::SetSecondaryType)
.def("AddSecondaryInjectionDistribution",&SecondaryInjectionProcess::AddSecondaryInjectionDistribution)
.def("GetSecondaryInjectionDistributions",&SecondaryInjectionProcess::GetSecondaryInjectionDistributions);
.def_property("secondary_type", &SecondaryInjectionProcess::GetSecondaryType, &SecondaryInjectionProcess::SetSecondaryType)
.def_property("interactions", &Process::GetInteractions, &Process::SetInteractions)
.def_property("distributions", &SecondaryInjectionProcess::GetSecondaryInjectionDistributions, &SecondaryInjectionProcess::SetSecondaryInjectionDistributions)
.def("AddSecondaryInjectionDistribution",&SecondaryInjectionProcess::AddSecondaryInjectionDistribution);


// Injection
Expand Down
1 change: 1 addition & 0 deletions projects/injection/public/SIREN/injection/Injector.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ friend cereal::access;
virtual std::tuple<siren::math::Vector3D, siren::math::Vector3D> SecondaryInjectionBounds(siren::dataclasses::InteractionRecord const & interaction) const;
virtual std::vector<std::shared_ptr<siren::distributions::PrimaryInjectionDistribution>> GetPrimaryInjectionDistributions() const;
virtual std::shared_ptr<siren::detector::DetectorModel> GetDetectorModel() const;
virtual void SetDetectorModel(std::shared_ptr<siren::detector::DetectorModel> detector_model);
virtual std::shared_ptr<siren::interactions::InteractionCollection> GetInteractions() const;
unsigned int InjectedEvents() const;
unsigned int EventsToInject() const;
Expand Down
2 changes: 2 additions & 0 deletions projects/injection/public/SIREN/injection/Process.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ class PrimaryInjectionProcess : public PhysicalProcess {
virtual ~PrimaryInjectionProcess() = default;
virtual void AddPhysicalDistribution(std::shared_ptr<distributions::WeightableDistribution> dist) override;
virtual void AddPrimaryInjectionDistribution(std::shared_ptr<distributions::PrimaryInjectionDistribution> dist);
void SetPrimaryInjectionDistributions(std::vector<std::shared_ptr<distributions::PrimaryInjectionDistribution>> const & distributions);
std::vector<std::shared_ptr<distributions::PrimaryInjectionDistribution>> const & GetPrimaryInjectionDistributions() const;
template<class Archive>
void serialize(Archive & archive, std::uint32_t const version) {
Expand Down Expand Up @@ -123,6 +124,7 @@ class SecondaryInjectionProcess : public PhysicalProcess {
virtual ~SecondaryInjectionProcess() = default;
virtual void AddPhysicalDistribution(std::shared_ptr<distributions::WeightableDistribution> dist) override;
virtual void AddSecondaryInjectionDistribution(std::shared_ptr<distributions::SecondaryInjectionDistribution> dist);
void SetSecondaryInjectionDistributions(std::vector<std::shared_ptr<distributions::SecondaryInjectionDistribution>> const & distributions);
std::vector<std::shared_ptr<distributions::SecondaryInjectionDistribution>> const & GetSecondaryInjectionDistributions() const;
template<class Archive>
void serialize(Archive & archive, std::uint32_t const version) {
Expand Down

0 comments on commit fd2bd6a

Please sign in to comment.