23 worldRadius =
pow(reqNodes,.5)*sizeBase;
25 worldRadius =
pow(reqNodes,.3)*sizeBase;
29 (
"WORLD", medEmptySpace, worldRadius, worldRadius, worldRadius);
42 for (i = 0; i < volumeCount; i++) {
44 sprintf(name,
"Volume_%d", i);
48 if (reqSpheres && reqTubes) {
67 if (color ==
kBlack) color += 1;
72 volumes[i] = geom->
MakeSphere(name, medSolid, 0., rMax);
73 printf(
"Volume %d : Color %d, Sphere, Radius %f\n", i, color, rMax);
77 volumes[i] = geom->
MakeTube(name, medSolid, rMin, rMax, dz);
78 printf(
"Volume %d : Color %d, Tube, Inner Radius %f, " 79 "Outer Radius %f, Length %f\n",
80 i, color, rMin, rMax, dz);
84 volumes[i] = geom->
MakeTubs(name, medSolid, rMin, rMax, dz,
86 printf(
"Volume %d : Color %d, Tube Seg, Inner Radius %f, " 87 "Outer Radius %f, Length %f, Phi1 %f, Phi2 %f\n",
88 i, color, rMin, rMax, dz, phi1, phi2);
98 volumes[i] = geom->
MakeCtub(name, medSolid, rMin, rMax, dz,
99 phi1, phi2, n1[0], n1[1], n1[2],
100 n2[0], n2[1], n2[2]);
101 printf(
"Volume %d : Color %d, Cut Tube, Inner Radius %f, " 102 "Outer Radius %f, Length %f, Phi1 %f, Phi2 %f, " 103 "n1 (%f,%f,%f), n2 (%f,%f,%f)\n",
104 i, color, rMin, rMax, dz, phi1, phi2,
105 n1[0], n1[1], n1[2], n2[0], n2[1], n2[2]);
116 printf(
"\nCreated %d volumes\n\n", volumeCount);
120 for (i = 0; i < reqNodes; i++) {
130 trans =
new TGeoTranslation(x*worldRadius, y*worldRadius, z*worldRadius);
135 rot =
new TGeoRotation(
"rot", x*360.0, y*360.0, z*360.0);
137 UInt_t perSide =
pow(reqNodes,1.0/3.0)+0.5;
140 zi = i / (perSide*perSide);
141 yi = (i / perSide) % perSide;
virtual void Rannor(Float_t &a, Float_t &b)
Return 2 numbers distributed following a gaussian with mean=0 and sigma=1.
The manager class for any TGeo geometry.
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
virtual void Draw(Option_t *option="")
draw top volume according to option
Class describing translations.
void SetTopVolume(TGeoVolume *vol)
Set the top volume and corresponding node as starting point of the geometry.
Base class describing materials.
TGeoVolume * MakeSphere(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t themin=0, Double_t themax=180, Double_t phimin=0, Double_t phimax=360)
Make in one step a volume pointing to a sphere shape with given medium.
TGeoVolume * MakeBox(const char *name, TGeoMedium *medium, Double_t dx, Double_t dy, Double_t dz)
Make in one step a volume pointing to a box shape with given medium.
virtual void SetSeed(ULong_t seed=0)
Set the random generator seed.
double pow(double, double)
virtual UInt_t Integer(UInt_t imax)
Returns a random integer on [ 0, imax-1 ].
virtual void AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=0, Option_t *option="")
Add a TGeoNode to the list of nodes.
virtual Double_t Rndm()
Machine independent random number generator.
Class describing rotation + translation.
void CloseGeometry(Option_t *option="d")
Closing geometry implies checking the geometry validity, fixing shapes with negative parameters (run-...
R__EXTERN TRandom * gRandom
Class describing rotations.
TGeoVolume * MakeTubs(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t dz, Double_t phi1, Double_t phi2)
Make in one step a volume pointing to a tube segment shape with given medium.
static RooMathCoreReg dummy
Media are used to store properties related to tracking and which are useful only when using geometry ...
virtual void SetLineColor(Color_t lcolor)
Set the line color.
TGeoVolume * MakeTube(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t dz)
Make in one step a volume pointing to a tube shape with given medium.
you should not use this method at all Int_t Int_t z
void SetNsegments(Int_t nseg)
Set number of segments for approximating circles in drawing.
TGeoVolume * MakeCtub(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t dz, Double_t phi1, Double_t phi2, Double_t lx, Double_t ly, Double_t lz, Double_t tx, Double_t ty, Double_t tz)
Make in one step a volume pointing to a tube segment shape with given medium.