File indexing completed on 2026-09-20 09:11:41
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 #ifndef G4PARAMETERISATIONTRD_HH
0037 #define G4PARAMETERISATIONTRD_HH 1
0038
0039 #include <vector>
0040
0041 #include "G4VDivisionParameterisation.hh"
0042 #include "G4VSolid.hh"
0043
0044 class G4VPhysicalVolume;
0045
0046
0047
0048 class G4Cons;
0049 class G4Box;
0050 class G4Sphere;
0051 class G4Orb;
0052 class G4Ellipsoid;
0053 class G4Torus;
0054 class G4Para;
0055 class G4Hype;
0056 class G4Tubs;
0057 class G4Polycone;
0058 class G4Polyhedra;
0059
0060
0061
0062
0063
0064
0065 class G4VParameterisationTrd : public G4VDivisionParameterisation
0066 {
0067 public:
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079 G4VParameterisationTrd( EAxis axis, G4int nCopies,
0080 G4double offset, G4double step,
0081 G4VSolid* pSolid, DivisionType divType );
0082
0083
0084
0085
0086 ~G4VParameterisationTrd() override;
0087
0088 protected:
0089
0090 G4bool bDivInTrap = false;
0091 };
0092
0093
0094
0095
0096
0097
0098 class G4ParameterisationTrdX : public G4VParameterisationTrd
0099 {
0100 public:
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111 G4ParameterisationTrdX( EAxis axis, G4int nCopies,
0112 G4double width, G4double offset,
0113 G4VSolid* pSolid, DivisionType divType );
0114
0115
0116
0117
0118 ~G4ParameterisationTrdX() override;
0119
0120
0121
0122
0123
0124 G4double GetMaxParameter() const override;
0125
0126
0127
0128
0129 void ComputeTransformation(const G4int copyNo,
0130 G4VPhysicalVolume* physVol) const override;
0131 void ComputeDimensions(G4Trd& trd, const G4int copyNo,
0132 const G4VPhysicalVolume* pv) const override;
0133 void ComputeDimensions(G4Trap& trd, const G4int copyNo,
0134 const G4VPhysicalVolume* pv) const override;
0135
0136 private:
0137
0138 void ComputeDimensions (G4Cons&,const G4int,
0139 const G4VPhysicalVolume*) const override {}
0140 void ComputeDimensions (G4Box&,const G4int,
0141 const G4VPhysicalVolume*) const override {}
0142 void ComputeDimensions (G4Sphere&,const G4int,
0143 const G4VPhysicalVolume*) const override {}
0144 void ComputeDimensions (G4Orb&,const G4int,
0145 const G4VPhysicalVolume*) const override {}
0146 void ComputeDimensions (G4Ellipsoid&,const G4int,
0147 const G4VPhysicalVolume*) const override {}
0148 void ComputeDimensions (G4Torus&,const G4int,
0149 const G4VPhysicalVolume*) const override {}
0150 void ComputeDimensions (G4Para&,const G4int,
0151 const G4VPhysicalVolume*) const override {}
0152 void ComputeDimensions (G4Hype&,const G4int,
0153 const G4VPhysicalVolume*) const override {}
0154 void ComputeDimensions (G4Tubs&,const G4int,
0155 const G4VPhysicalVolume*) const override {}
0156 void ComputeDimensions (G4Polycone&,const G4int,
0157 const G4VPhysicalVolume*) const override {}
0158 void ComputeDimensions (G4Polyhedra&,const G4int,
0159 const G4VPhysicalVolume*) const override {}
0160 };
0161
0162
0163
0164
0165
0166
0167 class G4ParameterisationTrdY : public G4VParameterisationTrd
0168 {
0169 public:
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180 G4ParameterisationTrdY( EAxis axis, G4int nCopies,
0181 G4double width, G4double offset,
0182 G4VSolid* pSolid, DivisionType divType );
0183
0184
0185
0186
0187 ~G4ParameterisationTrdY() override;
0188
0189
0190
0191
0192
0193 G4double GetMaxParameter() const override;
0194
0195
0196
0197
0198 void ComputeTransformation(const G4int copyNo,
0199 G4VPhysicalVolume *physVol) const override;
0200 void ComputeDimensions(G4Trd& trd, const G4int copyNo,
0201 const G4VPhysicalVolume* pv) const override;
0202 void ComputeDimensions (G4Trap&,const G4int,
0203 const G4VPhysicalVolume*) const override;
0204
0205 private:
0206
0207 void ComputeDimensions (G4Cons&,const G4int,
0208 const G4VPhysicalVolume*) const override {}
0209 void ComputeDimensions (G4Box&,const G4int,
0210 const G4VPhysicalVolume*) const override {}
0211 void ComputeDimensions (G4Sphere&,const G4int,
0212 const G4VPhysicalVolume*) const override {}
0213 void ComputeDimensions (G4Orb&,const G4int,
0214 const G4VPhysicalVolume*) const override {}
0215 void ComputeDimensions (G4Ellipsoid&,const G4int,
0216 const G4VPhysicalVolume*) const override {}
0217 void ComputeDimensions (G4Torus&,const G4int,
0218 const G4VPhysicalVolume*) const override {}
0219 void ComputeDimensions (G4Para&,const G4int,
0220 const G4VPhysicalVolume*) const override {}
0221 void ComputeDimensions (G4Hype&,const G4int,
0222 const G4VPhysicalVolume*) const override {}
0223 void ComputeDimensions (G4Tubs&,const G4int,
0224 const G4VPhysicalVolume*) const override {}
0225 void ComputeDimensions (G4Polycone&,const G4int,
0226 const G4VPhysicalVolume*) const override {}
0227 void ComputeDimensions (G4Polyhedra&,const G4int,
0228 const G4VPhysicalVolume*) const override {}
0229 };
0230
0231
0232
0233
0234
0235
0236 class G4ParameterisationTrdZ : public G4VParameterisationTrd
0237 {
0238 public:
0239
0240
0241
0242
0243
0244
0245
0246
0247
0248
0249 G4ParameterisationTrdZ( EAxis axis, G4int nCopies,
0250 G4double width, G4double offset,
0251 G4VSolid* pSolid, DivisionType divType );
0252
0253
0254
0255
0256 ~G4ParameterisationTrdZ() override;
0257
0258
0259
0260
0261
0262 G4double GetMaxParameter() const override;
0263
0264
0265
0266
0267 void ComputeTransformation(const G4int copyNo,
0268 G4VPhysicalVolume* physVol) const override;
0269 void ComputeDimensions(G4Trd& trd, const G4int copyNo,
0270 const G4VPhysicalVolume* pv) const override;
0271
0272 private:
0273
0274 void ComputeDimensions (G4Cons&,const G4int,
0275 const G4VPhysicalVolume*) const override {}
0276 void ComputeDimensions (G4Box&,const G4int,
0277 const G4VPhysicalVolume*) const override {}
0278 void ComputeDimensions (G4Sphere&,const G4int,
0279 const G4VPhysicalVolume*) const override {}
0280 void ComputeDimensions (G4Orb&,const G4int,
0281 const G4VPhysicalVolume*) const override {}
0282 void ComputeDimensions (G4Ellipsoid&,const G4int,
0283 const G4VPhysicalVolume*) const override {}
0284 void ComputeDimensions (G4Torus&,const G4int,
0285 const G4VPhysicalVolume*) const override {}
0286 void ComputeDimensions (G4Para&,const G4int,
0287 const G4VPhysicalVolume*) const override {}
0288 void ComputeDimensions (G4Trap&,const G4int,
0289 const G4VPhysicalVolume*) const override {}
0290 void ComputeDimensions (G4Hype&,const G4int,
0291 const G4VPhysicalVolume*) const override {}
0292 void ComputeDimensions (G4Tubs&,const G4int,
0293 const G4VPhysicalVolume*) const override {}
0294 void ComputeDimensions (G4Polycone&,const G4int,
0295 const G4VPhysicalVolume*) const override {}
0296 void ComputeDimensions (G4Polyhedra&,const G4int,
0297 const G4VPhysicalVolume*) const override {}
0298 };
0299
0300 #endif