]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDgeometryHole.cxx
Major upgrades to the strip structure
[u/mrichter/AliRoot.git] / TRD / AliTRDgeometryHole.cxx
index 464bd08afbd7e83d6270765382949fe0eddd29a9..1de25b18b52387fc59dcdd7078125b84ffe33244 100644 (file)
 
 /*
 $Log$
+Revision 1.4  2000/11/01 14:53:21  cblume
+Merge with TRD-develop
+
+Revision 1.1.4.4  2000/10/15 23:40:01  cblume
+Remove AliTRDconst
+
+Revision 1.1.4.3  2000/10/06 16:49:46  cblume
+Made Getters const
+
+Revision 1.1.4.2  2000/10/04 16:34:58  cblume
+Replace include files by forward declarations
+
+Revision 1.1.4.1  2000/09/22 14:43:41  cblume
+Allow the pad/timebin-dimensions to be changed after initialization
+
+Revision 1.3  2000/10/02 21:28:19  fca
+Removal of useless dependecies via forward declarations
+
+Revision 1.2  2000/06/08 18:32:58  cblume
+Make code compliant to coding conventions
+
+Revision 1.1  2000/02/28 19:01:42  cblume
+Add new TRD classes
+
 */
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -23,6 +47,8 @@ $Log$
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
+#include "AliMC.h"
+
 #include "AliTRDgeometryHole.h"
 
 ClassImp(AliTRDgeometryHole)
@@ -41,6 +67,9 @@ AliTRDgeometryHole::AliTRDgeometryHole():AliTRDgeometry()
 //_____________________________________________________________________________
 AliTRDgeometryHole::~AliTRDgeometryHole()
 {
+  //
+  // AliTRDgeometryHole destructor
+  //
 
 }
 
@@ -54,7 +83,7 @@ void AliTRDgeometryHole::Init()
   Int_t iplan;
 
   // The length of the inner chambers
-  for (iplan = 0; iplan < kNplan; iplan++) 
+  for (iplan = 0; iplan < fgkNplan; iplan++) 
     fClengthI[iplan] = 110.0;
 
   // The length of the middle chambers
@@ -115,48 +144,95 @@ void AliTRDgeometryHole::Init()
   //                                             
 
   // The pad row (z-direction)
-  for (iplan = 0; iplan < kNplan; iplan++) {
-
-    for (Int_t isect = 0; isect < kNsect; isect++) {
-      Float_t clengthI = fClengthI[iplan];
-      Float_t clengthM = fClengthM1[iplan];
-      Float_t clengthO = fClengthO1[iplan];
-      switch (isect) {
-      case 12:
-      case 13:
-      case 14:
-      case 15:
-      case 16:
-        clengthM = fClengthM2[iplan];
-        clengthO = fClengthO2[iplan];
-        break;
-      case 4:
-      case 5:
-      case 6:
-        clengthO = fClengthO3[iplan];
-        break;
-      };
-      fRowMax[iplan][0][isect] = 1 + TMath::Nint((clengthO - 2. * kCcthick) 
-                                                           / fRowPadSize - 0.5);
-      fRowMax[iplan][1][isect] = 1 + TMath::Nint((clengthM - 2. * kCcthick) 
-                                                           / fRowPadSize - 0.5);
-      fRowMax[iplan][2][isect] = 1 + TMath::Nint((clengthI - 2. * kCcthick) 
-                                                           / fRowPadSize - 0.5);
-      fRowMax[iplan][3][isect] = 1 + TMath::Nint((clengthM - 2. * kCcthick) 
-                                                           / fRowPadSize - 0.5);
-      fRowMax[iplan][4][isect] = 1 + TMath::Nint((clengthO - 2. * kCcthick) 
-                                                           / fRowPadSize - 0.5);
-      fRow0[iplan][0][isect]   = -clengthI/2. - clengthM - clengthO + kCcthick; 
-      fRow0[iplan][1][isect]   = -clengthI/2. - clengthM            + kCcthick;
-      fRow0[iplan][2][isect]   = -clengthI/2.                       + kCcthick;
-      fRow0[iplan][3][isect]   =  clengthI/2.                       + kCcthick; 
-      fRow0[iplan][4][isect]   =  clengthI/2. + clengthM            + kCcthick; 
+  SetNRowPad();
+
+}
+
+//_____________________________________________________________________________
+void AliTRDgeometryHole::SetNRowPad(Int_t p, Int_t c, Int_t npad)
+{
+  //
+  // Redefines the number of pads in raw direction for
+  // a given plane and chamber number
+  //
+
+  Float_t clengthI = fClengthI[p];
+  Float_t clengthM = fClengthM1[p];
+  Float_t clengthO = fClengthO1[p];
+  
+  for (Int_t iSect = 0; iSect < fgkNsect; iSect++) {
+
+    fRowMax[p][c][iSect] = npad;
+    if (c == 2) {
+      fRowPadSize[p][c][iSect] = (clengthI - 2. * fgkCcthick)
+                               / fRowMax[p][c][iSect];
+    }
+    if ((c == 1) || (c == 3)) {
+      fRowPadSize[p][c][iSect] = (clengthM - 2. * fgkCcthick)
+                               / fRowMax[p][c][iSect];
+    }
+    if ((c == 0) || (c == 4)) {
+      fRowPadSize[p][c][iSect] = (clengthO - 2. * fgkCcthick)
+                               / fRowMax[p][c][iSect];
     }
 
   }
 
 }
 
+//_____________________________________________________________________________
+void AliTRDgeometryHole::SetNRowPad()
+{
+  //
+  // Defines the pad size in row direction
+  //
+
+  for (Int_t iPlan = 0; iPlan < fgkNplan; iPlan++) {
+
+    Float_t clengthI = fClengthI[iPlan];
+    Float_t clengthM = fClengthM1[iPlan];
+    Float_t clengthO = fClengthO1[iPlan];
+
+    for (Int_t iSect = 0; iSect < fgkNsect; iSect++) {
+
+      fRow0[iPlan][0][iSect]   = -clengthI/2. - clengthM - clengthO + fgkCcthick; 
+      fRow0[iPlan][1][iSect]   = -clengthI/2. - clengthM            + fgkCcthick;
+      fRow0[iPlan][2][iSect]   = -clengthI/2.                       + fgkCcthick;
+      fRow0[iPlan][3][iSect]   =  clengthI/2.                       + fgkCcthick; 
+      fRow0[iPlan][4][iSect]   =  clengthI/2. + clengthM            + fgkCcthick; 
+
+      for (Int_t iCham = 0; iCham < fgkNcham; iCham++) {
+
+        if (iCham == 2) {
+          fRowMax[iPlan][iCham][iSect] = 18;
+          fRowPadSize[iPlan][iCham][iSect] = (clengthI - 2. * fgkCcthick)
+                                           / fRowMax[iPlan][iCham][iSect];
+        }
+        if ((iCham == 1) || (iCham == 3)) {
+          fRowMax[iPlan][iCham][iSect] = 24;
+          fRowPadSize[iPlan][iCham][iSect] = (clengthM - 2. * fgkCcthick)
+                                           / fRowMax[iPlan][iCham][iSect];
+        }
+        if ((iCham == 0) || (iCham == 4)) {
+          if (iPlan <  4) {
+            fRowMax[iPlan][iCham][iSect] = 24;
+          }
+          if (iPlan == 4) {
+            fRowMax[iPlan][iCham][iSect] = 22;
+          }
+          if (iPlan == 5) {
+            fRowMax[iPlan][iCham][iSect] = 20;
+          }
+          fRowPadSize[iPlan][iCham][iSect] = (clengthO - 2. * fgkCcthick)
+                                           / fRowMax[iPlan][iCham][iSect];
+        }
+
+      }
+    }
+  }
+
+}
+
 //_____________________________________________________________________________
 void AliTRDgeometryHole::CreateGeometry(Int_t *idtmed)
 {
@@ -166,36 +242,37 @@ void AliTRDgeometryHole::CreateGeometry(Int_t *idtmed)
 
   Int_t iplan;
 
-  const Int_t npar_trd = 4;
-  const Int_t npar_cha = 3;
+  const Int_t kNparTrd = 4;
+  const Int_t kNparCha = 3;
+  const Int_t kNplan   = fgkNplan;
 
-  Float_t par_trd[npar_trd];
-  Float_t par_cha[npar_cha];
+  Float_t parTrd[kNparTrd];
+  Float_t parCha[kNparCha];
 
   Float_t xpos, ypos, zpos;
 
   AliTRDgeometry::CreateGeometry(idtmed);
 
   // The TRD mother volume for one sector (Air) (dimensions identical to BTR1)
-  par_trd[0] = kSwidth1/2.;
-  par_trd[1] = kSwidth2/2.;
-  par_trd[2] = kSlenTR1/2.;
-  par_trd[3] = kSheight/2.;
-  gMC->Gsvolu("TRD1","TRD1",idtmed[1302-1],par_trd,npar_trd);
+  parTrd[0] = fgkSwidth1/2.;
+  parTrd[1] = fgkSwidth2/2.;
+  parTrd[2] = fgkSlenTR1/2.;
+  parTrd[3] = fgkSheight/2.;
+  gMC->Gsvolu("TRD1","TRD1",idtmed[1302-1],parTrd,kNparTrd);
   
   // The TRD mother volume for one sector (Air) (dimensions identical to BTR2)
-  par_trd[0] = kSwidth1/2.;
-  par_trd[1] = kSwidth2/2.;
-  par_trd[2] = kSlenTR2/2.;
-  par_trd[3] = kSheight/2.;
-  gMC->Gsvolu("TRD2","TRD1",idtmed[1302-1],par_trd,npar_trd);
+  parTrd[0] = fgkSwidth1/2.;
+  parTrd[1] = fgkSwidth2/2.;
+  parTrd[2] = fgkSlenTR2/2.;
+  parTrd[3] = fgkSheight/2.;
+  gMC->Gsvolu("TRD2","TRD1",idtmed[1302-1],parTrd,kNparTrd);
 
   // The TRD mother volume for one sector (Air) (dimensions identical to BTR3)
-  par_trd[0] = kSwidth1/2.;
-  par_trd[1] = kSwidth2/2.;
-  par_trd[2] = kSlenTR3/2.;
-  par_trd[3] = kSheight/2.;
-  gMC->Gsvolu("TRD3","TRD1",idtmed[1302-1],par_trd,npar_trd);
+  parTrd[0] = fgkSwidth1/2.;
+  parTrd[1] = fgkSwidth2/2.;
+  parTrd[2] = fgkSlenTR3/2.;
+  parTrd[3] = fgkSheight/2.;
+  gMC->Gsvolu("TRD3","TRD1",idtmed[1302-1],parTrd,kNparTrd);
 
   // Position the chambers in the TRD mother volume
   for (iplan = 1; iplan <= kNplan; iplan++) {
@@ -203,208 +280,208 @@ void AliTRDgeometryHole::CreateGeometry(Int_t *idtmed)
     // The inner chambers ---------------------------------------------------------------
 
     // the aluminum frame
-    par_cha[0] = fCwidth[iplan-1]/2.;
-    par_cha[1] = fClengthI[iplan-1]/2.;
-    par_cha[2] = kCaframe/2.;
+    parCha[0] = fCwidth[iplan-1]/2.;
+    parCha[1] = fClengthI[iplan-1]/2.;
+    parCha[2] = fgkCaframe/2.;
     xpos       = 0.;
     ypos       = 0.;
-    zpos       = kCheight - kCaframe/2. - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UAFI",iplan       ,"TRD1",xpos,ypos,zpos,0,"MANY",par_cha,npar_cha);
+    zpos       = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UAFI",iplan       ,"TRD1",xpos,ypos,zpos,0,"MANY",parCha,kNparCha);
 
     // the inner part of the aluminum frame
-    par_cha[0] = fCwidth[iplan-1]/2.   - kCathick;
-    par_cha[1] = fClengthI[iplan-1]/2. - kCathick;
-    par_cha[2] = kCaframe/2.;
+    parCha[0] = fCwidth[iplan-1]/2.   - fgkCathick;
+    parCha[1] = fClengthI[iplan-1]/2. - fgkCathick;
+    parCha[2] = fgkCaframe/2.;
     xpos       = 0.;
     ypos       = 0.;
-    zpos       = kCheight - kCaframe/2. - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UAII",iplan       ,"TRD1",xpos,ypos,zpos,0,"ONLY",par_cha,npar_cha);
+    zpos       = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UAII",iplan       ,"TRD1",xpos,ypos,zpos,0,"ONLY",parCha,kNparCha);
 
     // the carbon frame
-    par_cha[0] = fCwidth[iplan-1]/2.;
-    par_cha[1] = fClengthI[iplan-1]/2.;
-    par_cha[2] = kCcframe/2.;
+    parCha[0] = fCwidth[iplan-1]/2.;
+    parCha[1] = fClengthI[iplan-1]/2.;
+    parCha[2] = fgkCcframe/2.;
     xpos       = 0.;
     ypos       = 0.;
-    zpos       = kCcframe/2.            - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UCFI",iplan       ,"TRD1",xpos,ypos,zpos,0,"MANY",par_cha,npar_cha);
+    zpos       = fgkCcframe/2.            - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UCFI",iplan       ,"TRD1",xpos,ypos,zpos,0,"MANY",parCha,kNparCha);
 
     // the inner part of the carbon frame
-    par_cha[0] = fCwidth[iplan-1]/2.   - kCcthick;
-    par_cha[1] = fClengthI[iplan-1]/2. - kCcthick;
-    par_cha[2] = kCcframe/2.;
+    parCha[0] = fCwidth[iplan-1]/2.   - fgkCcthick;
+    parCha[1] = fClengthI[iplan-1]/2. - fgkCcthick;
+    parCha[2] = fgkCcframe/2.;
     xpos       = 0.;
     ypos       = 0.;
-    zpos       = kCcframe/2.            - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UCII",iplan       ,"TRD1",xpos,ypos,zpos,0,"ONLY",par_cha,npar_cha);
+    zpos       = fgkCcframe/2.            - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UCII",iplan       ,"TRD1",xpos,ypos,zpos,0,"ONLY",parCha,kNparCha);
 
     // The middle chambers --------------------------------------------------------------
 
     // the aluminum frame
-    par_cha[0] = fCwidth[iplan-1]/2.;
-    par_cha[1] = fClengthM1[iplan-1]/2.;
-    par_cha[2] = kCaframe/2.;
+    parCha[0] = fCwidth[iplan-1]/2.;
+    parCha[1] = fClengthM1[iplan-1]/2.;
+    parCha[2] = fgkCaframe/2.;
     xpos       = 0.;
-    ypos       = fClengthI[iplan-1]/2.  + fClengthM1[iplan-1]/2.;
-    zpos       = kCheight - kCaframe/2. - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UAFM",iplan         ,"TRD1",xpos, ypos,zpos,0,"MANY",par_cha,npar_cha);
-    gMC->Gsposp("UAFM",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",par_cha,npar_cha);
-    par_cha[0] = fCwidth[iplan-1]/2.;
-    par_cha[1] = fClengthM2[iplan-1]/2.;
-    par_cha[2] = kCaframe/2.;
+    ypos       = fClengthI[iplan-1]/2.+ fClengthM1[iplan-1]/2.;
+    zpos       = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UAFM",iplan         ,"TRD1",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
+    gMC->Gsposp("UAFM",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
+    parCha[0] = fCwidth[iplan-1]/2.;
+    parCha[1] = fClengthM2[iplan-1]/2.;
+    parCha[2] = fgkCaframe/2.;
     xpos       = 0.;
-    ypos       = fClengthM2[iplan-1]/2. - kSlenTR2/2.;
-    zpos       = kCheight - kCaframe/2. - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UAFM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",par_cha,npar_cha);
+    ypos       = fClengthM2[iplan-1]/2. - fgkSlenTR2/2.;
+    zpos       = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UAFM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
 
     // the inner part of the aluminum frame
-    par_cha[0] = fCwidth[iplan-1]/2.    - kCathick;
-    par_cha[1] = fClengthM1[iplan-1]/2. - kCathick;
-    par_cha[2] = kCaframe/2.;
+    parCha[0] = fCwidth[iplan-1]/2.    - fgkCathick;
+    parCha[1] = fClengthM1[iplan-1]/2. - fgkCathick;
+    parCha[2] = fgkCaframe/2.;
     xpos       = 0.;
-    ypos       = fClengthI[iplan-1]/2.  + fClengthM1[iplan-1]/2.;
-    zpos       = kCheight - kCaframe/2. - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UAIM",iplan         ,"TRD1",xpos, ypos,zpos,0,"ONLY",par_cha,npar_cha);
-    gMC->Gsposp("UAIM",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",par_cha,npar_cha);
-    par_cha[0] = fCwidth[iplan-1]/2.    - kCathick;
-    par_cha[1] = fClengthM2[iplan-1]/2. - kCathick;
-    par_cha[2] = kCaframe/2.;
+    ypos       = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]/2.;
+    zpos       = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UAIM",iplan         ,"TRD1",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
+    gMC->Gsposp("UAIM",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
+    parCha[0] = fCwidth[iplan-1]/2.    - fgkCathick;
+    parCha[1] = fClengthM2[iplan-1]/2. - fgkCathick;
+    parCha[2] = fgkCaframe/2.;
     xpos       = 0.;
-    ypos       = fClengthM2[iplan-1]/2. - kSlenTR2/2.;
-    zpos       = kCheight - kCaframe/2. - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UAIM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",par_cha,npar_cha);
+    ypos       = fClengthM2[iplan-1]/2. - fgkSlenTR2/2.;
+    zpos       = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UAIM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
 
     // the carbon frame
-    par_cha[0] = fCwidth[iplan-1]/2.;
-    par_cha[1] = fClengthM1[iplan-1]/2.;
-    par_cha[2] = kCcframe/2.;
+    parCha[0] = fCwidth[iplan-1]/2.;
+    parCha[1] = fClengthM1[iplan-1]/2.;
+    parCha[2] = fgkCcframe/2.;
     xpos       = 0.;
     ypos       = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]/2.;
-    zpos       = kCcframe/2.           - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UCFM",iplan         ,"TRD1",xpos, ypos,zpos,0,"MANY",par_cha,npar_cha);
-    gMC->Gsposp("UCFM",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",par_cha,npar_cha);
-    par_cha[0] = fCwidth[iplan-1]/2.;
-    par_cha[1] = fClengthM2[iplan-1]/2.;
-    par_cha[2] = kCcframe/2.;
+    zpos       = fgkCcframe/2.         - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UCFM",iplan         ,"TRD1",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
+    gMC->Gsposp("UCFM",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
+    parCha[0] = fCwidth[iplan-1]/2.;
+    parCha[1] = fClengthM2[iplan-1]/2.;
+    parCha[2] = fgkCcframe/2.;
     xpos       = 0.;
-    ypos       = fClengthM2[iplan-1]/2. - kSlenTR2/2.;
-    zpos       = kCcframe/2.            - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UCFM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",par_cha,npar_cha);
+    ypos       = fClengthM2[iplan-1]/2. - fgkSlenTR2/2.;
+    zpos       = fgkCcframe/2.          - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UCFM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
 
     // the inner part of the carbon frame
-    par_cha[0] = fCwidth[iplan-1]/2.    - kCcthick;
-    par_cha[1] = fClengthM1[iplan-1]/2. - kCcthick;
-    par_cha[2] = kCcframe/2.;
+    parCha[0] = fCwidth[iplan-1]/2.    - fgkCcthick;
+    parCha[1] = fClengthM1[iplan-1]/2. - fgkCcthick;
+    parCha[2] = fgkCcframe/2.;
     xpos       = 0.;
     ypos       = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]/2.;
-    zpos       = kCcframe/2.           - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UCIM",iplan         ,"TRD1",xpos, ypos,zpos,0,"ONLY",par_cha,npar_cha);
-    gMC->Gsposp("UCIM",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",par_cha,npar_cha);
-    par_cha[0] = fCwidth[iplan-1]/2.    - kCcthick;
-    par_cha[1] = fClengthM2[iplan-1]/2. - kCcthick;
-    par_cha[2] = kCcframe/2.;
+    zpos       = fgkCcframe/2.         - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UCIM",iplan         ,"TRD1",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
+    gMC->Gsposp("UCIM",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
+    parCha[0] = fCwidth[iplan-1]/2.    - fgkCcthick;
+    parCha[1] = fClengthM2[iplan-1]/2. - fgkCcthick;
+    parCha[2] = fgkCcframe/2.;
     xpos       = 0.;
-    ypos       = fClengthM2[iplan-1]/2. - kSlenTR2/2.;
-    zpos       = kCcframe/2.            - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UCIM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",par_cha,npar_cha);
+    ypos       = fClengthM2[iplan-1]/2. - fgkSlenTR2/2.;
+    zpos       = fgkCcframe/2.          - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UCIM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
 
     // The outer chambers ---------------------------------------------------------------
 
     // the aluminum frame
-    par_cha[0] = fCwidth[iplan-1]/2.;
-    par_cha[1] = fClengthO1[iplan-1]/2.;
-    par_cha[2] = kCaframe/2.;
+    parCha[0] = fCwidth[iplan-1]/2.;
+    parCha[1] = fClengthO1[iplan-1]/2.;
+    parCha[2] = fgkCaframe/2.;
     xpos       = 0.;
     ypos       = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]    + fClengthO1[iplan-1]/2.;
-    zpos       = kCheight - kCaframe/2. - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UAFO",iplan         ,"TRD1",xpos, ypos,zpos,0,"MANY",par_cha,npar_cha);
-    gMC->Gsposp("UAFO",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",par_cha,npar_cha);
-    par_cha[0] = fCwidth[iplan-1]/2.;
-    par_cha[1] = fClengthO2[iplan-1]/2.;
-    par_cha[2] = kCaframe/2.;
+    zpos       = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UAFO",iplan         ,"TRD1",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
+    gMC->Gsposp("UAFO",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
+    parCha[0] = fCwidth[iplan-1]/2.;
+    parCha[1] = fClengthO2[iplan-1]/2.;
+    parCha[2] = fgkCaframe/2.;
     xpos       = 0.;
-    ypos       = fClengthM2[iplan-1]    + fClengthO2[iplan-1]/2. - kSlenTR2/2.;
-    zpos       = kCheight - kCaframe/2. - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UAFO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",par_cha,npar_cha);
-    par_cha[0] = fCwidth[iplan-1]/2.;
-    par_cha[1] = fClengthO3[iplan-1]/2.;
-    par_cha[2] = kCaframe/2.;
+    ypos       = fClengthM2[iplan-1]   + fClengthO2[iplan-1]/2. - fgkSlenTR2/2.;
+    zpos       = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UAFO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
+    parCha[0] = fCwidth[iplan-1]/2.;
+    parCha[1] = fClengthO3[iplan-1]/2.;
+    parCha[2] = fgkCaframe/2.;
     xpos       = 0.;
-    ypos       = fClengthO3[iplan-1]/2. - kSlenTR3/2.;
-    zpos       = kCheight - kCaframe/2. - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UAFO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"MANY",par_cha,npar_cha);
+    ypos       = fClengthO3[iplan-1]/2. - fgkSlenTR3/2.;
+    zpos       = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UAFO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
 
     // the inner part of the aluminum frame
-    par_cha[0] = fCwidth[iplan-1]/2.    - kCathick;
-    par_cha[1] = fClengthO1[iplan-1]/2. - kCathick;
-    par_cha[2] = kCaframe/2.;
+    parCha[0] = fCwidth[iplan-1]/2.    - fgkCathick;
+    parCha[1] = fClengthO1[iplan-1]/2. - fgkCathick;
+    parCha[2] = fgkCaframe/2.;
     xpos       = 0.;
     ypos       = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]    + fClengthO1[iplan-1]/2.;
-    zpos       = kCheight - kCaframe/2. - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UAIO",iplan         ,"TRD1",xpos, ypos,zpos,0,"ONLY",par_cha,npar_cha);
-    gMC->Gsposp("UAIO",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",par_cha,npar_cha);
-    par_cha[0] = fCwidth[iplan-1]/2.    - kCathick;
-    par_cha[1] = fClengthO2[iplan-1]/2. - kCathick;
-    par_cha[2] = kCaframe/2.;
+    zpos       = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UAIO",iplan         ,"TRD1",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
+    gMC->Gsposp("UAIO",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
+    parCha[0] = fCwidth[iplan-1]/2.    - fgkCathick;
+    parCha[1] = fClengthO2[iplan-1]/2. - fgkCathick;
+    parCha[2] = fgkCaframe/2.;
     xpos       = 0.;
-    ypos       = fClengthM2[iplan-1]    + fClengthO2[iplan-1]/2. - kSlenTR2/2.;
-    zpos       = kCheight - kCaframe/2. - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UAIO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",par_cha,npar_cha);
-    par_cha[0] = fCwidth[iplan-1]/2.    - kCathick;
-    par_cha[1] = fClengthO3[iplan-1]/2. - kCathick;
-    par_cha[2] = kCaframe/2.;
+    ypos       = fClengthM2[iplan-1]   + fClengthO2[iplan-1]/2. - fgkSlenTR2/2.;
+    zpos       = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UAIO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
+    parCha[0] = fCwidth[iplan-1]/2.    - fgkCathick;
+    parCha[1] = fClengthO3[iplan-1]/2. - fgkCathick;
+    parCha[2] = fgkCaframe/2.;
     xpos       = 0.;
-    ypos       = fClengthO3[iplan-1]/2. - kSlenTR3/2.;
-    zpos       = kCheight - kCaframe/2. - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UAIO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"ONLY",par_cha,npar_cha);
+    ypos       = fClengthO3[iplan-1]/2. - fgkSlenTR3/2.;
+    zpos       = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UAIO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
 
     // the carbon frame
-    par_cha[0] = fCwidth[iplan-1]/2.;
-    par_cha[1] = fClengthO1[iplan-1]/2.;
-    par_cha[2] = kCcframe/2.;
+    parCha[0] = fCwidth[iplan-1]/2.;
+    parCha[1] = fClengthO1[iplan-1]/2.;
+    parCha[2] = fgkCcframe/2.;
     xpos       = 0.;
     ypos       = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]    + fClengthO1[iplan-1]/2.;
-    zpos       = kCcframe/2.           - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UCFO",iplan,         "TRD1",xpos, ypos,zpos,0,"MANY",par_cha,npar_cha);
-    gMC->Gsposp("UCFO",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",par_cha,npar_cha);
-    par_cha[0] = fCwidth[iplan-1]/2.;
-    par_cha[1] = fClengthO2[iplan-1]/2.;
-    par_cha[2] = kCcframe/2.;
+    zpos       = fgkCcframe/2.         - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UCFO",iplan,         "TRD1",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
+    gMC->Gsposp("UCFO",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
+    parCha[0] = fCwidth[iplan-1]/2.;
+    parCha[1] = fClengthO2[iplan-1]/2.;
+    parCha[2] = fgkCcframe/2.;
     xpos       = 0.;
-    ypos       = fClengthM2[iplan-1]    + fClengthO2[iplan-1]/2. - kSlenTR2/2.;
-    zpos       = kCcframe/2.            - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UCFO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",par_cha,npar_cha);
-    par_cha[0] = fCwidth[iplan-1]/2.;
-    par_cha[1] = fClengthO3[iplan-1]/2.;
-    par_cha[2] = kCcframe/2.;
+    ypos       = fClengthM2[iplan-1]    + fClengthO2[iplan-1]/2. - fgkSlenTR2/2.;
+    zpos       = fgkCcframe/2.          - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UCFO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
+    parCha[0] = fCwidth[iplan-1]/2.;
+    parCha[1] = fClengthO3[iplan-1]/2.;
+    parCha[2] = fgkCcframe/2.;
     xpos       = 0.;
-    ypos       = fClengthO3[iplan-1]/2. - kSlenTR3/2.;
-    zpos       = kCcframe/2.            - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UCFO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"MANY",par_cha,npar_cha);
+    ypos       = fClengthO3[iplan-1]/2. - fgkSlenTR3/2.;
+    zpos       = fgkCcframe/2.          - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UCFO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
 
     // the inner part of the carbon frame
-    par_cha[0] = fCwidth[iplan-1]/2.    - kCcthick;
-    par_cha[1] = fClengthO1[iplan-1]/2. - kCcthick;
-    par_cha[2] = kCcframe/2.;
+    parCha[0] = fCwidth[iplan-1]/2.    - fgkCcthick;
+    parCha[1] = fClengthO1[iplan-1]/2. - fgkCcthick;
+    parCha[2] = fgkCcframe/2.;
     xpos       = 0.;
     ypos       = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]    + fClengthO1[iplan-1]/2.;
-    zpos       = kCcframe/2.           - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UCIO",iplan         ,"TRD1",xpos, ypos,zpos,0,"ONLY",par_cha,npar_cha);
-    gMC->Gsposp("UCIO",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",par_cha,npar_cha);
-    par_cha[0] = fCwidth[iplan-1]/2.    - kCcthick;
-    par_cha[1] = fClengthO2[iplan-1]/2. - kCcthick;
-    par_cha[2] = kCcframe/2.;
+    zpos       = fgkCcframe/2.         - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UCIO",iplan         ,"TRD1",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
+    gMC->Gsposp("UCIO",iplan+  kNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
+    parCha[0] = fCwidth[iplan-1]/2.    - fgkCcthick;
+    parCha[1] = fClengthO2[iplan-1]/2. - fgkCcthick;
+    parCha[2] = fgkCcframe/2.;
     xpos       = 0.;
-    ypos       = fClengthM2[iplan-1]    + fClengthO2[iplan-1]/2. - kSlenTR2/2.;
-    zpos       = kCcframe/2.            - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UCIO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",par_cha,npar_cha);
-    par_cha[0] = fCwidth[iplan-1]/2.    - kCcthick;
-    par_cha[1] = fClengthO3[iplan-1]/2. - kCcthick;
-    par_cha[2] = kCcframe/2.;
+    ypos       = fClengthM2[iplan-1]    + fClengthO2[iplan-1]/2. - fgkSlenTR2/2.;
+    zpos       = fgkCcframe/2.          - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UCIO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
+    parCha[0] = fCwidth[iplan-1]/2.    - fgkCcthick;
+    parCha[1] = fClengthO3[iplan-1]/2. - fgkCcthick;
+    parCha[2] = fgkCcframe/2.;
     xpos       = 0.;
-    ypos       = fClengthO3[iplan-1]/2. - kSlenTR3/2.;
-    zpos       = kCcframe/2.            - kSheight/2. + (iplan-1) * (kCheight + kCspace);
-    gMC->Gsposp("UCIO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"ONLY",par_cha,npar_cha);
+    ypos       = fClengthO3[iplan-1]/2. - fgkSlenTR3/2.;
+    zpos       = fgkCcframe/2.          - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
+    gMC->Gsposp("UCIO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
 
   }