#ifndef __EDFIELD__
#define __EDFIELD__
#include "TNamed.h"
#include "TString.h"
#include "TEveTrackPropagator.h"
class  HEDField ;
R__EXTERN HEDField *gEDField;
class HEDField : public TNamed , public TEveMagField {
private:
    Int_t nfz,nfr,nfp;
    Double_t zflmin,zflmax,zfldel;
    Double_t rflmin,rflmax,rfldel;
    Double_t pflmin,pflmax,pfldel;
    Double_t fpol;
    Double_t* p_tzfl;
    Double_t* p_trfl;
    Double_t* p_tpfl;
    Double_t step1z,step1r,step1p; 
    Double_t dconv;                
    Int_t nfz_nfr;                 
    Double_t one_sixtyth;          
public:
    HEDField(const Char_t *name="HADES_FIELD_MAP",const Char_t *title="HADES_FIELD_MAP",Double_t fPolarity = 1);
    virtual ~HEDField();
    
    void       SetPolarity(Double_t fPolarity) { fpol = -fPolarity; }
    void       Clear();
    void       CalcField(Double_t* xv,Double_t *btos) const;
    void       ReadAscii (TString infile);
    void       WriteAscii(TString outfile);
    
    virtual TEveVector GetField(Float_t x, Float_t y, Float_t z) const;
    virtual TEveVector GetField(const TEveVector& v) const;
    virtual Float_t GetMaxFieldMag() const {return 4.;}
    ClassDef(HEDField,1)
};
#endif /*!HEDField_H*/