100 fMarkForClearingTransientStore (true),
104 fReadyForTransients (true),
105 fProcessingSolid (false),
106 fProcessing2D (false),
112 fpScene = pVMan -> GetCurrentScene ();
114 std::ostringstream ost;
115 ost << fSystem.GetName () <<
'-' << fSceneHandlerId;
140 return defaultExtent;
167 (
"G4VSceneHandler::BeginPrimitives",
169 "Nesting detected. It is illegal to nest Begin/EndPrimitives.");
189 (
"G4VSceneHandler::BeginPrimitives2D",
191 "Nesting detected. It is illegal to nest Begin/EndPrimitives.");
321 if (trajectoriesModel)
325 (
"G4VSceneHandler::AddCompound(const G4VTrajectory&)",
332 const_cast<G4VHit&
>(hit).Draw();
337 const_cast<G4VDigi&
>(digi).Draw();
343 G4bool scoreMapHits =
false;
345 if (scoringManager) {
347 for (
size_t iMesh = 0; iMesh < nMeshes; ++iMesh) {
352 for(MeshScoreMap::const_iterator i = scoreMap.begin();
353 i != scoreMap.end(); ++i) {
354 const G4String& scoreMapName = i->first;
355 if (scoreMapName == mapNam) {
358 mesh->
DrawMesh(scoreMapName, &colorMap);
365 static G4bool first =
true;
369 "Scoring map drawn with default parameters."
370 "\n To get gMocren file for gMocren browser:"
371 "\n /vis/open gMocrenFile"
372 "\n /vis/viewer/flush"
373 "\n Many other options available with /score/draw... commands."
374 "\n You might want to \"/vis/viewer/set/autoRefresh false\"."
386 G4bool scoreMapHits =
false;
388 if (scoringManager) {
390 for (
size_t iMesh = 0; iMesh < nMeshes; ++iMesh) {
394 for(MeshScoreMap::const_iterator i = scoreMap.begin();
395 i != scoreMap.end(); ++i) {
396 const G4String& scoreMapName = i->first;
398 if (foundHits == &hits) {
401 mesh->
DrawMesh(scoreMapName, &colorMap);
408 static G4bool first =
true;
412 "Scoring map drawn with default parameters."
413 "\n To get gMocren file for gMocren browser:"
414 "\n /vis/open gMocrenFile"
415 "\n /vis/viewer/flush"
416 "\n Many other options available with /score/draw... commands."
417 "\n You might want to \"/vis/viewer/set/autoRefresh false\"."
429 ed <<
"There has been an attempt to draw a mesh (a nested parameterisation),"
430 "\nbut it is not implemented by the current graphics driver. Here we simply"
432 G4Exception(
"G4VSceneHandler::AddCompound(const G4Mesh&)",
440 const auto& saveVisAtts = lv->GetVisAttributes();
441 auto tmpVisAtts = *saveVisAtts;
442 tmpVisAtts.SetVisibility(
true);
443 auto colour = saveVisAtts->GetColour();
445 tmpVisAtts.SetColour(colour);
448 solid->DescribeYourselfTo(*
this);
451 lv->SetVisAttributes(saveVisAtts);
466 for (
size_t iPoint = 0; iPoint < polymarker.size (); iPoint++) {
475 for (
size_t iPoint = 0; iPoint < polymarker.size (); iPoint++) {
484 for (
size_t iPoint = 0; iPoint < polymarker.size (); iPoint++) {
497 visManager->SetCurrentViewer(
nullptr);
503 G4cerr <<
" Open a plotter-aware graphics system or remove plotter with" <<
G4endl;
512 (*i) -> SetNeedKernelVisit (
true);
540 static std::set<const G4VSolid*> problematicSolids;
542 problematicSolids.find(&solid) == problematicSolids.end()) {
543 problematicSolids.insert(&solid);
545 "ERROR: G4VSceneHandler::RequestPrimitives"
546 "\n Polyhedron not available for " << solid.
GetName ();
551 static G4bool explanation =
false;
555 "\n This means it cannot be visualized in the usual way on most systems."
556 "\n 1) The solid may not have implemented the CreatePolyhedron method."
557 "\n 2) For Boolean solids, the BooleanProcessor, which attempts to create"
558 "\n the resultant polyhedron, may have failed."
559 "\n Try RayTracer. It uses Geant4's tracking algorithms instead.";
561 G4cerr <<
"\n Drawing solid with cloud of points.";
581 for (
G4int i = 0; i < numberOfCloudPoints; ++i) {
623 "The scene has no extent.");
643 const std::vector<G4Scene::Model>& runDurationModelList =
646 if(runDurationModelList.size())
658 for(
size_t i = 0; i < runDurationModelList.size(); i++)
660 if(runDurationModelList[i].fActive)
662 fpModel = runDurationModelList[i].fpModel;
698 const std::vector<const G4Event*>* events =
699 run ?
run->GetEventVector() : 0;
700 size_t nKeptEvents = 0;
702 nKeptEvents = events->size();
712 if(events && events->size())
713 event = events->back();
724 for(
const auto& event : *events)
734 G4cout <<
"WARNING: Cannot refresh events accumulated over more"
735 "\n than one runs. Refreshed just the last run."
758 const std::vector<G4Scene::Model>& EOEModelList =
759 fpScene -> GetEndOfEventModelList ();
760 size_t nModels = EOEModelList.size();
764 for (
size_t i = 0; i < nModels; i++) {
765 if (EOEModelList[i].fActive) {
766 fpModel = EOEModelList[i].fpModel;
767 fpModel -> SetModelingParameters(pMP);
768 fpModel -> DescribeYourselfTo (*
this);
769 fpModel -> SetModelingParameters(0);
779 const std::vector<G4Scene::Model>& EORModelList =
780 fpScene -> GetEndOfRunModelList ();
781 size_t nModels = EORModelList.size();
785 for (
size_t i = 0; i < nModels; i++) {
786 if (EORModelList[i].fActive) {
787 fpModel = EORModelList[i].fpModel;
788 fpModel -> SetModelingParameters(pMP);
789 fpModel -> DescribeYourselfTo (*
this);
790 fpModel -> SetModelingParameters(0);
828 G4bool reallyCullCovered =
864 return pModelingParams;
877 new G4Box(
"_sectioner", safe, safe, 1.e-5 * radius);
889 if (newNormal != originalNormal) {
898 (
"_displaced_sectioning_box", sectionBox, requiredTransform);
939 const std::map<G4String,G4AttDef>* vaDefs =
950 const std::map<G4String,G4AttDef>* pvDefs = pPVModel->
GetAttDefs();
959 const std::map<G4String,G4AttDef>* trajModelDefs = trajModel->
GetAttDefs();
966 const std::map<G4String,G4AttDef>* trajDefs = traj->
GetAttDefs();
971 for (
G4int i = 0; i < nPoints; ++i) {
974 const std::map<G4String,G4AttDef>* pointDefs = trajPoint->
GetAttDefs();
987 const std::map<G4String,G4AttDef>* hitsDefs = hit->
GetAttDefs();
1015 if (lineWidth < 1.) lineWidth = 1.;
1016 lineWidth *=
fpViewer -> GetViewParameters().GetGlobalLineWidthScale();
1017 if (lineWidth < 1.) lineWidth = 1.;
1029 if (pVisAttribs -> IsForceDrawingStyle ()) {
1031 pVisAttribs -> GetForcedDrawingStyle ();
1034 switch (forcedStyle) {
1036 switch (viewerStyle) {
1064 return resultantStyle;
1073 if (pVisAttribs -> IsForceDrawingStyle() &&
1075 pVisAttribs -> GetForcedNumberOfCloudPoints() > 0) {
1076 numberOfCloudPoints = pVisAttribs -> GetForcedNumberOfCloudPoints();
1078 return numberOfCloudPoints;
1083 if (pVisAttribs -> IsForceAuxEdgeVisible()) {
1086 return isAuxEdgeVisible;
1095 fpViewer -> GetViewParameters().GetDefaultMarker();
1100 markerSizeType =
world;
1103 size = userSpecified ?
1108 size *=
fpViewer -> GetViewParameters().GetGlobalMarkerScale();
1109 if (markerSizeType ==
screen && size < 1.) size = 1.;
1122 if (lineSegmentsPerCircle < pVisAttribs->GetMinLineSegmentsPerCircle()) {
1125 "G4VSceneHandler::GetNoOfSides: attempt to set the"
1126 "\nnumber of line segments per circle < " << lineSegmentsPerCircle
1130 return lineSegmentsPerCircle;
1135 os <<
"Scene handler " << sh.
fName <<
" has "
1137 for (
size_t i = 0; i < sh.
fViewerList.size (); i++) {
1145 os <<
"\n This scene handler currently has no scene.";
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
static const G4double angle[DIMMOTT]
std::vector< G4VViewer * >::iterator G4ViewerListIterator
G4GLOB_DLL std::ostream G4cerr
G4GLOB_DLL std::ostream G4cout
void AddAtts(const std::vector< G4AttValue > *values, const std::map< G4String, G4AttDef > *defs)
const G4VHit * GetCurrentHit() const
G4VSolid * GetSolid() const
G4VPhysicalVolume * GetContainerVolume() const
const G4Transform3D & GetTransform() const
void SetCBDParameters(const std::vector< G4double > &)
void SetNumberOfCloudPoints(G4int)
void SetCBDAlgorithmNumber(G4int)
void SetExplodeFactor(G4double explodeFactor)
void SetVisAttributesModifiers(const std::vector< VisAttributesModifier > &)
void SetExplodeCentre(const G4Point3D &explodeCentre)
void SetCutawaySolid(G4DisplacedSolid *pCutawaySolid)
void SetSectionSolid(G4DisplacedSolid *pSectionSolid)
void SetEvent(const G4Event *pEvent)
void SetSpecialMeshVolumes(const std::vector< PVNameCopyNo > &)
void SetSpecialMeshRendering(G4bool)
std::vector< G4AttValue > * CreateCurrentAttValues() const
const std::vector< G4PhysicalVolumeNodeID > & GetFullPVPath() const
const std::map< G4String, G4AttDef > * GetAttDefs() const
void SetMarkerType(MarkerType)
MarkerType GetMarkerType() const
static G4RunManager * GetMasterRunManager()
const G4Run * GetCurrentRun() const
const std::vector< Model > & GetRunDurationModelList() const
G4bool GetRefreshAtEndOfEvent() const
const G4VisExtent & GetExtent() const
G4bool GetRefreshAtEndOfRun() const
G4VScoringMesh * GetMesh(G4int i) const
size_t GetNumberOfMesh() const
static G4ScoringManager * GetScoringManagerIfExist()
const G4ApplicationState & GetCurrentState() const
static G4StateManager * GetStateManager()
const G4VTrajectory * GetCurrentTrajectory() const
std::vector< G4AttValue > * CreateCurrentAttValues() const
const std::map< G4String, G4AttDef > * GetAttDefs() const
const G4String & GetName() const
virtual std::vector< G4AttValue > * CreateAttValues() const
virtual const std::map< G4String, G4AttDef > * GetAttDefs() const
G4double GetScreenSize() const
void SetSize(SizeType, G4double)
void SetScreenSize(G4double)
void SetWorldSize(G4double)
void SetPosition(const G4Point3D &)
G4double GetWorldSize() const
void SetModelingParameters(const G4ModelingParameters *)
virtual void DescribeYourselfTo(G4VGraphicsScene &)=0
G4LogicalVolume * GetLogicalVolume() const
const G4String & GetName() const
virtual void BeginModeling()
G4int GetNumberOfCloudPoints(const G4VisAttributes *) const
G4int GetNoOfSides(const G4VisAttributes *)
virtual void ClearTransientStore()
void LoadAtts(const G4Visible &, G4AttHolder *)
void DrawEvent(const G4Event *)
G4ModelingParameters * CreateModelingParameters()
const G4Colour & GetTextColour(const G4Text &)
const G4Colour & GetColour()
void AddSolidT(const T &solid)
G4Transform3D fObjectTransformation
virtual void EndPrimitives()
G4bool fTransientsDrawnThisEvent
void AddSolidWithAuxiliaryEdges(const T &solid)
virtual G4DisplacedSolid * CreateSectionSolid()
virtual void EndModeling()
virtual const G4VisExtent & GetExtent() const
virtual void ProcessScene()
G4double GetMarkerSize(const G4VMarker &, MarkerSizeType &)
virtual void PreAddSolid(const G4Transform3D &objectTransformation, const G4VisAttributes &)
G4VSceneHandler(G4VGraphicsSystem &system, G4int id, const G4String &name="")
G4bool fTransientsDrawnThisRun
virtual void PostAddSolid()
const G4String & GetName() const
void AddViewerToList(G4VViewer *pView)
virtual void EndPrimitives2D()
virtual void SetScene(G4Scene *)
void DrawEndOfRunModels()
G4bool fMarkForClearingTransientStore
const G4VisAttributes * fpVisAttribs
virtual void BeginPrimitives2D(const G4Transform3D &objectTransformation=G4Transform3D())
virtual void RequestPrimitives(const G4VSolid &solid)
G4bool fReadyForTransients
G4ViewParameters::DrawingStyle GetDrawingStyle(const G4VisAttributes *)
void RemoveViewerFromList(G4VViewer *pView)
virtual G4DisplacedSolid * CreateCutawaySolid()
virtual void BeginPrimitives(const G4Transform3D &objectTransformation=G4Transform3D())
G4double GetLineWidth(const G4VisAttributes *)
G4VGraphicsSystem & fSystem
virtual void AddSolid(const G4Box &)
virtual void ClearStore()
virtual void AddCompound(const G4VTrajectory &)
virtual ~G4VSceneHandler()
virtual void AddPrimitive(const G4Polyline &)=0
G4bool GetAuxEdgeVisible(const G4VisAttributes *)
std::map< G4String, RunScore * > MeshScoreMap
void DrawMesh(const G4String &psName, G4VScoreColorMap *colorMap, G4int axflg=111)
MeshScoreMap GetScoreMap() const
virtual G4ThreeVector GetPointOnSurface() const
virtual G4Polyhedron * GetPolyhedron() const
virtual std::vector< G4AttValue > * CreateAttValues() const
virtual const std::map< G4String, G4AttDef > * GetAttDefs() const
virtual G4VTrajectoryPoint * GetPoint(G4int i) const =0
virtual G4int GetPointEntries() const =0
virtual std::vector< G4AttValue > * CreateAttValues() const
virtual void DrawTrajectory() const
virtual const std::map< G4String, G4AttDef > * GetAttDefs() const
const G4VisAttributes * GetApplicableVisAttributes(const G4VisAttributes *) const
const G4ViewParameters & GetViewParameters() const
static G4VVisManager * GetConcreteInstance()
const std::vector< G4ModelingParameters::VisAttributesModifier > & GetVisAttributesModifiers() const
G4int GetNoOfSides() const
G4bool IsSpecialMeshRendering() const
G4double GetExplodeFactor() const
G4int GetNumberOfCloudPoints() const
const G4VisAttributes * GetDefaultTextVisAttributes() const
const std::vector< G4double > & GetCBDParameters() const
G4int GetCBDAlgorithmNumber() const
const std::vector< G4ModelingParameters::PVNameCopyNo > & GetSpecialMeshVolumes() const
G4bool IsCullingInvisible() const
const G4VisAttributes * GetDefaultVisAttributes() const
G4bool IsDensityCulling() const
G4double GetVisibleDensity() const
const G4Point3D & GetExplodeCentre() const
G4bool IsCullingCovered() const
const G4Plane3D & GetSectionPlane() const
DrawingStyle GetDrawingStyle() const
G4bool IsAuxEdgeVisible() const
const std::map< G4String, G4AttDef > * GetAttDefs() const
G4bool IsForceLineSegmentsPerCircle() const
G4double GetLineWidth() const
void SetForceAuxEdgeVisible(G4bool=true)
G4int GetForcedLineSegmentsPerCircle() const
const std::vector< G4AttValue > * CreateAttValues() const
const G4Colour & GetColour() const
G4bool IsForceAuxEdgeVisible() const
G4bool IsForcedAuxEdgeVisible() const
static G4int GetMinLineSegmentsPerCircle()
static const G4VisExtent & GetNullExtent()
G4double GetExtentRadius() const
const G4Point3D & GetExtentCentre() const
void SetEventRefreshing(G4bool)
G4bool GetTransientsDrawnThisEvent() const
G4bool GetTransientsDrawnThisRun() const
static Verbosity GetVerbosity()
const G4Event * GetRequestedEvent() const
static G4VisManager * GetInstance()
void SetVisAttributes(const G4VisAttributes *)
const G4VisAttributes * GetVisAttributes() const
BasicVector3D< T > cross(const BasicVector3D< T > &v) const
std::ostream & operator<<(std::ostream &, const BasicVector3D< float > &)
T dot(const BasicVector3D< T > &v) const
static void SetNumberOfRotationSteps(G4int n)
static void ResetNumberOfRotationSteps()
const char * name(G4int ptype)