Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
DicomNestedPhantomParameterisation Class Reference

Implements a G4VNestedParameterisation. More...

#include <Doxymodules_medical.h>

Inheritance diagram for DicomNestedPhantomParameterisation:
G4VNestedParameterisation G4VPVParameterisation G4VVolumeMaterialScanner

Public Types

typedef std::map< G4String, G4VisAttributes * > ColourMap_t
 

Public Member Functions

 DicomNestedPhantomParameterisation (const G4ThreeVector &voxelSize, std::vector< G4Material * > &mat, G4int fnZ_=0, G4int fnY_=0, G4int fnX_=0, G4String colorFile=fDefaultColorFile)
 
 ~DicomNestedPhantomParameterisation ()
 
G4MaterialComputeMaterial (G4VPhysicalVolume *currentVol, const G4int repNo, const G4VTouchable *parentTouch)
 
G4int GetNumberOfMaterials () const
 
G4MaterialGetMaterial (G4int idx) const
 
unsigned int GetMaterialIndex (unsigned int copyNo) const
 
void SetMaterialIndices (size_t *matInd)
 
void SetNoVoxels (unsigned int nx, unsigned int ny, unsigned int nz)
 
void ComputeTransformation (const G4int no, G4VPhysicalVolume *currentPV) const
 
void ComputeDimensions (G4Box &, const G4int, const G4VPhysicalVolume *) const
 
const ColourMap_tGetColourMap () const
 
ColourMap_tGetColourMap ()
 

Static Public Attributes

static G4String fDefaultColorFile
 

Private Member Functions

void ComputeDimensions (G4Trd &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Trap &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Cons &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Sphere &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Ellipsoid &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Orb &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Torus &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Para &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Hype &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Tubs &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Polycone &, const G4int, const G4VPhysicalVolume *) const
 
void ComputeDimensions (G4Polyhedra &, const G4int, const G4VPhysicalVolume *) const
 
void ReadColourData (G4String)
 

Private Attributes

G4double fdX
 
G4double fdY
 
G4double fdZ
 
G4int fnX
 
G4int fnY
 
G4int fnZ
 
std::vector< G4Material * > fMaterials
 
size_t * fMaterialIndices
 
ColourMap_t fColours
 
std::map< G4int, G4VisAttributes * > fColours2
 
std::vector< G4double > fpZ
 

Detailed Description

Implements a G4VNestedParameterisation.

Definition at line 24 of file Doxymodules_medical.h.

Member Typedef Documentation

◆ ColourMap_t

Definition at line 68 of file DicomNestedPhantomParameterisation.hh.

Constructor & Destructor Documentation

◆ DicomNestedPhantomParameterisation()

DicomNestedPhantomParameterisation::DicomNestedPhantomParameterisation ( const G4ThreeVector &  voxelSize,
std::vector< G4Material * > &  mat,
G4int  fnZ_ = 0,
G4int  fnY_ = 0,
G4int  fnX_ = 0,
G4String  colorFile = fDefaultColorFile 
)

◆ ~DicomNestedPhantomParameterisation()

DicomNestedPhantomParameterisation::~DicomNestedPhantomParameterisation ( )

Definition at line 66 of file DicomNestedPhantomParameterisation.cc.

67{
68}

Member Function Documentation

◆ ComputeMaterial()

G4Material * DicomNestedPhantomParameterisation::ComputeMaterial ( G4VPhysicalVolume currentVol,
const G4int  repNo,
const G4VTouchable *  parentTouch 
)

Definition at line 107 of file DicomNestedPhantomParameterisation.cc.

110{
111
112 // protection for initialization and vis at idle state
113 //
114 if(parentTouch == nullptr)
115 return fMaterials[0];
116
117 // Copy number of voxels.
118 // Copy number of X and Y are obtained from replication number.
119 // Copy nymber of Z is the copy number of current voxel.
120 G4int ix = parentTouch->GetReplicaNumber(0);
121 G4int iy = parentTouch->GetReplicaNumber(1);
122
123 G4int copyID = ix + fnX*iy + fnX*fnY*iz;
124
125 std::size_t matIndex = GetMaterialIndex(copyID);
126 G4Material* mate = fMaterials[matIndex];
127
128 if(G4VVisManager::GetConcreteInstance() && physVol)
129 {
130 G4String mateName = fMaterials.at(matIndex)->GetName();
131 std::string::size_type iuu = mateName.find("__");
132 if( iuu != std::string::npos )
133 mateName = mateName.substr( 0, iuu );
134
135 if(0 < fColours.count(mateName))
136 physVol->GetLogicalVolume()->SetVisAttributes(
137 fColours.find(mateName)->second);
138 else
139 {
140 bool found = false;
141 for(const auto& itr : fColours)
142 {
143 G4String mat_color = itr.first;
144 auto len = mat_color.length();
145 if(mateName.find(mat_color) == 0 &&
146 mateName.length() > len && mateName[len] == '_')
147 {
148 physVol->GetLogicalVolume()->SetVisAttributes(
149 fColours.find(mat_color)->second);
150 found = true;
151 }
152 if(found)
153 break;
154 }
155 if(!found)
156 {
157
158 static uintmax_t n = 0;
159 if(n++ < 100)
160 G4cout << "Unknown material name " << mateName
161 << " for index " << matIndex << G4endl;
162 if(fColours2.find(matIndex) != fColours2.end())
163 physVol->GetLogicalVolume()->SetVisAttributes(
164 fColours2.find(matIndex)->second);
165 else
166 physVol->GetLogicalVolume()->SetVisAttributes(
167 fColours.begin()->second);
168 }
169 }
170 physVol -> GetLogicalVolume()->SetMaterial(mate);
171 }
172
173 return mate;
174}
unsigned int GetMaterialIndex(unsigned int copyNo) const

◆ GetNumberOfMaterials()

G4int DicomNestedPhantomParameterisation::GetNumberOfMaterials ( ) const

Definition at line 189 of file DicomNestedPhantomParameterisation.cc.

190{
191 return G4int(fMaterials.size());
192}

◆ GetMaterial()

G4Material * DicomNestedPhantomParameterisation::GetMaterial ( G4int  idx) const

Definition at line 199 of file DicomNestedPhantomParameterisation.cc.

200{
201 return fMaterials[i];
202}

◆ GetMaterialIndex()

unsigned int DicomNestedPhantomParameterisation::GetMaterialIndex ( unsigned int  copyNo) const

Definition at line 177 of file DicomNestedPhantomParameterisation.cc.

179{
180 //return *(fMaterialIndices+copyNo);
181 return unsigned(fMaterialIndices[copyNo]);
182}

◆ SetMaterialIndices()

void DicomNestedPhantomParameterisation::SetMaterialIndices ( size_t *  matInd)
inline

Definition at line 94 of file DicomNestedPhantomParameterisation.hh.

94{ fMaterialIndices = matInd; }

◆ SetNoVoxels()

void DicomNestedPhantomParameterisation::SetNoVoxels ( unsigned int  nx,
unsigned int  ny,
unsigned int  nz 
)

Definition at line 98 of file DicomNestedPhantomParameterisation.cc.

100{
101 fnX = nx;
102 fnY = ny;
103 fnZ = nz;
104}

◆ ComputeTransformation()

void DicomNestedPhantomParameterisation::ComputeTransformation ( const G4int  no,
G4VPhysicalVolume currentPV 
) const

Definition at line 207 of file DicomNestedPhantomParameterisation.cc.

209{
210 // Position of voxels.
211 // x and y positions are already defined in DetectorConstruction by using
212 // replicated volume. Here only we need to define is z positions of voxels.
213 physVol->SetTranslation(G4ThreeVector(0.,0.,(2.*static_cast<double>(copyNo)
214 +1.)*fdZ - fdZ*fnZ));
215}

◆ ComputeDimensions() [1/13]

void DicomNestedPhantomParameterisation::ComputeDimensions ( G4Box box,
const G4int  ,
const G4VPhysicalVolume  
) const

Definition at line 221 of file DicomNestedPhantomParameterisation.cc.

223{
224 box.SetXHalfLength(fdX);
225 box.SetYHalfLength(fdY);
226 box.SetZHalfLength(fdZ);
227}

◆ GetColourMap() [1/2]

const ColourMap_t & DicomNestedPhantomParameterisation::GetColourMap ( ) const
inline

Definition at line 105 of file DicomNestedPhantomParameterisation.hh.

105{ return fColours; }

◆ GetColourMap() [2/2]

ColourMap_t & DicomNestedPhantomParameterisation::GetColourMap ( )
inline

Definition at line 106 of file DicomNestedPhantomParameterisation.hh.

106{ return fColours; }

◆ ComputeDimensions() [2/13]

void DicomNestedPhantomParameterisation::ComputeDimensions ( G4Trd ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlineprivate

Definition at line 110 of file DicomNestedPhantomParameterisation.hh.

111 {}

◆ ComputeDimensions() [3/13]

void DicomNestedPhantomParameterisation::ComputeDimensions ( G4Trap ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlineprivate

Definition at line 112 of file DicomNestedPhantomParameterisation.hh.

113 {}

◆ ComputeDimensions() [4/13]

void DicomNestedPhantomParameterisation::ComputeDimensions ( G4Cons ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlineprivate

Definition at line 114 of file DicomNestedPhantomParameterisation.hh.

115 {}

◆ ComputeDimensions() [5/13]

void DicomNestedPhantomParameterisation::ComputeDimensions ( G4Sphere ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlineprivate

Definition at line 116 of file DicomNestedPhantomParameterisation.hh.

117 {}

◆ ComputeDimensions() [6/13]

void DicomNestedPhantomParameterisation::ComputeDimensions ( G4Ellipsoid ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlineprivate

Definition at line 118 of file DicomNestedPhantomParameterisation.hh.

119 {}

◆ ComputeDimensions() [7/13]

void DicomNestedPhantomParameterisation::ComputeDimensions ( G4Orb ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlineprivate

Definition at line 120 of file DicomNestedPhantomParameterisation.hh.

121 {}

◆ ComputeDimensions() [8/13]

void DicomNestedPhantomParameterisation::ComputeDimensions ( G4Torus ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlineprivate

Definition at line 122 of file DicomNestedPhantomParameterisation.hh.

123 {}

◆ ComputeDimensions() [9/13]

void DicomNestedPhantomParameterisation::ComputeDimensions ( G4Para ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlineprivate

Definition at line 124 of file DicomNestedPhantomParameterisation.hh.

125 {}

◆ ComputeDimensions() [10/13]

void DicomNestedPhantomParameterisation::ComputeDimensions ( G4Hype ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlineprivate

Definition at line 126 of file DicomNestedPhantomParameterisation.hh.

127 {}

◆ ComputeDimensions() [11/13]

void DicomNestedPhantomParameterisation::ComputeDimensions ( G4Tubs ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlineprivate

Definition at line 128 of file DicomNestedPhantomParameterisation.hh.

129 {}

◆ ComputeDimensions() [12/13]

void DicomNestedPhantomParameterisation::ComputeDimensions ( G4Polycone ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlineprivate

Definition at line 130 of file DicomNestedPhantomParameterisation.hh.

131 {}

◆ ComputeDimensions() [13/13]

void DicomNestedPhantomParameterisation::ComputeDimensions ( G4Polyhedra ,
const G4int  ,
const G4VPhysicalVolume  
) const
inlineprivate

Definition at line 132 of file DicomNestedPhantomParameterisation.hh.

133 {}

◆ ReadColourData()

void DicomNestedPhantomParameterisation::ReadColourData ( G4String  colourFile)
private

Definition at line 71 of file DicomNestedPhantomParameterisation.cc.

72{
73 //----- Add a G4VisAttributes for materials not defined in file;
74 G4VisAttributes* blankAtt = new G4VisAttributes;
75 blankAtt->SetVisibility( FALSE );
76 fColours["Default"] = blankAtt;
77
78 std::ifstream fin(colourFile.c_str());
79 G4int nMate;
80 G4String mateName;
81 G4double cred, cgreen, cblue, copacity;
82 fin >> nMate;
83 for( G4int ii = 0; ii < nMate; ii++ )
84 {
85 fin >> mateName;
86 if(fin.eof())
87 break;
88 fin >> cred >> cgreen >> cblue >> copacity;
89 G4Colour colour( cred, cgreen, cblue, copacity );
90 G4VisAttributes* visAtt = new G4VisAttributes( colour );
91 visAtt->SetVisibility(true);
92 fColours[mateName] = visAtt;
93 fColours2[ii] = new G4VisAttributes(*visAtt);
94 }
95}

Member Data Documentation

◆ fDefaultColorFile

G4String DicomNestedPhantomParameterisation::fDefaultColorFile
static
Initial value:
=
DicomHandler::GetDicomDataPath() + "/ColourMap.dat"
static G4String GetDicomDataPath()

Definition at line 70 of file DicomNestedPhantomParameterisation.hh.

◆ fdX

G4double DicomNestedPhantomParameterisation::fdX
private

Definition at line 141 of file DicomNestedPhantomParameterisation.hh.

◆ fdY

G4double DicomNestedPhantomParameterisation::fdY
private

Definition at line 141 of file DicomNestedPhantomParameterisation.hh.

◆ fdZ

G4double DicomNestedPhantomParameterisation::fdZ
private

Definition at line 141 of file DicomNestedPhantomParameterisation.hh.

◆ fnX

G4int DicomNestedPhantomParameterisation::fnX
private

Definition at line 142 of file DicomNestedPhantomParameterisation.hh.

◆ fnY

G4int DicomNestedPhantomParameterisation::fnY
private

Definition at line 142 of file DicomNestedPhantomParameterisation.hh.

◆ fnZ

G4int DicomNestedPhantomParameterisation::fnZ
private

Definition at line 142 of file DicomNestedPhantomParameterisation.hh.

◆ fMaterials

std::vector<G4Material*> DicomNestedPhantomParameterisation::fMaterials
private

Definition at line 143 of file DicomNestedPhantomParameterisation.hh.

◆ fMaterialIndices

size_t* DicomNestedPhantomParameterisation::fMaterialIndices
private

Definition at line 144 of file DicomNestedPhantomParameterisation.hh.

◆ fColours

ColourMap_t DicomNestedPhantomParameterisation::fColours
private

Definition at line 145 of file DicomNestedPhantomParameterisation.hh.

◆ fColours2

std::map<G4int, G4VisAttributes*> DicomNestedPhantomParameterisation::fColours2
private

Definition at line 146 of file DicomNestedPhantomParameterisation.hh.

◆ fpZ

std::vector<G4double> DicomNestedPhantomParameterisation::fpZ
private

Definition at line 147 of file DicomNestedPhantomParameterisation.hh.


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

Applications | User Support | Publications | Collaboration