LCOV - code coverage report
Current view: top level - STRUCT - AliMAG.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 172 180 95.6 %
Date: 2016-06-14 17:26:59 Functions: 8 8 100.0 %

          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             : //  L3 Magnet                                                                //
      21             : //                                                                           //
      22             : //Begin_Html
      23             : /*
      24             : <img src="picts/AliMAGClass.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             : */
      34             : //End_Html
      35             : //                                                                           //
      36             : ///////////////////////////////////////////////////////////////////////////////
      37             :  
      38             : #include <TGeoCompositeShape.h>
      39             : #include <TGeoGlobalMagField.h>
      40             : #include <TGeoManager.h>
      41             : #include <TGeoMatrix.h>
      42             : #include <TGeoMedium.h>
      43             : #include <TGeoPgon.h>
      44             : #include <TGeoVolume.h>
      45             : #include <TGeoXtru.h>
      46             : #include <TVirtualMC.h>
      47             : 
      48             : #include "AliMAG.h"
      49             : #include "AliMagF.h"
      50             : #include "AliRun.h"
      51             : #include "AliLog.h"
      52             :  
      53          12 : ClassImp(AliMAG)
      54             :  
      55             : //_____________________________________________________________________________
      56          12 : AliMAG::AliMAG()
      57          60 : {
      58             :   //
      59             :   // Default constructor for L3 magnet
      60             :   //
      61          24 : }
      62             :  
      63             : //_____________________________________________________________________________
      64             : AliMAG::AliMAG(const char *name, const char *title)
      65           1 :   : AliModule(name,title)
      66           5 : {
      67             :   //
      68             :   // Standard constructor for L3 magnet
      69             :   //
      70             :   //Begin_Html
      71             :   /*
      72             :     <img src="picts/aliMAG.gif">
      73             :   */
      74             :   //End_Html
      75             :   
      76             :   //PH  SetMarkerColor(7);
      77             :   //PH  SetMarkerStyle(2);
      78             :   //PH  SetMarkerSize(0.4);
      79           2 : }
      80             : 
      81             : //_____________________________________________________________________________
      82             : void AliMAG::CreateGeometry()
      83             : {
      84             :   //
      85             :   // Create geometry for L3 magnet
      86             :   //
      87             :   //Begin_Html
      88             :   /*
      89             :     <img src="picts/mag.gif">
      90             :   */
      91             :   //End_Html
      92             :     
      93             :   //Begin_Html
      94             :   /*
      95             :     <img src="picts/tree_mag.gif">
      96             :     <br> Dimensions taken from drawing: ALIL3___00010
      97             :   //End_Html
      98             :   */
      99             : // Octagon
     100             :     const Int_t   kNSides              =    8;
     101             :     const Float_t kStartAngle          =   22.5; // deg
     102             :     const Float_t kFullAngle           =  360.0; // deg
     103             : //  Mother volume 
     104             :     const Float_t kRBMotherInner       = 600.00; // cm
     105             :     const Float_t kRBMotherOuter       = 790.50; // cm
     106             :     const Float_t kLBMother            = 706.00; // cm
     107             : // Yoke     
     108             :     const Float_t kRYokeInner          = 703.50; // cm
     109             :     const Float_t kRYokeOuter          = 790.50; // cm
     110             :     const Float_t kLYoke               = 620.00; // cm
     111             : // Coil
     112             :     const Float_t kRCoilInner          = 593.00; // cm
     113             :     const Float_t kRCoilOuter          = 682.00; // cm
     114             :     const Float_t kLCoil               = 588.00; // cm
     115             : // Cooling
     116             :     const Float_t kRCoolingOuter       = 1.70; // cm
     117             :     const Float_t kRCoolingInner       = 1.00; // cm
     118             : // Thermal Shield    
     119             :     const Float_t kRThermalShieldInner = 566.00; // cm
     120             :     const Float_t kRThermalShieldOuter = 571.00; // cm
     121             : // Crown    
     122             :     const Float_t kRCrownInner         = 600.00; // cm    
     123             :     const Float_t kRCrownOuter         = 785.50; // cm
     124             :     const Float_t kLCrown1             = 605.00; // cm
     125             :     const Float_t kLCrown2             = 620.00; // cm
     126             :     const Float_t kLCrown3             = 706.00; // cm
     127             : // Door
     128             :     const Float_t kRDoorOuter          = 600.00; // cm
     129             :     const Float_t kRPlugInner          = 183.50; // cm
     130             :     const Float_t kLDoor1              = 615.50; // cm
     131             :     const Float_t kLDoor2              = 714.60; // cm
     132             : //
     133           2 :     const Float_t kDegRad              = TMath::Pi()/180.;
     134             :     
     135             :     
     136             :   //
     137             :   // Top volume 
     138           1 :   TGeoVolume* top = gGeoManager->GetVolume("ALIC");
     139             :   // Media 
     140           1 :   TGeoMedium* medAir    = gGeoManager->GetMedium("MAG_AIR_C1");
     141           1 :   TGeoMedium* medAlu    = gGeoManager->GetMedium("MAG_ALU_C1");  
     142           1 :   TGeoMedium* medAluI   = gGeoManager->GetMedium("MAG_ALU_C0");
     143           1 :   TGeoMedium* medSteel  = gGeoManager->GetMedium("MAG_ST_C1");
     144           1 :   TGeoMedium* medWater  = gGeoManager->GetMedium("MAG_WATER");
     145             :   //
     146             :   // Offset between LHC and LEP axis
     147             :   Float_t os = -30.;
     148             : 
     149             :   //
     150             :   //  Define Barrel Mother 
     151             :   //  
     152           1 :   TGeoPgon* shBMother = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 2);
     153           1 :   shBMother->DefineSection(0, -kLBMother, kRBMotherInner, kRBMotherOuter);
     154           1 :   shBMother->DefineSection(1,  kLBMother, kRBMotherInner, kRBMotherOuter);  
     155             :   // 
     156           1 :   TGeoVolumeAssembly* voBMother = new TGeoVolumeAssembly("L3BM");
     157             :   //
     158             :   // Define Thermal Shield
     159             :   //
     160             :   // Only one layer
     161             :   // This can be improved: replace by (protection - shield - insulation) !
     162             :   //
     163           1 :   TGeoPgon* shThermSh = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 2);
     164           1 :   shThermSh->DefineSection(0, -kLCoil, kRThermalShieldInner, kRThermalShieldOuter);
     165           1 :   shThermSh->DefineSection(1,  kLCoil, kRThermalShieldInner, kRThermalShieldOuter);  
     166             :   // 
     167           1 :   TGeoVolume* voThermSh = new TGeoVolume("L3TS", shThermSh, medAluI);
     168           2 :   voBMother->AddNode(voThermSh, 1, new TGeoTranslation(0., 0., 0.));
     169             :   //  
     170             :   // Define Coils and cooling circuits
     171             :   //
     172           1 :   TGeoPgon* shCoilMother = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 2);
     173           1 :   shCoilMother->DefineSection(0, -kLCoil, kRCoilInner - 2. * kRCoolingOuter, kRCoilOuter + 2. * kRCoolingOuter);
     174           1 :   shCoilMother->DefineSection(1,  kLCoil, kRCoilInner - 2. * kRCoolingOuter, kRCoilOuter + 2. * kRCoolingOuter);  
     175             :   // 
     176             :   // Coils
     177           1 :   TGeoVolume* voCoilMother = new TGeoVolume("L3CM", shCoilMother, medAir);
     178           2 :   voBMother->AddNode(voCoilMother, 1, new TGeoTranslation(0., 0., 0.));
     179             :   // Devide into the 168 turns
     180           1 :   TGeoVolume* voCoilTurn   = voCoilMother->Divide("L3CD", 3, 168, 0., 0.);
     181           1 :   TGeoPgon* shCoils = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 2);
     182           1 :   shCoils->DefineSection(0, -3., kRCoilInner, kRCoilOuter);
     183           1 :   shCoils->DefineSection(1,  3., kRCoilInner, kRCoilOuter); 
     184             :   // 
     185           1 :   TGeoVolume* voCoils = new TGeoVolume("L3C0", shCoils, medAlu);
     186           2 :   voCoilTurn->AddNode(voCoils, 1, new TGeoTranslation(0., 0., 0.));
     187             :   //
     188             :   // Hexagonal Cooling circuits
     189             :   // 
     190             :   const Float_t kRCC = kRCoolingOuter;
     191             :   const Float_t kRCW = kRCoolingInner;
     192           1 :   const Float_t kRCL = kRCC * TMath::Tan(30. / 180. * TMath::Pi());
     193           1 :   const Float_t kRWL = kRCW * TMath::Tan(30. / 180. * TMath::Pi());
     194             :   // Outer Circuits
     195             :   //
     196             :   // Pipe
     197           1 :   TGeoPgon* shCoolingPipeO = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 4);
     198           1 :   shCoolingPipeO->DefineSection(0, -kRCC, kRCoilOuter + kRCC, kRCoilOuter + kRCC + 0.01);
     199           1 :   shCoolingPipeO->DefineSection(1, -kRCL, kRCoilOuter, kRCoilOuter + 2. * kRCC);
     200           1 :   shCoolingPipeO->DefineSection(2,  kRCL, kRCoilOuter, kRCoilOuter + 2. * kRCC);
     201           1 :   shCoolingPipeO->DefineSection(3,  kRCC, kRCoilOuter + kRCC, kRCoilOuter + kRCC + 0.01);
     202             :   //
     203           1 :   TGeoVolume* voCoolingPipeO = new TGeoVolume("L3CCO", shCoolingPipeO, medAlu);
     204           2 :   voCoilTurn->AddNode(voCoolingPipeO, 1, new TGeoTranslation(0., 0., 0.));
     205             :   //
     206           1 :   TGeoPgon* shCoolingWaterO = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 4);
     207           1 :   shCoolingWaterO->DefineSection(0, -kRCW, kRCoilOuter + kRCC, kRCoilOuter + kRCC + 0.01);
     208           1 :   shCoolingWaterO->DefineSection(1, -kRWL, kRCoilOuter + (kRCC - kRCW), kRCoilOuter + kRCC + kRCW);
     209           1 :   shCoolingWaterO->DefineSection(2,  kRWL, kRCoilOuter + (kRCC - kRCW), kRCoilOuter + kRCC + kRCW);
     210           1 :   shCoolingWaterO->DefineSection(3,  kRCW, kRCoilOuter + kRCC, kRCoilOuter + kRCC + 0.01);
     211             :   //
     212           1 :   TGeoVolume* voCoolingWaterO = new TGeoVolume("L3CWO", shCoolingWaterO, medWater);
     213           2 :   voCoolingPipeO->AddNode(voCoolingWaterO, 1, new TGeoTranslation(0., 0., 0.));
     214             : 
     215             :   // Inner Circuits
     216             :   //
     217             :   // Pipe
     218           1 :   TGeoPgon* shCoolingPipeI = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 4);
     219           1 :   shCoolingPipeI->DefineSection(0, -kRCC, kRCoilInner - kRCC, kRCoilInner - kRCC + 0.01);
     220           1 :   shCoolingPipeI->DefineSection(1, -kRCL, kRCoilInner - 2. * kRCC, kRCoilInner);
     221           1 :   shCoolingPipeI->DefineSection(2,  kRCL, kRCoilInner - 2. * kRCC, kRCoilInner);
     222           1 :   shCoolingPipeI->DefineSection(3,  kRCC, kRCoilInner - kRCC, kRCoilInner - kRCC + 0.01);
     223             :   //
     224           1 :   TGeoVolume* voCoolingPipeI = new TGeoVolume("L3CCI", shCoolingPipeI, medAlu);
     225           2 :   voCoilTurn->AddNode(voCoolingPipeI, 1, new TGeoTranslation(0., 0., 0.));
     226             :   //
     227           1 :   TGeoPgon* shCoolingWaterI = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 4);
     228           1 :   shCoolingWaterI->DefineSection(0, -kRCW, kRCoilInner - kRCC, kRCoilInner - kRCC + 0.01);
     229           1 :   shCoolingWaterI->DefineSection(1, -kRWL, kRCoilInner - kRCC - kRCW, kRCoilInner - (kRCC - kRCW));
     230           1 :   shCoolingWaterI->DefineSection(2,  kRWL, kRCoilInner - kRCC - kRCW, kRCoilInner - (kRCC - kRCW));
     231           1 :   shCoolingWaterI->DefineSection(3,  kRCW, kRCoilInner - kRCC, kRCoilInner - kRCC + 0.01);
     232             :   //
     233           1 :   TGeoVolume* voCoolingWaterI = new TGeoVolume("L3CWI", shCoolingWaterI, medWater);
     234           2 :   voCoolingPipeI->AddNode(voCoolingWaterI, 1, new TGeoTranslation(0., 0., 0.));
     235             : 
     236             :   //
     237             :   // Define Yoke
     238             :   //
     239           1 :   TGeoPgon* shYoke = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 2);
     240           1 :   shYoke->DefineSection(0, -kLYoke, kRYokeInner, kRYokeOuter);
     241           1 :   shYoke->DefineSection(1, +kLYoke, kRYokeInner, kRYokeOuter);  
     242             :   // 
     243           1 :   TGeoVolume* voYoke = new TGeoVolume("L3YO", shYoke, medSteel);
     244           2 :   voBMother->AddNode(voYoke, 1, new TGeoTranslation(0., 0., 0.));
     245             : 
     246             :   //
     247             :   // Define Crown
     248             :   //
     249           1 :   TGeoPgon* shCrown = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 4);
     250           1 :   shCrown->DefineSection(0,  kLCrown1, kRCrownInner, kRYokeInner);
     251           1 :   shCrown->DefineSection(1,  kLCrown2, kRCrownInner, kRYokeInner);  
     252           1 :   shCrown->DefineSection(2,  kLCrown2, kRCrownInner, kRCrownOuter);  
     253           1 :   shCrown->DefineSection(3,  kLCrown3, kRCrownInner, kRCrownOuter);  
     254             :   // 
     255           1 :   TGeoVolume* voCrown = new TGeoVolume("L3CR", shCrown, medSteel);
     256             : 
     257             :   //
     258             :   // Door including "Plug"
     259             :   //
     260           1 :   Float_t slo = 2. * kRDoorOuter * TMath::Tan(22.5 * kDegRad);
     261           1 :   Float_t sli = 2. * kRPlugInner * TMath::Tan(22.5 * kDegRad);
     262           1 :   Double_t xpol1[12], xpol2[12], ypol1[12], ypol2[12];
     263             :   
     264           1 :   xpol1[ 0] = 2.         ;  ypol1[ 0] = kRDoorOuter;
     265           1 :   xpol1[ 1] = slo/2.     ;  ypol1[ 1] = kRDoorOuter;
     266           1 :   xpol1[ 2] = kRDoorOuter;  ypol1[ 2] = slo/2.;
     267           1 :   xpol1[ 3] = kRDoorOuter;  ypol1[ 3] = -slo/2.;
     268           1 :   xpol1[ 4] = slo/2.     ;  ypol1[ 4] = -kRDoorOuter;
     269           1 :   xpol1[ 5] = 2.         ;  ypol1[ 5] = -kRDoorOuter;
     270           1 :   xpol1[ 6] = 2.         ;  ypol1[ 6] = -kRPlugInner - os;
     271           1 :   xpol1[ 7] = sli/2.     ;  ypol1[ 7] = -kRPlugInner - os;
     272           1 :   xpol1[ 8] = kRPlugInner;  ypol1[ 8] = -sli/2.      - os;
     273           1 :   xpol1[ 9] = kRPlugInner;  ypol1[ 9] =  sli/2.      - os;
     274           1 :   xpol1[10] = sli/2.     ;  ypol1[10] = kRPlugInner  - os;
     275           1 :   xpol1[11] = 2.         ;  ypol1[11] = kRPlugInner  - os;
     276             : 
     277           1 :   TGeoXtru* shL3DoorR = new TGeoXtru(2);
     278           1 :   shL3DoorR->DefinePolygon(12, xpol1, ypol1);
     279           1 :   shL3DoorR->DefineSection(0, kLDoor1);
     280           1 :   shL3DoorR->DefineSection(1, kLDoor2);  
     281           1 :   TGeoVolume* voL3DoorR = new TGeoVolume("L3DoorR", shL3DoorR, medSteel);
     282             : 
     283          26 :   for (Int_t i = 0; i < 12; i++) {
     284          12 :       xpol2[i] = - xpol1[11 - i];
     285          12 :       ypol2[i] =   ypol1[11 - i];
     286             :   }
     287             :    
     288           1 :   TGeoXtru* shL3DoorL = new TGeoXtru(2);
     289           1 :   shL3DoorL->DefinePolygon(12, xpol2, ypol2);
     290           1 :   shL3DoorL->DefineSection(0, kLDoor1);
     291           1 :   shL3DoorL->DefineSection(1, kLDoor2);  
     292           1 :   TGeoVolume* voL3DoorL = new TGeoVolume("L3DoorL", shL3DoorL, medSteel);
     293             :   //
     294             :   // Plug support plate
     295             :   // 
     296             :   Float_t ro = kRPlugInner + 50.;
     297           1 :   slo = 2. * ro * TMath::Tan(22.5 * kDegRad);
     298             :   
     299           1 :   xpol1[ 0] = 2.         ;  ypol1[ 0] = ro     - os;
     300           1 :   xpol1[ 1] = slo/2.     ;  ypol1[ 1] = ro     - os;
     301           1 :   xpol1[ 2] = ro         ;  ypol1[ 2] = slo/2. - os;
     302           1 :   xpol1[ 3] = ro         ;  ypol1[ 3] = -slo/2.- os;
     303           1 :   xpol1[ 4] = slo/2.     ;  ypol1[ 4] = -ro    - os;
     304           1 :   xpol1[ 5] = 2.         ;  ypol1[ 5] = -ro    - os;
     305             : 
     306          26 :   for (Int_t i = 0; i < 12; i++) {
     307          12 :       xpol2[i] = - xpol1[11 - i];
     308          12 :       ypol2[i] =   ypol1[11 - i];
     309             :   }
     310             : 
     311             : 
     312           1 :   TGeoXtru* shL3PlugSPR = new TGeoXtru(2);
     313           1 :   shL3PlugSPR->DefinePolygon(12, xpol1, ypol1);
     314           1 :   shL3PlugSPR->DefineSection(0, kLDoor1-10.);
     315           1 :   shL3PlugSPR->DefineSection(1, kLDoor1);  
     316           1 :   TGeoVolume* voL3PlugSPR = new TGeoVolume("L3PlugSPR", shL3PlugSPR, medSteel);
     317             : 
     318           1 :   TGeoXtru* shL3PlugSPL = new TGeoXtru(2);
     319           1 :   shL3PlugSPL->DefinePolygon(12, xpol2, ypol2);
     320           1 :   shL3PlugSPL->DefineSection(0, kLDoor1-10.);
     321           1 :   shL3PlugSPL->DefineSection(1, kLDoor1);  
     322           1 :   TGeoVolume* voL3PlugSPL = new TGeoVolume("L3PlugSPL", shL3PlugSPL, medSteel);
     323             :   
     324             : 
     325             :   // Position crown and door
     326           1 :   TGeoRotation* rotxz = new TGeoRotation("rotxz",  90., 0., 90., 90., 180., 0.);
     327             : 
     328           1 :   TGeoVolumeAssembly *l3 = new TGeoVolumeAssembly("L3MO");
     329           2 :   voBMother->AddNode(voCrown, 1, new TGeoTranslation(0., 0., 0.));  
     330           2 :   voBMother->AddNode(voCrown, 2, new TGeoCombiTrans(0., 0., 0., rotxz));
     331           2 :   l3->AddNode(voBMother, 1, new TGeoTranslation(0.,0.,0.));
     332           2 :   l3->AddNode(voL3DoorR,  1, new TGeoTranslation(0., 0., 0.));  
     333           2 :   l3->AddNode(voL3DoorR,  2, new TGeoCombiTrans(0., 0., 0., rotxz));
     334           2 :   l3->AddNode(voL3DoorL,  1, new TGeoTranslation(0., 0., 0.));  
     335           2 :   l3->AddNode(voL3DoorL,  2, new TGeoCombiTrans(0., 0., 0., rotxz));
     336           2 :   l3->AddNode(voL3PlugSPR,  1, new TGeoTranslation(0., 0., 0.));  
     337           2 :   l3->AddNode(voL3PlugSPR,  2, new TGeoCombiTrans(0., 0., 0., rotxz));
     338           2 :   l3->AddNode(voL3PlugSPL,  1, new TGeoTranslation(0., 0., 0.));  
     339           2 :   l3->AddNode(voL3PlugSPL,  2, new TGeoCombiTrans(0., 0., 0., rotxz));
     340           2 :   top->AddNode(l3, 1, new TGeoTranslation(0., os, 0.));
     341           1 : }
     342             : 
     343             : //_____________________________________________________________________________
     344             : void AliMAG::CreateMaterials()
     345             : {
     346             :   //
     347             :   // Create materials for L3 magnet
     348             :   //
     349             :   
     350           2 :   Int_t   isxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
     351           1 :   Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
     352             :   Float_t epsil, stmin, deemax, tmaxfd, stemax;
     353             : 
     354             : 
     355             :   // --- Define the various materials for GEANT --- 
     356             :   // Steel  
     357           1 :   Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
     358           1 :   Float_t zsteel[4] = { 26.,24.,28.,14. };
     359           1 :   Float_t wsteel[4] = { .715,.18,.1,.005 };  
     360           1 :   Float_t aAir[4]={12.0107,14.0067,15.9994,39.948};
     361           1 :   Float_t zAir[4]={6.,7.,8.,18.};
     362           1 :   Float_t wAir[4]={0.000124,0.755267,0.231781,0.012827};
     363             :   Float_t dAir = 1.20479E-3;
     364           1 :   Float_t aWater[2]={1.00794,15.9994};
     365           1 :   Float_t zWater[2]={1.,8.};
     366           1 :   Float_t wWater[2]={0.111894,0.888106};
     367             :   
     368             : 
     369             :   //     Aluminum 
     370           1 :   AliMaterial(9, "Al0$", 26.98, 13., 2.7, 8.9, 37.2);
     371           1 :   AliMaterial(29, "Al1$", 26.98, 13., 2.7, 8.9, 37.2);
     372             :   
     373             :   //     Stainless Steel 
     374           1 :   AliMixture(19, "STAINLESS STEEL1", asteel, zsteel, 7.88, 4, wsteel);
     375           1 :   AliMixture(39, "STAINLESS STEEL2", asteel, zsteel, 7.88, 4, wsteel);
     376           1 :   AliMixture(59, "STAINLESS STEEL3", asteel, zsteel, 7.88, 4, wsteel);
     377             :   //     Iron 
     378           1 :   AliMaterial(10, "Fe0$", 55.85, 26., 7.87, 1.76, 17.1);
     379           1 :   AliMaterial(30, "Fe1$", 55.85, 26., 7.87, 1.76, 17.1);
     380             :   
     381             :   //     Air 
     382           1 :   AliMixture(15, "AIR0$      ", aAir, zAir, dAir, 4, wAir);
     383           1 :   AliMixture(35, "AIR1$      ", aAir, zAir, dAir, 4, wAir);
     384             :   //     Water
     385           1 :   AliMixture(16, "WATER", aWater, zWater, 1., 2, wWater);
     386             : 
     387             :   
     388             :   // **************** 
     389             :   //     Defines tracking media parameters. 
     390             :   //     Les valeurs sont commentees pour laisser le defaut 
     391             :   //     a GEANT (version 3-21, page CONS200), f.m. 
     392             :   epsil  = .001;  // Tracking precision, 
     393             :   stemax = -1.;   // Maximum displacement for multiple scat 
     394             :   tmaxfd = -20.;  // Maximum angle due to field deflection 
     395             :   deemax = -.3;   // Maximum fractional energy loss, DLS 
     396             :   stmin  = -.8;
     397             :   // *************** 
     398             :   
     399             :   //    IRON 
     400             :   
     401           1 :   AliMedium(10, "FE_C0             ", 10, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     402           1 :   AliMedium(30, "FE_C1             ", 30, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     403             :   
     404             :   //     ALUMINUM 
     405             : 
     406           1 :   AliMedium(9, "ALU_C0            ",  9, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     407           1 :   AliMedium(29, "ALU_C1            ", 29, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     408             :   
     409             :   //     AIR 
     410             :   
     411           1 :   AliMedium(15, "AIR_C0            ", 15, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     412           1 :   AliMedium(35, "AIR_C1            ", 35, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     413             :   //    Steel 
     414           1 :   AliMedium(19, "ST_C0           ", 19, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     415           1 :   AliMedium(39, "ST_C1           ", 39, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     416           1 :   AliMedium(59, "ST_C3           ", 59, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     417             :   //    WATER
     418           1 :   AliMedium(16, "WATER             ", 16, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
     419           1 : }
     420             : 
     421             : //_____________________________________________________________________________
     422             : void AliMAG::Init()
     423             : {
     424             :   //
     425             :   // Initialise L3 magnet after it has been built
     426             :   Int_t i;
     427             :   //
     428           2 :   if(AliLog::GetGlobalDebugLevel()>0) {
     429           0 :     printf("\n%s: ",ClassName());
     430           0 :     for(i=0;i<35;i++) printf("*");
     431           0 :     printf(" MAG_INIT ");
     432           0 :     for(i=0;i<35;i++) printf("*");
     433           0 :     printf("\n%s: ",ClassName());
     434             :     //
     435             :     // Here the MAG initialisation code (if any!)
     436           0 :     for(i=0;i<80;i++) printf("*");
     437           0 :     printf("\n");
     438           0 :   }
     439           1 : }
     440             : 

Generated by: LCOV version 1.11