// @(#)root/geom:$Id$ /************************************************************************* * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. * * All rights reserved. * * * * For the licensing terms see $ROOTSYS/LICENSE. * * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ #ifndef ROOT_TVirtualMagField #define ROOT_TVirtualMagField #include "TNamed.h" class TVirtualMagField : public TNamed { public: TVirtualMagField() : TNamed() {} TVirtualMagField(const char *name) : TNamed(name, "") {} ~TVirtualMagField() override; virtual void Field(const Double_t *x, Double_t *B) = 0; ClassDefOverride(TVirtualMagField, 1) // Abstract base field class }; //////////////////////////////////////////////////////////////////////////// // // // TGeoUniformMagField - Uniform magnetic field class. // // // //////////////////////////////////////////////////////////////////////////// class TGeoUniformMagField : public TVirtualMagField { private: Double_t fB[3]; // Magnetic field vector protected: TGeoUniformMagField(const TGeoUniformMagField &) = delete; TGeoUniformMagField &operator=(const TGeoUniformMagField &) = delete; public: TGeoUniformMagField(); TGeoUniformMagField(Double_t Bx, Double_t By, Double_t Bz); ~TGeoUniformMagField() override {} void Field(const Double_t * /*x*/, Double_t *B) override { B[0] = fB[0]; B[1] = fB[1]; B[2] = fB[2]; } const Double_t *GetFieldValue() const { return &fB[0]; } void SetFieldValue(Double_t Bx, Double_t By, Double_t Bz) { fB[0] = Bx; fB[1] = By; fB[2] = Bz; } ClassDefOverride(TGeoUniformMagField, 1) // Uniform magnetic field }; #endif