55 :
TNamed ("Spectrum Painter2","Miroslav Morhac Painter")
59 gPad->Range(0, 0, 1 ,1);
61 fXmax = h2->GetNbinsX() - 1;
63 fYmax = h2->GetNbinsY() - 1;
65 fMaximumXScreenResolution = bs;
67 for (i = 0;i <= fXmax; i++) {
68 for (j = 0;j <= fYmax; j++) {
69 val = h2->GetBinContent(i + 1,j + 1);
70 if (val > fZmax) fZmax = val;
74 fBx1 =
gPad->XtoPixel(0.1);
75 fBx2 =
gPad->XtoPixel(0.99);
76 fBy1 =
gPad->YtoPixel(0.99);
77 fBy2 =
gPad->YtoPixel(0.05);
79 fModeGroup = kModeGroupLightHeight;
81 fDisplayMode = kDisplayModeSurface;
83 fZscale = kZScaleLinear;
85 fNodesx = fXmax-fXmin+1;
86 fNodesy = fYmax-fYmin+1;
114 fColorAlg = kColorAlgRgbSmooth;
136 fShadow = kShadowsNotPainted;
145 fBezier = kNoBezierInterpol;
151 fPenDash = kPenStyleSolid;
153 fChanmarkEnDis = kChannelMarksNotDrawn;
155 fChanmarkColor =
kBlue;
158 fChanmarkStyle = kChannelMarksStyleDot;
160 fChanlineEnDis = kChannelGridNotDrawn;
162 fChanlineColor =
kRed;
164 fEnvelope =
new Short_t [fMaximumXScreenResolution];
165 fEnvelopeContour =
new Short_t [fMaximumXScreenResolution];
166 for (i=0;i<fMaximumXScreenResolution;i++) {
168 fEnvelopeContour[i] = fBy2;
180 for (
int i=0; i<256; i++) {
181 col =
gROOT->GetColor(250+i);
208 if ((zmt==0)||(zmt==-3)||(zmt==-4)) {
215 if (zf>=1.0) zf =
log(zf);
219 if (zf>0) zf =
sqrt(zf);
248 Double_t da,db,dc=0,dd,dl,dm,dn,xtaz,ytaz,ztaz,
v=0,v1;
253 if (z1>900) z1 = 900;
255 if (z2>900) z2 = 900;
257 if (z3>900) z3 = 900;
268 if ((i==1)||(i==3)) {
279 xtaz = (dx1+dx2+dx3)/3;
280 ytaz = (dy1+dy2+dy3)/3;
286 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
287 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
288 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
289 dd = (da*da+db*db+dc*dc)*(dl*dl+dm*dm+dn*dn);
291 if (dd!=0)
v = (da*dl+db*dm+dc*dn)/dd;
309 if (da>=1) da=
log(da);
310 if (db>=1) db=
log(db);
329 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
330 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
331 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
332 dd = (da*da+db*db+dc*dc)*(dl*dl+dm*dm+dn*dn);
334 if (dd!=0)
v = (da*dl+db*dm+dc*dn)/dd;
351 if (da>=1) da =
log(da);
352 if (db>=1) db =
log(db);
353 if (da!=0) dc = db/da;
392 Double_t pom1,pom2,sdx1=0,sdx2=0,sdy1,sdy2,spriz;
395 if (ztaz>900) ztaz = 900;
397 if (ztaz>32767) ztaz = 32767;
413 if (sx1<sx2) skrokx = 1;
415 if (sy1<sy2) skroky = 1;
419 if (
TMath::Abs(pom1)>0.0000001) sdx1 = pom2/pom1;
422 sdy1 = pom2-sdx1*pom1;
425 if (
TMath::Abs(pom1)>0.0000001) sdx2 = pom2/pom1;
428 sdy2 = pom2-sdx2*pom1;
431 pom2 = pom1*sdx1+sdy1;
433 for (;(sx1>(
fXmin-skrokx)) && (sx1<(
xmax-skrokx)) &&
434 (sy1>(
fYmin-skroky)) && (sy1<(
ymax-skroky)) &&
435 (spriz==0);sx1+=skrokx) {
437 pom2 = pom1*sdx1+sdy1;
441 pom2 = pom1*sdx2+sdy2;
442 sz2 = (
Int_t)(pom2+shad_noise);
443 if (sz1>sz2) spriz = 1;
446 }
else if (sy1!=sy2) {
447 if (sy1<sy2) skroky = 1;
451 if (
TMath::Abs(pom1)>0.0000001) sdx2 = pom2/pom1;
454 sdy2 = pom2-sdx2*pom1;
456 for (;(sy1>(
fYmin-skroky)) && (sy1<(
ymax-skroky)) &&
457 (spriz==0);sy1+=skroky) {
460 pom2 = pom1*sdx2+sdy2;
461 sz2 = (
Int_t)(pom2+shad_noise);
462 if (sz1>sz2) spriz=1;
478 unsigned long uinc1=0,uinc2=0,uinc3=0,upom,i;
483 else if (iv>255) iv = 255;
484 if (
gROOT->GetColor(250+iv)) {
492 if (
a >= UINT_MAX) uinc1 = UINT_MAX;
493 else uinc1 = (unsigned)
a;
495 i = (uinc1-upom)/256;
496 if ((i%2)==0) uinc1 = upom;
497 else uinc1 = 255-upom;
503 i = (uinc2-upom)/256;
504 if ((i%2)==0) uinc2 = upom;
505 else uinc2 = 255-upom;
511 i = (uinc3-upom)/256;
512 if ((i%2)==0) uinc3 = upom;
513 else uinc3 = 255-upom;
532 uinc2 = (
Int_t)green;
541 red =
a+0.956*
b+0.62*
c;
542 green =
a-0.272*
b-0.647*
c;
543 blue =
a-1.108*
b+1.705*
c;
544 if (red>=2) red = red-2;
545 else if (red>=1) red = 2-red;
546 if (green<0) green = -green;
547 if (blue>=2) blue = blue-2;
548 else if (blue>=1) blue = 2-blue;
549 else if (blue<-1) blue = 2+blue;
550 else if (blue<0) blue = -blue;
555 uinc2 = (
Int_t)green;
613 uinc2 = (
Int_t)green;
616 ui = uinc1+uinc2*256+uinc3*65536;
651 uinc2 = (
Int_t)green;
660 red =
a+0.956*
b+0.62*
c;
661 green =
a-0.272*
b-0.647*
c;
662 blue =
a-1.108*
b+1.705*
c;
663 if (red>=2) red = red-2;
664 else if (red>=1) red = red-1;
665 if (green<0) green = 1+green;
666 if (blue>=2) blue = blue-2;
667 else if (blue>=1) blue = blue-1;
668 else if (blue<-1) blue = 2+blue;
669 else if (blue<0) blue = 1+blue;
674 uinc2 = (
Int_t)green;
732 uinc2 = (
Int_t)green;
735 ui = uinc1+uinc2*256+uinc3*65536;
756 for (j=i+1;j<=3;j++)
a =
a*j;
757 for (j=1;j<=3-i;j++)
a =
a/j;
770 for (j=1;j<=i;j++)
v =
v*bezf;
771 for (j=1;j<=3-i;j++)
v =
v*(1-bezf);
800 Int_t x,
y,krok,xold=0,yold=0,prvy,yprv=0;
861 krok = (
x1<
x2)? 1:-1;
892 if (y1!=y2)
y += (y1<y2)? +1:-1;
913 Int_t x,
y,krok,xold=0,yold=0,prvy,xprv,yprv=0;
948 krok = (
x1<
x2)? 1:-1;
980 if (y1!=y2)
y+=(y1<y2)? +1:-1;
1029 gPad->PixeltoX(
x+w/2+1),
gPad->PixeltoY(
y)+1);
1033 gPad->PixeltoX(
x+w/2+1),
gPad->PixeltoY(
y+
h/2+1)+1);
1035 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);
1051 gPad->PixeltoX(
x+w/2+1),
gPad->PixeltoY(
y-
h/2-1)+1);
1086 Int_t krok,xi,yi,xj,yj,
a,
b,
as,bs,pr,ae,be;
1099 krok = (xi<xj)? 1:-1;
1116 if (yi!=yj)
b += (yi<yj)? +1:-1;
1133 gPad->PixeltoX(ae),
gPad->PixeltoY(be)+1);
1150 for (
a=xi;
a<=xj;
a++) {
1156 for (
a=xj;
a<=xi;
a++) {
1587 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;
1588 Int_t ix5,iy5,x6,y6,x7,y7,y8,x1d,y1d,x2d=0,y2d=0;
1589 Int_t i1=0,i2=0,i3=0,i4=0,j1=0,j2=0,j3=0,j4=0;
1590 Int_t s1=0,s2=0,s3=0,s4=0,
t1=0,t2=0,t3=0,t4=0;
1591 Double_t dx1,dx2,dx3,dx4,dy1,dy2,dy3,dy4,z1,z2,z3,z4,zl,zh;
1592 Double_t xa,xb=0,ya,yb=0,x5=0,y5=0;
1593 Double_t da=0,db=0,dc=0,dd=0,xtaz,ytaz,ztaz,
v,shad_noise;
1594 Int_t iv=0,ekv,stvor,sx1,sx2,sx3,sx4,sx5,sy1,sy2,sy3,sy4,sy5;
1595 Double_t pom1,pom2,sdx1,sdy1,sdx2=0,sdy2,sdx3,sdy3,sdy4,spriz;
1596 Int_t sr1=0,sr2=0,sr3=0,sr4=0,sr5=0,sr6=0,sr7=0,sr8=0;
1597 Int_t tr1=0,tr2=0,tr3=0,tr4=0,tr5=0,tr6=0,tr7=0,tr8=0;
1598 Int_t il,iv1=0,iv2=0,iv3=0,iv4=0;
1599 Double_t v1=0,v2=0,v3=0,v4=0,dxr1,dxr2,dyr1,dyr2,zr1,zr2,bezf;
1600 Double_t dcount_reg,z1l,z2l,z3l,z4l,sdx2p,sdy2p,dap,dbp,dcp,ddp;
1601 Int_t sx1p,sy1p,sx3p,uip=0;
1603 Double_t p000x,p000y,p100x,p100y,p010x,p010y,p110x,p110y;
1604 Double_t p001x,p001y,p101x,p101y,p011x,p011y,p111x,p111y;
1605 Int_t ibezx1=0,ibezy1=0,ibezx2,ibezy2;
1606 unsigned ui1,ui2,ui3;
1609 Double_t mxx,mxy,myx,myy,myz,px,py,kx,ky;
1610 Double_t bxl,bxh,byl,byh,xd,yd,
a,
b,rotx,roty;
1620 printf(
"The canvas size exceed the maximum X screen resolution.\n");
1621 printf(
"Use the option bf() to increase the buffer size (it should be greater than %d).\n",
fBx2);
1656 alfa = (
fAlpha*3.1415927)/180;
1666 mx = (bxh-bxl)/(x3max*(
cos(alfa)+
cos(
beta)));
1667 my = (bxh-bxl)/(y3max*(
cos(alfa)+
cos(
beta)));
1668 mul = (byh-byl)/(bxh-bxl);
1669 movx = bxl+my*
cos(alfa)*y3max;
1674 px = rotx*mx*
cos(
beta)-roty*my*
cos(alfa)+movx;
1691 movy = byl+mul*mz*zmax;
1693 py = mul*(rotx*mx*
sin(
beta)+roty*my*
sin(alfa))+movy;
1698 if (zmin>=1) zmin =
log(zmin);
1700 if (zmax>=1) zmax =
log(zmax);
1702 if ((zmax-zmin)<0.000001) zmax = zmin+0.000001;
1705 movy = byl+mul*mz*zmax;
1707 py = mul*(rotx*mx*
sin(
beta)+roty*my*
sin(alfa))+movy;
1712 if (zmin>=1) zmin =
sqrt(zmin);
1714 if (zmax>=1) zmax =
sqrt(zmax);
1716 if ((zmax-zmin)<0.000001) zmax = zmin+0.000001;
1719 movy = byl+mul*mz*zmax;
1721 py = mul*(rotx*mx*
sin(
beta)+roty*my*
sin(alfa))+movy;
1731 dcount_reg=
log(dcount_reg);
1734 dcount_reg=
sqrt(dcount_reg);
1745 p000y =
gPad->PixeltoY(
fYt)+1;
1748 p100y =
gPad->PixeltoY(
fYt)+1;
1751 p010y =
gPad->PixeltoY(
fYt)+1;
1754 p110y =
gPad->PixeltoY(
fYt)+1;
1758 p001y =
gPad->PixeltoY(
fYt)+1;
1761 p101y =
gPad->PixeltoY(
fYt)+1;
1764 p011y =
gPad->PixeltoY(
fYt)+1;
1767 p111y =
gPad->PixeltoY(
fYt)+1;
1768 Double_t bmin, bmax, binLow, binHigh, binWidth;
1769 Double_t axisLevel, gridDist, gridY1, gridY2;
1770 Int_t ndivx = 0, ndivy, ndivz, nbins;
1777 axis->
PaintAxis(p000x, p000y, p100x, p100y, bmin, bmax, ndivx,
"");
1778 axis->
PaintAxis(p000x, p000y, p010x, p010y, bmin, bmax, ndivx,
"");
1780 axis->
PaintAxis(p000x, p000y, p001x, p001y, bmin, bmax, ndivx,
"");
1782 axis->
PaintAxis(p100x, p100y, p101x, p101y, bmin, bmax, ndivx,
"");
1783 axis->
PaintAxis(p101x, p101y, p001x, p001y, bmin, bmax, ndivx,
"");
1784 axis->
PaintAxis(p001x, p001y, p011x, p011y, bmin, bmax, ndivx,
"");
1790 nbins, binWidth,
" ");
1791 for (i = 0; i < nbins + 1; i++) {
1792 axisLevel = binLow+i*binWidth;
1793 gridDist = (axisLevel-bmin)*(p001y-p000y)/(bmax-bmin);
1794 gridY1 = p000y + gridDist, gridY2 = p100y + gridDist;
1796 gridY2 = p010y + gridDist;
1801 axis->
PaintAxis(p010x, p010y, p000x, p000y, bmin, bmax, ndivx,
"");
1802 axis->
PaintAxis(p010x, p010y, p110x, p110y, bmin, bmax, ndivx,
"");
1804 axis->
PaintAxis(p010x, p010y, p011x, p011y, bmin, bmax, ndivx,
"");
1806 axis->
PaintAxis(p000x, p000y, p001x, p001y, bmin, bmax, ndivx,
"");
1807 axis->
PaintAxis(p001x, p001y, p011x, p011y, bmin, bmax, ndivx,
"");
1808 axis->
PaintAxis(p011x, p011y, p111x, p111y, bmin, bmax, ndivx,
"");
1814 nbins, binWidth,
" ");
1815 for (i = 0; i < nbins + 1; i++) {
1816 axisLevel = binLow+i*binWidth;
1817 gridDist = (axisLevel-bmin)*(p011y-p010y)/(bmax-bmin);
1818 gridY1 = p010y + gridDist, gridY2 = p000y + gridDist;
1820 gridY2 = p110y + gridDist;
1825 axis->
PaintAxis(p110x, p110y, p010x, p010y, bmin, bmax, ndivx,
"");
1826 axis->
PaintAxis(p110x, p110y, p100x, p100y, bmin, bmax, ndivx,
"");
1828 axis->
PaintAxis(p110x, p110y, p111x, p111y, bmin, bmax, ndivx,
"");
1830 axis->
PaintAxis(p010x, p010y, p011x, p011y, bmin, bmax, ndivx,
"");
1831 axis->
PaintAxis(p011x, p011y, p111x, p111y, bmin, bmax, ndivx,
"");
1832 axis->
PaintAxis(p111x, p111y, p101x, p101y, bmin, bmax, ndivx,
"");
1838 nbins, binWidth,
" ");
1839 for (i = 0; i < nbins + 1; i++) {
1840 axisLevel = binLow+i*binWidth;
1841 gridDist = (axisLevel-bmin)*(p111y-p110y)/(bmax-bmin);
1842 gridY1 = p110y + gridDist, gridY2 = p010y + gridDist;
1844 gridY2 = p100y + gridDist;
1849 axis->
PaintAxis(p100x, p100y, p110x, p110y, bmin, bmax, ndivx,
"");
1850 axis->
PaintAxis(p100x, p100y, p000x, p000y, bmin, bmax, ndivx,
"");
1852 axis->
PaintAxis(p100x, p100y, p101x, p101y, bmin, bmax, ndivx,
"");
1854 axis->
PaintAxis(p110x, p110y, p111x, p111y, bmin, bmax, ndivx,
"");
1855 axis->
PaintAxis(p111x, p111y, p101x, p101y, bmin, bmax, ndivx,
"");
1856 axis->
PaintAxis(p101x, p101y, p001x, p001y, bmin, bmax, ndivx,
"");
1862 nbins, binWidth,
" ");
1863 for (i = 0; i < nbins + 1; i++) {
1864 axisLevel = binLow+i*binWidth;
1865 gridDist = (axisLevel-bmin)*(p101y-p100y)/(bmax-bmin);
1866 gridY1 = p100y + gridDist, gridY2 = p110y + gridDist;
1868 gridY2 = p000y + gridDist;
1887 if (
x2>=
x1) turnj = 1;
1888 if (
x3>=
x2) turni = 1;
1916 if (smer==0) q1 -= 1;
1920 if (smer==0) q2 += 1;
1957 if ((q1!=q2||smer!=0) && flag==1) {
2052 xtaz = (dx1+dx2+dx4)/3;
2053 ytaz = (dy1+dy2+dy4)/3;
2054 ztaz = (z1+z2+z4)/3;
2058 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
2063 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
2072 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
2077 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
2087 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
2092 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
2102 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
2107 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
2121 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
2126 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
2131 da = (dxr1+dx2+dx1)/3;
2132 db = (dyr1+dy2+dy1)/3;
2136 da = (dxr1+dxr2+dx1)/3;
2137 db = (dyr1+dyr2+dy1)/3;
2138 dc = (zr1+zr2+z1)/3;
2141 da = (dxr2+dx1+dx4)/3;
2142 db = (dyr2+dy1+dy4)/3;
2147 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
2152 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
2157 da = (dx1+dx2+dx3)/3;
2158 db = (dy1+dy2+dy3)/3;
2162 da = (dx2+dxr1+dx3)/3;
2163 db = (dy2+dyr1+dy3)/3;
2167 da = (dx2+dxr2+dxr1)/3;
2168 db = (dy2+dyr2+dyr1)/3;
2169 dc = (z2+zr2+zr1)/3;
2172 da = (dxr2+dx2+dx1)/3;
2173 db = (dyr2+dy2+dy1)/3;
2178 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
2183 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
2188 da = (dx2+dx3+dx4)/3;
2189 db = (dy2+dy3+dy4)/3;
2193 da = (dx4+dx3+dxr1)/3;
2194 db = (dy4+dy3+dyr1)/3;
2198 da = (dx3+dxr2+dxr1)/3;
2199 db = (dy3+dyr2+dyr1)/3;
2200 dc = (z3+zr2+zr1)/3;
2203 da = (dx2+dxr2+dx3)/3;
2204 db = (dy2+dyr2+dy3)/3;
2209 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
2214 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
2219 da = (dx1+dx3+dx4)/3;
2220 db = (dy1+dy3+dy4)/3;
2224 da = (dx4+dx3+dxr2)/3;
2225 db = (dy4+dy3+dyr2)/3;
2229 da = (dx4+dxr2+dxr1)/3;
2230 db = (dy4+dyr2+dyr1)/3;
2231 dc = (z4+zr2+zr1)/3;
2234 da = (dx1+dx4+dxr1)/3;
2235 db = (dy1+dy4+dyr1)/3;
2307 xtaz = (dx3+dx2+dx4)/3;
2308 ytaz = (dy3+dy2+dy4)/3;
2309 ztaz = (z3+z2+z4)/3;
2364 if ((q1!=q2||smer!=0)&&flag==1) {
2459 xtaz = (dx1+dx2+dx4)/3;
2460 ytaz = (dy1+dy2+dy4)/3;
2461 ztaz = (z1+z2+z4)/3;
2465 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
2470 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
2479 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
2484 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
2494 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
2499 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
2509 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
2514 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
2528 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
2533 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
2538 da = (dxr1+dx2+dx1)/3;
2539 db = (dyr1+dy2+dy1)/3;
2543 da = (dxr1+dxr2+dx1)/3;
2544 db = (dyr1+dyr2+dy1)/3;
2545 dc = (zr1+zr2+z1)/3;
2548 da = (dxr2+dx1+dx4)/3;
2549 db = (dyr2+dy1+dy4)/3;
2554 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
2559 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
2564 da = (dx1+dx2+dx3)/3;
2565 db = (dy1+dy2+dy3)/3;
2569 da = (dx2+dxr1+dx3)/3;
2570 db = (dy2+dyr1+dy3)/3;
2574 da = (dx2+dxr2+dxr1)/3;
2575 db = (dy2+dyr2+dyr1)/3;
2576 dc = (z2+zr2+zr1)/3;
2579 da = (dxr2+dx2+dx1)/3;
2580 db = (dyr2+dy2+dy1)/3;
2585 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
2590 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
2595 da = (dx2+dx3+dx4)/3;
2596 db = (dy2+dy3+dy4)/3;
2600 da = (dx4+dx3+dxr1)/3;
2601 db = (dy4+dy3+dyr1)/3;
2605 da = (dx3+dxr2+dxr1)/3;
2606 db = (dy3+dyr2+dyr1)/3;
2607 dc = (z3+zr2+zr1)/3;
2610 da = (dx2+dxr2+dx3)/3;
2611 db = (dy2+dyr2+dy3)/3;
2616 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
2621 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
2626 da = (dx1+dx3+dx4)/3;
2627 db = (dy1+dy3+dy4)/3;
2631 da = (dx4+dx3+dxr2)/3;
2632 db = (dy4+dy3+dyr2)/3;
2636 da = (dx4+dxr2+dxr1)/3;
2637 db = (dy4+dyr2+dyr1)/3;
2638 dc = (z4+zr2+zr1)/3;
2641 da = (dx1+dx4+dxr1)/3;
2642 db = (dy1+dy4+dyr1)/3;
2689 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
2690 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
2691 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
2692 dd = -da*dx1-db*dy1-dc*z1;
2709 if (pom2!=0) sdx1 = pom1/pom2;
2712 sdy1 = pom1-sdx1*pom2;
2713 for (sx4=sx1,sx5=sx1,sy5=sy1;sx4<=sx2;sx4++) {
2715 sdy4 = sdx1*pom1+sdy1;
2716 sy4 = (
Int_t)(sdy4);
2724 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
2725 else v = (iv1+iv2+iv4)/3;
2739 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
2740 else v = (iv1+iv2+iv4)/3;
2764 if (pom2!=0) sdx2 = pom1/pom2;
2767 sdy2 = pom1-sdx2*pom2;
2778 xtaz = (dx3+dx2+dx4)/3;
2779 ytaz = (dy3+dy2+dy4)/3;
2780 ztaz = (z3+z2+z4)/3;
2815 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
2816 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
2817 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
2818 dd = -da*dx1-db*dy1-dc*z1;
2835 if (pom2!=0) sdx1 = pom1/pom2;
2838 sdy1 = pom1-sdx1*pom2;
2839 for (sx4=sx1,sx5=sx1,sy5=sy1;sx4<=sx2;sx4++) {
2841 sdy4 = sdx1*pom1+sdy1;
2850 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
2851 else v = (iv1+iv2+iv4)/3;
2865 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
2866 else v = (iv1+iv2+iv4)/3;
2876 for (sx4=sx1p,sx5=sx1p,sy5=sy1p;sx4<=sx3p;sx4++) {
2878 sdy4 = sdx2p*pom1+sdy2p;
2888 if (dcp!=0)
v = (-ddp-dap*dx1-dbp*dy1)/dcp;
2889 else v = (iv1+iv2+iv4)/3;
2904 if (dcp!=0)
v = (-ddp-dap*dx1-dbp*dy1)/dcp;
2905 else v = (iv1+iv2+iv4)/3;
2930 if (pom2!=0) sdx2 = pom1/pom2;
2933 sdy2 = pom1-sdx2*pom2;
2934 for (sx4=sx2,sx5=sx2,sy5=sy2;sx4<=sx3;sx4++) {
2936 sdy4 = sdx2*pom1+sdy2;
2945 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
2946 else v =(iv1+iv2+iv4)/3;
2960 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
2961 else v =(iv1+iv2+iv4)/3;
2974 if (((flag==0)&&(smer==0))||((flag!=0)&&(smer!=0))) {
2979 }
else if (((flag!=0)&&(smer==0))||((flag==0)&&(smer!=0))) {
3007 bezy1 = y1+(y2-y3)/6;
3008 bezy2 = y2-(y4-y1)/6;
3034 for (bezf=0;bezf<1.01;bezf+=0.1) {
3044 Envelope(ibezx2,ibezy2,ibezx1,ibezy1);
3079 for (bezf=0;bezf<1.01;bezf+=0.1) {
3089 Envelope(ibezx1,ibezy1,ibezx2,ibezy2);
3103 if ((q1!=q2||smer!=0)&&flag==1) {
3160 i1 = (
Int_t)(zl/dcount_reg+1);
3161 if (z1!=z2||z2!=z3||z3!=z4) {
3181 if (
fZ>zh)
goto eqend;
3185 if ((z2<=
fZ&&
fZ<z1)||(z2<
fZ&&
fZ<=z1)) {
3186 xb = (
fZ-z2)*(dx1-dx2)/(z1-z2)+dx2;
3189 if ((z1<=
fZ&&
fZ<z2)||(z1<
fZ&&
fZ<=z2)) {
3190 xb = (
fZ-z1)*(dx2-dx1)/(z2-z1)+dx1;
3193 if (z2==
fZ&&
fZ==z1) {
3202 if ((z1<=
fZ&&
fZ<z4)||(z1<
fZ&&
fZ<=z4)) {
3203 ya = (
fZ-z1)*(dy4-dy1)/(z4-z1)+dy1;
3206 if ((z4<=
fZ&&
fZ<z1)||(z4<
fZ&&
fZ<=z1)) {
3207 ya = (
fZ-z4)*(dy1-dy4)/(z1-z4)+dy4;
3210 if (z4==
fZ&&
fZ==z1) {
3222 if ((z3<=
fZ&&
fZ<z4)||(z3<
fZ&&
fZ<=z4)) {
3223 xa = (
fZ-z3)*(dx4-dx3)/(z4-z3)+dx3;
3226 if ((z4<=
fZ&&
fZ<z3)||(z4<
fZ&&
fZ<=z3)) {
3227 xa = (
fZ-z4)*(dx3-dx4)/(z3-z4)+dx4;
3230 if (z4==
fZ&&
fZ==z3) {
3242 if ((z2<=
fZ&&
fZ<z3)||(z2<
fZ&&
fZ<=z3)) {
3243 ya = (
fZ-z2)*(dy3-dy2)/(z3-z2)+dy2;
3246 if ((z3<=
fZ&&
fZ<z2)||(z3<
fZ&&
fZ<=z2)) {
3247 ya = (
fZ-z3)*(dy2-dy3)/(z2-z3)+dy3;
3250 if (z3==
fZ&&
fZ==z2) {
3269 if ((q1!=q2||smer!=0)&&flag==1) {
3281 if (
s1<=w1&&s2<=w1&&s3<=w1&&s4<=w1) {
3295 if (
s1<=w1&&s2<=w1&&s3<=w1&&s4<=w1) {
3310 if (
t1<=w2&&t2<=w2&&t3<=w2&&t4<=w2) {
3324 if (
t1<=w2&&t2<=w2&&t3<=w2&&t4<=w2) {
3455 if (pom2!=0) sdx1 = pom1/pom2;
3458 sdy1 = pom1-sdx1*pom2;
3461 if (pom2!=0) sdx2 = pom1/pom2;
3464 sdy2 = pom1-sdx2*pom2;
3467 if (pom2!=0) sdx3 = pom1/pom2;
3470 sdy3 = pom1-sdx3*pom2;
3473 for (sx4=sx1;sx4<=sx2;sx4++) {
3475 sdy4 = sdx1*pom1+sdy1;
3478 sdy4 = sdx2*pom1+sdy2;
3486 if ((sy4<=y5)||(sy5<y5)) {
3495 for (sx4=sx2;sx4<=sx3;sx4++) {
3497 sdy4 = sdx3*pom1+sdy3;
3500 sdy4 = sdx2*pom1+sdy2;
3508 if ((sy4<=y5)||(sy5<y5)) {
3518 for (sx4=sx1;sx4<=sx3;sx4++) {
3520 sdy4 = sdx2*pom1+sdy2;
3523 sdy4 = sdx1*pom1+sdy1;
3531 if ((sy4<=y5)||(sy5<y5)) {
3540 for (sx4=sx3;sx4<=sx2;sx4++) {
3542 sdy4 = sdx3*pom1+sdy3;
3545 sdy4 = sdx1*pom1+sdy1;
3553 if ((sy4<=y5)||(sy5<y5)) {
3597 if (pom2!=0) sdx1 = pom1/pom2;
3600 sdy1 = pom1-sdx1*pom2;
3603 if (pom2!=0) sdx2 = pom1/pom2;
3606 sdy2 = pom1-sdx2*pom2;
3609 if (pom2!=0) sdx3 = pom1/pom2;
3612 sdy3 = pom1-sdx3*pom2;
3615 for (sx4=sx1;sx4<=sx2;sx4++) {
3617 sdy4 = sdx1*pom1+sdy1;
3620 sdy4 = sdx2*pom1+sdy2;
3628 if ((sy4<=y5)||(sy5<y5)) {
3637 for (sx4=sx2;sx4<=sx3;sx4++) {
3639 sdy4 = sdx3*pom1+sdy3;
3642 sdy4 = sdx2*pom1+sdy2;
3650 if ((sy4<=y5)||(sy5<y5)) {
3660 for (sx4=sx1;sx4<=sx3;sx4++) {
3662 sdy4 = sdx2*pom1+sdy2;
3665 sdy4 = sdx1*pom1+sdy1;
3673 if ((sy4<=y5)||(sy5<y5)) {
3682 for (sx4=sx3;sx4<=sx2;sx4++) {
3684 sdy4 = sdx3*pom1+sdy3;
3687 sdy4 = sdx1*pom1+sdy1;
3695 if ((sy4<=y5)||(sy5<y5)) {
3830 if (((flag==0)&&(smer==0))||((flag!=0)&&(smer!=0))) {
3867 bezy1 = y1+(y2-y3)/6;
3868 bezy2 = y2-(y4-y1)/6;
3894 for (bezf=0;bezf<1.01;bezf+=0.1) {
3904 Envelope(ibezx2,ibezy2,ibezx1,ibezy1);
3939 for (bezf=0;bezf<1.01;bezf+=0.1) {
3949 Envelope(ibezx1,ibezy1,ibezx2,ibezy2);
3963 if ((q1!=q2||smer!=0)&&flag==1) {
4058 xtaz = (dx1+dx2+dx4)/3;
4059 ytaz = (dy1+dy2+dy4)/3;
4060 ztaz = (z1+z2+z4)/3;
4064 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
4069 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
4078 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
4083 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
4093 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
4098 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
4108 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
4113 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
4127 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
4132 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
4137 da = (dxr1+dx2+dx1)/3;
4138 db = (dyr1+dy2+dy1)/3;
4142 da = (dxr1+dxr2+dx1)/3;
4143 db = (dyr1+dyr2+dy1)/3;
4144 dc = (zr1+zr2+z1)/3;
4147 da = (dxr2+dx1+dx4)/3;
4148 db = (dyr2+dy1+dy4)/3;
4153 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
4158 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
4163 da = (dx1+dx2+dx3)/3;
4164 db = (dy1+dy2+dy3)/3;
4168 da = (dx2+dxr1+dx3)/3;
4169 db = (dy2+dyr1+dy3)/3;
4173 da = (dx2+dxr2+dxr1)/3;
4174 db = (dy2+dyr2+dyr1)/3;
4175 dc = (z2+zr2+zr1)/3;
4178 da = (dxr2+dx2+dx1)/3;
4179 db = (dyr2+dy2+dy1)/3;
4184 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
4189 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
4194 da = (dx2+dx3+dx4)/3;
4195 db = (dy2+dy3+dy4)/3;
4199 da = (dx4+dx3+dxr1)/3;
4200 db = (dy4+dy3+dyr1)/3;
4204 da = (dx3+dxr2+dxr1)/3;
4205 db = (dy3+dyr2+dyr1)/3;
4206 dc = (z3+zr2+zr1)/3;
4209 da = (dx2+dxr2+dx3)/3;
4210 db = (dy2+dyr2+dy3)/3;
4215 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
4220 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
4225 da = (dx1+dx3+dx4)/3;
4226 db = (dy1+dy3+dy4)/3;
4230 da = (dx4+dx3+dxr2)/3;
4231 db = (dy4+dy3+dyr2)/3;
4235 da = (dx4+dxr2+dxr1)/3;
4236 db = (dy4+dyr2+dyr1)/3;
4237 dc = (z4+zr2+zr1)/3;
4240 da = (dx1+dx4+dxr1)/3;
4241 db = (dy1+dy4+dyr1)/3;
4288 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
4289 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
4290 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
4291 dd = -da*dx1-db*dy1-dc*z1;
4307 if (pom2!=0) sdx2 = pom1/pom2;
4310 sdy2 = pom1-sdx2*pom2;
4321 xtaz = (dx3+dx2+dx4)/3;
4322 ytaz = (dy3+dy2+dy4)/3;
4323 ztaz = (z3+z2+z4)/3;
4358 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
4359 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
4360 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
4361 dd = -da*dx1-db*dy1-dc*z1;
4378 if (pom2!=0) sdx1 = pom1/pom2;
4381 sdy1 = pom1-sdx1*pom2;
4382 for (sx4=sx1,sx5=sx1,sy5=sy1;sx4<=sx2;sx4++) {
4384 sdy4 = sdx1*pom1+sdy1;
4393 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
4394 else v =(iv1+iv2+iv4)/3;
4408 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
4409 else v =(iv1+iv2+iv4)/3;
4419 for (sx4=sx1p,sx5=sx1p,sy5=sy1p;sx4<=sx3p;sx4++) {
4421 sdy4 = sdx2p*pom1+sdy2p;
4431 if (dcp!=0)
v = (-ddp-dap*dx1-dbp*dy1)/dcp;
4432 else v = (iv1+iv2+iv4)/3;
4447 if (dcp!=0)
v = (-ddp-dap*dx1-dbp*dy1)/dcp;
4448 else v = (iv1+iv2+iv4)/3;
4463 if (((flag!=0)&&(smer==0))||((flag==0)&&(smer!=0))) {
4500 bezy1 = y1+(y2-y3)/6;
4501 bezy2 = y2-(y4-y1)/6;
4527 for (bezf=0;bezf<1.01;bezf+=0.1) {
4537 Envelope(ibezx2,ibezy2,ibezx1,ibezy1);
4572 for (bezf=0;bezf<1.01;bezf+=0.1) {
4582 Envelope(ibezx1,ibezy1,ibezx2,ibezy2);
4596 if ((q1!=q2||smer!=0)&&flag==1) {
4691 xtaz = (dx1+dx2+dx4)/3;
4692 ytaz = (dy1+dy2+dy4)/3;
4693 ztaz = (z1+z2+z4)/3;
4697 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
4702 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
4711 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
4716 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
4726 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
4731 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
4741 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
4746 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
4760 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
4765 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
4770 da = (dxr1+dx2+dx1)/3;
4771 db = (dyr1+dy2+dy1)/3;
4775 da = (dxr1+dxr2+dx1)/3;
4776 db = (dyr1+dyr2+dy1)/3;
4777 dc = (zr1+zr2+z1)/3;
4780 da = (dxr2+dx1+dx4)/3;
4781 db = (dyr2+dy1+dy4)/3;
4786 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
4791 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
4796 da = (dx1+dx2+dx3)/3;
4797 db = (dy1+dy2+dy3)/3;
4801 da = (dx2+dxr1+dx3)/3;
4802 db = (dy2+dyr1+dy3)/3;
4806 da = (dx2+dxr2+dxr1)/3;
4807 db = (dy2+dyr2+dyr1)/3;
4808 dc = (z2+zr2+zr1)/3;
4811 da = (dxr2+dx2+dx1)/3;
4812 db = (dyr2+dy2+dy1)/3;
4817 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
4822 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
4827 da = (dx2+dx3+dx4)/3;
4828 db = (dy2+dy3+dy4)/3;
4832 da = (dx4+dx3+dxr1)/3;
4833 db = (dy4+dy3+dyr1)/3;
4837 da = (dx3+dxr2+dxr1)/3;
4838 db = (dy3+dyr2+dyr1)/3;
4839 dc = (z3+zr2+zr1)/3;
4842 da = (dx2+dxr2+dx3)/3;
4843 db = (dy2+dyr2+dy3)/3;
4848 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
4853 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
4858 da = (dx1+dx3+dx4)/3;
4859 db = (dy1+dy3+dy4)/3;
4863 da = (dx4+dx3+dxr2)/3;
4864 db = (dy4+dy3+dyr2)/3;
4868 da = (dx4+dxr2+dxr1)/3;
4869 db = (dy4+dyr2+dyr1)/3;
4870 dc = (z4+zr2+zr1)/3;
4873 da = (dx1+dx4+dxr1)/3;
4874 db = (dy1+dy4+dyr1)/3;
4921 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
4922 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
4923 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
4924 dd = -da*dx1-db*dy1-dc*z1;
4941 if (pom2!=0) sdx1 = pom1/pom2;
4944 sdy1 = pom1-sdx1*pom2;
4945 for (sx4=sx1,sx5=sx1,sy5=sy1;sx4<=sx2;sx4++) {
4947 sdy4 = sdx1*pom1+sdy1;
4956 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
4957 else v =(iv1+iv2+iv4)/3;
4971 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
4972 else v =(iv1+iv2+iv4)/3;
4982 xtaz = (dx3+dx2+dx4)/3;
4983 ytaz = (dy3+dy2+dy4)/3;
4984 ztaz = (z3+z2+z4)/3;
5019 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
5020 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
5021 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
5022 dd = -da*dx1-db*dy1-dc*z1;
5039 if (pom2!=0) sdx2 = pom1/pom2;
5042 sdy2 = pom1-sdx2*pom2;
5043 for (sx4=sx2,sx5=sx2,sy5=sy2;sx4<=sx3;sx4++) {
5045 sdy4 = sdx2*pom1+sdy2;
5054 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5055 else v =(iv1+iv2+iv4)/3;
5069 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5070 else v =(iv1+iv2+iv4)/3;
5099 box->SetFillStyle(1001);
5100 if ((q1!=q2||smer!=0)&&flag==1) {
5195 xtaz = (dx1+dx2+dx4)/3;
5196 ytaz = (dy1+dy2+dy4)/3;
5197 ztaz = (z1+z2+z4)/3;
5201 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
5206 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
5215 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
5220 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
5230 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
5235 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
5245 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
5250 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
5264 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
5269 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
5274 da = (dxr1+dx2+dx1)/3;
5275 db = (dyr1+dy2+dy1)/3;
5279 da = (dxr1+dxr2+dx1)/3;
5280 db = (dyr1+dyr2+dy1)/3;
5281 dc = (zr1+zr2+z1)/3;
5284 da = (dxr2+dx1+dx4)/3;
5285 db = (dyr2+dy1+dy4)/3;
5290 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
5295 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
5300 da = (dx1+dx2+dx3)/3;
5301 db = (dy1+dy2+dy3)/3;
5305 da = (dx2+dxr1+dx3)/3;
5306 db = (dy2+dyr1+dy3)/3;
5310 da = (dx2+dxr2+dxr1)/3;
5311 db = (dy2+dyr2+dyr1)/3;
5312 dc = (z2+zr2+zr1)/3;
5315 da = (dxr2+dx2+dx1)/3;
5316 db = (dyr2+dy2+dy1)/3;
5321 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
5326 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
5331 da = (dx2+dx3+dx4)/3;
5332 db = (dy2+dy3+dy4)/3;
5336 da = (dx4+dx3+dxr1)/3;
5337 db = (dy4+dy3+dyr1)/3;
5341 da = (dx3+dxr2+dxr1)/3;
5342 db = (dy3+dyr2+dyr1)/3;
5343 dc = (z3+zr2+zr1)/3;
5346 da = (dx2+dxr2+dx3)/3;
5347 db = (dy2+dyr2+dy3)/3;
5352 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
5357 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
5362 da = (dx1+dx3+dx4)/3;
5363 db = (dy1+dy3+dy4)/3;
5367 da = (dx4+dx3+dxr2)/3;
5368 db = (dy4+dy3+dyr2)/3;
5372 da = (dx4+dxr2+dxr1)/3;
5373 db = (dy4+dyr2+dyr1)/3;
5374 dc = (z4+zr2+zr1)/3;
5377 da = (dx1+dx4+dxr1)/3;
5378 db = (dy1+dy4+dyr1)/3;
5425 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
5426 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
5427 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
5428 dd = -da*dx1-db*dy1-dc*z1;
5465 if (pom2!=0) sdx1 = pom1/pom2;
5468 sdy1 = pom1-sdx1*pom2;
5471 if (pom2!=0) sdx2 = pom1/pom2;
5474 sdy2 = pom1-sdx2*pom2;
5477 if (pom2!=0) sdx3 = pom1/pom2;
5480 sdy3 = pom1-sdx3*pom2;
5483 for (sx4=sx1;sx4<=sx2;sx4++) {
5485 sdy4 = sdx1*pom1+sdy1;
5488 sdy4 = sdx2*pom1+sdy2;
5496 if ((sy4<=y5)||(sy5<y5)) {
5500 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5502 for (il=sy5;il<=sy4+1;il++) {
5504 if(il<=sy4) dy1 = il;
5506 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5507 else v =(iv1+iv2+iv4)/3;
5511 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5519 for (sx4=sx2;sx4<=sx3;sx4++) {
5521 sdy4 = sdx3*pom1+sdy3;
5524 sdy4 = sdx2*pom1+sdy2;
5532 if ((sy4<=y5)||(sy5<y5)) {
5536 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5538 for (il=sy5;il<=sy4+1;il++) {
5540 if(il<=sy4) dy1 = il;
5542 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5543 else v =(iv1+iv2+iv4)/3;
5547 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5556 for (sx4=sx1;sx4<=sx3;sx4++) {
5558 sdy4 = sdx2*pom1+sdy2;
5561 sdy4 = sdx1*pom1+sdy1;
5569 if ((sy4<=y5)||(sy5<y5)) {
5573 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5575 for (il=sy5;il<=sy4+1;il++) {
5577 if(il<=sy4) dy1 = il;
5579 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5580 else v =(iv1+iv2+iv4)/3;
5584 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5592 for (sx4=sx3;sx4<=sx2;sx4++) {
5594 sdy4 = sdx3*pom1+sdy3;
5597 sdy4 = sdx1*pom1+sdy1;
5605 if ((sy4<=y5)||(sy5<y5)) {
5609 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5611 for (il=sy5;il<=sy4+1;il++) {
5613 if(il<=sy4) dy1 = il;
5615 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5616 else v =(iv1+iv2+iv4)/3;
5620 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5628 xtaz = (dx3+dx2+dx4)/3;
5629 ytaz = (dy3+dy2+dy4)/3;
5630 ztaz = (z3+z2+z4)/3;
5665 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
5666 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
5667 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
5668 dd = -da*dx1-db*dy1-dc*z1;
5705 if (pom2!=0) sdx1 = pom1/pom2;
5708 sdy1 = pom1-sdx1*pom2;
5711 if (pom2!=0) sdx2 = pom1/pom2;
5714 sdy2 = pom1-sdx2*pom2;
5717 if (pom2!=0) sdx3 = pom1/pom2;
5720 sdy3 = pom1-sdx3*pom2;
5723 for (sx4=sx1;sx4<=sx2;sx4++) {
5725 sdy4 = sdx1*pom1+sdy1;
5728 sdy4 = sdx2*pom1+sdy2;
5736 if ((sy4<=y5)||(sy5<y5)) {
5740 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5742 for (il=sy5;il<=sy4+1;il++) {
5744 if(il<=sy4) dy1 = il;
5746 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5747 else v =(iv2+iv3+iv4)/3;
5751 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5759 for (sx4=sx2;sx4<=sx3;sx4++) {
5761 sdy4 = sdx3*pom1+sdy3;
5764 sdy4 = sdx2*pom1+sdy2;
5772 if ((sy4<=y5)||(sy5<y5)) {
5776 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5778 for (il=sy5;il<=sy4+1;il++) {
5780 if(il<=sy4) dy1 = il;
5782 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5783 else v =(iv2+iv3+iv4)/3;
5787 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5796 for (sx4=sx1;sx4<=sx3;sx4++) {
5798 sdy4 = sdx2*pom1+sdy2;
5801 sdy4 = sdx1*pom1+sdy1;
5809 if ((sy4<=y5)||(sy5<y5)) {
5813 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5815 for (il=sy5;il<=sy4+1;il++) {
5817 if(il<=sy4) dy1 = il;
5819 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5820 else v =(iv2+iv3+iv4)/3;
5824 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5832 for (sx4=sx3;sx4<=sx2;sx4++) {
5834 sdy4 = sdx3*pom1+sdy3;
5837 sdy4 = sdx1*pom1+sdy1;
5845 if ((sy4<=y5)||(sy5<y5)) {
5849 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(sy4)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(sy5-1)+1);
5851 for (il=sy5;il<=sy4+1;il++) {
5853 if(il<=sy4) dy1 = il;
5855 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
5856 else v =(iv2+iv3+iv4)/3;
5860 box->PaintBox(
gPad->PixeltoX(sx4),
gPad->PixeltoY(il)+1,
gPad->PixeltoX(sx4+1),
gPad->PixeltoY(il-1)+1);
5872 if ((q1!=q2||smer!=0)&&flag==1) {
5916 if ((q1!=q2||smer!=0)&&flag==1) {
5959 if ((q1!=q2||smer!=0)&&flag==1) {
6054 xtaz = (dx1+dx2+dx4)/3;
6055 ytaz = (dy1+dy2+dy4)/3;
6056 ztaz = (z1+z2+z4)/3;
6060 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
6065 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
6074 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
6079 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
6089 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
6094 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
6104 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
6109 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
6123 if (sr1<0||sr1>w1||tr1<0||tr1>w2)
Transform(sr1,tr1,-1);
6128 if (sr8<0||sr8>w1||tr8<0||tr8>w2)
Transform(sr8,tr8,-1);
6133 da = (dxr1+dx2+dx1)/3;
6134 db = (dyr1+dy2+dy1)/3;
6138 da = (dxr1+dxr2+dx1)/3;
6139 db = (dyr1+dyr2+dy1)/3;
6140 dc = (zr1+zr2+z1)/3;
6143 da = (dxr2+dx1+dx4)/3;
6144 db = (dyr2+dy1+dy4)/3;
6149 if (sr3<0||sr3>w1||tr3<0||tr3>w2)
Transform(sr3,tr3,-1);
6154 if (sr2<0||sr2>w1||tr2<0||tr2>w2)
Transform(sr2,tr2,-1);
6159 da = (dx1+dx2+dx3)/3;
6160 db = (dy1+dy2+dy3)/3;
6164 da = (dx2+dxr1+dx3)/3;
6165 db = (dy2+dyr1+dy3)/3;
6169 da = (dx2+dxr2+dxr1)/3;
6170 db = (dy2+dyr2+dyr1)/3;
6171 dc = (z2+zr2+zr1)/3;
6174 da = (dxr2+dx2+dx1)/3;
6175 db = (dyr2+dy2+dy1)/3;
6180 if (sr5<0||sr5>w1||tr5<0||tr5>w2)
Transform(sr5,tr5,-1);
6185 if (sr4<0||sr4>w1||tr4<0||tr4>w2)
Transform(sr4,tr4,-1);
6190 da = (dx2+dx3+dx4)/3;
6191 db = (dy2+dy3+dy4)/3;
6195 da = (dx4+dx3+dxr1)/3;
6196 db = (dy4+dy3+dyr1)/3;
6200 da = (dx3+dxr2+dxr1)/3;
6201 db = (dy3+dyr2+dyr1)/3;
6202 dc = (z3+zr2+zr1)/3;
6205 da = (dx2+dxr2+dx3)/3;
6206 db = (dy2+dyr2+dy3)/3;
6211 if (sr7<0||sr7>w1||tr7<0||tr7>w2)
Transform(sr7,tr7,-1);
6216 if (sr6<0||sr6>w1||tr6<0||tr6>w2)
Transform(sr6,tr6,-1);
6221 da = (dx1+dx3+dx4)/3;
6222 db = (dy1+dy3+dy4)/3;
6226 da = (dx4+dx3+dxr2)/3;
6227 db = (dy4+dy3+dyr2)/3;
6231 da = (dx4+dxr2+dxr1)/3;
6232 db = (dy4+dyr2+dyr1)/3;
6233 dc = (z4+zr2+zr1)/3;
6236 da = (dx1+dx4+dxr1)/3;
6237 db = (dy1+dy4+dyr1)/3;
6284 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
6285 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
6286 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
6287 dd = -da*dx1-db*dy1-dc*z1;
6304 if (pom2!=0) sdx1 = pom1/pom2;
6307 sdy1 = pom1-sdx1*pom2;
6308 for (sx4=sx1,sx5=sx1,sy5=sy1;sx4<=sx2;sx4++) {
6310 sdy4 = sdx1*pom1+sdy1;
6319 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6320 else v = (iv1+iv2+iv4)/3;
6334 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6335 else v = (iv1+iv2+iv4)/3;
6359 if (pom2!=0) sdx2 = pom1/pom2;
6362 sdy2 = pom1-sdx2*pom2;
6373 xtaz = (dx3+dx2+dx4)/3;
6374 ytaz = (dy3+dy2+dy4)/3;
6375 ztaz = (z3+z2+z4)/3;
6410 da = (dy2-dy1)*(z3-z1)-(dy3-dy1)*(z2-z1);
6411 db = (z2-z1)*(dx3-dx1)-(z3-z1)*(dx2-dx1);
6412 dc = (dx2-dx1)*(dy3-dy1)-(dx3-dx1)*(dy2-dy1);
6413 dd = -da*dx1-db*dy1-dc*z1;
6430 if (pom2!=0) sdx1 = pom1/pom2;
6433 sdy1 = pom1-sdx1*pom2;
6434 for (sx4=sx1,sx5=sx1,sy5=sy1;sx4<=sx2;sx4++) {
6436 sdy4 = sdx1*pom1+sdy1;
6445 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6446 else v = (iv1+iv2+iv4)/3;
6460 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6461 else v = (iv1+iv2+iv4)/3;
6486 if (pom2!=0) sdx1 = pom1/pom2;
6489 sdy1 = pom1-sdx1*pom2;
6490 for (sx4=sx1,sx5=sx1,sy5=sy1;sx4<=sx2;sx4++) {
6492 sdy4 = sdx1*pom1+sdy1;
6501 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6502 else v = (iv1+iv2+iv4)/3;
6516 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6517 else v = (iv1+iv2+iv4)/3;
6527 for (sx4=sx1p,sx5=sx1p,sy5=sy1p;sx4<=sx3p;sx4++) {
6529 sdy4 = sdx2p*pom1+sdy2p;
6539 if (dcp!=0)
v = (-ddp-dap*dx1-dbp*dy1)/dcp;
6540 else v = (iv1+iv2+iv4)/3;
6555 if (dcp!=0)
v = (-ddp-dap*dx1-dbp*dy1)/dcp;
6556 else v = (iv1+iv2+iv4)/3;
6581 if (pom2!=0) sdx2 = pom1/pom2;
6584 sdy2 = pom1-sdx2*pom2;
6585 for (sx4=sx2,sx5=sx2,sy5=sy2;sx4<=sx3;sx4++) {
6587 sdy4 = sdx2*pom1+sdy2;
6596 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6597 else v = (iv1+iv2+iv4)/3;
6611 if (dc!=0)
v = (-dd-da*dx1-db*dy1)/dc;
6612 else v = (iv1+iv2+iv4)/3;
6639 if (smer==0) q1 += 1;
6647 }
while ((q1!=qv||(q2!=(qv-1) && q2!=w2)||smer!=0||flag!=1) &&
6648 ((q1!=(qv-1) && q1!=w1)||q2!=qv||smer!=1||flag!=1) &&
6650 if (qv<=w2&&qv<=w1) {
6693 if (q2<=w2)
goto l2;
6695 }
while (q1<=w1&&q2<=w2);
6708 if (
x2>=
x1) turnj = 1;
6709 if (
x3>=
x2) turni = 1;
6737 if (smer==0) q1 -= 1;
6741 if (smer==0) q2 += 1;
6794 if (smer==0) q1 += 1;
6802 }
while ((q1!=qv||(q2!=(qv-1)&&q2!=w2)||smer!=0||flag!=1) &&
6803 ((q1!=(qv-1)&&q1!=w1)||q2!=qv||smer!=1||flag!=1) &&
6805 if (qv<=w2&&qv<=w1) {
6848 if (q2<=w2)
goto lc2;
6850 }
while (q1<=w1&&q2<=w2);
6854 static char chopt[10] =
"";
6856 axis->
PaintAxis(p101x, p101y, p111x, p111y, bmin, bmax, ndivx,
"");
6857 axis->
PaintAxis(p011x, p011y, p111x, p111y, bmin, bmax, ndivx,
"");
6859 axis->
PaintAxis(p110x, p110y, p111x, p111y, bmin, bmax, ndivx,
"");
6864 chopt[0] = 0; strlcat(chopt,
"SDH-",10);
6866 strlcat(chopt,
"N",10);
6869 xaxis->
PaintAxis(p010x, p010y, p110x, p110y, bmin, bmax, ndivx, chopt);
6874 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
6876 strlcat(chopt,
"N",10);
6879 yaxis->
PaintAxis(p100x, p100y, p110x, p110y, bmin, bmax, ndivy, chopt);
6887 if (bmin <= 0) bmin=0.001*bmax;
6888 zaxis->
PaintAxis(p010x, p010y, p011x, p011y, bmin, bmax, ndivz,
"G+");
6890 TF1 *
f1=
new TF1(
"f1",
"sqrt(x)",bmin,bmax);
6891 TGaxis *a1 =
new TGaxis(p010x, p010y, p011x, p011y,
"f1", ndivz,
"SDH+");
6897 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
6899 strlcat(chopt,
"N",10);
6902 zaxis->
PaintAxis(p010x, p010y, p011x, p011y, bmin, bmax, ndivz, chopt);
6906 axis->
PaintAxis(p001x, p001y, p101x, p101y, bmin, bmax, ndivx,
"");
6907 axis->
PaintAxis(p111x, p111y, p101x, p101y, bmin, bmax, ndivx,
"");
6909 axis->
PaintAxis(p100x, p100y, p101x, p101y, bmin, bmax, ndivx,
"");
6914 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
6916 strlcat(chopt,
"N",10);
6919 xaxis->
PaintAxis(p000x, p000y, p100x, p100y, bmin, bmax, ndivx, chopt);
6924 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
6926 strlcat(chopt,
"N",10);
6929 yaxis->
PaintAxis(p100x, p100y, p110x, p110y, bmin, bmax, ndivy, chopt);
6937 if (bmin <= 0) bmin=0.001*bmax;
6938 zaxis->
PaintAxis(p110x, p110y, p111x, p111y, bmin, bmax, ndivz,
"G+");
6940 TF1 *
f1=
new TF1(
"f1",
"sqrt(x)",bmin,bmax);
6941 TGaxis *a1 =
new TGaxis(p110x, p110y, p111x, p111y,
"f1", ndivz,
"SDH+");
6947 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
6949 strlcat(chopt,
"N",10);
6952 zaxis->
PaintAxis(p110x, p110y, p111x, p111y, bmin, bmax, ndivz, chopt);
6956 axis->
PaintAxis(p011x, p011y, p001x, p001y, bmin, bmax, ndivx,
"");
6957 axis->
PaintAxis(p101x, p101y, p001x, p001y, bmin, bmax, ndivx,
"");
6959 axis->
PaintAxis(p000x, p000y, p001x, p001y, bmin, bmax, ndivx,
"");
6964 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
6966 strlcat(chopt,
"N",10);
6969 xaxis->
PaintAxis(p000x, p000y, p100x, p100y, bmin, bmax, ndivx, chopt);
6974 chopt[0] = 0; strlcat(chopt,
"SDH-",10);
6976 strlcat(chopt,
"N",10);
6979 yaxis->
PaintAxis(p000x, p000y, p010x, p010y, bmin, bmax, ndivy, chopt);
6987 if (bmin <= 0) bmin=0.001*bmax;
6988 zaxis->
PaintAxis(p100x, p100y, p101x, p101y, bmin, bmax, ndivz,
"G+");
6990 TF1 *
f1=
new TF1(
"f1",
"sqrt(x)",bmin,bmax);
6991 TGaxis *a1 =
new TGaxis(p100x, p100y, p101x, p101y,
"f1", ndivz,
"SDH+");
6997 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
6999 strlcat(chopt,
"N",10);
7002 zaxis->
PaintAxis(p100x, p100y, p101x, p101y, bmin, bmax, ndivz, chopt);
7006 axis->
PaintAxis(p111x, p111y, p011x, p011y, bmin, bmax, ndivx,
"");
7007 axis->
PaintAxis(p001x, p001y, p011x, p011y, bmin, bmax, ndivx,
"");
7009 axis->
PaintAxis(p010x, p010y, p011x, p011y, bmin, bmax, ndivx,
"");
7014 chopt[0] = 0; strlcat(chopt,
"SDH-",10);
7016 strlcat(chopt,
"N",10);
7019 xaxis->
PaintAxis(p010x, p010y, p110x, p110y, bmin, bmax, ndivx, chopt);
7024 chopt[0] = 0; strlcat(chopt,
"SDH-",10);
7026 strlcat(chopt,
"N",10);
7029 yaxis->
PaintAxis(p000x, p000y, p010x, p010y, bmin, bmax, ndivy, chopt);
7037 if (bmin <= 0) bmin=0.001*bmax;
7038 zaxis->
PaintAxis(p000x, p000y, p001x, p001y, bmin, bmax, ndivz,
"G+");
7040 TF1 *
f1=
new TF1(
"f1",
"sqrt(x)",bmin,bmax);
7041 TGaxis *a1 =
new TGaxis(p000x, p000y, p001x, p001y,
"f1", ndivz,
"SDH+");
7047 chopt[0] = 0; strlcat(chopt,
"SDH+",10);
7049 strlcat(chopt,
"N",10);
7052 zaxis->
PaintAxis(p000x, p000y, p001x, p001y, bmin, bmax, ndivz,
"SDH+");
7103 if (nodesx>1&&nodesy>1) {
7118 if (alpha>=0&&alpha<=90&&beta>=0&&
beta<=90&&alpha+
beta<=90) {
7163 if (
r>=0&&r<=255&&g>=0&&g<=255&&b>=0&&
b<=255) {
7177 if (
x>=0&&
y>=0&&z>=0) {
7230 if (weight>=0&&weight<=1)
fLHweight = weight;
7683 Int_t i1, i2, i3, i4, i5;
7688 while (opt.
Tokenize(token, from,
"[ (]")) {
7694 printf(
"PaintSpectrum: Display modes groups should be in the [0,3] range\n");
7698 if (i2<1 || i2>11) {
7699 printf(
"PaintSpectrum: Display modes should be in the [1,11] range\n");
7705 }
else if (token==
"pa") {
7712 }
else if (token==
"n") {
7718 }
else if (token==
"ca") {
7721 printf(
"PaintSpectrum: Color Algorithm should be in the [0,9] range\n");
7727 }
else if (token==
"zs") {
7730 printf(
"PaintSpectrum: Z-Scale should be in the [0,2] range\n");
7736 }
else if (token==
"ci") {
7743 }
else if (token==
"lhw") {
7748 }
else if (token==
"lp") {
7755 }
else if (token==
"cw") {
7760 }
else if (token==
"b") {
7763 printf(
"PaintSpectrum: Bezier should be in the [0,1] range\n");
7769 }
else if (token==
"s") {
7772 printf(
"PaintSpectrum: Shading should be in the [0,1] range\n");
7777 printf(
"PaintSpectrum: Shadow should be in the [0,1] range\n");
7783 }
else if (token==
"cm") {
7792 }
else if (token==
"cg") {
7798 }
else if (token==
"a" || token==
"a=") {
7805 }
else if (token==
"bf") {
7813 printf(
"Unknown option \"%s\"\n",token.
Data());
static double p1(double t, double a, double b)
static double p2(double t, double a, double b, double c)
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:
@ kChannelMarksStyleCross
@ kChannelMarksStyleTriangle
@ kChannelMarksStyleDiamond
@ kChannelMarksStyleRectangle
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.
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)