/**
*
*
* @ingroup pwglf_forward_scripts_tests
*/
namespace {
enum {
kSolid = 0x000,
kHollow = 0x001,
kCircle = 0x002,
kSquare = 0x004,
kUpTriangle = 0x006,
kDownTriangle = 0x008,
kDiamond = 0x00a,
kCross = 0x00c,
kStar = 0x00e
};
/**
*
*
* @param bits
*
* @return
* @ingroup pwglf_forward_scripts_tests
*/
Int_t MarkerStyle(UInt_t bits)
{
Int_t base = bits & (0xFE);
Bool_t hollow = bits & kHollow;
switch (base) {
case kCircle: return (hollow ? 24 : 20);
case kSquare: return (hollow ? 25 : 21);
case kUpTriangle: return (hollow ? 26 : 22);
case kDownTriangle: return (hollow ? 32 : 23);
case kDiamond: return (hollow ? 27 : 33);
case kCross: return (hollow ? 28 : 34);
case kStar: return (hollow ? 30 : 29);
}
return 1;
}
/**
*
*
* @param style
*
* @return
* @ingroup pwglf_forward_scripts_tests
*/
UShort_t MarkerBits(Int_t style)
{
UShort_t bits = 0;
switch (style) {
case 24: case 25: case 26: case 27: case 28: case 30: case 32:
bits |= kHollow; break;
}
switch (style) {
case 20: case 24: bits |= kCircle; break;
case 21: case 25: bits |= kSquare; break;
case 22: case 26: bits |= kUpTriangle; break;
case 23: case 32: bits |= kDownTriangle; break;
case 27: case 33: bits |= kDiamond; break;
case 28: case 34: bits |= kCross; break;
case 29: case 30: bits |= kStar; break;
}
return bits;
}
/**
*
*
* @param style
*
* @return
* @ingroup pwglf_forward_scripts_tests
*/
Int_t FlipHollow(Int_t style)
{
UShort_t bits = MarkerBits(style);
Int_t ret = MarkerStyle(bits ^ kHollow);
Info("FlipHollow", "style=%2d -> bits=0x%02x -> mask=0x%02x -> ret=%02d",
style, bits, (bits ^ kHollow), ret);
return ret;
}
}
/**
*
*
* @param what
* @param base
* @param y
* @ingroup pwglf_forward_scripts_tests
*/
void DrawOne(const char* what, UShort_t base, Double_t y)
{
TLatex* l = new TLatex(.07, y, what);
l->SetTextSize(0.03);
l->Draw();
Int_t filled = MarkerStyle(base);
// Info("DrawOne", "%2d (%16s) -> %d", base, what, style);
TMarker* p = new TMarker(.35, y, filled);
p->SetMarkerSize(1.5);
p->Draw();
Int_t hollow = MarkerStyle(base|kHollow);
p = new TMarker(.60, y, hollow);
p->SetMarkerSize(1.5);
p->Draw();
p = new TMarker(.75, y, FlipHollow(filled));
p->SetMarkerSize(1.5);
p->Draw();
p = new TMarker(.85, y, FlipHollow(hollow));
p->SetMarkerSize(1.5);
p->Draw();
}
//
// EOF
//