111 #ifdef G4HEPREPFILEDEBUG 112 G4cout <<
"G4HepRepFileSceneHandler::BeginPrimitives2D() " <<
G4endl;
119 #ifdef G4HEPREPFILEDEBUG 120 G4cout <<
"G4HepRepFileSceneHandler::EndPrimitives2D() " <<
G4endl;
127 #ifdef G4HEPREPFILEDEBUG 128 void G4HepRepFileSceneHandler::PrintThings() {
130 " with transformation " 139 "\n current physical volume: " 141 "\n current logical volume: " 143 "\n current depth of geometry tree: " 152 #ifdef G4HEPREPFILEDEBUG 154 "G4HepRepFileSceneHandler::AddSolid(const G4Box& box) called for " 210 #ifdef G4HEPREPFILEDEBUG 212 "G4HepRepFileSceneHandler::AddSolid(const G4Cons& cons) called for " 221 G4bool linedUpWithAnAxis = (std::fabs(r.
phiX())<=.001 ||
222 std::fabs(r.
phiY())<=.001 ||
223 std::fabs(r.
phiZ())<=.001 ||
224 std::fabs(r.
phiX()-
pi)<=.001 ||
225 std::fabs(r.
phiY()-
pi)<=.001 ||
226 std::fabs(r.
phiZ()-
pi)<=.001);
275 #ifdef G4HEPREPFILEDEBUG 277 "G4HepRepFileSceneHandler::AddSolid(const G4Tubs& tubs) called for " 286 G4bool linedUpWithAnAxis = (std::fabs(r.
phiX())<=.001 ||
287 std::fabs(r.
phiY())<=.001 ||
288 std::fabs(r.
phiZ())<=.001 ||
289 std::fabs(r.
phiX()-
pi)<=.001 ||
290 std::fabs(r.
phiY()-
pi)<=.001 ||
291 std::fabs(r.
phiZ()-
pi)<=.001);
342 #ifdef G4HEPREPFILEDEBUG 344 "G4HepRepFileSceneHandler::AddSolid(const G4Trd& trd) called for " 402 #ifdef G4HEPREPFILEDEBUG 404 "G4HepRepFileSceneHandler::AddSolid(const G4Trap& trap) called for " 414 #ifdef G4HEPREPFILEDEBUG 416 "G4HepRepFileSceneHandler::AddSolid(const G4Sphere& sphere) called for " 426 #ifdef G4HEPREPFILEDEBUG 428 "G4HepRepFileSceneHandler::AddSolid(const G4Para& para) called for " 438 #ifdef G4HEPREPFILEDEBUG 440 "G4HepRepFileSceneHandler::AddSolid(const G4Torus& torus) called for " 450 #ifdef G4HEPREPFILEDEBUG 452 "G4HepRepFileSceneHandler::AddSolid(const G4Polycone& polycone) called for " 462 #ifdef G4HEPREPFILEDEBUG 464 "G4HepRepFileSceneHandler::AddSolid(const G4Polyhedra& polyhedra) called for " 474 #ifdef G4HEPREPFILEDEBUG 476 "G4HepRepFileSceneHandler::AddSolid(const G4Solid& solid) called for " 486 #ifdef G4HEPREPFILEDEBUG 487 G4cout <<
"G4HepRepFileSceneHandler::AddCompound(const G4VTrajectory&) " <<
G4endl;
493 (
"G4HepRepFileSceneHandler::AddCompound(const G4VTrajectory&)",
499 new std::vector<G4AttValue>;
501 new std::map<G4String,G4AttDef>;
504 std::vector<G4AttValue>::iterator iAttVal;
505 std::map<G4String,G4AttDef>::const_iterator iAttDef;
510 if (rawTrajAttValues) {
514 G4cout <<
"G4HepRepFileSceneHandler::AddCompound(traj):" 515 "\nERROR found during conversion to standard trajectory attributes." 518 #ifdef G4HEPREPFILEDEBUG 520 "G4HepRepFileSceneHandler::AddCompound(traj): standardised attributes:\n" 523 delete rawTrajAttValues;
541 if (strcmp(
"Trajectories",previousName)!=0) {
555 G4String category = iAttDef->second.GetCategory();
556 if (strcmp(category,
"Draw")!=0 &&
557 strcmp(category,
"Physics")!=0 &&
558 strcmp(category,
"Association")!=0 &&
559 strcmp(category,
"PickAction")!=0)
560 category =
"Physics";
562 category, iAttDef->second.GetExtra());
575 std::vector<G4AttValue>* rawPointAttValues = aTrajectoryPoint->
CreateAttValues();
576 std::vector<G4AttValue>* pointAttValues =
577 new std::vector<G4AttValue>;
578 std::map<G4String,G4AttDef>* pointAttDefs =
579 new std::map<G4String,G4AttDef>;
583 if (rawPointAttValues) {
585 aTrajectoryPoint->
GetAttDefs()).Standard(pointAttValues,pointAttDefs);
587 G4cout <<
"G4HepRepFileSceneHandler::AddCompound(traj):" 588 "\nERROR found during conversion to standard first point attributes." <<
G4endl;
592 if (pointAttValues && pointAttDefs) {
593 for (iAttVal = pointAttValues->begin();
594 iAttVal != pointAttValues->end(); ++iAttVal) {
596 pointAttDefs->find(iAttVal->GetName());
597 if (iAttDef != pointAttDefs->end()) {
600 G4String category = iAttDef->second.GetCategory();
601 if (strcmp(category,
"Draw")!=0 &&
602 strcmp(category,
"Physics")!=0 &&
603 strcmp(category,
"Association")!=0 &&
604 strcmp(category,
"PickAction")!=0)
605 category =
"Physics";
609 if (strcmp(iAttVal->GetName(),
"Aux-X")!=0 &&
610 strcmp(iAttVal->GetName(),
"Aux-Y")!=0 &&
611 strcmp(iAttVal->GetName(),
"Aux-Z")!=0 &&
612 strcmp(iAttVal->GetName(),
"Pos-X")!=0 &&
613 strcmp(iAttVal->GetName(),
"Pos-Y")!=0 &&
614 strcmp(iAttVal->GetName(),
"Pos-Z")!=0)
616 category, iAttDef->second.GetExtra());
620 delete rawPointAttValues;
625 delete pointAttValues;
662 redness = colour.
GetRed();
670 if (redness==0. && greenness==0. && blueness==0.) {
677 if (strcmp(
"Trajectory Step Points",previousName)!=0) {
697 std::vector<G4AttValue>* rawPointAttValues = aTrajectoryPoint->
CreateAttValues();
698 std::vector<G4AttValue>* pointAttValues =
699 new std::vector<G4AttValue>;
700 std::map<G4String,G4AttDef>* pointAttDefs =
701 new std::map<G4String,G4AttDef>;
705 if (rawPointAttValues) {
707 aTrajectoryPoint->
GetAttDefs()).Standard(pointAttValues,pointAttDefs);
709 G4cout <<
"G4HepRepFileSceneHandler::AddCompound(traj):" 710 "\nERROR found during conversion to standard point attributes." <<
G4endl;
714 if (pointAttValues) {
715 for (iAttVal = pointAttValues->begin();
716 iAttVal != pointAttValues->end(); ++iAttVal)
720 if (strcmp(iAttVal->GetName(),
"Aux-X")!=0 &&
721 strcmp(iAttVal->GetName(),
"Aux-Y")!=0 &&
722 strcmp(iAttVal->GetName(),
"Aux-Z")!=0 &&
723 strcmp(iAttVal->GetName(),
"Pos-X")!=0 &&
724 strcmp(iAttVal->GetName(),
"Pos-Y")!=0 &&
725 strcmp(iAttVal->GetName(),
"Pos-Z")!=0)
732 delete pointAttValues;
733 delete rawPointAttValues;
760 redness = colour.
GetRed();
768 if (redness==0. && greenness==0. && blueness==0.) {
775 if (strcmp(
"Trajectory Auxiliary Points",previousName)!=0) {
795 std::vector<G4AttValue>* rawPointAttValues = aTrajectoryPoint->
CreateAttValues();
796 std::vector<G4AttValue>* pointAttValues =
797 new std::vector<G4AttValue>;
798 std::map<G4String,G4AttDef>* pointAttDefs =
799 new std::map<G4String,G4AttDef>;
803 if (rawPointAttValues) {
805 aTrajectoryPoint->
GetAttDefs()).Standard(pointAttValues,pointAttDefs);
807 G4cout <<
"G4HepRepFileSceneHandler::AddCompound(traj):" 808 "\nERROR found during conversion to standard point attributes." <<
G4endl;
812 if (pointAttValues) {
813 for (iAttVal = pointAttValues->begin();
814 iAttVal != pointAttValues->end(); ++iAttVal)
818 if (strcmp(iAttVal->GetName(),
"Aux-X")!=0 &&
819 strcmp(iAttVal->GetName(),
"Aux-Y")!=0 &&
820 strcmp(iAttVal->GetName(),
"Aux-Z")!=0 &&
821 strcmp(iAttVal->GetName(),
"Pos-X")!=0 &&
822 strcmp(iAttVal->GetName(),
"Pos-Y")!=0 &&
823 strcmp(iAttVal->GetName(),
"Pos-Z")!=0)
830 delete pointAttValues;
831 delete rawPointAttValues;
837 const std::vector<G4ThreeVector>* auxiliaries = aTrajectoryPoint->
GetAuxiliaryPoints();
838 if (0 != auxiliaries) {
839 for (
size_t iAux=0; iAux<auxiliaries->size(); ++iAux) {
851 #ifdef G4HEPREPFILEDEBUG 852 G4cout <<
"G4HepRepFileSceneHandler::AddCompound(G4VHit&) " <<
G4endl;
858 new std::vector<G4AttValue>;
860 new std::map<G4String,G4AttDef>;
863 std::vector<G4AttValue>::iterator iAttVal;
864 std::map<G4String,G4AttDef>::const_iterator iAttDef;
868 if (rawHitAttValues) {
872 G4cout <<
"G4HepRepFileSceneHandler::AddCompound(hit):" 873 "\nERROR found during conversion to standard hit attributes." 876 #ifdef G4HEPREPFILEDEBUG 878 "G4HepRepFileSceneHandler::AddCompound(hit): standardised attributes:\n" 881 delete rawHitAttValues;
899 if (strcmp(iAttVal->GetName(),
"HitType")==0) {
900 hitType = iAttVal->GetValue();
912 if (strcmp(hitType,previousName)!=0) {
922 iAttDef =
hitAttDefs->find(iAttVal->GetName());
926 G4String category = iAttDef->second.GetCategory();
927 if (strcmp(category,
"Draw")!=0 &&
928 strcmp(category,
"Physics")!=0 &&
929 strcmp(category,
"Association")!=0 &&
930 strcmp(category,
"PickAction")!=0)
931 category =
"Physics";
933 category, iAttDef->second.GetExtra());
955 std::vector<G4AttValue>::iterator iAttVal;
978 std::vector<G4AttValue>::iterator iAttVal;
995 #ifdef G4HEPREPFILEDEBUG 997 "G4HepRepFileSceneHandler::AddPrimitive(const G4Polyline& polyline) called:" 998 "\n polyline: " << polyline
1010 G4cout <<
"HepRepFile does not currently support 2D lines." <<
G4endl;
1027 for (
size_t i=0; i < polyline.size(); i++) {
1036 #ifdef G4HEPREPFILEDEBUG 1038 "G4HepRepFileSceneHandler::AddPrimitive(const G4Polymarker& line) called" 1050 G4cout <<
"HepRepFile does not currently support 2D lines." <<
G4endl;
1058 if (sizeType==
world)
1075 for (
size_t i=0; i < line.size(); i++) {
1083 #ifdef G4HEPREPFILEDEBUG 1085 "G4HepRepFileSceneHandler::AddPrimitive(const G4Text& text) called:" 1093 G4cout <<
"HepRepFile does not currently support 3D text." <<
G4endl;
1094 G4cout <<
"HepRep browsers can directly display text attributes on request." <<
G4endl;
1095 G4cout <<
"See Application Developers Guide for how to attach attributes to viewable objects." <<
G4endl;
1103 if (sizeType==
world)
1118 float redness = colour.
GetRed();
1119 float greenness = colour.
GetGreen();
1120 float blueness = colour.
GetBlue();
1123 if (redness==0. && greenness==0. && blueness==0.) {
1139 #ifdef G4HEPREPFILEDEBUG 1141 "G4HepRepFileSceneHandler::AddPrimitive(const G4Circle& circle) called:" 1154 G4cout <<
"HepRepFile does not currently support 2D circles." <<
G4endl;
1162 if (sizeType==
world)
1185 #ifdef G4HEPREPFILEDEBUG 1187 "G4HepRepFileSceneHandler::AddPrimitive(const G4Square& square) called:" 1200 G4cout <<
"HepRepFile does not currently support 2D squares." <<
G4endl;
1208 if (sizeType==
world)
1231 #ifdef G4HEPREPFILEDEBUG 1233 "G4HepRepFileSceneHandler::AddPrimitive(const G4Polyhedron& polyhedron) called." 1268 }
while (notLastEdge);
1269 }
while (notLastFace);
1280 #ifdef G4HEPREPFILEDEBUG 1282 "G4HepRepFileSceneHandler::AddHepRepInstance called." 1291 G4int currentDepth = 0;
1299 #ifdef G4HEPREPFILEDEBUG 1331 if (strcmp(
"Text",primName)==0) {
1334 if (strcmp(
"Line",primName)==0) {
1339 strcmp(
"Square",primName)==0)
1345 strcmp(
"Circle",primName)==0)
1361 }
else if (pCurrentPV==0) {
1369 if (strcmp(
"Text",primName)==0) {
1372 if (strcmp(
"Line",primName)==0) {
1401 typedef std::vector<PVNodeID>
PVPath;
1403 PVPath::const_reverse_iterator ri = ++drawnPVPath.rbegin();
1404 G4int drawnMotherDepth;
1405 if (ri != drawnPVPath.rend()) {
1407 drawnMotherDepth = ri->GetNonCulledDepth();
1411 drawnMotherDepth = -1;
1415 while (drawnMotherDepth < (currentDepth-1)) {
1416 G4String culledParentName =
"Culled parent of " + pCurrentPV->
GetName();
1420 drawnMotherDepth ++;
1473 redness = colour.
GetRed();
1478 if (redness==0. && greenness==0. && blueness==0.) {
1484 #ifdef G4HEPREPFILEDEBUG 1486 "G4HepRepFileSceneHandler::AddHepRepInstance using default colour." 1495 if (strcmp(primName,
"Point")==0)
1505 #ifdef G4HEPREPFILEDEBUG 1507 "G4HepRepFileSceneHandler::CheckFileOpen called." 1522 G4cout <<
"HepRepFile writing to " << newFileSpec <<
G4endl;
1531 versionString = versionString.substr(1,versionString.size()-2);
1532 versionString =
" Geant4 version " + versionString +
" " +
G4Date;
const std::vector< G4PhysicalVolumeNodeID > & GetDrawnPVPath() const
G4bool GetDrawAuxPts() const
virtual G4double getScale()
const G4VisAttributes * GetVisAttributes() const
G4double GetXHalfLength1() const
virtual void AddSolid(const G4Box &)
virtual G4String getFileName()
G4Colour GetAuxPtsColour() const
void AddCompound(const G4VTrajectory &)
G4Polymarker::MarkerType GetAuxPtsType() const
G4HepRepFileSceneHandler(G4VGraphicsSystem &system, const G4String &name)
G4double GetOuterRadiusPlusZ() const
virtual void BeginModeling()
virtual G4bool renderCylAsPolygons()
G4double GetDeltaPhiAngle() const
virtual const std::map< G4String, G4AttDef > * GetAttDefs() const
G4double GetYHalfLength1() const
G4double GetWorldRadius() const
G4Point3D GetPosition() const
G4double GetInnerRadiusMinusZ() const
G4double GetStepPtsSize() const
virtual G4VTrajectoryPoint * GetPoint(G4int i) const =0
void AddPrimitive(const G4Polyline &)
void addAttValue(const char *name, const char *value)
void AddSolid(const G4Box &)
static G4String ConvertToString(G4bool boolVal)
G4double GetDensity() const
G4Polymarker::MarkerType GetStepPtsType() const
G4Transform3D fObjectTransformation
const G4VTrajectoryModel * CurrentTrajDrawModel() const
void AddHepRepInstance(const char *primName, const G4Visible visible)
HepGeom::Point3D< G4double > G4Point3D
G4double GetXOffset() const
std::vector< G4AttValue > * hitAttValues
std::map< G4String, G4AttDef > * hitAttDefs
G4double GetGreen() const
G4bool GetStepPtsVisible() const
virtual G4GeometryType GetEntityType() const =0
virtual const std::vector< G4ThreeVector > * GetAuxiliaryPoints() const
G4int GetNoFacets() const
const G4VisTrajContext * trajContext
virtual std::vector< G4AttValue > * CreateAttValues() const
G4double GetZHalfLength() const
G4double GetXHalfLength() const
virtual const std::map< G4String, G4AttDef > * GetAttDefs() const
virtual G4bool getOverwrite()
virtual G4String getFileDir()
virtual int GetPointEntries() const =0
G4HepRepFileXMLWriter * hepRepXMLWriter
const G4VisTrajContext & GetContext() const
G4GLOB_DLL std::ostream G4cout
void addPoint(double x, double y, double z)
void addAttDef(const char *name, const char *desc, const char *type, const char *extra)
G4double GetYOffset() const
const G4String & GetName() const
G4Colour GetStepPtsColour() const
G4double GetZHalfLength() const
G4bool IsRootRegion() const
virtual std::vector< G4AttValue > * CreateAttValues() const
G4PhysicalVolumeModel::G4PhysicalVolumeNodeID PVNodeID
static const G4String G4Version
virtual G4bool getCullInvisibles()
static const double twopi
static G4VisManager * GetInstance()
G4int GetCurrentDepth() const
virtual void EndModeling()
static G4HepRepMessenger * GetInstance()
virtual std::vector< G4AttValue > * CreateAttValues() const
G4double GetOuterRadius() const
virtual ~G4HepRepFileSceneHandler()
std::map< G4String, G4AttDef > * trajAttDefs
std::vector< PVNodeID > PVPath
static const G4String G4Date
G4LogicalVolume * GetCurrentLV() const
G4double GetXHalfLength2() const
G4double GetInnerRadiusPlusZ() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
virtual void BeginPrimitives2D(const G4Transform3D &objectTransformation)
const G4String & GetName() const
G4double GetYHalfLength() const
const G4String & GetName() const
virtual const G4ThreeVector GetPosition() const =0
const G4VisAttributes * fpVisAttribs
virtual void AddCompound(const G4VTrajectory &)
static G4int fSceneIdCount
std::vector< G4AttValue > * trajAttValues
G4double GetOuterRadiusMinusZ() const
void BeginPrimitives2D(const G4Transform3D &objectTransformation)
G4Region * GetRegion() const
G4double GetMarkerSize(const G4VMarker &, MarkerSizeType &)
G4VPhysicalVolume * GetCurrentPV() const
system("rm -rf microbeam.root")
G4Material * GetCurrentMaterial() const
G4bool warnedAbout2DMarkers
const G4Colour & GetColour(const G4Visible &)
G4double GetAuxPtsSize() const
G4double GetInnerRadius() const
virtual const std::map< G4String, G4AttDef > * GetAttDefs() const
G4bool GetNextVertex(G4Point3D &vertex, G4int &edgeFlag) const
static PROLOG_HANDLER error
G4bool fReadyForTransients
void addType(const char *name, int newTypeDepth)
G4double GetYHalfLength2() const
G4double GetZHalfLength() const
void open(const char *filespec)
const G4String & GetName() const
G4double GetRadlen() const
G4HepRepFileXMLWriter * GetHepRepXMLWriter()
G4bool GetDrawStepPts() const
G4double GetZHalfLength() const
G4VSolid * GetSolid() const
G4double GetDeltaPhiAngle() const
G4bool GetNextNormal(G4Normal3D &normal) const
G4bool GetAuxPtsVisible() const
virtual void EndPrimitives2D()
void ClearTransientStore()
const G4Colour & GetTextColour(const G4Text &)
const G4Colour & GetColour() const