00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 #ifndef G4ParameterisationPolycone_H
00044 #define G4ParameterisationPolycone_H 1
00045
00046 #include "G4VDivisionParameterisation.hh"
00047 #include "G4Polycone.hh"
00048
00049 class G4VPhysicalVolume;
00050
00051
00052
00053 class G4Trd;
00054 class G4Trap;
00055 class G4Cons;
00056 class G4Orb;
00057 class G4Sphere;
00058 class G4Torus;
00059 class G4Para;
00060 class G4Hype;
00061 class G4Tubs;
00062 class G4Polyhedra;
00063
00064 class G4VParameterisationPolycone : public G4VDivisionParameterisation
00065 {
00066 public:
00067
00068 G4VParameterisationPolycone( EAxis axis, G4int nCopies,
00069 G4double offset, G4double step,
00070 G4VSolid* msolid, DivisionType divType );
00071
00072 virtual ~G4VParameterisationPolycone();
00073 };
00074
00075
00076
00077
00078
00079 class G4ParameterisationPolyconeRho : public G4VParameterisationPolycone
00080 {
00081 public:
00082
00083 G4ParameterisationPolyconeRho( EAxis axis, G4int nCopies,
00084 G4double offset, G4double step,
00085 G4VSolid* motherSolid,
00086 DivisionType divType );
00087 ~G4ParameterisationPolyconeRho();
00088
00089 void CheckParametersValidity();
00090
00091 G4double GetMaxParameter() const;
00092
00093 void ComputeTransformation( const G4int copyNo,
00094 G4VPhysicalVolume* physVol ) const;
00095 void ComputeDimensions( G4Polycone& pcone, const G4int copyNo,
00096 const G4VPhysicalVolume* physVol ) const;
00097
00098 private:
00099
00100 void ComputeDimensions (G4Trd&,const G4int,
00101 const G4VPhysicalVolume*) const {}
00102 void ComputeDimensions (G4Trap&,const G4int,
00103 const G4VPhysicalVolume*) const {}
00104 void ComputeDimensions (G4Box&,const G4int,
00105 const G4VPhysicalVolume*) const {}
00106 void ComputeDimensions (G4Orb&,const G4int,
00107 const G4VPhysicalVolume*) const {}
00108 void ComputeDimensions (G4Sphere&,const G4int,
00109 const G4VPhysicalVolume*) const {}
00110 void ComputeDimensions (G4Torus&,const G4int,
00111 const G4VPhysicalVolume*) const {}
00112 void ComputeDimensions (G4Para&,const G4int,
00113 const G4VPhysicalVolume*) const {}
00114 void ComputeDimensions (G4Hype&,const G4int,
00115 const G4VPhysicalVolume*) const {}
00116 void ComputeDimensions (G4Tubs&,const G4int,
00117 const G4VPhysicalVolume*) const {}
00118 void ComputeDimensions (G4Cons&,const G4int,
00119 const G4VPhysicalVolume*) const {}
00120 void ComputeDimensions (G4Polyhedra&,const G4int,
00121 const G4VPhysicalVolume*) const {}
00122 };
00123
00124
00125
00126
00127
00128 class G4ParameterisationPolyconePhi : public G4VParameterisationPolycone
00129 {
00130 public:
00131
00132 G4ParameterisationPolyconePhi( EAxis axis, G4int nCopies,
00133 G4double offset, G4double step,
00134 G4VSolid* motherSolid,
00135 DivisionType divType );
00136 ~G4ParameterisationPolyconePhi();
00137
00138 G4double GetMaxParameter() const;
00139
00140 void ComputeTransformation( const G4int copyNo,
00141 G4VPhysicalVolume* physVol ) const;
00142 void ComputeDimensions( G4Polycone& pcone, const G4int copyNo,
00143 const G4VPhysicalVolume* physVol ) const;
00144
00145 private:
00146
00147 void ComputeDimensions (G4Trd&,const G4int,
00148 const G4VPhysicalVolume*) const {}
00149 void ComputeDimensions (G4Trap&,const G4int,
00150 const G4VPhysicalVolume*) const {}
00151 void ComputeDimensions (G4Box&,const G4int,
00152 const G4VPhysicalVolume*) const {}
00153 void ComputeDimensions (G4Orb&,const G4int,
00154 const G4VPhysicalVolume*) const {}
00155 void ComputeDimensions (G4Sphere&,const G4int,
00156 const G4VPhysicalVolume*) const {}
00157 void ComputeDimensions (G4Torus&,const G4int,
00158 const G4VPhysicalVolume*) const {}
00159 void ComputeDimensions (G4Para&,const G4int,
00160 const G4VPhysicalVolume*) const {}
00161 void ComputeDimensions (G4Hype&,const G4int,
00162 const G4VPhysicalVolume*) const {}
00163 void ComputeDimensions (G4Tubs&,const G4int,
00164 const G4VPhysicalVolume*) const {}
00165 void ComputeDimensions (G4Cons&,const G4int,
00166 const G4VPhysicalVolume*) const {}
00167 void ComputeDimensions (G4Polyhedra&,const G4int,
00168 const G4VPhysicalVolume*) const {}
00169 };
00170
00171
00172
00173
00174
00175 class G4ParameterisationPolyconeZ : public G4VParameterisationPolycone
00176 {
00177 public:
00178
00179 G4ParameterisationPolyconeZ( EAxis axis, G4int nCopies,
00180 G4double offset, G4double step,
00181 G4VSolid* motherSolid,
00182 DivisionType divType );
00183 ~G4ParameterisationPolyconeZ();
00184
00185 void CheckParametersValidity();
00186
00187 G4double GetMaxParameter() const;
00188
00189 void ComputeTransformation( const G4int copyNo,
00190 G4VPhysicalVolume* physVol ) const;
00191 void ComputeDimensions( G4Polycone& pcone, const G4int copyNo,
00192 const G4VPhysicalVolume* physVol ) const;
00193
00194 private:
00195
00196 G4double GetR(G4double z, G4double z1, G4double r1,
00197 G4double z2, G4double r2) const;
00198 G4double GetRmin(G4double z, G4int nsegment) const;
00199 G4double GetRmax(G4double z, G4int nsegment) const;
00200
00201
00202
00203 void ComputeDimensions (G4Trd&,const G4int,
00204 const G4VPhysicalVolume*) const {}
00205 void ComputeDimensions (G4Trap&,const G4int,
00206 const G4VPhysicalVolume*) const {}
00207 void ComputeDimensions (G4Box&,const G4int,
00208 const G4VPhysicalVolume*) const {}
00209 void ComputeDimensions (G4Orb&,const G4int,
00210 const G4VPhysicalVolume*) const {}
00211 void ComputeDimensions (G4Sphere&,const G4int,
00212 const G4VPhysicalVolume*) const {}
00213 void ComputeDimensions (G4Torus&,const G4int,
00214 const G4VPhysicalVolume*) const {}
00215 void ComputeDimensions (G4Para&,const G4int,
00216 const G4VPhysicalVolume*) const {}
00217 void ComputeDimensions (G4Hype&,const G4int,
00218 const G4VPhysicalVolume*) const {}
00219 void ComputeDimensions (G4Tubs&,const G4int,
00220 const G4VPhysicalVolume*) const {}
00221 void ComputeDimensions (G4Cons&,const G4int,
00222 const G4VPhysicalVolume*) const {}
00223 void ComputeDimensions (G4Polyhedra&,const G4int,
00224 const G4VPhysicalVolume*) const {}
00225 private:
00226
00227 G4int fNSegment;
00228 G4PolyconeHistorical* fOrigParamMother;
00229 };
00230
00231 #endif