ATLAS Offline Software
Loading...
Searching...
No Matches
ForwardTracker/ForwardTracker/IBeamElement.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef FORWARDTRACKER_IBEAMELEMENT_H
6#define FORWARDTRACKER_IBEAMELEMENT_H
7
9
10#include <memory>
11
12#include <string>
13#include <vector>
14#include <list>
15#include <iosfwd>
16
17namespace ForwardTracker {
18
19 class IParticle;
20 class Point;
21
23
24 public:
25
26 virtual ~IBeamElement() {};
27
28 virtual std::string label() const = 0;
29 virtual Side side() const = 0;
30 virtual double frontFace() const = 0;
31 virtual double rearFace() const = 0;
32 virtual Point position() const = 0;
33 virtual bool isEndElement() const = 0;
34
35 virtual void track(IParticle&) const = 0;
36
37 virtual std::shared_ptr<const IBeamElement> clone() const = 0;
38
39 typedef std::shared_ptr<const IBeamElement> ConstPtr_t;
40 typedef std::vector<ConstPtr_t> Container_t;
41 typedef Container_t::iterator Iter_t;
42 typedef Container_t::const_iterator ConstIter_t;
43 typedef std::list<ConstPtr_t> List_t;
44 typedef List_t::iterator ListIter_t;
45 typedef List_t::const_iterator ConstListIter_t;
46
47 virtual std::string str() const = 0;
48 };
49
50 std::ostream& operator<<(std::ostream& os, const IBeamElement& be);
51}
52
53#endif
virtual std::string label() const =0
virtual double frontFace() const =0
virtual std::string str() const =0
virtual Point position() const =0
virtual std::shared_ptr< const IBeamElement > clone() const =0
virtual bool isEndElement() const =0
std::shared_ptr< const IBeamElement > ConstPtr_t
virtual double rearFace() const =0
virtual Side side() const =0
virtual void track(IParticle &) const =0
std::ostream & operator<<(std::ostream &, const Beamline &)