The present commit corresponds to an important change in the way the
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.
- [DB] GRP/UpdateCDBGRPEntryMC.C