TLego
class description - source file - inheritance tree
public:
TLego TLego()
TLego TLego(Float_t* rmin, Float_t* rmax, Int_t system = 1)
TLego TLego(TLego&)
virtual void ~TLego()
void BackBox(Float_t ang)
TClass* Class()
void ClearRaster()
void ColorFunction(Int_t nl, Float_t* fl, Int_t* icl, Int_t& irep)
void DrawFaceMode1(Int_t* icodes, Float_t* xyz, Int_t np, Int_t* iface, Float_t* t)
void DrawFaceMode2(Int_t* icodes, Float_t* xyz, Int_t np, Int_t* iface, Float_t* t)
void DrawFaceMode3(Int_t* icodes, Float_t* xyz, Int_t np, Int_t* iface, Float_t* t)
void DrawFaceMove1(Int_t* icodes, Float_t* xyz, Int_t np, Int_t* iface, Float_t* tt)
void DrawFaceMove2(Int_t* icodes, Float_t* xyz, Int_t np, Int_t* iface, Float_t* tt)
void DrawFaceRaster1(Int_t* icodes, Float_t* xyz, Int_t np, Int_t* iface, Float_t* tt)
void DrawFaceRaster2(Int_t* icodes, Float_t* xyz, Int_t np, Int_t* iface, Float_t* tt)
void FillPolygon(Int_t n, Float_t* p, Float_t* f)
void FillPolygonBorder(Int_t nn, Float_t* xy)
void FindLevelLines(Int_t np, Float_t* f, Float_t* t)
void FindPartEdge(Float_t* p1, Float_t* p2, Float_t f1, Float_t f2, Float_t fmin, Float_t fmax, Int_t& kpp, Float_t* pp)
void FindVisibleDraw(Float_t* r1, Float_t* r2)
void FindVisibleLine(Float_t* p1, Float_t* p2, Int_t ntmax, Int_t& nt, Float_t* t)
void FrontBox(Float_t ang)
void GouraudFunction(Int_t ia, Int_t ib, Float_t* f, Float_t* t)
void InitMoveScreen(Float_t xmin, Float_t xmax)
void InitRaster(Float_t xmin, Float_t ymin, Float_t xmax, Float_t ymax, Int_t nx, Int_t ny)
virtual TClass* IsA()
void LegoCartesian(Float_t ang, Int_t nx, Int_t ny, char* chopt)
void LegoCylindrical(Int_t iordr, Int_t na, Int_t nb, char* chopt)
void LegoFunction(Int_t ia, Int_t ib, Int_t& nv, Float_t* ab, Float_t* vv, Float_t* t)
void LegoPolar(Int_t iordr, Int_t na, Int_t nb, char* chopt)
void LegoSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, char* chopt)
void LightSource(Int_t nl, Float_t yl, Float_t xscr, Float_t yscr, Float_t zscr, Int_t& irep)
void Luminosity(Float_t* anorm, Float_t& flum)
void ModifyScreen(Float_t* r1, Float_t* r2)
void SetColorDark(Color_t color, Int_t n = 0)
void SetColorMain(Color_t color, Int_t n = 0)
void SetDrawFace(G__p2memfunc pointer)
void SetLegoFunction(G__p2memfunc pointer)
void SetMesh(Int_t mesh = 1)
void SetSurfaceFunction(G__p2memfunc pointer)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
void SideVisibilityDecode(Float_t val, Int_t& iv1, Int_t& iv2, Int_t& iv3, Int_t& iv4, Int_t& iv5, Int_t& iv6, Int_t& ir)
void SideVisibilityEncode(Int_t iopt, Float_t phi1, Float_t phi2, Float_t& val)
void Spectrum(Int_t nl, Float_t fmin, Float_t fmax, Int_t ic, Int_t idc, Int_t& irep)
virtual void Streamer(TBuffer& b)
void SurfaceCartesian(Float_t ang, Int_t nx, Int_t ny, char* chopt)
void SurfaceCylindrical(Int_t iordr, Int_t na, Int_t nb, char* chopt)
void SurfaceFunction(Int_t ia, Int_t ib, Float_t* f, Float_t* t)
void SurfacePolar(Int_t iordr, Int_t na, Int_t nb, char* chopt)
void SurfaceProperty(Float_t qqa, Float_t qqd, Float_t qqs, Int_t nnqs, Int_t& irep)
void SurfaceSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, char* chopt)
private:
Int_t fSystem Coordinate system
Int_t fNT
Float_t fX0
Float_t fDX
Float_t fRmin[3] Lower limits of lego
Float_t fRmax[3] Upper limits of lego
Float_t fU[2000]
Float_t fD[2000]
Float_t fT[200]
Int_t fNlevel Number of color levels
Float_t fFunLevel[257] Function levels corresponding to colors
Int_t fColorLevel[258] Color levels corresponding to functions
Int_t fColorMain[10]
Int_t fColorDark[10]
Int_t fColorTop
Int_t fColorBottom
Int_t fMesh (=1 if mesh to draw, o otherwise)
Int_t fNlines
Int_t fLevelLine[200]
Float_t fPlines[1200]
Float_t fAphi[183]
Int_t fLoff
Float_t fYdl
Float_t fYls[4]
Float_t fVls[12]
Float_t fQA
Float_t fQD
Float_t fQS
Int_t fNqs
Int_t fNxrast
Int_t fNyrast
Float_t fXrast
Float_t fYrast
Float_t fDXrast
Float_t fDYrast
Int_t fIfrast
Int_t* fRaster pointer to raster buffer
Int_t fJmask[30]
Int_t fMask[465]
G__p2memfunc fDrawFace pointer to face drawing function
G__p2memfunc fLegoFunction pointer to lego function
G__p2memfunc fSurfaceFunction pointer to surface function
*-*-*-*-*-*-*-*-*-*-*-*-*Legos and Surfaces package-*-*-*-*-*-*-*-*-*-*-*
*-* ========================== *
*-* *
*-* This package was originally written by Evgueni Tcherniaev *
*-* from IHEP/Protvino. *
*-* *
*-* The original Fortran implementation was adapted to HIGZ/PAW *
*-* by Olivier Couet and Evgueni Tcherniaev. *
*-* *
*-* This View class is a subset of the original system *
*-* It has been converted to a C++ class by Rene Brun *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
TLego(): TObject(), TAttLine(1,1,1), TAttFill(1,0)
*-*-*-*-*-*-*-*-*-*-*Lego default constructor*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-* ========================
TLego(Float_t *rmin, Float_t *rmax, Int_t system)
: TObject(), TAttLine(1,1,1), TAttFill(1,0)
*-*-*-*-*-*-*-*-*-*-*Normal default constructor*-*-*-*-*-*-*-*-*-*-*-*-*
*-* ========================
*-* rmin[3], rmax[3] are the limits of the lego object depending on
*-* the selected coordinate system
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
~TLego()
*-*-*-*-*-*-*-*-*-*-*Lego default destructor*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-* =======================
void BackBox(Float_t ang)
*-*-*-*-*-*-*-*-*-*Draw back surfaces of surrounding box*-*-*-*-*-*-*-*-*
*-* ===================================== *
*-* *
*-* Input ANG - angle between X and Y axis *
*-* *
*-* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing *
*-* ICODES(*) - set of codes for this face *
*-* NP - number of nodes in face *
*-* IFACE(NP) - face *
*-* T(NP) - additional function *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void ClearRaster()
*-*-*-*-*-*-*-*-*-*-*-*-*-*Clear screen*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-* ============
void ColorFunction(Int_t nl, Float_t *fl, Int_t *icl, Int_t &irep)
*-*-*-*-*-*Set correspondance between function and color levels-*-*-*-*-*
*-* ==================================================== *
*-* *
*-* Input: NL - number of levels *
*-* FL(NL) - function levels *
*-* ICL(NL+1) - colors for levels *
*-* *
*-* Output: IREP - reply: 0 O.K. *
*-* -1 error in parameters: *
*-* illegal number of levels *
*-* function levels must be in increasing order *
*-* negative color index *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void DrawFaceMode1(Int_t *icodes, Float_t *xyz, Int_t np, Int_t *iface, Float_t *t)
*-*-*-*-*-*-*-*-*-*-*-*Draw face - 1st variant*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-* ======================= *
*-* *
*-* Function: Draw face - 1st variant *
*-* (2 colors: 1st for external surface, 2nd for internal) *
*-* *
*-* References: WCtoNDC *
*-* *
*-* Input: ICODES(*) - set of codes for the line (not used) *
*-* ICODES(1) - IX *
*-* ICODES(2) - IY *
*-* XYZ(3,*) - coordinates of nodes *
*-* NP - number of nodes *
*-* IFACE(NP) - face *
*-* T(NP) - additional function defined on this face *
*-* (not used in this routine) *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void DrawFaceMode2(Int_t *icodes, Float_t *xyz, Int_t np, Int_t *iface, Float_t *t)
*-*-*-*-*-*-*-*-*-*-*-Draw face - 2nd option*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-* ====================== *
*-* *
*-* Function: Draw face - 2nd option *
*-* (fill in correspondance with function levels) *
*-* *
*-* References: WCtoNDC, FillPolygon *
*-* *
*-* Input: ICODES(*) - set of codes for the line (not used) *
*-* ICODES(1) - IX *
*-* ICODES(2) - IY *
*-* XYZ(3,*) - coordinates of nodes *
*-* NP - number of nodes *
*-* IFACE(NP) - face *
*-* T(NP) - additional function defined on this face *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void DrawFaceMode3(Int_t *icodes, Float_t *xyz, Int_t np, Int_t *iface, Float_t *t)
*-*-*-*-*-*-*-*-*-*-*-*Draw face - 3rd option-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-* ====================== *
*-* *
*-* Function: Draw face - 3rd option *
*-* (draw face for stacked lego plot) *
*-* *
*-* References: WCtoNDC *
*-* *
*-* Input: ICODES(*) - set of codes for the line *
*-* ICODES(1) - IX coordinate of the line cell *
*-* ICODES(2) - IY coordinate of the line cell *
*-* ICODES(3) - lego number *
*-* ICODES(4) - side: 1-face,2-right,3-back,4-left, *
*-* 5-bottom, 6-top *
*-* XYZ(3,*) - coordinates of nodes *
*-* NP - number of nodes *
*-* IFACE(NP) - face *
*-* T(*) - additional function (not used here) *
*-* *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void DrawFaceMove1(Int_t *icodes, Float_t *xyz, Int_t np, Int_t *iface, Float_t *tt)
*-*-*-*-*-*Draw face - 1st variant for "MOVING SCREEN" algorithm -*-*-*-*
*-* ===================================================== *
*-* *
*-* Function: Draw face - 1st variant for "MOVING SCREEN" algorithm *
*-* (draw face with level lines) *
*-* *
*-* References: FindLevelLines, WCtoNDC, *
*-* FindVisibleDraw, ModifyScreen *
*-* *
*-* Input: ICODES(*) - set of codes for the line (not used) *
*-* ICODES(1) - IX *
*-* ICODES(2) - IY *
*-* XYZ(3,*) - coordinates of nodes *
*-* NP - number of nodes *
*-* IFACE(NP) - face *
*-* TT(NP) - additional function defined on this face *
*-* (not used in this routine) *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void DrawFaceMove2(Int_t *icodes, Float_t *xyz, Int_t np, Int_t *iface, Float_t *tt)
*-*-*-*-*-*Draw face - 2nd variant for "MOVING SCREEN" algorithm*-*-*-*-*
*-* ===================================================== *
*-* *
*-* Function: Draw face - 2nd variant for "MOVING SCREEN" algorithm *
*-* (draw face for stacked lego plot) *
*-* *
*-* References: FindLevelLines, WCtoNDC, *
*-* FindVisibleDraw, ModifyScreen *
*-* *
*-* Input: ICODES(*) - set of codes for the line (not used) *
*-* ICODES(1) - IX *
*-* ICODES(2) - IY *
*-* ICODES(3) - line code (N of lego) *
*-* XYZ(3,*) - coordinates of nodes *
*-* NP - number of nodes *
*-* IFACE(NP) - face *
*-* TT(NP) - additional function defined on this face *
*-* (not used in this routine) *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void DrawFaceRaster1(Int_t *icodes, Float_t *xyz, Int_t np, Int_t *iface, Float_t *tt)
*-*-*-*-*-*-*Draw face - 1st variant for "RASTER SCREEN" algorithm*-*-*-*
*-* ===================================================== *
*-* *
*-* Function: Draw face - 1st variant for "RASTER SCREEN" algorithm *
*-* (draw face with level lines) *
*-* *
*-* References: FindLevelLines, WCtoNDC, *
*-* FindVisibleLine, FillPolygonBorder *
*-* *
*-* Input: ICODES(*) - set of codes for the line (not used) *
*-* ICODES(1) - IX *
*-* ICODES(2) - IY *
*-* XYZ(3,*) - coordinates of nodes *
*-* NP - number of nodes *
*-* IFACE(NP) - face *
*-* TT(NP) - additional function defined on this face *
*-* (not used in this routine) *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void DrawFaceRaster2(Int_t *icodes, Float_t *xyz, Int_t np, Int_t *iface, Float_t *tt)
*-*-*-*-*-*Draw face - 2nd variant for "RASTER SCREEN" algorithm*-*-*-*-*
*-* ===================================================== *
*-* *
*-* Function: Draw face - 2nd variant for "RASTER SCREEN" algorithm *
*-* (draw face for stacked lego plot) *
*-* *
*-* References: WCtoNDC, FindVisibleLine, FillPolygonBorder *
*-* *
*-* Input: ICODES(*) - set of codes for the line (not used) *
*-* ICODES(1) - IX *
*-* ICODES(2) - IY *
*-* ICODES(3) - line code (N of lego) *
*-* XYZ(3,*) - coordinates of nodes *
*-* NP - number of nodes *
*-* IFACE(NP) - face *
*-* TT(NP) - additional function defined on this face *
*-* (not used in this routine) *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void FillPolygon(Int_t n, Float_t *p, Float_t *f)
*-*-*-*-*-*-*-*Fill polygon with function values at vertexes*-*-*-*-*-*-*
*-* ============================================= *
*-* *
*-* Input: N - number of vertexes *
*-* P(3,*) - polygon *
*-* F(*) - function values at nodes *
*-* *
*-* Errors: - illegal number of vertexes in polygon *
*-* - illegal call of FillPolygon: no levels *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void FillPolygonBorder(Int_t nn, Float_t *xy)
*-*-*-*-*-*-*Fill a polygon including border ("RASTER SCREEN")*-*-*-*-*-*
*-* ================================================= *
*-* *
*-* Input: NN - number of polygon nodes *
*-* XY(2,*) - polygon nodes *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void FindLevelLines(Int_t np, Float_t *f, Float_t *t)
*-*-*-*-*-*-*-*-*-*-*-*Find level lines for face*-*-*-*-*-*-*-*-*-*-*-*-*
*-* ========================= *
*-* *
*-* Input: NP - number of nodes *
*-* F(3,NP) - face *
*-* T(NP) - additional function *
*-* *
*-* Error: number of points for line not equal 2 *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void FindPartEdge(Float_t *p1, Float_t *p2, Float_t f1, Float_t f2, Float_t fmin, Float_t fmax, Int_t &kpp, Float_t *pp)
*-*-*-*-*-*-*-*-*-*-*-*-* Find part of edge *-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-* ================= *
*-* *
*-* Function: Find part of edge where function defined on this edge *
*-* has value from FMIN to FMAX *
*-* *
*-* Input: P1(3) - 1st point *
*-* P2(3) - 2nd point *
*-* F1 - function value at 1st point *
*-* F2 - function value at 2nd point *
*-* FMIN - min value of layer *
*-* FMAX - max value of layer *
*-* *
*-* Output: KPP - current number of point *
*-* PP(3,*) - coordinates of new face *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void FindVisibleDraw(Float_t *r1, Float_t *r2)
*-*-*-*-*-*-*-*-*Find visible parts of line (draw line)-*-*-*-*-*-*-*-*-*
*-* ====================================== *
*-* *
*-* Input: R1(3) - 1-st point of the line *
*-* R2(3) - 2-nd point of the line *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void FindVisibleLine(Float_t *p1, Float_t *p2, Int_t ntmax, Int_t &nt, Float_t *t)
*-*-*-*-*-*-*-*Find visible part of a line ("RASTER SCREEN")*-*-*-*-*-*-*
*-* ============================================= *
*-* *
*-* Input: P1(2) - 1st point of the line *
*-* P2(2) - 2nd point of the line *
*-* NTMAX - max allowed number of visible segments *
*-* *
*-* Output: NT - number of visible segments of the line *
*-* T(2,*) - visible segments *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void FrontBox(Float_t ang)
*-*-*-*-*-*-*-*Draw forward faces of surrounding box & axes-*-*-*-*-*-*-*
*-* ============================================ *
*-* *
*-* Function: Draw forward faces of surrounding box & axes *
*-* *
*-* References: AxisVertex, Gaxis *
*-* *
*-* Input ANG - angle between X and Y axis *
*-* *
*-* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing *
*-* ICODES(*) - set of codes for this face *
*-* NP - number of nodes in face *
*-* IFACE(NP) - face *
*-* T(NP) - additional function *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void GouraudFunction(Int_t ia, Int_t ib, Float_t *face, Float_t *t)
*-*-*-*-*-* Find part of surface with luminosity in the corners*-*-*-*-*-*
*-* ===================================================
*-*
*-* This routine is used for Gouraud shading
*-*
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void InitMoveScreen(Float_t xmin, Float_t xmax)
*-*-*-*-*-*-*-*-*-*-*Initialize "MOVING SCREEN" method*-*-*-*-*-*-*-*-*-*
*-* ================================= *
*-* *
*-* Input: XMIN - left boundary *
*-* XMAX - right boundary *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void InitRaster(Float_t xmin, Float_t ymin, Float_t xmax, Float_t ymax, Int_t nx, Int_t ny )
*-*-*Initialize hidden lines removal algorithm (RASTER SCREEN)*-*-*-*-*-*
*-* ========================================================= *
*-* *
*-* Input: XMIN - Xmin in the normalized coordinate system *
*-* YMIN - Ymin in the normalized coordinate system *
*-* XMAX - Xmax in the normalized coordinate system *
*-* YMAX - Ymax in the normalized coordinate system *
*-* NX - number of pixels along X *
*-* NY - number of pixels along Y *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void LegoFunction(Int_t ia, Int_t ib, Int_t &nv, Float_t *ab, Float_t *vv, Float_t *t)
*-*-*-*-*-*-*-*-*-*-*-*-*Service function for Legos-*-*-*-*-*-*-*-*-*-*-*
*-* ==========================
*-*
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void LegoCartesian(Float_t ang, Int_t nx, Int_t ny, char *chopt)
*-*-*-*-*-*-*Draw stack of lego-plots in cartesian coordinates*-*-*-*-*-*
*-* ================================================= *
*-* *
*-* Input: ANG - angle between X ang Y *
*-* NX - number of cells along X *
*-* NY - number of cells along Y *
*-* *
*-* FUN(IX,IY,NV,XY,V,T) - external routine *
*-* IX - X number of the cell *
*-* IY - Y number of the cell *
*-* NV - number of values for given cell *
*-* XY(2,4)- coordinates of the cell corners *
*-* V(NV) - cell values *
*-* T(4,NV)- additional function (for example: temperature) *
*-* *
*-* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing *
*-* ICODES(*) - set of codes for this line *
*-* ICODES(1) - IX *
*-* ICODES(2) - IY *
*-* ICODES(3) - IV *
*-* ICODES(4) - side: 1-face,2-right,3-back,4-left, *
*-* 5-bottom, 6-top *
*-* XYZ(3,*) - coordinates of nodes *
*-* NP - number of nodes *
*-* IFACE(NP) - face *
*-* T(4) - additional function (here Z-coordinate) *
*-* *
*-* CHOPT - options: 'BF' - from BACK to FRONT *
*-* 'FB' - from FRONT to BACK *
*-* *
/*
*/
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void LegoPolar(Int_t iordr, Int_t na, Int_t nb, char *chopt)
*-*-*-*-*-*-* Draw stack of lego-plots in polar coordinates *-*-*-*-*-*-*
*-* ============================================= *
*-* *
*-* Input: IORDR - order of variables (0 - R,PHI; 1 - PHI,R) *
*-* NA - number of steps along 1st variable *
*-* NB - number of steps along 2nd variable *
*-* *
*-* FUN(IA,IB,NV,AB,V,TT) - external routine *
*-* IA - cell number for 1st variable *
*-* IB - cell number for 2nd variable *
*-* NV - number of values for given cell *
*-* AB(2,4) - coordinates of the cell corners *
*-* V(NV) - cell values *
*-* TT(4,*) - additional function *
*-* *
*-* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing *
*-* ICODES(*) - set of codes for this face *
*-* ICODES(1) - IA *
*-* ICODES(2) - IB *
*-* ICODES(3) - IV *
*-* ICODES(4) - side: 1-internal,2-right,3-external,4-left*
*-* 5-bottom, 6-top *
*-* XYZ(3,*) - coordinates of nodes *
*-* NP - number of nodes in face *
*-* IFACE(NP) - face *
*-* T(NP) - additional function *
*-* *
*-* CHOPT - options: 'BF' - from BACK to FRONT *
*-* 'FB' - from FRONT to BACK *
*-* *
/*
*/
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void LegoCylindrical(Int_t iordr, Int_t na, Int_t nb, char *chopt)
*-*-*-*-*-*Draw stack of lego-plots in cylindrical coordinates*-*-*-*-*-*
*-* =================================================== *
*-* *
*-* Input: IORDR - order of variables (0 - Z,PHI; 1 - PHI,Z) *
*-* NA - number of steps along 1st variable *
*-* NPHI - number of steps along 2nd variable *
*-* *
*-* FUN(IA,IB,NV,AB,V,TT) - external routine *
*-* IA - cell number for 1st variable *
*-* IB - cell number for 2nd variable *
*-* NV - number of values for given cell *
*-* AB(2,4) - coordinates of the cell corners *
*-* V(NV) - cell values *
*-* TT(4,*) - additional function *
*-* *
*-* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing *
*-* ICODES(*) - set of codes for this face *
*-* ICODES(1) - IA *
*-* ICODES(2) - IB *
*-* ICODES(3) - IV *
*-* ICODES(4) - side: 1,2,3,4 - ordinary sides *
*-* 5-bottom,6-top *
*-* XYZ(3,*) - coordinates of nodes *
*-* NP - number of nodes in face *
*-* IFACE(NP) - face *
*-* T(NP) - additional function *
*-* *
*-* CHOPT - options: 'BF' - from BACK to FRONT *
*-* 'FB' - from FRONT to BACK *
*-* *
/*
*/
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void LegoSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, char *chopt)
*-*-*-*-*-*-*-*-*Draw stack of lego-plots spheric coordinates-*-*-*-*-*-*
*-* ============================================ *
*-* *
*-* Input: IPSDR - pseudo-rapidity flag *
*-* IORDR - order of variables (0 - THETA,PHI; 1 - PHI,THETA) *
*-* NA - number of steps along 1st variable *
*-* NB - number of steps along 2nd variable *
*-* *
*-* FUN(IA,IB,NV,AB,V,TT) - external routine *
*-* IA - cell number for 1st variable *
*-* IB - cell number for 2nd variable *
*-* NV - number of values for given cell *
*-* AB(2,4) - coordinates of the cell corners *
*-* V(NV) - cell values *
*-* TT(4,*) - additional function *
*-* *
*-* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing *
*-* ICODES(*) - set of codes for this face *
*-* ICODES(1) - IA *
*-* ICODES(2) - IB *
*-* ICODES(3) - IV *
*-* ICODES(4) - side: 1,2,3,4 - ordinary sides *
*-* 5-bottom,6-top *
*-* XYZ(3,*) - coordinates of nodes *
*-* NP - number of nodes in face *
*-* IFACE(NP) - face *
*-* T(NP) - additional function *
*-* *
*-* CHOPT - options: 'BF' - from BACK to FRONT *
*-* 'FB' - from FRONT to BACK *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void LightSource(Int_t nl, Float_t yl, Float_t xscr, Float_t yscr, Float_t zscr, Int_t &irep)
*-*-*-*-*-*-*-*-*-*-*-*-*Set light source-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-* ================ *
*-* *
*-* Input: NL - source number: -1 off all light sources *
*-* 0 set diffused light *
*-* YL - intensity of the light source *
*-* XSCR *
*-* YSCR - direction of the light (in respect of the screen) *
*-* ZSCR / *
*-* *
*-* Output: IREP - reply : 0 - O.K. *
*-* -1 - error in light sources definition: *
*-* negative intensity *
*-* source number greater than max *
*-* light source is placed at origin *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void Luminosity(Float_t *anorm, Float_t &flum)
*-*-*-*-*-*-*-*-*-*Find surface luminosity at given point *-*-*-*-*-*-*-*
*-* ====================================== *
*-* *
*-* -- *
*-* Lightness model formula: Y = YD*QA + > YLi*(QD*cosNi+QS*cosRi) *
*-* -- *
*-* *
*-* B1 = VN(3)*VL(2) - VN(2)*VL(3) *
*-* B2 = VN(1)*VL(3) - VN(3)*VL(1) *
*-* B3 = VN(2)*VL(1) - VN(1)*VL(2) *
*-* B4 = VN(1)*VL(1) + VN(2)*VL(2) + VN(3)*VL(3) *
*-* VR(1) = VN(3)*B2 - VN(2)*B3 + VN(1)*B4 *
*-* VR(2) =-VN(3)*B1 + VN(1)*B3 + VN(2)*B4 *
*-* VR(3) = VN(2)*B1 - VN(1)*B2 + VN(3)*B4 *
*-* S = SQRT(VR(1)*VR(1)+VR(2)*VR(2)+VR(3)*VR(3)) *
*-* VR(1) = VR(1)/S *
*-* VR(2) = VR(2)/S *
*-* VR(3) = VR(3)/S *
*-* COSR = VR(1)*0. + VR(2)*0. + VR(3)*1. *
*-* *
*-* References: WCtoNDC *
*-* *
*-* Input: ANORM(3) - surface normal at given point *
*-* *
*-* Output: FLUM - luminosity *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void ModifyScreen(Float_t *r1, Float_t *r2)
*-*-*-*-*-*-*-*-*-*-*-*-*-*Modify SCREEN*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-* ============= *
*-* *
*-* Input: R1(3) - 1-st point of the line *
*-* R2(3) - 2-nd point of the line *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void SetDrawFace(DrawFaceFunc_t drface)
*-*-*-*-*-*-*-*-*Store pointer to current algorithm to draw faces *-*-*-*
*-* ================================================ *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void SetLegoFunction(LegoFunc_t fun)
*-*-*-*-*-*-*-*-*Store pointer to current lego function *-*-*-*-*-*-*-*-*
*-* ====================================== *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void SetSurfaceFunction(SurfaceFunc_t fun)
*-*-*-*-*-*-*-*-*Store pointer to current surface function*-*-*-*-*-*-*-*
*-* ========================================= *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void SetColorDark(Color_t color, Int_t n)
*-*-*-*-*-*-*-*-*Store dark color for stack number n-*-*-**-*-*-*-*-*-*-*
*-* =================================== *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void SetColorMain(Color_t color, Int_t n)
*-*-*-*-*-*-*-*-*Store color for stack number n*-*-*-*-*-**-*-*-*-*-*-*-*
*-* ============================== *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void SideVisibilityDecode(Float_t val, Int_t &iv1, Int_t &iv2, Int_t &iv3, Int_t &iv4, Int_t &iv5, Int_t &iv6, Int_t &ir)
*-*-*-*-*-*-*Decode side visibilities and order along R for sector*-*-*-*
*-* ===================================================== *
*-* *
*-* Input: VAL - encoded value *
*-* *
*-* Output: IV1 ... IV6 - visibility of the sides *
*-* IR - increment along R *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void SideVisibilityEncode(Int_t iopt, Float_t phi1, Float_t phi2, Float_t &val)
*-*-*-*-*-*-*Encode side visibilities and order along R for sector*-*-*-*
*-* ===================================================== *
*-* *
*-* Input: IOPT - options: 1 - from BACK to FRONT 'BF' *
*-* 2 - from FRONT to BACK 'FB' *
*-* PHI1 - 1st phi of sector *
*-* PHI2 - 2nd phi of sector *
*-* *
*-* Output: VAL - encoded value *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void Spectrum(Int_t nl, Float_t fmin, Float_t fmax, Int_t ic, Int_t idc, Int_t &irep)
*-*-*-*-*-*-*-*-*-*-*-*-*Set Spectrum-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-* ============= *
*-* *
*-* Input: NL - number of levels *
*-* FMIN - MIN fuction value *
*-* FMAX - MAX fuction value *
*-* IC - initial color index (for 1st level) *
*-* IDC - color index increment *
*-* *
*-* Output: IREP - reply: 0 O.K. *
*-* -1 error in parameters *
*-* F_max less than F_min *
*-* illegal number of levels *
*-* initial color index is negative *
*-* color index increment must be positive *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void SurfaceCartesian(Float_t ang, Int_t nx, Int_t ny, char *chopt)
*-*-*-*-*-*-*-*-*Draw surface in cartesian coordinate system*-*-*-*-*-*-*
*-* =========================================== *
*-* *
*-* Input: ANG - angle between X ang Y *
*-* NX - number of steps along X *
*-* NY - number of steps along Y *
*-* *
*-* FUN(IX,IY,F,T) - external routine *
*-* IX - X number of the cell *
*-* IY - Y number of the cell *
*-* F(3,4) - face which corresponds to the cell *
*-* T(4) - additional function (for example: temperature) *
*-* *
*-* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing *
*-* ICODES(*) - set of codes for this face *
*-* ICODES(1) - IX *
*-* ICODES(2) - IY *
*-* NP - number of nodes in face *
*-* IFACE(NP) - face *
*-* T(NP) - additional function *
*-* *
*-* CHOPT - options: 'BF' - from BACK to FRONT *
*-* 'FB' - from FRONT to BACK *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void SurfaceFunction(Int_t ia, Int_t ib, Float_t *f, Float_t *t)
*-*-*-*-*-*-*-*-*-*-*-*-*Service function for Surfaces*-*-*-*-*-*-*-*-*-*-*
*-* =============================
*-*
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void SurfacePolar(Int_t iordr, Int_t na, Int_t nb,
char *chopt)
*-*-*-*-*-*-*-*-*-*-*-*Draw surface in polar coordinates*-*-*-*-*-*-*-*-*
*-* ================================= *
*-* *
*-* Input: IORDR - order of variables (0 - R,PHI, 1 - PHI,R) *
*-* NA - number of steps along 1st variable *
*-* NB - number of steps along 2nd variable *
*-* *
*-* FUN(IA,IB,F,T) - external routine *
*-* IA - cell number for 1st variable *
*-* IB - cell number for 2nd variable *
*-* F(3,4) - face which corresponds to the cell *
*-* F(1,*) - A *
*-* F(2,*) - B *
*-* F(3,*) - Z *
*-* T(4) - additional function (for example: temperature) *
*-* *
*-* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing *
*-* ICODES(*) - set of codes for this face *
*-* ICODES(1) - IA *
*-* ICODES(2) - IB *
*-* XYZ(3,*) - coordinates of nodes *
*-* NP - number of nodes in face *
*-* IFACE(NP) - face *
*-* T(NP) - additional function *
*-* *
*-* CHOPT - options: 'BF' - from BACK to FRONT *
*-* 'FB' - from FRONT to BACK *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void SurfaceCylindrical(Int_t iordr, Int_t na, Int_t nb, char *chopt)
*-*-*-*-*-*-*-*-*Draw surface in cylindrical coordinates*-*-*-*-*-*-*-*-*
*-* ======================================= *
*-* *
*-* Input: IORDR - order of variables (0 - Z,PHI, 1 - PHI,Z) *
*-* NA - number of steps along 1st variable *
*-* NB - number of steps along 2nd variable *
*-* *
*-* FUN(IA,IB,F,T) - external routine *
*-* IA - cell number for 1st variable *
*-* IB - cell number for 2nd variable *
*-* F(3,4) - face which corresponds to the cell *
*-* F(1,*) - A *
*-* F(2,*) - B *
*-* F(3,*) - R *
*-* T(4) - additional function (for example: temperature) *
*-* *
*-* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing *
*-* ICODES(*) - set of codes for this face *
*-* ICODES(1) - IA *
*-* ICODES(2) - IB *
*-* XYZ(3,*) - coordinates of nodes *
*-* NP - number of nodes in face *
*-* IFACE(NP) - face *
*-* T(NP) - additional function *
*-* *
*-* CHOPT - options: 'BF' - from BACK to FRONT *
*-* 'FB' - from FRONT to BACK *
*-* *
/*
*/
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void SurfaceSpherical(Int_t ipsdr, Int_t iordr, Int_t na, Int_t nb, char *chopt)
*-*-*-*-*-*-*-*-*-*-*Draw surface in spheric coordinates*-*-*-*-*-*-*-*-*
*-* =================================== *
*-* *
*-* Input: IPSDR - pseudo-rapidity flag *
*-* IORDR - order of variables (0 - THETA,PHI; 1 - PHI,THETA) *
*-* NA - number of steps along 1st variable *
*-* NB - number of steps along 2nd variable *
*-* *
*-* FUN(IA,IB,F,T) - external routine *
*-* IA - cell number for 1st variable *
*-* IB - cell number for 2nd variable *
*-* F(3,4) - face which corresponds to the cell *
*-* F(1,*) - A *
*-* F(2,*) - B *
*-* F(3,*) - R *
*-* T(4) - additional function (for example: temperature) *
*-* *
*-* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing *
*-* ICODES(*) - set of codes for this face *
*-* ICODES(1) - IA *
*-* ICODES(2) - IB *
*-* XYZ(3,*) - coordinates of nodes *
*-* NP - number of nodes in face *
*-* IFACE(NP) - face *
*-* T(NP) - additional function *
*-* *
*-* CHOPT - options: 'BF' - from BACK to FRONT *
*-* 'FB' - from FRONT to BACK *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
void SurfaceProperty(Float_t qqa, Float_t qqd, Float_t qqs, Int_t nnqs, Int_t &irep)
*-*-*-*-*-*-*-*-*-*-*Set surface property coefficients*-*-*-*-*-*-*-*-*-*
*-* ================================= *
*-* *
*-* Input: QQA - diffusion coefficient for diffused light [0.,1.] *
*-* QQD - diffusion coefficient for direct light [0.,1.] *
*-* QQS - diffusion coefficient for reflected light [0.,1.] *
*-* NNCS - power coefficient for reflected light (.GE.1) *
*-* *
*-* -- *
*-* Lightness model formula: Y = YD*QA + > YLi*(QD*cosNi+QS*cosRi) *
*-* -- *
*-* *
*-* Output: IREP - reply : 0 - O.K. *
*-* -1 - error in cooefficients *
*-* *
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Inline Functions
void SetMesh(Int_t mesh = 1)
TClass* Class()
TClass* IsA()
void ShowMembers(TMemberInspector& insp, char* parent)
void Streamer(TBuffer& b)
TLego TLego(TLego&)
Author: Rene Brun, Evgueni Tcherniaev, Olivier Couet 12/12/94
Last update: 2.20/00 02/11/98 19.16.52 by Rene Brun
Copyright (c) 1995-1999, The ROOT System, All rights reserved. *
ROOT page - Class index - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.