]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliMagF.h
Moving the OCDB object and mag field from the selector's input list to the input...
[u/mrichter/AliRoot.git] / STEER / AliMagF.h
CommitLineData
aee8290b 1#ifndef ALIMAGF_H
2#define ALIMAGF_H
3da30618 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
db83d72f 6//
7// Interface between the TVirtualMagField and AliMagWrapCheb: wrapper to
8// the set of magnetic field data + Tosca parameterization by
9// Chebyshev polynomials
10//
11// Author: ruben.shahoyan@cern.ch
12//
fe4da5cc 13
db83d72f 14//#include <TGeoGlobalMagField.h>
15#include <TVirtualMagField.h>
16class AliMagWrapCheb;
0742d588 17
db83d72f 18class AliMagF : public TVirtualMagField
19{
20 public:
21 enum BMap_t {k2kG, k5kG, k5kGUniform};
22 enum BeamType_t {kBeamTypeAA, kBeamTypepp, kNoBeamField};
23 //
e2afb3b6 24 AliMagF();
db83d72f 25 AliMagF(const char *name, const char* title, Int_t integ,
26 Double_t factorSol=1., Double_t factorDip=1.,
27 Double_t fmax=15, BMap_t maptype = k5kG,
28 const char* path="$(ALICE_ROOT)/data/maps/mfchebKGI_sym.root",
29 BeamType_t btype=kBeamTypepp, Double_t benergy=7000., Bool_t compensator=kFALSE);
30 AliMagF(const AliMagF& src);
31 AliMagF& operator=(const AliMagF& src);
32 virtual ~AliMagF();
33 //
34 virtual void Field(const Double_t *x, Double_t *b);
35 void GetTPCInt(const Double_t *xyz, Double_t *b) const;
36 void GetTPCIntCyl(const Double_t *rphiz, Double_t *b) const;
37 Double_t GetBz(const Double_t *xyz) const;
38 //
39 AliMagWrapCheb* GetMeasuredMap() const {return fMeasuredMap;}
40 //
41 // former AliMagF methods or their aliases
42 void SetFactorSol(Float_t fc=1.) {fFactorSol = fc;}
43 void SetFactorDip(Float_t fc=1.) {fFactorDip = fc;}
44 Double_t GetFactorSol() const {return fFactorSol;}
45 Double_t GetFactorDip() const {return fFactorSol;}
46 Double_t Factor() const {return GetFactorSol();}
47 Bool_t IsUniform() const {return fMapType == k5kGUniform;}
48 //
49 void MachineField(const Double_t *x, Double_t *b) const;
50 BMap_t GetMapType() const {return fMapType;}
51 Bool_t GetCompensator() const {return fCompensator;}
52 BeamType_t GetBeamType() const {return fBeamType;}
53 Double_t GetBeamEnergy() const {return fBeamEnergy;}
54 Double_t Max() const {return fMax;}
55 Int_t Integ() const {return fInteg;}
56 Int_t PrecInteg() const {return fPrecInteg;}
57 Double_t SolenoidField() const {return -fFactorSol*fSolenoid;}
58 //
59 Char_t* GetDataFileName() const {return (Char_t*)fParNames.GetName();}
60 Char_t* GetParamName() const {return (Char_t*)fParNames.GetTitle();}
61 void SetDataFileName(const Char_t* nm) {fParNames.SetName(nm);}
62 void SetParamName(const Char_t* nm) {fParNames.SetTitle(nm);}
63 //
64 Bool_t LoadParameterization();
65 //
a0201063 66 protected:
db83d72f 67 // not supposed to be changed during the run, set only at the initialization via constructor
68 void InitMachineField(BeamType_t btype, Double_t benergy);
69 void SetBeamType(BeamType_t type) {fBeamType = type;}
70 void SetBeamEnergy(Float_t energy) {fBeamEnergy = energy;}
71 void SetCompensatorMagnet(Bool_t flag) {fCompensator = flag;}
72 //
73 protected:
74 AliMagWrapCheb* fMeasuredMap; //! Measured part of the field map
75 BMap_t fMapType; // field map type
76 Double_t fSolenoid; // Solenoid field setting
77 BeamType_t fBeamType; // Beam type: A-A (fBeamType=0) or p-p (fBeamType=1)
78 Double_t fBeamEnergy; // Beam energy in GeV
79 Bool_t fCompensator; // Flag for compensator magnetic field (kTrue -> ON)
80 //
81 Int_t fInteg; // Default integration method as indicated in Geant
82 Int_t fPrecInteg; // Alternative integration method, e.g. for higher precision
83 Double_t fFactorSol; // Multiplicative factor for solenoid
84 Double_t fFactorDip; // Multiplicative factor for dipole
85 Double_t fMax; // Max Field as indicated in Geant
86 Bool_t fDipoleOFF; // Dipole ON/OFF flag
87 //
88 Double_t fQuadGradient; // Gradient field for inner triplet quadrupoles
89 Double_t fDipoleField; // Field value for D1 and D2 dipoles
90 Double_t fCCorrField; // Side C 2nd compensator field
91 Double_t fACorr1Field; // Side A 1st compensator field
92 Double_t fACorr2Field; // Side A 2nd compensator field
93 //
94 TNamed fParNames; // file and parameterization loadad
95 //
96 static const Double_t fgkSol2DipZ; // conventional Z of transition from L3 to Dipole field
97 static const Double_t fgkBMachineZ1; // Min Z of the LHC mag field range (to be checked?)
98 static const Double_t fgkBMachineZ2; // Max Z of the LHC mag field range
99 //
100 ClassDef(AliMagF, 1) // Class for all Alice MagField wrapper for measured data + Tosca parameterization
fe4da5cc 101};
7a15f6b8 102
db83d72f 103
fe4da5cc 104#endif