23 for(
unsigned el=0; el<
mElements.size(); el++) {
28 printf(
"\n Less than 2 sections per piece!\n");
35 printf(
"\n Duplicate IP area beam pipe element!\n");
50 printf(
"\n Neighboring piece diameter mismatch (vacuum gap)!\n");
56 for(
unsigned sc=0; sc<element->
mSections.size()-1; sc++) {
63 printf(
"\n Neighboring sections are out of order!\n");
70 printf(
"\n No IP area beam pipe element defined!\n");
108 for(
unsigned el=0; el<
mElements.size(); el++) {
114 snprintf(name, 128-1,
"%s%02d",
mDetName->
Name().Data(), el);
116 TGeoRotation *rY180 =
new TGeoRotation();
129 TGeoTube *tpipe =
new TGeoTube(name,
137 TGeoCone *cpipe =
new TGeoCone(name,
149 TGeoPcon *ppipe =
new TGeoPcon(name, 0.0, 360.0, element->
mSections.size());
152 double zLocalOffset = element->
mIpElement ? 0.0 :
155 for(
unsigned sc=0; sc<element->
mSections.size(); sc++) {
158 ppipe->DefineSection(sc,
159 0.1 * (section->
mOffset - zLocalOffset),
169 new TGeoCombiTrans(0.0, 0.0, 0.1 * zOffset,