70 G4cout <<
"G4ScoringCylinder::SetupGeometry() ..." <<
G4endl;
94 tubsName +
"0", worldLogical,
false, 0);
100 G4String layerName[2] = { tubsName +
"1", tubsName +
"2" };
107 layerSolid[0] =
new G4Tubs(layerName[0],
117 G4cout <<
"G4ScoringCylinder::Construct() : Replicate along z direction"
122 G4cout <<
"G4ScoringCylinder::Construct() : Replica" <<
G4endl;
129 G4cout <<
"G4ScoringCylinder::Construct() : Division" <<
G4endl;
137 G4cout <<
"G4ScoringCylinder::Construct() : Placement" <<
G4endl;
139 layerName[0], tubsLogical,
false, 0);
143 G4cerr <<
"G4ScoringCylinder::SetupGeometry() : invalid parameter ("
145 <<
"in placement of the first nested layer." <<
G4endl;
158 G4cout <<
"G4ScoringCylinder::Construct() : Replicate along phi direction"
163 G4cout <<
"G4ScoringCylinder::Construct() : Replica" <<
G4endl;
170 G4cout <<
"G4ScoringCylinder::Construct() : Division" <<
G4endl;
178 G4cout <<
"G4ScoringCylinder::Construct() : Placement" <<
G4endl;
180 layerName[1], layerLogical[0],
false, 0);
183 G4cerr <<
"ERROR : G4ScoringCylinder::SetupGeometry() : invalid parameter ("
185 <<
"in placement of the second nested layer." <<
G4endl;
190 G4String elementName = tubsName +
"3";
198 G4cout <<
"G4ScoringCylinder::Construct() : Replicate along r direction"
204 G4cout <<
"G4ScoringCylinder::Construct() : Replica" <<
G4endl;
212 G4cout <<
"G4ScoringCylinder::Construct() : Division" <<
G4endl;
225 G4cerr <<
"G4ScoringCylinder::SetupGeometry() : "
227 <<
"in mesh element placement." <<
G4endl;
249 <<
" --- Shape: Cylindrical mesh" <<
G4endl;
251 G4cout <<
" Size (Rmin, Rmax, Dz): (" <<
fSize[0] /
cm <<
", "
266 std::vector<double> ephi;
270 std::vector<std::vector<double>> zphicell;
272 zphicell.push_back(ephi);
274 std::vector<std::vector<double>> rphicell;
276 rphicell.push_back(ephi);
280 std::map<G4int, G4StatDouble*>::iterator itr =
map->GetMap()->begin();
281 for(; itr !=
map->GetMap()->end(); itr++)
296 G4double zphimax = 0., rphimax = 0.;
301 if(zphimin > zphicell[iz][iphi])
302 zphimin = zphicell[iz][iphi];
303 if(zphimax < zphicell[iz][iphi])
304 zphimax = zphicell[iz][iphi];
308 if(rphimin > rphicell[ir][iphi])
309 rphimin = rphicell[ir][iphi];
310 if(rphimax < rphicell[ir][iphi])
311 rphimax = rphicell[ir][iphi];
347 angle, dphi * 0.99999);
369 pVisManager->
Draw(*poly);
393 G4Tubs cylindern(
"z-phi", rs[0], rs[1], 0.001,
angle, dphi * 0.99999);
394 G4Tubs cylinderp = cylindern;
420 pVisManager->
Draw(*polyn);
425 pVisManager->
Draw(*polyp);
455 if(idxColumn < 0 || idxColumn >=
fNSegment[projAxis])
457 G4cerr <<
"Warning : Column number " << idxColumn
458 <<
" is out of scoring mesh [0," <<
fNSegment[projAxis] - 1
459 <<
"]. Method ignored." <<
G4endl;
466 std::vector<std::vector<std::vector<double>>> cell;
467 std::vector<double> ephi;
470 std::vector<std::vector<double>> ezphi;
472 ezphi.push_back(ephi);
474 cell.push_back(ezphi);
476 std::vector<std::vector<double>> rzcell;
477 std::vector<double> ez;
481 rzcell.push_back(ez);
483 std::vector<std::vector<double>> zphicell;
485 zphicell.push_back(ephi);
487 std::vector<std::vector<double>> rphicell;
489 rphicell.push_back(ephi);
493 std::map<G4int, G4StatDouble*>::iterator itr =
map->GetMap()->begin();
494 for(; itr !=
map->GetMap()->end(); itr++)
503 if(projAxis ==
IR && q[
IR] == idxColumn)
507 if(projAxis ==
IZ && q[
IZ] == idxColumn)
511 if(projAxis ==
IPHI && q[
IPHI] == idxColumn)
519 G4double rzmax = 0., zphimax = 0., rphimax = 0.;
524 if(rphimin > rphicell[r][phi])
525 rphimin = rphicell[r][phi];
526 if(rphimax < rphicell[r][phi])
527 rphimax = rphicell[r][phi];
531 if(rzmin > rzcell[r][z])
532 rzmin = rzcell[r][z];
533 if(rzmax < rzcell[r][z])
534 rzmax = rzcell[r][z];
541 if(zphimin > zphicell[z][phi])
542 zphimin = zphicell[z][phi];
543 if(zphimax < zphicell[z][phi])
544 zphimax = zphicell[z][phi];
574 G4Tubs cylinder(
"z-phi", rsize[0], rsize[1], zhalf,
angle,
597 pVisManager->
Draw(*poly);
603 else if(projAxis ==
IZ)
619 G4Tubs cylinder(
"r-phi", rs[0], rs[1], dz,
angle, dphi * 0.99999);
640 pVisManager->
Draw(*poly);
646 else if(projAxis ==
IPHI)
662 G4Tubs cylinder(
"z-phi", rs[0], rs[1], zhalf,
angle, dphi);
684 pVisManager->
Draw(*poly);
706 q[j] = (index - q[i] * jk) /
fNSegment[k];
707 q[k] = index - q[j] *
fNSegment[k] - q[i] * jk;
730 G4cout <<
"*********** List of registered solids *************" <<
G4endl;
732 auto itr = store->begin();
733 for(; itr != store->end(); itr++)
741 G4cout << (*itr)->GetName() <<
"\t volume = "
742 <<
G4BestUnit((*itr)->GetCubicVolume(),
"Volume")
755 G4cout <<
"*********** List of registered logical volumes *************"
758 auto itr = store->begin();
759 for(; itr != store->end(); itr++)
761 G4cout << (*itr)->GetName()
762 <<
"\t Solid = " << (*itr)->GetSolid()->GetName();
763 if((*itr)->GetMaterial())
765 G4cout <<
"\t Material = " << (*itr)->GetMaterial()->GetName() <<
G4endl;
774 if((*itr)->GetRegion())
776 G4cout << (*itr)->GetRegion()->GetName();
782 G4cout <<
"\t sensitive detector = ";
783 if((*itr)->GetSensitiveDetector())
785 G4cout << (*itr)->GetSensitiveDetector()->GetName();
792 G4cout <<
"\t daughters = " << (*itr)->GetNoDaughters();
793 if((*itr)->GetNoDaughters() > 0)
795 switch((*itr)->CharacteriseDaughters())
801 G4cout <<
" (replica : " << (*itr)->GetDaughter(0)->GetMultiplicity()
805 G4cout <<
" (parameterized : "
806 << (*itr)->GetDaughter(0)->GetMultiplicity() <<
")";
814 if((*itr)->GetMaterial())
828 G4cout <<
"*********** List of registered physical volumes *************"
831 auto itr = store->begin();
832 for(; itr != store->end(); itr++)
840 G4cout << (*itr)->GetName() <<
"\t logical volume = "
841 << (*itr)->GetLogicalVolume()->GetName()
842 <<
"\t mother logical = ";
843 if((*itr)->GetMotherLogical())
845 G4cout << (*itr)->GetMotherLogical()->GetName();
854 G4cout << (*itr)->GetName() <<
"\t logical volume = "
855 << (*itr)->GetLogicalVolume()->GetName()
856 <<
"\t mother logical = ";
857 if((*itr)->GetMotherLogical())
859 G4cout << (*itr)->GetMotherLogical()->GetName();
866 switch((*itr)->VolumeType())
875 G4cout <<
"parameterized";
static constexpr double cm
static constexpr double deg
static const G4double angle[DIMMOTT]
CLHEP::Hep3Vector G4ThreeVector
G4GLOB_DLL std::ostream G4cerr
G4GLOB_DLL std::ostream G4cout
virtual G4Polyhedron * GetPolyhedron() const
static G4LogicalVolumeStore * GetInstance()
void SetVisAttributes(const G4VisAttributes *pVA)
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
static G4PhysicalVolumeStore * GetInstance()
void GetRZPhi(G4int index, G4int q[3]) const
virtual void DrawColumn(RunScore *map, G4VScoreColorMap *colorMap, G4int idxProj, G4int idxColumn)
virtual void SetupGeometry(G4VPhysicalVolume *fWorldPhys)
virtual void List() const
G4ScoringCylinder(G4String wName)
virtual void Draw(RunScore *map, G4VScoreColorMap *colorMap, G4int axflg=111)
static G4int GetReplicaLevel()
static G4SolidStore * GetInstance()
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)