LCOV - code coverage report
Current view: top level - STRUCT - AliDIPOv2.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 165 415 39.8 %
Date: 2016-06-14 17:26:59 Functions: 6 9 66.7 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       3             :  *                                                                        *
       4             :  * Author: The ALICE Off-line Project.                                    *
       5             :  * Contributors are mentioned in the code where appropriate.              *
       6             :  *                                                                        *
       7             :  * Permission to use, copy, modify and distribute this software and its   *
       8             :  * documentation strictly for non-commercial purposes is hereby granted   *
       9             :  * without fee, provided that the above copyright notice appears in all   *
      10             :  * copies and that both the copyright notice and this permission notice   *
      11             :  * appear in the supporting documentation. The authors make no claims     *
      12             :  * about the suitability of this software for any purpose. It is          *
      13             :  * provided "as is" without express or implied warranty.                  *
      14             :  **************************************************************************/
      15             : 
      16             : /* $Id$ */
      17             : 
      18             : ///////////////////////////////////////////////////////////////////////////////
      19             : //                                                                           //
      20             : //  Magnetic Dipole version 1                                                //
      21             : //                                                                           //
      22             : //Begin_Html
      23             : /*
      24             : <img src="picts/AliDIPOv2Class.gif">
      25             : </pre>
      26             : <br clear=left>
      27             : <font size=+2 color=red>
      28             : <p>The responsible person for this module is
      29             : <a href="mailto:andreas.morsch@cern.ch">Andreas Morsch</a>.
      30             : </font>
      31             : <pre>
      32             : */
      33             : //End_Html
      34             : //                                                                           //
      35             : //                                                                           //
      36             : 
      37             : #include <TGeoManager.h>
      38             : #include <TGeoGlobalMagField.h>
      39             : #include <TGeoVolume.h>
      40             : #include <TVirtualMC.h>
      41             : #include <TArrayI.h>
      42             : 
      43             : #include "AliConst.h"
      44             : #include "AliDIPOv2.h"
      45             : #include "AliMagF.h"
      46             : #include "AliRun.h"
      47             :  
      48          12 : ClassImp(AliDIPOv2)
      49             :  
      50             : //_____________________________________________________________________________
      51          12 : AliDIPOv2::AliDIPOv2() 
      52          36 : {
      53             :   //
      54             :   // Last design of magnetic dipole version 2
      55             :   //
      56          12 : }
      57             :  
      58             : //_____________________________________________________________________________
      59             : AliDIPOv2::AliDIPOv2(const char *name, const char *title)
      60           1 :   : AliDIPO(name,title)
      61           3 : {
      62             :   //
      63             :   // Standard constructor for the magnetic dipole version 2    
      64           1 : }
      65             : 
      66             : void AliDIPOv2::CreateGeometry()
      67             : {
      68             :   //
      69             :   // Creation of the geometry of the magnetic DIPOLE version 2
      70             :   //
      71             : 
      72           2 :     CreateSpectrometerDipole();
      73           1 :     CreateCompensatorDipole();
      74           1 : }
      75             : 
      76             : 
      77             : //_____________________________________________________________________________
      78             : void AliDIPOv2::CreateSpectrometerDipole()
      79             : {
      80             :   //
      81             :   // Creation of the geometry of the magnetic DIPOLE version 2
      82             :   //
      83             : 
      84           0 :   Float_t cpar[5], tpar[18], ypar[12];
      85             :   Float_t dz, dx, dy;
      86           0 :   Int_t idrotm[1899];
      87             :   Float_t accMax, the1, phi1, the2, phi2, the3, phi3;
      88             :   
      89           0 :   Int_t *idtmed = fIdtmed->GetArray()-1799;
      90             : 
      91             : //  const Int_t kCoil = 1813;
      92             : //  const Int_t kCable= 1811;
      93             : 
      94             :   const Int_t kCoil = 1808;
      95             :   const Int_t kCable= 1808;
      96             :   
      97             :   accMax = 9.;   // ANGLE POLAIRE MAXIMUM 
      98             : 
      99             :   //       DIPOLE MAGNET 
     100             :   const Float_t kZDipole = 975; 
     101             : 
     102           0 :   tpar[ 0] = 0.; 
     103           0 :   tpar[ 1] = 360.;
     104           0 :   tpar[ 2] = 4.; 
     105             :   //
     106           0 :   tpar[ 3] = -250.55 + kZDipole;
     107           0 :   tpar[ 4] =  30.1;
     108           0 :   tpar[ 5] = 527.34; 
     109             :   //
     110           0 :   tpar[ 6] = 37. + kZDipole;
     111           0 :   tpar[ 7] =  30.1;
     112           0 :   tpar[ 8] = 527.34;
     113             :   //
     114           0 :   tpar[ 9] = 37. + kZDipole;
     115           0 :   tpar[10] = tpar[ 9] * TMath::Tan(2. * TMath::Pi() / 180.);
     116           0 :   tpar[11] = 527.34;
     117             :   //
     118           0 :   tpar[12] = 260.55 + kZDipole;
     119           0 :   tpar[13] = tpar[12] * TMath::Tan(2. * TMath::Pi() / 180.);
     120           0 :   tpar[14] = 527.34;
     121           0 :   TVirtualMC::GetMC()->Gsvolu("DDIP", "PCON", idtmed[1874], tpar, 15);
     122             :   //
     123             :   //       Coils 
     124             :   // air - m.f. 
     125           0 :   cpar[0] = 207.;
     126           0 :   cpar[1] = 274.;
     127           0 :   cpar[2] = 37.65;
     128           0 :   cpar[3] = 119.;
     129           0 :   cpar[4] = 241.; 
     130             :   //   coil - high cuts
     131           0 :   TVirtualMC::GetMC()->Gsvolu("DC1 ", "TUBS", idtmed[kCoil+40], cpar, 5);
     132           0 :   cpar[3] = -61.;
     133           0 :   cpar[4] = 61.;
     134           0 :   TVirtualMC::GetMC()->Gsvolu("DC2 ", "TUBS", idtmed[kCoil+40], cpar, 5);
     135             : 
     136             :   //  coil - low cuts cuts
     137           0 :   cpar[0] = 207.;
     138             : //  cpar[1] = cpar[0] + 10.;
     139           0 :   cpar[1] = 217;
     140           0 :   cpar[3] = 119.;
     141           0 :   cpar[4] = 241.;
     142             : 
     143           0 :   TVirtualMC::GetMC()->Gsvolu("DC3 ", "TUBS", idtmed[kCoil], cpar, 5);
     144           0 :   cpar[0] = 207.; 
     145           0 :   cpar[1] = 217; 
     146           0 :   cpar[3] = -61.;
     147           0 :   cpar[4] = 61.;
     148           0 :   TVirtualMC::GetMC()->Gsvolu("DC4 ", "TUBS", idtmed[kCoil], cpar, 5);
     149             : 
     150           0 :   TVirtualMC::GetMC()->Gspos("DC3 ", 1, "DC1 ", 0., 0., 0., 0, "ONLY");
     151           0 :   TVirtualMC::GetMC()->Gspos("DC4 ", 1, "DC2 ", 0., 0., 0., 0, "ONLY");
     152             : 
     153             : //  dz =  37.65 - 243.55
     154             :   dz = -205.9-2.45;
     155             :   dx = 5.;
     156           0 :   TVirtualMC::GetMC()->Gspos("DC1 ", 1, "DDIP",  dx, 0.,  dz+kZDipole, 0, "ONLY");
     157           0 :   TVirtualMC::GetMC()->Gspos("DC1 ", 2, "DDIP",  dx, 0., -dz+kZDipole, 0, "ONLY");
     158           0 :   TVirtualMC::GetMC()->Gspos("DC2 ", 1, "DDIP", -dx, 0.,  dz+kZDipole, 0, "ONLY");
     159           0 :   TVirtualMC::GetMC()->Gspos("DC2 ", 2, "DDIP", -dx, 0., -dz+kZDipole, 0, "ONLY");
     160             :   the1 = 180.;
     161             :   phi1 = 0.;
     162             :   the2 = 90.;
     163             :   phi2 = 151.;
     164             :   the3 = 90.;
     165             :   phi3 = 61.;
     166           0 :   AliMatrix(idrotm[1800], the1, phi1, the2, phi2, the3, phi3);
     167             :   phi2 = 29.;  //90-61
     168             :   the3 = -90.;
     169             :   phi3 = -61.;
     170           0 :   AliMatrix(idrotm[1801], the1, phi1, the2, phi2, the3, phi3);
     171             :   the1 = 0.;
     172             :   phi1 = 0.;
     173             :   the2 = 90.;
     174             :   phi2 = 151.;
     175             :   the3 = 90.;
     176             :   phi3 = 61.;
     177           0 :   AliMatrix(idrotm[1802], the1, phi1, the2, phi2, the3, phi3);
     178             :   phi2 = 29.;
     179             :   the3 = -90.;
     180             :   phi3 = -61.;
     181           0 :   AliMatrix(idrotm[1803], the1, phi1, the2, phi2, the3, phi3);
     182             : 
     183           0 :   cpar[0] = 25.;
     184           0 :   cpar[1] = 100.3; //25+75.3
     185           0 :   cpar[2] = 33.5;
     186           0 :   cpar[3] = 270.;
     187           0 :   cpar[4] = 360.;
     188             : //*  coil high cuts
     189           0 :   TVirtualMC::GetMC()->Gsvolu("DC11", "TUBS", idtmed[kCoil+40], cpar, 5);
     190             : 
     191           0 :   dx = TMath::Sin(30.5*kDegrad) * -(207.+33.5)+5./TMath::Sin(30.5*kDegrad); 
     192           0 :   dy = TMath::Cos(30.5*kDegrad) * -(207.+33.5);  
     193           0 :   dz = cpar[1] - 243.55-2.45;
     194           0 :   TVirtualMC::GetMC()->Gspos("DC11", 1, "DDIP",  dx, dy,  dz+kZDipole, idrotm[1800], "ONLY");
     195           0 :   TVirtualMC::GetMC()->Gspos("DC11", 2, "DDIP",  dx, dy, -dz+kZDipole, idrotm[1802], "ONLY");
     196           0 :   TVirtualMC::GetMC()->Gspos("DC11", 3, "DDIP", -dx, dy,  dz+kZDipole, idrotm[1801], "ONLY");
     197           0 :   TVirtualMC::GetMC()->Gspos("DC11", 4, "DDIP", -dx, dy, -dz+kZDipole, idrotm[1803], "ONLY");
     198             : 
     199             : 
     200             : 
     201             : //* ... higher cuts
     202           0 :   cpar[0] = 25.;
     203           0 :   cpar[1] = 100.3; //25+75.3
     204           0 :   cpar[2] = 33.5;
     205           0 :   cpar[3] = 0.;
     206           0 :   cpar[4] = 90.;
     207             : //*  coil high cuts
     208           0 :   TVirtualMC::GetMC()->Gsvolu("DC12", "TUBS", idtmed[kCoil+40], cpar, 5);
     209             : 
     210           0 :   dx = TMath::Sin(30.5*kDegrad) * -(207.+33.5)+5./TMath::Sin(30.5*kDegrad); 
     211           0 :   dy = TMath::Cos(30.5*kDegrad) *(207.+33.5);  
     212           0 :   dz = cpar[1] - 243.55-2.45;
     213           0 :   TVirtualMC::GetMC()->Gspos("DC12", 1, "DDIP",  dx, dy,  dz+kZDipole, idrotm[1801], "ONLY");
     214           0 :   TVirtualMC::GetMC()->Gspos("DC12", 2, "DDIP",  dx, dy, -dz+kZDipole, idrotm[1803], "ONLY");
     215           0 :   TVirtualMC::GetMC()->Gspos("DC12", 3, "DDIP", -dx, dy,  dz+kZDipole, idrotm[1800], "ONLY");
     216           0 :   TVirtualMC::GetMC()->Gspos("DC12", 4, "DDIP", -dx, dy, -dz+kZDipole, idrotm[1802], "ONLY");
     217             : 
     218             :   the1 = 90.;
     219             :   phi1 = 61.;
     220             :   the2 = 90.;
     221             :   phi2 = 151.;
     222             :   the3 = 0.;
     223             :   phi3 = 0.;
     224           0 :   AliMatrix(idrotm[1804], the1, phi1, the2, phi2, the3, phi3);
     225             :   the1 = 90.;
     226             :   phi1 = -61.;
     227             :   the2 = 90.;
     228             :   phi2 = -151.;
     229           0 :   AliMatrix(idrotm[1805], the1, phi1, the2, phi2, the3, phi3);
     230             :   the1 = 90.;
     231             :   phi1 = 119.; //180 -61
     232             :   the2 = 90.;
     233             :   phi2 = 209.; //270-61
     234           0 :   AliMatrix(idrotm[1806], the1, phi1, the2, phi2, the3, phi3);
     235             :   the1 = 90.;
     236             :   phi1 = -119.;
     237             :   the2 = 90.;
     238             :   phi2 = -209.;
     239           0 :   AliMatrix(idrotm[1807], the1, phi1, the2, phi2, the3, phi3); 
     240             : 
     241             : //*  coil - high cuts
     242             : 
     243           0 :   tpar[0] = 37.65;
     244           0 :   tpar[1] = 33.5;
     245           0 :   tpar[2] = 145.5;
     246           0 :   TVirtualMC::GetMC()->Gsvolu("DL1 ", "BOX ", idtmed[kCoil+40], tpar, 3);
     247             : 
     248             : // coil - low cuts
     249             : 
     250           0 :   tpar[0] = 5.;
     251             :   dx = 37.65  - 5.;  
     252           0 :   TVirtualMC::GetMC()->Gsvolu("DL2 ", "BOX ", idtmed[kCoil], tpar, 3);
     253           0 :   TVirtualMC::GetMC()->Gspos("DL2 ", 1, "DL1 ", dx, 0., 0., 0, "ONLY");
     254             : 
     255             :   dx =-53.62;
     256             :   dy =-241.26819;
     257             :   dz = 0.; 
     258           0 :   TVirtualMC::GetMC()->Gspos("DL1 ", 1, "DDIP", dx,  dy, dz+kZDipole, idrotm[1804], "ONLY");
     259           0 :   TVirtualMC::GetMC()->Gspos("DL1 ", 2, "DDIP", dx, -dy, dz+kZDipole, idrotm[1805], "ONLY");
     260           0 :   TVirtualMC::GetMC()->Gspos("DL1 ", 3, "DDIP",-dx,  dy, dz+kZDipole, idrotm[1806], "ONLY");
     261           0 :   TVirtualMC::GetMC()->Gspos("DL1 ", 4, "DDIP",-dx, -dy, dz+kZDipole, idrotm[1807], "ONLY");
     262             : 
     263             :   // Contactor
     264             : 
     265             :  //  high cuts
     266             : 
     267             :   //Steel outer face planes
     268             : 
     269           0 :   cpar[0] = 207.-18.6;
     270           0 :   cpar[1] = 274.+18.6;
     271           0 :   cpar[2] = 1.;
     272           0 :   cpar[3] = -50.;
     273           0 :   cpar[4] = 50.; 
     274             :  
     275           0 :   TVirtualMC::GetMC()->Gsvolu("DCO1", "TUBS", idtmed[1818], cpar, 5);
     276             :   dx = -5.;
     277             :   dz = 168.25-1.5-1.;
     278           0 :   TVirtualMC::GetMC()->Gspos("DCO1", 1, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
     279             :   dz = 243.55+4.5+1.5+1.;
     280           0 :   TVirtualMC::GetMC()->Gspos("DCO1", 2, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
     281             :   
     282             :   // 9.06.2000
     283             : 
     284             :   //  cpar[0] = 207.-18.6;
     285             :   //  cpar[1] = 274.+18.6;
     286             :   // cpar[2] = 1.;
     287           0 :   cpar[3] = 180.-50.;
     288           0 :   cpar[4] = 180.+50.; 
     289             :  
     290           0 :   TVirtualMC::GetMC()->Gsvolu("DCO2", "TUBS", idtmed[1818], cpar, 5);
     291             :   dx = +5.;
     292             :   dz = 168.25-1.5-1.;
     293           0 :   TVirtualMC::GetMC()->Gspos("DCO2", 1, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
     294             :   dz = 243.55+4.5+1.5+1.;
     295           0 :   TVirtualMC::GetMC()->Gspos("DCO2", 2, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
     296             :  
     297             : 
     298             : 
     299             :   // Resin face planes
     300             : 
     301           0 :   cpar[0] = 207.;
     302           0 :   cpar[1] = 274.;
     303           0 :   cpar[2] = .75;
     304           0 :   cpar[3] = -50.;
     305           0 :   cpar[4] = 50.; 
     306             :  
     307           0 :   TVirtualMC::GetMC()->Gsvolu("DCO3", "TUBS", idtmed[1812], cpar, 5);
     308             :   dx = -5;
     309             :   dz = 168.25-0.75;
     310           0 :   TVirtualMC::GetMC()->Gspos("DCO3", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     311             :   dz = 243.55+4.5+0.75;
     312           0 :   TVirtualMC::GetMC()->Gspos("DCO3", 2, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     313             : 
     314             :   // 9.06.2000
     315             : 
     316           0 :   cpar[3] = 180.-50.;
     317           0 :   cpar[4] = 180.+50.; 
     318           0 :   TVirtualMC::GetMC()->Gsvolu("DCO4", "TUBS", idtmed[1812], cpar, 5);
     319             :   dx = +5;
     320             :   dz = 168.25-0.75;
     321           0 :   TVirtualMC::GetMC()->Gspos("DCO4", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     322             :   dz = 243.55+4.5+0.75 ;
     323           0 :   TVirtualMC::GetMC()->Gspos("DCO4", 2, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     324             : 
     325             :  
     326             :   // G10 face plane
     327             : 
     328           0 :   cpar[0] = 207.;
     329           0 :   cpar[1] = 274.;
     330           0 :   cpar[2] = 2.25;
     331           0 :   cpar[3] = -50.;
     332           0 :   cpar[4] = 50.; 
     333             :  
     334           0 :   TVirtualMC::GetMC()->Gsvolu("DCO5", "TUBS", idtmed[1810], cpar, 5);
     335             : 
     336             :   dx = -5;
     337             :   dz = 243.55+2.25;
     338           0 :   TVirtualMC::GetMC()->Gspos("DCO5", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     339             : 
     340             :   // 9.06.2000
     341             : 
     342           0 :   cpar[3] = 180.-50.;
     343           0 :   cpar[4] = 180.+50.; 
     344             : 
     345           0 :   TVirtualMC::GetMC()->Gsvolu("DCO6", "TUBS", idtmed[1810], cpar, 5);
     346             : 
     347             :   dx = +5;
     348             :   dz = 243.55+2.25;
     349           0 :   TVirtualMC::GetMC()->Gspos("DCO6", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     350             : 
     351             :   //Steel supported planes
     352             : 
     353           0 :   cpar[0] = 274.+1.5+2.;
     354           0 :   cpar[1] = 274.+18.6;
     355           0 :   cpar[2] = 1.;
     356           0 :   cpar[3] = -50.;
     357           0 :   cpar[4] = 50.;  
     358             :  
     359           0 :   TVirtualMC::GetMC()->Gsvolu("DCO7", "TUBS", idtmed[1818], cpar, 5);
     360             : 
     361             :   dx = -5;
     362             :   dz = 168.25+1.;
     363           0 :   TVirtualMC::GetMC()->Gspos("DCO7", 1, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
     364             : 
     365             :   // 9.06.2000
     366           0 :   cpar[0] = 274.+1.5+2.;
     367           0 :   cpar[1] = 274.+18.6;
     368           0 :   cpar[2] = 1.;
     369           0 :   cpar[3] = 180.-50.;
     370           0 :   cpar[4] = 180.+50.; 
     371             : 
     372             :  
     373           0 :   TVirtualMC::GetMC()->Gsvolu("DCO8", "TUBS", idtmed[1818], cpar, 5);
     374             : 
     375             :   dx = +5;
     376             :   dz = 168.25+1.;
     377           0 :   TVirtualMC::GetMC()->Gspos("DCO8", 1, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
     378             : 
     379             :   //
     380             : 
     381           0 :   cpar[0] = 207.- 18.6;
     382           0 :   cpar[1] = 207.- 2.- 1.5;
     383           0 :   cpar[2] = 1.;
     384           0 :   cpar[3] = -50.;
     385           0 :   cpar[4] = 50.; 
     386             : 
     387           0 :   TVirtualMC::GetMC()->Gsvolu("DCO9", "TUBS", idtmed[1818], cpar, 5);
     388             : 
     389             :   dx = -5;
     390             :   dz = 168.25+1.;
     391           0 :   TVirtualMC::GetMC()->Gspos("DCO9", 1, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
     392             : 
     393             :   // 9.06.2000
     394             : 
     395           0 :   cpar[0] = 207.- 18.6;
     396           0 :   cpar[1] = 207.- 2.- 1.5;
     397           0 :   cpar[2] = 1.;
     398           0 :   cpar[3] = 180.-50.;
     399           0 :   cpar[4] = 180.+50.; 
     400             : 
     401           0 :   TVirtualMC::GetMC()->Gsvolu("DCOA", "TUBS", idtmed[1818], cpar, 5);
     402             : 
     403             :   dx = +5;
     404             :   dz = 168.25+1.;
     405           0 :   TVirtualMC::GetMC()->Gspos("DCOA", 1, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
     406             : 
     407             : 
     408             :   // Sides steel planes
     409             : 
     410           0 :   cpar[0] = 207. - 1.5 -2.;
     411           0 :   cpar[1] = 207. - 1.5;
     412           0 :   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
     413           0 :   cpar[3] = -50.;
     414           0 :   cpar[4] = 50.; 
     415             :  
     416           0 :   TVirtualMC::GetMC()->Gsvolu("DCOB", "TUBS", idtmed[1818], cpar, 5);
     417             : 
     418           0 :   cpar[0] = 274. + 1.5;
     419           0 :   cpar[1] = 274. + 1.5 +2.;
     420             : 
     421           0 :   TVirtualMC::GetMC()->Gsvolu("DCOC", "TUBS", idtmed[1818], cpar, 5);
     422             : 
     423             :   dx=-5.;
     424             :   dz = ((243.55+4.5+1.5)+168.25)/2;
     425           0 :   TVirtualMC::GetMC()->Gspos("DCOB", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     426           0 :   TVirtualMC::GetMC()->Gspos("DCOC", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     427             : 
     428             :   // 9.06.2000
     429             : 
     430           0 :   cpar[0] = 207. - 1.5 -2.;
     431           0 :   cpar[1] = 207. - 1.5;
     432           0 :   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
     433           0 :   cpar[3] = 180.-50.;
     434           0 :   cpar[4] = 180.+50.; 
     435             : 
     436           0 :   TVirtualMC::GetMC()->Gsvolu("DCOD", "TUBS", idtmed[1818], cpar, 5);
     437             : 
     438           0 :   cpar[0] = 274. + 1.5;
     439           0 :   cpar[1] = 274. + 1.5 +2.;
     440             : 
     441           0 :   TVirtualMC::GetMC()->Gsvolu("DCOE", "TUBS", idtmed[1818], cpar, 5);
     442             : 
     443             :   dx=+5.;
     444             :   dz = ((243.55+4.5+1.5)+168.25)/2;
     445           0 :   TVirtualMC::GetMC()->Gspos("DCOD", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     446           0 :   TVirtualMC::GetMC()->Gspos("DCOE", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     447             : 
     448             : 
     449             :   // Top and bottom resin  planes
     450             : 
     451           0 :   cpar[0] = 207. - 1.5;
     452           0 :   cpar[1] = 207.;
     453           0 :   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
     454           0 :   cpar[3] = -50.;
     455           0 :   cpar[4] = 50.; 
     456             :  
     457           0 :   TVirtualMC::GetMC()->Gsvolu("DCOF", "TUBS", idtmed[1812], cpar, 5);
     458             : 
     459           0 :   cpar[0] = 274.;
     460           0 :   cpar[1] = 274. + 1.5;
     461             : 
     462           0 :   TVirtualMC::GetMC()->Gsvolu("DCOG", "TUBS", idtmed[1812], cpar, 5);
     463             : 
     464             : 
     465             :   dx=-5.;
     466             :   dz = ((243.55+4.5+1.5)+168.25)/2;
     467           0 :   TVirtualMC::GetMC()->Gspos("DCOF", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     468           0 :   TVirtualMC::GetMC()->Gspos("DCOG", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     469             : 
     470             :   // 9.06.2000
     471           0 :   cpar[0] = 207. - 1.5;
     472           0 :   cpar[1] = 207.;
     473           0 :   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
     474             : 
     475           0 :   cpar[3] = 180.-50.;
     476           0 :   cpar[4] = 180.+50.; 
     477             : 
     478           0 :   TVirtualMC::GetMC()->Gsvolu("DCOH", "TUBS", idtmed[1812], cpar, 5);
     479             : 
     480           0 :   cpar[0] = 274.;
     481           0 :   cpar[1] = 274. + 1.5;
     482             : 
     483           0 :   TVirtualMC::GetMC()->Gsvolu("DCOI", "TUBS", idtmed[1812], cpar, 5);
     484             : 
     485             : 
     486             :   dx=+5.;
     487             :   dz = ((243.55+4.5+1.5)+168.25)/2;
     488           0 :   TVirtualMC::GetMC()->Gspos("DCOH", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     489           0 :   TVirtualMC::GetMC()->Gspos("DCOI", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     490             : 
     491             : 
     492             :   // Aluminum cabels
     493             : 
     494           0 :   cpar[0] = 274. + 1.5  +2.;
     495           0 :   cpar[1] = 274. + 1.5  +2. + 80.;
     496           0 :   cpar[2] = 5.05/2;
     497           0 :   cpar[3] = -24.;
     498           0 :   cpar[4] = 24.; 
     499             :  
     500           0 :   TVirtualMC::GetMC()->Gsvolu("DCOJ", "TUBS", idtmed[kCable], cpar, 5);
     501             : 
     502             :   //  dx = 274. + 1.5  +2. +40.;
     503             :   //  dx = 5. + 1.5 +2. +40.;
     504             :   //  dx = 5. + 1.5 +2.;
     505             :   dx=-5.;
     506             :   dz = 168.25 + 5.05 + 5.05/2;
     507           0 :   TVirtualMC::GetMC()->Gspos("DCOJ", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     508             : 
     509             :   dz = 243.55 - 5.05/2;
     510           0 :   TVirtualMC::GetMC()->Gspos("DCOJ", 2, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     511             : 
     512             :   // 9.06.2000
     513             : 
     514           0 :   cpar[3] = 180.-24.;
     515           0 :   cpar[4] = 180.+24.; 
     516             : 
     517           0 :    TVirtualMC::GetMC()->Gsvolu("DCOK", "TUBS", idtmed[kCable], cpar, 5);
     518             : 
     519             :   //  dx = 274. + 1.5  +2. +40.;
     520             :   //  dx = 5. + 1.5 +2. +40.;
     521             :   //  dx = 5. + 1.5 +2.;
     522             :   dx=+5.;
     523             :   dz = 168.25 + 5.05 + 5.05/2;
     524           0 :   TVirtualMC::GetMC()->Gspos("DCOK", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     525             : 
     526             :   dz = 243.55 - 5.05/2;
     527           0 :   TVirtualMC::GetMC()->Gspos("DCOK", 2, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
     528             : 
     529             :  
     530             :   //   YOKE 
     531             : 
     532             : // Top and bottom blocks
     533           0 :   ypar[0] = 298.1; 
     534           0 :   ypar[1] = 69.5;
     535           0 :   ypar[2] = 155.75;
     536             : 
     537             : // iron- high cuts
     538           0 :   TVirtualMC::GetMC()->Gsvolu("DY1 ", "BOX ", idtmed[1858], ypar, 3);
     539           0 :   ypar[0] = 144.+10.; 
     540           0 :   ypar[1] = 193.3+10.;
     541           0 :   ypar[2] = 5.;
     542           0 :   ypar[3] = 155.75;
     543             :   dy = -69.5 + 5.;
     544             : // iron- low cuts
     545           0 :   TVirtualMC::GetMC()->Gsvolu("DY11", "TRD1", idtmed[1818], ypar, 4);
     546           0 :   TVirtualMC::GetMC()->Gspos("DY11", 1, "DY1 ", 0.,  dy, 0., 0, "ONLY");
     547             : 
     548             :   dy = 365.5;
     549             :   dz = 4.95;
     550           0 :   TVirtualMC::GetMC()->Gspos("DY1 ", 1, "DDIP", 0.,  dy, -dz+kZDipole, 0, "ONLY");
     551             : 
     552             :   the1 = 270.;
     553             :   phi1 = 0.;
     554             :   the2 = 270.;
     555             :   phi2 = 90.;
     556             :   the3 = 0.;
     557             :   phi3 = 0.;
     558           0 :   AliMatrix(idrotm[1808], the1, phi1, the2, phi2, the3, phi3);
     559           0 :   TVirtualMC::GetMC()->Gspos("DY1 ", 2, "DDIP", 0., -dy, -dz+kZDipole, idrotm[1808] , "ONLY");
     560             : 
     561             : // side walls
     562             :   //  ypar[0] = 579./2.; 
     563           0 :   ypar[0] = 296.; 
     564           0 :   ypar[1] = 0.;
     565           0 :   ypar[2] = 0.;
     566           0 :   ypar[3] = 155.75;
     567           0 :   ypar[4] = 47.9;
     568           0 :   ypar[5] = 72.55;
     569           0 :   ypar[6] = 4.3058039629;
     570             :   // z+ 
     571           0 :   ypar[7] = 155.75;
     572           0 :   ypar[8] = 47.9;
     573           0 :   ypar[9] = 72.55;
     574           0 :   ypar[10] = 4.3058039629;
     575             : 
     576             : // iron - high cuts
     577             : 
     578           0 :   TVirtualMC::GetMC()->Gsvolu("DY2 ", "TRAP", idtmed[1858], ypar,11);
     579             : 
     580           0 :   ypar[4] = 47.9 -5.;
     581           0 :   ypar[5] = 72.55 -5.;
     582             : 
     583           0 :   ypar[8] = 47.9 -5.;
     584           0 :   ypar[9] = 72.55 -5.;
     585             : 
     586             : 
     587             : // iron - low cuts
     588             : 
     589           0 :   TVirtualMC::GetMC()->Gsvolu("DY22", "TRAP", idtmed[1818], ypar,11);
     590             : 
     591             :   dy = 0.;
     592             :   dx = -5.;
     593             : 
     594           0 :   TVirtualMC::GetMC()->Gspos("DY22", 1, "DY2 ", dx,  dy, 0., 0, "ONLY");
     595             : 
     596             :   the1 = 90.;
     597             :   phi1 = 180.;
     598             :   the2 = 180.;
     599             :   phi2 = 180.;
     600             :   the3 = 90.;
     601             :   phi3 = 90.;
     602           0 :   AliMatrix(idrotm[1809], the1, phi1, the2, phi2, the3, phi3);
     603             : 
     604             :   the1 = 90.;
     605             :   phi1 = 0.;
     606             :   the2 = 180.;
     607             :   phi2 = 0.;
     608             :   the3 = 90.;
     609             :   phi3 = 90.;
     610           0 :   AliMatrix(idrotm[1810], the1, phi1, the2, phi2, the3, phi3);
     611             : 
     612             :   dx = 228.875;
     613             :   dz = - 4.95;
     614             :   
     615           0 :   TVirtualMC::GetMC()->Gspos("DY2 ", 1, "DDIP",  dx, 0.0,  dz+kZDipole, idrotm[1809], "ONLY");
     616           0 :   TVirtualMC::GetMC()->Gspos("DY2 ", 2, "DDIP", -dx, 0.0,  dz+kZDipole, idrotm[1810], "ONLY");
     617             :   
     618           0 :   AliMatrix(idrotm[1811], 270., 0., 90., 90., 180., 0.);
     619           0 :   TVirtualMC::GetMC()->Gspos("DDIP", 1, "ALIC", 0., 0., 0., idrotm[1811], "ONLY");
     620           0 :   gGeoManager->SetVolumeAttribute("DDIP", "SEEN", 0);
     621           0 : }
     622             : 
     623             : 
     624             : void AliDIPOv2::CreateCompensatorDipole()
     625             : {
     626             :     //
     627             :     //  Geometry of the compensator Dipole MBWMD (was MCB @ SPS)
     628             :     //  LAB I/EA Note 74.10
     629             :     //  6/5/1974
     630             :     //
     631             :     const Float_t kHCoil       =  22.;  // Coil Height
     632             :     const Float_t kWCoil       =  12.;  // Coil Width
     633             :     const Float_t kLCoilH      = 250.;  // Hor. Coil Length
     634             :     const Float_t kRCoilC      =  31.;  // Circ Coil Radius
     635             :     const Float_t kWBase       = 125.;  // Base Width
     636             :     const Float_t kHBase       =  30.;  // Base Height
     637             :     
     638             :     const Float_t kWUYoke      =  16.;
     639             :     const Float_t kHUYoke      =  31.;
     640             : 
     641             :     const Float_t kWLYoke      =  50.0;
     642             :     const Float_t kHLYoke      =  61.0;
     643             :     const Float_t kLLYoke      =  kLCoilH + kRCoilC;
     644             : 
     645             :     const Float_t kWApperture  =  12.;
     646             :     const Float_t kDCoil       =  kHUYoke + kHLYoke - 6. - 2. * kRCoilC;
     647             :     
     648             :     const Float_t kH           =  kHBase +  kHUYoke +  kHLYoke;
     649             :     
     650           2 :     Int_t *idtmed = fIdtmed->GetArray()-1799;
     651           1 :     Int_t idrotm[1899];
     652             : //
     653           1 :     Float_t pbox[3];
     654             : //  Mother volumes
     655           1 :     TGeoVolumeAssembly* asDCM0 = new TGeoVolumeAssembly("DCM0");
     656           1 :     asDCM0->SetName("DCM0");
     657             :     
     658             : //
     659             : //  Mother volume containing lower coil
     660           1 :     pbox[0] = kWLYoke / 2.;
     661           1 :     pbox[1] = kHLYoke / 2.;
     662           1 :     pbox[2] = kLLYoke / 2.;
     663             :     
     664           1 :     TVirtualMC::GetMC()->Gsvolu("DCML", "BOX", idtmed[1809 + 40], pbox, 3);
     665             : //
     666             : // Base
     667           1 :     pbox[0] = kWBase / 2.;
     668           1 :     pbox[1] = kHBase / 2.;
     669           1 :     TVirtualMC::GetMC()->Gsvolu("DCBA", "BOX", idtmed[1809 + 40], pbox, 3);
     670             : //
     671             : // Coil: straight sections, horizontal
     672           1 :     pbox[0] = kWCoil  / 2.;
     673           1 :     pbox[1] = kHCoil  / 2.;
     674           1 :     pbox[2] = kLCoilH / 2.;
     675           1 :     TVirtualMC::GetMC()->Gsvolu("DCH1", "BOX", idtmed[1816 + 40], pbox, 3);
     676             : //
     677             : // Coil: straight sections, horizontal
     678           1 :     pbox[0] = kWCoil  / 2.;
     679           1 :     pbox[1] = kHCoil  / 2.;
     680           1 :     pbox[2] = kLCoilH / 2.;
     681           1 :     TVirtualMC::GetMC()->Gsvolu("DCH2", "BOX", idtmed[1816 + 40], pbox, 3);
     682             : 
     683             : //
     684             : // Mother volume containing upper coil
     685           1 :     pbox[0] =  kWUYoke / 2.;
     686           1 :     pbox[1] =  kHUYoke / 2.;
     687           1 :     pbox[2] =  kLCoilH / 2.;
     688           1 :     TVirtualMC::GetMC()->Gsvolu("DCMU", "BOX", idtmed[1809 + 40], pbox, 3);
     689             : 
     690             : //
     691             : // Coil: straight sections, vertical
     692           1 :     pbox[0] = kWCoil / 2.;
     693           1 :     pbox[1] = kDCoil / 2.;
     694           1 :     pbox[2] = kHCoil / 2.;
     695             :     
     696           1 :     TVirtualMC::GetMC()->Gsvolu("DCCV", "BOX", idtmed[1816 + 40], pbox, 3);
     697             : //
     698             : // Coil: circular section 
     699             : 
     700           1 :     Float_t ptubs[5];
     701           1 :     ptubs[0] = kRCoilC - kHCoil;
     702           1 :     ptubs[1] = kRCoilC;
     703           1 :     ptubs[2] = kWCoil / 2.;
     704           1 :     ptubs[3] =  0.;
     705           1 :     ptubs[4] = 90.;
     706           1 :     TVirtualMC::GetMC()->Gsvolu("DCC1", "TUBS", idtmed[1816 + 40], ptubs, 5);
     707             : //
     708             : // Clamps
     709           1 :     Float_t ppgon[10];
     710           1 :     ppgon[0] =  0.;
     711           1 :     ppgon[1] = 90.;
     712           1 :     ppgon[2] =  1.;
     713           1 :     ppgon[3] =  2.;
     714           1 :     ppgon[4] = -1.;
     715           1 :     ppgon[5] =  0.;
     716           1 :     ppgon[6] = 24.75;
     717           1 :     ppgon[7] =  1.;
     718           1 :     ppgon[8] =  0.;
     719           1 :     ppgon[9] = 24.75;
     720           1 :     TVirtualMC::GetMC()->Gsvolu("DCLA", "PGON", idtmed[1809 + 40], ppgon, 10);
     721             : //
     722             : // Assemble all
     723             : //
     724           1 :     AliMatrix(idrotm[1811], -90., 0., 90., 90.,   0., 0.);
     725           1 :     AliMatrix(idrotm[1812],   0., 0., 90., 90.,  90., 0.);  
     726           1 :     AliMatrix(idrotm[1813], 180., 0., 90., 90.,  90., 0.);
     727           1 :     AliMatrix(idrotm[1814],   0., 180., 90., 270.,  90., 0.);
     728           1 :     AliMatrix(idrotm[1815], 180., 180., 90., 270.,  90., 0.);  
     729             :     
     730             :     Float_t dx, dy, dz;
     731             :     Float_t dy0 = 0.;
     732             : 
     733             :     dy0 = -kH / 2. + kHBase/2.;
     734           1 :     TVirtualMC::GetMC()->Gspos("DCBA", 1, "DCM0",  0., dy0, 15.0, 0, "ONLY");
     735             :     
     736             :     // Lower coil
     737             :     dx = ( kWLYoke - kWCoil) / 2.;
     738             :     dy = (-kHLYoke + kHCoil) / 2. + 6.;
     739           1 :     TVirtualMC::GetMC()->Gspos("DCH1", 1, "DCML",  dx, dy,  -kRCoilC / 2., 0, "ONLY");
     740             :     // Lower mother volume
     741             :     dx = (kWLYoke + kWApperture) / 2.;
     742             :     dy0 += (kHBase +  kHLYoke) / 2.;
     743           1 :     TVirtualMC::GetMC()->Gspos("DCML", 1, "DCM0", -dx, dy0, kRCoilC / 2., 0, "ONLY");
     744           1 :     TVirtualMC::GetMC()->Gspos("DCML", 2, "DCM0", +dx, dy0, kRCoilC / 2., idrotm[1811], "ONLY");
     745             :     
     746             :     dx = (kWUYoke - kWCoil) / 2.;
     747             :     dy = (kHUYoke - kHCoil) / 2;
     748             :     // Upper coil
     749           1 :     TVirtualMC::GetMC()->Gspos("DCH2", 1, "DCMU",   dx,  dy, 0., 0, "ONLY");
     750             :     // Upper mother volume
     751             :     dx = (kWUYoke + kWApperture) / 2.;
     752             :     dy0 +=  (kHLYoke + kHUYoke) / 2.;
     753           1 :     TVirtualMC::GetMC()->Gspos("DCMU", 1, "DCM0", -dx, dy0, 0., 0, "ONLY");
     754           1 :     TVirtualMC::GetMC()->Gspos("DCMU", 2, "DCM0", +dx, dy0, 0., idrotm[1811], "ONLY");
     755             : 
     756             :     // Vertical coils
     757             :     dx =  (kWCoil +  kWApperture) / 2.;
     758             :     dy =  kH / 2. - kDCoil / 2. - kRCoilC;
     759             :     dz =  (kLCoilH - kHCoil) / 2. + kRCoilC;
     760           1 :     TVirtualMC::GetMC()->Gspos("DCCV", 1, "DCM0",  dx,  dy, -dz, 0, "ONLY");
     761           1 :     TVirtualMC::GetMC()->Gspos("DCCV", 2, "DCM0", -dx,  dy, -dz, 0, "ONLY");
     762             : 
     763             :     dx = (kWLYoke - kWCoil) / 2.;
     764             :     dy = -kHLYoke / 2. + kDCoil / 2. + 6. + kRCoilC;
     765             :     dz =  kLLYoke / 2. - kHCoil / 2.;
     766             :     
     767           1 :     TVirtualMC::GetMC()->Gspos("DCCV", 3, "DCML", dx, dy,  dz, 0, "ONLY");
     768             : 
     769             : 
     770             : 
     771             :     // Circular coil
     772             :     dx =  (kWCoil +  kWApperture) / 2.;
     773             :     dy = dy0 + kHUYoke / 2. - kRCoilC;
     774             :     dz =  kLCoilH / 2.;
     775           1 :     TVirtualMC::GetMC()->Gspos("DCC1", 1, "DCM0", -dx, dy,  dz, idrotm[1812], "ONLY");
     776           1 :     TVirtualMC::GetMC()->Gspos("DCC1", 2, "DCM0", +dx, dy,  dz, idrotm[1812], "ONLY");
     777           1 :     TVirtualMC::GetMC()->Gspos("DCC1", 3, "DCM0", +dx, dy, -dz, idrotm[1813], "ONLY");
     778           1 :     TVirtualMC::GetMC()->Gspos("DCC1", 4, "DCM0", -dx, dy, -dz, idrotm[1813], "ONLY");
     779             :     dy = -kH / 2. + kHBase + 6. + kRCoilC;
     780           1 :     TVirtualMC::GetMC()->Gspos("DCC1", 5, "DCM0", +dx, dy, -dz, idrotm[1815], "ONLY");
     781           1 :     TVirtualMC::GetMC()->Gspos("DCC1", 6, "DCM0", -dx, dy, -dz, idrotm[1815], "ONLY");
     782             : 
     783             :     dx = ( kWLYoke - kWCoil) / 2.;
     784             :     dy =  -kHLYoke / 2. + 6. + kRCoilC;
     785             :     dz =  kLLYoke / 2. - kRCoilC;
     786           1 :     TVirtualMC::GetMC()->Gspos("DCC1", 7, "DCML", dx, dy, dz, idrotm[1814], "ONLY");
     787             : 
     788             : //  Clamps
     789             :     dx = kWApperture / 2. + kWUYoke;
     790             :     dy = -kH / 2. + kHLYoke + kHBase;
     791             :     
     792             : 
     793           1 :     TVirtualMC::GetMC()->Gspos("DCLA", 1, "DCM0",  dx, dy, -119., 0, "ONLY");
     794           1 :     TVirtualMC::GetMC()->Gspos("DCLA", 2, "DCM0",  dx, dy,  -44., 0, "ONLY");
     795           1 :     TVirtualMC::GetMC()->Gspos("DCLA", 3, "DCM0",  dx, dy,   46., 0, "ONLY");
     796           1 :     TVirtualMC::GetMC()->Gspos("DCLA", 4, "DCM0",  dx, dy,  119., 0, "ONLY");
     797             : 
     798           1 :     TVirtualMC::GetMC()->Gspos("DCLA", 5, "DCM0",  -dx, dy, -119., idrotm[1811], "ONLY");
     799           1 :     TVirtualMC::GetMC()->Gspos("DCLA", 6, "DCM0",  -dx, dy,  -44., idrotm[1811], "ONLY");
     800           1 :     TVirtualMC::GetMC()->Gspos("DCLA", 7, "DCM0",  -dx, dy,   46., idrotm[1811], "ONLY");
     801           1 :     TVirtualMC::GetMC()->Gspos("DCLA", 8, "DCM0",  -dx, dy,  119., idrotm[1811], "ONLY");
     802             : 
     803             : 
     804           1 :     AliMatrix(idrotm[1816], 270., 0., 90., 90.,  180., 0.);  
     805           1 :     TVirtualMC::GetMC()->Gspos("DCM0", 1, "ALIC",  0., -12.,  1075., idrotm[1816], "ONLY");
     806           1 : }
     807             : 
     808             : 
     809             : //_____________________________________________________________________________
     810             : void AliDIPOv2::CreateMaterials()
     811             : {
     812             :   //
     813             :   // Create Materials for Magnetic Dipole version 2
     814             :   //
     815             :   
     816           2 :   Int_t isxfld1   = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
     817           1 :   Int_t isxfld2   = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->PrecInteg();
     818           1 :   Float_t sxmgmx  = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
     819             :   
     820             :   
     821           1 :   Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
     822           1 :   Float_t zsteel[4] = { 26.,24.,28.,14. };
     823           1 :   Float_t wsteel[4] = { .715,.18,.1,.005 };
     824             : 
     825           1 :   Float_t acoil[3]  = { 26.98,1.01,16. };
     826           1 :   Float_t zcoil[3]  = { 13.,1.,8. };
     827           1 :   Float_t wcoil[3]  = { .66,.226,.114 };
     828             : 
     829           1 :   Float_t aresi[3]  = { 1.01,12.011,16.};
     830           1 :   Float_t zresi[3]  = { 1.,6.,8. };
     831           1 :   Float_t wresi[3]  = { .0644,.7655,.1701 };
     832             : 
     833           1 :   Float_t aG10[5] = { 1.01,12.011,16.,28.085 ,79.904 };
     834           1 :   Float_t zG10[5] = { 1.,6.,8.,14.,35. };
     835           1 :   Float_t wG10[5] = { .02089,.22338,.28493,.41342,.05738 };
     836             : 
     837             :     // AIR
     838             : 
     839           1 :   Float_t aAir[4]={12.0107,14.0067,15.9994,39.948};
     840           1 :   Float_t zAir[4]={6.,7.,8.,18.};
     841           1 :   Float_t wAir[4]={0.000124,0.755267,0.231781,0.012827};
     842             :   Float_t dAir = 1.20479E-3;
     843             :   Float_t dAir1 = 1.20479E-10;
     844             : 
     845             :   
     846             :   Float_t epsil, stmin, deemax, tmaxfd, stemax;
     847             :   
     848             :   // --- Define the various materials for GEANT --- 
     849             :   //     Aluminum 
     850           1 :   AliMaterial( 9, "ALUMINIUM0$", 26.98, 13., 2.7, 8.9, 37.2);
     851           1 :   AliMaterial(29, "ALUMINIUM1$", 26.98, 13., 2.7, 8.9, 37.2);
     852           1 :   AliMaterial(49, "ALUMINIUM2$", 26.98, 13., 2.7, 8.9, 37.2);
     853             :   
     854             :   //     Iron 
     855           1 :   AliMaterial(10, "IRON0$     ", 55.85, 26., 7.87, 1.76, 17.1);
     856           1 :   AliMaterial(30, "IRON1$     ", 55.85, 26., 7.87, 1.76, 17.1);
     857           1 :   AliMaterial(50, "IRON2$     ", 55.85, 26., 7.87, 1.76, 17.1);
     858             :   //     Copper
     859           1 :   AliMaterial(17, "COPPER0$   ", 63.55, 29., 8.96, 1.43, 15.1);
     860           1 :   AliMaterial(37, "COPPER1$   ", 63.55, 29., 8.96, 1.43, 15.1);
     861           1 :   AliMaterial(57, "COPPER2$   ", 63.55, 29., 8.96, 1.43, 15.1);
     862             :   //     Air 
     863           1 :   AliMixture(15, "AIR0$      ", aAir, zAir, dAir, 4, wAir);
     864           1 :   AliMixture(35, "AIR1$      ", aAir, zAir, dAir, 4, wAir);
     865           1 :   AliMixture(55, "AIR2$      ", aAir, zAir, dAir, 4, wAir);
     866           1 :   AliMixture(75, "AIR_MUON   ", aAir, zAir, dAir, 4, wAir);
     867             :   //     Vacuum 
     868           1 :   AliMixture(16, "VACUUM0$ ", aAir, zAir, dAir1, 4, wAir);
     869           1 :   AliMixture(36, "VACUUM1$ ", aAir, zAir, dAir1, 4, wAir);
     870           1 :   AliMixture(56, "VACUUM2$ ", aAir, zAir, dAir1, 4, wAir);
     871             :   
     872             :   //     stainless Steel 
     873           1 :   AliMixture(19, "STAINLESS STEEL0$", asteel, zsteel, 7.88, 4, wsteel);
     874           1 :   AliMixture(39, "STAINLESS STEEL1$", asteel, zsteel, 7.88, 4, wsteel);
     875           1 :   AliMixture(59, "STAINLESS STEEL2$", asteel, zsteel, 7.88, 4, wsteel);
     876             :   
     877             :   //     Coil 
     878           1 :   AliMixture(14, "Al0$", acoil, zcoil, 2.122, 3, wcoil);
     879           1 :   AliMixture(34, "Al1$", acoil, zcoil, 2.122, 3, wcoil);
     880           1 :   AliMixture(54, "Al2$", acoil, zcoil, 2.122, 3, wcoil);
     881             : 
     882             :   //RESIN
     883           1 :   AliMixture(13, "RESIN0$", aresi, zresi, 1.05, 3, wresi);
     884           1 :   AliMixture(33, "RESIN1$", aresi, zresi, 1.05, 3, wresi);
     885           1 :   AliMixture(53, "RESIN2$", aresi, zresi, 1.05, 3, wresi);  
     886             : 
     887             :   //G10
     888           1 :   AliMixture(11, "G100$", aG10, zG10, 1.7, 5, wG10);
     889           1 :   AliMixture(31, "G101$", aG10, zG10, 1.7, 5, wG10);
     890           1 :   AliMixture(51, "G102$", aG10, zG10, 1.7, 5, wG10); 
     891             :  
     892             :   // **************** 
     893             :   //     Defines tracking media parameters. 
     894             :   //     Les valeurs sont commentees pour laisser le defaut 
     895             :   //     a GEANT (version 3-21, page CONS200), f.m. 
     896             :   epsil  = .001;  // Tracking precision, 
     897             :   stemax = -1.;   // Maximum displacement for multiple scat 
     898             :   tmaxfd = -20.;  // Maximum angle due to field deflection 
     899             :   deemax = -.3;   // Maximum fractional energy loss, DLS 
     900             :   stmin  = -.8;
     901             :   // *************** 
     902             :   
     903             :   //    Aluminum 
     904           1 :   AliMedium( 9, "ALU_C0          ",  9, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     905           1 :   AliMedium(29, "ALU_C1          ", 29, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     906           1 :   AliMedium(49, "ALU_C2          ", 49, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     907             :   
     908             :   //    Iron 
     909           1 :   AliMedium(10, "FE_C0           ", 10, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     910           1 :   AliMedium(30, "FE_C1           ", 30, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     911           1 :   AliMedium(50, "FE_C2           ", 50, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     912             :   
     913             :   //    Air 
     914           1 :   AliMedium(15, "AIR_C0          ", 15, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     915           1 :   AliMedium(35, "AIR_C1          ", 35, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     916           1 :   AliMedium(55, "AIR_C2          ", 55, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     917           1 :   AliMedium(75, "AIR_MUON        ", 75, 0, isxfld2, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     918             :   
     919             :   //    Vacuum 
     920           1 :   AliMedium(16, "VA_C0           ", 16, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     921           1 :   AliMedium(36, "VA_C1           ", 36, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     922           1 :   AliMedium(56, "VA_C2           ", 56, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     923             :   
     924             :   //    Steel 
     925           1 :   AliMedium(19, "ST_C0           ", 19, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     926           1 :   AliMedium(39, "ST_C1           ", 39, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     927           1 :   AliMedium(59, "ST_C3           ", 59, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     928             :   
     929             :   //    Coil 
     930           1 :   AliMedium(14, "Coil_C1         ", 14, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     931           1 :   AliMedium(34, "Coil_C2         ", 34, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     932           1 :   AliMedium(54, "Coil_C3         ", 54, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     933             : 
     934             :   //    Resin 
     935           1 :   AliMedium(13, "RESIN_C0        ", 13, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     936           1 :   AliMedium(33, "RESIN_C1        ", 33, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     937           1 :   AliMedium(53, "RESIN_C2        ", 53, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     938             : 
     939             :   //    G10 
     940           1 :   AliMedium(11, "G10_C0          ", 11, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     941           1 :   AliMedium(31, "G10_C1          ", 31, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     942           1 :   AliMedium(51, "G10_C2          ", 51, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     943             :   //
     944             :   //    Copper
     945           1 :   AliMedium(17, "Cu_C0           ", 17, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     946           1 :   AliMedium(37, "Cu_C1           ", 37, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     947           1 :   AliMedium(57, "Cu_C2           ", 57, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     948             : 
     949           1 : }
     950             : 
     951             : 
     952             : 
     953             : 
     954             : 
     955             : 

Generated by: LCOV version 1.11