}
//______________________________________________________________________
-TList* AliITSv11GeometrySPD::CreateConeModule(const Double_t angrot,
+TList* AliITSv11GeometrySPD::CreateConeModule(Bool_t sideC, const Double_t angrot,
TGeoManager *mgr) const
{
//
// Updated: 20 Jun 2010 A. Pulvirenti Optical patch panels
// Updated: 22 Jun 2010 M. Sitta Fiber cables
// Updated: 04 Jul 2010 M. Sitta Water cooling
+ // Updated: 08 Jul 2010 A. Pulvirenti Air cooling on Side C
//
TGeoMedium *medInox = GetMedium("INOX$",mgr);
TGeoMedium *medGas = GetMedium("GASEOUS FREON$", mgr);
TGeoMedium *medFibs = GetMedium("SDD OPTICFIB$",mgr);
TGeoMedium *medCopper= GetMedium("COPPER$",mgr);
+ TGeoMedium *medPVC = GetMedium("PVC$",mgr);
Double_t extThickness = fgkmm * 0.25;
Double_t ext1Length = fgkmm * (26.7 - 10.0);
const Double_t kConeTubeRmax = 3.0 *fgkmm;
const Double_t kHorizTubeLen = 150.0 *fgkmm;
- const Double_t kYtoHalfStave = 7.3 *fgkmm;
+ const Double_t kYtoHalfStave = 9.5 *fgkmm;
const Double_t kWaterCoolRMax = 2.6 *fgkmm;
const Double_t kWaterCoolThick = 0.04 *fgkmm;
const Double_t kWCFittingRint2 = kWaterCoolRMax;
const Double_t kWCFittingLen1 = 7.0 *fgkmm;
const Double_t kWCFittingLen2 = 8.0 *fgkmm;
+
+ const Double_t kCollWidth = 40.0 *fgkmm;
+ const Double_t kCollLength = 60.0 *fgkmm;
+ const Double_t kCollThickness = 10.0 *fgkmm;
+ const Double_t kCollTubeThick = 1.0 *fgkmm;
+ const Double_t kCollTubeRadius = 7.0 *fgkmm;
+ const Double_t kCollTubeLength = 190.0 *fgkmm;
const Double_t kOptFibDiamet = 4.5 *fgkmm;
TGeoVolume *volPlate = new TGeoVolume("ITSSPDPlate",
shPlate, medPlate);
volPlate->SetLineColor(kRed);
+
+ // The air cooling tubes
+ TGeoBBox *shCollBox = new TGeoBBox("ITSSPD_shape_collector_box", 0.5*kCollLength, 0.5*kCollWidth, 0.5*kCollThickness);
+ TGeoTube *shCollTube = new TGeoTube("ITSSPD_shape_collector_tube",kCollTubeRadius - kCollTubeThick, kCollTubeRadius, 0.5*kCollTubeLength);
+ TGeoVolume *volCollBox = new TGeoVolume("ITSSPDCollectorBox", shCollBox, medPVC);
+ TGeoVolume *volCollTube = new TGeoVolume("ITSSPDCollectorTube", shCollTube, medPVC);
+ volCollBox->SetLineColor(kAzure);
+ volCollTube->SetLineColor(kAzure);
// The cooling tube on the cone as a Ctub
Double_t tubeLength = shCable->GetX(5) - shCable->GetX(0) + kYtoHalfStave;
rot2->RotateY(163.0);
//rot2->RotateZ(132.5);
+ // add collectors only on side C
+ if (sideC)
+ {
+ TGeoTranslation *trCollBox = new TGeoTranslation(xloc - 0.5*kPlateLength + 0.5*kCollLength, 0.0, +0.5*(kPlateThickness+1.1*kCollThickness));
+ TGeoRotation *rotCollTube = new TGeoRotation(*gGeoIdentity);
+ rotCollTube->RotateY(90.0);
+ TGeoCombiTrans *trCollTube = new TGeoCombiTrans(xloc + 0.5*kCollTubeLength - (0.5*kPlateLength - kCollLength), 0.0, +0.5*(kPlateThickness+2.0*kCollTubeRadius+kCollTubeThick), rotCollTube);
+ container[0]->AddNode(volCollBox, 1, trCollBox);
+ container[0]->AddNode(volCollTube, 1, trCollTube);
+ }
+
Double_t dxPatch = 2.9;
Double_t dzPatch = 2.8;
TGeoCombiTrans *tr2 = new TGeoCombiTrans(1.7*ext2Length - dxPatch, 0.0, dzPatch, rot2);
const Double_t kAlphaRot = 46.500*fgkDegree;
const Double_t kAlphaSpaceCool = 9.200*fgkDegree;
- TList* modulelist = CreateConeModule(90-kAlphaRot);
- TGeoVolumeAssembly* module;
+ TList* modulelistA = CreateConeModule(kFALSE, 90-kAlphaRot);
+ TList* modulelistC = CreateConeModule(kTRUE , 90-kAlphaRot);
+ TList* &modulelist = modulelistC;
+ TGeoVolumeAssembly* module, *moduleA, *moduleC;
Double_t xloc, yloc, zloc;
// Double_t angle2c[10] = {18., 44., 90., 126., 162., 198.0, 223.0, 270.0, 309.0, 342.0};
// First add the cables
- module = (TGeoVolumeAssembly*)modulelist->At(0);
+ moduleA = (TGeoVolumeAssembly*)modulelistA->At(0);
+ moduleC = (TGeoVolumeAssembly*)modulelistC->At(0);
for (Int_t i = 0; i < kNumberOfModules; i++) {
TGeoRotation *rot1 = new TGeoRotation(*gGeoIdentity);
rot1->RotateY(-kAlphaRot);
xloc = kInnerRadius*CosD(anglem[i]);
yloc = kInnerRadius*SinD(anglem[i]);
zloc = kZTrans;
- moth->AddNode(module, 2*i+2,
+ moth->AddNode(moduleA, 2*i+2,
new TGeoCombiTrans( xloc, yloc, zloc, rot1));
TGeoRotation *rot2 = new TGeoRotation(*gGeoIdentity);
xloc = kInnerRadius*CosD(anglem[i]);
yloc = kInnerRadius*SinD(anglem[i]);
zloc = kZTrans;
- moth->AddNode(module, 2*i+1,
+ moth->AddNode(moduleC, 2*i+1,
new TGeoCombiTrans(-xloc,-yloc,-zloc, rot2));
}
} // end if i!=2
} // end if i==0||i==1 else
} // end for i
+
+
+ // Add a box representing the collector for cooling tubes
+ Double_t collWidth = fgkmm * 22.0;
+ Double_t collLength = fgkmm * 50.0;
+ Double_t collThickness = fgkmm * 7.0;
+ Double_t collInSize = fgkmm * 10.5;
+
+ TGeoMedium *medColl = GetMedium("INOX$");
+ TGeoMedium *medCollIn = GetMedium("COPPER$");
+ TGeoVolume *vColl = mgr->MakeBox("ITSSPDSectorTubeColl" , medColl, 0.5*collWidth, 0.5*collThickness, 0.5*collLength);
+ TGeoVolume *vCollIn = mgr->MakeBox("ITSSPDSectorTubeCollIn", medCollIn, 0.5*collInSize, 0.5*collInSize, 0.5*collInSize);
+ vColl->SetLineColor(kGreen+2);
+ vCollIn->SetLineColor(kYellow);
+
+ TGeoTranslation *tr1 = new TGeoTranslation( 0.1, 1.2, 35.0);
+ TGeoTranslation *tr2 = new TGeoTranslation(-0.1, 1.2, -35.0);
+ TGeoTranslation *tr3 = new TGeoTranslation( 0.1, 1.2 - 0.5*(collThickness+collInSize), 35.0 + 0.5*(collLength - collInSize));
+ TGeoTranslation *tr4 = new TGeoTranslation(-0.1, 1.2 - 0.5*(collThickness+collInSize), -35.0 - 0.5*(collLength - collInSize));
+
+ moth->AddNode(vColl, 0, tr1);
+ moth->AddNode(vColl, 1, tr2);
+ moth->AddNode(vCollIn, 0, tr3);
+ moth->AddNode(vCollIn, 1, tr4);
+
}
//______________________________________________________________________
void AliITSv11GeometrySPD::ParallelPosition(Double_t dist1, Double_t dist2,