Int_t i, j, k;
Double_t angle, radiusSector, xAAtubeCenter0, yAAtubeCenter0;
TGeoCombiTrans *secRot = new TGeoCombiTrans(), *comrot;
- TGeoVolume *vCarbonFiberSector;
+ TGeoVolume *vCarbonFiberSector[10];
TGeoMedium *medSPDcf;
// Define an assembly and fill it with the support of
// a single carbon fiber sector and staves in it
medSPDcf = GetMedium("SPD C (M55J)$", mgr);
- vCarbonFiberSector = new TGeoVolumeAssembly("ITSSPDCarbonFiberSectorV");
- vCarbonFiberSector->SetMedium(medSPDcf);
- CarbonFiberSector(vCarbonFiberSector, xAAtubeCenter0, yAAtubeCenter0, mgr);
+ for(Int_t is=0; is<10; is++)
+ {
+ vCarbonFiberSector[is] = new TGeoVolumeAssembly("ITSSPDCarbonFiberSectorV");
+ vCarbonFiberSector[is]->SetMedium(medSPDcf);
+ CarbonFiberSector(vCarbonFiberSector[is], is, xAAtubeCenter0, yAAtubeCenter0, mgr);
+ }
// Compute the radial shift out of the sectors
radiusSector = kBeamPipeRadius + kSPDclossesStaveAA + staveThicknessAA;
secRot->SetDx(shiftX);
secRot->SetDy(shiftY);
comrot = new TGeoCombiTrans(*secRot);
- vcenteral->AddNode(vCarbonFiberSector,i+1,comrot);
+ vcenteral->AddNode(vCarbonFiberSector[i],i+1,comrot);
for(j=0;j<2;j++)for(k=0;k<6;k++) // Transform Tube ends for each sector
comrot->LocalToMaster(tub[j][k],fTubeEndSector[i][j][k]);
if(GetDebug(5)) {
CreateCones(moth);
}
//______________________________________________________________________
-void AliITSv11GeometrySPD::CarbonFiberSector(TGeoVolume *moth,
+void AliITSv11GeometrySPD::CarbonFiberSector(TGeoVolume *moth, Int_t sect,
Double_t &xAAtubeCenter0, Double_t &yAAtubeCenter0, TGeoManager *mgr)
{
+ // The method has been modified in order to build a support sector
+ // whose shape is dependent on the sector number; the aim is to get
+ // as close as possible to the shape inferred from alignment
+ // and avoid as much as possible overlaps generated by alignment.
//
// Define the detail SPD Carbon fiber support Sector geometry.
// Based on the drawings:
const Double_t ksecX0 = -10.725 * fgkmm;
const Double_t ksecY0 = -14.853 * fgkmm;
const Double_t ksecR0 = -0.8 * fgkmm; // external
- const Double_t ksecX1 = -13.187 * fgkmm;
- const Double_t ksecY1 = -19.964 * fgkmm;
- const Double_t ksecR1 = +0.6 * fgkmm; // internal // (modif. by Alberto)
- //const Double_t ksecR1 = +0.8 * fgkmm; // internal // (modif. by Alberto)
-
- // const Double_t ksecDip0 = 5.9 * fgkmm;
- //
- //const Double_t ksecX2 = -3.883 * fgkmm;
- const Double_t ksecX2 = -3.833 * fgkmm; // (corr. by Alberto)
- const Double_t ksecY2 = -17.805 * fgkmm;
- const Double_t ksecR2 = +0.6 * fgkmm; // internal (guess)
- const Double_t ksecX3 = -3.123 * fgkmm;
- const Double_t ksecY3 = -14.618 * fgkmm;
- const Double_t ksecR3 = -0.6 * fgkmm; // external
- //const Double_t ksecDip1 = 8.035 * fgkmm;
- //
- const Double_t ksecX4 = +11.280 * fgkmm;
- const Double_t ksecY4 = -14.473 * fgkmm;
- const Double_t ksecR4 = +0.8 * fgkmm; // internal
- const Double_t ksecX5 = +19.544 * fgkmm;
- const Double_t ksecY5 = +10.961 * fgkmm;
- const Double_t ksecR5 = +0.8 * fgkmm; // internal
- //const Double_t ksecDip2 = 4.553 * fgkmm;
- //
- const Double_t ksecX6 = +10.830 * fgkmm;
- const Double_t ksecY6 = +16.858 * fgkmm;
- const Double_t ksecR6 = +0.6 * fgkmm; // internal
- const Double_t ksecX7 = +11.581 * fgkmm;
- const Double_t ksecY7 = +13.317 * fgkmm;
- const Double_t ksecR7 = -0.6 * fgkmm; // external
- //const Double_t ksecDip3 = 6.978 * fgkmm;
- //
- const Double_t ksecX8 = -0.733 * fgkmm;
- const Double_t ksecY8 = +17.486 * fgkmm;
- const Double_t ksecR8 = +0.6 * fgkmm; // internal
- const Double_t ksecX9 = +0.562 * fgkmm;
- //const Double_t ksecY9 = +14.486 * fgkmm; // correction by
- const Double_t ksecY9 = +14.107 * fgkmm; // Alberto
- const Double_t ksecR9 = -0.6 * fgkmm; // external
- //const Double_t ksecDip4 = 6.978 * fgkmm;
- //
- const Double_t ksecX10 = -12.252 * fgkmm;
- const Double_t ksecY10 = +16.298 * fgkmm;
- const Double_t ksecR10 = +0.6 * fgkmm; // internal
- const Double_t ksecX11 = -10.445 * fgkmm;
- const Double_t ksecY11 = +13.162 * fgkmm;
- const Double_t ksecR11 = -0.6 * fgkmm; // external
- //const Double_t ksecDip5 = 6.978 * fgkmm;
- //
- const Double_t ksecX12 = -22.276 * fgkmm;
- const Double_t ksecY12 = +12.948 * fgkmm;
- const Double_t ksecR12 = +0.85 * fgkmm; // internal
+
+ const Double_t ksecR1 = +0.6 * fgkmm;
+ const Double_t ksecR2 = +0.6 * fgkmm;
+ const Double_t ksecR3 = -0.6 * fgkmm;
+ const Double_t ksecR4 = +0.8 * fgkmm;
+ const Double_t ksecR5 = +0.8 * fgkmm;
+ const Double_t ksecR6 = +0.6 * fgkmm;
+ const Double_t ksecR7 = -0.6 * fgkmm;
+ const Double_t ksecR8 = +0.6 * fgkmm;
+ const Double_t ksecR9 = -0.6 * fgkmm;
+ const Double_t ksecR10 = +0.6 * fgkmm;
+ const Double_t ksecR11 = -0.6 * fgkmm;
+ const Double_t ksecR12 = +0.85 * fgkmm;
+
+// // IDEAL GEOMETRY
+// const Double_t ksecX1[10] ={-1.3187,-1.3187,-1.3187,-1.3187,-1.3187,-1.3187,-1.3187,-1.3187,-1.3187,-1.3187};
+// const Double_t ksecY1[10] ={-1.9964,-1.9964,-1.9964,-1.9964,-1.9964,-1.9964,-1.9964,-1.9964,-1.9964,-1.9964};
+// const Double_t ksecX2[10] ={-0.3833,-0.3833,-0.3833,-0.3833,-0.3833,-0.3833,-0.3833,-0.3833,-0.3833,-0.3833};
+// const Double_t ksecY2[10] ={-1.7805,-1.7805,-1.7805,-1.7805,-1.7805,-1.7805,-1.7805,-1.7805,-1.7805,-1.7805};
+// const Double_t ksecX3[10] ={-0.3123,-0.3123,-0.3123,-0.3123,-0.3123,-0.3123,-0.3123,-0.3123,-0.3123,-0.3123};
+// const Double_t ksecY3[10] ={-1.4618,-1.4618,-1.4618,-1.4618,-1.4618,-1.4618,-1.4618,-1.4618,-1.4618,-1.4618};
+// const Double_t ksecX4[10] ={+1.1280,+1.1280,+1.1280,+1.1280,+1.1280,+1.1280,+1.1280,+1.1280,+1.1280,+1.1280};
+// const Double_t ksecY4[10] ={-1.4473,-1.4473,-1.4473,-1.4473,-1.4473,-1.4473,-1.4473,-1.4473,-1.4473,-1.4473};
+// const Double_t ksecX5[10] ={+1.9544,+1.9544,+1.9544,+1.9544,+1.9544,+1.9544,+1.9544,+1.9544,+1.9544,+1.9544};
+// const Double_t ksecY5[10] ={+1.0961,+1.0961,+1.0961,+1.0961,+1.0961,+1.0961,+1.0961,+1.0961,+1.0961,+1.0961};
+// const Double_t ksecX6[10] ={+1.0830,+1.0830,+1.0830,+1.0830,+1.0830,+1.0830,+1.0830,+1.0830,+1.0830,+1.0830};
+// const Double_t ksecY6[10] ={+1.6868,+1.6868,+1.6868,+1.6868,+1.6868,+1.6868,+1.6868,+1.6868,+1.6868,+1.6868};
+// const Double_t ksecX7[10] ={+1.1581,+1.1581,+1.1581,+1.1581,+1.1581,+1.1581,+1.1581,+1.1581,+1.1581,+1.1581};
+// const Double_t ksecY7[10] ={+1.3317,+1.3317,+1.3317,+1.3317,+1.3317,+1.3317,+1.3317,+1.3317,+1.3317,+1.3317};
+// const Double_t ksecX8[10] ={-0.0733,-0.0733,-0.0733,-0.0733,-0.0733,-0.0733,-0.0733,-0.0733,-0.0733,-0.0733};
+// const Double_t ksecY8[10] ={+1.7486,+1.7486,+1.7486,+1.7486,+1.7486,+1.7486,+1.7486,+1.7486,+1.7486,+1.7486};
+// const Double_t ksecX9[10] ={+0.0562,+0.0562,+0.0562,+0.0562,+0.0562,+0.0562,+0.0562,+0.0562,+0.0562,+0.0562};
+// const Double_t ksecY9[10] ={+1.4107,+1.4107,+1.4107,+1.4107,+1.4107,+1.4107,+1.4107,+1.4107,+1.4107,+1.4107};
+// const Double_t ksecX10[10]={-1.2252,-1.2252,-1.2252,-1.2252,-1.2252,-1.2252,-1.2252,-1.2252,-1.2252,-1.2252};
+// const Double_t ksecY10[10]={+1.6298,+1.6298,+1.6298,+1.6298,+1.6298,+1.6298,+1.6298,+1.6298,+1.6298,+1.6298};
+// const Double_t ksecX11[10]={-1.0445,-1.0445,-1.0445,-1.0445,-1.0445,-1.0445,-1.0445,-1.0445,-1.0445,-1.0445};
+// const Double_t ksecY11[10]={+1.3162,+1.3162,+1.3162,+1.3162,+1.3162,+1.3162,+1.3162,+1.3162,+1.3162,+1.3162};
+// const Double_t ksecX12[10]={-2.2276,-2.2276,-2.2276,-2.2276,-2.2276,-2.2276,-2.2276,-2.2276,-2.2276,-2.2276};
+// const Double_t ksecY12[10]={+1.2948,+1.2948,+1.2948,+1.2948,+1.2948,+1.2948,+1.2948,+1.2948,+1.2948,+1.2948};
+
+
+// MODIFIED GEOMETRY according with partial alignment of Staves relative to Sectors
+// last numbers: 2010/06/11 (ML)
+
+ const Double_t ksecX1[10]={-1.305917, -1.322242, -1.300649, -1.298700, -1.290830, -1.274307, -1.276433, -1.286468, -1.274381, -1.314864};
+ const Double_t ksecY1[10]={-1.997857, -2.018611, -2.005854, -2.004897, -1.995517, -2.002552, -1.995860, -2.021062, -2.012931, -2.043967};
+ const Double_t ksecX2[10]={-0.366115, -0.385562, -0.372689, -0.365682, -0.348432, -0.348442, -0.342468, -0.354071, -0.346900, -0.381275};
+ const Double_t ksecY2[10]={-1.801679, -1.808306, -1.759315, -1.778851, -1.811655, -1.747888, -1.773811, -1.792427, -1.764514, -1.820324};
+// const Double_t ksecX1[10]={-1.305917, -1.322242, -1.300649, -1.298700, -1.290830, -1.274307, -1.276433, -1.286468, -1.274381, -1.325864};
+// const Double_t ksecY1[10]={-1.997857, -2.018611, -2.005854, -2.004897, -1.995517, -2.002552, -1.995860, -2.021062, -2.012931, -2.032967};
+// const Double_t ksecX2[10]={-0.366115, -0.385562, -0.372689, -0.365682, -0.348432, -0.348442, -0.342468, -0.354071, -0.346900, -0.392275};
+// const Double_t ksecY2[10]={-1.801679, -1.808306, -1.759315, -1.778851, -1.811655, -1.747888, -1.773811, -1.792427, -1.764514, -1.809324};
+ const Double_t ksecX3[10]={-0.314030, -0.315531, -0.347521, -0.337675, -0.300420, -0.378487, -0.330729, -0.330850, -0.362360, -0.321097};
+ const Double_t ksecY3[10]={-1.452488, -1.460418, -1.447060, -1.443146, -1.472410, -1.430019, -1.469073, -1.472048, -1.462010, -1.444355};
+ const Double_t ksecX4[10]={1.124299, 1.124162, 1.089523, 1.095520, 1.136171, 1.058616, 1.105626, 1.106433, 1.077455, 1.117946};
+ const Double_t ksecY4[10]={-1.458714, -1.452649, -1.465297, -1.492717, -1.494665, -1.447732, -1.493369, -1.488126, -1.452925, -1.443447};
+ const Double_t ksecX5[10]={1.951621, 1.939284, 1.931830, 1.935235, 1.952206, 1.939082, 1.924822, 1.940114, 1.918160, 1.960017};
+ const Double_t ksecY5[10]={1.092731, 1.118870, 1.129765, 1.129422, 1.081511, 1.127387, 1.103960, 1.101784, 1.121428, 1.150110};
+ const Double_t ksecX6[10]={1.070070, 1.048297, 1.035920, 1.049049, 1.083621, 1.045882, 1.050399, 1.067823, 1.037967, 1.070850};
+ const Double_t ksecY6[10]={1.667590, 1.678571, 1.681383, 1.696892, 1.676520, 1.683470, 1.689988, 1.691111, 1.698432, 1.712770};
+ const Double_t ksecX7[10]={1.139398, 1.150471, 1.150074, 1.132807, 1.150192, 1.124064, 1.124335, 1.137723, 1.143056, 1.130568};
+ const Double_t ksecY7[10]={1.345588, 1.356062, 1.342468, 1.320467, 1.335807, 1.334477, 1.328622, 1.347184, 1.319861, 1.308420};
+ const Double_t ksecX8[10]={-0.096963, -0.098603, -0.095286, -0.099990, -0.075132, -0.121593, -0.108673, -0.104237, -0.092082, -0.104044};
+ const Double_t ksecY8[10]={1.751207, 1.731467, 1.726908, 1.734219, 1.766159, 1.718203, 1.741891, 1.739743, 1.728288, 1.718046};
+ const Double_t ksecX9[10]={0.047615, 0.087875, 0.034917, 0.071603, 0.026468, 0.091619, 0.051994, 0.059947, 0.079785, 0.043443};
+ const Double_t ksecY9[10]={1.414699, 1.403187, 1.399061, 1.403430, 1.435056, 1.384557, 1.397692, 1.420269, 1.391372, 1.398954};
+ const Double_t ksecX10[10]={-1.233255, -1.186874, -1.246702, -1.213368, -1.259425, -1.190067, -1.225655, -1.224171, -1.197833, -1.237182};
+ const Double_t ksecY10[10]={1.635767, 1.646249, 1.617336, 1.608928, 1.636944, 1.602583, 1.630504, 1.629065, 1.624295, 1.620934};
+ const Double_t ksecX11[10]={-1.018270, -1.031317, -0.960524, -1.001155, -1.045437, -0.986867, -1.002685, -1.017369, -1.005614, -0.985385};
+ const Double_t ksecY11[10]={1.318108, 1.330683, 1.301572, 1.314410, 1.326680, 1.295226, 1.306372, 1.309414, 1.306542, 1.307086};
+ const Double_t ksecX12[10]={-2.199004, -2.214964, -2.139247, -2.180547, -2.224505, -2.165324, -2.175883, -2.193485, -2.183227, -2.161570};
+ const Double_t ksecY12[10]={1.317677, 1.303982, 1.317057, 1.324766, 1.339537, 1.312715, 1.359642, 1.343638, 1.330234, 1.340836};
+
+
const Double_t ksecR13 = -0.8 * fgkmm; // external
const Double_t ksecAngleSide13 = 36.0 * fgkDegree;
//
// in the format of arrays (???)
const Int_t ksecNPoints = (ksecNPointsPerRadii + 1) * ksecNRadii + 8;
Double_t secX[ksecNRadii] = {
- ksecX0, ksecX1, -1000.0,
- ksecX2, ksecX3, -1000.0,
- ksecX4, ksecX5, -1000.0,
- ksecX6, ksecX7, -1000.0,
- ksecX8, ksecX9, -1000.0,
- ksecX10, ksecX11, -1000.0,
- ksecX12, -1000.0
+ ksecX0, ksecX1[sect], -1000.0,
+ ksecX2[sect], ksecX3[sect], -1000.0,
+ ksecX4[sect], ksecX5[sect], -1000.0,
+ ksecX6[sect], ksecX7[sect], -1000.0,
+ ksecX8[sect], ksecX9[sect], -1000.0,
+ ksecX10[sect], ksecX11[sect], -1000.0,
+ ksecX12[sect], -1000.0
};
Double_t secY[ksecNRadii] = {
- ksecY0, ksecY1, -1000.0,
- ksecY2, ksecY3, -1000.0,
- ksecY4, ksecY5, -1000.0,
- ksecY6, ksecY7, -1000.0,
- ksecY8, ksecY9, -1000.0,
- ksecY10, ksecY11, -1000.0,
- ksecY12, -1000.0
+ ksecY0, ksecY1[sect], -1000.0,
+ ksecY2[sect], ksecY3[sect], -1000.0,
+ ksecY4[sect], ksecY5[sect], -1000.0,
+ ksecY6[sect], ksecY7[sect], -1000.0,
+ ksecY8[sect], ksecY9[sect], -1000.0,
+ ksecY10[sect], ksecY11[sect], -1000.0,
+ ksecY12[sect], -1000.0
};
Double_t secR[ksecNRadii] = {
ksecR0, ksecR1, -.5 * ksecDipLength - ksecDipRadii,
// with a finite thickness for all the shape
// Its local reference frame is such that point A corresponds to origin.
//
+
+ // MODIFIED geometry
+ Double_t sposty = fgkmm * -0.5; // lower internal side to avoid overlaps with modified geometry
+
Double_t fullLength = fgkmm * 12.6; // = x4 - x0
Double_t flatLength = fgkmm * 5.4; // = x4 - x3
Double_t inclLongLength = fgkmm * 5.0; // = 5-6
y[6] = y[1] + thickness;
y[7] = y[0] + thickness;
+ y[0] += sposty;
+ y[7] += sposty;
+
sizes.Set(7);
sizes[0] = totalLength;
sizes[1] = fullHeight;