53 :
TNamed ("Spectrum Painter2","Miroslav Morhac Painter")
57 gPad->Range(0, 0, 1 ,1);
59 fXmax = h2->GetNbinsX() - 1;
61 fYmax = h2->GetNbinsY() - 1;
63 fMaximumXScreenResolution = bs;
65 for (i = 0;i <= fXmax; i++) {
66 for (j = 0;j <= fYmax; j++) {
67 val = h2->GetBinContent(i + 1,j + 1);
68 if (val > fZmax) fZmax = val;
72 fBx1 =
gPad->XtoPixel(0.1);
73 fBx2 =
gPad->XtoPixel(0.99);
74 fBy1 =
gPad->YtoPixel(0.99);
75 fBy2 =
gPad->YtoPixel(0.05);
77 fModeGroup = kModeGroupLightHeight;
79 fDisplayMode = kDisplayModeSurface;
81 fZscale = kZScaleLinear;
83 fNodesx = fXmax-fXmin+1;
84 fNodesy = fYmax-fYmin+1;
112 fColorAlg = kColorAlgRgbSmooth;
134 fShadow = kShadowsNotPainted;
143 fBezier = kNoBezierInterpol;
149 fPenDash = kPenStyleSolid;
151 fChanmarkEnDis = kChannelMarksNotDrawn;
153 fChanmarkColor =
kBlue;
156 fChanmarkStyle = kChannelMarksStyleDot;
158 fChanlineEnDis = kChannelGridNotDrawn;
160 fChanlineColor =
kRed;
162 fEnvelope =
new Short_t [fMaximumXScreenResolution];
163 fEnvelopeContour =
new Short_t [fMaximumXScreenResolution];
164 for (i=0;i<fMaximumXScreenResolution;i++) {
166 fEnvelopeContour[i] = fBy2;
178 for (
int i=0; i<256; i++) {
179 col =
gROOT->GetColor(250+i);
206 if ((zmt==0)||(zmt==-3)||(zmt==-4)) {
213 if (zf>=1.0) zf =
log(zf);
217 if (zf>0) zf =
sqrt(zf);
246 Double_t da,db,dc=0,dd,dl,dm,dn,xtaz,ytaz,ztaz,
v=0,
v1;
251 if (z1>900) z1 = 900;
253 if (z2>900) z2 = 900;
255 if (z3>900) z3 = 900;
266 if ((i==1)||(i==3)) {
277 xtaz = (dx1+dx2+dx3)/3;
278 ytaz = (dy1+dy2+dy3)/3;
284 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
285 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
286 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
287 dd = (da*da+db*db+dc*dc)*(dl*dl+dm*dm+dn*dn);
289 if (dd!=0)
v = (da*dl+db*dm+dc*dn)/dd;
307 if (da>=1) da=
log(da);
308 if (db>=1) db=
log(db);
327 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
328 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
329 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
330 dd = (da*da+db*db+dc*dc)*(dl*dl+dm*dm+dn*dn);
332 if (dd!=0)
v = (da*dl+db*dm+dc*dn)/dd;
349 if (da>=1) da =
log(da);
350 if (db>=1) db =
log(db);
351 if (da!=0) dc = db/da;
390 Double_t pom1,pom2,sdx1=0,sdx2=0,sdy1,sdy2,spriz;
393 if (ztaz>900) ztaz = 900;
395 if (ztaz>32767) ztaz = 32767;
411 if (sx1<sx2) skrokx = 1;
413 if (sy1<sy2) skroky = 1;
417 if (
TMath::Abs(pom1)>0.0000001) sdx1 = pom2/pom1;
420 sdy1 = pom2-sdx1*pom1;
423 if (
TMath::Abs(pom1)>0.0000001) sdx2 = pom2/pom1;
426 sdy2 = pom2-sdx2*pom1;
429 pom2 = pom1*sdx1+sdy1;
431 for (;(sx1>(
fXmin-skrokx)) && (sx1<(
xmax-skrokx)) &&
432 (sy1>(
fYmin-skroky)) && (sy1<(
ymax-skroky)) &&
433 (spriz==0);sx1+=skrokx) {
435 pom2 = pom1*sdx1+sdy1;
439 pom2 = pom1*sdx2+sdy2;
440 sz2 = (
Int_t)(pom2+shad_noise);
441 if (sz1>sz2) spriz = 1;
444 }
else if (sy1!=sy2) {
445 if (sy1<sy2) skroky = 1;
449 if (
TMath::Abs(pom1)>0.0000001) sdx2 = pom2/pom1;
452 sdy2 = pom2-sdx2*pom1;
454 for (;(sy1>(
fYmin-skroky)) && (sy1<(
ymax-skroky)) &&
455 (spriz==0);sy1+=skroky) {
458 pom2 = pom1*sdx2+sdy2;
459 sz2 = (
Int_t)(pom2+shad_noise);
460 if (sz1>sz2) spriz=1;
476 unsigned long uinc1=0,uinc2=0,uinc3=0,upom,i;
481 else if (iv>255) iv = 255;
482 if (
gROOT->GetColor(250+iv)) {
490 if (
a >= UINT_MAX) uinc1 = UINT_MAX;
491 else uinc1 = (unsigned)
a;
493 i = (uinc1-upom)/256;
494 if ((i%2)==0) uinc1 = upom;
495 else uinc1 = 255-upom;
501 i = (uinc2-upom)/256;
502 if ((i%2)==0) uinc2 = upom;
503 else uinc2 = 255-upom;
509 i = (uinc3-upom)/256;
510 if ((i%2)==0) uinc3 = upom;
511 else uinc3 = 255-upom;
530 uinc2 = (
Int_t)green;
539 red =
a+0.956*
b+0.62*
c;
540 green =
a-0.272*
b-0.647*
c;
541 blue =
a-1.108*
b+1.705*
c;
542 if (red>=2) red = red-2;
543 else if (red>=1) red = 2-red;
544 if (green<0) green = -green;
545 if (blue>=2) blue = blue-2;
546 else if (blue>=1) blue = 2-blue;
547 else if (blue<-1) blue = 2+blue;
548 else if (blue<0) blue = -blue;
553 uinc2 = (
Int_t)green;
611 uinc2 = (
Int_t)green;
614 ui = uinc1+uinc2*256+uinc3*65536;
649 uinc2 = (
Int_t)green;
658 red =
a+0.956*
b+0.62*
c;
659 green =
a-0.272*
b-0.647*
c;
660 blue =
a-1.108*
b+1.705*
c;
661 if (red>=2) red = red-2;
662 else if (red>=1) red = red-1;
663 if (green<0) green = 1+green;
664 if (blue>=2) blue = blue-2;
665 else if (blue>=1) blue = blue-1;
666 else if (blue<-1) blue = 2+blue;
667 else if (blue<0) blue = 1+blue;
672 uinc2 = (
Int_t)green;
730 uinc2 = (
Int_t)green;
733 ui = uinc1+uinc2*256+uinc3*65536;
754 for (j=i+1;j<=3;j++)
a =
a*j;
755 for (j=1;j<=3-i;j++)
a =
a/j;
768 for (j=1;j<=i;j++)
v =
v*bezf;
769 for (j=1;j<=3-i;j++)
v =
v*(1-bezf);
798 Int_t x,
y,krok,xold=0,yold=0,prvy,yprv=0;
859 krok = (
x1<
x2)? 1:-1;
890 if (y1!=y2)
y += (y1<y2)? +1:-1;
911 Int_t x,
y,krok,xold=0,yold=0,prvy,xprv,yprv=0;
946 krok = (
x1<
x2)? 1:-1;
978 if (y1!=y2)
y+=(y1<y2)? +1:-1;
1027 gPad->PixeltoX(
x+w/2+1),
gPad->PixeltoY(
y)+1);
1031 gPad->PixeltoX(
x+w/2+1),
gPad->PixeltoY(
y+
h/2+1)+1);
1033 gPad->PixeltoX(
x+w/2+1),
gPad->PixeltoY(
y-
h/2-1)+1);
1047 gPad->PixeltoX(
x+w/2+1),
gPad->PixeltoY(
y+
h/2+1)+1);
1049 gPad->PixeltoX(
x+w/2+1),
gPad->PixeltoY(
y-
h/2-1)+1);
1084 Int_t krok,xi,yi,xj,yj,
a,
b,
as,bs,pr,ae,be;
1097 krok = (xi<xj)? 1:-1;
1114 if (yi!=yj)
b += (yi<yj)? +1:-1;
1131 gPad->PixeltoX(ae),
gPad->PixeltoY(be)+1);
1148 for (
a=xi;
a<=xj;
a++) {
1154 for (
a=xj;
a<=xi;
a++) {
1585 Int_t q1=0,q2=0,qv=0,smer=0,flag=0,i=0,j=0,
x1=0,y1=0,
x2=0,y2=0,
x3=0,y3=0,
x4=0,y4=0,uhl=0,xp1=0,yp1=0,xp2=0,yp2=0;
1586 Int_t ix5,iy5,x6,y6,x7,y7,y8,x1d,y1d,x2d=0,y2d=0;
1587 Int_t i1=0,i2=0,i3=0,i4=0,j1=0,j2=0,j3=0,j4=0;
1588 Int_t s1=0,s2=0,s3=0,s4=0,
t1=0,t2=0,t3=0,t4=0;
1589 Double_t dx1,dx2,dx3,dx4,dy1,dy2,dy3,dy4,z1,z2,z3,z4,zl,zh;
1590 Double_t xa,xb=0,ya,yb=0,x5=0,y5=0;
1591 Double_t da=0,db=0,dc=0,dd=0,xtaz,ytaz,ztaz,
v,shad_noise;
1592 Int_t iv=0,ekv,stvor,sx1,sx2,sx3,sx4,sx5,sy1,sy2,sy3,sy4,sy5;
1593 Double_t pom1,pom2,sdx1,sdy1,sdx2=0,sdy2,sdx3,sdy3,sdy4,spriz;
1594 Int_t sr1=0,sr2=0,sr3=0,sr4=0,sr5=0,sr6=0,sr7=0,sr8=0;
1595 Int_t tr1=0,tr2=0,tr3=0,tr4=0,tr5=0,tr6=0,tr7=0,tr8=0;
1596 Int_t il,iv1=0,iv2=0,iv3=0,iv4=0;
1597 Double_t v1=0,
v2=0,
v3=0,
v4=0,dxr1,dxr2,dyr1,dyr2,zr1,zr2,bezf;
1598 Double_t dcount_reg,z1l,z2l,z3l,z4l,sdx2p,sdy2p,dap,dbp,dcp,ddp;
1599 Int_t sx1p,sy1p,sx3p,uip=0;
1601 Double_t p000x,p000y,p100x,p100y,p010x,p010y,p110x,p110y;
1602 Double_t p001x,p001y,p101x,p101y,p011x,p011y,p111x,p111y;
1603 Int_t ibezx1=0,ibezy1=0,ibezx2,ibezy2;
1604 unsigned ui1,ui2,ui3;
1607 Double_t mxx,mxy,myx,myy,myz,px,py,kx,ky;
1608 Double_t bxl,bxh,byl,byh,xd,yd,
a,
b,rotx,roty;
1618 printf(
"The canvas size exceed the maximum X screen resolution.\n");
1619 printf(
"Use the option bf() to increase the buffer size (it should be greater than %d).\n",
fBx2);
1654 alfa = (
fAlpha*3.1415927)/180;
1664 mx = (bxh-bxl)/(x3max*(
cos(alfa)+
cos(
beta)));
1665 my = (bxh-bxl)/(y3max*(
cos(alfa)+
cos(
beta)));
1666 mul = (byh-byl)/(bxh-bxl);
1667 movx = bxl+my*
cos(alfa)*y3max;
1672 px = rotx*mx*
cos(
beta)-roty*my*
cos(alfa)+movx;
1689 movy = byl+mul*mz*zmax;
1691 py = mul*(rotx*mx*
sin(
beta)+roty*my*
sin(alfa))+movy;
1696 if (zmin>=1) zmin =
log(zmin);
1698 if (zmax>=1) zmax =
log(zmax);
1700 if ((zmax-zmin)<0.000001) zmax = zmin+0.000001;
1703 movy = byl+mul*mz*zmax;
1705 py = mul*(rotx*mx*
sin(
beta)+roty*my*
sin(alfa))+movy;
1710 if (zmin>=1) zmin =
sqrt(zmin);
1712 if (zmax>=1) zmax =
sqrt(zmax);
1714 if ((zmax-zmin)<0.000001) zmax = zmin+0.000001;
1717 movy = byl+mul*mz*zmax;
1719 py = mul*(rotx*mx*
sin(
beta)+roty*my*
sin(alfa))+movy;
1729 dcount_reg=
log(dcount_reg);
1732 dcount_reg=
sqrt(dcount_reg);
1743 p000y =
gPad->PixeltoY(
fYt)+1;
1746 p100y =
gPad->PixeltoY(
fYt)+1;
1749 p010y =
gPad->PixeltoY(
fYt)+1;
1752 p110y =
gPad->PixeltoY(
fYt)+1;
1756 p001y =
gPad->PixeltoY(
fYt)+1;
1759 p101y =
gPad->PixeltoY(
fYt)+1;
1762 p011y =
gPad->PixeltoY(
fYt)+1;
1765 p111y =
gPad->PixeltoY(
fYt)+1;
1766 Double_t bmin, bmax, binLow, binHigh, binWidth;
1767 Double_t axisLevel, gridDist, gridY1, gridY2;
1768 Int_t ndivx = 0, ndivy, ndivz, nbins;
1775 axis->
PaintAxis(p000x, p000y, p100x, p100y, bmin, bmax, ndivx,
"");
1776 axis->
PaintAxis(p000x, p000y, p010x, p010y, bmin, bmax, ndivx,
"");
1778 axis->
PaintAxis(p000x, p000y, p001x, p001y, bmin, bmax, ndivx,
"");
1780 axis->
PaintAxis(p100x, p100y, p101x, p101y, bmin, bmax, ndivx,
"");
1781 axis->
PaintAxis(p101x, p101y, p001x, p001y, bmin, bmax, ndivx,
"");
1782 axis->
PaintAxis(p001x, p001y, p011x, p011y, bmin, bmax, ndivx,
"");
1788 nbins, binWidth,
" ");
1789 for (i = 0; i < nbins + 1; i++) {
1790 axisLevel = binLow+i*binWidth;
1791 gridDist = (axisLevel-bmin)*(p001y-p000y)/(bmax-bmin);
1792 gridY1 = p000y + gridDist, gridY2 = p100y + gridDist;
1794 gridY2 = p010y + gridDist;
1799 axis->
PaintAxis(p010x, p010y, p000x, p000y, bmin, bmax, ndivx,
"");
1800 axis->
PaintAxis(p010x, p010y, p110x, p110y, bmin, bmax, ndivx,
"");
1802 axis->
PaintAxis(p010x, p010y, p011x, p011y, bmin, bmax, ndivx,
"");
1804 axis->
PaintAxis(p000x, p000y, p001x, p001y, bmin, bmax, ndivx,
"");
1805 axis->
PaintAxis(p001x, p001y, p011x, p011y, bmin, bmax, ndivx,
"");
1806 axis->
PaintAxis(p011x, p011y, p111x, p111y, bmin, bmax, ndivx,
"");
1812 nbins, binWidth,
" ");
1813 for (i = 0; i < nbins + 1; i++) {
1814 axisLevel = binLow+i*binWidth;
1815 gridDist = (axisLevel-bmin)*(p011y-p010y)/(bmax-bmin);
1816 gridY1 = p010y + gridDist, gridY2 = p000y + gridDist;
1818 gridY2 = p110y + gridDist;
1823 axis->
PaintAxis(p110x, p110y, p010x, p010y, bmin, bmax, ndivx,
"");
1824 axis->
PaintAxis(p110x, p110y, p100x, p100y, bmin, bmax, ndivx,
"");
1826 axis->
PaintAxis(p110x, p110y, p111x, p111y, bmin, bmax, ndivx,
"");
1828 axis->
PaintAxis(p010x, p010y, p011x, p011y, bmin, bmax, ndivx,
"");
1829 axis->
PaintAxis(p011x, p011y, p111x, p111y, bmin, bmax, ndivx,
"");
1830 axis->
PaintAxis(p111x, p111y, p101x, p101y, bmin, bmax, ndivx,
"");
1836 nbins, binWidth,
" ");
1837 for (i = 0; i < nbins + 1; i++) {
1838 axisLevel = binLow+i*binWidth;
1839 gridDist = (axisLevel-bmin)*(p111y-p110y)/(bmax-bmin);
1840 gridY1 = p110y + gridDist, gridY2 = p010y + gridDist;
1842 gridY2 = p100y + gridDist;
1847 axis->
PaintAxis(p100x, p100y, p110x, p110y, bmin, bmax, ndivx,
"");
1848 axis->
PaintAxis(p100x, p100y, p000x, p000y, bmin, bmax, ndivx,
"");
1850 axis->
PaintAxis(p100x, p100y, p101x, p101y, bmin, bmax, ndivx,
"");
1852 axis->
PaintAxis(p110x, p110y, p111x, p111y, bmin, bmax, ndivx,
"");
1853 axis->
PaintAxis(p111x, p111y, p101x, p101y, bmin, bmax, ndivx,
"");
1854 axis->
PaintAxis(p101x, p101y, p001x, p001y, bmin, bmax, ndivx,
"");
1860 nbins, binWidth,
" ");
1861 for (i = 0; i < nbins + 1; i++) {
1862 axisLevel = binLow+i*binWidth;
1863 gridDist = (axisLevel-bmin)*(p101y-p100y)/(bmax-bmin);
1864 gridY1 = p100y + gridDist, gridY2 = p110y + gridDist;
1866 gridY2 = p000y + gridDist;
1885 if (
x2>=
x1) turnj = 1;
1886 if (
x3>=
x2) turni = 1;
1914 if (smer==0) q1 -= 1;
1918 if (smer==0) q2 += 1;
1955 if ((q1!=q2||smer!=0) && flag==1) {
2050 xtaz = (dx1+dx2+dx4)/3;
2051 ytaz = (dy1+dy2+dy4)/3;
2052 ztaz = (z1+z2+z4)/3;
2056 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
2061 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
2070 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
2075 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
2085 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
2090 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
2100 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
2105 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
2119 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
2124 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
2129 da = (dxr1+dx2+dx1)/3;
2130 db = (dyr1+dy2+dy1)/3;
2134 da = (dxr1+dxr2+dx1)/3;
2135 db = (dyr1+dyr2+dy1)/3;
2136 dc = (zr1+zr2+z1)/3;
2139 da = (dxr2+dx1+dx4)/3;
2140 db = (dyr2+dy1+dy4)/3;
2145 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
2150 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
2155 da = (dx1+dx2+dx3)/3;
2156 db = (dy1+dy2+dy3)/3;
2160 da = (dx2+dxr1+dx3)/3;
2161 db = (dy2+dyr1+dy3)/3;
2165 da = (dx2+dxr2+dxr1)/3;
2166 db = (dy2+dyr2+dyr1)/3;
2167 dc = (z2+zr2+zr1)/3;
2170 da = (dxr2+dx2+dx1)/3;
2171 db = (dyr2+dy2+dy1)/3;
2176 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
2181 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
2186 da = (dx2+dx3+dx4)/3;
2187 db = (dy2+dy3+dy4)/3;
2191 da = (dx4+dx3+dxr1)/3;
2192 db = (dy4+dy3+dyr1)/3;
2196 da = (dx3+dxr2+dxr1)/3;
2197 db = (dy3+dyr2+dyr1)/3;
2198 dc = (z3+zr2+zr1)/3;
2201 da = (dx2+dxr2+dx3)/3;
2202 db = (dy2+dyr2+dy3)/3;
2207 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
2212 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
2217 da = (dx1+dx3+dx4)/3;
2218 db = (dy1+dy3+dy4)/3;
2222 da = (dx4+dx3+dxr2)/3;
2223 db = (dy4+dy3+dyr2)/3;
2227 da = (dx4+dxr2+dxr1)/3;
2228 db = (dy4+dyr2+dyr1)/3;
2229 dc = (z4+zr2+zr1)/3;
2232 da = (dx1+dx4+dxr1)/3;
2233 db = (dy1+dy4+dyr1)/3;
2305 xtaz = (dx3+dx2+dx4)/3;
2306 ytaz = (dy3+dy2+dy4)/3;
2307 ztaz = (z3+z2+z4)/3;
2362 if ((q1!=q2||smer!=0)&&flag==1) {
2457 xtaz = (dx1+dx2+dx4)/3;
2458 ytaz = (dy1+dy2+dy4)/3;
2459 ztaz = (z1+z2+z4)/3;
2463 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
2468 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
2477 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
2482 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
2492 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
2497 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
2507 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
2512 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
2526 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
2531 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
2536 da = (dxr1+dx2+dx1)/3;
2537 db = (dyr1+dy2+dy1)/3;
2541 da = (dxr1+dxr2+dx1)/3;
2542 db = (dyr1+dyr2+dy1)/3;
2543 dc = (zr1+zr2+z1)/3;
2546 da = (dxr2+dx1+dx4)/3;
2547 db = (dyr2+dy1+dy4)/3;
2552 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
2557 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
2562 da = (dx1+dx2+dx3)/3;
2563 db = (dy1+dy2+dy3)/3;
2567 da = (dx2+dxr1+dx3)/3;
2568 db = (dy2+dyr1+dy3)/3;
2572 da = (dx2+dxr2+dxr1)/3;
2573 db = (dy2+dyr2+dyr1)/3;
2574 dc = (z2+zr2+zr1)/3;
2577 da = (dxr2+dx2+dx1)/3;
2578 db = (dyr2+dy2+dy1)/3;
2583 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
2588 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
2593 da = (dx2+dx3+dx4)/3;
2594 db = (dy2+dy3+dy4)/3;
2598 da = (dx4+dx3+dxr1)/3;
2599 db = (dy4+dy3+dyr1)/3;
2603 da = (dx3+dxr2+dxr1)/3;
2604 db = (dy3+dyr2+dyr1)/3;
2605 dc = (z3+zr2+zr1)/3;
2608 da = (dx2+dxr2+dx3)/3;
2609 db = (dy2+dyr2+dy3)/3;
2614 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
2619 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
2624 da = (dx1+dx3+dx4)/3;
2625 db = (dy1+dy3+dy4)/3;
2629 da = (dx4+dx3+dxr2)/3;
2630 db = (dy4+dy3+dyr2)/3;
2634 da = (dx4+dxr2+dxr1)/3;
2635 db = (dy4+dyr2+dyr1)/3;
2636 dc = (z4+zr2+zr1)/3;
2639 da = (dx1+dx4+dxr1)/3;
2640 db = (dy1+dy4+dyr1)/3;
2687 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
2688 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
2689 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
2690 dd = -da*dx1-db*dy1-dc*z1;
2707 if (pom2!=0) sdx1 = pom1/pom2;
2710 sdy1 = pom1-sdx1*pom2;
2711 for (sx4=sx1,sx5=sx1,sy5=sy1;sx4<=sx2;sx4++) {
2713 sdy4 = sdx1*pom1+sdy1;
2714 sy4 = (
Int_t)(sdy4);
2722 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
2723 else v = (iv1+iv2+iv4)/3;
2737 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
2738 else v = (iv1+iv2+iv4)/3;
2762 if (pom2!=0) sdx2 = pom1/pom2;
2765 sdy2 = pom1-sdx2*pom2;
2776 xtaz = (dx3+dx2+dx4)/3;
2777 ytaz = (dy3+dy2+dy4)/3;
2778 ztaz = (z3+z2+z4)/3;
2813 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
2814 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
2815 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
2816 dd = -da*dx1-db*dy1-dc*z1;
2833 if (pom2!=0) sdx1 = pom1/pom2;
2836 sdy1 = pom1-sdx1*pom2;
2837 for (sx4=sx1,sx5=sx1,sy5=sy1;sx4<=sx2;sx4++) {
2839 sdy4 = sdx1*pom1+sdy1;
2848 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
2849 else v = (iv1+iv2+iv4)/3;
2863 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
2864 else v = (iv1+iv2+iv4)/3;
2874 for (sx4=sx1p,sx5=sx1p,sy5=sy1p;sx4<=sx3p;sx4++) {
2876 sdy4 = sdx2p*pom1+sdy2p;
2886 if (dcp!=0)
v = (-ddp-dap*dx1-dbp*dy1)/dcp;
2887 else v = (iv1+iv2+iv4)/3;
2902 if (dcp!=0)
v = (-ddp-dap*dx1-dbp*dy1)/dcp;
2903 else v = (iv1+iv2+iv4)/3;
2928 if (pom2!=0) sdx2 = pom1/pom2;
2931 sdy2 = pom1-sdx2*pom2;
2932 for (sx4=sx2,sx5=sx2,sy5=sy2;sx4<=sx3;sx4++) {
2934 sdy4 = sdx2*pom1+sdy2;
2943 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
2944 else v =(iv1+iv2+iv4)/3;
2958 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
2959 else v =(iv1+iv2+iv4)/3;
2972 if (((flag==0)&&(smer==0))||((flag!=0)&&(smer!=0))) {
2977 }
else if (((flag!=0)&&(smer==0))||((flag==0)&&(smer!=0))) {
3005 bezy1 = y1+(y2-y3)/6;
3006 bezy2 = y2-(y4-y1)/6;
3032 for (bezf=0;bezf<1.01;bezf+=0.1) {
3042 Envelope(ibezx2,ibezy2,ibezx1,ibezy1);
3077 for (bezf=0;bezf<1.01;bezf+=0.1) {
3087 Envelope(ibezx1,ibezy1,ibezx2,ibezy2);
3101 if ((q1!=q2||smer!=0)&&flag==1) {
3158 i1 = (
Int_t)(zl/dcount_reg+1);
3159 if (z1!=z2||z2!=z3||z3!=z4) {
3179 if (
fZ>zh)
goto eqend;
3183 if ((z2<=
fZ&&
fZ<z1)||(z2<
fZ&&
fZ<=z1)) {
3184 xb = (
fZ-z2)*(dx1-dx2)/(z1-z2)+dx2;
3187 if ((z1<=
fZ&&
fZ<z2)||(z1<
fZ&&
fZ<=z2)) {
3188 xb = (
fZ-z1)*(dx2-dx1)/(z2-z1)+dx1;
3191 if (z2==
fZ&&
fZ==z1) {
3200 if ((z1<=
fZ&&
fZ<z4)||(z1<
fZ&&
fZ<=z4)) {
3201 ya = (
fZ-z1)*(dy4-dy1)/(z4-z1)+dy1;
3204 if ((z4<=
fZ&&
fZ<z1)||(z4<
fZ&&
fZ<=z1)) {
3205 ya = (
fZ-z4)*(dy1-dy4)/(z1-z4)+dy4;
3208 if (z4==
fZ&&
fZ==z1) {
3220 if ((z3<=
fZ&&
fZ<z4)||(z3<
fZ&&
fZ<=z4)) {
3221 xa = (
fZ-z3)*(dx4-dx3)/(z4-z3)+dx3;
3224 if ((z4<=
fZ&&
fZ<z3)||(z4<
fZ&&
fZ<=z3)) {
3225 xa = (
fZ-z4)*(dx3-dx4)/(z3-z4)+dx4;
3228 if (z4==
fZ&&
fZ==z3) {
3240 if ((z2<=
fZ&&
fZ<z3)||(z2<
fZ&&
fZ<=z3)) {
3241 ya = (
fZ-z2)*(dy3-dy2)/(z3-z2)+dy2;
3244 if ((z3<=
fZ&&
fZ<z2)||(z3<
fZ&&
fZ<=z2)) {
3245 ya = (
fZ-z3)*(dy2-dy3)/(z2-z3)+dy3;
3248 if (z3==
fZ&&
fZ==z2) {
3267 if ((q1!=q2||smer!=0)&&flag==1) {
3279 if (
s1<=w1&&s2<=w1&&s3<=w1&&s4<=w1) {
3293 if (
s1<=w1&&s2<=w1&&s3<=w1&&s4<=w1) {
3308 if (
t1<=w2&&t2<=w2&&t3<=w2&&t4<=w2) {
3322 if (
t1<=w2&&t2<=w2&&t3<=w2&&t4<=w2) {
3453 if (pom2!=0) sdx1 = pom1/pom2;
3456 sdy1 = pom1-sdx1*pom2;
3459 if (pom2!=0) sdx2 = pom1/pom2;
3462 sdy2 = pom1-sdx2*pom2;
3465 if (pom2!=0) sdx3 = pom1/pom2;
3468 sdy3 = pom1-sdx3*pom2;
3471 for (sx4=sx1;sx4<=sx2;sx4++) {
3473 sdy4 = sdx1*pom1+sdy1;
3476 sdy4 = sdx2*pom1+sdy2;
3484 if ((sy4<=y5)||(sy5<y5)) {
3493 for (sx4=sx2;sx4<=sx3;sx4++) {
3495 sdy4 = sdx3*pom1+sdy3;
3498 sdy4 = sdx2*pom1+sdy2;
3506 if ((sy4<=y5)||(sy5<y5)) {
3516 for (sx4=sx1;sx4<=sx3;sx4++) {
3518 sdy4 = sdx2*pom1+sdy2;
3521 sdy4 = sdx1*pom1+sdy1;
3529 if ((sy4<=y5)||(sy5<y5)) {
3538 for (sx4=sx3;sx4<=sx2;sx4++) {
3540 sdy4 = sdx3*pom1+sdy3;
3543 sdy4 = sdx1*pom1+sdy1;
3551 if ((sy4<=y5)||(sy5<y5)) {
3595 if (pom2!=0) sdx1 = pom1/pom2;
3598 sdy1 = pom1-sdx1*pom2;
3601 if (pom2!=0) sdx2 = pom1/pom2;
3604 sdy2 = pom1-sdx2*pom2;
3607 if (pom2!=0) sdx3 = pom1/pom2;
3610 sdy3 = pom1-sdx3*pom2;
3613 for (sx4=sx1;sx4<=sx2;sx4++) {
3615 sdy4 = sdx1*pom1+sdy1;
3618 sdy4 = sdx2*pom1+sdy2;
3626 if ((sy4<=y5)||(sy5<y5)) {
3635 for (sx4=sx2;sx4<=sx3;sx4++) {
3637 sdy4 = sdx3*pom1+sdy3;
3640 sdy4 = sdx2*pom1+sdy2;
3648 if ((sy4<=y5)||(sy5<y5)) {
3658 for (sx4=sx1;sx4<=sx3;sx4++) {
3660 sdy4 = sdx2*pom1+sdy2;
3663 sdy4 = sdx1*pom1+sdy1;
3671 if ((sy4<=y5)||(sy5<y5)) {
3680 for (sx4=sx3;sx4<=sx2;sx4++) {
3682 sdy4 = sdx3*pom1+sdy3;
3685 sdy4 = sdx1*pom1+sdy1;
3693 if ((sy4<=y5)||(sy5<y5)) {
3828 if (((flag==0)&&(smer==0))||((flag!=0)&&(smer!=0))) {
3865 bezy1 = y1+(y2-y3)/6;
3866 bezy2 = y2-(y4-y1)/6;
3892 for (bezf=0;bezf<1.01;bezf+=0.1) {
3902 Envelope(ibezx2,ibezy2,ibezx1,ibezy1);
3937 for (bezf=0;bezf<1.01;bezf+=0.1) {
3947 Envelope(ibezx1,ibezy1,ibezx2,ibezy2);
3961 if ((q1!=q2||smer!=0)&&flag==1) {
4056 xtaz = (dx1+dx2+dx4)/3;
4057 ytaz = (dy1+dy2+dy4)/3;
4058 ztaz = (z1+z2+z4)/3;
4062 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
4067 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
4076 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
4081 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
4091 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
4096 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
4106 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
4111 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
4125 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
4130 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
4135 da = (dxr1+dx2+dx1)/3;
4136 db = (dyr1+dy2+dy1)/3;
4140 da = (dxr1+dxr2+dx1)/3;
4141 db = (dyr1+dyr2+dy1)/3;
4142 dc = (zr1+zr2+z1)/3;
4145 da = (dxr2+dx1+dx4)/3;
4146 db = (dyr2+dy1+dy4)/3;
4151 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
4156 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
4161 da = (dx1+dx2+dx3)/3;
4162 db = (dy1+dy2+dy3)/3;
4166 da = (dx2+dxr1+dx3)/3;
4167 db = (dy2+dyr1+dy3)/3;
4171 da = (dx2+dxr2+dxr1)/3;
4172 db = (dy2+dyr2+dyr1)/3;
4173 dc = (z2+zr2+zr1)/3;
4176 da = (dxr2+dx2+dx1)/3;
4177 db = (dyr2+dy2+dy1)/3;
4182 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
4187 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
4192 da = (dx2+dx3+dx4)/3;
4193 db = (dy2+dy3+dy4)/3;
4197 da = (dx4+dx3+dxr1)/3;
4198 db = (dy4+dy3+dyr1)/3;
4202 da = (dx3+dxr2+dxr1)/3;
4203 db = (dy3+dyr2+dyr1)/3;
4204 dc = (z3+zr2+zr1)/3;
4207 da = (dx2+dxr2+dx3)/3;
4208 db = (dy2+dyr2+dy3)/3;
4213 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
4218 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
4223 da = (dx1+dx3+dx4)/3;
4224 db = (dy1+dy3+dy4)/3;
4228 da = (dx4+dx3+dxr2)/3;
4229 db = (dy4+dy3+dyr2)/3;
4233 da = (dx4+dxr2+dxr1)/3;
4234 db = (dy4+dyr2+dyr1)/3;
4235 dc = (z4+zr2+zr1)/3;
4238 da = (dx1+dx4+dxr1)/3;
4239 db = (dy1+dy4+dyr1)/3;
4286 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
4287 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
4288 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
4289 dd = -da*dx1-db*dy1-dc*z1;
4305 if (pom2!=0) sdx2 = pom1/pom2;
4308 sdy2 = pom1-sdx2*pom2;
4319 xtaz = (dx3+dx2+dx4)/3;
4320 ytaz = (dy3+dy2+dy4)/3;
4321 ztaz = (z3+z2+z4)/3;
4356 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
4357 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
4358 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
4359 dd = -da*dx1-db*dy1-dc*z1;
4376 if (pom2!=0) sdx1 = pom1/pom2;
4379 sdy1 = pom1-sdx1*pom2;
4380 for (sx4=sx1,sx5=sx1,sy5=sy1;sx4<=sx2;sx4++) {
4382 sdy4 = sdx1*pom1+sdy1;
4391 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
4392 else v =(iv1+iv2+iv4)/3;
4406 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
4407 else v =(iv1+iv2+iv4)/3;
4417 for (sx4=sx1p,sx5=sx1p,sy5=sy1p;sx4<=sx3p;sx4++) {
4419 sdy4 = sdx2p*pom1+sdy2p;
4429 if (dcp!=0)
v = (-ddp-dap*dx1-dbp*dy1)/dcp;
4430 else v = (iv1+iv2+iv4)/3;
4445 if (dcp!=0)
v = (-ddp-dap*dx1-dbp*dy1)/dcp;
4446 else v = (iv1+iv2+iv4)/3;
4461 if (((flag!=0)&&(smer==0))||((flag==0)&&(smer!=0))) {
4498 bezy1 = y1+(y2-y3)/6;
4499 bezy2 = y2-(y4-y1)/6;
4525 for (bezf=0;bezf<1.01;bezf+=0.1) {
4535 Envelope(ibezx2,ibezy2,ibezx1,ibezy1);
4570 for (bezf=0;bezf<1.01;bezf+=0.1) {
4580 Envelope(ibezx1,ibezy1,ibezx2,ibezy2);
4594 if ((q1!=q2||smer!=0)&&flag==1) {
4689 xtaz = (dx1+dx2+dx4)/3;
4690 ytaz = (dy1+dy2+dy4)/3;
4691 ztaz = (z1+z2+z4)/3;
4695 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
4700 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
4709 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
4714 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
4724 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
4729 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
4739 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
4744 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
4758 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
4763 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
4768 da = (dxr1+dx2+dx1)/3;
4769 db = (dyr1+dy2+dy1)/3;
4773 da = (dxr1+dxr2+dx1)/3;
4774 db = (dyr1+dyr2+dy1)/3;
4775 dc = (zr1+zr2+z1)/3;
4778 da = (dxr2+dx1+dx4)/3;
4779 db = (dyr2+dy1+dy4)/3;
4784 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
4789 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
4794 da = (dx1+dx2+dx3)/3;
4795 db = (dy1+dy2+dy3)/3;
4799 da = (dx2+dxr1+dx3)/3;
4800 db = (dy2+dyr1+dy3)/3;
4804 da = (dx2+dxr2+dxr1)/3;
4805 db = (dy2+dyr2+dyr1)/3;
4806 dc = (z2+zr2+zr1)/3;
4809 da = (dxr2+dx2+dx1)/3;
4810 db = (dyr2+dy2+dy1)/3;
4815 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
4820 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
4825 da = (dx2+dx3+dx4)/3;
4826 db = (dy2+dy3+dy4)/3;
4830 da = (dx4+dx3+dxr1)/3;
4831 db = (dy4+dy3+dyr1)/3;
4835 da = (dx3+dxr2+dxr1)/3;
4836 db = (dy3+dyr2+dyr1)/3;
4837 dc = (z3+zr2+zr1)/3;
4840 da = (dx2+dxr2+dx3)/3;
4841 db = (dy2+dyr2+dy3)/3;
4846 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
4851 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
4856 da = (dx1+dx3+dx4)/3;
4857 db = (dy1+dy3+dy4)/3;
4861 da = (dx4+dx3+dxr2)/3;
4862 db = (dy4+dy3+dyr2)/3;
4866 da = (dx4+dxr2+dxr1)/3;
4867 db = (dy4+dyr2+dyr1)/3;
4868 dc = (z4+zr2+zr1)/3;
4871 da = (dx1+dx4+dxr1)/3;
4872 db = (dy1+dy4+dyr1)/3;
4919 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
4920 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
4921 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
4922 dd = -da*dx1-db*dy1-dc*z1;
4939 if (pom2!=0) sdx1 = pom1/pom2;
4942 sdy1 = pom1-sdx1*pom2;
4943 for (sx4=sx1,sx5=sx1,sy5=sy1;sx4<=sx2;sx4++) {
4945 sdy4 = sdx1*pom1+sdy1;
4954 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
4955 else v =(iv1+iv2+iv4)/3;
4969 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
4970 else v =(iv1+iv2+iv4)/3;
4980 xtaz = (dx3+dx2+dx4)/3;
4981 ytaz = (dy3+dy2+dy4)/3;
4982 ztaz = (z3+z2+z4)/3;
5017 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
5018 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
5019 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
5020 dd = -da*dx1-db*dy1-dc*z1;
5037 if (pom2!=0) sdx2 = pom1/pom2;
5040 sdy2 = pom1-sdx2*pom2;
5041 for (sx4=sx2,sx5=sx2,sy5=sy2;sx4<=sx3;sx4++) {
5043 sdy4 = sdx2*pom1+sdy2;
5052 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5053 else v =(iv1+iv2+iv4)/3;
5067 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5068 else v =(iv1+iv2+iv4)/3;
5097 box->SetFillStyle(1001);
5098 if ((q1!=q2||smer!=0)&&flag==1) {
5193 xtaz = (dx1+dx2+dx4)/3;
5194 ytaz = (dy1+dy2+dy4)/3;
5195 ztaz = (z1+z2+z4)/3;
5199 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
5204 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
5213 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
5218 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
5228 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
5233 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
5243 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
5248 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
5262 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
5267 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
5272 da = (dxr1+dx2+dx1)/3;
5273 db = (dyr1+dy2+dy1)/3;
5277 da = (dxr1+dxr2+dx1)/3;
5278 db = (dyr1+dyr2+dy1)/3;
5279 dc = (zr1+zr2+z1)/3;
5282 da = (dxr2+dx1+dx4)/3;
5283 db = (dyr2+dy1+dy4)/3;
5288 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
5293 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
5298 da = (dx1+dx2+dx3)/3;
5299 db = (dy1+dy2+dy3)/3;
5303 da = (dx2+dxr1+dx3)/3;
5304 db = (dy2+dyr1+dy3)/3;
5308 da = (dx2+dxr2+dxr1)/3;
5309 db = (dy2+dyr2+dyr1)/3;
5310 dc = (z2+zr2+zr1)/3;
5313 da = (dxr2+dx2+dx1)/3;
5314 db = (dyr2+dy2+dy1)/3;
5319 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
5324 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
5329 da = (dx2+dx3+dx4)/3;
5330 db = (dy2+dy3+dy4)/3;
5334 da = (dx4+dx3+dxr1)/3;
5335 db = (dy4+dy3+dyr1)/3;
5339 da = (dx3+dxr2+dxr1)/3;
5340 db = (dy3+dyr2+dyr1)/3;
5341 dc = (z3+zr2+zr1)/3;
5344 da = (dx2+dxr2+dx3)/3;
5345 db = (dy2+dyr2+dy3)/3;
5350 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
5355 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
5360 da = (dx1+dx3+dx4)/3;
5361 db = (dy1+dy3+dy4)/3;
5365 da = (dx4+dx3+dxr2)/3;
5366 db = (dy4+dy3+dyr2)/3;
5370 da = (dx4+dxr2+dxr1)/3;
5371 db = (dy4+dyr2+dyr1)/3;
5372 dc = (z4+zr2+zr1)/3;
5375 da = (dx1+dx4+dxr1)/3;
5376 db = (dy1+dy4+dyr1)/3;
5423 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
5424 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
5425 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
5426 dd = -da*dx1-db*dy1-dc*z1;
5463 if (pom2!=0) sdx1 = pom1/pom2;
5466 sdy1 = pom1-sdx1*pom2;
5469 if (pom2!=0) sdx2 = pom1/pom2;
5472 sdy2 = pom1-sdx2*pom2;
5475 if (pom2!=0) sdx3 = pom1/pom2;
5478 sdy3 = pom1-sdx3*pom2;
5481 for (sx4=sx1;sx4<=sx2;sx4++) {
5483 sdy4 = sdx1*pom1+sdy1;
5486 sdy4 = sdx2*pom1+sdy2;
5494 if ((sy4<=y5)||(sy5<y5)) {
5498 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5500 for (il=sy5;il<=sy4+1;il++) {
5502 if(il<=sy4) dy1 = il;
5504 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5505 else v =(iv1+iv2+iv4)/3;
5509 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5517 for (sx4=sx2;sx4<=sx3;sx4++) {
5519 sdy4 = sdx3*pom1+sdy3;
5522 sdy4 = sdx2*pom1+sdy2;
5530 if ((sy4<=y5)||(sy5<y5)) {
5534 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5536 for (il=sy5;il<=sy4+1;il++) {
5538 if(il<=sy4) dy1 = il;
5540 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5541 else v =(iv1+iv2+iv4)/3;
5545 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5554 for (sx4=sx1;sx4<=sx3;sx4++) {
5556 sdy4 = sdx2*pom1+sdy2;
5559 sdy4 = sdx1*pom1+sdy1;
5567 if ((sy4<=y5)||(sy5<y5)) {
5571 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5573 for (il=sy5;il<=sy4+1;il++) {
5575 if(il<=sy4) dy1 = il;
5577 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5578 else v =(iv1+iv2+iv4)/3;
5582 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5590 for (sx4=sx3;sx4<=sx2;sx4++) {
5592 sdy4 = sdx3*pom1+sdy3;
5595 sdy4 = sdx1*pom1+sdy1;
5603 if ((sy4<=y5)||(sy5<y5)) {
5607 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5609 for (il=sy5;il<=sy4+1;il++) {
5611 if(il<=sy4) dy1 = il;
5613 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5614 else v =(iv1+iv2+iv4)/3;
5618 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5626 xtaz = (dx3+dx2+dx4)/3;
5627 ytaz = (dy3+dy2+dy4)/3;
5628 ztaz = (z3+z2+z4)/3;
5663 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
5664 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
5665 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
5666 dd = -da*dx1-db*dy1-dc*z1;
5703 if (pom2!=0) sdx1 = pom1/pom2;
5706 sdy1 = pom1-sdx1*pom2;
5709 if (pom2!=0) sdx2 = pom1/pom2;
5712 sdy2 = pom1-sdx2*pom2;
5715 if (pom2!=0) sdx3 = pom1/pom2;
5718 sdy3 = pom1-sdx3*pom2;
5721 for (sx4=sx1;sx4<=sx2;sx4++) {
5723 sdy4 = sdx1*pom1+sdy1;
5726 sdy4 = sdx2*pom1+sdy2;
5734 if ((sy4<=y5)||(sy5<y5)) {
5738 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5740 for (il=sy5;il<=sy4+1;il++) {
5742 if(il<=sy4) dy1 = il;
5744 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5745 else v =(iv2+iv3+iv4)/3;
5749 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5757 for (sx4=sx2;sx4<=sx3;sx4++) {
5759 sdy4 = sdx3*pom1+sdy3;
5762 sdy4 = sdx2*pom1+sdy2;
5770 if ((sy4<=y5)||(sy5<y5)) {
5774 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5776 for (il=sy5;il<=sy4+1;il++) {
5778 if(il<=sy4) dy1 = il;
5780 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5781 else v =(iv2+iv3+iv4)/3;
5785 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5794 for (sx4=sx1;sx4<=sx3;sx4++) {
5796 sdy4 = sdx2*pom1+sdy2;
5799 sdy4 = sdx1*pom1+sdy1;
5807 if ((sy4<=y5)||(sy5<y5)) {
5811 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5813 for (il=sy5;il<=sy4+1;il++) {
5815 if(il<=sy4) dy1 = il;
5817 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5818 else v =(iv2+iv3+iv4)/3;
5822 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5830 for (sx4=sx3;sx4<=sx2;sx4++) {
5832 sdy4 = sdx3*pom1+sdy3;
5835 sdy4 = sdx1*pom1+sdy1;
5843 if ((sy4<=y5)||(sy5<y5)) {
5847 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5849 for (il=sy5;il<=sy4+1;il++) {
5851 if(il<=sy4) dy1 = il;
5853 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5854 else v =(iv2+iv3+iv4)/3;
5858 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5870 if ((q1!=q2||smer!=0)&&flag==1) {
5914 if ((q1!=q2||smer!=0)&&flag==1) {
5957 if ((q1!=q2||smer!=0)&&flag==1) {
6052 xtaz = (dx1+dx2+dx4)/3;
6053 ytaz = (dy1+dy2+dy4)/3;
6054 ztaz = (z1+z2+z4)/3;
6058 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
6063 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
6072 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
6077 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
6087 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
6092 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
6102 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
6107 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
6121 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
6126 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
6131 da = (dxr1+dx2+dx1)/3;
6132 db = (dyr1+dy2+dy1)/3;
6136 da = (dxr1+dxr2+dx1)/3;
6137 db = (dyr1+dyr2+dy1)/3;
6138 dc = (zr1+zr2+z1)/3;
6141 da = (dxr2+dx1+dx4)/3;
6142 db = (dyr2+dy1+dy4)/3;
6147 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
6152 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
6157 da = (dx1+dx2+dx3)/3;
6158 db = (dy1+dy2+dy3)/3;
6162 da = (dx2+dxr1+dx3)/3;
6163 db = (dy2+dyr1+dy3)/3;
6167 da = (dx2+dxr2+dxr1)/3;
6168 db = (dy2+dyr2+dyr1)/3;
6169 dc = (z2+zr2+zr1)/3;
6172 da = (dxr2+dx2+dx1)/3;
6173 db = (dyr2+dy2+dy1)/3;
6178 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
6183 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
6188 da = (dx2+dx3+dx4)/3;
6189 db = (dy2+dy3+dy4)/3;
6193 da = (dx4+dx3+dxr1)/3;
6194 db = (dy4+dy3+dyr1)/3;
6198 da = (dx3+dxr2+dxr1)/3;
6199 db = (dy3+dyr2+dyr1)/3;
6200 dc = (z3+zr2+zr1)/3;
6203 da = (dx2+dxr2+dx3)/3;
6204 db = (dy2+dyr2+dy3)/3;
6209 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
6214 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
6219 da = (dx1+dx3+dx4)/3;
6220 db = (dy1+dy3+dy4)/3;
6224 da = (dx4+dx3+dxr2)/3;
6225 db = (dy4+dy3+dyr2)/3;
6229 da = (dx4+dxr2+dxr1)/3;
6230 db = (dy4+dyr2+dyr1)/3;
6231 dc = (z4+zr2+zr1)/3;
6234 da = (dx1+dx4+dxr1)/3;
6235 db = (dy1+dy4+dyr1)/3;
6282 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
6283 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
6284 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
6285 dd = -da*dx1-db*dy1-dc*z1;
6302 if (pom2!=0) sdx1 = pom1/pom2;
6305 sdy1 = pom1-sdx1*pom2;
6306 for (sx4=sx1,sx5=sx1,sy5=sy1;sx4<=sx2;sx4++) {
6308 sdy4 = sdx1*pom1+sdy1;
6317 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6318 else v = (iv1+iv2+iv4)/3;
6332 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6333 else v = (iv1+iv2+iv4)/3;
6357 if (pom2!=0) sdx2 = pom1/pom2;
6360 sdy2 = pom1-sdx2*pom2;
6371 xtaz = (dx3+dx2+dx4)/3;
6372 ytaz = (dy3+dy2+dy4)/3;
6373 ztaz = (z3+z2+z4)/3;
6408 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
6409 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
6410 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
6411 dd = -da*dx1-db*dy1-dc*z1;
6428 if (pom2!=0) sdx1 = pom1/pom2;
6431 sdy1 = pom1-sdx1*pom2;
6432 for (sx4=sx1,sx5=sx1,sy5=sy1;sx4<=sx2;sx4++) {
6434 sdy4 = sdx1*pom1+sdy1;
6443 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6444 else v = (iv1+iv2+iv4)/3;
6458 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6459 else v = (iv1+iv2+iv4)/3;
6484 if (pom2!=0) sdx1 = pom1/pom2;
6487 sdy1 = pom1-sdx1*pom2;
6488 for (sx4=sx1,sx5=sx1,sy5=sy1;sx4<=sx2;sx4++) {
6490 sdy4 = sdx1*pom1+sdy1;
6499 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6500 else v = (iv1+iv2+iv4)/3;
6514 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6515 else v = (iv1+iv2+iv4)/3;
6525 for (sx4=sx1p,sx5=sx1p,sy5=sy1p;sx4<=sx3p;sx4++) {
6527 sdy4 = sdx2p*pom1+sdy2p;
6537 if (dcp!=0)
v = (-ddp-dap*dx1-dbp*dy1)/dcp;
6538 else v = (iv1+iv2+iv4)/3;
6553 if (dcp!=0)
v = (-ddp-dap*dx1-dbp*dy1)/dcp;
6554 else v = (iv1+iv2+iv4)/3;
6579 if (pom2!=0) sdx2 = pom1/pom2;
6582 sdy2 = pom1-sdx2*pom2;
6583 for (sx4=sx2,sx5=sx2,sy5=sy2;sx4<=sx3;sx4++) {
6585 sdy4 = sdx2*pom1+sdy2;
6594 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6595 else v = (iv1+iv2+iv4)/3;
6609 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6610 else v = (iv1+iv2+iv4)/3;
6637 if (smer==0) q1 += 1;
6645 }
while ((q1!=qv||(q2!=(qv-1) && q2!=w2)||smer!=0||flag!=1) &&
6646 ((q1!=(qv-1) && q1!=w1)||q2!=qv||smer!=1||flag!=1) &&
6648 if (qv<=w2&&qv<=w1) {
6691 if (q2<=w2)
goto l2;
6693 }
while (q1<=w1&&q2<=w2);
6706 if (
x2>=
x1) turnj = 1;
6707 if (
x3>=
x2) turni = 1;
6735 if (smer==0) q1 -= 1;
6739 if (smer==0) q2 += 1;
6792 if (smer==0) q1 += 1;
6800 }
while ((q1!=qv||(q2!=(qv-1)&&q2!=w2)||smer!=0||flag!=1) &&
6801 ((q1!=(qv-1)&&q1!=w1)||q2!=qv||smer!=1||flag!=1) &&
6803 if (qv<=w2&&qv<=w1) {
6846 if (q2<=w2)
goto lc2;
6848 }
while (q1<=w1&&q2<=w2);
6852 static char chopt[10] =
"";
6854 axis->
PaintAxis(p101x, p101y, p111x, p111y, bmin, bmax, ndivx,
"");
6855 axis->
PaintAxis(p011x, p011y, p111x, p111y, bmin, bmax, ndivx,
"");
6857 axis->
PaintAxis(p110x, p110y, p111x, p111y, bmin, bmax, ndivx,
"");
6862 chopt[0] = 0; strlcat(chopt,
"SDH-",10);
6864 strlcat(chopt,
"N",10);
6867 xaxis->
PaintAxis(p010x, p010y, p110x, p110y, bmin, bmax, ndivx, chopt);
6872 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
6874 strlcat(chopt,
"N",10);
6877 yaxis->
PaintAxis(p100x, p100y, p110x, p110y, bmin, bmax, ndivy, chopt);
6885 if (bmin <= 0) bmin=0.001*bmax;
6886 zaxis->
PaintAxis(p010x, p010y, p011x, p011y, bmin, bmax, ndivz,
"G+");
6888 TF1 *
f1=
new TF1(
"f1",
"sqrt(x)",bmin,bmax);
6889 TGaxis *a1 =
new TGaxis(p010x, p010y, p011x, p011y,
"f1", ndivz,
"SDH+");
6895 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
6897 strlcat(chopt,
"N",10);
6900 zaxis->
PaintAxis(p010x, p010y, p011x, p011y, bmin, bmax, ndivz, chopt);
6904 axis->
PaintAxis(p001x, p001y, p101x, p101y, bmin, bmax, ndivx,
"");
6905 axis->
PaintAxis(p111x, p111y, p101x, p101y, bmin, bmax, ndivx,
"");
6907 axis->
PaintAxis(p100x, p100y, p101x, p101y, bmin, bmax, ndivx,
"");
6912 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
6914 strlcat(chopt,
"N",10);
6917 xaxis->
PaintAxis(p000x, p000y, p100x, p100y, bmin, bmax, ndivx, chopt);
6922 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
6924 strlcat(chopt,
"N",10);
6927 yaxis->
PaintAxis(p100x, p100y, p110x, p110y, bmin, bmax, ndivy, chopt);
6935 if (bmin <= 0) bmin=0.001*bmax;
6936 zaxis->
PaintAxis(p110x, p110y, p111x, p111y, bmin, bmax, ndivz,
"G+");
6938 TF1 *
f1=
new TF1(
"f1",
"sqrt(x)",bmin,bmax);
6939 TGaxis *a1 =
new TGaxis(p110x, p110y, p111x, p111y,
"f1", ndivz,
"SDH+");
6945 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
6947 strlcat(chopt,
"N",10);
6950 zaxis->
PaintAxis(p110x, p110y, p111x, p111y, bmin, bmax, ndivz, chopt);
6954 axis->
PaintAxis(p011x, p011y, p001x, p001y, bmin, bmax, ndivx,
"");
6955 axis->
PaintAxis(p101x, p101y, p001x, p001y, bmin, bmax, ndivx,
"");
6957 axis->
PaintAxis(p000x, p000y, p001x, p001y, bmin, bmax, ndivx,
"");
6962 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
6964 strlcat(chopt,
"N",10);
6967 xaxis->
PaintAxis(p000x, p000y, p100x, p100y, bmin, bmax, ndivx, chopt);
6972 chopt[0] = 0; strlcat(chopt,
"SDH-",10);
6974 strlcat(chopt,
"N",10);
6977 yaxis->
PaintAxis(p000x, p000y, p010x, p010y, bmin, bmax, ndivy, chopt);
6985 if (bmin <= 0) bmin=0.001*bmax;
6986 zaxis->
PaintAxis(p100x, p100y, p101x, p101y, bmin, bmax, ndivz,
"G+");
6988 TF1 *
f1=
new TF1(
"f1",
"sqrt(x)",bmin,bmax);
6989 TGaxis *a1 =
new TGaxis(p100x, p100y, p101x, p101y,
"f1", ndivz,
"SDH+");
6995 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
6997 strlcat(chopt,
"N",10);
7000 zaxis->
PaintAxis(p100x, p100y, p101x, p101y, bmin, bmax, ndivz, chopt);
7004 axis->
PaintAxis(p111x, p111y, p011x, p011y, bmin, bmax, ndivx,
"");
7005 axis->
PaintAxis(p001x, p001y, p011x, p011y, bmin, bmax, ndivx,
"");
7007 axis->
PaintAxis(p010x, p010y, p011x, p011y, bmin, bmax, ndivx,
"");
7012 chopt[0] = 0; strlcat(chopt,
"SDH-",10);
7014 strlcat(chopt,
"N",10);
7017 xaxis->
PaintAxis(p010x, p010y, p110x, p110y, bmin, bmax, ndivx, chopt);
7022 chopt[0] = 0; strlcat(chopt,
"SDH-",10);
7024 strlcat(chopt,
"N",10);
7027 yaxis->
PaintAxis(p000x, p000y, p010x, p010y, bmin, bmax, ndivy, chopt);
7035 if (bmin <= 0) bmin=0.001*bmax;
7036 zaxis->
PaintAxis(p000x, p000y, p001x, p001y, bmin, bmax, ndivz,
"G+");
7038 TF1 *
f1=
new TF1(
"f1",
"sqrt(x)",bmin,bmax);
7039 TGaxis *a1 =
new TGaxis(p000x, p000y, p001x, p001y,
"f1", ndivz,
"SDH+");
7045 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
7047 strlcat(chopt,
"N",10);
7050 zaxis->
PaintAxis(p000x, p000y, p001x, p001y, bmin, bmax, ndivz,
"SDH+");
7101 if (nodesx>1&&nodesy>1) {
7116 if (alpha>=0&&alpha<=90&&beta>=0&&
beta<=90&&alpha+
beta<=90) {
7161 if (
r>=0&&r<=255&&g>=0&&g<=255&&b>=0&&
b<=255) {
7175 if (
x>=0&&
y>=0&&z>=0) {
7228 if (weight>=0&&weight<=1)
fLHweight = weight;
7681 Int_t i1, i2, i3, i4, i5;
7686 while (opt.
Tokenize(token, from,
"[ (]")) {
7692 printf(
"PaintSpectrum: Display modes groups should be in the [0,3] range\n");
7696 if (i2<1 || i2>11) {
7697 printf(
"PaintSpectrum: Display modes should be in the [1,11] range\n");
7703 }
else if (token==
"pa") {
7710 }
else if (token==
"n") {
7716 }
else if (token==
"ca") {
7719 printf(
"PaintSpectrum: Color Algorithm should be in the [0,9] range\n");
7725 }
else if (token==
"zs") {
7728 printf(
"PaintSpectrum: Z-Scale should be in the [0,2] range\n");
7734 }
else if (token==
"ci") {
7741 }
else if (token==
"lhw") {
7746 }
else if (token==
"lp") {
7753 }
else if (token==
"cw") {
7758 }
else if (token==
"b") {
7761 printf(
"PaintSpectrum: Bezier should be in the [0,1] range\n");
7767 }
else if (token==
"s") {
7770 printf(
"PaintSpectrum: Shading should be in the [0,1] range\n");
7775 printf(
"PaintSpectrum: Shadow should be in the [0,1] range\n");
7781 }
else if (token==
"cm") {
7790 }
else if (token==
"cg") {
7796 }
else if (token==
"a" || token==
"a=") {
7803 }
else if (token==
"bf") {
7811 printf(
"Unknown option \"%s\"\n",token.
Data());
static const double x2[5]
static const double x4[22]
static const double x1[5]
static const double x3[11]
include TDocParser_001 C image html pict1_TDocParser_001 png width
virtual Int_t GetNdivisions() const
virtual Color_t GetLineColor() const
Return the line color.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual Width_t GetLineWidth() const
Return the line width.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
virtual void ResetAttLine(Option_t *option="")
Reset this line attributes to default values.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual Style_t GetLineStyle() const
Return the line style.
Int_t GetLast() const
Return last bin on the axis i.e.
Int_t GetFirst() const
Return first bin on the axis i.e.
The color creation and management class.
virtual void SetR1(Double_t r1)
virtual void SetX1(Double_t x1)
virtual void SetPhimax(Double_t phi=360)
virtual void SetPhimin(Double_t phi=0)
virtual void SetY1(Double_t y1)
virtual void Paint(Option_t *option="")
Paint this ellipse with its current attributes.
virtual void SetR2(Double_t r2)
virtual void SetTheta(Double_t theta=0)
virtual void Paint(Option_t *chopt="")
Draw this axis with its current attributes.
virtual void PaintAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, Double_t &wmin, Double_t &wmax, Int_t &ndiv, Option_t *chopt="", Double_t gridlength=0, Bool_t drawGridOnly=kFALSE)
Control function to draw an axis.
void SetLabelOffset(Float_t labeloffset)
Float_t GetLabelOffset() const
Float_t GetTickSize() const
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
Return maximum value smaller than maxval of bins in the range, unless the value has been overridden b...
virtual Double_t GetMinimum(Double_t minval=-FLT_MAX) const
Return minimum value larger than minval of bins in the range, unless the value has been overridden by...
Service class for 2-Dim histogram classes.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
static void Optimize(Double_t A1, Double_t A2, Int_t nold, Double_t &BinLow, Double_t &BinHigh, Int_t &nbins, Double_t &BWID, Option_t *option="")
Static function to compute reasonable axis limits.
virtual void PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Draw this line with new coordinates.
The TNamed class is the base class for all named ROOT classes.
Two-dimensional graphics function.
void GetZScale(Int_t &scale)
Gets z-axis scale:
void SetColorIncrements(Double_t r, Double_t g, Double_t b)
Sets color increments between two color levels for r, g, b components:
void ColorModel(unsigned ui, unsigned ui1, unsigned ui2, unsigned ui3)
This function calculates color for one palette entry given by function parameter ui.
void GetLightPosition(Int_t &x, Int_t &y, Int_t &z)
Gets position of fictive light source in 3D space:
void CopyEnvelope(Double_t xr, Double_t xs, Double_t yr, Double_t ys)
Copies envelope vector, which ensures hidden surface removal for the contours display mode.
Double_t BezierBlend(Int_t i, Double_t bezf)
This function calculates Bezier approximation.
void BezierSmoothing(Double_t bezf)
Calculates screen coordinates of the smoothed point.
Int_t BezC(Int_t i)
This function is called from BezierBlend function.
void DrawMarker(Int_t x, Int_t y, Int_t w, Int_t h, Int_t type)
Draws channel mark at the screen coordinates x, y.
void Paint(Option_t *option)
Paints histogram according to preset parameters.
Double_t ColorCalculation(Double_t dx1, Double_t dy1, Double_t z1, Double_t dx2, Double_t dy2, Double_t z2, Double_t dx3, Double_t dy3, Double_t z3)
Calculates and returns color value for the surface triangle given by function parameters: -dx1,...
void SetNodes(Int_t nodesx, Int_t nodesy)
Sets nodes in both directions:
void SetPenAttr(Int_t color, Int_t style, Int_t width)
Sets pen attributes:
void SetDisplayMode(Int_t modeGroup, Int_t displayMode)
Sets display group mode and display mode:
void GetContourWidth(Int_t &width)
Gets width between horizontal slices:
void SetLightPosition(Int_t x, Int_t y, Int_t z)
Sets position of fictive light source in 3D space:
Int_t fNewColorIndex
buffers' size
void GetDisplayMode(Int_t &modeGroup, Int_t &displayMode)
Gets display group mode and display mode: -modeGroup - the following group modes might have been set:...
void GetNodes(Int_t &nodesx, Int_t &nodesy)
Gets nodes in both directions:
void GetPenAttr(Int_t &color, Int_t &style, Int_t &width)
Gets pen attributes: -color - color of spectrum -style - style of pen (solid, dash,...
void GetBezier(Int_t &bezier)
Gets Bezier smoothing switch:
void EnvelopeBars(Int_t x1, Int_t y1, Int_t x2, Int_t y2)
Ensures hidden surface removal for Bars, BarsX and BarsY display modes.
void GetLightHeightWeight(Double_t &weight)
Gets weight between shading according to fictive light source and according to channels counts:
void SetAngles(Int_t alpha, Int_t beta, Int_t view)
Sets angles of the view:
void SetZScale(Int_t scale)
Sets z-axis scale:
void Slice(Double_t xr, Double_t yr, Double_t xs, Double_t ys, TLine *line)
Calculates screen coordinates of the line given by two nodes for contours display mode.
void GetColorAlgorithm(Int_t &colorAlgorithm)
Gets shading color algorithm:
static void PaintSpectrum(TH2 *h2, Option_t *option="", Int_t bs=1600)
This function allows to set all the possible options available in TSpectrum2Painter and paint "h2".
Short_t * fEnvelopeContour
void SetChanGrid(Int_t enable, Int_t color)
This function sets enables/disables drawing of channel grid and sets its color: -enable - decides whe...
void GetChanGrid(Int_t &enable, Int_t &color)
This function gets attributes for drawing channel:
void SetLightHeightWeight(Double_t weight)
Sets weight between shading according to fictive light source and according to channels counts:
void SetContourWidth(Int_t width)
Sets width between horizontal slices:
void SetColorAlgorithm(Int_t colorAlgorithm)
Sets shading color algorithm:
virtual ~TSpectrum2Painter()
TSpectrum2Painter destructor.
@ kChannelMarksStyleCross
@ kChannelMarksStyleTriangle
@ kChannelMarksStyleDiamond
@ kChannelMarksStyleRectangle
void SetShading(Int_t shading, Int_t shadow)
Sets on/off shading and shadow switches:
void GetChanMarks(Int_t &enable, Int_t &color, Int_t &width, Int_t &height, Int_t &style)
Gets drawing attributes for channel marks:
void Envelope(Int_t x1, Int_t y1, Int_t x2, Int_t y2)
Ensures hidden surface removal.
void SetBezier(Int_t bezier)
Sets on/off Bezier smoothing:
void Transform(Int_t it, Int_t jt, Int_t zmt)
Reads out the value from histogram and calculates screen coordinates.
void GetColorIncrements(Double_t &r, Double_t &g, Double_t &b)
Gets color increments between two color levels for r, g, b components:
void SetChanMarks(Int_t enable, Int_t color, Int_t width, Int_t height, Int_t style)
Sets enables/disables drawing of channel marks and sets their attributes:
void GetAngles(Int_t &alpha, Int_t &beta, Int_t &view)
Gets angles of the view:
Int_t fMaximumXScreenResolution
Double_t ShadowColorCalculation(Double_t xtaz, Double_t ytaz, Double_t ztaz, Double_t shad_noise)
Determines whether the center of the triangle in 3-d space given by function parameters:
void GetShading(Int_t &shading, Int_t &shadow)
Gets shading and shadow switches:
Int_t Atoi() const
Return integer value of string.
Double_t Atof() const
Return floating-point value contained in string.
const char * Data() const
TObjArray * Tokenize(const TString &delim) const
This function is used to isolate sequential tokens in a TString.
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
double beta(double x, double y)
Calculates the beta function.
static constexpr double s
static constexpr double pi
Short_t Max(Short_t a, Short_t b)
Short_t Min(Short_t a, Short_t b)