89 tubsLogical, tubsName+
"0", worldLogical,
false, 0);
94 G4String layerName[2] = {tubsName +
"1", tubsName +
"2"};
100 layerSolid[0] =
new G4Tubs(layerName[0],
120 G4cerr <<
"G4ScoringCylinder::SetupGeometry() : invalid parameter ("
122 <<
"in placement of the first nested layer." <<
G4endl;
127 layerSolid[1] =
new G4Tubs(layerName[1],
148 G4cerr <<
"ERROR : G4ScoringCylinder::SetupGeometry() : invalid parameter ("
150 <<
"in placement of the second nested layer." <<
G4endl;
154 G4String elementName = tubsName +
"3";
178 G4cerr <<
"G4ScoringCylinder::SetupGeometry() : "
180 <<
"in mesh element placement." <<
G4endl;
200 G4cout <<
" Size (R, Dz): ("
201 <<
fSize[0]/cm <<
", "
202 <<
fSize[1]/cm <<
") [cm]"
216 std::vector<double> ephi;
217 for(
int phi = 0; phi <
fNSegment[
IPHI]; phi++) ephi.push_back(0.);
219 std::vector<std::vector<double> > zphicell;
220 for(
int z = 0; z <
fNSegment[
IZ]; z++) zphicell.push_back(ephi);
222 std::vector<std::vector<double> > rphicell;
223 for(
int r = 0; r <
fNSegment[
IR]; r++) rphicell.push_back(ephi);
227 std::map<G4int, G4StatDouble*>::iterator itr = map->
GetMap()->begin();
228 for(; itr != map->
GetMap()->end(); itr++) {
241 G4double zphimax = 0., rphimax = 0.;
244 if(zphimin > zphicell[iz][iphi]) zphimin = zphicell[iz][iphi];
245 if(zphimax < zphicell[iz][iphi]) zphimax = zphicell[iz][iphi];
248 if(rphimin > rphicell[ir][iphi]) rphimin = rphicell[ir][iphi];
249 if(rphimax < rphicell[ir][iphi]) rphimax = rphicell[ir][iphi];
278 angle, dphi*0.99999);
295 pVisManager->
Draw(*poly);
311 G4double rs[2] = {rsize*r, rsize*(r+1)};
314 G4Tubs cylindern(
"z-phi", rs[0], rs[1], 0.001,
315 angle, dphi*0.99999);
316 G4Tubs cylinderp = cylindern;
337 pVisManager->
Draw(*polyn);
342 pVisManager->
Draw(*polyp);
372 if(idxColumn<0 || idxColumn>=
fNSegment[projAxis])
374 G4cerr <<
"Warning : Column number " << idxColumn <<
" is out of scoring mesh [0," <<
fNSegment[projAxis]-1 <<
375 "]. Method ignored." <<
G4endl;
382 std::vector<std::vector<std::vector<double> > > cell;
383 std::vector<double> ephi;
384 for(
int phi = 0; phi <
fNSegment[
IPHI]; phi++) ephi.push_back(0.);
385 std::vector<std::vector<double> > ezphi;
386 for(
int z = 0; z <
fNSegment[
IZ]; z++) ezphi.push_back(ephi);
387 for(
int r = 0; r <
fNSegment[
IR]; r++) cell.push_back(ezphi);
389 std::vector<std::vector<double> > rzcell;
390 std::vector<double> ez;
391 for(
int z = 0; z <
fNSegment[
IZ]; z++) ez.push_back(0.);
392 for(
int r = 0; r <
fNSegment[
IR]; r++) rzcell.push_back(ez);
394 std::vector<std::vector<double> > zphicell;
395 for(
int z = 0; z <
fNSegment[
IZ]; z++) zphicell.push_back(ephi);
397 std::vector<std::vector<double> > rphicell;
398 for(
int r = 0; r <
fNSegment[
IR]; r++) rphicell.push_back(ephi);
402 std::map<G4int,G4StatDouble*>::iterator itr = map->
GetMap()->begin();
403 for(; itr != map->
GetMap()->end(); itr++) {
410 if(projAxis ==
IR && q[
IR] == idxColumn) {
413 if(projAxis ==
IZ && q[
IZ] == idxColumn) {
416 if(projAxis ==
IPHI && q[
IPHI] == idxColumn) {
423 G4double rzmax = 0., zphimax = 0., rphimax = 0.;
426 if(rphimin > rphicell[r][phi]) rphimin = rphicell[r][phi];
427 if(rphimax < rphicell[r][phi]) rphimax = rphicell[r][phi];
430 if(rzmin > rzcell[r][z]) rzmin = rzcell[r][z];
431 if(rzmax < rzcell[r][z]) rzmax = rzcell[r][z];
436 if(zphimin > zphicell[z][phi]) zphimin = zphicell[z][phi];
437 if(zphimax < zphicell[z][phi]) zphimax = zphicell[z][phi];
463 angle, dphi*0.99999);
480 pVisManager->
Draw(*poly);
485 }
else if(projAxis ==
IZ) {
492 G4double rs[2] = {rsize*r, rsize*(r+1)};
497 angle, dphi*0.99999);
514 pVisManager->
Draw(*poly);
519 }
else if(projAxis ==
IPHI) {
529 G4double rs[2] = {rsize*r, rsize*(r+1)};
549 pVisManager->
Draw(*poly);
572 q[k] = index - q[j]*
fNSegment[k] - q[i]*jk;
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 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()
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)