11 #include "GeoModelKernel/GeoDefinitions.h"
12 #include "GeoModelKernel/GeoFullPhysVol.h"
13 #include "GeoModelKernel/GeoIdentifierTag.h"
14 #include "GeoModelKernel/GeoLogVol.h"
15 #include "GeoModelKernel/GeoNameTag.h"
16 #include "GeoModelKernel/GeoPhysVol.h"
17 #include "GeoModelKernel/GeoSerialIdentifier.h"
18 #include "GeoModelKernel/GeoShapeShift.h"
19 #include "GeoModelKernel/GeoShapeSubtraction.h"
20 #include "GeoModelKernel/GeoTransform.h"
21 #include "GeoModelKernel/GeoTrd.h"
28 #include <GaudiKernel/IMessageSvc.h>
29 #include <GaudiKernel/MsgStream.h>
30 #include <GeoModelKernel/GeoShape.h>
49 std::vector<Cutout *> vcutdef;
51 return build(matManager, minimalgeo, cutoutson, vcutdef);
56 const std::vector<Cutout *>&)
65 double gasTck =
t->gasThickness;
66 double pcbTck =
t->pcbThickness;
67 double roTck =
t->roThickness;
72 minimalgeo =
t->geoLevel;
81 const GeoMaterial *mtrd = matManager.
getMaterial(
"std::FR4") !=
nullptr ?
83 GeoLogVol *ltrd =
new GeoLogVol(
logVolName, strd, mtrd);
84 GeoFullPhysVol *ptrd =
new GeoFullPhysVol(ltrd);
90 ptrd->add(
new GeoSerialIdentifier(0));
95 for (
int i = 0;
i <
t->nlayers;
i++) {
98 double longWidthActive;
103 ptrd->add(
new GeoIdentifierTag(igl));
110 newpos += gasTck / 2.;
117 double newXPos = newpos;
119 const GeoShape *sGasVolume =
new GeoTrd(gasTck / 2, gasTck / 2, widthActive / 2, longWidthActive / 2, lengthActive / 2);
121 GeoLogVol *ltrdtmp =
new GeoLogVol(
"MM_Sensitive", sGasVolume, matManager.
getMaterial(
"muo::ArCO2"));
122 GeoPhysVol *ptrdtmp =
new GeoPhysVol(ltrdtmp);
123 GeoNameTag *ntrdtmp =
new GeoNameTag(
name +
"muo::ArCO2");
124 GeoTransform *ttrdtmp =
new GeoTransform(GeoTrf::TranslateX3D(newXPos));
135 const GeoShape *trd1 =
new GeoTrd(gasTck / 2, gasTck / 2,
width / 2,
longWidth / 2,
length / 2);
136 const GeoShape *trd2 =
new GeoTrd(gasTck, gasTck,
W -
f3, lW -
f3,
length / 2 - (
f1 +
f2) / 2.);
137 GeoTrf::Translate3D
c(0, 0, (
f2 -
f1) / 2.);
138 trd1 = &(trd1->subtract((*trd2) <<
c));
139 GeoLogVol *ltrdframe =
new GeoLogVol(
"MM_Frame", trd1, matManager.
getMaterial(
"std::Aluminium"));
140 GeoPhysVol *ptrdframe =
new GeoPhysVol(ltrdframe);
142 ptrdtmp->add(ptrdframe);
151 log << MSG::INFO <<
" Micromegas " <<
name <<
" :" <<
endmsg;