ROOT logo
ROOT » GRAF3D » EVE » TEveProjection

class TEveProjection


 Base-class for non-linear projections.

 Enables to define an external center of distortion and a scale to
 fixate a bounding box of a projected point.

Function Members (Methods)

 
    This is an abstract class, constructors will not be documented.
    Look at the header to check for available constructors.

public:
virtual~TEveProjection()
virtual Bool_tAcceptSegment(TEveVector&, TEveVector&, Float_t) const
voidAddPreScaleEntry(Int_t coord, Float_t max_val, Float_t scale)
virtual voidBisectBreakPoint(TEveVector& vL, TEveVector& vR, Float_t eps_sqr)
virtual voidBisectBreakPoint(TEveVector& vL, TEveVector& vR, Bool_t project_result = kFALSE, Float_t depth = 0)
voidChangePreScaleEntry(Int_t coord, Int_t entry, Float_t new_scale)
static TClass*Class()
voidClearPreScales()
Bool_tGetDisplaceOrigin() const
Float_tGetDistortion() const
Float_tGetFixR() const
Float_tGetFixZ() const
TEveProjection::EGeoMode_eGetGeoMode() const
Float_tGetLimit(Int_t i, Bool_t pos)
Float_tGetMaxTrackStep() const
const Char_t*GetName() const
TEveVectorGetOrthogonalCenter(int idx, TEveVector& out)
Float_tGetPastFixRFac() const
Float_tGetPastFixZFac() const
virtual Float_t*GetProjectedCenter()
virtual Float_tGetScreenVal(Int_t ax, Float_t value)
Float_tGetScreenVal(Int_t i, Float_t x, TEveVector& dirVec, TEveVector& oCenter)
TEveProjection::EPType_eGetType() const
Bool_tGetUsePreScale() const
virtual Float_tGetValForScreenPos(Int_t ax, Float_t value)
virtual Bool_tHasSeveralSubSpaces() const
virtual Bool_tIs2D() const
virtual Bool_tIs3D() const
virtual TClass*IsA() const
virtual Bool_tIsOnSubSpaceBoundrary(const TEveVector&) const
TEveProjection&operator=(const TEveProjection&)
voidPreScalePoint(Float_t& x, Float_t& y)
voidPreScalePoint(Float_t& x, Float_t& y, Float_t& z)
virtual voidProjectPoint(Float_t& x, Float_t& y, Float_t& z, Float_t d, TEveProjection::EPProc_e p = kPP_Full)
voidProjectPointdv(Double_t* v, Float_t d)
voidProjectPointdv(const TEveTrans* t, const Double_t* p, Double_t* v, Float_t d)
voidProjectPointfv(Float_t* v, Float_t d)
voidProjectPointfv(const TEveTrans* t, const Float_t* p, Float_t* v, Float_t d)
voidProjectVector(TEveVector& v, Float_t d)
voidProjectVector(const TEveTrans* t, TEveVector& v, Float_t d)
virtual voidSetCenter(TEveVector& v)
virtual voidSetDirectionalVector(Int_t screenAxis, TEveVector& vec)
voidSetDisplaceOrigin(bool)
voidSetDistortion(Float_t d)
voidSetFixR(Float_t x)
voidSetFixZ(Float_t x)
voidSetGeoMode(TEveProjection::EGeoMode_e m)
voidSetMaxTrackStep(Float_t x)
voidSetName(const Char_t* txt)
voidSetPastFixRFac(Float_t x)
voidSetPastFixZFac(Float_t x)
voidSetType(TEveProjection::EPType_e t)
voidSetUsePreScale(Bool_t x)
virtual voidShowMembers(TMemberInspector&)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual Int_tSubSpaceId(const TEveVector&) const
protected:
voidPreScaleVariable(Int_t dim, Float_t& v)

Data Members

public:
enum EPType_e { kPT_Unknown
kPT_RPhi
kPT_RhoZ
kPT_3D
kPT_End
};
enum EPProc_e { kPP_Plane
kPP_Distort
kPP_Full
};
enum EGeoMode_e { kGM_Unknown
kGM_Polygons
kGM_Segments
};
public:
static Float_tfgEpsresolution of projected points
static Float_tfgEpsSqrsquare of resolution of projected points
protected:
TEveVectorfCentercenter of distortionprivate:
boolfDisplaceOrigindisplace point before projection
Float_tfDistortiondistortion
Float_tfFixRradius from which scaling remains constant
Float_tfFixZz-coordinate from which scaling remains constant
TEveProjection::EGeoMode_efGeoModestrategy of polygon projection (what to try first)
Float_tfMaxTrackStepmaximum distance between two points on a track
TStringfNamename
Float_tfPastFixRFacrelative scaling factor beyond fFixR as 10^x
Float_tfPastFixRScalerelative scaling beyond fFixR
Float_tfPastFixZFacrelative scaling factor beyond fFixZ as 10^x
Float_tfPastFixZScalerelative scaling beyond fFixZ
vector<TEveProjection::PreScaleEntry_t,allocator<TEveProjection::PreScaleEntry_t> >fPreScales[3]scaling before the distortion
Float_tfScaleRscale factor to keep projected radius at fFixR fixed
Float_tfScaleZscale factor to keep projected z-coordinate at fFixZ fixed
TEveProjection::EPType_efTypetype
Bool_tfUsePreScaleuse pre-scaling

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

void ProjectPointfv(Float_t* v, Float_t d)
 Project float array.
void ProjectPointdv(Double_t* v, Float_t d)
 Project double array.
 This is a bit piggish as we convert the doubles to floats and back.
void ProjectVector(TEveVector& v, Float_t d)
 Project TEveVector.
void ProjectPointfv(const TEveTrans* t, const Float_t* p, Float_t* v, Float_t d)
 Project float array, converting it to global coordinate system first if
 transformation matrix is set.
void ProjectPointdv(const TEveTrans* t, const Double_t* p, Double_t* v, Float_t d)
 Project double array, converting it to global coordinate system first if
 transformation matrix is set.
 This is a bit piggish as we convert the doubles to floats and back.
void ProjectVector(const TEveTrans* t, TEveVector& v, Float_t d)
 Project TEveVector, converting it to global coordinate system first if
 transformation matrix is set.
void PreScaleVariable(Int_t dim, Float_t& v)
 Pre-scale single variable with pre-scale entry dim.
void PreScalePoint(Float_t& x, Float_t& y)
 Pre-scale point (x, y) in projected coordinates for 2D projections:
   RhoZ ~ (rho, z)
   RPhi ~ (r, phi), scaling phi doesn't make much sense.
void PreScalePoint(Float_t& x, Float_t& y, Float_t& z)
 Pre-scale point (x, y, z) in projected coordinates for 3D projection.
void AddPreScaleEntry(Int_t coord, Float_t max_val, Float_t scale)
 Add new scaling range for given coordinate.
 Arguments:
  coord    0 ~ x, 1 ~ y, 2 ~ z
  value    value of input coordinate from which to apply this scale;
  scale    the scale to apply from value onwards.

 NOTE: If pre-scaling is combined with center-displaced then
 the scale of the central region should be 1. This limitation
 can be removed but will cost CPU.
void ChangePreScaleEntry(Int_t coord, Int_t entry, Float_t new_scale)
 Change scale for given entry and coordinate.

 NOTE: If the first entry you created used other value than 0,
 one entry (covering range from 0 to this value) was created
 automatically.
void ClearPreScales()
 Clear all pre-scaling information.
void SetDistortion(Float_t d)
 Set distortion.
void SetFixR(Float_t x)
 Set fixed radius.
void SetFixZ(Float_t x)
 Set fixed radius.
void SetPastFixRFac(Float_t x)
 Set 2's-exponent for relative scaling beyond FixR.
Float_t* GetProjectedCenter()
 Get projected center.
void SetDisplaceOrigin(bool )
 Set flag to displace for center.
 This options is useful if want to have projected center
 at (0, 0) position in projected coordinates and want to dismiss
 gap around projected center in RhoZ projection.
void SetPastFixZFac(Float_t x)
 Set 2's-exponent for relative scaling beyond FixZ.
void BisectBreakPoint(TEveVector& vL, TEveVector& vR, Float_t eps_sqr)
 Find break-point on both sides of the discontinuity.
 They still need to be projected after the call.
 This is an obsolete version of the method that required manual
 specification of precision -- this lead to (infrequent) infinite loops.
void BisectBreakPoint(TEveVector& vL, TEveVector& vR, Bool_t project_result = kFALSE, Float_t depth = 0)
 Find break-point on both sides of the discontinuity.
 If project_result is true, the resulting break points will be projected
 with given depth value.
Float_t GetLimit(Int_t i, Bool_t pos)
 Method previously used by  TEveProjectionAxesGL. Now obsolete.
void SetDirectionalVector(Int_t screenAxis, TEveVector& vec)
 Get vector for axis in a projected space.
TEveVector GetOrthogonalCenter(int idx, TEveVector& out)
 Get center ortogonal to given axis index.
Float_t GetValForScreenPos(Int_t ax, Float_t value)
 Inverse projection.
Float_t GetScreenVal(Int_t i, Float_t x, TEveVector& dirVec, TEveVector& oCenter)
 Project point on given axis and return projected value.
Float_t GetScreenVal(Int_t ax, Float_t value)
 Project point on given axis and return projected value.
virtual ~TEveProjection()
{}
Bool_t Is2D() const
Bool_t Is3D() const
void ProjectPoint(Float_t& x, Float_t& y, Float_t& z, Float_t d, TEveProjection::EPProc_e p = kPP_Full)
const Char_t* GetName() const
{ return fName.Data(); }
void SetName(const Char_t* txt)
{ fName = txt; }
void SetCenter(TEveVector& v)
{ fCenter = v; }
Bool_t GetDisplaceOrigin() const
{ return fDisplaceOrigin; }
void SetType(TEveProjection::EPType_e t)
{ fType = t; }
EPType_e GetType() const
{ return fType; }
void SetGeoMode(TEveProjection::EGeoMode_e m)
{ fGeoMode = m; }
EGeoMode_e GetGeoMode() const
{ return fGeoMode; }
Bool_t GetUsePreScale() const
{ return fUsePreScale; }
void SetUsePreScale(Bool_t x)
{ fUsePreScale = x; }
Float_t GetDistortion() const
{ return fDistortion; }
Float_t GetFixR() const
{ return fFixR; }
Float_t GetFixZ() const
{ return fFixZ; }
Float_t GetPastFixRFac() const
{ return fPastFixRFac; }
Float_t GetPastFixZFac() const
{ return fPastFixZFac; }
Float_t GetMaxTrackStep() const
{ return fMaxTrackStep; }
void SetMaxTrackStep(Float_t x)
{ fMaxTrackStep = TMath::Max(x, 1.0f); }
Bool_t HasSeveralSubSpaces() const
{ return kFALSE; }
Bool_t AcceptSegment(TEveVector& , TEveVector& , Float_t ) const
{ return kTRUE; }
Int_t SubSpaceId(const TEveVector& ) const
{ return 0; }
Bool_t IsOnSubSpaceBoundrary(const TEveVector& ) const
{ return kFALSE; }