EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vst.C
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file vst.C
1 
2 // Meaningless number for now; fine;
3 #define _VERSION_ 4
4 #define _SUBVERSION_ 0
5 
6 // Do not want to always overwrite "official" files; place "test" tag into the file name;
7 //#define _TEST_VERSION_
8 
9 // All construction elements are smeared (so chip assembly is uniform in both
10 // beam line and asimuthal direction);
11 #define _NO_STRUCTURE_GEOMETRY_
12 // No tricky elements like inclined roof beams; still water pipes, etc are
13 // created (so chip assembly is uniform in beam line direction only);
14 //#define _BEAM_LINE_UNIFORM_GEOMETRY_
15 
16 // In case of VST no need to fall back to tricky TGeoCompositeShape cell assemblies;
17 #define _USE_TRIANGULAR_ASSEMBLIES_
18 
19 // Comment out if no mounting rings wanted;
20 //#define _WITH_MOUNTING_RINGS_
21 // Comment out if no stave enforcement brackets wanted;
22 //#define _WITH_ENFORCEMENT_BRACKETS_
23 // Comment out if no external water pipe pieces wanted;
24 //#define _WITH_EXTERNAL_PIPES_
25 
26 #include <./maps-lib.C>
27 
28 vst()
29 {
30  // Load basic libraries;
31  gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
32 
33  //
34  // Prefer to think in [mm] and convert to [cm] when calling ROOT shape
35  // definition routines only;
36  //
37 
39 
40  // Parse #define statements and make certain configuration calls accordingly;
41  // NB: cast to the base MAPS geo class since void* interface used; FIXME!;
43 
44  //
45  // For now assume ALICE Inner Barrel design only (but with more than 9 chips);
46  // no problem to introduce similar design with a bit different parameter set later;
47  // construction a-la ALICE Outer Barrel looks like an overkill to the moment;
48  //
49 
50  // No offset per default;
51  //vst->SetTopVolumeTransformation(new TGeoTranslation(0.0, 0.0, 0.0));
52 
53  //
54  // NB: all these numbers are sort of arbitrary; allow to get better visual
55  // representation, but do not reflect any reality of the final design;
56  //
57 
58  // Mounting ring construction; arbitrary numbers, same for all layers;
59  if (vst->WithMountingRings()) {
61  vst->mMountingRingRadialThickness = 5.00;
62  vst->mMountingRingRadialOffset = 3.00;
63  } //if
64  // Simplify the design -> just a triangular piece with a reasonable volume;
65  if (vst->WithEnforcementBrackets())
66  vst->mEnforcementBracketThickness = 1.00;
67  // This is something for display purposes mostly;
68  if (vst->WithExternalPipes())
69  vst->mWaterPipeExtensionLength = 4.00;
70 
72 
73  // If (much) longer staves needed, create an enforced configuration;
74  //MapsMimosaAssembly *obcell = new MapsMimosaAssembly(ibcell);
75  //obcell->mEnforcementBeamDiameter = 1.00; ... and so on ...
76 
77  //
78  // Now when basic building blocks are created, compose barrel layers;
79  //
80  // a dirty part, but perhaps the easiest (and most readable) to do; parameters are:
81  // - cell assembly type;
82  // - number of staves in this layer;
83  // - number of chips in a stave;
84  // - chip center installation radius;
85  // - additional stave slope around beam line direction; [degree];
86  // - layer rotation around beam axis "as a whole"; [degree];
87  //
88  vst->AddBarrelLayer(ibcell, 18, 9, 36.4, 12.0, 0.0);
89  vst->AddBarrelLayer(ibcell, 30, 9, 59.8, 12.0, 0.0);
90 
91  vst->AttachSourceFile("vst.C");
92  vst->AttachSourceFile("maps-lib.C");
93 
94  // Specify color preferences; NB: void* interface, sorry;
96 
97  //
98  // Fine, at this point structure is completely defined -> code it in ROOT;
99  //
100 
101  vst->ConstructGeometry(true, true, true);
102 
103  // Yes, always exit;
104  exit(0);
105 }
106