38 const TGeoManager* mgr)
59 Double_t xchip, zchip;
68 LOG(warning) <<
"Sensor half thickness (" << ysens
69 <<
") greater than chip half thickness (" << ychip
70 <<
"), setting equal";
75 TGeoBBox* chip =
new TGeoBBox(xchip, ychip, zchip);
78 TGeoBBox* sensor =
new TGeoBBox(xchip, ylen, zchip);
82 TGeoBBox* metallay =
new TGeoBBox(xchip, ylen, zchip);
85 TGeoMedium* medSi = mgr->GetMedium(
"ALPIDE_SI$");
91 medSi = mgr->GetMedium(
"ALPIDE_SI$");
93 TGeoMedium* medAir = mgr->GetMedium(
"ALPIDE_AIR$");
94 TGeoMedium* medMetal = mgr->GetMedium(
"ALPIDE_METALSTACK$");
104 TGeoVolume* chipVol =
new TGeoVolume(chipName, chip, medChip);
105 chipVol->SetVisibility(kTRUE);
106 chipVol->SetLineColor(1);
107 chipVol->SetFillColor(chipVol->GetLineColor());
108 chipVol->SetFillStyle(4000);
110 TGeoVolume* sensVol =
new TGeoVolume(sensName, sensor, medChip);
111 sensVol->SetVisibility(kTRUE);
112 sensVol->SetLineColor(8);
113 sensVol->SetLineWidth(1);
114 sensVol->SetFillColor(sensVol->GetLineColor());
115 sensVol->SetFillStyle(4000);
117 TGeoVolume* metalVol =
new TGeoVolume(
"MetalStack", metallay, medMetal);
118 metalVol->SetVisibility(kTRUE);
119 metalVol->SetLineColor(1);
120 metalVol->SetLineWidth(1);
121 metalVol->SetFillColor(metalVol->GetLineColor());
122 metalVol->SetFillStyle(4000);
125 ypos = chip->GetDY() - metallay->GetDY();
126 chipVol->AddNode(metalVol, 1,
new TGeoTranslation(0., ypos, 0.));
128 ypos -= (metallay->GetDY() + sensor->GetDY());
129 chipVol->AddNode(sensVol, 1,
new TGeoTranslation(0., ypos, 0.));
161 Float_t aBEOL[3] = {26.982, 28.086, 15.999};
162 Float_t zBEOL[3] = {13, 14, 8};
163 Float_t wBEOL[3] = {0.170, 0.388, 0.442};
167 Float_t aAir[4] = {12.0107, 14.0067, 15.9994, 39.948};
168 Float_t zAir[4] = {6., 7., 8., 18.};
169 Float_t wAir[4] = {0.000124, 0.755267, 0.231781, 0.012827};
172 if (mgr.getMediumID(
"ALPIDE",
id) < 0) {
173 mgr.Mixture(
"ALPIDE",
id,
"METALSTACK$", aBEOL, zBEOL, dBEOL, 3, wBEOL);
174 mgr.Medium(
"ALPIDE",
id,
"METALSTACK$",
id, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
178 if (mgr.getMediumID(
"ALPIDE",
id) < 0) {
179 mgr.Mixture(
"ALPIDE",
id,
"AIR$", aAir, zAir, dAir, 4, wAir);
180 mgr.Medium(
"ALPIDE",
id,
"AIR$",
id, 0, ifield, fieldm, tmaxfdAir, stemaxAir, deemaxAir, epsilAir, stminAir);
184 if (mgr.getMediumID(
"ALPIDE",
id) < 0) {
185 mgr.Material(
"ALPIDE",
id,
"SI$", 0.28086E+02, 0.14000E+02, 0.23300E+01, 0.93600E+01, 0.99900E+03);
186 mgr.Medium(
"ALPIDE",
id,
"SI$",
id, 0, ifield, fieldm, tmaxfdSi, stemaxSi, deemaxSi, epsilSi, stminSi);
static TGeoVolume * createChip(Double_t yc, Double_t ys, char const *chipName="AlpideChip", char const *sensName="AlpideSensor", Bool_t dummy=kFALSE, const TGeoManager *mgr=gGeoManager)