Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
662c32f
[web] fix typo in tgeomanager painter creation
linev Jul 30, 2024
681c6bd
[jsroot] dev 30/07/2024
linev Jul 30, 2024
225c7ee
[geom] do not use web display in parallel_world.C macro
linev Jul 30, 2024
351a646
[ntuple] Write first chunk of multi-key last
hahnjo Jul 29, 2024
690f4c1
[ntuple] Refactor fseek implementation
hahnjo Jul 31, 2024
0bfd511
[ntuple] Implement buffering in RFileSimple
hahnjo Apr 4, 2024
2096db6
[ntuple] Disable C stdio buffering in RNTupleFileWriter
hahnjo Apr 4, 2024
92b59dd
[ntuple] Pass RNTupleWriteOptions into RNTupleFileWriter
hahnjo Jul 30, 2024
a91dbd5
[ntuple] RNTupleFileWriter: Use open + fdopen
hahnjo Apr 4, 2024
be6add5
[ntuple] Add option to enable Direct I/O
hahnjo Apr 4, 2024
51fb7a9
[ntuple] Check return value of fflush
hahnjo Jul 31, 2024
6818e10
[ntuple] make RField::fColumnRepresentative(s) a vector
jblomer Jul 23, 2024
302e32a
[ntuple] RColumnRepresentations::TypesList_t --> Selection_t
jblomer Jul 24, 2024
92adf61
[ntuple] vector interface for SetColumnRepresentative(s)
jblomer Jul 24, 2024
2bc8023
[ntuple] vector interface for GetColumnRepresentative(s)
jblomer Jul 27, 2024
49f052d
[ntuple] properly initialize RColumn::fRepresentationIndex
jblomer Jul 27, 2024
57c59f2
[ntuple] create write column for all representations
jblomer Jul 27, 2024
3721a3e
[ntuple] add RPageSink::CommitSuppressedColumn()
jblomer Jul 27, 2024
ca46f65
[ntuple] RFieldBase::Flush(): commit suppressed columns
jblomer Jul 27, 2024
b023fe0
[ntuple] RFieldBase: attach read columns from all representations
jblomer Jul 28, 2024
e779bff
[ntuple] signal suppressed columns in PopulatePage()
jblomer Jul 29, 2024
3a56d19
[ntuple] skip suppressed column in cluster preloading
jblomer Jul 29, 2024
be5dde7
[ntuple] introduce column 'teams' to map interleaved columns
jblomer Jul 29, 2024
5e772a9
[ntuple] fix printing descriptor with suppressed columns
jblomer Jul 30, 2024
b6cd46c
[ntuple] read nullable field with multi column representations
jblomer Jul 30, 2024
9e4933d
[ntuple] fix friend source for multi column representations
jblomer Jul 30, 2024
35a5b6d
[ntuple] add internal helper to swap column representation on write
jblomer Jul 30, 2024
3091308
[ntuple] add tests for multi column representation
jblomer Jul 28, 2024
26e3820
[ntuple] skip suppressed column ranges in inspector
jblomer Jul 30, 2024
a3bf33c
[ntuple] minor improvement in descriptor printer
jblomer Jul 31, 2024
661a486
[ntuple] adjust column handling in fields
jblomer Jul 31, 2024
0372a89
[ntuple] fix switching of columns of a team
jblomer Jul 31, 2024
d86f7b1
[ntuple] add test for >2 column representations
jblomer Jul 31, 2024
0d7675f
[NFC][ntuple] add clarifying comment
jblomer Jul 31, 2024
e1ce683
[ntuple] minor improvement
jblomer Jul 31, 2024
f11ca91
[ntuple] avoid shared pointer for RColumn::fTeam
jblomer Jul 31, 2024
9f6c0b3
[cling] Forcefully clean up TemplateIdAnnotations
hahnjo Aug 1, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion geom/geom/src/TGeoManager.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -2917,7 +2917,7 @@ TVirtualGeoPainter *TGeoManager::GetGeomPainter()
{
if (!fPainter) {
const char *kind = gEnv->GetValue("GeomPainter.Name", "");
if (!kind || !*kind);
if (!kind || !*kind)
kind = (gROOT->IsWebDisplay() && !gROOT->IsWebDisplayBatch()) ? "web" : "root";
if (auto h = gROOT->GetPluginManager()->FindHandler("TVirtualGeoPainter", kind)) {
if (h->LoadPlugin() == -1) {
Expand Down
7 changes: 5 additions & 2 deletions interpreter/cling/lib/Utils/ParserStateRAII.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,13 @@ cling::ParserStateRAII::~ParserStateRAII() {
// Note: Consuming the EOF token will pop the include stack.
//
{
// Cleanup the TemplateIds before swapping the previous set back.
Parser::DestroyTemplateIdAnnotationsRAIIObj CleanupTemplateIds(*P);
// Forcefully clean up the TemplateIds, ignoring additional checks in
// MaybeDestroyTemplateIds called from DestroyTemplateIdAnnotationsRAIIObj,
// before swapping the previous set back.
P->DestroyTemplateIds();
}
P->TemplateIds.swap(OldTemplateIds);
assert(OldTemplateIds.empty());
if (SkipToEOF)
P->SkipUntil(tok::eof);
else
Expand Down
29 changes: 19 additions & 10 deletions js/build/jsroot.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const version_id = 'dev',

/** @summary version date
* @desc Release date in format day/month/year like '14/04/2022' */
version_date = '26/07/2024',
version_date = '30/07/2024',

/** @summary version id and date
* @desc Produced by concatenation of {@link version_id} and {@link version_date}
Expand Down Expand Up @@ -64433,24 +64433,33 @@ const TooltipHandler = {
case 3: this.zoom_curr[1] = m[1]; changed[0] = false; break; // only Y
}

const idx = this.swap_xy ? 1 : 0, idy = 1 - idx;
let xmin, xmax, ymin, ymax, isany = false,
namex = 'x', namey = 'y';

if (changed[idx] && (Math.abs(this.zoom_curr[idx] - this.zoom_origin[idx]) > 10)) {
if (this.zoom_second && (this.zoom_kind === 2)) namex = 'x2';
xmin = Math.min(this.revertAxis(namex, this.zoom_origin[idx]), this.revertAxis(namex, this.zoom_curr[idx]));
xmax = Math.max(this.revertAxis(namex, this.zoom_origin[idx]), this.revertAxis(namex, this.zoom_curr[idx]));
if (changed[0] && (Math.abs(this.zoom_curr[0] - this.zoom_origin[0]) > 5)) {
if (this.zoom_second && (this.zoom_kind === 2))
namex = 'x2';
const v1 = this.revertAxis(namex, this.zoom_origin[0]),
v2 = this.revertAxis(namex, this.zoom_curr[0]);
xmin = Math.min(v1, v2);
xmax = Math.max(v1, v2);
isany = true;
}

if (changed[idy] && (Math.abs(this.zoom_curr[idy] - this.zoom_origin[idy]) > 10)) {
if (this.zoom_second && (this.zoom_kind === 3)) namey = 'y2';
ymin = Math.min(this.revertAxis(namey, this.zoom_origin[idy]), this.revertAxis(namey, this.zoom_curr[idy]));
ymax = Math.max(this.revertAxis(namey, this.zoom_origin[idy]), this.revertAxis(namey, this.zoom_curr[idy]));
if (changed[1] && (Math.abs(this.zoom_curr[1] - this.zoom_origin[1]) > 5)) {
if (this.zoom_second && (this.zoom_kind === 3))
namey = 'y2';

const v1 = this.revertAxis(namey, this.zoom_origin[1]),
v2 = this.revertAxis(namey, this.zoom_curr[1]);
ymin = Math.min(v1, v2);
ymax = Math.max(v1, v2);
isany = true;
}

if (this.swap_xy && !this.zoom_second)
[xmin, xmax, ymin, ymax] = [ymin, ymax, xmin, xmax];

if (namex === 'x2') {
pr = this.zoomSingle(namex, xmin, xmax, true);
kind = 0;
Expand Down
2 changes: 1 addition & 1 deletion js/modules/core.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const version_id = 'dev',

/** @summary version date
* @desc Release date in format day/month/year like '14/04/2022' */
version_date = '26/07/2024',
version_date = '30/07/2024',

/** @summary version id and date
* @desc Produced by concatenation of {@link version_id} and {@link version_date}
Expand Down
27 changes: 18 additions & 9 deletions js/modules/gpad/TFramePainter.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -1129,24 +1129,33 @@ const TooltipHandler = {
case 3: this.zoom_curr[1] = m[1]; changed[0] = false; break; // only Y
}

const idx = this.swap_xy ? 1 : 0, idy = 1 - idx;
let xmin, xmax, ymin, ymax, isany = false,
namex = 'x', namey = 'y';

if (changed[idx] && (Math.abs(this.zoom_curr[idx] - this.zoom_origin[idx]) > 10)) {
if (this.zoom_second && (this.zoom_kind === 2)) namex = 'x2';
xmin = Math.min(this.revertAxis(namex, this.zoom_origin[idx]), this.revertAxis(namex, this.zoom_curr[idx]));
xmax = Math.max(this.revertAxis(namex, this.zoom_origin[idx]), this.revertAxis(namex, this.zoom_curr[idx]));
if (changed[0] && (Math.abs(this.zoom_curr[0] - this.zoom_origin[0]) > 5)) {
if (this.zoom_second && (this.zoom_kind === 2))
namex = 'x2';
const v1 = this.revertAxis(namex, this.zoom_origin[0]),
v2 = this.revertAxis(namex, this.zoom_curr[0]);
xmin = Math.min(v1, v2);
xmax = Math.max(v1, v2);
isany = true;
}

if (changed[idy] && (Math.abs(this.zoom_curr[idy] - this.zoom_origin[idy]) > 10)) {
if (this.zoom_second && (this.zoom_kind === 3)) namey = 'y2';
ymin = Math.min(this.revertAxis(namey, this.zoom_origin[idy]), this.revertAxis(namey, this.zoom_curr[idy]));
ymax = Math.max(this.revertAxis(namey, this.zoom_origin[idy]), this.revertAxis(namey, this.zoom_curr[idy]));
if (changed[1] && (Math.abs(this.zoom_curr[1] - this.zoom_origin[1]) > 5)) {
if (this.zoom_second && (this.zoom_kind === 3))
namey = 'y2';

const v1 = this.revertAxis(namey, this.zoom_origin[1]),
v2 = this.revertAxis(namey, this.zoom_curr[1]);
ymin = Math.min(v1, v2);
ymax = Math.max(v1, v2);
isany = true;
}

if (this.swap_xy && !this.zoom_second)
[xmin, xmax, ymin, ymax] = [ymin, ymax, xmin, xmax];

if (namex === 'x2') {
pr = this.zoomSingle(namex, xmin, xmax, true);
kind = 0;
Expand Down
27 changes: 22 additions & 5 deletions tree/ntuple/v7/inc/ROOT/RColumn.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,15 @@ private:
NTupleSize_t fFirstElementIndex = 0;
/// Used to pack and unpack pages on writing/reading
std::unique_ptr<RColumnElementBase> fElement;
/// The column team is a set of columns that serve the same column index for different representation IDs.
/// Initially, the team has only one member, the very column it belongs to. Through MergeTeams(), two columns
/// can join forces. The team is used to react on suppressed columns: if the current team member has a suppressed
/// column for a MapPage() call, it get the page from the active column in the corresponding cluster.
std::vector<RColumn *> fTeam;
/// Points into fTeam to the column that successfully returned the last page.
std::size_t fLastGoodTeamIdx = 0;

RColumn(EColumnType type, std::uint32_t index);
RColumn(EColumnType type, std::uint32_t columnIndex, std::uint16_t representationIndex);

/// Used in Append() and AppendV() to handle the case when the main page reached the target size.
/// If tail page optimization is enabled, switch the pages; the other page has been flushed when
Expand Down Expand Up @@ -112,9 +119,9 @@ private:

public:
template <typename CppT>
static std::unique_ptr<RColumn> Create(EColumnType type, std::uint32_t index)
static std::unique_ptr<RColumn> Create(EColumnType type, std::uint32_t columnIdx, std::uint16_t representationIdx)
{
auto column = std::unique_ptr<RColumn>(new RColumn(type, index));
auto column = std::unique_ptr<RColumn>(new RColumn(type, columnIdx, representationIdx));
column->fElement = RColumnElementBase::Generate<CppT>(type);
return column;
}
Expand Down Expand Up @@ -330,8 +337,18 @@ public:
}

void Flush();
void MapPage(const NTupleSize_t index);
void MapPage(RClusterIndex clusterIndex);
void CommitSuppressed();

void MapPage(NTupleSize_t globalIndex) { R__ASSERT(TryMapPage(globalIndex)); }
void MapPage(RClusterIndex clusterIndex) { R__ASSERT(TryMapPage(clusterIndex)); }
bool TryMapPage(NTupleSize_t globalIndex);
bool TryMapPage(RClusterIndex clusterIndex);

bool ReadPageContains(NTupleSize_t globalIndex) const { return fReadPage.Contains(globalIndex); }
bool ReadPageContains(RClusterIndex clusterIndex) const { return fReadPage.Contains(clusterIndex); }

void MergeTeams(RColumn &other);

NTupleSize_t GetNElements() const { return fNElements; }
RColumnElementBase *GetElement() const { return fElement.get(); }
EColumnType GetType() const { return fType; }
Expand Down
Loading