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 44ead561369e4edd811d376292d1bb2a857b8fab..a34e33e1bb4af3c5a31484df6dea218aad38bf14 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 806dc2dccd86fc1e8f03235d97f4d3324d3ae1af..463459f027fb3bc05721aa781f981202e6bf4e72 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 ============================
-
-
-
+    {
+        //=================== 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 2838a7eec823016e069238c6197f02f7db5bc1be..5fda6f7b4e812d167734b747c80c0ccfc213766f 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 7041c580fd3650cf81b4c1e62bb2203888ec0e32..8f037ce0bae3e2d17ea7ee1c52c0c1beb3751e57 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 781edf41baf0fca5d9b40e609b5af37a9905cfea..b030d72638f9b7d3b837c07ef13c7873c1fa1ac2 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 e293378c88734e12ee462caec19d5897f7111659..ce2098f1e6583872c631b7a6fd39bd4d7652755e 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 947339f797a4d5eeb3f4b7c6c2c66419f1bcaef0..fa92de7bf4b95353a8f29427234af3dc1cc53b6d 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 451654139bcc0d5f9748136ea25265521a637e63..2a53633c0913652641f680d6e68548872909aaa8 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 4869ed3fd05cc4033caa896750a2ecd9620d54cb..2f7478bb5e3eccfe203494df0ae8d12ffd496efd 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 16a3ec2bc100c1f203790a9512cd686085ee67c2..e63feea2f71aa04ff4546fec88215acca1164d55 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 6a0973d0ba21a8db4e68f9813050cd1d5a50b2ed..ad08fb6d1d00b045ef13e622ae10f42017c5ceff 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 228e40a8d79662d1a4ff7ea6c985a375f6f107f8..4868042b6253a58c8355c96ea7f5edc3b8526547 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 683e4b3b0c2e037e646b5873a43da04c597feb54..782cde17743e43a4efa1e6349413c6f8c7127f59 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 2e487cabf29e19ce839c83d322a50788f0f5bb6d..6dc80cd58e8fcee309a66f121b734266f30e0822 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 f79842a61178084ab67395cee9fbd0d34e3fa531..9a5a47a34a54c0ba35d0b8daee37fc1338bbdeb5 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 20ca3c75598179d9f4d05326f5606f40a4c74103..d157f97a5904edc7733026e6e0276ab37b73a77a 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();
 }
 
 //______________________________________________________________________________
@@ -813,37 +809,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 4092c9bb50117590665ca4cd30805d2816696252..e4729d5b33c0083b4f557e14f5a21f301411cbc3 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 ea09a82fd1d6815922d2c071e45501bb8f1448a8..185338fdf64ad31cfd86e2180b7ff480bd96ff0b 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 abd20375f04838be4c1ab668db5043aef5bf7a7c..3c8e74ff8b5fb92f02971eecf800dfa674056da1 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 902cc680c0263709d88ed4ca98bed760b5f1f655..3f381538210ac7b20bcfeb11025af93c6e06e548 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 2d08530435032fec95fc6a72fc6a25828cbbb29a..312a40ba3def638969933f7c6e59451a29132fd7 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 8e778889ebac0a9cf2009c34aba46dcec3d9884f..37a28200b661d9d556bad067a0f94ee9624e4237 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 8e4105e328ededd1509c2e4148d63e38fff1d5a3..2e19aebfd68b992ed3a75e88207ca914883abec9 100644 (file)
@@ -151,13 +151,6 @@ enum Rad_t {
   kNoGluonRadiation            //
 };
 
-//____________________________________________________________________
-enum Mag_t {
-  k2kG,                                //
-  k4kG,                                //
-  k5kG                         //
-};
-
 //____________________________________________________________________
 enum MC_t {
   kFLUKA, 
@@ -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 fd66eaca8e9ddd9327a6300fbe7bff01a670a5bb..a1f6a6d118b7c39d53a3a3a468d39f1296e22e32 100644 (file)
@@ -150,13 +150,6 @@ enum Rad_t {
   kNoGluonRadiation            //
 };
 
-//____________________________________________________________________
-enum Mag_t {
-  k2kG,                                //
-  k4kG,                                //
-  k5kG                         //
-};
-
 //____________________________________________________________________
 enum MC_t {
   kFLUKA, 
@@ -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 5d174b15ed3093ec08295e5733f1aee7be6bc24a..2ec6debd97aa21f01a866c0f2cee4a2759ffd032 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 9e66496a0c88c08fd76bb0a20844e3a48a9f5463..0d5cb620df2ad49e8664b0cf762d4ca118933b58 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 711ef0fc1add1954813fec85b06d0ad06d640257..567a5f6bde68dd4edbc27de07d9a4af4adb5703c 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 e79c75d8e9ce111adb391fc59a57c7962cf45cdc..8ea894e6cd23125b2bc8b59be04ba89a7f10fc8b 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 d54f838dbed3bd9f5674db0939a46c61abe37f29..3351b294434d22af45be7dafd355558431a7ffc1 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 a30db0618cd1e656f0dd83a21563568b9e4691a6..7db0ea24996c634bb0f74ca8fb2d584737cea8ff 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 eb392c0b7f621a1238f71080a685ad8a1ff3cd91..461e4ed5a40c81112b592bb7fb76fc4240474d98 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 de6d0107f40596356f4e8554ee1fe8f5112442b8..076ccc7116f5b1d6f556396c6c5c83d825f7c3c1 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 e48209e6cc426ef46911533677b3c911ff4559cb..111817bf0fcf3dc6043c918fb9e70c8453ce32bf 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 17f562894b51df13b0246d4f05c42105042f6eba..53a2de9fdb15df78ea28643c7a61597f7450988a 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 541268e7af54afda41bdf3577388388d0c9bfef8..c0ea263e6ad6d2338ffc5e172fe918b99f269e4a 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 7a789fe41252360231629d15b512995db865ca3b..25c451a9a37164edc642516e9d71c8ca8ded8241 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 16b4a6f8a15aa5307f934cf74e0e1fb6a22487d8..05deaf9e07a6916e32b140f43e23ca77a5f65ad8 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 b0af5dea0b35ce66031803fd20861a62703586b8..d3f988b96575e58b5949d926d1f04c9bd3a18d2a 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 2c801c7f76c2ad516dd515195d938108238b5de7..cc31a4347f4c81476b0c44ae0648db71e5d7cfaf 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 5991104a77baba6b94c911a30d61dc2669200e65..570e107d528e5ef3057d17822c5af0d853309b02 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 e4069d11ebbd97ac5d217500dd83065dc41ba9af..fcd89c0dde39df735a0f642551dca58b5c143295 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 52cab27526ef6015191a5d2a28e203a004ddcd7f..204fba649fdacebf73838585edf108d5a8451558 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 f211b158d15c1f25dc995076b23953a1403dbcdd..68bea65dc752fefa92842fd718923a86c3786011 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 f737662df44b7ca93bf9171d092e27c28926617d..18a3a5637e8338dc41506146203ea91196ad85c4 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 e68d9c8fbc8b91b6ae38c2fd6ff8c5cf0c1a5e9f..653d93c400e35841288a310a3d0809c1144bde4f 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 a19b177aacf85b0091b8d3dcab11148e87e374b2..16ff97512132df9ef9a4c87534c805619871daa5 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 df9fd9030e2f84cc1a9a5c88a0e31e7e02c4359b..2ae5d4836895d59547a217821f18b733f12f92ae 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 0a03db382d56dc66269e293302c2925a17433169..e1fb5fe8710817be0f5a0ba8f89d3f0b69d5c4f4 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 94807477d3f7e0063e02ff452974ae54d4662069..0e36b96a20e01772b835301b86674c53d562b42f 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 73cfeb6d10ec77d6942d5e7eab2ab84454d4a11a..60bd7a78ba98181440727b953fcdb2b23d6d881d 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 594ae588a5091d817f69da9b3c49f5bbfec76404..f29efa535d062aef1d8589bedd713d4a69c7f5c2 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 47b394f4cb7030f1b2959d756e5c1b4372c85955..335abb106845b4250972b6ac421e60e837dc0f8e 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 b16ba769b3e22da951e465942f85ccab26a2299e..a1e070accefdf95b5ec7cdddd7ff6bf8ec93ea8f 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 861f2fc6fc6b6f57b6094132ff8220175cc10f1f..db2254cc35888e420728b782ed8c3711a7d817b3 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 de55c1a6af059a89c01efa97a9299d0534938709..89fc50dc36ac372863597275d38173d015997a54 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 056c4f3d46b7e3e6ee0f2bb0053a1ead087eec62..7a6bb811f9b41f925caf59aea04b49e81d81fcd1 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 30b44ac2910fc1cca3bc5672dbd5d7594193aad8..0fbd463861ed37a60ddf04e6fc202e2579cf1e2f 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 a7e3ee97ed09357512e5360639554c417d6576b8..eb6ec2108fe4c56bc3bcb7b2d78edf1e706dacbc 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 0fcfe39678bd206fdae51a4144e151e546cbc603..1d2c3b64cf22218935a0c7d8b724de07360c498f 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 ddce1fc687c3c05ba4856c20ecab8c5f913fa56b..62fb3e33e80233c15069c303199faa18cf55b74d 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 0e392310ae734a521c893f58c9021057d8c51156..8490d38dc0d71b802479c0251158701558acbf6c 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 e3896eaeefd42514ee771f1811e32f185783cbf0..9a3fd95af3f657e28dd87820e1ca20fbe947a7d0 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 097055fdd235a8f6525800487a4208ba63ae083f..b1a1e85b04c74a7850becf0e46cfa19a57d3c5da 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 66fa292bbfe2c1607990aba259ffea0ff8e90d3b..2844e4e0f33e392266cfd0fd3fe0c7a12650d359 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 8cd7c4eb78eeede4e26106cafea9e26a390160cb..3ec260d91b5e7c7c9d13e911aa0563ca13a5c719 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 9dd394fb0e5229716a5e54cfd0e3b5a9aa32eab6..076d08f3dd1dcde1e4112ff2d3ad8a04cf318188 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 7de81b999c27d7cd2127b063f470fd4eb909b09e..ba3267e8a4ec664cfa95c75d5c99bf997ad75a44 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 931749c010afad7c8c01be7ccf5c6c0353b8cce0..69101c2961b76743c53a7315fc6d6cecc3880871 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 fe49cbcfe5b657f20deb873ae389855aafc780b9..2bde3773b69bb33f78864b77cb5d74ec0e7c33f3 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 dd42accaa3ce59d9e3110db724e7b2ba61af84cf..1e28e115a0f229854b31dfe7b2e8ee4f7c855081 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 e2339ccdbe9fd2fa5d528056377c06f2e622e1f9..f793f900358fe3b93d7fbe90549eeec4f6f2604b 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 ae79a87b408987d3d6514f33df598423c2b0d018..bb936c61f5cdc9da4743d510e26093d7f031ff3b 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 d07e20d0ed57099f16110e08f011a8bc5303d580..4402d958f357c36d0c0995140be7882717f2d9f9 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 dc98a475a1161d0121733844a342bef5a6190c81..b7bc9d71c652c6ad2ceb69bbf1e9841ec8f36d1e 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 470909e541afc233851b98fa215198935d454671..320855c40acaa79f4d0b7c87e50ed8282148ad83 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 7794a22d0459e4f4861cf5a0354ba5e011f71d6b..adc0742a416830a8dadb91808103aeb1e7c20814 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 d09f8827af5020cd66ab5b691b39f2ffd8e2ebca..924a5c1819a870f39624f73c55dc6971e86da32f 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 086c0f157bbc6b0861e8a2bbb66cb6bb485a1254..4b28ce625331366cc7a663a7b10cf0c0db55d47c 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 308f851f172e0696d9e0052e0db3ed3eaa65b836..15c27d834144d377a9f94443f56c07873bedcbfc 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 61aaca937198ffb7cb41539a424394fa9b40b80b..b2049b4894689bb077635ac73fa47bd239550f83 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 19c34641ebca1ff4d2b2d66a9f82dcb4a36e327e..2830ca04723cb132ee5947c8e75c29728da9a46e 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 53ab61c917d9a9461aea75ebb00cfe6b3f6b9af4..5276dca29ed8287cb80b605f212d2a24193523bd 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 57c59848b2e1b0ec96c43b1c4700e5a0c4fb70e0..26f50133aae9d5af676f9d4d7a802bd68cfc75e4 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 68eb96c49cf2fd1bd7330519b3ee10987b977167..cb6fd661189cad77c434e04adda5d21b11ee0687 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 49ebf4dd447703c8c2efd9f8b2a82f77efff735f..fb0dde761f947a1ebe54ef7d45432013f9c2d433 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 cbf9f4f2cc8e3c95bd0c509b0799598e826725df..e2f67adc47d9749dcb6bec9b147bce9fbab7ec6c 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 be8f88c39ce17daab2d6cd85134224e84b3f0c3e..6f00fe90d4469321f137670849d61a9e68dd739f 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 6f95f7241415a306b111ecc08d1c47a97e12a0b9..4ce99bbdc7121279f758adf788c95f017cdf8a5f 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 6acd0409f632e97c0d79f004100033a176989422..36244b0668669f4e1baba43f0ff54516739286f9 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 02f8e796407d66f837f2414c5cc4bd7c518693c8..cee85ca08a3793eb0bfbf8b9fef85c3fb2cb6684 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 fada01fea47d0e20e3c43f78949150f0a5dc8878..4bea8943ed12dcdb96da4b42c285b006932c1d2a 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 d53a35394a87fae56f7cc06485997ffc6c278f6b..34176ebc08c8abe07ebebf3758219f694740835f 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 6e0c37b305d4b80b9b6f27fa5bfcf4a76d8c66b5..19500204935941ff88cd0d77151660ad96a6f60f 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 e4326ccc4f7a2dc205c1b351fc6ed5d14eca1e09..ce752fed8ba7f1d59734423b4e7ace4948b984b6 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 7237e48b3e306f26052ab2a1c8e58518b509f365..3acd495f518cfbe791ba042daffa032bebd0b746 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 46b8b9834cb2ffb258bdde2416c2b2939b9e5214..a6c8d91536ce8fd776a4430e695db1ff4eb59997 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 e7cec7c5fe310e4922321ff89781ecde041a14a4..a42ce7848f8edf6414d61f2d3947f2d4868c82b8 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 dde85f477cbc734e0f4ee69a2fb6f3ab69e08979..faf122dfcac34c506f46096d3331ee933a89f652 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 027ab17e37103ef16b037b44e4e25960685310bd..8533ed521be7c39f0f4f85ba824ef2a3a821a8c8 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 a22bd90eb8682d873d54d49c8472b23901ed69f0..e775cb06c12ee54e82476d0be9a741d44d487adf 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 76c9aaebe38538faa45aa29796d519448837ccde..5c856cbdcb40cd778be97b3efb37a295333f767f 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 37df54f7e18909a529314849951db10bac9a79a1..88ef9c771cffc4c903c8c80da5de7b21731f36e8 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 b7f32896c479a54482985e35c2699b22fcbf54f6..2bbe0faae2b92c125bb4a42010ad36e8026cd833 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 e6608868977659a24cd4e3dbd775e9fb902f942f..a3e3120087b782657608ecb1814a80ba0d240ace 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 5ee8ce8d1cb7432e1be134f98c80adc25689bfbc..1b8e5c9b348cea5c087ff8d1ac9b9411c59fab26 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 71e8c15649732be4aba4afa2ab99c35a88cd22ac..cec288039e5ed582de18b0b8abbe43124d5b3551 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 c6fce8d82f438c1efebe87669134b980b232b6db..afc9e146d4c504705e4b2e120afa332afb2a97c6 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 1f0ca266aa193037cfee574b31912c3ff27054e5..2afbed4dbbdace26cbf640e474c4a66382aa64a4 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 1c79035bd89f5d0e0963d0a8844d773ec5df2740..9cce74d519b833b98ef2e13a486338bc92257761 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 2c2da9f74e7893cdee61a9c6192f561b4d13a82c..f5342222c23148db0fff95d2ef9f11dac8e0df45 100644 (file)
@@ -26,7 +26,7 @@ class TGraph;
 class TGeoManager; 
 class TString;
 class TStatToolkit; 
-class AliMagFMaps;
+class AliMagF;
 class AliESDVertex;
 
 #include "TNamed.h"
index f9f1a369f7ddfc0cc9984584efb124890a56d4ea..eb3bb4381b840b376684aa10f41b7ab3ab28d2d7 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 11b0a3d5618f6af167e8728b8086ca2c6f624f0e..1c2ed35c2f7eae9c5c958caa29830747d320495b 100644 (file)
@@ -8,7 +8,7 @@
 //------------------------------------------------------------------------------
 
 class AliComparisonObject;
-class AliMagFMaps;
+class AliMagF;
 class TList;
 
 #include "AliAnalysisTask.h"
index 57c61ec9a6b965db4eb0b32a8df057ff4e66325f..319c5e89dd6226fadd18997ab28c5801085a5f92 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 0937503a12af193968dc64cfb906eaf91a2bf7fb..548d6baa37ec22f7717164bc446f866b7cb22dc2 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 937aed88069644196e565f7ac2ed914284ad3998..7e810be52c03112622d62867d4877f50219cc7b5 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 c4a2bdaf03d1a8975e9db79e61f1167f144a7638..7555104c52c85502f501f63bf222b9428bf87089 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 7a3e123bd9eae150c8302da3f6ff9f84a4be3e1b..d5a650580b6f39106fdea013984270e71b44d491 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 f87ecf7439643b6dc3f1cd7cdbc9ca507c541a84..a03d69d737fca8cfd996e0a392d5e898a1c34073 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 9a3df4dfac06dc74dc9c8277efc76b47712b9b9d..17500460cc81ba27c12236cd145f5b555cd67690 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>
@@ -692,13 +693,6 @@ void AliMC::FinishEvent()
   AliDebug(1, "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
 }
 
-//_______________________________________________________________________
-void AliMC::Field(const Double_t* x, Double_t* b) const
-{
-  // Calculates field "b" at point "x"
-    gAlice->Field(x,b);
-}
-    
 //_______________________________________________________________________
 void AliMC::Init()
 {
@@ -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 3e434f834c8293b6c6a1aa66205fa85346740434..f5de1698fa46f57a165e5d91179689e6e136843c 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              &&