ATLAS Offline Software
VRoute.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef VRoute_H
6 #define VRoute_H
7 
8 #include "Route.h"
9 #include <vector>
10 
11 class ServiceVolume;
12 
13 class VRoute : public Route {
14 public:
15 
16  typedef std::vector<ServiceVolume*> VolumeContainer;
17 
18  VRoute() : Route() {}
19  VRoute( double z, double rmi, double rma, double rexit, const std::string& name):
20  Route(name),
21  m_zPos(z), m_rMin(rmi), m_rMax(rma), m_rExit(rexit), m_next(0){}
22 
23  double rMin() const {return m_rMin;}
24  double rMax() const {return m_rMax;}
25  double zPos() const {return m_zPos;}
26  double rExit() const {return m_rExit;}
27 
28  virtual double position() const {return zPos();}
29 
30  virtual double exit() const {return rExit();}
31 
32  virtual Route* nextRoute() {return m_next;}
33 
34  virtual const VolumeContainer& volumes() const {return m_volumes;}
35 
36  virtual void addVolume( ServiceVolume* vol) {m_volumes.push_back(vol);}
37 
38  virtual void setNextRoute( Route* nr) {m_next = nr;}
39  /*
40  virtual ServiceVolume* entryVolume( double pos) const {
41  // FIXME - too simple, for tests only
42  if (volumes().empty()) return 0;
43  if (volumes().front()->contains(pos)) return volumes().front();
44  else if (volumes().back()->contains(pos)) return volumes().back();
45  else {
46  //should iterate to find exit volume
47  return 0; // FIXME
48  }
49  }
50 
51  virtual ServiceVolume* exitVolume() const;
52  */
53 private:
54 
55  double m_zPos{};
56  double m_rMin{};
57  double m_rMax{};
58  double m_rExit{};
60 
62 };
63 
64 #endif
VRoute::m_next
Route * m_next
Definition: VRoute.h:59
ServiceVolume
Definition: InDetServMatGeoModel/src/ServiceVolume.h:14
VRoute::rMax
double rMax() const
Definition: VRoute.h:24
VRoute::m_zPos
double m_zPos
Definition: VRoute.h:55
VRoute::rExit
double rExit() const
Definition: VRoute.h:26
VRoute
Definition: VRoute.h:13
VRoute::m_rExit
double m_rExit
Definition: VRoute.h:58
VRoute::setNextRoute
virtual void setNextRoute(Route *nr)
Definition: VRoute.h:38
Route::name
const std::string & name() const
Definition: Route.h:42
VRoute::zPos
double zPos() const
Definition: VRoute.h:25
VRoute::VRoute
VRoute(double z, double rmi, double rma, double rexit, const std::string &name)
Definition: VRoute.h:19
VRoute::VRoute
VRoute()
Definition: VRoute.h:18
VRoute::addVolume
virtual void addVolume(ServiceVolume *vol)
Definition: VRoute.h:36
VRoute::VolumeContainer
std::vector< ServiceVolume * > VolumeContainer
Definition: VRoute.h:16
VRoute::nextRoute
virtual Route * nextRoute()
Definition: VRoute.h:32
Route.h
z
#define z
VRoute::m_rMin
double m_rMin
Definition: VRoute.h:56
VRoute::m_rMax
double m_rMax
Definition: VRoute.h:57
VRoute::rMin
double rMin() const
Definition: VRoute.h:23
VRoute::m_volumes
VolumeContainer m_volumes
Definition: VRoute.h:61
Route
Definition: Route.h:15
VRoute::position
virtual double position() const
Definition: VRoute.h:28
Route::VolumeContainer
std::vector< ServiceVolume * > VolumeContainer
Definition: Route.h:18
VRoute::volumes
virtual const VolumeContainer & volumes() const
Definition: VRoute.h:34
VRoute::exit
virtual double exit() const
Definition: VRoute.h:30