Skip to content

Commit

Permalink
Re-organize crosssections pybindings
Browse files Browse the repository at this point in the history
  • Loading branch information
austinschneider committed Jul 1, 2023
1 parent e84ba32 commit 2964333
Show file tree
Hide file tree
Showing 6 changed files with 209 additions and 104 deletions.
36 changes: 36 additions & 0 deletions projects/crosssections/private/pybindings/CrossSectionCollection.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#include <set>
#include <memory>
#include <string>

#include <pybind11/pybind11.h>
#include <pybind11/operators.h>
#include <pybind11/stl.h>

#include "../../public/LeptonInjector/crosssections/CrossSection.h"
#include "../../public/LeptonInjector/crosssections/CrossSectionCollection.h"
#include "../../public/LeptonInjector/crosssections/Decay.h"
#include "../../../dataclasses/public/LeptonInjector/dataclasses/Particle.h"
#include "../../../geometry/public/LeptonInjector/geometry/Geometry.h"
#include "../../../utilities/public/LeptonInjector/utilities/Random.h"

void register_CrossSectionCollection(pybind11::module_ & m) {
using namespace pybind11;
using namespace LI::crosssections;

class_<CrossSectionCollection, std::shared_ptr<CrossSectionCollection>>(m, "CrossSectionCollection")
.def(init<>())
.def(init<LI::dataclasses::Particle::ParticleType, std::vector<std::shared_ptr<CrossSection>>>())
.def(init<LI::dataclasses::Particle::ParticleType, std::vector<std::shared_ptr<Decay>>>())
.def(init<LI::dataclasses::Particle::ParticleType, std::vector<std::shared_ptr<CrossSection>>, std::vector<std::shared_ptr<Decay>>>())
.def(self == self)
.def("GetDecays",&CrossSectionCollection::GetDecays)
.def("HasCrossSections",&CrossSectionCollection::HasCrossSections)
.def("HasDecays",&CrossSectionCollection::HasDecays)
.def("GetCrossSectionsForTarget",&CrossSectionCollection::GetCrossSectionsForTarget)
.def("GetCrossSectionsByTarget",&CrossSectionCollection::GetCrossSectionsByTarget)
.def("TargetTypes",&CrossSectionCollection::TargetTypes)
.def("TotalDecayWidth",&CrossSectionCollection::TotalDecayWidth)
.def("TotalDecayLength",&CrossSectionCollection::TotalDecayLength)
.def("MatchesPrimary",&CrossSectionCollection::MatchesPrimary)
;
}
43 changes: 43 additions & 0 deletions projects/crosssections/private/pybindings/DISFromSpline.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#include <set>
#include <memory>
#include <string>

#include <pybind11/pybind11.h>
#include <pybind11/operators.h>
#include <pybind11/stl.h>

#include "../../public/LeptonInjector/crosssections/CrossSection.h"
#include "../../public/LeptonInjector/crosssections/DISFromSpline.h"
#include "../../../dataclasses/public/LeptonInjector/dataclasses/Particle.h"
#include "../../../geometry/public/LeptonInjector/geometry/Geometry.h"
#include "../../../utilities/public/LeptonInjector/utilities/Random.h"

void register_DISFromSpline(pybind11::module_ & m) {
using namespace pybind11;
using namespace LI::crosssections;

class_<DISFromSpline, std::shared_ptr<DISFromSpline>, CrossSection> disfromspline(m, "DISFromSpline");

disfromspline
.def(init<>())
.def(init<std::vector<char>, std::vector<char>, int, double, double, std::set<LI::dataclasses::Particle::ParticleType>, std::set<LI::dataclasses::Particle::ParticleType>>())
.def(init<std::vector<char>, std::vector<char>, int, double, double, std::vector<LI::dataclasses::Particle::ParticleType>, std::vector<LI::dataclasses::Particle::ParticleType>>())
.def(init<std::string, std::string, int, double, double, std::set<LI::dataclasses::Particle::ParticleType>, std::set<LI::dataclasses::Particle::ParticleType>>())
.def(init<std::string, std::string, std::set<LI::dataclasses::Particle::ParticleType>, std::set<LI::dataclasses::Particle::ParticleType>>())
.def(init<std::string, std::string, int, double, double, std::vector<LI::dataclasses::Particle::ParticleType>, std::vector<LI::dataclasses::Particle::ParticleType>>())
.def(init<std::string, std::string, std::vector<LI::dataclasses::Particle::ParticleType>, std::vector<LI::dataclasses::Particle::ParticleType>>())
.def(self == self)
.def("TotalCrossSection",overload_cast<LI::dataclasses::InteractionRecord const &>(&DISFromSpline::TotalCrossSection, const_))
.def("TotalCrossSection",overload_cast<LI::dataclasses::Particle::ParticleType, double>(&DISFromSpline::TotalCrossSection, const_))
.def("TotalCrossSection",overload_cast<LI::dataclasses::Particle::ParticleType, double, LI::dataclasses::Particle::ParticleType>(&DISFromSpline::TotalCrossSection, const_))
.def("DifferentialCrossSection",overload_cast<LI::dataclasses::InteractionRecord const &>(&DISFromSpline::DifferentialCrossSection, const_))
.def("DifferentialCrossSection",overload_cast<double, double, double, double>(&DISFromSpline::DifferentialCrossSection, const_))
.def("InteractionThreshold",&DISFromSpline::InteractionThreshold)
.def("GetPossibleTargets",&DISFromSpline::GetPossibleTargets)
.def("GetPossibleTargetsFromPrimary",&DISFromSpline::GetPossibleTargetsFromPrimary)
.def("GetPossiblePrimaries",&DISFromSpline::GetPossiblePrimaries)
.def("GetPossibleSignatures",&DISFromSpline::GetPossibleSignatures)
.def("GetPossibleSignaturesFromParents",&DISFromSpline::GetPossibleSignaturesFromParents)
.def("FinalStateProbability",&DISFromSpline::FinalStateProbability);
}

23 changes: 23 additions & 0 deletions projects/crosssections/private/pybindings/Decay.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#include <set>
#include <memory>
#include <string>

#include <pybind11/pybind11.h>
#include <pybind11/operators.h>
#include <pybind11/stl.h>

#include "../../public/LeptonInjector/crosssections/CrossSection.h"
#include "../../public/LeptonInjector/crosssections/Decay.h"
#include "../../../dataclasses/public/LeptonInjector/dataclasses/Particle.h"
#include "../../../geometry/public/LeptonInjector/geometry/Geometry.h"
#include "../../../utilities/public/LeptonInjector/utilities/Random.h"

void register_Decay(pybind11::module_ & m) {
using namespace pybind11;
using namespace LI::crosssections;

class_<Decay, std::shared_ptr<Decay>>(m, "Decay")
.def("TotalDecayLength",&Decay::TotalDecayLength)
.def("TotalDecayLengthForFinalState",&Decay::TotalDecayLengthForFinalState);

}
54 changes: 54 additions & 0 deletions projects/crosssections/private/pybindings/DipoleFromTable.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#include <set>
#include <memory>
#include <string>

#include <pybind11/pybind11.h>
#include <pybind11/operators.h>
#include <pybind11/stl.h>

#include "../../public/LeptonInjector/crosssections/CrossSection.h"
#include "../../public/LeptonInjector/crosssections/DipoleFromTable.h"
#include "../../../dataclasses/public/LeptonInjector/dataclasses/Particle.h"
#include "../../../geometry/public/LeptonInjector/geometry/Geometry.h"
#include "../../../utilities/public/LeptonInjector/utilities/Random.h"

void register_DipoleFromTable(pybind11::module_ & m) {
using namespace pybind11;
using namespace LI::crosssections;

class_<DipoleFromTable, std::shared_ptr<DipoleFromTable>, CrossSection> dipolefromtable(m, "DipoleFromTable");

dipolefromtable
.def(init<double, double, DipoleFromTable::HelicityChannel>())
.def(init<double, double, DipoleFromTable::HelicityChannel, bool, bool>())
.def(init<double, double, DipoleFromTable::HelicityChannel, bool, bool, bool>())
.def(init<double, double, DipoleFromTable::HelicityChannel, std::set<LI::dataclasses::Particle::ParticleType>>())
.def(self == self)
.def(init<double, double, DipoleFromTable::HelicityChannel, bool, bool, std::set<LI::dataclasses::Particle::ParticleType>>())
.def(init<double, double, DipoleFromTable::HelicityChannel, bool, bool, bool, std::set<LI::dataclasses::Particle::ParticleType>>())
.def("TotalCrossSection",overload_cast<LI::dataclasses::InteractionRecord const &>(&DipoleFromTable::TotalCrossSection, const_))
.def("TotalCrossSection",overload_cast<LI::dataclasses::Particle::ParticleType, double, LI::dataclasses::Particle::ParticleType>(&DipoleFromTable::TotalCrossSection, const_))
.def("DifferentialCrossSection",overload_cast<LI::dataclasses::InteractionRecord const &>(&DipoleFromTable::DifferentialCrossSection, const_))
.def("DifferentialCrossSection",overload_cast<LI::dataclasses::Particle::ParticleType, double, LI::dataclasses::Particle::ParticleType, double, double>(&DipoleFromTable::DifferentialCrossSection, const_))
.def("DifferentialCrossSection",overload_cast<LI::dataclasses::Particle::ParticleType, double, LI::dataclasses::Particle::ParticleType, double, double, double>(&DipoleFromTable::DifferentialCrossSection, const_))
.def("InteractionThreshold",&DipoleFromTable::InteractionThreshold)
.def("GetPossibleTargets",&DipoleFromTable::GetPossibleTargets)
.def("GetPossibleTargetsFromPrimary",&DipoleFromTable::GetPossibleTargetsFromPrimary)
.def("GetPossiblePrimaries",&DipoleFromTable::GetPossiblePrimaries)
.def("GetPossibleSignatures",&DipoleFromTable::GetPossibleSignatures)
.def("GetPossibleSignaturesFromParents",&DipoleFromTable::GetPossibleSignaturesFromParents)
.def("AddDifferentialCrossSectionFile",&DipoleFromTable::AddDifferentialCrossSectionFile)
.def("AddTotalCrossSectionFile",&DipoleFromTable::AddTotalCrossSectionFile)
.def("AddDifferentialCrossSection",&DipoleFromTable::AddDifferentialCrossSection)
.def("AddTotalCrossSection",&DipoleFromTable::AddTotalCrossSection)
.def("DensityVariables",&DipoleFromTable::DensityVariables)
.def("FinalStateProbability",&DipoleFromTable::FinalStateProbability)
;

enum_<DipoleFromTable::HelicityChannel>(dipolefromtable, "HelicityChannel")
.value("Conserving",DipoleFromTable::HelicityChannel::Conserving)
.value("Flipping",DipoleFromTable::HelicityChannel::Flipping)
.export_values()
;
}

42 changes: 42 additions & 0 deletions projects/crosssections/private/pybindings/NeutrissimoDecay.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#include <set>
#include <memory>
#include <string>

#include <pybind11/pybind11.h>
#include <pybind11/operators.h>
#include <pybind11/stl.h>

#include "../../public/LeptonInjector/crosssections/CrossSection.h"
#include "../../public/LeptonInjector/crosssections/NeutrissimoDecay.h"
#include "../../../dataclasses/public/LeptonInjector/dataclasses/Particle.h"
#include "../../../geometry/public/LeptonInjector/geometry/Geometry.h"
#include "../../../utilities/public/LeptonInjector/utilities/Random.h"

void register_NeutrissimoDecay(pybind11::module_ & m) {
using namespace pybind11;
using namespace LI::crosssections;

class_<NeutrissimoDecay, std::shared_ptr<NeutrissimoDecay>, Decay> neutrissimodecay(m, "NeutrissimoDecay");

neutrissimodecay
.def(init<double, std::vector<double>, NeutrissimoDecay::ChiralNature>())
.def(init<double, std::vector<double>, NeutrissimoDecay::ChiralNature, std::set<LI::dataclasses::Particle::ParticleType> const &>())
.def(init<double, double, NeutrissimoDecay::ChiralNature>())
.def(init<double, double, NeutrissimoDecay::ChiralNature, std::set<LI::dataclasses::Particle::ParticleType> const &>())
.def(self == self)
.def("GetHNLMass",&NeutrissimoDecay::GetHNLMass)
.def("TotalDecayWidth",overload_cast<LI::dataclasses::InteractionRecord const &>(&NeutrissimoDecay::TotalDecayWidth, const_))
.def("TotalDecayWidth",overload_cast<LI::dataclasses::Particle::ParticleType>(&NeutrissimoDecay::TotalDecayWidth, const_))
.def("TotalDecayWidthForFinalState",&NeutrissimoDecay::TotalDecayWidthForFinalState)
.def("DifferentialDecayWidth",&NeutrissimoDecay::DifferentialDecayWidth)
.def("GetPossibleSignatures",&NeutrissimoDecay::GetPossibleSignatures)
.def("GetPossibleSignaturesFromParent",&NeutrissimoDecay::GetPossibleSignaturesFromParent)
.def("FinalStateProbability",&NeutrissimoDecay::FinalStateProbability)
;

enum_<NeutrissimoDecay::ChiralNature>(neutrissimodecay, "ChiralNature")
.value("Dirac",NeutrissimoDecay::ChiralNature::Dirac)
.value("Majorana",NeutrissimoDecay::ChiralNature::Majorana)
.export_values()
;
}
Loading

0 comments on commit 2964333

Please sign in to comment.