Geant4 VMC Version 6.7
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
TG4ModelConfiguration.cxx
Go to the documentation of this file.
1//------------------------------------------------
2// The Geant4 Virtual Monte Carlo package
3// Copyright (C) 2007 - 2015 Ivana Hrivnacova
4// All rights reserved.
5//
6// For the licensing terms see geant4_vmc/LICENSE.
7// Contact: root-vmc@cern.ch
8//-------------------------------------------------
9
14
16#include "TG4Globals.h"
17
18#include <G4AnalysisUtilities.hh>
19
20#include <algorithm>
21
22namespace
23{
24
25void PrintNamesVector(const std::vector<G4String> names)
26{
27 std::vector<G4String>::const_iterator it;
28 for (it = names.begin(); it != names.end(); it++) {
29 G4cout << (*it) << " ";
30 }
31}
32
33} // namespace
34
35//_____________________________________________________________________________
37 : fModelName(modelName),
38 fParticles(),
40 fRegions(),
42{
44}
45
46//_____________________________________________________________________________
47void TG4ModelConfiguration::SetRegionsMedia(const G4String& regionsMedia)
48{
53
54 std::vector<G4String> mediaVector;
55 if (regionsMedia.size()) {
56 // use analysis utility to tokenize regions
57 G4Analysis::Tokenize(regionsMedia, mediaVector);
58 }
59
60 // append the medias
61 fRegionsMedia.insert(
62 fRegionsMedia.end(), mediaVector.begin(), mediaVector.end());
63}
64
65//_____________________________________________________________________________
66void TG4ModelConfiguration::SetOneRegionMedium(const G4String& regionMedium)
67{
68 // append the medium
69 fRegionsMedia.push_back(regionMedium);
70}
71
72//_____________________________________________________________________________
73void TG4ModelConfiguration::SetOneRegion(const G4String& region)
74{
75 // append the region
76 fRegions.push_back(region);
77}
78
79//_____________________________________________________________________________
81{
83
84 G4cout << "Model configuration: " << fModelName << G4endl;
85 G4cout << "particles: " << fParticles << G4endl;
86 G4cout << "media: ";
87 PrintNamesVector(fRegionsMedia);
88 G4cout << G4endl;
89 G4cout << "regions: ";
90 PrintNamesVector(fRegions);
91 G4cout << G4endl;
92}
93
94//_____________________________________________________________________________
95G4bool TG4ModelConfiguration::HasParticle(const G4String& particleName)
96{
99
100 return
101 (fParticles == "all" || TG4Globals::Contains(particleName, fParticles)) &&
102 ! (TG4Globals::Contains(particleName, fExcludedParticles));
103}
104
105//_____________________________________________________________________________
106G4bool TG4ModelConfiguration::HasRegion(const G4String& regionName)
107{
109
110 return (
111 std::find(fRegions.begin(), fRegions.end(), regionName) != fRegions.end());
112}
Definition of the TG4Globals class and basic container types.
Definition of the TG4ModelConfiguration class.
static G4bool Contains(const G4String &name, const G4String &nameList)
void SetOneRegionMedium(const G4String &regionMedium)
std::vector< G4String > fRegionsMedia
the vector of regions media
G4VFastSimulationModel * fFastSimulationModel
fast simulation model
G4String fParticles
the list of particle names
void SetRegionsMedia(const G4String &regionsMedia)
G4String fExcludedParticles
the list of excluded particle names
TG4ModelConfiguration(const G4String &modelName)
std::vector< G4String > fRegions
the vector of created regions (per materials)
void SetOneRegion(const G4String &region)
G4String fModelName
the EM model name
G4bool HasParticle(const G4String &particleName)
G4bool HasRegion(const G4String &regionName)