+// -------------------------------------------------------- //
+
+void AliPMDUtility::GenerateBoundaryPoints(Int_t ism, Float_t &x1ism,
+ Float_t &y1ism, Float_t &x2ism,
+ Float_t &y2ism)
+{
+ // Generate bounding-box.
+
+
+ Float_t xism = 0, yism = 0;
+ Float_t dxism = 0., dyism = 0.;
+
+ const Float_t kRad = 0.25;
+ const Float_t kSqRoot3 = 1.732050808;
+ const Float_t kDia = 0.50;
+
+
+ const Double_t kXcorner[24] =
+ {
+ 74.8833, 53.0045, 31.1255, //Type-A
+ 74.8833, 53.0045, 31.1255, //Type-A
+ -74.8833, -53.0044, -31.1255, //Type-AR
+ -74.8833, -53.0044, -31.1255, //Type-AR
+ 8.9165, -33.7471, //Type-B
+ 8.9165, -33.7471, //Type-B
+ 8.9165, -33.7471, //Type-B
+ -8.9165, 33.7471, //Type-BR
+ -8.9165, 33.7471, //Type-BR
+ -8.9165, 33.7471, //Type-BR
+ };
+
+
+ const Double_t kYcorner[24] =
+ {
+ 86.225, 86.225, 86.225, //Type-A
+ 37.075, 37.075, 37.075, //Type-A
+ -86.225, -86.225, -86.225, //Type-AR
+ -37.075, -37.075, -37.075, //Type-AR
+ 86.225, 86.225, //Type-B
+ 61.075, 61.075, //Type-B
+ 35.925, 35.925, //Type-B
+ -86.225, -86.225, //Type-BR
+ -61.075, -61.075, //Type-BR
+ -35.925, -35.925 //Type-BR
+ };
+
+
+ if (ism > 23) ism -= 24;
+
+
+ if (ism < 6)
+ {
+ xism = kXcorner[ism] + kRad;
+ yism = kYcorner[ism] + kRad;
+ dxism = -kRad*kSqRoot3*48.;
+ dyism = -kDia*96. - kRad;
+ }
+ if (ism >= 6 && ism < 12)
+ {
+ xism = kXcorner[ism] - kRad;
+ yism = kYcorner[ism] - kRad;
+ dxism = kRad*kSqRoot3*48.;
+ dyism = kDia*96. + kRad;
+ }
+ if (ism >= 12 && ism < 18)
+ {
+ xism = kXcorner[ism] + kRad;
+ yism = kYcorner[ism] + kRad;
+ dxism = -kRad*kSqRoot3*96.;
+ dyism = -kDia*48. - kRad;
+ }
+ if (ism >= 18 && ism < 24)
+ {
+ xism = kXcorner[ism] - kRad;
+ yism = kYcorner[ism] - kRad;
+ dxism = kRad*kSqRoot3*96.;
+ dyism = kDia*48. + kRad;
+ }
+
+ x1ism = xism;
+ x2ism = xism + dxism;
+ y1ism = yism;
+ y2ism = yism + dyism;
+
+}
+// ------------------------------------------------------------------- //
+
+void AliPMDUtility::DrawPMDModule(Int_t idet)
+{
+
+ Float_t x1ism = 0., x2ism = 0., y1ism = 0., y2ism = 0.;
+ Float_t deltaX = 0., deltaY = 0.;
+
+ //TH2F *h2 = new TH2F("h2","Y vs. X",200,-100.,100.,200,-100.,100.);
+ //h2->Draw();
+
+ TLine t;
+ t.SetLineColor(2);
+
+ TText tt;
+ tt.SetTextColor(4);
+
+ Char_t smnumber[10];
+
+ for(Int_t ism=0; ism < 24; ism++)
+ {
+ GenerateBoundaryPoints(ism, x1ism, y1ism, x2ism, y2ism);
+ deltaX = (x2ism - x1ism)/2.;
+ deltaY = (y2ism - y1ism)/2.;
+ if (fWriteModule == 1)
+ {
+ if(idet == 0)
+ {
+ snprintf(smnumber,10,"%d",ism);
+ }
+ else if (idet == 1)
+ {
+ snprintf(smnumber,10,"%d",24+ism);
+ }
+ tt.DrawText(x1ism+deltaX,y1ism+deltaY,smnumber);
+ }
+ t.DrawLine(x1ism, y1ism, x1ism, y2ism);
+ t.DrawLine(x1ism, y1ism, x2ism, y1ism);
+ t.DrawLine(x2ism, y1ism, x2ism, y2ism);
+ t.DrawLine(x1ism, y2ism, x2ism, y2ism);
+ }
+
+}
+
+// ------------------------------------------------------------------- //
+
+