ROOT logo
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

////
// An approximate (first order) implementation of the ExB effect.
////

#ifndef ALITPCEXBFIRST_H
#define ALITPCEXBFIRST_H

#include "AliTPCExB.h"
//class AliFieldMap;
class AliMagF;

class AliTPCExBFirst:public AliTPCExB {
public:
  AliTPCExBFirst();
  //  AliTPCExBFirst(const AliFieldMap *bFieldMap,Double_t driftVelocity);
  AliTPCExBFirst(const AliMagF *bField,Double_t driftVelocity,
		 Int_t nx=100,Int_t ny=100,Int_t nz=100);
  virtual ~AliTPCExBFirst();
  virtual void Correct(const Double_t *position,Double_t *corrected);
  void TestThisBeautifulObject(const char* fileName);
  void SetDriftVelocity(Double_t driftVelocity) {
    fDriftVelocity=driftVelocity;
  };
protected:
  Double_t fDriftVelocity; // The electron drift velocity.
private:
  AliTPCExBFirst& operator=(const AliTPCExBFirst&); // don't assign me
  AliTPCExBFirst(const AliTPCExBFirst&); // don't copy me
  //  void ConstructCommon(const AliFieldMap *bFieldMap,const AliMagF *bField);
  void ConstructCommon(const AliMagF *bField);
  void GetMeanFields(Double_t rx,Double_t ry,Double_t rz,
		     Double_t *Bx,Double_t *By) const;
  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 fkNMean;      // size of the tablE the mean fields
  Double_t *fkMeanBx; //[fkNMean] the mean field in x direction upto a certain z value
  Double_t *fkMeanBy; //[fkNMean] the mean field in y direction upto a certain z value
  Double_t fkMeanBz;  // the mean field in z direction inside the TPC volume
  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(AliTPCExBFirst,2)
};

#endif
 AliTPCExBFirst.h:1
 AliTPCExBFirst.h:2
 AliTPCExBFirst.h:3
 AliTPCExBFirst.h:4
 AliTPCExBFirst.h:5
 AliTPCExBFirst.h:6
 AliTPCExBFirst.h:7
 AliTPCExBFirst.h:8
 AliTPCExBFirst.h:9
 AliTPCExBFirst.h:10
 AliTPCExBFirst.h:11
 AliTPCExBFirst.h:12
 AliTPCExBFirst.h:13
 AliTPCExBFirst.h:14
 AliTPCExBFirst.h:15
 AliTPCExBFirst.h:16
 AliTPCExBFirst.h:17
 AliTPCExBFirst.h:18
 AliTPCExBFirst.h:19
 AliTPCExBFirst.h:20
 AliTPCExBFirst.h:21
 AliTPCExBFirst.h:22
 AliTPCExBFirst.h:23
 AliTPCExBFirst.h:24
 AliTPCExBFirst.h:25
 AliTPCExBFirst.h:26
 AliTPCExBFirst.h:27
 AliTPCExBFirst.h:28
 AliTPCExBFirst.h:29
 AliTPCExBFirst.h:30
 AliTPCExBFirst.h:31
 AliTPCExBFirst.h:32
 AliTPCExBFirst.h:33
 AliTPCExBFirst.h:34
 AliTPCExBFirst.h:35
 AliTPCExBFirst.h:36
 AliTPCExBFirst.h:37
 AliTPCExBFirst.h:38
 AliTPCExBFirst.h:39
 AliTPCExBFirst.h:40
 AliTPCExBFirst.h:41
 AliTPCExBFirst.h:42
 AliTPCExBFirst.h:43
 AliTPCExBFirst.h:44
 AliTPCExBFirst.h:45
 AliTPCExBFirst.h:46
 AliTPCExBFirst.h:47
 AliTPCExBFirst.h:48
 AliTPCExBFirst.h:49
 AliTPCExBFirst.h:50
 AliTPCExBFirst.h:51
 AliTPCExBFirst.h:52
 AliTPCExBFirst.h:53
 AliTPCExBFirst.h:54
 AliTPCExBFirst.h:55