diff options
Diffstat (limited to 'src/main/StraightElement.h')
-rw-r--r-- | src/main/StraightElement.h | 31 |
1 files changed, 8 insertions, 23 deletions
diff --git a/src/main/StraightElement.h b/src/main/StraightElement.h index dc7603b..6de596a 100644 --- a/src/main/StraightElement.h +++ b/src/main/StraightElement.h @@ -20,35 +20,20 @@ class StraightElement: public Element { public: - StraightElement(const Vector3D& entry, const Vector3D& exit, double sectionRadius, Element* next = NULL): - Element(entry, exit, sectionRadius, next) - {}; + StraightElement(const Vector3D& entry, const Vector3D& exit, double sectionRadius, Element* next = NULL); - virtual ~StraightElement() {}; + virtual ~StraightElement(); - //virtual StraightElement* clone() const {return new StraightElement(*this);} + virtual bool hasHit(const Particle& particle) const; - virtual bool hasHit(const Particle& particle) const { - Vector3D a(particle.getPosition() - entryPosition); - const Vector3D b = (particle.getPosition() - entryPosition); - return (a.cross(b)).norm() / getDiagonal().norm() > sectionRadius; - }; + virtual bool isPast(const Particle& particle) const; - virtual bool isPast(const Particle& particle) const { - const Vector3D v(particle.getPosition() - entryPosition); - return getDiagonal().dot(v) > getDiagonal().dot(getDiagonal()); - } + virtual std::string getType() const; + virtual std::string toString() const; - virtual std::string getType() const {return "Straight Element";} - virtual std::string toString() const { - std::stringstream s; - s << Element::toString(); - return s.str(); - } + virtual void accept(const ElementVisitor& v) const; - virtual void accept(const ElementVisitor& v) const {v.visit(this);} - - virtual StraightElement* clone() const {return new StraightElement(getEntryPosition(), getExitPosition(), getSectionRadius());} + virtual StraightElement* clone() const; }; |