The present commit corresponds to an important change in the way the
authorfca <fca@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 1 Feb 2009 11:42:22 +0000 (11:42 +0000)
committerfca <fca@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 1 Feb 2009 11:42:22 +0000 (11:42 +0000)
Magnetic qField is used in AliRoot.

- Only one field will be supported, the Chebichev parametrisation
  developed by R.Shahoyan, with the name AliMagF. Different field
  strengths will be obtained by changing the scale factor for the
  dipole and the solenoid fields. Some highlights of these changes are
  here

- All other mag field classes and maps are deleted

- The field is accessed via a call to
  TGeoGlobalMagField::Instance()->Field(...) both in simulation and in
  reconstruction. This has involved changes in very many files in the
  following modules: ACORDE, BCM, EMCAL, EVE, FMD, HLT, HMPID, ITS,
  MONITOR, MUON, PHOS, PMD, PWG1, PWG3, RAW, STEER, STRUCT, T0, TOF,
  TPC, TRD, VZERO, ZDC, test.

- The modifications to account for the new field were done in the
  compilable code and in all the macro. These have now to be carefully
  tested by the authors.

- If your macros are creating the field, note that the field should be
  constructed as:

AliMagF* fld = new AliMagF(
const char *anyname,  // same as before, up to you
const char* anytitle, // same as before, ...
Int_t integ,          // same as before, geant
Double_t factorSol=1.,// scaling (including the sign) for the solenoid
Double_t factorDip=1.,// new parameter, scaling for dipole
Double_t fmax=15,     // same as before
BMap_t maptype = k5kG,// map type: choices are AliMagF::k5kG,
                    // AliMagF::k2kG and k5kGUniform
                    // the latter will provide former AliMagFC-like
                    // field: constant Bz for L3, BX parabolic in
                    // Z for dipole
const char* path="$(ALICE_ROOT)/data/maps/mfchebKGI_sym.root",
                    // parameterization file to use.
BeamType_t btype=kBeamTypepp, // used to define the field for ZDC,
                    // choices are: AliMagF::kBeamTypeAA,
                    // AliMagF::kBeamTypepp, liMagF::kNoBeamField
Double_t benergy=7000., // currently only 450, 5000 and 7000 are
                      //supported, will be changed soon
Bool_t compensator=kFALSE // this are compensator dipoles for the
                      // Muon dipole, most probably it will be
                      // eliminated soon, set it to kTRUE for
                      // the moment
);

- Note that in order to make the field available to Aliroot it should
  be registered by

TGeoGlobalMagField::Instance()->SetField(fld);

- The following lock will prevent the field from resetting:

TGeoGlobalMagField::Instance()->Lock();

- In the macros and in the code the field may be accessed via either
  direct call

TGeoGlobalMagField::Instance()->Field(const double* x,double *b)

  or casted to
AliMagF* fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();

  in case you need the methods like GetTPCInt().

- Since many classes use only Bz component, I've added a new method
  AliMagF::GetBz(const double* x) which computes the Bz w/o spending
  the time on Bx,By.

241 files changed:
ACORDE/AliACORDE.cxx
ACORDE/macros/Config.C
BCM/AliBCM.cxx
BCM/Config_BCM.C
EMCAL/AliEMCAL.cxx
EMCAL/AliEMCALTrack.cxx
EMCAL/AliEMCALTrack.h
EMCAL/beamtest07/Rec.C
EMCAL/jetfinder/AliEMCALJetFinder.cxx
EMCAL/jetfinder/AliEMCALJetFinderAlgo.cxx
EMCAL/jetfinder/AliEMCALJetFinderInputSimPrep.cxx
EMCAL/macros/Config.C
EMCAL/macros/TestEMCALReconstruction.C
EVE/EveBase/AliEveEventManager.cxx
EVE/EveBase/AliEveEventManager.h
EVE/EveDet/AliEveMUONTrack.cxx
EVE/EveDet/AliEveMUONTrack.h
EVE/alice-macros/MUON_displayData.C
EVE/alice-macros/MUON_displaySimu.C
EVE/alice-macros/kine_tracks.C
EVE/alice-macros/trd_qaRec.C
FMD/AliFMD.cxx
FMD/Config.C
FMD/scripts/DummyConfig.C
FMD/scripts/pdc06_config.C
GRP/UpdateCDBGRPEntryMC.C
HLT/ITS/AliHLTITStracker.cxx
HLT/ITS/RunHLTITS.C
HLT/TPCLib/AliHLTTPCTransform.cxx
HLT/TPCLib/macros/activePadsTest.C
HLT/TPCLib/macros/cal-hlt-tpc-offline.C
HLT/TPCLib/macros/histogramHandlerTest.C
HLT/TPCLib/macros/rec-hlt-tpc-ca.C
HLT/TPCLib/macros/rec-hlt-tpc-offline.C
HLT/TPCLib/macros/rec-hlt-tpc-tracks.C
HLT/TPCLib/macros/rec-hlt-tpc.C
HLT/TPCLib/offline/AliHLTTPCOfflineClustererComponent.cxx
HLT/TPCLib/offline/AliHLTTPCOfflineTrackerCalibComponent.cxx
HLT/TPCLib/offline/AliHLTTPCOfflineTrackerComponent.cxx
HLT/TRD/AliHLTTRDTrackerComponent.cxx
HLT/TRD/AliHLTTRDTrackerComponent.h
HLT/TRD/AliHLTTRDTrackerV1Component.cxx
HLT/TRD/AliHLTTRDTrackerV1Component.h
HLT/global/macros/rec-hlt-global-merger.C
HLT/sim/AliHLTSimulation.cxx
HMPID/AliHMPIDtrack.cxx
HMPID/AliHMPIDtrack.h
HMPID/AliHMPIDv1.cxx
HMPID/AliHMPIDv2.cxx
HMPID/AliHMPIDv3.cxx
HMPID/Hconfig.C
HMPID/Hnew.C
ITS/AliCascadeFindVertices.C
ITS/AliITSFindTracksANN.C
ITS/AliITSFindTracksSA.C
ITS/AliITSTrackV1.cxx
ITS/AliITSTrackerV1.cxx
ITS/AliITSsimulationSPD.cxx
ITS/AliITStrackV2.cxx
ITS/AliITStrackV2.h
ITS/AliITStrackerMI.cxx
ITS/AliITStrackerV2.cxx
ITS/AliITSv11Geometry.cxx
ITS/AliITSv11GeometrySPD.cxx
ITS/AliITSv11Hybrid.cxx
ITS/AliITSvBeamTestITS04.cxx
ITS/AliITSvPPRasymmFMD.cxx
ITS/AliITSvPPRcoarseasymm.cxx
ITS/AliITSvSDD03.cxx
ITS/AliITSvSPD02.cxx
ITS/AliITSvSSD03.cxx
ITS/ConfigSDD03.C
ITS/ConfigSPD02.C
ITS/ConfigSSD03.C
ITS/oldmacros/AliITSVertexerTracksTest2.C
MONITOR/galice.C
MONITOR/monitorGDC.cxx
MUON/AliMUONCheck.cxx
MUON/AliMUONCommonGeometryBuilder.cxx
MUON/AliMUONSt1GeometryBuilderV2.cxx
MUON/AliMUONTrackExtrap.cxx
MUON/AliMUONTrackExtrap.h
MUON/AliMUONTrackHitPattern.cxx
MUON/AliMUONVTrackReconstructor.cxx
MUON/AliMUONv1.cxx
MUON/Config.C
MUON/DecodeRecoCocktail.C
MUON/Doxymodules_STEER.h
MUON/MUONAlignment.C
MUON/MUONClusterInfo.C
MUON/MUONRecoCheck.C
MUON/MUONRefit.C
MUON/MUONResoEffChamber.C
MUON/MUONefficiency.C
MUON/MUONmassPlot_ESD.C
MUON/runDataReconstruction.C
MUON/runReconstruction.C
PHOS/AliPHOS.cxx
PHOS/ConfigTestSuite.C
PHOS/macros/AlignmentDB/Config.C
PHOS/macros/Embed/Config.C
PHOS/macros/testSuite/ConfigTestSuite.C
PHOS/macros/testSuite/ConfigTestSuiteHij.C
PMD/AliPMDRec.C
PMD/AliPMDv0.cxx
PMD/AliPMDv1.cxx
PMD/AliPMDv2008.cxx
PMD/AliPMDv3.cxx
PWG1/AliComparisonEff.cxx
PWG1/AliComparisonEff.h
PWG1/AliComparisonTask.cxx
PWG1/AliComparisonTask.h
PWG1/AliRecInfoMaker.cxx
PWG1/Macros/RunAliComparisonTask.C
PWG3/muondep/AliAnalysisTaskMuonTrackingEff.cxx
PWG3/muondep/AliAnalysisTaskRecoCheck.cxx
RAW/AliHoughFilter.cxx
STEER/AliESDComparisonMI.C
STEER/AliMC.cxx
STEER/AliMC.h
STEER/AliMagFC.cxx [deleted file]
STEER/AliMagFC.h [deleted file]
STEER/AliMagFCM.cxx [deleted file]
STEER/AliMagFCM.h [deleted file]
STEER/AliMagFCheb.cxx [deleted file]
STEER/AliMagFCheb.h [deleted file]
STEER/AliMagFDM.cxx [deleted file]
STEER/AliMagFDM.h [deleted file]
STEER/AliMagFMaps.cxx [deleted file]
STEER/AliMagFMaps.h [deleted file]
STEER/AliMagFMapsV1.cxx [deleted file]
STEER/AliMagFMapsV1.h [deleted file]
STEER/AliReconstruction.cxx
STEER/AliReconstruction.h
STEER/AliRun.cxx
STEER/AliRun.h
STEER/AliSimulation.cxx
STEER/AliSimulation.h
STEER/AliTrackPointArray.cxx
STEER/AliTracker.cxx
STEER/AliTracker.h
STEER/AliVTrack.cxx
STEER/AliVTrack.h
STRUCT/AliABSO.cxx
STRUCT/AliBODY.cxx
STRUCT/AliDIPOv2.cxx
STRUCT/AliFRAMEv2.cxx
STRUCT/AliHALL.cxx
STRUCT/AliMAG.cxx
STRUCT/AliPIPEv0.cxx
STRUCT/AliPIPEv1.cxx
STRUCT/AliPIPEv3.cxx
STRUCT/AliPIPEvTemp.cxx
STRUCT/AliSHIL.cxx
T0/AliT0v0.cxx
T0/AliT0v1.cxx
T0/AliT0v2.cxx
TFluka/macro/FlukaConfig.C
TOF/AliTOFconfig.C
TOF/AliTOFtrack.cxx
TOF/AliTOFtrack.h
TOF/AliTOFv4T0.cxx
TOF/AliTOFv5T0.cxx
TOF/AliTOFv6T0.cxx
TPC/AliL1Delay.C
TPC/AliTPC.cxx
TPC/AliTPCExB.cxx
TPC/AliTPCExBExact.cxx
TPC/AliTPCExBExact.h
TPC/AliTPCExBFirst.cxx
TPC/AliTPCExBFirst.h
TPC/AliTPCFindTracksMI.C
TPC/AliTPCHits2SDigits.C
TPC/AliTPCReconstructor.cxx
TPC/AliTPCTracklet.cxx
TPC/AliTPCcalibCosmic.cxx
TPC/AliTPCcalibDB.cxx
TPC/AliTPCcalibTime.cxx
TPC/AliTPCcalibUnlinearity.cxx
TPC/AliTPCtrack.cxx
TPC/AliTPCtrack.h
TPC/AliTPCtrackerParam.cxx
TPC/AliTPCtrackingParamDB.C
TPC/AnalyzeESDtracks.C
TPC/Cal/AliTPCCreateDummyCDB.C
TPC/CalibMacros/CalibExB.C
TPC/ConfigKr.C
TPC/macros/ConfigOCDB.C
TPC/macros/TestV0.C
TPC/macros/recMag5.C
TPC/macros/recTPC2007.C
TPC/macros/testTPC/rec.C
TPC/recTPC.C
TPC/testMC/ConfigCosmic.C
TPC/testMC/ConfigHM.C
TPC/testMC/ConfigHPT.C
TPC/testMC/ConfigHPT1.C
TPC/testMC/ConfigLM.C
TPC/testMC/ConfigPP.C
TPC/testMC/Config_AliGenCosmicsParam.C
TPC/testMC/recMC.C
TPHIC/ConfigTPHIC.C
TRD/AliTRD.cxx
TRD/AliTRDdigitizer.cxx
TRD/AliTRDtrackV1.cxx
TRD/AliTRDtrackV1.h
TRD/Macros/AliTRDConfigPID.C
TRD/qaRec/AliTRDtrackingEfficiency.cxx
TRD/qaRec/AliTRDtrackingEfficiencyCombined.cxx
TRD/qaRec/run.C
VZERO/AliVZEROv2.cxx
VZERO/AliVZEROv3.cxx
VZERO/AliVZEROv4.cxx
VZERO/AliVZEROv5.cxx
VZERO/AliVZEROv6.cxx
VZERO/AliVZEROv7.cxx
ZDC/AliZDCv1.cxx
ZDC/ConfigGenZDC.C
doc/aliroot-primer/scripts/Config.C
macros/Config.C
macros/ConfigPPR.C
macros/Config_AliGenCosmicsParam.C
macros/Config_PDC06.C
macros/Config_PDC06_MUON.C
macros/Config_PDC07_MBias_MUON.C
macros/Config_PythiaHeavyFlavours.C
macros/g4ConfigCommon.C
macros/plotField.C
test/PbPbbench/Config.C
test/QA/Config.C
test/cosmic/rec.C
test/embedding/Config.C
test/fpprod/Config.C
test/genkine/runtest.sh
test/genkine/sim/Config.C
test/gun/Config.C
test/merge/backgr/Config.C
test/merge/signal/Config.C
test/pileup/Config.C
test/ppbench/Config.C
test/pploadlibs/Config.C

index 44ead56..a34e33e 100644 (file)
 ///////////////////////////////////////////////////////////////////////////////
 
 #include <TClonesArray.h>
-#include <TTree.h>
-#include <TVirtualMC.h>
+#include <TGeoGlobalMagField.h>
 #include <TGeoManager.h>
 #include <TStopwatch.h>
+#include <TTree.h>
+#include <TVirtualMC.h>
 
 #include "AliACORDE.h"
 #include "AliMagF.h"
@@ -85,8 +86,8 @@ AliACORDE::~AliACORDE()
 void AliACORDE::CreateMaterials()
 {
   // Magnatic field inside the pit
-  Int_t   isxfld = gAlice->Field()->Integ();
-  Float_t sxmgmx = gAlice->Field()->Max();
+  Int_t   isxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+  Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
 
   //Magnetic field above the Magnet.
   Int_t xfield = 0;   // no Magnetic field.
index 806dc2d..463459f 100644 (file)
 //
-
 // Configuration for the Physics Data Challenge 2006
-
 //
-
-
-
 // One can use the configuration macro in compiled mode by
-
 // root [0] gSystem->Load("libgeant321");
-
 // root [0] gSystem->SetIncludePath("-I$ROOTSYS/include -I$ALICE_ROOT/include\
-
 //                   -I$ALICE_ROOT -I$ALICE/geant3/TGeant3");
-
 // root [0] .x grun.C(1,"Config_PDC06.C++")
-
-
-
 #if !defined(__CINT__) || defined(__MAKECINT__)
-
 #include <Riostream.h>
-
 #include <TRandom.h>
-
 #include <TDatime.h>
-
 #include <TSystem.h>
-
 #include <TVirtualMC.h>
-
 #include <TGeant3TGeo.h>
-
 #include "EVGEN/AliGenCocktail.h"
-
 #include "EVGEN/AliGenParam.h"
-
 #include "EVGEN/AliGenMUONlib.h"
-
 #include "STEER/AliRunLoader.h"
-
 #include "STEER/AliRun.h"
-
 #include "STEER/AliConfig.h"
-
 #include "PYTHIA6/AliDecayerPythia.h"
-
 #include "PYTHIA6/AliGenPythia.h"
-
-#include "STEER/AliMagFMaps.h"
-
+#include "STEER/AliMagF.h"
 #include "STRUCT/AliBODY.h"
-
 #include "STRUCT/AliMAG.h"
-
 #include "STRUCT/AliABSOv0.h"
-
 #include "STRUCT/AliDIPOv2.h"
-
 #include "STRUCT/AliHALL.h"
-
 #include "STRUCT/AliFRAMEv2.h"
-
 #include "STRUCT/AliSHILv2.h"
-
 #include "STRUCT/AliPIPEv0.h"
-
 #include "ITS/AliITSgeom.h"
-
 #include "ITS/AliITSvPPRasymmFMD.h"
-
 #include "TPC/AliTPCv2.h"
-
 #include "TOF/AliTOFv5T0.h"
-
 #include "HMPID/AliHMPIDv1.h"
-
 #include "ZDC/AliZDCv2.h"
-
 #include "TRD/AliTRDv1.h"
-
 #include "FMD/AliFMDv1.h"
-
 #include "MUON/AliMUONv1.h"
-
 #include "PHOS/AliPHOSv1.h"
-
 #include "PMD/AliPMDv1.h"
-
 #include "T0/AliT0v1.h"
-
 #include "EMCAL/AliEMCALv2.h"
-
 #include "CRT/AliCRTv0.h"
-
 #include "VZERO/AliVZEROv7.h"
-
 #endif
-
-
-
 //--- Trigger config ---
-
 enum TrigConf_t
-
 {
-
     kDefaultPPTrig, kDefaultPbPbTrig
-
 };
-
-
-
 const char * TrigConfName[] = {
-
     "p-p","Pb-Pb"
-
 };
-
-
-
-
-
-
-
 //--- Decay Mode ---
-
 enum DecayHvFl_t 
-
 {
-
   kNature,  kHadr, kSemiEl, kSemiMu
-
 };
-
 //--- Rapidity Cut ---
-
 enum YCut_t
-
 {
-
   kFull, kBarrel, kMuonArm
-
-};
-
-//--- Magnetic Field ---
-
-enum Mag_t
-
-{
-
-    k2kG, k4kG, k5kG
-
 };
-
-
-
 void ProcessEnvironmentVars();
-
-
-
 // This part for configuration
-
 static DecayHvFl_t   decHvFl  = kNature; 
-
 static YCut_t        ycut     = kFull;
-
-static Mag_t         mag      = k5kG; 
-
+static AliMagF::BMap_t mag    = AliMagF::k5kG; 
 static TrigConf_t    trig     = kDefaultPPTrig; 
-
 //========================//
-
 // Set Random Number seed //
-
 //========================//
-
 TDatime dt;
-
 static UInt_t seed    = dt.Get();
-
-
-
-
-
 // Comment line
-
 static TString comment;
-
-
-
 void Config()
-
 {
-
  
-
-
-
   // Get settings from environment variables
-
   ProcessEnvironmentVars();
-
-
-
   gRandom->SetSeed(seed);
-
   //  gRandom->SetSeed(12345);
-
   cerr<<"Seed for random number generation= "<<seed<<endl; 
-
-
-
   // libraries required by geant321
-
 #if defined(__CINT__)
-
   gSystem->Load("libgeant321");
-
 #endif
-
-
-
   new TGeant3TGeo("C++ Interface to Geant3");
-
-
-
   //=======================================================================
-
   //  Create the output file
-
-
-
    
-
   AliRunLoader* rl=0x0;
-
-
-
   cout<<"Config.C: Creating Run Loader ..."<<endl;
-
   rl = AliRunLoader::Open("galice.root",
-
                          AliConfig::GetDefaultEventFolderName(),
-
                          "recreate");
-
   if (rl == 0x0)
-
     {
-
       gAlice->Fatal("Config.C","Can not instatiate the Run Loader");
-
       return;
-
     }
-
   rl->SetCompressionLevel(2);
-
   rl->SetNumberOfEventsPerFile(1000);
-
   gAlice->SetRunLoader(rl);
-
   
-
   // Set the trigger configuration
-
   gAlice->SetTriggerDescriptor(TrigConfName[trig]);
-
   cout<<"Trigger configuration is set to  "<<TrigConfName[trig]<<endl;
-
-
-
   //
-
   //=======================================================================
-
   // ************* STEERING parameters FOR ALICE SIMULATION **************
-
   // --- Specify event type to be tracked through the ALICE setup
-
   // --- All positions are in cm, angles in degrees, and P and E in GeV
-
-
-
-
-
     gMC->SetProcess("DCAY",1);
-
     gMC->SetProcess("PAIR",1);
-
     gMC->SetProcess("COMP",1);
-
     gMC->SetProcess("PHOT",1);
-
     gMC->SetProcess("PFIS",0);
-
     gMC->SetProcess("DRAY",0);
-
     gMC->SetProcess("ANNI",1);
-
     gMC->SetProcess("BREM",1);
-
     gMC->SetProcess("MUNU",1);
-
     gMC->SetProcess("CKOV",1);
-
     gMC->SetProcess("HADR",1);
-
     gMC->SetProcess("LOSS",2);
-
     gMC->SetProcess("MULS",1);
-
     gMC->SetProcess("RAYL",1);
-
-
-
     Float_t cut = 1.e-3;        // 1MeV cut by default
-
     Float_t tofmax = 1.e10;
-
-
-
     gMC->SetCut("CUTGAM", cut);
-
     gMC->SetCut("CUTELE", cut);
-
     gMC->SetCut("CUTNEU", cut);
-
     gMC->SetCut("CUTHAD", cut);
-
     gMC->SetCut("CUTMUO", cut);
-
     gMC->SetCut("BCUTE",  cut); 
-
     gMC->SetCut("BCUTM",  cut); 
-
     gMC->SetCut("DCUTE",  cut); 
-
     gMC->SetCut("DCUTM",  cut); 
-
     gMC->SetCut("PPCUTM", cut);
-
     gMC->SetCut("TOFMAX", tofmax); 
-
     //    ((TGeant3 *) gMC)->SetSWIT(2,2); 
-
     //    ((TGeant3 *) gMC)->SetDEBU(1,999,1); 
-
-
-
-
-
-
-
-
-
   // Set External decayer //
-
   //======================//
-
   TVirtualMCDecayer* decayer = new AliDecayerPythia();
-
   // DECAYS
-
   //
-
   switch(decHvFl) {
-
   case kNature:
-
     decayer->SetForceDecay(kAll);
-
     break;
-
   case kHadr:
-
     decayer->SetForceDecay(kHadronicD);
-
     break;
-
   case kSemiEl:
-
     decayer->SetForceDecay(kSemiElectronic);
-
     break;
-
   case kSemiMu:
-
     decayer->SetForceDecay(kSemiMuonic);
-
     break;
-
   }
-
   decayer->Init();
-
   gMC->SetExternalDecayer(decayer);
-
-
-
   //=========================//
-
   // Generator Configuration //
-
   //=========================//
-
   AliGenBox* gener = new AliGenBox();
-
   gener->SetThetaRange(45,135);
-
   gener->SetPhiRange(30,150);
-
   gener->SetMomentumRange(9.8,10.2);
-
   gener->SetPart(kMuonMinus);
-
   gener->SetNumberParticles(20);
-
-
-
-
-
   gener->Init();
-
-
-
   // FIELD
-
   //    
-
-  if (mag == k2kG) {
-
+  if (mag == AliMagF::k2kG) {
     comment = comment.Append(" | L3 field 0.2 T");
-
-  } else if (mag == k4kG) {
-
-    comment = comment.Append(" | L3 field 0.4 T");
-
-  } else if (mag == k5kG) {
-
+  } else if (mag == AliMagF::k5kG) {
     comment = comment.Append(" | L3 field 0.5 T");
-
   }
-
   printf("\n \n Comment: %s \n \n", comment.Data());
-
     
-
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., mag);
-
+  AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,mag);
   field->SetL3ConstField(0); //Using const. field in the barrel
+  TGeoGlobalMagField::Instance()->SetField(field);
 
   rl->CdGAFile();
 
-  gAlice->SetField(field);    
-
-
-
-
-
-
-
   Int_t iABSO  = 0;
-
   Int_t iACORDE = 1;
-
   Int_t iDIPO  = 0;
-
   Int_t iEMCAL = 0;
-
   Int_t iFMD   = 0;
-
   Int_t iFRAME = 0;
-
   Int_t iHALL  = 0;
-
   Int_t iITS   = 0;
-
   Int_t iMAG   = 0;
-
   Int_t iMUON  = 0;
-
   Int_t iPHOS  = 0;
-
   Int_t iPIPE  = 0;
-
   Int_t iPMD   = 0;
-
   Int_t iHMPID  = 0;
-
   Int_t iSHIL  = 0;
-
   Int_t iT0 = 0;
-
   Int_t iTOF   = 0;
-
   Int_t iTPC   = 0;
-
   Int_t iTRD   = 0;
-
   Int_t iVZERO = 0;
-
   Int_t iZDC   = 0;
-
   
-
-
-
     //=================== Alice BODY parameters =============================
-
     AliBODY *BODY = new AliBODY("BODY", "Alice envelop");
-
-
-
-
-
     if (iMAG)
-
     {
-
         //=================== MAG parameters ============================
-
         // --- Start with Magnet since detector layouts may be depending ---
-
         // --- on the selected Magnet dimensions ---
-
         AliMAG *MAG = new AliMAG("MAG", "Magnet");
-
     }
-
-
-
-
-
     if (iABSO)
-
     {
-
         //=================== ABSO parameters ============================
-
         AliABSO *ABSO = new AliABSOv0("ABSO", "Muon Absorber");
-
     }
-
-
-
     if (iDIPO)
-
     {
-
         //=================== DIPO parameters ============================
-
-
-
         AliDIPO *DIPO = new AliDIPOv2("DIPO", "Dipole version 2");
-
     }
-
-
-
     if (iHALL)
-
     {
-
         //=================== HALL parameters ============================
-
-
-
         AliHALL *HALL = new AliHALL("HALL", "Alice Hall");
-
     }
-
-
-
-
-
     if (iFRAME)
-
     {
-
         //=================== FRAME parameters ============================
-
-
-
         AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame");
-
     }
-
-
-
     if (iSHIL)
-
     {
-
         //=================== SHIL parameters ============================
-
-
-
         AliSHIL *SHIL = new AliSHILv2("SHIL", "Shielding Version 2");
-
     }
-
-
-
-
-
     if (iPIPE)
-
     {
-
         //=================== PIPE parameters ============================
-
-
-
         AliPIPE *PIPE = new AliPIPEv0("PIPE", "Beam Pipe");
-
     }
-
  
-
     if(iITS) {
-
-
-
     //=================== ITS parameters ============================
-
     //
-
     // As the innermost detector in ALICE, the Inner Tracking System "impacts" on
-
     // almost all other detectors. This involves the fact that the ITS geometry
-
     // still has several options to be followed in parallel in order to determine
-
     // the best set-up which minimizes the induced background. All the geometries
-
     // available to date are described in the following. Read carefully the comments
-
     // and use the default version (the only one uncommented) unless you are making
-
     // comparisons and you know what you are doing. In this case just uncomment the
-
     // ITS geometry you want to use and run Aliroot.
-
     //
-
     // Detailed geometries:         
-
     //
-
     //
-
     //AliITS *ITS  = new AliITSv5symm("ITS","Updated ITS TDR detailed version with symmetric services");
-
     //
-
     //AliITS *ITS  = new AliITSv5asymm("ITS","Updates ITS TDR detailed version with asymmetric services");
-
     //
-
        AliITSvPPRasymmFMD *ITS  = new AliITSvPPRasymmFMD("ITS","New ITS PPR detailed version with asymmetric services");
-
        ITS->SetMinorVersion(2);  // don't touch this parameter if you're not an ITS developer
-
        ITS->SetReadDet(kFALSE);          // don't touch this parameter if you're not an ITS developer
-
     //    ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det");  // don't touch this parameter if you're not an ITS developer
-
        ITS->SetThicknessDet1(200.);   // detector thickness on layer 1 must be in the range [100,300]
-
        ITS->SetThicknessDet2(200.);   // detector thickness on layer 2 must be in the range [100,300]
-
        ITS->SetThicknessChip1(150.);  // chip thickness on layer 1 must be in the range [150,300]
-
        ITS->SetThicknessChip2(150.);  // chip thickness on layer 2 must be in the range [150,300]
-
        ITS->SetRails(0);            // 1 --> rails in ; 0 --> rails out
-
        ITS->SetCoolingFluid(1);   // 1 --> water ; 0 --> freon
-
-
-
     // Coarse geometries (warning: no hits are produced with these coarse geometries and they unuseful 
-
     // for reconstruction !):
-
     //                                                     
-
     //
-
     //AliITSvPPRcoarseasymm *ITS  = new AliITSvPPRcoarseasymm("ITS","New ITS PPR coarse version with asymmetric services");
-
     //ITS->SetRails(0);                // 1 --> rails in ; 0 --> rails out
-
     //ITS->SetSupportMaterial(0);      // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon
-
     //
-
     //AliITS *ITS  = new AliITSvPPRcoarsesymm("ITS","New ITS PPR coarse version with symmetric services");
-
     //ITS->SetRails(0);                // 1 --> rails in ; 0 --> rails out
-
     //ITS->SetSupportMaterial(0);      // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon
-
     //                      
-
     //
-
     //
-
     // Geant3 <-> EUCLID conversion
-
     // ============================
-
     //
-
     // SetEUCLID is a flag to output (=1) or not to output (=0) both geometry and
-
     // media to two ASCII files (called by default ITSgeometry.euc and
-
     // ITSgeometry.tme) in a format understandable to the CAD system EUCLID.
-
     // The default (=0) means that you dont want to use this facility.
-
     //
-
        ITS->SetEUCLID(0);  
-
     }
-
-
-
     if (iTPC)
-
     {
-
       //============================ TPC parameters =====================
-
         AliTPC *TPC = new AliTPCv2("TPC", "Default");
-
     }
-
-
-
-
-
     if (iTOF) {
-
         //=================== TOF parameters ============================
-
        AliTOF *TOF = new AliTOFv5T0("TOF", "normal TOF");
-
        // Partial geometry: modules at 2,3,4,6,7,11,12,14,15,16
-
        // starting at 6h in positive direction
-
        //      Int_t TOFSectors[18]={-1,-1,0,0,0,-1,0,0,-1,-1,-1,0,0,-1,0,0,0,0};
-
        // Partial geometry: modules at 1,2,6,7,9,10,11,12,15,16,17
-
        // (ALICE numbering convention)
-
                Int_t TOFSectors[18]={-1,0,0,-1,-1,-1,0,0,-1,0,0,0,0,-1,-1,0,0,0};
-
        TOF->SetTOFSectors(TOFSectors);
-
     }
-
-
-
-
-
     if (iHMPID)
-
     {
-
         //=================== HMPID parameters ===========================
-
         AliHMPID *HMPID = new AliHMPIDv1("HMPID", "normal HMPID");
-
-
-
     }
-
-
-
-
-
     if (iZDC)
-
     {
-
         //=================== ZDC parameters ============================
-
-
-
         AliZDC *ZDC = new AliZDCv2("ZDC", "normal ZDC");
-
     }
-
-
-
     if (iTRD)
-
     {
-
         //=================== TRD parameters ============================
-
-
-
         AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator");
-
         AliTRDgeometry *geoTRD = TRD->GetGeometry();
-
        // Partial geometry: modules at 2,3,4,6,11,12,14,15
-
        // starting at 6h in positive direction
-
        geoTRD->SetSMstatus(0,0);
-
         geoTRD->SetSMstatus(1,0);
-
         geoTRD->SetSMstatus(5,0);
-
         geoTRD->SetSMstatus(7,0);
-
         geoTRD->SetSMstatus(8,0);
-
         geoTRD->SetSMstatus(9,0);
-
         geoTRD->SetSMstatus(10,0);
-
         geoTRD->SetSMstatus(13,0);
-
         geoTRD->SetSMstatus(16,0);
-
         geoTRD->SetSMstatus(17,0);
-
     }
-
-
-
     if (iFMD)
-
     {
-
         //=================== FMD parameters ============================
-
        AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
-
    }
-
-
-
     if (iMUON)
-
     {
-
         //=================== MUON parameters ===========================
-
         // New MUONv1 version (geometry defined via builders)
-
         AliMUON *MUON = new AliMUONv1("MUON", "default");
-
     }
-
     //=================== PHOS parameters ===========================
-
-
-
     if (iPHOS)
-
     {
-
         AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP");
-
     }
-
-
-
-
-
     if (iPMD)
-
     {
-
         //=================== PMD parameters ============================
-
         AliPMD *PMD = new AliPMDv1("PMD", "normal PMD");
-
     }
-
-
-
     if (iT0)
-
     {
-
         //=================== T0 parameters ============================
-
         AliT0 *T0 = new AliT0v1("T0", "T0 Detector");
-
     }
-
-
-
     if (iEMCAL)
-
     {
-
         //=================== EMCAL parameters ============================
-
         AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETE");
-
     }
-
-
-
      if (iACORDE)
-
     {
-
         //=================== ACORDE parameters ============================
-
         AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE");
-
        // ACORDE->SetITSGeometry(kTRUE);
-
        // ACORDE->SetCreateCavern(kFALSE);
-
     }
-
-
-
      if (iVZERO)
-
     {
-
         //=================== VZERO parameters =============================
-
         AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");
-
     }
-
 }
-
-
-
 void ProcessEnvironmentVars()
-
 {
-
     // Run type
-
     if (gSystem->Getenv("CONFIG_RUN_TYPE")) {
-
       for (Int_t iRun = 0; iRun < kRunMax; iRun++) {
-
        if (strcmp(gSystem->Getenv("CONFIG_RUN_TYPE"), pprRunName[iRun])==0) {
-
          proc = (PDC06Proc_t)iRun;
-
          cout<<"Run type set to "<<pprRunName[iRun]<<endl;
-
        }
-
       }
-
     }
-
-
-
     // Random Number seed
-
     if (gSystem->Getenv("CONFIG_SEED")) {
-
       seed = atoi(gSystem->Getenv("CONFIG_SEED"));
-
     }
-
 }
-
-
-
-
-
-
-
index 2838a7e..5fda6f7 100644 (file)
 //  andreas.morsch@cern.ch                                                   // 
 ///////////////////////////////////////////////////////////////////////////////
  
-#include <TVirtualMC.h>
 #include <TClonesArray.h>
+#include <TGeoCompositeShape.h>
+#include <TGeoGlobalMagField.h>
+#include <TGeoManager.h>
 #include <TGeoMaterial.h>
-#include <TGeoMedium.h>
-#include <TGeoVolume.h>
 #include <TGeoMatrix.h>
+#include <TGeoMedium.h>
 #include <TGeoPgon.h>
+#include <TGeoVolume.h>
 #include <TGeoXtru.h>
-#include <TGeoCompositeShape.h>
-#include <TGeoManager.h>
+#include <TVirtualMC.h>
 
 #include "AliBCM.h"
 #include "AliBCMHit.h"
@@ -169,8 +170,8 @@ void AliBCM::CreateMaterials()
     Float_t tmaxfd = -20. ;  // Maximum angle due to field deflection 
     Float_t deemax = -.01;   // Maximum fractional energy loss, DLS 
     Float_t stmin  = -.8;
-    Int_t   isxfld = gAlice->Field()->Integ();
-    Float_t sxmgmx = gAlice->Field()->Max();
+    Int_t   isxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+    Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
 
     AliMaterial(1, "PCD", 12.011, 6., rho, radl, absl);
     //
index 7041c58..8f037ce 100644 (file)
@@ -16,7 +16,7 @@
 #include "PYTHIA6/AliDecayerPythia.h"
 #include "EVGEN/AliGenCocktail.h"
 #include "EVGEN/AliGenHIJINGpara.h"
-#include "STEER/AliMagFMaps.h"
+#include "STEER/AliMagF.h"
 #include "STRUCT/AliBODY.h"
 #include "STRUCT/AliMAG.h"
 #include "STRUCT/AliABSOv0.h"
@@ -153,10 +153,7 @@ void Config()
     //
     //gener->SetVertexSmear(perTrack); 
     // Field (L3 0.4 T)
-    AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., 1);
-    gAlice->SetField(field);    
-
-
+    TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 2, 1., 1., 10., AliMagF::k5kG));
 
     Int_t iABSO   = 1;
     Int_t iACORDE = 0;
index 781edf4..b030d72 100644 (file)
 // --- ROOT system ---
 class TFile;
 #include <TFolder.h> 
-#include <TTree.h>
-#include <TVirtualMC.h> 
+#include <TGeoGlobalMagField.h>
+#include <TGraph.h> 
 #include <TH1F.h> 
 #include <TRandom.h> 
-#include <TGraph.h> 
+#include <TTree.h>
+#include <TVirtualMC.h> 
 
 // --- Standard library ---
 
@@ -244,8 +245,8 @@ void AliEMCAL::CreateMaterials()
   // DEFINITION OF THE TRACKING MEDIA
 
   // for EMCAL: idtmed[1599->1698] equivalent to fIdtmed[0->100]
-  Int_t   isxfld = gAlice->Field()->Integ() ;
-  Float_t sxmgmx = gAlice->Field()->Max() ;
+  Int_t   isxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ() ;
+  Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max() ;
 
   // Air                                                                         -> idtmed[1599]
  AliMedium(0, "Air$", 0, 0,
index e293378..ce2098f 100755 (executable)
@@ -30,7 +30,6 @@
 #include "TVector3.h"
 
 #include "AliLog.h"
-#include "AliTracker.h"
 #include "AliESDtrack.h" 
 
 #include "AliEMCALTrack.h"
@@ -165,25 +164,6 @@ Int_t AliEMCALTrack::Compare(const TObject *obj) const
 //
 //------------------------------------------------------------------------------
 //
-Double_t AliEMCALTrack::GetBz() const 
-{
-       //
-       // Returns Z-component of the magnetic field in kG.
-       // In case it B is not constant, its value is returned
-       // at the current position of the track (local X,Y,Z)
-       //
-       
-       // if magnetic field is constant...
-       if (AliTracker::UniformField()) return AliTracker::GetBz();
-       
-       // ...else:
-       Double_t r[3];
-       GetXYZ(r);
-       return AliTracker::GetBz(r);
-}
-//
-//------------------------------------------------------------------------------
-//
 Bool_t AliEMCALTrack::PropagateTo(Double_t xk, Double_t d, Double_t x0)
 {
        //
index 947339f..fa92de7 100755 (executable)
@@ -31,8 +31,6 @@ public:
        AliEMCALTrack& operator=(const AliEMCALTrack &t);
        
        Int_t    Compare(const TObject *o) const;
-       
-       Double_t GetBz() const;
        Int_t    GetClusterIndex() const {return fClusterIndex;}
        Double_t GetClusterDist() const {return fClusterDist;}
        Double_t GetMass() const {return fMass;}
index 4516541..2a53633 100644 (file)
@@ -11,8 +11,6 @@ void Rec(TString file="/scratch/alicehp2/commun/testbeam07/LHC07a_EMCAL/00000019
   AliCDBManager::Instance()->SetSpecificStorage("EMCAL/Calib/Data","local://$ALICE_ROOT/EMCAL/beamtest07/");
 
   //AliLog::SetGlobalDebugLevel(2);
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., 1);
-  AliTracker::SetFieldMap(field,kFALSE);
 
   AliReconstruction rec ;
   rec.SetOption("EMCAL","OldRCUFormat");
index 4869ed3..2f7478b 100644 (file)
@@ -48,7 +48,6 @@
 #include "AliEMCALJetFinder.h"
 #include "AliHeader.h"
 #include "AliMagF.h"
-#include "AliMagFCM.h"
 #include "AliRun.h"
 #include "AliGenerator.h"
 #include "AliRunLoader.h"
@@ -1654,7 +1653,7 @@ Float_t AliEMCALJetFinder::PropagatePhi(Float_t pt, Float_t charge, Bool_t& curl
 //
   static Float_t b = 0.0, rEMCAL = -1.0;
 // Get field in kGS
-  b = gAlice->Field()->SolenoidField();
+  b = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->SolenoidField();
 // Get EMCAL radius in cm 
   rEMCAL = AliEMCALGeometry::GetInstance()->GetIPDistance();
   Float_t dPhi = 0.;
index 16a3ec2..e63feea 100644 (file)
@@ -94,7 +94,7 @@ Float_t AliEMCALJetFinderAlgo::PropagatePhi(Float_t pt, Float_t charge, Bool_t&
  Float_t b = 0.0, rEMCAL = -1.0;
  if(rEMCAL<0) 
  {     
-        b =  gAlice->Field()->SolenoidField();
+        b =  ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->SolenoidField();
         rEMCAL = AliEMCALGeometry::GetInstance()->GetIPDistance();
  }
  Float_t dPhi = 0.;
index 6a0973d..ad08fb6 100644 (file)
@@ -272,8 +272,8 @@ void AliEMCALJetFinderInputSimPrep::FillTracks()
             }
        }
 
-       if (gAlice && gAlice->Field()) 
-         bfield = gAlice->Field()->SolenoidField();
+       if (gAlice && ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())) 
+         bfield = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->SolenoidField();
        else
          bfield = 0.4;
        rEMCAL = AliEMCALGeometry::GetInstance()->GetIPDistance();
index 228e40a..4868042 100755 (executable)
@@ -17,7 +17,7 @@
 #include "PYTHIA6/AliDecayerPythia.h"
 #include "EVGEN/AliGenCocktail.h"
 #include "EVGEN/AliGenHIJINGpara.h"
-#include "STEER/AliMagFMaps.h"
+#include "STEER/AliMagF.h"
 #include "STRUCT/AliBODY.h"
 #include "STRUCT/AliMAG.h"
 #include "STRUCT/AliABSOv3.h"
@@ -152,9 +152,7 @@ void Config()
     //
     //gener->SetVertexSmear(perTrack); 
     // Field (L3 0.4 T)
-    AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., 1);
-    gAlice->SetField(field);    
-
+    TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 2, 1., 1., 10., AliMagF::k5kG));
 
     Int_t   iABSO  =  0;
     Int_t   iDIPO  =  0;
index 683e4b3..782cde1 100644 (file)
@@ -24,11 +24,6 @@ void TestEMCALReconstruction(Int_t nev =-1) {
   //rec.SetInput("raw.root");
   //rec.SetRunQA(":");
 
-  // **** The field map settings must be the same as in Config.C !
-  AliMagFMaps *field=new AliMagFMaps("Maps","Maps",2,1.,10.,AliMagFMaps::k5kG);
-  Bool_t uniform=kFALSE;
-  AliTracker::SetFieldMap(field,uniform);
-
   TStopwatch timer;
   timer.Start();
 
index 2e487ca..6dc80cd 100644 (file)
@@ -23,7 +23,7 @@
 #include <AliRawReaderRoot.h>
 #include <AliRawReaderFile.h>
 #include <AliRawReaderDate.h>
-#include <AliMagFMaps.h>
+#include <AliMagF.h>
 #include <AliCDBManager.h>
 #include <AliCDBStorage.h>
 #include <AliHeader.h>
@@ -77,8 +77,6 @@ TString  AliEveEventManager::fgAODFileName("AliAOD.root");
 TString  AliEveEventManager::fgRawFileName("raw.root");
 TString  AliEveEventManager::fgCdbUri("local://$ALICE_ROOT");
 
-AliMagF* AliEveEventManager::fgMagField = 0;
-
 TList*   AliEveEventManager::fgAODfriends = 0;
 
 AliEveEventManager* AliEveEventManager::fgMaster  = 0;
@@ -944,33 +942,6 @@ AliRawReader* AliEveEventManager::AssertRawReader()
   return fgCurrent->fRawReader;
 }
 
-AliMagF* AliEveEventManager::AssertMagField()
-{
-  // Make sure AliMagF is initialized and returns it.
-  // Run-loader must be initialized to get the correct magnetic field!
-  // Throws exception in case magnetic field is not available.
-  // Static utility for macros.
-
-  // !!!! This should be fixed ... get field also in some other way,
-  // not only via run-loader.
-
-  static const TEveException kEH("AliEveEventManager::AssertMagField ");
-
-  if (fgMagField == 0)
-  {
-    if (fgMaster && fgMaster->fRunLoader && fgMaster->fRunLoader->GetAliRun())
-    {
-      ::Info(kEH, "Retrieving magnetic field from AliRun.");
-      fgMagField = fgMaster->fRunLoader->GetAliRun()->Field();
-    }
-    else
-    {
-      ::Warning(kEH, "Instantiating default magnetic field (5kG).");
-      fgMagField = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-    }
-  }
-  return fgMagField;
-}
 
 TGeoManager* AliEveEventManager::AssertGeometry()
 {
index f79842a..9a5a47a 100644 (file)
@@ -90,8 +90,6 @@ public:
   static AliAODEvent*  AssertAOD();
   static AliRawReader* AssertRawReader();
 
-  static AliMagF*      AssertMagField();
-
   static TGeoManager*  AssertGeometry();
 
   static AliEveEventManager* AddDependentManager(const TString& name, const TString& path);
@@ -161,8 +159,6 @@ protected:
   static Bool_t   fgAssertAOD;         // Global flag specifying if AODEvent must be asserted during opening of the event-data.
   static Bool_t   fgAssertRaw;         // Global flag specifying if raw-data presence must be asserted during opening of the event-data.
 
-  static AliMagF *fgMagField;          // Global pointer to magnetic field.
-
   static TList   *fgAODfriends;         // Global list of AOD friend names to be attached during opening of the event-data (empty by default).
 
 private:
index 20ca3c7..d157f97 100644 (file)
@@ -12,7 +12,6 @@
 #include <EveBase/AliEveEventManager.h>
 
 #include <AliMagF.h>
-#include <AliMagFMaps.h>
 #include <AliLog.h>
 #include <AliESDMuonTrack.h>
 #include <AliESDEvent.h>
 #include <AliMUONVCluster.h>
 
 #include <TClonesArray.h>
-#include <TStyle.h>
-#include <TROOT.h>
+#include <TGeoGlobalMagField.h>
 #include <TParticle.h>
 #include <TParticlePDG.h>
+#include <TROOT.h>
+#include <TStyle.h>
 
 #include <Riostream.h>
 
@@ -45,7 +45,6 @@
 
 ClassImp(AliEveMUONTrack)
 
-AliMagF* AliEveMUONTrack::fgFieldMap = 0;
 
 //______________________________________________________________________________
 AliEveMUONTrack::AliEveMUONTrack(TEveRecTrack* t, TEveTrackPropagator* rs) :
@@ -62,9 +61,6 @@ AliEveMUONTrack::AliEveMUONTrack(TEveRecTrack* t, TEveTrackPropagator* rs) :
   //
   // constructor
   //
-
-  if (fgFieldMap == 0)
-    fgFieldMap = AliEveEventManager::AssertMagField();
 }
 
 //______________________________________________________________________________
@@ -814,37 +810,6 @@ void AliEveMUONTrack::Propagate(Float_t *xr, Float_t *yr, Float_t *zr, Int_t i1,
 }
 
 //______________________________________________________________________________
-void AliEveMUONTrack::GetField(Double_t *position, Double_t *field)
-{
-  //
-  // returns field components at position, for a give field map
-  //
-
-  /// interface for arguments in double precision (Why ? ChF)
-  Float_t x[3], b[3];
-
-  x[0] = position[0]; x[1] = position[1]; x[2] = position[2];
-
-  if (fgFieldMap) {
-    fgFieldMap->Field(x,b);
-  }
-  else {
-    AliWarning("No field map");
-    field[0] = field[1] = field[2] = 0.0;
-    return;
-  }
-
-  // force components
-  //b[1] = 0.0;
-  //b[2] = 0.0;
-
-  field[0] = b[0]; field[1] = b[1]; field[2] = b[2];
-
-  return;
-
-}
-
-//______________________________________________________________________________
 void AliEveMUONTrack::OneStepRungekutta(Double_t charge, Double_t step,
                                  Double_t* vect, Double_t* vout)
 {
@@ -922,8 +887,7 @@ void AliEveMUONTrack::OneStepRungekutta(Double_t charge, Double_t step,
       rest  = step - tl;
       if (TMath::Abs(h) > TMath::Abs(rest)) h = rest;
       //cmodif: call gufld(vout,f) changed into:
-
-      GetField(vout,f);
+      TGeoGlobalMagField::Instance()->Field(vout,f);
 
       // *
       // *             start of integration
@@ -967,7 +931,7 @@ void AliEveMUONTrack::OneStepRungekutta(Double_t charge, Double_t step,
       xyzt[2] = zt;
 
       //cmodif: call gufld(xyzt,f) changed into:
-      GetField(xyzt,f);
+      TGeoGlobalMagField::Instance()->Field(xyzt,f);
 
       at     = a + secxs[0];
       bt     = b + secys[0];
@@ -1004,7 +968,7 @@ void AliEveMUONTrack::OneStepRungekutta(Double_t charge, Double_t step,
       xyzt[2] = zt;
 
       //cmodif: call gufld(xyzt,f) changed into:
-      GetField(xyzt,f);
+      TGeoGlobalMagField::Instance()->Field(xyzt,f);
 
       z      = z + (c + (seczs[0] + seczs[1] + seczs[2]) * kthird) * h;
       y      = y + (b + (secys[0] + secys[1] + secys[2]) * kthird) * h;
index 4092c9b..e4729d5 100644 (file)
@@ -37,7 +37,6 @@ class AliEveMUONTrack: public TEveTrack
   void  MakeESDTrack(AliESDMuonTrack *mtrack);
   void  MakeMCTrack(TParticle *part);
   void  MakeRefTrack(AliMUONTrack *mtrack);
-  void  GetField(Double_t *position, Double_t *field);
   void  Propagate(Float_t *xr, Float_t *yr, Float_t *zr, Int_t i1, Int_t i2);
   void  OneStepRungekutta(Double_t charge, Double_t step,
                          Double_t* vect, Double_t* vout);
@@ -71,8 +70,6 @@ class AliEveMUONTrack: public TEveTrack
   Bool_t        fIsMCTrack;          // track from Kinematics.root
   Bool_t        fIsRefTrack;         // track from TrackRefs.root
 
-  static AliMagF      *fgFieldMap;    // pointer to the magnetic field map
-
   ClassDef(AliEveMUONTrack, 0);    // Produce TEveUtil:TEveTrack from AliMUONTrack
 };
 
index ea09a82..185338f 100644 (file)
@@ -15,8 +15,6 @@ AliEveMUONData     *g_muon_data       = 0;
 Int_t  g_currentEvent = -1;
 Bool_t g_fromRaw      = kFALSE;
 
-AliMagFMaps *g_field = 0;
-
 void MUON_displayData(Bool_t fromRaw = kFALSE, Bool_t showTracks = kTRUE, Bool_t clustersFromESD = kTRUE)
 {
   //
@@ -27,12 +25,13 @@ void MUON_displayData(Bool_t fromRaw = kFALSE, Bool_t showTracks = kTRUE, Bool_t
   if (!AliMpSegmentation::Instance()) AliMpCDB::LoadMpSegmentation();
   if (!AliMpDDLStore::Instance())     AliMpCDB::LoadDDLStore();
 
-  if (g_field == 0) {
+  if (!TGeoGlobalMagField::Instance()->GetField()) {
     printf("Loading field map...\n");
-    g_field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-    AliTracker::SetFieldMap(g_field, kFALSE);
-    AliMUONTrackExtrap::SetField(AliTracker::GetFieldMap());
+    AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG);
+    TGeoGlobalMagField::Instance()->SetField(field);
   }
+  // set the magnetic field for track extrapolations
+  AliMUONTrackExtrap::SetField();
 
   TTree* dt = 0;
   TTree* ct = 0;
index abd2037..3c8e74f 100644 (file)
@@ -15,7 +15,6 @@ AliEveMUONData     *g_muon_data       = 0;
 Int_t  g_currentEvent = -1;
 Bool_t g_fromRaw      = kFALSE;
 
-AliMagFMaps *g_field = 0;
 
 void MUON_displaySimu(Bool_t fromRaw = kFALSE, Bool_t showTracks = kTRUE, Bool_t clustersFromESD = kTRUE)
 {
@@ -27,12 +26,13 @@ void MUON_displaySimu(Bool_t fromRaw = kFALSE, Bool_t showTracks = kTRUE, Bool_t
   if (!AliMpSegmentation::Instance()) AliMpCDB::LoadMpSegmentation();
   if (!AliMpDDLStore::Instance())     AliMpCDB::LoadDDLStore();
 
-  if (g_field == 0) {
+  if (!TGeoGlobalMagField::Instance()->GetField()) {
     printf("Loading field map...\n");
-    g_field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-    AliTracker::SetFieldMap(g_field, kFALSE);
-    AliMUONTrackExtrap::SetField(AliTracker::GetFieldMap());
+    AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG);
+    TGeoGlobalMagField::Instance()->SetField(field);
   }
+  // set the magnetic field for track extrapolations
+  AliMUONTrackExtrap::SetField();
 
   TTree* dt = 0;
   TTree* ct = 0;
index 902cc68..3f38153 100644 (file)
@@ -30,17 +30,8 @@ kine_tracks(Double_t min_pt  = 0,     Double_t min_p   = 0,
   TEveTrackList* cont = new TEveTrackList("Kine Tracks");
   cont->SetMainColor(3);
   TEveTrackPropagator* rnrStyle = cont->GetPropagator();
-  Float_t mag_field = 0;
-  if (gAlice && gAlice->Field())
-  {
-    // !!! Watch the '-', apparently different sign convention then for ESD.
-    mag_field = -0.1*gAlice->Field()->SolenoidField();
-  }
-  else
-  {
-    Warning("kine_tracks.C", "Could not determine magnetic field from gAlice - using zero.");
-  }
-  rnrStyle->SetMagField(mag_field);
+  AliMagF* fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+  rnrStyle->SetMagField(fld ? -0.1*fld->SolenoidField() : 0);
 
   gEve->AddElement(cont);
   Int_t count = 0;
@@ -229,7 +220,8 @@ kine_track(Int_t  label,
 
       TEveTrackPropagator* rnrStyle = tlist->GetPropagator();
       // !!! Watch the '-', apparently different sign convention then for ESD.
-      rnrStyle->SetMagField( -0.1*gAlice->Field()->SolenoidField() );
+      AliMagF* fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+      rnrStyle->SetMagField( fld ? -0.1*fld->SolenoidField() : 0 );
       char tooltip[1000];
       sprintf(tooltip,"Ndaughters=%d", p->GetNDaughters());
       tlist->SetTitle(tooltip);
index 2d08530..312a40b 100644 (file)
@@ -16,8 +16,6 @@ void trd_qaRec()
   cdb->SetDefaultStorage("local://$ALICE_ROOT");
   cdb->SetRun(0);
   AliEveEventManager::AssertGeometry();
-  AliMagFMaps *field = new AliMagFMaps("Maps","Maps", 2, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field, kTRUE);
 
   AliTRDReconstructor *reco = new AliTRDReconstructor();
   reco->SetRecoParam(AliTRDrecoParam::GetLowFluxParam());
@@ -41,4 +39,4 @@ void trd_qaRec()
   }
   gEve->AddElement(tracks);
   gEve->Redraw3D();
-}
\ No newline at end of file
+}
index 8e77888..37a2820 100644 (file)
 // These files are not in the same directory, so there's no reason to
 // ask the preprocessor to search in the current directory for these
 // files by including them with `#include "..."' 
-#include <cmath>                // __CMATH__
+#include <TBrowser.h>          // ROOT_TBrowser
 #include <TClonesArray.h>      // ROOT_TClonesArray
+#include <TGeoGlobalMagField.h> // ROOT_TGeoGlobalMagField
+#include <TGeoManager.h>        // ROOT_TGeoManager
 #include <TRotMatrix.h>                // ROOT_TRotMatrix
 #include <TTree.h>             // ROOT_TTree
-#include <TBrowser.h>          // ROOT_TBrowser
-#include <TVirtualMC.h>                // ROOT_TVirtualMC
 #include <TVector2.h>           // ROOT_TVector2 
-#include <TGeoManager.h>        // ROOT_TGeoManager
+#include <TVirtualMC.h>                // ROOT_TVirtualMC
+#include <cmath>                // __CMATH__
 
 #include <AliRunDigitizer.h>   // ALIRUNDIGITIZER_H
 #include <AliLoader.h>         // ALILOADER_H
@@ -264,8 +265,8 @@ void AliFMD::CreateMaterials()
   Double_t density          = 0;
   Double_t radiationLength  = 0;
   Double_t absorbtionLength = 999;
-  Int_t    fieldType        = gAlice->Field()->Integ();     // Field type 
-  Double_t maxField         = gAlice->Field()->Max();     // Field max.
+  Int_t    fieldType        = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();     // Field type 
+  Double_t maxField         = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();     // Field max.
   Double_t maxBending       = 0;     // Max Angle
   Double_t maxStepSize      = 0.001; // Max step size 
   Double_t maxEnergyLoss    = 1;     // Max Delta E
index 8e4105e..2e19aeb 100644 (file)
@@ -152,13 +152,6 @@ enum Rad_t {
 };
 
 //____________________________________________________________________
-enum Mag_t {
-  k2kG,                                //
-  k4kG,                                //
-  k5kG                         //
-};
-
-//____________________________________________________________________
 enum MC_t {
   kFLUKA, 
   kGEANT3, 
@@ -188,7 +181,7 @@ Config()
   // EG_t  eg   = kFMD2Flat;
   Geo_t geo  = kNoHoles;
   Rad_t rad  = kGluonRadiation;
-  Mag_t mag  = k5kG;
+  AliMagF::BMap_t mag  = AliMagF::k5kG;
   Int_t seed = 12345; //Set 0 to use the current time
   MC_t  mc   = kGEANT3TGEO;
   
@@ -373,10 +366,12 @@ Config()
     
   //__________________________________________________________________
   // Field (L3 0.4 T)
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., mag);
+  AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG);
   field->SetL3ConstField(0); //Using const. field in the barrel
+  TGeoGlobalMagField::Instance()->SetField(field);
+
   rl->CdGAFile();
-  gAlice->SetField(field);    
+
   TFile* magF = TFile::Open("mag.root", "RECREATE");
   field->Write("mag");
   magF->Close();
index fd66eac..a1f6a6d 100644 (file)
@@ -151,13 +151,6 @@ enum Rad_t {
 };
 
 //____________________________________________________________________
-enum Mag_t {
-  k2kG,                                //
-  k4kG,                                //
-  k5kG                         //
-};
-
-//____________________________________________________________________
 enum MC_t {
   kFLUKA, 
   kGEANT3, 
@@ -185,7 +178,7 @@ Config()
   // EG_t  eg   = kFMDFlat;
   Geo_t geo  = kNoHoles;
   Rad_t rad  = kGluonRadiation;
-  Mag_t mag  = k5kG;
+  AliMagF::BMap_t mag  = AliMagF::k5kG;
   Int_t seed = 12345; //Set 0 to use the current time
   MC_t  mc   = kGEANT3TGEO;
   
@@ -372,9 +365,8 @@ Config()
   // Comments 
   // 
   switch (mag) {
-  case k2kG: comment = comment.Append(" | L3 field 0.2 T"); break;
-  case k4kG: comment = comment.Append(" | L3 field 0.4 T"); break;
-  case k5kG: comment = comment.Append(" | L3 field 0.5 T"); break;
+  case AliMagF::k2kG: comment = comment.Append(" | L3 field 0.2 T"); break;
+  case AliMagF::k5kG: comment = comment.Append(" | L3 field 0.5 T"); break;
   }
 
   switch (rad) {
@@ -393,10 +385,11 @@ Config()
 
   //__________________________________________________________________
   // Field (L3 0.4 T)
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., mag);
+  AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG);
   field->SetL3ConstField(0); //Using const. field in the barrel
+  TGeoGlobalMagField::Instance()->SetField(field);
+
   rl->CdGAFile();
-  gAlice->SetField(field);    
 
   //__________________________________________________________________
   // 
index 5d174b1..2ec6deb 100644 (file)
@@ -44,7 +44,7 @@
 #include "STEER/AliConfig.h"
 #include "PYTHIA6/AliDecayerPythia.h"
 #include "PYTHIA6/AliGenPythia.h"
-#include "STEER/AliMagFMaps.h"
+#include "STEER/AliMagF.h"
 #include "STRUCT/AliBODY.h"
 #include "STRUCT/AliMAG.h"
 #include "STRUCT/AliABSOv0.h"
@@ -101,12 +101,6 @@ enum YCut_t
 {
   kFull, kBarrel, kMuonArm
 };
-//--- Magnetic Field ---
-enum Mag_t
-{
-    k2kG, k4kG, k5kG
-};
-
 //--- Trigger config ---
 enum TrigConf_t
 {
@@ -127,7 +121,7 @@ void ProcessEnvironmentVars();
 static PDC06Proc_t   proc     = kPyOmegaPlus;
 static DecayHvFl_t   decHvFl  = kNature; 
 static YCut_t        ycut     = kFull;
-static Mag_t         mag      = k5kG; 
+static AliMagF::BMap_t mag    = AliMagF::k5kG; 
 static TrigConf_t    trig     = kDefaultPPTrig; // default pp trigger configuration
 static Int_t         runNumber= 0; 
 //========================//
@@ -350,19 +344,16 @@ void Config()
 
   if (mag == k2kG) {
     comment = comment.Append(" | L3 field 0.2 T");
-  } else if (mag == k4kG) {
-    comment = comment.Append(" | L3 field 0.4 T");
   } else if (mag == k5kG) {
     comment = comment.Append(" | L3 field 0.5 T");
   }
   printf("\n \n Comment: %s \n \n", comment.Data());
     
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., mag);
+  AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,mag);
   field->SetL3ConstField(0); //Using const. field in the barrel
-  rl->CdGAFile();
-  gAlice->SetField(field);    
-
+  TGeoGlobalMagField::Instance()->SetField(field);
 
+  rl->CdGAFile();
 
   Int_t iABSO  = 1;
   Int_t iCRT   = 0;
index 9e66496..0d5cb62 100644 (file)
@@ -128,7 +128,7 @@ TString ParseConfig(char * option)
                while (getline(in, line)) {
                        sline = line ; 
                        sline.ReplaceAll(" ", "") ; 
-                       if (sline.Contains("AliMagFMaps*field=newAliMagFMaps(")) {
+                       if (sline.Contains("AliMagF*field=newAliMagF(")) {
                                sarg = sline(sline.Last(',')+1, sline.Last(')')-sline.Last(',')-1) ; 
                                break ; 
                        }
@@ -143,8 +143,6 @@ TString ParseConfig(char * option)
                                        rv = "30000" ;
                                else if (sarg == "k2kG")
                                        rv = "12000" ;
-                               else if (sarg == "k4kG")
-                                       rv = "24000"; 
                                break ; 
                        }
                }               
index 711ef0f..567a5f6 100644 (file)
@@ -134,7 +134,7 @@ Int_t AliHLTITStracker::Clusters2Tracks(AliESDEvent *event) {
        fBestTrack.UpdateESDtrack(AliESDtrack::kITSin);
        {
        AliESDtrack  *esdTrack =fBestTrack.GetESDtrack();
-       Float_t r[3]={0.,0.,0.};
+       Double_t r[3]={0.,0.,0.};
        Double_t maxD=3.;
        esdTrack->RelateToVertex(event->GetVertex(),GetBz(r),maxD);
        }
index e79c75d..8ea894e 100644 (file)
@@ -30,7 +30,6 @@
   #include "AliITStrackerV2.h"
   #include "AliRun.h"
   #include "AliESD.h"
-  #include "AliMagF.h"
   #include "AliGenEventHeader.h"
 
   #include "AliHLTITStrack.h"
index d54f838..3351b29 100644 (file)
 #include <AliTPCRF1D.h>
 #endif
 #ifdef use_root
+#include <TError.h>
 #include <TFile.h>
-#include <TUnixSystem.h>
+#include <TGeoGlobalMagField.h>
 #include <TTimeStamp.h>
-#include <TError.h>
+#include <TUnixSystem.h>
 #endif
 
 #include "AliHLTTPCLogging.h"
@@ -971,11 +972,12 @@ Bool_t AliHLTTPCTransform::Init(AliRunLoader *runLoader)
   }
   
   fgVersion=kValiroot;
-  SetBFieldFactor((Double_t)runLoader->GetAliRun()->Field()->Factor());
-  SetSolenoidBField(-
-                   (Double_t)runLoader->GetAliRun()->Field()->SolenoidField()/
-                   (Double_t)runLoader->GetAliRun()->Field()->Factor()
-                   );
+  AliMagF* mag = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+  double fc = mag ? mag->GetFactorSol() : 0;
+  double bz = mag ? -mag->SolenoidField() : 0;
+  if (fc!=0) bz/=fc;
+  SetBFieldFactor( fc );
+  SetSolenoidBField( bz );
   fgPadPitchWidthLow=param->GetInnerPadPitchWidth();
   fgPadPitchWidthUp=param->GetOuterPadPitchWidth();
   fgZWidth=param->GetZWidth();
@@ -1318,11 +1320,18 @@ Bool_t AliHLTTPCTransform::MakeInitFile(Char_t *rootfilename,Char_t *filename)
   }
   
   fgVersion=kValiroot;
-  SetBFieldFactor((Double_t)lgAlice->Field()->Factor());
-  SetSolenoidBField(-
-                   (Double_t)lgAlice->Field()->SolenoidField()/
-                   (Double_t)lgAlice->Field()->Factor()
-                   );
+  AliMagF* mag = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+  double fc = mag ? mag->GetFactorSol() : 0;
+  double bz = mag ? -mag->SolenoidField() : 0;
+  if (fc!=0) bz/=fc;
+  SetBFieldFactor( fc );
+  SetSolenoidBField( bz );
+
+  //   SetBFieldFactor((Double_t)l((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Factor());
+  //   SetSolenoidBField(-
+  //               (Double_t)l((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->SolenoidField()/
+  //               (Double_t)l((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Factor()
+  //               );
   fgPadPitchWidthLow=param->GetInnerPadPitchWidth();
   fgPadPitchWidthUp=param->GetOuterPadPitchWidth();
   fgZWidth=param->GetZWidth();
index a30db06..7db0ea2 100644 (file)
@@ -153,8 +153,6 @@ void activePadsTest(const char* input="./"){
   rec.SetRunTracking("");
   rec.SetLoadAlignFromCDB(0);
   rec.SetRunQA(":");
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field,kTRUE);
   //rec.SetFillESD("HLT");
   rec.SetFillESD("");
   rec.SetFillTriggerESD(false);
index eb392c0..461e4ed 100644 (file)
@@ -138,8 +138,6 @@ void cal_hlt_tpc_offline(const char* input="./")
   rec.SetFillESD("");
   rec.SetRunQA(":");
   rec.SetRunGlobalQA(kFALSE);
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field,kFALSE);
   rec.SetFillTriggerESD(kFALSE);
   rec.SetOption("HLT", "libAliHLTUtil.so libAliHLTRCU.so libANALYSIS.so libANALYSISalice.so libTPCcalib.so libAliHLTTPC.so loglevel=0x7c chains=sink1");
   rec.Run();
index de6d010..076ccc7 100644 (file)
@@ -140,8 +140,6 @@ void histogramHandlerTest(const char* input="./"){
   rec.SetRunTracking("");
   rec.SetLoadAlignFromCDB(0);
   rec.SetRunQA(":");
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field,kTRUE);
   //rec.SetFillESD("HLT");
   rec.SetFillESD("");
   rec.SetFillTriggerESD(false);
index e48209e..111817b 100644 (file)
@@ -113,8 +113,6 @@ void rec_hlt_tpc_ca(const char* input="./", bool bUseClusterFinderDecoder=true)
   rec.SetRunTracking("");
   rec.SetLoadAlignFromCDB(0);
   rec.SetRunQA(":");
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field,kTRUE);
   rec.SetFillESD("HLT");
   rec.SetOption("HLT", "libAliHLTUtil.so libAliHLTRCU.so libAliHLTTPC.so chains=sink1");
   rec.Run();
index 17f5628..53a2de9 100644 (file)
@@ -126,8 +126,6 @@ void rec_hlt_tpc_offline(const char* input="./")
   rec.SetFillESD("");
   rec.SetRunQA(":");
   rec.SetRunGlobalQA(kFALSE);
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field,kFALSE);
   rec.SetFillTriggerESD(kFALSE);
   rec.SetOption("HLT", "libAliHLTUtil.so libAliHLTRCU.so libAliHLTTPC.so loglevel=0x7c chains=sink1");
   rec.Run();
index 541268e..c0ea263 100644 (file)
@@ -110,8 +110,6 @@ void rec_hlt_tpc_tracks(const char* input="./")
   rec.SetRunTracking("");
   rec.SetLoadAlignFromCDB(0);
   rec.SetRunQA(":");
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field,kTRUE);
   rec.SetFillESD("HLT");
   rec.SetFillTriggerESD(false);
   rec.SetOption("HLT", "libAliHLTUtil.so libAliHLTRCU.so libAliHLTTPC.so loglevel=0x7c chains=globalmerger");
index 7a789fe..25c451a 100644 (file)
@@ -268,8 +268,6 @@ void rec_hlt_tpc(const char* input="./", char* opt="decoder ESD")
   rec.SetRunTracking("");
   rec.SetLoadAlignFromCDB(0);
   rec.SetRunQA(":");
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field,kTRUE);
 
   // NOTE: FillESD is a step in the AliReconstruction sequence and has
   // nothing to do with the fact that this macro writes ESD output
index 16b4a6f..05deaf9 100644 (file)
@@ -31,7 +31,7 @@
 #include "AliRawReaderMemory.h"
 #include "AliTPCclustererMI.h"
 #include "AliTPCClustersRow.h"
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 #include "AliTracker.h"
 #include "AliDAQ.h"
 #include "TString.h"
index b0af5de..d3f988b 100644 (file)
@@ -30,7 +30,7 @@
 #include "AliCDBManager.h"
 #include "AliCDBEntry.h"
 #include "AliGeomManager.h"
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 #include "AliTPCReconstructor.h"
 #include "AliTPCParam.h"
 #include "AliTPCRecoParam.h"
@@ -304,28 +304,30 @@ int AliHLTTPCOfflineTrackerCalibComponent::Configure(const char* arguments)
        // TODO: check if there is common functionality in the AliMagF* classes
        float SolenoidBz=((TObjString*)pTokens->At(i))->GetString().Atof();
        if (SolenoidBz<kAlmost0Field) SolenoidBz=kAlmost0Field;
-       float factor=1.;
-       int map=AliMagFMaps::k2kG;
+       AliMagF::BMap_t map = AliMagF::k5kG;
+       float factor=SolenoidBz/5;
        if (SolenoidBz<3.) {
-         map=AliMagFMaps::k2kG;
+         map=AliMagF::k2kG;
          factor=SolenoidBz/2;
-       } else if (SolenoidBz>=3. && SolenoidBz<4.5) {
+       } /*else if (SolenoidBz>=3. && SolenoidBz<4.5) {
          map=AliMagFMaps::k4kG;
          factor=SolenoidBz/4;
-       } else {
+         }
+       else {
          map=AliMagFMaps::k5kG;
          factor=SolenoidBz/5;
-       }
+         } */
+       //
        // the magnetic field map is not supposed to change
        // field initialization should be done once in the beginning
        // TODO: does the factor need adjustment?
-       const AliMagF* currentMap=AliTracker::GetFieldMap();
+       const AliMagF* currentMap = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
        if (!currentMap) {
-         AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., map);
-         AliTracker::SetFieldMap(field,kFALSE);
+         AliMagF* field = new AliMagF("MagneticFieldMap", "BMap", 2, 1., 1., 10., map);
+         TGeoGlobalMagField::Instance()->SetField(field);
          HLTInfo("Solenoid Field set to: %f map %d", SolenoidBz, map);
-       } else if (currentMap->Map()!=map) {
-         HLTWarning("omitting request to override field map %s with %s", currentMap->Map(), map);
+       } else if (currentMap->GetMapType()!=map) {
+         HLTWarning("omitting request to override field map %d with %d", currentMap->GetMapType(), map);
        }
        continue;
       } else {
index 2c801c7..cc31a43 100644 (file)
@@ -30,7 +30,7 @@
 #include "AliCDBManager.h"
 #include "AliCDBEntry.h"
 #include "AliGeomManager.h"
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 #include "AliTPCReconstructor.h"
 #include "AliTPCParam.h"
 #include "AliTPCRecoParam.h"
@@ -296,28 +296,30 @@ int AliHLTTPCOfflineTrackerComponent::Configure(const char* arguments)
        // TODO: check if there is common functionality in the AliMagF* classes
        float SolenoidBz=((TObjString*)pTokens->At(i))->GetString().Atof();
        if (SolenoidBz<kAlmost0Field) SolenoidBz=kAlmost0Field;
-       float factor=1.;
-       int map=AliMagFMaps::k2kG;
+       float factor=SolenoidBz/5;
+       //
+       AliMagF::BMap_t map = AliMagF::k5kG;
        if (SolenoidBz<3.) {
-         map=AliMagFMaps::k2kG;
+         map=AliMagF::k2kG;
          factor=SolenoidBz/2;
-       } else if (SolenoidBz>=3. && SolenoidBz<4.5) {
+       } /*else if (SolenoidBz>=3. && SolenoidBz<4.5) {
          map=AliMagFMaps::k4kG;
          factor=SolenoidBz/4;
-       } else {
+         }
+       else {
          map=AliMagFMaps::k5kG;
          factor=SolenoidBz/5;
-       }
+         } */
        // the magnetic field map is not supposed to change
        // field initialization should be done once in the beginning
        // TODO: does the factor need adjustment?
-       const AliMagF* currentMap=AliTracker::GetFieldMap();
+       const AliMagF* currentMap = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
        if (!currentMap) {
-         AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., map);
-         AliTracker::SetFieldMap(field,kFALSE);
+         AliMagF* field = new AliMagF("MagneticFieldMap", "BMap", 2, 1., 1., 10., map);
+         TGeoGlobalMagField::Instance()->SetField(field);
          HLTInfo("Solenoid Field set to: %f map %d", SolenoidBz, map);
-       } else if (currentMap->Map()!=map) {
-         HLTWarning("omitting request to override field map %s with %s", currentMap->Map(), map);
+       } else if (currentMap->GetMapType()!=map) {
+         HLTWarning("omitting request to override field map %d with %d", currentMap->GetMapType(), map);
        }
        continue;
       } else {
index 5991104..570e107 100644 (file)
@@ -38,7 +38,7 @@ using namespace std;
 //#include "AliTRDtrackerHLT.h"
 #include "AliTRDtracker.h"
 #include "AliTRDCalibraFillHisto.h"
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 #include "AliTRDcluster.h"
 #include "AliESDfriend.h"
 #include <cstdlib>
@@ -55,7 +55,6 @@ AliHLTTRDTrackerComponent::AliHLTTRDTrackerComponent()
   , fOutputPercentage(100) // By default we copy to the output exactly what we got as input  
   , fStrorageDBpath("local://$ALICE_ROOT")
   , fCDB(NULL)
-  , fField(NULL)
   , fGeometryFileName("")
   , fGeometryFile(NULL)
   , fGeoManager(NULL)
@@ -163,12 +162,6 @@ int AliHLTTRDTrackerComponent::DoInit( int argc, const char** argv )
       return EINVAL;
     }
 
-  //init alifield map - temporarly fixed - should come from a DB
-  fField = new AliMagFMaps("Maps","Maps", 2, 1., 10., 1);
-  if (fField)
-    AliTracker::SetFieldMap(fField,1);
-  else
-    HLTError("Unable to init the field");
 
   fCDB = AliCDBManager::Instance();
   if (!fCDB)
@@ -224,9 +217,6 @@ int AliHLTTRDTrackerComponent::DoDeinit()
 {
   // Deinitialization of the component
 
-  delete fField;
-  fField = 0;
-
   delete fTracker;
   fTracker = 0;
   
index e4069d1..fcd89c0 100644 (file)
@@ -17,7 +17,7 @@ class TFile;
 class TGeoManager;
 //class AliTRDtrackerHLT;
 class AliTRDtracker;
-class AliMagFMaps;
+class AliMagF;
 
 /**
  * @class AliHLTTRDTrackerComponent
@@ -71,8 +71,6 @@ class AliHLTTRDTrackerComponent : public AliHLTProcessor
        string fStrorageDBpath; // Default path for OCDB
        AliCDBManager *fCDB; //! Pointer to OCDB
 
-       AliMagFMaps* fField; //! magn. field settings
-
        string fGeometryFileName; // Path to geometry file 
        TFile *fGeometryFile; //! // Pointer to the geom root file
        TGeoManager *fGeoManager; //! Pointer to geometry manager 
index 52cab27..204fba6 100644 (file)
@@ -36,7 +36,7 @@ using namespace std;
 #include "AliGeomManager.h"
 #include "AliCDBManager.h"
 #include "AliESDEvent.h"
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 #include "AliESDfriend.h"
 
 #include "AliTRDcalibDB.h"
@@ -62,7 +62,6 @@ AliHLTTRDTrackerV1Component::AliHLTTRDTrackerV1Component():
   fOutputPercentage(100), // By default we copy to the output exactly what we got as input  
   fStrorageDBpath("local://$ALICE_ROOT"),
   fCDB(NULL),
-  fField(NULL),
   fGeometryFileName(""),
   fUseHLTClusters(kFALSE),
   fUseHLTTracks(kFALSE),
@@ -332,28 +331,26 @@ int AliHLTTRDTrackerV1Component::DoInit( int argc, const char** argv )
       HLTWarning("No magnetic field switch stated. Use -magnetic_field_ON or -magnetic_field_OFF flag. Defaulting to OFF = NO MAGNETIC FIELD");
     }
   
-  if (iMagneticField == 0)
-    {
-      // magnetic field OFF
-      fField = new AliMagFMaps("Maps","Maps", 2, 0., 10., 1);
-      HLTDebug("Magnetic field is OFF.");
-    }
-
-  if (iMagneticField == 1)
-    {
-      // magnetic field ON
-      fField = new AliMagFMaps("Maps","Maps", 2, 1., 10., 1);
-      HLTDebug("Magnetic field is ON.");
-    }
-
-  if (fField == 0)
-    {
-      HLTError("Unable to init the field. Trouble at this point.");
-      return -1;
-    }
-
-  // kTRUE sets the map uniform
-  AliTracker::SetFieldMap(fField,kTRUE);
+  if (!TGeoGlobalMagField::Instance()->IsLocked()) {
+    if (iMagneticField == 0)
+      {
+       // magnetic field OFF
+       AliMagF* field = new AliMagF("Maps","Maps",2,0.,0., 10.,AliMagF::k5kGUniform);
+       TGeoGlobalMagField::Instance()->SetField(field);
+       HLTDebug("Magnetic field is OFF.");
+      }
+    
+    if (iMagneticField == 1)
+      {
+       // magnetic field ON
+       AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG);
+       TGeoGlobalMagField::Instance()->SetField(field);
+       HLTDebug("Magnetic field is ON.");
+      }
+  }
+  else {
+    HLTError("Magnetic field is already set and locked, cannot redefine it." );
+  }
 
   // reconstruction parameters
   if (iRecoParamType < 0 || iRecoParamType > 2)
@@ -443,9 +440,6 @@ int AliHLTTRDTrackerV1Component::DoInit( int argc, const char** argv )
 int AliHLTTRDTrackerV1Component::DoDeinit()
 {
   // Deinitialization of the component
-  
-  delete fField;
-  fField = 0x0;
 
   fTracker->SetClustersOwner(kFALSE);
   delete fTracker;
index f211b15..68bea65 100644 (file)
@@ -15,7 +15,7 @@ class TTree;
 
 class TGeoManager;
 class AliCDBManager;
-class AliMagFMaps;
+class AliMagF;
 class AliTRDtrackerV1;
 class AliTRDrecoParam;
 class AliTRDReconstructor;
@@ -76,8 +76,6 @@ class AliHLTTRDTrackerV1Component : public AliHLTProcessor
        string fStrorageDBpath; // Default path for OCDB
        AliCDBManager *fCDB; //! Pointer to OCDB
 
-       AliMagFMaps* fField; //! magn. field settings
-
        string fGeometryFileName; // Path to geometry file 
        Bool_t   fUseHLTClusters;
        Bool_t   fUseHLTTracks;
index f737662..18a3a56 100644 (file)
@@ -192,8 +192,6 @@ void rec_hlt_global_merger(const char* input="./", bool bUseClusterFinderDecoder
   rec.SetRunTracking("");
   rec.SetLoadAlignFromCDB(0);
   rec.SetRunQA(":");
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field,kTRUE);
   rec.SetFillESD("HLT");
   rec.SetOption("HLT", "libAliHLTUtil.so libAliHLTRCU.so libAliHLTTRD.so libAliHLTTPC.so libAliHLTGlobal.so chains=sink1");
   rec.Run();
index e68d9c8..653d93c 100644 (file)
@@ -154,8 +154,6 @@ int AliHLTSimulation::Init(AliRunLoader* pRunLoader, const char* options)
   }
 
   // init solenoid field
-  Bool_t bUniformField=kTRUE;
-  AliTracker::SetFieldMap(pRunLoader->GetAliRun()->Field(),bUniformField);
   Double_t solenoidBz=AliTracker::GetBz();
   AliCDBManager* man = AliCDBManager::Instance();
   if (man && man->IsDefaultStorageSet())
index a19b177..16ff975 100644 (file)
@@ -201,17 +201,7 @@ Bool_t AliHMPIDtrack::PropagateTo(const AliCluster3D *c) {
   }
   return kTRUE;
 }//PropagateTo()
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-Double_t AliHMPIDtrack::GetBz() const {
-  // 
-  // Arguments: none
-  // Returns: Bz component of the magnetic field (kG)
-  //
-  if (AliTracker::UniformField()) return AliTracker::GetBz();
-  Double_t r[3]; GetXYZ(r);
-  return AliTracker::GetBz(r);
-}//GetBz()
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
 Bool_t AliHMPIDtrack::Intersect(Double_t pnt[3], Double_t norm[3], Double_t bz) const {
   //+++++++++++++++++++++++++++++++++++++++++    
   // Origin: K. Shileev (Kirill.Shileev@cern.ch)
index df9fd90..2ae5d48 100644 (file)
@@ -35,7 +35,6 @@ public:
    Int_t    GetProlongation(Double_t xk, Double_t &y, Double_t &z);
    Bool_t   Intersect(Double_t pnt[3], Double_t norm[3], Double_t bz) const;                      //HMPID method moved from AliExternalTrackParam
    Bool_t   Intersect(AliHMPIDtrack *pTrk,Double_t pnt[3], Double_t norm[3]) ;                      //just for test 
-   Double_t GetBz() const;     
    Bool_t   Update(const AliHMPIDCluster *pClu, Double_t chi2, Int_t index);
               
 protected:
index 0a03db3..e1fb5fe 100644 (file)
 #include <AliRun.h>           //CreateMaterials()    
 #include <AliMagF.h>          //CreateMaterials()
 //#include <TGeoManager.h>      //CreateGeometry()
+#include <AliCDBEntry.h>      //CreateMaterials()
+#include <AliCDBManager.h>    //CreateMaterials()
 #include <TF1.h>              //DefineOpticalProperties()
 #include <TF2.h>              //DefineOpticalProperties()
+#include <TGeoGlobalMagField.h>
 #include <TLorentzVector.h>   //IsLostByFresnel() 
-#include <AliCDBManager.h>    //CreateMaterials()
-#include <AliCDBEntry.h>      //CreateMaterials()
  
 ClassImp(AliHMPIDv1)    
 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -66,8 +67,8 @@ void AliHMPIDv1::CreateMaterials()
   
     Int_t   matId=0;                           //tmp material id number
     Int_t   unsens =  0, sens=1;               //sensitive or unsensitive medium
-    Int_t   itgfld = gAlice->Field()->Integ(); //type of field intergration 0 no field -1 user in guswim 1 Runge Kutta 2 helix 3 const field along z
-    Float_t maxfld = gAlice->Field()->Max();   //max field value
+    Int_t   itgfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ(); //type of field intergration 0 no field -1 user in guswim 1 Runge Kutta 2 helix 3 const field along z
+    Float_t maxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();   //max field value
     Float_t tmaxfd = -10.0;                    //max deflection angle due to magnetic field in one step
     Float_t deemax = - 0.2;                    //max fractional energy loss in one step   
     Float_t stemax = - 0.1;                    //mas step allowed [cm]
index 9480747..0e36b96 100644 (file)
 #include <AliMC.h>            //StepManager()      
 #include <AliRun.h>           //CreateMaterials()    
 #include <AliMagF.h>          //CreateMaterials()
+#include "AliGeomManager.h"   //AddAlignableVolumes()
+#include <AliCDBEntry.h>      //CreateMaterials()
+#include <AliCDBManager.h>    //CreateMaterials()
 #include <TF1.h>              //DefineOpticalProperties()
 #include <TF2.h>              //DefineOpticalProperties()
-#include <TLorentzVector.h>   //IsLostByFresnel() 
-#include <AliCDBManager.h>    //CreateMaterials()
-#include <AliCDBEntry.h>      //CreateMaterials()
+#include <TGeoGlobalMagField.h>
 #include <TGeoPhysicalNode.h> //AddAlignableVolumes()
-#include "AliGeomManager.h"   //AddAlignableVolumes()
+#include <TLorentzVector.h>   //IsLostByFresnel() 
 
 ClassImp(AliHMPIDv2)    
 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -95,8 +96,8 @@ void AliHMPIDv2::CreateMaterials()
 
     Int_t   matId=0;                           //tmp material id number
     Int_t   unsens =  0, sens=1;               //sensitive or unsensitive medium
-    Int_t   itgfld = gAlice->Field()->Integ(); //type of field intergration 0 no field -1 user in guswim 1 Runge Kutta 2 helix 3 const field along z
-    Float_t maxfld = gAlice->Field()->Max();   //max field value
+    Int_t   itgfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ(); //type of field intergration 0 no field -1 user in guswim 1 Runge Kutta 2 helix 3 const field along z
+    Float_t maxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();   //max field value
     Float_t tmaxfd = -10.0;                    //max deflection angle due to magnetic field in one step
     Float_t deemax = - 0.2;                    //max fractional energy loss in one step   
     Float_t stemax = - 0.1;                    //max step allowed [cm]
index 73cfeb6..60bd7a7 100644 (file)
 #include <AliMC.h>              //StepManager()      
 #include <AliRun.h>             //CreateMaterials()    
 #include <AliMagF.h>            //CreateMaterials()
+#include "AliGeomManager.h"   //AddAlignableVolumes()
+#include <AliCDBEntry.h>        //CreateMaterials()
+#include <AliCDBManager.h>      //CreateMaterials()
 #include <TF1.h>                //DefineOpticalProperties()
 #include <TF2.h>                //DefineOpticalProperties()
-#include <TLorentzVector.h>     //IsLostByFresnel() 
-#include <AliCDBManager.h>      //CreateMaterials()
-#include <AliCDBEntry.h>        //CreateMaterials()
+#include <TGeoCompositeShape.h> //CradleBaseVolume()
+#include <TGeoGlobalMagField.h>
 #include <TGeoPhysicalNode.h>   //AddAlignableVolumes()
 #include <TGeoXtru.h>           //CradleBaseVolume()
-#include <TGeoCompositeShape.h> //CradleBaseVolume()
+#include <TLorentzVector.h>     //IsLostByFresnel() 
 #include <TString.h>            //StepManager()
-#include "AliGeomManager.h"   //AddAlignableVolumes()
 
 ClassImp(AliHMPIDv3)    
 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -99,8 +100,8 @@ void AliHMPIDv3::CreateMaterials()
 
     Int_t   matId=0;                           //tmp material id number
     Int_t   unsens =  0, sens=1;               //sensitive or unsensitive medium
-    Int_t   itgfld = gAlice->Field()->Integ(); //type of field intergration 0 no field -1 user in guswim 1 Runge Kutta 2 helix 3 const field along z
-    Float_t maxfld = gAlice->Field()->Max();   //max field value
+    Int_t   itgfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ(); //type of field intergration 0 no field -1 user in guswim 1 Runge Kutta 2 helix 3 const field along z
+    Float_t maxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();   //max field value
     Float_t tmaxfd = -10.0;                    //max deflection angle due to magnetic field in one step
     Float_t deemax = - 0.2;                    //max fractional energy loss in one step   
     Float_t stemax = - 0.1;                    //max step allowed [cm]
index 594ae58..f29efa5 100644 (file)
@@ -692,13 +692,13 @@ void HmpConfig::WriteBatch()
 
   if(fRecB->GetState()){
   
-       if(fMagBG->GetButton(kFld0)->GetState())     fprintf(fp,"  AliMagFMaps *field=new AliMagFMaps(\"Maps\",\"Maps\",2,0,10.,2);//no field\n");
-  else if(fMagBG->GetButton(kFld2)->GetState())     fprintf(fp,"  AliMagFMaps *field=new AliMagFMaps(\"Maps\",\"Maps\",2,1,10,0);//0.2 Tesla field\n");
-  else if(fMagBG->GetButton(kFld4)->GetState())     fprintf(fp,"  AliMagFMaps *field=new AliMagFMaps(\"Maps\",\"Maps\",2,1,10,1);//0.4 Tesla field\n");
-  else if(fMagBG->GetButton(kFld5)->GetState())     fprintf(fp,"  AliMagFMaps *field=new AliMagFMaps(\"Maps\",\"Maps\",2,1,10,2);//0.5 Tesla field\n");
-  else if(fMagBG->GetButton(kFld_2)->GetState())    fprintf(fp,"  AliMagFMaps *field=new AliMagFMaps(\"Maps\",\"Maps\",2,-1,10,0);//-0.2 Tesla field\n");
-  else if(fMagBG->GetButton(kFld_4)->GetState())    fprintf(fp,"  AliMagFMaps *field=new AliMagFMaps(\"Maps\",\"Maps\",2,-1,10,1);//-0.4 Tesla field\n");
-  else if(fMagBG->GetButton(kFld_5)->GetState())    fprintf(fp,"  AliMagFMaps *field=new AliMagFMaps(\"Maps\",\"Maps\",2,-1,10,2);//-0.5 Tesla field\n");
+       if(fMagBG->GetButton(kFld0)->GetState())     fprintf(fp,"  AliMagF *field=new AliMagF(\"Maps\",\"Maps\",2,0,1,10.,2);//no field\n");
+  else if(fMagBG->GetButton(kFld2)->GetState())     fprintf(fp,"  AliMagF *field=new AliMagF(\"Maps\",\"Maps\",2,1,1,10,0);//0.2 Tesla field\n");
+  else if(fMagBG->GetButton(kFld4)->GetState())     fprintf(fp,"  AliMagF *field=new AliMagF(\"Maps\",\"Maps\",2,1,1,10,1);//0.4 Tesla field\n");
+  else if(fMagBG->GetButton(kFld5)->GetState())     fprintf(fp,"  AliMagF *field=new AliMagF(\"Maps\",\"Maps\",2,1,1,10,2);//0.5 Tesla field\n");
+  else if(fMagBG->GetButton(kFld_2)->GetState())    fprintf(fp,"  AliMagF *field=new AliMagF(\"Maps\",\"Maps\",2,-1,1,10,0);//-0.2 Tesla field\n");
+  else if(fMagBG->GetButton(kFld_4)->GetState())    fprintf(fp,"  AliMagF *field=new AliMagF(\"Maps\",\"Maps\",2,-1,1,10,1);//-0.4 Tesla field\n");
+  else if(fMagBG->GetButton(kFld_5)->GetState())    fprintf(fp,"  AliMagF *field=new AliMagF(\"Maps\",\"Maps\",2,-1,1,10,2);//-0.5 Tesla field\n");
   
                                                     fprintf(fp,"  Bool_t uniform=kTRUE;\n");
                                                     fprintf(fp,"  AliTracker::SetFieldMap(field,uniform);\n\n");
@@ -797,13 +797,13 @@ void HmpConfig::WriteConfig()
   WritePhys(pF); //physics processes
   
 //Field
-       if(fMagBG->GetButton(kFld0)->GetState())     fprintf(pF,"  gAlice->SetField(new AliMagFMaps(\"Maps\",\"Maps\",2,0,10,2));       //no field\n\n");
-  else if(fMagBG->GetButton(kFld2)->GetState())     fprintf(pF,"  gAlice->SetField(new AliMagFMaps(\"Maps\",\"Maps\",2,1,10,0));//0.2 Tesla field\n\n");
-  else if(fMagBG->GetButton(kFld4)->GetState())     fprintf(pF,"  gAlice->SetField(new AliMagFMaps(\"Maps\",\"Maps\",2,1,10,1));//0.4 Tesla field\n\n");
-  else if(fMagBG->GetButton(kFld5)->GetState())     fprintf(pF,"  gAlice->SetField(new AliMagFMaps(\"Maps\",\"Maps\",2,1,10,2));//0.5 Tesla field\n\n");
-  else if(fMagBG->GetButton(kFld_2)->GetState())    fprintf(pF,"  gAlice->SetField(new AliMagFMaps(\"Maps\",\"Maps\",2,-1,10,0));//-0.2 Tesla field\n\n");
-  else if(fMagBG->GetButton(kFld_4)->GetState())    fprintf(pF,"  gAlice->SetField(new AliMagFMaps(\"Maps\",\"Maps\",2,-1,10,1));//-0.4 Tesla field\n\n");
-  else if(fMagBG->GetButton(kFld_5)->GetState())    fprintf(pF,"  gAlice->SetField(new AliMagFMaps(\"Maps\",\"Maps\",2,-1,10,2));//-0.5 Tesla field\n\n");
+       if(fMagBG->GetButton(kFld0)->GetState())     fprintf(pF,"  gAlice->SetField(new AliMagF(\"Maps\",\"Maps\",2,0,0,10,2));       //no field\n\n");
+  else if(fMagBG->GetButton(kFld2)->GetState())     fprintf(pF,"  gAlice->SetField(new AliMagF(\"Maps\",\"Maps\",2,1,1,10,0));//0.2 Tesla field\n\n");
+  else if(fMagBG->GetButton(kFld4)->GetState())     fprintf(pF,"  gAlice->SetField(new AliMagF(\"Maps\",\"Maps\",2,1,1,10,1));//0.4 Tesla field\n\n");
+  else if(fMagBG->GetButton(kFld5)->GetState())     fprintf(pF,"  gAlice->SetField(new AliMagF(\"Maps\",\"Maps\",2,1,1,10,2));//0.5 Tesla field\n\n");
+  else if(fMagBG->GetButton(kFld_2)->GetState())    fprintf(pF,"  gAlice->SetField(new AliMagF(\"Maps\",\"Maps\",2,-1,1,10,0));//-0.2 Tesla field\n\n");
+  else if(fMagBG->GetButton(kFld_4)->GetState())    fprintf(pF,"  gAlice->SetField(new AliMagF(\"Maps\",\"Maps\",2,-1,1,10,1));//-0.4 Tesla field\n\n");
+  else if(fMagBG->GetButton(kFld_5)->GetState())    fprintf(pF,"  gAlice->SetField(new AliMagF(\"Maps\",\"Maps\",2,-1,1,10,2));//-0.5 Tesla field\n\n");
   
   fprintf(pF,"  pAL->CdGAFile();\n\n");                                 //????       
 //Generator 
index 47b394f..335abb1 100644 (file)
@@ -231,13 +231,13 @@ void HmpGui::CreateConfigC()
   f<<Form("  gMC->SetExternalDecayer(pDecayer);\n\n");
   
 //Field
-       if(fMagBG->GetButton(kFld0)->GetState())     f<<Form("  gAlice->SetField(new AliMagFMaps(\"Maps\",\"Maps\",0,1,10,0));       //no field\n\n");
-  else if(fMagBG->GetButton(kFld2)->GetState())     f<<Form("  gAlice->SetField(new AliMagFMaps(\"Maps\",\"Maps\",2,1,10,0));//0.2 Tesla field\n\n");
-  else if(fMagBG->GetButton(kFld4)->GetState())     f<<Form("  gAlice->SetField(new AliMagFMaps(\"Maps\",\"Maps\",2,1,10,1));//0.4 Tesla field\n\n");
-  else if(fMagBG->GetButton(kFld5)->GetState())     f<<Form("  gAlice->SetField(new AliMagFMaps(\"Maps\",\"Maps\",2,1,10,2));//0.5 Tesla field\n\n");
-  else if(fMagBG->GetButton(kFld_2)->GetState())    f<<Form("  gAlice->SetField(new AliMagFMaps(\"Maps\",\"Maps\",2,-1,10,0));//-0.2 Tesla field\n\n");
-  else if(fMagBG->GetButton(kFld_4)->GetState())    f<<Form("  gAlice->SetField(new AliMagFMaps(\"Maps\",\"Maps\",2,-1,10,1));//-0.4 Tesla field\n\n");
-  else if(fMagBG->GetButton(kFld_5)->GetState())    f<<Form("  gAlice->SetField(new AliMagFMaps(\"Maps\",\"Maps\",2,-1,10,2));//-0.5 Tesla field\n\n");
+       if(fMagBG->GetButton(kFld0)->GetState())     f<<Form("  gAlice->SetField(new AliMagF(\"Maps\",\"Maps\",0,1,1,10,0));       //no field\n\n");
+  else if(fMagBG->GetButton(kFld2)->GetState())     f<<Form("  gAlice->SetField(new AliMagF(\"Maps\",\"Maps\",2,1,1,10,0));//0.2 Tesla field\n\n");
+  else if(fMagBG->GetButton(kFld4)->GetState())     f<<Form("  gAlice->SetField(new AliMagF(\"Maps\",\"Maps\",2,1,1,10,1));//0.4 Tesla field\n\n");
+  else if(fMagBG->GetButton(kFld5)->GetState())     f<<Form("  gAlice->SetField(new AliMagF(\"Maps\",\"Maps\",2,1,1,10,2));//0.5 Tesla field\n\n");
+  else if(fMagBG->GetButton(kFld_2)->GetState())    f<<Form("  gAlice->SetField(new AliMagF(\"Maps\",\"Maps\",2,-1,1,10,0));//-0.2 Tesla field\n\n");
+  else if(fMagBG->GetButton(kFld_4)->GetState())    f<<Form("  gAlice->SetField(new AliMagF(\"Maps\",\"Maps\",2,-1,1,10,1));//-0.4 Tesla field\n\n");
+  else if(fMagBG->GetButton(kFld_5)->GetState())    f<<Form("  gAlice->SetField(new AliMagF(\"Maps\",\"Maps\",2,-1,1,10,2));//-0.5 Tesla field\n\n");
   
   if(fProBG->GetButton(kDCAY)->GetState()) f<<Form("  gMC->SetProcess(\"DCAY\",1);  ");else f<<Form("  gMC->SetProcess(\"DCAY\",0);  ");
   if(fProBG->GetButton(kPAIR)->GetState()) f<<Form("  gMC->SetProcess(\"PAIR\",1);  ");else f<<Form("  gMC->SetProcess(\"PAIR\",0);  ");
index b16ba76..a1e070a 100644 (file)
@@ -6,7 +6,6 @@
   #include "TStopwatch.h"
 
   #include "AliRun.h"
-  #include "AliMagF.h"
   #include "AliESD.h"
   #include "AliTracker.h"
   #include "AliRunLoader.h"
index 861f2fc..db2254c 100644 (file)
@@ -5,7 +5,6 @@
   #include "TStopwatch.h"
 
   #include "AliRun.h"
-  #include "AliMagF.h"
   #include "AliRunLoader.h"
   #include "AliTPCLoader.h"
   #include "AliITSLoader.h"
index de55c1a..89fc50d 100644 (file)
@@ -9,7 +9,6 @@
 //  #include "AliTPCLoader.h"
   #include "AliITSLoader.h"
   #include "TStopwatch.h"
-  #include "AliMagF.h"
 #endif
 
 Int_t AliITSFindTracksSA(Int_t evin=0,Int_t nevents=1,char *opt="onlyITS+6/6",const Char_t *clusterFileName="clusters.root", const Char_t *tracksFileName="ITS.TracksSA.root") {
index 056c4f3..7a6bb81 100644 (file)
@@ -65,7 +65,7 @@ AliITSTrackV1::AliITSTrackV1(Double_t fieldfactor) {
   
 //////////////////////////////////////// gets magnetic field factor ////////////////////////////////
 
- // AliMagF * fieldPointer = gAlice->Field();
+ // AliMagF * fieldPointer = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField());
   // fFieldFactor =(Double_t)fieldPointer-> SolenoidField()/10/.2;
     fFieldFactor = fieldfactor;
   //cout<< " field factor = "<<fFieldFactor<<"\n"; getchar();
@@ -134,7 +134,7 @@ AliITSTrackV1::AliITSTrackV1(AliTPCtrack &obj, Double_t fieldfactor)
 
 //////////////////////////////////////// gets magnetic field factor ////////////////////////////////
 
-   // AliMagF * fieldPointer = gAlice->Field();
+   // AliMagF * fieldPointer = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField());
   // fFieldFactor =(Double_t)fieldPointer-> SolenoidField()/10/.2;
     fFieldFactor = fieldfactor;
  // cout<< " field factor dentro alitrack = "<<fFieldFactor<<"\n";/* getchar();*/
index 30b44ac..0fbd463 100644 (file)
@@ -280,10 +280,8 @@ AliITSTrackerV1::AliITSTrackerV1(Int_t evnumber, Bool_t flag) {
         
 
     ////////// gets magnetic field factor //////////////////////////////
-
-    AliMagF * fieldPointer = gAlice->Field();
-   // fFieldFactor = (Double_t)fieldPointer->Factor();
-    fFieldFactor =(Double_t)fieldPointer-> SolenoidField()/10/.2;
+    AliMagF * fieldPointer = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+    fFieldFactor =  fieldPointer ? fieldPointer->SolenoidField()/10/.2 : 0;
    // cout<< " field factor = "<<fFieldFactor<<"\n"; getchar();
     delete rl;
     
@@ -518,10 +516,6 @@ void AliITSTrackerV1::DoTracking(Int_t evNumber,Int_t minTr,Int_t maxTr,
 
     gAlice->GetEvent(evNumber);  //modificato per gestire hbt
  
-    AliKalmanTrack::SetFieldMap(gAlice->Field());
-   // cout<<" field = "<<gAlice->Field()->SolenoidField()<<endl;
-
-
     TFile *cf=TFile::Open("AliTPCclusters.root");  
     AliTPCParam *digp= (AliTPCParam*)cf->Get("75x40_100x60_150x60");
     if (!digp) { cerr<<"TPC parameters have not been found !\n"; getchar();}
index a7e3ee9..eb6ec21 100644 (file)
@@ -18,6 +18,7 @@ $Id$
 */
 
 #include <Riostream.h>
+#include <TGeoGlobalMagField.h>
 #include <TH1.h>
 #include <TString.h>
 #include "AliITS.h"
@@ -145,10 +146,9 @@ Bool_t AliITSsimulationSPD::SetTanLorAngle(Double_t WeightHole) {
      }
      Double_t WeightEle=1.-WeightHole;
      AliITSSimuParam* simpar = fDetType->GetSimuParam();
-     AliMagF *mf = gAlice->Field();
-     Float_t pos[3]={0.,0.,0.};
-     Float_t B[3]={0.,0.,0.};
-     mf->Field(pos,B);
+     Double_t pos[3]={0.,0.,0.};
+     Double_t B[3]={0.,0.,0.};
+     TGeoGlobalMagField::Instance()->Field(pos,B);
      fTanLorAng = TMath::Tan(WeightHole*simpar->LorentzAngleHole(B[2]) +
                               WeightEle*simpar->LorentzAngleElectron(B[2]));
      fTanLorAng*=-1.; // this only for the old geometry
index 0fcfe39..1d2c3b6 100644 (file)
 #include <TMath.h>
 
 #include "AliCluster.h"
-#include "AliTracker.h"
 #include "AliESDtrack.h"
 #include "AliESDVertex.h"
 #include "AliITSReconstructor.h"
 #include "AliITStrackV2.h"
+#include "AliTracker.h"
 
 const Int_t AliITStrackV2::fgkWARN = 5;
 
@@ -151,7 +151,7 @@ GetGlobalXYZat(Double_t xloc, Double_t &x, Double_t &y, Double_t &z) const {
   //This function returns a track position in the global system
   //------------------------------------------------------------------
   Double_t r[3];
-  Bool_t rc=GetXYZAt(xloc, AliTracker::GetBz(), r);
+  Bool_t rc=GetXYZAt(xloc, GetBz(), r);
   x=r[0]; y=r[1]; z=r[2]; 
   return rc;
 }
@@ -449,15 +449,6 @@ void AliITStrackV2::CookdEdx(Double_t low, Double_t up) {
   SetdEdx(dedx);
 }
 
-Double_t AliITStrackV2::GetBz() const {
-  //
-  // returns Bz component of the magnetic field (kG)
-  //
-  if (AliTracker::UniformField()) return AliTracker::GetBz();
-  Double_t r[3]; GetXYZ(r); 
-  return AliTracker::GetBz(r);
-}
-
 //____________________________________________________________________________
 Bool_t AliITStrackV2::
 GetPhiZat(Double_t r, Double_t &phi, Double_t &z) const {
index ddce1fc..62fb3e3 100644 (file)
@@ -18,6 +18,7 @@
 
 class AliESDtrack;
 class AliESDVertex;
+class AliTracker;
 
 //_____________________________________________________________________________
 class AliITStrackV2 : public AliKalmanTrack {
@@ -90,7 +91,6 @@ public:
   Int_t GetExtraModule(Int_t ilayer) const {return fModule[AliITSgeomTGeo::kNLayers+ilayer];}
 
 protected:
-  Double_t GetBz() const ;
   Double_t fdEdx;            // dE/dx
 
   static const Int_t fgkWARN; //! used for debugging purposes
index 0e39231..8490d38 100644 (file)
@@ -744,7 +744,7 @@ Int_t AliITStrackerMI::RefitInward(AliESDEvent *event) {
         AliESDtrack  *esdTrack =fTrackToFollow.GetESDtrack();
         //printf("                                       %d\n",esdTrack->GetITSModuleIndex(0));
         //esdTrack->UpdateTrackParams(&fTrackToFollow,AliESDtrack::kITSrefit); //original line
-        Float_t r[3]={0.,0.,0.};
+        Double_t r[3]={0.,0.,0.};
         Double_t maxD=3.;
         esdTrack->RelateToVertex(event->GetVertex(),GetBz(r),maxD);
         ntrk++;
index e3896ea..9a3fd95 100644 (file)
@@ -452,7 +452,7 @@ Int_t AliITStrackerV2::RefitInward(AliESDEvent *event) {
        if (fTrackToFollow.PropagateTo(3.,0.0028,65.19)) {//The beam pipe 
          AliESDtrack  *esdTrack =fTrackToFollow.GetESDtrack();
          esdTrack->UpdateTrackParams(&fTrackToFollow,AliESDtrack::kITSrefit);
-         Float_t r[3]={0.,0.,0.};
+         Double_t r[3]={0.,0.,0.};
          Double_t maxD=3.;
         esdTrack->RelateToVertex(event->GetVertex(),GetBz(r),maxD);
          ntrk++;
index 097055f..b1a1e85 100644 (file)
@@ -968,8 +968,8 @@ void AliITSv11Geometry::CreateDefaultMaterials(){
     itsFreon->SetTemperature(22.0*fgkCelsius);
     itsFreon->SetState(TGeoMaterial::kMatStateLiquid);
     //
-    //    Int_t   ifield = gAlice->Field()->Integ();
-    //    Float_t fieldm = gAlice->Field()->Max();
+    //    Int_t   ifield = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+    //    Float_t fieldm = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
 
     //    Float_t tmaxfd = 0.1;//  1.0;//  Degree
     //    Float_t stemax = 1.0;//  cm
index 66fa292..2844e4e 100644 (file)
 #include <TPolyMarker.h>
 
 // Root Geometry includes
-#include <TGeoVolume.h>
-#include <TGeoTube.h> // contains TGeoTubeSeg
+#include <TGeoCompositeShape.h>
 #include <TGeoEltu.h>
-#include <TGeoXtru.h>
-#include <TGeoMatrix.h>
+#include <TGeoGlobalMagField.h>
 #include <TGeoMaterial.h>
+#include <TGeoMatrix.h>
 #include <TGeoMedium.h>
-#include <TGeoCompositeShape.h>
+#include <TGeoTube.h> // contains TGeoTubeSeg
+#include <TGeoVolume.h>
+#include <TGeoXtru.h>
 
 // AliRoot includes
 #include "AliLog.h"
@@ -273,8 +274,8 @@ Int_t AliITSv11GeometrySPD::CreateSPDCentralMaterials(Int_t &medOffset,
     TGeoMixture  *mix;
     TGeoMedium   *med;
     //
-    Int_t    ifield = (gAlice->Field()->Integ());
-    Double_t fieldm = (gAlice->Field()->Max());
+    Int_t    ifield = (((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ());
+    Double_t fieldm = (((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max());
     Double_t params[8] = {8 * 0.0};
 
     params[1] = (Double_t) ifield;
index 8cd7c4e..3ec260d 100644 (file)
@@ -70,8 +70,8 @@
 // Updates concerning the geometry: versioning system, new V11hybrid version, bug fixes (B.Nilsend and L. Gaudichet
 //
 
-
 #include <TClonesArray.h>
+#include <TGeoGlobalMagField.h>
 #include <TGeoManager.h>
 #include <TGeoMatrix.h>
 #include <TGeoPhysicalNode.h>
@@ -5091,8 +5091,8 @@ void AliITSv11Hybrid::CreateMaterials(){
     // Return:
     //   none.
 
-    Int_t   ifield = gAlice->Field()->Integ();
-    Float_t fieldm = gAlice->Field()->Max();
+    Int_t   ifield = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+    Float_t fieldm = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
 
     Float_t tmaxfd = 0.1; // 1.0; // Degree
     Float_t stemax = 1.0; // cm
index 9dd394f..076d08f 100644 (file)
@@ -4,23 +4,25 @@
 //  Author: mercedes.lopez.noriega@cern.ch            //
 ////////////////////////////////////////////////////////
 
-#include <TLorentzVector.h>
 
+#include "AliITS.h"
+#include "AliITSgeom.h"
+#include "AliITShit.h"
+#include "AliITSvBeamTestITS04.h"
+#include "AliMC.h"
+#include "AliMagF.h"
+#include "AliRun.h"
+#include "AliTrackReference.h"
+
+#include <TVirtualMC.h>
+#include <TClonesArray.h>
+#include <TGeoGlobalMagField.h>
 #include <TGeoManager.h>
-#include <TGeoVolume.h>
 #include <TGeoMatrix.h>
 #include <TGeoPcon.h>
-#include "AliRun.h"
-#include "AliITSvBeamTestITS04.h"
-#include <TClonesArray.h>
+#include <TGeoVolume.h>
+#include <TLorentzVector.h>
 #include <TString.h>
-#include "AliITS.h"
-#include "AliMagF.h"
-#include "TVirtualMC.h"
-#include "AliMC.h"
-#include "AliTrackReference.h"
-#include "AliITSgeom.h"
-#include "AliITShit.h"
 
 const Int_t AliITSvBeamTestITS04::fgkNumberOfSPD = 4;
 const Int_t AliITSvBeamTestITS04::fgkNumberOfSDD = 2;
@@ -139,8 +141,8 @@ void AliITSvBeamTestITS04::CreateMaterials(){
     // Media defined here should correspond to the one defined in galice.cuts
     // This file is read in (AliMC*) fMCApp::Init() { ReadTransPar(); }
     // Create ITS materials
-    Int_t   ifield = gAlice->Field()->Integ();
-    Float_t fieldm = gAlice->Field()->Max();
+    Int_t   ifield = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+    Float_t fieldm = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
     
     Float_t tmaxfdSi = 0.1;
     Float_t stemaxSi = 0.0075;
index 7de81b9..ba3267e 100644 (file)
 
 // See AliITSvPPRasymmFMD::StepManager().
 
-#include <TClonesArray.h>
-#include <TLorentzVector.h>
-#include <TGeoMatrix.h>
-#include <TGeoPhysicalNode.h>
 #include <TArrayD.h>
 #include <TArrayF.h>
-#include <TString.h>
+#include <TClonesArray.h>
+#include <TGeoGlobalMagField.h>
 #include <TGeoManager.h>
+#include <TGeoMatrix.h>
+#include <TGeoPhysicalNode.h>
 #include <TGeoVolume.h>
+#include <TLorentzVector.h>
+#include <TString.h>
 #include <TVirtualMC.h>
 
 #include "AliITS.h"
@@ -5285,8 +5286,8 @@ void AliITSvPPRasymmFMD::CreateMaterials(){
     // Return:
     //   none.
 
-    Int_t   ifield = gAlice->Field()->Integ();
-    Float_t fieldm = gAlice->Field()->Max();
+    Int_t   ifield = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+    Float_t fieldm = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
 
     Float_t tmaxfd = 0.1; // 1.0; // Degree
     Float_t stemax = 1.0; // cm
index 931749c..69101c2 100644 (file)
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 #include <Riostream.h> 
+#include <TGeoGlobalMagField.h>
+#include <TGeoManager.h>
 #include <TMath.h>
 #include <TObjArray.h>
 #include <TRandom.h>
 #include <TVector.h>
 #include <TVirtualMC.h>
-#include <TGeoManager.h>
 
 #include "AliMagF.h"
 #include "AliConst.h"
@@ -899,8 +900,8 @@ void AliITSvPPRcoarseasymm::CreateMaterials(){
   Float_t wsteel[4] = { .715,.18,.1,.005 };
   
   
-  Int_t  isxfld  = gAlice->Field()->Integ();
-  Float_t sxmgmx = gAlice->Field()->Max();
+  Int_t  isxfld  = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+  Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
   
   
   // --- Define the various materials for GEANT --- 
index fe49cbc..2bde377 100644 (file)
 //                                                             //
 /////////////////////////////////////////////////////////////////
 
+#include <TGeoGlobalMagField.h>
 #include <TGeoManager.h>
+#include <TGeoMatrix.h>
 #include <TLorentzVector.h>
 #include <TVirtualMC.h>
-#include <TGeoMatrix.h>
 
 #include "AliMC.h"
 #include "AliRun.h"
@@ -393,8 +394,8 @@ void AliITSvSDD03::CreateMaterials(){
     Float_t deemaxAir = 0.1; // Fraction of particle's energy 0<deemax<=1
     Float_t epsilAir  = 1.0E-4;//
     Float_t stminAir  = 0.0; // cm "Default value used"
-    Int_t   ifield = gAlice->Field()->Integ();
-    Float_t fieldm = gAlice->Field()->Max();
+    Int_t   ifield = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+    Float_t fieldm = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
     //
 
     // AIR
index dd42acc..1e28e11 100644 (file)
 
 /* $Id$ */
 
-#include <TGeoManager.h>
-#include <TLorentzVector.h>
 #include <TClonesArray.h>
+#include <TGeoGlobalMagField.h>
+#include <TGeoManager.h>
 #include <TGeoMatrix.h>
+#include <TLorentzVector.h>
 #include <TVirtualMC.h>
 
 #include "AliRun.h"
@@ -349,8 +350,8 @@ void AliITSvSPD02::CreateMaterials2002(){
     Float_t deemaxAir = 0.1; // Fraction of particle's energy 0<deemax<=1
     Float_t epsilAir  = 1.0E-4;//
     Float_t stminAir  = 0.0; // cm "Default value used"
-    Int_t   ifield = gAlice->Field()->Integ();
-    Float_t fieldm = gAlice->Field()->Max();
+    Int_t   ifield = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+    Float_t fieldm = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
 
     AliMaterial(1,"AIR$",0.14610E+02,0.73000E+01,0.12050E-02,
                 0.30423E+05,0.99900E+03);
index e2339cc..f793f90 100644 (file)
 // Enrico Fragiacomo - 15/03/2004
 // Geometry for the June 2003 SSD beam test
 
-#include <TLorentzVector.h>
 #include <TClonesArray.h>
-#include <TVirtualMC.h>
-#include <TGeoMatrix.h>
+#include <TGeoGlobalMagField.h>
 #include <TGeoManager.h>
+#include <TGeoMatrix.h>
+#include <TLorentzVector.h>
+#include <TVirtualMC.h>
 
 #include "AliRun.h"
 #include "AliMagF.h"
@@ -329,8 +330,8 @@ void AliITSvSSD03::CreateMaterials2003(){
     //    none.
     /////////////////////////////////////////////////////////////////////////
 
-    Int_t   ifield = gAlice->Field()->Integ();
-    Float_t fieldm = gAlice->Field()->Max();   
+    Int_t   ifield = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+    Float_t fieldm = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();   
 
     // Scintillator CH
     Float_t ascin[2]={1.01,12.01};
index ae79a87..bb936c6 100644 (file)
@@ -12,9 +12,7 @@
 #include "PYTHIA6/AliDecayerPythia.h"
 #include "EVGEN/AliGenCocktail.h"
 #include "EVGEN/AliGenHIJINGpara.h"
-#include "STEER/AliMagFMaps.h"
 #include "STRUCT/AliBODY.h"
-#include "STRUCT/AliMAG.h"
 #include "STRUCT/AliABSOv0.h"
 #include "STRUCT/AliDIPOv2.h"
 #include "STRUCT/AliHALL.h"
index d07e20d..4402d95 100644 (file)
@@ -12,9 +12,7 @@
 #include "PYTHIA6/AliDecayerPythia.h"
 #include "EVGEN/AliGenCocktail.h"
 #include "EVGEN/AliGenHIJINGpara.h"
-#include "STEER/AliMagFMaps.h"
 #include "STRUCT/AliBODY.h"
-#include "STRUCT/AliMAG.h"
 #include "STRUCT/AliABSOv0.h"
 #include "STRUCT/AliDIPOv2.h"
 #include "STRUCT/AliHALL.h"
index dc98a47..b7bc9d7 100644 (file)
@@ -11,9 +11,7 @@
 #include "PYTHIA6/AliDecayerPythia.h"
 #include "EVGEN/AliGenCocktail.h"
 #include "EVGEN/AliGenHIJINGpara.h"
-#include "STEER/AliMagFMaps.h"
 #include "STRUCT/AliBODY.h"
-#include "STRUCT/AliMAG.h"
 #include "STRUCT/AliABSOv0.h"
 #include "STRUCT/AliDIPOv2.h"
 #include "STRUCT/AliHALL.h"
index 470909e..320855c 100644 (file)
@@ -42,7 +42,7 @@ void AliITSVertexerTracksTest2(Int_t evFirst=0,Int_t evLast=0,
   if(!gSystem->AccessPathName(galiceName,kFileExists)) {
     galice = new TFile(galiceName);
     gAlice = (AliRun*)galice->Get("gAlice");
-    AliMagF *fiel = (AliMagF*)gAlice->Field();
+    AliMagF *fiel = TGeoGlobalMagField::Instance()->GetField();
     field=(Double_t)fiel->SolenoidField()/10.;
     AliKalmanTrack::SetConvConst(100/0.299792458/field);
     printf(" B = %3.1f read from gAlice and set\n",field);
index 7794a22..adc0742 100644 (file)
@@ -18,8 +18,7 @@ void Config()
     new TGeant3("C++ Interface to Geant3");
 
     // Field (L3 0.4 T)
-    AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., AliMagFMaps::k4kG);
-    gAlice->SetField(field);    
+    TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 2, 1., 1., 10., AliMagF::k5kG));
 
     Int_t   iABSO  =  0;
     Int_t   iDIPO  =  0;
index d09f882..924a5c1 100644 (file)
@@ -53,8 +53,6 @@
 #include <AliKalmanTrack.h>
 #include "AliITSgeomTGeo.h"
 #include "AliITSgeom.h"
-#include "AliMagF.h"
-#include "AliMagFMaps.h"
 #endif
 
 //_____________________________________________________________________________
@@ -120,19 +118,14 @@ int main(int argc, char** argv)
   //  Int_t sfield = 0;
   //  switch ((Int_t)(AliHLTTransform::GetSolenoidField()+0.5)) {
   //  case 2:
-  //    sfield = AliMagFMaps::k2kG;
-  //    break;
-  //  case 4:
-  //    sfield = AliMagFMaps::k4kG;
+  //    sfield = AliMagF::k2kG;
   //    break;
   //  case 5:
-  //    sfield = AliMagFMaps::k5kG;
+  //    sfield = AliMagF::k5kG;
   //    break;
   //  default:
   //    ::Fatal("AliHLTTransform::GetSolenoidField", "Incorrect magnetic field");
   //  }
-  AliMagF* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field,kTRUE);
 
   // Init PID
   AliPID pid;
index 086c0f1..4b28ce6 100644 (file)
@@ -49,7 +49,7 @@
 #include "AliESDEvent.h"
 #include "AliESDMuonTrack.h"
 #include "AliESDVertex.h"
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 #include "AliLog.h"
 
 #include <TSystem.h>
index 308f851..15c27d8 100644 (file)
@@ -24,6 +24,7 @@
 //-----------------------------------------------------------------------------
 
 
+#include <TGeoGlobalMagField.h>
 #include <TVirtualMC.h>
 
 #include "AliMUONCommonGeometryBuilder.h"
@@ -104,8 +105,8 @@ void AliMUONCommonGeometryBuilder::CreateMaterials()
   Float_t wbak[3] = {6.     , 6.   , 1.}; 
   Float_t dbak = 1.4;
 
-  Int_t iSXFLD   = gAlice->Field()->PrecInteg();
-  Float_t sXMGMX = gAlice->Field()->Max();
+  Int_t iSXFLD   = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->PrecInteg();
+  Float_t sXMGMX = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
   //
   // --- Define the various materials for GEANT --- 
   fMUON->AliMaterial(9, "ALUMINIUM0$", 26.98, 13., 2.7, 8.9, 37.2);
index 61aaca9..b2049b4 100644 (file)
 #include "AliMagF.h"
 #include "AliLog.h"
 
-#include <TVector2.h>
-#include <TVector3.h>
-#include <TGeoMatrix.h>
-#include <TClonesArray.h>
 #include <Riostream.h>
-#include <TSystem.h>
-#include <TVirtualMC.h>
+#include <TClonesArray.h>
+#include <TGeoCompositeShape.h>
+#include <TGeoGlobalMagField.h>
 #include <TGeoManager.h>
-#include <TGeoVolume.h>
+#include <TGeoMatrix.h>
 #include <TGeoTube.h>
+#include <TGeoVolume.h>
 #include <TGeoXtru.h>
-#include <TGeoCompositeShape.h>
+#include <TSystem.h>
+#include <TVector2.h>
+#include <TVector3.h>
+#include <TVirtualMC.h>
 
 #ifdef WITH_STL
   #include <vector>
@@ -2227,8 +2228,8 @@ void AliMUONSt1GeometryBuilderV2::CreateMaterials()
   GReal_t maxStepAlu   = fMUON->GetMaxStepAlu();
   GReal_t maxDestepAlu = fMUON->GetMaxDestepAlu();
   // GReal_t maxStepGas   = fMUON->GetMaxStepGas();
-  Int_t iSXFLD   = gAlice->Field()->PrecInteg();
-  Float_t sXMGMX = gAlice->Field()->Max();
+  Int_t iSXFLD   = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->PrecInteg();
+  Float_t sXMGMX = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
 
   fMUON->AliMedium(21, "ALU_II$",    41, 0, iSXFLD, sXMGMX, 
                    tmaxfd, maxStepAlu, maxDestepAlu, epsil, stmin);
index 19c3464..2830ca0 100644 (file)
@@ -29,8 +29,9 @@
 
 #include "AliMagF.h" 
 
-#include <TMath.h>
+#include <TGeoGlobalMagField.h>
 #include <TGeoManager.h>
+#include <TMath.h>
 
 #include <Riostream.h>
 
@@ -38,7 +39,6 @@
 ClassImp(AliMUONTrackExtrap) // Class implementation in ROOT context
 /// \endcond
 
-const AliMagF* AliMUONTrackExtrap::fgkField = 0x0;
 const Double_t AliMUONTrackExtrap::fgkSimpleBPosition = 0.5 * (AliMUONConstants::CoilZ() + AliMUONConstants::YokeZ());
 const Double_t AliMUONTrackExtrap::fgkSimpleBLength = 0.5 * (AliMUONConstants::CoilL() + AliMUONConstants::YokeL());
       Double_t AliMUONTrackExtrap::fgSimpleBValue = 0.;
@@ -49,26 +49,15 @@ const Double_t AliMUONTrackExtrap::fgkHelixStepLength = 6.;
 const Double_t AliMUONTrackExtrap::fgkRungeKuttaMaxResidue = 0.002;
 
 //__________________________________________________________________________
-void AliMUONTrackExtrap::SetField(const AliMagF* magField)
+void AliMUONTrackExtrap::SetField()
 {
-  /// set magnetic field
-  
-  // set field map
-  fgkField = magField;
-  if (!fgkField) {
-    cout<<"E-AliMUONTrackExtrap::SetField: fgkField = 0x0"<<endl;
-    return;
-  }
-  
-  // set field on/off flag
-  fgFieldON = (fgkField->Factor() == 0.) ? kFALSE : kTRUE;
-  
+  // set field on/off flag  
   // set field at the centre of the dipole
-  if (fgFieldON) {
-    Float_t b[3] = {0.,0.,0.}, x[3] = {50.,50.,(Float_t) fgkSimpleBPosition};
-    fgkField->Field(x,b);
-    fgSimpleBValue = (Double_t) b[0];
-  } else fgSimpleBValue = 0.;
+  const Double_t x[3] = {50.,50.,fgkSimpleBPosition};
+  Double_t b[3] = {0.,0.,0.};
+  TGeoGlobalMagField::Instance()->Field(x,b);
+  fgSimpleBValue = b[0];
+  fgFieldON = fgSimpleBValue ? kTRUE : kFALSE;
   
 }
 
@@ -82,11 +71,6 @@ Double_t AliMUONTrackExtrap::GetImpactParamFromBendingMomentum(Double_t bendingM
   
   if (bendingMomentum == 0.) return 1.e10;
   
-  if (!fgkField) {
-    cout<<"F-AliMUONTrackExtrap::GetField: fgkField = 0x0"<<endl;
-    exit(-1);
-  }
-  
   const Double_t kCorrectionFactor = 0.9; // impact parameter is 10% overestimated
   
   return kCorrectionFactor * (-0.0003 * fgSimpleBValue * fgkSimpleBLength * fgkSimpleBPosition / bendingMomentum);
@@ -103,11 +87,6 @@ AliMUONTrackExtrap::GetBendingMomentumFromImpactParam(Double_t impactParam)
   
   if (impactParam == 0.) return 1.e10;
   
-  if (!fgkField) {
-    cout<<"F-AliMUONTrackExtrap::GetField: fgkField = 0x0"<<endl;
-    exit(-1);
-  }
-  
   const Double_t kCorrectionFactor = 1.1; // bending momentum is 10% underestimated
   
   if (fgFieldON) 
@@ -1013,7 +992,7 @@ void AliMUONTrackExtrap::ExtrapOneStepHelix(Double_t charge, Double_t step, Doub
     xyz[2]    = vect[kiz] + 0.5 * step * vect[kipz];
 
     //cmodif: call gufld (xyz, h) changed into:
-    GetField (xyz, h);
+    TGeoGlobalMagField::Instance()->Field(xyz,h);
  
     h2xy = h[0]*h[0] + h[1]*h[1];
     h[3] = h[2]*h[2]+ h2xy;
@@ -1230,8 +1209,7 @@ void AliMUONTrackExtrap::ExtrapOneStepRungekutta(Double_t charge, Double_t step,
       rest  = step - tl;
       if (TMath::Abs(h) > TMath::Abs(rest)) h = rest;
       //cmodif: call gufld(vout,f) changed into:
-
-      GetField(vout,f);
+      TGeoGlobalMagField::Instance()->Field(vout,f);
 
       // *
       // *             start of integration
@@ -1275,7 +1253,7 @@ void AliMUONTrackExtrap::ExtrapOneStepRungekutta(Double_t charge, Double_t step,
       xyzt[2] = zt;
 
       //cmodif: call gufld(xyzt,f) changed into:
-      GetField(xyzt,f);
+      TGeoGlobalMagField::Instance()->Field(xyzt,f);
 
       at     = a + secxs[0];
       bt     = b + secys[0];
@@ -1312,7 +1290,7 @@ void AliMUONTrackExtrap::ExtrapOneStepRungekutta(Double_t charge, Double_t step,
       xyzt[2] = zt;
 
       //cmodif: call gufld(xyzt,f) changed into:
-      GetField(xyzt,f);
+      TGeoGlobalMagField::Instance()->Field(xyzt,f);
 
       z      = z + (c + (seczs[0] + seczs[1] + seczs[2]) * kthird) * h;
       y      = y + (b + (secys[0] + secys[1] + secys[2]) * kthird) * h;
@@ -1397,21 +1375,3 @@ void AliMUONTrackExtrap::ExtrapOneStepRungekutta(Double_t charge, Double_t step,
     return;
 }
 
-//___________________________________________________________
-void  AliMUONTrackExtrap::GetField(Double_t *Position, Double_t *Field)
-{
-  /// interface for arguments in double precision (Why ? ChF)
-  Float_t x[3], b[3];
-  
-  x[0] = Position[0]; x[1] = Position[1]; x[2] = Position[2];
-  
-  if (fgkField) fgkField->Field(x,b);
-  else {
-    cout<<"F-AliMUONTrackExtrap::GetField: fgkField = 0x0"<<endl;
-    exit(-1);
-  }
-  
-  Field[0] = b[0]; Field[1] = b[1]; Field[2] = b[2];
-  
-  return;
-}
index 53ab61c..5276dca 100644 (file)
@@ -28,7 +28,7 @@ class AliMUONTrackExtrap : public TObject
        /// Destructor
   virtual ~AliMUONTrackExtrap(){};
   
-  static void SetField(const AliMagF* magField);
+  static void SetField();
   
   /// return kTRUE if the field is switched ON
   static Bool_t IsFieldON() {return fgFieldON;}
@@ -74,7 +74,6 @@ class AliMUONTrackExtrap : public TObject
   
   
  private:
-  static const AliMagF* fgkField;              //!< field map
   static const Double_t fgkSimpleBPosition;     //!< position of the dipole
   static const Double_t fgkSimpleBLength;       //!< length of the dipole
   static       Double_t fgSimpleBValue;         //!< magnetic field value at the centre
@@ -120,8 +119,6 @@ class AliMUONTrackExtrap : public TObject
   
   static void ExtrapOneStepHelix(Double_t charge, Double_t step, Double_t *vect, Double_t *vout);
   static void ExtrapOneStepHelix3(Double_t field, Double_t step, Double_t *vect, Double_t *vout);
-
-  static void GetField(Double_t *Position, Double_t *Field);
   
   ClassDef(AliMUONTrackExtrap, 0) // Tools for track extrapolation in ALICE dimuon spectrometer
 };
index 57c5984..26f5013 100644 (file)
@@ -63,7 +63,6 @@
 
 #include "AliMpConstants.h"
 
-#include "AliMagF.h"
 #include "AliLog.h"
 #include "AliTracker.h"
 
@@ -98,11 +97,7 @@ fkMaxDistance(99999.)
 {
     /// Default constructor
     InitMembers();
-
-    // Set magnetic field
-    const AliMagF* kField = AliTracker::GetFieldMap();
-    if (!kField) AliFatal("No field available");
-    AliMUONTrackExtrap::SetField(kField);
+    AliMUONTrackExtrap::SetField();
 }
 
 
index 68eb96c..cb6fd66 100644 (file)
@@ -107,9 +107,7 @@ fRecoParam(recoParam)
   fRecTracksPtr = new TClonesArray("AliMUONTrack", 100);
   
   // set the magnetic field for track extrapolations
-  const AliMagF* kField = AliTracker::GetFieldMap();
-  if (!kField) AliFatal("No field available");
-  AliMUONTrackExtrap::SetField(kField);
+  AliMUONTrackExtrap::SetField();
 }
 
   //__________________________________________________________________________
index 49ebf4d..fb0dde7 100644 (file)
 #include "AliTrackReference.h"
 #include "AliLog.h"
 
-#include <TRandom.h>
+#include <TClonesArray.h>
 #include <TF1.h>
 #include <TF2.h>
-#include <TClonesArray.h>
+#include <TGeoGlobalMagField.h>
+#include <TGeoMatrix.h>
+#include <TRandom.h>
 #include <TRandom.h> 
 #include <TVirtualMC.h>
-#include <TGeoMatrix.h>
 
 #include <string>
 
@@ -406,7 +407,7 @@ void AliMUONv1::StepManager()
     Float_t thetawires      =  TMath::ASin( TMath::Sin(TMath::Pi()-theta) * TMath::Sin(phi) ) ;// We use Pi-theta because z is negative
     Double_t bField[3] = {0};
     fTrackPosition.Vect().GetXYZ(tmp);
-    gAlice->Field(tmp,bField);
+    TGeoGlobalMagField::Instance()->Field(tmp,bField);
 
     if (fAngleEffect && !fMagEffect){
       thetawires = TMath::Abs(thetawires);
index cbf9f4f..e2f67ad 100644 (file)
@@ -174,8 +174,7 @@ void Config(char directory[100]="", char option[6]="param", const char* digitsto
   }  
   //============================================================= 
   // Field (L3 0.5 T)
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-  gAlice->SetField(field);
+  TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 2, 1., 1, 10., AliMagF::k5kG));
   //============================================================= 
   //=================== Alice BODY parameters =============================
   AliBODY *BODY = new AliBODY("BODY","Alice envelop");
index be8f88c..6f00fe9 100644 (file)
 #include "AliESDVertex.h"
 #include "AliMCEventHandler.h"
 #include "AliMCEvent.h"
+#include "AliMagF.h"
 /*TODO: need to update this with changes made to ITS
 #include "AliITSVertexerPPZ.h"
 #include "AliITSLoader.h"
 */
 #include "AliTracker.h"
-#include "AliMagFMaps.h"
 #endif
 
 
@@ -103,11 +103,13 @@ void DecodeRecoCocktail(
   
   // set  mag field 
   // waiting for mag field in CDB 
-  printf("Loading field map...\n");
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field, kFALSE);
+  if (!TGeoGlobalMagField::Instance()->GetField()) {
+    printf("Loading field map...\n");
+    AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG);
+    TGeoGlobalMagField::Instance()->SetField(field);
+  }
   // set the magnetic field for track extrapolations
-  AliMUONTrackExtrap::SetField(AliTracker::GetFieldMap());
+  AliMUONTrackExtrap::SetField();
 
   AliMUONRecoCheck *rc = new AliMUONRecoCheck("AliESDs.root", simdir);
   Int_t nev = rc->NumberOfEvents();
index 6f95f72..4ce99bb 100644 (file)
     class  AliDigit {};
     class  AliHit {};
     class  AliDisplay {};
-    class  AliMagFC {};
-    class  AliMagFCM {};
-    class  AliMagFMaps {};
-    class  AliMagFMapsV1 {};
-    class  AliMagFDM {};
-    class  AliMagFCheb {};
     class  AliCheb3DCalc {};
     class  AliCheb3D {};
     class  AliMagWrapCheb {};
index 6acd040..36244b0 100644 (file)
@@ -47,7 +47,7 @@
 
 #include "AliESDEvent.h"
 #include "AliESDMuonTrack.h"
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 #include "AliTracker.h"
 #include "AliCDBManager.h"
 #include "AliCDBMetaData.h"
@@ -81,11 +81,13 @@ void MUONAlignment(Int_t nEvents = 100000, char* geoFilename = "geometry.root",
   
   // set  mag field 
   // waiting for mag field in CDB 
-  printf("Loading field map...\n");
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field, kFALSE);
+  if (!TGeoGlobalMagField::Instance()->GetField()) {
+    printf("Loading field map...\n");
+    AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG);
+    TGeoGlobalMagField::Instance()->SetField(field);
+  }
   // set the magnetic field for track extrapolations
-  AliMUONTrackExtrap::SetField(AliTracker::GetFieldMap());
+  AliMUONTrackExtrap::SetField();
 
   Double_t parameters[3*156];
   Double_t errors[3*156];
index 02f8e79..cee85ca 100644 (file)
@@ -33,7 +33,7 @@
 #include <TROOT.h>
 
 // STEER includes
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 #include "AliTracker.h"
 #include "AliESDEvent.h"
 #include "AliESDMuonTrack.h"
@@ -237,9 +237,11 @@ void Prepare()
   }
   
   // set mag field
-  printf("Loading field map...\n");
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field, kFALSE);
+  if (!TGeoGlobalMagField::Instance()->GetField()) {
+    printf("Loading field map...\n");
+    AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG);
+    TGeoGlobalMagField::Instance()->SetField(field);
+  }
   
   // Load mapping
   AliCDBManager* man = AliCDBManager::Instance();
index fada01f..4bea894 100644 (file)
@@ -36,7 +36,7 @@
 #include "AliHeader.h"
 #include "AliMC.h"
 #include "AliStack.h"
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 #include "AliTracker.h"
 
 // MUON includes
@@ -89,12 +89,14 @@ void MUONRecoCheck (Int_t nEvent = 1, char* geoFilename = "geometry.root",
   
   // set  mag field 
   // waiting for mag field in CDB 
-  printf("Loading field map...\n");
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field, kFALSE);
+  if (!TGeoGlobalMagField::Instance()->GetField()) {
+    printf("Loading field map...\n");
+    AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG);
+    TGeoGlobalMagField::Instance()->SetField(field);
+  }
   // set the magnetic field for track extrapolations
-  AliMUONTrackExtrap::SetField(AliTracker::GetFieldMap());
-    
+  AliMUONTrackExtrap::SetField();
+
   AliMUONRecoCheck rc(esdFileName, pathSim);
   
   Int_t nevents = rc.NumberOfEvents();
index d53a353..34176eb 100644 (file)
@@ -32,7 +32,7 @@
 #include <TROOT.h>
 
 // STEER includes
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 #include "AliTracker.h"
 #include "AliESDEvent.h"
 #include "AliESDMuonTrack.h"
@@ -212,11 +212,15 @@ void Prepare()
     }
   }
   
-  // set mag field
-  printf("Loading field map...\n");
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field, kFALSE);
-  AliMUONTrackExtrap::SetField(AliTracker::GetFieldMap());
+  // set  mag field 
+  // waiting for mag field in CDB 
+  if (!TGeoGlobalMagField::Instance()->GetField()) {
+    printf("Loading field map...\n");
+    AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG);
+    TGeoGlobalMagField::Instance()->SetField(field);
+  }
+  // set the magnetic field for track extrapolations
+  AliMUONTrackExtrap::SetField();
   
   // Load mapping
   AliCDBManager* man = AliCDBManager::Instance();
index 6e0c37b..1950020 100644 (file)
@@ -58,7 +58,7 @@
 #include "AliLoader.h"
 #include "AliTracker.h"
 #include "AliStack.h"
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 
 
 // MUON includes
@@ -245,15 +245,15 @@ void efficiencyThetaPhi( Int_t event2Check=0, char * filename="galice.root" )
 
 //--------------------------------------------------------------------------------------------------------------
 //Set mag field; waiting for mag field in CDB 
-  printf("Loading field map...\n");
-  if (!AliTracker::GetFieldMap()) {
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field, kFALSE);}
-
+  if (!TGeoGlobalMagField::Instance()->GetField()) {
+    printf("Loading field map...\n");
+    AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG);
+    TGeoGlobalMagField::Instance()->SetField(field);
+  }
 
 //--------------------------------------------------------------------------------------------------------------
 //Set Field Map for track extrapolation
-  AliMUONTrackExtrap::SetField(AliTracker::GetFieldMap());
+  AliMUONTrackExtrap::SetField()
 
 
 //Creating a MUON data container
@@ -510,15 +510,16 @@ void efficiencyThetaI( Int_t event2Check=0, char * filename="galice.root" )
 
 //--------------------------------------------------------------------------------------------------------------
 //Set mag field; waiting for mag field in CDB 
-  printf("Loading field map...\n");
-  if (!AliTracker::GetFieldMap()) {
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field, kFALSE);}
-
+  if (!TGeoGlobalMagField::Instance()->GetField()) {
+    printf("Loading field map...\n");
+    AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG);
+    TGeoGlobalMagField::Instance()->SetField(field);
+  }  printf("Loading field map...\n");
 
 //--------------------------------------------------------------------------------------------------------------
 //Set Field Map for track extrapolation
-  AliMUONTrackExtrap::SetField(AliTracker::GetFieldMap());
+  AliMUONTrackExtrap::SetField();
 
 
 //Creating a MUON data container
index e4326cc..ce752fe 100644 (file)
@@ -43,7 +43,7 @@
 #include "AliHeader.h"
 #include "AliLoader.h"
 #include "AliStack.h"
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 #include "AliESDEvent.h"
 #include "AliESDVertex.h"
 #include "AliTracker.h"
@@ -205,9 +205,14 @@ Bool_t MUONefficiency( char* filename = "galice.root", char* geoFilename = "geom
   
   // set  mag field 
   // waiting for mag field in CDB 
-  printf("Loading field map...\n");
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field, kFALSE);
+  if (!TGeoGlobalMagField::Instance()->GetField()) {
+    printf("Loading field map...\n");
+    AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG);
+    TGeoGlobalMagField::Instance()->SetField(field);
+  }
+  // set the magnetic field for track extrapolations
+  AliMUONTrackExtrap::SetField();
+
 
   // open run loader and load gAlice, kinematics and header
   AliRunLoader* runLoader = AliRunLoader::Open(filename);
@@ -347,7 +352,7 @@ Bool_t MUONefficiency( char* filename = "galice.root", char* geoFilename = "geom
     }
 
     // set the magnetic field for track extrapolations
-    AliMUONTrackExtrap::SetField(AliTracker::GetFieldMap());
+    AliMUONTrackExtrap::SetField();
     // loop over all reconstructed tracks (also first track of combination)
     for (Int_t iTrack = 0; iTrack <  nTracks;  iTrack++) {
 
index 7237e48..3acd495 100644 (file)
@@ -15,7 +15,7 @@
 
 // STEER includes
 #include "AliLog.h"
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 #include "AliESDEvent.h"
 #include "AliESDVertex.h"
 #include "AliTracker.h"
@@ -139,9 +139,14 @@ Bool_t MUONmassPlot(Int_t ExtrapToVertex = -1, char* geoFilename = "geometry.roo
   
   // set mag field
   // waiting for mag field in CDB 
-  printf("Loading field map...\n");
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field, kFALSE);
+  if (!TGeoGlobalMagField::Instance()->GetField()) {
+    printf("Loading field map...\n");
+    AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG);
+    TGeoGlobalMagField::Instance()->SetField(field);
+  }
+  // set the magnetic field for track extrapolations
+  AliMUONTrackExtrap::SetField();
+
 
   // open the ESD file
   TFile* esdFile = TFile::Open(esdFileName);
@@ -189,8 +194,6 @@ Bool_t MUONmassPlot(Int_t ExtrapToVertex = -1, char* geoFilename = "geometry.roo
     //    printf("\n Nb of events analysed: %d\r",iEvent);
     //      cout << " number of tracks: " << nTracks  <<endl;
   
-    // set the magnetic field for track extrapolations
-    AliMUONTrackExtrap::SetField(AliTracker::GetFieldMap());
     // loop over all reconstructed tracks (also first track of combination)
     for (Int_t iTrack = 0; iTrack <  nTracks;  iTrack++) {
 
index 46b8b98..a6c8d91 100644 (file)
@@ -28,7 +28,7 @@
 #include "AliMUONRecoParam.h"
 #include "AliRecoParam.h"
 #include "AliCDBManager.h"
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 #include "AliTracker.h"
 #include "AliReconstruction.h"
 #include <TRandom.h>
@@ -62,8 +62,9 @@ void runDataReconstruction(Int_t calib = 1)
   gRandom->SetSeed(seed);
   
   // no magnetic field --> factor (4th parameter) = 0
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 0., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field, kFALSE);
+  TGeoGlobalMagField::Instance()->GetField()->SetFactorSol(0);
+  TGeoGlobalMagField::Instance()->GetField()->SetFactorDip(0);
+
   AliReconstruction *MuonRec = new AliReconstruction();
   
   MuonRec->SetInput(input.Data());
index e7cec7c..a42ce78 100644 (file)
@@ -28,7 +28,6 @@
 #include "AliMUONRecoParam.h"
 #include "AliRecoParam.h"
 #include "AliCDBManager.h"
-#include "AliMagFMaps.h"
 #include "AliTracker.h"
 #include "AliReconstruction.h"
 #include <TRandom.h>
@@ -42,9 +41,6 @@ void runReconstruction(int seed, const char* input, const char* recoptions)
   
   gRandom->SetSeed(seed);
   
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-  AliTracker::SetFieldMap(field, kFALSE);
-  
   AliReconstruction* MuonRec = new AliReconstruction("galice.root");
   MuonRec->SetInput(input);
   MuonRec->SetRunVertexFinder(kFALSE);
index dde85f4..faf122d 100644 (file)
 
 // --- ROOT system ---
 class TFile;
+#include <TF1.h> 
 #include <TFolder.h> 
-#include <TTree.h>
-#include <TVirtualMC.h> 
+#include <TGeoGlobalMagField.h>
 #include <TH1F.h> 
-#include <TF1.h> 
 #include <TRandom.h> 
+#include <TTree.h>
+#include <TVirtualMC.h> 
 
 // --- Standard library ---
 
@@ -291,8 +292,8 @@ void AliPHOS::CreateMaterials()
   // DEFINITION OF THE TRACKING MEDIA
 
   // for PHOS: idtmed[699->798] equivalent to fIdtmed[0->100]
-  Int_t   isxfld = gAlice->Field()->Integ() ;
-  Float_t sxmgmx = gAlice->Field()->Max() ;
+  Int_t   isxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ() ;
+  Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max() ;
 
   // The scintillator of the calorimeter made of PBW04                              -> idtmed[699]
   AliMedium(0, "PHOS Xtal    $", 0, 1,
index 027ab17..8533ed5 100644 (file)
@@ -129,9 +129,7 @@ void Config()
     //
     //gener->SetVertexSmear(perTrack); 
     // Field (L3 0.4 T)
-    AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., 1);
-    gAlice->SetField(field);    
-
+    TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 2, 1., 1., 10., AliMagF::k5kG));
 
     Int_t   iABSO  =  0;
     Int_t   iDIPO  =  0;
index a22bd90..e775cb0 100644 (file)
@@ -17,7 +17,7 @@
 #include "PYTHIA6/AliDecayerPythia.h"
 #include "EVGEN/AliGenCocktail.h"
 #include "EVGEN/AliGenHIJINGpara.h"
-#include "STEER/AliMagFMaps.h"
+#include "STEER/AliMagF.h"
 #include "STRUCT/AliBODY.h"
 #include "STRUCT/AliMAG.h"
 #include "STRUCT/AliABSOv0.h"
@@ -158,9 +158,7 @@ void Config()
     //
     //gener->SetVertexSmear(perTrack); 
     // Field (L3 0.4 T)
-    AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., 1);
-    gAlice->SetField(field);    
-
+    TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 2, 1., 1., 10., AliMagF::k5kG));
 
     Int_t   iABSO  =  0;
     Int_t   iDIPO  =  0;
index 76c9aae..5c856cb 100644 (file)
@@ -11,16 +11,10 @@ enum PprRad_t
     kGluonRadiation, kNoGluonRadiation
 };
                                                                                 
-enum PprMag_t
-{
-    k2kG, k4kG, k5kG
-};
-                                                                                
-                                                                                
 // This part for configuration
 static PprGeo_t sgeo = kNoHoles;
 static PprRad_t srad = kGluonRadiation;
-static PprMag_t smag = k5kG;
+static AliMagF::BMap_t smag = AliMagF::k5kG;
                                                                                 
 // Comment line
 static TString  comment;
@@ -146,11 +140,9 @@ void Config()
  
 
 
-     if (smag == k2kG) {
+    if (smag == AliMagF::k2kG) {
         comment = comment.Append(" | L3 field 0.2 T");
-    } else if (smag == k4kG) {
-        comment = comment.Append(" | L3 field 0.4 T");
-    } else if (smag == k5kG) {
+    } else if (smag == AliMagF::k5kG) {
         comment = comment.Append(" | L3 field 0.5 T");
     }
                                                                                 
@@ -175,12 +167,12 @@ void Config()
                                                                                 
                                                                                 
 // Field (L3 0.4 T)
-//    AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., smag);
     //Zero magnetic field
-    AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 0., 10., smag);
+    AliMagF* field = new AliMagF("Maps","Maps", 2, 0., 1., 10., AliMagF::k5kG);
     field->SetL3ConstField(0); //Using const. field in the barrel
+    TGeoGlobalMagField::Instance()->SetField(field);
+
     rl->CdGAFile();
-    gAlice->SetField(field);
  
   Int_t   iABSO  = 0; 
   Int_t   iCRT   = 0; 
index 37df54f..88ef9c7 100644 (file)
@@ -130,9 +130,7 @@ void Config()
     //
     //gener->SetVertexSmear(perTrack); 
     // Field (L3 0.4 T)
-    AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., 1);
-    gAlice->SetField(field);    
-
+    TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 2, 1., 1., 10., AliMagF::k5kG));
 
     Int_t   iABSO  =  0;
     Int_t   iDIPO  =  0;
index b7f3289..2bbe0fa 100644 (file)
@@ -106,9 +106,7 @@ void Config()
     //
     //gener->SetVertexSmear(perTrack); 
     // Field (L3 0.4 T)
-    AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., 1);
-    gAlice->SetField(field);    
-
+    TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 2, 1., 1., 10., AliMagF::k5kG));
 
     Int_t   iABSO  =  0;
     Int_t   iDIPO  =  0;
index e660886..a3e3120 100644 (file)
@@ -10,9 +10,6 @@ void AliPMDRec()
   Int_t firstEvent = 0;
   Int_t lastEvent = 1;
 
-  AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., 1);
-  AliTracker::SetFieldMap(field,1);
-
   AliReconstruction rec;
   rec.SetRunReconstruction("PMD");
   rec.SetRunVertexFinder(kFALSE);
index 5ee8ce8..1b8e5c9 100644 (file)
 ///////////////////////////////////////////////////////////////////////////////
 ////
 
-#include "Riostream.h"
+#include <Riostream.h>
+#include <TGeoGlobalMagField.h>
 #include <TVirtualMC.h>
+
 #include "AliConst.h" 
 #include "AliMagF.h" 
 #include "AliPMDv0.h"
@@ -776,8 +778,8 @@ void AliPMDv0::CreateMaterials()
   
   //  cout << " Inside create materials " << endl;
 
-  Int_t isxfld = gAlice->Field()->Integ();
-  Float_t sxmgmx = gAlice->Field()->Max();
+  Int_t isxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+  Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
   
   // --- Define the various materials for GEANT --- 
 
index 71e8c15..cec2880 100644 (file)
@@ -29,7 +29,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 ////
 
-#include "Riostream.h"
+#include <Riostream.h>
+#include <TGeoGlobalMagField.h>
 #include <TVirtualMC.h>
 
 #include "AliConst.h" 
@@ -1334,8 +1335,8 @@ void AliPMDv1::CreateMaterials()
   //
   //  cout << " Inside create materials " << endl;
 
-  Int_t isxfld = gAlice->Field()->Integ();
-  Float_t sxmgmx = gAlice->Field()->Max();
+  Int_t isxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+  Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
   
   // --- Define the various materials for GEANT --- 
 
index c6fce8d..afc9e14 100644 (file)
@@ -29,7 +29,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 ////
 
-#include "Riostream.h"
+#include <Riostream.h>
+#include <TGeoGlobalMagField.h>
 #include <TVirtualMC.h>
 
 #include "AliConst.h" 
@@ -1356,8 +1357,8 @@ void AliPMDv2008::CreateMaterials()
   //
   //  cout << " Inside create materials " << endl;
 
-  Int_t isxfld = gAlice->Field()->Integ();
-  Float_t sxmgmx = gAlice->Field()->Max();
+  Int_t isxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+  Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
   
   // --- Define the various materials for GEANT --- 
 
index 1f0ca26..2afbed4 100644 (file)
@@ -575,8 +575,8 @@ void AliPMDv3::CreateMaterials()
   Float_t wsteel[4] = { .715,.18,.1,.005 };
   
   Int_t *idtmed = fIdtmed->GetArray()-599;
-  Int_t isxfld = gAlice->Field()->Integ();
-  Float_t sxmgmx = gAlice->Field()->Max();
+  Int_t isxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+  Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
   
   // --- Define the various materials for GEANT --- 
   AliMaterial(1, "Pb    $", 207.19, 82., 11.35, .56, 18.5);
index 1c79035..9cce74d 100644 (file)
@@ -56,7 +56,7 @@
 //\r
 #include "AliMathBase.h"\r
 #include "AliTreeDraw.h" \r
-#include "AliMagFMaps.h" \r
+#include "AliMagF.h" \r
 #include "AliESDVertex.h" \r
 #include "AliExternalTrackParam.h" \r
 #include "AliTracker.h" \r
index 2c2da9f..f534222 100644 (file)
@@ -26,7 +26,7 @@ class TGraph;
 class TGeoManager; 
 class TString;
 class TStatToolkit; 
-class AliMagFMaps;
+class AliMagF;
 class AliESDVertex;
 
 #include "TNamed.h"
index f9f1a36..eb3bb43 100644 (file)
@@ -41,7 +41,7 @@
 #include "AliESDEvent.h"\r
 #include "AliESDInputHandler.h"\r
 #include "AliESDVertex.h"\r
-#include "AliMagFMaps.h"\r
+#include "AliMagF.h"\r
 #include "AliTracker.h"\r
 #include "AliGeomManager.h"\r
 \r
index 11b0a3d..1c2ed35 100644 (file)
@@ -8,7 +8,7 @@
 //------------------------------------------------------------------------------
 
 class AliComparisonObject;
-class AliMagFMaps;
+class AliMagF;
 class TList;
 
 #include "AliAnalysisTask.h"
index 57c61ec..319c5e8 100644 (file)
@@ -319,8 +319,6 @@ AliRecInfoMaker::AliRecInfoMaker(const char* fnGenTracks,
     fEventNr = nall-firstEvent;
     cerr<<"restricted number of events availaible"<<endl;
   }
-  AliMagF * magf = gAlice->Field();
-  AliTracker::SetFieldMap(magf,0);
   TGeoManager::Import("geometry.root");
 
 
index 0937503..548d6ba 100644 (file)
@@ -3,9 +3,7 @@ void RunAliComparisonTask(TChain  *chain = 0, Bool_t aProof = kTRUE, Bool_t aDeb
   //
   // Set mag field map (needed to propagate track to the DCA)
   //
-  Int_t magField = 2;  // 0 - 0.2 T, 1 = 0.4 T, 2  - 0.5 T
-  magFMap = new AliMagFMaps("Maps","Maps", 2, 1., 10., magField);
-  AliTracker::SetFieldMap(magFMap,kFALSE);
+  TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 2, 1., 1., 10., AliMagF::k5kG));
 
   //
   // Create global cuts objects 
@@ -80,8 +78,6 @@ void RunAliComparisonTask(TChain  *chain = 0, Bool_t aProof = kTRUE, Bool_t aDeb
   // Create, add task
   task = new AliComparisonTask;
 
-  //task->SetMagField(magField);
-
   task->AddComparisonObject( pCompRes );
   task->AddComparisonObject( pCompEff );
   task->AddComparisonObject( pCompDEdx );
index 937aed8..7e810be 100644 (file)
@@ -35,7 +35,7 @@
 #include "AliESDEvent.h"
 #include "AliESDMuonTrack.h"
 #include "AliESDInputHandler.h"
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 #include "AliTracker.h"
 #include "AliAnalysisManager.h"
 
@@ -209,16 +209,10 @@ void AliAnalysisTaskMuonTrackingEff::CreateOutputObjects()
 void AliAnalysisTaskMuonTrackingEff::ConnectInputData(Option_t */*option*/)
 
 {
-//Set mag field; waiting for mag field in CDB 
-//-------------------------------------------
-    AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-    AliTracker::SetFieldMap(field, kFALSE);
-    
-//Set Field Map for track extrapolation
-//-------------------------------------
-    AliMUONTrackExtrap::SetField(AliTracker::GetFieldMap());
+  //Set Field Map for track extrapolation
+  AliMUONTrackExtrap::SetField();
 
-//Connect input
+  //Connect input
     AliESDInputHandler* esdHandler = (AliESDInputHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
     if (!esdHandler)
     {
index c4a2bda..7555104 100644 (file)
@@ -4,7 +4,7 @@
 #include "TIterator.h"
 
 #include "AliStack.h"
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
 #include "AliTracker.h"
 
 #include "AliAnalysisTask.h"
@@ -68,14 +68,7 @@ void AliAnalysisTaskRecoCheck::ConnectInputData(Option_t *)
   }
   
   // calculate the filed map in the L3 magnet using the current value
-  AliMagFMaps* field = 0x0;
-  if (fL3Current == 30000.0) {
-    field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
-  }
-
-  // set the tracker field map
-  AliTracker::SetFieldMap(field, kFALSE);
-  AliMUONTrackExtrap::SetField(AliTracker::GetFieldMap());
+  AliMUONTrackExtrap::SetField();
 
 }
 
index 7a3e123..d5a6505 100644 (file)
@@ -36,7 +36,6 @@
 
 #include "AliRawReaderRoot.h"
 #include <AliMagF.h>
-#include <AliMagFMaps.h>
 #include <AliKalmanTrack.h>
 #include <AliITSgeom.h>
 #include <AliESDVertex.h>
@@ -65,7 +64,7 @@ fITSgeom(NULL)
     AliError("HLT initialization failed!");
 
   // Init magnetic field
-  AliMagF* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., AliMagFMaps::k5kG);
+  AliMagF* field = (AliMagF*)TGeoGlobalMagField::Instance();
   AliTracker::SetFieldMap(field,kTRUE);
   fPtmin = 0.1*AliHLTTransform::GetSolenoidField();
 
index f87ecf7..a03d69d 100644 (file)
@@ -169,7 +169,6 @@ TProfile prof("prof","prof",10,0.5,5);
 #include "AliTPCParamSR.h"
 #include "AliTracker.h"
 #include "AliComplexCluster.h"
-#include "AliMagF.h"
 #include "AliESDEvent.h"
 #include "AliESDtrack.h"
 #include "AliITStrackMI.h"
@@ -838,8 +837,6 @@ ESDCmpTr::ESDCmpTr(const char* fnGenTracks,
     fEventNr = nall-firstEvent;
     cerr<<"restricted number of events availaible"<<endl;
   }
-  AliMagF * magf = gAlice->Field();
-  AliTracker::SetFieldMap(magf,0);
 
 }
 
index 9a3df4d..1750046 100644 (file)
@@ -25,6 +25,7 @@
 #include <TArrayI.h>
 #include <TClonesArray.h>
 #include <TFile.h>
+#include <TGeoGlobalMagField.h>
 #include <TGeoManager.h>
 #include <TParticle.h>
 #include <TROOT.h>
@@ -693,13 +694,6 @@ void AliMC::FinishEvent()
 }
 
 //_______________________________________________________________________
-void AliMC::Field(const Double_t* x, Double_t* b) const
-{
-  // Calculates field "b" at point "x"
-    gAlice->Field(x,b);
-}
-    
-//_______________________________________________________________________
 void AliMC::Init()
 {
   // MC initialization
@@ -1132,7 +1126,7 @@ void AliMC::FixParticleDecaytime()
     // Transverse velocity 
     Double_t vt    = p.Pt() / p.E();
     
-    if ((b = gAlice->Field()->SolenoidField()) > 0.) {     // [kG]
+    if ((b = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->SolenoidField()) > 0.) {     // [kG]
 
        // Radius of helix
        
index 3e434f8..f5de169 100644 (file)
@@ -49,7 +49,6 @@ public:
    virtual  void  FinishEvent();
    virtual  Double_t  TrackingZmax() const {return fTrZmax;}
    virtual  Double_t  TrackingRmax() const {return fTrRmax;}
-   virtual  void Field(const Double_t* x, Double_t* b) const;
    virtual  Int_t   DetFromMate(Int_t i) const { return (*fImedia)[i];}
 //
 
diff --git a/STEER/AliMagFC.cxx b/STEER/AliMagFC.cxx
deleted file mode 100644 (file)
index 0cd875b..0000000
+++ /dev/null
@@ -1,421 +0,0 @@
-/**************************************************************************
- * 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$ */
-
-//-------------------------------------------------------------------------
-//     Constant magnetic field class
-//     Used by AliRun class
-//     Author:
-//-------------------------------------------------------------------------
-
-#include <stdlib.h>
-
-#include "AliLog.h"
-#include "AliMagFC.h"
-
-ClassImp(AliMagFC)
-
-//________________________________________
-AliMagFC::AliMagFC()
-    :AliMagF(),
-    fCompensator(kFALSE),
-    fBeamType(kBeamTypepp),
-    fBeamEnergy(0),
-    fQuadGradient(0),
-    fDipoleField(0),
-    fCCorrField(0), 
-    fACorr1Field(0),
-    fACorr2Field(0)
-{
-  // 
-  // Default constructor
-  //
-}
-
-//________________________________________
-AliMagFC::AliMagFC(const char *name, const char *title, Int_t integ, 
-                  Float_t factor, Float_t fmax)
-    : AliMagF(name,title,integ,factor,fmax),
-    fCompensator(kFALSE),
-    fBeamType(kBeamTypepp), 
-    fBeamEnergy(7000.),
-    fQuadGradient(0),
-    fDipoleField(0),
-    fCCorrField(0), 
-    fACorr1Field(0),
-    fACorr2Field(0)
-
-{
-  // 
-  // Standard constructor
-  //
-  fType = kConst;
-  fMap  = 1;
-  
-}
-
-//________________________________________
-void AliMagFC::Field(const float *x, float *b) const
-{
-  //
-  // Method to return the field in a point
-  //
-  b[0]=b[1]=b[2]=0;
-  if(fMap==1) {
-    if(TMath::Abs(x[2])<700 && x[0]*x[0]+(x[1]+30)*(x[1]+30) < 560*560) {
-      b[2]=2;
-    } 
-    else {
-      if(-725 >= x[2] && x[2] >= -1225 ){
-       Float_t dz = TMath::Abs(-975-x[2])*0.01;
-       b[0] = - (1-0.1*dz*dz)*7;
-       if(fFactor!=1) {
-           b[0]*=fFactor;
-           b[1]*=fFactor;
-           b[2]*=fFactor;
-       }
-      }
-      else {
-         ZDCField(x, b);
-      }
-    }
-
-  } 
-  else {
-      AliFatal(Form("Invalid field map for constant field %d",fMap));
-  }
-}
-//________________________________________
-void AliMagFC::Field(const double *x, double *b) const
-{
-  //
-  // Method to return the field in a point
-  //
-  b[0]=b[1]=b[2]=0;
-  if(fMap==1) {
-    if(TMath::Abs(x[2])<700 && x[0]*x[0]+(x[1]+30)*(x[1]+30) < 560*560) {
-      b[2]=2;
-    } 
-    else {
-      if(-725 >= x[2] && x[2] >= -1225 ){
-       Float_t dz = TMath::Abs(-975-x[2])*0.01;
-       b[0] = - (1-0.1*dz*dz)*7;
-       if(fFactor!=1) {
-           b[0]*=fFactor;
-           b[1]*=fFactor;
-           b[2]*=fFactor;
-       }
-      }
-      else {
-         ZDCField(x, b);
-      }
-    }
-
-  } 
-  else {
-      AliFatal(Form("Invalid field map for constant field %d",fMap));
-  }
-}
-
-//___________________________________________________
-void AliMagFC::ZDCField(const float *x, float *b) const
-{
-  // ---- This is the ZDC part
-  
-  float rad2 = x[0] * x[0] + x[1] * x[1];
-  static Bool_t init = kFALSE;
-
-  if (! init) {
-      init = kTRUE;
-      //////////////////////////////////////////////////////////////////////
-      // ---- Magnetic field values (according to beam type and energy) ----
-      if(fBeamType==kBeamTypepp && fBeamEnergy == 5000.){
-         // p-p @ 5+5 TeV
-         fQuadGradient = 15.7145;
-         fDipoleField  = 27.0558;
-         // SIDE C
-         fCCorrField   = 9.7017;
-         // SIDE A
-         fACorr1Field  = -13.2143;
-         fACorr2Field  = -11.9909;
-      } else if (fBeamType == kBeamTypepp && fBeamEnergy == 450.) {
-         // p-p 0.45+0.45 TeV
-         Float_t const kEnergyRatio = fBeamEnergy / 7000.;
-         
-         fQuadGradient = 22.0002 * kEnergyRatio;
-         fDipoleField  = 37.8781 * kEnergyRatio;
-         // SIDE C
-         fCCorrField   =  9.6908;
-         // SIDE A
-         fACorr1Field  = -13.2014;
-         fACorr2Field  = -9.6908;
-      } else if ((fBeamType == kBeamTypepp && fBeamEnergy == 7000.) ||
-                (fBeamType == kBeamTypeAA))
-      {
-         // Pb-Pb @ 2.7+2.7 TeV or p-p @ 7+7 TeV
-         fQuadGradient = 22.0002;
-         fDipoleField  = 37.8781;
-         // SIDE C
-         fCCorrField   = 9.6908;
-         // SIDE A
-         fACorr1Field  = -13.2014;
-         fACorr2Field  = -9.6908;
-      }
-  }
-  
-  
-  // SIDE C **************************************************
-  if(x[2]<0.){  
-    if(x[2] < kCCorrBegin && x[2] > kCCorrEnd && rad2 < kCCorrSqRadius){
-       if (fFactor != 0.) {
-           b[0] = fCCorrField;
-           b[1] = 0.;
-           b[2] = 0.;
-       } 
-    }
-    else if(x[2] < kCQ1Begin && x[2] > kCQ1End && rad2 < kCQ1SqRadius){
-       b[0] = fQuadGradient*x[1];
-       b[1] = fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] < kCQ2Begin && x[2] > kCQ2End && rad2 < kCQ2SqRadius){
-       b[0] = -fQuadGradient*x[1];
-       b[1] = -fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] < kCQ3Begin && x[2] > kCQ3End && rad2 < kCQ3SqRadius){
-       b[0] = -fQuadGradient*x[1];
-       b[1] = -fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] < kCQ4Begin && x[2] > kCQ4End && rad2 < kCQ4SqRadius){
-       b[0] = fQuadGradient*x[1];
-       b[1] = fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] < kCD1Begin && x[2] > kCD1End && rad2 < kCD1SqRadius){
-       b[1] = fDipoleField;
-       b[2] = 0.;
-       b[2] = 0.;
-    }
-    else if(x[2] < kCD2Begin && x[2] > kCD2End){
-       if(((x[0]-kCD2XCentre1)*(x[0]-kCD2XCentre1)+(x[1]*x[1]))<kCD2SqRadius
-          || ((x[0]-kCD2XCentre2)*(x[0]-kCD2XCentre2)+(x[1]*x[1]))<kCD2SqRadius){
-         b[1] = -fDipoleField;
-         b[2] = 0.;
-         b[2] = 0.;
-       }
-    }
-  }
-  
-  // SIDE A **************************************************
-  else{        
-    if(fCompensator && (x[2] > kACorr1Begin && x[2] < kACorr1End) && rad2 < kCCorr1SqRadius) {
-      // Compensator magnet at z = 1075 m 
-       if (fFactor != 0.) {
-           b[0] = fACorr1Field;
-           b[1] = 0.;
-           b[2] = 0.;
-       }
-       return;
-    }
-    
-    if(x[2] > kACorr2Begin && x[2] < kACorr2End && rad2 < kCCorr2SqRadius){
-       if (fFactor != 0.) {
-           b[0] = fACorr2Field;
-           b[1] = 0.;
-           b[2] = 0.;
-       }
-    }          
-    else if(x[2] > kAQ1Begin && x[2] < kAQ1End && rad2 < kAQ1SqRadius){
-       // First quadrupole of inner triplet de-focussing in x-direction
-       b[0] = -fQuadGradient*x[1];
-       b[1] = -fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] > kAQ2Begin && x[2] < kAQ2End && rad2 < kAQ2SqRadius){
-       b[0] = fQuadGradient*x[1];
-       b[1] = fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] > kAQ3Begin && x[2] < kAQ3End && rad2 < kAQ3SqRadius){
-       b[0] = fQuadGradient*x[1];
-       b[1] = fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] > kAQ4Begin && x[2] < kAQ4End && rad2 < kAQ4SqRadius){
-       b[0] = -fQuadGradient*x[1];
-       b[1] = -fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] > kAD1Begin && x[2] < kAD1End && rad2 < kAD1SqRadius){
-       b[0] = 0.;
-       b[1] = -fDipoleField;
-       b[2] = 0.;
-    }
-    else if(x[2] > kAD2Begin && x[2] < kAD2End){
-       if(((x[0]-kAD2XCentre1)*(x[0]-kAD2XCentre1)+(x[1]*x[1])) < kAD2SqRadius
-          || ((x[0]-kAD2XCentre2)*(x[0]-kAD2XCentre2)+(x[1]*x[1])) < kAD2SqRadius){
-           b[1] = fDipoleField;
-       }
-    }
-  }
-}
-
-void AliMagFC::ZDCField(const double *x, double *b) const
-{
-  // ---- This is the ZDC part
-  
-  double rad2 = x[0] * x[0] + x[1] * x[1];
-  static Bool_t init = kFALSE;
-
-  if (! init) {
-      init = kTRUE;
-      //////////////////////////////////////////////////////////////////////
-      // ---- Magnetic field values (according to beam type and energy) ----
-      if(fBeamType==kBeamTypepp && fBeamEnergy == 5000.){
-         // p-p @ 5+5 TeV
-         fQuadGradient = 15.7145;
-         fDipoleField  = 27.0558;
-         // SIDE C
-         fCCorrField   = 9.7017;
-         // SIDE A
-         fACorr1Field  = -13.2143;
-         fACorr2Field  = -11.9909;
-      } else if (fBeamType == kBeamTypepp && fBeamEnergy == 450.) {
-         // p-p 0.45+0.45 TeV
-         Float_t const kEnergyRatio = fBeamEnergy / 7000.;
-         
-         fQuadGradient = 22.0002 * kEnergyRatio;
-         fDipoleField  = 37.8781 * kEnergyRatio;
-         // SIDE C
-         fCCorrField   =  9.6908;
-         // SIDE A
-         fACorr1Field  = -13.2014;
-         fACorr2Field  = -9.6908;
-      } else if ((fBeamType == kBeamTypepp && fBeamEnergy == 7000.) ||
-                (fBeamType == kBeamTypeAA))
-      {
-         // Pb-Pb @ 2.7+2.7 TeV or p-p @ 7+7 TeV
-         fQuadGradient = 22.0002;
-         fDipoleField  = 37.8781;
-         // SIDE C
-         fCCorrField   = 9.6908;
-         // SIDE A
-         fACorr1Field  = -13.2014;
-         fACorr2Field  = -9.6908;
-      }
-  }
-  
-  
-  // SIDE C **************************************************
-  if(x[2]<0.){  
-    if(x[2] < kCCorrBegin && x[2] > kCCorrEnd && rad2 < kCCorrSqRadius){
-       if (fFactor != 0.) {
-           b[0] = fCCorrField;
-           b[1] = 0.;
-           b[2] = 0.;
-       } 
-    }
-    else if(x[2] < kCQ1Begin && x[2] > kCQ1End && rad2 < kCQ1SqRadius){
-       b[0] = fQuadGradient*x[1];
-       b[1] = fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] < kCQ2Begin && x[2] > kCQ2End && rad2 < kCQ2SqRadius){
-       b[0] = -fQuadGradient*x[1];
-       b[1] = -fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] < kCQ3Begin && x[2] > kCQ3End && rad2 < kCQ3SqRadius){
-       b[0] = -fQuadGradient*x[1];
-       b[1] = -fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] < kCQ4Begin && x[2] > kCQ4End && rad2 < kCQ4SqRadius){
-       b[0] = fQuadGradient*x[1];
-       b[1] = fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] < kCD1Begin && x[2] > kCD1End && rad2 < kCD1SqRadius){
-       b[1] = fDipoleField;
-       b[2] = 0.;
-       b[2] = 0.;
-    }
-    else if(x[2] < kCD2Begin && x[2] > kCD2End){
-       if(((x[0]-kCD2XCentre1)*(x[0]-kCD2XCentre1)+(x[1]*x[1]))<kCD2SqRadius
-          || ((x[0]-kCD2XCentre2)*(x[0]-kCD2XCentre2)+(x[1]*x[1]))<kCD2SqRadius){
-         b[1] = -fDipoleField;
-         b[2] = 0.;
-         b[2] = 0.;
-       }
-    }
-  }
-  
-  // SIDE A **************************************************
-  else{        
-    if(fCompensator && (x[2] > kACorr1Begin && x[2] < kACorr1End) && rad2 < kCCorr1SqRadius) {
-      // Compensator magnet at z = 1075 m 
-       if (fFactor != 0.) {
-           b[0] = fACorr1Field;
-           b[1] = 0.;
-           b[2] = 0.;
-       }
-       return;
-    }
-    
-    if(x[2] > kACorr2Begin && x[2] < kACorr2End && rad2 < kCCorr2SqRadius){
-       if (fFactor != 0.) {
-           b[0] = fACorr2Field;
-           b[1] = 0.;
-           b[2] = 0.;
-       }
-    }          
-    else if(x[2] > kAQ1Begin && x[2] < kAQ1End && rad2 < kAQ1SqRadius){
-       // First quadrupole of inner triplet de-focussing in x-direction
-       b[0] = -fQuadGradient*x[1];
-       b[1] = -fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] > kAQ2Begin && x[2] < kAQ2End && rad2 < kAQ2SqRadius){
-       b[0] = fQuadGradient*x[1];
-       b[1] = fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] > kAQ3Begin && x[2] < kAQ3End && rad2 < kAQ3SqRadius){
-       b[0] = fQuadGradient*x[1];
-       b[1] = fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] > kAQ4Begin && x[2] < kAQ4End && rad2 < kAQ4SqRadius){
-       b[0] = -fQuadGradient*x[1];
-       b[1] = -fQuadGradient*x[0];
-       b[2] = 0.;
-    }
-    else if(x[2] > kAD1Begin && x[2] < kAD1End && rad2 < kAD1SqRadius){
-       b[0] = 0.;
-       b[1] = -fDipoleField;
-       b[2] = 0.;
-    }
-    else if(x[2] > kAD2Begin && x[2] < kAD2End){
-       if(((x[0]-kAD2XCentre1)*(x[0]-kAD2XCentre1)+(x[1]*x[1])) < kAD2SqRadius
-          || ((x[0]-kAD2XCentre2)*(x[0]-kAD2XCentre2)+(x[1]*x[1])) < kAD2SqRadius){
-           b[1] = fDipoleField;
-       }
-    }
-  }
-}
-
diff --git a/STEER/AliMagFC.h b/STEER/AliMagFC.h
deleted file mode 100644 (file)
index d17e0de..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-#ifndef ALIMAGFC_H
-#define ALIMAGFC_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
-*See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-
-//-------------------------------------------------------------------------
-//     Constant magnetic field class
-//     Used by AliRun class
-//     Author:
-//-------------------------------------------------------------------------
-
-#include "AliMagF.h"
-
-enum BeamType_t {kBeamTypeAA, kBeamTypepp};
-class AliMagFC  : public AliMagF
-{
-  //Alice Constant Magnetic Field
-
-public:
-  AliMagFC();
-  AliMagFC(const char *name, const char *title, Int_t integ, 
-          Float_t factor, Float_t fmax);
-  virtual ~AliMagFC(){}
-  virtual void Field(const float *x, float *b)      const;
-  virtual void Field(const double *x, double *b)    const;
-  virtual void ReadField() {}
-  virtual void ZDCField(const float *x, float *b)   const;
-  virtual void ZDCField(const double *x, double *b) const;
-  virtual void SetBeamType(BeamType_t type)      {fBeamType    = type;}
-  virtual void SetBeamEnergy(Float_t energy)     {fBeamEnergy  = energy;}
-  virtual void SetCompensatorMagnet(Bool_t flag) {fCompensator = flag;}
-
-private:
-  Bool_t     fCompensator; // Flag for compensator magnetic field (kTrue -> ON)
-  BeamType_t fBeamType;    // Beam type: A-A (fBeamType=0) or p-p (fBeamType=1)
-  Float_t    fBeamEnergy;  // Beam energy in GeV
-  mutable Float_t    fQuadGradient;// Gradient field for inner triplet quadrupoles
-  mutable Float_t    fDipoleField; // Field value for D1 and D2 dipoles
-  mutable Float_t    fCCorrField;  // Side C 2nd compensator field
-  mutable Float_t    fACorr1Field; // Side A 1st compensator field 
-  mutable Float_t    fACorr2Field; // Side A 2nd compensator field
-  
-  ClassDef(AliMagFC,3)  //Class for all Alice Constant MagField 
-};
-
-
-// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  ZDC part  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-// ************************ LHC optics v6.5 *****************************
-// ---- Position of the magnetic elements of LHC beam optics ----
-// -> SIDE C
-static const Float_t kCCorrBegin = -1972.5, kCCorrEnd = kCCorrBegin - 153., kCCorrSqRadius = 4.5*4.5;
-//
-static const Float_t kCTripletBegin  = -2296.5;
-static const Float_t kCQ1Begin = kCTripletBegin,        kCQ1End = kCQ1Begin-637., kCQ1SqRadius = 3.5*3.5;
-static const Float_t kCQ2Begin = kCTripletBegin-908.5,  kCQ2End = kCQ2Begin-550., kCQ2SqRadius = 3.5*3.5;
-static const Float_t kCQ3Begin = kCTripletBegin-1558.5, kCQ3End = kCQ3Begin-550., kCQ3SqRadius = 3.5*3.5;
-static const Float_t kCQ4Begin = kCTripletBegin-2400.,  kCQ4End = kCQ4Begin-637., kCQ4SqRadius = 3.5*3.5;
-//
-static const Float_t kCD1Begin = -5838.3,  kCD1End = kCD1Begin-945., kCD1SqRadius = 4.5*4.5;
-static const Float_t kCD2Begin = -12167.8, kCD2End = kCD2Begin-945., kCD2SqRadius = 4.5*4.5;
-static const Float_t kCD2XCentre1 = -9.7;
-static const Float_t kCD2XCentre2 =  9.7;
-//
-// -> SIDE A
-// NB -> kACorr1Begin = 919. to be checked
-static const Float_t kACorr1Begin = 919., kACorr1End = kACorr1Begin+260., kCCorr1SqRadius = 4.*4.;
-static const Float_t kACorr2Begin = 1972.5, kACorr2End = kACorr2Begin+153., kCCorr2SqRadius = 4.5*4.5;
-static const Float_t kATripletBegin  = 2296.5;
-static const Float_t kAQ1Begin = kATripletBegin,       kAQ1End = kAQ1Begin+637., kAQ1SqRadius = 3.5*3.5;
-static const Float_t kAQ2Begin = kATripletBegin+908.5,  kAQ2End = kAQ2Begin+550., kAQ2SqRadius = 3.5*3.5;
-static const Float_t kAQ3Begin = kATripletBegin+1558.5, kAQ3End = kAQ3Begin+550., kAQ3SqRadius = 3.5*3.5;
-static const Float_t kAQ4Begin = kATripletBegin+2400.,  kAQ4End = kAQ4Begin+637., kAQ4SqRadius = 3.5*3.5;
-//
-static const Float_t kAD1Begin = 5838.3,  kAD1End = kAD1Begin+945., kAD1SqRadius = 3.375*3.375;
-static const Float_t kAD2Begin = 12167.8, kAD2End = kAD2Begin+945., kAD2SqRadius = 3.75*3.75;
-static const Float_t kAD2XCentre1 = -9.4;
-static const Float_t kAD2XCentre2 =  9.4;
-
-// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  ZDC part  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-#endif
-
diff --git a/STEER/AliMagFCM.cxx b/STEER/AliMagFCM.cxx
deleted file mode 100644 (file)
index e3b8759..0000000
+++ /dev/null
@@ -1,362 +0,0 @@
-/**************************************************************************
- * 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$ */
-
-//-----------------------------------------------------------------------
-//  Class for Alice magnetic field with constant mesh
-//  Used in the configuration macros (macros/Config.C, etc.)
-//  Author:
-//-----------------------------------------------------------------------
-
-#include "TSystem.h"
-
-#include "TVector.h"
-
-#include "AliLog.h"
-#include "AliMagFCM.h"
-
-ClassImp(AliMagFCM)
-
-//_______________________________________________________________________
-AliMagFCM::AliMagFCM():
-  fXbeg(0),
-  fYbeg(0),
-  fZbeg(0),
-  fXdel(0),
-  fYdel(0),
-  fZdel(0),
-  fSolenoid(0),
-  fXdeli(0),
-  fYdeli(0),
-  fZdeli(0),
-  fXn(0),
-  fYn(0),
-  fZn(0),
-  fB(0)
-{
-  //
-  // Standard constructor
-  //
-  fType = kConMesh;
-  fMap  = 2;
-  SetSolenoidField();
-}
-
-//_______________________________________________________________________
-AliMagFCM::AliMagFCM(const char *name, const char *title, Int_t integ, 
-                     Float_t factor, Float_t fmax):
-  AliMagFC(name,title,integ,factor,fmax),
-  fXbeg(0),
-  fYbeg(0),
-  fZbeg(0),
-  fXdel(0),
-  fYdel(0),
-  fZdel(0),
-  fSolenoid(0),
-  fXdeli(0),
-  fYdeli(0),
-  fZdeli(0),
-  fXn(0),
-  fYn(0),
-  fZn(0),
-  fB(0)
-{
-  //
-  // Standard constructor
-  //
-  fType = kConMesh;
-  fMap  = 2;
-  SetSolenoidField();
-
-  AliDebug(1, Form(
-     "Constant Mesh Field %s created: map= %d, factor= %f, file= %s",
-        fName.Data(), fMap, factor,fTitle.Data()));
-}
-
-//_______________________________________________________________________
-AliMagFCM::AliMagFCM(const AliMagFCM &magf):
-  AliMagFC(magf),
-  fXbeg(0),
-  fYbeg(0),
-  fZbeg(0),
-  fXdel(0),
-  fYdel(0),
-  fZdel(0),
-  fSolenoid(0),
-  fXdeli(0),
-  fYdeli(0),
-  fZdeli(0),
-  fXn(0),
-  fYn(0),
-  fZn(0),
-  fB(0)
-{
-  //
-  // Copy constructor
-  //
-  magf.Copy(*this);
-}
-
-//_______________________________________________________________________
-void AliMagFCM::Field(const float *x, float *b) const
-{
-  //
-  // Method to calculate the magnetic field
-  //
-  Float_t ratx, raty, ratz, hix, hiy, hiz, ratx1, raty1, ratz1, 
-    bhyhz, bhylz, blyhz, blylz, bhz, blz, xl[3];
-  const Float_t kone=1;
-  Int_t ix, iy, iz;
-  
-  // --- find the position in the grid ---
-  
-  b[0]=b[1]=b[2]=0;
-
-  
-  if(-700 < -x[2] && -x[2] < fZbeg && x[0] * x[0] +(x[1]+30)*(x[1]+30) < 560*560) {
-    b[2]=  fSolenoid;
-  } else  {
-      // The field map used here was calculated in a coordinate system where the muon arm is at z > 0
-      // Transfom x -> -x and z -> -z 
-      Float_t xm = - x[0];
-      Float_t ym =   x[1];
-      Float_t zm = - x[2];
-      Bool_t infield=(fZbeg <= zm  && zm < fZbeg+fZdel*(fZn-1)
-                     &&  ( fXbeg <= TMath::Abs(xm) && TMath::Abs(xm) < fXbeg+fXdel*(fXn-1) )
-                     &&  ( fYbeg <= TMath::Abs(ym) && TMath::Abs(ym) < fYbeg+fYdel*(fYn-1) ));
-    if(infield) {
-      xl[0]=TMath::Abs(xm)-fXbeg;
-      xl[1]=TMath::Abs(ym)-fYbeg;
-      xl[2]=zm-fZbeg;
-      
-      // --- start with x
-      
-      hix=xl[0]*fXdeli;
-      ratx=hix-int(hix);
-      ix=int(hix);
-      
-      hiy=xl[1]*fYdeli;
-      raty=hiy-int(hiy);
-      iy=int(hiy);
-      
-      hiz=xl[2]*fZdeli;
-      ratz=hiz-int(hiz);
-      iz=int(hiz);
-      
-      if(fMap==2) {
-       // ... simple interpolation
-       ratx1=kone-ratx;
-       raty1=kone-raty;
-       ratz1=kone-ratz;
-       bhyhz = Bx(ix  ,iy+1,iz+1)*ratx1+Bx(ix+1,iy+1,iz+1)*ratx;
-       bhylz = Bx(ix  ,iy+1,iz  )*ratx1+Bx(ix+1,iy+1,iz  )*ratx;
-       blyhz = Bx(ix  ,iy  ,iz+1)*ratx1+Bx(ix+1,iy  ,iz+1)*ratx;
-       blylz = Bx(ix  ,iy  ,iz  )*ratx1+Bx(ix+1,iy  ,iz  )*ratx;
-       bhz   = blyhz             *raty1+bhyhz             *raty;
-       blz   = blylz             *raty1+bhylz             *raty;
-       b[0]  = blz               *ratz1+bhz               *ratz;
-       //
-       bhyhz = By(ix  ,iy+1,iz+1)*ratx1+By(ix+1,iy+1,iz+1)*ratx;
-       bhylz = By(ix  ,iy+1,iz  )*ratx1+By(ix+1,iy+1,iz  )*ratx;
-       blyhz = By(ix  ,iy  ,iz+1)*ratx1+By(ix+1,iy  ,iz+1)*ratx;
-       blylz = By(ix  ,iy  ,iz  )*ratx1+By(ix+1,iy  ,iz  )*ratx;
-       bhz   = blyhz             *raty1+bhyhz             *raty;
-       blz   = blylz             *raty1+bhylz             *raty;
-       b[1]  = blz               *ratz1+bhz               *ratz;
-       //
-       bhyhz = Bz(ix  ,iy+1,iz+1)*ratx1+Bz(ix+1,iy+1,iz+1)*ratx;
-       bhylz = Bz(ix  ,iy+1,iz  )*ratx1+Bz(ix+1,iy+1,iz  )*ratx;
-       blyhz = Bz(ix  ,iy  ,iz+1)*ratx1+Bz(ix+1,iy  ,iz+1)*ratx;
-       blylz = Bz(ix  ,iy  ,iz  )*ratx1+Bz(ix+1,iy  ,iz  )*ratx;
-       bhz   = blyhz             *raty1+bhyhz             *raty;
-       blz   = blylz             *raty1+bhylz             *raty;
-       b[2]  = blz               *ratz1+bhz               *ratz;
-       //printf("ratx,raty,ratz,b[0],b[1],b[2] %f %f %f %f %f %f\n",
-       //ratx,raty,ratz,b[0],b[1],b[2]);
-       //
-       // ... use the dipole symmetry
-       if (xm*ym < 0) b[1]=-b[1];
-       if (xm<0)      b[2]=-b[2];
-       b[0] = -b[0];
-       b[2] = -b[2];
-       
-      } else {
-       AliError(Form("Invalid field map for constant mesh %d",fMap));
-      }
-    } else {
-//This is the ZDC part
-       ZDCField(x,b);
-    }
-    
-    if(fFactor!=1) {
-       b[0]*=fFactor;
-       b[1]*=fFactor;
-       b[2]*=fFactor;
-    }
-  }
-}
-
-//_______________________________________________________________________
-void AliMagFCM::Field(const double *x, double *b) const
-{
-  //
-  // Method to calculate the magnetic field
-  //
-  Double_t ratx, raty, ratz, hix, hiy, hiz, ratx1, raty1, ratz1, 
-    bhyhz, bhylz, blyhz, blylz, bhz, blz, xl[3];
-  const Double_t kone=1;
-  Int_t ix, iy, iz;
-  
-  // --- find the position in the grid ---
-  
-  b[0]=b[1]=b[2]=0;
-
-  
-  if(-700 < -x[2] && -x[2] < fZbeg && x[0] * x[0] +(x[1]+30)*(x[1]+30) < 560*560) {
-    b[2]=  fSolenoid;
-  } else  {
-      // The field map used here was calculated in a coordinate system where the muon arm is at z > 0
-      // Transfom x -> -x and z -> -z 
-      Float_t xm = - x[0];
-      Float_t ym =   x[1];
-      Float_t zm = - x[2];
-      Bool_t infield=(fZbeg <= zm  && zm < fZbeg+fZdel*(fZn-1)
-                     &&  ( fXbeg <= TMath::Abs(xm) && TMath::Abs(xm) < fXbeg+fXdel*(fXn-1) )
-                     &&  ( fYbeg <= TMath::Abs(ym) && TMath::Abs(ym) < fYbeg+fYdel*(fYn-1) ));
-    if(infield) {
-      xl[0]=TMath::Abs(xm)-fXbeg;
-      xl[1]=TMath::Abs(ym)-fYbeg;
-      xl[2]=zm-fZbeg;
-      
-      // --- start with x
-      
-      hix=xl[0]*fXdeli;
-      ratx=hix-int(hix);
-      ix=int(hix);
-      
-      hiy=xl[1]*fYdeli;
-      raty=hiy-int(hiy);
-      iy=int(hiy);
-      
-      hiz=xl[2]*fZdeli;
-      ratz=hiz-int(hiz);
-      iz=int(hiz);
-      
-      if(fMap==2) {
-       // ... simple interpolation
-       ratx1=kone-ratx;
-       raty1=kone-raty;
-       ratz1=kone-ratz;
-       bhyhz = Bx(ix  ,iy+1,iz+1)*ratx1+Bx(ix+1,iy+1,iz+1)*ratx;
-       bhylz = Bx(ix  ,iy+1,iz  )*ratx1+Bx(ix+1,iy+1,iz  )*ratx;
-       blyhz = Bx(ix  ,iy  ,iz+1)*ratx1+Bx(ix+1,iy  ,iz+1)*ratx;
-       blylz = Bx(ix  ,iy  ,iz  )*ratx1+Bx(ix+1,iy  ,iz  )*ratx;
-       bhz   = blyhz             *raty1+bhyhz             *raty;
-       blz   = blylz             *raty1+bhylz             *raty;
-       b[0]  = blz               *ratz1+bhz               *ratz;
-       //
-       bhyhz = By(ix  ,iy+1,iz+1)*ratx1+By(ix+1,iy+1,iz+1)*ratx;
-       bhylz = By(ix  ,iy+1,iz  )*ratx1+By(ix+1,iy+1,iz  )*ratx;
-       blyhz = By(ix  ,iy  ,iz+1)*ratx1+By(ix+1,iy  ,iz+1)*ratx;
-       blylz = By(ix  ,iy  ,iz  )*ratx1+By(ix+1,iy  ,iz  )*ratx;
-       bhz   = blyhz             *raty1+bhyhz             *raty;
-       blz   = blylz             *raty1+bhylz             *raty;
-       b[1]  = blz               *ratz1+bhz               *ratz;
-       //
-       bhyhz = Bz(ix  ,iy+1,iz+1)*ratx1+Bz(ix+1,iy+1,iz+1)*ratx;
-       bhylz = Bz(ix  ,iy+1,iz  )*ratx1+Bz(ix+1,iy+1,iz  )*ratx;
-       blyhz = Bz(ix  ,iy  ,iz+1)*ratx1+Bz(ix+1,iy  ,iz+1)*ratx;
-       blylz = Bz(ix  ,iy  ,iz  )*ratx1+Bz(ix+1,iy  ,iz  )*ratx;
-       bhz   = blyhz             *raty1+bhyhz             *raty;
-       blz   = blylz             *raty1+bhylz             *raty;
-       b[2]  = blz               *ratz1+bhz               *ratz;
-       //printf("ratx,raty,ratz,b[0],b[1],b[2] %f %f %f %f %f %f\n",
-       //ratx,raty,ratz,b[0],b[1],b[2]);
-       //
-       // ... use the dipole symmetry
-       if (xm*ym < 0) b[1]=-b[1];
-       if (xm<0)      b[2]=-b[2];
-       b[0] = -b[0];
-       b[2] = -b[2];
-       
-      } else {
-       AliError(Form("Invalid field map for constant mesh %d",fMap));
-      }
-    } else {
-//This is the ZDC part
-       ZDCField(x,b);
-    }
-    
-    if(fFactor!=1) {
-       b[0]*=fFactor;
-       b[1]*=fFactor;
-       b[2]*=fFactor;
-    }
-  }
-}
-
-//_______________________________________________________________________
-void AliMagFCM::ReadField()
-{
-  // 
-  // Method to read the magnetic field map from file
-  //
-  FILE *magfile;
-  Int_t ix, iy, iz, ipx, ipy, ipz;
-  Float_t bx, by, bz;
-  char *fname;
-  AliDebug(1,Form("Reading Magnetic Field %s from file %s",fName.Data(),fTitle.Data()));
-  fname = gSystem->ExpandPathName(fTitle.Data());
-  magfile=fopen(fname,"r");
-  delete [] fname;
-  if (magfile) {
-    fscanf(magfile,"%d %d %d %f %f %f %f %f %f",
-          &fXn, &fYn, &fZn, &fXdel, &fYdel, &fZdel, &fXbeg, &fYbeg, &fZbeg);
-    AliDebug(2,Form("fXn %d, fYn %d, fZn %d, fXdel %f, fYdel %f, fZdel %f, fXbeg %f, fYbeg %f, fZbeg %f",
-                       fXn, fYn, fZn, fXdel, fYdel, fZdel, fXbeg, fYbeg, fZbeg));
-    fXdeli=1./fXdel;
-    fYdeli=1./fYdel;
-    fZdeli=1./fZdel;
-    fB = new TVector(3*fXn*fYn*fZn);
-    for (iz=0; iz<fZn; iz++) {
-      ipz=iz*3*(fXn*fYn);
-      for (iy=0; iy<fYn; iy++) {
-       ipy=ipz+iy*3*fXn;
-       for (ix=0; ix<fXn; ix++) {
-         ipx=ipy+ix*3;
-         fscanf(magfile,"%f %f %f",&bz,&by,&bx);
-         (*fB)(ipx+2)=bz;
-         (*fB)(ipx+1)=by;
-         (*fB)(ipx  )=bx;
-       }
-      }
-    }
-  } else { 
-    AliFatal(Form("File %s not found !",fTitle.Data()));
-  }
-}
-
-//_______________________________________________________________________
-void AliMagFCM::Copy(TObject & /* magf */) const
-{
-  //
-  // Copy *this onto magf -- Not implemented
-  //
-  AliFatal("Not implemented!");
-}
-
diff --git a/STEER/AliMagFCM.h b/STEER/AliMagFCM.h
deleted file mode 100644 (file)
index fb774f3..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-#ifndef ALIMAGFCM_H
-#define ALIMAGFCM_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-
-//-----------------------------------------------------------------------
-//  Class for Alice magnetic field with constant mesh
-//  Used in the configuration macros (macros/Config.C, etc.)
-//  Author:
-//-----------------------------------------------------------------------
-
-#include "AliMagFC.h"
-#include <TVector.h>
-
-class AliMagFCM : public AliMagFC
-{
-  //Alice Magnetic Field with constant mesh
-
-public:
-  AliMagFCM();
-  AliMagFCM(const char *name, const char *title, Int_t integ,
-          Float_t factor, Float_t fmax);
-  AliMagFCM(const AliMagFCM &mag);
-  virtual ~AliMagFCM() {delete fB;}
-  virtual void Field(const float *x, float *b) const;
-  virtual void Field(const double *x, double *b) const;
-  virtual void ReadField();
-  virtual void    SetSolenoidField(Float_t field = 2.) {fSolenoid = field;}
-  virtual Float_t SolenoidField() const {
-    return -Factor()*fSolenoid;
-  }
-  
-  void Copy(TObject &magf) const;
-  virtual AliMagFCM & operator=(const AliMagFCM &magf)
-    {magf.Copy(*this); return *this;}
-
-  Float_t Bx(Int_t ix, Int_t iy, Int_t iz) const {
-    return (*fB)(3*(iz*(fXn*fYn)+iy*fXn+ix));
-  }
-  Float_t By(Int_t ix, Int_t iy, Int_t iz) const {
-    return (*fB)(3*(iz*(fXn*fYn)+iy*fXn+ix)+1);
-  }
-  Float_t Bz(Int_t ix, Int_t iy, Int_t iz) const {
-    return (*fB)(3*(iz*(fXn*fYn)+iy*fXn+ix)+2);
-  }
-
-protected:
-
-  Float_t    fXbeg;     // Start of mesh in x
-  Float_t    fYbeg;     // Start of mesh in y
-  Float_t    fZbeg;     // Start of mesh in z
-  Float_t    fXdel;     // Mesh step in x
-  Float_t    fYdel;     // Mesh step in y
-  Float_t    fZdel;     // Mesh step in z
-  Float_t    fSolenoid; // Solenoid Field Strength
-  Double_t   fXdeli;    // Inverse of Mesh step in x
-  Double_t   fYdeli;    // Inverse of Mesh step in y
-  Double_t   fZdeli;    // Inverse of Mesh step in z
-  Int_t      fXn;       // Number of mesh points in x
-  Int_t      fYn;       // Number of mesh points in y
-  Int_t      fZn;       // Number of mesh points in z
-  TVector   *fB;        // Field map
-  
-  ClassDef(AliMagFCM,1)  //Class for all Alice MagField with Constant Mesh
-};
-
-#endif
diff --git a/STEER/AliMagFCheb.cxx b/STEER/AliMagFCheb.cxx
deleted file mode 100644 (file)
index 34a31f4..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-/**************************************************************************
- * 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.                  *
- **************************************************************************/
-
-
-#include <TClass.h>
-#include <TFile.h>
-#include <TSystem.h>
-
-#include "AliMagFCheb.h"
-#include "AliMagWrapCheb.h"
-#include "AliLog.h"
-
-ClassImp(AliMagFCheb)
-    
-
-//_______________________________________________________________________
-AliMagFCheb::AliMagFCheb():
-  AliMagFC(),
-  fMeasuredMap(0),
-  fSolenoid(5.)
-{
-  // Default constructor
-  //
-}
-
-//_______________________________________________________________________
-AliMagFCheb::AliMagFCheb(const char *name, const char *title, Int_t integ, 
-                        Float_t factor, Float_t fmax, Int_t map, 
-                        Bool_t dipoleON,const char* path):
-  AliMagFC(name, title, integ, factor, fmax),
-  fMeasuredMap(0),
-  fSolenoid(5.)
-{
-  //
-  fMap = map;
-  char* fname = gSystem->ExpandPathName(path);
-  TFile* file = TFile::Open(fname);
-  if (!file) {
-    AliError(Form("Failed to open magnetic field data file %s\n",fname)); 
-    return;
-  }
-  const char* parname = 0;
-  if        (fMap == k2kG) {
-    fSolenoid = 2.;
-    parname = dipoleON ? "Sol12_Dip6_Hole":"Sol12_Dip0_Hole";
-  } else if (fMap == k5kG) {
-    fSolenoid = 5.;
-    parname = dipoleON ? "Sol30_Dip6_Hole":"Sol30_Dip0_Hole";
-  } else {
-    AliError(Form("Unknown field identifier %d is requested\n",fMap)); 
-    return;
-  }
-  //
-  fMeasuredMap = dynamic_cast<AliMagWrapCheb*>(file->Get(parname));
-  if (!fMeasuredMap) {
-    AliError(Form("Did not find field %s in %s\n",parname,fname)); 
-    return;
-  }
-  file->Close();
-  delete file;
-}
-
-
-//_______________________________________________________________________
-AliMagFCheb::AliMagFCheb(const AliMagFCheb &src):
-  AliMagFC(src),
-  fMeasuredMap(0),
-  fSolenoid(src.fSolenoid)
-{
-  if (src.fMeasuredMap) fMeasuredMap = new AliMagWrapCheb(*src.fMeasuredMap);
-}
-
-//_______________________________________________________________________
-AliMagFCheb::~AliMagFCheb()
-{
-  delete fMeasuredMap;
-}
-
-//_______________________________________________________________________
-void AliMagFCheb::GetTPCInt(const Float_t *xyz, Float_t *b) const
-{
-  // Method to calculate the integral of magnetic integral from xyz to nearest cathode plane
-  //
-  b[0]=b[1]=b[2]=0.0;
-  if (fMeasuredMap) fMeasuredMap->GetTPCInt(xyz,b);
-  for (int i=3;i--;) b[i] *= fFactor;
-}
-
-//_______________________________________________________________________
-void AliMagFCheb::GetTPCIntCyl(const Float_t *rphiz, Float_t *b) const
-{
-  // Method to calculate the integral of magnetic integral from point to nearest cathode plane
-  // in cylindrical coordiates ( -pi<phi<pi convention )
-  b[0]=b[1]=b[2]=0.0;
-  if (fMeasuredMap) fMeasuredMap->GetTPCIntCyl(rphiz,b);
-  for (int i=3;i--;) b[i] *= fFactor;
-}
-
-//_______________________________________________________________________
-void AliMagFCheb::Field(const Float_t *xyz, Float_t *b) const
-{
-  // Method to calculate the field at point  xyz
-  //
-  b[0]=b[1]=b[2]=0.0;
-  if (xyz[2] > 919. || xyz[2] < -1972.) {
-    ZDCField(xyz, b);
-  } else {
-    if (fMeasuredMap && fFactor !=0.) {
-      fMeasuredMap->Field(xyz,b);
-      for (int i=3;i--;) b[i] *= fFactor;
-    }
-  }
-}
-
-//_______________________________________________________________________
-void AliMagFCheb::Field(const Double_t *xyz, Double_t *b) const
-{
-  // Method to calculate the field at point  xyz
-  //
-  b[0]=b[1]=b[2]=0.0;
-  if (xyz[2] > 919. || xyz[2] < -1972.) {
-    ZDCField(xyz, b);
-  } 
-  else {
-    if (fMeasuredMap && fFactor !=0.) {
-      fMeasuredMap->Field(xyz,b);
-      for (int i=3;i--;) b[i] *= fFactor;
-    }
-  }
-}
-
-//_______________________________________________________________________
-AliMagFCheb& AliMagFCheb::operator=(const AliMagFCheb& maps)
-{
-  fSolenoid=maps.fSolenoid;
-  if (this != &maps && maps.fMeasuredMap) { 
-    if (fMeasuredMap) delete fMeasuredMap;
-    fMeasuredMap = new AliMagWrapCheb(*maps.fMeasuredMap);
-  }
-  return *this;
-}
-
-//_______________________________________________________________________
-void AliMagFCheb::SetMeasuredMap(AliMagWrapCheb* parm) 
-{
-  if (fMeasuredMap) delete fMeasuredMap; 
-  fMeasuredMap = parm;
-}
diff --git a/STEER/AliMagFCheb.h b/STEER/AliMagFCheb.h
deleted file mode 100644 (file)
index 74e706f..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef ALIMAGFCHEB_H
-#define ALIMAGFCHEB_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-//
-// Interface between the AliMagWrapCheb and AliMagF: set of magnetic field data + Tosca 
-// parameterization by Chebyshev polynomials
-// 
-// Author: ruben.shahoyan@cern.ch
-//
-
-#include "AliMagFC.h"
-class AliMagWrapCheb;
-
-
-class AliMagFCheb : public AliMagFC
-{
-public:
-  enum constants {k2kG, k4kG, k5kG};
-  AliMagFCheb();
-  AliMagFCheb(const char *name, const char *title, Int_t integ,
-             Float_t factor=1, Float_t fmax=15, Int_t map = k2kG,
-             Bool_t dipoleON = kTRUE,
-             const char* path="$(ALICE_ROOT)/data/maps/mfchebKGI_sym.root");
-  AliMagFCheb(const AliMagFCheb& maps);             
-  AliMagFCheb& operator=(const AliMagFCheb& maps);
-  virtual ~AliMagFCheb();
-  //
-  virtual void Field(const Float_t *x, Float_t *b)              const;
-  virtual void Field(const Double_t *x, Double_t *b)            const;
-  virtual void GetTPCInt(const Float_t *xyz, Float_t *b)        const;
-  virtual void GetTPCIntCyl(const Float_t *rphiz, Float_t *b)   const;
-  //
-  AliMagWrapCheb* GetMeasuredMap()                              const {return fMeasuredMap;}
-  void SetMeasuredMap(AliMagWrapCheb* parm);
-  virtual Float_t SolenoidField()                               const {return -Factor()*fSolenoid;}
-  //
- protected:
-  AliMagWrapCheb* fMeasuredMap;     // Measured part of the field map
-  Float_t         fSolenoid;        // Solenoid field setting
-  //   
-  ClassDef(AliMagFCheb, 2)       // Class for all Alice MagField wrapper for measured data + Tosca parameterization
-};
-
-
-#endif
diff --git a/STEER/AliMagFDM.cxx b/STEER/AliMagFDM.cxx
deleted file mode 100644 (file)
index 28c509a..0000000
+++ /dev/null
@@ -1,919 +0,0 @@
-/**************************************************************************
- * 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$ */
-
-//-------------------------------------------------------------------------
-//   Field with Magnetic Field map
-//   Used by AliRun class
-//   Author:
-//-------------------------------------------------------------------------
-
-#include <TMath.h>
-#include <TSystem.h>
-
-#include "AliLog.h"
-#include "AliMagFDM.h"
-
-ClassImp(AliMagFDM)
-
-//_______________________________________________________________________
-AliMagFDM::AliMagFDM():
-  fSolenoid(0),
-  fInd(0),
-  fZmin(0),
-  fZmax(0),
-  fYmax(0),
-  fYmin(0),
-  fZpmx(0),
-  fZpmn(0),
-  fRmax(0),
-  fRmin(0),
-  fXdel(0),
-  fYdel(0),
-  fZdel(0),
-  fRdel(0),
-  fPhid(0),
-  fZpdl(0),
-  fCx1(0),
-  fCx2(0),
-  fAx1(0),
-  fAx2(0),
-  fXl(0),
-  fYl(0),
-  fZl(0),    
-  fRn(0),
-  fPhin(0),
-  fZpl(0)  
-{
-  //
-  // Default constructor for the Dipole field
-  //
-}
-
-//_______________________________________________________________________
-AliMagFDM::AliMagFDM(const char *name, const char *title, Int_t integ,
-                     Float_t factor, Float_t fmax):
-  AliMagFC(name,title,integ,factor,fmax),
-  fSolenoid(0),
-  fInd(0),
-  fZmin(0),
-  fZmax(0),
-  fYmax(0),
-  fYmin(0),
-  fZpmx(0),
-  fZpmn(0),
-  fRmax(0),
-  fRmin(0),
-  fXdel(0),
-  fYdel(0),
-  fZdel(0),
-  fRdel(0),
-  fPhid(0),
-  fZpdl(0),
-  fCx1(0),
-  fCx2(0),
-  fAx1(0),
-  fAx2(0),
-  fXl(0),
-  fYl(0),
-  fZl(0),    
-  fRn(0),
-  fPhin(0),
-  fZpl(0)  
-{
-  //
-  // Standard constructor for the Dipole field
-  //
-  fType = kDipoMap;
-  fMap  = 3;
-  SetSolenoidField();
-  
-  AliDebug(1, Form(
-       "Field Map for Muon Arm from IP till muon filter %s created: map= %d, integ= %d, factor= %f, file=%s",
-       fName.Data(), fMap ,integ,factor,fTitle.Data()));
-}
-
-//_______________________________________________________________________
-void AliMagFDM::Field(const float *xfi, float *b) const
-{
-  //
-  // Main routine to compute the field in a point
-  //
-  const Double_t keps=0.1E-06;
-  const Double_t kPI2=2.*TMath::Pi();
-  const Double_t kone=1;
-  
-  const    Int_t  kiip=33; 
-  const    Int_t  kmiip=0;    
-  const    Int_t  kliip=0;
-  
-  const    Int_t  kiic=0;
-  const    Int_t  kmiic=0;    
-  const    Int_t  kliic=0;       
-  
-  const Double_t    kfZbg=502.92;  // Start of Map using in z
-  const Double_t    kfZL3=600;  // Beginning of L3 door in z
-
-  Double_t   x[3];   
-  Double_t   xL3[3]; 
-  Double_t   bint[3]; 
-  
-  Double_t r0;
-  Int_t iKvar,jb;
-
-  Double_t zp1, zp2,xp1,xp2,yp1,yp2; 
-  Double_t zz1, zz2,yy1,yy2,x2,x1; 
-     
-// --- start the map fiel from z = 502.92 cm ---
-//
-// This map has been calculated in a coordinate system in which the muon spectrometer sits at z > 0
-// Transfor correspondingly.
-
-  x[0] = - xfi[0];
-  x[1] =   xfi[1];
-  x[2] = - xfi[2];
-  b[0]=b[1]=b[2]=0;
-//
-  //       printf("x[0]  %f,x[1] %f,x[2]  %f\n",x[0],x[1],x[2]); 
-
-  Double_t rr=TMath::Sqrt(x[0]*x[0]+x[1]*x[1]);
-           r0=rr/100;
-  Double_t rPmax;
-  rPmax=fRmax; 
-  if ( (-700<x[2] && x[2]<=kfZbg && 
-        (x[0]*x[0]+(x[1]+30)*(x[1]+30))< 560*560)
-       || (kfZbg<x[2] && x[2]<=kfZL3 && (rr>rPmax*100 && rr< 560)) )
-       {
-        b[0]=b[1]=0;
-        b[2]=fSolenoid;
-       }
-
-  xL3[0]=x[0]/100;
-  xL3[1]=(x[1]+30)/100;
-  xL3[2]=x[2]/100; 
-
-  if (TMath::Abs(xL3[0])<=0.1E-06) xL3[0]=TMath::Sign(0.1E-05,xL3[0]);
-  if (TMath::Abs(xL3[1])<=0.1E-06) xL3[1]=TMath::Sign(0.1E-05,xL3[1]);
-
-  Double_t xminn=xL3[2]*fAx1+fCx1;
-  Double_t xmaxx=xL3[2]*fAx2+fCx2;
-  Double_t zCmin,zCmax,yCmin,yCmax;
-
-  zCmin=fZmin;
-  zCmax=fZmax;
-  yCmin=fYmin;
-  yCmax=fYmax;
-if ((kfZbg/100<xL3[2] && xL3[2]<=zCmin && r0<=rPmax) || ((zCmin<xL3[2] && xL3[2] <= zCmax ) && (yCmin<xL3[1] && xL3[1]<= yCmax) &&  (xminn<xL3[0] && xL3[0] <= xmaxx)))
-    {
-     if(fMap==3) 
-      { 
-        if (kfZbg/100<xL3[2] && xL3[2]<=zCmin && r0<=rPmax)
-       {
-       //---------------------  Polar part ----------------------
-       
-       Double_t yyp,ph0;
-       Int_t  kp0, lp0, mp0;
-       Int_t kpi,lpi,mpi;
-       Double_t alp1,alp2,alp3;
-       Double_t zpz,rp,fip,cphi; 
-
-       kpi=kiip; 
-       lpi=kliip;
-       mpi=kmiip;
-   
-       zpz=xL3[2];
-       kp0=FZ(zpz, fZp ,fZpdl,kpi,fZpl) ;
-       zp2=(zpz-fZp[kp0])/(fZp[kp0+1]-fZp[kp0]);
-       zp1= kone-zp2;
-       yyp=xL3[1]- 0.3;
-       cphi=TMath::Abs(yyp/r0);
-       Int_t kcphi=0;
-       if (cphi > kone) {
-        AliDebug(2,Form("xL3[0] %e, xL3[1] %e, xL3[2] %e, yyp %e, r0 %e, cphi %e",xL3[0],xL3[1],xL3[2],yyp,r0,cphi));
-        cphi =kone;
-        kcphi=777;
-       } 
-       ph0=TMath::ACos(cphi);
-       if (xL3[0] < 0 && yyp > 0 ) {ph0=kPI2/2 - ph0;}  
-       if (xL3[0] < 0 && yyp < 0 ) {ph0=kPI2/2 + ph0;} 
-       if (xL3[0] > 0 && yyp < 0 ) {ph0=kPI2 - ph0;}  
-       if (ph0 > kPI2) {       ph0=ph0 - kPI2;}
-       if (kcphi==777) {
-        AliDebug(2,Form("xL3[0] %e, xL3[1] %e, xL3[2] %e, yyp %e, r0 %e, ph0 %e",xL3[0],xL3[1],xL3[2],yyp,r0,ph0));
-       }  
-       fip=ph0; 
-       mp0=FZ(fip,fPhi,fPhid ,mpi,fPhin);
-       xp2=(fip-fPhi[mp0])/(fPhi[mp0+1]-fPhi[mp0]);
-       xp1=kone-xp2;
-
-       Double_t rDel;
-       rDel=fRdel;
-
-       if (r0<= fRdel)
-        {
-
-         if(r0< keps) 
-         {
-
-          bint[0]=(zp1*fBpx[kp0][0][0] + zp2*fBpx[kp0+1][0][0])*10;     
-          bint[1]=(zp1*fBpy[kp0][0][0] + zp2*fBpy[kp0+1][0][0])*10;      
-          bint[2]=(zp1*fBpz[kp0][0][0] + zp2*fBpz[kp0+1][0][0])*10; 
-
-         } else { 
-      
-        alp2= fB[0][0][mp0]*yyp + fB[0][1][mp0]*xL3[0]; 
-        alp3= fB[1][0][mp0]*yyp + fB[1][1][mp0]*xL3[0];      
-        alp1= kone - alp2 - alp3;
-     
-        for (jb=0; jb<3 ; jb++) 
-         {
-          iKvar=jb;     
-          bint[jb] = Ba(iKvar,zp1,zp2,alp1,alp2,alp3, kp0,mp0)*10 ;
-         } 
-        } // end   of keps <=r0 
-       }
-        else
-       {
-        rp=r0;
-
-        lp0=FZ(rp,fR ,fRdel,lpi,fRn);
-        yp2=(rp-fR[lp0])/(fR[lp0+1]-fR[lp0]);
-       yp1=kone-yp2;
-
-        for (jb=0; jb<3 ; jb++) 
-        {
-         iKvar=jb;
-         bint[jb] = Bb(zp1,zp2,yp1,yp2,xp1,xp2,iKvar,kp0,lp0,mp0)*10 ;
-        }
-       }
-
-       b[0]=-bint[0];
-       b[1]=bint[1];
-       b[2]=-bint[2];
-
-   }  
-   else 
-   {
-   //-------------- Cartensian part ------------------
-          
-   Double_t zzc,yyc; 
-   Int_t k0, l0,m0;
-   Double_t  xx1, xx2,dx, xxx ,xXl; 
-   Int_t kci,mci,lci;
-
-   kci=kiic;
-   lci=kliic;
-   mci=kmiic;
-
-   xx1 = fAx1*xL3[2] + fCx1;
-   xx2 = fAx2*xL3[2] + fCx2;
-
-   zzc=xL3[2];
-   k0=FZ(zzc, fZc ,fZdel, kci, fZl); 
-   zz2=(zzc-fZc[k0])/(fZc[k0+1]-fZc[k0]);
-   zz1=kone - zz2;;    
-
-   yyc=xL3[1];
-   l0=FZ(yyc, fY , fYdel,lci,fYl);  
-   yy2=(yyc-fY[l0])/(fY[l0+1]-fY[l0]);;
-   yy1=kone - yy2;    
-   xXl = fXl-kone; 
-   dx = (xx2-xx1)/xXl;
-   xxx= xL3[0]-xx1;
-   m0 = int(xxx/dx);   
-
-   if(xL3[0]<(xx1+m0*dx) || xL3[0] >(xx1+(m0+1)*dx)) 
-    {
-      m0=m0+1;   
-      AliDebug(2,Form(" m0 %d, m0+1 %d\n",m0,m0+1));  
-    }
-
-   x2=(xL3[0]-( xx1+m0*dx))/dx;
-   x1=kone-x2;
-   m0=m0-1;
-   for (jb=3; jb<6; jb++) 
-     {
-       iKvar=jb;     
-       bint[jb-3] = Bb(zz1,zz2,yy1,yy2,x1,x2,iKvar,k0, l0, m0)*10 ; 
-     }    
-   b[0]=-bint[0];
-   b[1]=bint[1];
-   b[2]=-bint[2]; 
-
-   } 
-
-
-  } else {
-        AliError(Form("Unknown map of Dipole region %d",fMap));
- }
-           
-} else {
-    ZDCField(xfi,b);
-
-    }
-
-  if(fFactor!=1) {
-    b[0]*=fFactor;
-    b[1]*=fFactor;
-    b[2]*=fFactor;
-  }
-}
-
-//_______________________________________________________________________
-void AliMagFDM::Field(const double *xfi, double *b) const
-{
-  //
-  // Main routine to compute the field in a point
-  //
-  const Double_t keps=0.1E-06;
-  const Double_t kPI2=2.*TMath::Pi();
-  const Double_t kone=1;
-  
-  const    Int_t  kiip=33; 
-  const    Int_t  kmiip=0;    
-  const    Int_t  kliip=0;
-  
-  const    Int_t  kiic=0;
-  const    Int_t  kmiic=0;    
-  const    Int_t  kliic=0;       
-  
-  const Double_t    kfZbg=502.92;  // Start of Map using in z
-  const Double_t    kfZL3=600;  // Beginning of L3 door in z
-
-  Double_t   x[3];   
-  Double_t   xL3[3]; 
-  Double_t   bint[3]; 
-  
-  Double_t r0;
-  Int_t iKvar,jb;
-
-  Double_t zp1, zp2,xp1,xp2,yp1,yp2; 
-  Double_t zz1, zz2,yy1,yy2,x2,x1; 
-     
-// --- start the map fiel from z = 502.92 cm ---
-//
-// This map has been calculated in a coordinate system in which the muon spectrometer sits at z > 0
-// Transfor correspondingly.
-
-  x[0] = - xfi[0];
-  x[1] =   xfi[1];
-  x[2] = - xfi[2];
-  b[0]=b[1]=b[2]=0;
-//
-  //       printf("x[0]  %f,x[1] %f,x[2]  %f\n",x[0],x[1],x[2]); 
-
-  Double_t rr=TMath::Sqrt(x[0]*x[0]+x[1]*x[1]);
-           r0=rr/100;
-  Double_t rPmax;
-  rPmax=fRmax; 
-  if ( (-700<x[2] && x[2]<=kfZbg && 
-        (x[0]*x[0]+(x[1]+30)*(x[1]+30))< 560*560)
-       || (kfZbg<x[2] && x[2]<=kfZL3 && (rr>rPmax*100 && rr< 560)) )
-       {
-        b[0]=b[1]=0;
-        b[2]=fSolenoid;
-       }
-
-  xL3[0]=x[0]/100;
-  xL3[1]=(x[1]+30)/100;
-  xL3[2]=x[2]/100; 
-
-  if (TMath::Abs(xL3[0])<=0.1E-06) xL3[0]=TMath::Sign(0.1E-05,xL3[0]);
-  if (TMath::Abs(xL3[1])<=0.1E-06) xL3[1]=TMath::Sign(0.1E-05,xL3[1]);
-
-  Double_t xminn=xL3[2]*fAx1+fCx1;
-  Double_t xmaxx=xL3[2]*fAx2+fCx2;
-  Double_t zCmin,zCmax,yCmin,yCmax;
-
-  zCmin=fZmin;
-  zCmax=fZmax;
-  yCmin=fYmin;
-  yCmax=fYmax;
-if ((kfZbg/100<xL3[2] && xL3[2]<=zCmin && r0<=rPmax) || ((zCmin<xL3[2] && xL3[2] <= zCmax ) && (yCmin<xL3[1] && xL3[1]<= yCmax) &&  (xminn<xL3[0] && xL3[0] <= xmaxx)))
-    {
-     if(fMap==3) 
-      { 
-        if (kfZbg/100<xL3[2] && xL3[2]<=zCmin && r0<=rPmax)
-       {
-       //---------------------  Polar part ----------------------
-       
-       Double_t yyp,ph0;
-       Int_t  kp0, lp0, mp0;
-       Int_t kpi,lpi,mpi;
-       Double_t alp1,alp2,alp3;
-       Double_t zpz,rp,fip,cphi; 
-
-       kpi=kiip; 
-       lpi=kliip;
-       mpi=kmiip;
-   
-       zpz=xL3[2];
-       kp0=FZ(zpz, fZp ,fZpdl,kpi,fZpl) ;
-       zp2=(zpz-fZp[kp0])/(fZp[kp0+1]-fZp[kp0]);
-       zp1= kone-zp2;
-       yyp=xL3[1]- 0.3;
-       cphi=TMath::Abs(yyp/r0);
-       Int_t kcphi=0;
-       if (cphi > kone) {
-        AliDebug(2,Form("xL3[0] %e, xL3[1] %e, xL3[2] %e, yyp %e, r0 %e, cphi %e",xL3[0],xL3[1],xL3[2],yyp,r0,cphi));
-        cphi =kone;
-        kcphi=777;
-       } 
-       ph0=TMath::ACos(cphi);
-       if (xL3[0] < 0 && yyp > 0 ) {ph0=kPI2/2 - ph0;}  
-       if (xL3[0] < 0 && yyp < 0 ) {ph0=kPI2/2 + ph0;} 
-       if (xL3[0] > 0 && yyp < 0 ) {ph0=kPI2 - ph0;}  
-       if (ph0 > kPI2) {       ph0=ph0 - kPI2;}
-       if (kcphi==777) {
-        AliDebug(2,Form("xL3[0] %e, xL3[1] %e, xL3[2] %e, yyp %e, r0 %e, ph0 %e",xL3[0],xL3[1],xL3[2],yyp,r0,ph0));
-       }  
-       fip=ph0; 
-       mp0=FZ(fip,fPhi,fPhid ,mpi,fPhin);
-       xp2=(fip-fPhi[mp0])/(fPhi[mp0+1]-fPhi[mp0]);
-       xp1=kone-xp2;
-
-       Double_t rDel;
-       rDel=fRdel;
-
-       if (r0<= fRdel)
-        {
-
-         if(r0< keps) 
-         {
-
-          bint[0]=(zp1*fBpx[kp0][0][0] + zp2*fBpx[kp0+1][0][0])*10;     
-          bint[1]=(zp1*fBpy[kp0][0][0] + zp2*fBpy[kp0+1][0][0])*10;      
-          bint[2]=(zp1*fBpz[kp0][0][0] + zp2*fBpz[kp0+1][0][0])*10; 
-
-         } else { 
-      
-        alp2= fB[0][0][mp0]*yyp + fB[0][1][mp0]*xL3[0]; 
-        alp3= fB[1][0][mp0]*yyp + fB[1][1][mp0]*xL3[0];      
-        alp1= kone - alp2 - alp3;
-     
-        for (jb=0; jb<3 ; jb++) 
-         {
-          iKvar=jb;     
-          bint[jb] = Ba(iKvar,zp1,zp2,alp1,alp2,alp3, kp0,mp0)*10 ;
-         } 
-        } // end   of keps <=r0 
-       }
-        else
-       {
-        rp=r0;
-
-        lp0=FZ(rp,fR ,fRdel,lpi,fRn);
-        yp2=(rp-fR[lp0])/(fR[lp0+1]-fR[lp0]);
-       yp1=kone-yp2;
-
-        for (jb=0; jb<3 ; jb++) 
-        {
-         iKvar=jb;
-         bint[jb] = Bb(zp1,zp2,yp1,yp2,xp1,xp2,iKvar,kp0,lp0,mp0)*10 ;
-        }
-       }
-
-       b[0]=-bint[0];
-       b[1]=bint[1];
-       b[2]=-bint[2];
-
-   }  
-   else 
-   {
-   //-------------- Cartensian part ------------------
-          
-   Double_t zzc,yyc; 
-   Int_t k0, l0,m0;
-   Double_t  xx1, xx2,dx, xxx ,xXl; 
-   Int_t kci,mci,lci;
-
-   kci=kiic;
-   lci=kliic;
-   mci=kmiic;
-
-   xx1 = fAx1*xL3[2] + fCx1;
-   xx2 = fAx2*xL3[2] + fCx2;
-
-   zzc=xL3[2];
-   k0=FZ(zzc, fZc ,fZdel, kci, fZl); 
-   zz2=(zzc-fZc[k0])/(fZc[k0+1]-fZc[k0]);
-   zz1=kone - zz2;;    
-
-   yyc=xL3[1];
-   l0=FZ(yyc, fY , fYdel,lci,fYl);  
-   yy2=(yyc-fY[l0])/(fY[l0+1]-fY[l0]);;
-   yy1=kone - yy2;    
-   xXl = fXl-kone; 
-   dx = (xx2-xx1)/xXl;
-   xxx= xL3[0]-xx1;
-   m0 = int(xxx/dx);   
-
-   if(xL3[0]<(xx1+m0*dx) || xL3[0] >(xx1+(m0+1)*dx)) 
-    {
-      m0=m0+1;   
-      AliDebug(2,Form(" m0 %d, m0+1 %d\n",m0,m0+1));  
-    }
-
-   x2=(xL3[0]-( xx1+m0*dx))/dx;
-   x1=kone-x2;
-   m0=m0-1;
-   for (jb=3; jb<6; jb++) 
-     {
-       iKvar=jb;     
-       bint[jb-3] = Bb(zz1,zz2,yy1,yy2,x1,x2,iKvar,k0, l0, m0)*10 ; 
-     }    
-   b[0]=-bint[0];
-   b[1]=bint[1];
-   b[2]=-bint[2]; 
-
-   } 
-
-
-  } else {
-        AliError(Form("Unknown map of Dipole region %d",fMap));
- }
-           
-} else {
-    ZDCField(xfi,b);
-
-    }
-
-  if(fFactor!=1) {
-    b[0]*=fFactor;
-    b[1]*=fFactor;
-    b[2]*=fFactor;
-  }
-}
-
-
-//_______________________________________________________________________
-Int_t AliMagFDM::FZ(Double_t temp, const Float_t *Ar, 
-                    Float_t delu, Int_t ik, Int_t nk) const
-{
-  //
-  // Quest of a point position at x,y,z (Cartensian) and R,Phi,z (Polar) axises
-  //
-  Int_t l,ikj;
-  Double_t ddu,ar;
-
-  Int_t ku,kf;
-  kf=0;
-  ar=Ar[ik];
-  ddu=temp-ar;
-
-  ku=int(ddu/delu);
-  ikj=ik+ku+1;
-  if (ddu<=0) ikj=0;
-
-   for(l=ikj; l<nk; l++)
-   {
-
-    if(temp <= Ar[l])
-     {
-       
-      kf=l-1;
-      break;
-     }
-    }
-    return kf;
-  }
-
-//_______________________________________________________________________
-Double_t AliMagFDM::Ba(Int_t kaai,Double_t zaa1, Double_t zaa2, 
-                       Double_t alf1, Double_t alf2, Double_t alf3, 
-                       Int_t kaa, Int_t maa) const
-{
-  //
-  // Calculation of field componet for case (keps <r0<= fRdel) at a given axis
-  //
-  Double_t fa11=0,fa12=0,fa13=0;
-  Double_t fa21=0,fa22=0,fa23=0;
-  Double_t faY1=0,faY2=0;
-  Double_t bba=0;
-
-  switch (kaai) {
-  case 0:
-    fa11 = fBpx[kaa][0][0];
-    fa12 = fBpx[kaa][0][maa];
-    fa13 = fBpx[kaa][0][maa+1];
-    fa21 = fBpx[kaa+1][0][0];
-    fa22 = fBpx[kaa+1][0][maa];               
-    fa23 = fBpx[kaa+1][0][maa+1]; 
-    break;
-  case 1:
-    fa11 = fBpy[kaa][0][0];
-    fa12 = fBpy[kaa][0][maa];
-    fa13 = fBpy[kaa][0][maa+1];
-    fa21 = fBpy[kaa+1][0][0];
-    fa22 = fBpy[kaa+1][0][maa];               
-    fa23 = fBpy[kaa+1][0][maa+1]; 
-    break;
-  case 2:
-    fa11 = fBpz[kaa][0][0];
-    fa12 = fBpz[kaa][0][maa];
-    fa13 = fBpz[kaa][0][maa+1];
-    fa21 = fBpz[kaa+1][0][0];
-    fa22 = fBpz[kaa+1][0][maa];               
-    fa23 = fBpz[kaa+1][0][maa+1]; 
-    break;
-  default:
-    AliFatal(Form("Invalid value of kaai %d",kaai));
-  }                            
-  faY1=alf1*fa11+alf2*fa12+alf3*fa13;
-  faY2=alf1*fa21+alf2*fa22+alf3*fa23;
-  bba =  zaa1*faY1+zaa2*faY2;    
-  return bba;  
-}
-
-  
-//_______________________________________________________________________
-Double_t AliMagFDM::Bb(Double_t z1,Double_t z2, Double_t y1,Double_t y2, 
-                       Double_t x1,Double_t x2, Int_t kv, Int_t k, Int_t l, Int_t m) const
-{  
-  //
-  // Calculation of field componet at a given axis (general case)
-  //
-  Double_t fy1=0,fy2=0,ffy=0;
-  Double_t gy1=0,gy2=0,ggy=0;
-  Double_t bbi=0;
-  Double_t bf11=0,bf12=0,bf21=0,bf22=0;
-  Double_t bg11=0,bg12=0,bg21=0,bg22=0;
-
-  
-  /*-----------------Polar part ------------------*/
-  
-  switch (kv) {
-  case 0:
-    bf11=fBpx[k][l][m];
-    bf12=fBpx[k+1][l][m];
-    bf21=fBpx[k+1][l+1][m];
-    bf22=fBpx[k][l+1][m];
-    
-    bg11=fBpx[k][l][m+1];
-    bg12=fBpx[k+1][l][m+1];
-    bg21=fBpx[k+1][l+1][m+1];
-    bg22=fBpx[k][l+1][m+1];
-    break;
-
-  case 1:
-    bf11=fBpy[k][l][m];
-    bf12=fBpy[k+1][l][m];
-    bf21=fBpy[k+1][l+1][m];
-    bf22=fBpy[k][l+1][m];
-    
-    bg11=fBpy[k][l][m+1];
-    bg12=fBpy[k+1][l][m+1];
-    bg21=fBpy[k+1][l+1][m+1];
-    bg22=fBpy[k][l+1][m+1];
-    break;
-
-  case 2:
-    bf11=fBpz[k][l][m];
-    bf12=fBpz[k+1][l][m];
-    bf21=fBpz[k+1][l+1][m];
-    bf22=fBpz[k][l+1][m];
-    
-    bg11=fBpz[k][l][m+1];
-    bg12=fBpz[k+1][l][m+1];
-    bg21=fBpz[k+1][l+1][m+1];
-    bg22=fBpz[k][l+1][m+1]; 
-    break;
-  /*-----------------Cartensian part ---------------*/ 
-  
-  case 3:
-    bf11=fBcx[k][l][m];
-    bf12=fBcx[k+1][l][m];
-    bf21=fBcx[k+1][l+1][m];
-    bf22=fBcx[k][l+1][m];
-    
-    bg11=fBcx[k][l][m+1];
-    bg12=fBcx[k+1][l][m+1];
-    bg21=fBcx[k+1][l+1][m+1];
-    bg22=fBcx[k][l+1][m+1];
-    break;
-
-  case 4:
-    bf11=fBcy[k][l][m];
-    bf12=fBcy[k+1][l][m];
-    bf21=fBcy[k+1][l+1][m];
-    bf22=fBcy[k][l+1][m];
-    
-    bg11=fBcy[k][l][m+1];
-    bg12=fBcy[k+1][l][m+1];
-    bg21=fBcy[k+1][l+1][m+1];
-    bg22=fBcy[k][l+1][m+1];
-    break;
-
-  case 5:
-    bf11=fBcz[k][l][m];
-    bf12=fBcz[k+1][l][m];
-    bf21=fBcz[k+1][l+1][m];
-    bf22=fBcz[k][l+1][m];
-    
-    bg11=fBcz[k][l][m+1];
-    bg12=fBcz[k+1][l][m+1];
-    bg21=fBcz[k+1][l+1][m+1];
-    bg22=fBcz[k][l+1][m+1];
-    break;
-
-  default:
-    AliFatal(Form("Invalid value of kv %d",kv));
-  }  
-  
-  
-  
-  fy1=z1*bf11+z2*bf12;
-  fy2=z2*bf21+z1* bf22;
-  ffy=y1*fy1+ y2*fy2; 
-  
-  
-  gy1 = z1*bg11+z2*bg12;
-  gy2 = z2*bg21+z1*bg22;
-  ggy= y1*gy1 +  y2*gy2;
-  
-  bbi =  x1*ffy+x2*ggy;
-
-  return bbi;
-  
-}     
-
-//_______________________________________________________________________
-void AliMagFDM::ReadField()
-{
-  //
-  // Method to read the magnetic field from file
-  //
-  FILE *magfile;
-
-  Int_t ik, il, im;
-  Float_t zzp, rr,phii;
-  Float_t zz, yy, bx,by,bz,bb;
-
-  char *fname;
-  AliDebug(1,Form("Reading Magnetic Field %s from file %s",fName.Data(),fTitle.Data()));
-  fname = gSystem->ExpandPathName(fTitle.Data());
-  magfile=fopen(fname,"r");
-  delete [] fname;
-
-  AliDebug(2,"Cartensian part");
-  if (magfile) {
-  
-//  Cartensian part 
-    fscanf(magfile,"%d %d %d ",&fYl, &fXl, &fZl); 
-    
-    AliDebug(3,Form("fYl %d, fXl %d, fZl %d",fYl, fXl, fZl));     
-    
-    for (ik=0; ik<fZl; ik++)
-    { 
-   
-      fscanf(magfile, " %e ", &zz);
-      fZc[ik]=zz; 
-
-    } 
-   
-    for (ik=0; ik<fYl; ik++)
-    {    
-       fscanf(magfile, " %e ", &yy); 
-       fY[ik]=yy;
-    } 
-    for (ik=0; ik<81; ik++)
-    {    
-           AliDebug(4,Form("fZc %e,fY %e", fZc[ik],fY[ik])); 
-    }   
-             
-    fscanf(magfile," %e %e %e %e %e %e %e %e %e %e %e ", &fYdel,&fXdel,&fZdel,&fZmax,&fZmin,&fYmax,&fYmin,&fAx1,&fCx1,&fAx2,&fCx2); 
-
-AliDebug(3,Form("fYdel %e, fXdel %e, fZdel %e",fYdel,fXdel,fZdel));
-AliDebug(3,Form("fZmax %e, fZmin %e, fYmax %e,fYmin %e",fZmax,fZmin,fYmax,fYmin));
-AliDebug(3,Form("fAx1 %e, fCx1 %e, fAx2 %e, fCx %e",fAx1,fCx1,fAx2,fCx2));
-
-    for (il=0; il<44; il++)  { 
-     for (im=0; im<81; im++)  {      
-      for (ik=0; ik<81; ik++)  {      
-      
-      fscanf(magfile, " %e ", &by); 
-      fBcy[ik][im][il]=by;        
-      }
-     }
-    } 
-
-    for (il=0; il<44; il++)  { 
-     for (im=0; im<81; im++)  {      
-      for (ik=0; ik<81; ik++)  {      
-      
-      fscanf(magfile, " %e ", &bx); 
-      fBcx[ik][im][il]=bx;        
-      }    
-     }     
-    }
-    
-   for (il=0; il<44; il++)  { 
-     for (im=0; im<81; im++)  {      
-      for (ik=0; ik<81; ik++)  {      
-      
-      fscanf(magfile, " %e ", &bz); 
-      fBcz[ik][im][il]=bz;          
-      }              
-     }     
-    } 
-//----------------------   Polar part ---------------------------------
-
-    AliDebug(2,"Polar part");
-    fscanf(magfile,"%d %d %d ", &fZpl, &fRn, &fPhin); 
-    AliDebug(3,Form("fZpl %d, fRn %d, fPhin %d",fZpl,fRn,fPhin));   
-
-    AliDebug(4," fZp array"); 
-     
-    for (ik=0; ik<51; ik++) 
-    {    
-     fscanf(magfile, " %e ", &zzp);
-     fZp[ik]=zzp; 
-     AliDebug(4,Form(" %e",fZp[ik]));      
-    } 
-  
-    AliDebug(4," fR array"); 
-         
-    for (ik=0; ik<10; ik++) 
-    {    
-     fscanf(magfile, " %e ", &rr); 
-     fR[ik]=rr;
-     AliDebug(4,Form(" %e",fR[ik]));
-    } 
-    
-//    AliDebug(4,"fPhi array"); 
-     
-     for (il=0; il<33; il++)  
-     {
-       fscanf(magfile, " %e ", &phii); 
-       fPhi[il]=phii; 
-//        AliDebug(4,Form(" %e",fPhi[il]));          
-     }
-
-    fscanf(magfile," %e %e %e %e %e %e %e ",&fZpdl,&fPhid,&fRdel,&fZpmx,&fZpmn,&fRmax, &fRmin); 
-
-AliDebug(3,Form("fZpdl %e, fPhid %e, fRdel %e, fZpmx %e, fZpmn %e,fRmax %e,fRmin %e", fZpdl,fPhid, fRdel,fZpmx, fZpmn,fRmax, fRmin));
-
-                      
-    for (il=0; il<33; il++)  { 
-     for (im=0; im<10; im++)  {      
-      for (ik=0; ik<51; ik++)  {
-      fscanf(magfile, " %e ", &by); 
-        fBpy[ik][im][il]=by;        
-      }
-     }
-    } 
-    
-    for (il=0; il<33; il++)  { 
-     for (im=0; im<10; im++)  {      
-      for (ik=0; ik<51; ik++)  {
-      fscanf(magfile, " %e ", &bx); 
-        fBpx[ik][im][il]=bx;                     
-      }    
-     }     
-    }      
-
-
-    for (il=0; il<33; il++)  { 
-     for (im=0; im<10; im++)  {      
-      for (ik=0; ik<51; ik++)  {
-      fscanf(magfile, " %e ", &bz); 
-        fBpz[ik][im][il]=bz;                      
-      }              
-     }     
-    } 
-    
-    
-    for (il=0; il<32; il++) { 
-     for (im=0; im<2; im++)  {      
-      for (ik=0; ik<2; ik++)  {
-      fscanf(magfile, " %e ", &bb);    
-        fB[ik][im][il]=bb;  
-      }              
-     } 
-    }
-//
-  } else { 
-    AliFatal(Form("File %s not found !",fTitle.Data()));
-  }
-}
diff --git a/STEER/AliMagFDM.h b/STEER/AliMagFDM.h
deleted file mode 100644 (file)
index ae97c34..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-#ifndef ALIMAGFDM_H
-#define ALIMAGFDM_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-
-//-------------------------------------------------------------------------
-//   Field with Magnetic Field map
-//   Used by AliRun class
-//   Author:
-//-------------------------------------------------------------------------
-
-#include "AliMagFC.h"
-//
-class AliMagFDM : public AliMagFC
-{
-//Alice Magnetic Field:Magnetic field map from IP to muon filter for Muon arm
-
-public:
-  AliMagFDM();
-  AliMagFDM(const char *name, const char *title, Int_t integ,
-           Float_t factor, Float_t fmax);
-  virtual ~AliMagFDM(){} 
-  virtual void Field(const float *x, float *b) const;
-  virtual void Field(const double *x, double *b) const;
-  virtual void ReadField(); 
-  virtual void SetSolenoidField(Float_t field = 2.) {fSolenoid = field;}
-  virtual Float_t SolenoidField() const {
-     return -Factor()*fSolenoid;
-  }
-  Int_t FZ(Double_t u, const Float_t *Ar, Float_t du, Int_t ki, Int_t nu) const;
-  Double_t Ba(Int_t kai, Double_t za1, Double_t za2, Double_t al1, Double_t al2, Double_t al3, Int_t ka, Int_t ma) const;
-  Double_t Bb(Double_t z1, Double_t z2, Double_t y1, Double_t y2, Double_t x1, Double_t x2, Int_t kvr, Int_t k, Int_t l, Int_t m) const; 
-
-
-protected:
-
-//
-  Float_t fSolenoid; // Solenoid Field Strength
-  Int_t   fInd;      // Character number of validity Map region
-
-  Float_t fZmin;  // Start of the cartesian  part  of MAP in z
-  Float_t fZmax;  // End of Map in z   
-  Float_t fYmax;  // Start of the cartesian  part  of MAP in y
-  Float_t fYmin;  // End  of the cartesian  part  of MAP in y
-  Float_t fZpmx;  // End of the polar  part  of MAP in z
-  Float_t fZpmn;  // Start of the polar  part  of MAP in z
-  Float_t fRmax;  // Maximal radius of the polar  part  of MAP 
-  Float_t fRmin;  // Minimal radius of the polar  part  of MAP  
-              
-
-  Float_t    fXdel;  //  step in x - cartesian  part  of MAP
-  Float_t    fYdel;  //  step in y - cartesian  part  of MAP
-  Float_t    fZdel;  //  step in z - cartesian  part  of MAP
-  
-  Float_t    fRdel;  //  step in r - polar  part  of MAP
-  Float_t    fPhid;  //  step in Phi - polar  part  of MAP
-  Float_t    fZpdl;  //  step in z - polar  part  of MAP 
-  
-  Float_t    fCx1;   // Field constant
-  Float_t    fCx2;   // Field constant
-  Float_t    fAx1;   // Field constant
-  Float_t    fAx2;   // Field constant
-   
-  Float_t fZc[81];  // z coordinates in cartesian  part
-  Float_t fY[81];   // y coordinates in cartesian  part 
-  Float_t fBcx[81][81][44]; // Bx array for cartesian  part
-  Float_t fBcy[81][81][44]; // By array for cartesian  part
-  Float_t fBcz[81][81][44]; // Bz array for cartesian  part
-
-  Float_t  fZp[51];  // z coordinates in polar  part
-  Float_t  fR[10];   // r coordinates in polar  part  
-  Float_t  fPhi[33]; // Phi coordinates in polar  part
-
-  Float_t  fBpx[51][10][33]; // Bx array for polar  part
-  Float_t  fBpy[51][10][33]; // By array for polar  part
-  Float_t  fBpz[51][10][33]; // Bx array for polar  part 
-  Float_t  fB[2][2][32];     // Limits of field
-  
-  Int_t      fXl;    // Number steps in x for cartesian  part
-  Int_t      fYl;    // Number steps in y  for cartesian  par
-  Int_t      fZl;    // Number steps in z  for cartesian  part
-    
-  Int_t      fRn;    // Number steps in r for polar  part
-  Int_t      fPhin;  // Number steps in Phi for polar  part
-  Int_t      fZpl;   // Number steps in z for polar  part 
-  
-
-  ClassDef(AliMagFDM,1) //Class Magnetic field map from IP till muon filter
-};
-
-#endif
diff --git a/STEER/AliMagFMaps.cxx b/STEER/AliMagFMaps.cxx
deleted file mode 100644 (file)
index 7db65ad..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-/**************************************************************************
- * 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$ */
-
-//------------------------------------------------------------------------
-// Magnetic field composed by 3 maps: the L3 magnet, extended region, and
-// dipole magnet
-// Used in the configuration macros (macros/Config.C, etc.)
-// Author: Andreas Morsch <andreas.morsch@cern.ch>
-//------------------------------------------------------------------------
-
-#include <TClass.h>
-#include <TFile.h>
-#include <TMath.h>
-#include <TSystem.h>
-
-#include "AliLog.h"
-#include "AliFieldMap.h"
-#include "AliMagFMaps.h"
-
-ClassImp(AliMagFMaps)
-    
-
-//_______________________________________________________________________
-AliMagFMaps::AliMagFMaps():
-  fSolenoid(0),
-  fSolenoidUser(0.),
-  fL3Option(0)
-{
-  //
-  // Default constructor
-  //
-  //
-  // Don't replicate field information in gAlice
-  fFieldMap[0] = fFieldMap[1] = fFieldMap[2] = 0;
-}
-
-//_______________________________________________________________________
-AliMagFMaps::AliMagFMaps(const char *name, const char *title, Int_t integ, 
-                         Float_t factor, Float_t fmax, Int_t map, 
-                         Int_t l3):
-  AliMagFC(name,title,integ,factor,fmax),
-  fSolenoid(0),
-  fSolenoidUser(0),
-  fL3Option(l3)
-{
-  //
-  // Standard constructor
-  //
-  fType         = kConMesh;
-  fFieldMap[0]  = 0;
-  fMap          = map;
-  fL3Option     = l3;
-  ReadField();
-  //
-  // Don't replicate field information in gAlice
-  for (Int_t i = 0; i < 3; i++)  fFieldMap[i]->SetWriteEnable(0);
-  //
-}
-
-//_______________________________________________________________________
-AliMagFMaps::AliMagFMaps(const AliMagFMaps &magf):
-  AliMagFC(magf),
-  fSolenoid(0),
-  fSolenoidUser(0),
-  fL3Option(0)
-{
-  //
-  // Copy constructor
-  //
-  magf.Copy(*this);
-}
-
-//_______________________________________________________________________
-AliMagFMaps::~AliMagFMaps()
-{
-  //
-  //  Destructor
-  //
-  delete fFieldMap[0];
-  delete fFieldMap[1];
-  delete fFieldMap[2];    
-}
-
-//_______________________________________________________________________
-void AliMagFMaps::ReadField()
-{
-  //  Read Field Map from file
-  //
-  //  don't read twice
-  //
-    if (!fReadField) return;
-    fReadField = kFALSE;
-  //    
-   
-
-  char* fname = 0;
-  TFile* file = 0;
-  if (fMap == k2kG) {
-      fSolenoid = 2.;
-      fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/L3B02.root");
-      file = new TFile(fname);
-      fFieldMap[0] = dynamic_cast<AliFieldMap*>(file->Get("L3B02"));
-      file->Close();
-      delete file;
-      delete [] fname; // see documentation to expand filenam
-      fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/DipB02.root");
-      file = new TFile(fname);
-      fFieldMap[1] = dynamic_cast<AliFieldMap*>(file->Get("DipB02"));
-      file->Close();
-      delete file;;
-      delete [] fname;
-      fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/ExtB02.root");
-      file = new TFile(fname);
-      fFieldMap[2] = dynamic_cast<AliFieldMap*>(file->Get("ExtB02"));
-      file->Close();
-      delete file;
-      delete [] fname;
-  } else if (fMap == k4kG) {
-      fSolenoid = 4.;
-      fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/L3B04.root");
-      file = new TFile(fname);
-      fFieldMap[0] = dynamic_cast<AliFieldMap*>(file->Get("L3B04"));
-      file->Close();
-      delete file;
-      delete [] fname;
-      fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/DipB04.root");
-      file = new TFile(fname);
-      fFieldMap[1] = dynamic_cast<AliFieldMap*>(file->Get("DipB04"));
-      file->Close();
-      delete [] fname;
-      delete file;
-      
-      fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/ExtB04.root");
-      file = new TFile(fname);
-      fFieldMap[2] = dynamic_cast<AliFieldMap*>(file->Get("ExtB04"));
-      file->Close();
-      delete [] fname;
-      delete file;
-  } else if (fMap == k5kG) {
-      fSolenoid = 5.;
-      fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/L3B05.root");
-      file = new TFile(fname);
-      fFieldMap[0] = dynamic_cast<AliFieldMap*>(file->Get("L3B05"));
-      file->Close();
-      delete file;      
-      delete [] fname;
-      fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/DipB05.root");
-      file = new TFile(fname);
-      fFieldMap[1] = dynamic_cast<AliFieldMap*>(file->Get("DipB05"));
-      file->Close();
-      delete file;
-      delete [] fname;
-      fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/ExtB05.root");
-      file = new TFile(fname);
-      fFieldMap[2] = dynamic_cast<AliFieldMap*>(file->Get("ExtB05"));
-      file->Close();
-      delete file;
-      delete [] fname;
-  }
-
-  if (!fL3Option) fSolenoidUser = fSolenoid;
-
-}
-
-//_______________________________________________________________________
-Float_t AliMagFMaps::SolenoidField() const
-{
-  //
-  // Returns max. L3 (solenoid) field strength 
-  // according to field map setting 
-  //
-  return -Factor()*fSolenoid;
-}
-
-//_______________________________________________________________________
-void AliMagFMaps::Field(const float *x, float *b) const
-{
-  //
-  // Method to calculate the magnetic field
-  //
-  // --- find the position in the grid ---
-  
-
-    
- //    if (!fFieldRead) ReadField();
-
-  //
-  // Field Maps have been calculated for the coordinate system in which 
-  // the Muon Spectrometer is placed at z > 0
-  // Transform coordinates corresponingly 
-  //
-  
-  b[0]=b[1]=b[2]=0;
-  Float_t xm[3];
-  xm[0] = - x[0];
-  xm[1] =   x[1];
-  xm[2] = - x[2];
-  
-  AliFieldMap* map = 0;
-  if (fFieldMap[0]->Inside(xm[0], xm[1], xm[2])) {
-      map = fFieldMap[0];
-      Float_t r = TMath::Sqrt(xm[0] * xm[0] + xm[1] * xm[1]);
-      
-      if (!fL3Option && TMath::Abs(xm[2]) < 370. && r < 550.) {
-      //
-      //     Constant L3 field , if this option was selected
-      //
-       b[2] = (- fSolenoid)*fFactor;
-         return;
-      } 
-  } else if (fFieldMap[1]->Inside(xm[0], xm[1], xm[2])) {
-    map = fFieldMap[1];
-  } else if (fFieldMap[2]->Inside(xm[0], xm[1], xm[2])) {
-    map = fFieldMap[2];
-  }
-  
-  if(map){
-      map->Field(xm,b);
-      b[0] = - b[0];
-      b[2] = - b[2];
-      
-      if(fFactor!=1) {
-         b[0]*=fFactor;
-         b[1]*=fFactor;
-         b[2]*=fFactor;
-      }
-  } else {
-      //This is the ZDC part
-      ZDCField(x, b);
-  }
-}
-
-//_______________________________________________________________________
-void AliMagFMaps::Field(const double *x, double *b) const
-{
-  //
-  // Method to calculate the magnetic field
-  //
-  // --- find the position in the grid ---
-  
- //    if (!fFieldRead) ReadField();
-
-  //
-  // Field Maps have been calculated for the coordinate system in which 
-  // the Muon Spectrometer is placed at z > 0
-  // Transform coordinates corresponingly 
-  //
-  
-  b[0]=b[1]=b[2]=0;
-  double xm[3];
-  xm[0] = - x[0];
-  xm[1] =   x[1];
-  xm[2] = - x[2];
-  
-  AliFieldMap* map = 0;
-  if (fFieldMap[0]->Inside(xm[0], xm[1], xm[2])) {
-      map = fFieldMap[0];
-      Float_t r = TMath::Sqrt(xm[0] * xm[0] + xm[1] * xm[1]);
-      
-      if (!fL3Option && TMath::Abs(xm[2]) < 370. && r < 550.) {
-      //
-      //     Constant L3 field , if this option was selected
-      //
-       b[2] = (- fSolenoid)*fFactor;
-         return;
-      } 
-  } else if (fFieldMap[1]->Inside(xm[0], xm[1], xm[2])) {
-    map = fFieldMap[1];
-  } else if (fFieldMap[2]->Inside(xm[0], xm[1], xm[2])) {
-    map = fFieldMap[2];
-  }
-  
-  if(map){
-      map->Field(xm,b);
-      b[0] = - b[0];
-      b[2] = - b[2];
-      
-      if(fFactor!=1) {
-         b[0]*=fFactor;
-         b[1]*=fFactor;
-         b[2]*=fFactor;
-      }
-  } else {
-      //This is the ZDC part
-      ZDCField(x, b);
-  }
-}
-
-//_______________________________________________________________________
-void AliMagFMaps::Copy(TObject & /* magf */) const
-{
-  //
-  // Copy *this onto magf -- Not implemented
-  //
-  AliFatal("Not implemented!");
-}
-
-//_______________________________________________________________________
-void AliMagFMaps::Streamer(TBuffer &R__b)
-{
-  // Stream an object of class AliMagFMaps.
-  if (R__b.IsReading()) {
-   R__b.ReadClassBuffer(AliMagFMaps::Class(), this);
-   // 
-   fReadField = kTRUE;
-   ReadField();
-  } else {
-    R__b.WriteClassBuffer(AliMagFMaps::Class(), this);
-  }
-}
diff --git a/STEER/AliMagFMaps.h b/STEER/AliMagFMaps.h
deleted file mode 100644 (file)
index 3256e24..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef ALIMAGFMAPS_H
-#define ALIMAGFMAPS_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-
-//
-// Magnetic field composed by 3 maps: the L3 magnet, extended region, and
-// dipole magnet
-// Author: Andreas Morsch <andreas.morsch@cern.ch>
-//
-
-#include "AliMagFC.h"
-class AliFieldMap;
-
-class AliMagFMaps : public AliMagFC
-{
-  //Alice Magnetic Field with constant mesh
-
-public:
-    enum constants {k2kG, k4kG, k5kG};
-    AliMagFMaps();
-    AliMagFMaps(const char *name, const char *title, Int_t integ,
-               Float_t factor, Float_t fmax, Int_t map = k2kG,
-               Int_t l3 = 1);
-    AliMagFMaps(const AliMagFMaps &mag);
-    virtual ~AliMagFMaps();
-    virtual void    Field(const float  *x, float  *b) const;
-    virtual void    Field(const double *x, double *b) const;
-    AliFieldMap* FieldMap(Int_t i) {return fFieldMap[i];}
-    virtual void ReadField();
-    virtual Float_t SolenoidField() const;
-    virtual void    SetL3ConstField(Int_t flag = 0) {fL3Option = flag;}
-    virtual void    SetL3ConstField(Float_t bsol, Int_t flag = 0)
-       {fL3Option = flag; fSolenoidUser = bsol;}
-    
-    AliMagFMaps & operator=(const AliMagFMaps &magf)
-      {magf.Copy(*this); return *this;}
-
-protected:
-    void Copy(TObject &magf) const;
-
-    AliFieldMap* fFieldMap[3];     // Field maps
-    Float_t      fSolenoid;        // Solenoid field setting
-    Float_t      fSolenoidUser;    // User set solenoid field setting  
-    Int_t        fL3Option;        // Option for field inside L3
-    ClassDef(AliMagFMaps,4)        // Class for all Alice MagField using three Maps with Constant Mesh
-};
-
-#endif
diff --git a/STEER/AliMagFMapsV1.cxx b/STEER/AliMagFMapsV1.cxx
deleted file mode 100644 (file)
index 6fcc4a1..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-/**************************************************************************
- * 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$ */
-
-//------------------------------------------------------------------------
-// Magnetic field composed by 4 maps: the L3 magnet (inside and outside measured region), 
-// extended region, and dipole magnet.
-// Used in the configuration macros (macros/Config.C, etc.)
-// Author: Andreas Morsch <andreas.morsch@cern.ch>
-//------------------------------------------------------------------------
-
-#include <TClass.h>
-#include <TFile.h>
-#include <TMath.h>
-#include <TSystem.h>
-
-#include "AliLog.h"
-#include "AliFieldMap.h"
-#include "AliMagFMapsV1.h"
-
-ClassImp(AliMagFMapsV1)
-    
-
-//_______________________________________________________________________
-AliMagFMapsV1::AliMagFMapsV1():
-  AliMagFMaps(),
-  fMeasuredMap(0) 
-{
-  //
-  // Default constructor
-  //
-}
-
-//_______________________________________________________________________
-AliMagFMapsV1::AliMagFMapsV1(const char *name, const char *title, Int_t integ, 
-                            Float_t factor, Float_t fmax, Int_t map, 
-                            Int_t l3):
-    AliMagFMaps(name, title, integ, factor, fmax, map, l3),
-    fMeasuredMap(0) 
-{
-    //
-    // Constructor
-    //
-    char* fname;
-    fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/mfcheb.root");
-    TFile* file = new TFile(fname);
-    if (fMap == k2kG) {
-       fMeasuredMap = dynamic_cast<AliMagFCheb*>(file->Get("Sol12_Dip6_Hole"));
-       fSolenoid = 0.2; // T
-    } else if (fMap == k5kG) {
-       fMeasuredMap = dynamic_cast<AliMagFCheb*>(file->Get("Sol30_Dip6_Hole"));
-       fSolenoid = 0.5; // T
-    } else if (fMap == k4kG){
-       fMeasuredMap = 0;
-       fSolenoid = 0.4; // T
-    }
-    
-    
-    
-    file->Close();
-    delete file;
-}
-
-
-//_______________________________________________________________________
-AliMagFMapsV1::AliMagFMapsV1(const AliMagFMapsV1 &magf):
-  AliMagFMaps(magf),
-  fMeasuredMap(0)
-{
-  //
-  // Copy constructor
-  //
-  magf.Copy(*this);
-}
-
-//_______________________________________________________________________
-AliMagFMapsV1::~AliMagFMapsV1()
-{
-    // Destructor
-    delete fMeasuredMap;
-}
-
-//_______________________________________________________________________
-void AliMagFMapsV1::Field(const float *x, float *b) const
-{
-  //
-  // Method to calculate the magnetic field at position x
-  //
-    const float kRmax2 = 500. * 500.;
-    const float kZmax  = 550.; 
-    const float kTeslaTokG = 10.;
-    const float kScale = 0.98838; // matching factor
-    
-    // Check if position inside measured map
-    float r2 = x[0] * x[0] + x[1] * x[1];
-    if (fMeasuredMap              &&
-       r2 < kRmax2               && 
-       TMath::Abs(x[2]) < kZmax
-       ) 
-    {
-       fMeasuredMap->Field(x, b);
-       b[0] *= kTeslaTokG;
-       b[1] *= kTeslaTokG;
-       b[2] *= kTeslaTokG;
-    } else {
-       AliMagFMaps::Field(x, b);
-       // Match to measure map
-       b[0] = - b[0] * kScale;
-       b[2] = - b[2] * kScale;
-       b[1] = - b[1] * kScale;
-    }
-}
-
-//_______________________________________________________________________
-void AliMagFMapsV1::Field(const double *x, double *b) const
-{
-  //
-  // Method to calculate the magnetic field at position x
-  //
-    const double kRmax2 = 500. * 500.;
-    const double kZmax  = 550.; 
-    const double kTeslaTokG = 10.;
-    const double kScale = 0.98838; // matching factor
-    
-    // Check if position inside measured map
-    double r2 = x[0] * x[0] + x[1] * x[1];
-    if (fMeasuredMap              &&
-       r2 < kRmax2               && 
-       TMath::Abs(x[2]) < kZmax
-       ) 
-    {
-       fMeasuredMap->Field(x, b);
-       b[0] *= kTeslaTokG;
-       b[1] *= kTeslaTokG;
-       b[2] *= kTeslaTokG;
-    } else {
-       AliMagFMaps::Field(x, b);
-       // Match to measure map
-       b[0] = - b[0] * kScale;
-       b[2] = - b[2] * kScale;
-       b[1] = - b[1] * kScale;
-    }
-}
-
-
-Float_t AliMagFMapsV1::SolenoidField() const
-{
-  //
-  // Returns max. L3 (solenoid) field strength 
-  // according to field map setting 
-  //
-       return fSolenoid;
-}
-
-void AliMagFMapsV1::Copy(TObject &fm) const
-{
-  // dummy since the base class constructor is dummy
-  AliMagFMaps::Copy(fm);
-  AliMagFMapsV1* fmp = (AliMagFMapsV1*) &fm;
-  fmp->SetMeasuredMap(fMeasuredMap);
-}
diff --git a/STEER/AliMagFMapsV1.h b/STEER/AliMagFMapsV1.h
deleted file mode 100644 (file)
index b94d642..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef ALIMAGFMAPSV1_H
-#define ALIMAGFMAPSV1_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-
-//
-// Magnetic field composed by 4 maps: the L3 magnet (inside and outside measured region), extended region, and
-// dipole magnet
-// Author: Andreas Morsch <andreas.morsch@cern.ch>
-//
-
-#include "AliMagFMaps.h"
-#include "AliMagFCheb.h"
-
-
-class AliMagFMapsV1 : public AliMagFMaps
-{
-public:
-    AliMagFMapsV1();
-    AliMagFMapsV1(const char *name, const char *title, Int_t integ,
-               Float_t factor, Float_t fmax, Int_t map = k2kG,
-               Int_t l3 = 1);
-    AliMagFMapsV1(const AliMagFMapsV1& maps);             
-    AliMagFMapsV1& operator=(const AliMagFMapsV1& maps) {maps.Copy(*this); return *this;}
-    virtual ~AliMagFMapsV1();
-    virtual void    Field(const float *x, float *b) const;
-    virtual void    Field(const double *x, double *b) const;
-    virtual Float_t SolenoidField() const;
-    AliMagFCheb* GetMeasuredMap()             &nb