ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  L3 Magnet                                                                //
//                                                                           //
//Begin_Html
/*
<img src="picts/AliMAGClass.gif">
</pre>
<br clear=left>
<font size=+2 color=red>
<p>The responsible person for this module is
<a href="mailto:andreas.morsch@cern.ch">Andreas Morsch</a>.
</font>
<pre>

*/
//End_Html
//                                                                           //
///////////////////////////////////////////////////////////////////////////////
 
#include <TGeoCompositeShape.h>
#include <TGeoGlobalMagField.h>
#include <TGeoManager.h>
#include <TGeoMatrix.h>
#include <TGeoMedium.h>
#include <TGeoPgon.h>
#include <TGeoVolume.h>
#include <TGeoXtru.h>
#include <TVirtualMC.h>

#include "AliMAG.h"
#include "AliMagF.h"
#include "AliRun.h"
 
ClassImp(AliMAG)
 
//_____________________________________________________________________________
AliMAG::AliMAG()
{
  //
  // Default constructor for L3 magnet
  //
}
 
//_____________________________________________________________________________
AliMAG::AliMAG(const char *name, const char *title)
  : AliModule(name,title)
{
  //
  // Standard constructor for L3 magnet
  //
  //Begin_Html
  /*
    <img src="picts/aliMAG.gif">
  */
  //End_Html
  
  //PH  SetMarkerColor(7);
  //PH  SetMarkerStyle(2);
  //PH  SetMarkerSize(0.4);
}

//_____________________________________________________________________________
void AliMAG::CreateGeometry()
{
  //
  // Create geometry for L3 magnet
  //
  //Begin_Html
  /*
    <img src="picts/mag.gif">
  */
  //End_Html
    
  //Begin_Html
  /*
    <img src="picts/tree_mag.gif">
    <br> Dimensions taken from drawing: ALIL3___00010
  //End_Html
  */
// Octagon
    const Int_t   kNSides              =    8;
    const Float_t kStartAngle          =   22.5; // deg
    const Float_t kFullAngle           =  360.0; // deg
//  Mother volume 
    const Float_t kRBMotherInner       = 600.00; // cm
    const Float_t kRBMotherOuter       = 790.50; // cm
    const Float_t kLBMother            = 706.00; // cm
// Yoke     
    const Float_t kRYokeInner          = 703.50; // cm
    const Float_t kRYokeOuter          = 790.50; // cm
    const Float_t kLYoke               = 620.00; // cm
// Coil
    const Float_t kRCoilInner          = 593.00; // cm
    const Float_t kRCoilOuter          = 682.00; // cm
    const Float_t kLCoil               = 588.00; // cm
// Cooling
    const Float_t kRCoolingOuter       = 1.70; // cm
    const Float_t kRCoolingInner       = 1.00; // cm
// Thermal Shield    
    const Float_t kRThermalShieldInner = 566.00; // cm
    const Float_t kRThermalShieldOuter = 571.00; // cm
// Crown    
    const Float_t kRCrownInner         = 600.00; // cm    
    const Float_t kRCrownOuter         = 785.50; // cm
    const Float_t kLCrown1             = 605.00; // cm
    const Float_t kLCrown2             = 620.00; // cm
    const Float_t kLCrown3             = 706.00; // cm
// Door
    const Float_t kRDoorOuter          = 600.00; // cm
    const Float_t kRPlugInner          = 183.50; // cm
    const Float_t kLDoor1              = 615.50; // cm
    const Float_t kLDoor2              = 714.60; // cm
//
    const Float_t kDegRad              = TMath::Pi()/180.;
    
    
  //
  // Top volume 
  TGeoVolume* top = gGeoManager->GetVolume("ALIC");
  // Media 
  TGeoMedium* medAir    = gGeoManager->GetMedium("MAG_AIR_C1");
  TGeoMedium* medAlu    = gGeoManager->GetMedium("MAG_ALU_C1");  
  TGeoMedium* medAluI   = gGeoManager->GetMedium("MAG_ALU_C0");
  TGeoMedium* medSteel  = gGeoManager->GetMedium("MAG_ST_C1");
  TGeoMedium* medWater  = gGeoManager->GetMedium("MAG_WATER");
  //
  // Offset between LHC and LEP axis
  Float_t os = -30.;

  //
  //  Define Barrel Mother 
  //  
  TGeoPgon* shBMother = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 2);
  shBMother->DefineSection(0, -kLBMother, kRBMotherInner, kRBMotherOuter);
  shBMother->DefineSection(1,  kLBMother, kRBMotherInner, kRBMotherOuter);  
  // 
  TGeoVolumeAssembly* voBMother = new TGeoVolumeAssembly("L3BM");
  //
  // Define Thermal Shield
  //
  // Only one layer
  // This can be improved: replace by (protection - shield - insulation) !
  //
  TGeoPgon* shThermSh = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 2);
  shThermSh->DefineSection(0, -kLCoil, kRThermalShieldInner, kRThermalShieldOuter);
  shThermSh->DefineSection(1,  kLCoil, kRThermalShieldInner, kRThermalShieldOuter);  
  // 
  TGeoVolume* voThermSh = new TGeoVolume("L3TS", shThermSh, medAluI);
  voBMother->AddNode(voThermSh, 1, new TGeoTranslation(0., 0., 0.));
  //  
  // Define Coils and cooling circuits
  //
  TGeoPgon* shCoilMother = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 2);
  shCoilMother->DefineSection(0, -kLCoil, kRCoilInner - 2. * kRCoolingOuter, kRCoilOuter + 2. * kRCoolingOuter);
  shCoilMother->DefineSection(1,  kLCoil, kRCoilInner - 2. * kRCoolingOuter, kRCoilOuter + 2. * kRCoolingOuter);  
  // 
  // Coils
  TGeoVolume* voCoilMother = new TGeoVolume("L3CM", shCoilMother, medAir);
  voBMother->AddNode(voCoilMother, 1, new TGeoTranslation(0., 0., 0.));
  // Devide into the 168 turns
  TGeoVolume* voCoilTurn   = voCoilMother->Divide("L3CD", 3, 168, 0., 0.);
  TGeoPgon* shCoils = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 2);
  shCoils->DefineSection(0, -3., kRCoilInner, kRCoilOuter);
  shCoils->DefineSection(1,  3., kRCoilInner, kRCoilOuter); 
  // 
  TGeoVolume* voCoils = new TGeoVolume("L3C0", shCoils, medAlu);
  voCoilTurn->AddNode(voCoils, 1, new TGeoTranslation(0., 0., 0.));
  //
  // Hexagonal Cooling circuits
  // 
  const Float_t kRCC = kRCoolingOuter;
  const Float_t kRCW = kRCoolingInner;
  const Float_t kRCL = kRCC * TMath::Tan(30. / 180. * TMath::Pi());
  const Float_t kRWL = kRCW * TMath::Tan(30. / 180. * TMath::Pi());
  // Outer Circuits
  //
  // Pipe
  TGeoPgon* shCoolingPipeO = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 4);
  shCoolingPipeO->DefineSection(0, -kRCC, kRCoilOuter + kRCC, kRCoilOuter + kRCC + 0.01);
  shCoolingPipeO->DefineSection(1, -kRCL, kRCoilOuter, kRCoilOuter + 2. * kRCC);
  shCoolingPipeO->DefineSection(2,  kRCL, kRCoilOuter, kRCoilOuter + 2. * kRCC);
  shCoolingPipeO->DefineSection(3,  kRCC, kRCoilOuter + kRCC, kRCoilOuter + kRCC + 0.01);
  //
  TGeoVolume* voCoolingPipeO = new TGeoVolume("L3CCO", shCoolingPipeO, medAlu);
  voCoilTurn->AddNode(voCoolingPipeO, 1, new TGeoTranslation(0., 0., 0.));
  //
  TGeoPgon* shCoolingWaterO = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 4);
  shCoolingWaterO->DefineSection(0, -kRCW, kRCoilOuter + kRCC, kRCoilOuter + kRCC + 0.01);
  shCoolingWaterO->DefineSection(1, -kRWL, kRCoilOuter + (kRCC - kRCW), kRCoilOuter + kRCC + kRCW);
  shCoolingWaterO->DefineSection(2,  kRWL, kRCoilOuter + (kRCC - kRCW), kRCoilOuter + kRCC + kRCW);
  shCoolingWaterO->DefineSection(3,  kRCW, kRCoilOuter + kRCC, kRCoilOuter + kRCC + 0.01);
  //
  TGeoVolume* voCoolingWaterO = new TGeoVolume("L3CWO", shCoolingWaterO, medWater);
  voCoolingPipeO->AddNode(voCoolingWaterO, 1, new TGeoTranslation(0., 0., 0.));

  // Inner Circuits
  //
  // Pipe
  TGeoPgon* shCoolingPipeI = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 4);
  shCoolingPipeI->DefineSection(0, -kRCC, kRCoilInner - kRCC, kRCoilInner - kRCC + 0.01);
  shCoolingPipeI->DefineSection(1, -kRCL, kRCoilInner - 2. * kRCC, kRCoilInner);
  shCoolingPipeI->DefineSection(2,  kRCL, kRCoilInner - 2. * kRCC, kRCoilInner);
  shCoolingPipeI->DefineSection(3,  kRCC, kRCoilInner - kRCC, kRCoilInner - kRCC + 0.01);
  //
  TGeoVolume* voCoolingPipeI = new TGeoVolume("L3CCI", shCoolingPipeI, medAlu);
  voCoilTurn->AddNode(voCoolingPipeI, 1, new TGeoTranslation(0., 0., 0.));
  //
  TGeoPgon* shCoolingWaterI = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 4);
  shCoolingWaterI->DefineSection(0, -kRCW, kRCoilInner - kRCC, kRCoilInner - kRCC + 0.01);
  shCoolingWaterI->DefineSection(1, -kRWL, kRCoilInner - kRCC - kRCW, kRCoilInner - (kRCC - kRCW));
  shCoolingWaterI->DefineSection(2,  kRWL, kRCoilInner - kRCC - kRCW, kRCoilInner - (kRCC - kRCW));
  shCoolingWaterI->DefineSection(3,  kRCW, kRCoilInner - kRCC, kRCoilInner - kRCC + 0.01);
  //
  TGeoVolume* voCoolingWaterI = new TGeoVolume("L3CWI", shCoolingWaterI, medWater);
  voCoolingPipeI->AddNode(voCoolingWaterI, 1, new TGeoTranslation(0., 0., 0.));

  //
  // Define Yoke
  //
  TGeoPgon* shYoke = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 2);
  shYoke->DefineSection(0, -kLYoke, kRYokeInner, kRYokeOuter);
  shYoke->DefineSection(1, +kLYoke, kRYokeInner, kRYokeOuter);  
  // 
  TGeoVolume* voYoke = new TGeoVolume("L3YO", shYoke, medSteel);
  voBMother->AddNode(voYoke, 1, new TGeoTranslation(0., 0., 0.));

  //
  // Define Crown
  //
  TGeoPgon* shCrown = new TGeoPgon(kStartAngle, kFullAngle, kNSides, 4);
  shCrown->DefineSection(0,  kLCrown1, kRCrownInner, kRYokeInner);
  shCrown->DefineSection(1,  kLCrown2, kRCrownInner, kRYokeInner);  
  shCrown->DefineSection(2,  kLCrown2, kRCrownInner, kRCrownOuter);  
  shCrown->DefineSection(3,  kLCrown3, kRCrownInner, kRCrownOuter);  
  // 
  TGeoVolume* voCrown = new TGeoVolume("L3CR", shCrown, medSteel);

  //
  // Door including "Plug"
  //
  Float_t slo = 2. * kRDoorOuter * TMath::Tan(22.5 * kDegRad);
  Float_t sli = 2. * kRPlugInner * TMath::Tan(22.5 * kDegRad);
  Double_t xpol1[12], xpol2[12], ypol1[12], ypol2[12];
  
  xpol1[ 0] = 2.         ;  ypol1[ 0] = kRDoorOuter;
  xpol1[ 1] = slo/2.     ;  ypol1[ 1] = kRDoorOuter;
  xpol1[ 2] = kRDoorOuter;  ypol1[ 2] = slo/2.;
  xpol1[ 3] = kRDoorOuter;  ypol1[ 3] = -slo/2.;
  xpol1[ 4] = slo/2.     ;  ypol1[ 4] = -kRDoorOuter;
  xpol1[ 5] = 2.         ;  ypol1[ 5] = -kRDoorOuter;
  xpol1[ 6] = 2.         ;  ypol1[ 6] = -kRPlugInner - os;
  xpol1[ 7] = sli/2.     ;  ypol1[ 7] = -kRPlugInner - os;
  xpol1[ 8] = kRPlugInner;  ypol1[ 8] = -sli/2.      - os;
  xpol1[ 9] = kRPlugInner;  ypol1[ 9] =  sli/2.      - os;
  xpol1[10] = sli/2.     ;  ypol1[10] = kRPlugInner  - os;
  xpol1[11] = 2.         ;  ypol1[11] = kRPlugInner  - os;

  TGeoXtru* shL3DoorR = new TGeoXtru(2);
  shL3DoorR->DefinePolygon(12, xpol1, ypol1);
  shL3DoorR->DefineSection(0, kLDoor1);
  shL3DoorR->DefineSection(1, kLDoor2);  
  TGeoVolume* voL3DoorR = new TGeoVolume("L3DoorR", shL3DoorR, medSteel);

  for (Int_t i = 0; i < 12; i++) {
      xpol2[i] = - xpol1[11 - i];
      ypol2[i] =   ypol1[11 - i];
  }
   
  TGeoXtru* shL3DoorL = new TGeoXtru(2);
  shL3DoorL->DefinePolygon(12, xpol2, ypol2);
  shL3DoorL->DefineSection(0, kLDoor1);
  shL3DoorL->DefineSection(1, kLDoor2);  
  TGeoVolume* voL3DoorL = new TGeoVolume("L3DoorL", shL3DoorL, medSteel);
  //
  // Plug support plate
  // 
  Float_t ro = kRPlugInner + 50.;
  slo = 2. * ro * TMath::Tan(22.5 * kDegRad);
  
  xpol1[ 0] = 2.         ;  ypol1[ 0] = ro     - os;
  xpol1[ 1] = slo/2.     ;  ypol1[ 1] = ro     - os;
  xpol1[ 2] = ro         ;  ypol1[ 2] = slo/2. - os;
  xpol1[ 3] = ro         ;  ypol1[ 3] = -slo/2.- os;
  xpol1[ 4] = slo/2.     ;  ypol1[ 4] = -ro    - os;
  xpol1[ 5] = 2.         ;  ypol1[ 5] = -ro    - os;

  for (Int_t i = 0; i < 12; i++) {
      xpol2[i] = - xpol1[11 - i];
      ypol2[i] =   ypol1[11 - i];
  }


  TGeoXtru* shL3PlugSPR = new TGeoXtru(2);
  shL3PlugSPR->DefinePolygon(12, xpol1, ypol1);
  shL3PlugSPR->DefineSection(0, kLDoor1-10.);
  shL3PlugSPR->DefineSection(1, kLDoor1);  
  TGeoVolume* voL3PlugSPR = new TGeoVolume("L3PlugSPR", shL3PlugSPR, medSteel);

  TGeoXtru* shL3PlugSPL = new TGeoXtru(2);
  shL3PlugSPL->DefinePolygon(12, xpol2, ypol2);
  shL3PlugSPL->DefineSection(0, kLDoor1-10.);
  shL3PlugSPL->DefineSection(1, kLDoor1);  
  TGeoVolume* voL3PlugSPL = new TGeoVolume("L3PlugSPL", shL3PlugSPL, medSteel);
  

  // Position crown and door
  TGeoRotation* rotxz = new TGeoRotation("rotxz",  90., 0., 90., 90., 180., 0.);

  TGeoVolumeAssembly *l3 = new TGeoVolumeAssembly("L3MO");
  voBMother->AddNode(voCrown, 1, new TGeoTranslation(0., 0., 0.));  
  voBMother->AddNode(voCrown, 2, new TGeoCombiTrans(0., 0., 0., rotxz));
  l3->AddNode(voBMother, 1, new TGeoTranslation(0.,0.,0.));
  l3->AddNode(voL3DoorR,  1, new TGeoTranslation(0., 0., 0.));  
  l3->AddNode(voL3DoorR,  2, new TGeoCombiTrans(0., 0., 0., rotxz));
  l3->AddNode(voL3DoorL,  1, new TGeoTranslation(0., 0., 0.));  
  l3->AddNode(voL3DoorL,  2, new TGeoCombiTrans(0., 0., 0., rotxz));
  l3->AddNode(voL3PlugSPR,  1, new TGeoTranslation(0., 0., 0.));  
  l3->AddNode(voL3PlugSPR,  2, new TGeoCombiTrans(0., 0., 0., rotxz));
  l3->AddNode(voL3PlugSPL,  1, new TGeoTranslation(0., 0., 0.));  
  l3->AddNode(voL3PlugSPL,  2, new TGeoCombiTrans(0., 0., 0., rotxz));
  top->AddNode(l3, 1, new TGeoTranslation(0., os, 0.));
}

//_____________________________________________________________________________
void AliMAG::CreateMaterials()
{
  //
  // Create materials for L3 magnet
  //
  
  Int_t   isxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
  Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
  Float_t epsil, stmin, deemax, tmaxfd, stemax;


  // --- Define the various materials for GEANT --- 
  // Steel  
  Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
  Float_t zsteel[4] = { 26.,24.,28.,14. };
  Float_t wsteel[4] = { .715,.18,.1,.005 };  
  Float_t aAir[4]={12.0107,14.0067,15.9994,39.948};
  Float_t zAir[4]={6.,7.,8.,18.};
  Float_t wAir[4]={0.000124,0.755267,0.231781,0.012827};
  Float_t dAir = 1.20479E-3;
  Float_t aWater[2]={1.00794,15.9994};
  Float_t zWater[2]={1.,8.};
  Float_t wWater[2]={0.111894,0.888106};
  

  //     Aluminum 
  AliMaterial(9, "Al0$", 26.98, 13., 2.7, 8.9, 37.2);
  AliMaterial(29, "Al1$", 26.98, 13., 2.7, 8.9, 37.2);
  
  //     Stainless Steel 
  AliMixture(19, "STAINLESS STEEL1", asteel, zsteel, 7.88, 4, wsteel);
  AliMixture(39, "STAINLESS STEEL2", asteel, zsteel, 7.88, 4, wsteel);
  AliMixture(59, "STAINLESS STEEL3", asteel, zsteel, 7.88, 4, wsteel);
  //     Iron 
  AliMaterial(10, "Fe0$", 55.85, 26., 7.87, 1.76, 17.1);
  AliMaterial(30, "Fe1$", 55.85, 26., 7.87, 1.76, 17.1);
  
  //     Air 
  AliMixture(15, "AIR0$      ", aAir, zAir, dAir, 4, wAir);
  AliMixture(35, "AIR1$      ", aAir, zAir, dAir, 4, wAir);
  //     Water
  AliMixture(16, "WATER", aWater, zWater, 1., 2, wWater);

  
  // **************** 
  //     Defines tracking media parameters. 
  //     Les valeurs sont commentees pour laisser le defaut 
  //     a GEANT (version 3-21, page CONS200), f.m. 
  epsil  = .001;  // Tracking precision, 
  stemax = -1.;   // Maximum displacement for multiple scat 
  tmaxfd = -20.;  // Maximum angle due to field deflection 
  deemax = -.3;   // Maximum fractional energy loss, DLS 
  stmin  = -.8;
  // *************** 
  
  //    IRON 
  
  AliMedium(10, "FE_C0             ", 10, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
  AliMedium(30, "FE_C1             ", 30, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
  
  //     ALUMINUM 

  AliMedium(9, "ALU_C0            ",  9, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
  AliMedium(29, "ALU_C1            ", 29, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
  
  //     AIR 
  
  AliMedium(15, "AIR_C0            ", 15, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
  AliMedium(35, "AIR_C1            ", 35, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
  //    Steel 
  AliMedium(19, "ST_C0           ", 19, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
  AliMedium(39, "ST_C1           ", 39, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
  AliMedium(59, "ST_C3           ", 59, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
  //    WATER
  AliMedium(16, "WATER             ", 16, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
}

//_____________________________________________________________________________
void AliMAG::Init()
{
  //
  // Initialise L3 magnet after it has been built
  Int_t i;
  //
  if(AliLog::GetGlobalDebugLevel()>0) {
    printf("\n%s: ",ClassName());
    for(i=0;i<35;i++) printf("*");
    printf(" MAG_INIT ");
    for(i=0;i<35;i++) printf("*");
    printf("\n%s: ",ClassName());
    //
    // Here the MAG initialisation code (if any!)
    for(i=0;i<80;i++) printf("*");
    printf("\n");
  }
}

 AliMAG.cxx:1
 AliMAG.cxx:2
 AliMAG.cxx:3
 AliMAG.cxx:4
 AliMAG.cxx:5
 AliMAG.cxx:6
 AliMAG.cxx:7
 AliMAG.cxx:8
 AliMAG.cxx:9
 AliMAG.cxx:10
 AliMAG.cxx:11
 AliMAG.cxx:12
 AliMAG.cxx:13
 AliMAG.cxx:14
 AliMAG.cxx:15
 AliMAG.cxx:16
 AliMAG.cxx:17
 AliMAG.cxx:18
 AliMAG.cxx:19
 AliMAG.cxx:20
 AliMAG.cxx:21
 AliMAG.cxx:22
 AliMAG.cxx:23
 AliMAG.cxx:24
 AliMAG.cxx:25
 AliMAG.cxx:26
 AliMAG.cxx:27
 AliMAG.cxx:28
 AliMAG.cxx:29
 AliMAG.cxx:30
 AliMAG.cxx:31
 AliMAG.cxx:32
 AliMAG.cxx:33
 AliMAG.cxx:34
 AliMAG.cxx:35
 AliMAG.cxx:36
 AliMAG.cxx:37
 AliMAG.cxx:38
 AliMAG.cxx:39
 AliMAG.cxx:40
 AliMAG.cxx:41
 AliMAG.cxx:42
 AliMAG.cxx:43
 AliMAG.cxx:44
 AliMAG.cxx:45
 AliMAG.cxx:46
 AliMAG.cxx:47
 AliMAG.cxx:48
 AliMAG.cxx:49
 AliMAG.cxx:50
 AliMAG.cxx:51
 AliMAG.cxx:52
 AliMAG.cxx:53
 AliMAG.cxx:54
 AliMAG.cxx:55
 AliMAG.cxx:56
 AliMAG.cxx:57
 AliMAG.cxx:58
 AliMAG.cxx:59
 AliMAG.cxx:60
 AliMAG.cxx:61
 AliMAG.cxx:62
 AliMAG.cxx:63
 AliMAG.cxx:64
 AliMAG.cxx:65
 AliMAG.cxx:66
 AliMAG.cxx:67
 AliMAG.cxx:68
 AliMAG.cxx:69
 AliMAG.cxx:70
 AliMAG.cxx:71
 AliMAG.cxx:72
 AliMAG.cxx:73
 AliMAG.cxx:74
 AliMAG.cxx:75
 AliMAG.cxx:76
 AliMAG.cxx:77
 AliMAG.cxx:78
 AliMAG.cxx:79
 AliMAG.cxx:80
 AliMAG.cxx:81
 AliMAG.cxx:82
 AliMAG.cxx:83
 AliMAG.cxx:84
 AliMAG.cxx:85
 AliMAG.cxx:86
 AliMAG.cxx:87
 AliMAG.cxx:88
 AliMAG.cxx:89
 AliMAG.cxx:90
 AliMAG.cxx:91
 AliMAG.cxx:92
 AliMAG.cxx:93
 AliMAG.cxx:94
 AliMAG.cxx:95
 AliMAG.cxx:96
 AliMAG.cxx:97
 AliMAG.cxx:98
 AliMAG.cxx:99
 AliMAG.cxx:100
 AliMAG.cxx:101
 AliMAG.cxx:102
 AliMAG.cxx:103
 AliMAG.cxx:104
 AliMAG.cxx:105
 AliMAG.cxx:106
 AliMAG.cxx:107
 AliMAG.cxx:108
 AliMAG.cxx:109
 AliMAG.cxx:110
 AliMAG.cxx:111
 AliMAG.cxx:112
 AliMAG.cxx:113
 AliMAG.cxx:114
 AliMAG.cxx:115
 AliMAG.cxx:116
 AliMAG.cxx:117
 AliMAG.cxx:118
 AliMAG.cxx:119
 AliMAG.cxx:120
 AliMAG.cxx:121
 AliMAG.cxx:122
 AliMAG.cxx:123
 AliMAG.cxx:124
 AliMAG.cxx:125
 AliMAG.cxx:126
 AliMAG.cxx:127
 AliMAG.cxx:128
 AliMAG.cxx:129
 AliMAG.cxx:130
 AliMAG.cxx:131
 AliMAG.cxx:132
 AliMAG.cxx:133
 AliMAG.cxx:134
 AliMAG.cxx:135
 AliMAG.cxx:136
 AliMAG.cxx:137
 AliMAG.cxx:138
 AliMAG.cxx:139
 AliMAG.cxx:140
 AliMAG.cxx:141
 AliMAG.cxx:142
 AliMAG.cxx:143
 AliMAG.cxx:144
 AliMAG.cxx:145
 AliMAG.cxx:146
 AliMAG.cxx:147
 AliMAG.cxx:148
 AliMAG.cxx:149
 AliMAG.cxx:150
 AliMAG.cxx:151
 AliMAG.cxx:152
 AliMAG.cxx:153
 AliMAG.cxx:154
 AliMAG.cxx:155
 AliMAG.cxx:156
 AliMAG.cxx:157
 AliMAG.cxx:158
 AliMAG.cxx:159
 AliMAG.cxx:160
 AliMAG.cxx:161
 AliMAG.cxx:162
 AliMAG.cxx:163
 AliMAG.cxx:164
 AliMAG.cxx:165
 AliMAG.cxx:166
 AliMAG.cxx:167
 AliMAG.cxx:168
 AliMAG.cxx:169
 AliMAG.cxx:170
 AliMAG.cxx:171
 AliMAG.cxx:172
 AliMAG.cxx:173
 AliMAG.cxx:174
 AliMAG.cxx:175
 AliMAG.cxx:176
 AliMAG.cxx:177
 AliMAG.cxx:178
 AliMAG.cxx:179
 AliMAG.cxx:180
 AliMAG.cxx:181
 AliMAG.cxx:182
 AliMAG.cxx:183
 AliMAG.cxx:184
 AliMAG.cxx:185
 AliMAG.cxx:186
 AliMAG.cxx:187
 AliMAG.cxx:188
 AliMAG.cxx:189
 AliMAG.cxx:190
 AliMAG.cxx:191
 AliMAG.cxx:192
 AliMAG.cxx:193
 AliMAG.cxx:194
 AliMAG.cxx:195
 AliMAG.cxx:196
 AliMAG.cxx:197
 AliMAG.cxx:198
 AliMAG.cxx:199
 AliMAG.cxx:200
 AliMAG.cxx:201
 AliMAG.cxx:202
 AliMAG.cxx:203
 AliMAG.cxx:204
 AliMAG.cxx:205
 AliMAG.cxx:206
 AliMAG.cxx:207
 AliMAG.cxx:208
 AliMAG.cxx:209
 AliMAG.cxx:210
 AliMAG.cxx:211
 AliMAG.cxx:212
 AliMAG.cxx:213
 AliMAG.cxx:214
 AliMAG.cxx:215
 AliMAG.cxx:216
 AliMAG.cxx:217
 AliMAG.cxx:218
 AliMAG.cxx:219
 AliMAG.cxx:220
 AliMAG.cxx:221
 AliMAG.cxx:222
 AliMAG.cxx:223
 AliMAG.cxx:224
 AliMAG.cxx:225
 AliMAG.cxx:226
 AliMAG.cxx:227
 AliMAG.cxx:228
 AliMAG.cxx:229
 AliMAG.cxx:230
 AliMAG.cxx:231
 AliMAG.cxx:232
 AliMAG.cxx:233
 AliMAG.cxx:234
 AliMAG.cxx:235
 AliMAG.cxx:236
 AliMAG.cxx:237
 AliMAG.cxx:238
 AliMAG.cxx:239
 AliMAG.cxx:240
 AliMAG.cxx:241
 AliMAG.cxx:242
 AliMAG.cxx:243
 AliMAG.cxx:244
 AliMAG.cxx:245
 AliMAG.cxx:246
 AliMAG.cxx:247
 AliMAG.cxx:248
 AliMAG.cxx:249
 AliMAG.cxx:250
 AliMAG.cxx:251
 AliMAG.cxx:252
 AliMAG.cxx:253
 AliMAG.cxx:254
 AliMAG.cxx:255
 AliMAG.cxx:256
 AliMAG.cxx:257
 AliMAG.cxx:258
 AliMAG.cxx:259
 AliMAG.cxx:260
 AliMAG.cxx:261
 AliMAG.cxx:262
 AliMAG.cxx:263
 AliMAG.cxx:264
 AliMAG.cxx:265
 AliMAG.cxx:266
 AliMAG.cxx:267
 AliMAG.cxx:268
 AliMAG.cxx:269
 AliMAG.cxx:270
 AliMAG.cxx:271
 AliMAG.cxx:272
 AliMAG.cxx:273
 AliMAG.cxx:274
 AliMAG.cxx:275
 AliMAG.cxx:276
 AliMAG.cxx:277
 AliMAG.cxx:278
 AliMAG.cxx:279
 AliMAG.cxx:280
 AliMAG.cxx:281
 AliMAG.cxx:282
 AliMAG.cxx:283
 AliMAG.cxx:284
 AliMAG.cxx:285
 AliMAG.cxx:286
 AliMAG.cxx:287
 AliMAG.cxx:288
 AliMAG.cxx:289
 AliMAG.cxx:290
 AliMAG.cxx:291
 AliMAG.cxx:292
 AliMAG.cxx:293
 AliMAG.cxx:294
 AliMAG.cxx:295
 AliMAG.cxx:296
 AliMAG.cxx:297
 AliMAG.cxx:298
 AliMAG.cxx:299
 AliMAG.cxx:300
 AliMAG.cxx:301
 AliMAG.cxx:302
 AliMAG.cxx:303
 AliMAG.cxx:304
 AliMAG.cxx:305
 AliMAG.cxx:306
 AliMAG.cxx:307
 AliMAG.cxx:308
 AliMAG.cxx:309
 AliMAG.cxx:310
 AliMAG.cxx:311
 AliMAG.cxx:312
 AliMAG.cxx:313
 AliMAG.cxx:314
 AliMAG.cxx:315
 AliMAG.cxx:316
 AliMAG.cxx:317
 AliMAG.cxx:318
 AliMAG.cxx:319
 AliMAG.cxx:320
 AliMAG.cxx:321
 AliMAG.cxx:322
 AliMAG.cxx:323
 AliMAG.cxx:324
 AliMAG.cxx:325
 AliMAG.cxx:326
 AliMAG.cxx:327
 AliMAG.cxx:328
 AliMAG.cxx:329
 AliMAG.cxx:330
 AliMAG.cxx:331
 AliMAG.cxx:332
 AliMAG.cxx:333
 AliMAG.cxx:334
 AliMAG.cxx:335
 AliMAG.cxx:336
 AliMAG.cxx:337
 AliMAG.cxx:338
 AliMAG.cxx:339
 AliMAG.cxx:340
 AliMAG.cxx:341
 AliMAG.cxx:342
 AliMAG.cxx:343
 AliMAG.cxx:344
 AliMAG.cxx:345
 AliMAG.cxx:346
 AliMAG.cxx:347
 AliMAG.cxx:348
 AliMAG.cxx:349
 AliMAG.cxx:350
 AliMAG.cxx:351
 AliMAG.cxx:352
 AliMAG.cxx:353
 AliMAG.cxx:354
 AliMAG.cxx:355
 AliMAG.cxx:356
 AliMAG.cxx:357
 AliMAG.cxx:358
 AliMAG.cxx:359
 AliMAG.cxx:360
 AliMAG.cxx:361
 AliMAG.cxx:362
 AliMAG.cxx:363
 AliMAG.cxx:364
 AliMAG.cxx:365
 AliMAG.cxx:366
 AliMAG.cxx:367
 AliMAG.cxx:368
 AliMAG.cxx:369
 AliMAG.cxx:370
 AliMAG.cxx:371
 AliMAG.cxx:372
 AliMAG.cxx:373
 AliMAG.cxx:374
 AliMAG.cxx:375
 AliMAG.cxx:376
 AliMAG.cxx:377
 AliMAG.cxx:378
 AliMAG.cxx:379
 AliMAG.cxx:380
 AliMAG.cxx:381
 AliMAG.cxx:382
 AliMAG.cxx:383
 AliMAG.cxx:384
 AliMAG.cxx:385
 AliMAG.cxx:386
 AliMAG.cxx:387
 AliMAG.cxx:388
 AliMAG.cxx:389
 AliMAG.cxx:390
 AliMAG.cxx:391
 AliMAG.cxx:392
 AliMAG.cxx:393
 AliMAG.cxx:394
 AliMAG.cxx:395
 AliMAG.cxx:396
 AliMAG.cxx:397
 AliMAG.cxx:398
 AliMAG.cxx:399
 AliMAG.cxx:400
 AliMAG.cxx:401
 AliMAG.cxx:402
 AliMAG.cxx:403
 AliMAG.cxx:404
 AliMAG.cxx:405
 AliMAG.cxx:406
 AliMAG.cxx:407
 AliMAG.cxx:408
 AliMAG.cxx:409
 AliMAG.cxx:410
 AliMAG.cxx:411
 AliMAG.cxx:412
 AliMAG.cxx:413
 AliMAG.cxx:414
 AliMAG.cxx:415
 AliMAG.cxx:416
 AliMAG.cxx:417
 AliMAG.cxx:418
 AliMAG.cxx:419
 AliMAG.cxx:420
 AliMAG.cxx:421
 AliMAG.cxx:422
 AliMAG.cxx:423
 AliMAG.cxx:424
 AliMAG.cxx:425
 AliMAG.cxx:426
 AliMAG.cxx:427
 AliMAG.cxx:428
 AliMAG.cxx:429
 AliMAG.cxx:430
 AliMAG.cxx:431
 AliMAG.cxx:432
 AliMAG.cxx:433
 AliMAG.cxx:434
 AliMAG.cxx:435
 AliMAG.cxx:436
 AliMAG.cxx:437
 AliMAG.cxx:438
 AliMAG.cxx:439