Update for Ds
[u/mrichter/AliRoot.git] / ITS / AliITSv11Hybrid.cxx
index a21f7ad..df34a89 100644 (file)
@@ -83,7 +83,6 @@
 
 #include "AliITS.h"
 #include "AliITSDetTypeSim.h"
-#include "AliITSgeom.h"
 #include "AliITShit.h"
 #include "AliITSCalibrationSDD.h"
 #include "AliITSsegmentationSDD.h"
@@ -1025,6 +1024,10 @@ void AliITSv11Hybrid::CreateGeometry() {
     fSSDgeom->SSDCables(vITSV);
     fSupgeom->ServicesCableSupport(vITSS);
   }
+
+  if (AliITSInitGeometry::SupportIsTGeoNative()) {
+    fSupgeom->ITSTPCSupports(vITSS);
+  }
 }
 
 //______________________________________________________________________
@@ -1658,7 +1661,7 @@ void AliITSv11Hybrid::CreateOldGeometry(){
     //     invisible
     //    gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
     //gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., idrotm[199], "MANY");
-    //gMC->Gsatt("ITSV", "SEEN", 0);
+    //gGeoManager->SetVolumeAttribute("ITSV", "SEEN", 0);
 
     //gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "MANY"); //=== LG
     gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY"); //=== LG
@@ -1699,7 +1702,7 @@ void AliITSv11Hybrid::CreateOldGeometry(){
     // --- Place the ghost volume in its mother volume (ITSV) and make it 
     //     invisible
     //gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
-    //gMC->Gsatt("ITSD", "SEEN", 0);
+    //gGeoManager->SetVolumeAttribute("ITSD", "SEEN", 0);
 
     //======================================================================
     // Let's make ITSD an assembly, because we can then add the new geometry
@@ -5417,6 +5420,13 @@ void AliITSv11Hybrid::CreateMaterials(){
     Float_t wInAl[5] = {.816164, .131443,.0330906,.0183836,.000919182};
     Float_t dInAl    = 3.075;
 
+    // Aluminum alloy with 12% Copper - 21 Oct 10
+
+    Float_t aAlCu12[2] = {26.9815, 63.546};
+    Float_t zAlCu12[2] = {13.    , 29.   };
+    Float_t wAlCu12[2] = { 0.88  ,  0.12 };
+    Float_t dAlCu12    = 2.96;
+
     // Kapton
 
     Float_t aKapton[4]={1.00794,12.0107, 14.010,15.9994};
@@ -5480,6 +5490,21 @@ void AliITSv11Hybrid::CreateMaterials(){
     Float_t wPPS[3] = {  6.    , 4.     ,  1.   };
     Float_t dPPS    = 1.35;
 
+    // Megolon (Polyolefin = (C-H2)n) - 20 Oct 10
+    Float_t aMegolon[2] = { 12.0107, 1.00794};
+    Float_t zMegolon[2] = {  6.    , 1.     };
+    Float_t wMegolon[2] = {  1.    , 2.     };
+    Float_t dMegolon    = 1.51; // Mean of various types
+
+    // Standard glass (from glassproperties.com/glasses - M.S. 21 Oct 10)
+    Float_t aStdGlass[7] = {15.9994  ,28.0855  ,22.98977 ,40.078   ,
+                           24.305   ,26.981539,39.0983  };
+    Float_t zStdGlass[7] = { 8.      ,14.      ,11.      ,20.      ,
+                           12.      ,13.      ,19.      };
+    Float_t wStdGlass[7] = { 0.468377, 0.348239, 0.096441, 0.071469,
+                            0.006030, 0.005293, 0.004151};
+    Float_t dStdGlass    = 2.53;
+
     // Glass Fiber (from F.Tosello's web page - M.S. 15 Oct 10)
     Float_t aGlass[11] = {15.9994  ,28.0855  ,40.078   ,26.981539,10.811   ,
                24.305   ,39.0983  ,22.98977 ,18.9984  ,47.867   ,55.845};
@@ -5501,6 +5526,12 @@ void AliITSv11Hybrid::CreateMaterials(){
                           0.001399, 0.399760, 0.022365, 0.177875};
     Float_t dRyton = 1.65;
 
+    // Plexiglas (Poly(methyl methacrylate) (C5O2H8)n - M.S. 05 nov 10)
+    Float_t aPlexy[3] = { 12.0107, 15.9994,  1.00794};
+    Float_t zPlexy[3] = {  6.    , 8.     ,  1.   };
+    Float_t wPlexy[3] = {  5.    , 2.     ,  8.   };
+    Float_t dPlexy    = 1.18;
+
     //SSD NiSn capacitor ends
     Float_t aNiSn[2]  = { 56.6934,118.710};
     Float_t zNiSn[2]  = {     28.,     50.};
@@ -5563,6 +5594,18 @@ void AliITSv11Hybrid::CreateMaterials(){
     AliMixture(27,"GEN Air$",aAir,zAir,dAir,4,wAir);
     AliMedium(27,"GEN Air$",27,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
 
+    AliMixture(35,"PLEXYGLAS$",aPlexy,zPlexy,dPlexy,-3,wPlexy);
+    AliMedium(35,"PLEXYGLAS$",35,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
+
+    AliMixture(36,"STDGLASS$",aStdGlass,zStdGlass,dStdGlass,7,wStdGlass);
+    AliMedium(36,"STDGLASS$",36,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
+
+    AliMixture(37,"ALCU12$",aAlCu12,zAlCu12,dAlCu12,2,wAlCu12);
+    AliMedium(37,"ALCU12$",37,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
+
+    AliMixture(38,"MEGOLON$",aMegolon,zMegolon,dMegolon,-2,wMegolon);
+    AliMedium(38,"MEGOLON$",38,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
+
     AliMixture(39,"RYTON$",aRyton,zRyton,dRyton,14,wRyton);
     AliMedium(39,"RYTON$",39,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
 
@@ -5999,134 +6042,68 @@ void AliITSv11Hybrid::CreateMaterials(){
              deemax,epsil,stmin);
 
 
-    // Anticorodal: Aliminum alloy for tray ring support on Side A
-    den = 2.710301;
-    AliMaterial(93,"ANTICORODAL$",0.26982E+02,0.13000E+02,den,0.89000E+01,0.99900E+03);
+    // Anticorodal (Aliminum alloy) - 08 nov 10
+    // A,Z from Root TGeoElementTable, W from Web sites
+    zZ[0] = 13.0; aA[0] =  26.9815; // Aluminium
+    zZ[1] = 29.0; aA[1] =  63.546 ; // Copper
+    zZ[2] = 26.0; aA[2] =  55.845 ; // Iron
+    zZ[3] = 25.0; aA[3] =  54.938 ; // Manganese
+    zZ[4] = 12.0; aA[4] =  24.305 ; // Magnesium
+    zZ[5] = 14.0; aA[5] =  28.0855; // Silicon
+    zZ[6] = 30.0; aA[6] =  65.39  ; // Zinc
+    zZ[7] = 24.0; aA[7] =  51.9961; // Chromium
+    zZ[8] = 22.0; aA[8] =  47.867 ; // Titanium
+
+    wW[1] = 0.001000;//Cu
+    wW[2] = 0.005000;//Fe
+    wW[3] = 0.007000;//Mn - mean value
+    wW[4] = 0.009000;//Mg - mean value
+    wW[5] = 0.001000;//Si - mean value
+    wW[6] = 0.002000;//Zn
+    wW[7] = 0.002500;//Cr
+    wW[8] = 0.001000;//Ti
+
+    Double_t totFrac = 0;
+    for (Int_t j=1; j<9; j++)
+      totFrac += wW[j];
+    wW[0] = 1. - totFrac;//Al - the remainder
+
+    den = 2.69;
+    AliMixture(93,"ANTICORODAL$",aA,zZ,den,+9,wW);
     AliMedium(93,"ANTICORODAL$",93,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
-    
-}
 
-//______________________________________________________________________
-void AliITSv11Hybrid::InitAliITSgeom() const {
-    //     Based on the geometry tree defined in Geant 3.21, this
-    // routine initilizes the Class AliITSgeom from the Geant 3.21 ITS geometry
-    // sturture.
-    // Inputs:
-    //   none.
-    // Outputs:
-    //   none.
-    // Return:
-    //   none.
-
-  Error("InitAliITSgeom", "QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQq Im I used?");
-
-  /*
-    const Int_t knlayers = 6;
-    const Int_t kndeep = 3;
-    const AliITSDetector kidet[knlayers]={kSPD,kSPD,kSDD,kSDD,kSSD,kSSD};
-    const TString knames[2][knlayers] = {
-     {"/ALIC_1/ITSV_1/ITSD_1/IT12_1/I12A_%d/I10A_%d/I103_%d/I101_1/ITS1_1", // lay=1
-      "/ALIC_1/ITSV_1/ITSD_1/IT12_1/I12A_%d/I20A_%d/I1D3_%d/I1D1_1/ITS2_1", // lay=2
-      "/ALIC_1/ITSV_1/ITSD_1/IT34_1/I004_%d/I302_%d/ITS3_%d", // lay=3
-      "/ALIC_1/ITSV_1/ITSD_1/IT34_1/I005_%d/I402_%d/ITS4_%d", // lay=4
-      "/ALIC_1/ITSV_1/ITSD_1/IT56_1/I565_%d/I562_%d/ITS5_%d", // lay=5
-      "/ALIC_1/ITSV_1/ITSD_1/IT56_1/I569_%d/I566_%d/ITS6_%d"},// lay=6
-     {"/ALIC_1/ITSV_1/ITSD_1/IT12_1/I12B_%d/I10B_%d/I107_%d/I101_1/ITS1_1", // lay=1
-      "/ALIC_1/ITSV_1/ITSD_1/IT12_1/I12B_%d/I20B_%d/I1D7_%d/I1D1_1/ITS2_1", // lay=2
-      "/ALIC_1/ITSV_1/ITSD_1/IT34_1/I004_%d/I302_%d/ITS3_%d", // lay=3
-      "/ALIC_1/ITSV_1/ITSD_1/IT34_1/I005_%d/I402_%d/ITS4_%d", // lay=4
-      "/ALIC_1/ITSV_1/ITSD_1/IT56_1/I565_%d/I562_%d/ITS5_%d", // lay=5
-      "/ALIC_1/ITSV_1/ITSD_1/IT56_1/I569_%d/I566_%d/ITS6_%d"}
-    };
-    const Int_t kitsGeomTreeCopys[knlayers][kndeep]= {{10, 2, 4},// lay=1
-                                                     {10, 4, 4},// lay=2
-                                                     {14, 6, 1},// lay=3
-                                                     {22, 8, 1},// lay=4
-                                                     {34,22, 1},// lay=5
-                                                     {38,25, 1}};//lay=6
-    Int_t       nlad[knlayers],ndet[knlayers];
-    Int_t       mod,lay,lad=0,det=0,i,j,k,cp0,cp1,cp2;
-    TString path,shapeName;
-    TGeoHMatrix materix;
-    Double_t trans[3]={3*0.0},rot[10]={9*0.0,1.0};
-    TArrayD shapePar;
-    TArrayF shapeParF;
-    Bool_t shapeDefined[3]={kFALSE,kFALSE,kFALSE};
-
-    AliDebug(1,"Reading Geometry transformation directly from Modler.");
-    mod = 0;
-    for(i=0;i<knlayers;i++){
-        k = 1;
-        for(j=0;j<kndeep;j++) if(kitsGeomTreeCopys[i][j]!=0)
-            k *= TMath::Abs(kitsGeomTreeCopys[i][j]);
-        mod += k;
-    } // end for i
-
-    SetITSgeom(0);
-    nlad[0]=20;nlad[1]=40;nlad[2]=14;nlad[3]=22;nlad[4]=34;nlad[5]=38;
-    ndet[0]= 4;ndet[1]= 4;ndet[2]= 6;ndet[3]= 8;ndet[4]=22;ndet[5]=25;
-    AliITSgeom* geom = new AliITSgeom(0,6,nlad,ndet,mod);
-    SetITSgeom(geom);
-    mod = 0;
-    for(lay=1;lay<=knlayers;lay++){
-        for(cp0=1;cp0<=kitsGeomTreeCopys[lay-1][0];cp0++){
-            for(cp1=1;cp1<=kitsGeomTreeCopys[lay-1][1];cp1++){
-                for(cp2=1;cp2<=kitsGeomTreeCopys[lay-1][2];cp2++){
-                    path.Form(knames[fMinorVersion-1][lay-1].Data(),
-                              cp0,cp1,cp2);
-                    switch (lay){
-                    case 1:{
-                        det = cp2;
-                        lad = cp1+2*(cp0-1);
-                    }break;
-                    case 2:{
-                        det = cp2;
-                        lad = cp1+4*(cp0-1);
-                    } break;
-                    case 3: case 4: case 5: case 6:{
-                        det = cp1;
-                        lad = cp0;
-                    } break;
-                    } // end switch
-                         //AliInfo(Form("path=%s lay=%d lad=%d det=%d",
-                         //             path.Data(),lay,lad,det));
-                    gMC->GetTransformation(path.Data(),materix);
-                    gMC->GetShape(path.Data(),shapeName,shapePar);
-                    shapeParF.Set(shapePar.GetSize());
-                    for(i=0;i<shapePar.GetSize();i++) shapeParF[i]=shapePar[i];
-                    geom->CreateMatrix(mod,lay,lad,det,kidet[lay-1],trans,rot);
-                    geom->SetTrans(mod,materix.GetTranslation());
-                    geom->SetRotMatrix(mod,materix.GetRotationMatrix());
-                   geom->GetGeomMatrix(mod)->SetPath(path.Data());
-                    switch (lay){
-                    case 1: case 2:
-                       if(!shapeDefined[kSPD]){
-                        geom->ReSetShape(kSPD,new AliITSgeomSPD425Short(
-                                shapeParF.GetSize(),shapeParF.GetArray()));
-                       shapeDefined[kSPD] = kTRUE;
-                    }break;
-                    case 3: case 4:
-                       if(!shapeDefined[kSDD]){
-                        geom->ReSetShape(kSDD,new AliITSgeomSDD256(
-                                shapeParF.GetSize(),shapeParF.GetArray()));
-                       shapeDefined[kSDD] = kTRUE;
-                    }break;
-                    case 5: case 6:
-                       if(!shapeDefined[kSSD]){
-                        geom->ReSetShape(kSSD,new AliITSgeomSSD75and275(
-                                shapeParF.GetSize(),shapeParF.GetArray()));
-                       shapeDefined[kSSD] = kTRUE;
-                    }break;
-                    default:{
-                    }break;
-                    } // end switch
-                    mod++;
-                } /// end for cp2
-            } // end for cp1
-        } // end for cp0
-    } // end for lay
-    return;
-  */
+    // Hokotol (another Aluminium alloy) - 08 nov 10
+    // A,Z from Root TGeoElementTable, W from Web sites
+    zZ[0] = 13.0; aA[0] =  26.9815; // Aluminium
+    zZ[1] = 29.0; aA[1] =  63.546 ; // Copper
+    zZ[2] = 26.0; aA[2] =  55.845 ; // Iron
+    zZ[3] = 25.0; aA[3] =  54.938 ; // Manganese
+    zZ[4] = 12.0; aA[4] =  24.305 ; // Magnesium
+    zZ[5] = 14.0; aA[5] =  28.0855; // Silicon
+    zZ[6] = 30.0; aA[6] =  65.39  ; // Zinc
+    zZ[7] = 24.0; aA[7] =  51.9961; // Chromium
+    zZ[8] = 22.0; aA[8] =  47.867 ; // Titanium
+    zZ[9] = 40.0; aA[9] =  91.224 ; // Zirconium
+
+    wW[1] = 0.020500;//Cu - mean value
+    wW[2] = 0.000300;//Fe
+    wW[3] = 0.022000;//Mn - mean value
+    wW[4] = 0.001000;//Mg - mean value
+    wW[5] = 0.002000;//Si - mean value
+    wW[6] = 0.066500;//Zn
+    wW[7] = 0.005000;//Cr
+    wW[8] = 0.000600;//Ti
+    wW[9] = 0.001650;//Zr - mean value
+
+    totFrac = 0;
+    for (Int_t j=1; j<10; j++)
+      totFrac += wW[j];
+    wW[0] = 1. - totFrac;//Al - the remainder
+
+    den = 2.69;
+    AliMixture(34,"HOKOTOL$",aA,zZ,den,+10,wW);
+    AliMedium(34,"HOKOTOL$",34,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
+    
 }
 
 //______________________________________________________________________
@@ -6172,59 +6149,6 @@ void AliITSv11Hybrid::SetDefaults(){
     return;
 }
 //______________________________________________________________________
-void AliITSv11Hybrid::DrawModule() const{
-    //     Draw a shaded view of the FMD version 10.
-    // Inputs:
-    //   none.
-    // Outputs:
-    //   none.
-    // Return:
-    //   none.
-
-    // Set everything unseen
-    gMC->Gsatt("*", "seen", -1);
-    // 
-    // Set ALIC mother visible
-    gMC->Gsatt("ALIC","SEEN",0);
-    //
-    // Set the volumes visible
-    gMC->Gsatt("ITSD","SEEN",0);
-    gMC->Gsatt("ITS1","SEEN",1);
-    gMC->Gsatt("ITS2","SEEN",1);
-    gMC->Gsatt("ITS3","SEEN",1);
-    gMC->Gsatt("ITS4","SEEN",1);
-    gMC->Gsatt("ITS5","SEEN",1);
-    gMC->Gsatt("ITS6","SEEN",1);
-    //
-    gMC->Gsatt("IPCB","SEEN",1);
-    gMC->Gsatt("ICO2","SEEN",1);
-    gMC->Gsatt("ICER","SEEN",0);
-    gMC->Gsatt("ISI2","SEEN",0);
-    gMC->Gsatt("IPLA","SEEN",0);
-    gMC->Gsatt("ICO3","SEEN",0);
-    gMC->Gsatt("IEPX","SEEN",0);
-    gMC->Gsatt("ISI3","SEEN",1);
-    gMC->Gsatt("ISUP","SEEN",0);
-    gMC->Gsatt("ICHO","SEEN",0);
-    gMC->Gsatt("ICMO","SEEN",0);
-    gMC->Gsatt("ICMD","SEEN",0);
-    gMC->Gsatt("ICCO","SEEN",1);
-    gMC->Gsatt("ICCM","SEEN",0);
-    gMC->Gsatt("ITMD","SEEN",0);
-    gMC->Gsatt("ITTT","SEEN",1);
-    //
-    gMC->Gdopt("hide", "on");
-    gMC->Gdopt("shad", "on");
-    gMC->Gsatt("*", "fill", 7);
-    gMC->SetClipBox(".");
-    gMC->SetClipBox("*", 0, 300, -300, 300, -300, 300);
-    gMC->DefaultRange();
-    gMC->Gdraw("alic", 40, 30, 0, 11, 10, .07, .07);
-    gMC->Gdhead(1111, "Inner Tracking System Version 1");
-    gMC->Gdman(17, 6, "MAN");
-}
-
-//______________________________________________________________________
 void AliITSv11Hybrid::StepManager(){
     //    Called for every step in the ITS, then calles the AliITShit class
     // creator with the information to be recoreded about that hit.