Skip to content

alja/VSDNano

Repository files navigation

UNIVERSAL DATA VISUALIZATION

Main Idea

Provide a simple web-based service to read data in a custom format and visualize it using a set of high level objects such as jets, charged and neutral tracks, muons etc using custom detector geometry and a C++ macro to convert custom event representation to a standard format. The custom format is called Visual Summary Data (VSD) format.

High Level Physics Objects

At the moment only Jets, Candiates, Muon, MET, and Vertex are implemented.See VSDBase.h for all implementation details.

  • Jet - a cone with indication of jet energy

    • Momentum vector
    • Jet size - optional
    • EM and HAD fractions - optional
  • Candidate

    • position, eta, phi, pt
    • charge
  • Muon (MIP) - a charged track that propagates through calorimeter

    • Charge
    • Momentum vector
  • Vertex - a global point in 3D

    • 3D position
    • 3x3 matrix error, presented as ellipsoid
  • MET

    • arrow in space
    • length presents energy
Missing ...
  • CaloTower

    • eta, phi, pt presented as energy deposit
  • Hits

    • collection in points
    • what else ???

Detector Geometry and Magnetic Field

Detector geometry is mostly needed as a background for high level objects, but it also contains some important information, such as the boundary of low material region (pixel and tracker volume), the detector boundary including the muon detectors and a simplified magnetic field model to visualize charged tracks properly.

Specific Cylindrical geometry input

  • tracker propagator boundaries
    • r = 139.5 cm
    • z = 290 cm
  • muon propagator boundaries
    • r = 850 cm
    • z = 1100 cm
  • magentic field values are provided with implementation of ROOT::Experimental::REveMagField
    • r < 350 cm, value -3.5 T
    • r => 350 cm, value 2T

Preview

Use existing randomly generated samples in the universal data format service https://fireworks.cern.ch/cmsShowWeb/revetor-uni.cgi

Workflow

Build libraries

The VSD libraries are not yet distributed in ROOT. Currently one needs to build them with the sources in this repository. Setup a ROOT environment and use Makefile to build libraries

git clone https://github.com/alja/VSDNano.git
make libVsdDict.co libFWDict.co

Write TTree with branches with vector of VSD objects

Write a vector of the VSD structures in a plain root tree and relate it the ROOT's tree branch. See the snippet below: See a python script example in UserVsd.py

Vtree = ROOT.TTree("VSD", "Custom plain VSD tree")

pcv = ROOT.std.vector('VsdCandidate')()
candBr = Vtree.Branch("PinkCands", pcv)

# fill the VSDCandidate branch by adding the VSD objects in the std::vector 

for j in 5:
    cnd = ROOT.VsdCandidate(
        ROOT.gRandom.Uniform(0.1, 20),
        ROOT.gRandom.Uniform(-2.5, 2.5),
        ROOT.gRandom.Uniform(-ROOT.TMath.Pi(), ROOT.TMath.Pi()))
    cnd.name = f"Candidate_{j}"
    pcv.push_back(cnd)

Vtree.Fill(;)

candBr.SetTitle(json.dumps(candCfg))

Run event display through web service

Run the event display through the web service with the data sample once it is publicly available on eos location (e.g. /eos/user/a/amraktad/Fireworks-Test/ksmm_background.root)

https://fireworks.cern.ch/cmsShowWeb/revetor-uni.cgi


Developers information

One needs to work with the tip of the ROOT master branch to modify the VSD structures and change their graphic representation. Use -Droot7="ON" cmake flag to activete building of REve module.

Building REve in ROOT

git clone git@github.com:root-project/root.git
mkdir root-build
cd root-build
cmake -Dhttp="ON" -Droot7="ON" ../root
make

Run event display locally

root.exe 'evd.h("UserVsd.root")'