diff --git a/.github/workflows/jsroot-ci.yml b/.github/workflows/jsroot-ci.yml index 82eb99245..d968e4969 100644 --- a/.github/workflows/jsroot-ci.yml +++ b/.github/workflows/jsroot-ci.yml @@ -68,6 +68,7 @@ jobs: node demo/node/rntuple_buffer_test.js node demo/node/rntuple_test.js demo/node/rntuple_test.root node demo/node/tree_int64_test.js demo/node/tree_int64_test.root + node demo/node/tree_draw_range.js demo/node/rntuple_test.root node demo/node/rntuple_test32.js demo/node/rntuple_test32.root demo/node/rntuple_test32.json tests_ubuntu: @@ -187,6 +188,7 @@ jobs: node demo/node/rntuple_buffer_test.js node demo/node/rntuple_test.js demo/node/rntuple_test.root node demo/node/tree_int64_test.js demo/node/tree_int64_test.root + node demo/node/tree_draw_range.js demo/node/rntuple_test.root node demo/node/rntuple_test32.js demo/node/rntuple_test32.root demo/node/rntuple_test32.json @@ -241,5 +243,6 @@ jobs: node demo/node/rntuple_buffer_test.js node demo/node/rntuple_test.js demo/node/rntuple_test.root node demo/node/tree_int64_test.js demo/node/tree_int64_test.root + node demo/node/tree_draw_range.js demo/node/rntuple_test.root node demo/node/rntuple_test32.js demo/node/rntuple_test32.root demo/node/rntuple_test32.json diff --git a/demo/node/tree_draw_range.js b/demo/node/tree_draw_range.js new file mode 100644 index 000000000..b03c1ebeb --- /dev/null +++ b/demo/node/tree_draw_range.js @@ -0,0 +1,33 @@ +import { version, openFile } from 'jsroot'; +import { rntupleDraw } from 'jsroot/rntuple'; + +// check that automatic histogram range of draw expression includes all values + +console.log(`JSROOT version ${version}`); + +let filename = './rntuple_test.root', + any_error = false; + +if (process?.argv && process.argv[2]) + filename = process.argv[2]; + +const file = await openFile(filename), + rntuple = await file.readObject('Data'); + +// first value of DoubleField is 0, which is minimal value, in second expression it is maximal value +for (const expr of ['DoubleField', '5 - DoubleField']) { + const hist = await rntupleDraw(rntuple, expr), + underflow = hist.fArray[0], + overflow = hist.fArray[hist.fXaxis.fNbins + 1]; + if (underflow || overflow) { + any_error = true; + console.error(`FAILURE: drawing '${expr}' has range [${hist.fXaxis.fXmin}, ${hist.fXaxis.fXmax}], underflow ${underflow}, overflow ${overflow}`); + } else + console.log(`OK: drawing '${expr}' has range [${hist.fXaxis.fXmin}, ${hist.fXaxis.fXmax}]`); +} + +if (any_error) { + console.error('\nFAILURE when checking histogram range'); + process.exit(1); +} else + console.log('\nTest OK'); diff --git a/modules/tree.mjs b/modules/tree.mjs index af556d906..888671a01 100644 --- a/modules/tree.mjs +++ b/modules/tree.mjs @@ -1230,7 +1230,7 @@ class TDrawSelector extends TSelector { res.max = this.hist_args[axisid * 3 + 2]; } else { let is_any = false; - for (let i = 1; i < arr.length; ++i) { + for (let i = 0; i < arr.length; ++i) { const v = arr[i]; if (!Number.isFinite(v)) continue;