+ rot2->RotateY(180.-kAlphaRot);
+ rot2->RotateZ(anglep[i]);
+ xloc = kInnerRadius*CosD(anglep[i]);
+ yloc = kInnerRadius*SinD(anglep[i]);
+ zloc = kZTrans;
+ moth->AddNode(module, 2*i+1,
+ new TGeoCombiTrans(-xloc,-yloc,-zloc, rot2));
+ }
+
+}
+
+
+//______________________________________________________________________
+void AliITSv11GeometrySPD::CreateServices(TGeoVolume *moth) const
+{
+ //
+ // New method to implement SPD services
+ //
+ // Created: 25 Jul 2012 Mario Sitta
+ // Updated: 15 Nov 2012 Mario Sitta
+ //
+ // Data provided by C.Gargiulo from CAD
+
+ // Cooling manifolds
+ const Double_t kCoolManifWidth = fgkmm * 22.0;
+ const Double_t kCoolManifLength = fgkmm * 50.0;
+ const Double_t kCoolManifThick = fgkmm * 7.0;
+ const Double_t kCoolManifFitR1out = fgkmm * 4.0;
+ const Double_t kCoolManifFitH1 = fgkmm * 2.5;
+ const Double_t kCoolManifFitR2out = fgkmm * 4.0;
+ const Double_t kCoolManifFitR2in = fgkmm * 3.2;
+ const Double_t kCoolManifFitH2 = fgkmm * 7.0;
+ const Double_t kCoolManifFitZPos = fgkmm * 2.0; // TO BE CHECKED!
+ const Double_t kCoolManifCollR1 = fgkmm * 3.0;
+ const Double_t kCoolManifCollH1 = fgkmm * 2.5;
+ const Double_t kCoolManifCollR2 = fgkmm * 1.5;
+ const Double_t kCoolManifCollH2 = fgkmm * 5.0;
+ const Double_t kCoolManifCollXPos = fgkmm * 5.0;
+ const Double_t kCoolManifCollDZ = fgkmm * 13.0;
+ const Double_t kCoolManifCollZ0 = fgkmm * 9.0;
+
+ const Double_t kCoolManifRPosCAD = fgkmm * 76.2;
+ const Double_t kCoolManifZPos = fgkcm * 33.97;// 34.0 - 0.03 toll.
+ // Manifold supports
+ const Double_t kManifSuppWidth = fgkmm * 24.0; // TO BE CHECKED!
+ const Double_t kManifSuppLen1 = fgkmm * 17.9;
+ const Double_t kManifSuppLen2 = fgkmm * 54.2;
+ const Double_t kManifSuppLen3 = fgkmm * 7.9;
+ const Double_t kManifSuppThick = fgkmm * 1.5;
+ const Double_t kSuppScrewXPos = fgkmm * 4.0;
+ const Double_t kSuppScrewZPos = fgkmm * 3.0;
+ const Double_t kRThermalShield = fgkcm * 9.9255; // MUST match with GeometrySupport
+ // Sector supports
+ const Double_t kSectSuppWidth = fgkmm * 15.0;
+ const Double_t kSectSuppLen1 = fgkmm * 16.9; // TO BE CHECKED!
+ const Double_t kSectSuppLen2 = fgkmm * 35.1; // TO BE CHECKED!
+ const Double_t kSectSuppThick = fgkmm * 1.5;
+ const Double_t kSectSuppDepth = fgkmm * 17.78; // MUST match with GeometrySupport
+ const Double_t kSectScrewZPos = fgkmm * 5.1; // TO BE CHECKED!
+
+ const Double_t kSectSuppZPos = fgkcm * 26.5;
+ // Sector clips
+ const Double_t kSectClipLength = fgkmm * 30.0;
+ const Double_t kSectClipWidth = fgkmm * 28.53;
+ const Double_t kSectClipThick1 = fgkmm * 2.0;
+ const Double_t kSectClipThick2 = fgkmm * 0.715;
+ const Double_t kSectClipInStave = fgkmm * 11.0; // Tuned
+ const Double_t kSectClipAngle = 29.0; // Degree. Tuned
+ // M3 screws
+ const Double_t kScrewM3Diam = fgkmm * 3.0;
+ const Double_t kScrewM3HeadThick = fgkmm * 2.0;
+ const Double_t kScrewM3HeadRmin = fgkmm * 1.5;
+ const Double_t kScrewM3HeadRmax = fgkmm * 2.5;
+ const Double_t kScrewM3OutManifH = fgkmm * 1.5;
+ // Central set pin (in sector support)
+ const Double_t kSetPinDiam = fgkmm * 6.0;
+ const Double_t kSetPinHeadDiam = fgkmm * 8.0;
+ const Double_t kSetPinHeadRmin = fgkmm * 1.5;
+ const Double_t kSetPinHeadThick = fgkmm * 1.5;
+ const Double_t kSetPinOutClipH = fgkmm * 1.0;
+
+ // Local variables
+ Double_t xprof[12], yprof[12];
+ Double_t radius, theta;
+ Double_t xpos, ypos, zpos;
+ Double_t tmp;
+
+
+ // The cooling manifold: an Assembly
+ TGeoVolumeAssembly *coolmanifA = new TGeoVolumeAssembly("ITSSPDCoolManifSideA");
+ TGeoVolumeAssembly *coolmanifC = new TGeoVolumeAssembly("ITSSPDCoolManifSideC");
+
+ // The various parts of the manifold
+ TGeoBBox *manifblksh = new TGeoBBox(kCoolManifWidth/2,
+ kCoolManifThick/2,
+ kCoolManifLength/2);
+
+ TGeoBBox *manifinscubesh = new TGeoBBox(kCoolManifFitR2out,
+ kCoolManifFitR2out,
+ kCoolManifFitR2out);
+
+ TGeoTube *manifinscyl1sh = new TGeoTube(0, // TO BE CHECKED!
+ kCoolManifFitR1out,
+ kCoolManifFitH1/2);
+
+ TGeoTube *manifinscyl2sh = new TGeoTube(kCoolManifFitR2in,
+ kCoolManifFitR2out,
+ kCoolManifFitH2/2);
+
+ TGeoTube *manifcollcyl1sh = new TGeoTube(0,
+ kCoolManifCollR1,
+ kCoolManifCollH1/2);
+
+ TGeoTube *manifcollcyl2sh = new TGeoTube(0,
+ kCoolManifCollR2,
+ kCoolManifCollH2/2);
+
+ // The cooling manifold supports
+ const Double_t kCoolManifRPos = kCoolManifRPosCAD +
+ (manifinscubesh->GetDY() +
+ 2*manifinscyl1sh->GetDz() +
+ manifblksh->GetDY() );
+
+ const Double_t kManifSuppDepth = kRThermalShield -
+ (kCoolManifRPos + manifblksh->GetDY());
+
+ TGeoXtru *suppmanifsh = new TGeoXtru(2);
+
+ xprof[ 0] = kManifSuppLen2/2 + kManifSuppThick;
+ yprof[ 0] = 0;
+ xprof[ 1] = xprof[0];
+ yprof[ 1] = kManifSuppDepth;
+ xprof[ 2] = kManifSuppLen2/2 + kManifSuppLen3;
+ yprof[ 2] = yprof[1];
+ xprof[ 3] = xprof[2];
+ yprof[ 3] = yprof[2] + kManifSuppThick;
+ xprof[ 4] = kManifSuppLen2/2;
+ yprof[ 4] = yprof[3];
+ xprof[ 5] = xprof[4];
+ yprof[ 5] = kManifSuppThick;
+ xprof[ 6] = -xprof[5];
+ yprof[ 6] = yprof[5];
+ xprof[ 7] = -xprof[4];
+ yprof[ 7] = yprof[4];
+ xprof[ 8] = -(kManifSuppLen2/2 + kManifSuppLen1);
+ yprof[ 8] = yprof[3];
+ xprof[ 9] = xprof[8];
+ yprof[ 9] = yprof[2];
+ xprof[10] = -xprof[1];
+ yprof[10] = yprof[1];
+ xprof[11] = -xprof[0];
+ yprof[11] = yprof[0];
+
+ suppmanifsh->DefinePolygon(12,xprof,yprof);
+ suppmanifsh->DefineSection(0,-kManifSuppWidth/2);
+ suppmanifsh->DefineSection(1, kManifSuppWidth/2);
+
+ // The screw head and body
+ TGeoTube *suppscrewbodysh = new TGeoTube(0, kScrewM3Diam/2,
+ kManifSuppThick/2);
+
+ TGeoPcon *suppscrewheadsh = new TGeoPcon(0, 360, 4);
+ suppscrewheadsh->DefineSection(0,-kScrewM3HeadThick/2,0, kScrewM3HeadRmax);
+ suppscrewheadsh->DefineSection(1, 0, 0, kScrewM3HeadRmax);
+ suppscrewheadsh->DefineSection(2, 0, kScrewM3HeadRmin, kScrewM3HeadRmax);
+ suppscrewheadsh->DefineSection(3, kScrewM3HeadThick/2,
+ kScrewM3HeadRmin, kScrewM3HeadRmax);
+
+ TGeoTube *clipscrewbodysh = new TGeoTube(0, kScrewM3Diam/2,
+ kSectClipThick1/2);
+
+ // The screw segment below the manifold and the sector clip
+ TGeoTube *screwoutmanifsh = new TGeoTube(0, kScrewM3Diam/2,
+ kScrewM3OutManifH/2);
+
+ // The sector supports
+ TGeoXtru *suppsectsh = new TGeoXtru(2);
+
+ xprof[ 0] = kSectSuppLen2/2 + kSectSuppThick;
+ yprof[ 0] = 0;
+ xprof[ 1] = xprof[0];
+ yprof[ 1] = kSectSuppDepth;
+ xprof[ 2] = kSectSuppLen2/2 + kSectSuppLen1;
+ yprof[ 2] = yprof[1];
+ xprof[ 3] = xprof[2];
+ yprof[ 3] = yprof[2] + kSectSuppThick;
+ xprof[ 4] = kSectSuppLen2/2;
+ yprof[ 4] = yprof[3];
+ xprof[ 5] = xprof[4];
+ yprof[ 5] = kSectSuppThick;
+ xprof[ 6] = -xprof[5];
+ yprof[ 6] = yprof[5];
+ xprof[ 7] = -xprof[4];
+ yprof[ 7] = yprof[4];
+ xprof[ 8] = -xprof[3];
+ yprof[ 8] = yprof[3];
+ xprof[ 9] = -xprof[2];
+ yprof[ 9] = yprof[2];
+ xprof[10] = -xprof[1];
+ yprof[10] = yprof[1];
+ xprof[11] = -xprof[0];
+ yprof[11] = yprof[0];
+
+ suppsectsh->DefinePolygon(12,xprof,yprof);
+ suppsectsh->DefineSection(0,-kSectSuppWidth/2);
+ suppsectsh->DefineSection(1, kSectSuppWidth/2);
+
+ // The sector clips
+ TGeoXtru *sectclipsh = new TGeoXtru(2);
+
+ xprof[ 0] = kSectClipWidth/2;
+ yprof[ 0] = 0;
+ xprof[ 1] = -kSectClipWidth/2;
+ yprof[ 1] = yprof[0];
+ xprof[ 2] = xprof[1];
+ yprof[ 2] = -kSectClipThick1;
+ xprof[ 3] = kSectClipWidth/2 - kSectClipThick2;
+ yprof[ 3] = yprof[2];
+ xprof[ 4] = xprof[3] + kSectClipInStave*SinD(kSectClipAngle);
+ yprof[ 4] = -kSectClipInStave*CosD(kSectClipAngle);
+ xprof[ 5] = xprof[4] + kSectClipThick2*CosD(kSectClipAngle);
+ yprof[ 5] = yprof[4] + kSectClipThick2*SinD(kSectClipAngle);
+
+ sectclipsh->DefinePolygon(6,xprof,yprof);
+ sectclipsh->DefineSection(0,-kSectClipLength/2);
+ sectclipsh->DefineSection(1, kSectClipLength/2);
+
+ // The central set pin head and body
+ TGeoTube *setpinbodysh = new TGeoTube(0, kSetPinDiam/2,
+ kSectSuppThick/2);
+
+ TGeoTube *setpinheadsh = new TGeoTube(kSetPinHeadRmin, kSetPinHeadDiam/2,
+ kSetPinHeadThick/2);
+
+ TGeoTube *pinclipbodysh = new TGeoTube(0, kSetPinDiam/2,
+ kSectClipThick1/2);
+
+ // The set pin segment below the sector clip
+ TGeoTube *setpinoutclipsh = new TGeoTube(0, kSetPinDiam/2,
+ kSetPinOutClipH/2);
+
+
+ // We have the shapes: now create the real volumes
+ TGeoMedium *medInox = GetMedium("INOX$");
+ TGeoMedium *medCu = GetMedium("COPPER$");
+ TGeoMedium *medSPDcf = GetMedium("SPD shield$");
+
+ TGeoVolume *manifblk = new TGeoVolume("ITSSPDBlkManif",
+ manifblksh,medInox);
+ manifblk->SetLineColor(kGreen+2);
+
+ TGeoVolume *manifinscube = new TGeoVolume("ITSSPDInsCubeManif",
+ manifinscubesh,medCu);
+ manifinscube->SetLineColor(kYellow);
+
+ TGeoVolume *manifinscyl1 = new TGeoVolume("ITSSPDInsCyl1Manif",
+ manifinscyl1sh,medCu);
+ manifinscyl1->SetLineColor(kYellow);
+
+ TGeoVolume *manifinscyl2 = new TGeoVolume("ITSSPDInsCyl2Manif",
+ manifinscyl2sh,medCu);
+ manifinscyl2->SetLineColor(kYellow);
+
+ TGeoVolume *manifcollcyl1 = new TGeoVolume("ITSSPDCollCyl1Manif",
+ manifcollcyl1sh,medCu);
+ manifcollcyl1->SetLineColor(kYellow);
+
+ TGeoVolume *manifcollcyl2 = new TGeoVolume("ITSSPDCollCyl2Manif",
+ manifcollcyl2sh,medCu);
+ manifcollcyl2->SetLineColor(kYellow);
+
+ TGeoVolume *suppmanif = new TGeoVolume("ITSSPDCoolManifSupp",
+ suppmanifsh,medSPDcf);
+ suppmanif->SetLineColor(7);
+
+ TGeoVolume *suppscrewbody = new TGeoVolume("ITSSPDSuppScrewBody",
+ suppscrewbodysh,medInox);
+ suppscrewbody->SetLineColor(kGray);
+
+ xpos = kCoolManifLength/2 - kSuppScrewZPos;
+ ypos = suppscrewbodysh->GetDz();
+ zpos = kCoolManifWidth/2 - kSuppScrewXPos;
+ suppmanif->AddNode(suppscrewbody, 1, new TGeoCombiTrans( xpos, ypos, zpos,
+ new TGeoRotation("",0,90,0)));
+ suppmanif->AddNode(suppscrewbody, 2, new TGeoCombiTrans( xpos, ypos,-zpos,
+ new TGeoRotation("",0,90,0)));
+ suppmanif->AddNode(suppscrewbody, 3, new TGeoCombiTrans(-xpos, ypos, zpos,
+ new TGeoRotation("",0,90,0)));
+ suppmanif->AddNode(suppscrewbody, 4, new TGeoCombiTrans(-xpos, ypos,-zpos,
+ new TGeoRotation("",0,90,0)));
+
+ TGeoVolume *suppscrewhead = new TGeoVolume("ITSSPDSuppScrewHead",
+ suppscrewheadsh,medInox);
+ suppscrewhead->SetLineColor(kGray);
+
+ TGeoVolume *screwoutmanif = new TGeoVolume("ITSSPDSuppScrewOutManif",
+ screwoutmanifsh,medInox);
+ screwoutmanif->SetLineColor(kGray);
+
+ TGeoVolume *suppsect = new TGeoVolume("ITSSPDCoolSectorSupp",
+ suppsectsh,medSPDcf);
+ suppsect->SetLineColor(7);
+
+ xpos = kSectSuppLen2/2 - kSectScrewZPos;
+ ypos = suppscrewbodysh->GetDz();
+ suppsect->AddNode(suppscrewbody, 1, new TGeoCombiTrans( xpos, ypos, 0,
+ new TGeoRotation("",0,90,0)));
+ suppsect->AddNode(suppscrewbody, 2, new TGeoCombiTrans(-xpos, ypos, 0,
+ new TGeoRotation("",0,90,0)));
+
+ TGeoVolume *setpinbody = new TGeoVolume("ITSSPDSetPinBody",
+ setpinbodysh,medInox);
+ setpinbody->SetLineColor(kGray);
+
+ ypos = setpinbodysh->GetDz();
+ suppsect->AddNode(setpinbody, 1, new TGeoCombiTrans( 0, ypos, 0,
+ new TGeoRotation("",0,90,0)));
+
+ TGeoVolume *setpinhead = new TGeoVolume("ITSSPDSetPinHead",
+ setpinheadsh,medInox);
+ setpinhead->SetLineColor(kGray);
+
+ TGeoVolume *sectclip = new TGeoVolume("ITSSPDCoolSectorClip",
+ sectclipsh,medSPDcf);
+ sectclip->SetLineColor(7);
+
+ TGeoVolume *clipscrewbody = new TGeoVolume("ITSSPDClipScrewBody",
+ clipscrewbodysh,medInox);
+ clipscrewbody->SetLineColor(kGray);
+
+ ypos = -clipscrewbodysh->GetDz();
+ zpos = kSectSuppLen2/2 - kSectScrewZPos;
+ sectclip->AddNode(clipscrewbody, 1, new TGeoCombiTrans( 0, ypos, zpos,
+ new TGeoRotation("",0,90,0)));
+ sectclip->AddNode(clipscrewbody, 2, new TGeoCombiTrans( 0, ypos,-zpos,
+ new TGeoRotation("",0,90,0)));
+
+ TGeoVolume *pinclipbody = new TGeoVolume("ITSSPDClipPinBody",
+ pinclipbodysh,medInox);
+ pinclipbody->SetLineColor(kGray);
+
+ ypos = -pinclipbodysh->GetDz();
+ sectclip->AddNode(pinclipbody, 1, new TGeoCombiTrans( 0, ypos, 0,
+ new TGeoRotation("",0,90,0)));
+
+ TGeoVolume *setpinoutclip = new TGeoVolume("ITSSPDSetPinOutClip",
+ setpinoutclipsh,medInox);
+ setpinoutclip->SetLineColor(kGray);
+
+
+ // Add all volumes in the assemblies
+ coolmanifA->AddNode(manifblk,1,0);
+ coolmanifC->AddNode(manifblk,1,0);
+
+ ypos = manifblksh->GetDY() + manifinscyl1sh->GetDz();
+ zpos = manifblksh->GetDZ() - manifinscyl1sh->GetRmax() - kCoolManifFitZPos;
+ coolmanifA->AddNode(manifinscyl1, 1, new TGeoCombiTrans(0, -ypos, zpos,
+ new TGeoRotation("",0,90,0)));
+ coolmanifC->AddNode(manifinscyl1, 1, new TGeoCombiTrans(0, -ypos, zpos,
+ new TGeoRotation("",0,90,0)));
+
+ ypos += (manifinscyl1sh->GetDz() + manifinscubesh->GetDY());
+ coolmanifA->AddNode(manifinscube, 1, new TGeoTranslation(0, -ypos, zpos));
+ coolmanifC->AddNode(manifinscube, 1, new TGeoTranslation(0, -ypos, zpos));
+
+ zpos += (manifinscubesh->GetDZ() + manifinscyl2sh->GetDz());
+ coolmanifA->AddNode(manifinscyl2, 1, new TGeoTranslation(0, -ypos, zpos));
+ coolmanifC->AddNode(manifinscyl2, 1, new TGeoTranslation(0, -ypos, zpos));
+
+ ypos = manifblksh->GetDY();
+ coolmanifA->AddNode(suppmanif, 1, new TGeoCombiTrans(0, ypos, 0,
+ new TGeoRotation("",-90,90,90)));
+ coolmanifC->AddNode(suppmanif, 1, new TGeoCombiTrans(0, ypos, 0,
+ new TGeoRotation("",-90,90,90)));
+
+ ypos += (kManifSuppThick + kScrewM3HeadThick/2);
+ xpos = kCoolManifWidth/2 - kSuppScrewXPos;
+ zpos = kCoolManifLength/2 - kSuppScrewZPos;
+ coolmanifA->AddNode(suppscrewhead, 1, new TGeoCombiTrans( xpos, ypos, zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifC->AddNode(suppscrewhead, 1, new TGeoCombiTrans( xpos, ypos, zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifA->AddNode(suppscrewhead, 2, new TGeoCombiTrans( xpos, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifC->AddNode(suppscrewhead, 2, new TGeoCombiTrans( xpos, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifA->AddNode(suppscrewhead, 3, new TGeoCombiTrans(-xpos, ypos, zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifC->AddNode(suppscrewhead, 3, new TGeoCombiTrans(-xpos, ypos, zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifA->AddNode(suppscrewhead, 4, new TGeoCombiTrans(-xpos, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifC->AddNode(suppscrewhead, 4, new TGeoCombiTrans(-xpos, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+
+ ypos = manifblksh->GetDY() + screwoutmanifsh->GetDz();
+ coolmanifA->AddNode(screwoutmanif, 1, new TGeoCombiTrans( xpos,-ypos, zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifC->AddNode(screwoutmanif, 1, new TGeoCombiTrans( xpos,-ypos, zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifA->AddNode(screwoutmanif, 2, new TGeoCombiTrans( xpos,-ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifC->AddNode(screwoutmanif, 2, new TGeoCombiTrans( xpos,-ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifA->AddNode(screwoutmanif, 3, new TGeoCombiTrans(-xpos,-ypos, zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifC->AddNode(screwoutmanif, 3, new TGeoCombiTrans(-xpos,-ypos, zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifA->AddNode(screwoutmanif, 4, new TGeoCombiTrans(-xpos,-ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifC->AddNode(screwoutmanif, 4, new TGeoCombiTrans(-xpos,-ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+
+ ypos = manifblksh->GetDY() + suppmanifsh->GetY(1) - suppsectsh->GetY(1);
+ zpos = manifblksh->GetDZ() + (kCoolManifZPos - kSectSuppZPos);
+ coolmanifA->AddNode(suppsect, 1, new TGeoCombiTrans(0, ypos,-zpos,
+ new TGeoRotation("",-90,90,90)));
+ coolmanifC->AddNode(suppsect, 1, new TGeoCombiTrans(0, ypos,-zpos,
+ new TGeoRotation("",-90,90,90)));
+
+ tmp = ypos; // Save it to avoid recomputing
+
+ ypos += (kSectSuppThick + kScrewM3HeadThick/2);
+ zpos += (kSectSuppLen2/2 - kSectScrewZPos);
+ coolmanifA->AddNode(suppscrewhead, 5, new TGeoCombiTrans( 0, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifC->AddNode(suppscrewhead, 5, new TGeoCombiTrans( 0, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+ zpos -= 2*(kSectSuppLen2/2 - kSectScrewZPos);
+ coolmanifA->AddNode(suppscrewhead, 6, new TGeoCombiTrans( 0, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifC->AddNode(suppscrewhead, 6, new TGeoCombiTrans( 0, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+
+ ypos = tmp + kSectSuppThick + kSetPinHeadThick/2;
+ zpos += (kSectSuppLen2/2 - kSectScrewZPos);
+ coolmanifA->AddNode(setpinhead, 1, new TGeoCombiTrans( 0, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifC->AddNode(setpinhead, 1, new TGeoCombiTrans( 0, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+
+ ypos = tmp - 8.e-5; // Avoid microscopic overlap
+ tmp = ypos;
+ coolmanifA->AddNode(sectclip, 1, new TGeoTranslation( 0, ypos,-zpos));
+ coolmanifC->AddNode(sectclip, 1, new TGeoCombiTrans ( 0, ypos,-zpos,
+ new TGeoRotation("",-90,180,90)));
+
+ ypos -= (kSectClipThick1 + setpinoutclipsh->GetDz());
+ coolmanifA->AddNode(setpinoutclip, 1, new TGeoCombiTrans( 0, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifC->AddNode(setpinoutclip, 1, new TGeoCombiTrans( 0, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+
+ ypos = tmp - (kSectClipThick1 + screwoutmanifsh->GetDz());
+ zpos += (kSectSuppLen2/2 - kSectScrewZPos);
+ coolmanifA->AddNode(screwoutmanif, 5, new TGeoCombiTrans( 0, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifC->AddNode(screwoutmanif, 5, new TGeoCombiTrans( 0, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+ zpos -= 2*(kSectSuppLen2/2 - kSectScrewZPos);
+ coolmanifA->AddNode(screwoutmanif, 6, new TGeoCombiTrans( 0, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+ coolmanifC->AddNode(screwoutmanif, 6, new TGeoCombiTrans( 0, ypos,-zpos,
+ new TGeoRotation("",0,-90,0)));
+
+ xpos = manifblksh->GetDX() - kCoolManifCollXPos;
+ ypos = manifblksh->GetDY() + manifcollcyl1sh->GetDz();
+ zpos =-manifblksh->GetDZ() + kCoolManifCollZ0;
+ for (Int_t i=0; i<3; i++) {
+ coolmanifA->AddNode(manifcollcyl1, 2*i+1,
+ new TGeoCombiTrans( xpos, -ypos, zpos,
+ new TGeoRotation("",0,90,0)));
+ coolmanifA->AddNode(manifcollcyl1, 2*i+2,
+ new TGeoCombiTrans(-xpos, -ypos, zpos,
+ new TGeoRotation("",0,90,0)));
+ coolmanifC->AddNode(manifcollcyl1, 2*i+1,
+ new TGeoCombiTrans( xpos, -ypos, zpos,
+ new TGeoRotation("",0,90,0)));
+ coolmanifC->AddNode(manifcollcyl1, 2*i+2,
+ new TGeoCombiTrans(-xpos, -ypos, zpos,
+ new TGeoRotation("",0,90,0)));
+ Double_t y = ypos + manifcollcyl1sh->GetDz() + manifcollcyl2sh->GetDz();
+ coolmanifA->AddNode(manifcollcyl2, 2*i+1,
+ new TGeoCombiTrans( xpos, -y, zpos,
+ new TGeoRotation("",0,90,0)));
+ coolmanifA->AddNode(manifcollcyl2, 2*i+2,
+ new TGeoCombiTrans(-xpos, -y, zpos,
+ new TGeoRotation("",0,90,0)));
+ coolmanifC->AddNode(manifcollcyl2, 2*i+1,
+ new TGeoCombiTrans( xpos, -y, zpos,
+ new TGeoRotation("",0,90,0)));
+ coolmanifC->AddNode(manifcollcyl2, 2*i+2,
+ new TGeoCombiTrans(-xpos, -y, zpos,
+ new TGeoRotation("",0,90,0)));
+
+ zpos += kCoolManifCollDZ;