ATLAS Offline Software
Loading...
Searching...
No Matches
G4PolyconeGeoIDSvc.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ISF_GEANT4COMMONSERVICES_G4POLYCONEGEOIDSVC_H
6#define ISF_GEANT4COMMONSERVICES_G4POLYCONEGEOIDSVC_H 1
7
8// framework includes
10#include "GaudiKernel/ServiceHandle.h"
11
12// ISF includes
14
15// EnvelopeDefinitionService
17
18// DetectorDescription
20
21// stl includes
22#include <vector>
23#include <string>
24
25// forward declarations
26class G4VSolid;
27
28
29namespace ISF {
30
31 typedef std::vector<double> DoubleVector;
32
39 class G4PolyconeGeoIDSvc : public extends<AthService, ISF::IGeoIDSvc> {
40 public:
42 G4PolyconeGeoIDSvc(const std::string& name,ISvcLocator* svc);
43
46
47 // Athena algtool's Hooks
48 StatusCode initialize();
49
52
55
59
60 private:
62 StatusCode fillDimensions();
63
65 void pushDimension(AtlasDetDescr::AtlasRegion geoID, double rin, double rou, double z);
66
68 void pushDimension(AtlasDetDescr::AtlasRegion geoID, double r, double z);
69
72
74 ServiceHandle<IEnvelopeDefSvc> m_envDefSvc{this, "EnvelopeDefSvc", "AtlasGeometry_EnvelopeDefSvc"};
75
78
81 };
82
83}
84
85
86#endif //> !ISF_GEANT4COMMONSERVICES_G4POLYCONEGEOIDSVC_H
#define z
ISF::InsideType m_typeConverter[ISF::fNumInsideTypes]
a quick way to convert G4 enum EInside to ISF::InsideType
void pushDimension(AtlasDetDescr::AtlasRegion geoID, double rin, double rou, double z)
AtlasDetDescr::AtlasRegion identifyGeoID(const Amg::Vector3D &pos) const
A static filter that returns the AtlasRegion of the given position.
ISF::InsideType inside(const Amg::Vector3D &pos, AtlasDetDescr::AtlasRegion geoID) const
Checks if the given position (ISFParticle) is inside a given AtlasRegion.
ServiceHandle< IEnvelopeDefSvc > m_envDefSvc
service providing the envelope dimensions for the different sub-detectors
G4VSolid * m_volume[AtlasDetDescr::fNumAtlasRegions]
G4PolyconeGeoIDSvc(const std::string &name, ISvcLocator *svc)
Constructor with parameters.
void pushDimension(AtlasDetDescr::AtlasRegion geoID, double r, double z)
AtlasDetDescr::AtlasRegion identifyNextGeoID(const Amg::Vector3D &pos, const Amg::Vector3D &dir) const
Find the AtlasRegion that the particle will enter with its next infinitesimal step along the given di...
StatusCode fillDimensions()
Retrieve and fill in the dimensions for the different AtlasRegion.
StatusCode createVolume(AtlasDetDescr::AtlasRegion geoID)
Retrieve and fill in the dimensions for the different AtlasRegion.
int r
Definition globals.cxx:22
Eigen::Matrix< double, 3, 1 > Vector3D
AtlasRegion
A simple enum of ATLAS regions and sub-detectors.
Definition AtlasRegion.h:21
ISFParticleOrderedQueue.
std::vector< double > DoubleVector
InsideType
Definition IGeoIDSvc.h:22
@ fNumInsideTypes
Definition IGeoIDSvc.h:27