diff --git a/guides/developers/event_data_format.md b/guides/developers/event_data_format.md index 5785de7f5..6a9fe4785 100644 --- a/guides/developers/event_data_format.md +++ b/guides/developers/event_data_format.md @@ -41,12 +41,12 @@ The format is the following. Where: -* `event number` and `run number` are hopefully obvious, +* `event number` (or `eventNumber`) and `run number` (or `runNumber`) are hopefully obvious, * `OBJECT_TYPE` is one of the supported types that will be mentioned [below](#supported-object-types), * `COLLECTION_NAME` is an arbitrary name used to label this particular collection (you can have as many collections of each `OBJECT_TYPE` as you like). -* `...` can be any other optional key/value pairs. Phoenix understands by default the following keys which will be used in the event Metadata panel, valuse being free strings : +* `...` can be any other optional key/value pairs. Phoenix understands by default the following keys which will be used in the event Metadata panel, values being free strings : * `ls` will be printed for `LS` entry - * `lumiblock` will be printed for `LumiBlock` entry + * `lumiBlock` will be printed for `LumiBlock` entry * `time` : will be printed for `Data recorded` entry @@ -63,26 +63,34 @@ Currently Phoenix supports the following physics objects: * Tracks - the trajectory of a charged particle (usually in a magnetic field) * Jets - cones of activity within the detector * Hits - individual measurements, which can either be points, lines, or boxes -* CaloClusters - cluters of deposits in a calorimeter -* [Planar]CaloCells - deposits of energy in a calorimeter (planar and cylindrical are supported). +* CaloClusters - clusters of deposits in a calorimeter +* [Planar/Irregular]CaloCells - deposits of energy in a calorimeter (cylindrical, planar and irregular geometries are supported). * Vertices - optionally linked to tracks * MissingEnergy -* Compound objects which link 'Tracks' and 'Clusters' : +* Compound objects which link 'Tracks' and 'CaloClusters' : * Muons * Photons * Electrons (other shapes may be supported in the future) -What follows in the detailed format of each object type. Any extra entry is considered as decoration and will not be interpreted by phoenix, although it will be visible by the user. E.g. a Track can have `dof` attribute on top of `pos`, `color`, ... +What follows is the detailed format of each object type. Any extra entry is considered as decoration and will not be interpreted by phoenix, although it will be visible by the user. In all the descriptions, `opt` means that the attribute described is optional. +Some attributes are used to build cut sliders in the collection's `Cut Options` menu folder. A cut is only shown if the attribute exists on the first object of the collection. + #### 'Tracks' -Tracks is a list of Track objects with the following attrbutes : -* `pos` - list of positions along the track, each given as a triplet [x, y, z] +Tracks is a list of Track objects with the following attributes : +* `pos` - list of positions along the track, each given as a triplet [x, y, z] +* `dparams` (opt) - perigee parameters of the track: 5 floats matching [d0, z0, phi, theta, qOverP]. If `pos` is missing or has fewer than 3 positions, the track is extrapolated from `dparams` using a Runge-Kutta propagator * `color` (opt) - Hexadecimal string representing the color to draw the track. -* `dparams` (opt) - parameters of the tracks. 5 floats matching d0, z0, phi, theta, qOverP -* `d0`, `z0`, `phi`, `eta`, `qOverP` (opt) - parameters of the tracks, taking precedence over `dparams` +* `linewidth` (opt) - width of the track line (default 2) +* `phi`, `eta`, `d0`, `z0` (opt) - parameters of the track, used for cuts. If not given, they are derived from `dparams` (or, for `phi`/`eta`, from the first two positions of `pos`) +* `dca`, `angle` (opt) - distance of closest approach and polar angle in degrees, used for cuts. If not given, they are derived from the parameters above +* `chi2`, `dof`, `pT` (opt) - used for cuts +* `charge`, `mom` (opt) - charge and momentum, used by the `Color by` options (see below). Not needed if `dparams` is given, since then both are derived from the qOverP component + +Available cuts: `phi`, `eta`, `chi2`, `dof`, `pT`, `z0`, `d0`, `dca`, `angle`. #### 'Jets' Jets are a list of Jet objects with the following attributes : @@ -92,32 +100,46 @@ Jets are a list of Jet objects with the following attributes : * `energy`, `et` (opt) - energy of the Jets, used to set its length * `coneR` (opt) - the radius of the jet cone. If not given, radius is 10% of the length * `color` (opt) - Hexadecimal string representing the color to draw the jet. +* `origin_X`, `origin_Y`, `origin_Z` (opt) - origin of the jet (defaults to [0, 0, 0]) + +Available cuts: `phi`, `eta`, `energy`. #### 'Hits' Hits can be defined in 2 ways. Either as an array of positions or as an array of Hit objects. -In case aray of positions is used, Hits have format [ [x,y,z], [x,y,z], [x,y,z], ... ] i.e. an array of 3-dim arrays containing Cartesian coordinate. +In case array of positions is used, Hits have format [ [x,y,z], [x,y,z], [x,y,z], ... ] i.e. an array of 3-dim arrays containing Cartesian coordinates. These will be rendered as points. In case of array of Hit objects, format is [ hit, hit, hit ] where the hit object has the following attributes : -* `type` (opt) - type of Hit. One of `Point`, `Line` or `Box`. Defaults to Point -* `pos` - an array of number describing the hit - * for `Point` type, it should have 3 coordinates : [x, y, z] +* `type` (opt) - type of Hit. One of `Point`, `CircularPoint`, `Line` or `Box`. Defaults to Point +* `pos` - an array of numbers describing the hit + * for `Point` and `CircularPoint` types, it should have 3 coordinates : [x, y, z] * for `Line` type, it should have 6 coordinates : [x0, y0, z0, x1, y1, z1] * for `Box` type, it should have 6 coordinates : [x, y, z, length in x, width in y, height in z] * `color` (opt) - Hexadecimal string representing the color to draw the hit. -Note that all hit objects in a given Hits collection have to be of the same type. +* `size` (opt) - size of the drawn point (`CircularPoint` type only, default 10) + +Note that all hit objects in a given Hits collection have to be of the same type, and that `type`, `color` and `size` are read from the first hit of the collection and applied to the whole collection. #### 'CaloClusters' and 'CaloCells' -We are talking here of cylindrical calorimeters, the deposits will be displayed as boxes with fixed square base and length matching the energy. The orientation of the boxes is radial. +We are talking here of cylindrical calorimeters, the deposits will be displayed as boxes with a square base, oriented radially, positioned at a default barrel radius of 1800 (CaloClusters) or 1700 (CaloCells) and a default z of 3600 (CaloClusters) or 2000 (CaloCells). 'CaloClusters' and 'CaloCells' are lists of CaloCluster and CaloCell objects respectively. These have the same set of attributes : -* `energy` - energy of the cluster or deposit, converted to length of the displayed box +* `energy` - energy of the cluster or deposit. For CaloClusters it is converted to the length of the displayed box (unless `length` is given); for CaloCells it is only used for cuts * `phi` - phi direction * `eta` - eta direction - +* `theta` (opt) - if given, used instead of `eta` to position the box +* `radius` (opt) - cylindrical radius at which to draw the box, overriding the default +* `z` (opt) - z position at which to draw the box, overriding the default +* `side` (opt) - transverse size of the box (default 40 for CaloClusters, 30 for CaloCells) +* `length` (opt) - length of the box, overriding the energy-derived length (CaloCells default to 30) +* `color` (opt) - Hexadecimal string representing the color to draw the box. +* `opacity` (opt) - opacity of the box from 0 to 1 (CaloClusters only) + +Available cuts: `phi`, `eta`, `energy`. + #### 'PlanarCaloCells' We are talking here of planar calorimeters, the deposits will be displayed as boxes with square base of cellSize and length matching the energy. -These boxes will be positions on a given plane (the plane pf the calorimeter) at the specified coordinates in this plane. +These boxes will be positioned on a given plane (the plane of the calorimeter) at the specified coordinates in this plane. PlanarCaloCells is an object with the following attributes : * `plane` - the Calorimeter plane, defined as 4 numbers, giving a direction (normal to the plane) and a distance to the origin : [dx, dy, dz, length] @@ -127,14 +149,46 @@ PlanarCaloCells is an object with the following attributes : * `pos` - position of the cell within the calo plane given as a pair [x, y] * `color` (opt) - Hexadecimal string representing the color to draw the cell. -#### 'Vertices -'Vertices are a list of Vertex objects with the following attributes : -* `color` (opt) - Hexadecimal string representing the color to draw the vertex. +Available cuts: `energy`. + +#### 'IrregularCaloCells' +Calorimeter cells with arbitrary polyhedron-type geometry. +Each cell is represented by 8 (x,y,z) vertices connected using a convex hull from the [ConvexGeometry](https://threejs.org/docs/#examples/en/geometries/ConvexGeometry) class. + +IrregularCaloCells is a list of objects with the following attributes : +* `layer` - the Calorimeter layer, used for cuts +* `vtx` - a flattened list of 8 vertex coordinates (24 floats) +* `color` - an integer list of [R,G,B] values (note: not a hexadecimal string) +* `opacity` - value from 0 to 1 + +Available cuts: `layer`, `energy`. + +#### 'Vertices' +Vertices are a list of Vertex objects with the following attributes : * one of the 2 following sets of attributes * `x`, `y`, `z` : describing the position of the vertex * `pos` : array of 3 numbers (x, y, z) describing the position of the vertex +* `color` (opt) - Hexadecimal string representing the color to draw the vertex. +* `size` (opt) - radius of the displayed sphere (default 3) +* `vertexType` (opt) - type of the vertex, used for cuts +* `linkedTracks` (opt) - list of indices of the tracks associated with this vertex +* `linkedTrackCollection` (opt) - name of the Tracks collection the `linkedTracks` indices refer to -#### MissingEnergy +If `linkedTracks` and `linkedTrackCollection` are given, the linked Tracks collection gets a `Color by` → `Vertex` option which colors each vertex and its associated tracks with a distinct color. + +Available cuts: `vertexType`. + +#### 'MissingEnergy' This is a list of objects, displayed as dashed lines starting from 0 and staying in the plane z=0. Each object has the following attributes : * `etx`, `ety` : describing the direction of the line * `color` (opt) - Hexadecimal string representing the color to draw the line. + +#### 'Muons', 'Electrons' and 'Photons' +These are compound objects which link to existing 'Tracks' and 'CaloClusters' objects of the event. Each object has the following attributes : +* `LinkedTracks` (opt) - list of strings of the form `"COLLECTION_NAME:INDEX"` (e.g. `"GSFTrackParticles:12"`), each identifying a track in a Tracks collection of the event (Muons and Electrons) +* `LinkedClusters` (opt) - list of strings of the form `"COLLECTION_NAME:INDEX"`, each identifying a cluster in a CaloClusters collection of the event +* `energy`, `eta`, `phi` (opt) - if no `LinkedClusters` are given, used to draw a cluster for Photons +* `eta`, `phi`, `pt` (opt) - if no `LinkedTracks` are given, used to extrapolate a track for Muons and Electrons +* `pdgId` (opt) - PDG ID of the particle, used to determine the charge of the extrapolated track + +Available cuts: `phi`, `eta`, `energy`, `pT`. diff --git a/guides/users.md b/guides/users.md index 51da0e964..147689ec3 100644 --- a/guides/users.md +++ b/guides/users.md @@ -12,10 +12,7 @@ * [Labels](#labels) * [URL options](#url-options) * [Using Phoenix with your own data](#using-phoenix-with-your-own-data) - * [Event data](#event-data) - * [Format](#format) - * [Supported object types](#supported-object-types) - * [Geometry](#geometry) + * [Geometry Data](#geometry-data) ## Getting started @@ -182,71 +179,7 @@ http://localhost:4200/#/atlas?file=assets/event_data/data.json&type=json ## Using Phoenix with your own data -For details on the Phoenix event data format, please see [Phoenix Event Data Format](developers/event_data_format.md) - -#### 'Jets' -Jets are a list of Jet objects with the following attributes : -* `eta` - eta direction -* `phi`- phi direction -* `theta` (opt) - if not given, eta is used to calculate theta -* `energy`, `et` (opt) - energy of the Jets, used to set its length -* `coneR` (opt) - the radius of the jet cone. If not given, radius is 10% of the length -* `color` (opt) - Hexadecimal string representing the color to draw the jet. -* `origin_X`, `origin_Y`, `origin_Z` (opt) - Origin of the jet - -#### 'Hits' -Hits can be defined in 2 ways. Either as an array of positions or as an array of Hit objects. - -In case aray of positions is used, Hits have format [ [x,y,z], [x,y,z], [x,y,z], ... ] i.e. an array of 3-dim arrays containing Cartesian coordinate. -These will be rendered as points. - -In case of array of Hit objects, format is [ hit, hit, hit ] where the hit object has the following attributes : -* `type` (opt) - type of Hit. One of `Point`, `Line` or `Box`. Defaults to Point -* `pos` - an array of number describing the hit - * for `Point` type, it should have 3 coordinates : [x, y, z] - * for `Line` type, it should have 6 coordinates : [x0, y0, z0, x1, y1, z1] - * for `Box` type, it should have 6 coordinates : [x, y, z, length in x, width in y, height in z] -* `color` (opt) - Hexadecimal string representing the color to draw the hit. -Note that all hit objects in a given Hits collection have to be of the same type. - -#### 'CaloClusters' and 'CaloCells' -We are talking here of cylindrical calorimeters, the deposits will be displayed as boxes with fixed square base and length matching the energy. The orientation of the boxes is radial. -'CaloClusters' and 'CaloCells' are lists of CaloCluster and CaloCell objects respectively. These have the same set of attributes : -* `energy` - energy of the cluster or deposit, converted to length of the displayed box -* `phi` - phi direction -* `eta` - eta direction - -#### 'PlanarCaloCells' -We are talking here of planar calorimeters, the deposits will be displayed as boxes with square base of cellSize and length matching the energy. -These boxes will be positions on a given plane (the plane pf the calorimeter) at the specified coordinates in this plane. - -PlanarCaloCells is an object with the following attributes : -* `plane` - the Calorimeter plane, defined as 4 numbers, giving a direction (normal to the plane) and a distance to the origin : [dx, dy, dz, length] -* `cells` - a list of Cell objects with the following attributes: - * `cellSize` - size of the Calorimeter cell which fired - * `energy` - energy of the deposit, converted to length of the displayed box - * `pos` - position of the cell within the calo plane given as a pair [x, y] - * `color` (opt) - Hexadecimal string representing the color to draw the cell. - -#### 'IrregularCaloCells' -Calorimeter cells with arbitrary polyhedron-type geometry. -Each cell is represented by 8 (x,y,z) vertices connected using a convex hull from the [ConvexGeometry](https://threejs.org/docs/#examples/en/geometries/ConvexGeometry) class. - -IrregularCaloCells is a list of objects with the following attributes : - * `layer` - the Calorimeter layer - * `vtx` - a flattened list of 8 vertex coordinates (24 floats) - * `color` - an integer list of [R,G,B] values - * `opacity` - value from 0 to 1 - -#### 'Vertices -'Vertices are a list of Vertex objects with the following attributes : -* `x`, `y`, `z` : describing the position of the vertex -* `color` (opt) - Hexadecimal string representing the color to draw the vertex. - -#### MissingEnergy -This is a list of objects, displayed as dashed lines starting from 0 and staying in the plane z=0. Each object has the following attributes : -* `etx`, `ety` : describing the direction of the line -* `color` (opt) - Hexadecimal string representing the color to draw the line. +For details on the Phoenix event data format, including all supported object types and their attributes, please see [Phoenix Event Data Format](developers/event_data_format.md) ### Geometry Data diff --git a/packages/phoenix-event-display/src/lib/types/event-data.ts b/packages/phoenix-event-display/src/lib/types/event-data.ts index 31e002669..034eb0e10 100644 --- a/packages/phoenix-event-display/src/lib/types/event-data.ts +++ b/packages/phoenix-event-display/src/lib/types/event-data.ts @@ -193,6 +193,10 @@ export interface VertexParams { vertexType?: number; /** Color for rendering. */ color?: string | number; + /** Indices of the tracks associated with this vertex, used to color tracks by vertex. */ + linkedTracks?: number[]; + /** Name of the track collection the linked track indices refer to. */ + linkedTrackCollection?: string; /** UUID assigned after object creation. Set internally. */ uuid?: string; /** Extra experiment-specific properties. */ diff --git a/packages/phoenix-event-display/src/loaders/jivexml-loader.ts b/packages/phoenix-event-display/src/loaders/jivexml-loader.ts index ea853c96e..252011fe5 100644 --- a/packages/phoenix-event-display/src/loaders/jivexml-loader.ts +++ b/packages/phoenix-event-display/src/loaders/jivexml-loader.ts @@ -160,6 +160,17 @@ export class JiveXMLLoader extends PhoenixLoader { return [false, 0, 0, 0]; } + /** + * Get a track collection name which does not clash with an event data type. + * We have problems if the name of the collection is a type, so a collection + * named `Tracks` is renamed to `Tracks_`. + * @param collectionName Name (storeGateKey) of the track collection. + * @returns The (possibly renamed) collection name. + */ + private getSafeTrackCollectionName(collectionName: string): string { + return collectionName === 'Tracks' ? 'Tracks_' : collectionName; + } + /** * Extract Tracks from the JiveXML data format and process them. * @param firstEvent First "Event" element in the XML DOM of the JiveXML data format. @@ -174,11 +185,9 @@ export class JiveXMLLoader extends PhoenixLoader { const badTracks: { [key: string]: any } = {}; for (const collection of trackCollections) { - let trackCollectionName = - collection.getAttribute('storeGateKey') ?? 'Unknown'; - if (trackCollectionName === 'Tracks') { - trackCollectionName = 'Tracks_'; //We have problems if the name of the collection is a type - } + const trackCollectionName = this.getSafeTrackCollectionName( + collection.getAttribute('storeGateKey') ?? 'Unknown', + ); let thickTracks = false; if ( @@ -271,6 +280,7 @@ export class JiveXMLLoader extends PhoenixLoader { let storeTrack = true; // Need to do this because we need to retrieve all info so counters don't go wrong. const debugTrack = false; const track = { + index: i, // Original index in the JiveXML collection, needed to e.g. match vertex track links when bad tracks are dropped. chi2: 0.0, dof: 0.0, pT: 0.0, @@ -923,7 +933,9 @@ export class JiveXMLLoader extends PhoenixLoader { primVxCand: primVxCand[i], vertexType: vertexType[i], linkedTracks: thisTrackIndices, - linkedTrackCollection: sgkeyOfTracks[i], + linkedTrackCollection: sgkeyOfTracks[i] + ? this.getSafeTrackCollectionName(sgkeyOfTracks[i]) + : sgkeyOfTracks[i], }); } const key = vertexColl.getAttribute('storeGateKey'); diff --git a/packages/phoenix-event-display/src/loaders/phoenix-loader.ts b/packages/phoenix-event-display/src/loaders/phoenix-loader.ts index ec3cb395c..e00aeaefb 100644 --- a/packages/phoenix-event-display/src/loaders/phoenix-loader.ts +++ b/packages/phoenix-event-display/src/loaders/phoenix-loader.ts @@ -13,6 +13,7 @@ import { CoordinateHelper } from '../helpers/coordinate-helper'; import { getLabelTitle } from '../helpers/labels'; import { DatGUIMenuUI } from '../managers/ui-manager/dat-gui-ui'; import { PhoenixMenuUI } from '../managers/ui-manager/phoenix-menu/phoenix-menu-ui'; +import { ColorByOptionKeys } from '../managers/ui-manager/color-options'; import { getDefaultObjectTypeConfigs, ObjectTypeConfig, @@ -285,6 +286,7 @@ export class PhoenixLoader implements EventDataLoader { collectionName, collectionCuts, collectionColor, + this.getColorByOptions(typeName, collectionName), ); } @@ -303,6 +305,40 @@ export class PhoenixLoader implements EventDataLoader { ); } + /** + * Get the options a collection can be colored by, depending on the event data. + * @param typeName Name of the event data type the collection belongs to. + * @param collectionName Name of the collection. + * @returns Options to color the collection by, or `undefined` for + * non-track collections which have no color by options. + */ + private getColorByOptions( + typeName: string, + collectionName: string, + ): ColorByOptionKeys[] | undefined { + if (typeName !== 'Tracks') { + return undefined; + } + + const colorByOptions = [ColorByOptionKeys.CHARGE, ColorByOptionKeys.MOM]; + + // Only offer coloring by vertex if some vertices actually link to this collection. + const vertexCollections = this.eventData?.Vertices ?? {}; + const hasLinkedVertices = Object.values(vertexCollections).some( + (vertexCollection) => + vertexCollection?.some( + (vertex) => + vertex.linkedTrackCollection === collectionName && + vertex.linkedTracks?.length, + ), + ); + if (hasLinkedVertices) { + colorByOptions.push(ColorByOptionKeys.VERTEX); + } + + return colorByOptions; + } + /** * Adds to the event display all the objects inside a collection. * @param objectCollection Contains the params for every object of the collection. diff --git a/packages/phoenix-event-display/src/managers/three-manager/color-manager.ts b/packages/phoenix-event-display/src/managers/three-manager/color-manager.ts index 1c8eac225..b506db121 100644 --- a/packages/phoenix-event-display/src/managers/three-manager/color-manager.ts +++ b/packages/phoenix-event-display/src/managers/three-manager/color-manager.ts @@ -1,10 +1,8 @@ import { Color, MeshPhongMaterial, - LineBasicMaterial, Mesh, Object3D, - Material, type Object3DEventMap, Line, Points, @@ -44,6 +42,29 @@ export class ColorManager { } } + /** + * Color objects by a color computed from each object's parameters. + * @param objectsGroup Name of the object(s) group to color. + * @param getColor Function computing the color from object params, or + * `undefined` to leave the object's color unchanged. + */ + colorObjectsByComputedColor( + objectsGroup: string, + getColor: (objectUserData: any) => Color | string | undefined, + ) { + const objects = this.sceneManager.getScene().getObjectByName(objectsGroup); + if (objects) { + objects.traverse((object: any) => { + if (object.material?.color) { + const color = getColor(object.userData); + if (color !== undefined) { + object.material.color.set(color); + } + } + }); + } + } + /** * Changes the color of all objects inside an event data collection. * @param collectionName Name of the collection. @@ -104,37 +125,66 @@ export class ColorManager { } /** - * Randomly color tracks by the vertex they are associated with. - * @param collectionName Name of the collection. + * Color tracks by the vertex they are associated with, giving each vertex + * (and its linked tracks) a distinct color. + * @param collectionName Name of the track collection. + * @returns The number of tracks that were colored. */ - public colorTracksByVertex(collectionName: string) { + public colorTracksByVertex(collectionName: string): number { const scene = this.sceneManager.getScene(); const vertices = scene.getObjectByName('Vertices'); if (!vertices) { - return; + return 0; } + + const vertexObjects: Object3D[] = []; vertices.traverse((object) => { - const { linkedTrackCollection, linkedTracks } = object.userData; + if (object.name === 'Vertex') { + vertexObjects.push(object); + } + }); + + const trackCollection = scene.getObjectByName(collectionName); + // Tracks can be dropped on load, so prefer matching by the original index + // stored in userData over the position in the collection. + const tracksByIndex = new Map(); + trackCollection?.children.forEach((track) => { + if (track.userData.index !== undefined) { + tracksByIndex.set(track.userData.index, track); + } + }); + + let coloredTracks = 0; + vertexObjects.forEach((vertexObject, vertexIndex) => { + const { linkedTrackCollection, linkedTracks } = vertexObject.userData; if ( - object.name === 'Vertex' && - linkedTrackCollection === collectionName && - linkedTracks + !trackCollection || + linkedTrackCollection !== collectionName || + !linkedTracks ) { - const mat = (object as Mesh).material as Material; - if ('color' in mat) { - // Should always be true, but basetype doesn't have color property - const colorForTracksVertex = mat.color; - const trackCollection = scene.getObjectByName(linkedTrackCollection); - if (trackCollection) { - linkedTracks.forEach((trackIndex: number) => { - trackCollection.children[trackIndex].traverse((trackObject) => { - setColorForObject(trackObject, colorForTracksVertex); - }); - }); - } - } + return; } + + // Deterministic distinct color per vertex (golden ratio hue steps), + // unless the vertex has an explicit color. + const vertexColor = + vertexObject.userData.color ?? + new Color().setHSL((vertexIndex * 0.618034) % 1, 0.9, 0.55); + + setColorForObject(vertexObject, vertexColor); + linkedTracks.forEach((trackIndex: number) => { + const track = + tracksByIndex.get(trackIndex) ?? trackCollection.children[trackIndex]; + track?.traverse((trackObject) => { + setColorForObject(trackObject, vertexColor); + }); + if (track) { + coloredTracks++; + } + }); }); + + return coloredTracks; } } /** diff --git a/packages/phoenix-event-display/src/managers/ui-manager/color-options.ts b/packages/phoenix-event-display/src/managers/ui-manager/color-options.ts index 8464ab7a7..bd2b05ff9 100644 --- a/packages/phoenix-event-display/src/managers/ui-manager/color-options.ts +++ b/packages/phoenix-event-display/src/managers/ui-manager/color-options.ts @@ -2,6 +2,7 @@ import { Color } from 'three'; import { PrettySymbols } from '../../helpers/pretty-symbols'; import { ColorManager } from '../three-manager/color-manager'; import { PhoenixMenuNode } from './phoenix-menu/phoenix-menu-node'; +import { type ConfigSelect } from './phoenix-menu/config-types'; /** Keys for options available for coloring event data by. */ export enum ColorByOptionKeys { @@ -55,8 +56,8 @@ export class ColorOptions { // Charge options. /** Default values for colors for color by charge. */ private chargeColors = { - '-1': '#ff0000', - '0': '#ff0000', + '-1': '#0000ff', + '0': '#d3d3d3', '1': '#ff0000', }; @@ -65,7 +66,7 @@ export class ColorOptions { private momColors: { [key: string]: { value: number; color: string } } = { min: { value: 0, - color: '#ff0000', + color: '#0000ff', }, max: { value: 50000, @@ -135,7 +136,10 @@ export class ColorOptions { // Configurations - this.colorOptionsFolder.addConfig({ + // `value` is deliberately not set initially so that applying the config + // state on creation does not override the collection color. It is set on + // user selection so the choice survives saving/loading the menu state. + const colorByConfig: ConfigSelect = { type: 'select', label: 'Color by', options: this.colorByOptions.map((colorByOption) => colorByOption.name), @@ -144,13 +148,17 @@ export class ColorOptions { (colorByOption) => colorByOption.name === updatedColorByOption, ); - if (newColorByOption?.key) + if (newColorByOption?.key) { this.selectedColorByOption = newColorByOption.key; + colorByConfig.value = newColorByOption.name; + } newColorByOption?.apply?.(); this.onlySelectedColorByOption(); }, - }); + }; + + this.colorOptionsFolder.addConfig(colorByConfig); } // Charge options. @@ -237,8 +245,7 @@ export class ColorOptions { this.momColors[key].value = sliderValue; if (this.selectedColorByOption === ColorByOptionKeys.MOM) { - this.colorByMomentum('min'); - this.colorByMomentum('max'); + this.colorByMomentum(); } }, }); @@ -252,7 +259,7 @@ export class ColorOptions { this.momColors[key].color = color; if (this.selectedColorByOption === ColorByOptionKeys.MOM) { - this.colorByMomentum(key); + this.colorByMomentum(); } }, }); @@ -263,33 +270,32 @@ export class ColorOptions { * Apply momentum color options. */ private applyMomColorOptions() { - this.colorByMomentum('min'); - this.colorByMomentum('max'); + this.colorByMomentum(); } /** - * Color event data based on the momentum property of each object. - * @param minOrMax If the momentum to color objects by is minimum or maximum momentum. - * This is to apply the stored momentum colors for minimum and maximum separated at the mid value. + * Color event data with a gradient based on the momentum property of each object. + * Objects are colored by interpolating between the min and max colors according + * to where their momentum lies in the min/max range (clamped at the ends). */ - private colorByMomentum(minOrMax: string) { - this.colorManager.colorObjectsByProperty( - this.momColors[minOrMax].color, + private colorByMomentum() { + const minColor = new Color(this.momColors.min.color); + const maxColor = new Color(this.momColors.max.color); + const range = this.momColors.max.value - this.momColors.min.value; + + this.colorManager.colorObjectsByComputedColor( this.collectionName, (objectParams) => { const mom = this.getMomentum(objectParams); - const mid = (this.momColors.min.value + this.momColors.max.value) / 2; - - if (minOrMax === 'max' && mom > mid && mom < this.momColors.max.value) { - return true; - } else if ( - minOrMax === 'min' && - mom < mid && - mom > this.momColors.min.value - ) { - return true; + if (mom === undefined || range <= 0) { + return undefined; } - return false; + + const lerpFactor = Math.min( + Math.max((mom - this.momColors.min.value) / range, 0), + 1, + ); + return minColor.clone().lerp(maxColor, lerpFactor); }, ); } @@ -311,7 +317,15 @@ export class ColorOptions { * Apply color by vertex to tracks. */ private applyVertexColorOptions() { - this.colorManager.colorTracksByVertex(this.collectionName); + const coloredTracks = this.colorManager.colorTracksByVertex( + this.collectionName, + ); + if (coloredTracks === 0) { + console.warn( + `No tracks in "${this.collectionName}" could be colored by vertex. ` + + 'This requires vertices with "linkedTracks" and "linkedTrackCollection" data.', + ); + } } /** diff --git a/packages/phoenix-event-display/src/managers/ui-manager/index.ts b/packages/phoenix-event-display/src/managers/ui-manager/index.ts index 4f25a1f43..d763637a3 100644 --- a/packages/phoenix-event-display/src/managers/ui-manager/index.ts +++ b/packages/phoenix-event-display/src/managers/ui-manager/index.ts @@ -17,6 +17,7 @@ import { setToLocalStorage, } from '../../helpers/browser-storage'; import { type PhoenixUI } from './phoenix-ui'; +import { ColorByOptionKeys } from './color-options'; import { type AnimationPreset } from '../../managers/three-manager/animations-manager'; /** If animation presets not passed in configuration, we will use this. */ @@ -211,15 +212,23 @@ export class UIManager { * @param collectionName Name of the collection to be added in the type of event data (tracks, hits etc.). * @param cuts Cuts to the collection of event data that are to be made configurable to filter event data. * @param collectionColor initial color of the collection. + * @param colorByOptions Options to color the collection by. If not provided, defaults based on the event data type are used. */ public addCollection( eventDataType: string, collectionName: string, cuts?: Cut[], collectionColor?: Color, + colorByOptions?: ColorByOptionKeys[], ) { this.uiMenus.forEach((menu) => - menu.addCollection(eventDataType, collectionName, cuts, collectionColor), + menu.addCollection( + eventDataType, + collectionName, + cuts, + collectionColor, + colorByOptions, + ), ); } diff --git a/packages/phoenix-event-display/src/managers/ui-manager/phoenix-menu/config-types.ts b/packages/phoenix-event-display/src/managers/ui-manager/phoenix-menu/config-types.ts index 45ed49a04..2dcff417a 100644 --- a/packages/phoenix-event-display/src/managers/ui-manager/phoenix-menu/config-types.ts +++ b/packages/phoenix-event-display/src/managers/ui-manager/phoenix-menu/config-types.ts @@ -50,6 +50,7 @@ export type ConfigRangeSlider = ConfigLabel & { /** Type for Phoenix menu node "select" config. */ export type ConfigSelect = ConfigLabel & { options: string[]; + value?: string; onChange: (selectedOption: string) => void; }; diff --git a/packages/phoenix-event-display/src/managers/ui-manager/phoenix-menu/phoenix-menu-node.ts b/packages/phoenix-event-display/src/managers/ui-manager/phoenix-menu/phoenix-menu-node.ts index 562c1312f..036a09b49 100644 --- a/packages/phoenix-event-display/src/managers/ui-manager/phoenix-menu/phoenix-menu-node.ts +++ b/packages/phoenix-event-display/src/managers/ui-manager/phoenix-menu/phoenix-menu-node.ts @@ -143,8 +143,10 @@ export class PhoenixMenuNode { /** * Apply the current values of config by calling the change function. * @param config Config whose values are to be applied. + * @param fromStateLoad Whether the config is being applied from a saved + * state, as opposed to being newly added to the menu. */ - applyConfigState(config: any) { + applyConfigState(config: any, fromStateLoad: boolean = false) { // Apply configs of different config types - manual if (config.type === 'checkbox' && config?.['isChecked']) { config.onChange?.(config?.['isChecked']); @@ -152,12 +154,17 @@ export class PhoenixMenuNode { if (this.name === 'Labels' || this.parent?.name === 'Labels') { // Exception for Labels node (and sub labels), which should always have color applied config.onChange?.(config?.['color']); - } else if (config.group !== undefined) { - // Ignore color by options with `!config.group`, otherwise the collection color is overridden + } else if (fromStateLoad && config.group !== undefined) { + // Only apply grouped "color by" configs when restoring a saved state, + // otherwise the collection color is overridden on creation. Their + // change functions only color the collection if the config's "color by" + // option is the selected one. config.onChange?.(config?.['color']); } } else if (config.type === 'slider' && config?.['value']) { config.onChange?.(config?.['value']); + } else if (config.type === 'select' && config?.['value']) { + config.onChange?.(config?.['value']); } else if ( config.type === 'rangeSlider' && config?.['value'] !== undefined @@ -232,12 +239,18 @@ export class PhoenixMenuNode { // console.log('nodeConfig', nodeConfig); if (nodeConfig) { for (const prop in configState) { + if (prop === 'options') { + // The available options of a `select` are structural (derived from + // the loaded event data), not user state - a saved state must not + // overwrite them. + continue; + } const key = prop as keyof typeof nodeConfig; // console.log('prop',prop, 'key', key, 'nodeConfig[key]', nodeConfig[key]); (nodeConfig as any)[key] = configState[key]; } - this.applyConfigState(nodeConfig); + this.applyConfigState(nodeConfig, true); } } diff --git a/packages/phoenix-event-display/src/managers/ui-manager/phoenix-menu/phoenix-menu-ui.ts b/packages/phoenix-event-display/src/managers/ui-manager/phoenix-menu/phoenix-menu-ui.ts index 9c792d761..f392020cf 100644 --- a/packages/phoenix-event-display/src/managers/ui-manager/phoenix-menu/phoenix-menu-ui.ts +++ b/packages/phoenix-event-display/src/managers/ui-manager/phoenix-menu/phoenix-menu-ui.ts @@ -226,12 +226,14 @@ export class PhoenixMenuUI implements PhoenixUI { * @param collectionName Name of the collection to be added in the type of event data (tracks, hits etc.). * @param cuts Cuts to the collection of event data that are to be made configurable to filter event data. * @param collectionColor Default color of the collection. + * @param colorByOptions Options to color the collection by. If not provided, defaults based on the event data type are used. */ public addCollection( eventDataType: string, collectionName: string, cuts?: Cut[], collectionColor?: Color, + colorByOptions?: ColorByOptionKeys[], ) { const typeFolder = this.eventFolder.children.find( (eventDataTypeNode) => eventDataTypeNode.name === eventDataType, @@ -265,15 +267,17 @@ export class PhoenixMenuUI implements PhoenixUI { } } - const colorByOptions: ColorByOptionKeys[] = []; + if (colorByOptions === undefined) { + colorByOptions = []; - // Extra config options specific to tracks - if (typeFolder.name === 'Tracks') { - colorByOptions.push( - ColorByOptionKeys.CHARGE, - ColorByOptionKeys.MOM, - ColorByOptionKeys.VERTEX, - ); + // Extra config options specific to tracks + if (typeFolder.name === 'Tracks') { + colorByOptions.push( + ColorByOptionKeys.CHARGE, + ColorByOptionKeys.MOM, + ColorByOptionKeys.VERTEX, + ); + } } new ColorOptions( diff --git a/packages/phoenix-event-display/src/managers/ui-manager/phoenix-ui.ts b/packages/phoenix-event-display/src/managers/ui-manager/phoenix-ui.ts index 7d9f9a56d..c10a424f3 100644 --- a/packages/phoenix-event-display/src/managers/ui-manager/phoenix-ui.ts +++ b/packages/phoenix-event-display/src/managers/ui-manager/phoenix-ui.ts @@ -1,5 +1,6 @@ import { Color, Object3D } from 'three'; import { Cut } from '../../lib/models/cut.model'; +import { ColorByOptionKeys } from './color-options'; /** * Common interface for implement Phoenix UI menu. @@ -39,12 +40,14 @@ export interface PhoenixUI { * @param collectionName Name of the collection to be added in the type of event data (tracks, hits etc.). * @param cuts Cuts to the collection of event data that are to be made configurable to filter event data. * @param collectionColor Default color of the collection. + * @param colorByOptions Options to color the collection by. If not provided, defaults based on the event data type are used. */ addCollection( eventDataType: string, collectionName: string, cuts?: Cut[], collectionColor?: Color, + colorByOptions?: ColorByOptionKeys[], ): void; /** diff --git a/packages/phoenix-event-display/src/tests/loaders/jivexml-menu-integration.test.ts b/packages/phoenix-event-display/src/tests/loaders/jivexml-menu-integration.test.ts new file mode 100644 index 000000000..9f55e1942 --- /dev/null +++ b/packages/phoenix-event-display/src/tests/loaders/jivexml-menu-integration.test.ts @@ -0,0 +1,90 @@ +/** + * @jest-environment jsdom + */ +import { Group } from 'three'; +import { JiveXMLLoader } from '../../loaders/jivexml-loader'; +import { InfoLogger } from '../../helpers/info-logger'; +import { ThreeManager } from '../../managers/three-manager'; +import { UIManager } from '../../managers/ui-manager'; +import { PhoenixMenuNode } from '../../managers/ui-manager/phoenix-menu/phoenix-menu-node'; +import { PhoenixMenuUI } from '../../managers/ui-manager/phoenix-menu/phoenix-menu-ui'; +import { type ConfigSelect } from '../../managers/ui-manager/phoenix-menu/config-types'; + +jest.mock('../../managers/three-manager'); + +describe('JiveXML to Phoenix menu integration', () => { + it('should only offer "Color by" Vertex for track collections with linked vertices', () => { + // Two track collections; vertices link only to the one named "Tracks" + // (which the loader renames to "Tracks_"). + const xml = ` + + 1.0 2.0 + 3 4 + 10.0 -20.0 + 0.1 0.2 + 1.0 2.0 + 0.5 1.0 + 1.0 0.5 + + + 1.0 2.0 + 3 4 + 10.0 -20.0 + 0.1 0.2 + 1.0 2.0 + 0.5 1.0 + 1.0 0.5 + + + 0.10.20.3 + 1.0 + 1 + 1 + 1 + Tracks + 0 + + `; + + const three = new ThreeManager(new InfoLogger()); + (three.addEventDataTypeGroup as jest.Mock).mockImplementation( + () => new Group(), + ); + (three.getSceneManager as jest.Mock).mockReturnValue({ + collectionFilter: jest.fn(), + scaleJets: jest.fn(), + scaleChildObjects: jest.fn(), + scaleInstancedObjects: jest.fn(), + }); + + const phoenixMenuRoot = new PhoenixMenuNode('Phoenix Menu'); + const phoenixMenuUI = new PhoenixMenuUI(phoenixMenuRoot, three); + phoenixMenuUI.addEventDataFolder(); + + const ui = new UIManager(three); + (ui as any).uiMenus = [phoenixMenuUI]; + + const loader = new JiveXMLLoader(); + loader.process(xml); + const eventData = loader.getEventData(); + loader.buildEventData(eventData, three, ui, new InfoLogger()); + + const getColorByOptions = (collectionName: string) => { + const collectionNode = phoenixMenuRoot.findInTree(collectionName); + const select = collectionNode + ?.findInTree('Color Options') + ?.configs.find((config) => config.type === 'select') as ConfigSelect; + return select?.options; + }; + + expect(getColorByOptions('Tracks_')).toEqual([ + 'Charge q', + 'Momentum |p|', + 'Vertex', + ]); + expect(getColorByOptions('OtherTracks')).toEqual([ + 'Charge q', + 'Momentum |p|', + ]); + }); +}); diff --git a/packages/phoenix-event-display/src/tests/managers/ui-manager/phoenix-menu/phoenix-menu-node.test.ts b/packages/phoenix-event-display/src/tests/managers/ui-manager/phoenix-menu/phoenix-menu-node.test.ts new file mode 100644 index 000000000..59710170c --- /dev/null +++ b/packages/phoenix-event-display/src/tests/managers/ui-manager/phoenix-menu/phoenix-menu-node.test.ts @@ -0,0 +1,79 @@ +/** + * @jest-environment jsdom + */ +import { PhoenixMenuNode } from '../../../../managers/ui-manager/phoenix-menu/phoenix-menu-node'; + +describe('PhoenixMenuNode', () => { + describe('loadStateFromJSON', () => { + it('should restore the value of a select config and apply it', () => { + const onChange = jest.fn(); + const node = new PhoenixMenuNode('test'); + node.addConfig({ + type: 'select', + label: 'Color by', + options: ['Charge', 'Momentum'], + onChange, + }); + // Adding the config without a value should not apply anything. + expect(onChange).not.toHaveBeenCalled(); + + const state = node.getNodeState(); + state['configs'][0]['value'] = 'Momentum'; + node.loadStateFromJSON(state); + + expect(onChange).toHaveBeenCalledWith('Momentum'); + }); + + it('should not overwrite the options of a select config from a saved state', () => { + const node = new PhoenixMenuNode('test'); + const config = { + type: 'select' as const, + label: 'Color by', + options: ['Charge', 'Momentum'], + onChange: jest.fn(), + }; + node.addConfig(config); + + // Simulate a state saved when the select had an extra option. + const state = node.getNodeState(); + state['configs'][0] = { + ...state['configs'][0], + options: ['Charge', 'Momentum', 'Vertex'], + }; + node.loadStateFromJSON(state); + + expect(config.options).toEqual(['Charge', 'Momentum']); + }); + + it('should not apply grouped color configs when adding them, only on state load', () => { + const onChange = jest.fn(); + const node = new PhoenixMenuNode('test'); + node.addConfig({ + type: 'color', + label: 'q=1', + group: 'charge', + color: '#ff0000', + onChange, + }); + expect(onChange).not.toHaveBeenCalled(); + + node.loadStateFromJSON(node.getNodeState()); + + expect(onChange).toHaveBeenCalledWith('#ff0000'); + }); + + it('should not apply ungrouped color configs on creation or state load', () => { + const onChange = jest.fn(); + const node = new PhoenixMenuNode('test'); + node.addConfig({ + type: 'color', + label: 'Color', + color: '#00ff00', + onChange, + }); + node.loadStateFromJSON(node.getNodeState()); + + expect(onChange).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/packages/phoenix-ng/projects/phoenix-app/src/assets/files/config/atlas-config.json b/packages/phoenix-ng/projects/phoenix-app/src/assets/files/config/atlas-config.json index 1ab828e85..f976648c3 100755 --- a/packages/phoenix-ng/projects/phoenix-app/src/assets/files/config/atlas-config.json +++ b/packages/phoenix-ng/projects/phoenix-app/src/assets/files/config/atlas-config.json @@ -1 +1 @@ -{"phoenixMenu":{"name":"Phoenix Menu","nodeLevel":0,"toggleState":true,"childrenActive":false,"configs":[{"type":"button","label":"Save state"},{"type":"button","label":"Load state"}],"children":[{"name":"Detector","nodeLevel":1,"toggleState":true,"childrenActive":false,"configs":[{"type":"checkbox","label":"Wireframe","isChecked":false},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.01,"allowCustomValue":true},{"type":"slider","label":"Scale","min":0,"max":20,"step":0.01,"allowCustomValue":true}],"children":[{"name":"Magnets","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Barrel Toroid","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Endcap","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Feet","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Warm structure","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]}]},{"name":"Calorimeters","nodeLevel":2,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"LAr Barrel","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"LAr EC1","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"LAr FCAL","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"LAr HEC","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Tile Cal","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Tile Cal EC","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]}]},{"name":"Inner Detector","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Beam","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Pixel","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"SCT","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"SCT Endcaps","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"TRT","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"TRT Endcaps","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]}]},{"name":"Muon Spectrometer","nodeLevel":2,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Endcaps","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Extra wheel","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Big wheel","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Outer Wheel","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Big Wheel MDT ","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Small Wheel","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Small Wheel Hub","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Small Wheel Feet","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"TGC2","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"TGC3","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]}]},{"name":"Barrel","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Muon Barrel Inner","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Muon Barrel Middle","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Muon Barrel Outer","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]}]}]}]},{"name":"Event Data","nodeLevel":1,"toggleState":true,"childrenActive":false,"configs":[{"type":"checkbox","label":"Depth Test","isChecked":true}],"children":[{"name":"Tracks","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Tracks_","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"𝛘2","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color","hidden":false},{"type":"button","label":"Random","hidden":false},{"type":"select","label":"Color by","options":["Charge q","Momentum |p|","Vertex"],"hidden":false},{"type":"color","label":"q=-1","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=0","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=1","group":"charge","color":"#ff0000","hidden":false},{"type":"slider","label":"|p| min","group":"mom","min":0,"max":50000,"value":0,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| min color","group":"mom","color":"#ff0000","hidden":true},{"type":"slider","label":"|p| max","group":"mom","min":0,"max":50000,"value":50000,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| max color","group":"mom","color":"#ff0000","hidden":true}],"children":[]}]},{"name":"CombinedMuonTracks","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"𝛘2","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"childrenActive":false,"configs":[{"type":"color","label":"Color","color":"#0adb2d","hidden":false},{"type":"button","label":"Random","hidden":false},{"type":"select","label":"Color by","options":["Charge q","Momentum |p|","Vertex"],"hidden":false},{"type":"color","label":"q=-1","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=0","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=1","group":"charge","color":"#ff0000","hidden":false},{"type":"slider","label":"|p| min","group":"mom","min":0,"max":50000,"value":0,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| min color","group":"mom","color":"#ff0000","hidden":true},{"type":"slider","label":"|p| max","group":"mom","min":0,"max":50000,"value":50000,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| max color","group":"mom","color":"#ff0000","hidden":true}],"children":[]}]},{"name":"MuonSpectrometerTracks","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"𝛘2","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color","hidden":false},{"type":"button","label":"Random","hidden":false},{"type":"select","label":"Color by","options":["Charge q","Momentum |p|","Vertex"],"hidden":false},{"type":"color","label":"q=-1","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=0","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=1","group":"charge","color":"#ff0000","hidden":false},{"type":"slider","label":"|p| min","group":"mom","min":0,"max":50000,"value":0,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| min color","group":"mom","color":"#ff0000","hidden":true},{"type":"slider","label":"|p| max","group":"mom","min":0,"max":50000,"value":50000,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| max color","group":"mom","color":"#ff0000","hidden":true}],"children":[]}]},{"name":"CombinedInDetTracks","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"𝛘2","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color","hidden":false},{"type":"button","label":"Random","hidden":false},{"type":"select","label":"Color by","options":["Charge q","Momentum |p|","Vertex"],"hidden":false},{"type":"color","label":"q=-1","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=0","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=1","group":"charge","color":"#ff0000","hidden":false},{"type":"slider","label":"|p| min","group":"mom","min":0,"max":50000,"value":0,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| min color","group":"mom","color":"#ff0000","hidden":true},{"type":"slider","label":"|p| max","group":"mom","min":0,"max":50000,"value":50000,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| max color","group":"mom","color":"#ff0000","hidden":true}],"children":[]}]},{"name":"GSFTracks","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"𝛘2","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color","hidden":false},{"type":"button","label":"Random","hidden":false},{"type":"select","label":"Color by","options":["Charge q","Momentum |p|","Vertex"],"hidden":false},{"type":"color","label":"q=-1","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=0","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=1","group":"charge","color":"#ff0000","hidden":false},{"type":"slider","label":"|p| min","group":"mom","min":0,"max":50000,"value":0,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| min color","group":"mom","color":"#ff0000","hidden":true},{"type":"slider","label":"|p| max","group":"mom","min":0,"max":50000,"value":50000,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| max color","group":"mom","color":"#ff0000","hidden":true}],"children":[]}]},{"name":"InDetTrackParticles_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"𝛘2","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color","hidden":false},{"type":"button","label":"Random","hidden":false},{"type":"select","label":"Color by","options":["Charge q","Momentum |p|","Vertex"],"hidden":false},{"type":"color","label":"q=-1","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=0","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=1","group":"charge","color":"#ff0000","hidden":false},{"type":"slider","label":"|p| min","group":"mom","min":0,"max":50000,"value":0,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| min color","group":"mom","color":"#ff0000","hidden":true},{"type":"slider","label":"|p| max","group":"mom","min":0,"max":50000,"value":50000,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| max color","group":"mom","color":"#ff0000","hidden":true}],"children":[]}]},{"name":"CombinedMuonTrackParticles_xAOD","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"𝛘2","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color","hidden":false},{"type":"button","label":"Random","hidden":false},{"type":"select","label":"Color by","options":["Charge q","Momentum |p|","Vertex"],"hidden":false},{"type":"color","label":"q=-1","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=0","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=1","group":"charge","color":"#ff0000","hidden":false},{"type":"slider","label":"|p| min","group":"mom","min":0,"max":50000,"value":0,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| min color","group":"mom","color":"#ff0000","hidden":true},{"type":"slider","label":"|p| max","group":"mom","min":0,"max":50000,"value":50000,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| max color","group":"mom","color":"#ff0000","hidden":true}],"children":[]}]},{"name":"GSFTrackParticles_xAOD","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"𝛘2","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color","hidden":false},{"type":"button","label":"Random","hidden":false},{"type":"select","label":"Color by","options":["Charge q","Momentum |p|","Vertex"],"hidden":false},{"type":"color","label":"q=-1","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=0","group":"charge","color":"#ff0000","hidden":false},{"type":"color","label":"q=1","group":"charge","color":"#ff0000","hidden":false},{"type":"slider","label":"|p| min","group":"mom","min":0,"max":50000,"value":0,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| min color","group":"mom","color":"#ff0000","hidden":true},{"type":"slider","label":"|p| max","group":"mom","min":0,"max":50000,"value":50000,"step":10,"allowCustomValue":true,"hidden":true},{"type":"color","label":"|p| max color","group":"mom","color":"#ff0000","hidden":true}],"children":[]}]}]},{"name":"Jets","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Jets Scale","value":1,"min":0.001,"step":0.01,"max":100,"allowCustomValue":true}],"children":[{"name":"AntiKt4EMTopoJets_xAOD","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-5,"max":5,"step":0.1,"value":-5,"highValue":5},{"type":"rangeSlider","label":"Energy","min":0,"max":100000,"step":100,"value":0,"highValue":100000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"AntiKt4LCTopoJets_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-5,"max":5,"step":0.1,"value":-5,"highValue":5},{"type":"rangeSlider","label":"Energy","min":0,"max":100000,"step":100,"value":0,"highValue":100000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"AntiKt10LCTopoJets_xAOD","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-5,"max":5,"step":0.1,"value":-5,"highValue":5},{"type":"rangeSlider","label":"Energy","min":0,"max":100000,"step":100,"value":0,"highValue":100000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"Hits","nodeLevel":2,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Pixel","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"SCT","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"TRT","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"MDT","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"RPC","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"TGC","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"CSC","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"CaloClusters","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"CaloClusters Scale","value":1,"min":0.001,"step":0.01,"max":100,"allowCustomValue":true}],"children":[{"name":"egammaClusters_xAOD","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-5,"max":5,"step":0.1,"value":-5,"highValue":5},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"CaloCalTopoClusters","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-5,"max":5,"step":0.1,"value":-5,"highValue":5},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"CaloCells","nodeLevel":2,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"LAr","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-5,"max":5,"step":0.1,"value":-5,"highValue":5},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"HEC","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-5,"max":5,"step":0.1,"value":-5,"highValue":5},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"PlanarCaloCells","nodeLevel":2,"toggleState":false,"childrenActive":false,"configs":[{"type":"slider","label":"PlanarCaloCells Scale","value":1,"min":0.001,"step":0.01,"max":100,"allowCustomValue":true}],"children":[]},{"name":"Muons","nodeLevel":2,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Muons_xAOD","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"Muons","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"Photons","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Photons_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"Electrons","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Electrons_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"ForwardElectrons_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"HLT_xAOD__ElectronContainer_egamma_Electrons_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"ϕ","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"η","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"Vertices","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Vertices Scale","value":1,"min":0.001,"step":0.01,"max":100,"allowCustomValue":true}],"children":[{"name":"Vertices_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"vertexType","min":0,"max":5,"step":1,"value":0,"highValue":5}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"MissingEnergy","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Size (%)","value":100,"min":1,"max":200,"allowCustomValue":true}],"children":[{"name":"MET_Reference_AntiKt4EMTopo_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"MET_Calo_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"MET_LocHadTopo_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"MET_Core_AntiKt4LCTopo_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]}]},{"name":"Labels","nodeLevel":1,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Size","min":0,"max":10,"step":0.01,"allowCustomValue":true},{"type":"color","label":"Color","color":"#a8a8a8"},{"type":"button","label":"Save Labels"},{"type":"button","label":"Load Labels"}],"children":[]}]},"eventDisplay":{"cameraPosition":[3096.1557286722164,2821.4315307500133,4232.068942374551],"startClippingAngle":0,"openingClippingAngle":90}} +{"phoenixMenu":{"name":"Phoenix Menu","nodeLevel":0,"toggleState":true,"childrenActive":false,"configs":[{"type":"button","label":"Save state"},{"type":"button","label":"Load state"}],"children":[{"name":"Detector","nodeLevel":1,"toggleState":true,"childrenActive":false,"configs":[{"type":"checkbox","label":"Wireframe","isChecked":false},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.01,"allowCustomValue":true},{"type":"slider","label":"Scale","min":0,"max":20,"step":0.01,"allowCustomValue":true}],"children":[{"name":"Magnets","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Barrel Toroid","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Endcap","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Feet","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Warm structure","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]}]},{"name":"Calorimeters","nodeLevel":2,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"LAr Barrel","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"LAr EC1","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"LAr FCAL","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"LAr HEC","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Tile Cal","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Tile Cal EC","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]}]},{"name":"Inner Detector","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Beam","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Pixel","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"SCT","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"SCT Endcaps","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"TRT","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"TRT Endcaps","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]}]},{"name":"Muon Spectrometer","nodeLevel":2,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Endcaps","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Extra wheel","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Big wheel","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Outer Wheel","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Big Wheel MDT ","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Small Wheel","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Small Wheel Hub","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Small Wheel Feet","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"TGC2","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"TGC3","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]}]},{"name":"Barrel","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Muon Barrel Inner","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Muon Barrel Middle","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]},{"name":"Muon Barrel Outer","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"slider","label":"Opacity","min":0,"max":1,"step":0.05,"allowCustomValue":true},{"type":"button","label":"Remove"}],"children":[]}]}]}]},{"name":"Event Data","nodeLevel":1,"toggleState":true,"childrenActive":false,"configs":[{"type":"checkbox","label":"Depth Test","isChecked":true}],"children":[{"name":"Tracks","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Tracks_","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"\ud835\uded82","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color","hidden":false},{"type":"button","label":"Random","hidden":false}],"children":[]}]},{"name":"CombinedMuonTracks","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"\ud835\uded82","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"childrenActive":false,"configs":[{"type":"color","label":"Color","color":"#0adb2d","hidden":false},{"type":"button","label":"Random","hidden":false}],"children":[]}]},{"name":"MuonSpectrometerTracks","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"\ud835\uded82","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color","hidden":false},{"type":"button","label":"Random","hidden":false}],"children":[]}]},{"name":"CombinedInDetTracks","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"\ud835\uded82","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color","hidden":false},{"type":"button","label":"Random","hidden":false}],"children":[]}]},{"name":"GSFTracks","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"\ud835\uded82","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color","hidden":false},{"type":"button","label":"Random","hidden":false}],"children":[]}]},{"name":"InDetTrackParticles_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"\ud835\uded82","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color","hidden":false},{"type":"button","label":"Random","hidden":false}],"children":[]}]},{"name":"CombinedMuonTrackParticles_xAOD","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"\ud835\uded82","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color","hidden":false},{"type":"button","label":"Random","hidden":false}],"children":[]}]},{"name":"GSFTrackParticles_xAOD","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"\ud835\uded82","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"DOF","min":0,"max":100,"step":1,"value":0,"highValue":100},{"type":"rangeSlider","label":"pT","min":0,"max":50000,"step":0.1,"value":0,"highValue":50000},{"type":"rangeSlider","label":"z0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30},{"type":"rangeSlider","label":"d0","min":-30,"max":30,"step":0.1,"value":-30,"highValue":30}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color","hidden":false},{"type":"button","label":"Random","hidden":false}],"children":[]}]}]},{"name":"Jets","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Jets Scale","value":1,"min":0.001,"step":0.01,"max":100,"allowCustomValue":true}],"children":[{"name":"AntiKt4EMTopoJets_xAOD","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-5,"max":5,"step":0.1,"value":-5,"highValue":5},{"type":"rangeSlider","label":"Energy","min":0,"max":100000,"step":100,"value":0,"highValue":100000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"AntiKt4LCTopoJets_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-5,"max":5,"step":0.1,"value":-5,"highValue":5},{"type":"rangeSlider","label":"Energy","min":0,"max":100000,"step":100,"value":0,"highValue":100000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"AntiKt10LCTopoJets_xAOD","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-5,"max":5,"step":0.1,"value":-5,"highValue":5},{"type":"rangeSlider","label":"Energy","min":0,"max":100000,"step":100,"value":0,"highValue":100000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"Hits","nodeLevel":2,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Pixel","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"SCT","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"TRT","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"MDT","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"RPC","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"TGC","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"CSC","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"CaloClusters","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"CaloClusters Scale","value":1,"min":0.001,"step":0.01,"max":100,"allowCustomValue":true}],"children":[{"name":"egammaClusters_xAOD","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-5,"max":5,"step":0.1,"value":-5,"highValue":5},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"CaloCalTopoClusters","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-5,"max":5,"step":0.1,"value":-5,"highValue":5},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"CaloCells","nodeLevel":2,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"LAr","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-5,"max":5,"step":0.1,"value":-5,"highValue":5},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"HEC","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-5,"max":5,"step":0.1,"value":-5,"highValue":5},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":false,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"PlanarCaloCells","nodeLevel":2,"toggleState":false,"childrenActive":false,"configs":[{"type":"slider","label":"PlanarCaloCells Scale","value":1,"min":0.001,"step":0.01,"max":100,"allowCustomValue":true}],"children":[]},{"name":"Muons","nodeLevel":2,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Muons_xAOD","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"Muons","nodeLevel":3,"toggleState":false,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"Photons","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Photons_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"Electrons","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Electrons_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"ForwardElectrons_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"HLT_xAOD__ElectronContainer_egamma_Electrons_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"\u03d5","min":-3.14,"max":3.14,"step":0.01,"value":-3.14,"highValue":3.14},{"type":"rangeSlider","label":"\u03b7","min":-4,"max":4,"step":0.1,"value":-4,"highValue":4},{"type":"rangeSlider","label":"Energy","min":0,"max":10000,"step":1,"value":0,"highValue":10000}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"Vertices","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Vertices Scale","value":1,"min":0.001,"step":0.01,"max":100,"allowCustomValue":true}],"children":[{"name":"Vertices_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Cut Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"label","label":"Cuts"},{"type":"button","label":"Reset cuts"},{"type":"rangeSlider","label":"vertexType","min":0,"max":5,"step":1,"value":0,"highValue":5}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]},{"name":"MissingEnergy","nodeLevel":2,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Size (%)","value":100,"min":1,"max":200,"allowCustomValue":true}],"children":[{"name":"MET_Reference_AntiKt4EMTopo_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"MET_Calo_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"MET_LocHadTopo_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]},{"name":"MET_Core_AntiKt4LCTopo_xAOD","nodeLevel":3,"toggleState":true,"childrenActive":false,"configs":[],"children":[{"name":"Draw Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Opacity","min":0.1,"step":0.1,"max":1},{"type":"checkbox","label":"Wireframe"}],"children":[]},{"name":"Color Options","nodeLevel":4,"toggleState":true,"childrenActive":false,"configs":[{"type":"color","label":"Color"},{"type":"button","label":"Random"}],"children":[]}]}]}]},{"name":"Labels","nodeLevel":1,"toggleState":true,"childrenActive":false,"configs":[{"type":"slider","label":"Size","min":0,"max":10,"step":0.01,"allowCustomValue":true},{"type":"color","label":"Color","color":"#a8a8a8"},{"type":"button","label":"Save Labels"},{"type":"button","label":"Load Labels"}],"children":[]}]},"eventDisplay":{"cameraPosition":[3096.1557286722164,2821.4315307500133,4232.068942374551],"startClippingAngle":0,"openingClippingAngle":90}} \ No newline at end of file diff --git a/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/phoenix-menu/phoenix-menu-item/phoenix-menu-item.component.html b/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/phoenix-menu/phoenix-menu-item/phoenix-menu-item.component.html index defc897fa..4c7196da1 100644 --- a/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/phoenix-menu/phoenix-menu-item/phoenix-menu-item.component.html +++ b/packages/phoenix-ng/projects/phoenix-ui-components/lib/components/phoenix-menu/phoenix-menu-item/phoenix-menu-item.component.html @@ -153,6 +153,7 @@ *ngSwitchCase="'select'" id="item-config-field" class="w-100" + [value]="config.value ?? config.options[0]" (change)="config.onChange($event.target.value)" >