806{
807 std::vector<G4double> params;
808
810 solidType = GetTGSolidType(solidType);
811
812 if(solidType == "BOX")
813 {
814 const G4Box* sb = dynamic_cast<const G4Box*>(so);
815 if(sb != nullptr)
816 {
820 }
821 }
822 else if(solidType == "TUBS")
823 {
824 const G4Tubs* tu = dynamic_cast<const G4Tubs*>(so);
825 if(tu != nullptr)
826 {
832 }
833 }
834 else if(solidType == "TRAP")
835 {
836 const G4Trap* trp = dynamic_cast<const G4Trap*>(so);
837 if(trp != nullptr)
838 {
841 params.push_back(symAxis.theta() / deg);
842 params.push_back(symAxis.phi() / deg);
851 }
852 }
853 else if(solidType == "TRD")
854 {
855 const G4Trd* tr = dynamic_cast<const G4Trd*>(so);
856 if(tr != nullptr)
857 {
863 }
864 }
865 else if(solidType == "PARA")
866 {
867 const G4Para* para = dynamic_cast<const G4Para*>(so);
868 if(para != nullptr)
869 {
874 params.push_back(std::atan(para->
GetTanAlpha()) / deg);
875 params.push_back(symAxis.theta() / deg);
876 params.push_back(symAxis.phi() / deg);
877 }
878 }
879 else if(solidType == "CONS")
880 {
881 const G4Cons* cn = dynamic_cast<const G4Cons*>(so);
882 if(cn != nullptr)
883 {
891 }
892 }
893 else if(solidType == "SPHERE")
894 {
895 const G4Sphere* sphere = dynamic_cast<const G4Sphere*>(so);
896 if(sphere != nullptr)
897 {
904 }
905 }
906 else if(solidType == "ORB")
907 {
908 const G4Orb* orb = dynamic_cast<const G4Orb*>(so);
909 if(orb != nullptr)
910 {
912 }
913 }
914 else if(solidType == "TORUS")
915 {
916 const G4Torus* torus = dynamic_cast<const G4Torus*>(so);
917 if(torus != nullptr)
918 {
919 params.push_back(torus->
GetRmin());
920 params.push_back(torus->
GetRmax());
921 params.push_back(torus->
GetRtor());
922 params.push_back(torus->
GetSPhi() / deg);
923 params.push_back(torus->
GetDPhi() / deg);
924 }
925 }
926 else if(solidType == "POLYCONE")
927 {
928
929
930 const G4Polycone* plc = dynamic_cast<const G4Polycone*>(so);
931 if(plc != nullptr)
932 {
934 if(angphi > 180 * deg)
935 {
936 angphi -= 360 * deg;
937 }
939 if(endphi > 180 * deg)
940 {
941 endphi -= 360 * deg;
942 }
943 params.push_back(angphi);
944 params.push_back(endphi - angphi);
945
947 params.push_back(ncor);
948
949 for(
G4int ii = 0; ii < ncor; ++ii)
950 {
953 }
954 }
955 }
956 else if(solidType == "GENERICPOLYCONE")
957 {
958
959 const G4GenericPolycone* plc = dynamic_cast<const G4GenericPolycone*>(so);
960 if(plc != nullptr)
961 {
963 if(angphi > 180 * deg)
964 {
965 angphi -= 360 * deg;
966 }
968 if(endphi > 180 * deg)
969 {
970 endphi -= 360 * deg;
971 }
972 params.push_back(angphi);
973 params.push_back(endphi - angphi);
975 params.push_back(ncor);
976
977 for(
G4int ii = 0; ii < ncor; ++ii)
978 {
981 }
982 }
983 }
984 else if(solidType == "POLYHEDRA")
985 {
986
987
988 const G4Polyhedra* ph = (dynamic_cast<const G4Polyhedra*>(so));
989 if(ph != nullptr)
990 {
992 if(angphi > 180 * deg)
993 angphi -= 360 * deg;
994
996
997 params.push_back(angphi);
1000 params.push_back(ncor);
1001
1002 for(
G4int ii = 0; ii < ncor; ++ii)
1003 {
1006 }
1007 }
1008 }
1009 else if(solidType == "ELLIPTICALTUBE")
1010 {
1011 const G4EllipticalTube* eltu = dynamic_cast<const G4EllipticalTube*>(so);
1012 if(eltu != nullptr)
1013 {
1014 params.push_back(eltu->
GetDx());
1015 params.push_back(eltu->
GetDy());
1016 params.push_back(eltu->
GetDz());
1017 }
1018 }
1019 else if(solidType == "ELLIPSOID")
1020 {
1021 const G4Ellipsoid* dso = dynamic_cast<const G4Ellipsoid*>(so);
1022 if(dso != nullptr)
1023 {
1029 }
1030 }
1031 else if(solidType == "ELLIPTICAL_CONE")
1032 {
1033 const G4EllipticalCone* elco = dynamic_cast<const G4EllipticalCone*>(so);
1034 if(elco != nullptr)
1035 {
1038 params.push_back(elco->
GetZMax());
1040 }
1041 }
1042 else if(solidType == "HYPE")
1043 {
1044 const G4Hype* hype = dynamic_cast<const G4Hype*>(so);
1045 if(hype != nullptr)
1046 {
1052 }
1053
1054 }
1055 else if(solidType == "TWISTEDBOX")
1056 {
1057 const G4TwistedBox* tbox = dynamic_cast<const G4TwistedBox*>(so);
1058 if(tbox != nullptr)
1059 {
1064 }
1065 }
1066 else if(solidType == "TWISTEDTRAP")
1067 {
1068 const G4TwistedTrap* ttrap = dynamic_cast<const G4TwistedTrap*>(so);
1069 if(ttrap != nullptr)
1070 {
1082 }
1083 }
1084 else if(solidType == "TWISTEDTRD")
1085 {
1086 const G4TwistedTrd* ttrd = dynamic_cast<const G4TwistedTrd*>(so);
1087 if(ttrd != nullptr)
1088 {
1095 }
1096 }
1097 else if(solidType == "TWISTEDTUBS")
1098 {
1099 const G4TwistedTubs* ttub = dynamic_cast<const G4TwistedTubs*>(so);
1100 if(ttub != nullptr)
1101 {
1105 params.push_back(ttub->
GetDPhi() / deg);
1107 }
1108 }
1109 else
1110 {
1111 const G4String& ErrMessage = "Solid type not supported, sorry... " + solidType;
1112 G4Exception(
"G4tgbGeometryDumper::DumpSolidParams()",
"NotImplemented",
1114 }
1115
1116 return params;
1117}
G4double GetYHalfLength() const
G4double GetZHalfLength() const
G4double GetXHalfLength() const
G4double GetOuterRadiusPlusZ() const
G4double GetStartPhiAngle() const
G4double GetDeltaPhiAngle() const
G4double GetInnerRadiusMinusZ() const
G4double GetInnerRadiusPlusZ() const
G4double GetOuterRadiusMinusZ() const
G4double GetZHalfLength() const
G4double GetSemiAxisMax(G4int i) const
G4double GetZTopCut() const
G4double GetZBottomCut() const
G4double GetSemiAxisX() const
G4double GetSemiAxisY() const
G4double GetZTopCut() const
G4double GetStartPhi() const
G4double GetEndPhi() const
G4int GetNumRZCorner() const
G4PolyconeSideRZ GetCorner(G4int index) const
G4double GetInnerStereo() const
G4double GetZHalfLength() const
G4double GetOuterStereo() const
G4double GetOuterRadius() const
G4double GetInnerRadius() const
G4double GetRadius() const
G4double GetTanAlpha() const
G4ThreeVector GetSymAxis() const
G4double GetYHalfLength() const
G4double GetZHalfLength() const
G4double GetXHalfLength() const
G4double GetEndPhi() const
G4double GetStartPhi() const
G4int GetNumRZCorner() const
G4PolyconeSideRZ GetCorner(G4int index) const
G4int GetNumRZCorner() const
G4PolyhedraHistorical * GetOriginalParameters() const
G4PolyhedraSideRZ GetCorner(const G4int index) const
G4double GetStartPhi() const
G4double GetStartPhiAngle() const
G4double GetDeltaPhiAngle() const
G4double GetInnerRadius() const
G4double GetOuterRadius() const
G4double GetDeltaThetaAngle() const
G4double GetStartThetaAngle() const
G4double GetYHalfLength1() const
G4double GetTanAlpha2() const
G4double GetXHalfLength2() const
G4ThreeVector GetSymAxis() const
G4double GetXHalfLength4() const
G4double GetZHalfLength() const
G4double GetYHalfLength2() const
G4double GetTanAlpha1() const
G4double GetXHalfLength3() const
G4double GetXHalfLength1() const
G4double GetXHalfLength2() const
G4double GetYHalfLength2() const
G4double GetXHalfLength1() const
G4double GetYHalfLength1() const
G4double GetZHalfLength() const
G4double GetZHalfLength() const
G4double GetInnerRadius() const
G4double GetOuterRadius() const
G4double GetStartPhiAngle() const
G4double GetDeltaPhiAngle() const
G4double GetPhiTwist() const
G4double GetXHalfLength() const
G4double GetZHalfLength() const
G4double GetYHalfLength() const
G4double GetPolarAngleTheta() const
G4double GetAzimuthalAnglePhi() const
G4double GetTiltAngleAlpha() const
G4double GetZHalfLength() const
G4double GetX1HalfLength() const
G4double GetX2HalfLength() const
G4double GetX3HalfLength() const
G4double GetX4HalfLength() const
G4double GetY2HalfLength() const
G4double GetPhiTwist() const
G4double GetY1HalfLength() const
G4double GetX2HalfLength() const
G4double GetY2HalfLength() const
G4double GetY1HalfLength() const
G4double GetZHalfLength() const
G4double GetPhiTwist() const
G4double GetX1HalfLength() const
G4double GetOuterRadius() const
G4double GetZHalfLength() const
G4double GetPhiTwist() const
G4double GetInnerRadius() const