File indexing completed on 2025-01-18 09:59:25
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047 #ifndef G4VNESTEDPARAMETERISATION_HH
0048 #define G4VNESTEDPARAMETERISATION_HH 1
0049
0050 #include "G4Types.hh"
0051 #include "G4VPVParameterisation.hh"
0052 #include "G4VVolumeMaterialScanner.hh"
0053 #include "G4VTouchable.hh"
0054
0055 class G4VPhysicalVolume;
0056 class G4VSolid;
0057 class G4Material;
0058
0059
0060
0061 class G4Box;
0062 class G4Tubs;
0063 class G4Trd;
0064 class G4Trap;
0065 class G4Cons;
0066 class G4Sphere;
0067 class G4Orb;
0068 class G4Ellipsoid;
0069 class G4Torus;
0070 class G4Para;
0071 class G4Polycone;
0072 class G4Polyhedra;
0073 class G4Hype;
0074
0075 class G4VNestedParameterisation : public G4VPVParameterisation,
0076 public G4VVolumeMaterialScanner
0077 {
0078 public:
0079
0080 G4VNestedParameterisation() = default;
0081 ~G4VNestedParameterisation() override = default;
0082
0083
0084
0085
0086 virtual G4Material* ComputeMaterial(G4VPhysicalVolume* currentVol,
0087 const G4int repNo,
0088 const G4VTouchable* parentTouch = nullptr)=0;
0089
0090
0091
0092 G4int GetNumberOfMaterials() const override =0;
0093 G4Material* GetMaterial(G4int idx) const override =0;
0094
0095
0096
0097
0098 void ComputeTransformation(const G4int no,
0099 G4VPhysicalVolume* currentPV) const override=0;
0100
0101
0102
0103
0104 G4VSolid* ComputeSolid(const G4int no, G4VPhysicalVolume* thisVol) override;
0105
0106
0107
0108 void ComputeDimensions(G4Box &,
0109 const G4int,
0110 const G4VPhysicalVolume *) const override {}
0111
0112 void ComputeDimensions(G4Tubs &,
0113 const G4int,
0114 const G4VPhysicalVolume *) const override {}
0115
0116 void ComputeDimensions(G4Trd &,
0117 const G4int,
0118 const G4VPhysicalVolume *) const override {}
0119
0120 void ComputeDimensions(G4Trap &,
0121 const G4int,
0122 const G4VPhysicalVolume *) const override {}
0123
0124 void ComputeDimensions(G4Cons &,
0125 const G4int,
0126 const G4VPhysicalVolume *) const override {}
0127
0128 void ComputeDimensions(G4Sphere &,
0129 const G4int,
0130 const G4VPhysicalVolume *) const override {}
0131
0132 void ComputeDimensions(G4Orb &,
0133 const G4int,
0134 const G4VPhysicalVolume *) const override {}
0135
0136 void ComputeDimensions(G4Ellipsoid &,
0137 const G4int,
0138 const G4VPhysicalVolume *) const override {}
0139
0140 void ComputeDimensions(G4Torus &,
0141 const G4int,
0142 const G4VPhysicalVolume *) const override {}
0143
0144 void ComputeDimensions(G4Para &,
0145 const G4int,
0146 const G4VPhysicalVolume *) const override {}
0147
0148 void ComputeDimensions(G4Polycone &,
0149 const G4int,
0150 const G4VPhysicalVolume *) const override {}
0151
0152 void ComputeDimensions(G4Polyhedra &,
0153 const G4int,
0154 const G4VPhysicalVolume *) const override {}
0155
0156 void ComputeDimensions(G4Hype &,
0157 const G4int,
0158 const G4VPhysicalVolume *) const override {}
0159
0160 G4Material* ComputeMaterial(const G4int repNo,
0161 G4VPhysicalVolume* currentVol,
0162 const G4VTouchable* parentTouch = nullptr) override;
0163
0164
0165
0166 G4bool IsNested() const override;
0167 G4VVolumeMaterialScanner* GetMaterialScanner() override;
0168
0169
0170 };
0171
0172 #endif