-#ifndef ALITPC_EXB_EXACT
-#define ALITPC_EXB_EXACT
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+////
+// An exact implementation of the ExB effect.
+////
+
+#ifndef ALITPCEXBEXACT_H
+#define ALITPCEXBEXACT_H
#include "AliTPCExB.h"
-#include "AliFieldMap.h"
-#include "AliMagF.h"
+
+class AliMagF;
class AliTPCExBExact:public AliTPCExB {
public:
- AliTPCExBExact(const AliFieldMap *bFieldMap,Double_t driftVelocity,
- Int_t n=100);
+ AliTPCExBExact(); // just for the I/O stuff
+ //AliTPCExBExact(const AliMagF *bFieldMap,Double_t driftVelocity,Int_t n=100);
AliTPCExBExact(const AliMagF *bField,Double_t driftVelocity,Int_t n=100,
- Int_t nx=100,Int_t ny=100,Int_t nz=100);
+ Int_t nx=30,Int_t ny=30,Int_t nz=100);
virtual ~AliTPCExBExact();
virtual void Correct(const Double_t *position,Double_t *corrected);
- void TestThisBeautifulObject(const char* fileName);
+ //void TestThisBeautifulObject(const AliFieldMap *bFieldMap,const char* fileName);
+ void TestThisBeautifulObject(const AliMagF *bField,const char* fileName);
+protected:
+ Double_t fDriftVelocity; // The electron drift velocity.
private:
AliTPCExBExact& operator=(const AliTPCExBExact&); // don't assign me
AliTPCExBExact(const AliTPCExBExact&); // don't copy me
+ void TestThisBeautifulObjectGeneric(const char* fileName);
void CreateLookupTable();
- void GetE(Double_t *E,const Double_t *x) const;
- void GetB(Double_t *B,const Double_t *x) const;
+ void GetE(Double_t *e,const Double_t *x) const;
+ void GetB(Double_t *b,const Double_t *x) const;
void Motion(const Double_t *x,Double_t t,Double_t *dxdt) const;
void CalculateDistortion(const Double_t *x,Double_t *dist) const;
void DGLStep(Double_t *x,Double_t t,Double_t h) const;
- const AliFieldMap *fkMap; // the magnetic field map as supplied by the user
- const AliMagF *fkField; // the magnetic field as supplied by the user
- Int_t fkN; // max number of integration steps
- Int_t fkNX; // field mesh points in x direction
- Int_t fkNY; // field mesh points in y direction
- Int_t fkNZ; // field mesh points in z direction
- Double_t fkXMin; // the first grid point in x direction
- Double_t fkXMax; // the last grid point in x direction
- Double_t fkYMin; // the first grid point in y direction
- Double_t fkYMax; // the last grid point in y direction
- Double_t fkZMin; // the first grid point in z direction
- Double_t fkZMax; // the last grid point in z direction
- Double_t *fLook; // the great lookup table
- static const Double_t fgkEM; // elementary charge over electron mass (C/kg)
- static const Double_t fgkDriftField; // the TPC drift field (V/m) (modulus)
+ //const AliFieldMap *fkMap; //! the magnetic field map as supplied by the user
+ const AliMagF *fkField; //! the magnetic field as supplied by the user
+ Int_t fkN; // max number of integration steps
+ Int_t fkNX; // field mesh points in x direction
+ Int_t fkNY; // field mesh points in y direction
+ Int_t fkNZ; // field mesh points in z direction
+ Double_t fkXMin; // the first grid point in x direction
+ Double_t fkXMax; // the last grid point in x direction
+ Double_t fkYMin; // the first grid point in y direction
+ Double_t fkYMax; // the last grid point in y direction
+ Double_t fkZMin; // the first grid point in z direction
+ Double_t fkZMax; // the last grid point in z direction
+ Int_t fkNLook; // size of the lookup table
+ Double_t *fkLook; //[fkNLook] the great lookup table
+ static const Double_t fgkEM; //! elementary charge over electron mass (C/kg)
+ static const Double_t fgkDriftField; //! the TPC drift field (V/m) (modulus)
ClassDef(AliTPCExBExact,1)
};