56 {
58
59
60
61
62
63
64 double hon_thick = md->honeycombthick;
65 double gasThickness = 2.0 * md->anocathodist;
67 double g10thi = (2. * md->g10thick + md->honeycombthick);
68
69
70
71
72
73
74
75
76
77
82 }
83
84 const GeoMaterial *mhon = matManager.
getMaterial(
"muo::Honeycomb");
85 const GeoLogVol *lml = new GeoLogVol("CscMultilayer", sml, mhon);
86 GeoPhysVol *pml = new GeoPhysVol(lml);
87
88
96 }
97
98 const GeoLogVol *lhon = new GeoLogVol("Honeycomb", shon, mhon);
99 GeoPhysVol *phon = new GeoPhysVol(lhon);
100
101 const GeoMaterial *mg10 = matManager.
getMaterial(
"std::G10");
102 const GeoLogVol *lg10hon = new GeoLogVol("G10", sg10hon, mg10);
103 GeoPhysVol *pg10hon = new GeoPhysVol(lg10hon);
104
105 pg10hon->add(phon);
106
107
108 const GeoShape *sgas = nullptr;
110 double gShortWidth =
width - 2 * md->fullwirefixbarwidth * (1 -
sin(beta)) /
cos(beta);
111 double gLongWidth =
longWidth - 2 * md->fullwirefixbarwidth * (1 +
sin(beta)) /
cos(beta);
113 double gLength =
maxwLength - 2 * md->fullwirefixbarwidth;
114 sgas = new GeoTrd(gasThickness / 2., gasThickness / 2., gShortWidth / 2., gLongWidth / 2., gLength / 2.);
115 } else {
117 double gmaxwLength =
maxwLength - md->fullwirefixbarwidth;
118 double gLength =
length - 2. * md->fullwirefixbarwidth;
119 double gupWidth =
upWidth - 2 * md->fullwirefixbarwidth * (1 -
cos(alpha)) /
sin(alpha);
120
121 sgas = new GeoTrd(gasThickness / 2., gasThickness / 2., gShortWidth / 2., gLongWidth / 2., gmaxwLength / 2.);
122 const GeoShape *sgast = new GeoTrd(gasThickness / 2., gasThickness / 2., gLongWidth / 2., gupWidth / 2., (gLength - gmaxwLength) / 2.);
123 sgas = &((sgas->add((*sgast) << GeoTrf::TranslateZ3D(gLength / 2.))) << GeoTrf::TranslateZ3D((gmaxwLength - gLength) / 2.));
124 }
125 const GeoMaterial *mgas = matManager.
getMaterial(
"muo::CscArCO2");
126 const GeoLogVol *lgas = nullptr;
127
128
129
131 GeoNameTag *
np =
new GeoNameTag(
"panel");
132 GeoTransform *xp = new GeoTransform(GeoTrf::TranslateX3D(newpos - g10thi / 2.));
133 pml->add(new GeoIdentifierTag(i));
134 pml->add(np);
135 pml->add(xp);
136 pml->add(pg10hon);
137 newpos -= g10thi;
138
140 lgas = new GeoLogVol("CscArCO2", sgas, mgas);
141 GeoPhysVol *pgas = new GeoPhysVol(lgas);
142
143
144 GeoNameTag *
ng =
new GeoNameTag(
"CscArCO2");
145 GeoTransform *xg = new GeoTransform(GeoTrf::TranslateX3D(newpos - gasThickness / 2.));
146 pml->add(new GeoIdentifierTag(i));
147 pml->add(ng);
148 pml->add(xg);
149 pml->add(pgas);
150 newpos -= gasThickness;
151 }
152 }
153
154 return pml;
155 }
virtual const GeoMaterial * getMaterial(const std::string &name)=0