Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
136 commits
Select commit Hold shift + click to select a range
06ae298
Implement get_pdf functionality
Aug 27, 2025
78d841e
Update include/openmc/distribution.h
itay-space Aug 28, 2025
33a27a9
Update include/openmc/particle_data.h
itay-space Aug 28, 2025
d968875
Update include/openmc/particle_data.h
itay-space Aug 28, 2025
3b896c0
Update src/physics.cpp
itay-space Aug 28, 2025
c034bff
Update src/physics.cpp
itay-space Aug 28, 2025
a5d2f4c
Update src/physics.cpp
itay-space Aug 28, 2025
ca5b44e
Cleaning some code
Aug 31, 2025
eed8b1c
Resolving conversations
Aug 31, 2025
f2ecdd4
cosmetic fixes
GuySten Aug 31, 2025
71d5fa2
Merge branch 'develop' into get_pdf
GuySten Aug 31, 2025
c3b4d82
simplified code significantly
GuySten Aug 31, 2025
78a33cc
Update src/distribution_angle.cpp
itay-space Aug 31, 2025
6d70d39
ran clang format
GuySten Aug 31, 2025
acfd402
fixes
GuySten Aug 31, 2025
98ca32e
cosmetics
GuySten Aug 31, 2025
26d2a56
using openmc's fatal_error
Sep 1, 2025
7abe69c
Use accessors in powerlaw
Sep 1, 2025
d183cce
clausing error for different distributions
Sep 1, 2025
37b41c4
fixing function signature
Sep 1, 2025
007dcf5
Update include/openmc/angle_energy.h
Eliezer214 Sep 2, 2025
ebebb7a
Update include/openmc/distribution_angle.h
Eliezer214 Sep 2, 2025
0239c1f
Update include/openmc/secondary_thermal.h
Eliezer214 Sep 2, 2025
225f837
Update include/openmc/angle_energy.h
Eliezer214 Sep 2, 2025
fa22e14
Update include/openmc/reaction_product.h
Eliezer214 Sep 2, 2025
a0678c9
Update src/reaction_product.cpp
itay-space Sep 2, 2025
e590d82
Update src/thermal.cpp
itay-space Sep 2, 2025
1b1134e
Update include/openmc/secondary_thermal.h
itay-space Sep 2, 2025
5c348f1
Update src/secondary_uncorrelated.cpp
itay-space Sep 2, 2025
203a191
Update src/secondary_thermal.cpp
itay-space Sep 2, 2025
c4d8aa6
Update include/openmc/secondary_thermal.h
itay-space Sep 2, 2025
e9b6860
Update src/reaction_product.cpp
itay-space Sep 2, 2025
ee1f2c5
Apply suggestion from @GuySten
itay-space Sep 2, 2025
e07e312
Apply suggestion from @GuySten
itay-space Sep 2, 2025
1ab0da1
Update src/thermal.cpp
itay-space Sep 2, 2025
c98566a
Update src/thermal.cpp
itay-space Sep 2, 2025
de3fc79
Update include/openmc/reaction_product.h
itay-space Sep 2, 2025
978bf74
remove gsl-lite
GuySten Sep 2, 2025
eb8389d
few fixes to signature
Sep 2, 2025
220f099
more signature fixes
Sep 2, 2025
d9a2b53
more signature fixes
Sep 2, 2025
8271e15
ran clang format
GuySten Sep 2, 2025
d0d8494
Restore PDF calculation block in secondary_kalbach.cpp after accident…
Sep 2, 2025
f2418d2
cleaning
Sep 2, 2025
9a5d701
remove gsl-lite
GuySten Sep 2, 2025
3f91b0d
clean
Sep 2, 2025
e1d069c
Update src/secondary_correlated.cpp
itay-space Sep 2, 2025
f9e4693
Update include/openmc/secondary_thermal.h
GuySten Sep 2, 2025
b45dcfd
ran clang format
GuySten Sep 2, 2025
a85365c
Update src/secondary_kalbach.cpp
GuySten Sep 2, 2025
d782013
returning pdf assuming data in lab
Sep 2, 2025
c72bb02
cleaning
Sep 2, 2025
3cb6821
remove gsl-lite
GuySten Sep 2, 2025
47e96a6
Apply suggestions from code review
GuySten Sep 2, 2025
f97f4ad
Update secondary_nbody.cpp
GuySten Sep 2, 2025
1e4b763
ran clang format
GuySten Sep 2, 2025
3bc4698
Update src/secondary_kalbach.cpp
itay-space Sep 3, 2025
4e85033
returning pdf
Sep 3, 2025
6727a03
Update src/secondary_nbody.cpp
itay-space Sep 3, 2025
c5a737b
isotropic and no lab yet
Sep 3, 2025
186ad34
Update src/distribution_angle.cpp
itay-space Sep 3, 2025
108fa52
remove gsl-lite
GuySten Sep 2, 2025
0f40022
ran clang format
GuySten Sep 3, 2025
4bf8f23
Update include/openmc/distribution_angle.h
GuySten Sep 3, 2025
ca7cd85
returning pdf in uncorrelated
Sep 3, 2025
d7b1621
fix access to get_pdf
GuySten Sep 3, 2025
7cb99e8
ran clang format
GuySten Sep 3, 2025
e2de1c4
cosmetics
GuySten Sep 3, 2025
d5ea1c0
WIP: trying new approach until reaction_product.cpp
GuySten Sep 4, 2025
dc87a7f
fix additional signatures
GuySten Sep 4, 2025
ad86823
wip
GuySten Sep 4, 2025
4500491
reverted most of the changes in the new approach
GuySten Sep 4, 2025
7a1b5cc
bugfix
GuySten Sep 4, 2025
ae2a0fb
bugfix
GuySten Sep 4, 2025
f3aa6dc
bugfix
GuySten Sep 4, 2025
52feef7
another fix for mixed elastic
GuySten Sep 4, 2025
12d5372
guarantee every AngleEnergy has sample_energy_and_pdf
GuySten Sep 4, 2025
ff83fc4
fix for decay photons
GuySten Sep 4, 2025
f859882
replace pdf->evaluate
GuySten Sep 6, 2025
df0ec91
wip
GuySten Sep 22, 2025
babeed5
Merge branch 'openmc-dev:develop' into point-detector
GuySten Oct 16, 2025
b0613dc
Merge branch 'develop' into get_pdf
GuySten Nov 3, 2025
8bb4356
Merge branch 'develop' into get_pdf
GuySten Nov 3, 2025
cc7c3a5
added evaluate for SphericalUnitDistribution
GuySten Nov 3, 2025
758a01f
Merge branch 'develop' into get_pdf
GuySten Dec 3, 2025
481901e
simplify PR significantly
GuySten Dec 3, 2025
82fe36f
Merge branch 'openmc-dev:develop' into point-detector
GuySten Dec 3, 2025
b067e7f
Merge branch 'develop' into get_pdf
GuySten Dec 23, 2025
43a6fbb
some fixes
GuySten Jan 12, 2026
c52ad4f
further simplification
GuySten Jan 16, 2026
f9d6d0f
further simplification
GuySten Jan 16, 2026
dc38dc5
further simplification
GuySten Jan 16, 2026
02aea31
reserve vector sizes
GuySten Jan 16, 2026
f14005a
Fix mu_vector reservation size in secondary_thermal.cpp
GuySten Jan 17, 2026
903af78
clang format
GuySten Jan 17, 2026
2037cba
Merge branch 'develop' into point-detector
GuySten Jan 29, 2026
20ec56b
Merge branch 'develop' into get_pdf
GuySten Jan 29, 2026
312f327
merge get_pdf updates
GuySten Jan 29, 2026
93d905c
wip
GuySten Jan 29, 2026
04c9797
wip
GuySten Jan 29, 2026
8afed32
wip
GuySten Jan 29, 2026
a277387
wip
GuySten Jan 29, 2026
dd49099
wip
GuySten Jan 29, 2026
9710d59
wip
GuySten Jan 29, 2026
e800c47
wip
GuySten Jan 29, 2026
a5f4809
wip
GuySten Jan 29, 2026
753b849
wip
GuySten Jan 29, 2026
9d16542
wip
GuySten Jan 29, 2026
64e23e3
fix for invalid energy distribution in elastic scattering case
GuySten Jan 29, 2026
1982782
try to use another stream for next event tracking
GuySten Jan 29, 2026
d086260
try to use another stream for next event tracking
GuySten Jan 29, 2026
1524e64
wip edit
GuySten Jan 29, 2026
1f36c89
Refactor probability sampling logic in reaction_product
GuySten Jan 29, 2026
84ebc85
still works
GuySten Jan 29, 2026
3e2a26b
still works
GuySten Jan 29, 2026
0099550
fix typo
GuySten Jan 29, 2026
8ee06a6
Merge branch 'develop' into get_pdf
GuySten Mar 2, 2026
d11f2e5
decrease dynamic allocations
GuySten Mar 2, 2026
321d188
decrease dynamic allocations further
GuySten Mar 2, 2026
7b9777e
decrease dynamic allocations further
GuySten Mar 2, 2026
1f5e24e
decrease
GuySten Mar 2, 2026
4209573
Merge branch 'develop' into point-detector
GuySten Mar 2, 2026
b60cd20
Merge branch 'get_pdf' into point-detector
GuySten Mar 2, 2026
7a89ea0
ran clang format
GuySten Mar 2, 2026
85654ef
fixed leftover merge conflict
GuySten Mar 2, 2026
d60b97b
fixed a bug
GuySten Mar 2, 2026
9e25f43
Merge branch 'develop' into point-detector
GuySten Mar 15, 2026
94ccdb1
Remove evaluate function declaration from header
GuySten Mar 15, 2026
fff4522
Update chain.h
GuySten Mar 15, 2026
2d01789
various fixes
GuySten Mar 15, 2026
2343d27
implement ParticleRay class
GuySten Mar 15, 2026
9b7d1ac
Merge branch 'particle-ray' into point-detector
GuySten Mar 15, 2026
c8d7503
wip
GuySten Mar 15, 2026
caa572f
wip
GuySten Mar 16, 2026
0933fc5
ran clang forma
GuySten Mar 16, 2026
6206e39
fix missing declarations
GuySten Mar 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -451,6 +451,7 @@ list(APPEND libopenmc_SOURCES
src/tallies/filter_musurface.cpp
src/tallies/filter_parent_nuclide.cpp
src/tallies/filter_particle.cpp
src/tallies/filter_point.cpp
src/tallies/filter_particle_production.cpp
src/tallies/filter_polar.cpp
src/tallies/filter_reaction.cpp
Expand Down
4 changes: 2 additions & 2 deletions include/openmc/constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -296,9 +296,9 @@ enum class MgxsType {

enum class TallyResult { VALUE, SUM, SUM_SQ, SUM_THIRD, SUM_FOURTH };

enum class TallyType { VOLUME, MESH_SURFACE, SURFACE, PULSE_HEIGHT };
enum class TallyType { VOLUME, MESH_SURFACE, SURFACE, PULSE_HEIGHT, POINT };

enum class TallyEstimator { ANALOG, TRACKLENGTH, COLLISION };
enum class TallyEstimator { ANALOG, TRACKLENGTH, COLLISION, NEXT_EVENT };

enum class TallyEvent { SURFACE, LATTICE, KILL, SCATTER, ABSORB };

Expand Down
2 changes: 2 additions & 0 deletions include/openmc/particle.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ class Particle : public ParticleData {
//==========================================================================
// Methods

double mass() const;

double speed() const;

//! create a secondary particle
Expand Down
2 changes: 1 addition & 1 deletion include/openmc/particle_data.h
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,7 @@ class GeometryState {
* Algorithms.” Annals of Nuclear Energy 113 (March 2018): 506–18.
* https://doi.org/10.1016/j.anucene.2017.11.032.
*/
class ParticleData : public GeometryState {
class ParticleData : virtual public GeometryState {
private:
//==========================================================================
// Data members -- see public: below for descriptions
Expand Down
2 changes: 1 addition & 1 deletion include/openmc/physics.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ void sample_fission_neutron(

//! handles all reactions with a single secondary neutron (other than fission),
//! i.e. level scattering, (n,np), (n,na), etc.
void inelastic_scatter(const Nuclide& nuc, const Reaction& rx, Particle& p);
void inelastic_scatter(int i_nuclide, const Reaction& rx, Particle& p);

void sample_secondary_photons(Particle& p, int i_nuclide);

Expand Down
11 changes: 11 additions & 0 deletions include/openmc/position.h
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,17 @@ inline Position operator/(double a, Position b)
return b /= a;
}

inline bool operator<(Position a, Position b)
{
if (a[0] != b[0])
return (a[0] < b[0]);
if (a[1] != b[1])
return (a[1] < b[1]);
if (a[2] != b[2])
return (a[2] < b[2]);
return false;
}

inline Position Position::reflect(Position n) const
{
const double projection = n.dot(*this);
Expand Down
31 changes: 29 additions & 2 deletions include/openmc/ray.h
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
#ifndef OPENMC_RAY_H
#define OPENMC_RAY_H

#include "openmc/particle_data.h"
#include "openmc/particle.h"
#include "openmc/position.h"

namespace openmc {

// Base class that implements ray tracing logic, not necessarily through
// defined regions of the geometry but also outside of it.
class Ray : public GeometryState {
class Ray : virtual public GeometryState {

public:
// Initialize from location and direction
Expand All @@ -32,6 +32,8 @@ class Ray : public GeometryState {
// Sets the dist_ variable
void compute_distance();

virtual void update_distance();

protected:
// Records how far the ray has traveled
double traversal_distance_ {0.0};
Expand All @@ -46,5 +48,30 @@ class Ray : public GeometryState {
unsigned event_counter_ {0};
};

class ParticleRay : public Ray, public Particle {

public:
ParticleRay(
Position r, Direction u, ParticleType type_, double time_, double E_)
: Ray(r, u)
{
type() = type_;
time() = time_;
E() = E_;
}

void on_intersection() override;

// Sets the dist_ variable
void update_distance() override;

const double& traversal_distance() const { return traversal_distance_; }
const double& traversal_mfp() const { return traversal_mfp_; }

protected:
// Records how much mean free paths the ray traveled
double traversal_mfp_ {0.0};
};

} // namespace openmc
#endif // OPENMC_RAY_H
14 changes: 8 additions & 6 deletions include/openmc/simulation.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,14 @@ extern "C" double
extern double log_spacing; //!< lethargy spacing for energy grid searches
extern "C" int n_lost_particles; //!< cumulative number of lost particles
extern "C" bool need_depletion_rx; //!< need to calculate depletion rx?
extern "C" int restart_batch; //!< batch at which a restart job resumed
extern "C" bool satisfy_triggers; //!< have tally triggers been satisfied?
extern int ssw_current_file; //!< current surface source file
extern "C" int total_gen; //!< total number of generations simulated
extern double total_weight; //!< Total source weight in a batch
extern int64_t work_per_rank; //!< number of particles per MPI rank
extern bool
nonvacuum_boundary_present; //!< Does the geometry contain non-vacuum b.c.
extern "C" int restart_batch; //!< batch at which a restart job resumed
extern "C" bool satisfy_triggers; //!< have tally triggers been satisfied?
extern int ssw_current_file; //!< current surface source file
extern "C" int total_gen; //!< total number of generations simulated
extern double total_weight; //!< Total source weight in a batch
extern int64_t work_per_rank; //!< number of particles per MPI rank

extern const RegularMesh* entropy_mesh;
extern const RegularMesh* ufs_mesh;
Expand Down
1 change: 1 addition & 0 deletions include/openmc/tallies/filter.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ enum class FilterType {
PARENT_NUCLIDE,
PARTICLE,
PARTICLE_PRODUCTION,
POINT,
POLAR,
REACTION,
SPHERICAL_HARMONICS,
Expand Down
55 changes: 55 additions & 0 deletions include/openmc/tallies/filter_point.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#ifndef OPENMC_TALLIES_FILTER_POINT_H
#define OPENMC_TALLIES_FILTER_POINT_H

#include "openmc/position.h"
#include "openmc/span.h"
#include "openmc/tallies/filter.h"
#include "openmc/vector.h"

namespace openmc {

//==============================================================================
//! Bins tally by point detectors
//==============================================================================

class PointFilter : public Filter {
public:
//----------------------------------------------------------------------------
// Constructors, destructors

~PointFilter() = default;

//----------------------------------------------------------------------------
// Methods

std::string type_str() const override { return "point"; }
FilterType type() const override { return FilterType::POINT; }

void from_xml(pugi::xml_node node) override;

void get_all_bins(const Particle& p, TallyEstimator estimator,
FilterMatch& match) const override;

void to_statepoint(hid_t filter_group) const override;

std::string text_label(int bin) const override;

//----------------------------------------------------------------------------
// Accessors

const vector<std::pair<Position, double>>& detectors() const
{
return detectors_;
}

void set_detectors(span<std::pair<Position, double>> detectors);

private:
//----------------------------------------------------------------------------
// Data members

vector<std::pair<Position, double>> detectors_;
};

} // namespace openmc
#endif // OPENMC_TALLIES_FILTER_PARTICLE_H
4 changes: 4 additions & 0 deletions include/openmc/tallies/tally.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include "openmc/constants.h"
#include "openmc/memory.h" // for unique_ptr
#include "openmc/position.h"
#include "openmc/span.h"
#include "openmc/tallies/filter.h"
#include "openmc/tallies/trigger.h"
Expand All @@ -11,6 +12,7 @@
#include "openmc/tensor.h"
#include "pugixml.hpp"

#include <set>
#include <string>
#include <unordered_map>

Expand Down Expand Up @@ -209,11 +211,13 @@ extern vector<int> active_analog_tallies;
extern vector<int> active_tracklength_tallies;
extern vector<int> active_timed_tracklength_tallies;
extern vector<int> active_collision_tallies;
extern vector<int> active_point_tallies;
extern vector<int> active_meshsurf_tallies;
extern vector<int> active_surface_tallies;
extern vector<int> active_pulse_height_tallies;
extern vector<int32_t> pulse_height_cells;
extern vector<double> time_grid;
extern std::set<Position> active_point_detectors;

} // namespace model

Expand Down
41 changes: 41 additions & 0 deletions include/openmc/tallies/tally_scoring.h
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
#ifndef OPENMC_TALLIES_TALLY_SCORING_H
#define OPENMC_TALLIES_TALLY_SCORING_H

#include "openmc/nuclide.h"
#include "openmc/particle.h"
#include "openmc/ray.h"
#include "openmc/tallies/filter.h"
#include "openmc/tallies/tally.h"
#include "openmc/thermal.h"

namespace openmc {

Expand Down Expand Up @@ -81,6 +84,9 @@ void score_analog_tally_ce(Particle& p);
//! \param p The particle being tracked
void score_analog_tally_mg(Particle& p);

void score_tracklength_tally_general(
Particle& p, double flux, const vector<int>& tallies);

//! Score tallies using a tracklength estimate of the flux.
//
//! This is triggered at every event (surface crossing, lattice crossing, or
Expand Down Expand Up @@ -122,6 +128,41 @@ void score_surface_tally(
//! \param tallies A vector of the indices of the tallies to score to
void score_pulse_height_tally(Particle& p, const vector<int>& tallies);

void score_point_tally(Particle& p, int i_nuclide, const Reaction& rx,
int i_product, Direction* v_t);

void score_point_tally(Particle& p, int i_nuclide, const ThermalData& sab,
const NuclideMicroXS& micro);

void score_point_tally(SourceSite& site, int source_index);

template<typename PDF>
void score_point_tally_impl(
const Position r, const ParticleType type, const double time, PDF pdffunc)
{
for (auto& det : model::active_point_detectors) {
auto u = (det - r);
double total_distance = u.norm();
u /= total_distance;
double E;
double pdf = pdffunc(u, E);
auto p = ParticleRay(r, u, type, time, E);
p.Ray::trace();
double distance = p.traversal_distance();
if (distance < total_distance)
continue;
double mfp = p.traversal_mfp();
double attenuation = std::exp(-mfp);

// Save the attenuation for point filter handling
p.wgt_last() = p.wgt();
p.wgt() *= attenuation;

double flux = p.wgt_last() * pdf;
score_tracklength_tally_general(p, flux, model::active_point_tallies);
}
}

} // namespace openmc

#endif // OPENMC_TALLIES_TALLY_SCORING_H
62 changes: 61 additions & 1 deletion openmc/filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
'energyout', 'mu', 'musurface', 'polar', 'azimuthal', 'distribcell',
'delayedgroup', 'energyfunction', 'cellfrom', 'materialfrom', 'legendre',
'spatiallegendre', 'sphericalharmonics', 'zernike', 'zernikeradial', 'particle',
'particleproduction', 'cellinstance', 'collision', 'time', 'parentnuclide',
'particleproduction', 'point', 'cellinstance', 'collision', 'time', 'parentnuclide',
'weight', 'meshborn', 'meshsurface', 'meshmaterial', 'reaction',
)

Expand Down Expand Up @@ -793,6 +793,66 @@ def from_xml_element(cls, elem, **kwargs):
return cls(bins, filter_id=filter_id)


class PointFilter(Filter):
"""Bins tally events based on point detectors.

Parameters
----------
bins : sequence of tuple[tuple[Real, Real, Real], Real]
Point detectors positions and exclusion radii.
filter_id : int
Unique identifier for the filter

Attributes
----------
bins : sequence of tuple[tuple[Real, Real, Real], Real]
Point detectors positions and exclusion radii.
id : int
Unique identifier for the filter
num_bins : Integral
The number of filter bins

"""

__hash__ = Filter.__hash__

def __eq__(self, other):
if type(self) is not type(other):
return False
elif len(self.bins) != len(other.bins):
return False
else:
return all(b1==b2 for b1,b2 in zip(self.bins,other.bins))

@Filter.bins.setter
def bins(self, bins):
cv.check_type('bins', bins, Sequence, tuple)
for i, item in enumerate(bins):
cv.check_type(f'bins[{i}]', item, tuple)
cv.check_length(f'bins[{i}]', item, 2, 2)
cv.check_type(f'bins[{i}][0]', item[0], tuple, Real)
cv.check_length(f'bins[{i}][0]', item[0], 3, 3)
cv.check_type(f'bins[{i}][1]', item[1], Real)
self._bins = bins

def to_xml_element(self):
"""Return XML Element representing the Filter.

Returns
-------
element : lxml.etree._Element
XML element containing filter data

"""
element = ET.Element('filter')
element.set('id', str(self.id))
element.set('type', self.short_name.lower())

subelement = ET.SubElement(element, 'bins')
subelement.text = ' '.join(str(b) for item in self.bins
for b in list(item[0])+[item[1]])
return element

class ParentNuclideFilter(ParticleFilter):
"""Bins tally events based on the parent nuclide

Expand Down
4 changes: 3 additions & 1 deletion openmc/lib/filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
'EnergyFilter', 'EnergyoutFilter', 'EnergyFunctionFilter', 'LegendreFilter',
'MaterialFilter', 'MaterialFromFilter', 'MeshFilter', 'MeshBornFilter',
'MeshMaterialFilter', 'MeshSurfaceFilter', 'MuFilter', 'MuSurfaceFilter',
'ParentNuclideFilter', 'ParticleFilter', 'ParticleProductionFilter', 'PolarFilter',
'ParentNuclideFilter', 'ParticleFilter', 'ParticleProductionFilter', 'PointFilter', 'PolarFilter',
'ReactionFilter', 'SphericalHarmonicsFilter', 'SpatialLegendreFilter',
'SurfaceFilter', 'TimeFilter', 'UniverseFilter', 'WeightFilter', 'ZernikeFilter',
'ZernikeRadialFilter', 'filters'
Expand Down Expand Up @@ -607,6 +607,8 @@ def bins(self):
self._index, particle_i.ctypes.data_as(POINTER(c_int32)))
return [ParticleType(i) for i in particle_i]

class PointFilter(Filter):
filter_type = 'point'

class ParticleProductionFilter(Filter):
filter_type = 'particleproduction'
Expand Down
Loading
Loading