13 #ifndef ROOT_TVirtualMCGeometry
14 #define ROOT_TVirtualMCGeometry
28 class TVirtualMCGeometry :
public TNamed {
32 TVirtualMCGeometry(
const char *name,
const char *title);
38 virtual ~TVirtualMCGeometry();
59 virtual void Material(Int_t& kmat,
const char* name, Double_t a,
60 Double_t z, Double_t dens, Double_t radl, Double_t absl,
61 Float_t* buf, Int_t nwbuf) = 0;
64 virtual void Material(Int_t& kmat,
const char* name, Double_t a,
65 Double_t z, Double_t dens, Double_t radl, Double_t absl,
66 Double_t* buf, Int_t nwbuf) = 0;
79 virtual void Mixture(Int_t& kmat,
const char *name, Float_t *a,
80 Float_t *z, Double_t dens, Int_t nlmat, Float_t *wmat) = 0;
83 virtual void Mixture(Int_t& kmat,
const char *name, Double_t *a,
84 Double_t *z, Double_t dens, Int_t nlmat, Double_t *wmat) = 0;
105 virtual void Medium(Int_t& kmed,
const char *name, Int_t nmat,
106 Int_t isvol, Int_t ifield, Double_t fieldm, Double_t tmaxfd,
107 Double_t stemax, Double_t deemax, Double_t epsil,
108 Double_t stmin, Float_t* ubuf, Int_t nbuf) = 0;
111 virtual void Medium(Int_t& kmed,
const char *name, Int_t nmat,
112 Int_t isvol, Int_t ifield, Double_t fieldm, Double_t tmaxfd,
113 Double_t stemax, Double_t deemax, Double_t epsil,
114 Double_t stmin, Double_t* ubuf, Int_t nbuf) = 0;
124 virtual void Matrix(Int_t& krot, Double_t thetaX, Double_t phiX,
125 Double_t thetaY, Double_t phiY, Double_t thetaZ,
139 virtual Int_t Gsvolu(
const char *name,
const char *shape, Int_t nmed,
140 Float_t *upar, Int_t np) = 0;
143 virtual Int_t Gsvolu(
const char *name,
const char *shape, Int_t nmed,
144 Double_t *upar, Int_t np) = 0;
153 virtual void Gsdvn(
const char *name,
const char *mother, Int_t ndiv,
160 virtual void Gsdvn2(
const char *name,
const char *mother, Int_t ndiv,
161 Int_t iaxis, Double_t c0i, Int_t numed) = 0;
171 virtual void Gsdvt(
const char *name,
const char *mother, Double_t step,
172 Int_t iaxis, Int_t numed, Int_t ndvmx) = 0;
182 virtual void Gsdvt2(
const char *name,
const char *mother, Double_t step,
183 Int_t iaxis, Double_t c0, Int_t numed, Int_t ndvmx) = 0;
188 virtual void Gsord(
const char *name, Int_t iax) = 0;
200 virtual void Gspos(
const char *name, Int_t nr,
const char *mother,
201 Double_t x, Double_t y, Double_t z, Int_t irot,
202 const char *konly=
"ONLY") = 0;
206 virtual void Gsposp(
const char *name, Int_t nr,
const char *mother,
207 Double_t x, Double_t y, Double_t z, Int_t irot,
208 const char *konly, Float_t *upar, Int_t np) = 0;
211 virtual void Gsposp(
const char *name, Int_t nr,
const char *mother,
212 Double_t x, Double_t y, Double_t z, Int_t irot,
213 const char *konly, Double_t *upar, Int_t np) = 0;
219 virtual void Gsbool(
const char* onlyVolName,
const char* manyVolName) = 0;
228 virtual Bool_t GetTransformation(
const TString& volumePath,
229 TGeoHMatrix& matrix) = 0;
233 virtual Bool_t GetShape(
const TString& volumePath,
234 TString& shapeType, TArrayD& par) = 0;
238 virtual Bool_t GetMaterial(
const TString& volumeName,
239 TString& name, Int_t& imat,
240 Double_t& a, Double_t& z, Double_t& density,
241 Double_t& radl, Double_t& inter, TArrayD& par) = 0;
245 virtual Bool_t GetMedium(
const TString& volumeName,
246 TString& name, Int_t& imed,
247 Int_t& nmat, Int_t& isvol, Int_t& ifield,
248 Double_t& fieldm, Double_t& tmaxfd, Double_t& stemax,
249 Double_t& deemax, Double_t& epsil, Double_t& stmin,
269 virtual Int_t VolId(
const char* volName)
const = 0;
272 virtual const char* VolName(Int_t
id)
const = 0;
275 virtual Int_t MediumId(
const char* mediumName)
const = 0;
278 virtual Int_t NofVolumes()
const = 0;
281 virtual Int_t NofVolDaughters(
const char* volName)
const = 0;
284 virtual const char* VolDaughterName(
const char* volName, Int_t i)
const = 0;
287 virtual Int_t VolDaughterCopyNo(
const char* volName, Int_t i)
const = 0;
290 virtual Int_t VolId2Mate(Int_t
id)
const = 0;
293 TVirtualMCGeometry(
const TVirtualMCGeometry& );
294 TVirtualMCGeometry & operator=(
const TVirtualMCGeometry& );
296 ClassDef(TVirtualMCGeometry,1)
299 #endif //ROOT_TVirtualMCGeometry