* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-Revision 1.7 2000/10/02 21:28:14 fca
-Removal of useless dependecies via forward declarations
-
-Revision 1.6 2000/07/11 18:24:59 fca
-Coding convention corrections + few minor bug fixes
-
-Revision 1.5 2000/06/09 19:55:18 morsch
-Introduce new class AliMagFDM - Galina Chabratova
-
-
-Revision 1.4 2000/03/28 12:40:24 fca
-Introduce factor for magnetic field
-
-
-Revision 1.3 1999/09/29 09:24:29 fca
-Introduction of the Copyright and cvs Log
-
-*/
+/* $Id$ */
+//----------------------------------------------------------------------
+// Basic magnetic field class
+// Used in all the detectors, and also in the traking classes
+// Author:
+//----------------------------------------------------------------------
+#include "AliLog.h"
#include "AliMagF.h"
-#include <stdlib.h>
-#include <stdio.h>
-
-
ClassImp(AliMagF)
-//________________________________________
-AliMagF::AliMagF(const char *name, const char *title, const Int_t integ,
- const Float_t factor, const Float_t fmax)
- : TNamed(name,title)
+//_______________________________________________________________________
+AliMagF::AliMagF():
+ fMap(0),
+ fType(0),
+ fInteg(0),
+ fPrecInteg(1),
+ fFactor(0),
+ fMax(0),
+ fReadField(1)
+{
+ //
+ // Default constructor
+ //
+}
+
+//_______________________________________________________________________
+AliMagF::AliMagF(const char *name, const char *title, Int_t integ,
+ Float_t factor, Float_t fmax):
+ TNamed(name,title),
+ fMap(0),
+ fType(0),
+ fInteg(0),
+ fPrecInteg(1),
+ fFactor(factor),
+ fMax(fmax),
+ fReadField(1)
{
//
// Standard constructor
//
if(integ<0 || integ > 2) {
- Warning("SetField",
- "Invalid magnetic field flag: %5d; Helix tracking chosen instead\n"
- ,integ);
- fInteg = 2;
+ AliWarning(Form(
+ "Invalid magnetic field flag: %5d; Helix tracking chosen instead"
+ ,integ));
+ fInteg = 2;
} else {
- fInteg = integ;
+ fInteg = integ;
}
+
+ if (fInteg == 0) fPrecInteg = 0;
+
fType = kUndef;
- fFactor = factor;
- fMax = fmax;
+ //
}
-//________________________________________
-void AliMagF::Field(Float_t*, Float_t *b)
+//_______________________________________________________________________
+AliMagF::AliMagF(const AliMagF &src):
+ TNamed(src),
+ fMap(src.fMap),
+ fType(src.fType),
+ fInteg(src.fInteg),
+ fPrecInteg(src.fPrecInteg),
+ fFactor(src.fFactor),
+ fMax(src.fMax),
+ fReadField(src.fReadField)
+{
+ // Copy constructor
+}
+
+//_______________________________________________________________________
+void AliMagF::Field(Float_t*, Float_t *b) const
{
//
// Method to return the field in one point -- dummy in this case
//
- printf("Undefined MagF Field called, returning 0\n");
+ AliWarning("Undefined MagF Field called, returning 0");
b[0]=b[1]=b[2]=0;
}
-
-
-
-
+//_______________________________________________________________________
+void AliMagF::GetTPCInt(Float_t *, Float_t *b) const
+{
+//
+// Obtain the integral of the field components in the TPC from given point
+// to the closest cathod plane
+//
+ AliWarning("Undefined MagF TPCIntegral called, returning 0");
+ b[0]=b[1]=b[2]=0;
+}
+//_______________________________________________________________________
+void AliMagF::GetTPCIntCyl(Float_t *, Float_t *b) const
+{
+//
+// Obtain the integral of the field components in the TPC from given point
+// to the closest cathod plane
+//
+ AliWarning("Undefined MagF TPCIntegral called, returning 0");
+ b[0]=b[1]=b[2]=0;
+}
+//_______________________________________________________________________
+AliMagF& AliMagF::operator=(const AliMagF& rhs)
+{
+ // Asignment operator
+ fMap = rhs.fMap;
+ fType = rhs.fType;
+ fInteg = rhs.fInteg;
+ fPrecInteg = rhs.fPrecInteg;
+ fFactor = rhs.fFactor;
+ fMax = rhs.fMax;
+ fReadField = rhs.fReadField;
+ return *this;
+}
+void AliMagF::SetPrecInteg(Int_t integ)
+{
+ if (fInteg > 0) {
+ fPrecInteg = integ;
+ }
+ else if (integ != 0)
+ {
+ AliWarning("Precision integration flag set to 0 \n");
+ fPrecInteg = 0;
+ }
+}