#ifndef OAEMFIEDL_IFIELDPLOTTER_HXX #define OAEMFIEDL_IFIELDPLOTTER_HXX #include #include namespace COMET{ class IFieldPlotter; } class TH2; class COMET::IFieldPlotter{ public: IFieldPlotter(); virtual ~IFieldPlotter(){} bool Initialise(); void SetOrigin(double x, double y, double z){fOrigin.SetXYZ(x,y,z);} void SetNormal(double x, double y, double z){fNormal.SetXYZ(x,y,z);} void SetUpVector(double x, double y, double z){fUpVector.SetXYZ(x,y,z);} void SetNSteps(int steps){fNSteps=steps;} void SetStepSize(double size){fStepUp=size; fStepSide=size;} void SetDirectory(TDirectory* dir){fDirectory=dir;} bool PlotPlane(TDirectory* dir=NULL); bool PlotPlanes(int n_slices, double plane_sep); private: void SampleGeometryInPlane(TH2* hGeometry); double GetDensity(const TVector3& point); private: TVector3 fUpVector, fNormal, fOrigin; TVector3 fDirSide, fDirUp,fDirOut; double fStepUp, fStepSide; int fNSteps; TDirectory* fDirectory; int fSampleGeometry; }; #endif // OAEMFIEDL_IFIELDPLOTTER_HXX