EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
maps-lib.C
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file maps-lib.C
1 
2 //
3 // Crappy, but perhaps the easiest;
4 //
5 
6 void DefinitionParser(void *ptr)
7 {
8  MapsGeoParData *maps = (MapsGeoParData*)ptr;
9 
10  // Simpliest case wins;
11 #ifdef _BEAM_LINE_UNIFORM_GEOMETRY_
13 #endif
14 #ifdef _NO_STRUCTURE_GEOMETRY_
16 #endif
17 
18 #ifdef _USE_TRIANGULAR_ASSEMBLIES_
19  maps->UseTriangularAssemblies(true);
20 #endif
21 
22 #ifdef _TEST_VERSION_
23  maps->SetTestGeometryFlag();
24 #endif
25 
26  // Let MapsGeoParData base class instance know, which elements are wanted;
27  // this set of #define and respective call looks strange, but visually it
28  // is more convenient to check #define statements at the beginning of the
29  // script rather than to check several lines with functional calls in the text;
30 #ifdef _WITH_MOUNTING_RINGS_
31  maps->WithMountingRings(true);
32 #endif
33 #ifdef _WITH_ENFORCEMENT_BRACKETS_
34  maps->WithEnforcementBrackets(true);
35 #endif
36 #ifdef _WITH_EXTERNAL_PIPES_
37  maps->WithExternalPipes(true);
38 #endif
39 } // DefinitionParser()
40 
41 
42 void SetMapsColors(void *ptr)
43 {
44  EicNamePatternHub<Color_t> *ctable = ((EicGeoParData*)ptr)->GetColorTable();
45 
46  // Specify color preferences; NB: order of calls matters!;
47  ctable->AddPatternMatch("WaterPipe", kYellow);
48  ctable->AddPatternMatch("Water", kBlue);
49  ctable->AddPatternMatch("StaveBracket", kOrange);
50  ctable->AddPatternMatch("Beam", kBlack);
51  ctable->AddPatternMatch("ColdPlate", kYellow);
52  ctable->AddPatternMatch("MimosaCore", kYellow);
53  ctable->AddPatternMatch("CellFlexLayer", kGreen+2);
54  ctable->AddPatternMatch("AluStrips", kGray);
55  ctable->AddPatternMatch("MountingRing", kMagenta+1);
56 } // SetMapsColors()
57 
58 
60 {
61  // First want to cook the basic building block - Mimosa chip assembly; the
62  // rest is composed out of these blocks in a LEGO fashion;
64 
65  // !!!!!!
66  //
67  // NB: these parameters were carefully tuned to match ALICE ITS upgrade design;
68  // do NOT touch unless you understand what you are doing;
69  //
70  // !!!!!!
71 
72  // Air container volume parameters sufficient to pack all the stuff;
73  ibcell->mAssemblyBaseWidth = 17.500;
74  ibcell->mAssemblySideSlope = 30.000;
75  ibcell->mChipToChipGap = 0.100;
76 
77  // Space structure;
78  ibcell->mApexEnforcementBeamDiameter = 0.400;
79  ibcell->mEnforcementStripWidth = 0.500;
80  ibcell->mEnforcementStripThickness = 0.200;
81  ibcell->mBaseEnforcementBeamWidth = 1.200;
82  ibcell->mSideWallThickness = 0.050;
83 
84  // Basic Mimosa 34 chip parameters; pixel size does not matter here (will play
85  // a role during digitization only);
86  ibcell->mChipLength = 30.000;
87  ibcell->mChipWidth = 15.000;
88  // Well, ALICE rad.length scan plot indicates, that it is equal to the chip width;
89  // NB: do NOT try to set this value to be larger than mChipWidth (unless modify
90  // assembly and stave width calculation):
91  ibcell->mAssemblyDeadMaterialWidth = 15.000;
92  ibcell->mChipThickness = 0.050;
93  ibcell->mChipActiveZoneThickness = 0.018;
94  ibcell->mChipDeadAreaWidth = 2.000;
95 
96  // Layers at the base of the assembly; kapton and effective alu thinckness;
97  ibcell->mFlexCableKaptonThickness = 0.100;
98  // Based on the ALICE rad.length scan one can conclude, that 50um is too much;
99  // I guess these strips occupy only a fraction of the assembly width;
100  ibcell->mFlexCableAluThickness = 0.020;
101  // Assume just 'Carbon fiber + paper' on p.55 of ALICE ITS TDR) -> 30+70um;
102  ibcell->mColdPlateThickness = 0.100;
103 
104  // Water pipes; assume 2 parallel pipes; 25um thick walls;
105  ibcell->mWaterPipeInnerDiameter = 1.024;
106  ibcell->mWaterPipeWallThickness = 0.025;
107 
108  return ibcell;
109 } // ConfigureAliceCell()