Geant4-11
Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Friends
G4tgrSolidScaled Class Reference

#include <G4tgrSolidScaled.hh>

Inheritance diagram for G4tgrSolidScaled:
G4tgrSolid

Public Member Functions

 G4tgrSolidScaled (const std::vector< G4String > &wl)
 
const G4StringGetName () const
 
const G4tgrSolidGetOrigSolid () const
 
virtual G4ThreeVector GetRelativePlace () const
 
virtual const G4StringGetRelativeRotMatName () const
 
const G4Scale3D GetScale3d () const
 
const std::vector< std::vector< G4double > * > GetSolidParams () const
 
const G4StringGetType () const
 
 ~G4tgrSolidScaled ()
 

Protected Attributes

G4String theName
 
std::vector< std::vector< G4double > * > theSolidParams
 
G4String theType
 

Private Member Functions

void FillSolidParams (const std::vector< G4String > &wl)
 

Private Attributes

G4tgrSolidorigSolid
 
G4Scale3D scale3d
 

Friends

std::ostream & operator<< (std::ostream &, const G4tgrSolidScaled &)
 

Detailed Description

Definition at line 45 of file G4tgrSolidScaled.hh.

Constructor & Destructor Documentation

◆ G4tgrSolidScaled()

G4tgrSolidScaled::G4tgrSolidScaled ( const std::vector< G4String > &  wl)

Definition at line 38 of file G4tgrSolidScaled.cc.

39{
40 // :SOLID/:VOLU SOL1 SCALED SOL0 SCLAEX SCALEY SCALEZ
41 if(wl.size() != 7)
42 {
43 G4tgrUtils::DumpVS(wl, "G4tgrSolidScaled::G4tgrSolidScaled()");
44 G4Exception("G4tgrSolidScaled::G4tgrSolidScaled()", "InvalidInput",
45 FatalException, "Line read with less or more than 7 words.");
46 }
47
48 //---------- Set name
50
53 if(origSolid == nullptr)
54 {
55 origSolid = volmgr->FindVolume(G4tgrUtils::GetString(wl[3]), 1)->GetSolid();
56 }
57
58 //---------- Set scale vector
61
62 //---------- Set solid type
63 G4String wl2 = wl[2];
64 for(std::size_t ii = 0; ii < wl2.length(); ++ii)
65 {
66 wl2[ii] = toupper(wl2[ii]);
67 }
68 theType = wl2;
69
70#ifdef G4VERBOSE
72 {
73 G4cout << " Created " << *this << G4endl;
74 }
75#endif
76
78}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
HepGeom::Scale3D G4Scale3D
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
static G4int GetVerboseLevel()
G4tgrSolid * origSolid
G4String theType
Definition: G4tgrSolid.hh:68
G4String theName
Definition: G4tgrSolid.hh:66
static G4String GetString(const G4String &str)
Definition: G4tgrUtils.cc:173
static void DumpVS(const std::vector< G4String > &wl, const char *msg)
Definition: G4tgrUtils.cc:153
static G4double GetDouble(const G4String &str, G4double unitval=1.)
Definition: G4tgrUtils.cc:198
G4tgrVolume * FindVolume(const G4String &volname, G4bool exists=false)
G4tgrSolid * FindSolid(const G4String &name, G4bool exists=false)
void RegisterMe(G4tgrSolid *vol)
static G4tgrVolumeMgr * GetInstance()
G4tgrSolid * GetSolid() const
Definition: G4tgrVolume.hh:86

References G4tgrUtils::DumpVS(), FatalException, G4tgrVolumeMgr::FindSolid(), G4tgrVolumeMgr::FindVolume(), G4cout, G4endl, G4Exception(), G4tgrUtils::GetDouble(), G4tgrVolumeMgr::GetInstance(), G4tgrVolume::GetSolid(), G4tgrUtils::GetString(), G4tgrMessenger::GetVerboseLevel(), origSolid, G4tgrVolumeMgr::RegisterMe(), scale3d, G4tgrSolid::theName, and G4tgrSolid::theType.

◆ ~G4tgrSolidScaled()

G4tgrSolidScaled::~G4tgrSolidScaled ( )

Definition at line 81 of file G4tgrSolidScaled.cc.

82{
83}

Member Function Documentation

◆ FillSolidParams()

void G4tgrSolid::FillSolidParams ( const std::vector< G4String > &  wl)
privateinherited

Definition at line 92 of file G4tgrSolid.cc.

93{
94 //---- Setting which are angle parameters (for dimensions...)
95 std::map<G4String, std::set<G4int>> angleParams;
96 std::set<G4int> apar;
97 apar.clear();
98 apar.insert(3);
99 apar.insert(4);
100 angleParams["TUBS"] = apar;
101 apar.clear();
102 apar.insert(5);
103 apar.insert(6);
104 angleParams["CONS"] = apar;
105 apar.clear();
106 apar.insert(3);
107 apar.insert(4);
108 apar.insert(5);
109 angleParams["PARA"] = apar;
110 apar.clear();
111 apar.insert(1);
112 apar.insert(2);
113 apar.insert(6);
114 apar.insert(10);
115 angleParams["TRAP"] = apar;
116 apar.clear();
117 apar.insert(2);
118 apar.insert(3);
119 apar.insert(4);
120 apar.insert(5);
121 angleParams["SPHERE"] = apar;
122 apar.clear();
123 apar.insert(3);
124 apar.insert(4);
125 angleParams["TORUS"] = apar;
126 apar.clear();
127 apar.insert(0);
128 apar.insert(1);
129 angleParams["POLYCONE"] = apar;
130 apar.clear();
131 apar.insert(0);
132 apar.insert(1);
133 angleParams["POLYHEDRA"] = apar;
134 apar.clear();
135 apar.insert(2);
136 apar.insert(3);
137 angleParams["HYPE"] = apar;
138 apar.clear();
139 apar.insert(0);
140 angleParams["TWISTED_BOX"] = apar;
141 apar.clear();
142 apar.insert(0);
143 apar.insert(2);
144 apar.insert(3);
145 apar.insert(10);
146 angleParams["TWISTED_TRAP"] = apar;
147 apar.clear();
148 apar.insert(5);
149 angleParams["TWISTED_TRD"] = apar;
150 apar.clear();
151 apar.insert(0);
152 apar.insert(4);
153 angleParams["TWISTED_TUBS"] = apar;
154
155 std::vector<G4double>* vd = new std::vector<G4double>;
156 theSolidParams.push_back(vd);
157 std::size_t noParRead = wl.size() - 3;
158
159 G4String solidType = wl[2];
160 //--- Default unit (mm) if length, deg if angle
161 for(std::size_t ii = 0; ii < noParRead; ++ii)
162 {
163 G4bool isAngle = 0;
164 std::map<G4String, std::set<G4int>>::const_iterator ite =
165 angleParams.find(solidType);
166 if(ite != angleParams.cend())
167 {
168 std::set<G4int> apar2 = (*ite).second;
169 if(apar2.find(ii) != apar2.cend())
170 {
171 isAngle = 1;
172 vd->push_back(G4tgrUtils::GetDouble(wl[3 + ii], deg));
173#ifdef G4VERBOSE
175 {
176 G4cout << " G4tgrSolid::FillSolidParams() - Angle param found "
177 << solidType << " " << ii << G4endl;
178 }
179#endif
180 }
181 }
182 if(!isAngle)
183 {
184 vd->push_back(G4tgrUtils::GetDouble(wl[3 + ii]));
185 }
186 }
187}
static constexpr double deg
Definition: G4SIunits.hh:132
bool G4bool
Definition: G4Types.hh:86
std::vector< std::vector< G4double > * > theSolidParams
Definition: G4tgrSolid.hh:70

References deg, G4cout, G4endl, G4tgrUtils::GetDouble(), G4tgrMessenger::GetVerboseLevel(), and G4tgrSolid::theSolidParams.

Referenced by G4tgrSolid::G4tgrSolid().

◆ GetName()

const G4String & G4tgrSolid::GetName ( ) const
inlineinherited

◆ GetOrigSolid()

const G4tgrSolid * G4tgrSolidScaled::GetOrigSolid ( ) const
inline

Definition at line 56 of file G4tgrSolidScaled.hh.

56{ return origSolid; }

References origSolid.

Referenced by G4tgbVolume::FindOrConstructG4Solid().

◆ GetRelativePlace()

G4ThreeVector G4tgrSolid::GetRelativePlace ( ) const
virtualinherited

Reimplemented in G4tgrSolidBoolean.

Definition at line 86 of file G4tgrSolid.cc.

87{
88 return G4ThreeVector(0, 0, 0); // Dummy...
89}
CLHEP::Hep3Vector G4ThreeVector

◆ GetRelativeRotMatName()

const G4String & G4tgrSolid::GetRelativeRotMatName ( ) const
virtualinherited

Reimplemented in G4tgrSolidBoolean.

Definition at line 80 of file G4tgrSolid.cc.

81{
82 return theName; // Dummy ...
83}

References G4tgrSolid::theName.

Referenced by G4tgbVolume::FindOrConstructG4Solid().

◆ GetScale3d()

const G4Scale3D G4tgrSolidScaled::GetScale3d ( ) const
inline

Definition at line 55 of file G4tgrSolidScaled.hh.

55{ return scale3d; }

References scale3d.

Referenced by G4tgbVolume::FindOrConstructG4Solid().

◆ GetSolidParams()

const std::vector< std::vector< G4double > * > G4tgrSolid::GetSolidParams ( ) const
inherited

Definition at line 74 of file G4tgrSolid.cc.

75{
76 return theSolidParams;
77}

References G4tgrSolid::theSolidParams.

Referenced by G4tgbVolume::FindOrConstructG4Solid().

◆ GetType()

const G4String & G4tgrSolid::GetType ( ) const
inlineinherited

Definition at line 55 of file G4tgrSolid.hh.

55{ return theType; }

References G4tgrSolid::theType.

Referenced by G4tgbVolume::FindOrConstructG4Solid().

Friends And Related Function Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream &  os,
const G4tgrSolidScaled sol 
)
friend

Definition at line 86 of file G4tgrSolidScaled.cc.

87{
88 os << "G4tgrSolidScaled= " << sol.theName << " of type " << sol.theType
89 << " original solid: " << sol.origSolid->GetName() << " Scale x: " <<
90 sol.scale3d.xx() << " Scale y: " << sol.scale3d.yy() <<
91 " Scale z: " << sol.scale3d.zz() << G4endl;
92
93 return os;
94}
const G4String & GetName() const
Definition: G4tgrSolid.hh:54
double zz() const
Definition: Transform3D.h:281
double xx() const
Definition: Transform3D.h:257
double yy() const
Definition: Transform3D.h:269

Field Documentation

◆ origSolid

G4tgrSolid* G4tgrSolidScaled::origSolid
private

Definition at line 64 of file G4tgrSolidScaled.hh.

Referenced by G4tgrSolidScaled(), and GetOrigSolid().

◆ scale3d

G4Scale3D G4tgrSolidScaled::scale3d
private

Definition at line 61 of file G4tgrSolidScaled.hh.

Referenced by G4tgrSolidScaled(), and GetScale3d().

◆ theName

G4String G4tgrSolid::theName
protectedinherited

◆ theSolidParams

std::vector<std::vector<G4double>*> G4tgrSolid::theSolidParams
protectedinherited

Definition at line 70 of file G4tgrSolid.hh.

Referenced by G4tgrSolid::FillSolidParams(), and G4tgrSolid::GetSolidParams().

◆ theType

G4String G4tgrSolid::theType
protectedinherited

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