bugfix: following the implementation of AliMagF, the abs value
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 5 Jun 2009 10:05:20 +0000 (10:05 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 5 Jun 2009 10:05:20 +0000 (10:05 +0000)
of AliMagF::SolenoidField has to be taken

HLT/sim/AliHLTSimulation.cxx

index 417e6d3..577813e 100644 (file)
@@ -47,6 +47,7 @@
 #include "AliMagF.h"
 #include "TGeoGlobalMagField.h"
 #include "TSystem.h"
+#include "TMath.h"
 
 #if ALIHLTSIMULATION_LIBRARY_VERSION != LIBHLTSIM_VERSION
 #error library version in header file and lib*.pkg do not match
@@ -171,7 +172,11 @@ int AliHLTSimulation::Init(AliRunLoader* pRunLoader, const char* options)
     Double_t solenoidBz=0;
     AliMagF *field = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
     if (field) {
-      solenoidBz=field->SolenoidField()*field->Factor();
+      // this field definition is rather awkward: AliMagF::SolenoidField returns
+      // a signed value, the amazing thing is that the sign is opposite to that
+      // one in the factor. So the abs value has to be used. Lets assume, there
+      // is a reason for that confusing implementation ...
+      solenoidBz=TMath::Abs(field->SolenoidField())*field->Factor();
       AliDebug(0,Form("magnetic field: %f %f", field->SolenoidField(),field->Factor()));
     } else {
       // workaround for bug #51285