ATLAS Offline Software
Loading...
Searching...
No Matches
HRoute Class Reference

#include <HRoute.h>

Inheritance diagram for HRoute:
Collaboration diagram for HRoute:

Public Types

typedef std::vector< ServiceVolume * > VolumeContainer

Public Member Functions

 HRoute ()
 HRoute (double r, double zmi, double zma, double zexit, const std::string &name)
double zMin () const
double zMax () const
double radius () const
double zExit () const
virtual double position () const
virtual double exit () const
virtual Route * nextRoute ()
const VolumeContainer & volumes () const
virtual void addVolume (ServiceVolume *vol)
virtual void setNextRoute (Route *nr)
virtual ServiceVolume * entryVolume (double pos, bool ascending, MsgStream &msg) const
virtual ServiceVolume * exitVolume (bool ascending, MsgStream &msg) const
const std::string & name () const
void setExitVolume (ServiceVolume *vp)

Private Attributes

double m_radius {}
double m_zMin {}
double m_zMax {}
double m_zExit {}
Route * m_next {}
VolumeContainer m_volumes
ServiceVolume * m_exitVolume
std::string m_name

Detailed Description

Definition at line 13 of file HRoute.h.

Member Typedef Documentation

◆ VolumeContainer

typedef std::vector<ServiceVolume*> HRoute::VolumeContainer

Definition at line 16 of file HRoute.h.

Constructor & Destructor Documentation

◆ HRoute() [1/2]

HRoute::HRoute ( )
inline

Definition at line 18 of file HRoute.h.

18: Route() {}
Route()
Definition Route.h:25

◆ HRoute() [2/2]

HRoute::HRoute ( double r,
double zmi,
double zma,
double zexit,
const std::string & name )
inline

Definition at line 19 of file HRoute.h.

19 :
20 Route(name),
21 m_radius(r), m_zMin(zmi), m_zMax(zma), m_zExit(zexit), m_next(0) {}
double m_zMin
Definition HRoute.h:43
Route * m_next
Definition HRoute.h:46
double m_zMax
Definition HRoute.h:44
double m_zExit
Definition HRoute.h:45
double m_radius
Definition HRoute.h:42
const std::string & name() const
Definition Route.h:42
int r
Definition globals.cxx:22

Member Function Documentation

◆ addVolume()

virtual void HRoute::addVolume ( ServiceVolume * vol)
inlinevirtual

Implements Route.

Definition at line 36 of file HRoute.h.

36{m_volumes.push_back(vol);}
VolumeContainer m_volumes
Definition HRoute.h:48

◆ entryVolume()

ServiceVolume * Route::entryVolume ( double pos,
bool ascending,
MsgStream & msg ) const
virtualinherited

Definition at line 10 of file Route.cxx.

11{
12 if (msg.level() <= MSG::DEBUG) {
13 msg << MSG::DEBUG << "entering entryVolume with ascending = " << ascending
14 << " and pos = " << pos << endmsg;
15 }
16 if (volumes().empty()) return nullptr;
17
18 // if (volumes().front()->contains(pos)) return volumes().front();
19 // else if (volumes().back()->contains(pos)) return volumes().back();
20 // else {
21 //should iterate to find exit volume
22 if ( ascending) {
23 for (VolumeContainer::const_iterator i=volumes().begin(); i!=volumes().end(); ++i) {
24
25 if (msg.level() <= MSG::DEBUG) {
26 msg << MSG::DEBUG << "Comparing " << pos << " and " << (**i).position() << endmsg;
27 }
28 if (pos < (**i).position()) {
29 if (msg.level() <= MSG::DEBUG) {
30 msg << MSG::DEBUG << "volume at pos " << (**i).radius()
31 << ", " << (**i).zPos() << " contains exit point" << endmsg;
32 }
33 return *i;
34 }
35 else if (msg.level() <= MSG::DEBUG) {
36 msg << MSG::DEBUG << "volume at pos " << (**i).radius()
37 << ", " << (**i).zPos() << " does not contain exit point" << endmsg;
38 }
39 }
40 return volumes().front(); // catch-all
41 }
42 else {
43 for (VolumeContainer::const_reverse_iterator i=volumes().rbegin(); i!=volumes().rend(); ++i) {
44 if ((**i).contains(pos)) return *i;
45 }
46 return volumes().back(); // catch-all
47 }
48 //}
49}
#define endmsg
static const Attributes_t empty
virtual const VolumeContainer & volumes() const =0
MsgStream & msg
Definition testRead.cxx:32

◆ exit()

virtual double HRoute::exit ( ) const
inlinevirtual

Implements Route.

Definition at line 30 of file HRoute.h.

30{return zExit();}
double zExit() const
Definition HRoute.h:26

◆ exitVolume()

ServiceVolume * Route::exitVolume ( bool ascending,
MsgStream & msg ) const
virtualinherited

Definition at line 51 of file Route.cxx.

52{
53 if (msg.level() <= MSG::DEBUG) {
54 msg << MSG::DEBUG << "entering exitVolume with ascending = " << ascending
55 << " and route.exit() = " << exit() << endmsg;
56 }
57 if (m_exitVolume != nullptr) return m_exitVolume;
58
59 // returns the volume closest to the exit point, coming from the given direction
60 if (volumes().empty()) return nullptr;
61 if ( ascending) {
62 for (VolumeContainer::const_iterator i=volumes().begin(); i!=volumes().end(); ++i) {
63 if ((**i).contains(exit())) return *i;
64 else if (msg.level() <= MSG::DEBUG) {
65 msg << MSG::DEBUG << "volume at pos " << (**i).radius()
66 << ", " << (**i).zPos() << " does not contain exit point" << endmsg;
67 }
68 }
69 return volumes().back(); // catch-all
70 }
71 else {
72 for (VolumeContainer::const_reverse_iterator i=volumes().rbegin(); i!=volumes().rend(); ++i) {
73 if ((**i).contains(exit())) return *i;
74 }
75 return volumes().front(); // catch-all
76 }
77}
ServiceVolume * m_exitVolume
Definition Route.h:57
virtual double exit() const =0

◆ name()

const std::string & Route::name ( ) const
inlineinherited

Definition at line 42 of file Route.h.

42{return m_name;}
std::string m_name
Definition Route.h:58

◆ nextRoute()

virtual Route * HRoute::nextRoute ( )
inlinevirtual

Implements Route.

Definition at line 32 of file HRoute.h.

32{return m_next;}

◆ position()

virtual double HRoute::position ( ) const
inlinevirtual

Implements Route.

Definition at line 28 of file HRoute.h.

28{return radius();}
double radius() const
Definition HRoute.h:25

◆ radius()

double HRoute::radius ( ) const
inline

Definition at line 25 of file HRoute.h.

25{return m_radius;}

◆ setExitVolume()

void Route::setExitVolume ( ServiceVolume * vp)
inlineinherited

Definition at line 50 of file Route.h.

50 {
51 m_exitVolume = vp;
52 addVolume(vp);
53 }
virtual void addVolume(ServiceVolume *vol)=0

◆ setNextRoute()

virtual void HRoute::setNextRoute ( Route * nr)
inlinevirtual

Implements Route.

Definition at line 38 of file HRoute.h.

38{m_next = nr;}

◆ volumes()

const VolumeContainer & HRoute::volumes ( ) const
inlinevirtual

Implements Route.

Definition at line 34 of file HRoute.h.

34{return m_volumes;}

◆ zExit()

double HRoute::zExit ( ) const
inline

Definition at line 26 of file HRoute.h.

26{return m_zExit;}

◆ zMax()

double HRoute::zMax ( ) const
inline

Definition at line 24 of file HRoute.h.

24{return m_zMax;}

◆ zMin()

double HRoute::zMin ( ) const
inline

Definition at line 23 of file HRoute.h.

23{return m_zMin;}

Member Data Documentation

◆ m_exitVolume

ServiceVolume* Route::m_exitVolume
privateinherited

Definition at line 57 of file Route.h.

◆ m_name

std::string Route::m_name
privateinherited

Definition at line 58 of file Route.h.

◆ m_next

Route* HRoute::m_next {}
private

Definition at line 46 of file HRoute.h.

46{};

◆ m_radius

double HRoute::m_radius {}
private

Definition at line 42 of file HRoute.h.

42{};

◆ m_volumes

VolumeContainer HRoute::m_volumes
private

Definition at line 48 of file HRoute.h.

◆ m_zExit

double HRoute::m_zExit {}
private

Definition at line 45 of file HRoute.h.

45{};

◆ m_zMax

double HRoute::m_zMax {}
private

Definition at line 44 of file HRoute.h.

44{};

◆ m_zMin

double HRoute::m_zMin {}
private

Definition at line 43 of file HRoute.h.

43{};

The documentation for this class was generated from the following file: