File indexing completed on 2025-01-18 09:58:50
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 class G4VParameterisationTrd : public G4VDivisionParameterisation
0061 {
0062 public:
0063
0064 G4VParameterisationTrd( EAxis axis, G4int nCopies,
0065 G4double offset, G4double step,
0066 G4VSolid* msolid, DivisionType divType );
0067
0068 ~G4VParameterisationTrd() override;
0069
0070 protected:
0071
0072 G4bool bDivInTrap = false;
0073 };
0074
0075 class G4ParameterisationTrdX : public G4VParameterisationTrd
0076 {
0077 public:
0078
0079 G4ParameterisationTrdX( EAxis axis, G4int nCopies,
0080 G4double width, G4double offset,
0081 G4VSolid* motherSolid, DivisionType divType );
0082 ~G4ParameterisationTrdX() override;
0083
0084 G4double GetMaxParameter() const override;
0085
0086 void ComputeTransformation(const G4int copyNo,
0087 G4VPhysicalVolume* physVol) const override;
0088
0089 void ComputeDimensions(G4Trd& trd, const G4int copyNo,
0090 const G4VPhysicalVolume* pv) const override;
0091
0092 void ComputeDimensions(G4Trap& trd, const G4int copyNo,
0093 const G4VPhysicalVolume* pv) const override;
0094
0095 private:
0096
0097 void ComputeDimensions (G4Cons&,const G4int,
0098 const G4VPhysicalVolume*) const override {}
0099 void ComputeDimensions (G4Box&,const G4int,
0100 const G4VPhysicalVolume*) const override {}
0101 void ComputeDimensions (G4Sphere&,const G4int,
0102 const G4VPhysicalVolume*) const override {}
0103 void ComputeDimensions (G4Orb&,const G4int,
0104 const G4VPhysicalVolume*) const override {}
0105 void ComputeDimensions (G4Ellipsoid&,const G4int,
0106 const G4VPhysicalVolume*) const override {}
0107 void ComputeDimensions (G4Torus&,const G4int,
0108 const G4VPhysicalVolume*) const override {}
0109 void ComputeDimensions (G4Para&,const G4int,
0110 const G4VPhysicalVolume*) const override {}
0111 void ComputeDimensions (G4Hype&,const G4int,
0112 const G4VPhysicalVolume*) const override {}
0113 void ComputeDimensions (G4Tubs&,const G4int,
0114 const G4VPhysicalVolume*) const override {}
0115 void ComputeDimensions (G4Polycone&,const G4int,
0116 const G4VPhysicalVolume*) const override {}
0117 void ComputeDimensions (G4Polyhedra&,const G4int,
0118 const G4VPhysicalVolume*) const override {}
0119 };
0120
0121
0122 class G4ParameterisationTrdY : public G4VParameterisationTrd
0123 {
0124 public:
0125
0126 G4ParameterisationTrdY( EAxis axis, G4int nCopies,
0127 G4double width, G4double offset,
0128 G4VSolid* motherSolid, DivisionType divType );
0129 ~G4ParameterisationTrdY() override;
0130
0131 G4double GetMaxParameter() const override;
0132
0133 void ComputeTransformation(const G4int copyNo,
0134 G4VPhysicalVolume *physVol) const override;
0135
0136 void ComputeDimensions(G4Trd& trd, const G4int copyNo,
0137 const G4VPhysicalVolume* pv) const override;
0138
0139 void ComputeDimensions (G4Trap&,const G4int,
0140 const G4VPhysicalVolume*) const override;
0141
0142 private:
0143
0144 void ComputeDimensions (G4Cons&,const G4int,
0145 const G4VPhysicalVolume*) const override {}
0146 void ComputeDimensions (G4Box&,const G4int,
0147 const G4VPhysicalVolume*) const override {}
0148 void ComputeDimensions (G4Sphere&,const G4int,
0149 const G4VPhysicalVolume*) const override {}
0150 void ComputeDimensions (G4Orb&,const G4int,
0151 const G4VPhysicalVolume*) const override {}
0152 void ComputeDimensions (G4Ellipsoid&,const G4int,
0153 const G4VPhysicalVolume*) const override {}
0154 void ComputeDimensions (G4Torus&,const G4int,
0155 const G4VPhysicalVolume*) const override {}
0156 void ComputeDimensions (G4Para&,const G4int,
0157 const G4VPhysicalVolume*) const override {}
0158 void ComputeDimensions (G4Hype&,const G4int,
0159 const G4VPhysicalVolume*) const override {}
0160 void ComputeDimensions (G4Tubs&,const G4int,
0161 const G4VPhysicalVolume*) const override {}
0162 void ComputeDimensions (G4Polycone&,const G4int,
0163 const G4VPhysicalVolume*) const override {}
0164 void ComputeDimensions (G4Polyhedra&,const G4int,
0165 const G4VPhysicalVolume*) const override {}
0166 };
0167
0168
0169 class G4ParameterisationTrdZ : public G4VParameterisationTrd
0170 {
0171 public:
0172
0173 G4ParameterisationTrdZ( EAxis axis, G4int nCopies,
0174 G4double width, G4double offset,
0175 G4VSolid* motherSolid, DivisionType divType );
0176 ~G4ParameterisationTrdZ() override;
0177
0178 G4double GetMaxParameter() const override;
0179
0180 void ComputeTransformation(const G4int copyNo,
0181 G4VPhysicalVolume* physVol) const override;
0182 void ComputeDimensions(G4Trd& trd, const G4int copyNo,
0183 const G4VPhysicalVolume* pv) const override;
0184
0185 private:
0186
0187 void ComputeDimensions (G4Cons&,const G4int,
0188 const G4VPhysicalVolume*) const override {}
0189 void ComputeDimensions (G4Box&,const G4int,
0190 const G4VPhysicalVolume*) const override {}
0191 void ComputeDimensions (G4Sphere&,const G4int,
0192 const G4VPhysicalVolume*) const override {}
0193 void ComputeDimensions (G4Orb&,const G4int,
0194 const G4VPhysicalVolume*) const override {}
0195 void ComputeDimensions (G4Ellipsoid&,const G4int,
0196 const G4VPhysicalVolume*) const override {}
0197 void ComputeDimensions (G4Torus&,const G4int,
0198 const G4VPhysicalVolume*) const override {}
0199 void ComputeDimensions (G4Para&,const G4int,
0200 const G4VPhysicalVolume*) const override {}
0201 void ComputeDimensions (G4Trap&,const G4int,
0202 const G4VPhysicalVolume*) const override {}
0203 void ComputeDimensions (G4Hype&,const G4int,
0204 const G4VPhysicalVolume*) const override {}
0205 void ComputeDimensions (G4Tubs&,const G4int,
0206 const G4VPhysicalVolume*) const override {}
0207 void ComputeDimensions (G4Polycone&,const G4int,
0208 const G4VPhysicalVolume*) const override {}
0209 void ComputeDimensions (G4Polyhedra&,const G4int,
0210 const G4VPhysicalVolume*) const override {}
0211 };
0212
0213 #endif