Program Listing for File Boundary.h

Return to documentation for file (include/crpropa/module/Boundary.h)

#ifndef CRPROPA_BOUNDARY_H
#define CRPROPA_BOUNDARY_H

#include "crpropa/Module.h"

namespace crpropa {
class PeriodicBox: public Module {
private:
        Vector3d origin;
        Vector3d size;

public:
        PeriodicBox();
        PeriodicBox(Vector3d origin, Vector3d size);
        void process(Candidate *candidate) const;
        void setOrigin(Vector3d origin);
        void setSize(Vector3d size);
        std::string getDescription() const;
};

class ReflectiveBox: public Module {
private:
        Vector3d origin;
        Vector3d size;

public:
        ReflectiveBox();
        ReflectiveBox(Vector3d origin, Vector3d size);
        void process(Candidate *candidate) const;
        void setOrigin(Vector3d origin);
        void setSize(Vector3d size);
        std::string getDescription() const;
};

class CubicBoundary: public AbstractCondition {
private:
        Vector3d origin;
        double size;
        double margin;
        bool limitStep;

public:
        CubicBoundary();
        CubicBoundary(Vector3d origin, double size);
        void process(Candidate *candidate) const;
        void setOrigin(Vector3d origin);
        void setSize(double size);
        void setMargin(double margin);
        void setLimitStep(bool limitStep);
        std::string getDescription() const;
};

class SphericalBoundary: public AbstractCondition {
private:
        Vector3d center;
        double radius;
        double margin;
        bool limitStep;

public:
        SphericalBoundary();
        SphericalBoundary(Vector3d center, double radius);
        void process(Candidate *candidate) const;
        void setCenter(Vector3d center);
        void setRadius(double size);
        void setMargin(double margin);
        void setLimitStep(bool limitStep);
        std::string getDescription() const;
};

class EllipsoidalBoundary: public AbstractCondition {
private:
        Vector3d focalPoint1;
        Vector3d focalPoint2;
        double majorAxis;
        double margin;
        bool limitStep;

public:
        EllipsoidalBoundary();
        EllipsoidalBoundary(Vector3d focalPoint1, Vector3d focalPoint2,
                        double majorAxis);
        void process(Candidate *candidate) const;
        void setFocalPoints(Vector3d focalPoint1, Vector3d focalPoint2);
        void setMajorAxis(double size);
        void setMargin(double margin);
        void setLimitStep(bool limitStep);
        std::string getDescription() const;
};


class CylindricalBoundary: public AbstractCondition {
private:
        Vector3d origin;
        double height;
        double radius;
        double margin;
        bool limitStep;

public:
        CylindricalBoundary();
        CylindricalBoundary(Vector3d origin, double height,
                        double radius);
        void process(Candidate *candidate) const;
        void setOrigin(Vector3d origin);
        void setHeight(double height);
        void setRadius(double radius);
        void setMargin(double margin);
        void setLimitStep(bool limitStep);
        std::string getDescription() const;
};
} // namespace crpropa

#endif // CRPROPA_BOUNDARY_H