56 , fSegmentDirection(-1)
86 worldLogical,
false, 0);
93 G4String layerName[2] = { boxName +
"_1", boxName +
"_2" };
106 G4cout <<
"G4ScoringBox::Construct() : Replicate to x direction"
122 G4cout <<
"G4ScoringBox::Construct() : Placement" <<
G4endl;
124 layerName[0], boxLogical,
false, 0);
127 G4cerr <<
"ERROR : G4ScoringBox::SetupGeometry() : invalid parameter ("
129 <<
"in placement of the first nested layer." <<
G4endl;
148 G4cout <<
"G4ScoringBox::Construct() : Replicate to y direction"
164 G4cout <<
"G4ScoringBox::Construct() : Placement" <<
G4endl;
166 layerName[1], layerLogical[0],
false, 0);
169 G4cerr <<
"ERROR : G4ScoringBox::SetupGeometry() : invalid parameter ("
171 <<
"in placement of the second nested layer." <<
G4endl;
184 G4String elementName = boxName +
"_3";
192 G4cout <<
"G4ScoringBox::Construct() : Replicate to z direction"
209 G4cout <<
"G4ScoringBox::Construct() : Placement" <<
G4endl;
211 elementName, layerLogical[1],
false, 0);
214 G4cerr <<
"ERROR : G4ScoringBox::SetupGeometry() : "
215 <<
"invalid parameter (" <<
fNSegment[2] <<
") "
216 <<
"in mesh element placement." <<
G4endl;
253 std::vector<std::vector<std::vector<double>>> cell;
254 std::vector<double> ez;
257 std::vector<std::vector<double>> eyz;
263 std::vector<std::vector<double>> xycell;
264 std::vector<double> ey;
268 xycell.push_back(ey);
270 std::vector<std::vector<double>> yzcell;
272 yzcell.push_back(ez);
274 std::vector<std::vector<double>> xzcell;
276 xzcell.push_back(ez);
280 std::map<G4int, G4StatDouble*>::iterator itr =
map->GetMap()->begin();
281 for(; itr !=
map->GetMap()->end(); itr++)
292 G4double xymax = 0., yzmax = 0., xzmax = 0.;
297 if(xymin > xycell[x][y])
298 xymin = xycell[x][y];
299 if(xymax < xycell[x][y])
300 xymax = xycell[x][y];
304 if(xzmin > xzcell[x][z])
305 xzmin = xzcell[x][z];
306 if(xzmax < xzcell[x][z])
307 xzmax = xzcell[x][z];
314 if(yzmin > yzcell[y][z])
315 yzmin = yzcell[y][z];
316 if(yzmax < yzcell[y][z])
317 yzmax = yzcell[y][z];
367 pVisManager->
Draw(*poly);
369 G4Box xyplate2 = xyplate;
373 pVisManager->
Draw(*poly2);
435 G4Box yzplate(
"yz", thick,
440 pVisManager->
Draw(*poly);
442 G4Box yzplate2 = yzplate;
446 pVisManager->
Draw(*poly2);
514 pVisManager->
Draw(*poly);
516 G4Box xzplate2 = xzplate;
520 pVisManager->
Draw(*poly2);
557 -
fSize[1] + 2 * (y + 0.5) * width.
y(),
558 -
fSize[2] + 2 * (z + 0.5) * width.
z());
578 G4int iColumn[3] = { 2, 0, 1 };
579 if(idxColumn < 0 || idxColumn >=
fNSegment[iColumn[idxProj]])
581 G4cerr <<
"ERROR : Column number " << idxColumn
582 <<
" is out of scoring mesh [0," <<
fNSegment[iColumn[idxProj]] - 1
583 <<
"]. Method ignored." <<
G4endl;
592 std::vector<std::vector<std::vector<double>>> cell;
593 std::vector<double> ez;
596 std::vector<std::vector<double>> eyz;
602 std::vector<std::vector<double>> xycell;
603 std::vector<double> ey;
607 xycell.push_back(ey);
609 std::vector<std::vector<double>> yzcell;
611 yzcell.push_back(ez);
613 std::vector<std::vector<double>> xzcell;
615 xzcell.push_back(ez);
619 std::map<G4int, G4StatDouble*>::iterator itr =
map->GetMap()->begin();
620 for(; itr !=
map->GetMap()->end(); itr++)
624 if(idxProj == 0 && q[2] == idxColumn)
628 if(idxProj == 1 && q[0] == idxColumn)
632 if(idxProj == 2 && q[1] == idxColumn)
640 G4double xymax = 0., yzmax = 0., xzmax = 0.;
645 if(xymin > xycell[x][y])
646 xymin = xycell[x][y];
647 if(xymax < xycell[x][y])
648 xymax = xycell[x][y];
652 if(xzmin > xzcell[x][z])
653 xzmin = xzcell[x][z];
654 if(xzmax < xzcell[x][z])
655 xzmax = xzcell[x][z];
662 if(yzmin > yzcell[y][z])
663 yzmin = yzcell[y][z];
664 if(yzmax < yzcell[y][z])
665 yzmax = yzcell[y][z];
706 pVisManager->
Draw(*poly);
743 pVisManager->
Draw(*poly);
780 pVisManager->
Draw(*poly);
static const G4double pos
static constexpr double cm
CLHEP::Hep3Vector G4ThreeVector
G4GLOB_DLL std::ostream G4cerr
G4GLOB_DLL std::ostream G4cout
virtual G4Polyhedron * GetPolyhedron() const
void SetVisAttributes(const G4VisAttributes *pVA)
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
void GetXYZ(G4int index, G4int q[3]) const
void Draw(RunScore *map, G4VScoreColorMap *colorMap, G4int axflg=111)
G4ThreeVector GetReplicaPosition(G4int x, G4int y, G4int z)
virtual void SetupGeometry(G4VPhysicalVolume *fWorldPhys)
G4ScoringBox(G4String wName)
void DrawColumn(RunScore *map, G4VScoreColorMap *colorMap, G4int idxProj, G4int idxColumn)
G4int GetIndex(G4int x, G4int y, G4int z) const
static G4int GetReplicaLevel()
G4LogicalVolume * GetLogicalVolume() const
virtual void DrawColorChart(G4int nPoint=5)
G4bool IfFloatMinMax() const
void SetMinMax(G4double minVal, G4double maxVal)
void SetPSUnit(G4String &unit)
virtual void GetMapColor(G4double val, G4double color[4])=0
void SetPSName(G4String &psName)
G4RotationMatrix * fRotationMatrix
virtual void List() const
G4MultiFunctionalDetector * fMFD
G4String fDivisionAxisNames[3]
G4LogicalVolume * fMeshElementLogical
G4ThreeVector fCenterPosition
static G4VVisManager * GetConcreteInstance()
virtual void Draw(const G4Circle &, const G4Transform3D &objectTransformation=G4Transform3D())=0
virtual void BeginDraw(const G4Transform3D &objectTransformation=G4Transform3D())=0
void SetColour(const G4Colour &)
void SetVisibility(G4bool=true)
void SetForceAuxEdgeVisible(G4bool=true)
void SetForceSolid(G4bool=true)
void SetVisAttributes(const G4VisAttributes *)
HepPolyhedron & Transform(const G4Transform3D &t)